   ƒ:Ì€€›         ;
;	INDIRECT MCR COMMAND FILE TO INSTALL COBOL
;	ON A RSX-11M SYSTEM.  YOU MUST BE PRIVILEGED
;	TO EXECUTE THIS INDIRECT FILE.  THE ABSENCE
;	OF RMS-11 WILL PREVENT THE TASK BUILDER FROM
;	BUILDING COBOL VERSION 4.0 PROGRAMS.
;
.ENABLE SUBSTITUTION
.ASKS DEV INPUT DEVICE (E.G. DKN:, MTN:, OR MMN:)
ASN 'DEV'=IN:
PIP SY:=IN:[200,210]*.*
PIP SY:=IN:[200,100]*.*
PIP SY:[1,1]/NV/RE=COBLIB.OLB
PIP [1,1]COBLIB.OLB/PU
PIP SY:[1,1]/NV/RE=COBOVR.OLB
PIP [1,1]COBOVR.OLB/PU
PIP SY:[1,20]/NV/RE=CBLLIB.OL      B
PIP SY:[1,24]/NV/RE=CBLBLD.CMD
PIP SY:[1,24]/NV/RE=CBLBLD.ODL
PIP [1,20]CBLLIB.OLB,[1,24]CBLBLD.CMD,[1,24]CBLBLD.ODL/PU
PIP SY:[1,1]/NV/RE=CID.OBJ
PIP [1,1]CID.OBJ/PU
PIP [1,1]CIROT0.ODL;*/DE
PIP [1,1]CIROT3.ODL;*/DE
PIP [1,1]CIO017.ODL;*/DE
PIP [1,1]CIO027.ODL;*/DE
PIP [1,1]CIO037.ODL;*/DE
PIP [1,1]CIO047.ODL;*/DE
PIP [1,1]CIO057.ODL;*/DE
PIP [1,1]CIO067.ODL;*/DE
PIP [1,1]CIO077.ODL;*/DE
PIP SY:[1,1]/NV/RE=RMS11S.ODL
PIP [1,1]RMS11S.ODL/PU
PIP SY:[1,1]/NV/RE=RMS11X.ODL
PIP [1,1]RMS11X.O   Ì  DL/PU
PIP SY:[1,1]/NV/RE=RMS12X.ODL
PIP [1,1]RMS12X.ODL/PU
PIP MP:[1,34]CBLMRG.MAP;*/DE
PIP MP:[1,34]REFRMT.MAP;*,MP:[1,34]COBOL.MAP;*/DE
TKB @[1,24]CBLBLD.CMD
REM ...CBL
INS [1,54]COBOL.TSK
CBL CBLMRG/-ODL=CBLMRG.CBL
CBL REFRMT/-ODL=REFRMT.CBL
TKB @CBLMRG.CMD
TKB @REFRMT.CMD
REM ...MRG
REM ...RFM
INS [1,54]CBLMRG.TSK
INS [1,54]REFRMT.TSK
PIP CBLMRG.CBL;*,REFRMT.CBL;*/DE
PIP CBLMRG.CMD;*,REFRMT.CMD;*/DE
PIP CBLMRG.OBJ;*,REFRMT.OBJ;*/DE
 Ì         ¶:XÀ€€›         
IDENTIFICATION DIVISION.
PROGRAM-ID. IO0001.

*  THIS PROGRAM CREATES SEQ FILE PD1101 WHICH CONSISTS
*  OF 100 FIXED LENGTH RECORDS.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT PD1101 ASSIGN TO "SY:"
	RESERVE 2 AREAS
	ACCESS MODE IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD PD1101

	VALUE OF ID IS "PD1101   "
	BLOCK CONTAINS 5 RECORDS

	RECORD CONTAINS 31 CHARACTERS
	LABEL RECORD IS   Œ   STANDARD.
01 OUTREC USAGE DISPLAY-7.
	02 CONS PIC X(26).
	02 VAR PIC 9(5).
WORKING-STORAGE SECTION.
77	CON1 PIC X(26) VALUE "PD1101 TEST RECORD NUMBER ".
77	ROOT PIC 9(5) VALUE 0.

PROCEDURE DIVISION.
BEGIN.	OPEN OUTPUT PD1101.
	MOVE CON1 TO CONS.
	MOVE ROOT TO VAR.
LOOP1.
	ADD 1 TO VAR.
	IF VAR = 101 GO TO OVER.
	WRITE OUTREC.
	GO TO LOOP1.
OVER.	CLOSE PD1101.
	STOP RUN.
 Œ         ¶:€À€€›         
IDENTIFICATION DIVISION.
PROGRAM-ID. IO002.

*  THIS PROGRAM CREATES RELATIVE FILE PD1102 WHICH WILL CONTAIN
*  100 RECORDS.  ONLY ODD NUMBER AREAS WILL BE USED.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.

INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT PD1102 ASSIGN TO "SY:"
	ORGANIZATION IS RELATIVE
	ACCESS MODE IS RANDOM RELATIVE KEY IS RKEY
	FILE STATUS IS FSTA.

DATA DIVISION.
FILE SECTION.
FD  PD1102
	BLOCK CONTAINS 10 RECORDS
      	RECORD CONTAINS 34 CHARACTERS
	LABEL RECORD IS STANDARD
	VALUE OF ID IS "PD1102".
01  OUTREC USAGE DISPLAY.
	02 CONS PIC X(26).
	02 VAR PIC 9(8).

WORKING-STORAGE SECTION.
01 FSTA.
	02 KEY1 PIC X.
	02 KEY2 PIC X.
77  CON1 PIC X(26) VALUE "PD1102 TEST RECORD NUMBER ".
77  RKEY PIC 9(8) COMP  VALUE 0.
77  X PIC 999 VALUE 0.
77  CONT PIC 999 VALUE 0.

PROCEDURE DIVISION.
BEGIN.	OPEN OUTPUT PD1102.
	MOVE CON1 TO CONS.
LOOP1.
	ADD 1 TO CONT.
	IF CONT = 101 GO TO OVER.
	MOVE CONT TO X.
	MU   Ê   LTIPLY 2 BY X.
	SUBTRACT 1 FROM X.
	MOVE X TO VAR.
	MOVE X TO RKEY.
	WRITE OUTREC INVALID KEY GO TO OVER.
	IF KEY1 NOT = "0", DISPLAY KEY1, KEY2.
	GO TO LOOP1.
OVER.
	CLOSE PD1102.
	STOP RUN.
Ê          ¶:¨À€€›         
IDENTIFICATION DIVISION.
PROGRAM-ID. IO003.

*  THIS PROGRAM READS FROM PD1101 SEQUENTIALLY THEN WRITES THE
*  OUTPUT TO A PRINTER. LINAGE CLAUSE IS TESTED IN THIS PROGRAM.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT PD1101 ASSIGN TO "SY:"
	RESERVE 2 AREAS
	FILE STATUS IS FSTA.

	SELECT LPTOUT ASSIGN TO "LP:".

DATA DIVISION.
FILE SECTION.
FD PD1101
	LABEL RECORD IS STANDARD
	VALUE OF ID       IS "PD1101".
01  INREC.
	02 CONS PIC  X(26).
	02 VAR PIC 9(5).

FD LPTOUT
	LABEL RECORDS ARE OMITTED
	LINAGE IS 60 LINES
	LINES AT TOP TLINE
	LINES AT BOTTOM BLINE.
01 OUTREC PIC X(31).

WORKING-STORAGE SECTION.
77	TLINE PIC 99 COMP  VALUE 4.
77	BLINE PIC 99 COMP  VALUE 4.
01	FSTA.
	02 KEY1 PIC X.
	02 KEY2 PIC X.
77	NEWP PIC X(8) VALUE "NEW PAGE".

PROCEDURE DIVISION.
BEGIN.
	OPEN INPUT PD1101.
	OPEN OUTPUT LPTOUT.
LOOP1.
	READ PD1101 RECORD INTO OUTREC, AT END GO TO OVER.
	IF KEY   Ê   1 NOT = "0", DISPLAY FSTA, GO TO OVER.
	WRITE OUTREC AFTER ADVANCING 2 LINES, AT EOP GO TO B1.
	GO TO LOOP1.
B1.
	WRITE OUTREC FROM NEWP.
	GO TO LOOP1.
OVER.
	CLOSE PD1101, LPTOUT.
	STOP RUN.
 Ê          NqœrÌˆ€›      X   [1,54]REFRMT,MP:[1,34]REFRMT=REFRMT,[1,1]COBLIB/LB,[1,1]RMSLIB/LB
/
TASK = ...RFM
/
X          TÌˆ€›      X   [1,54]CBLMRG,MP:[1,34]CBLMRG=CBLMRG,[1,1]COBLIB/LB,[1,1]RMSLIB/LB
/
TASK = ...MRG
/
X          dÌˆ€›         ;CBLBLD.CMD
;
;THIS FILE IS THE COMMAND FILE FOR TKB TO BUILD THE COBOL-11 OVERLAY
;STRUCTURE FOR VERSION 4.0 COBOL. THE OVERLAY DESCRIPTOR FILE IS
;CBLBLD.ODL
;
[1,54]COBOL,MP:[1,34]COBOL=[1,24]CBLBLD.ODL/MP
TASK = ...CBL		;TASK NAME
UNITS = 14		;NUMBER OF LUNS USED
STACK = 512		;STACK SIZE
;
;THE FOLLOWING COMMAND DEFINES THE INTERNAL STORAGE USED BY THE
;COMPILER (WFBLK) FOR PROCESSING THE SOFTWARE VIRTUAL MEMORY WORKFILE.
;THE MINIMUM VALUE FOR THIS AREA IS:
;
;	     WFBLK:6000 (OCTAL)
;      
;THE NET EFFECT OF EXTENDING THE SIZE OF THESE AREAS IS TO SPEED UP THE
;COMPILER. EXTENSION OF THESE AREAS SHOULD BE IN BLOCKS OF 2000 (OCTAL).
;THE MINIMUM VALUE OF WFBLK=6000 YIELDS A COBOL WHICH WILL RUN SLOWLY IN
;MINIMUM USER MEMORY.
;
EXTSCT = WFBLK:6000
;
EXTSCT = $$FSR1:6300
;
;CALL PARAMETERS FOLLOW
GBLDEF = CATBSZ:0
GBLDEF = NEWMAG:1		;NEW MAG TAPE ENABLED
GBLDEF = PREFIX:000000		;NULL/NULL
GBLDEF = POSFIX:005015		;CR/LF
GBLDEF = CBLVER:032040		;ASCII " 4"
GBLDEF = CBLEDI:020060	      	;ASCII "0 "
;GBLDEF	= CBLCOD:20106		;"F " FOR FIELD TEST COMPILERS
GBLDEF	= CBLCOD:20040		;"  " FOR NON-FIELD TEST COMPILERS
GBLDEF = BUFCNT:1		;1 FOR  SINGLE 2 FOR DOUBLE BUFFERING
GBLDEF = RSTSSW:0		;NON-0 FOR RSTS
;
;NOW WE DEFINE THE DEVICE DEFAULTS FOR THE VARIOUS LUNS USED BY THE
;COMPILER.
;
ASG = TI:1,TI:2,SY:3,SY:4,SY:5,SY:6,SY:7,SY:8,SY:9,SY:10,SY:11
ASG = SY:12,SY:13,SY:14
;
;LOGICAL UNIT ASSIGNMENTS:
;
GBLDEF = MSGLUN:2	;CONSOLE OUTPUT
GBLDEF = SRCLUN:3	;SOURCE INPUT FILE
GBLDEF       = LSTLUN:4	;SOURCE OUTPUT LISTING FILE
GBLDEF = OBJLUN:5	;OBJECT OUTPUT FILE
GBLDEF = ODLLUN:6	;ODL OUPUT FILE
GBLDEF = CRFLUN:7	;CREF SCRATCH FILE
GBLDEF = CPYLUN:10	;COPY LIBRARY INPUT FILE
GBLDEF = WRKLUN:11	;WORK FILE ONE
GBLDEF = WF2LUN:12	;SECOND WORK FILE
GBLDEF = INTLUN:13	;INTERMEDIATE FILE
GBLDEF = FIRLUN:14	;FIRST OF THREE SCRATCH FILES USED BY SORT
GBLDEF = INLUN:0	;NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = MULBUF:0	;NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = OUTLUN:0	   ò   ;NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = XLUN:0		;NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = TTDEV:44524	;TI FOR RSTS/E
;
;LOGICAL UNITS ARE ASSIGNED TO THE USER COBOL PROGRAM BY THE COBOL
;OBJECT TIME SYSTEM (OTS).
/
ò          dl^ˆ€›         ;CBLBLD.ODL
;
;COBOL-11 VERSION 4A RELEASE 1.0 TASK BUILDING TREE
;
;
	.NAME	ROOT
	.NAME	P0A
	.NAME	P0B
	.NAME	P1
	.NAME	P2
	.NAME	P2A
	.NAME	P2B
	.NAME	P2C
	.NAME	P2D
	.NAME	P4
	.NAME	P4A
	.NAME	P4B
	.NAME	P4C
	.NAME	P4D
	.NAME	P4E
	.NAME	P4F
	.NAME	P4G
	.NAME	P4H
	.NAME	P4I
	.NAME	P4J
	.NAME	P4K
	.NAME	P4L
	.NAME	DP1
	.NAME	DP2
	.NAME	DP3
	.NAME	DP4
	.NAME	DP5
	.NAME 	DP6
	.NAME	DP7
	.NAME	DP8
	.NAME	P3A
	.NAME	P3B
	.NAME	P5A
	.NAME	P5B
	.NAME	P5C
	.NAME	P5D
	.NAME      	P5E
	.NAME	P5F
	.NAME	P6
	.NAME	P7
	.NAME	P124
	.NAME	P5AB
	.NAME	P3AB
	.NAME	P12
;
;
ACOG:	.FCTR	[1,20]CBLLIB/LB:ACOG
AGOP1:	.FCTR	[1,20]CBLLIB/LB:AGOP1
AGOP2:	.FCTR	[1,20]CBLLIB/LB:AGOP2
AGOP3:	.FCTR	[1,20]CBLLIB/LB:AGOP3
AGOP4:	.FCTR	[1,20]CBLLIB/LB:AGOP4
ALTDMP:	.FCTR	[1,20]CBLLIB/LB:ALTDMP 
ARCOG:	.FCTR	[1,20]CBLLIB/LB:ARCOG
ARSYN:	.FCTR	[1,20]CBLLIB/LB:ARSYN
BCOG:	.FCTR	[1,20]CBLLIB/LB:BCOG 
BENT:	.FCTR	[1,20]CBLLIB/LB:BENT 
CALL:	.FCTR	[1,20]CBLLIB/LB:CALL 
CBFIN:	.FCTR	[1,20]CB      LLIB/LB:CBFIN
CBIOT:	.FCTR	[1,20]CBLLIB/LB:CBIOT 
CCNA:	.FCTR	[1,20]CBLLIB/LB:CCNA 
CMND:	.FCTR	[1,20]CBLLIB/LB:CMND
COMMON:	.FCTR	[1,20]CBLLIB/LB:COMMON
COMP:	.FCTR	[1,20]CBLLIB/LB:COMP 
COPE0:	.FCTR   [1,20]CBLLIB/LB:COPE
COPE1:	.FCTR	[1,20]CBLLIB/LB:COPE1
COPE2:	.FCTR	[1,20]CBLLIB/LB:COPE2
CORR:	.FCTR	[1,20]CBLLIB/LB:CORR 
CPDDMP:	.FCTR	[1,20]CBLLIB/LB:CPDDMP 
CREF:	.FCTR	[1,20]CBLLIB/LB:CREF 
CSORT:	.FCTR	[1,20]CBLLIB/LB:CSORT 
DDOP:	.FCTR	[1,20]CBLLIB/LB:DDOP 
VPSET:	.FCTR	[1,20]CBLLIB/LB      :VPSET 
DBCON:	.FCTR	[1,20]CBLLIB/LB:DBCON 
DMLOAD:	.FCTR	[1,20]CBLLIB/LB:DMLOAD 
ENTDMP:	.FCTR	[1,20]CBLLIB/LB:ENTDMP 
GWRD:	.FCTR	[1,20]CBLLIB/LB:GWRD 
HELP:	.FCTR	[1,20]CBLLIB/LB:HELP 
INSP:	.FCTR	[1,20]CBLLIB/LB:INSP 
IOVB:	.FCTR	[1,20]CBLLIB/LB:IOVB 
LDIN:	.FCTR	[1,20]CBLLIB/LB:LDIN 
LENT:	.FCTR	[1,20]CBLLIB/LB:LENT 
LINK:	.FCTR	[1,20]CBLLIB/LB:LINK 
LLTDMP:	.FCTR	[1,20]CBLLIB/LB:LLTDMP
LNKDMP:	.FCTR	[1,20]CBLLIB/LB:LNKDMP 
LTSC:	.FCTR	[1,20]CBLLIB/LB:LTSC 
NAMX:	.FCTR	[1,20]CBLLIB/LB:NAM      X 
OBJMAP:	.FCTR	[1,20]CBLLIB/LB:OBJMAP 
ODLBLD:	.FCTR	[1,20]CBLLIB/LB:ODLBLD 
OVFL:	.FCTR	[1,20]CBLLIB/LB:OVFL 
PDOP:	.FCTR	[1,20]CBLLIB/LB:PDOP 
PDSR:	.FCTR	[1,20]CBLLIB/LB:PDSR 
PFRF:	.FCTR	[1,20]CBLLIB/LB:PFRF 
PH0A:	.FCTR	[1,20]CBLLIB/LB:PH0A 
PH0B:	.FCTR	[1,20]CBLLIB/LB:PH0B
PHS1:	.FCTR	[1,20]CBLLIB/LB:PHS1 
PHS2:	.FCTR	[1,20]CBLLIB/LB:PHS2
PH2A:	.FCTR	[1,20]CBLLIB/LB:PH2A
PH2B:	.FCTR	[1,20]CBLLIB/LB:PH2B 
PH2C:	.FCTR	[1,20]CBLLIB/LB:PH2C 
PH2D:	.FCTR	[1,20]CBLLIB/LB:PH2D 
PH3A:	.FCTR	[      1,20]CBLLIB/LB:PH3A 
PH3B:	.FCTR	[1,20]CBLLIB/LB:PH3B 
PHS4:	.FCTR	[1,20]CBLLIB/LB:PHS4 
PH5A:	.FCTR	[1,20]CBLLIB/LB:PH5A 
PH5B:	.FCTR	[1,20]CBLLIB/LB:PH5B 
PH5C:	.FCTR	[1,20]CBLLIB/LB:PH5C 
PH5D:	.FCTR	[1,20]CBLLIB/LB:PH5D 
PH5E:	.FCTR	[1,20]CBLLIB/LB:PH5E 
PH5F:	.FCTR	[1,20]CBLLIB/LB:PH5F 
PHS6:	.FCTR	[1,20]CBLLIB/LB:PHS6 
PHS7:	.FCTR	[1,20]CBLLIB/LB:PHS7 
PICTRN:	.FCTR	[1,20]CBLLIB/LB:PICTRN
PQDN:	.FCTR	[1,20]CBLLIB/LB:PQDN 
PRTDMP:	.FCTR	[1,20]CBLLIB/LB:PRTDMP 
PDUSE:	.FCTR	[1,20]CBLLIB/LB      :PDUSE 
PSUTIL:	.FCTR	[1,20]CBLLIB/LB:PSUTIL 
PNTDMP:	.FCTR	[1,20]CBLLIB/LB:PNTDMP 
PTTDMP:	.FCTR	[1,20]CBLLIB/LB:PTTDMP 
QPN:	.FCTR	[1,20]CBLLIB/LB:QPN 
QREF:	.FCTR	[1,20]CBLLIB/LB:QREF 
SAVERR:	.FCTR	[1,20]CBLLIB/LB:SAVERR 
SEARCH:	.FCTR	[1,20]CBLLIB/LB:SEARCH 
SORTS1:	.FCTR	[1,20]CBLLIB/LB:SORTS1 
SORTS2:	.FCTR	[1,20]CBLLIB/LB:SORTS2 
SRCALL:	.FCTR	[1,20]CBLLIB/LB:SRCALL 
SRCH:	.FCTR	[1,20]CBLLIB/LB:SRCH 
SRCSER:	.FCTR	[1,20]CBLLIB/LB:SRCSER 
STACK:	.FCTR	[1,20]CBLLIB/LB:STACK 
STRG:	.FCTR	      [1,20]CBLLIB/LB:STRG 
STTDMP:	.FCTR	[1,20]CBLLIB/LB:STTDMP 
SUBDMP:	.FCTR	[1,20]CBLLIB/LB:SUBDMP 
TSORT:	.FCTR	[1,20]CBLLIB/LB:TSORT 
UNST:	.FCTR	[1,20]CBLLIB/LB:UNST 
UTES:	.FCTR	[1,20]CBLLIB/LB:UTES 
VPAD:	.FCTR	[1,20]CBLLIB/LB:VPAD 
VPIF:	.FCTR	[1,20]CBLLIB/LB:VPIF 
VPNE:	.FCTR	[1,20]CBLLIB/LB:VPNE 
VPST:	.FCTR	[1,20]CBLLIB/LB:VPST 
WFBK:	.FCTR	[1,20]CBLLIB/LB:WFBK 
WFBS:	.FCTR	[1,20]CBLLIB/LB:WFBS 
WFLO:	.FCTR	[1,20]CBLLIB/LB:WFLO 
WFTO:	.FCTR	[1,20]CBLLIB/LB:WFTO 
WLKT:	.FCTR	[1,20]CBLLIB      /LB:WLKT 
WLKTO1:	.FCTR	[1,20]CBLLIB/LB:WLKTO1
WLKTO2:	.FCTR	[1,20]CBLLIB/LB:WLKTO2
OTSNOR:	.FCTR	[1,20]CBLLIB/LB:OTSNOR 
;
;
COPE:	.FCTR	COPE0-(COPE1,COPE2)
COPEL:	.FCTR	COPE0-(COPE1,(COPE2-WFTO))
;
;
S1:	.FCTR	NAMX
S2:	.FCTR	BENT
S3:	.FCTR	LENT
S4:	.FCTR	PFRF-S1-S2
S5:	.FCTR	PQDN-QREF-S3
;
;
X1:	.FCTR	STACK-COPE
X2:	.FCTR	ACOG-WLKT-(WLKTO1,WLKTO2)
X3:	.FCTR	BCOG-WLKT-(WLKTO1,WLKTO2)
;
;
DP1F:	.FCTR	DP1-PNTDMP-DBCON
DP2F:	.FCTR	DP2-CPDDMP-DBCON
DP3F:	.FCTR	DP3-ENTDMP-DBCON
DP4F:	.F      CTR	DP4-PRTDMP-DBCON
DP5F:	.FCTR	DP5-PTTDMP-STTDMP-LLTDMP-DBCON
DP6F:	.FCTR	DP6-SUBDMP-DBCON
DP7F:	.FCTR	DP7-LNKDMP-DBCON
DP8F:	.FCTR	DP8-ALTDMP-DBCON
DUMPF:	.FCTR	DP1F,DP2F,DP3F,DP4F,DP5F,DP6F
DUMPF1:	.FCTR	DP7F,DP8F
;
;
P0AF:	.FCTR	P0A-WFLO-UTES-CSORT-HELP-CMND-PH0A-CBFIN
P0BF:	.FCTR	P0B-PH0B
P1F:	.FCTR	P1-PHS1-S4
P2F:	.FCTR	P2-PHS2-PICTRN-S4
P2AF:	.FCTR	P2A-PH2A-S5
P2BF:	.FCTR	P2B-PH2B
P2CF:	.FCTR	P2C-PH2C
P2DF:	.FCTR	P2D-PH2D
PH4F:	.FCTR	P4-LTSC-PDSR-PDOP-PHS4-S1-S5-PSUTIL
;P4AF:	.FCTR      	P4A-AGOP-STACK-(COPE,X3)
AGOP3F:	.FCTR	AGOP3-(COPE,X3)
AGOP4F:	.FCTR	AGOP4-(COPE,X3)
P4AF:	.FCTR	P4A-STACK-AGOP1-(AGOP2,AGOP3F,AGOP4F)
P4BF:	.FCTR	P4B-IOVB-VPAD-VPST
P4CF:	.FCTR	P4C-COMMON-STACK-(ARCOG,ARSYN,CORR)
P4DF:	.FCTR	P4D-OVFL-STACK-STRG-UNST
P4EF:	.FCTR	P4E-INSP
P4FF:	.FCTR	P4F-VPSET-STACK
P4GF:	.FCTR	P4G-VPIF-(X1,X3)
P4HF:	.FCTR	P4H-VPNE-COMP-STACK-(COPEL,X2)
P4IF:	.FCTR	P4I-SEARCH-(SRCALL-(X1,X3),SRCSER-(X1,X3))
P4JF:	.FCTR	P4J-QPN-PDUSE
P4KF:	.FCTR	P4K-STACK-CALL
P4LF:	.FCTR	P4L-O      BJMAP
P3AF:	.FCTR	P3A-CSORT-S2-PH3A
P3BF:	.FCTR	P3B-DDOP-PH3B-S3
P5AF:	.FCTR	P5A-UTES-PH5A
P5BF:	.FCTR	P5B-PH5B
P5CF:	.FCTR	P5C-PH5C-OTSNOR
P5DF:	.FCTR	P5D-PH5D
P5EF:	.FCTR	P5E-PDOP-PSUTIL-PH5E
P5FF:	.FCTR	P5F-TSORT-PH5F
P6F:	.FCTR	P6-SRCH-PHS6-TSORT-CBIOT-OTSNOR
P7F:	.FCTR	P7-PHS7-TSORT-ODLBLD
PCREF:	.FCTR	SORTS1-SORTS2-CREF
T2:	.FCTR	P12-UTES-GWRD-DDOP-LTSC-(P1F,P2F-P2AF-P2BF-P2CF-P2DF)
T3:	.FCTR	PH4F-(P4AF,P4BF,P4CF,P4DF,P4EF,P4FF,P4GF,P4HF,P4IF,P4JF,P4KF,P4LF)
T4:	.FCTR	P4-UTES-GWRD-T3
T5     :	.FCTR	P5AB-DDOP-(P5AF,P5BF,P5CF,P5DF,P5FF)
T5A:	.FCTR	P5EF
T6:	.FCTR	P3AB-UTES-(P3AF,P3BF)
T7:	.FCTR	PCREF,SAVERR
;
ROOTB:	.FCTR	ROOT-LINK-WFBS
COMPIL:	.FCTR	CCNA-WFBK-(P0AF,P0BF,T2,T4,DUMPF,T6,T5,T5A,DUMPF1,P6F,P7F,T7)
.ROOT	ROOTB-*(COMPIL,DMLOAD)
;
	.END
          T@€›          IDENTIFICATION DIVISION.
 PROGRAM-ID. CBLMRG.
*********************************************
*
*
*
*	RSX VERSION
*
*  MODIFIED ON 13-NOVEMBER-78 BY HARRISON
*	TO INCLUDE A DEFAULT MERGE AND TO
*	ELIMINATE SOME OFFENSIVE LANGUAGE
*
*  MODIFIED ON 5-OCTOBER-78 BY HARRISON
*	TO ACCEPT NEW RMS ODL'S AND OVERLAY
*	OTS
*
*  MODIFIED ON 24-JULY-78 BY HARRISON
*	TO ACCEPT THE COBOL DEBUGGER.
*
*  MODIFIED ON 7-APR-77 BY FRIEDMAN
*	MODIFIED TO MAKE OUTPUT FILE HAVE
*	VARIABLE LENGTH RECORDS.
*      
*  MODIFIED ON 3-FEB-77 BY FRIEDMAN
*
*
*********************************************
*	COPYRIGHT (C) 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
*	TH      ESE LICENSE TERMS.  TITLE TO AND OWNERSHIP OF THE
*	SOFTWARE SHALL AT ALL TIMES REMAIN IN DIGITAL EQUIPMENT 
*	CORPORATION.
*
*	THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE
*	WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED
*	AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
*
*	DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
*	FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT
*	WHICH IS NOT SUPPLIED BY DIGITAL EQUIPMENT CORPORATION.
*

 ENVIRONMENT DIVISION.
 CONFIGURATION SE      CTION.
	SOURCE COMPUTER PDP-11
	OBJECT COMPUTER PDP-11
 INPUT-OUTPUT SECTION.
 FILE-CONTROL.
	SELECT OUTPUT-ODL
		ASSIGN TO "SY: .ODL"
		ORGANIZATION SEQUENTIAL
		ACCESS SEQUENTIAL
		STATUS OUTPUT-STATUS.
	SELECT INPUT-ODL
		ASSIGN TO "SY: .ODL"
		ORGANIZATION SEQUENTIAL
		ACCESS SEQUENTIAL
		STATUS INPUT-STATUS.
 DATA DIVISION.
 FILE SECTION.
 FD OUTPUT-ODL
	RECORD CONTAINS 40 TO 80 CHARACTERS
	LABEL RECORD STANDARD
	DATA RECORD OUT-REC
	VALUE OF ID IS OUTPUT-ODL-NAME.
 01 OUT-REC PIC       X(80).
 FD INPUT-ODL
	LABEL RECORD STANDARD
	DATA RECORD IN-REC
	VALUE OF ID IS INPUT-ODL-NAME.
 01 IN-REC PIC X(80).
 WORKING-STORAGE SECTION.
*01 PPN-OR-UIC PIC X(3) VALUE "PPN".
*01 PPN-UIC-FMT PIC X(20) VALUE "[PROJECT,PROGRAMMER]".
 01 PPN-OR-UIC PIC X(3) VALUE "UIC".
 01 PPN-UIC-FMT PIC X(20) VALUE "[GROUP,MEMBER]".
 01 INPUT-PPN-OR-UIC PIC X(50).
 01 INPUT-PPN-REDEF REDEFINES INPUT-PPN-OR-UIC.
	05 FIRST-CHAR PIC X.
	05 FILLER PIC X(49).
 01 OUTPUT-ODL-NAME PIC X(30) VALUE SPACES.
 01       OUTPUT-STATUS PIC X(2).
 01 INPUT-ODL-NAME PIC X(30) VALUE SPACES.
 01 INPUT-STATUS PIC X(2).
 01 TEMP-INPUT-ODL-NAME PIC X(30) VALUE SPACES.
 01 OUTPUT-ODL-ERROR PIC 9(4) COMP.
 01 INPUT-ODL-ERROR PIC 9(4) COMP.
 01 MONTHS PIC X(36)
	VALUE "JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC".
 01 MONTHS-REDEF REDEFINES MONTHS.
	05 MONTH-TAB PIC X(3) OCCURS 12.
 01 MERGE-DATE PIC 9(6).
 01 MERGE-DATE-REDEF REDEFINES MERGE-DATE.
	05 MYR PIC X(2).
	05 MMON PIC 9(2).
	05 MDAY PIC X(2).
 01 MERGE-TIME PIC 9(8      ).
 01 MERGE-TIME-REDEF REDEFINES MERGE-TIME.
	05 MHR PIC X(2).
	05 MMIN PIC X(2).
	05 MSEC PIC X(2).
	05 FILLER PIC X(2).
 01 ODL-HDR.
	05 MG-CN1 PIC X(28) VALUE ";MERGED ODL FILE CREATED ON ".
	05 DD PIC X(2).
	05 FILLER PIC X(1) VALUE "-".
	05 MM PIC X(3).
	05 FILLER PIC X(1) VALUE "-".
	05 YY PIC X(2).
	05 MERGE-CONST2 PIC X(4) VALUE " AT ".
	05 HH PIC X(2).
	05 FILLER PIC X(1) VALUE ":".
	05 MIN PIC X(2).
	05 FILLER PIC X(1) VALUE ":".
	05 SS PIC X(2).
 01 ANS PIC X.
*
* RMS CHANGE      S 5-OCT-78  - FOR NEW RMS ODL FILES   :AWH
*
 01 RESIDENT-LIBRARY	PIC 9 VALUE 0.
 01 DEFAULT-UIC-TOKEN PIC X VALUE SPACES.
 01 DEFAULT-MERGE	PIC X VALUE SPACES.
 01 DEFAULT-OVERLAY	PIC 9 VALUE 0.
 01 USERS-ODL-FILESPEC	PIC X(30) VALUE SPACES.
*
* CID REFERENCES 31-7-78  :AWH
*
 01 CID-ANS	PIC X.
 01 HDR-ERROR PIC 9(4) COMP VALUE 0.
 01 COBMAIN PIC 9(4) COMP VALUE 0.
 01 COBMAIN-ALREADY PIC 9(4) COMP VALUE 0.
 01 SEMI-COUNT PIC 9(4) COMP VALUE 0.
 01 EQUAL-COUNT PIC 9(4) COMP VALUE 0.
 01 PER      IOD-COUNT PIC 9(4) COMP VALUE 0.
 01 COMMA-COUNT PIC 9(4) COMP.
 01 COLON-COUNT PIC 9(4) COMP.
 01 LEFT-BRACKET PIC 9(4) COMP.
 01 RIGHT-BRACKET PIC 9(4) COMP.
 01 PPN-ERROR PIC 9(4) COMP.
 01 MERGED-ODL PIC 9(4) COMP.
 01 OPEN-FLAG PIC 9(4) COMP.
 01 RMS-FROM-LIBRARY PIC 9(4) COMP.
 01 FIELD0 PIC X(50).
 01 FIELD1 PIC X(50).
 01 FIELD2 PIC X(50).
 01 FIELD2-REDEF REDEFINES FIELD2.
	05 FARR PIC X OCCURS 50.
 01 IX1 PIC 9(4) COMP.
 01 PPN-COUNT PIC 9(4) COMP.
 01 KEYWORD PIC X(10).
 01 KEYVA      LUE PIC X(13).
 01 COBOBJ PIC X(15).
 01 COBKER PIC X(2).
 01 OBJ-STRING PIC X(66) VALUE SPACES.
 01 OBJPTR PIC 9(4) COMP VALUE 1.
 01 OVR-STRING PIC X(50) VALUE SPACES.
 01 OVRPTR PIC 9(4) COMP VALUE 1.
 01 OBJ-LINE.
	05 OBJ-FAC-NAME PIC X(6).
	05 FILLER PIC X(8) VALUE ": .FCTR ".
	05 OBJ-NAMES PIC X(66) VALUE SPACES.
 01 TEMP-OBJ PIC X(30).
 01 TEMP-PTR PIC 9(4) COMP VALUE 0.
01 TEMP-COUNT PIC 9(4) COMP VALUE 0.
01 TEMP-COUNT-2 PIC 9(4) COMP VALUE 0.
01 TEST-OBJ PIC X(50).
 01 TEMP-OVR.
	      05 KK PIC X(2).
 	05 CONST PIC X(4) VALUE "OVR$".
 01 TEMP-OVR-PTR PIC 9(4) COMP VALUE 0.
 01 CURR-OBJ-FAC.
	05 CB PIC X(2) VALUE "CB".
	05 OBJ-FAC-COUNT PIC 9(2) DISPLAY VALUE 0.
	05 JDOL PIC X(2) VALUE "J$".
 01 CURR-OVR-FAC.
	05 CB PIC X(2) VALUE "CB".
 	05 OVR-FAC-COUNT PIC 9(2) DISPLAY VALUE 0.
	05 RDOL PIC X(2) VALUE "R$".
 01 OVR-LINE.
	05 OVR-FAC-NAME PIC X(6).
	05 FILLER PIC X(8) VALUE ": .FCTR ".
	05 OVR-NAMES PIC X(66) VALUE SPACES.
* CONST-OBJRT-REC WILL CHANGE IF  DEBUGGER USED -       31-7-78 :AWH
 01 OBJRT-REC.
	05 CONST-OBJRT-REC PIC X(34) VALUE 
		"OBJRT$: .FCTR CBOBJ$-CBOTS$!".
	05 VAR-OBJRT-REC PIC X(46) VALUE
		SPACES.
 01 COBLIB-UIC PIC X(12) VALUE "LB:[1,1]".
 01 COBLIB PIC X(18) VALUE "COBOVR/LB".
 01 COBOVR-NAME PIC X(80) VALUE IS "        .NAME OTS$OV".
 01 CBOVR PIC X(9) VALUE "-(CBOVR$)".
 01 ROOT-REC PIC X(80) VALUE "        .ROOT OBJRT$!".
 01 CBOTS-REC.
	05 CONST-CBOTS-REC PIC X(14) VALUE "CBOTS$: .FCTR ".
	05 VAR-CBOTS-REC PIC X(66) VALUE SPACES.
* CID REF      ERENCES 31-7-78 :AWH
 01 CID PIC X(10) VALUE IS "CID".
 01 CID-REC.
	05 CONST-CID-REC PIC X(14) VALUE IS "CID$:   .FCTR ".
	05 VAR-CID-REC PIC X(66) VALUE IS SPACES.

 01 RMSREQ-COUNT PIC 9(4) VALUE 0.
 01 RMSREQ-MAX PIC 9(4) VALUE 10.
 01 WORK-RMSREQ.
	05 RMSREQ-SUFF PIC X(2) VALUE "CI".
	05 RMSREQ-OLAY PIC 9 VALUE 0.
	05 RMSREQ-SYNC PIC 9 VALUE 0.
	05 RMSREQ-ORG PIC 9 VALUE 0.
	05 RMSREQ-OPS PIC 9 VALUE 7.
 01 WORK-RMSREQ-INIT PIC X(6) VALUE "CIO007".
 01 RMSREQ-ARRAY.
	05 RMSREQ PIC X(10)       OCCURS 10.
*
 01 LOOP-COUNT PIC 9(4) COMP.
*
 01 SEQ-OPS PIC 9 VALUE 0.
 01 REL-OPS PIC 9 VALUE 0.
 01 INDEX-OPS PIC 9 VALUE 0.
 01 COMPOSITE-ORG PIC 9 VALUE 0.
*
 01 SEQ-ORG-CODE PIC 9 VALUE 1.
 01 REL-ORG-CODE PIC 9 VALUE 2.
 01 INDEX-ORG-CODE PIC 9 VALUE 3.
*
 01 WORK-OPS PIC 9.
 01 WORK-VAL PIC 9.
 01 C2 PIC 9 VALUE 2.
*
 01 WORK-B0 PIC 9.
 01 WORK-B1 PIC 9.
 01 WORK-B2 PIC 9.
*
 01 OPS-B0 PIC 9.
 01 OPS-B1 PIC 9.
 01 OPS-B2 PIC 9.
*
 01 RMS-UIC PIC X(10) VALUE "LB:[1,1]".
 01       RMSLIB PIC X(20) VALUE "RMSLIB/LB".
 01 RMS-FCTR.
	05 RMS-FCTR-CONST PIC X(15) VALUE "RMS$:   .FCTR ".
	05 RMS-VAR-STRING PIC X(50) VALUE SPACES.
 01 RMSPTR PIC 9(4) COMP VALUE 1.
 01 RMSROT PIC X(10) VALUE ",RMSTR$".
 01 RMSTR PIC X(7) VALUE SPACES.
 01 SIMPLE-ROOT PIC X(7) VALUE "RMSROT".
 01 INDEXED-ROOT PIC X(7) VALUE "RMSROT".
 01 RMSTR-STRING.
	05 RMSTR-STRING-FIXED PIC X(21) 
		VALUE "RMSTR$: .FCTR RMS$TR-".
	05 RMSTR-STRING-VAR PIC X(10) VALUE SPACES.
 01 NAME-STRING PIC X(20)
	VALUE       "        .NAME RMS$TR".
 01 RMS-NEEDED-STRING PIC X(6) VALUE SPACES.
 PROCEDURE DIVISION.
 DECLARATIVES.
 OUTPUT-ODL-USE SECTION.
 USE-1.
	USE AFTER ERROR PROCEDURE ON OUTPUT-ODL.
	IF OPEN-FLAG = 1
		DISPLAY "OPEN UNSUCCESSFUL"
		COMPUTE OUTPUT-ODL-ERROR = 1
	ELSE
		DISPLAY "WRITE ERROR--MUST ABORT"
		GO TO ABORT-EXECUTION.
 INPUT-ODL-USE SECTION.
 USE-2.
	USE AFTER ERROR PROCEDURE ON INPUT-ODL.
	IF OPEN-FLAG = 1
		DISPLAY "OPEN UNSUCCESSFUL"
		COMPUTE INPUT-ODL-ERROR = 1
	ELSE
		DISPLAY       "READ ERROR--MUST ABORT"
		GO TO ABORT-EXECUTION.
 END DECLARATIVES.
 MAIN-CONTROL SECTION.
 P1.
*	THIS IS THE MAIN CONTROL SECTION OF THE ODL BIND
*	PROGRAM.  THIS SECTION ASKS THE USER FOR THE NAME OF
*	THE OUTPUT FILE, OPENS IT FOR WRITING, AND THEN ASKS
*	FOR THE NAMES OF THE INPUT ODL FILES TO BE MERGED.
*	ACTUAL MERGING IS DONE BY PERFORMING UTILITY
*	PROCEDURES, OUTSIDE OF THE FLOW OF THIS CONTROL
*	SECTION.
*
 GET-OUTPUT-FILESPEC.
*	THIS PARAGRAPH ASKS THE USER FOR THE FILESPEC
*	OF       THE OUTPUT FILE, AND OPENS THE FILE.
	COMPUTE OUTPUT-ODL-ERROR = 0.
	DISPLAY "PLEASE ENTER FILE SPECIFICATION FOR OUTPUT FILE".
	ACCEPT OUTPUT-ODL-NAME.
	COMPUTE OPEN-FLAG = 1.
	OPEN OUTPUT OUTPUT-ODL.
	IF OUTPUT-ODL-ERROR = 1 GO TO GET-OUTPUT-FILESPEC.
	COMPUTE OPEN-FLAG = 0.
*	GET THE DATE AND TIME, AND INSERT INTO THE HEADER RECORD 
*	OF THE OUTPUT FILE.
	ACCEPT MERGE-DATE  FROM DATE.
	ACCEPT MERGE-TIME  FROM TIME.
	MOVE MDAY TO DD OF ODL-HDR.
	MOVE MONTH-TAB(MMON) TO MM OF ODL-HDR.
 	MOVE       MYR TO YY OF ODL-HDR.
	MOVE MHR TO HH OF ODL-HDR .
	MOVE MMIN TO MIN OF ODL-HDR.
	MOVE MSEC TO SS OF ODL-HDR.
	WRITE OUT-REC FROM ODL-HDR.

*
* THIS QUESTION ANSWERS MANY OTHERS AND AVOIDS TEDIUM
*

 ASK-DEFAULT-MERGE.
	DISPLAY "DO YOU WANT A DEFAULT MERGE?".
 DEFAULT-MERGE-ANSWER.
	DISPLAY "PLEASE ANSWER Y(ES), N(O), OR H(ELP) "
		WITH NO ADVANCING.
	ACCEPT DEFAULT-MERGE.
	IF DEFAULT-MERGE = "Y"
		MOVE 0 TO MERGED-ODL
		MOVE 0 TO CID-ANS
		GO TO ASK-FOR-COBLIB
	 ELSE IF DEFAULT-MERGE =       "N"
		GO TO ASK-FOR-MERGED
	 ELSE IF DEFAULT-MERGE = "H"
		PERFORM HELP-DEFAULT
		GO TO DEFAULT-MERGE-ANSWER.
	GO TO DEFAULT-MERGE-ANSWER.
 ASK-FOR-MERGED.
*	THIS PARAGRAPH ASKS WHETHER THE USER WANTS AN
*	"ABBREVIATED" OR "MERGED" ODL FILE.  AN "ABBREVIATED"
*	ODL FILE CONTAINS INDIRECT REFERENCES TO THE INPUT ODL
*	FILES, I.E., "@INPUT.ODL".  A MERGED ODL FILE CONTAINS
*	AN EXACT COPY OF THE INPUT ODL FILE.

	DISPLAY "DO YOU WANT AN ABBREVIATED OR MERGED ODL FILE?".
	DISPLAY "PLEASE ANSWER A      (BBREVIATED), M(ERGED), OR H(ELP) "
		WITH NO ADVANCING.
 MERGED-ANS.
	ACCEPT ANS.
	IF ANS = "M" COMPUTE MERGED-ODL = 1
		ELSE IF ANS = "A" COMPUTE MERGED-ODL = 0
		ELSE IF ANS = "H" PERFORM HELP-A-OR-M
			DISPLAY "PLEASE ANSWER A OR M "
				WITH NO ADVANCING
			GO TO MERGED-ANS
		ELSE
			DISPLAY "PLEASE ANSWER A, M, OR H "
				WITH NO ADVANCING
			GO TO MERGED-ANS.
ASK-FOR-DEBUGGER.
	DISPLAY "DO YOU WANT TO INCLUDE THE COBOL DEBUGGER (CID)?"
	DISPLAY "PLEASE ANSWER Y(ES) OR N(O) " WITH NO A      DVANCING.
DEBUGGER-ANS.
	ACCEPT ANS.
	IF ANS = "Y" MOVE 1 TO CID-ANS
	   ELSE IF ANS = "N" MOVE 0 TO CID-ANS
	   ELSE DISPLAY "PLEASE ANSWER Y OR N " WITH NO ADVANCING
		GO TO DEBUGGER-ANS.
	MOVE SPACES TO ANS.
	IF CID-ANS = 1
		STRING COBLIB-UIC DELIMITED BY SPACES
		 CID DELIMITED BY SPACES
		 INTO VAR-CID-REC
		MOVE "OBJRT$: .FCTR CBOBJ$-CID$-CBOTS$!" TO
		 CONST-OBJRT-REC.
 ASK-FOR-COBLIB.
*
*	THIS SECTION ASKS WHETHER THE COBOL OTS SHOULD BE SELECTIVELY
*	LOADED FROM THE COBLIB LIBRARY      , OR WHETHER A DEFAULT COBOL 
*	OTS OVERLAY STRUCTURE SHOULD BE USED TO LOAD IN THE ENTIRE 
*	COBOL OTS.
*
**********NOTE... FOR NOW THE LIBRARY IS ALWAYS USED*************

	STRING COBLIB-UIC DELIMITED BY SPACES
		COBLIB DELIMITED BY SPACES
		INTO VAR-CBOTS-REC.

 ASK-FOR-RMSLIB.
*
*	THIS PARAGRAPH ASKS WHETHER THE RMS ROUTINES ARE TO BE LOADED
*	INTO THE TASK IMAGE SELECTIVELY FROM THE RMSLIB OR WHETHER
*	AN OVERLAY STRUCTURE IS TO BE USED TO LOAD THE RMS
*	ROUTINES NEEDED FOR THE TASK.
*      


	IF DEFAULT-MERGE = "Y"
		MOVE 0 TO RMS-FROM-LIBRARY
		MOVE 1 TO DEFAULT-OVERLAY
		GO TO GET-INPUT-FILESPEC.
	DISPLAY "DO YOU WANT TO OVERLAY I/O SUPPORT ROUTINES?".
 RMS-LIB-ANS.
	DISPLAY "PLEASE ANSWER Y(ES), N(O), OR H(ELP) "
		WITH NO ADVANCING.
	ACCEPT ANS.
	IF ANS = "Y" COMPUTE RMS-FROM-LIBRARY = 0
		ELSE IF ANS = "N" COMPUTE RMS-FROM-LIBRARY = 1
		ELSE IF ANS = "H" PERFORM HELP-OVERLAY
			GO TO RMS-LIB-ANS
		ELSE GO TO RMS-LIB-ANS.

	IF RMS-FROM-LIBRARY = 1
	STRING RMS-UIC DELIMI      TED BY SPACES
		RMSLIB DELIMITED BY SPACES
		INTO RMS-VAR-STRING
		GO TO GET-INPUT-FILESPEC.


DEFAULT-RMS-OVERLAY.

* THIS SECTIONS ALLOWS A USER TO SPECIFY HIS HAND TAILORED RMS ODL
* IF HE IS THAT MASOCHISTIC

	DISPLAY "DO YOU WANT TO USE THE DEC SUPPLIED I/O
-		" OVERLAY STRUCTURE".

DEFAULT-ANS.
	DISPLAY "PLEASE ANSWER Y(ES), N(O), OR H(ELP) "
		WITH NO ADVANCING.
	ACCEPT ANS.
	IF ANS = "Y" 
		MOVE 1 TO DEFAULT-OVERLAY
		GO TO GET-INPUT-FILESPEC
	 ELSE IF ANS = "N"
		MOVE 0 TO DEF      AULT-OVERLAY
	 ELSE IF ANS = "H"
		DISPLAY " "
		DISPLAY "ANSWER Y(ES)!"
		DISPLAY " "
		DISPLAY "FOR MORE DOCUMENTATION, PLEASE READ
-			" CHAPTER TWO"
		DISPLAY "OF THE COBOL USERS GUIDE."
		GO TO  DEFAULT-ANS
	 ELSE IF ANS = "R"
		MOVE 1 TO RESIDENT-LIBRARY
		MOVE 1 TO DEFAULT-OVERLAY
		GO TO GET-INPUT-FILESPEC
	 ELSE GO TO DEFAULT-ANS.

USERS-OVERLAY.
	DISPLAY "PLEASE ENTER YOUR ODL FILE SPEC: "
		WITH NO ADVANCING.
	ACCEPT USERS-ODL-FILESPEC.
	MOVE SPACES TO FIELD0,FIELD1.
	UNSTRING       USERS-ODL-FILESPEC DELIMITED BY "." INTO FIELD0
		FIELD1.
	IF FIELD0 = SPACES OR FIELD1 = SPACES
		DISPLAY "INCOMPLETE FILE SPECIFICATION: ", 
			USERS-ODL-FILESPEC
		MOVE SPACES TO FIELD0, FIELD1
		GO TO USERS-OVERLAY.
	MOVE SPACES TO FIELD0, FIELD1.

*	
 GET-INPUT-FILESPEC.
*	THIS PARAGRAPH GETS THE FILE SPECIFICATION OF THE INPUT ODL 
*	FILE, AND OPENS THE FILE.
	COMPUTE INPUT-ODL-ERROR = 0.
	MOVE SPACES TO TEMP-INPUT-ODL-NAME.
	DISPLAY "PLEASE ENTER FILE SPECIFICATION FOR INPUT ODL FILE"      .
	ACCEPT TEMP-INPUT-ODL-NAME.
 GET-INPUT-ODL-PPN-OR-UIC.
	MOVE SPACES TO FIELD0, INPUT-PPN-OR-UIC.
	UNSTRING TEMP-INPUT-ODL-NAME DELIMITED BY "]" INTO
		FIELD0 DELIMITER IN DEFAULT-UIC-TOKEN.
	IF DEFAULT-UIC-TOKEN = "]"
		STRING FIELD0 DELIMITED BY SPACES
		"]" DELIMITED BY SIZE
		INTO INPUT-PPN-OR-UIC.
*	SCAN THE FILE SPECIFICATION FOR ".".
	COMPUTE PERIOD-COUNT = 0.
	INSPECT TEMP-INPUT-ODL-NAME TALLYING PERIOD-COUNT
		FOR ALL ".".
	COMPUTE TEMP-PTR = 1.
*	MOVE THE FILE SPECIFICATION TO VAL      UE OF ID VARIABLE
	MOVE SPACES TO INPUT-ODL-NAME.
	STRING TEMP-INPUT-ODL-NAME DELIMITED BY SPACE
		INTO INPUT-ODL-NAME POINTER TEMP-PTR.
*	IF NO "." WAS PRESENT, APPEND ".ODL" TO THE FILESPEC.
	IF PERIOD-COUNT = 0
		STRING ".ODL" DELIMITED BY SIZE INTO 
		INPUT-ODL-NAME POINTER TEMP-PTR.
	COMPUTE OPEN-FLAG = 1.
	OPEN INPUT INPUT-ODL.
	IF INPUT-ODL-ERROR = 1 GO TO ASK-FOR-MORE.
	COMPUTE OPEN-FLAG = 0.
*	PERFORM UTILITY PROCEDURES TO PROCESS THE INPUT ODL FILES
*
	PERFORM PROCESS-INPUT-ODL.
	IF       RMS-FROM-LIBRARY = 0
		PERFORM PROCESS-RMSREQ.
*
 ASK-FOR-MORE.
	DISPLAY "ANY MORE INPUT ODL FILES? ".
GET-ANSWER.
	DISPLAY "PLEASE ANSWER Y(ES) OR N(O) "
		WITH NO ADVANCING.
	ACCEPT ANS.
	IF ANS = "Y" GO TO GET-INPUT-FILESPEC
		ELSE IF ANS = "N" GO TO FINISH-CHECK
			ELSE GO TO GET-ANSWER.
*
 FINISH-CHECK.
*	THIS PARAGRAPH CHECKS TO SEE WHETHER A MAIN PROGRAM
*	HAS BEEN INCLUDED IN THE GENERATED ODL FILE.  IF NOT,
*	A WARNING DIAGNOSTIC IS ISSUED, AND THE USER IS
*	ASKED FOR MORE INPUT O      DL FILES.
*
	IF COBMAIN-ALREADY = 0
		DISPLAY "WARNING: NO MAIN PROGRAM SPECIFIED YET"
		DISPLAY
		"THE ODL FILE GENERATED SO FAR IS INCOMPLETE"
		GO TO ASK-FOR-MORE.
*
 FINISH-UP.
	MOVE "CBOBJ$" TO OBJ-FAC-NAME.
	MOVE OBJ-STRING TO OBJ-NAMES.
	WRITE OUT-REC FROM OBJ-LINE.
	IF OVR-STRING NOT = SPACES
		MOVE "CBOVR$" TO OVR-FAC-NAME
		MOVE OVR-STRING TO OVR-NAMES
		WRITE OUT-REC FROM OVR-LINE
	ELSE MOVE SPACES TO CBOVR.
	IF CID-ANS NOT = 0
		WRITE OUT-REC FROM CID-REC.
	WRITE OUT-REC FROM       CBOTS-REC.
	WRITE OUT-REC FROM COBOVR-NAME.
	
	MOVE "CNVRT$" TO OVR-FAC-NAME.
	MOVE "LB:[1,1]COBOVR/LB:CONVER" TO OVR-NAMES.
	WRITE OUT-REC FROM OVR-LINE.

	MOVE "LDCVT$" TO OVR-FAC-NAME.
	MOVE "LB:[1,1]COBOVR/LB:LDCVT" TO OVR-NAMES.
	WRITE OUT-REC FROM OVR-LINE.

	MOVE "USRIO$" TO OVR-FAC-NAME.
	MOVE "LB:[1,1]COBOVR/LB:USRSIO" TO OVR-NAMES
	WRITE OUT-REC FROM OVR-LINE.

	MOVE "OTSOV$" TO OVR-FAC-NAME.
	MOVE "OTS$OV-(CNVRT$-(*LDCVT$),*USRIO$)" TO OVR-NAMES.
	WRITE OUT-REC FROM OVR-LINE.

      	IF RMS-FROM-LIBRARY = 0 AND RMSREQ-COUNT NOT = 0
		PERFORM RMSREQ-ODL
		WRITE OUT-REC FROM RMS-FCTR
		MOVE "-RMS$" TO RMS-NEEDED-STRING
	ELSE IF RMSREQ-COUNT NOT = 0
		WRITE OUT-REC FROM RMS-FCTR
		MOVE "-RMS$" TO RMS-NEEDED-STRING.
	MOVE SPACES TO OUT-REC.
	STRING OBJRT-REC DELIMITED BY "!"
		RMS-NEEDED-STRING DELIMITED BY SPACES
		INTO OUT-REC.
	WRITE OUT-REC.
	MOVE SPACES TO OUT-REC.
	STRING ROOT-REC DELIMITED BY "!"
		CBOVR DELIMITED BY SPACES
		RMSTR DELIMITED BY SPACES
		",OTSOV$" DEL      IMITED BY SIZE
		INTO OUT-REC.
	WRITE OUT-REC.
	MOVE "        .END" TO OUT-REC.
	WRITE OUT-REC.
	CLOSE OUTPUT-ODL.
	DISPLAY "ODL FILE MERGE COMPLETE".
	DISPLAY "MERGED ODL FILE IS: " OUTPUT-ODL-NAME.
 STOP-IT.
	STOP RUN.
*
*
*
 PROCESS-INPUT-ODL SECTION.
 P1.
	MOVE SPACES TO COBOBJ COBKER.
	COMPUTE HDR-ERROR = 0.
	COMPUTE COBMAIN = 0.
 READ-INPUT-ODL.
	MOVE SPACES TO IN-REC.
	READ INPUT-ODL AT END GO TO ADD-TO-ODL.
	PERFORM HDR-CHECK.
	IF HDR-ERROR = 1 GO TO CLOSE-INPUT-ODL
	ELSE GO T      O READ-INPUT-ODL.
 ADD-TO-ODL.
*	THIS PARAGRAPH IS ENTERED WHEN THE ENTIRE INPUT ODL FILE
*	HAS BEEN SCANNED.
*	ENTRY CONDITIONS:
*	1.  COBMAIN EQUALS 1 IF THE INPUT ODL FILE CONTAINED
*	    A ;COBMAIN HEADER LINE.
*	2.  COBOBJ CONTAINS THE NAME OF THE OBJECT FILE,
*	    ACQUIRED FROM THE ;COBOBJ HEADER LINE.
*	3.  COBKER CONTAINS THE PSECT NAME KERNEL, ACQUIRED
*	FROM THE ;COBKER HEADER LINE.
*
*
	IF COBMAIN = 1 AND COBMAIN-ALREADY
		DISPLAY "THIS ODL FILE CONTAINS A ;COBMAIN LINE"
		DISPLAY       "A ;COBMAIN HEADER LINE HAS ALREADY OCCURRED"
		DISPLAY "THIS ODL FILE IS IGNORED"
		GO TO CLOSE-INPUT-ODL.

	IF COBKER = SPACES AND COBOBJ = SPACES
		DISPLAY "NOT STANDARD COBOL ODL FILE"
		DISPLAY "THIS FILE IS IGNORED"
		GO TO CLOSE-INPUT-ODL.
	IF COBMAIN = 1 MOVE COBMAIN TO COBMAIN-ALREADY.
	IF MERGED-ODL = 0 PERFORM MAKE-INDIRECT-REF
		ELSE PERFORM MERGE-INPUT-ODL.
	PERFORM INSERT-OBJ.
	IF COBKER NOT = SPACES
		PERFORM INSERT-OVR.
	IF RMSREQ-COUNT NOT = 0
		PERFORM PROCESS-RMSREQ.
	
       CLOSE-INPUT-ODL.
	CLOSE INPUT-ODL.

 HDR-CHECK SECTION.
 P1.
	MOVE 0 TO SEMI-COUNT EQUAL-COUNT.
	INSPECT IN-REC TALLYING SEMI-COUNT FOR ALL ";"
		EQUAL-COUNT FOR ALL "=".
	IF SEMI-COUNT = 1 AND EQUAL-COUNT = 1
		PERFORM HDR-SCAN1
	ELSE IF SEMI-COUNT = 1
		PERFORM HDR-SCAN2.

 HDR-SCAN1 SECTION.
 P1.
*	THIS SECTION IS EXECUTED IF AN INPUT LINE CONTAINS
*	EXACTLY ONE SEMI-COLON AND ONE EQUAL SIGN.  HERE, WE CHECK
*	TO DETERMINE WHETHER THE LINE IS A ;COBOBJ OR ;COBKER LINE
*	OR A ;RMSREQ LIN      E.

	UNSTRING IN-REC DELIMITED BY ";" INTO FIELD0 FIELD1.
*	AT THIS POINT, FIELD1 CONTAINS EVERYTHING TO THE RIGHT OF ";"
	UNSTRING FIELD1 DELIMITED BY "=" INTO KEYWORD,FIELD2.
*	AT THIS POINT, FIELD2 CONTAINS EVERYTHING TO THE RIGHT OF "="
	UNSTRING FIELD2 DELIMITED BY " " INTO KEYVALUE.
	IF KEYWORD = "COBOBJ" PERFORM COBOBJ-CHECK
	ELSE IF KEYWORD = "COBKER" PERFORM COBKER-CHECK
	ELSE IF KEYWORD = "RMSREQ" PERFORM RMSREQ-CHECK.


 COBOBJ-CHECK SECTION.
 P1.
*	THIS SECTION DETERMINES WHETHER A       COBOBJ HEADER LINE
*	HAS ALREADY BEEN PROCESSED FOR THIS OBJECT FILE.  IF SO,
*	A DIAGNOSTIC IS ISSUED, OTHERWISE, THE COBOBJ NAME IS 
* 	STORED AWAY.
	IF COBOBJ NOT = ALL SPACES
		DISPLAY "MULTIPLE ;COBOBJ HEADER LINE DETECTED"
		DISPLAY "THIS ODL FILE IS IGNORED"
		COMPUTE HDR-ERROR = 1
	ELSE MOVE KEYVALUE TO COBOBJ.
 COBKER-CHECK SECTION.
 P1.
*	THIS SECTION DETERMINES WHETHER A COBKER HEADER LINE
*	HAS ALREADY BEEN PROCESSED FOR THIS OBJECT FILE.  IF SO,
*	A DIAGNOSTIC IS ISSUED, OTHERWISE      , THE COBKER
*	NAME IS STORED AWAY.

	IF COBKER NOT = ALL SPACES
		DISPLAY "MULTIPLE ;COBKER HEADER LINE DETECTED"
		DISPLAY "THIS ODL FILE IS IGNORED"
		COMPUTE HDR-ERROR = 1
	ELSE MOVE KEYVALUE TO COBKER.

 RMSREQ-CHECK SECTION.
 P1.
*	THIS SECTION SAVES THE RMSREQ NAME INTO AN ARRAY OF
*	RMSREQ NAMES, AFTER MAKING THE FOLLOWING CHECKS:
*		1.  THE MAXIMUM NUMBER OF RMSREQS HAS NOT BEEN
*		    EXCEEDED.
*		2.  THE RMSREQ NAME IS OF THE FORMAT "RMNXYZ".
*

	IF RMSREQ-COUNT = RMSREQ-MAX
		      DISPLAY "MAXIMUM NUMBER OF RMSREQ ENTRIES EXCEEDED"
		DISPLAY "THIS ODL FILE IS IGNORED"
		COMPUTE HDR-ERROR = 1
		GO TO RMSREQ-CHECK-EXIT.
	MOVE KEYVALUE TO WORK-RMSREQ.
	IF RMSREQ-SUFF NOT EQUAL "CI"
		DISPLAY "BAD FORMAT RMSREQ ENTRY"
		DISPLAY "THIS ODL FILE IS IGNORED"
		COMPUTE HDR-ERROR = 1
		GO TO RMSREQ-CHECK-EXIT.
	ADD 1 TO RMSREQ-COUNT.
	MOVE WORK-RMSREQ TO RMSREQ (RMSREQ-COUNT).
 RMSREQ-CHECK-EXIT.
	EXIT.

 INSERT-OBJ SECTION.
 P1.
*	THIS SECTION INSERTS AN OBJECT FILE NAME INTO       THE
*	COBOBJ$ .FCTR DIRECTIVE.
*
*	ENTRY CONDITIONS:
*	1.  COBOBJ CONTAINS THE OBJECT FILE NAME.
*
*
*	GET THE PPN (OR UIC) OF THE OBJECT FILE REFERENCED
*	IN THE ODL FILE.
	IF DEFAULT-MERGE = "Y"
		GO TO DEFAULT-PPN.
	DISPLAY "OBJECT PROGRAM REFERENCED IN ODL FILE IS:".
	DISPLAY "     " COBOBJ.
 GET-PPN.
	DISPLAY   "PLEASE ENTER OBJECT FILE DEVICE AND "   
		PPN-OR-UIC 
		" IN THE FORMAT: DEV:" 
		PPN-UIC-FMT.
	ACCEPT INPUT-PPN-OR-UIC.
 DEFAULT-PPN.
	COMPUTE PPN-ERROR = 0.
*	CONSTRUCT       THE COMPLETE FILE SPECIFICATION FOR THE OBJECT 
*	FILE.
	COMPUTE TEMP-PTR = 1.
	MOVE SPACES TO TEMP-OBJ.
	IF INPUT-PPN-OR-UIC NOT = SPACES
		STRING INPUT-PPN-OR-UIC DELIMITED BY SPACE 
		INTO TEMP-OBJ POINTER TEMP-PTR
		PERFORM PPN-CHECK.
	IF PPN-ERROR = 1 GO TO GET-PPN.
	STRING COBOBJ DELIMITED BY SPACE INTO TEMP-OBJ
		POINTER TEMP-PTR.
*	COMPUTE THE LENGTH OF THE FILE SPECIFICATION.
	COMPUTE TEMP-PTR = TEMP-PTR - 1.

	IF OBJPTR + TEMP-PTR > 50
		PERFORM NEW-OBJ-FACTOR
	ELSE PERFORM INSERT      -OBJ-NAME.

 NEW-OBJ-FACTOR SECTION.
 P1.
*	THIS SECTION FINISHES THE CURRENT OBJECT FILE
*	.FCTR DIRECTIVE, WRITES IT, AND STARTS A NEW
*	OBJECT FILE .FCTR DIRECTIVE.
*
	ADD 1 TO OBJ-FAC-COUNT.
	MOVE CURR-OBJ-FAC TO OBJ-FAC-NAME.
	MOVE OBJ-STRING TO OBJ-NAMES OF OBJ-LINE.
	WRITE OUT-REC FROM OBJ-LINE.

	MOVE SPACES TO OBJ-NAMES OF OBJ-LINE.
	MOVE SPACES TO OBJ-STRING.
	COMPUTE OBJPTR = 1.
	STRING CURR-OBJ-FAC DELIMITED BY SIZE
		INTO OBJ-STRING POINTER OBJPTR.
	PERFORM INSERT-OBJ-NAME.
      
 INSERT-OBJ-NAME SECTION.
 P1.
*	THIS SECTION INSERTS AN OBJECT FILE NAME INTO THE OBJECT 
*	.FCTR DIRECTIVE.
*
*	ENTRY CONDITIONS:
*	1.  TEMP-OBJ CONTAINS THE OBJECT FILE NAME, LEFT JUSTIFIED,
*	AND SPACE FILLED ON THE RIGHT.
*
	IF OBJPTR NOT = 1 STRING "-" DELIMITED BY SIZE 
		INTO OBJ-STRING POINTER OBJPTR.
	STRING TEMP-OBJ DELIMITED BY SPACES INTO OBJ-STRING 
		POINTER OBJPTR.

 INSERT-OVR SECTION.
 P1.
*	THIS SECTION INSERTS AN OVERLAY FACTOR OF THE FORMAT
*	KKOVR$ INTO THE OVERLAY .F      CTR DIRECTIVE.
*
*	ENTRY CONDITIONS:
*	1.  COBKER CONTAINS THE PSECT NAME KERNEL, KK.
*	2.  OVRPTR POINTS TO THE NEXT AVAILABLE POSITION
*	IN THE STRING BEING BUILT.
*
	IF OVRPTR + 7 > 50
		PERFORM NEW-OVR-FACTOR
	ELSE PERFORM INSERT-OVR-NAME.

 NEW-OVR-FACTOR SECTION.
 P1.
*	THIS SECTION FINISHES THE CURRENT OVR .FCTR DIRECTIVE,
*	WRITES IT, AND STARTS A NEW OVR .FCTR DIRECTIVE.

	ADD 1 TO OVR-FAC-COUNT.
	MOVE CURR-OVR-FAC TO OVR-FAC-NAME.
	MOVE OVR-STRING TO OVR-NAMES OF OVR-LINE.
	WRIT      E OUT-REC FROM OVR-LINE.

	MOVE SPACES TO OVR-NAMES OF OVR-LINE.
	MOVE SPACES TO OVR-STRING.
	COMPUTE OVRPTR = 1.
	STRING CURR-OVR-FAC DELIMITED BY SIZE
			INTO OVR-STRING
		POINTER OVRPTR.
	PERFORM INSERT-OVR-NAME.


 INSERT-OVR-NAME SECTION.
 P1.
*	THIS SECTION INSERTS AN OVERLAY FACTOR NAME INTO THE 
*	OVERLAY .FCTR DIRECTIVE.
*
*	ENTTRY CONDITIONS:
*	1.  COBKER CONTAINS THE PSECT NAME KERNEL.
*	2.  OVRPTR POINTS TO THE NEXT POSITION IN THE OVERLAY
*	STRING BEING BUILT.
*
	IF OVRPTR       NOT = 1
	STRING "," DELIMITED BY SIZE INTO OVR-STRING
		POINTER OVRPTR.
	MOVE COBKER TO KK OF TEMP-OVR.
	STRING TEMP-OVR DELIMITED BY SIZE INTO OVR-STRING
		POINTER OVRPTR.
 HDR-SCAN2 SECTION.
 P1.
*	THIS SECTION IS EXECUTED WHEN AN INPUT LINE
*	CONTAINS EXACTLY ONE ";" .  A CHECK IS MADE TO DETERMINE
*	IF THIS LINE IS A ;COBMAIN HEADER LINE.  IF IT IS,
*	THE FLAG COBMAIN IS SET TO 1.
*
	UNSTRING IN-REC DELIMITED BY ";" INTO FIELD0 FIELD1.
*	AT THIS POINT, FIELD1 CONTAINS EVERYTHING TO THE RIG      HT OF ";"
	UNSTRING FIELD1 DELIMITED BY " " INTO KEYWORD FIELD2.
	IF KEYWORD = "COBMAIN" COMPUTE COBMAIN = 1.
 PPN-CHECK SECTION.
 P1.
*
*	THIS SECTION CHECKS THE FORMAT OF THE PPN (OR UIC)
*	ENTERED BY THE USER FOR THE OBJECT FILE.
*
*	ENTRY CONDITIONS:
*	1.  TEMP-OBJ CONTAINS THE PPN ENTERED BY THE USER.
*
*	COMPUTE LEFT-BRACKET RIGHT-BRACKET COMMA-COUNT = 0.
*	CHECK THE PPN FOR "[", "]", AND ",".
*	INSPECT TEMP-OBJ TALLYING LEFT-BRACKET FOR ALL "["
*		RIGHT-BRACKET FOR ALL "]"
*		COMMA-CO      UNT FOR ALL ",".
*
*
*
*
*	EDIT BY DON WATSON    SPR #11-15780
*
*
*	SPR PROBLEM:  DEFAULT PPN CAN NOT BE USED FOR OBJECT FILE
*		      DEVICE AND PPN SPECIFICATION.
*
*
	IF DEFAULT-MERGE = "Y" GO TO PPN-CHECK-EXIT.
	IF LEFT-BRACKET = 0
		AND RIGHT-BRACKET = 0
		AND COMMA-COUNT = 0
		GO TO PPN-CHECK-EXIT.
*
*
*
*
*	END OF EDIT BY DON WATSON
*
*
*
*	IF NOT EXACTLY ONE OF EACH, THEN BAD PPN (OR UIC)
	IF LEFT-BRACKET NOT = 1
		OR RIGHT-BRACKET NOT = 1
		OR COMMA-COUNT NOT = 1
		GO       TO PPN-ERROR-EXIT.
*	BREAK THE PPN APART AND CHECK COMPONENTS.
		COMPUTE PPN-COUNT = 0.
	UNSTRING TEMP-OBJ DELIMITED BY "[" INTO FIELD0 FIELD1.
	UNSTRING FIELD1 DELIMITED BY "," INTO FIELD2 COUNT PPN-COUNT
		FIELD0.
	IF PPN-COUNT = 0 GO TO PPN-ERROR-EXIT.
	COMPUTE IX1 = 1.
	PERFORM NUM-CHECK PPN-COUNT TIMES.
	IF PPN-ERROR = 1 GO TO PPN-ERROR-EXIT.
	UNSTRING FIELD0 DELIMITED BY "]" INTO FIELD2 COUNT PPN-COUNT.
	IF PPN-COUNT = 0 GO TO PPN-ERROR-EXIT.
	COMPUTE IX1 = 1.
	PERFORM NUM-CHECK PPN-COUNT       TIMES.
	IF PPN-ERROR NOT = 1 GO TO PPN-CHECK-EXIT.
*
*
*
*	THIS IS THE NEW, LESS DEMANDING CHECK.
***
**
*	THIS SECTION CHECKS FOR IMBEDDED SPACES
*
*
*
*	MOVE SPACES TO TEST-OBJ.
*	MOVE TEMP-OBJ TO TEST-OBJ.
*	IF TEST-OBJ NOT = INPUT-PPN-OR-UIC GO TO PPN-ERR-EXIT.
*
*	CHECKS FOR A REASONABLE NUMBER OF COLONS AND SQUARE BRACKETS
*
*	MOVE 0 TO LEFT-BRACKET,RIGHT-BRACKET,COLON-COUNT,PPN-ERROR.
*	INSPECT TEMP-OBJ TALLYING COLON-COUNT FOR  ALL ":",
*		LEFT-BRACKET FOR ALL "[",
*		RIGHT-BRA      CKET FOR ALL "]".
*	IF COLON-COUNT + LEFT-BRACKET = 0
*		OR RIGHT-BRACKET NOT = LEFT-BRACKET
*		OR RIGHT-BRACKET > 1
*		GO TO PPN-ERR-EXIT.
*
*	CHECKS THE LAST CHARACTER IN THE STRING.
*
	MOVE SPACES TO FIELD2.
*	MOVE 0 TO TEMP-COUNT, TEMP-COUNT-2.
*	UNSTRING TEMP-OBJ DELIMITED BY SPACES INTO FIELD2
*		COUNT IN TEMP-COUNT.
*	IF RIGHT-BRACKET = 1 AND FARR(TEMP-COUNT) NOT = "]"
*		GO TO PPN-ERR-EXIT.
*	IF RIGHT-BRACKET = 0 AND FARR(TEMP-COUNT) NOT = ":"
*		GO TO PPN-ERR-EXIT.
**
**	CHECKS THA      T THE SQUARE BRACKETS ARE NOT EMPTY
**
*	COMPUTE TEMP-COUNT-2 = TEMP-COUNT - 1.
*	IF FARR(TEMP-COUNT) = "]" AND FARR(TEMP-COUNT-2) = "["
*		GO TO PPN-ERR-EXIT.
**
**	CHECKS TO SEE IF THERE ARE CHARACTERS BETWEEN :[
**
*	IF RIGHT-BRACKET = 1
*		MOVE SPACES TO FIELD2
*		MOVE 0 TO TEMP-COUNT
*		UNSTRING TEMP-OBJ DELIMITED BY "[" INTO FIELD2
*			COUNT TEMP-COUNT.
*	IF FIELD2 = SPACES OR FARR(TEMP-COUNT) = ":"
*		GO TO PPN-CHECK-EXIT.

 PPN-ERROR-EXIT.
* PPN-ERR-EXIT.
	DISPLAY "BAD FORMAT "
		      PPN-OR-UIC
		": "
		TEMP-OBJ.
	COMPUTE PPN-ERROR = 1.
 PPN-CHECK-EXIT.
	EXIT.
 NUM-CHECK SECTION.
 P1.
	IF FARR(IX1) NOT NUMERIC
		COMPUTE PPN-ERROR = 1
		ELSE COMPUTE IX1 = IX1 + 1.
 NUM-CHECK-EXIT.
	EXIT.
 MAKE-INDIRECT-REF SECTION.
 P1.
*	THIS SECTION BUILDS AN INDIRECT REFERENCE TO AN
*	INPUT ODL FILE, AND WRITES IT TO THE MERGED ODL FILE.
*
*	ENTRY CONDITIONS:
*
*		1.  INPUT-ODL-NAME CONTAINS THE FILE SPECIFICATION
*		    OF THE INPUT ODL FILE.
*

	MOVE SPACES TO OUT-REC.
	STRI      NG "@" DELIMITED BY SIZE
		INPUT-ODL-NAME DELIMITED BY SPACE
		INTO OUT-REC.
	WRITE OUT-REC.

 MERGE-INPUT-ODL SECTION.
 P1.
*	THIS SECTION CLOSES AND THEN OPENS THE INPUT ODL
*	FILE (TO "REWIND" IT), AND THEN READS THE ENTIRE 
*	INPUT ODL FILE, WRITING IT TO THE OUTPUT ODL FILE
*	BEING GENERATED.

	CLOSE INPUT-ODL.
	OPEN INPUT INPUT-ODL.
 MERGE-START.
	MOVE SPACES TO IN-REC.
	READ INPUT-ODL AT END GO TO MERGE-DONE.
	WRITE OUT-REC FROM IN-REC.
	GO TO MERGE-START.
 MERGE-DONE.
	EXIT.
***      **********************
*                        *
* PROCESS-RMSREQ          *
*                         *
***************************
 PROCESS-RMSREQ SECTION.
 P1.
*	THIS SECTION PROCESSES THE RMS REQUIRED FOR THE 
*	CURRENT INPUT ODL FILE.
*	ENTRY CONDITIONS:
*	1.  RMSREQ-COUNT CONTAINS THE NUMBER OF ;RMSREQ HEADER LINES
*	    IN THE INPUT ODL FILE.
*	2.  ARRAY "RMSREQ" CONTAINS THE NAMES OF THE RMSREQS.
*
*	EXIT CONDITIONS:
*	1.  THE RMSREQS HAVE BEEN SCANNED, AND THE OPERATION
*	    SUPPO      RT CODES FOR EACH RMSREQ HAVE BEEN MERGED INTO
*	    THE GLOBAL VARIABLES SEQ-OPS, REL-OPS, OR INDEX-OPS.
*
*
	COMPUTE LOOP-COUNT = 0.
 PROCESS-RMSREQ-LOOP.
	ADD 1 TO LOOP-COUNT.
	IF LOOP-COUNT GREATER THAN RMSREQ-COUNT 
		GO TO PROCESS-RMSREQ-EXIT.
	MOVE RMSREQ(LOOP-COUNT) TO WORK-RMSREQ.
	PERFORM RMSREQ-OPS-MERGE.
	GO TO PROCESS-RMSREQ-LOOP.
 PROCESS-RMSREQ-EXIT.
	EXIT.

****************************
*				*
* RMSREQ-OPS-MERGE	*
*				*
*********************************

 RMSREQ-OPS-MERG      E SECTION.
 P1.
*
*	THIS SECTION MERGES THE OPERATION SUPPORT CODE FOR AN
*	INPUT RMS REQUIREMENT INTO A GLOBAL FOR THE FILE ORGANIZATION
*	FOR THAT REQUIREMENT.
*
*	ENTRY CONDITIONS:
*	1.  WORK-RMSREQ CONTAINS THE RMSREQ NAME WHOSE OPERATION
*	    SUPPORT CODE IS TO BE ANALYZED AND MERGED.
*	2.  GLOBAL VARIABLES CONTAIN THE CURRENT MERGED OPERATION
*	    SUPPORT CODES AS FOLLOWS:
*
*		FILE ORGANIZATION	VARIABLE NAME
*		_________________	_____________
*		SEQUENTIAL		SEQ-OPS
*		RELATIVE		REL-      OPS
*		INDEXED			INDEX-OPS
*
	MOVE RMSREQ-OPS OF WORK-RMSREQ TO WORK-OPS.
	DIVIDE WORK-OPS BY C2 GIVING WORK-VAL REMAINDER WORK-B0.
	DIVIDE WORK-VAL BY C2 GIVING WORK-OPS REMAINDER WORK-B1.
	DIVIDE WORK-OPS BY C2 GIVING WORK-VAL REMAINDER WORK-B2.

	IF RMSREQ-ORG OF WORK-RMSREQ EQUAL SEQ-ORG-CODE
		MOVE SEQ-OPS TO WORK-OPS
	ELSE IF RMSREQ-ORG OF WORK-RMSREQ EQUAL REL-ORG-CODE
		MOVE REL-OPS TO WORK-OPS
	ELSE MOVE INDEX-OPS TO WORK-OPS.

	DIVIDE WORK-OPS BY C2 GIVING WORK-VAL REMAINDER OPS-B0.      
	DIVIDE WORK-VAL BY C2 GIVING WORK-OPS REMAINDER OPS-B1.
	DIVIDE WORK-OPS BY C2 GIVING WORK-VAL REMAINDER OPS-B2.

	MOVE 0 TO WORK-OPS.
	IF (WORK-B0 NOT EQUAL 0 OR OPS-B0 NOT EQUAL 0)
		ADD 1 TO WORK-OPS.
	IF (WORK-B1 NOT EQUAL 0 OR OPS-B1 NOT EQUAL 0)
		ADD 2 TO WORK-OPS.
	IF (WORK-B2 NOT EQUAL 0 OR OPS-B2 NOT EQUAL 0)
		ADD 4 TO WORK-OPS.

	IF RMSREQ-ORG OF WORK-RMSREQ EQUAL SEQ-ORG-CODE
		MOVE WORK-OPS TO SEQ-OPS
	ELSE IF RMSREQ-ORG OF WORK-RMSREQ EQUAL REL-ORG-CODE
		MOVE WORK-OPS TO REL-      OPS
	ELSE MOVE WORK-OPS TO INDEX-OPS.

********************************
*				*
*  RMSREQ-ODL			*
*				*
*********************************

 RMSREQ-ODL SECTION.
 P1.
*
*	THIS SECTION GENERATES THE ODL FOR THE RMS 
*	REQUIREMENTS INTO THE OUTPUT ODL FILE.
*
*	ENTRY CONDITIONS:
*	1.  SEQ-OPS,REL-OPS, AND INDEX-OPS CONTAIN CODES THAT SPECIFY
*	    THE OPERATION SUPPORT REQUIRED FOR SEQUENTIAL, RELATIVE,
*	    OR INDEXED I/O, OR ZERO IF NO SUPPORT IS REQUIRED.

	COMPUTE COMPOSITE-ORG = 0.
	I      F SEQ-OPS NOT = 0
		ADD 1 TO COMPOSITE-ORG.
	IF REL-OPS NOT = 0
		ADD 2 TO COMPOSITE-ORG.
	IF INDEX-OPS NOT = 0
		ADD 4 TO COMPOSITE-ORG.

	IF COMPOSITE-ORG NOT = 0
		PERFORM OUTPUT-RMS-ODL.
*
*********************************
*  OUTPUT-RMS-ODL		*
*				*
*********************************

 OUTPUT-RMS-ODL SECTION.
 P1.
*
*	THIS SECTION OUPUTS ODL FOR THE RMS REQUIRED FOR
*	THE TASK IMAGE TO BE BUILT FROM THE ODL FILE.
*
*	ENTRY CONDITIONS:
*
*	1.  COMPOSITE-ORG CONTAINS A CODE THAT IDE      NTIFIES THE RMS
*	    ODL FILE REQUIRED.  THIS CODE HAS THE FOLLOWING VALUES
*	    AND MEANINGS.
*
*		CODE VALUE		RMS ODL REQUIRED
*		___________		________________
*		   1			SEQUENTIAL
*		   2			RELATIVE
*		   3			SEQUENTIAL,RELATIVE
*		   4			INDEXED
*		   5			SEQUENTIAL,INDEXED
*		   6			RELATIVE,INDEXED
*		   7			SEQUENTIAL,RELATIVE,INDEXED
*

*
*	OUTPUT AN INDIRECT REFERENCE TO THE RMS ROOT ODL FILE
*	UNCONDITIONALLY FIRST.

	IF COMPOSITE-ORG LESS THAN 4
		MOVE SIMPLE-ROOT TO RMSROT      
	ELSE MOVE INDEXED-ROOT TO RMSROT.

	MOVE SPACES TO OUT-REC.
*
* ROOT ODL IS NO LONGER USED - AWH 5-OCT-78
*

*	STRING "@" DELIMITED BY SIZE
*		RMS-UIC DELIMITED BY SPACES
*		RMSROT DELIMITED BY SPACES
*		".ODL" DELIMITED BY SIZE
*		INTO OUT-REC.
*	WRITE OUT-REC.
**
**	OUTPUT AN INDIRECT REFERENCE TO THE ODL FILE THAT DESCRIBES
*	THE RMS REQUIRED FOR THE TASK.

*	INITIALIZE THE WORK FIELD FIRST.


* THESE LINES WERE ELIMINATED WHEN THE RMS ODLS CHANGED

*	MOVE WORK-RMSREQ-INIT TO WORK      -RMSREQ.
*	MOVE COMPOSITE-ORG TO RMSREQ-ORG OF WORK-RMSREQ.

	IF RESIDENT-LIBRARY = 1
		MOVE "RMS11R" TO WORK-RMSREQ
		GO TO WRITE-RMS-REQ1.
	IF COMPOSITE-ORG GREATER THAN 3 AND DEFAULT-OVERLAY = 1
		 PERFORM IDX-IO
	 ELSE IF DEFAULT-OVERLAY = 1
		MOVE "RMS11S" TO WORK-RMSREQ.
 WRITE-RMS-REQ1.
	MOVE SPACES TO OUT-REC.
	IF DEFAULT-OVERLAY = 1
		STRING "@" DELIMITED BY SIZE
		RMS-UIC DELIMITED BY SPACES
		WORK-RMSREQ DELIMITED BY SIZE
		".ODL" DELIMITED BY SIZE
		INTO OUT-REC
	 ELSE STRING "      @" DELIMITED BY SIZE, USERS-ODL-FILESPEC
		 DELIMITED BY SIZE INTO OUT-REC.
	WRITE OUT-REC.

*
*	BUILD THE RMS$: FCTR DIRECTIVE NOW
*

	MOVE "RMSALL" TO WORK-RMSREQ.
	IF CBOVR = SPACES
		STRING RMSROT DELIMITED BY SPACES
		"-" DELIMITED BY SIZE
		WORK-RMSREQ DELIMITED BY SIZE
		INTO RMS-VAR-STRING
	ELSE
		STRING RMSROT DELIMITED BY SPACES
		INTO RMS-VAR-STRING
		MOVE NAME-STRING TO OUT-REC
*		THE NEXT LINE IS COMMENTED OUT BECAUSE IT WASN'T
*		WORKING CORRECTLY AT THE TIME THIS PROGRAM WA      S NEEDED
*		FOR COBOL V3.0 DEVELOPMENT.
*		WRITE OUT-REC FROM NAME-STRING
		WRITE OUT-REC
		MOVE WORK-RMSREQ TO RMSTR-STRING-VAR
		MOVE ",RMSTR$" TO RMSTR
		WRITE OUT-REC FROM RMSTR-STRING.
*
* HELP TEXT
*
HELP-TEXT SECTION.

 HELP-DEFAULT.
	DISPLAY " ".
	DISPLAY "ANSWERING Y(ES) WILL PRODUCE A MERGED ODL FILE 
-		" THAT:".
	DISPLAY "	1. REFERS INDIRECTLY TO COMPILER PRODUCED
-		" ODL FILES".
	DISPLAY "	    (ABBREVIATED)".
	DISPLAY " 	2. DOES NOT INCLUDE THE COBOL DEBUGGER".
	DISPLAY "	3      . DOES OVERLAY I/O SUPPORT".
	DISPLAY "	4. DOES USE DEC SUPPLIED I/O OVERLAY
-		" DESCRIPTORS".
	DISPLAY "	5. USES THE UIC OF THE COMPILER PRODUCED
-		" ODL AS THE UIC OF THE OBJECT".
	DISPLAY " 	6. USES THE SMALLER I/O OVERLAY STRUCTURE
-		" FOR INDEXED FILE".
	DISPLAY "	   SUPPORT IF THAT SUPPORT IS REQUIRED".
	DISPLAY " ".
	DISPLAY "ANSWERING N(O) WILL ALLOW YOU TO CHOOSE OTHER
-		" OPTIONS".
	DISPLAY " ".

 HELP-SMALLER-OR-LARGER.
	DISPLAY " ".
	DISPLAY "IF YOU ANWSER S(MALLER), MERGE WIL      L USE THE 9K
-		" RSM OVERLAY DESCRIPTOR.".
	DISPLAY " ".
	DISPLAY "IF YOU ANSWER L(ARGER), MERGE WILL USE THE 12K
-		" RMS OVERLAY DESCRIPTOR.".
	DISPLAY " ".
	DISPLAY "USING THE 12K OVERLAY DESCRIPTOR MAY IMPROVE
-		" PROGRAM".
	DISPLAY "EXECUTION SPEED; HOWEVER, IT MAY CAUSE AN ADDRESS
-		" OVERFLOW DURING".
	DISPLAY "TASK BUILD OF LARGER PROGRAMS.  IN THE LATTER
-		" CASE, RERUN MERGE".
	DISPLAY "AND ANSWER THIS QUESTION S(MALLER).".
	DISPLAY " ".
HELP-A-OR-M.
	DISPLAY " ".
	DISPLAY "AN       ABBREVIATED ODL REFERS TO
-			" THE ODL(S) CREATED".
	DISPLAY "BY THE COBOL COMPILER INDIRECTLY.
-			"  THE FILE CREATED".
	DISPLAY "BY MRG IS SHORT, BUT  REQUIRES
-			" THAT THE COMPILER".
	DISPLAY "GENERATED ODL(S) BE AVAILABLE
-			" WHENEVER IT IS USED.".
	DISPLAY " ".
	DISPLAY "A MERGED ODL INCLUDES THE FULL
-		" TEXT OF THE ODL(S)".
	DISPLAY "PRODUCED BY THE COMPILER.  THE
-		" FILE CREATED BY MRG".
	DISPLAY "IS LONGER, BUT THE COMPILER GENERATED
-		" ODL(S) CAN BE".
	DISPLAY "DELETED.".      
	DISPLAY " ".


HELP-OVERLAY.
	DISPLAY " ".
	DISPLAY	"IF YOU ANSWER NO, RMSLIB, A LIBRARY
-		" OF I/O ROUTINES".
	DISPLAY "WILL BE INCLUDED IN YOUR TASK
-		" IMAGE.  IF YOUR PROGRAM".
	DISPLAY "IS NOT SO LARGE THAT AN ADDRESS
-		" OVERFLOW IS DETECTED".
	DISPLAY "BY THE TASK BUILDER, IT WILL
-		" RUN FASTER IF YOU DO NOT".
	DISPLAY "OVERLAY I/O.".
	DISPLAY "  ".
	DISPLAY	"IF YOU ANSWER YES, YOU WILL BE
-		" ABLE TO REDUCE YOUR ".
	DISPLAY "PROGRAM SIZE BY USING EITHER
-		" DEC SUPPLIED I      /O ".
	DISPLAY "OVERLAY DESCRIPTORS OR YOUR OWN
-		" CUSTOM RMS ODL.".
	DISPLAY " ".

HELP-EXIT.
	EXIT.


* INDEXED I/O
*	TWO SIZES OF RMS OVERLAYS ARE SUPPLIED FOR INDEXED IO.
IDX-IO SECTION.

IDX-IO1.
	IF DEFAULT-MERGE = "Y"
		MOVE "RMS11X" TO WORK-RMSREQ
		GO TO IDX-IO-EXIT.
	DISPLAY "DO YOU WANT THE SMALLER OR THE LARGER IO OVERLAY?".
IDX-IO-ANS.
	DISPLAY "PLEASE ANSWER S(MALLER), L(ARGER), OR H(ELP): "
		WITH NO ADVANCING.
	ACCEPT ANS.
	IF ANS = "S"
		MOVE "RMS11X" TO WORK-RMSREQ   ð  
	 ELSE IF ANS = "L" 
		MOVE "RMS12X" TO WORK-RMSREQ
	 ELSE IF ANS = "H"
		PERFORM HELP-SMALLER-OR-LARGER
		GO TO IDX-IO-ANS
	 ELSE GO TO IDX-IO-ANS.
*
IDX-IO-EXIT.
	EXIT.
 ABORT-EXECUTION SECTION.
 P1.
*	THIS SECTION IS EXECUTED IF AN UNRECOVERABLE READ OR
*	WRITE ERROR IS DETECTED.  THE INPUT AND OUTPUT FILES
*	ARE CLOSED, AND EXECUTION IS TERMINATED.

	DISPLAY "WARNING: OUTPUT FILE PROBABLY
-		" INCOMPLETE OR INVALID".
	CLOSE OUTPUT-ODL.
	CLOSE INPUT-ODL.
	STOP RUN.
 ð         Nqœr@€›         IDENTIFICATION DIVISION.
PROGRAM-ID. REFORMAT.
*	COPYRIGHT (C) 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 DIGITAL EQUIPMENT 
*	CORPORATION.
*
*	THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE
*	WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED
*	AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
*
*	DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
*	FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT
*	WHICH IS NOT SUPPLIED BY DIGITAL EQUIPMENT CORPORATION.
*

*	THIS PROGRAM ACCEPTS A COBOL SOURCE PROGRAM
*	IN TERMINAL FORMAT AND TRANSFORMS       IT INTO
*	A PROGRAM IN CONVENTIONAL FORMAT.
*
*	REFORMAT READS ONE LINE AHEAD (LINE2) IN ORDER TO TELL
*	HOW TO DEAL WITH THE CURRENT LINE (LINE1).
*	IF LINE 2 IS A CONTINUATION, IT RIGHT JUSTIFIES THE
*	STUFF ON LINE 1 BACK TO THE LAST SPACE OR THE FIRST QUOTE.
*	THE PROGRAM CONTAINS A NUMBER OF BAD CODING (FORMATTING)
*	PRACTICES. SO THAT IT CAN SERVE AS ITS OWN QUALITY
*	ASSURANCE TEST.
*
*	QUALITY ASSURANCE CONSISTS OF SUBMITTING THIS SOURCE
*	TEXT TO REFORMAT, PRODUCING SOURCE TEXT #1.  SO      URCE
*	TEXT #1 IS THEN COMPILED, TO PRODUCE OBJECT CODE #1,
*	WHICH SHOULD BE AN EXECUTABLE COPY OF REFORMAT.  
*	THIS SAME SOURCE TEXT IS THEN RESUBMITTED TO OBJECT
*	CODE #1, PRODUCING SOURCE TEXT #2.  SOURCE TEXT #1
*	AND SOURCE TEXT #2 SHOULD BE IDENTICAL,
*	CHARACTER FOR CHARACTER.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT INFILE ASSIGN TO "SY:"
	STATUS IS FILESTATUS.

	SELECT OUTFILE AS      SIGN TO "SY:"
	STATUS IS FILESTATUS.
DATA DIVISION.
FILE SECTION.
FD	INFILE
	LABEL RECORDS ARE STANDARD
	VALUE OF ID IS FILENAME.
01	LINE2.
	02  CHAR0OFLINE2	PIC X.
	02  LINE2CHARS		PIC X OCCURS 65.
	02  FILLER		PIC X(20).

FD	OUTFILE
	LABEL RECORDS ARE STANDARD
	VALUE OF ID IS FILENAME.
01	LINEOUT.
	02  LINESEQNO		PIC 9(5)0.
	02  ALLTEXTOUT.
	  03  LINECONTINUATION	PIC X.
	  03  TEXTOUT		PIC X OCCURS 65.
	02  LINEIDENT		PIC X(8).

WORKING-STORAGE SECTION.
01	NUMBEROFLINES		PIC Z(5).      
01	LINENO			PIC 9(5).
01	LINE1.
	02  TEXTIN		PIC X OCCURS 66.
	88	SPECIALVALUE VALUE "/" "*" "-".
01	FILENAME		PIC X(20).
01	FILESTATUS		PIC XX.
01	RCHAR			PIC X.
01	TEXTCHAR		PIC X.
01	IDENT			PIC X(8).
01	PX			PIC XXXXXX VALUE "RFM - ".
01	C1			PIC 9(4) COMP.
01	C2			PIC 9(4) COMP.
01	C3			PIC 9(4) COMP.
01	C1TERMINATOR		PIC 9(4) COMP.
01	C2ATFIRSTQUOTE		PIC 9(4) COMP.
01	C2ATLASTSPACE		PIC 9(4) COMP.
01	RIGHTSHIFTAMOUNT	PIC 9(4) COMP.
01	HYPHEN			PIC X VALUE "-".
01	TB			PIC 9999 COMP       VALUE 9.
01	TAB REDEFINES TB	PIC X.
01	FF			PIC 999 COMP VALUE 12.
01	FORMFEED REDEFINES FF		PIC X.
PROCEDURE DIVISION.
DECLARATIVES.
D1 SECTION. USE AFTER STANDARD ERROR PROCEDURE
		ON INFILE OUTFILE.
D1S1.
END DECLARATIVES.

INITIALIZATION SECTION.
I1.
	DISPLAY PX "INPUT FILE SPEC: " WITH NO ADVANCING.
	ACCEPT FILENAME.
	OPEN INPUT INFILE.
	IF FILESTATUS NOT = "00"
		DISPLAY PX "ERROR IN OPENING INPUT FILE"
		DISPLAY PX "TRY AGAIN" GO TO I1.
	MOVE LOW-VALUE TO LINE2.
	READ INFILE AT       END
		DISPLAY PX "INPUT FILE IS EMPTY"
		CLOSE INFILE GO TO I1.
	IF FILESTATUS NOT = "00"
		DISPLAY PX "ERROR IN READING INPUT FILE"
		CLOSE INFILE GO TO I1.
I2.
	DISPLAY PX "OUTPUT FILE SPEC: " WITH NO ADVANCING.
	ACCEPT FILENAME.
	OPEN OUTPUT OUTFILE.
	IF FILESTATUS NOT = "00"
		DISPLAY PX "ERROR IN OPENING OUTPUT FILE"
		DISPLAY PX "TRY AGAIN" GO TO I2.
	DISPLAY PX "COLS 73 TO 80: " WITH NO ADVANCING.
	ACCEPT FILENAME.
	MOVE FILENAME TO IDENT.
	MOVE 0 TO LINENO.
MAIN SECTION.
M1.
	MOVE       LINE2 TO LINE1.
	MOVE LOW-VALUE TO LINE2.
	READ INFILE AT END GO TO WINDUP.
	IF FILESTATUS NOT = "00"
		DISPLAY PX "ERROR IN READING INPUT FILE" GO TO M3.
	PERFORM MOVELINE1LEFT.
	IF CHAR0OFLINE2 = HYPHEN PERFORM RIGHTJUSTIFY.
	WRITE LINEOUT.
	IF FILESTATUS NOT = "00" GO TO M2.
	GO TO M1.
M2. DISPLAY PX "ERROR IN WRITING O
-		"UTPUT FILE".
M3. DISPLAY PX "REFORMATTING ABO
-				"RTED.".
	GO TO W2.
WINDUP.
	PERFORM MOVELINE1LEFT.
	WRITE LINEOUT.
	IF FILESTATUS NOT = "00" GO TO M2.
W2. CLOS      E INFILE OUTFILE.
	MOVE LINENO TO NUMBEROFLINES.
	DISPLAY PX NUMBEROFLINES " LINES  PROCESSED.".
	GO TO INITIALIZATION.
MOVELINE1LEFT SECTION.
ML1.
*	INITIALIZE THE OUTPUT LINE.
	ADD 1 TO LINENO.
	MOVE LINENO TO LINESEQNO.
	MOVE SPACES TO ALLTEXTOUT.
	MOVE IDENT TO LINEIDENT.
	MOVE 0 TO C2ATFIRSTQUOTE.
	MOVE 0 TO C2ATLASTSPACE.
	MOVE 1 TO C1.
	MOVE 1 TO C2.
*	CHECK COLUMN 0 OF INPUT LINE FOR SPECIAL VALUES.
	IF TEXTIN(1) = FORMFEED
		MOVE "/" TO LINECONTINUATION GO TO ML8.
	IF SPECIALVALU      E(1)
		MOVE TEXTIN(1) TO LINECONTINUATION
		ADD 1 TO C1.
*	THIS IS THE MAIN CHARACTER MOVEMENT LOOP.
ML2.
	IF C1 > 66 GO TO ML8.
	MOVE TEXTIN(C1) TO TEXTCHAR.
	IF TEXTCHAR = LOW-VALUE GO TO ML8.
	IF C2 > 65 GO TO ML8.
	IF TEXTCHAR = TAB GO TO ML4.
	IF TEXTCHAR = QUOTE
		IF C2ATFIRSTQUOTE = 0
			MOVE C2 TO C2ATFIRSTQUOTE.
	IF TEXTCHAR = SPACE MOVE C2 TO C2ATLASTSPACE.
	MOVE TEXTCHAR TO TEXTOUT(C2).
	ADD 1 TO C1.
	ADD 1 TO C2.
	GO TO ML2.
*	EACH LINE STARTING WITH "IF" SHOULD BE INDENTED
*	      TO THE TAB STOP THAT IT IS TESTING.
ML4.
	IF C2 < 05 MOVE 05 TO C2 GO TO ML5.
		IF C2 < 13 MOVE 13 TO C2 GO TO ML5.
			IF C2 < 21 MOVE 21 TO C2 GO TO ML5.
				IF C2 < 29 MOVE 29 TO C2 GO TO ML5.
					IF C2 < 37 MOVE 37 TO C2 GO T
-	O ML5.					IF C2 < 45 MOVE 45 TO
	C2 GO TO ML5.					IF C2 < 53 MO
-	VE 53 TO C2 GO TO ML5.					IF C2
	< 61 MOVE 61 TO C2 GO TO ML5.
	IF C2 < 66 MOVE 66 TO C2.
ML5.
	SUBTRACT 1 FROM C2 GIVING C2ATLASTSPACE.
	ADD 1 TO C1.
	GO TO ML2.
ML8. EXIT.
RIGHTJUSTIFY SECTIO      N.
*	RIGHT JUSTIFICATION IS DONE ON THE TAB-EXPANDED LINE,
*	HENCE THERE IS NO NEED TO FIGURE OUT WHERE YOU ARE
*	WITH REGARD TO TAB EXPANSION.
RJ1.
*	COMPUTE THE AMOUNT OF THE RIGHT SHIFT.
	SUBTRACT C2 FROM 66 GIVING RIGHTSHIFTAMOUNT.
	IF RIGHTSHIFTAMOUNT NOT > 0 GO TO RJ6.
*	SET UP C1 AND C2 AS SENDING AND RECEIVING POINTERS.
	SUBTRACT 1 FROM C2 GIVING C1.
	MOVE 65 TO C2.
*	NOW SEE WHETHER LINE2 CONTINUES A NONNUMERIC LITERAL.
	MOVE 1 TO C3.
RJ2.
	IF LINE2CHARS(C3) NOT = SPACE
	   IF LINE2C      HARS(C3) NOT = TAB GO TO RJ22
	   ELSE
		ADD 1 TO C3
		IF C3 NOT > 65 GO TO RJ2
			ELSE GO TO RJ6.
*	FOUND THE FIRST NON-SPACE CHARACTER, IS IT A QUOTE?
RJ22.
	IF LINE2CHARS(C3) NOT = QUOTE GO TO RJ3.
*	YES, A NONNUMERIC LITERAL IS EXPECTED, SO JUST
*	SHIFT EVERYTHING TO THE RIGHT OF THE FIRST QUOTE.
	MOVE C2ATFIRSTQUOTE TO C1TERMINATOR.
	GO TO RJ4.
*	NO, THE CONTINUATION IS FOR A BROKEN WORD,
*	SO JUST SHIFT EVERYTHING TO THE RIGHT OF THE LAST SPACE.
RJ3.
	MOVE C2ATLASTSPACE TO C1TERMINATOR.   j  
RJ4.
	MOVE	TEXTOUT(C1) TO TEXTOUT(C2).
	IF C1 = C1TERMINATOR GO TO RJ5.
	SUBTRACT 1 FROM C1.
	SUBTRACT 1 FROM C2.
	GO TO RJ4.
RJ5.
*	NOW BLANK OUT AREA SHIFTED ON LEFT
*	RIGHTJUSTIFYAMOUNT HAS NUMBER OF BLANKS
	SUBTRACT 1 FROM C2.
	MOVE	" " TO TEXTOUT(C2).
	SUBTRACT 1 FROM RIGHTSHIFTAMOUNT.
	IF RIGHTSHIFTAMOUNT NOT = 0 GO TO RJ5.
RJ6.
	EXIT.
 j         ›r«Æl^@€›         ;+
;			RMS11S.ODL 
;		RSX/IAS: NON-INDEXED RMS
;
;
;	THIS ODL FILE BUILDS A 9KB FULLY OVERLAYED RMS PACKAGE. TO
;	CONSERVE TASK ADDRESS SPACE, EVERY RMS FUNCTION CALL (E.G. $GET,
;	$PUT, $UPDATE, ETC.) FOR EACH FILE ORGANIZATION IS CONTAINED IN
;	A SEPARATE OVERLAY. THE INITIAL OVERLAY LOADED FOR A PARTICULAR
;	OPERATION MAY, IN TURN, CAUSE THE LOADING OF ONE OR MORE ADDI-
;	TIONAL OVERLAYS. THE MORE OVERLAYS LOADED, THE SLOWER THE OVERALL
;	PERFORMANCE OF THE TASK. THUS, THE INTENT OF THIS ODL F      ILE AS
;	IT APPEARS HERE IS SOLELY TO OPTIMIZE FOR SPACE USAGE WITHOUT
;	REGARD TO PERFORMANCE.
;
;	YOU CAN TOTALLY AVOID THE I/O OVERHEAD AND PERFORMANCE PENALTY
;	OF AN OVERLAYED TASK STRUCTURE BY TASK-BUILDING WITHOUT AN ODL
;	FILE AND THEREBY RUN COMPLETELY UNOVERLAYED. IN THIS INSTANCE,
;	THE SPACE WITHIN YOUR TASK REQUIRED BY RMS DEPENDS ENTIRELY
;	UPON THE COMBINATION OF FILE ORGANIZATIONS AND FEATURES USED.
;	THOSE RMS MODULES REQUIRED BY YOUR PROGRAM WILL BE SELECTIVELY
;	LINKED INTO YOUR       TASK IMAGE. THE RESULTANT SPACE REQUIRED BY RMS
;	(EXCLUSIVE OF I/O BUFFERS AND CONTROL STRUCTURE STORAGE) WILL RANGE 
;	FROM 9KB TO 44KB. THE HIGH FIGURE RESULTS ONLY IN THE UNLIKELY
;	CASE OF A PROGRAM WRITTEN TO ACCESS ALL FEATURES AND ALL FILE
;	ORGANIZATIONS.
;
;	TO BUILD YOUR RMS ODL FILE, FOLLOW THE STEPS IN THE INSTRUCTIONS.
;	TO ACTIVATE A PARTICULAR INDIVIDUAL FACTOR STATEMENT, SIMPLY
;	REMOVE THE SEMI-COLON FROM THE FIRST CHARACTER OF THAT SPECIFIC
;	LINE.
;
;-
;*********************      *******************************************************
; STEP 0 *	COMMON: AUTOLOAD VECTORS,TASK IMPURE AREA
;*********
;
RMSCM1:	.FCTR	[1,1]RMSLIB/LB:R0AUTO:R0IMPA
;
;	GOTO STEP 1
;****************************************************************************
; STEP 1 *	SELECT RMS-11 ROOT MODULES
;*********
;
;	IF TASK BUILDING WITHOUT THE RMS11 RESIDENT LIBRARY (RSX) OR
;	RUN TIME SYSTEM (RSTS/E), GOTO STEP #2. 
;
;	ELSE, SELECT ONE OF THE FOLLOWING FACTORS, AND REPLACE
;	THE TERM RMXXXX(STEP       #3) WITH THE NAME OF THE FACTOR CHOSEN.
;
;	NO INDEX FILE SUPPORT REQUIRED
;
;RMS11X:	.FCTR	RMSCM1-RMSREX
;
;	INDEX FILE SUPPORT REQUIRED
;
;RMS11X:	.FCTR	RMSCM1-RMSREX-RMSIX0
;
; 	GOTO STEP 3
;****************************************************************************
; STEP 2 *	SELECT RMS-11 ROOT MODULES
;*********
;
;	SELECT ONE OF THE FOLLOWING FACTORS, AND REPLACE THE
;	TERM RMXXXX(STEP #3) WITH THE NAME OF THE FACTOR CHOSEN.
;
;	NO INDEX FILE SUPPORT REQUIRED
;
RM0X0X:	.FCTR	RMSI      O-RMSCBL-RMSCOM-RMSCM1-RMSEXC
;
;	INDEX FILE SUPPORT REQUIRED
;
;RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0
;
;	GOTO STEP 3
;****************************************************************************
; STEP 3 *	DECLARE RMS-11 ROOT
;*********
;
;	THE FACTOR  RMSROT  IS REFERENCED IN THE USERS ODL COMMAND
;	FILE FOR INCLUSION INTO THE ROOT OF THE USERS TASK.
;
;	REPLACE THE RMXXXX FACTOR BELOW WITH THE FACTOR SELECTED
;	IN STEP 1 OR STEP 2.
;
RMSROT:	.FCTR	[1,1]RMSLIB/LB:RMSSYM-      RM0X0X
;
;	GOTO STEP 4
;****************************************************************************
; STEP 4 *	SELECT THE RMS-11 EXECUTIVE
;*********
;
;	IF NOT USING THE RMS11 RESIDENT LIBRARY(RSX), OR THE RMS11
;	RUN-TIME SYSTEM(RSTS/E), GOTO STEP 5.
;
;	ELSE, SELECT ONE OF THE FOLLOWING TWO FACTORS.
;
; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.
;
;RMSREX:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES
;
; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY)
;
;RMSREX:	.FCTR	[1,1]RMSLIB/LB:R0EXEC:R0RSET
;
      ;	GOTO STEP 6.
;****************************************************************************
; STEP 5 *	SELECT THE RMS-11 EXECUTIVE AND COMMON ROOT MODULES
;*********
;
;	THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITHOUT
;	THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME SYSTEM (RSTS/E).
;	SELECT ALL THREE.
;
RMSIO:	.FCTR	[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLK
RMSCBL:	.FCTR	[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDAT
RMSCOM:	.FCTR	[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB
;
; SELECT O      NE OF THE FOLLOWING TWO FACTORS.
;
; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.
;
;
RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS:R0RMSA
;
; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY)
; THESE FACTORS HAVE BEEN CHANGED(VIS-A-VIS THE ORIGINAL RMS11.ODL)
; IN ORDER TO CORRECT AN ASYNCHRONOUS I/O PROBLEM.
;
;RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB:R0RMSA-RMSEX1
;RMSEX1:	.FCTR	[1,1]RMSLIB/LB:R0RSEI:R0FSET:R0FSEI:R0IFLF
;
;	GOTO STEP 6
;*************************************************      ***************************
; STEP 6 *	SELECT INDEXED BUCKET WRITE/READ MODULES
;*********
;
;	THE FOLLOWING FACTOR IS NEEDED ONLY WHEN INDEXED ORGANIZATION IS
;	TO BE SUPPORTED.
;
;RMSIX0:	.FCTR	[1,1]RMSLIB/LB:R0RLSB:R0GETB
;
;	GOTO STEP 7
;****************************************************************************
	.NAME	RMS11
	.NAME	RMSFAB
	.NAME	RMSRAB
	.NAME	RMSCRE
	.NAME	RMSCD
	.NAME	RMOPIN
	.NAME	RMSSEQ
	.NAME	RMSREL
	.NAME	R2GUPD
	.NAME	RMSIDX
	.NAME	RMSBMC
	.NAME	RMSMIS
	.NA      ME	RMDEXT
	.NAME	RMDRLB
	.NAME	RMDWTL
;****************************************************************************
; STEP 7 *	SELECT FILE FUNCTION ROOT MODULES
;*********
;
; IF USING THE ASYNCHRONOUS EXEC, SELECT THE FIRST  RMSFIL  FACTOR-
;
;RMSFIL:	.FCTR	RMSFAB-RMSFL
;
;	ELSE SELECT THE FOLLOWING  RMSFIL  FACTOR-
;
RMSFIL:	.FCTR	RMSFAB-[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFL
;
;	GOTO STEP 8
;****************************************************************************
;	COMMON MODULES:       $CREATE,$OPEN,$DISPLAY,$EXTEND,$CLOSE
;
;	THE FOLLOWING GROUP OF FACTORS SUPPORT NON-OPTIONAL
;	MODULES FOR THE FILE ORIENTED FUNCTIONS. NOTE, THE MODULE  R0INIT
;	HAS BEEN MOVED INTO THE  RMSFNM  FACTOR BELOW, FROM THE  RM0XY0
;	FACTOR IN STEP 16 FOR PERFORMANCE REASONS.
;
RMSFL:	.FCTR	[1,1]RMSLIB/LB:R0CLCM-RMFILE-RMSFL0
RMSFNM:	.FCTR	[1,1]RMSLIB/LB:R0PRFN:R0XPFN:R0MKWA:R0ASLN:R0INIT-RMSFL1
RMSDPC:	.FCTR	[1,1]RMSLIB/LB:R0DPYC:R0CKSM-RMSFL1
RMSFL1:	.FCTR	[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIO
RMSCL      S:	.FCTR	[1,1]RMSLIB/LB:R1CLOS:R2CLOS-RMSCL0
;
;****************************************************************************
; STEP 8 *	SELECT SOME $OPEN,$CLOSE MODULES
;*********
;
;	SELECT ONE OF THE FOLLOWING TWO RMSCL0 FACTORS-
;
;	NO INDEX FILE SUPPORT IS REQUIRED
;
RMSCL0:	.FCTR	[1,1]RMSLIB/LB:R0CKSM-RMEXTD-RMR1RL
;
;	INDEX FILE SUPPORT IS REQUIRED
;
;RMSCL0:	.FCTR	[1,1]RMSLIB/LB:R3CLOS:R0CKSM-RMEXTD-RMR1RL
;
RMSOPN:	.FCTR	[1,1]RMSLIB/LB:R0OPFL-RMSOP0-RM0XY0
;
;	GOTO STEP 9
;*******      *********************************************************************
; STEP 9 *	SELECT SOME $CREATE MODULES
;*********
;
;	SELECT ONE OF THE FOLLOWING TWO RMCRCK FACTORS-
;
;	NO INDEX FILE SUPPORT REQUIRED
;
RMCRCK:	.FCTR	[1,1]RMSLIB/LB:R1CRCK:R2CRCK
;
;	INDEX FILE SUPPORT REQUIRED
;
;RMCRCK:	.FCTR	[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCK
;
RMCREA:	.FCTR	[1,1]RMSLIB/LB:R0CRFL:R0MFNB:R0RD50-RMSCR2
;
RMSCR0:	.FCTR	RMSCRE-[1,1]RMSLIB/LB:R0CRXI-RMSCR1
;
;	GOTO STEP 10
;***************************      *************************************************
; STEP 10 *	SELECT COMMON $OPEN,$CREATE, AND DIRECTORY ACCESS MODULES
;*********
;
;	IF RSTS/E, GOTO STEP 11.
;
; 	ELSE, SELECT THE FOLLOWING 4 FACTORS FOR THE RSX/IAS ENVIRONMENT
;
RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0RXAC
RMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50
RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RXCR:R0RXMD:R0RXDI
RMSER1:	.FCTR	[1,1]RMSLIB/LB:R0RXMD-RMSOP0
;
;	GOTO STEP 12
;*********************************************************************      *******
; STEP 11 *	SELECT COMMON $OPEN,$CREATE, AND DIRECTORY ACCESS MODULES
;**********
;
; 	IF RSTS/E, SELECT ALL 4 OF THE FOLLOWING FACTORS.
;
;RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0REOP
;RMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0MFNB:R0RD50
;RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RECR
;RMSER1:	.FCTR	RMSOP0
;
;	GOTO STEP 12
;****************************************************************************
; STEP 12 *	SELECT IMPLICIT FILE EXTENSION MODULES
;**********
;
;	IF TASK BUILDING WITH THE RMS11 RESIDENT LIBRAR      Y (RSX)
;	OR RUN TIME SYSTEM (RSTS/E), GOTO STEP 13.
;
;	ELSE,  THE FOLLOWING THREE FACTORS MUST BE SELECTED.
;
RMEXTD:	.FCTR	[1,1]RMSLIB/LB:R0EXTD
RMR1RL:	.FCTR	[1,1]RMSLIB/LB:R1RLBK:R1NXBK
RMR1WL:	.FCTR	[1,1]RMSLIB/LB:R1WTLS
;
;	GOTO STEP 14
;****************************************************************************
; STEP 13 *	SELECT IMPLICIT FILE EXTENSION MODULES
;**********
;
;	IF TASK BUILDING WITH THE RMS11 RESIDENT LIBRARY (RSX) OR
;	RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FAC      TORS MUST
;	BE SELECTED.
;
;RMEXTD:	.FCTR	RMDEXT
;RMR1RL:	.FCTR	RMDRLB
;RMR1WL:	.FCTR	RMDWTL
;
;	GOTO STEP 14
;****************************************************************************
; STEP 14 *	DECLARE RMS-11 CO-TREE
;**********
;
;	THE FOLLOWING IS THE STARTING FACTOR FOR DEFINING THE RMS11 CO-TREE.
;	THE FACTOR NAME RMSALL IS REFERENCED IN THE USERS ODL.
;
RMSALL:	.FCTR	RMS11-*(RMSFIL,RMSREC)
;
;	GOTO STEP 15
;************************************************************************      ****
;	FILE (FAB) FUNCTION OVERLAY STRUCTURE
;
RMSFL0:	.FCTR	(RMSFNM,RMSDPC,RMSCLS,RMSOPN,RMSCR0,RMSMIC)
;
;****************************************************************************
; STEP 15 *	SELECT $EXTEND(EXPLICIT),$ERASE MODULES
;**********
;	IF THE $EXTEND OR $ERASE FUNCTIONS ARE TO BE SUPPORTED, SELECT
;	THE FOLLOWING THREE FACTORS AND ADD RMSMIC AFTER RMSCR0 IN THE
;	RMSFL0 FACTOR ABOVE(STEP #14).
;
RMSMIC:	.FCTR	(RMSERA,RMSEXT)
;
; $ERASE
;
RMSERA:	.FCTR	[1,1]RMSLIB/LB:R0ERFL-RMS      ER1
;
; $EXTEND
;
RMSEXT:	.FCTR	[1,1]RMSLIB/LB:R0EXT0:R0CKSM:R2BFMT-RMEXTD-RMSFL1
;
;	GOTO STEP 16
;****************************************************************************
; STEP 16 *	SELECT FILE ORGANIZATION DEPENDENT $OPEN MODULES
;**********
;
;	THE FOLLOWING FACTOR (RM0XY0) SELECTS ORGANIZATION DEPENDENT MODULES
;	FOR THE $OPEN FUNCTION. AS IS, IT SELECTS THE MODULES FOR ALL
;	THREE FILE ORGANIZATIONS. THEY ARE:
;	
;	R1OPFL			(SEQUENTIAL ORGANIZATION
;	R2OPFL			(RELATIVE ORGANIZATIO      N)
;	R3OPFL AND R3RPLG	(INDEXED ORGANIZATION)
;
;	IF A PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE
;	CORRESPONDING MODULE NAMES MAY BE REMOVED TO SAVE SPACE.
;	NOTE- THE MODULE  R0INIT  HAS BEEN REMOVED FROM THE FOLLOWING
;	FACTOR AN PUT INTO THE RMSFNM FACTOR AFTER STEP 7.
;
RM0XY0:	.FCTR	RMOPIN-[1,1]RMSLIB/LB:R0CKSM:R1OPFL:R2OPFL
;RM0X30:	.FCTR	[1,1]RMSLIB/LB:R3OPFL:R3RPLG
;
;	GOTO STEP 17
;****************************************************************************
; STEP 17 *	SELECT       FILE ORGANIZATION DEPENDENT $CREATE MODULES
;**********
;
;	THE FOLLOWING FACTOR (RMSCR1) SELECTS THE ORGANIZATION DEPENDENT
;	MODULES FOR FILE CREATION, ALONG WITH APPROPRIATE SUPPORTING MODULES.
;	AS IS, IT SELECTS THE MODULES FOR ALL THREE ORGANIZATIONS. IF A
;	PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE CORRESPONDING
;	MODULES MAY BE REMOVED TO SAVE SPACE.
;	THE CORRESPONDENCE IS:
;
;	R1CRFL			(SEQUENTIAL ORGANIZATION)
;	R2CRFL			(RELATIVE ORGANIZATION)
;	R3CRFL			(INDEXED ORGANIZAT      ION)
;
;
; THE FACTORS FOR THE SUPPORTING MODULES ARE:
;
;	RMCRXX			(RELATIVE OR INDEXED)
;	RM0X21			(RELATIVE ORGANIZATION)
;	RM0X31			(INDEXED ORGANIZATION)
;
RMSCR1:	.FCTR	[1,1]RMSLIB/LB:R1CRFL:R2CRFL-(RMCRCK,RMCREA,RM0X21)
;
;
;RMCRXX:	.FCTR	(RM0X21,RM0X31)
RM0X21:	.FCTR	[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM-RMSFL1
;RM0X31:	.FCTR	[1,1]RMSLIB/LB:R3WPLG:R0CKSM:R0ALBD-RMEXTD
;
;	GOTO STEP 18
;****************************************************************************
; STEP 18 *	SELECT $CO      NNECT,$DISCONNECT MODULES
;**********
;
RMSCDX:	.FCTR	RMSCD-[1,1]RMSLIB/LB:R1CONP:R2CONP-RMSCD0
;
;	SELECT ONE OF THE FOLLOWING TWO RMSCD0 FACTORS-
;
;	NO INDEX FILE SUPPORT REQUIRED
;
RMSCD0:	.FCTR	[1,1]RMSLIB/LB:R1DISC:R2DISC-RMSCD1
;
;	INDEX FILE SUPPORT REQUIRED
;
;RMSCD0:	.FCTR	[1,1]RMSLIB/LB:R3CONP:R1DISC:R2DISC:R3DISC-RMSCD1
;
;	IF THE ASYNCH EXEC WAS CHOSEN IN STEP 5, DELETE  :R0RSEI  FROM
;	THE FOLLOWING FACTOR.
;
RMSCD1:	.FCTR	[1,1]RMSLIB/LB:R0CCLN:R0RSEI:R0ALBS-RMSFL1-RMSCD2
RM      SCD2:	.FCTR	RMR1RL-RMR1WL-RMEXTD
;
;	GOTO STEP 19
;****************************************************************************
; STEP 19 *	RMS RECORD (RAB) FUNCTION OVERLAY STRUCTURE
;**********
;
;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) SEPARATED BY
;	ODL OVERLAY/CONCATENATION OPERATORS WHICH
;	WILL PROVIDE THE REQUIRED FUNCTIONALITY
;	RM0X26 ---- RELATIVE FILE RECORD OPERATIONS
;	RM0X36 ---- INDEXED FILE RECORD OPERATIONS
;	RMSBLK ---- BLOCK IO AND MISC. RECORD OPERATIONS $REWIND,$F      REE
;			$FLUSH, AND $TRUNCATE
;	RMSSQ0 ---- SEQUENTIAL FILE RECORD OPERATIONS
;
RMSREC:	.FCTR	RMSRAB-(RMSCDX,RMSSQ0,RMSBLK,RM0X26)
;
;	GOTO STEP 20
;****************************************************************************
; STEP 20 * 	RMS RELATIVE FILE RECORD OPERATIONS
;**********
;
;	IF THE RELATIVE FILE SUPPORT IS NOT REQUIRED, GOTO STEP 21,
;	ELSE SELECT THE APPROPRIATE FACTORS IN THIS STEP.
;
; REL: ROOT,$FIND
;
RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2A
RMIO2C:	.FCTR	[1,1]RMSLIB/LB:R2IOCK      :R2CALC:R0CKSM
RMIO2A:	.FCTR	[1,1]RMSLIB/LB:R2FIND:R2GSET-(RMIO2G,RMIO2P)
;
;	NOTE: TO CONCATENATE ALL RELATIVE FILE RECORD OPERATIONS INTO ONE
;	      OVERLAY, CHANGE THE ABOVE FCTR FROM  -(RMIO2G,RMIO2P)  
;					     TO    -RMIO2G-RMIO2P
;
; REL: $GET-$UPDATE-$DELETE CONCATENATED INTO ONE OVERLAY
;
RMIO2G:	.FCTR	R2GUPD-[1,1]RMSLIB/LB:R2GET-RMIO2U-RMIO2D
;
; REL: $PUT
;
RMIO2P:	.FCTR	[1,1]RMSLIB/LB:R2PUT:R2PSET-RMIO2H
RMIO2H:	.FCTR	[1,1]RMSLIB/LB:R2BFMT:R2EXTD-RMEXTD
;
; REL: $UPDATE
;	IF       $PUT AND $UPDATE ARE CONCATENATED INTO ONE OVERLAY, THEN
;	DELETE THE  :R2PSET  NAME FROM THE FACTOR BELOW.
;
RMIO2U:	.FCTR	[1,1]RMSLIB/LB:R2UPDA:R2PSET
;
; REL: $DELETE
;
RMIO2D:	.FCTR	[1,1]RMSLIB/LB:R2DELE
;
;	GOTO STEP 21
;****************************************************************************
; STEP 21 * 	RMS INDEXED FILE RECORD OPERATIONS
;**********
;
;	IF INDEXED FILE SUPPORT IS NOT REQUIRED, GOTO STEP 22,
;	ELSE SELECT THE APPROPRIATE FACTORS IN THIS STEP.
;
;	NOTE-THE FOLLOWIN      G FACTORS FROM RMS11.ODL HAVE BEEN REMOVED
;	BOTH FOR CLARITY AND FOR PERFORMANCE REASONS:
;		RMIO3X,RMOU3J,RMOU3K,RMOU3L,RMOU3N,RMOU3O
;
; IDX: ROOT
;
;RM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31
;RMIO30:	.FCTR	RMOU3C-RMOU3D-RMOU3E
;
; IDX: $GET-$FIND,$PUT,$UPDATE-$DELETE OVERLAYED WITH EACH OTHER
;
;RMIO31:	.FCTR	(RMIO3G,RMIO3P,RMIO3U)
;
; IDX: $GET,$FIND
;
;RMIO3G:	.FCTR	[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3K
;RMIN3K:	.FCTR	[1,1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKE
;RMIN3S:	.FCTR	[1,1]      RMSLIB/LB:R3FRSE:R3POSE:R3POSR:R3FRRV
;
; IDX: $PUT
;
;RMIO3P:	.FCTR	[1,1]RMSLIB/LB:R3PUT:R3PSET-(RMOU3Q,RMOU33)
;RMOU3Q:	.FCTR	(RMOU34,RMOU35,RMOU36,RMOU3P)
;
; IDX: $UPDATE
;
;RMIO3U:	.FCTR	[1,1]RMSLIB/LB:R3UPDA:R3USET-(RMOU3Q,RMIO3D)
;
; IDX: $DELETE
;
;RMIO3D:	.FCTR	[1,1]RMSLIB/LB:R3DELE:R3DSET:R3RPLC:R3SKDL-RMOU33
;RMOU33:	.FCTR	[1,1]RMSLIB/LB:R3PIXC:R3FRRV:R3DLSI
;
; IDX: INSERT USER-DATA RECORD INTO PRIMARY INDEX DATA BUCKET
;
;RMOU34:	.FCTR	[1,1]RMSLIB/LB:R3IUDR-(RMOU3F,RMOU3G,RMOU      3A)
;
; IDX: INSERT RECORD POINTER INTO DATA LEVEL OF ALTERNATE KEY
;
;RMOU35:	.FCTR	[1,1]RMSLIB/LB:R3ISID-(RMOU3H,RMOU3A)
;
; IDX: UPDATE ANY INDEX BUCKET WITH POINTER TO OLD AND SPLIT BUCKETS
;
;RMOU36:	.FCTR	[1,1]RMSLIB/LB:R3UIDX:R3IKEY-(RMOU3M,RMOU3A)
;
; IDX: ALLOCATE AND FORMAT NEW BUCKETS
;
;RMOU3A:	.FCTR	[1,1]RMSLIB/LB:R3ALOC:R3BFMT-RMEXTD
;
; IDX: ROOT MODULES
;
;RMOU3C:	.FCTR	[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKT
;RMOU3D:	.FCTR	[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KRE      F
;RMOU3E:	.FCTR	[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTR
;
; IDX: INSERT USER-RECORD INTO DATA BUCKET
;
;RMOU3F:	.FCTR	[1,1]RMSLIB/LB:R3IUDI:R3BSRT:R3IUDC
;
; IDX: SPLIT USER-DATA BUCKETS, AND UPDATE RRVS
;
;RMOU3G:	.FCTR	[1,1]RMSLIB/LB:R3BSPL:R3BRRV:R3URRV
;
; IDX: INSERT POINTER INTO ALTERNATE KEY DATA BUCKET, SPLIT IF NECESSARY
;
;RMOU3H:	.FCTR	[1,1]RMSLIB/LB:R3ISDI:R3BSRT:R3SSPL
;
; IDX: INSERT POINTER INTO INDEX LEVEL BUCKET, SPLIT IF NECESSARY
;
;RMOU3M:	.FCTR	[1,1]RMSLIB/LB      :R3IKYI:R3KSPL:R3ROOT
;
; IDX: CREATE INITIAL INDEX FOR EACH KEY WHEN REQUIRED
;
;RMOU3P:	.FCTR	[1,1]RMSLIB/LB:R3MKID-RMOU3A
;
; 	GOTO STEP 22
;****************************************************************************
; STEP 22 *	MISC.  FUNCTIONS: $READ,$WRITE,$FREE,$FLUSH,$REWIND,$TRUNCATE
;**********
;
; 	IF RMS BLOCK IO OPERATIONS AND MISC RMS11 RECORD OPERATIONS
;	ARE NOT REQUIRED, THEN GOTO STEP 23.
;
;	ELSE, SELECT THE APPROPRIATE FACTORS LISTED BELOW.
;	NOTE: THE RMMISC AND [1,1]RMS      LIB/LB:R0RWBI TERM ARE INDEPENDENT
;	AND IF BLOCK IO IS NOT DESIRED THEN THE...../LB:R0RWBI TERM
;	MAY BE DELETED AND IF THE MISC. RECORD OPERATIONS ARE NOT
;	DESIRED THEN THE RMMISC TERM MAY BE DELETED
;
;
; BLOCK I/O: $READ,$WRITE
;
RMSBLK:	.FCTR	RMSBMC-[1,1]RMSLIB/LB:R0RWBI-RMMISC
;
RMMISC:	.FCTR	RMSMIS-RMMIS0
;
; MISC: $FREE,$TRUNCATE
;
RMMIS0:	.FCTR	[1,1]RMSLIB/LB:R0FREE:R1TRUN-RMMIS1
;
; MISC: $REWIND
;
RMMIS1:	.FCTR	[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGT
RMWATR:	.FCTR	[1,1]RMSL      IB/LB:R0WATR-RMR1WL-RMR1RL-RMEXTD
;
; MISC: MAG TAPE SUPPORT
;
RMMAGT:	.FCTR	[1,1]RMSLIB/LB:R0MAGT
;
;	GOTO STEP 23
;****************************************************************************
; STEP 23 *	RMS SEQUENTIAL FILE RECORD OPERATIONS
;**********
;
;	IF SEQUENTIAL FILE SUPPORT IS NOT REQUIRED, GOTO STEP 25
;
;	IF USING RMS11 RESIDENT LIBRARY(RSX), OR RMS11 RUN-TIME
;	SYSTEM(RSTS/E), GOTO STEP 24.
;	ELSE SELECT THE APPROPRIATE MODULES IN THIS STEP.
;
; SEQ: ROOT
;
RMSSQ0:	.FCTR	RM      SSEQ-RMR1RL-RMEXTD-RMSQOP
;
;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) ETC.
;	FOR PERFORMANCE REASONS, CONCATENATE ALL FACTORS WHEN POSSIBLE.
;	RMIN10 ---- $GET/$FIND OPERATIONS FOR SEQUENTIAL FILE
;	RMOU1P ---- $PUT OPERATION FOR THE SEQUENTIAL FILE
;	RMOU1U ----$UPDATE/$DELETE OPERATION FOR THE SEQENTIAL FILE
;
RMSQOP:	.FCTR	[1,1]RMSLIB/LB:R1WTLS:R1CKEF-(RMIN10,RMOU1P,RMOU1U)
;
; SEQ: $GET,$FIND
;
RMIN10:	.FCTR	[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLD
;
; SEQ: $PUT
;
RMOU1P:	.FCTR	[1,1]R      MSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLD
;
; SEQ: $UPDATE,$DELETE
;
RMOU1U:	.FCTR	[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE:R1PSET
;
; NOTE: IF RMOU1U IS CONCATENATED WITH RMOU1P THEN REMOVE 
; THE  :R1PSET  NAME FROM THE ABOVE RMOU1U FACTOR.
;
;	GOTO STEP 25
;****************************************************************************
; STEP 24 *	RMS SEQUENTIAL FILE RECORD OPERATIONS
;**********
;
;	SEQUENTIAL RECORD OPERATIONS IF LINKING TO RMS11 RESIDENT LIBRARY
;	OR RUN-TIME SYSTEM (IE, UPDATE AND D   ~  ELETE ONLY)
;
;RMSSQ0:	.FCTR	RMSSEQ-[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE
;
;	GOTO STEP 25
;****************************************************************************
; STEP 25 *	THE END
;**********
;
;	HAVE YOU DELETED ALL THE SEMICOLONS (;) THAT APPLY TO THE
;	FACTORS YOU HAVE SELECTED ?
;****************************************************************************
 ~         ›r°Æl^@€›         ;+
;			RMS11X.ODL
;		RSX/IAS: ALL RMS ORGANIZATIONS
;
;
;	THIS ODL FILE BUILDS A 9KB FULLY OVERLAYED RMS PACKAGE. TO
;	CONSERVE TASK ADDRESS SPACE, EVERY RMS FUNCTION CALL (E.G. $GET,
;	$PUT, $UPDATE, ETC.) FOR EACH FILE ORGANIZATION IS CONTAINED IN
;	A SEPARATE OVERLAY. THE INITIAL OVERLAY LOADED FOR A PARTICULAR
;	OPERATION MAY, IN TURN, CAUSE THE LOADING OF ONE OR MORE ADDI-
;	TIONAL OVERLAYS. THE MORE OVERLAYS LOADED, THE SLOWER THE OVERALL
;	PERFORMANCE OF THE TASK. THUS, THE INTENT OF THIS       ODL FILE AS
;	IT APPEARS HERE IS SOLELY TO OPTIMIZE FOR SPACE USAGE WITHOUT
;	REGARD TO PERFORMANCE.
;
;	YOU CAN TOTALLY AVOID THE I/O OVERHEAD AND PERFORMANCE PENALTY
;	OF AN OVERLAYED TASK STRUCTURE BY TASK-BUILDING WITHOUT AN ODL
;	FILE AND THEREBY RUN COMPLETELY UNOVERLAYED. IN THIS INSTANCE,
;	THE SPACE WITHIN YOUR TASK REQUIRED BY RMS DEPENDS ENTIRELY
;	UPON THE COMBINATION OF FILE ORGANIZATIONS AND FEATURES USED.
;	THOSE RMS MODULES REQUIRED BY YOUR PROGRAM WILL BE SELECTIVELY
;	LINKED INTO       YOUR TASK IMAGE. THE RESULTANT SPACE REQUIRED BY RMS
;	(EXCLUSIVE OF /O BUFFERS AND CONTROL STRUCTURE STORAGE) WILL RANGE 
;	FROM 9KB TO 44KB. THE HIGH FIGURE RESULTS ONLY IN THE UNLIKELY
;	CASE OF A PROGRAM WRITTEN TO ACCESS ALL FEATURES AND ALL FILE
;	ORGANIZATIONS.
;
;	TO BUILD YOUR RMS ODL FILE, FOLLOW THE STEPS IN THE INSTRUCTIONS.
;	TO ACTIVATE A PARTICULAR INDIVIDUAL FACTOR STATEMENT, SIMPLY
;	REMOVE THE SEMI-COLON FROM THE FIRST CHARACTER OF THAT SPECIFIC
;	LINE.
;
;-
;*****************      ***********************************************************
; STEP 0 *	COMMON: AUTOLOAD VECTORS,TASK IMPURE AREA
;*********
;
RMSCM1:	.FCTR	[1,1]RMSLIB/LB:R0AUTO:R0IMPA
;
;	GOTO STEP 1
;****************************************************************************
; STEP 1 *	SELECT RMS-11 ROOT MODULES
;*********
;
;	IF TASK BUILDING WITHOUT THE RMS11 RESIDENT LIBRARY (RSX) OR
;	RUN TIME SYSTEM (RSTS/E), GOTO STEP #2. 
;
;	ELSE, SELECT ONE OF THE FOLLOWING FACTORS, AND REPLACE
;	THE TERM RMXXXX(      STEP #3) WITH THE NAME OF THE FACTOR CHOSEN.
;
;	NO INDEX FILE SUPPORT REQUIRED
;
;RMS11X:	.FCTR	RMSCM1-RMSREX
;
;	INDEX FILE SUPPORT REQUIRED
;
;RMS11X:	.FCTR	RMSCM1-RMSREX-RMSIX0
;
; 	GOTO STEP 3
;****************************************************************************
; STEP 2 *	SELECT RMS-11 ROOT MODULES
;*********
;
;	SELECT ONE OF THE FOLLOWING FACTORS, AND REPLACE THE
;	TERM RMXXXX(STEP #3) WITH THE NAME OF THE FACTOR CHOSEN.
;
;	NO INDEX FILE SUPPORT REQUIRED
;
;RM0X0X:	.FCTR      	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC
;
;	INDEX FILE SUPPORT REQUIRED
;
RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0
;
;	GOTO STEP 3
;****************************************************************************
; STEP 3 *	DECLARE RMS-11 ROOT
;*********
;
;	THE FACTOR  RMSROT  IS REFERENCED IN THE USERS ODL COMMAND
;	FILE FOR INCLUSION INTO THE ROOT OF THE USERS TASK.
;
;	REPLACE THE RMXXXX FACTOR BELOW WITH THE FACTOR SELECTED
;	IN STEP 1 OR STEP 2.
;
RMSROT:	.FCTR	[1,1]RMSLIB/LB:RMS      SYM-RM0X3X
;
;	GOTO STEP 4
;****************************************************************************
; STEP 4 *	SELECT THE RMS-11 EXECUTIVE
;*********
;
;	IF NOT USING THE RMS11 RESIDENT LIBRARY(RSX), OR THE RMS11
;	RUN-TIME SYSTEM(RSTS/E), GOTO STEP 5.
;
;	ELSE, SELECT ONE OF THE FOLLOWING TWO FACTORS.
;
; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.
;
;RMSREX:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES
;
; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY)
;
;RMSREX:	.FCTR	[1,1]RMSLIB/LB:R0EXEC:R0RSET      
;
;	GOTO STEP 6.
;****************************************************************************
; STEP 5 *	SELECT THE RMS-11 EXECUTIVE AND COMMON ROOT MODULES
;*********
;
;	THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITHOUT
;	THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME SYSTEM (RSTS/E).
;	SELECT ALL THREE.
;
RMSIO:	.FCTR	[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLK
RMSCBL:	.FCTR	[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDAT
RMSCOM:	.FCTR	[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB
;
; SELE      CT ONE OF THE FOLLOWING TWO FACTORS.
;
; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.
;
;
RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS:R0RMSA
;
; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY)
; THESE FACTORS HAVE BEEN CHANGED(VIS-A-VIS THE ORIGINAL RMS11.ODL)
; IN ORDER TO CORRECT AN ASYNCHRONOUS I/O PROBLEM.
;
;RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB:R0RMSA-RMSEX1
;RMSEX1:	.FCTR	[1,1]RMSLIB/LB:R0RSEI:R0FSET:R0FSEI:R0IFLF
;
;	GOTO STEP 6
;*********************************************      *******************************
; STEP 6 *	SELECT INDEXED BUCKET WRITE/READ MODULES
;*********
;
;	THE FOLLOWING FACTOR IS NEEDED ONLY WHEN INDEXED ORGANIZATION IS
;	TO BE SUPPORTED.
;
RMSIX0:	.FCTR	[1,1]RMSLIB/LB:R0RLSB:R0GETB
;
;	GOTO STEP 7
;****************************************************************************
	.NAME	RMS11
	.NAME	RMSFAB
	.NAME	RMSRAB
	.NAME	RMSCRE
	.NAME	RMSCD
	.NAME	RMOPIN
	.NAME	RMSSEQ
	.NAME	RMSREL
	.NAME	R2GUPD
	.NAME	RMSIDX
	.NAME	RMSBMC
	.NAME	RMSMIS
	      .NAME	RMDEXT
	.NAME	RMDRLB
	.NAME	RMDWTL
;****************************************************************************
; STEP 7 *	SELECT FILE FUNCTION ROOT MODULES
;*********
;
; IF USING THE ASYNCHRONOUS EXEC, SELECT THE FIRST  RMSFIL  FACTOR-
;
;RMSFIL:	.FCTR	RMSFAB-RMSFL
;
;	ELSE SELECT THE FOLLOWING  RMSFIL  FACTOR-
;
RMSFIL:	.FCTR	RMSFAB-[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFL
;
;	GOTO STEP 8
;****************************************************************************
;	COMMON MODUL      ES: $CREATE,$OPEN,$DISPLAY,$EXTEND,$CLOSE
;
;	THE FOLLOWING GROUP OF FACTORS SUPPORT NON-OPTIONAL
;	MODULES FOR THE FILE ORIENTED FUNCTIONS. NOTE, THE MODULE  R0INIT
;	HAS BEEN MOVED INTO THE  RMSFNM  FACTOR BELOW, FROM THE  RM0XY0
;	FACTOR IN STEP 16 FOR PERFORMANCE REASONS.
;
RMSFL:	.FCTR	[1,1]RMSLIB/LB:R0CLCM-RMFILE-RMSFL0
RMSFNM:	.FCTR	[1,1]RMSLIB/LB:R0PRFN:R0XPFN:R0MKWA:R0ASLN:R0INIT-RMSFL1
RMSDPC:	.FCTR	[1,1]RMSLIB/LB:R0DPYC:R0CKSM-RMSFL1
RMSFL1:	.FCTR	[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIO
RM      SCLS:	.FCTR	[1,1]RMSLIB/LB:R1CLOS:R2CLOS-RMSCL0
;
;****************************************************************************
; STEP 8 *	SELECT SOME $OPEN,$CLOSE MODULES
;*********
;
;	SELECT ONE OF THE FOLLOWING TWO RMSCL0 FACTORS-
;
;	NO INDEX FILE SUPPORT IS REQUIRED
;
;RMSCL0:	.FCTR	[1,1]RMSLIB/LB:R0CKSM-RMEXTD-RMR1RL
;
;	INDEX FILE SUPPORT IS REQUIRED
;
RMSCL0:	.FCTR	[1,1]RMSLIB/LB:R3CLOS:R0CKSM-RMEXTD-RMR1RL
;
RMSOPN:	.FCTR	[1,1]RMSLIB/LB:R0OPFL-RMSOP0-RM0XY0
;
;	GOTO STEP 9
;****      ************************************************************************
; STEP 9 *	SELECT SOME $CREATE MODULES
;*********
;
;	SELECT ONE OF THE FOLLOWING TWO RMCRCK FACTORS-
;
;	NO INDEX FILE SUPPORT REQUIRED
;
;RMCRCK:	.FCTR	[1,1]RMSLIB/LB:R1CRCK:R2CRCK
;
;	INDEX FILE SUPPORT REQUIRED
;
RMCRCK:	.FCTR	[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCK
;
RMCREA:	.FCTR	[1,1]RMSLIB/LB:R0CRFL:R0MFNB:R0RD50-RMSCR2
;
RMSCR0:	.FCTR	RMSCRE-[1,1]RMSLIB/LB:R0CRXI-RMSCR1
;
;	GOTO STEP 10
;************************      ****************************************************
; STEP 10 *	SELECT COMMON $OPEN,$CREATE, AND DIRECTORY ACCESS MODULES
;*********
;
;	IF RSTS/E, GOTO STEP 11.
;
; 	ELSE, SELECT THE FOLLOWING 4 FACTORS FOR THE RSX/IAS ENVIRONMENT
;
RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0RXAC
RMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50
RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RXCR:R0RXMD:R0RXDI
RMSER1:	.FCTR	[1,1]RMSLIB/LB:R0RXMD-RMSOP0
;
;	GOTO STEP 12
;******************************************************************      **********
; STEP 11 *	SELECT COMMON $OPEN,$CREATE, AND DIRECTORY ACCESS MODULES
;**********
;
; 	IF RSTS/E, SELECT ALL 4 OF THE FOLLOWING FACTORS.
;
;RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0REOP
;RMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0MFNB:R0RD50
;RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RECR
;RMSER1:	.FCTR	RMSOP0
;
;	GOTO STEP 12
;****************************************************************************
; STEP 12 *	SELECT IMPLICIT FILE EXTENSION MODULES
;**********
;
;	IF TASK BUILDING WITH THE RMS11 RESIDENT LIB      RARY (RSX)
;	OR RUN TIME SYSTEM (RSTS/E), GOTO STEP 13.
;
;	ELSE,  THE FOLLOWING THREE FACTORS MUST BE SELECTED.
;
RMEXTD:	.FCTR	[1,1]RMSLIB/LB:R0EXTD
RMR1RL:	.FCTR	[1,1]RMSLIB/LB:R1RLBK:R1NXBK
RMR1WL:	.FCTR	[1,1]RMSLIB/LB:R1WTLS
;
;	GOTO STEP 14
;****************************************************************************
; STEP 13 *	SELECT IMPLICIT FILE EXTENSION MODULES
;**********
;
;	IF TASK BUILDING WITH THE RMS11 RESIDENT LIBRARY (RSX) OR
;	RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE       FACTORS MUST
;	BE SELECTED.
;
;RMEXTD:	.FCTR	RMDEXT
;RMR1RL:	.FCTR	RMDRLB
;RMR1WL:	.FCTR	RMDWTL
;
;	GOTO STEP 14
;****************************************************************************
; STEP 14 *	DECLARE RMS-11 CO-TREE
;**********
;
;	THE FOLLOWING IS THE STARTING FACTOR FOR DEFINING THE RMS11 CO-TREE.
;	THE FACTOR NAME RMSALL IS REFERENCED IN THE USERS ODL.
;
RMSALL:	.FCTR	RMS11-*(RMSFIL,RMSREC)
;
;	GOTO STEP 15
;*********************************************************************      *******
;	FILE (FAB) FUNCTION OVERLAY STRUCTURE
;
RMSFL0:	.FCTR	(RMSFNM,RMSDPC,RMSCLS,RMSOPN,RMSCR0,RMSMIC)
;
;****************************************************************************
; STEP 15 *	SELECT $EXTEND(EXPLICIT),$ERASE MODULES
;**********
;	IF THE $EXTEND OR $ERASE FUNCTIONS ARE TO BE SUPPORTED, SELECT
;	THE FOLLOWING THREE FACTORS AND ADD RMSMIC AFTER RMSCR0 IN THE
;	RMSFL0 FACTOR ABOVE(STEP #14).
;
RMSMIC:	.FCTR	(RMSERA,RMSEXT)
;
; $ERASE
;
RMSERA:	.FCTR	[1,1]RMSLIB/LB:R0ERFL-      RMSER1
;
; $EXTEND
;
RMSEXT:	.FCTR	[1,1]RMSLIB/LB:R0EXT0:R0CKSM:R2BFMT-RMEXTD-RMSFL1
;
;	GOTO STEP 16
;****************************************************************************
; STEP 16 *	SELECT FILE ORGANIZATION DEPENDENT $OPEN MODULES
;**********
;
;	THE FOLLOWING FACTOR (RM0XY0) SELECTS ORGANIZATION DEPENDENT MODULES
;	FOR THE $OPEN FUNCTION. AS IS, IT SELECTS THE MODULES FOR ALL
;	THREE FILE ORGANIZATIONS. THEY ARE:
;	
;	R1OPFL			(SEQUENTIAL ORGANIZATION
;	R2OPFL			(RELATIVE ORGANIZA      TION)
;	R3OPFL AND R3RPLG	(INDEXED ORGANIZATION)
;
;	IF A PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE
;	CORRESPONDING MODULE NAMES MAY BE REMOVED TO SAVE SPACE.
;	NOTE- THE MODULE  R0INIT  HAS BEEN REMOVED FROM THE FOLLOWING
;	FACTOR AN PUT INTO THE RMSFNM FACTOR AFTER STEP 7.
;
RM0XY0:	.FCTR	RMOPIN-[1,1]RMSLIB/LB:R0CKSM:R1OPFL:R2OPFL-RM0X30
RM0X30:	.FCTR	[1,1]RMSLIB/LB:R3OPFL:R3RPLG
;
;	GOTO STEP 17
;****************************************************************************
; STEP 17       *	SELECT FILE ORGANIZATION DEPENDENT $CREATE MODULES
;**********
;
;	THE FOLLOWING FACTOR (RMSCR1) SELECTS THE ORGANIZATION DEPENDENT
;	MODULES FOR FILE CREATION, ALONG WITH APPROPRIATE SUPPORTING MODULES.
;	AS IS, IT SELECTS THE MODULES FOR ALL THREE ORGANIZATIONS. IF A
;	PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE CORRESPONDING
;	MODULES MAY BE REMOVED TO SAVE SPACE.
;	THE CORRESPONDENCE IS:
;
;	R1CRFL			(SEQUENTIAL ORGANIZATION)
;	R2CRFL			(RELATIVE ORGANIZATION)
;	R3CRFL			(INDEXED       ORGANIZATION)
;
;
; THE FACTORS FOR THE SUPPORTING MODULES ARE:
;
;	RMCRXX			(RELATIVE OR INDEXED)
;	RM0X21			(RELATIVE ORGANIZATION)
;	RM0X31			(INDEXED ORGANIZATION)
;
RMSCR1:	.FCTR	[1,1]RMSLIB/LB:R1CRFL:R2CRFL:R3CRFL-(RMCRCK,RMCREA,RMCRXX)
;
;
RMCRXX:	.FCTR	(RM0X21,RM0X31)
RM0X21:	.FCTR	[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM-RMSFL1
RM0X31:	.FCTR	[1,1]RMSLIB/LB:R3WPLG:R0CKSM:R0ALBD-RMEXTD
;
;	GOTO STEP 18
;****************************************************************************
; STEP 1      8 *	SELECT $CONNECT,$DISCONNECT MODULES
;**********
;
RMSCDX:	.FCTR	RMSCD-[1,1]RMSLIB/LB:R1CONP:R2CONP-RMSCD0
;
;	SELECT ONE OF THE FOLLOWING TWO RMSCD0 FACTORS-
;
;	NO INDEX FILE SUPPORT REQUIRED
;
;RMSCD0:	.FCTR	[1,1]RMSLIB/LB:R1DISC:R2DISC-RMSCD1
;
;	INDEX FILE SUPPORT REQUIRED
;
RMSCD0:	.FCTR	[1,1]RMSLIB/LB:R3CONP:R1DISC:R2DISC:R3DISC-RMSCD1
;
;	IF THE ASYNCH EXEC WAS CHOSEN IN STEP 5, DELETE  :R0RSEI  FROM
;	THE FOLLOWING FACTOR.
;
RMSCD1:	.FCTR	[1,1]RMSLIB/LB:R0CCLN:R0RSEI:R0ALBS-RMS      FL1-RMSCD2
RMSCD2:	.FCTR	RMR1RL-RMR1WL-RMEXTD
;
;	GOTO STEP 19
;****************************************************************************
; STEP 19 *	RMS RECORD (RAB) FUNCTION OVERLAY STRUCTURE
;**********
;
;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) SEPARATED BY
;	ODL OVERLAY/CONCATENATION OPERATORS WHICH
;	WILL PROVIDE THE REQUIRED FUNCTIONALITY
;	RM0X26 ---- RELATIVE FILE RECORD OPERATIONS
;	RM0X36 ---- INDEXED FILE RECORD OPERATIONS
;	RMSBLK ---- BLOCK IO AND MISC. RECORD OPERATI      ONS $REWIND,$FREE
;			$FLUSH, AND $TRUNCATE
;	RMSSQ0 ---- SEQUENTIAL FILE RECORD OPERATIONS
;
RMSREC:	.FCTR	RMSRAB-(RMSCDX,RMSSQ0,RMSBLK,RM0X26,RM0X36)
;
;	GOTO STEP 20
;****************************************************************************
; STEP 20 * 	RMS RELATIVE FILE RECORD OPERATIONS
;**********
;
;	IF THE RELATIVE FILE SUPPORT IS NOT REQUIRED, GOTO STEP 21,
;	ELSE SELECT THE APPROPRIATE FACTORS IN THIS STEP.
;
; REL: ROOT,$FIND
;
RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2A
RMIO2C:	.FCTR	      [1,1]RMSLIB/LB:R2IOCK:R2CALC:R0CKSM
RMIO2A:	.FCTR	[1,1]RMSLIB/LB:R2FIND:R2GSET-RMIO2G-RMIO2P
;
;	NOTE: TO CONCATENATE ALL RELATIVE FILE RECORD OPERATIONS INTO ONE
;	      OVERLAY, CHANGE THE ABOVE FCTR FROM  -(RMIO2G,RMIO2P)  
;					     TO    -RMIO2G-RMIO2P
;
; REL: $GET-$UPDATE-$DELETE CONCATENATED INTO ONE OVERLAY
;
RMIO2G:	.FCTR	R2GUPD-[1,1]RMSLIB/LB:R2GET-RMIO2U-RMIO2D
;
; REL: $PUT
;
RMIO2P:	.FCTR	[1,1]RMSLIB/LB:R2PUT:R2PSET-RMIO2H
RMIO2H:	.FCTR	[1,1]RMSLIB/LB:R2BFMT:R2EXTD-RMEXTD
;
;       REL: $UPDATE
;	IF $PUT AND $UPDATE ARE CONCATENATED INTO ONE OVERLAY, THEN
;	DELETE THE  :R2PSET  NAME FROM THE FACTOR BELOW.
;
RMIO2U:	.FCTR	[1,1]RMSLIB/LB:R2UPDA
;
; REL: $DELETE
;
RMIO2D:	.FCTR	[1,1]RMSLIB/LB:R2DELE
;
;	GOTO STEP 21
;****************************************************************************
; STEP 21 * 	RMS INDEXED FILE RECORD OPERATIONS
;**********
;
;	IF INDEXED FILE SUPPORT IS NOT REQUIRED, GOTO STEP 22,
;	ELSE SELECT THE APPROPRIATE FACTORS IN THIS STEP.
;
;	NOTE-      THE FOLLOWING FACTORS FROM RMS11.ODL HAVE BEEN REMOVED
;	BOTH FOR CLARITY AND FOR PERFORMANCE REASONS:
;		RMIO3X,RMOU3J,RMOU3K,RMOU3L,RMOU3N,RMOU3O
;
; IDX: ROOT
;
RM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31
RMIO30:	.FCTR	RMOU3C-RMOU3D-RMOU3E
;
; IDX: $GET-$FIND,$PUT,$UPDATE-$DELETE OVERLAYED WITH EACH OTHER
;
RMIO31:	.FCTR	(RMIO3G,RMIO3P,RMIO3U)
;
; IDX: $GET,$FIND
;
RMIO3G:	.FCTR	[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3K
RMIN3K:	.FCTR	[1,1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKE
RMIN3S:	.FCTR      	[1,1]RMSLIB/LB:R3FRSE:R3POSE:R3POSR:R3FRRV
;
; IDX: $PUT
;
RMIO3P:	.FCTR	[1,1]RMSLIB/LB:R3PUT:R3PSET-(RMOU3Q,RMOU33)
RMOU3Q:	.FCTR	(RMOU34,RMOU35,RMOU36,RMOU3P)
;
; IDX: $UPDATE
;
RMIO3U:	.FCTR	[1,1]RMSLIB/LB:R3UPDA:R3USET-(RMOU3Q,RMIO3D)
;
; IDX: $DELETE
;
RMIO3D:	.FCTR	[1,1]RMSLIB/LB:R3DELE:R3DSET:R3RPLC:R3SKDL-RMOU33
RMOU33:	.FCTR	[1,1]RMSLIB/LB:R3PIXC:R3FRRV:R3DLSI
;
; IDX: INSERT USER-DATA RECORD INTO PRIMARY INDEX DATA BUCKET
;
RMOU34:	.FCTR	[1,1]RMSLIB/LB:R3IUDR-(RMOU3F,RMOU3G,RMOU      3A)
;
; IDX: INSERT RECORD POINTER INTO DATA LEVEL OF ALTERNATE KEY
;
RMOU35:	.FCTR	[1,1]RMSLIB/LB:R3ISID-(RMOU3H,RMOU3A)
;
; IDX: UPDATE ANY INDEX BUCKET WITH POINTER TO OLD AND SPLIT BUCKETS
;
RMOU36:	.FCTR	[1,1]RMSLIB/LB:R3UIDX:R3IKEY-(RMOU3M,RMOU3A)
;
; IDX: ALLOCATE AND FORMAT NEW BUCKETS
;
RMOU3A:	.FCTR	[1,1]RMSLIB/LB:R3ALOC:R3BFMT-RMEXTD
;
; IDX: ROOT MODULES
;
RMOU3C:	.FCTR	[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKT
RMOU3D:	.FCTR	[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KREF
RM      OU3E:	.FCTR	[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTR
;
; IDX: INSERT USER-RECORD INTO DATA BUCKET
;
RMOU3F:	.FCTR	[1,1]RMSLIB/LB:R3IUDI:R3BSRT:R3IUDC
;
; IDX: SPLIT USER-DATA BUCKETS, AND UPDATE RRVS
;
RMOU3G:	.FCTR	[1,1]RMSLIB/LB:R3BSPL:R3BRRV:R3URRV
;
; IDX: INSERT POINTER INTO ALTERNATE KEY DATA BUCKET, SPLIT IF NECESSARY
;
RMOU3H:	.FCTR	[1,1]RMSLIB/LB:R3ISDI:R3BSRT:R3SSPL
;
; IDX: INSERT POINTER INTO INDEX LEVEL BUCKET, SPLIT IF NECESSARY
;
RMOU3M:	.FCTR	[1,1]RMSLIB/LB:R3IKYI:R3      KSPL:R3ROOT
;
; IDX: CREATE INITIAL INDEX FOR EACH KEY WHEN REQUIRED
;
RMOU3P:	.FCTR	[1,1]RMSLIB/LB:R3MKID-RMOU3A
;
; 	GOTO STEP 22
;****************************************************************************
; STEP 22 *	MISC.  FUNCTIONS: $READ,$WRITE,$FREE,$FLUSH,$REWIND,$TRUNCATE
;**********
;
; 	IF RMS BLOCK IO OPERATIONS AND MISC RMS11 RECORD OPERATIONS
;	ARE NOT REQUIRED, THEN GOTO STEP 23.
;
;	ELSE, SELECT THE APPROPRIATE FACTORS LISTED BELOW.
;	NOTE: THE RMMISC AND [1,1]RMSLIB/LB:R0RW      BI TERM ARE INDEPENDENT
;	AND IF BLOCK IO IS NOT DESIRED THEN THE...../LB:R0RWBI TERM
;	MAY BE DELETED AND IF THE MISC. RECORD OPERATIONS ARE NOT
;	DESIRED THEN THE RMMISC TERM MAY BE DELETED
;
;
; BLOCK I/O: $READ,$WRITE
;
RMSBLK:	.FCTR	RMSBMC-[1,1]RMSLIB/LB:R0RWBI-RMMISC
;
RMMISC:	.FCTR	RMSMIS-RMMIS0
;
; MISC: $FREE,$TRUNCATE
;
RMMIS0:	.FCTR	[1,1]RMSLIB/LB:R0FREE:R1TRUN-RMMIS1
;
; MISC: $REWIND
;
RMMIS1:	.FCTR	[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGT
RMWATR:	.FCTR	[1,1]RMSLIB/LB:R0WAT      R-RMR1WL-RMR1RL-RMEXTD
;
; MISC: MAG TAPE SUPPORT
;
RMMAGT:	.FCTR	[1,1]RMSLIB/LB:R0MAGT
;
;	GOTO STEP 23
;****************************************************************************
; STEP 23 *	RMS SEQUENTIAL FILE RECORD OPERATIONS
;**********
;
;	IF SEQUENTIAL FILE SUPPORT IS NOT REQUIRED, GOTO STEP 25
;
;	IF USING RMS11 RESIDENT LIBRARY(RSX), OR RMS11 RUN-TIME
;	SYSTEM(RSTS/E), GOTO STEP 24.
;	ELSE SELECT THE APPROPRIATE MODULES IN THIS STEP.
;
; SEQ: ROOT
;
RMSSQ0:	.FCTR	RMSSEQ-RMR1RL      -RMEXTD-RMSQOP
;
;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) ETC.
;	FOR PERFORMANCE REASONS, CONCATENATE ALL FACTORS WHEN POSSIBLE.
;	RMIN10 ---- $GET/$FIND OPERATIONS FOR SEQUENTIAL FILE
;	RMOU1P ---- $PUT OPERATION FOR THE SEQUENTIAL FILE
;	RMOU1U ----$UPDATE/$DELETE OPERATION FOR THE SEQENTIAL FILE
;
RMSQOP:	.FCTR	[1,1]RMSLIB/LB:R1WTLS:R1CKEF-RMIN10-RMOU1P-RMOU1U
;
; SEQ: $GET,$FIND
;
RMIN10:	.FCTR	[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLD
;
; SEQ: $PUT
;
RMOU1P:	.FCTR	[1,1]RMSLIB/LB:R1PU      T:R1PSET:R1PUNR:R1PBLD
;
; SEQ: $UPDATE,$DELETE
;
RMOU1U:	.FCTR	[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE
;
; NOTE: IF RMOU1U IS CONCATENATED WITH RMOU1P THEN REMOVE 
; THE  :R1PSET  NAME FROM THE ABOVE RMOU1U FACTOR.
;
;	GOTO STEP 25
;****************************************************************************
; STEP 24 *	RMS SEQUENTIAL FILE RECORD OPERATIONS
;**********
;
;	SEQUENTIAL RECORD OPERATIONS IF LINKING TO RMS11 RESIDENT LIBRARY
;	OR RUN-TIME SYSTEM (IE, UPDATE AND DELETE ONLY)
;
;RMS   j  SQ0:	.FCTR	RMSSEQ-[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE
;
;	GOTO STEP 25
;****************************************************************************
; STEP 25 *	THE END
;**********
;
;	HAVE YOU DELETED ALL THE SEMICOLONS (;) THAT APPLY TO THE
;	FACTORS YOU HAVE SELECTED ?
;****************************************************************************
 j         ›rØÆl^@€›         ;+
;
;		RMS12X.ODL
;	RSX/IAS: ALL FILE ORGANIZATIONS
;
;	1. THIS OVERLAY REQUIRES RMS-11K.
;	2. THIS OVERLAY CONTAINS ALL RMS-11K FUNCTIONALITY, OPTIMIZED
;	   TO FIT IN 12KB WITH MINIMUM NUMBER OF OVERLAYS.
;	3. ALL MODULE REFERENCES ARE TO [1,1]RMSLIB.OLB
;	4. IN THE FOLLOWING TEXT, WHEREEVER A CHOICE IS INDICATED
;	   AMONG ALTERNATIVE FACTORS, THE CHOICE IS EFFECTED BY
;	   REMOVING THE LEADING SEMICOLON FROM THE FACTOR TO BE SELTED
;	5. THE FOLLOWING OPTIMIZATIONS ARE INCLUDED IN THIS OVERL      AY
;	   DEFINITION. IF OTHER OPTIMIZATIONS ARE DESIRED, YOU MUST
;	   START WITH THE STANDARD RMS11.ODL AND PROCEED FROM
;	   THERE. TO ATTEMPT TO OPTIMIZE THIS ODL ANY FURTHER MAY LEAD
;	   TO UNRESOLVED SYMBOLS/MULTIPLE SYMBOL DEFINITION TKB ERRORS.
;
;		-OPEN & CONNECT ARE NOW IN ONE OVERLAY.
;		-DISCONNECT & CLOSE ARE NOW IN ONE OVERLAY.
;		-SEQUENTIAL RECORD OPERATIONS ARE NOW IN ONE OVERLAY.
;		-RELATIVE RECORD OPERATIONS ARE NOW IN ONE OVERLAY.
;		-NUMBER OF INDEXED OVERLAYS CUT FROM 32 TO       8.
;		-NORMAL INSERTS OF DATA RECORDS PUT INTO ONE OVERLAY,
;		 SPLIT ROUTINES IN SEPARATE OVERLAYS(2).
;		-INSERT OF RECORDS INTO ALTERNATE INDICES, INCLUDING BUCKET
;		 SPLITTING, ARE NOW IN ONE OVERLAY
;		-INSERT OF RECORDS INTO INDEX BUCKETS, INCLUDING BUCKET
;		 SPLITTING, ARE NOW IN ONE OVERLAY.
;
;
;-
;
RMSCM1:	.FCTR	[1,1]RMSLIB/LB:R0AUTO:R0IMPA
;
;**************************************************
;
;	IF TASK BUILDING WITH THE RMS11 RUN-TIME SYSTEM(RSTS/E) 
;	REPLACE THE TERM RMXXXX       IN THE FACTOR RMSROT WITH RMS11X.
;RMS11X:	.FCTR	RMSCM1-RMSREX-RMSIX0
;
;**************************************************
;
;	IF TASK BUILDING WITHOUT THE RMS11 RUN-TIME SYSTEM(RSTS/E),
;	REPLACE THE FACTOR RMXXXX (BELOW) WITH THE FOLLOWING:
RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0
RMSROT:	.FCTR	[1,1]RMSLIB/LB:RMSSYM-RM0X3X
;**************************************************
; THE FOLLOWING FACTOR IS NEEDED WHEN TASK BUILDING WITH
; RUN-TIME SYSTEM (RSTS/E).
;
; RSTS/E OR SYNCRO      NOUS RSX ENVIRONMENTS.
;
;RMSREX:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES
;**************************************************
; THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITHOUT
; THE RUN TIME SYSTEM (RSTS/E).
; SELECT ALL THREE.
;
RMSIO:	.FCTR	[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLK
RMSCBL:	.FCTR	[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDAT
RMSCOM:	.FCTR	[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB
;
;**************************************************
; THE FOLLOWING FACTORS ARE NEEDED WHE      N TASK BUILDING WITHOUT
; THE RUN TIME SYSTEM (RSTS/E)
; SELECT ONE OF THE TWO FACTORS.
;
; SYNC SYSTEMS
;
RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS:R0RMSA
;
; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY)
;
;RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB:R0RMSA-RMSEX1
;RMSEX1:	.FCTR	[1,1]RMSLIB/LB:R0RSEI:R0FSET:R0FSEI:R0IFLF
;
;**************************************************
RMSIX0:	.FCTR	[1,1]RMSLIB/LB:R0RLSB:R0GETB
	.NAME	RMS11
	.NAME	RMSFAB
	.NAME	RMSRAB
	.NAME	RMSCRE
	.      NAME	RMSCD
	.NAME	RMOPIN
	.NAME	RMSSEQ
	.NAME	RMSREL
	.NAME	R2GUPD
	.NAME	RMSIDX
	.NAME	RMSBMC
	.NAME	RMSMIS
	.NAME	RMDEXT
	.NAME	RMDRLB
	.NAME	RMDWTL
;**************************************************
; THE FOLLOWING GROUP OF FACTORS SELECT NON OPTIONAL
; MODULES FOR THE FILE ORIENTED FUNCTIONS.
; IF USING THE ASYNCHRONOUS EXEC CHOOSE THE FOLLOWING RMSFIL FACTOR:
;
;RMSFIL:	.FCTR	RMSFAB-RMSFL
;
; IF BUILDING WITH THE SYNCHRONOUS EXEC, CHOOSE THE FOLLOWING
; RMSFIL FACTOR:
;
RMSFIL:	.F      CTR	RMSFAB-[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFL
RMSFL:	.FCTR	[1,1]RMSLIB/LB:R0CLCM-RMFILE-RMSFL0
RMSFNM:	.FCTR	[1,1]RMSLIB/LB:R0INIT:R0PRFN:R0XPFN:R0MKWA:R0ASLN-RMSFL1
RMSDPC:	.FCTR	[1,1]RMSLIB/LB:R0DPYC:R0CKSM-RMSFL1
RMSFL1:	.FCTR	[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIO
RMSCLS:	.FCTR	[1,1]RMSLIB/LB:R1CLOS:R2CLOS-RMSCL0
RMSCL0:	.FCTR	[1,1]RMSLIB/LB:R3CLOS:R0CKSM-RMEXTD-RMR1RL
RMSOPN:	.FCTR	[1,1]RMSLIB/LB:R0OPFL-RMSOP0-RM0XY0
RMCRCK:	.FCTR	[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCK
RMCREA:	.FCTR	[1,1]RMSL      IB/LB:R0CRFL:R0MFNB:R0RD50-RMSCR2
RMSCR0:	.FCTR	RMSCRE-[1,1]RMSLIB/LB:R0CRXI-RMSCR1
;**************************************************
; SELECT THE FOLLOWING FOUR FACTORS FOR THE RSX ENVIRONMENT.
;
RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0RXAC
RMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50
RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RXCR:R0RXMD:R0RXDI
RMSER1:	.FCTR	[1,1]RMSLIB/LB:R0RXMD-RMSOP0
;
; SELECT THE FOLLOWING FOUR FACTORS FOR THE RSTS/E ENVIRONMENT.
;
;RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0REOP
;RMSOP0:	.FCTR	[      1,1]RMSLIB/LB:R0MFNB:R0RD50
;RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RECR
;RMSER1:	.FCTR	RMSOP0
;
;**********************************************************
;
; IF TASK BUILDING WITHOUT THE RMS11 RESIDENT LIBRARY (RSX)
; OR RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS MUST
; BE SELECTED.
;
RMEXTD:	.FCTR	[1,1]RMSLIB/LB:R0EXTD
RMR1RL:	.FCTR	[1,1]RMSLIB/LB:R1RLBK:R1NXBK
RMR1WL:	.FCTR	[1,1]RMSLIB/LB:R1WTLS
;
; IF TASK BUILDING WITH THE RMS11
; RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS       MUST
; BE SELECTED.
;
;RMEXTD:	.FCTR	RMDEXT
;RMR1RL:	.FCTR	RMDRLB
;RMR1WL:	.FCTR	RMDWTL
;**************************************************
; THE FOLLOWING IS THE STARTING FACTOR FOR DEFINING THE RMS11 CO-TREE.
; THE FACTOR NAME RMSALL IS REFERENCED IN THE USERS ODL.
;
RMSALL:	.FCTR	RMS11-*(RMSFIL,RMSREC)
RMSFL0:	.FCTR  (RMSFNM,RMSOPN-RMSDPC-RMSCDX,RMSCR0,RMSCLS-RMSMIC-RMSCD0)
RMSMIC:	.FCTR	RMSERA-RMSEXT
RMSERA:	.FCTR	[1,1]RMSLIB/LB:R0ERFL-RMSER1
RMSEXT:	.FCTR	[1,1]RMSLIB/LB:R0EXT0:R2BFMT-RMSF      L1
RM0XY0:	.FCTR	RMOPIN-[1,1]RMSLIB/LB:R1OPFL:R2OPFL-RM0X30
RM0X30:	.FCTR	[1,1]RMSLIB/LB:R3OPFL:R3RPLG
RMSCR1:	.FCTR	[1,1]RMSLIB/LB:R1CRFL:R2CRFL:R3CRFL-RMCRCK-RMCREA-RMCRXX
RMCRXX:	.FCTR	RM0X21-RM0X31
RM0X21:	.FCTR	[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM-RMSFL1
RM0X31:	.FCTR	[1,1]RMSLIB/LB:R3WPLG-RMEXTD

;
; IF USING THE ASYNCHRONOUS EXEC, DELETE THE :R0RSEI FACTOR FROM THE
; FOLLOWING LINE.
;
RMSCDX:	.FCTR	RMSCD-[1,1]RMSLIB/LB:R1CONP:R2CONP:R3CONP:R0RSEI-RMSCD1
RMSCD1:	.FCTR	[1,1]RMSLIB/LB:R0CCLN      :R0ALBS
RMSCD0:	.FCTR	[1,1]RMSLIB/LB:R1DISC:R2DISC:R3DISC-RMSCD2
RMSCD2:	.FCTR	[1,1]RMSLIB/LB:R0CCLN-RMR1WL

RMSREC:	.FCTR	RMSRAB-RMEXTD-(RMSBLK-RMSSQ0,RM0X26,RM0X36)

RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2A
RMIO2C:	.FCTR	[1,1]RMSLIB/LB:R2IOCK:R2CALC:R0CKSM
RMIO2A:	.FCTR	[1,1]RMSLIB/LB:R2FIND:R2GSET-RMIO2G-RMIO2P
RMIO2G:	.FCTR	[1,1]RMSLIB/LB:R2GET-RMIO2U-RMIO2D
RMIO2P:	.FCTR	[1,1]RMSLIB/LB:R2PUT:R2PSET-RMIO2H
RMIO2H:	.FCTR	[1,1]RMSLIB/LB:R2BFMT:R2EXTD
RMIO2U:	.FCTR	[1,1]RMSLIB/LB:R2UPDA
RMIO2D:	.FCT      R	[1,1]RMSLIB/LB:R2DELE

RM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31
RMIO30:	.FCTR	RMOU3C-RMOU3D-RMOU3E-RMIO3P-RMIO3U
RMIO31:	.FCTR	(RMIO3G,RMOU3Q)
RMIO3G:	.FCTR	[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3K
RMIN3K:	.FCTR	[1,1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKE
RMIN3S:	.FCTR	[1,1]RMSLIB/LB:R3FRSE:R3POSE:R3POSR:R3FRRV
RMIO3P:	.FCTR	[1,1]RMSLIB/LB:R3PUT:R3PSET
RMOU3Q:	.FCTR	(RMOU33-RMIO3D-RMOU3P,RMOU34,RMOU35,RMOU36)
RMIO3U:	.FCTR	[1,1]RMSLIB/LB:R3UPDA:R3USET
RMIO3D:	.FCTR	[1,1]RMSLIB/LB:R3DELE:R3DSET      :R3RPLC:R3SKDL
RMOU33:	.FCTR	[1,1]RMSLIB/LB:R3PIXC:R3FRRV:R3DLSI
RMOU34:	.FCTR	[1,1]RMSLIB/LB:R3IUDR-RMOU3J-RMOU3F-(RMOU3K-RMOU3G,RMOU3A)
RMOU35:	.FCTR	[1,1]RMSLIB/LB:R3ISID-RMOU3H-RMOU3A
RMOU36:	.FCTR	[1,1]RMSLIB/LB:R3UIDX:R3IKEY-RMOU3M-RMOU3O-RMOU3A
RMOU3A:	.FCTR	[1,1]RMSLIB/LB:R3ALOC:R3BFMT
RMOU3C:	.FCTR	[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKT
RMOU3D:	.FCTR	[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KREF
RMOU3E:	.FCTR	[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTR
RMOU3F:	.FCTR	[1,1]RMSL      IB/LB:R3IUDI:R3BSRT
RMOU3G:	.FCTR	[1,1]RMSLIB/LB:R3BRRV:R3URRV
RMOU3H:	.FCTR	[1,1]RMSLIB/LB:R3ISDI:R3BSRT-RMOU3L
RMOU3J:	.FCTR	[1,1]RMSLIB/LB:R3IUDC
RMOU3K:	.FCTR	[1,1]RMSLIB/LB:R3BSPL
RMOU3L:	.FCTR	[1,1]RMSLIB/LB:R3SSPL
RMOU3M:	.FCTR	[1,1]RMSLIB/LB:R3IKYI
RMOU3N:	.FCTR	[1,1]RMSLIB/LB:R3KSPL
RMOU3O:	.FCTR	[1,1]RMSLIB/LB:R3ROOT-RMOU3N
RMOU3P:	.FCTR	[1,1]RMSLIB/LB:R3MKID-RMOU3A

RMSBLK:	.FCTR	RMSBMC-[1,1]RMSLIB/LB:R0RWBI-RMMISC
RMMISC:	.FCTR	RMSMIS-RMMIS0
RMMIS0:	.FCTR	[1,1]RMSLIB/LB:R0FREE:R1TRU      N-RMMIS1
RMMIS1:	.FCTR	[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGT
RMWATR:	.FCTR	[1,1]RMSLIB/LB:R0WATR
RMMAGT:	.FCTR	[1,1]RMSLIB/LB:R0MAGT

;
; IF RSX/IAS, OR RSTS/E AND ARE NOT LINKING TO THE RUN-TIME SYSTEM,
; THEN SELECT ALL OF THE FOLLOWING FIVE FACTORS.
;
RMSSQ0:	.FCTR	RMSSEQ-RMR1RL-RMSQOP
RMSQOP:	.FCTR	[1,1]RMSLIB/LB:R1WTLS:R1CKEF-RMIN10-RMOU1P-RMOU1U
RMIN10:	.FCTR	[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLD
RMOU1P:	.FCTR	[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLD
RMOU1U:	.FCTR	[1,1]RMSLIB/LB:R1UPDA   ì   :R1UBLD:R1DELE
;**************************************************
; SEQUENTIAL RECORD OPERATIONS IF LINKING TO THE RMS11
; RUN-TIME SYSTEM (IE, UPDATE AND DELETE ONLY)
;
;RMSSQ0:	.FCTR	RMSSEQ-[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE
 ì          ,  ^@€›          .  å˜€W    ÂpÁ   ¯”L  ü¨@  G©#@  t  .  N©T
@  Ý©w~@  ¤ªD@  Ûªl†@  ÛªÐÔ@  d  .  U«w~@  ”¬¸p@      (  G© (ü(«Lwh¼ È  .  ’¬p…|HC©hŒÃ©’h:6ªÏ}h> …¬0Xhš  &  ‡¬À]hD‰¬üXh  “¬’h¯” «    ÷     G©   Ý  '                   
 EDSGXCCID>?² 
     É  .                                          ®  .  F                                       ˆ  .  l                                       b  .  ’                                       <  .  ¸           ß	ºß	„‡ ß	ºß	Pß‹ 
æ æêæ    
º„ºP &êç  .  Þ gÿˆŠ  ‡ ß0îðÂTI
ß	  JŸ  ë  $  
 0îð"ü¨$J(  °  .  Àþÿ_	’AT: Ä  ôÅ þ _	>  ÂP Ã¢     þÿ
’G©#>  h  .  *aß	  JJôÕ þ ß	,À p¡ ~hß	ò     Ý©w~
JJ,    .  Púýß	0Àø	^Øl2ÊJòß	$W * ;˜  .  ú
0^l2ÊJò"$c  .  vÃÈW  ß• ÈÄe ù	  Â¢ ÀÁÄ’ƒŠò    ÈÈN©T
G©#¢ Ô  .  œW¤0 ~€
Á
       R”~	Ò•. àÒ•0 R”  .  Â~òÅ@ ÿÿ„
Ò•0 ûáµ@ Ë•- Ä  Âàß	  ¡    "G©#(U«w~ƒ  .  èJ‡ ÁÈÀÊÃ¢ ÂÅP AáE`
”—¤  ò•ý    J
ÈÊG©#¢ ý  .  ? ÿÿHß	âÁî‡ Ä  _	>  Æ  _ ß	±     âG©#> "  &œ  .  4$W¡= ñß	,W * 2ëÀ¢ Ð•+ 
ß	öW¡s    $,G©#¢ $öq  .  Z- p‘ÿÿß	ú€P‘ûW¡. öÂ£ æ &Á_    ú"G©#£ ï  .  €`Nà¦€àÉ&Ÿ–_	    ÈÆe Á—ÍÄ  ä    –ÛªÐÔÈ$Í(G©#Á  .  ¦_ vW¡" ·ÀÈÁÊÂ
Ñ”~•Ñ•        ~‘Ök    vÈÊ«  .  ÌÅß	ÖÁ5 ¢Ág
 v W" _ <ßúîù    
Ö
 "<&ú(î8  .  òöU  
öE  ðß0îß	P…„ƒ‚©    ð0îP  .  € ß	JÁ" À
 ÅQÑÁe ~tß	\àŸ    
J" &\Ú  .  > _	’SET ‡ W!B hß	úýß	0‡ À fÑ    ’ú0$ ²  .  d	ß	öÀ àQ‘ß	ú~NÑ•  ~    öúÉ  .  ŠW¡: HW¡: É00ß	ú€É q‘ ùW"009W¡  
  úÜ  .  °, 6ß	úß	ÖW  /Á5 ,€H‡ É	&f9    
úÖû  .        Ö@_	’BP: €Áe ~Æ  _ ô ß	JÁ° _T    ’  ô "J&° «  .  üß	\ß	h" ‡¸  È  _	’CAN ‡ _ J    \h ’®  .  "æ W!/ 
ß	,W!L ôß	úýÎ ß	Öeu     ,ú" &Ö  .  HÁ5 éÀÈPPPß	0W¡( Dß	,ß	ÎÁ
Š    È0",&Îs  .  nØTpT Õ_`Êß	0W¡, ðÄ  W¡) Éß	,Á—u    Ê0G©#&,%  .  ”ÍÄW 8 ÁÁ5 ¾W * ßÈ¸×§È ´W º    ÍÈ"È;  .  º ß5 Ê­‡       ß
  ß  
ß	Â    Ê $ ¬  .  à      0ž€_p Åå0 Aaß	úø‡ ‚
Ã
Â
Å”W¡$     0
 ú  .  Å•[ W¡Z W¡@ 	W!0 W!: E!‡ 
‡ {  .  ,ß	úW!  ûW!	 øÜBCß	  J… æ3ÿˆÀÒ    úU«w~Ja  .  R
 Á" B—$ ß	¨C Ãg
 ×" ÊËa    " ¨
 Ó  .  x ÉÁe ~‡ À
 Á" B—$ ‡ß	¨™áy    " "¨ä  .  ž Áe ~‡ ÒÃ Å “$C‡ Ä   Á ˆ     "G©#( `  .  Ä Å ß	ð ß	ð" Å
ß	ð B     ðð ðÃ  .  êD ‡ fAa
—r( áœƒG…Aa‡  ABCDEFGî  
  Ì            .  HIJKLMNOPQRSTUVWXYZ$. 0123456789Îå Z  .  6ðß	ºŸ   ßç
   ß  ß	h¾ È »  &  ðº  
     hz  .  \ßÿÿ  _ ô Á
 À" ÒÃÅ “$H    
  ô "  ç  .  ‚CÀe N~Á‡   ÁÔQQÐÑP  
  Ô   .  ¨
À Â —v Â —v ‘~ôÕ þ _	>³  
  (>…    Î Ô… ¦    Ô Þ   
  Þ: ´  
   â  	  â ë 
   êù    ê    ê f¦æ&fH ð    ê  ’¬p…  ¼  .    ß	  ß	L Á  	 @ ð p
 æ æ  æ§    ¤ª      D
L G©#&”¬¸p  .  & iÿˆ: óV {	V ß	ˆ … &ß	L ß	^ €‡ g    ˆ  L $^ X  .  L À   ‡ À_ :À   &Îe  ,  Ö_    G©#  :G©#‡  .  r ‡ æ# ß	   € À_ :@ û  Xæ$ ß	Ò    Ûªl†€ :|  .  ˜    ž Ä  À¢ mü 	Š  Ã@ 3
  À
€
b    Ûªl†ž G©#G©#¢ ®  .  ¾ È‹@È¥  úÈ¥, ÷È¥	 ôÈ¥* ¢0 $‡¢9 º  .  ä !‚”Áå0 ¢0 ‡¢9 ‚Wp
 ”Âå0 `óóÿÿÆ  .  
  ×Á
Áå Â t³P  à‹Êæ  Îež o    $G©#¦  .  0Þ(æ% ß	   @®‡ fß	¼ …Ä     ¾  t$ ª    Ûªl†@G© ¼ "G©#Í  .  Vt ( fÎe Ž  ý  	t/  & t  & ü	¾  .  |& t t  t" &ß	Æ „…| ( Ä  ôô    G© Æ $G©#ª  .  ¢ &f   Á
Wp m q# Áå À
À  .  Èù€Õ… 4  t2 f æ ß	  
 ìæà    "Ûªl†&ì<  .  î  Îež Þ< _ ñ
  Å ô
 Å
 E`U    G©#•  .  €_ Dß	>  Ä  : óX {	X Äž  K    D> G©#&G©#ž #    :&æÿˆæ3ÿˆ    ó ¾         jL¢_@€›          ÁXÀN     "    î   œ       Já¶                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ’^q† b ŸÚd† b »ÖKSR ÇÀ+   ä²2p ¸ä
z{ Ì å X© ê #D &3D &˜pì,‘Œ¶ 0³’  0.2pì0<2pì0?4pì0O4pì05  0&5¶ 0°6pì4òb î 4b î 40 4KqƒÂ4ÍsD ?    @    Jg'b î ‰h· ü	Ø^2 < 	òb î 	òb î 	@`· ü#	pžO x$	’  $	cT’  ;	`{ Ì ;	¢`© ê E	 { Ì À+Y – "øfb î KòypìO¹’b î ïKqƒÂöXzb î d  d„!Z ž d }œ Ö dD k2gpì‹€2 < ç K† b çMœ Ö ìØ™»< À  † b ëÈ2b î ìÐb î üXpìü&pìü3!pìü:dw
ü‹ww
p:_ Î@8D à8ö È       ÀDD  dD  }D !¼„_ Î#a{ Ì /@D /€D F }  GÀ+Y – n –D ¼¸.D ¼ dD Ù¨sÉJ Ú$`Öèö È tœ Ö t!
î|LD N
îDwD “yœ Ö 2 < p!SR p‹D €pb î ¡ºySR ©@QD ¯ˆw˜ ²€»SR ³vLSR ³’˜pìÔkö È ÔÎö È ØMœ Ö ØNb î ØÀN’  ØµW­”ôº‰† b ý¶‰D .!è ø€b î Ï`ö È %tp ¸%t!ö È %hQb î &®SD &2g  &8ÂD &(ÈD &xÈD &ðÈD &¸ÎD &0ÏD (h† b († b (¸† b (LŸb î (ÜŸb î *å`O x*´r{ Ì *¹sD *‰‹D D¯ Ô YÎÅ j       YÁb î Y"&b î Yä3b î YµWb î Y®sÅ j Yáyb î YÏb î YÐb î Y®‘b î •€%± * •)b î –Îb î –Îb î –"&b î –¡Eb î –vLb î –CTö È ËU<b î ÌÀD  Ì@G  ô&ƒÂx(SR vLb î øMSR ‹wSR ¸’SR D|LD Y  D Y dD ;ŽSR <u~p ¸Sð_¶ \°ESR „|qb î …”Mö È ¢=	ö È ¤òb î ¤ #b î ¤@`· ü¥ÀSR ¥ X· ü¥ÎdSR ¥>wSR ¬u:SR ¯ d· ü¯ d· üË€SR Ë gb î Î  SR Î/}rÔ,_ ÎØB~SR ÛÏD ükSR äw
`ö È vàSR zî~SR zn‹SR ~ËD å€WSR å€‰SR é }SR 	 –pì      	h—† b ì]» ¬è!b î !  b î =p:SR ?8SR A  ­”B0 D D°rœ Ö H  D HØhD H iD d:Kb î … Xè ‰ÀSR ‰8SR ‰ÄSR ‰SR äH¼b î ð-SR Œ¯{ Ì U‹wpì[]SR t¸SR ¢à`SR 1 @~SR %!€WSR 3!!pìt!ÀvƒÂ!  b î ! Kb î „!³SR „!¼ " „!ØYSR „!Àv{ Ì „!Ðz{ Ì „!\}SR „!ø€  „!±SR „!XÀSR ›!ä3pìž!Yb î ž!/Kb î ¨!g'pì¨!ä3pì¨!ØYpì¨!òypì"ÀÁb î " Èb î "@Îb î ""b î ""CTö È ""aö È ""œwö È G"€WSR M"xSR #Ïb î 	#Xb î #ßr´æ#g'pìª%øfb î !&òb î "&”’ƒÂV&À]SR       y&,Kb î y&ÖKb î ê&b î ê&±SR ì&b î ô&SR ô&"ƒÂô&µWSR ö&g'SR ö&Xzb î a'¸.SR e'€WSR e'[SR œ't:b î ´'*¶ ´'„!¶ ´'çz¶ ´'‰‹¶ î'€%†(8XSR (ëySR (±SR (®‘SR (ìrSR (ð_SR Q(D R(yŸ  U(D d(b î d( b î ~(v:b î Š(Îö È Š(ÖKö È –,ºD –,Ô!w
œ,Žœ Ö œ,Bœ Ö œ,ô8Z ž œ,€Q’  œ,äfD œ,–y’  œ,Æ~œ Ö ¯-€b î ÿ-Ð’  ,.À]pì,.íSR /SR Y/€pb î ^/ˆwD j/ Å j j/ŽÅ j .2*}ƒÂ²2CMb î Ì2<b î Ì2u~b î p3ÞD |3g'pì 5  SR ë5•`ö È @8  † b ô8CTb î ô8€Wb î ÿ8p!† b ÿ8!pì      9 }SR 19b î <9µWSR >9À]pì@9Ðpìf9ô&ƒÂü9øfb î ý9Óžb î %:€WSR I: –pìI:h—† b X:†˜pì}:e^† b „:b î „:"&b î „:µWb î „:Yq  š:øfb î :Psö È ¬:Oa Œ¬:t!a Œè:  Å j ;b î J;ÀSR `;  ö È  <  Å j <  Å j <p!† b <!pìð<  SR =  SR 6=  SR h=  SR =  SR >  SR 0>  SR X>  SR ŠA¨»ö È ŠAÐ»ö È ŠAÀÁö È ŠA Èö È ŠAhÎö È ŠAÎö È ŠA€Ôö È ŠAèÚö È ŠAÛö È ŠA8Ûö È ŠA`Ûö È ŠAˆÛö È ŠA°Ûö È ŠA áö È ŠA@çö È ¡E[MƒÂ4F KƒÂ-G Z{ Ì ÁGÐ¢ƒÂ;K }{ Ì ÎK°{ Ì ÏKD ÖKÀÁSR ÞK"!SR ÞK.!SR L
z{ Ì vL@b î       vL„!SR vL 5SR vL±SR {L€b î |Lòb î |LÀD |L #SR |LØYb î |L@`· ü|L –D éL„!SR ôLþ f ;Mb î ;Mÿ r;Mú&b î ;M;Kb î ?MÐ’  CMöb î [M b î [M•`ö È _M¹8{ Ì _MXzb î cM„!ò  gM,Fò  lMg'pìoMKqƒÂoMÞD NÎb î Nb î N"&b î NµWb î NFw¬ Nžwb î N“yb î N´‰b î $Nòb î $N@`· üxQXzb î {Q2 < €QË{ Ì €Q„:{ Ì €QKqƒÂÀQ	SR Rˆ,ˆ” <RkSR ¦SS~p ¸®ShD ®S@b î ®S0f  ?TÎö È ?T"&ö È µW –bµW5–b0X@~pìLXÈSR |XW"ƒÂ|XÀ+pìÉX -pìîXÀvpìõX&pì›Y°	w
ÙYâ† b æY€œ Ö êYt!ú       êYNú ìYØxœ Ö ïYüqƒÂ¯Z }pìÑZx(pìÕZ³’  ÕZ„!ƒÂÕZô&ƒÂÕZ g{ Ì T[²Z{ Ì T[ypì^b î ^"&ö È ^Ã'ö È ^xQÜ ^CTb î ^µWö È ;^±SR l^dæ l^b î l^ûö È l^"&ö È l^ÛWö È o^ÓfD ¶^Àv  æ^  SR õ_  † b ÿ_p&œ Ö E`€W˜ E`èXp ¸E`ØYp ¸E`¼p† b I`üXš¬N`p ¸N`’˜pìR`?X† b R`@X† b R`ÕZ{ Ì R`Àv{ Ì R`Ðz{ Ì R`<Â{ Ì R`DÂ{ Ì R`pÂ{ Ì R`–Â{ Ì R`¼Â{ Ì R`8Ã{ Ì R`LÄ{ Ì R`TÄ{ Ì R`ºÄ{ Ì R`ÈÄ{ Ì R`Å{ Ì R`˜Å{ Ì R`|È{ Ì R`„È{ Ì R`°È{ Ì R`ÖÈ{ Ì R`üÈ{ Ì R`xÉ{ Ì R`ŒÊ{ Ì R`”Ê{ Ì R`úÊ{ Ì R`Ë{ Ì R`[Ë{ Ì R`ØË{ Ì       R`¼Î{ Ì R`ÄÎ{ Ì R`ðÎ{ Ì R`Ï{ Ì R`<Ï{ Ì R`¸Ï{ Ì R`ÌÐ{ Ì R`ÔÐ{ Ì R`:Ñ{ Ì R`HÑ{ Ì R`›Ñ{ Ì R`Ò{ Ì ½`±b î ó`
îó`êYú ó`4}è avLƒÂ6a K†<agD :d<pì:db î :d‰‹pì¡d²è ¡d8wpì¤d8"pì©düXw
¬du:pì¯d dè ¯d£dè ¯dgb î ²d0 ²ú³döpì³dpì³däb î µdˆw7$ ÍdÀD˜ Öd }š¬Úd&pìÚdÆ*$ vÚdº‰  ÚdÆ‰' îýdBxb î ke  SR ke 	SR keÞhÎ leCTb î le€Wb î 3f 2w
8f@	pìDf  pìDflr DfÖKpìEf{QpìEfåQpìEfSpìHf    hf  ˜ hfÐÀƒÂof$	’  Ófg'b î ÓfRŒpìÔfb î Õfž!ƒÂÕf«!ƒÂ      ÕfìYœ Ö ÖfðÒ  ÖfñÒ' îÙf Zb î Þf€b î ßf,-ö È ãfcMœ Ö ãfîjnFãfBk9ãfëy† b ãfîƒnFãfB„9ãfÄ…œ Ö äfoŒ äf™wb î güXrg"b î g@`œ Ö g@†œ Ö g"r2glb î 2gÀÁD 2g ÈD 2g@ÎD 4gu†[g 2˜ \gÏö È yit!I®‰m KSR ‰mÖM ‘m }ö È ¼pœSR )qÌ`ö È ,qÖ¯8¨,q²8¨,q}²8¨Iq b î Lq0 SR LqÖKSR Nq„!¶ Nqø€  Tqn	’  Tq8"ƒÂXq+K˜ [q`"D [qs"˜ \qíq˜ \q°rˆ” _qt:ƒÂ¬q
z{ Ì ïq>5{ Ì ïq?5{ Ì üqKqƒÂsr,_ ÎtrœSR sŽrb î s/Sb î „sø8Ã¦ „s2gÃ¦ „s‰‹Ã¦ ‡s sƒÂŒs°rö È Œs sö È ¬s¸’SR       ¿s  † b Às  † b tàL¶ t X¶ t }¶ t X¶ !t8Xb î &t#¶ )t  ­”+tz¶ +t„!¶ +t8FÅ j .t)	¶ /tÖ2¶ 0t  Å j ñvâGSR ôvƒ…SR úvb	SR üv•SR üvœSR þv  b î þv@ö È þv""€¦þv;"ƒÂþvH"ƒÂþvg'  þv™w  þvÐÀƒÂDwg'D ‹wt!w
‹w 5pì‹wÖKpì‹w8Xpì‹wDfpì‹w‰‹b î wuLb î ”w  D –w?pìšw‘‘Pœw€Q2 < /x€W’  /xÐWSR 5x/…b î 6x¢SR BxD Bx˜&D Bx„:D ¢x0MD ­x 
b î ­x D ­xœgö È y€WSR *yfƒÂ-yýpD ‘yb î ‘yg'SR ‘yø8SR “y¤pì“y † b “y&pì“y,Œ¶ “yÎb î “yb î “yt!pì      “y†!pì“y#b î “y"&b î “yg'pì“yn'b î “y42pì“y¡Eœ Ö “yœSpì“yµWb î “y2gb î “yþv† b “yšw‘P“y–ypì“yZŠb î –yÖK† b –y2g† b –y±† b ÌyKŠö È áyxD áy²ö È áy6FD ãyÚKD ëy¬  ëy { Ì ëyò† b ëy""{ Ì ëy@`{ Ì ïyäƒÂïy qö È òy,}b î òy“b î óyU<ö È ôy¡ò÷y”`ö È ÿy    
zòb î 
z£n
z„!r
z?† b 
zµWSR zžwb î [zœ5ö È [z·5ö È az€}’  kzµWœ Ö µzÝfb î µz‰‹ò  »z""b î »zµWSR *}ÈKƒÂ4}÷Nb î ¥}8w† b Õ}?fb î Ú}beÞ ˆÛ}€b î ~"ƒÂF~L  Æ~† b Æ~ÖK† b Îö È \}{ Ì ‰‹b î \(
ö È cp!† b       h<ƒÂh <ƒÂh²Z{ Ì hØ™»< hÞ™ö È j€%Ã¦ lòyƒÂn€%†Ñ x† b Ù d† b Ý&pìÞ@yb î à K† b à®sö È à±† b €H£ƒÂ€ s¥€ 9€à8ö È 9€\zb î §€  † b zƒ@~’  ƒ…³D ƒ…3}D Ä…Dfré…ÖM 9†<,{ Ì 9†Š,SR =†òb î =†.pì=†g'pì=†@`· üH†"b î J†Xzö È J†\zb î i†(KSR i†ØOw
i† P  i†PP  i†xP{ Ì º‰ø€  Õ‰ýMpìÜ‰u:pìà‰	pìŠ }SR ,Š  SR ZŠp2 < ZŠ¿pìZŠÖKö È ZŠ&yö È ‰‹ð
pì‰‹ 9{ Ì ‰‹lepìŒ8¯–Œ { Ì Œ N! >Œ,\ žŒøMÞ ˆŒØ_~ ðŒ¢`© ê Œ%!Þ ˆŒH;¯–Œ°;{ Ì ŒýM²úŒ|—´æ      Œï`! >	Œ€%²ú	ŒˆZØ ª Œ0aD Œ4…{ Ì Œå`´æŒÖdÞ ˆŒ"$ vŒlÞ ˆŒê"Þ ˆŒ8^SR Œ`"µÌŒp<D Œq<D Œ q¶ ŒhºÔ Œ×›VŒÞºÔ ŒäÞ ˆŒƒ{ Ì ŒkYÞ ˆŒŒZ§^ ŒˆwÞ ˆŒÖ2¶ Œ sÞ ˆcŒ¿Yb î «ŽàQp ¸¬Ž`	p ¸÷ˆwD øÐD   D  dD   D  dD 	  D 	 dD ±²b î ±ãL»
± Nb î ±„f»
³0 b î ³ÐMÀz³´db î ³ègb î ³à~ö È ´ Nb î ´ÀXb î ´ sb î µ`Tb î µ Zb î ¶à8b î ¶(dSR ¶ sb î ¹ b î ¹€%b î ¹ðKb î ¹VXÀz¹‘ZÀz¼8»
¼{:b î ¼ Nb î ¿Öd»
Àà8b î À Zb î       À sb î À €b î ÂÝ»
Â	»
Âàeb î Âà’b î Ã q»
ÃpqpìÃiwpìÃ¸~pìÃ €b î Ã¢ƒb î Ä Nb î Ä@`Ã  Ä spìÇ-q»
Ç‰s»
Ï,qb î Ðìö È ‘&pì«‘_`Ã¦ «‘``Ã¦ «‘àÃ¦ *’ÀDSR *’	FƒÂ*’˜I{ Ì •’ ZSR ›’BxÀz¤’äf  ã’´dré’Ì`ö È ô’øqÃ¦ *–øfb î ’˜""† b ’˜vL† b ’˜ø€† b _¥g'D _¥®sœ Ö ©Ô#æ ©[b î ©8Y#æ C©Kq*jE©ãf­”F©.#æ K©Ëb î d©vb î d©y:#æ ´©ö&*j´©$T*jÃ©ö&*jë©¬:b î ë©¢Zb î ï© qÅ j ªx­”ª€MÓ Äª¯y­”cª }#æ ÌªµWb î ÌªˆYb î Ìª]b î ÞªÀ…L«½@˜tC«|SLD«y:pì      D«=†b î H«q{š¬H«r{«8H«˜{: H«À{SR H«|pìH«9|I®H«:|P¤H«;|[ð H«<|ad H«=|eÎ H«>|gH«`|~ H«ˆ|˜tH«hÎ;¤ H«Î@lO«|SLR«ÿb î R«""b î S«U<b î S«µWb î S«ÕZb î T«»< U«|SLV« L•«ð#æ •«µW8¨§«zš¬½«¼b î ½«ÿ-b î ¿«þvb î Á«XLÇ«¿s´ z Ê«øÌ«$	b î Í«b î Í«b î Ñ«€W#æ å«spìö«Nö È 9¬–b î @¬»pì@¬äpì@¬4pì@¬ôpì@¬³pì@¬%pì@¬Ôpì@¬{pì@¬~pì@¬3!pì@¬	#pì@¬,.pì@¬09pì@¬ƒ:pì@¬”Tpì@¬ìYpì@¬E`pì@¬Údpì@¬Iqpì@¬_qpì@¬œwpì@¬“ypì@¬çypì      @¬ïypì@¬ðypì@¬òypì@¬
zpì@¬|…pì@¬ƒ…pì@¬=†pì@¬‘pì@¬¤’pì$­h· ü$­…· ü)­}ZØ ª )­5aÞ ˆ,­ý¬ 0­…D 5­}Z§^ 6­5f´æ´­°ùD ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÇÀ+   gØh  g i! >g(i$ vgPi' î40 	Ø^2 < #	pžO xÀ+Y – V }Z ž ô K\ žp:_ Îà`a ŒF@b î Ö p ¸%¦S{ Ì % d~ ð(@† b ($’  (@$œ Ö *€p© ê D¯ Ô •€%± * Ç s´ z Sð_¶ ¯ d· üì]» ¬„!¼ " j/ Å j Ô2 dÓ Äƒ: dØ ª ®:€Þ ˆÖK }ò  vLÀDö È ôLþ f ;Mÿ r3NÀ¬ µW –b^xQÜ l^dæ ó`
îó`êYú 6a K†¯d dè ³d€pD µdˆw7$ e€%9SeÀÁ: Se ÈSR Se€ÔpìSe á~ Se@ç˜t^e@š¬^e€«8`e@L`e€#æ `eÀ*j`e 8¨ae@;¤ ae€@lce@I®ce€P¤ceÀ[ð ce ad       ce@eÎ ce€%gkeÞhÎ Dflr ¬f€WnFäfoŒ gt~r4gu†Îl  w
m€% þv""€¦‰w q¶ *y€ƒÂ*y€ˆ” “y,Œ¶ “y 2ø“yšw‘Páyx˜ òyÀ+›Vôy¡ò
z£n€ s¥€ ƒ… }§^ e†Àv­”Œ ¯–	Œ€%²úŒ@´æŒ`"µÌŒ }ºÔ ²ÀD»< ²Àv»
¼À]ÀzÄÀ]Ã  «‘ }Ã¦ «‘wÉJ «‘xÖèÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ            N   ÂÐÀ*  ÇÀ+    ÂÐÀ   ¯”L  	 –@  Q(@  *  |3g'@  I: –@  lMg'@  Œs°r@  þv@@  *  “y42@  Ä s@  «‘à@      (  ÇÀ+,`   ÇÀ+h ¯”   
   ÇÀ+  *            ‰
  _ _Z _	  ‰     À  (  “y42 Z Q( Ä s" $  (  "  & 
  
  œ   œ
   
  
  _	&  I: –
	 –I: –	 –|3g'lMg'   D       X \ 
‰      ‰  «‘à 
  X \        žN   ÂXÀ*  gØh    ÂXÀ   ¯”L   d@  ¼ d@  *  j/Ž@  ÚdÆ*@  ÚdÆ‰@  ÖfñÒ@        äf™w@  *  Œs°r@  þv@@  ‹w 5@  ‹wDf@  øÐ@  *  À s@  E©ãf@      (  gØh,è05h  *  ?  h @  h dh¼F }h &2gh *  ÌÀDh Ì@Gh „!ø€h  R(yŸh „:Yqh *  ®S0fhn¶^Àvh Údº‰hÜHf  h\ ÖfðÒhà*  Nqø€h þvg'hÔþv™whÖëy¬hØÿy  h *  F~Lh i† Ph@i†PPh\º‰ø€h
 ¤’äfh¢
  ¯”   
   gØh  *                                            *  &                                         L                          <    $   $ 0   <   <          R   R  r   \ *  \ &fÁ  ß 81Š ±   _<ße <_	@  
øÐ8<$<(@*  ‚ ì _	ö ñ> _	  _	\}œ _	\hÀ ñÕ $  ì ö >j/Ž\œ  \$À (  ¨  _	@ð _	ö ñ> _	  ß<Ê 
‰   (  @
ð ö >j/Ž< Ê $‹wDf *  Ì :ñ   &
ÎŸðÿŸe8ñ—8  Õ€… Eû@‰  :‹w 588*  ò 0"ûŸ 6Ÿ Ÿ 0ß<_	    6     60<"E©ãf&6*  &
ÎŸøÿŸc8Ÿc<Ÿe<R‰6  >…          8<<6>*  >  ò¥  ò¥  B‰Õ… E… B‰       _	*  d  Õ… E… |œ  ž‰    ž Ÿ
  ÿ  *  j/Ž|žÀ sž  $äf™w(äf™w*  Š  ße   ÿ•   Ÿ
  …     œ  ¸°‰  (   d
 d¼ d¼ d ¸$°(À s*  °  ¸º…     ÿÖ  ße   ÿ—Ô  Ÿ
  …   *  ¸ºÖ d dÔ ¼ d$¼ d  Ö  ‰ _   _	  _     ÚdÆ‰ÚdÆ*ÖfñÒ       8N   Â€À*  g i    Â€À   ¯”L  4@  d@  *   d@  ¼ d@  ¯ˆw@  Y  @  Y d@  *  j/Ž@  ®S0f@  E`€W@  ÍdÀD@  Hf  @  *  hf  @  äf™w@  2gÀÁ@  2g È@  [g 2@        *  Xq+K@  [qs"@  \qíq@  Œs°r@  þv@@  *  þvg'@  þv™w@  “y†!@  “yg'@  i†PP@  *  Ü‰u:@  øÐ@   d@   d@  ¤’äf@  *      (  g i,Œ Nh, Œï`h¶ ¯”   
   g i  *    B‰ _	  … Ÿ
  ß    ðÕ  ß   _	  &  j/Žäf™wäf™wþv™w$þvg'(¤’äf   & _	  … ‰Ÿ
  ß    _	  ¬ ß  *  d4 døÐHf  ¬ øÐ"  B   _	  Ô¦ _	  ‹_	  Ôß    _	&  2gÀÁi†PP¦      døÐ$  `   ¬ ß    $‰ÿ8   ße   ÿ•    Ÿ
*  Hf  ¬ 
øÐ2g È d d ¼ d         €   À  _	 À  _	  &‰ß    _	*  ¼ d2gÀÁ 2g È®S0f døÐ*  œ   ¢ ÎÕ‰@‰Ù!‰@‰Ø!‰    ‰_	    Hf  ¢ "E`€W$&("  Â 
² _	  Ôß    
´ _	  ð _	  *  ² 
  Y døÐ´ Hf  ð  [g 2*  à   Ÿ
² _ ô Ÿ
´ B‰ Uò¥      Y  
² ô ´ *  	ß² uòµ  Àß´ ×_ úP‰D‰  
² ´ $ú*  ,Ì,‰
+ß5    ‰m ×'²  \‚$‰ÿ4   ße  
“y†!“yg'² & d(  R   ÿ•    Ÿ
  ß² ÿ    ße   ÿ• *   d¼ d¼ d      ² Ü‰u: d" d*  v  Ÿ
  À  _	  &‰>ß² 5À  ¬  $  ¼ d¼ døÐ®S0f²  øÐ*  œ¬  3ð‹ @‰É+$‰ÿ5   ße   ÿ•     d$ d"  Â  Ÿ
  >‰ÿ²   ?Š  ße   Ÿ
  ß
*  ¼ d¼ d²  d¼ d d¼ d*  à² 	_	  ²   _	  ô&‰@‰!@‰Ÿ!$  ² 
\qíq² Y  ®S0f  Õ@‰È!_	  ‰    ¯ˆw       xN   Â Á*  g(i    Â Á   ¯”L  &˜@  05@  *  ?  @  @  @  À+@  d@  ü&@  *   d@  ¼ d@  ¯ˆw@  &2g      @  (@  *  Y d@  „!ø€@  ,.À]@  ®S0f@  E`€W@  *  ÍdÀD@  Údº‰@  Hf  @  hf  @  äf™w@  *  2gÀÁ@  2g È@  [g 2@  Xq+K@  [qs"@  *  \qíq@  Œs°r@  þv@@  þvg'@  þv™w@  *  ëy¬@  F~L@  i†PP@  Ü‰u:@  øÐ@  *   d@   d@  ¤’äf@      (  g(i,æ  ÚdÆ*hŒ"hJ ¯”   
   g(i  *    Ÿ
  ðÕ  _	  … Ÿ
  ðÕ
  _	  ß    ß•&  äf™w¤’äfäf™w ¤’äf$äf™w&þv™w'  &    _	  ß    ß    _	  … 
     1*  þvg'
dþvg'Ü‰u:þv™wd J   J ‰
  ß    _	        Ì ß    _	*  F~L døÐHf  Ì øÐ2gÀÁ  d   ¨€ ß    _	  Ì ß  (  i†PP€  døÐHf  Ì øÐ"  z   Ÿ
  B‰8ß    ,‰ :‰Ú (‰  (  2g ÈF~LY døÐ Ú  „!ø€*  ˜ Ö À  ,  F‰Óà À  ¬  ¬    Ö øÐà øÐ*  ¾ ð‹ _	ª@‰Õ!Õ‰@‰Ö_	ù@‰×
  ª"*  ä _	ªô‰9 @‰!!ðF‰«†ß    H‰ ß    ª†2gÀÁøÐ&F~L  
ß    H‰ _	    _	    
&  2g ÈøÐ&˜05ü&05  "  _	    î   
  
  _	*  &2g      (
&2gî &2g?  @    :          _	    ß&  À+&2g?  
@  ü&@    L    ß    L‰   ß  	ß&   d2gÀÁ
2gÀÁøÐëy¬F~L  d    ß    L‰   _	_	  *   d2g È
2g ÈøÐëy¬,.À]*  |  _	    ¦F‰°Ú _   $‰ÿ  ße   ÿ•  *  05ü&
?  Ú Údº‰ d$ d&  ¢  Ÿ
  $‰ÿ6   ße   ÿ•    Ÿ
  À&  ¼ d¼ d d d¼ d"¼ d&  Ä  >‰À  _	  _	  ß  À  _	 &‰… (  øÐ
2gÀÁ®S0f  F~L2g È         "N   ÂÇ      *  gPi    ÂÇ   ¯”L  &˜@  05@  *  ?  @  @  @  À+@  ü&@   d@  *  F }@  ¼ d@  Dw@  ¯ˆw@  &2g@  *  &(È@  &ðÈ@  &0Ï@  (@  ÌÀD@  *  Ì@G@  Y  @  Y d@  „!ø€@  R(yŸ@  *  œ,äf@  ,.À]@  „:Yq@  ¶^Àv@  E`€W@  *  ÍdÀD@  hf  @  ÖfðÒ@  2gÀÁ@  2g È@  *  [g 2@  Nqø€@  Xq+K@  [qs"@  \qíq@  *  Œs°r@  þv@@  Dwg'@  ëy¬@  ÿy  @  *  F~L@  º‰ø€@  øÐ@    @   d@  *    @   d@      (  gPi,öÚdÆ‰h   ÖfñÒh
¯”   
         gPi  *            F  F  F QN 
  ß    _	   F }$ÌÀD&Ì@G  &       _	  
    _	*  E`€W  
ëy¬E`€W
  ëy¬  :       _	      _	*  E`€W  
ëy¬E`€W  ëy¬  N       _	      *  E`€W  
ëy¬[g 2      `   ß  _	        _	(  ëy¬F~L[g 2    ëy¬  v     æ  ß    _	    _	*  &˜05
0505  ,.À]05  Œ     æ  ß   
  
  _	*  &˜05
0505 „:Yqº‰ø€  ¤ 6  ¶ ž      ž@‰!_ Àß  Â _	&  6  ¶ 
žžÀøÐÂ   ¾   
      F‰c°_	6  ä (  [g 2
 
 ëy¬°6  ä   Ö Ú ª_	Øä ¤¤ß  ð _	  *  Ú ª
Øä ¤¤øÐð [g 2   î       F‰Ã°_	6  ª_	*    
ëy¬°6  ª$  
Ø¤¤ß%   Hß  ß  Hß  *  Ø¤
¤Nqø€º‰ø€„:Yq"øÐ   *2_	        F‰«°_	    
*  2[g 2
  ëy¬°ü&05  F  _	    ¼  
  
  _	*  &2g(
&2g¼&2g?        @    ^          ß    ß&  À+&2g?  
@  05ÿy    p   ß    _	   &  ?  ÿy   
@  05[g 2 *  €     Ÿ
  F‰?Î×'   @‰@‰!@‰"  ÿy   ëy¬F }ÎF }*  ¦"!@‰!@‰ !@‰$!@‰!!_	ÖÖ‰Õ     Ì‰_	    ß  	ß    _	   *  ü&
05F~L d2g Èhf     æ     ß    _	   (     ëy¬ d2gÀÁhf     ø     _	
  Ã  _	  (     ëy¬¶^ÀvF }hf          _	b   ß  *   Y         
ëy¬bY   Nqø€  "  _	  
       _	b(  R(yŸ\qíq

 ¶^Àv  ëy¬b  4  š_	V*À_	     (    š
V*Àhf   ÿy    H   _	    Ã
)_	   _	&   ëy¬
,.À]ÿy  ü&ÿy     ^         _	b  (  \qíq ¶^Àv
Y  ëy¬bY    n ß    _	  
     (   Nqø€
R(yŸ\qíq
 ¶^Àv  *  €  _	b   _	V
ÀŸ
  ¹¸@‰!@‰!_ (  ëy¬b
   V
À¶^Àv  ¦ÀŸ Ÿ  _	    Ã  _	   (  À   ü&  F       }hf     À     _	b   ß  &  Y   ëy¬bY   Nqø€  Ò  _	  
      _	b&  R(yŸhf  

    ëy¬b  ä   _	V
ÀÜ~_	   _	  (     
V
À,.À] ü&  ü _	_ Ê_   … _	     _	(  ÿy   ÊÖfðÒ¯ˆw ëy¬    
   _	     _	  (  ¯ˆw
 ëy¬¯ˆw ëy¬¯ˆw(  (   _	     … ‰@  ,‰\¬  ß&   ëy¬
¯ˆw ëy¬øÐ\*  L  T_	b  \ÕÕE‰&@ß   ¬    øÐT
b\"Nqø€*  r      ß   )¬  Ÿ
  ð‹  !ß   ð‹  
Nqø€º‰ø€&Nqø€*  ˜ Ÿ
  ¬  ß   ¬  ß     
„:YqNqø€(Nqø€*  ¾¬  ß   ÕE€… ‰ß   ß    Nqø€$Nqø€(Y d*  ä  :‰À  ¬  ð‹ Ÿ
  ÕÕE‰  øÐY d„:Yq#  
    ÿÿÿÿÿÿÿÿÿÿÿÿ	   *  *    ÿÿÿÿÿÿÿÿÿÿ    D"  DŒªÄÞ"*6  ‰@ð   (  ŒªÄ
Þ"*6R(yŸ*  bpTÿ  æÿ8‰  €€À
Àx	D@‰!E‰  pTNqø€€D*  ˆÕ‰_	ß        _	|Á _	|Ä _	¤… _	  
Dwg'||"¤(*  ®ß  _	|Á _	|Ä … _	ß  _	|Î   Dwg'|| Dwg'&|*  Ô_	|Ñ … _	ß  _	|Á _	|Ä … _	  |Dwg'|"|*  ú| … _	| … ‰Â  Ã  _	  ‰  _	>ë    ||Y    Dw&>*   … _	>ñ … _	>ë _	¤… _	>ë … ‰_À  >>¤>&&  F  ¬    (‰  zß%ñ _	  &  Y døÐ  z"&(È$  h    _	        ‰‰_*  Y    &0ÏY      "  €      À  ¬    (‰  ¢_	  &  Y døÐ„!ø€¢&ðÈ $  ž    ‰‰$‰ÿN   ße   ?Š  Ÿ
  À&  Y     d d¼ d ¼ d*  ¾  >‰Ã  ó• ÿÿ " _	  òÀe2 ?  ße   $   d
¼ dœ,äfò" d( d  äÿ•    Ÿ
  &‰‰‰
  ¼ d¼ d       ,N   Â¨À*  4    Â¨À   ¯”L  4@  @  *  Sð_@  ²2CM@  vL@@  {L€@  ¯dg@  *  Œs°r@  þv@@  [zœ5@  [z·5@  ± N@  "      (  4,´4h  ¯”   
   4  *    _	  ‰ß  Cß7    _ ’ ß5         _ ’ 
(  4{L€[zœ5’  [z·5&’   &   ßœ   ß  
 ‰*  vL@œ 
²2CM± N ± N ± N $  :   Š     ß> J 
‰  ” š ßÐ È ß@ (  ± NŠ > J ” š Ð È "@ "  Z Æ _	  f¦È Ê ‰Ð Ê ß  Ð ß (  Æ Sð_
f¦È Ê Ð Ê Ð    x Ê ‰Ð Ê ße  _ 8 
  
  ‰*  Ê Ð 
Ê ± N 8 ²2CMvL@ š %  š        DUMP OF ALT WORK FILE  
     ¼   ¼                        f  f
PROCEDURE NUMBER =     |)  |
 ALT NUMBER = 
 LINE NU      MBER =     ¢  ¢ÿÿ  ”   –   ˜ ÿÿ  
” – ˜        <;N   Â Í*  	Ø^    Â Í   ¯”L  &˜@  ;	`@  *  E	 @  d@  ü&@  @8@   d@  *   }@  ¼ d@  @  Dw@  p‹@  *  ¯ˆw@  &ðÈ@  *´r@  *¹s@  D|L@  *  H i@  Œ¯@  „!Àv@  „!Ðz@  Q(@  *  U(@  ,.À]@  Y/€p@  €QË@  €Q„:@  *  ÕZ g@  T[²Z@  E`€W@  R`ÕZ@  R`Àv@  *  R`Ðz@  R`<Â@  R`DÂ@  R`pÂ@  R`–Â@  *  R`¼Â@  R`8Ã@  R`LÄ@  R`TÄ@  R`ºÄ@  *  R`ÈÄ@  R`Å@  R`˜Å@  R`|È@  R`      „È@  *  R`°È@  R`ÖÈ@  R`üÈ@  R`xÉ@  R`ŒÊ@  *  R`”Ê@  R`úÊ@  R`Ë@  R`[Ë@  R`ØË@  *  R`¼Î@  R`ÄÎ@  R`ðÎ@  R`Ï@  R`<Ï@  *  R`¸Ï@  R`ÌÐ@  R`ÔÐ@  R`:Ñ@  R`HÑ@  *  R`›Ñ@  R`Ò@  <ag@  Ófg'@  [g 2@  *  Xq+K@  \qíq@  Œs°r@  þv@@  Dwg'@  *  Bx@  Bx˜&@  Bx„:@  ëy @  ëy""@  *  ëy@`@  \}@  h²Z@  9†<,@  ZŠpH *  ZŠ¿@  Œ @  Œp<@  Œq<@  Œƒ@  *  øÐ@    @   d@    @   d@  *  	  @  	 d@      (  	Ø^,b	Ø^h2*  ‹€h	hR
{Q      hŠ œw€QhÜ¯”   
   	Ø^  %                                " *  " ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ *  H ö ÷ ø ù ú û ü ý þ ÿ  *  n 	
Áy  œ   $ &œ ("  ” 4°Têß¥   H_	’4_	d4_	(  4°T
êR`›Ñ’4d4*  ² ´ßµ    <ßµ    8ßµ    4_	¸4ß•  $  ´
R`¼ÂR`üÈR`<Ï ¸"4( *  Ø ß¥    ßµ   ß@  ßF  ßµ   $  E	 R`<Ï@  F   (R`<Ï*  þ ß"  ß(  _	Ü_	(‡ ß¥          ßT $  " 
 (  Ü("E	 (T *  $ ß6  _	(‡ ß¥    ßL  ß.  (   
6  (E	 L   &. ( *  J_	Ü_	(‡ ß¥   ß¥   ßµ   _	ø   Ü
(R`|ÈR`|È"R`<Ï(ø*  p ß¥    ß\  ß>  _	$‡ _	$ ß¥   
E	 \  >  $$$*  –    ßX  ß:  _	(‡ ß¥   ¾_	’&  E	 X  :  ("R`›Ñ(’*  ¼ßµ    ©ßµ    ¥ß¥    ßR  ß4 $  
R`¼ÂR`üÈE	  R " (4 *  â _	(‡ ß¥   ß¥   _	’Tß¥   $   (      R`›ÑR`›Ñ’ T&R`|È*  ß¥   ßµ   _	ø ß¥    ßZ     R`|ÈR`<ÏøE	 $Z & *  .ß<  _	$_	$ ß¥    ßV  ß8 $  <  $$E	  V " (8 &  T _	(‡ Áy bjæ"ß¥   H_	`(   (bjæ"R`›Ñ$`*  v_	d_	´ßµ    <ßµ    8ßµ    4_	$  d
´R`¼ÂR`üÈ$R`<Ï*  œ¸ß•  ß¥   ßµ   ßt  ßz &  ¸ E	 R`<Ï t " (z *  Â ßµ   ß^  ßd  _	Ü_	(‡ ß¥$   R`<Ï^  d   Ü$      (*  è   ßˆ  ßr  _	(‡ ß¥   ß€ &  E	 ˆ  r  ("E	 (€ *   ßj  _	Ü_	(‡ ß¥   ì_	`æßµ  $   
j  Ü(R`›Ñ"`$æ*  4  ×ßµ    Óßµ    Ïß¥   ß†  ß"  R`¼ÂR`üÈR`<ÏE	 "† $ *  Zp  _	(‡ À      À Ã À`Á    p  
( d" ( d*  €A W  Á Á`	¢Á  A W  Á   	 d*  ¦Á`H¢Õ… E… ß¥   ßµ   ßµ     E	 R`<Ï&R`¼Â$  Ìßµ   ßÕ   … 
  
  ß—    ß§&  R`üÈR`<Ï€Q„:€QË      R`8Ã €Q„:  ì    ß—    ß§    ß—&  R`xÉ€Q„:R`xÉ€Q„:R`¸Ï€Q„:      ß—    ß§    ß—&  R`¸Ï€Q„:
R`pÂ€QËR`°È€QË      ß§    ß—    ß&  R`°È€QË
R`ðÎ€QËR`ðÎ€QË*  *    ßg    Â Ÿ   @‰ù Ÿ  Ÿ   Ÿ  *  €Q„:  
€QË      "€QË(€QË(  P
  Âç  Ÿ  ‡ ß¥   	Á—  Â—  BàŸ &  €Q„:€QË€Q„:E	 R`pÂ"R`°È*  t  Á—  Â—  B`Ÿ   Õ… E… ‰À  Á   R`ðÎR`pÂR`°ÈR`ðÎ& d*  š  1¬  Á  1¬  Õ‰E‰ßµ@   
   d      	 d&R`¼Â*  Àßµ@   ßµ@   Õ… E… ‰ßµ   _	    R`üÈR`<Ï"R`¼Â(Xq+K   æ         
ß¥   À    ß&  „!ÀvR`”Ê  
ëy""R`[Ë d      Â  Ä  _	tp_	  (   døÐ
 dR`ÈÄtp\qíq          ßµ   "ß  _	&  „!ÀvR`”Ê  
ëy""R`üÈR`ÖÈ  0           
ß¥   À&  Xq+K„!ÀvR`TÄ
  ëy""R`Å   F    ß    Â  Ä  _	tp_	(   d døÐ dR`Ëtp*  b          Õ‰E‰&ƒÀ  
~ò•  ßµ&  \qíq„!ÀvR`TÄ
        ëy""„!Ðz*  ˆ   À  Àe  À¼Àe02’ €2 Ÿ  E	 9†<,\}¼0*  ®´_	    ôÃ  ô8   ôœ 	 ôœ  ôœ    ´D|LôøÐ*  Ô  	 @à4
 óµ  ôÕ  Õ… E… _  ú"Â  Ã  _	¤ Â  Ã  _	&  "R`ÈÄR`Ë¤  d d*    ß  _	ê…   ‰_"Â  Ã  _	¤PÂ*  p‹<agê"R`ÈÄ R`Ë$¤&P$  :  Ã  _	  ß  _	êÂ  Ã  _	*   d dp‹<agêR`ÈÄ R`HÑ   Z¤tÂ  Ã  _	  ß  _	êÂ&  ¤t
 d	 dp‹<ag      ê  v  Ã  _	¤èÂ  Ã  _	  ß(  R`ËR`HÑ¤è d	 dp‹    *Á  À  _	@_	      *  <ag
 dR`Ë@Xq+KR`ÀvR`”Ê  ¨    _	        &  R`HÑëy""
Xq+K„!ÀvR`”Ê	    ¶  _	          _	&  ëy""\qíq
R`ÀvR`”ÊR`Ëëy""  Æ          _	  &  \qíq„!ÀvR`”Ê
  ëy""\qíq  Ô        _	    &  R`Àvh²ZR`HÑ
ëy""\qíq„!Àv  â      ‰Á  À  _	@_	  *  h²Z	  ëy"" dR`ÈÄ@Xq+K  ú        _	    &  R`ÀvR`TÄR`HÑ
      ëy""Xq+K„!Àv        _	      &  R`TÄ	  ëy""\qíqR`ÀvR`TÄ      _	        &  R`ÈÄëy""
\qíq„!ÀvR`TÄ    $  _	          _	&  ëy""\qíq
R`Àvh²ZR`HÑëy""  4          … _	  &  \qíq„!Àvh²Z
	  ëy""[g 2  D        _	    &  R`ÀvR`HÑÕZ g
ëy""[g 2„!Àv  R      Ÿ
  Ÿ
  Ÿ
  æ&  	  ÕZ gëy""R`TÄR`”ÊR`ÔÐ*  f  æ  œ  œ
   œ	   _	t


 
 _*  €Q„:€QË €Q„:€QËt
"
 & *  Œ–_	Z
      Ÿ  Ÿ  … òµ        óµ  $  –Z

  	 d€QË€Q„:*  ²òµ   óµ   
ò§" ó§" Õ… 
  " "(  ØE… ß   ßµ   ß§   ß—   ß§  *  
   E	 R`LÄ  R`LÄ" &R`ŒÊ*  ü ß—   À ß%
  ß
  Àg ’_` $   
R`ŒÊ    " ( *  "… 
Ã _	Ô_	  À  Á  Ð Ñ• Â  "  Ô@8 d¼ d  (R`ÈÄ&  H_	nÂ  _	nÃÂ  _	n  _  _	&  n
R`ËnR`HÑn d"¼ d*  j  …   òµ  òµ  òµ   ß¥     }( *  Ñ• Ñ• ß¥        Ñ• Ñ• ß¥    *  ¶ Ñ•
 	Ñ•	 Ñ•! Ñ•"  … &ßµ       (R`¼Â*  ÜÀ  _	  èßµ    À  _	  úÃ	ßµ  (   dH ièR`üÈ dH i ú*  	  À  _	  	€… ‰

 
 
 
 
(  R`<Ï
	 dH i	
  " & $  (	 ßµ   [ß  XA_¤	A_	      (   
R`üÈBx˜&¤	Xq+K „!Àv"R`”Ê*  H	    À  œ  _œ  ñ‹ _œ  ßç  (    ëy""
 d  " & ( *  n	œ  À Àg   Ÿ
 _	       
*      d  " $ & d$        ”	_	ÔŸ

 _	Z
      Ÿ
 

 _	  *  Ô

 Z
   d 
 "\qíq  ´	        
_	Ô_	Z
  *  „!ÀvR`”Ê  
ëy""ÔZ
    Ê	    À    _	  _	    &   d d
 dU(\qíq„!Àv(  à	      ßµ   Ÿ

 ß‹  Ÿ
 
_	(  R`TÄ  ëy""R`üÈ
 Bx˜&"   
Ô_
_	Z
      ‰_	    (  Ô
Z
   dXq+KR`Àv  
      _	      &  R`”ÊR`HÑëy""Xq+K„!ÀvR`”Ê"  ,
    ßµ   À  _	  ßµ   À&  	  ëy""R`¼ÂR`ºÄU(R`      üÈ*  J
  _	  ‡ ß‹  	ßµ   ßµ   .B`Ÿ’ $  R`úÊU(Bx˜&R`<ÏR`<Ï(   p
ß	È
_	         ß— &  È

d €Q„:€QË	 d &  „
  À     8   ßÕ   ßÅ   ßÅ &  R`›Ñ	 dR`:ÑR`ÏR`<Ï R`<Ï   ¦
  ßÅ    œ   ß—    ß—    ß—*  R`<Ï
R`<ÏR`ÄÎ  R`ÌÐ€QËR`ðÎ*  Â
    … ß‹  ß¥   ß¥   Ÿ
  Ÿ
  ‡ (  €Q„:R`¸ÏBx˜&R`›Ñ  "€Q„:&  $  è
ß  _	  _	  ß  Ÿ
ßU *  Bx˜&&˜BxZŠ¿*    _	  _	  ‡                þ  Ófg',.À]
ü&*  .þþþþþ*  Tþþþÿÿÿ    þ*  zþþþþþ*   þþþþÿÿÿ    *  Æþþþ	þþþ*  ìþþþþÿÿÿ*      þþþþþþ*  8þþþþ




þþþþ*  ^þÿÿÿ  ¿ À   Á   Â Ã   Ä   Å Æ   Ç   )  „È É   Ê   ¼ ½   ¾     ª  ª  Î Á Á Ñ Ä Ä Ô Ç Ç       × Ê    N*  NÂ          ‰_P_RBCÁ€W¬  G  ÂPR*  tßP/œ Tœ XßçXT_œ Vœ X_	  PTXXT V&X  š  XTVNŸ°_	ZPR  (  dXT
VN°ZPR*  ²N_Æß	 X_	  XÂ  ÄÆ  _	  _ .*  NÆX&ðÈXÂÆ$U((.*  ØßRß	 Xßâ Xú_ü_	  X       RXXúü"&ðÈ$X*  þ_ .ßPœ À_œ Â8‰ÀŸXx€œ   .
PÀÂÀ"X*  $–ÄxXmtßRœ _œ 8‰        –xXR$(*  JŸX_€œ –Ä‚XT[¦æC_	  X–‚X*  p  ƒ‚ß  œ n_œ p8‰nŸX>€œ"  DwDwg'npn $X*  – –ÄnX3:ðµ  $ñµ   œ   –nX*  ¼_œ 8‰ŸX 1,  ñµ    
X*  âðµ   ŒXœ –ÄdX  ŒX –&d(X*  ‰ ÄXÄªX*_,_	  X       XªX*,"&ðÈ$X*  .‰j®”(<ÊP¤V<    *  
j®”(      <ÊP¤V<*  T*  z       ÿÿÿ   ¼*  ¼      *  â *       .ÿÿÿ   2  2_	  ‰ß
  ß—    ß
  ß—  &  R`ÕZR`ÕZR`TÄR`ÕZR`ÕZ&  J  
H
J
¾
À
  ß  _	  _	(  R`”ÊHJ¾À  Bx˜&"Bx„:  l          _	  &  \qíqR`ÀvR`TÄ
R`ÈÄëy""      \qíq  z        _	    &  R`ÀvR`”ÊR`Ë
ëy""\qíq„!Àv  ˆ      _	      &  R`TÄ  ëy""\qíq„!ÀvR`”Ê  –    ßµ   ß—  Hß—  J8‰(    ëy""E	 R`ÅHR`[ËJ  °H.Ÿ  ß  '_   ß—  ¾ß—&  H.
9†<,*¹s;	`R`Å¾  Ê  À8‰¾.Ÿ¼ß    ßg  (  R`[ËÀ
¾.¼€QË  €Q„:*  â  Â Ÿ   Ÿ  @‰ù Ÿ   Ÿ  
  Âç  &        €QË €QË$€Q„:(€QË*  Ÿ  ß•   ßÅ   Á—  Áßµ   y 4y >&  €Q„: R`<ÏR`|ÈE	 $4(>*        .@‰Ì!_ ^ß  ß‹  _	  _	  _	  Õ‰ß
$  
^Œ¯Bx˜&Œq<Q("ëy &  T  ß
  _ j_	  _	  E‰_	Ø^ß	ÜÁ*  R`TÄR`”ÊjQ(ëy Ø^"Ü&  v  Â  ß%   Ÿ
  Ÿ
  _	j
æ—  ß•  &  9†<,\}  €Q„:  j
 E	 $  ˜  Á  ß	Š Ÿ•  ß	
_ 6ß%   ß&  E	 9†<,Š E	 
6Œ¯  ¸    ß
  _	      &  R`”ÊR`ÔÐ
R`ÔÐ\qíqR`ÀvR`ÔÐ  È    _	        &  R`HÑëy""
\qíq„!ÀvR`ÔÐ	  (  Ö  _	Ø^ß	ÜÁ  Â  ß%   _	R
_	*  ëy""Ø
^Ü9†      <,\}Œ¯"R
*  új
Á  ß	Š ßµ   
ß%   ß	è
ß	
_ 6(  j
9†<,Š R`<ÏŒ¯ è
$
(6   ß
  _ 6_	          _	*  Œ¯
6\qíqR`ÀvR`”ÊR`HÑëy""  6          _	Ø^ß	(  \qíq„!ÀvR`”Ê
	  ëy""Ø^   HÜÁ  Â  _	R
Á  ß	Š ß
  _	&  Ü9†<,\}R
9†<,Š Œ¯  d          _	  &  Xq+KR`ÀvR`”Ê
R`ÈÄëy""Xq+K  r        ßµ   _		  À—*  „!ÀvR`”Ê  
ëy""R`<Ï		 d*  Š  _	  _ 6ß%   Xßµ   Lßµ    
ß$  R`:ÑU(      6Œ¯R`¼Â"R`¼Â  °    Ä  Â  _	t^ß—  (   døÐ
R`ÈÄ dt^R`8Ã   Æ  ß—    Á—  Â  _	j

_	Ô
(  €Q„:R`pÂ
€QË9†<,\}j
Ô  â
 
 _	Z
      _	  (  
  Z
   d	 dXq+K  ø        _	    &  R`ÀvR`TÄR`HÑ
ëy""Xq+K„!Àv        _	      &  R`TÄ	  ëy""\qíqR`ÀvR`TÄ      _	        &  R`ÈÄëy""
\qíq„!ÀvR`TÄ    "  _	          _	&  ëy""\qíq
R`ÀvR`”ÊR`Ëëy""  2          Á—  
_ &  \qíq      „!ÀvR`”Ê
  ëy""R`ÕZ  D  ß	è
_ (ß    ß
  _	  (  R`TÄ
è
(R`”ÊR`ÔÐR`ÔÐ\qíq  ^        _	    &  R`ÀvR`ÔÐR`HÑ
ëy""\qíq„!Àv  l      _	Ø^Á¼Â0_	R
Á(  R`ÔÐ	  ëy""Ø^¼0R
*  †¼ß	\ßµ   ß	
_ 6ß
  _ 6_	Ø^Á*  ¼\R`<Ï
6Œ¯ 6$Ø&^*  ¬¼Â0_	j
Á¼ß	\ß	
ß	è
_ 6_	Ø^ß¥*  ¼0j
¼\
è
 6$Ø&^(  Ò   Á—  Â—  B`Ÿ   Âg  Â% ß—  &  E	 R`pÂR`°È€QË€Q„:&R`pÂ  ö  À—  `        ß    ßg    Á(  €QËR`°È€QË€Q„:  €QË  "  ¼Â0_	j
Á¼ß	\_		  ß
  _	&  ¼0j
¼\		 dŒ¯  ,          _	  &  Xq+KR`ÀvR`”Ê
R`ÈÄëy""Xq+K  :        ßµ   À—  _	&  „!ÀvR`”Ê  
ëy""R`<ÏR`:Ñ  P  _ 6ß    ß
  _	    *  U(6R`”ÊR`ÔÐR`ÔÐ\qíqR`Àv  f      _	      &  R`ÔÐR`HÑëy""\qíq„!ÀvR`ÔÐ  t    _	Ø^ßµ   _	    (  	  ëy""
Ø^R`¼ÂXq+KR`Àv  Œ      _	      &  R`TÄR`ÈÄëy""Xq+K      „!ÀvR`TÄ  š    ßµ   _	      &    ëy""R`üÈXq+KR`ÀvR`”Ê  ®    _	        &  R`Ëëy""
Xq+K„!ÀvR`”Ê  "  ¼  ßµ   ßµ   4æ  æ  ß—  &  ëy""
R`<ÏR`<Ï€Q„:€QË R`¸Ï  Ú  ß—    Á¼Â0_	j
Ÿ  Ÿ&  €Q„:R`ðÎ
€QË¼0j
€QË  ô  _	          _	&  €Q„:[g 2
R`ÀvR`HÑÕZ gëy""            Ÿ
  Ÿ
&  [g 2„!Àv	  
ÕZ gëy""R`TÄ    Ÿ
  Ÿ
  _	      &  R`”ÊR`ÔÐh²Z\qíqR`ÀvR`ÔÐ  &    _	        &  R`HÑëy""
      \qíq„!ÀvR`ÔÐ	  "  4  Á¼Â0_	R
Á¼ß	\ß—    À(  ëy""¼0R
¼\R`xÉ€Q„:$  R  Àg  À% ß   ßç    ß    ßg*  €QË€Q„:€QË€Q„:€QË€Q„:     r    ßµ   (ß  _	      *  €QË  R`<Ïh²Z[g 2R`ÀvR`HÑ  Œ    _	        &  ÕZ gëy""
[g 2„!Àv	  ÕZ g  š  Ÿ
  Ÿ
  Ÿ
  Ÿ
  _	  &  ëy""R`TÄR`”ÊR`ÔÐh²Z\qíq  °        _	    &  R`ÀvR`ÔÐR`Ë
ëy""\qíq„!Àv  ¾      _		  ß	è
_	  (  R`ÔÐ  ëy""		 dè
\q      íq  Ò        _	    &  R`ÀvR`ÔÐR`Ë
ëy""\qíq„!Àv  à      ß  ._	    :*  R`ÔÐ  ëy""h²Z\qíqR`Àv:  ô    _	    :    _	*  R`ÈÄëy""
\qíq„!Àv:  ëy""      8    _	    *  \qíqR`Àv8
R`Ëëy""\qíq„!Àv  8    

 
 _	Z
  &  8  ëy""
  Z
    ,    _	        &   d d
\qíqR`ÀvR`TÄR`ÈÄ  :  _	          Á¼Â*  ëy""\qíq
„!ÀvR`TÄ  ëy""¼"  N0_	j
Š ß•   Á¼ß	\_	    (  0j
       E	 ¼\Xq+K R`Àv  l      _	      &  R`ÔÐR`HÑëy""Xq+K„!ÀvR`ÔÐ  z    _	        &  	  ëy""
\qíqR`ÀvR`ÔÐR`ÈÄ  ˆ  _	          _	&  ëy""\qíq
„!ÀvR`ÔÐ  ëy""  ˜          _	  &  \qíqR`ÀvR`”Ê
R`Ëëy""\qíq  ¦        _	    &  „!ÀvR`”Ê  
ëy""\qíqR`Àv  ´      _	      &  h²ZR`HÑëy""\qíq„!Àvh²Z  Â    ß	Üß—  Hß—  J8‰H*  	  ëy""
ÜR`ÅHR`[ËJH"  Ú0Ÿ  Á  Â  _	R
Š ß•   Á&  0      9†<,9†<,\}R
 E	   ø  ß	Š ßµ   _	        *  9†<,Š R`<Ï\qíqR`Àvh²ZR`Ë    _	          _		*  ëy""\qíq
„!Àvh²Z  ëy""	&  "  
  ß
  _ 6@‰Ì!_ ^   _		  ß
&  	 dh²ZŒ¯6^ 	" d  D  _	          _	&  Œ¯Xq+K
R`ÀvR`”ÊR`ÈÄëy""  T          _ 6$  Xq+K„!ÀvR`”Ê
  ëy""6       N   Â°Ì*  #	pž    Â°Ì   ¯”L  &˜@  ;	`@  *  E	 @  d@  ü&@  @8@   d@  *   }@  ¼ d@  @        p‹@  ¯ˆw@  *  *´r@  *¹s@  D|L@  HØh@  Œ¯@  *  „!Àv@  „!Ðz@  Q(@  U(@  ,.À]@  *  Y/€p@  €QË@  €Q„:@  ÕZ g@  T[²Z@  *  E`€W@  R`ÕZ@  R`Àv@  R`Ðz@  R`<Â@  *  R`DÂ@  R`pÂ@  R`–Â@  R`¼Â@  R`8Ã@  *  R`LÄ@  R`TÄ@  R`ºÄ@  R`ÈÄ@  R`Å@  *  R`˜Å@  R`|È@  R`„È@  R`°È@  R`ÖÈ@  *  R`üÈ@  R`xÉ@  R`ŒÊ@  R`”Ê@  R`úÊ@  *  R`Ë@  R`[Ë@  R`ØË@  R`¼Î@  R`ÄÎ@  *  R`ðÎ@  R`Ï@  R`<Ï@  R`¸Ï@  R`ÌÐ@  *  R`ÔÐ@  R`:Ñ@  R`HÑ@  R`›Ñ@  R`Ò@  *  <ag@  Óf      g'@  [g 2@  Xq+K@  \qíq@  *  Œs°r@  þv@@  Bx@  Bx˜&@  Bx„:@  *  ëy @  ëy""@  ëy@`@  \}@  h²Z@  *  9†<,@  ZŠ¿@  Œp<@  Œq<@  øÐ@  *    @   d@    @   d@  	  @  *  	 d@      (  #	pž,ú#	pžhì*å`hŠ 
  ¯”   
   #	pž  "              ß	| _	          ß  *  | [g 2R`ÀvR`ÈÄÕZ gëy"" øÐ   & _	          ‡ ß	| _	  (  & [g 2
„!ÀvÕZ gëy""| \qíq  6         _	    &  R`Àvh²ZR`Ë
ëy""\qíq„!Àv  D       _	      &        h²Z  ëy""[g 2R`ÀvR`ÈÄ  R     _	        &  ÕZ gëy""
[g 2„!Àv  ÕZ g  `   _	          _	&  ëy""[g 2
R`ÀvR`ËÕZ gëy""  p           ‡ Ÿ
  ß—  *  [g 2„!Àv  
ÕZ gëy""R`ÕZ  *  „   À  Â  ðµ  0
  ð•  °œ  0Š   R`<ÂR`ÈÄøÐ*  ª 0Š
 0Š	 C°œ  °8   °œ  ƒœ „œ Äà*  Ð 0Š
 ð	 	0‘
 Ã€0Š	 ð	 œ
 œ	 *  ö Ä`0‘ —¬  ðÕ  òµ  ðÕ  —,2 *   ðÕ   °:  òµ  ðÕ@  ‡ ‰@¬*  B  ß‹ ¬  ¬  Õ‰      E‰   *  h‰@¬  ¬  , Õ‰E‰ Š*  Ž        Íl   <   *$   0  *  ´Î6  Ð6~   ~  ÎHB   H  ÍHN   *  ÚHT   Z`     Órf   	x  G	x<   ~*     Î~  Î„„   ~®     Í–œ   ¢  *  &Ó	¢  G¨  Î®®   ´´           *  L  Í
     Ñ  Ò*$   0  Ì<*  r  Ð<6   T  ÏB  ÎHH   `N   Tl *  ˜  ZZ   Tl   fN   l  Îrr          ¾˜¼Üþ&6ftŽÊ*  ˜¼Ü
þ&6ftŽÊ  Òè"VŽÒà8r*  è      
"VŽÒà8r"  æ¶âö_	  ‰Š  
  Š  Š  Š*  ¶âö  *¹s*´rR`ÕZ"   
  Š  Š 
  
  _	  ßµ (   Œ¯Bx˜& €Q„:€QËëy@`"  "  ÁŒÁF_ Š  Š  ß  &  E	 
ŒF R`<ÂR`¼Â  d*  @  ß•  Bœ  ÂE ÿÂz ¾×§  ‚‡_    øÐ
 ¾ ( *  fBœ Bœ ÂE ÿÁ `ÛÀ ÀÀg Ž   $ (Ž*  Œ@‰  _	  E‰F‰PVß¥    ß   ß   
ëy VE	 "*¹s   ²  Š _ V_	  Vß  _	<  *  *      ¹s VHØhV*¹s< d$  ÎØŠ ß	
 _ V_	  :‰V_	h  ØŠ*  Ø 
 VY/€pVh d Ø"  î ßÕ   ß	
 _ V_	  :‰V_	h  (   
R`¼Â
 VY/€pVh  d*  ØŠ ßÕ   ß•   ß	
 _ Vß¥    Š &  Ø R`¼Â  
 V"E	 ( "  2_ V_	  Vß  _	<  ØŸ
  Š*  V
HØhV*¹s< dØŒ¯*  P ß•   ß	
 ß•   _ VF‰cVŠ _ VF‰"   
  
   VV" &V*  vdVß•   ß•  Š _ VF‰dV
  _	  &  V    V V      $Œ¯(\qíq  œ        ß•   _	  &  R`Àvh²ZR`ÈÄ
ëy""R`<ÂXq+K$  ®        ß•   ß•  Š _ VF‰Ô*  R`Àvh²ZR`ÈÄ
ëy""    V*  ÎVŠ _ VßÌ ß•  _ VF‰ÃVß¥   $  V V  V"V(E	 *  ôß•  Š _ Vß¥   Š _ VF‰kV   
  VE	  "V(V"  Š _ V_	  :‰V_	h  ØŠ Ÿ
&   
VY/€pVh dØ &  8  ßÕ   ß‹ ß	
 _ Vß	. _ V_	  (  Œ¯
R`¼Â 
 V.  V$HØh&  ZV_	<  ØŠ Ÿ
  ß‹ ß	
 _       ~ß	*  V<
 dØ Œ¯ 
 "~&  |. ß—    ß—    _ VF‰dVß•   ß• *  . R`pÂ
€QËR`8Ã€Q„:VV     ž Š ß
  _	        (    Œ¯\qíqR`Àvh²ZR`ÈÄ  ²  ß•   _	        &  ëy""
R`<ÂXq+KR`Àvh²ZR`ÈÄ$  Ä  
  
  _ Vß‹ Š _ V_	  *  ëy""€QË€Q„:V  V"HØh  äV_	<  ØŠ Ÿ
  _	    *  V<
 dØ Œ¯\qíqR`Àv  ü      ß•   _	    &  T[²ZR`Ëëy""R`|ÈXq+KR`Àv        ß	
 Ã—  ß   ß        Ã—*  T[²ZR`Ëëy""
 R`8Ã€Q„:€Q„:  (  ß   ß  _ V_	  V_	<&  R`pÂ€QË€QËVHØhV<   B  ØŸ
  Š ß	
 Ã—  ß   ß&   dØ
Œ¯ 
 R`8Ã€Q„:$  ^  Ã—  ß   ß  _ VF‰›VŠ _	&  €Q„:R`pÂ€QË€QËVV    ~          ßÕ   ß§&  \qíqR`Àvh²Z
R`ÈÄëy""R`¼Â      Ÿ
  ß  ß•   _	  &  R`pÂ€QË€QË*¹s*´rXq+K  ª        _ VF‰`	VŠ _	&  R`Àvh²ZR`ÈÄ
ëy""VV   Â          ß•   _	&  \qíq      R`ÀvT[²Z
R`ÈÄëy""R`<Â  Ô          _ V_	  *  Xq+KR`ÀvT[²Z
R`ÈÄëy""VŒp<  æêŸŠ  Š _ VÕ‰  ê
Bx˜& V       N   Â¨À*  À+    Â¨À   ¯”L  &˜@  	 –@  *  Q(@  |3g'@  I: –@  lMg'@  Œs°r@  *  þv@@  “y42@  Ä s@  «‘à@      (  "  À+,„ À+h GÀ+h ¯”   
   À+  *            
  ß   ‰_	  _ _ _    “y42“y42Q(  $ ( *  & _z ß _	   ß _	   ý üÿý *  z 
 &˜  &˜ "       ( $  L úÿ‰     À  
  
  œ   œ
 &  Ä s
     I: –	 –I: –  l   
  
  _	       ‰&  	 –|3g'lMg'«‘à           N   ÂÐÀ*  V }    ÂÐÀ   ¯”L  ëÈ2@  ØµW@  *  Y/€p@  ô8CT@  ô8€W@  Œs°r@  þv@@  *  ´ÀX@  µ Z@  ¹ @      (  V },8  d„!h œ,ô8h"¯”   
   V }  *                            ‰A_ _ 
  $ ( *  & 
  

 W¬  ‡W¬  ‚ñÕ@  _œ       ( *  L Â Ÿ B`Ÿœ  
 Ã
 ß` ò‹ —¬ - 	         
 
 
  *  r Ÿz _	"      ñ  1 _– ‰    (  z 
"     "– &µ Z*  ˜   ò‹ /—¬ - +‰     Ã ó   $    ¹    " & *  ¾ ó  3 ó  æ ÄÄe 
Î
ý‚ÖÄå 
    *  ä ”ß

 ü‚ß    ‰      ÿ  ÿ‰  (  
     ´ÀX    " *  
                        f¦æ&__  &*  0
___ 
Á
r  ÀG  €

*  

ô8€Wô8CT$(*  V?
¶ÿ__
ß—Ÿ
‰        z  ß—(  
 ¹ "$z*  |xÿ†ÿC
—r ƒ×p Ãe  ÿrÿó  D  x
ëÈ2*  ¢ÀÁÁe _	  
ÿ  Xÿß ÿ Hÿ2‰  ØµW*  È  ßJÿß(‰   Â œ  ÁE ÿ*  ¹ µ Z   *  î`À_	  ÿÿŸ
ß'  _	  ¦$  ØµW ô8€W&Y/€p(    ‰'1ÁÁg 
r  ˜„ƒ‚À…   ô8€W$       0N   ÂÀÆ*  ô K    ÂÀÆ   ¯”L  	ò@  ü’@  *   d@  ¼¸.@  ¼ d@  @        ¯ˆw@  *  E`€W@  ÍdÀD@  hf  @  [g 2@  Xq+K@  *  [qs"@  \qíq@  Œs°r@  þv@@  øÐ@  *    @   d@  Ã¢ƒ@  9©x‚@  Í«@  "      (  ô K(`Œ,h ¯”   
   ô K  "      _	  ‰
,_	  82:ß    :‰*  ,E`€W82: døÐ*   >À  œ   ð¥	  _ D¬  & ‰  > d  D*  D 3!ß   _	n6ß6nF‰® À    ,‰| &  
  n66   d$øÐ(|    j Ÿ
,_	  8  4:ñÀ    :‰*  ,
[g 28  4: døÐ*  † Š `ß      ,`$‰ÿY   ße   ÿ•    Ÿ
  ÿ6&  Š 
, d d ¼ d$¼ d(6&  ¬   ße   ÿ•   Ÿ
  ÿ,  ße   ÿ•  *   d
 d¼ d¼ d, d  d   Î   Ÿ
  ß,fß',  ß,  ß
*  ¼ d¼ d,f,	ò,	ò*  ê ,_	  8,  :À  Áe8 Âe4 Ã  Ä*  ,
\qíq8,  : d& d*    × þÿS””ð
2 øß    Þ&‰_	<Õ_	   ¼ d¼¸.þÿ d¼ d$<*  6  8:‰@‰À ø@‰2!õ@‰4!ò@‰5!ï@‰E"ì  ¯ˆw8: h*  h     =
  
j
.ßh\ßh^ßh`Ã"        j.h\h ^$h&`*  Ž\Áe W¢0 D‡W¢Z A‚W¢9 ƒW¢A ;‡S”ß
  
  \(  &  ´_ –À\Á ß	  _bß	  _dß &  –\9©x‚b9©x‚ d$Ã¢ƒ &  Ö 
 Ÿ
j‰      Ãæó'b  	ó'(  Ã¢ƒ Ã¢ƒ jÃ¢ƒæb*  ød ß 0_ ße  _ ÜŸ
.Ÿ
  ýj(  d0Ã¢ƒ Ü .$Í«(j*    Õ… @‰g!_        <    CA ‰ß.
   &.   D‰  bl  _ ^ß'0f@‰1‰  Ã¢ƒb
l^0f       ¾N   ÂXÀ*  p:    ÂXÀ   ¯”L  –"&      @  ""@  *  „:@  N@  ^@  l^@  \gÏ@  *  Œs°r@  þv@@  “y@  “y"&@  [zœ5@  *  [z·5@  ³à~@  Ðì@  :©@  „¯½`@  *  ¥¯ÜK@      (  p:,6p:h@ !¼„h    Ô,hà sr,h¾ ¯”   
   p:      _	à ÀJ ß	  ÀJ ß	  À  ß	(  à 
³à~J „¯½`ÐìJ „¯½`“y"&*     À  ß	  …        ERRORS,      FATAL  „¯½`–"&„¯½`  @ _	¾ ÀJ ß	  ÀJ ß	  Ä  Äg(  ¾ 
³à~J „¯½`ÐìJ „¯½`""*  Z  Äg -
  Â•  ! Â•S Ÿ3 À) 
   "" ""       "" 3 $) *  € ß	  Ä À6 
ß	  À& _	  Ä) Ô•  Ô•(  :©
"" 6 :©& \gÏ") *  ¦   Ô•  Ä6 Ô•  Ô•  Ì•  … _	  Á*@  6 þv@"**  Ì 
Âú ß	  ö_	  … _	  ß5   ß5      „¯½`Œs°rþv@ [zœ5([z·5*  ò Á.@
Âú ß	  öÁ*@
  .¥¯ÜK *  Âú ß	  ö_	  …         &  „¯½`Œs°r“yN„:^  2      l^       bN   ÂøÀ*  à`    ÂøÀ   ¯”L  Œs°r@  þv@@  *      (  à`èÀ ¬:Oh  ¬:t!hÀ ¯”   
         à`  *    K©=Ÿ>©èY>©¨G©øfJ©K"O©‹s;©øM9©t!A©ÿZF©*  & @`;©ÐM<©#"<©"";©hMA©öZJ©Ë’J©£’J©¢’;©zL*  L G©ãfG©âfG©ÔfJ©#"J©""O©csO©bsK©ÐF©ªN;©*  r jM>©cMG©{eG©zeG©leJ©» J©º O©ûqO©úqK©{~*  ˜ <©» <©º J©;‘J©:‘;©hL‰¬÷Xƒ¬4K•¬4K;©¿';©  ¾ †:       ÊN   Âðæ*  F@    Âðæ   ¯”L  ä²2@  @  *  é@  ZŠ@  YVN@  •)H2 –VN@  *  ""œw@  „:VN@  :Ps@  NVN@  ^"&@  *  ^VN@  ^µW@  l^"&@  l^VN@  l^ÛW@  *  \gÏ@  ‘m }@  Œs°r@  Œs s@  þv@@  *  “yVN@  [zœ5@  [z·5@  \(
@        «ŽàQ@  *  ¬Ž`	@  ³à~@  Ðì@  ›’VN@  :©@  *  :©Ï_@  [©(}@  „¯½`@  ° }@  •± }@  *      (  F@,ö"ÀÁhª" ÈhÒ"@Îh®*  Y/€ph  CMöh:N“yhB®S@hÙf ZhB*  2glh( Iq hB »z""hÖ<a	¬v
4òhz*  4hdJg'hà	òht	òhZ"øfh˜*  O¹’hf öXzh4ëÈ2h†ìÐhn€phJ
*  ØNhDø€hX%hQh«(LŸh(ÜŸhŽ*  YÁhZY"&hÜYä3hYµWh<Yáyhˆ*  YÏhŠYÐhŒY®‘hŽ–Îhp–Îh“*  –"&hò–¡Ehp–vLhŽËU<hâvLhî*  „|qh„¤òhr      ¤ #hlË ghªè!hÐ*  !  h
d:Kh¬äH¼hj!  hÒ! KhÔ*  ž!YhŒž!/KhŠ""hL#ÏhF	#Xh¶*  ª%øfhœ!&òhpy&,Kh²y&ÖKh¤ê&hZ*  ì&h`ö&Xzh@œ't:hhd(h\d( h^*  ~(v:h¦¯-€h  ²2CMhv	Ì2<h
Ì2u~h#
*  ô8CThÞô8€WhÜ19h’ü9øfh–ý9Óžhš*  „:hÜ„:"&hd„:µWh†š:øfh¢;h”*  vL@hx	{L€h6|Lòhv|LØYhT;Mhb*  ;Mú&h`;M;Khb[M h8 _MXzh>NÎh|	*  NhÄN"&h¤NµWhJNžwhˆN´‰hð*  $NòhxxQXzh8^hÌ^CThBl^hä*        ½`±hØ:dh^¯dghH³däh®ýdBxh\*  leCThÞle€WhÜÓfg'h€Ôfh‚Þf€h:*  äf™whfg"häsŽrh[ s/Sh !t8Xhd*  þv  h  ‹w‰‹hJwuLhè5x/…h´­x 
hæ*  ‘yh¨“yÎhÆ“yhÔ“y#h
“y"&h*  “yn'h
“yµWhh“y2ghì“yZŠh
òy,}hV*  òy“hT
zòh|zžwh†µzÝfhÚ4}÷NhÖ*  Õ}?fhVÛ}€h<‰‹hXÞ@yhD 9€\zhJ*  =†òh~H†"h¸J†\zh°cŒ¿Yhö	±²hô*  ± Nh³0 h–³´dhæ³ègh¶´ Nh–*  ´ÀXh´ sh¦µ`Thæµ Zhö¶à8hf*  ¶ shv¹ h¹€%hÖ¹ðK      h&¼{:h*  ¼ NhöÀà8hfÀ ZhVÀ shvÀ €h†*  ÂàehÆÂà’hFÃ €h6Ã¢ƒhöÄ Nh*  Ï,qh&*–øfhž©[hPK©Ëh<d©vhN*  ë©¬:h0ë©¢ZhÌªµWhíÌªˆYhîÌª]hü*  D«=†hRR«ÿhFR«""hêS«U<h:S«µWh>*  S«ÕZh8½«¼hH½«ÿ-hB¿«þvhDÌ«$	hL"  Í«hÍ«h 9¬–h¯”   
   F@  *    Â  Ã8 ò( z	( ò‹% ß J … ß
 J "  <a	  
<a	8  <a	J (<a	J *  & … ßE@ Žò _	B … z	 @ … ßŒ
Œ"  
<a	ŽB @ "<a	Œ(<a	Œ*  L @Àß	  $‡  Àe      Å¢Ð‹ß x	Ð—$  <a	° }<a	Å&<a	x	*  r d È—e ÀÆßh¢- ¢* ¢/ À
Àå"  <a	d <a	e <a	Æ<a	h*  ˜  _	:… ð¥öÿ* _	  À _	  À  _	  _ "  :""œw \gÏ":Ps&\gÏ*  ¾ ß5 Ž_
Œ… ß5 ŠßU Š—® . &  
<a	Ž<a	Œ<a	Š <a	Š(  ä ßU Šß	  ß5 Š‰K À˜ò … À$  <a	Š„¯½`<a	Š<a	˜   ¬ò … _   …À¬…     <a	¬‘m }<a	¬       SOURCE FILE READ ERROR	   :*  :¦æ¦  Ž
Á`Âº
      ¢	 ¢d ”ƒ
ß   <a	`<a	º <a	d *  ` õ¢d ×7   ¦‰ôÑ—d Ñ—e Öƒ‚(  <a	 
<a	d [zœ5<a	d "<a	e *  †À`2" … Ò þâÑ•  ƒ
ß  áÊ ø€
Ò&
  <a	`<a	 *  ¬æÿÿ¦æ_	  ¦  Žm _È‰  ƒ‚Ö… 
    È  ÒfÎEÿŸ#†ƒßW@  ßGF  Ÿ#&  <a	†<a	@[zœ5<a	F[zœ5*  ìˆoÎ ŽŽŽæLŽm ¾
  ÎÔŽm Ÿ  –"  <a	ˆ<a	L<a	Ô(<a	–&  &f¦ÀœAÂ ß	  Ÿ ˜ß——À(  <a	œ:©Ï_<a	˜ <a	—"<a	*  4˜Á˜Â ß	  fÎE ð      Î
ÎÎÎÎÎ Ž
Ÿ“Ü   <a	˜<a	˜:©(<a	Ü  Z‰æÜd  ß bÎ Ÿ•b‰æb*  <a	æ<a	Ü
dbb<a	æb  tÞß¤”ÀÑÁÞß	&  <a	Þ<a	¤
”<a	Ñ<a	Þ  †  ×'”Ñ
‰Ñ  âße $  [©(}”
<a	Ñ<a	Ñ<a	â  œÞße ”ëß76  	‰$  <a	Þ
”<a	6[zœ5<a	*  ²à‰–”‰à‚€ÖÎ% ÖŽÕ… A*  <a	à<a	–
<a	”<a	<a	à*  ØÁE ðÀÿß	  Àð_	  _     SYSTEM ERRO  
ÿ:©Ï_ð\gÏ‘m }  þR         *        ‰@AD—  ‡À5 Á5 Á5 	”*  ,Â
ƒƒÂ~ÂEþÿ”‚~‰&ß
x	Sß: x	Ÿ
  <a	x	&<a	x	"  R>
f¦À/
Á>
Â ß	  ‚
‰8
(  <a	>
<a	/
<a	>
:© <a	8
  p,
@
À¤ðH  ðî	 _	×§&  <a	,
<a	@

<a	¤<a	î	*  Šü	F	ð*  ðL
 ß% CR
æ æÿˆæ  <a	ü	<a	L
<a	R
*  °3ÿˆ_	ß
x	ßv	æ&Äv	&À¤ð &  
<a	x	<a	v	<a	v	$<a	¤*  Öð ß
x	_	Î
óß
x	Ö„ƒÀ¤p p   
<a	x	<a	x	 <a	¤(  ü_	€… ß7  6ß	        †_	  À,_	  À*  [zœ5<a	6•± }""œw ,$\gÏ%     _	  _   …   LISTING FILE ERROR  :Ps\gÏ‘m } B&  Bß5 Š… ß7  6ûò  ø‰ß—•	”	
‰(  <a	Š[zœ5<a	6 <a	•	"<a	”	  d”	•	H
ß•  ”	ß5 Ž
ß*  <a	”	<a	•	<a	H
<a	”	<a	Ž$  zß5   7ß•L ”	Ÿ  F
&À–	Á(  <a	[z·5<a	”	<a	F
 <a	–	*  šF
Â ß	  €
ß J
¢ W H ßh   <a	F
:©<a	J
&<a	h"  ÀW P 1”œ	
ð_`J
ß7B  _	B$  <a	œ	<a	J
<a	B[z·5 B        Þ”	J
_ ôße J
_	B|	*  <a	”	<a	J

ô<a	J
B<a	|	  òJ
‰  <a	J
 <a	  *    WWXh   Vp   	-    ªH   ÿÿ  d   "  WWX
h VF@ª&d *  &                  ÿÿD J X       	;,
   D J X   L .()<=>+-*/,   X   X 	 .)<=>+-*/    d   d 
     º'  º      # + 3 ; C K S [ c k s   
   ê  ê 
   î  îÆ
  Æ ì  ìR    þ  þ ©  ‚YVN   <
  < B  B(@œ  jL   V  VSY     ˆ'  ˆ      Ý                      PROCEDURE      ¬  ¬           .  
             P  P      N   d  dSY     n  n         ‚  ‚SY     Œ  Œ^      
   SY     Æ  Æ    ‚NVN                Æ
  Æ   R    &  &    ‚“yVN d  d    r  r     t  tf    †  †    ‚„:VN Š  Š†
  † Ä  Ä  ¤J            h*  ¤J
NVN^"&^µW^VNh  Ú    d†                (  “yVN      d
†„:VNl^"&l^ÛWl^VN              p
  p   $          ‚–VN   R
  R X  X•€%     l  lSY     ”  ”>   00000 0000     Ô*  ÔI W F A                               ³à~$Ðì*  ú                                        ³à~³à~*                                           ³à~³à~(³à~*  F                                        Ðì"Ðì*  l                                        ³à~³à~*        ’                                        ³à~³à~&³à~*  ¸                                        ³à~ ³à~*  Þ                                        
³à~³à~*                                          ³à~Ðì$³à~*  *                    @ €       *  P                       €              *  v                                      œ              .,$    ®  ®           Ð*  Ð                   C$1 2             *  ö      Ø™Ø™    ÿù•ó                         *                                  ­NÀ*  B                          
       f    &f"  h                                 v	*  v	                                         î	  î	    ð	*  ð	COBOL   .0    SRC:                      
ZŠé*  
  DD-MMM-YY  HH:MM:SS PAGE XXX

PAGE  <
     >
*  >
         W  PDP-11 COBOL FIELD TEST   d
VERSION   .0    
  ZŠé       N   Â€Ù*  Ö     Â€Ù   ¯”L  à8@  @  *  Ôk@        –"&@  –CT@  ËU<@  vL@  *  Ô,@  ""CT@  ""œw@  œ't:@  ²2CM@  *  Ì2<@  Ì2u~@  ô8CT@  ô8€W@  „:@  *  „:"&@  „:VN@  „:µW@  :Ps@  NÎ@  *  N@  Nžw@  N´‰@  ^@  ^"&@  *  ^Ã'@  ýdBx@  g"@  \gÏ@  ‘m }@  *  sr,@  Œs°r@  þv@@  “yÎ@  “y@  *  “y#@  “y"&@  “yn'@  “yZŠ@  ÌyKŠ@  *  zžw@  [zœ5@  [z·5@  µzÝf@  Î@  *  J†Xz@  ³à~@  ¹VX@  ¹‘Z@  Ðì@  *  9©x‚@  :©@  :©Ï_@  K©Ë@  [©(}@  *  ª€M@  S«µW@  9¬–@  ‹¯=@  ‹¯      @=@  *  °?S@  ±lE@  h±p!@      (  Ö ,¿	*  ä²2hR	%th  <u~hD¦SS~h E`èXh¸*  E`ØYhèN`hx«ŽàQh^	¬Ž`	h·	p©Ó(
 
  ¯”   
   Ö       _	  
  
    
vLJ†Xz p©Ó  
    i     ÌyKŠ Ö  &   æ  ÿˆ_	  
  
  ßUƒ   ßU€  ß (  p©Ó  sr,[zœ5[z·5[zœ5 [z·5*  .   ß   Ä  Ã 0
b ß	  ‡À0h  0  N´‰
µzÝfÔk°?S*  T f  ß	  ô f 	V†ßU   Àì_	  àßU   
‹¯=""CTì"\gÏ*  z   Ü ` À¥öÿ ß5   ß5   ß5           ""CT""CT""CT&""CT*    æ3ÿˆæ æÿˆ÷æ æÿˆñ&
æÿˆ*  Æ ìßU   À¥ÿÿÀ¥þÿÀð_	  ©À¥ýÿÀ  
""CTð\gÏ*  ì 	_	  ¡À¥üÿÀ.	_	  ™4
f ÀÜ_	  Ê   	\gÏ.	\gÏ"Ü&\gÏ*  &f¦Àh Áf W L ÁL Â^	”Á
ý‚  Ôkh Ôkf ^	*  8€Ãó•   Á  ÂÂ_	x†_ "óµ    ^Âx "*  ^Á  ÂÂ_	x†_ óµ  _ ó•   Á  N
Âx *  „  ÂÂ_	x†_ óµ  _ þß  ß5    “yÂxþ"“y$  ª        _	  _ À ÁH PPHÀ  Á(  [zœ5
ª€M„:µW “y"&H  “yn'  ÊH ß	  ÁJ ß	  ÁL ß	&  “y"&H [©(}“y"&J [©(}“y"&L *  Þ  À
¢  ü€
Ð•. ÁN ß	  À
¢  ü€
Ð•;   [©(}“y"&N [©(}*  ÁP 
ß	  À  ð  & ß5   ß5   ð•(  “y"&P :©Ï_„:"&„:µW[zœ5$[z·5*  *  " ð• # ß	  ‡ß	  ð•  " ð• # ß	     „:VNh±p!±lE„:VN(h±p!&  P†_	
_ ß   ß5    $ß  ßE  (  
„:–CT[zœ5N$–CT*  r  À  ð   ð• # ß	  ‡ß	  †_	  À   [zœ5
–"&      h±p! ±lE&""œw$  ˜Ð_	  À  _	  ßU   _   À–_	(  Ð\gÏ:Ps\gÏ""CT‘m } –*  ¸  ß5    _	  ß5   À  _ ô  $  \gÏ
[zœ5ª€M[zœ5zžw"ô*  Þ_ ô_	,  ß5 @  À  _ ô  _    ô
,zžw[zœ5Nžw ô*  ô_	,  ß  ß  _ ß5€   qß5@ &  ô,Nžw“y^"[zœ5*  *  _ ôß  ßE   ßU@   ß  ßE   *  [zœ5
ô^[zœ5[zœ5 N([zœ5*  Pß5   ß   ßç    ß5   ×'  d @ß5&  [zœ5œ't:K©ËËU<[z·5"ËU<      *  v   _	:L‡ß•$ ½ß  ¾À½ Á ß	  $  [z·5:½g"¾½(9©x‚*  œ_  ×'   &×'   "Á  Á
ÁÁ_À  _$  S«µW
µzÝfµzÝfµzÝf$À&ô8€W  ÂÂ  _	    _	    _	  *  Âô8CT
¹‘Z³à~¹VX³à~¹‘Z  Ö  _	    ßR	  _	D‰N	P	
*  Ðì¹VX
ÐìR	²2CMDN	P	*  ð  … À_	  À*_	  	À¾_	  ÀB*  ²2CM
\gÏ*\gÏ¾"\gÏ(B*  _	  
  _	  ßU   _  ¡      … À  \gÏ
^Ô,""CT *  <  Á  ¢Z ‚¢0 ‡¢9 ƒ¢A ‡W        
€
  g"*  b
_ BÀ_	  ± … ¡ … 	
À° ß	  8‡óµ  B\gÏ$‹¯@=*  ˆ  9@ ÂÂe pœ " °$ p & óµ  *  ®ó¥   	ð• # ß	  (‡‰¡ … À%  ‰  h±p!"^"&*  Ô$ Á  p$ ‘Á% üïð• # ß	  è†
À  ^Ã'^Ã'  h±p!(*  ú_	  À_	  	Àx_	  ÀZ_	  ± … &  \gÏ\gÏx\gÏ Z$\gÏ*   JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC_	  F    þv@ p©Ó    =    Î Ö H*  Hæ ÿˆ_	ä  À Á  _	–ÄbÄe•*  p©Ó äÎ      Î Ì2<–&*  n••Ñ‹_	–À Á  Â _	–Â
û_	    –Î Ì2u~ –(Œs°r*  ”… f
s
 Äe0 ‘Åe0 Q‘Ñ‹……    ; Z   ºx — µ Ô ó 0N           ä*  ä‰AB Âå ÂÂe²ŸÊ_l Ê_ Ì
C  ²ÊÊ$Ì*  
 —r ŸÎ_  ÐßåL Ðß5 ÐW,    ÎÐÐÐ*  0ße ÊÀÒÁÊÂ ß	  Àå ÁÞ””	’À  ÊÒÊ:© Þ*  VÒÁÌÂ ß	  Àå Áá”	’ÀÒÁÎÂ   ÒÌ:©á Ò$Î*  |ß	  Àå Áã	’ÀÞÁ·	Â ”Â
ýÀÞ   :©ãÞ      ·	&Þ(  ¢Á ß	  _  Àá Á ß	  _ ‰CR  &  
9©x‚9¬–á9©x‚ 9¬– &–CT*  Æ   ER @  lHE     AC   rMA    CV(  [zœ5[zœ5l[zœ5[zœ5r$[zœ5*  ì    AB    SY    xOV     NL       [zœ5[zœ5x[z·5&[z·5*  CS   ~KE   „WF    OB     RO@   (  [z·5
~[z·5„[z·5 [z·5([z·5*  8 OD€    PF    ŠBO   CM    TS   
[z·5Š[z·5 "[z·5*  ^   PL                      &  [z·5[z·5Nžwzžw µzÝf&ËU<  „                g"ýdBx À*  Àù üý üû ø÷ ø  OPEN FAILURE ON CRE!  æF FILEžCOMMAND SYNTAX ERROR 
  
ž     ILLEGAL SWITCH    *    ILLEGAL FILE NAME  TOO MANY INPUT 	  <FILES    B*  B  TOO MANY OUTPUT FILES  OPEN FAILUR  hE ON INPUT FILE   x*  x  OPEN FAILURE ON OUTPUT FILE  %PDP-1#  ž1 COBOL FIELD TEST VERSION 1.01O   ¾!  ¾  NO SOURCE FILE FOR COMPILEz   Ü*  Ü  COMMAND I/O ERROR  INDIRECT FILE O  	PEN FAILURE   	*  	  INDIRECT COMMAND SY      NTAX ERROR  IND  4	IRECT FILE DEPTH EXCEEDED    N	*  N	    X	®	T CMD:                      
  
X	®	*  t	                                      )  š	                     IDENT:       
        $N   ÂHÁ*  %¦S    ÂHÁ   ¯”L  å X@  	Ø^@  *  #	pž@  ;	¢`@  ‹€@  @  @  *  ¯ˆw@  *å`@  B0 @  U(@  {Q@  *  E`€W@  ÍdÀD@  hf  @  [g 2@  Xq+K@  *  [qs"@  \qíq@  Œs°r@  þv@@  œw€Q@  *  µz‰‹@  øÐ@    @   d@    @  *   d@  	  @  	 d@        µ Z@      (  *  %@Q,âä
zhD;	`hE	 h #ah *  *´rh  Œ¯h´ „!Àvh „!Ðzh -G Zh *  ;K }h ÎK°h L
zh  _M¹8h €QËh¸ *  €Q„:h¶ ÕZ gh¬ T[²Zh° R`ÕZh² R`Àvh *  R`Ðzh R`<Âh† R`DÂhˆ R`pÂh‹ R`–Âh‚ *  R`¼Âh‡ R`8ÃhŒ R`LÄh‰ R`TÄhŽ R`ºÄh„ *  R`ÈÄh‚ R`ÅhŠ R`˜Åh R`|Èh” R`„Èh– *  R`°Èh™ R`ÖÈh R`üÈh• R`xÉhš R`ŒÊh— *  R`”Êhœ R`úÊh’ R`Ëh R`[Ëh˜ R`ØËh› *  R`¼Îh¢ R`ÄÎh¤ R`ðÎh§ R`Ïhž R`<Ïh£ *  R`¸Ïh¨ R`ÌÐh¥ R`ÔÐhª R`:Ñh  R`HÑhž *  R`›Ñh      ¦ R`Òh© ¬q
zhN ïq>5h
 ïq?5h *  ëy hÐ ëy""hâ ëy@`hº \}h| h²Zh® *  9†<,h i†xPh‰‹ 9h Œ hæ Œ°;hþ "  Œ4…hö Œƒhî *’˜Ih ¯”   
   %@Q                  F   `                      | *  |                                 *  ¢                       _	    â _	    E`€W  " $â (E`€W&  È   â … _	   â _	   â … ‰ ß•  *    â ¯ˆw â ¯ˆw â *  ê  ß•  ß•  ß•  _	  ‰_	  "       &#	pž(      $  _	  Õ‰_   &À ß   _	  À*  	Ø^;	¢`    µz‰‹ B0 *  0 ß
   _	  €Ÿ
 … &f¦æ&f_	ß"     
 
µz‰‹B0  &  V    À‚ ß	  ß    À ß	(   døÐ
‚ *å` døÐ *  n  ß  Â òÕ  À Á Âž R~À    *å`      ž ( &  ”Á  Â  R~ß	  Á Â| _	  Á ß	&   d
	 dœw€Q | " *  ¶  Âž òµ  _	    €œ _	  …„ƒ‚  {Qž ‹€	 dU(
  Ü€_     å X       rN   Â      ðÍ*  % d    ÂðÍ   ¯”L  ÇÀ+@  &3@  *  &˜@  4Ís@  d@  üX@  ü&@  *  Dw@  ¯ˆw@  &®S@  &ðÈ@  &0Ï@  *  (h@  Y  @  Y d@  ~Ë@  U(@  *  p3Þ@  oMÞ@  E`€W@  ÍdÀD@  hf  @  *  Ófg'@  2gÀÁ@  2g È@  2g@Î@  [g 2@  *  Xq+K@  [qs"@  \qíq@  Œs°r@  þv@@  *  Dwg'@  –w?@  Bx@  Bx˜&@  Bx„:@  *  ­x @  ZŠ¿@  Œp<@  Œq<@  øÐ@  *    @   d@    @   d@  	  @  "  	 d@      (ŒØ_hd¯”   
                           
ÿÿÿ    (               F         Œ              Ä *  Ä _  (‰Ö Ò Õ… E…                       øÐ
Ö Ò *  ê                                              Ö   Ö <   Ú   Ú 0   ò   ò f      È   *  ‰@Á Â$B~‰	     0 @œ _     $(~Ë*  8_  … ‰@¬  ¬  ¬  Õ  ~Ë*  ^‰E‰‰
 
 
  
  ßÿÿ4 
2 _	  $    Bx˜&~Ë 4 $2 (E`€W  „  " jß    ,‰Ê_	@  (    " j	 døÐÊ@      	 d(  šV_	.  ß    Ÿ
 F‰›¼À  ðÕ  _	*  V.
	 døÐ2g@Î ¼2g@Î"  ¾       jãß _ VF‰é \_	&  [g 2  	  
 j V\"  Ü    `6 _	  îŸ
0 ß  _	*  (h  `6 Œp<î0 Bx˜&&  ú  ß6 _	  6   6À  ¬  _	Ä &  Bx„:6 ÇÀ+6    d$Ä *    \+¬  'ß  $œ ( œ $ ßç( $ "   d\Bx˜&( "$ &( ($   Bß• . _	  . $ (   _	¨2 2 *  . d. $ (  d¨2 2 "  \    À  Àe   _	  
‰          , 
*   d d
 dU(    ,   z4 
2 _	       jÀ  ß(  4 2 hf    	   j	 d*  ’  4 ðµ  Ÿ
2 Ÿ
4 ß
4 Á  &B_	  $  Bx˜&4 2 4 4  d(oMÞ*  ¸_	  €ß4 &_œ ( _œ $ ßç( $ œ ( œ   p3Þ4 ( $ (  $ &(   Þ . _	  . $ (   _	¨2 &  . 
d. $ (  d¨2 $  ô      &À  Àe   _	  €ß  &  Bx˜& d d dU(" d    _	¨2       ß  (   d¨
2 Bx˜& d	 d  *  &  ß0 ß
       ¢ß  _	  Ÿ
  _	   _	(   d0  Bx˜&Œq< ZŠ¿$üX*  L    jÕ‰@‰Î!@‰º _	    j‰‰ ‰    ¯ˆw  j¯ˆw  j*  r   þþþþ*  ˜þþþþþ*  ¾ÿÿÿ    þþþþ*  äþþþþþ*  
þÿÿÿ    þþþ	þ*  0þþþþ*  Vþþÿÿÿ    þþþþþ*  |þþþþþ


*  ¢

þ      þþþþÿÿÿ  ¿ À   Á   Â Ã *  È  Ä   Å Æ   Ç   È É   Ê   ¼ ½   ¾   î    þ  þ  Î Á Á Ñ Ä Ä Ô Ç Ç × Ê    ¢*  ¢    ‰_¤_¦BCÁ€W¬  Gß¤/  ¤¦&¤*  Èœ $ œ . ßç. $ _œ ( œ . _	  . $ (  $ . . $ (  . $d&. ($ $  î( ¢Ÿþ_	¨¤¦  ¢_ß	 . _	&  ( ¢
þ¨¤¦¢ . *    .   Ä  _	  _ Žß¦ß	 . &  &ðÈ. U(Ž¦&. *  4ßâ . H_J_	  .     _ Žß¤œ    . H      J&ðÈ. Ž"¤*  Z_œ 8‰jŸ. €œ êÄÌ. u"  
j. ê$Ì&. *  €{ß¦œ f_œ h8‰fjŸ. f€œ   ¦fhfj . *  ¦êÄÖ. \b¦æC_	  ƒ‚ß  œ  ê
Ö. Dw$Dwg'*  Ì Â_œ Ä8‰ÂjŸ. E€œ êÄÂ. "  ÂÄÂj.  ê&Â(. *  ò;Aðµ  ,ñµ  (œ p_œ r8‰pj  p"r&p(j*  Ÿ. ',2  W,2  1,  ñµ    . *  >ðµ   à. œ êÄ¸  à. "ê(¸*  d.        Ä. Äþ. †_ˆ_	  .     $  . . þ. †ˆ"&ðÈ$. 
  Š
2 ‰  2        ®N   ÂˆÇ*  (@    ÂˆÇ   ¯”L  0³@  $	cT@  *  d }@  çM@  “y@  ¯ˆw@  ØM@  *  ØÀN@  –,º@  œ,Ž@  œ,B@  œ,–y@  *  œ,Æ~@  ÿ-Ð@  Y/€p@  ?MÐ@  æY€@  *  ìYØx@  ÕZ³@  ÿ_p&@  E`€W@  ÍdÀD@  *  hf  @  of$	@  ÕfìY@  ãfcM@  ãfÄ…@  *  g@`@  g@†@  [g 2@  Tqn	@  Xq+K@  *  [qs"@  \qíq@  Œs°r@  þv@@  /x€W@  *  az€}@  zƒ@~@  Ãpq@  Ä s@      (        *  (@,’’^qhäŸÚdhðç KhHÀ  hî*  ôº‰h¶ (hhp(h|(¸hˆ	h—hh*  @8  hâÿ8p!hbI:h—hf}:e^hV<p!hd*  ÙYâhDõ_  hJE`¼phR`?Xh R`@Xh&*  ãfëyhB¿s  hÀs  h“y h`“yþvh¬ *  –yÖKh® –y2gh\–y±hZëyòhê
z?h° *  ¥}8wh,Æ~h^Æ~ÖKhàcp!hüÑ xhF*  Ù dh4à Kh2à±hè§€  hL’˜""hr  ’˜vLhX’˜ø€hN¯”   
   (@  *      €     @      
 	        *  &            	 
        *  L                       ! ÿ   *  r         0 @ P ` p             ˜                   B*  Bãf  ÿÿ                              h     p*  pßFN
`ßHN
`ßHNß `_&  FN`HN`H N&`*  –b_d_¬ &f¦æ&&
&
&
_^_	  BD   bd¬  ^$E`€W&B(D*  ¼ÞßÿÿP
R
T
V
  
^
f
h_	(  Þ
PRTVÕfìY^"f&h  â‚T¢_	  jJß'NFß§k(  ‚T¢g@`jJNFk*  ü _ *ß§k’ _ ¦ß§k      œ _ *ß§k&   
*k’ ¦kœ $*(k*  "ž _ ´ß`
ß§kœ _ Ð×'^ Fƒæ—j"  ž 
´`kœ Ð ^(j*  HÎEÿŸ¥z _ ‚Àj_	    æ—jÎEÿŸ¥|   
z ‚jœ,–yj&| *  n_ ~Á^W¬  " 
ÀlÕÖÖÖ„ƒ‚  ~
^l*  ”Ö_	  BÞ… EñßnX_	rc ÷ßnX$  
¯ˆwBÞnXr&n(X*  º_	rd ðßnX_	re éßnX_	r#!Ô   rnXrnX"r  à                  2  2	    ‚*  ‚‰Ÿ
P&
&
&
v ögR 
R
ê_	  _	      D  PRR ê$Y/€p(D*  ¨
ö
ø
úß—j ÷ßÅ öß×& ö€  ú&  ö
øúj ÷ö&  ö(ú(  Î_	  ö
ü
þ
 




(  g@†öüþ  $(  ò

ßV_	  ü&_	  R	ßî
*  
VæY€ü&œ,Æ~R	"î$  VÝ_	  ü&_	  _	  R	æ—üÎEÿŸ¥(  V
æY€ü&œ,Ž“yR	ü*  6  _ ÖÀâ_	  &œ  ÎEÿŸ¥ _ V	æ—ü     
ÖâãfcM $V	(ü*  \ÎEÿŸ¥€ _ t_	  R	_ ÔÀâ_	  ¬ ` &  
€ tœ,BR	      Ôâ"ãfcM(` *  ‚_ šÀâ_	  ð—b  _	  æ—üÎEÿŸ¥‚ "  šâãfcMb ãfÄ…ü&‚    ¨_ °_	  _	  ü
‰üà
‰*  °
ÿ_p&g@†üüà*  Äà



_ ø_	  °Àâ_	  &œ  ÎE*  à
øìYØx°â"ãfcM*  êÿŸ¥  _ _	  Bâ&¬	ö   _ 
&(    \qíqBâ&¬	$(&*  
(
*ßÅ€ &ß× &ßÅp &ß×† &6
  ß§"  (
*& && † "&*  6ý\ _ Rß—R ýßÅ üß× üß§ý^ _ *  ý\ RR ýü ü"ý      $^ *  \pß—T ýßÅ üß× üÀâ_	  ¬ ` _ (  pT 
ýü üâãfcM$` *  ‚ß§ýf _ ÀŸ
RÀâ_	  ð—d  _	  À*  ý
f ÀRâãfcM d &ãfÄ…*  ¨â_	  ðÅ   ð×$   _	  5ß§ý` _ l	æ—"  âãfcM$ ãfÄ…ý ` &l	(  ÎüÎEŸÿŸ¥ _ ð_	  ü_	  FJ_ Öß§*  ü ðØMüg@`F J$Ö(  òýR _ ß§ýT _ _ l	Àâ_	  ð—(  ýR ýT l	 â$ãfcM*  b  _	  ß§ýf _ ¶€Àe >öê _	   b 
ãfÄ…ýf ¶ >$ê&  <      ‚  R	_	  üLŸ ê



(  ‚R	g@`üLê"*  ^


Àâ_	  ¬ d _ >ß§ýž (  
âãfcMd  >$ý&ž *  „_ >Àâ_	  ð—b  _	  Àâ_	  ðÅ   ð×$  >
âãfcMb ãfÄ…â ãfcM*  ª   _	  _ >æ—üÎEàÿ€  _	  &œ  ÎEàÿ   
ãfÄ…>ü ãfcM*  Ð¥†_ °Ÿ  ì_	  Bì¬	×'ê ß§(  
°ì\qíqBì¬	 ê(*  öj _ ‚	ß§j _ $ß§ýh _ (	ß§ý&  j 
‚	j $ýh $(	(ý*  j _ @	¶
  
 
"      
$ßÅ€  ß×  ßÅ"  j 
@	 "$  $ & *  Bp  ß×†  €  _	  &œ  ÎEÿŸ¥  _ |Ÿ   
†  ãfcM   &|*  h  ì_	  Bì ¬	¶
  æ—ÎEàÿ€  _	  &  ì
\qíqBì ¬	(ãfcM*  Ž&œ  ÎEàÿ¥‡_ ØŸ  ì_	  Bì¬	
‰$  Øì\qíqB ì"$¬	("  ´à
ä_	 &R	ßä$ß§*  à
ä &R	ä $  Ò* †_ îß§4 ƒ_ î_	  FJ_	  *  * 
î4 îg@`FJ"Xq+K  òBâ ¬	
‰üà
‰üà
‰*  Bâ 
¬	ü      àüà$  &à_ Öß§d _ @Ÿ  æ_	  (  &àÖd @æ"g@`(  ,Fæ_	  &ö   _ 	ß§b _ "ß§(  Fæ
g@†&	b ""&*  PR _ "æ—ÎEŸÿŸ¥ _ Šß§b _ |"  R 
" Š "b (|*  v_	  ö5  _	  ß§N _ ¢ß§P *  ØMØMN "¢&(P (  œ_ ºö5  _	  _	   &
‰4*  ºØMçM  &$&4   Àà
‰ :à
‰&@àß—f?ß—h*  à 
:à&@àf?      h   Ü>‰  42èŸ  æ_	  Fæ_	*  >Ä s
42èæg@`Fæ*  ø  _	  ,ö   
‰,&à×'ê _ ¶ß§*  d }
g@†,,&àê&¶*  	ýh _ 4	ß
P1_	D
ß§ýj _ ¶ß
P&  ýh 4	PDýj $¶(P*  D	+ÕÖÖÖ‰EúÀâ_	   X_	rf   âãfcM"X&r*  j	óÀâ_	   X_	rh èßX_	rŒ á   âãfcMXr X$r"  	ß X_	r¯ Úß X_	r° Ó    Xr Xr Æ
  Æ
            &  Tqn	Tqn	Tqn	
Tqn	      Tqn	Tqn	  Ò
            &  ÕZ³ÕZ³0³
0³/x€W/x€W  Þ
            &  /x€W/x€W/x€W
/x€Waz€}az€}  ê
            &  ØÀNØÀNzƒ@~
zƒ@~of$	$	cT  ö
      @    @(  $	cT$	cT$	cT
@?MÐÿ-Ð@*  @@‰fAB@_	  ®	€_	  :
€ œ   @@œ,–y®	œ,–y :
*  *ÀE ÿÀ
Àx	Æ
<Õ‰E‰ … ‰
ð
ò
  Æ
<"ð&ò*  Pôß—l ñßÅ` ðß× ðßÅ ðß× ð‰‰_&  ôl 
ñð ðð  "ð   v~æX‰  @ÀEÿ   _	  ‰        ~X–,º       ÆN   Â`Ç*  ($    Â`Ç   ¯”L  ’^q@  ŸÚd@  *  |L@  	h—@  I:h—@  ÙYâ@  õ_  @  *  E`¼p@  R`?X@  R`@X@  ãfëy@  Xq+K@  *  Œs°r@  þv@@  –yÖK@  –y2g@  –y±@  *  
z?@  Æ~ÖK@  Ù d@  à K@  §€  @  *  øÐ@  Ãpq@  Ä s@  ’˜""@  ’˜vL@  *      (  (@,
0³hÞ$	h¤$	cTh® *  ØÀNhFœ,€Qhfœ,–yh”	ÿ-Ðh	?MÐh	*  ÕZ³hVof$	hö Tqn	hš/x€WhVaz€}h<  zƒ@~ht¯”   
   (@  *      €     @      
 	        *        &            	 
        *  L                 ! ÿ   *  r         0 @ P ` p           *  ˜              ‰fœ  ÎEÿŸ¥†   &† *  ¾ _ è ¦œ  ÎEÿŸ¥† _ è ß ¬ _	¤ä Õ‰  è † è ¬ "¤$ä *  ä E‰ß   _	  ± ÷‰fœ  ÎEÿŸ¥† _ è   
E`¼p ’˜vL’˜"""† (è *  
¦œ  ÎEÿŸ¥† _ è ß ¬ _	¤ä ¦œ  ÎEÿ  † è ¬ ¤ ä *  0Ÿ¥z _ à ¦œ  ÎEÿŸ¥~ _ Tô‹ 
ÆŸ¬  z à ~ T*  V ’ _ à ô‹ ½Ÿ   _	  ³ ¸‰fœ  ÎE        ’ à ’˜vL’˜""*  |ÿŸ¥† _ è ¦œ  ÎEÿŸ¥† _ è ß ¬ œ  † è †  è &¬ *  ¢  ‰
¢×'¬  fœ  ÎEÿŸ¥z _ Ö  
¢¬ "z (Ö*  È_¬  _ V;fœ  ÎEÿŸ¥~ _ 2_¬     V~ "2( *  î_ V×¬  -×'¬  ß§ V _ Lß§ "  V¬ E`¼p V $L(E`¼p *  Z _  Ÿ
¢_,ß._	f    _¬ ’   Z 
 ¢,.f&’ *  :_ ü_¬  _ VØß
¬ °Õ‰_   _	    ü V¬ $’˜vL(’˜""*  `² E‰‰@A&œ  ÎEÿŸ¥~ _ ¶¬    ~  ¶& *        †_ òBœ Cœ ƒàÂ	ß¢‚
Ÿ   ƒŸ  ß   ò¢ 	h—&	h—*  ¬  !ß  &œ  ÎEÿŸ¥| _ ò¬  _   I:h—
I:h—| ò$ *  ÒÞBœ Cœ Ú¬ ’ _ ò
Ã Ð
¢‰  Þ’ ò&¢*  ø                 0    00
0*   00ÿÿÿÄˆŽ8Î¶$      ÄˆŽ8Î¶$  Dÿÿÿÿÿ   `*  `    *  †ÿÿ ÿÿÿ‰
øfœ  ÎEÿŸ
  ø(*  ¬¦œ  ÎEÿŸ_œ úßE ÿúŸœ üßE ÿüß'        úú ü&ü  Ò† ß§ l _ Ø
‰    &  † ŸÚd l Ø
z?R`?X&  ê  Ÿ
  _ Äß'† _ Øß'z ß'ú*  Æ~ÖK’^qÄ† Øz $ú    _ è‰   þßþ$
‰    *   
èÄ sR`?X þþ$Ù d  ( Ÿ
 ‰       ß'(   Ù d Ä sR`?X Ù dà K*  :z ß'ü _ ðfœ  ÎEÿŸ_œ úßE  z ü ð &ú*  ` ÿú¦œ  ÎEÿŸŸœ üßE ÿü8‰F€x   úüü"$F*  †&_	Hßß'ú ß'ú’ _ è_®ß°_	&        &Hú ú’ è"®&°*  ¬f    _ Äß'ú _ è×¬  ì_ èß'ú  fÄú è$è(ú*  Ò’ ­  ó	   ó•  ó•
  3Š 3Š   ’ *  øó•0  ß'ú– ß'ú” Ÿ
øß   _	   ú– ú” ø"øÐ& *      äßœ 4 68‰4FŸ×' (ßœ$  |Lä464F"*  D ` b8‰`FŸ5ó‹ _ þô‹   `b`F"þ*  j_ ô¬  '×¬  ó‹  _ ô‹ _ 
   *  ô¬  _ *×' ßøô‹ 	_   *      ø(   ¶×' ÷_	Hô
‰      
‰    (  HE`¼pŸÚdÆ~ÖKR`?X
z?*  Ò  Õ‰ß   _	  Z E‰_   Ÿ   _	(  Æ~ÖKE`¼p ’˜vL’˜""’˜vL&’˜vL*  ø  \ ó_   Ÿ   _	  R è_   Ÿ   ’˜""’˜vL’˜vL’˜""$’˜vL"     _	  q Ýß   _	  b Öß *  ’˜vL
’˜""E`¼p ’˜vL’˜"" E`¼p *  <  _	   Ï @À… ‰_	  fœ  ÎE  ’˜vL’˜"""ÙYâ*  bÿŸ¥† _ À¦œ  ÎEÿŸ¥† _ Àfœ  ÎEÿ  † À†  À*  ˆŸ¥z _ Ðfœ  ÎEÿŸ¥~ _ Ð×¬  ×¬  z       Ð~ Ð*  ®  ×¬  
Õ‰ß   _	  ´ E‰_   E`¼p ’˜vL’˜""*  Ô  _	  y ÷‰_	  fœ  ÎEÿŸ¥† _ À¦œ    ’˜vL’˜""ÙYâ† $À*  úÎEÿŸ¥† _ Àfœ  ÎEÿŸ¥z _ Ðfœ  ÎE  
† Àz "Ð*   ÿŸ¥~ _ Ð×¬  Î×¬  Ê¿ 	   
  ~ Ð*  F  0 . 0 , 2 * 4 ‰_	  fœ  ÎEÿŸ¥† _ $  . 
0 , 2 * 4 ÙYâ$† *  l¦œ  ÎEÿŸ¥† _ fœ  ÎEÿŸ¥z _    † "z ( *  ’_¬  _ .fœ  ÎEÿŸ¥~ _ Ä×¬     .~ "Ä*  ¸:×¬  6_¬        _ Ü_¬ ’ _ .À—   Ü ’ &.*  Þ ÀE ÿÀçp À J ßÅ   ß×   òÅp   *  E`¼p p JE`¼p E`¼p  "E`¼p"  ò×|   ò—  ‰  @> Õ‰ß (  |  Ãpq@>R`@X  E`¼p *  "  _	  µ E‰_   _	  V ÷‰_	  Õ‰‰   ’˜vL’˜""’˜vL’˜"""ÙYâ*  Hfœ  ÎEÿŸ¥† _ ø¦œ  ÎEÿŸ¥† _ øfœ  † ø † &ø*  n  ÎEÿŸ¥z _ Š_¬  _ ´ß§ l _   z Š ´"ŸÚd $l   ”	_	        	_	  (  	Xq+K
ãfëy§€  
z?	Xq+K*  ¦      	Ÿ
         fœ  ÎEÿŸ¥z _ Ô_¬ &  ãfëyõ_  ŸÚd
	’^qz $Ô  Ì _ ôß§ l _ 	
‰    &   
ôŸÚd l 	ŸÚdE`¼p  æ  
‰      Ÿ
  Õ‰ß (  Æ~ÖK
z?
R`?XÆ~ÖK’^qE`¼p *  ü  _	  ¶ E‰_   _	  · ÷ ‰fœ  ÎEÿ  ’˜vL’˜""’˜vL’˜""*  "	Ÿ¥† _ r	¦œ  ÎEÿŸ¥† _ r	¦œ  ÎEÿŸ¥  † r	† r	*  H	z _ ^	Ÿ¬  _ ^	ß§ l _ ‚	_ à&  z 
^	 ^	ŸÚd l $‚	(à*  n	Õ‰ß   _	  ¸ E‰Ÿ   _	  ¹ ÷Õ… "  
E`¼p ’˜vL’˜""’˜vL ’˜""*  ”	_      Ì	ffœ  ÎEÿŸ¥~ _ Ò	_   ‰       Ì	~ Ò	"–y±&Ãpq(–y±*  º	  ß  Ê	ßŒ   
‰      fœ  ÎEÿŸ¥| "  –y2g–y2g
Ê	–yÖK–yÖK&| &  à	_ ®	fœ  ÎEÿŸ¥‚ _ ®	 
… ÀÌ	û  ®	‚ ®	"Ì	       N   Â°Ç*  (@$    Â°Ç   ¯”L  ŸÚd@  ç K@  *  À  @  n –@  ¯ˆw@  ôº‰@  Y/€p@  *  @8  @  ÿ8p!@  }:e^@  <p!@  ÙYâ@  *  õ_  @  E`€W@  ÍdÀD@  hf  @  ãfëy@  *  [g 2@  Xq+K@  [qs"@  \qíq@  Œs°r@  *  ¿s  @  Às  @  þv@@  “y @  “yþv@  *  –yÖK@  ëyò      @  
z?@  ¥}8w@  Æ~@  *  Æ~ÖK@  cp!@  Ñ x@  à±@  øÐ@  *  ³0 @  µ Z@  Ãpq@  ’˜""@  ’˜vL@  *  ’˜ø€@      (  (@,<d }hîçMhØ*  thn“yh&
ØMh|D°rhðœ,ŽhH*  œ,BhPœ,Æ~hæY€hú	ìYØxh¶ÿ_p&h*  ÕfìYh® ãfcMhv	ãfÄ…hŽ	g@`hÊ	g@†h¢	"  “y¡EhŠ
kzµWhL_¥®shä¯”   
   (@  *      €     @      
 	        *  &            	 
        *  L                 ! ÿ   *  r         0 @ P ` p                   ˜                   @*  @ê ˆë Žì ”î ší  {¦å ¬é ²ç ¸|&  ˆ
Ž”š ¦¬"²&¸&  f¾AÄŠÊÐxÖBÜâ   
 f *  ¾ÄÊÐÖÜâ  "
 $f   ˆ  \   ^   X  *    \ 
  ^   X    œ Z   V   `   *   Z  
 V   `     °.   ,   *   6 *  .   
,   *   6   Ä  :   >   B  *    : 
  >   B    Ø F    N        " P  & *   F  
  N  " P  & *  ìh  & j   	 Ž 
 –  ”   ‰D‰Ç_	  Ÿ(  h  & 
j  Ž – ” &Y/€p      ß´   _	  0_	L_	ð_ *  cp! 
´ øÐn –0Lð$  ._	ä:‰rßÅp   ß×|   À—¹ <‰ô*  ä
rcp!| cp!¹ "ô*  NH€"” ×'¼ À’   _	_ —¬"  H
” ¼ ’ cp! "&*  t$ ( ß‚¬ /—¬$ ) ßè¬ 'F‰ä ¤ß  ‚¬ è¬ &¤*  š¬¬ D‰¦F‰æ ²ß¸¬ öF‰è Äß²¬ D‰"  ¬¬ ²¸      ¬  Ä$²&¬ *  ÀÔB‰Àß   B<‰@Ÿ¬ P‰À¬   “y @"¬ (¬ *  æßÅ`   _Ð  ßÅ   ŸÐ  ß ßî¬ *  cp!cp!cp!cp! cp! &î(¬ *  êßÐ¬ å_	n
® æ—  ÎEÿŸ¥  _ @ß§   Ð
¬ n® cp!   &@*  2 ` _ @Ÿ
® Õ‰E‰   ‰À´ ¬ 	   cp! ` @® "´ $  XßÅp   ß×‚   ß—˜  ß5 @Â ß—š &  
cp!‚ cp!˜ cp! Â "š *  x _	Õ‰E‰ä   å   è   é   æ   ç   cp! *  ž  |  A  Š   x    ‰ß§ ` _ Ú   c      p! "` (Ú*  ÄB‰À<‰ˆÚÖ_	äÞÕ‰E‰  ‰B‰@  ˆÚäÞ*  ê =ß'    9
âÀâ_	v	&œ  ÎEÿŸ¥   ’˜ø€ç Kââv	( *  _ @Àâ_	v	¬  _ fÀâ_	v	¬   @âv	 f â$v	*  6’ _ fß® 
® Àâ_	v	¬ ` _   ’ 
f® ® âv	$` *  \jß âËE‰Õ‰‰æ—  ÎEÿŸ¥  _ D  j
âcp!"  (D&  ‚ß§ N _ D×'   _ Dß§ l _ (  cp! N DëyòDŸÚd  l *  ¤DÀ  _	v	&œ  ÎEÿŸ¥  _ DÀ  _	v	¬"  Dõ_        v	  D"õ_  &v	*  Ê P _ DÀ  _	v	&œ  ÎEÿŸ¥ _ DÀ  P D@8  v	  &D*  ð  _	v	&œ  ÎEÿŸ¥z _ À  _	v	¬  "  @8  v	z @8  "v	(   _ D
‰      _	      *  Dcp!Às  Æ~ÖK\qíqãfëy@8    ,  F_	        F
‰(  ¿s  F
Xq+Kãfëy@8  
z?F$  >      ‰ ‰ß
  ‰  À    ÀT(  ŸÚdcp!Æ~ÖKÀ  ³0 À T(  ^nr €` 
‰  °   ß² ß  _	*  nr³0  ° ² "ôº‰ $cp! (  ‚ðß ¸ ß§µ * †_ ¶ß§      µ 4 ƒ_ ¶
‰*  ð
ôº‰ ¸ µ * ¶µ 4 $¶  ¦´     
‰  ´   â
‰´ &  ´ ¿s  Æ~ÖKôº‰´ ôº‰´ *  º    ‰  ~  ~  ~  ~  ~  ~  €  *  cp!Æ~ÖK~ ~ ~ ~ ~ "~ &€ *  àx 	 ‚ 
 x  x   ‰Á—¹ W  ß—  @<‰"  x ‚ x x ¹ " $cp! (  ÂF€ ßÅp   Ð  ‰ßÅ€   ß×   
&  ÂFcp!cp!cp!" $cp!  *  ß—´   Ÿ
  Ÿ  ‰  ´ (  –yÖK´ 
–yÖK–yÖK–yÖKÃpq´ *  @   ‰       . ‰ß¶   ßÎ PßÐ Mß"  –yÖKcp! ¶ ’˜      vLÎ $Ð &  fÌ NŸ
  ß¶  ßÐ   æÎ € 6Š &  Ì 
}:e^¶ ôº‰ Ð À  Î *  ˆ Ÿ ‰  Ì HÀHðµ  ð. _	  ©!*  ³0  ³0  µ ZÌ HH&’˜""*  ®_ úÂ
Jœ  J
‰   JßJLŸLßÕ*  ú
ÂJJôº‰ J J"L&L  Ô€  ‰  Ì  L
‰æ $  ôº‰ 
µ ZÌ ôº‰ Læ *  æ2 Nß´   ßÿÿ  Õ‰E‰_	  %!ú_	  &!*  ôº‰2 N
´ ôº‰Æ~’˜""&’˜""$  ö‰
  
 
 ßÅ`   ß×   ßÅ (  
¿s  ¿s   ¿s   ¿s   ¿s    ,  ß×   ß        ß—J &  ¿s   
¿s  cp! ¿s   J   > ß§ ˜ _ Rß—L  ‰4 *  ¿s   cp! 
˜ RL ¿s   4   V2 0 . , * 8 6 < : @ *  2 0 . 
, * 8 6 < : @ *  j> D B H F L J P N ‰ABœ ÂE ÿŸ v  ‚Â
*  > D B 
H F L J P N $v *  Â‚T± _¬ N _ ´ñÅ   ñ×    _¬  TN ´"  *  ¶ P _ ÌñÅ   ñ×"   ‰         ‰C  P Ì" *  ÜABßŠ Òß¬ N _ øßŒ ÒÄÒfœ  ÎE  
Š ÒN øŒ Ò"Ò*  ðÿŸ¥ˆ _ ñÅ   1Ñ  ¦œ        ÎEðÿŸ¥ˆ _   ˆ $ˆ *  (4òÅ   2Ñ  fœ  ÎEðÿƒ¦œ  ÎEðÿ„ßÔ
  4&Ô(  NÖß'ÔÖƒÀÔßÖÔÖß'ÒŠ ßÔ*  ÖÔ
ÖÔÖÔÖÒ Š &Ô*  rÐÄ 
ƒ_	ŽßÖÐÄ †_	Ž‰_ _ªŸ  ÐŽÖÐŽ" &ª$  ˜¨Ÿ²
‰      
‰      
‰      … (  ¨²Ñ xÆ~ÖKÆ~ÖKÑ x Æ~ÖK$  ¸œ œ œ œ œ œ œ œ œ œ             *  œ œ œ 
œ œ œ œ œ œ œ    Øœ œ ž ž         ‰A
*  œ œ ž 
ž         ô  
 
 ßÅ€   ß×         ßÅp (  ¥}8w¥}8w ¥}8w ¥}8w ¥}8w  	  ß×z   ß   ß  &  ¥}8wz 
¥}8wà±¥}8w à±*   	 _  _¬ N _ D	ÂÐßÅ   ŸÐ  _¬*  ¥}8w 
¥}8w N D	Ð ¥}8w$¥}8w*  F	 P _ 4	Bœ ÂE ÿÂ
Â‚¸Â‚Ÿ ‰  P 4	¸&¥}8w   l	      v	   v	n	_	    n	p	Œ	Àp	…  _	  (  n	
\qíqãfëyn	p	Œ	p	Xq+K  ’	  n	p	Œ	…   ãfëyn	p	
Œ	 ¢	   ¢	‰_ª	
‰  œ	  _	    œ	  Œ	Ÿ
*  ª	œ	Æ~ÖK[g 2ãfëyœ	õ_  Œ	
  ¾	  ‰    ëyò Ê	         Ê	‰_ä	_Â	_	    Ä	  Œ	
‰Ä	  (  ä	Â	hf  ãfëyÄ	õ_  Œ	Ä	*  æ	  ßg  ä	ß
  ß
Â	î‰‰@ÐÐÐÕ  Æ~ÖKÆ~ÖK
ä	ëyòÂ	*  
‰E‰    ""    ‰ß  
Ÿ
  "  """cp!$
(Æ~*  2
ß  x×'   (æ—
ÎEÿŸ¥ _ ,æ—
ÎE  “y Æ~
 ",&
*  X
ÿŸ¥€ _ v
æ—
ÎEÿŸ¥~ _ ,

ß—´   € v

~  ,$
(´ *  ~

ß  Š

‰´   
L×'   ‚G‡æ—
ÎEÿŸ¥"  
“yþv
Š
´ 
Æ~"
*  ¤
  _ ,ß§
, _ ,7æ—
ÎEÿŸ¥ _     
      ,
, ,
$ *  Ê
(æ—
ÎEÿŸ¥~ _ (ßµ Ç ß'â   À   (
~ (Ç "â $ÿ8p!*  ð
´ 2 Àe< Á
Á`  ÂEÿ?¡ BBBÂ  ´ *  z 
,    €l
ìÕ‰ß
  _	  #!E‰   
<p!

’˜vL"’˜""       êN   Â`Ç*  *€p    Â`Ç   ¯”L  ä
z@  &3@  *  &˜@  4Ís@  #a@  @  ¯ˆw@  *  &®S@  &0Ï@  *´r@  *¹s@  *‰‹@  *  HØh@  H i@  „!Àv@  U(@  -G Z@  *  ;K }@  ÎK°@  L
z@  _M¹8@  E`€W@  *  R`Àv@  ÍdÀD@  hf  @  2gÀÁ@  2g È      @  *  2g@Î@  [g 2@  Xq+K@  [qs"@  \qíq@  *  ¬q
z@  ïq>5@  ïq?5@  Œs°r@  þv@@  *  Bx˜&@  Bx„:@  ­x @  i†xP@  ‰‹ 9@  *  Œp<@  Œq<@  øÐ@    @   d@  *    @   d@  	  @  	 d@  µ Z@  *  ¹ @  *’˜I@  ´­°ù@      (  *€p,Ø"  å Xh`;	¢`h
 Œ¢`h  ¯”   
   *€p      
  
  ‰_	  _	  ÄÌb_	&  Bx˜&
*´rE`€WÄÌb     ÆÌb
  
  ß  &  E`€WÆÌ
b#a-G Z d  .   ß    ß    ß%   ß&  2gÀÁ	 d
2g È      	 d2g@Î*¹s  F     _	  pF‰Ôvß    _	(   døÐ
HØhpv døÐ  ^   |ß    ß    _	ö(  HØh|
*‰‹‰‹ 9*‰‹‰‹ 9ö  t   ˆ_	ö  ˆ
‰2   (    ˆ
ö  ˆ  2 L
z  † È
‰2   È_	  ÄÎÌ*  È  2 
¬q
zÈ[g 2ÄÎÌ  š b_	  Æ  ÌbŸ
  _	vß(  b[g 2
Æ‰‹ 9Ìb-G Zv   ²   =_	  ÆÎ  bß  _	Œ_	*  -G Z
\qíqÆÎïq>5bïq>5Œ  Î Èï_	 "_	 "
&  È
   "   "      *  ä   ßµ   Ÿ
  ßµ   Ÿ
  ß
  
_	*  *’˜I
   *’˜I   *’˜I *’˜I*  
”
×'   _	”_	vÇ_	  ÆÎÎbÀ*  ”
*¹s”vXq+K Æ"Î$Î&b   0ß  &ß  _	  _	  Äb_	  (  #aBx˜&Œq<¯ˆwÄb¯ˆw  LÆbß%   _	    b_	  &  Æb*¹s¯ˆw„!Àvb¯ˆw*  d  b
  Õ‰@‰'"	@‰("@‰)"@‰*Üå  R`Àvb
*¹s&  ŠÚß  _	  ÄÎ  bß  _	Xñ‰*  -G Z\qíqÄÎÎK°bÎK° X  ¬    ´
‰   Ê_	  Ä(  µ ZÎK°      ´   ÊXq+KÄ  ÀÎ b… &ß  @_	  ÆÎÎ*  Î   b-G ZXq+KÆÎÎ  Úb_	  ÆÌ  b
  ß$  b\qíq
ÆÌïq?5b_M¹8  î   ß—   Ÿ
  ‰  *     *’˜I
*’˜I _M¹8_M¹8¹      T  ß— ‰    ßìÿ(  _M¹8T*’˜I ¹ *’˜I"       ß  ‰    JÀJð'(  ;K };K };K }µ Z;K }JJ  6   ð_	  ÆÎ  b
‰   (  ïq?5Xq+KÆÎ;K }b   (  NÊ€… ‰i _	  Ä  Ìb_	  Æ  Ìbß
*  Êhf        ÄÌbhf  Æ"Ì$b  r  … _	  Ä Ìb_	  (  -G Z
[g 2Ä   Ìb[g 2  †ÆÎÌbŸ
  … &_	f    _	(  ÆÎÌ
b-G ZfL
z  &   f    À  ,2  ×'   _	  ò_	(  f¬q
z   d*¹s H i"ò&  Â      À  ,2  ×'   _	  ò_	*  ´­°ù  ÎK° d*¹s H i"ò*  ä      À  x	Ð€… &@ð¥B  
ðµ     ´­°ù  ;K }*¹sÐ*  
Õ€… @‰+"@‰,"E÷&@ðµ  ðµ  *  0ðµ€  ð¥  Õ€… Eü_   _   _	  "ä
z      &ä
z*  V      _	  … ‰h ‰@Àå2 Ap 8 ð% 2   &®S    i†xP*  |ÂeB > Ã
×p C`> ò   ò  Âe*  ¢
 Ãå Â. Â
 Àe2 Áe2 ‚‚~‰LFRG  È. Z    bLPT  bLPT       VN   Â€À*  D    Â€À   ¯”L  @  Sð_@  *  ²2CM@  vL@@  {L€@  ¯dg@  Œs°r@  *  þv@@  [zœ5@  [z·5@  ³´d@      (    D,àDh  ¯”   
   D  &    _	  ‰ß7    @ß5   <
  ß    ß*  {L€[zœ5[z·5vL@   "²2CM  "   
 ‰  †           Á0 _(  ³´d ³´d 
³´d ³´d† 0 $  :  _’ _” _”– _”˜ ßJš ß2 ž _	&   ’ ” – ˜ Jš 2  ž "  Z   Ò 4š œ ‰Jœ ß  Jß œ ‰(  Sð_Ò 4
š œ Jœ Jœ *  x Jœ ße  _ * 
  
  ‰              "  Jœ ³´d * ²2CMvL@*  ž    ¤ +   DUMP OF CODE PSECT DEFINITIO  ¤   Ä N WORK FILE      Ò *  Ò 
VMA = 
 NAME = 
 PSECT SIZE (O)  ø CTAL BYTES) = 
 SEGMENT NUMBER  =      
 TYPE CODE = "   0  0ÿÿ  ž            ”   –   ˜ ÿÿ  
ž  ” – ˜        PN   Â Á*  •€%    Â Á   ¯”L  @  –Î@  *  –Î@  –"&@  –¡E@  –vL@  t!Àv@  *  ""œw@  ²2CM@  :Ps@  vL@@  N"&@  *  Rˆ,@  Ùf Z@  \gÏ@  Tq8"@  \q°r@  *  ‡s s@  Œs°r@  þv@@  “yÎ@  hÞ™@  *  „¯½`@  ° }@  ±“y@      (  •€%,À  •€%hÈ ­•, ¯”   
   •€%          :        #  $ "    
 : ­•    < *  <           V Z V Š V    .       (    
–Î V Z V       Š V *  b                CROSS  REFERENCE  LISTI*  ˆ NG< NAME                            RE*  ® FERENCES & DEFINITIONS (#)ß   _	  f   hÞ™" &*  Ô À  ð  0
 ð$  ß	  ð• # ð$  ð  –"&±“y*  ú    Å  ß	  À  ß	  ‡Á  Â< Ã# b”Â~(  –Î
  ‡s s–"&° }–Î < *   Å< ß	  ß ìÀ†_	  _ rð¥öÿ* À¶"  < 
Tq8" †\gÏr(¶(  F_	  _ rÀ  ß	  ÅD ß	  ß Àž_	*  \gÏ
r–"&„¯½`D Rˆ, $ž*  j  ß	ÈÀ  ß	  ÅD ß	  ……   REL      ES -"  \gÏ
ÈN"&„¯½`D t!Àv*   ERROR IN CREF  MERGE - ERROR IN CREF*  ¶  CREF READ ERROR
  ßJ   Å< ß	  ß  vL@J ²2CM"< &\q°r*  Ü H Â  ß	rß	€Â ß	rÅ< ß	  ß )*  H 
“yÎr€ r< "\q°r& *  ÀZ_	  %Â Ã  Ä “$ß	€×'H   Z\gÏ –Î$€(H *  (f äß	°Ä Â  Ò  ß H ×ß% H Æ  
°“yÎH &H *  Nß	°Ãß	°‡   RETRN - ERROR IN CREFÄ
  °°*  t Ã  Ò‡ Â  Ä À  ÀgH Ð•	 ”ß¥  –Î–vL“yÎ      H &  š#   Ð•# Ÿ
H ße H ‡ ßH  _	    (  –ÎH H H N"& "Ùf Z$“yÎ  ¼H ‡   H  ­•                N   Â€í*  Ç s    Â€í   ¯”L  Œs°r@  þv@@  "      (  Ç s,\Ç«¿sh  ¯”   
   Ç s  *    f&f¦æ&ÕD$)_Ê_Ôß ÐßÐÈ  ÊÔ"Ð&Ð(È&  & ß'ÈÊ_ >ßÈÌßÊÎßÈÒßgÊ*  ÈÊ>ÈÌÊÎÈ Ò$Ê*  H ÒŸÒÀÈÁÒß	ß	>ÀÊß	!"  ÒÒÈÒ> Ê$*  n  ß	>ÀÈß	ß	>ÀÎÁÌß	>ß'        >È>Î"Ì&>*  ” ÒÎßÌÒß'ÒÌßÎÒß
ÎÀÒÁ*  ÒÎÌÒÒÌÎÒ"Î&Ò*  º Îß	÷  Ÿ
ÌÀÌÁÒß	÷  ß'ÌÎÓ"  ÎÌÌÒ$Ì&Î*  à Ÿ
Ìß
ÎÂÎÂçÈÃÊÃçÌƒ ÂÐÂ
Â  ÌÎÎÈÊÌ$Ð*  òÈöòÎÖßÌÈŸ
ÐÂÐÂ
ÂòÌö*  ÈöÎÖÌÈÐÐ&Ì(ö*  ,òÊÖßÎÊŸ
Ðß
Ð;ÂÐÂ
ÂŸöÈ&  ÊÖÎÊÐÐÐ&ö(È*  RŸÖÊÃÊÃçÈ×  _ 2 ×'È _ & Ÿ
  ÖÊÊÈ      2 È&& *  xÈß'ÈÊÞÀÈ
ß	óòßÈÌÀÌ"  ÈÈ
ÊÈ È"Ì&Ì*  ž€
ß	>ß
ÌÁÌ@€
ß	ñßÞ„ƒ‚€  >ÌÌ  Ä……                  *  ÂÂaCÃÃaÅÔ“$‡‚DÎe Îe   Ô$  <‡ ÂÂaCÃÃa…ÒS…ÊK‡        âN   ÂXÀ*  Sð_    ÂXÀ   ¯”L  Œs°r@  þv@@  *  :©ÿ@  :©Ï_@  [©(}@      (  Sð_,P  Sð_h ¯”   
   Sð_  *    L X v †   Â Ú &f¦æ&CD@&*  L X v 
†   Â Ú       *  & ×"ÿÿÂ’Â
Âz	  _ & €ãÖ„ƒ‚€… 
    & *  L _	8Ÿ  _ ` _	8  Â ß	  Ð•. Ó_	J  8` 8:©ÿ(J*  r _ 6_	8Ÿ  ÁE ÿ_ Ž _	8  Â ß	  Ó  6
8Ž 8&:©Ï_*  ˜ _	J_ 6_	8æƒ
Â’ÂP”Â
ûƒÓ_	J  J
68(J*  ¾ _ 6_	8  _	J_	8æ_ ¬ _	8æƒ
&
  6
8J8¬ "8*  ä Î’ÎÁß	  Î
ùÖƒÓ_	J_ 6_	8  [©(}J"6&8*  
  _	J_	8æ¦_ è ƒ
Â’ƒ
Ð”Â
ýÃ5   J8è $  0ƒ
_ 6… &Îe Ô%  „  … „Ô…   6             °N   ÂÀÆ*  ¯ d    ÂÀÆ   ¯”L  öXz@  ""œw@  *  „:"&@  :Ps@  ¯dg@  \gÏ@  ‘m }@  *  Œs°r@  þv@@  [zœ5@  :©Ï_@  S«µW@  *  •± }@      (  ¯ d,ø‰hhd	@`h~*  ¤@`hl¥ Xhz¯ dhZ¯ dhÔ|L@`h*  $N@`h¢=†@`h´$­hh  $­…hÓ¯”   
   ¯ d          ÿÿ    <  <      DD  <  <   € *  €                                       *  ¦                                       *  Ì     P  0 1 2 3 4 5 6 71011121314151617*  ò 2021222324252627303132      3334353637€ Â 
  $€ ( *  Ã ß  ß7    &À  ð  ðb  ß	     [zœ5öXz„:"& *  >  ‡€… _	  À^_	  À  _	  _     WRI*  •± }""œw^\gÏ:Ps\gÏ"‘m }  dTE ERR ON INTERMEDIATE FILEL   €*  €S’ß7    æ¦ÃB’Â“Ò Ó  ‚“þÿÓ  [zœ5
¯dgÒ *  ¦  × Ð _	Ôß‚ƒß
 ß  ß
   Ð Ô $ ( *  Ì_	… ‰Ã€ Â
 Ó$æÁ•  S sÿÿS 
  € *  òsÿÿÓŽ~‰€ Ð Ä
 Ãå ÀÂ ß	  	‰  € Ð $:©Ï_*  € Ð ß‰      ”Ä
… ”_	€Ág  
…   € Ð 
 €$    >   B*  B           <¤	|L$N=†‰ß LßNF  "L&N(F*  h_ Æ‰ß LßPF_ Æ‰ß LßRF_ "  ÆLPFÆ L$R&F*  ŽÆ‰ß LßTF_ Æ‰ß LßVF_ Æ&  ÆLTFÆL"V$F(Æ*  ´‰ß LßXF_ Æß  Dß   @ A$  
LXFÆS«µWD   & *  ÚÁ
 
  Â Ã Dß'LJÌ' fÂ5  
     LJ" *    ŠÁ _	€H_	ÔB>Ì5 É   €H      ÔB>*  &Š_	&Â5 ú_	"_ ßg  Ÿ ß   
&"    $ ( *  LßLJß%ÿÿJ
J‰‰: ‰@DFß  LJJJ"D&F*  rÿÿL_ Ì‰Â Ã Â5 ŠÁ _	€
Á  L
Ì    $€*  ˜ _	€ß%  Á
 
_	€öß%  _	   € 
 €" (*  ¾ß7    _	ÔŸ ß ‰&f&æ  ß   "  [zœ5¯dgÔ  "  (    ä@A_	&Ÿ  „€… 
  
&         v N   ÂXÀ*  ì]    ÂXÀ   ¯”L  Œs°r@  þv@@        ( ì]h  ¯      ”   
             …        HN   Â˜Á*  „!    Â˜Á   ¯”L  @  Sð_@  *  ú&VN@  ²2CM@  vL@@  {L€@  ¯dg@  *  Œs°r@  þv@@  [zœ5@  [z·5@  µ Z@  "      (  „!,L
„!h  ¯”   
   „!  &    _	  ‰ß7    ,ß5   (
  ß\  ß*  {L€[zœ5[z·5vL@ \"²2CM  "   
 ‰  ^     ß0 (  µ Z µ Z 
µ Z µ Z^ 0 (  8 < 
‰  ÎZß2 †_	h À—Î€Àg€` _ *  < 
ÎZ2 †h Î €$µ Z *  \ * 
  
  ‰‰ß”ˆÀ—ÎÀeÎ
      ~’~ß*  * ²2CMvL@”ˆÎÎ"~&~*  ‚ ~€ß
~€
‚ß%  ~€
„_ ® ß ~"  ~€
~‚~„"® (~  ¨ ß|„_	  *hˆŠ‰”Š_	(  |„Sð_*hˆŠ”Š&  Â   ‚äˆŠ‰”Š×§Ï 	×§Ï	 	_	(  Sð_‚ä
ˆŠ”ŠÏÏ*  ä _ Ò_	æ_ Ò×§Ï _ ×§Ï ×§  ÒæÒÏ"Ï*  
Ïÿÿ_ _	$_ Ò×§Ï
 ø_ Ò_	  úH(  Ï$ÒÏ Ò$Sð_&ú(H  0ˆŠ‰”Š_	  ^¾ˆŠ‰(  ˆŠ
”ŠSð_^      ¾ˆŠ  H”Š_	  ¼ˆŠ‰”Š_	(  ”Š
Sð_¼ˆŠ”Š  `  .’ˆŠ‰”Š_	   *  Sð_.’
ˆŠ”ŠSð_    vÚˆŠ‰”Š×§Î0 $_	  Ø,(  ÚˆŠ”ŠÎSð_Ø,*  ’ˆŠ‰”ŠÀ—þÁ _ŒÁe _ŽÁe _&  ˆŠ
”Šþ Œ Ž(*  ¸Áe _	  î,ˆŠ‰”ŠÀ
éß•  ”ß Š(  
Sð_î,ˆŠ”Š"”(Š"  Þ‰”Š‰‰_	  >¦ˆŠ‰”Š_	(  ”ŠSð_>¦ˆŠ”Š  ü  \¦ˆŠ‰”Š‰‰_	  
*        Sð_\¦
ˆŠ”ŠSð_
  B
ˆŠ‰”Š‰‰_	  (	2ˆ(  B
ˆŠ”ŠSð_(	2ˆ  0Š‰”Š_	  ä2ˆŠ‰”(  Š”
ŠSð_ä2ˆŠ”  HŠ_	  DœˆŠ‰”Š_	  *  ŠSð_
DœˆŠ”ŠSð_&  `®	ˆŠ‰”Š×§Ïÿÿ×§Ï _	  (  ®	ˆ
Š”ŠÏÏ$Sð_(  ‚6	z	ˆŠ‰”Š_ Ì×§Ïþÿ×§Ï
 _	&  6	z	ˆ
Š”ŠÌÏ Ï  ¦  „	²	ˆŠ‰”Š_ Ì_	  *  Sð_„	²	
ˆŠ”ŠÌSð_  ¾¸	ú	ˆ      Š‰”Š‰  ¸	ú	ˆ
Š”Š Z%  ZŒ  `   DUMP OF ENT WORK FILE  

  ` |  |                           *  *
NAME =     4  4 
 VMA =    B  B
 SOURCE LINE = ‰   V  V
	 CLASS =    d*  dÿÿ ‚  ~ „  †  Ð  Ïÿÿ
   HOM  
‚~„†ÐÏ  ŠONYM VMA =    –%  –
 FATHER VMA = 
 SON VMA =    ¸  ¸
 BROTHER VMA =    Ì  Ì
 IDTABLE VMA =    à*  àÿÿ  Ò  Ô  Ö  Ø  Úÿÿ
   FLAG1 =  
Ò      ÔÖØÚ      *  

  FLAG2 = 

  FLAG3 = 

  FLAG  .4 = 
  PARAM NO =     D*  Dÿÿ  Ü  Ý  Þ  ß  üÿÿ
   LEVEL =  
ÜÝÞßü  j     l  l
	 USAGE =     z*  z

 DD LOC = 
 OTS LENGTH = 
 D*   EC PLACES = 

 ENT NO = ÿÿ  ç  æ
  $ç(æ*  Æ  â  ä  è  àÿÿ
   DIMENSION INFO:  â
äèà*  ìÿÿ
     MULTIPLIER = 
 UPPER BOUND   = B     
 OCCURS NO =    (*  (ÿÿ Œ Ž  ’ÿÿ
        CONDITION NA  
ŒŽ’  NME ENTRY:      Z*  Zÿÿ
   COND VARIABLE ENT NO = 
 VMA  € OF COND VAR =    *  
 VMA OF CEF = ÿÿ  à  â  ä  Ü  à â$ä(Ü*  ¶  Þÿÿ
   PIC LENGTH = 
 PIC PTR =  Þ  Ü T   Þ*  Þ
 VMA OF INDEXED TABLE = 
 VMA O  F 1ST INDEX NAME =     *  ÿÿ  é  ê  ì  îÿÿ
   ENT NO OF D  
éêìî  >EPENDING = R   J)  J
! MIN OCCURS OF DEPENDING TABLE =     p*  p
 VMA OF DEPENDEN      T TABLE = ÿÿ  ð  (ð!  –  ò  ôÿÿ
   KEY ORDINAL =    ò
ô ´%  ´
 ENT NO OF TABLE WITH KEYS = D   Ö'  Öÿÿ  ö  øÿÿ
   VAL OF ID PTR =    
öø ú  ú
 USER RECORD PTR =       
	 USE 1 = =       
	 USE 2 =     .*  .ÿÿ  ä  æ  è  êÿÿ
   RKEY!IKEY!L  
äæèê*  TTOP = 
 SAME AREA LINK = 
 ASSIG*  zNED LUN = 
 RUNTIME FLAG = ÿÿ  î  (î     ð  ò  óÿÿ
	   SDW = T  ð
òó º  º
 USE-OPEN BY      TE = L   Ð*  Ð
 AREA COUNT = 
 BLOK = 
 REC*  ö SIZE = 
 BADR = ÿÿ  ô  ö  ÷    ô"ö&÷*  	ø  ú  üÿÿ

 FD ENTRY:ÿÿ
  SEQUENTI  øúü  B	AL EXTENSION:E   P	)  P	
 TAPE POS = 
 LINAGE AREA PTR =    v	*  v	ÿÿ     ÿÿ
  RELATIVE EXTENSION: 
  
   œ	
 BUCKET SIZE =    ®	%  ®	ÿÿ   ÿÿ
  INDEXED EXTENSION: G
  
  Ð	  Ð	
 BUCKET SIZE =     â	  â	
 NO. OF KEYS =    ö	*  ö	ÿÿ     ÿÿ
 USER SWITCH EXTENSION
        
   
:    
#  


 ON-OFF = 
 SWITCH MASK =     >
  >
ÿÿ  Ü  Þÿÿ
  
ÜÞ       ZN   ÂhÓ*  j/     ÂhÓ   ¯”L  O¹’@  (LŸ@  *  (ÜŸ@  YÁ@  Y"&@  YµW@  Yáy@  *  YÏ@  YÐ@  Y®‘@  •)@  –Î@  *  –Î@  –"&@  –vL@  Ë g@  ž!Y@  *  œ't:@  ¯-€@  Y/€p@  vL@@  CMö@  *  N“y@  2gl@  \gÏ@  ‘m }@  Iq @  *  sŽr@  Œs°r@  )t  @  þv  @  þv@@  *  “yÎ@  áy²@  ïy q@  óyU<@  ÷y”`@  *  [zœ5@  ³èg@  Âàe@  :©@        „¯½`@  *  ‹¯=@  ‹¯@=@  ° }@  h±p!@  •± }@  *      (  j/ ,$YÎh”Y®sh:j/ h” *  j/Žh‚ è:  hü	 <  hÞ	<  h¼	+t8Fh
  0t  hò
ï© qhŠ ¯”   
   j/   *      AZ09-.++**"" ÿAZ--09 ÿ09.. ÿ  . * .     $. &* (.   &   "    *   *  "    .   .     < > D         .;   < 
> D  D   D  .   H   H ÿÿT Z h       	;m  T Z 
h  Z   Z  .()<=>+-*/,   h   h 	 .<=>+-*/,   t *  t               ß € 
€ _	  
€ &  € €  Y/€p&      € *  š f&
x òÿÿ 2Š 
t 2Š ßv _	n
  
x t  v &n*  À v ²
  €ž
 æÁ _	¶Öí²  ²œ  
  v ¶*  æ 2Š &
_	ÆÖ$Á  _ DW ÿÿ&Á _	*  ÆD$ (**  VôôôZpò‹% ò‹, ú•% 
 ßx ¸"  Vôô
ôZp&x *  2‰ïŸ
x ³²
   ò  ò  fy	  c_	  
x *  X8
z &
¦ Î
¶
 ²#  †Ž
€Ÿ  Á _	  8z & *  ~*hllˆò‹% 	ò‹, þ•$   Ÿ
z æÖÖ  *hl
lˆ"z *  ¤ò•  8ÖÖßz ‰ñò•   ,ß€ 
  z &€ *  Ê      øßz ‰ð—,  ‰²   òe   ò  z *  ð  —® - 	ò‹% Ýò‹, Ú‰ò×—®  - ó*  ò  €„2Š$ _	6—¬  ²ž $ —,   6*  < ò‹, 1—¬  &€ Ð¥C Ð¥O Ð¥*  bP 	È¥Y €_	Š _	€ß5   ò‹,   Š  [zœ5*  ˆò‹% ò¥  ß€ ò¥  _	®ß  "  € "®&ïy q*  ®Ÿ,   æ&fƒ Ä  Å  Ô¤Å
üß
    óyU<áy²óyU<(ïy q*  ÔÃ  Ä  Å   ß    …„ƒ… ò‹,    ïy qóyU<áy²ïy qóyU<*  ú_ Z×§  , ÃH _	8_	6¦ ¦ 2Š —¯  Z      
Ë gH 86*     + —¯  - òÕ  ²
 ò
 –%_ b&
  &b*  F&
¦ Î
²#  †Ž
€Ÿ  ß—   ß—   Á _	  Ë g  Ë g" & *  l*Nt~¶
 ¶ èÆe ² ² _ ZÖ  *Nt
~$Z*  ’€  @à2 ß€ Î‰=—% Oò
 ò  € *  ¸ ‰ð²
 @€
¦‚ à”‚~‚ò
  ò

 *  Þ2Š –%² . ²  0 ß ~ ß€ ß ~   ~  € (~ *  Ÿ, ~ ƒß€ ‰<‰ò~  À  ²   ~ € ~ *  *  ò
  òg~   €ì  œ àr ò•  _ –%
  ~ &*  P‰	ò   _ ‰H ²         ò  òò‹,   *  v_ ZæÃ ò  2
 ²   
| _	œûŸ
  Z  | $œ*  œ| &
¦œ& ²œ' & _	œö  ²•& Öé
|   | œ(| *  Â²
 ²   ²l   òå   € ¢" €
”*  è2   øƒá•" r  ²   ²ì  —,  ‰ó*  ²   òe   ò  ú•"   ò
  ò

 ò
 ƒ*  4ò _ ‰1›æÃ0 _	8ƒò  _   0 8(*  Z_	n¢*  ’&
²œ' & _	Æ2Š& Öò•  
  nÆ*  €²
   ò  _ ò

 ò
 _ _	n²
 ²
  "n*  ¦  ¢" … _	  _	  À/Ä Ã$ ã  „   þv@      )t  –Î$ *  Ì S”ò  òµ  2
  ß•#   À    •)•)"–Î&–vL*  ò  Â ß	  À  ð$  ß	  †À_	  _   $  :©–"&•± } $\gÏ(‘m }#  _	  …   CREF OUTPUT FILE ERROR   Œs°r 8*  8²
   ²œ' & _	n2Š& 3¢ )2¢ Á f  n*  ^Î
H¤üÖÖ&
 ’²œ' & _	Æ2Š& ÖÛ  Æ*  „  ì 
r ò

 ò
 … 3¢ ñ_	nòµ    "n*  ª÷òµ  çÛv ö
  û… Á æ_	¶  (¶*  ÐÎ%Á _	¶Ö"²¬  ¦œ _	n²œ  
  ¶"n*  ö²• 3¢ 2¢ 2¢       v
 ò

 ò
 €ž
 *  … v
 Ö… Ñ‹Õ ü‡ û‚E… ò‹% ßt   &t *  Bò* &f€*   æ  P”Î
ýÖŸ
t   (t *  h€… ²Ü  2Š ²¬  ²Ü  2Š òÿÿ*  Ž ²
 ²

 €
 ’r  ò‹& … ‰ ²
*  ´
 €" _	  _	  ß5@   ßE@   ×òÕ  ²
  N“y2gl(ÜŸ(ÜŸ*  Ú  œ ˆ¬ ˆ¬ ä€
Á
öÀe ¬ÿÿ  *   ¬ÿÿ* ×¬ÿÿ/ ß   Ï2¬ÿÿ y¬ÿÿ	   vL@*  &úœ	 
 ²

 $ˆ¬ ¾×¬
   ß| _ `	
  "| (`	*  Lú•  
 ²

 Á ¢	 ¤   ¬ Ð‹òÕ *  r Á
ôÀå ²œ   ì
 ¬       "‡ ì *  ˜Á% n‚¦&¦
 Žì Îe € À
ì rà  *  ¾rà
 rà  ‚”‚~€‚
 ¦‚œ ”‚~‚*  äß5 ®	²
 ò

 òg°	 òg°	
 
°	€
   ®	°	°	$°	*  
	ßE ®	… òÕ  ²œ  Á 
Á
€
²
 2¢  ®	*  0	 _ ¬¢  ô2¢ ðÁ‰ ×¬
    ²  
¬*  V	  
 ²

 ‘‰úœ
 
 ²

 ²
 ß
°	_ L‰
  "°	&L*  |	œ l
 ì rà
 rà   ¢" ‰~ Ú²
*  ¢	 €
ßU ®	Ó              _	(
Ú	_	Š ¦  ®	 (
"Ú	&Š *  È	¦öº	 ö¸	 Õ… E… _	ü	ø	_	Š Õ¦¶  º	¸	ü	ø	"Š *  î	  ¶       … E… _	(
$
ß¸	Ÿ
¸	‰#ß  (
$
¸	 ¸	*  
ÿº	¦Õöº	 … E… —¬  E… ‰Ÿœ 
  º	º	*  :
¶	Ÿ  ²	Ÿ ´	ß‹¶	9=

À´	æ	  ²	  ¶	
²	´	¶	 ´	(²	*  `
‚”W 0 ùà‹”Áå0 æ&ÄCÄC„eCƒeÄ*  †
CD`C ²	‚Î
ëÖ ²	‚ÃÿÄÿÿ"ò‹ 
  ²	²	*  ¬
CÕß¸	º	‰ŸŠ¶	Ÿ
²	¿ß'²	´	‚  ¸	º	¶	²	$²	&´	*  Ò
ß
²	ßŠ¶	÷‰!·‰"

ä‰#Û&_	    ²	
¶	()t  *  ø
 EÕ_	Š €… &_	   _	Š €… ß5  Š )t  "Š *     _ ”ßE   ßU   _
  Ÿ °      ß²*  (ÜŸ”(ÜŸ(ÜŸ(LŸ"°&(²*  D—,   ò   Á_	š_	Š ß   _	ò
‘   šŠ  “yÎ"Y"& &ò
(  jâßU   ‰  ß” 
¶ß ´_	Ÿl *  â
(ÜŸÂàe”Y"& ¶´"*  Ž´Ÿ
´Á¸_	šŠ_	Š _	ò
Ãâ_	_	šŸl&  ´´¸šŠ ò
â"&š&  ´ ´_	Š ŠŸ
´Ÿ
´Ÿ´ß—´¶‰  ¶(  ´
Š ´´´´¶"Âàe$¶*  Ö´_	üÎ—¬$ . ‰öŠ  &f¦Â    ´
ü(ÜŸ(YÁ*  ü×'°  _€ð² ð° ß	  U‡ò•   €ß	  °²°      ‹¯=*  "  N‡Âe À  °$ ð• # ß	  J‡ßU   ‚  ‹¯@=Y"&h±p!$(ÜŸ  H€¦  æ  ‰        ‰  &  O¹’³ègYÐþv  Y®‘³èg  `    ß  ß  p
‰      Ÿ*  YÏYáy
Y®‘Yáypþv  Y®‘*  x  Ÿ  ²  ß•.   ò: _	Š … ‰€_	ò
c   Y®‘O¹’sŽr:Š &ò
*  ž¢_	Š _	ò
c°_	ò
Ì¼_	Š _	ð… ‚"  ¢
Š ò
°ò
¼ Š $ð*  Ä€‰_	ð… ‚€‰‚_	ð… ‰õ_	ð  ðð(ð*  ê… _	Š _	üû
  … —¬$ . òµ  ‰ö  Š ü(ÜŸ*  ´ …       ¤ … —¬  —¬  ò
 ²
  òe *  6 … ².  ²0   ²   ²ì  ²
 òµ  *  \ò
 ²
 ò‹ … &€  &
Žœ €ã&’Ð•. *  ‚6’ “Ž ö
 ø€ÖÖ€… &¦ € ”Î
  ¨ýÖ€…                 :*  :
  À  ß	  D‡&   €cÀ
¢’Ð‹ß  (LŸ
Y"&° } ’*  `   Ð—È—‘€ß5   _
€¢* ¢/   vL@
‘(ÜŸ€*  †
€_	RÀ  ß  ¢- ¢* ¢/ À
  €
R“yÎœ't:'  ¬Àå Õ_	  …   COPY FILE READ ERROR   CMö Ð$  Ðð¥öÿ* À¸_	  æ  ‰            ß&  ¸\gÏ¯-€  ³ègYÐ Yáy  ð  þß  æ  
‰      Ÿ  Ÿ*  Yáyþ
Y®‘O¹’þv  Y®‘O¹’  
  Ÿ  Ÿ
  À  ß	  ßE   ð*  Y®‘¯-€  ¯-€  Y"&„¯½`(ÜŸ*  $  & ß5   ‰    ßE   ß  _	  ßU&  YµW(ÜŸÂàe(ÜŸž!Y$Iq *  J@   E… ¦f&ÀeH „†ˆŠ€Á  (ÜŸ„† ˆ$Š*  p  &
Î— Œ_ŽŸcŒŸeŽ_	âW¬ÿÿ   $  “yÎ
¯-€ ŒŽŒŽâ*  –Œ†_ Žô‡_ Ž†Ñ•  úß  ß„H ß   Œ
ŽŽœ't:$„&“yÎH         ¼†J ßˆL ßŠN Á&  †“yÎJ 
ˆ“yÎL Š“yÎN *  ÎP Ñ—Ñ—‘‚À  … ß€ _	,"ß5   *  “yÎP ‘“yÎ€ ,""((ÜŸ*  ô‚_	t_	N_	,¤ûÀ‚öÒ‹ûÊ‹  ‚tN,‚*  ‘”ü_	tßE   ”… fÁD¢É‹üÕ…   
t(ÜŸD*  @Eü ,	;(). ‰  h  rÂT&
Ž’Ÿe Ò  ÂàehrT&Âàe *  f… ßU   …Û  ß  
 …                
(ÜŸÂàe Âàe Âàe   Œ    
       æN   Â8Ç*  Ô2 d    Â8Ç   ¯”L  \gÏ@  Œs°r@        *  þv@@      (  Ô2 d,ªª€Mh  ¯”   
   Ô2 d  &    Àê _	  À_	  À._	  ÀR_	  À*  ê 
\gÏ\gÏ.\gÏR"\gÏ$  " |_	  À¤_	  ÀÐ_	  Àà_	  À*  |\gÏ¤\gÏÐ\gÏà \gÏ$  B _	  À(_	  À`_	  À‚_	  À*  \gÏ(\gÏ`\gÏ‚ \gÏ$  b ²_	  Àâ_	  À"_	  À<_	  À*  ²\gÏâ\gÏ"\gÏ< \gÏ$  ‚ l_	  Àª_	  ÀÒ_	  À_	  À*  l\gÏª\gÏÒ\gÏ \gÏ$  ¢  _	  ÀR_	  À‚_	  À _	  À      *   \gÏR\gÏ‚\gÏ  \gÏ$  Â Ê_	  Àú_	  À"_	  ÀX_	  À*  Ê\gÏú\gÏ"\gÏX \gÏ*  â p_	  …   COMMAND STRING FORMAT IS:    p\gÏ)  $OBJFILESPEC,LSTFILESPEC=SRCFILESPEC    .*  .  !WHERE EACH FILESPEC HAS THE FORM:  *  T'	DEV:[UIC]FILENAME.TYP;VERSION/SWITCH*  zES  %AND ANY OR ALL FILESPECS ARE OPTI*   ONAL  )**NOTE** RSTS/E DOESN'T SUPPORT*  Æ  ;VERSION  SWITCHES ARE:  5/ACC:N - *  ìACCEPT ERRORS OF SEVERITY N OR LESS ON  LY IN         SOURCE CODE.   (*  (  4        OTHERWISE, OBJECT CODE FILE  N IS NOT PRODUCED.   `%  `  /HELP - TYPE THIS HELP MESSAGE    ‚*  ‚  ,/MAP - LIST DATA AND PROCEDURE DIVI  ¨SION MAPSI   ²*  ²  ,/CVF - SOURCE CODE IS IN CONVENTION  ØAL FORMATR   â*  â  =/ERR:N - SUPPRESS THE PRINTING OF D*  IAGNOSTICS WHOSE SEVERITY           I  .S LESS THAN NS   <*  <  ,/SYM:N - GET MORE SYMBOL TABLE SPAC  bE WHERE N    l*  l  ;         PARAMETERIZES THE SPACE TO      *  ’ BE OBTAINED FOR 1<=N<=4  %/CREF - PRI*  ¸NT CROSS REFERENCE LISTING  //CSEG:DD *  Þ- DEFINE MAXIMUM CODE PSECT SIZE TO BE    	"DD" (IN DECIMAL BYTES)I    *     //KER:KK - DEFINE CODE PSECT NAME KE*  FRNEL AS "KK"  ,/OBJ - PRINT GENERATED   lOBJECT CODE ADDRESSES   ‚*  ‚  /ODL - GENERATE AN ODL FILE  &/OV -%  ¨ MAKE ALL CODE PSECTS OVERLAYABLEE   Ê*  Ê  -/PFM:N - SET NESTED PERFORM STACK S*  ðIZE TO "N"  $/RO - GENERATE READ-ONLY   CODE PSECTSI   "*  "        3/TPS - TPS ENVIRONMENT, DO NOT GENE*  HRATE I-O BUFFERS  /PLT - POOL LITERAL  nS    p*  p  6/NL - DO NOT INSERT LIBRARY FILE CO  –NTENTS INTO LISTINGI       ÞN   Â Á*  ƒ: d    Â Á   ¯”L   d@  ¼ d@  *  Œs°r@  þv@@  øÐ@      (  ƒ: d,
  	ŒˆZhj)­}Zh	¯”   
   ƒ: d  *    : Æ RÞ @           @ €      : Æ R
Þ  &      @À  0        j*  j‰
2 ß   ,‰îÀ  ¬  @‰› _ F‰  2  øÐîøÐ&*  ¥$‰ÿC         _	øÀ  >‰&‰ßEþÿ2 ß    ,‰$   døøÐ 2 $  &øÐ*  ¶ôÀ  ðµ   @‰œ _ ¬  ¬  ô  ôøÐ*  Ü¬  ïßG 2 F‰bôß72  @‰ž _    2 ô2   *  $‰ÿD   _	ø?
  F‰Ä"ÿU    +F‰@0$   dø d"  d(0*  (ÿU   F‰p>ÿU   ß72  @‰Ÿ _    d> d2  (&  N$‰ÿE   _	ø&‰_ ß   _	êrr*  
 dø øÐê r"r$  púßW 2 ß   _	XŠŠ(  ú 
2  øÐXŠŠ(        ˆßW 2 _	øÀ  >‰ß72  _	ôß &   
2 ø  2   ô& $  ¬  _	Ð ß72  _	ôß   _	Ð*  øÐÐ
 2  ô øÐ"Ð*  Ì&‰ßW 2 F‰‘¨$‰ÿE   _	ø&‰_ @‰š    
 2 ¨ dø$*  ò@‰ 
@‰  ‰Y ‰Z Õ‰F‰‘È
  &È*  2 $‰ÿF   _	øÀ >‰&‰F‰ÄÊ$‰ÿG   _	  2  dø Ê& d$  >ø?
  F‰Ã ÿU    ßG 2 ß   _	(  ø d  d 2   øÐ"  ^ÚhzÆ¦ßW" 2 À   6 ßW(  Úhz
Æ¦"       2 øÐ6 *  |$ 2 À  ¬  ßW& 2 œ 6 ×?    "  $ 2 
øÐ& 2  6 $ d*  ¢ß72   ×'6  @‰ª _ Æß72 & ß'4 6 "  2   6 Æ2  & &4 (6 $  È@‰« _ Æß   _	XäöÆßW( (  Æ øÐXäöÆ"( *  è2 À   8 ßW* 2 À  ¬  ßW, 2 &  2 øÐ8 * 2 øÐ&, (2 *  œ 8 ×?    ×'6  @‰ª ßW 2 ß72   
8  d6 " $2 (2 *  40 ×'8  @‰¬ _ Æß72  _ Æß72 & "  0 
8 Æ2  "Æ&2 (& *  Z×'4  ÿU         _	øß72 . _	ôß     4  dø2 . "ô(  "  €  _	Ð²ß   _	Ð¸ß72 0 _	*  øÐÐ
² øÐÐ¸2 0 *  žôß   _	Ð¾&‰ß72  	$‰ÿH   _	ø*  ô
 øÐÐ¾2  $ d(ø*  Ä&‰_ ÄßEþÿ2 ß 4 ß4 6 ß4 8 $‰ÿG   $  Ä2 4 4 6 4  8 ( d*  ê_	ø?
  F‰@ ß
  F‰pß  F‰$  ø
 d 
  " $ *  `ß  ß72  @‰­ _ ÆßG 2 ß  &  
  2  Æ" $2 (     6  _	ÞDVÆŒßW 2 À   *        øÐÞ
DVÆŒ 2 øÐ*  R4 ßW 2 À  ¬  ßW  2 œ 4 ßW   4 
 2 øÐ  2 &4 *  x 2 F‰Ã¬ÿW   _ Vß72  @‰  _ Æ_ (   2 ¬  dV2  &Æ*  ž¸@‰¨ @‰© @‰® 
‰[ ‰\ ‰]   ¸*  ÄÕ‰@‰§ ü  28>D>Ÿ
ÎŸ
ÎŸ
ÎŸ
Î&  28>D>Î Î$Î(Î*  ê‰,‰À  ¬  ÀÎÀx Ððµ   ÷   øÐÎÐ*  F‰@@‰¡è:‰JÀ  ¬  @‰ @‰¢   JøÐ*  6
@‰£ @‰¤ @‰¥ ÕÕÕE
Î‰‰F‰        "Î*  \EhÿU   F‰?„ÿU   D‰W	_	æŠˆ†&  h d„ d"æ$Š&ˆ(†*  ‚ŽÕÕÕE‰@‰¦ ù                      Ž*  ¨                                        Î     ”  ”<   ˜  ˜0   °  °‰   Æ  Æ    Ð*  Ð‰À  ¬  ‡œ ®(‰”ð>‰Õ‰E‰?
  øÐ®”ð  ö  ße   ÿ•    Ÿ
  …    d
 d¼ d¼ d       ˜'N   Â¸Ó*  ®:€    Â¸Ó   ¯”L  üX@   d@  *  ¼ d@  &®S@  Y  @  Y d@  HØh@  *  H i@  y&      ÖK@  ê&@  ú&VN@  –,º@  *  ²2CM@  vL@@  ó`4}@  ¯d d@  Ófg'@  *  Ùf Z@  äf™w@  Œs°r@  þv@@  ‹w 5@  *  ‹wDf@  –w?@  “yt!@  µz‰‹@  é…ÖM@  *  =†.@  H†"@  ZŠ¿@  øÐ@   d@  *   d@  	 d@  µ Z@  À s@  Â	@  *  Ç-q@  :©@  E©ãf@  [©(}@  ë©¬:@  *  ªx@  ‹¯=@  ‹¯@=@      (  ®:€,ì*  Ú}behnŒøMh® Œ%!hÒŒÖdhÔŒlh€*  Œê"h2ŒähzŒkYhŒˆwhŒ sh˜  )­5ahë¯”   
   ®:€  (                                          @       *  @ 
$Z&,04 Z(.2"Z*.,24"*  f Z<BFJLPTZ>DHNRTZ@DBHJNRTZÔ ª  &Ô *  Œ Ô Ö$zö t2  Öê zö ba	  ‰
"  Ô $ö 2ê ö "*  ²  _	€e_	Xßÿÿ ß• $ _	<† @H ß• "   €X $ < † "@*  Ø $ ßU @  _	<œ @H F‰z˜@‰ÑßU ( ßU  $ 
  <œ @˜&( *  þ  @  F‰˜
@‰ÒF‰a	ßU ( @‰Óù    
 ( *  $F‰z,åF‰t:ßU ( @‰Ôùß¥ $ ßU  ,:( $$ *  J  _	ŠŸ
 Á _	Î‡ß
 _	
_	¦_	€&         
Š  Î  
$¦(€*  p¤‡@‰Õ ß Õ‰@‰Ð üj  ‚ g    *  –V	   Ö„z              @"  ¢ 
  „*  ¼ @                   ‰
 Ÿ
Ð_	<    $Ð(<"  âŠþ¦È®Ê¶Ì¾Î
*  Šþ
¦È®Ê¶Ì¾Î*   ÐŸ
ÒßÈÆ_	€
‡@‰Õ |ßÒß@‰Ö v  ÐÒÈÆ€ Ò*  &_	Xßÿÿ ßÊ  ßÌ ßÎ ×'Æ  Á&  X Ê  Ì Î "Æ*  L W<&  @‰ü 
¦Æ®  ¶ ¾"   ¦Æ®  "¶$       (¾*  r ßÆ( _	<œ¾H F‰zŒ@‰ÑF‰˜˜"   Æ
( <œ¾Œ&˜*  ˜@‰Ò×'Æ  ×'Æ @‰áßU ( ßU @    
ÆÆ"( (  *  ¾_	ŠÁ ×'Æ W<@  ñU @ Ÿ
 _	Î  Š
 Æ$ (Î*  ä‡ß
 ß•  $ _	
_	¦
Ò„ßÐ@‰×    $ 
¦Ò Ð*  
ß Õ‰‰
 _	Xßÿÿ ß•	 $ F‰@>    X "$ (>*  0F‰³6ßU ( F‰ŽD_	€_ lßL
 _	  6( D€ l$L&
 *  V
ß
 L_	¦ß Õ‰@‰C"üÂ®Yºl  

 
L¦ "®&º      *  |Ö  ‰
 _	Xß• $ ßU   _	¶D_	€"  Ö X$    ¶"D&€*  ¢_ FßL
 F‰yÌW<&  „_ \ß• $ ßU   F
L
 Ì\$$ *  È  W<&  „W<&  `ß• $ ßU   ßU     $ "  (  î  D‰ŽF‰k2ß    _	  LÁ @B ß  *    2 døÐHØhL & d*  _	ª  ßU ( ßU   ß  ß  
 F‰  ª(    " & *  8È¤ß¥ $ @‰ý!}ßU 	  D‰Çß    ,‰V  ¤$   "	 d$øÐ(V*  ^Â  òµ   |òµ  }Ÿ"  ò' 
 Ÿ
   øÐ         *  „ m‰    Â Ÿ  cò'  ò_	<r(   
µ Z     &<(r*  ª
H F‰Y¶@‰Øß5   @‰»ßU ( ßU  
¶  &( *  Ð   D‰Èß5   @‰¼ðßU ( ßU   ×7       ( &  *  ö(  ß  ß  ×7(  ßU   _	Š  (   ( $  (Š*  Ÿ
 Á _	Î‡ß
 _	
ß
 L_	¦ß &   
 Î 

 L"¦& *  BÕ‰@‰Ù ü@‰Ú Ÿ
 Ú@‰þ!ô@‰À!ñ@‰ÿ!Ÿ
   *  h œ@‰;!Ÿ
 —Eþ?  r¸r¸  ÂÂ    þ¸"¸(Â*  ŽS	Îlâ        ‰
 _	Xß• $ ßU   _	Þ&"  Î
â X$ "  &Þ(&*  ´_	ú&À <&  	ßU$ ( ß , ßU @  F‰  ú& (  , &  *  Úcôß    ,‰(ß
  ß  _	<v¸H ßU*  ô
 døÐ(   <"v$¸*    ( ßU ( ßU @  À ðU & ðU & D‰¾F‰  ( (    *  &6
, ßU  ( =ß    ,‰pÀ  ðµ   $  6
, ( 	 døÐp øÐ*  L@‰â)¬  ùð‹ ö¬  òßE  (  6‰  $( *  rŒ€, ßU  (  ? @‰àF‰ƒ ßE  (   Œ
, ( " (( *  ˜ßU ( @‰Ýß       , ßU  ( _	<€¸_	<Š"  ( , ( < €"¸&<(Š*  ¾úH F‰S	Ê@‰ÞßU ( ßU   ß  D‰  úÊ(   $ *  äÈßU ( ßU €  ß  ßU   _	ŠŸ
 Á  
(      "Š& *  
 _	Î‡ß
 _	
_	¦ß Õ‰@‰ß Ÿ
    Î 
¦ ( *  0ä‰
 _	Xß• $ ßU€   _	ÞÆ_	úÆF‰"  
 X$   Þ Æ$ú&Æ*  Vcpß    ,‰Èß
  ß  F‰lšD‰ÈßU"  p
 døÐÈ  "š*  | ( Á W<&  ßU   ß  ßU@   _	  ( 
    &  *  ¢Š      Ÿ
 Á _	Î‡ß
 _	
_	¦ß Õ‰"  Š  Î 
¦" *  È@‰ß Ÿ
 ä‰
 _	Xß• $ ßU€€  _	€  
  X$ "  &€*  î1D‰ŽF‰lD‰ÈßU ( ßU   ß  Á  (   $ *   A& ÁEÿ›W  ßU@   _	ŠŸ
 Á _	Î     Š  $ (Î*  :‡ß
 _	
_	¦ß Õ‰@‰ã üè ¼é À   
¦ $¼(À*  `ä Èå Ì{Ô  æ Üç à    ‰
 _	Xß•  È
ÌÔÜà" &X*  † $ ßU   _	€@‰ä _ ä	
 _œD  F‰È  $   €ä	 $ *  ¬š	D‰Ç      _	<Xæ	H D‰ÔßU ( D‰¦ßU (   š	<Xæ	( (( *  Ò_	<nèD‰¦ßU ( @‰åùß    Á "  <
nè( "	 d$øÐ( *  øW<&  G,‰	@‰Ä Ÿ
 HÂ  Ÿ
  hòµ  	 øÐ$ *  	  n—¬  eŸœ  Ÿ"  Ÿ xòµ       "x*  D	‰    Â Ÿ  Iòµ   òŸ, xA  µ Z
    &x*  j	Ÿ  ß'  ‰    Â Ÿ  ò/,‰$     µ Z   " *  	”	@‰æßU ( F‰l¸	D‰ÈßU ( ß    ”	( ¸	"( ( *  ¶	ßU   _	ŠŸ
       Á _	Î‡ß
 _	
_	¦"  
  Š  Î  $
(¦*  Ü	ß Õ‰@‰ç ü@‰í Ÿ
 Õ@‰9!Ÿ
 Ð@‰    $ *  
;!Ÿ
 Ë6
F
^
Š
$2b‰ 
 y	

€
*   6
F
^
Š
$2b  &

*  (
€
  ö‰    ‰ßU   À  ‰ßU     Ófg'ZŠ¿(Ófg'*  N
À  ßU   Á  ‰ßU   À  
€

   –w?Ófg'ZŠ¿Ófg'ZŠ¿*  t
2
_4
ß5 ( _	  ˆ
‰‰$‰À—$ Àe& $    2
4
( “yt!ˆ
 $ ($ *  š
ÿ$   _	‚ß2
ß4
ÿ2
  ÿ•   ße (  $  d‚2
4
2
 d$¼       d"  À
  Ÿ
  ÿ4
  ÿ•   Ÿ
  ße   À*   d¼ d4
 d¼ d¼ d d*  Þ
 ?   _	Šÿ(   _	‚_	ž¬  ×§$ &   
 dŠ(  d‚ž($ *  ' ×§$ * ÿ   _	‚×§$ * .ÿ   _	"  
$   d‚$ $ & d*  *‚(×§$ ) ×§$ ,  À  ?   _	‚×§$ "  ‚
$ $  d  d$‚($ *  P) ×7(  ×7(  ×7(   À  >‰ÿ  
( ( ( "	 d(  v,   _	‚&‰‰ÿ•    ÿ•   Ÿ
  Ÿ
  Ÿ
(  ,  d
‚¼ d¼ d ¼ d$ d$  š  … ß  Ÿ
  Á_ _	           W (   d
     ó`4}ë©¬:  *  º$÷œ Áå
 ÁBø& WtôÿÁEùÿBlþÁ—$   $ø$þ($ *  àÁå& B`Ÿ’ Ÿ _	     … J @ h    
   &    ó`4}ë©¬: J @  h *      	    + . /    , ‰Ÿ
  _	  &ZŠ¿(  ,   ‰ß  Vß  XÀ  ,2  _	  (  üX dV dX d&H i*  PR_	      ‰4   ‰ßU   ß  ^Ÿ
^_	   R&®SÓfg' –w?"^&^*  v  \` ‰_	d‡&ß  ”_	Î  € &  ¯d d\`dY d” Î( *  œ_ ¤ ¡ … ´ ü      _Îße Î_	RñÕ€  æL   ÎÎR(L*  Â_	âŸL_	Î  Áå ñ<   ±   ñ 2 ñ•  â
LÎ*  è 4 q 8 _  L… ‰ß    ,‰.À  ðµ   L døÐ .$ d*    
  _	R_	Î  _ Õ‰@‰Û E   RÎY   *  4‰@‰Ü û_LB‰ÀE… <‰  FP‰€Õ… Š
  LF*  Z( 
2

4

  
 
 ß   ß  ßÿÿ"  ( 2
4
     $ *  € ßÿÿ … &À  ðW  > ðW @ ðW ( €…    
 Y d   " *  ¦‰À Á _	â‰F‰ÖÊF‰tÖßU@ ( F‰          âÊÖ$( *  ÌtÒøÕ… @‰A"E… F‰ÖòF‰1þßU€ (   Òò þ&( *  òF‰1úøÕ… @‰B"E… ‰F‰?@‰°D‰Ð
  ú*  F‰U	 F‰[(@‰±F‰õ@4@‰ÆD‰ÌB‰   (4*  ><‰¼¨P‰„ÝÌ  fq DÄe  …
_	  ¼
¨Ì=†. H†"*  dd#ƒ_	Î  Ä D`ñÕ€ ( Ì@‰³!_	ÐÁ	  d
ÎY  $Ð*  Š_	â_	dê‚‡@‰º!ù×7   	Õ	@‰´!ó†  â
dÓfg'*  °@‰º!@‰á!‰j  g ‚ V	 @ ‰À    ( d*  Ö_	î_	JTð•  _	JL‰‰Á  0Š p
   î
J      J ‹wDf*  ü ð   ð   ß B`Bß— HßH_	>*  ‹w 5‹w 5BB‹wDf  H$H(>*  "ßgHB_	>&
Nœ ÎÎe °•  ‰
‰   H…   HB>"‹wDf &H*  H  X’_h‰    h  Ÿ
  Á  …          XhÀ shäf™w äf™w*  n‰ß  l;ß   ßô  À  _	”_	œ†*  ê&
lvL@ô²2CMy&ÖK ”&œ*  ”‰` _	Æ_	Î  Cœ( ×0x ×0 f ‰Â   
ÆÎY  *  ºÂ  ƒ0Ãf ‰½!_	ö×0 1 ÄE  =†.ö*  à€ A_	8ß
lÐ
  _ üfÃEÿD@ 1   
8l      ²2CMü*  —0  ÄU À2”ÃŒ†DÑÂ‹…DÑÂŒöýC  2  ,> …… U"¢   8*  8&ÀNÐÃ†f X ù€… pv‚||ˆŽ"  Npv ‚"|$|&ˆ(Ž*  ^” š¦¸¬¾²Ä‰À!å‰Á!â‰Ç!ß‰&  ” š
¦¸¬¾²Ä*  „Ô!Ü‰Ú!Ù‰Û!Ö‰ü!Ó‰Ü!Ð‰Ý!Í‰Þ!*  ªÊ‰ß!Ç‰à!Ä‰Ç Á‰È ¾‰v »‰b ‰*  ÐC> D@ ÄÕÿÿA¡ ñ@> _	8_	  ± ‰   8"–,º*  ö,` 
$       FILE-TO-LUN AS  
,`*  SIGNMENT TABLE
2              NAME         *  B          SOURCE   RELATIVE 
.       *  h                         LINE      LUN  Ž
     ¿)  ¿.. -  ‰f
‰’ÂÄ’E’E`C•T•Ã
   ’Â’*  äAß	  Äe ÷_	2’Ä…ÀºÁ" Ÿ
" ß	   [©(}2’Äº"" &" *  
  À±A ß	  ß•  °ß•  ¸_	  ’À_ (  :©±:©°¸"Ùf Z$’&À*  0ü‰CDË¥$ Ë•- ƒ
‰      
Á   ü(µ Z *  V@˜ 	Š_	    Š    Áh@’L`€A’"  
µ Z Â	µ ZŠh"L*  |@`` Áh¡ 
± Àj… &_	R      	&ßH  µ Z hj R(H&  ¢ ßJ _	`‡ÄNT¬ ý÷ß Hß*  µ Z J
µ Z `N µ Z "H*  Ä J¡ „… _Ú_Ø
‰    LA… j_ö"  µ Z JÚØL$j(ö$  êŸL_	    j  L… „ƒ‚€……   L
Ç-qµ ZjL d*  d_	¢œ@’L_	Î
&
W¬  W¬    ¢œLÎ
*  ŠW¬ 
 Ž
À  Ö± … f¦æ&_	  À  µz‰‹&é…ÖM(À*  °ÀÕ„ƒ‚… Eù ( À( ‰œ!Â  (Â*  Ö_	ÀÀð˜ ß	  ‡È• ðF ß	  ¼   
À      ˜‹¯=F$‹¯@=*  ü ±  … _
‰  ˜Â…               ˜Â*  "             SH  $ *  H €    CL @  "AL   .CO    (CH   4  ". ((4*  nDW     MI     WI   :LO€     DQ@     :  ”@    @       ¨N   Â€À*  ÖK }    Â€À   ¯”L  Jg'@  ëÈ2@  *  ØµW@  ô8CT@  ô8€W@  Œs°r@  þv@@  *  µ Z@  ¹ @      (  ÖK },8cM„!h¢   gM,Fhèµz‰‹h  ¯”   
   ÖK }                         l       
  l          ˆ   ˆ        ¢ *  ¢ f¦æ&_ _ _ _ _
 ß@ÿ  ×'       
 $  ( *  È  ß u
 ß   ß
 ß ß hp  
       $ $  î _	Ø  _	`l ß n ß p ßl *  Ø 
 `l  n  p "l *  _	F  r 
ˆ ß'ˆ  ß ß  Fæ (  Fr ˆ ˆ   "Jg'( *  4‰-Aß  ß   ß
 R_	   ß  *       
 R  & ( *  ZÂŸ
ˆ Áˆ ÁÁg _Š _	äŠ _	`€_	F&  ˆ ˆ  Š       äŠ  `$€(F*  €  Œ ßp n ßn â_	än  p _	`¨_	&  Œ 
p n n än p "`&¨*  ¦F  r Àr ÁŒ _	  ±äÀ
 „ƒ‚
  "  Fr r Œ ØµW
 (Jg'*  Ì…  
÷      _Òß Ô
Ô_ð‰      ÒÔÔ"ð&µ Z*  òÖÀÖßÔ
ÀÒ_	    …   &  ÖÖÔÒ*  @<_>
œ  _	` œ  À`
‰    <>`$*  >  €… &f¦AB@œ  R~‚€… f  $  d  ÁE ÿ@`…                    
    à*  à              f¦æ&_p_r_t_v_xÿ  prt"v&x*  „lÿ 
Árr  ÀG  €
z
|
~?
Nÿ_"  „rô8€Wô8CTz|"~*  ,€C
—r ƒ×p Ãe  ó  rÀpÁÁe _  €ëÈ2 p*  R‚_	  ß  ~ÿ ÿßt__	Ø„~Zß   ‚ØµW~t Ø"„$~"  x€à
âß—áâŸ
â‰  â”  ß—(  €à
âáââ¹ â”"  –’á‰  àäß>ÿæßæ>_	Ø„(  ’á
¹ àäææØ „*  ´æÀ„_	`Áp_	  #óæ  óˆ ó€ $  æ„`pØµWæ ˆ      &€*  Úóà À Á‚
~ßpüß‚þ_	F      à‚pü‚ þ$F*   ßæ~ÿ lþŸ
|ß'|  Á€Ágz 
r   æ~||ô8€W €$z  &  €„ƒ‚À~…   ô8€W~       žN   Â€ò*  vLÀD    Â€ò   ¯”L  4@  öXz@  *  ìØ™@  p:@  !¼„@  ØN@  Ï`H 0*  %t@  D@  •€%@  –"&@  –CTH *  Ô,@  ì]@  „!@  ž!/K@  "ÀÁ@  *  " È@  "@Î@  ""@  #Ï@  ²2CM@  *  „:VN@  ôL@  ;M@  ;M@  NVN@  *  ®S@@  ?TVN@  ^VN@  l^      VN@  Df@  *  Ùf Z@  äf@  4g@  sr,@  þv""@  *  “y"&@  “yVN@  ôy@  
z@  »z""@  *  Û}€@  hØ™@  $€°"@  ZŠÖKH ±„f@  *  ¿Öd@  ÂÝ@  Â	@  Ã q@  Ä@`@  *  Ç-q@  Ç‰s@  ÐVN@  ›’VN@  :©ÿ@  *  H«q{@  H«r{@  H«˜{@  H«À{@  H«|@  *  H«9|@  H«:|@  H«;|@  H«<|@  H«=|@  *  H«>|@  H«`|@  H«ˆ|@  H«hÎ@  H«Î@  *  „¯½`@  °úp@  h±p!@  •± }@      (  *  vL`Eìª
Ôkh„	ÔÎhJ
…”Mhx	¢=	h†*  `hv	""CTh¨
""ah†Š(Îh‚Š(ÖKh„*  ë5•`h :      Pshˆ`;  hb	[M•`h ?TÎh 	*  ?T"&h ^"&h¶^Ã'hª^µWhPl^ûh*  l^"&h"l^ÛWh‚ßf,-hP)qÌ`hž
­xœghp	*  ÌyKŠhpáy²h2ïy qh0óyU<h,÷y”`h.*  [zœ5hr	[z·5ht	Îh`\(
hx	hÞ™h~*  9€à8hP	J†Xzh€³à~h  Ðìhé’Ì`h¢
*  ö«Nh^	þ¬¯yì vLÀDlÔà8hÊhÔ *  %t!hÄ""œwh,ŠA¨»h( ŠAÐ»h, ŠAÀÁh0 *  ŠA Èh4 ŠAhÎh8 ŠAÎh< ŠA€ÔhP ŠAèÚh‚ *  ŠAÛhl ŠA8ÛhŠ ŠA`Ûh’ ŠAˆÛhz ŠA°Ûh¢ *  ŠA áhª ŠA@çh® \gÏhÖ ‘m }h¸Œs°rh„*  Œs sh”þv@htà®sh>ZŠ&yhÎvLÀD(          
   vL`E      ÞÞ ^bjn   ÞÞ ^
bjn     &  hØ™ìØ™   ÿÿhØ™
*                                       hØ™*  6                      ÿÿ                 \      b  b            ôôtx€„      ôôt
x€„ìØ™*  &                                  "  hØ™ìØ™   ìØ™
*  L                     ÿÿ                 r     x  x          ,(  ,                                             V  V      ^   j  jSY     t  t±Iq     ’  ’±Iq     ¶  ¶
   Ä  Ä     Æ  Æf    Ø  Ø    ‚^VN Ü  ÜP
  P                  D  D    ‚l^VN F  F‚  ‚ ˆ  ˆ      l^   œ  œSY     ®  ®   °  °    ´  ´R 
  R  Â  Â   ‚›’VN Æ  Æn
  n               h
  h "  "    ‚ÐVN &  &Œ
  Œ p*  p                  >            IO ERROR NU  vLÀD>Ä@`  –MBER                ®  ®    ²  ² 	
   	 °  °P    Â  Â    ‚?TVN  	   	CBL --     P	*  P	 \	                                   \	$€°"    v	Ã               ¦	  ¦	^   ª	  ª	ú	
  ú	 °	  °	    “	  “	    ä	  ä	 7   î	  î	ÿ
J

CBL>  
J
  
   
Ñ    Ì   
  
T    ¦
  ¦
  
   vLÀD      Ÿ¦
À ðP	$ ð• # ß	  ß   vL`E¦

vL`E vL`E      P	h±p!     &  hØ™ìØ™   ÿÿhØ™
    ß   _	  _	  _	  _	*  vL`E hØ™
vL`E %tH«q{H«r{  2   _	  _	  _	  ß5   ßG  &  H«˜{H«À{H«hÎH«Îž!/KöXz  L r	1_	  _	  _	  _	  _	  _	(  vL`Er	
H«|DfD„!äf  f   _	  _	  ß  _	  _	  _	&  4g
zH«:|;M;MH«=|  €   _	  _	  _	  
  _	  _	&  DH«9|4H«;|²2CMH«<|  ˜   _	  _	  _	  _	  _	  _	&  4gôyôLH«>|4H«`|   °   ß5 r	_	  _	Ä_	        _	  À&  H«ˆ|
vL`Er	•€%Äþv""ì]*  Ì  ß	  –… _	tÐ”ÁE ÿ&
&
Á%O 6 Áå  vL`E „¯½`t*  ò O NÁO fÎe Â	”Á
ýÀ ° ß	  Î  vL`E	vL`E &•± }*  €ÀeO ß–%_	„… œ* À›
ß	  …     „vL`E›$:©ÿ*  >Ö¦¶  v …fEþÿW!  ‡Åå  Åg^	v
  &vL`E^	*  d … v˜ … &f¦æ&¦
 … …„ƒ  ˜  Š‚€Ö… _   <t        &    <t"ÀÁ" È"@Î®S@  ¤            &  Ùf Z¿ÖdÇ‰s
Â	Ç-qÂÝ  °    „  _	  Æ¦
_       Â _	*  Ã q±„f„
»z""!¼„vL`E¦
Â   Æ  …  Î01.001  p:
Î vL`E¨
  ¨
         N   ÂXÀ*  ôL    ÂXÀ   ¯”L  @  Sð_@  *  ²2CM@  vL@@  {L€@  ¯dg@  Œs°r@  *  þv@@  [zœ5@  [z·5@  ¼ N@      (    ôL,°ôLh  ¯”   
   ôL  (    _	  ‰ß7    _ Š ß5   _ Š 
  ß(  {L€[zœ5Š [z·5 Š $vL@  $ ’   ß  
 ‰  *  ’ ²2CM
¼ N ¼ N ¼ N ¼ N$  6 ‚     ß8 D 
‰  Œ  ß¸ ´ _	  N(  ‚ 8 D Œ        ¸ ´  Sð_"N&  V ž´ ¶ ‰¸ ¶ ß  ¸ ß ¶ ‰¸ ¶ ße &  ž´ ¶ ¸ ¶ ¸ ¶ ¸  ¶   x  Ÿ
² _ 2 
  
  ‰"  ¼ N ² 2 ²2CMvL@  %     –    DUMP OF LLT WORK FILE  
  –  ² 
  ²         N*  N
.               
      LITDDD =  *  t
      LITDAT =  

        ( 
  š )ÿÿ  ²   Œ   Ž   ² ÿÿ  
² Œ Ž ²        :N   ÂXÀ*  ;M    ÂXÀ   ¯”L  @  Sð_@  *  ²2CM@  vL@@  {L€@  ¯dg@  Œs°r@  *  þv@@  [zœ5@  [z·5@  ¼{:@            (Ò  ;Mh  ¯”   
         (    _	  ‰ß7    _ Œ ß5   _ Œ 
  ß(  {L€[zœ5Œ [z·5 Œ $vL@  $ –   ß  
 ‰  *  – ²2CM
¼{: ¼{: ¼{: ¼{:&  6 „     ß8 D 
‰  Ž ” ßâ Þ ß: Ü _	&  „ 8 D Ž ” â Þ  : "Ü "  X   xÀÞ à ‰â à ß  â ß à ‰(  Sð_xÀ
Þ à â à â à   v â à ße  _ 2 
  
  ‰&  â à ¼{: 2 ²2CMvL@ ” *  ”   š 6   DUMP OF REFERENCED LINKAGE S  š   º ECTION ITEM WORK FILE           Ò   Ò                    x*  x
VMA = 
 PARAMETER NUMBER = 
 E!  žNT NUMBER = 
 DD OFFSET =     ¼  ¼ÿÿ  Ü   Ž      ’ ÿÿ  
Ü Ž  ’        ¶ N   ÂXÀ*  3NÀ    ÂXÀ   ¯”L  Œs°r@  þv@@  *      (  3NÀ,, NFwh  ,­ýh+ ¯”   
   3NÀ  *    fAÑ@,þÿÑù¦¶  v ÕE
  & ö …        zN   ÂXÀ*  µW –    ÂXÀ   ¯”L  Y/€p@  Œs°r@  *  )t  @  þv@@  E©ãf@  ï© q@  ªx@  *      (  µW –,l µW –h
 µW5–h ¯”   
         µW –  *        
 ß  ‰_^ _T _	  —¬  !  
  ^ T  Y/€p*  & _	  ß  Y	Ÿ R Ÿ Z Ÿ   _	  )t   R  Z &  $  L         _	        Õ_	  ‰Eý  ªx  E©ãf  ï© q       
N   ÂÐÀ*  ^xQ    ÂÐÀ   ¯”L  @  {L€@  *  xQXz@  ¡d²@  Ùf Z@  Œs°r@  þv@@  *  [zœ5@  [z·5@  :©@  :©Ï_@  S«ÕZ@        (d^xQh¯”   
         *    ACCEPT    ADD       ALTER     CLOSE   *  &   COMPUTE   COPY      DISPLAY   DIVIDE*  L           ELSE      ENTER     EXAMINE   EXIT*  r       GENERATE  GO        IF        IN*  ˜ ITIATE  MOVE      MULTIPLY  NOTE      *  ¾ OPEN      PERFORM   READ      RELEASE *  ä   RETURN    SEARCH    SEEK      SET   *  
    SORT      STOP      SUBTRACT  TERM*  0INATE USE       WRITE     CALL      CA*  VNCEL    DELETE    DISABLE   ENABLE    *  |INSPECT   MERGE     RECEIVE   REWRITE *  ¢  SEND      START     STRING    SUPPRE&  ÈSS  UNSTRING  WHEN      UNLOCK       ô  ô:    ù  ù E                 *  _	  ‰ß7    &ÂêÀ
p
 Áe  Ã
 R”Ã
ý  {L€[zœ5ê  &  .ÀÁ  ß	  ß—öß—÷ß—øÀ*  
S«ÕZ:©ö÷ "ø  PúÁ  ß	  ‰ê ‰  ú¡d²:©Ï_ê        N   ÂHÁ*  l^d    ÂHÁ   ¯”L  @  ""œw@  *  ²2CM@  Ì2<@  Ì2u~@  vL@@  {L€@  *  l^"&@  g"@  \gÏ@  ‘m }@  Œs°r@  *  þv@@  [zœ5@  [z·5@  :©@  ë©¬:@  *  «½@@  Í«@  •± }@      (  l^d,î  l^dhF¯”   
   l^d  *                  .NAME       ,GBL         .PSE*  & CT       ,GBL,I,RW,CON"       : .FCTR   L            †   † H                                   *    B    COMPILER GENERATED ODL FILE 
   B&  @     _	  ß7    
  ß  _  _(  {L€[zœ5vL@²2CM"  *  b¢ _	xß  _ ×7  @ ß•O 7 ßT ¤ ß•$  ¢ x  [z·5 7 $T &¤ *  ˆF ° ß•- ² ß¶ ´ ßÿª ÿ—ª ÿŸ
´ Ÿ
® _	"  ° ² ¶ ´ ª ª "´ &® *  ® ße ¢ ßèþ¬ _	‚¬ _	Èße ¢ ß/Òþª î"   
¢       ¬ ‚¬ È ¢ &ª *  Ô_	ªÿÆþ_ ˜ß•O ° ß•, ² 
¨ _	jß¶   ª˜° ²  ¨ $j(¶ *  ú´ 
¬ ßŸ°þ¬ _	˜¬ _	ÈŸ
´ ß
® ñ_	Ò… &  ´ ¬ ¬ ˜¬ È´  ® &Ò(   À Áª Â ß	  ß—  Ž ß—  ß•$  ß—*   
ª :©g"Ž g"  $   D  ˆ ß— ‰ ß—‘ Š ß—’ ‹ ß—(  g"ˆ 
g" ‰ ‘ Š ’ ‹ *  \“ Œ ß•$  ÁŽ Â Ã R”Â~_	ô   …   "  “ Œ  Ž   ô"  $ (  ‚_€À• Á€Â ß	  ß•$ ” ß—  • ß— *  €
• €:©”  g""• &g"    ¦      – Á” Â) Ã R”Â~_	ô < …   – ” ) ô <  È*  Èß¦ ÿ—² ÐýŸ
¤ Ÿ
¦ Á” Â¤ Ã R”Â~ße  ¦ ² ¤ ¦ ” ¤ *  î ¤ ×'¦  _ ¨Ÿ
¨ ÀÃÁ¨ Â ß	  ß—   ¤ 
¦ ¨¨ Ã¨ &:©    š ß— › ß—° œ ß—Æ ß—(  g"š 
g" › ° œ Æ *  ,Çž ß•$ Ÿ Áš Â> Ã R”Â~ÁL ÂT Ã¤ "  Çž Ÿ š >  L $T (¤ *  Rƒà‘”Â~ÃT ÂL ƒàÂ¤ ÂàÒ•  Ã~_	ô> † 
  T L ¤ "ô$> &† *  x¦ ßT ¤ ÁL Ã: Ñ•  Ã~Áš Â¤ Ã R”Â~  ¦ T 
¤ L š  ¤ *  ž      Ÿ
¦ ße ¤ … Áˆ Â> Ã R”Â~ÁŽ ÂL Ã  ¦ ¤ ˆ > "Ž &L *  Ä Ò•* R”Â~Ê•- _	ô> † 
¦ ßT ¤ ÁL Â  ô> † ¦  T "¤ &L *  ê: Ñ•  ƒ~… ‰_f_hÁ  ñf ñ\  À  fhl^"&f"    ß	  †ß	<ß7    	ßf2ßh*  l^"&•± }<{L€[zœ5f2 h*  .4‰        ‰_	  ÀL_	  _     WRITE  4""œwL\gÏ ‘m }*  T ERROR ON ODL FILE    ß—  ˆ ß— ‰ ß•O   g"ˆ "g" $‰   zŠ ß•V ‹ ß•R Œ ß•$  …     Š 
‹ Œ   ˜&  ˜_À“ÁÂ ß	        ß—  ” ß— • ß—*  
“:©g"”  g" "• *  º•– ß—–— ß——˜ ß•$ ™ … Áˆ Â> Ã R”&  •– 
–— —˜ ™ ˆ "> *  àÂ~_	ô> † … ;COBOL STANDARD ODL FILE G  ô
> † *  ENERATED ON:                        > *  ,;COBOBJ=                     ;COBKER=)  R  
 ;COBMAIN ;RMSREQ=CIO0       123    x*  x‰Á  ÂÃ	 R”Â~Á  ÂÃ R”Â~_	ô  Ì2<Ì2u~(ô*  žì*Á  Â4Ã É¥  R”Å~_	ô,Hß  $  ì*
«½@4 ô",$H(  "  Ä
ß—  Rß—       S_	ôJTß  _	*  g"
Rg" SôJTÍ«*  âôV^ß5   _	ÁqÂtÃ Ä É‹   ôV^[z·5qt*  Ÿ’l_’mßÕ0 m_	ô`nÄ 
‚
ƒ
_ ‰  l
mmô`n&*  .                      *  T      *  z              ‰Á  ÑÂ  Ã    ë©¬:*   Ä  @ ‡_ Ò&f¦æÀ.ÃÀ`
”Áp  Ò.(p*  Æ`	Òƒ‚€ƒ
„
Ä% _ ¦‚
Ÿ   _    ¦"ë©¬:(   ì‰       N   Â˜Æ      *  ó`    Â˜Æ   ¯”L  ÁN N@  ÇNÀ]@  *  ÇNa@  ÐN"@  Œs°r@  þv@@      (  *  ó`8 ó`h  ó` ¸ t!h Nh  
  ¯”   
   ó`      … 
   ó`            ‡¬ b  ¬,"  ¬<N  ‡¬$a   ÇNÀ]ÐN"ÁN NÇNa        ŒN   Â°Ç*  ó`êY    Â°Ç   ¯”L  Œs°r@  þv@@  *  R«""@      (  ó`÷Y8< ó`êYh  ó`øY¸š  êYt!h˜êYNh  ¯”   
   ó`÷Y  *    ß  &fÀ" $: ù€…   ‡¬  R«""" : &Ð   
  &  b  ¬,"  ¬<N  ‡¬$a: *  Ø         
à   
x  
: 
   ó`øY  *    š©êrš©êrš©êrš©êrš©êrš©êrš©êrš©êrš©êrÏª*  & HXš©êrš©êrš©êrš©êrš©êrš©êrš©êrš©êrš©êr*  L š©êrš©êrš©êrš©êrš©êrš©êrš©êrƒ¬²2ƒ¬ 2š©*  r êrƒ¬8š©êrš©êrš©êrš©êrš©êrš©êrš©êrš©êr*  ˜ ¬Öd’¬l’¬î—¬üq“¬:}„¬%!’¬ê"ƒ¬kMƒ¬
N•¬*  ¾ kYš©êrš©êr…¬»…¬{‡¬À]‡¬`^¬"…¬0X¬ N*  ä “¬h“¬’Ž¬@`“¬â“¬ã“¬ä•¬‹Z•¬ŠZ•¬ŒZ¬*  
d‰¬€Z‰¬§Z‰¬¤Z‰¬XZ‰¬WZ‰¬TZ‰¬i–¬Kš©êr*  0š©êrš©êr‰¬ˆ–š©êr“¬šw“¬º‰“¬,“¬;	“¬Ë¬*  Všš©êr…¬Ps“¬Bxƒ¬,…¬|—“¬›ƒ„¬©‰¬üX‡¬a*  |K©ô~>©´xR©ôH©ô?©t¤      ?©ôe?©´Ã?©ôÉ?©tÖ?©*  ¢t;©´Ã:©´Ã:©ôÉ:©tÖK©å~>©¥xR©åH©å?©e¤*  È?©åe?©¥Ã?©åÉ?©eÖ?©e;©¥Ã:©¥Ã:©åÉ:©eÖK©*  îÙ}>©™wR©ÙH©Ù?©Y£?©Ùd?©™Â?©ÙÈ?©YÕ?©Y*  ;©™Â:©™Â:©ÙÈ:©YÕK©5>©õxR©5H©5?©µ¤?©*  :5f?©õÃ?©5Ê?©µÖ?©µ;©õÃ:©õÃ:©5Ê:©µÖK©,~*  `>©ìwR©,H©,?©¬£?©,e?©ìÂ?©,É?©¬Õ?©¬;©*  †ìÂ:©ìÂ:©,É:©¬ÕK©~>©ÝwR©H©?©£?©e*  ¬?©ÝÂ?©É?©Õ?©;©ÝÂ:©ÝÂ:©É:©Õî«H…î«*  ÒÕZá«øî«“ó«Àî«XzÓ¬ÐMä¬àyÛª8ÂÐªÂÐªPÈ*  øÐªÐÔËªÂËªPÈËªÐÔÛªÂÛªPÈÛªÐÔÚªÂÚªPÈÚª*  ÐÔÍªÂÍªPÈÍªÐÔÖªÂÖªPÈÖªÐÔËªàËªÀËª€f*  DÛªà      ÛªÀÛª€fÚªàÚªÀÚª€fÍª¨¢ÍªÀÖªàÖª*  jxÒªJ†ÒªD†ËªŒ(Ïª˜XÏªð-Ïª(KÏªÏª˜!é¨—(*  é¨˜(é¨š(é¨ç(é¨è(é¨ê(é¨˜0é¨À0é¨1é¨¸*é¨*  ¶ø0é¨¬*é¨ì0é¨„*é¨Ä0û¨—(û¨˜(û¨š(û¨ç(û¨è(*  Üû¨ê(û¨˜0û¨À0û¨1û¨¸*û¨ø0û¨¬*û¨ì0û¨„*û¨*  Ä0õ¨—(õ¨˜(õ¨š(õ¨ç(õ¨è(õ¨ê(õ¨˜0õ¨À0õ¨1*  (õ¨¸*õ¨ø0ì¨—(ì¨˜(ì¨š(ì¨ç(ì¨è(ì¨ê(ì¨˜0ì¨*  NÀ0ì¨1ì¨¸*ì¨ø0º«<º« <º«!<e©„de©ûf´©ø*  t¬qš©êrš©êrš©êrš©êrÎªí+?©y×?©y>©¹.         bN   Â¨À*  6a K    Â¨À   ¯”L   d@  ¼ d@  *  Ófg'@  Œs°r@  þv@@  –w?@  “yt!@  *  ZŠ¿@            (  6a K,T î'€%h 6a Kh   n€%h  ¯”   
   6a K  *        &&ßU   À  €
F‰ÌD F‰[	L _	    Ófg'ZŠ¿D $L (“yt!*  & > ßU   À  €
   Õ„€… F‰[	4 ë  > 
Ófg'–w?   &4   L @‰ˆ Eõ       \N   Â}À*  ¯d d    Â}À   ¯”L  öXz@  ËU<@  *  ""œw@  „:"&@  ¯dg@  Ófg'@  Ùf Z@  *  güX@  g"@  \gÏ@  ‘m }@  Œs°r@  *  þv@@  [zœ5@  J†Xz@  :©Ï_@  ë©¢Z@  *  S«ÕZ@  ¿«þv@  •± }@      (  ¯d d,Ä*  .!hr… Xh†ó`4}h ¡d²h  ¯d dh      Î  ¯d£dh¾¯”   
   ¯d d           ÿ    4<  <    PD  <  <   € *  €                                       *  ¦                                       *  Ì           : P    0 1 2 3 4 5 6 7101112*  ò 13141516172021222324252627303132333435*  36374041424344454647505152535455565760*  >      Â Ã ß  ß7    &À  ð $     [zœ5öXz$„:"&( *  d ðb  ß	  †_	  Àˆ_	  _   €… …     •± }""œwˆ\gÏ ‘m }  ŠFILE WRITE ERROR IN PDSR          ¤*  ¤S”ß
 ß  ß
 _	D… ‰@AD_ 
     D(
*  Ê    ‰@Af×7    Ö‰
ÊÊ_	     Ófg'Ê"Ê& (ë©¢Z*  ðÊ
„×'Ê· ×'Ê¸ Ÿ
  Â Ã _	r   ÊÊÊJ†Xz  $ (r&  Ìæ  ÎgÌŸ#  æÌæ  _	  _	  Ÿ*  Ì  ÌËU<Ì¿«þvg""güX&  8  ŸÌÂ Ã Öß7    ?_	À>Á(  ¿«þvÌ  [zœ5¯dg">$  Z  ß	  ß—A‚ ß—Bƒ ß—C„ À† Á*  S«ÕZ
:©Ï_A‚ Bƒ C„  † *  z  ß	  _	ß7     _	À” ÀgÚ ß	      (    
:©Ï_[zœ5¯dg ” $Ú *     _	&æ ÎgÚ  
@’ÀÜ €ße Ú ×'Ú    :©Ï_ Ú Ü $Ú (Ú *  Æ4 _	ú_	¤Ä
×ß7    ßÚ _	úŸ  
ú¤[zœ5¯dg Ú &ú"  ì ß ßgÌ  ‰
Ú _	  € Ø 
‰š (    Ì  Ú Ùf Z€ Ø  š *  
œ Ö … &f¦… ‚€… ‰CÃe  
Ar 
  œ Ö *  0  Â tÀÀ`ˆP‰       V                —   r*  r‰
@”œDƒ`Ä
úÝ‰‰Â Ã 
Á _	  D   & *  ˜¤ß%  Á
 
_	¤öß%        _	DŸ   ¤
 
 ¤ $D( 
  ¾ß ‰          àGN   ÂÇ*  ³d€p    ÂÇ   ¯”L  &˜@  öXz@  *  üX@  ü&@  ØµW@  .!@  ËU<@  *  	 –@  … X@  ""œw@  Y/€p@  j/ @  *  è:  @   <  @  |LØY@  ½`±@  ¯d d@  *  ¯d£d@  ¯dg@  Ófg'@  Ùf Z@  güX@  *  g"@  \gÏ@  ‰mÖM@  ‘m }@  Œs°r@  *  þv@@  ”w  H< –w?@  “yt!@  [zœ5@  *  [z·5@  µz‰‹@  Õ}?f@  ‰‹@  Ü‰u:@  *  ZŠ¿@  Œ¢`@  µ Z@  ¹ðK@  Ãiw@  *  Ã¸~@  :©@  E©ãf@  ë©      ¢Z@  S«U<@  *      (  ³d€p,,#h &3h¢+4Ísh¤+*  dhô @8hxÀDh& dh& }h†*  /@h®+/€h´+n –hŽ¼¸.hÂ&¼ dh&*  |LhÄ©@Qh&ý¶‰h¾&®Sh&8ÂhH*  &(Èhâ&xÈh~&ðÈhê&¸ÎhÔ&0Ïh*  *¹sh !*‰‹h~D|LhÌY  h^)Y dhê)*  ÛÏh€~Ëh&B0 hÔH  h HØhh‚*  H ih–Q(h@ U(h, –,ºh œ,äfhP*  ^/ˆwhÂp3ÞhÏKh.|LÀh'|L –hŠ*  oMÞhø
®Shhòo^Ófh´2gÀÁh¦'2g Èh¨'*  2g@Îhª'[q`"h°%Bxhp+Bx˜&h¦+Bx„:hB+*  ¢x0Mh8"­x       h!-yýph|áyxh¤#áy6FhZ#*  ãyÚKhž#ƒ…³hF%ƒ…3}hˆ$Œ0ahì)Œp<hÀ+*  Œq<hì+÷ˆwh„øÐh¤'  h´' dh¬'*    hB( dh®'	  hÐ(	 dh°'_¥g'h0*  0­…h,´­°ùhPDwx Dwh  <wh *  Dwg'h  p‹x` p‹h  d‹h <agh  
  ¯”   
   ³d€p  *                 
ð  €
€
 
 øƒ°
  €
    &  *  & €
…  ‰À
Àð  0
  ‰ ‰À Á  
      &    L ~‰
   Dw  "    
  ³¬  ßUÿ   ßU   … "  <w  <w  <w   <w        
   p‹  *          &f
  €œ ÀÜ Àµ "³¬  —¬  
  
d‹  *  & ³,  
À Á @`À
2  
€    L @`À
3  Ÿ
  €…   d‹   d‹        
   ³d€pP *  P              	  D CCCPDPDUA"  v ÞìÞøìøì*  ÞìÞøìø ì*  ” àà       -UTMPIPDP  -              
  àà*  º                                         à                  ²   ² <    ¶   ¶ 0   Ì   Ì      ä   ä     Ä   Ä ˆ   î *  î 8  7 ‰      C_T _V ßœ`   À™ ÁT Â ß	  T V `   ™ "T $    ßœ ¤ À™ ÁV Â ß	  ßœ ¦ _	&  :©œ 
¤ ™ V :©œ  ¦ $  4  Ÿ ^ ª ß  &æ  € 6Š  Ÿ(  E©ãfŸ ^ 
ª ‰‹‰‹ µ Z "  T ‰  Ž    ß\nß^P 
‰  ¶ (  µ Z µ Z
Ž\n^P  ¶ &  rî Àª Áæ _	  _ ˆßgð  ä
¶ 
‰(  î ª æ ØµWˆð µ Z "¶ *  ”¶ · ò ß•0 ¶ ×  ß• · ß• · ßÕ€ Ä   ¶ · ò ¶ · "· (Ä *  º× 
 ßÕ Ä ßÕ Å ÀT ÀgV Ñ Ã{ €    Ä Å T       V  Ñ &€ *  àß Î Ì ß Î Ì ß Î €€
Ì   Î Ì Î Ì  Î (Ì (  ß Î œl Ì ß• Ï ß—V Ð 
‰ª æ \ Ÿ
&  
Î l Ì Ï V Ð  ª "æ $\ *  *  ß  Z Ã¶ _	 3 À
ÀÀe¶ ðZ  ‰  (  Õ}?fÕ}?f
Z ¶  ¶ "Z (µ Z&  P¶ ð P ß  ßP   ßR ´ ß ä ß• *  ¶ ð P ‰‹P ‰‹R ´  ä *  ræ ßZ ê _‚
‰²   ² ‰Ã¶ _	 3 À
À"  æ Z 
ê ‚² ² ¶   (  ˜Àe¶  Z ßZ Ÿ
  ß  Z ðZ  ‰  (  ¶ Z Z Õ}?fÕ}?fZ  Z &µ Z*  ¼P ¶ ð       Ï                                P ¶ ð "  â                                 Ä  Ä<œ   È  È0   à  à
   ö  ö      *                                           &                             <      0        2  2     <*  <                                        b                         <  <<    @  @0   X  Xe   n  n     x  x       z  &
  z *          ¿ À   Á   Â Ã   Ä   ¼ ½   ¾   Î Á Á *  DÑ Ä Ä       	 !	 	 		 	!!!  j!	!!  	 !ÿÿÿ   ‚*  ‚     þþþþ*  ¨þþþþþ*  Îÿÿÿ    þþþþ*  ôþþþþþ*  þÿÿÿ                          *  @    *  f	

*  Œ		*  ²							


      

*  Ø

	
			
  þ	ÿÿÿ   *  ‰BC_	|._	€0ß.<ß0>8‰<&  |.€0.<"0$>(<  <d
Áy Fv¤Èêòü		*  d
Fv¤Èêòü		  V(	<	H	V	v	b	~	’	œ	¨	*  (	<	H	
V	v	b	~	’	œ	¨	  j²	À	Î	
6
>
_	ø
_	_	  ß*  ²	À	Î	

6
>
ø
Dw  *  „  @Ÿœ ‚ßœ „8‰‚d
Ÿ(M&³,  "  <w  ‚„‚d
(*  ª—,2  ×,2  òµ  óµ  óµ        *  Ðòµ  
Á _2(_ d
_ P
Àœ œ
  2(d
 P
(
*  öÁ_(_ d
_ P
Ÿœ Ôßœ Ö8‰Ôd
Ÿ"  
(d
P
Ô Ö$Ô&d
*  (€Àœ œ
Á_((_ d
_ P
Á(Á%   (
((d
 P
$(*  BÁ% '_	  ß  "Ÿœ xŸœ *Ÿœ ,ßç  p‹  d‹  x *&,"  h,*_	ô x*,ŸˆßÜ (_	ê*  ,*
ô x*,ˆ( ê*  †(  zÂ€ _	, Á_<(_ P
Ÿ¤'×¬ "  (z, <( P
$¤'*  ¬ (‰<d
_ vßÀ(‰  d
_ v³,  @‰  
      <d
vÀd
v*  Òù —,  \×,  Xòµ  _ †óµ     †*  ø_ †Ÿœ4 Jßœ4 L8‰Jd
€Àx &.6*  †JLJd
 "$&&.(6*  ßß—&ßÿ—&ßßŸ&ßÿŸ&ß&&ß  &&& &$&&&*  DÂ&&ÿ&Æÿ•  Âße &Ÿ
&Ÿ
î€>‰À>‰  Â&&
&&& î$  j
îßå&&Ÿ&_	  &Â&&_ t
ß» (  î
&&&¯d£d&Â&&t
*  Š(
8_ P
ß8óµ  ßÛ (ñ—,2    (8P
8 (*  °×,2  —,  ×,  € Á xÁ5*  Ö ßÝ       (ÕßÜ (ÑŸ
8_ Èßß (_ P
  ((8È$((P
*  ü€_	v
Â€ _	, _ ÈŸ¤'(‰ d
ïßá   v
, È¤'  "d
*  "	(_ P
€_	v
Â€ _	, ñŸ¤'(‰ d
ë"  (P
v
,  ¤'$ &d
*  H	Ÿ¤'(‰ d
_ 6
—, _ d
Ÿ¤'(‰ d
ß"  ¤'
 d
6
d
 ¤'$ &d
*  n	à (_ P
—, sŸ¤'(‰ d
ß"(_ P
ß  (
P
¤' d
"(&P
*  ”		 (_ P
Ÿ¤'(‰<d
õò  _ vŸ¤'(‰ "  (
P
¤'<d
 v$¤'( *  º	d
_ vŸ¤'(‰ d
_ ’	—, _ ¤—,   d
v¤'       d
’	"¤*  à	AŸ¤'(‰ d
À_	¾
Â€ _	, _ ¨	—,   ¤' d
¾
 , $¨	*  
_ œ	—, 'Ÿ¤'(‰ d
À_	¾
Â€  
œ	¤' d
"¾
&*  ,
 _	, _ ’	ßÞ (	Ÿ¤'ßH
(‰  d
_ ÈŸ  , ’	(¤'H
"d
&È*  R
^
ß`
_	ê(    ß !@‰@ @‰.‰ß  ^
`
ê( !*  x
 xœ  œ à_*
,_	ô x*,ò‹ "  x*,ô x *",$*  ž
ßÎ (ßÑ (Ÿ¸
_	ê(  z… ß x  
((¸
ê( z(x*  Ä
œ  œ à_*
,_	ô x*,ßà (Ÿ"        *,ô x*, &(*  ê
ò
_	ê(  z… ³¬  ò‹ ó‹ @‰ú   ò
ê
(z*  … 
2
4
6€_	@2À_	@4ß'2"  246@2 @$4(2*  64@‰ù … 0¬   
… ð‹  œ … œ   4#  \4œ 6ßç64À4… 	 

  4
6644 |*  |ÁDœ Ä
 p! ! ñµ      p*  ¢ ñ‹ ñ‹ €
À … ‰_Ü@  $Ü*  ÈÞð•  ßÜ (_	ê(    ‰fÁ fÁ  Þ(ê(*  î W/  	 W/  â W/  á W/  "Ÿ
ð  (ð      *  fÁ $‰
îîÀê<‰"6ÖŸ
îße   î"6$î*  :&ÿ•  ÔŸ
&7$‰
îÂße &ÿ•  ¸Ÿ
  &&î &*  `&@>‰ªße &ÿ•  Ÿ
&&‰… f
îÁ  &&&&î*  † $‰
î‚ße &ÿ•  xŸ
&nße &  
î&&(&*  ¬ÿ•  dŸ
&Á
ð@>‰ø&‰
î
ð  &ð"î&ð*  Ò… $‰
î6À2<‰"îÖŸ
îße &ÿ•    
î"îî$&*  øŸ
&@>‰@>‰
ße &ÿ•  Ÿ
&
î  &&$&(î*  &‰… ¼   ½   ¾   †   ‡   ˆ   ”   •   – *  D  ã   ä         å   æ   ç   è   ò   ó   ô   *  jõ   ö   ÷               *              j   k   l   ¢   *  ¶£   ¤   °   ±   ²   x   y   z       *  Ü	 
   ! % " "       ‰f2 Âe8 *  Ãe4 Ä&Å&Á
!À&'”ßî&À”<‰Ø  
&&À&î(Ø*  (v••€ïÕ”íßð€¬  ¬  æœ
  vð*  N ÔÕ•  ƒ  Õ•	 !À&@‰E"&_&…  À&"&&&*  t‰ ß&&ßÂ&&… ×'&4 ß• Â&ß•   
&&Â&&&"Â&"  šÂ&ßå&&Ÿ&ß'&&	ß&¼_	  (  Â&&
&      &&&&¼ ¯d d*  ¸&Â&  … ‰? ß 
‰Bf
b
0  &Â&$b(0*  Þ
h
j
lß nß pÄzŸœ 4Ã¤'"  h
jlnpz$4(¤'*  ßœ 28‰2@‰P …E‰€x Z_	4_	˜  22 Z$4(˜*  *…Õ‰          	ÿ
ÿÿ  Pÿÿÿ   Z  Z
2Ò²                  
2Ò
² *    ß n&
Îœ Î% ó¥0  Ÿ
0Îe Î`
  
n"0*  .…Ÿ  ß	–^‘ò¥  ò¥  ò¥  ß   
–*  Thß pæ&ß	Z_	ô        „ƒ      _ ~ò¥  h
pZô&~*  z  ß pßœ bß `h³Œ ³Š ¦Â´  pbh(´*   Ê Ò`ÒbÊz‚_	”      a  ß pß  bz”&p*  Æ¤'xße xzßœ dßœ bò¥  ß   ¤'xxzdb*  ìnß @hß  hò¥  9ß 0hß pf  n
hh h&p*  &
¼ÄxÄgdÄ
“W¡} Ÿ
¼Åå: Åå  ¼xd¼*  8 Åå	 Ÿ
¼Å•0 ß% @h
¼ß¼  ¼h"¼&¼*  ^ÅU@ L‘Åe
 îÅe0 í„…
‰    d_ "}J
  "d&"*  „KLMNOPQR{ABCDEFGHIó‹ 
      Åå0 E‚ß €j
  "‚(j*  ªß l‡ ó% 3Š 3Š ó•  ó•0  _   l*  Ð
ó% Ì" ó% Ì  ó%   
*  öÌ0 ó% Ì ó% 
_ ó•  &*    3Š 3Š ß @h_ "ß @hßNße N  h"h"N(N*  BPßœ d
‰    d_ "  
Ÿœ X×'X    Pdd""X&X*  h
X×'X 
XÂhÊ Ê`ÒÊœ „Ò  XXXh*  ŽÒz! _	æ"¨Ê !
 _	æ  zæ"¨(æ*  ´(¾Ê Ê ßœ bŸ"X	ß% Xß   (¾      bX"X*  ÚXÊX³’ ‡ ‰ÀhCÁ”Á
¤C~ ’ }   XXh*   Àå: Àå Àå	 Àe:  ÕE‰327  &37
2147483687    4*  4Är
Ìœ Œ
ŒÔe 
Ìœ ÌWhß%  hß%  rh$h*  Z 0h
ß% @h&
ö—b ŽŒUÔÌjÌœ 
  hhb"j*  €xßŸ
  ‰  rrf… æ æœ ß²ß&  x|LØY¹ðKrrf&²*  ¦´ße ´

‰    ³• ³ ³ ó<   ó—  ´
´*  Ìn ót óE ð ×'p ×'p ×'p   n
tpp&p*  òóE€ÿ ó—p ó—m ó—b ³
      2 ó•	 4 ó  pmb    8 … :     |LØY |*  |    0 ß  
|ß |
 ß  
   || $ *  ¢ 
|‰ß¤'_	  òÆ&
œ  ŸÊ
‰  $   |¤'‰mÖMòÆ$Ê*  È"  ÖÀ"ß|¬ 	 ¬  ¬    ""|*  î†@‰/!_ ò¬  ø‚ß  ~ ß¤'"¬   òµz‰‹~ "¤'$"*  	 ße "
‰    €¬ 	 `Á¤'1
  _	ü  "€ ¤'(ü*  :¬  0 )ñ~@ _P_	P  ~0 Ã
×p Â  ~PP~*  `ÂeTÄÄeB 0 ´   ´  Âå Äe
 Ë~      
  T
*  †p0 , 10 > _	´1
< ±   Ã¤'ÄÃe4 
  ´"¤'*  ¬Äe8  ¬  0 ñ 2 Ó•! 
œ, 4œ0  *  ÒÔÓ•" Ó• ñ 2 _	Ô_	òÕEß  Ôò(*  ø¤'‰¬  … & €  6Š Ÿ ‰    ¤'µ Z $µ Z (µ Z*  $    ß"~ß <&
ÎŸêÿŸ@
‰  "  Ö  $"~ <@$"*  DÀ"1, 0 … &@ð‹0 &
N  Ÿpæ Ÿ
  ""p*  jr‰        –%°Š0 0¬0 1 °Š1 fÎe Ÿ  rÃiw*  ¨ªße0 ªæ Ÿ¬‰        –%€… ‰  ¨ªª¬µ Z*        ¶ðµ  ðµ   ðµ  j_	x&æ¦Ä&
  x(&*  ÜÃ&ðµ  $& ô_	¤      "   $     &ô¤*  4   ÔÓ•  Ó• ÔøÓ• ÔüÓ• Ô
  ø"ü*  ( Ô,ÔÓ•  Ó• ðµ   & T   (T*  N_	¤   "   $   ÔXÔ\" $ fœ  ¤X\*  t0 Á
Wp `T4 Ó• Ó•  Ó•  &ß&_	
  "&&&*  š†‚ƒ„‰&¦B@_	P²&€@eÀ5   †P²*  À
’Õ‹~Ö‚€… ¬  ¬ 	 ðµ*  æ€   ßU€ ße   ‰    ð(  µz‰‹      µ Z µz‰‹"$(*   ßå   …    ‰_	  ðµ  —¬$ ( @‰  
µz‰‹Y/€p*  2_P‰4‰_ l—¬$ ) ÷P‰_ l—¬$ ( @‰]
  ll*  X	À_	,lð`   Àð 2 ð 4 0  ,l*  ~2   ð  ðe8   ß Õ‰‰ß¤'ðµ      ¤'"*  ¤.ð% 2 *ðµ  ðµ   ðµ  	& *  Ê@ _	PÖ_	´€> _	x_	> 0
< ÁB   P
Ö´x*  ð`Áe
 _	`…~_	ÚÀ¤'Õ‰       `Ú¤'*  ß5   Ã&Ä&Â
Â“Ô• 8   [z·5&& *  <      Ô• … Ã&Ä&ÓßÔ•  8 Ô•# _	2… ß5  &&$2*  b   S  ñ¥	  Ô•	 Ô• ñ5 € _	  [z·5*  ˆ S Ô•  … ñ5 € _	Dñ 9_	 Óßg   D$ *  ®Ô•  S Ô•  .¦B —  ñ5  ÓÃ*  ÔÔ•  _	V_	n_	°‚‚ñ5  	_	DÓ  
Vn°&D*  úß
Ô•  _	2	_	nÓÃ
Ô•  _	Ì ß&&  2nÌ$&(&*   _	œ_	xÃ&Ä&… 8 Ô•$ : Ô•" … Ó  œ
x&&*  FßgÔ•  _	V_	2… S  ñ¥	  Ô• … Ô•
 
  V2*  l… ß&&_	œ_	xÃ&Ä&ÓÔ• _	V        &&œx&&(V*  ’ôŠÿÿß&&_	†_	xÃ&Ä&… ÓÃ
Ô•    
&&†x&&*  ¸Ó×pÔ•  “Ô•  _	Ì… Óß`Ô•  _	2… ß5 
  Ì"2*  Þ  8 Ô•! : Ô•" ß&&_	†… ‰C  [z·5&&"†*   @ Àpñ ÃæC Ã
Àpƒ%@‰^‰*  *  ‰_ ße8  C> ×p ÃeRßCÃeB ß  
  R *  P*P‰Ã*_	  Lðµ  @‰W _ Ì¬    *
*‰mÖML Ì*  v3   3
 ð‹ 
3
  @‰î3
 ó@ E_	*  œÔ¬  ¬  òóA 7ð‹ @‰½  Ô*  Â  _	Pê      q,< > ð/*6 @‰¾
—¬$   
Pê$*  è+ Ÿ
—¬$ - P‰_	  Ö@‰¿Ã*  
 <  &**  Ã*ß³ ó€ ±
< q,< > Ãe
 
  *
*  4ß*—¬$ ) K4‰Sßå †æ¤'_	ßB(¤'  *¤'"&B((¤'*  Z&ÄB(_	Š°­  !æÃÐ(ÄF 
ƒß•  B(Š°Ð(*  € Õ(ß• ì(_	ÌÐ(°æz(_	(³  3
 ó	   Õ(ì(ÌÐ(°z((*  ¦ „Ÿ¤'º_	(„Ÿ¤'—¬$ ) 
@‰[ 4‰P‰  
¤'(¤'*  Ì—¬$ ) øq,> < @‰`@‰aEñ  *  ò6 Õ4‰P‰‰        H‰        æ¤'ß@(¤'H‰   ¤'"@($¤'*  ßÎ(¤'H‰ Ÿ¤'… æ¤'ß@(¤'L‰ 8ßÎ(¤'&  Î(¤'¤'¤'@(¤'"8&Î((¤'*  >L‰ DJ‰  JŸ¤'… f&€ 6Š  Ÿ   DJ¤'$µ Z (µ Z *  d‰  x    ÀjÕ… Eü      †      µ Zxj$†*  Š                                        °                     †  †<
   Š  Š0   ¸  ¸ (   Â&  Â‰‰    |ß|Ô
‰  Š~ßœ¾ßÕ€ *  µ Z
½`±||ÔŠ~œ ¾*  ä˜ß  €ße €‰  €˜‚‰B ‰$‰À&Á*        ˜½`±
€€µ Z€˜‚&&*  
&ÐþÑ•  Ð  Ñ•  &_&&‰ßU    ‰‰  &þÜ‰u:&&$Ófg'*  0Äÿÿ@’ð‹ ž  Ð’ð‹ ž  €
€
”*  VÄ Á ù”Ä Â õ’Ä E‰¶ 
 ö *  |„ƒ‚€Õ… &fæ&Á¤'ß ’ò¥  
  ¤'"’*  ¢,ß	 ’—¬  %B‰À5 €ñ   ±   ñ•  
’*  È  ÀE €1 Áe ÕTÀ%@Oß
 ’P‰—¬   "’*  î B‰À5 €Aß±   ñe   ±   ±œ  *  ñ—’ ±œ  ±œ  Áe Ÿ rŸ ß%   ’r$*  :’ß% ÃÃå Dœ Äà
1‘ ñ•         ’*  ` ß ‰_t
‰    Õ@‰¹EP‰  
t*  †„ƒ€…     
ê@ABfÁ5 
ß	ä 
  ê(ä *  ¬DQÁ

ß	ä DQÄÄÄÄÁ
ß	ä DQÁ
‘ð
  ä  ä *  ÒßêÄU ÄU ‘……             
è
  ê(è*  ø
ê
ì
î
ð
ò@_èfW-  
  ê
ìîðòè*   Áè×p
 ß	ä CaF~ßê…@ÕÈ… Áì  èä ê(ì*  D Wp
 Âî—p
 Âe
 B`Äðq
 Äe
 aB
  
îð*  j _ðßîŸìÂò—p
 Âe
 Ÿ`ð_î_ì  ð
îìò ð$î(      ì*   ßòß	ä _aòß
èÏßê_
ì_
î_
ð_
"  ò
ä òèêì"î&ð*  ¶ òße ò_ð_î_ì…Áô@W% P  ò
òðîìô*  Ü PPH… ”W¡} Ÿ
êÅå: Åå Åå	   ê*  !Ÿ
ê
‡ Åe
 û‡ f¦æ&Ãª'×¬  
  ê"ª'*  (!0×¬  ,Àœ Á¦'Â€!s¬  	W¬  
  ¦'€!*  N!Dœ D
 AJ ñ¥  ñ¥  ñ% _¤'  (¤'*  t!ßz!(‰  Š!J Á¨'Â¢!Úß !@‰@ Àÿÿ  z!Š!¨'¢! !"  š!@‰.ú  ÀEþÿ„ƒ‚…            8"  8"0 ?    <#  <#          R#*  R#        &f‰  Áº!À—:"ÀS#€‰  <"  Ã¸~º!:" S#&Ã¸~(<"*  x#8"¶!Ñ¶!À
÷À>#Á
 
Á
ýß• R#€…   8"¶!
¶!>#"R#*  ž#&fð&f¦ß§R#S#ƒ‰> "Â¤'Ÿ  °!@  R#S# ¤'&°!*  Ä#&ÀÀ€eÀe>#ß8"´!ß´!À%>#Â<#ß<#°!"  >#8"´!´!>#"<#&<#(°!*  ê#_	$ßç´!°!Âg´!÷ >#ÀC#Á ŠÁ
ý  $
´!°!´!>#C#*  $‚€… 
Á—R#Áe¸!_¶!Ÿ0$‰  ¶!  8"
   R#¸!¶!0$ Ã¸~"¶!&8"*  6$Á—R#Áe<"	
ð‹ ð—R#  ð—R# 
œ Áe  R#
<"R#R#*  \$      <"É—R#
Á—R#Áe="	œ ð—R# ð—R# ße R#  <"R#R#="R# R#(R#*  ‚$°Š … 
T#&f¦@ÀÀ@eÀe>#ð‹ 8_	%  T#>#(%*  ¨$ÁV#_  °!_Ú$ß¤'Ü$ß8"X#ßX#ß'°!X#*  V#°!Ú$¤'Ü$8"X# X#$°!&X#*  Î$Ÿ
T#ß°!X#
‰    X#ßT#ßgX#Ú$ßgX#Ü$ßç&  T#
°!X#X#T#X# Ú$$X#&Ü$*  ô$X#°!ß'°!X#Ÿ
T#ß°!X#_	%äÕE‚"  X#°!
°!X#T#°!X#%*  %€… 
œ Áe¸!_¶!‰  ¶!V#
œ BÁe<"  ¸!¶!Ã¸~¶!V#(<"*  @%p’ … &f@&ÀÀ€eÀe>#ð‹ E$&
œ  >#*        f% Îe¸!Ÿ¶!Áe="p’ ‰  ¶!V#ßV#¢%ß¤'(  
¸!¶!="Ã¸~¶!V#"V#$¢%(¤'*  Œ%¤% >#ß<#¤%ß¸ý°!
‰    °!Õ€… &  ¤%>#<#¤%°!°!*  ²%@&ÀÀ€eÀe>#0” 0” €… À¦'œ œ 
  ># ¦'*  Ø%áÀ¨'œ œ áÀª'œ œ á… À¦'œ  ¨'ª'&¦'   þ% À¨'œ Àª'œ …   &Â&T   ¨'ª'&Â& '  ''
  ' ¤'  ¤'        ´'B(Ð(Œ   ´'B(Ð( @(  @(Œ    Î(  Î(Œ    \)  \)Œ    ê)*  ê)^)
:
*+
,+F‰P*ß  !_   ß¬'¤'_	(  ^):*+,+* !       Œ¢`$¬'&¤'(  *‚*ß'¤':‰T*Ÿ
,+ß¤'¦'F‰ÔZ*ß®'*  ‚*'¤'T*,+¤'¦'"Z*&®'*  4*¤'_	‚F*H‰ Ÿ
*+õß*+
ß¤'¨'	@‰D   ¤'‚
F**+*+¤' ¨'*  Z*@‰E @‰F … ×'*+ À¦',2  _	–T*  *+¦'&–(T**  €*À¨',2  _	–`*ß¦'¢*ß¨'¤*_	    "  ¨'–`*¦'¢*¨' ¤*$*  ¦*?_	°% ß
*+9ß,+ß'Ú*ßê)Ü*ßê)¦'&  °%*+,+'Ú* ê)"Ü*&ê)(¦'*  Ì*æ'Îe  Ÿ.+
‰    .+ß®'¤'L‰ &+ß¦' +"  '.+.+®'¤'"&+&¦'( +*  ò*ß¤'"+À¦',2  _	–T*      À¤',2  _	  ¤'"+¦'–T*¤''  +–`*_	    ÄÕ…           ¹    –`*
 <+*  <+º    $‰ß&N+
‰8+  0+ßg0+&ß&b+
‰:+&  &N+8+0+0+&"&$b+(:+*  b+  2+ßg2+&&‰… $‰_>+ß&€+
‰<+  4+ßg4+&  2+
2+&>+&€+ <+$4+(4+)  ˆ+&ß&”+
‰@+  6+ßg6+&&‰…          $"  &&
”+@+6+6+& ®+*  ®+O           ‰
¦+D‰ÌF‰Ïà+F‰[
  ¦+$à+*  Ô+ä+_	  Ü+Ÿ
¦+Õ‰@‰J EûßU   ß  ¢+Ÿ
$  ä+“yt!
Ü+¦+ Ófg'$–w?&¢+  ú+¢+_	p+¢+Ÿ
  _	         …   ¢+p+
¢+ZŠ¿üX       âN   ÂÐÀ*  µdˆw    ÂÐÀ   ¯”L  @  ú&VN@  *  :d@  ‰mÖM@  Œs°r@  þv@@  µz‰‹@  *  µ Z@  Ï,q@  ©[@  Í«@      (    µdˆw,Ôµdˆwh  ¯”   
   µdˆw  $    _	  
  
  Ÿ
  
B‰  ,     ß(  
:d©[Í«BÏ,q, *     & 
‰  B@—¬$ . P‰_ ú "‰‰O_ ú    & B@ú (ú *  F _	  ì ðµ  ‰K!Ÿ
  _ , ¬  
¬   ‰mÖMì ©[, *  l M ‰Q!Ÿ
  _ ,  <Ÿ
  _	  (  ©[, <      :d $&(µz‰‹"  ’   ß'B<È‰  D>ß>¬ 
‰  H*  :dB
<µ ZD>>¬  H  ° FßH>_	>D  
Bße $  FH
>>D:dB$  Ê  ‰  è     ßÒ Þ 
‰  B@_ ” _ (  Ï,q Ï,q
è Ò Þ B@ ” *  ê , Ÿ
  ‰K!P‰_ , ß  
  ‰    …   ‰"  , ©[, ©[:d"Ï,q*  @,.   ‰@!ÕÕ_ 8_Ð_ÎßÖÖ_	  8Ð Î$Ö&Ö*  6:‰‰ßØÖ‰  ÐÊÀÊðÎ. z(  :ØÖµ ZÐÊÊ Î&z*  \
 Ô Ò
Ìœ        ÌŸÌ‰  Ð  Ì×'Ò(  ÔÒÌÌÌµ Z Ð$Ì(Ò*  ‚  
ße ÖÿÔD ßÒÐÕ×'Ô  ßÔÐ  ÖÔÒÐÔ&Ô(Ð*  ¨Íß%ØÖß  Ðßå Ö×'Ð  ò¾‰      Ø
ÖÐÖÐ  Î             <
  <        F  FŒ        šN   ÂXÀ*  e€%    ÂXÀ   ¯”L  ì&@  Y/€p@  *  µW5–@  Œs°r@  0t  @  þv@@  ¶à8@  *      (  e€%,ãfBkh* ãfB„h2 ¯”   
   e€%              *                   ß  
 ‰_ _     $ ( (        @ ?
Øÿ
  
" _	  Ÿ  $ _	    ._	&  
  " Y/€p$ µW5–   "*  d   }l _	  h ß 	ß  æ$ ‰)Ÿ
"  0t  l 0t      "$ *  Š   _	    ˜ æ$ ‰*!1×/vÿ1 
ƒß" Ù     µW5–
  ˜ $ &" *  ° æ$ ‰+Ÿ
" ÒÁ Bœ  ÂÂe Ÿ  ‚Ÿ&   $ "  "  (& *  Ö ß  ‰  ‰    & ( Ÿ
  ÿ*ÿÿ( $ÿ¿
*  ì&¶à8¶à8  & ( ì&$(   ü ÿ±Õ‰Eý       ²0N   ÂÈÍ*  SeÀÁ    ÂÈÍ   ¯”L  ‰h@  O¹’@  *  d„!@  ìÐ@  @  •)@        ¯ d@  *  Ë g@  !  @  d:K@  !&ò@  y&,K@  *  y&ÖK@  ê&@  ú&VN@  d(@  ~(v:@  *   <  @  <  @  |LØY@  NFw@  N“y@  *  µW –@  ßf,-@  ãfBk@  \gÏ@  Œs°r@  *  )t  @  +t8F@  0t  @  þv@@  wuL@  *  ­x 
@  ‘y@  [zœ5@  \(
@  J†\z@  *  ³à~@  ´ÀX@  µ Z@  ¶ s@  ¹ðK@  *  Â	@  Ç-q@  9©x‚@  ï© q@  ªx@  *  ÌªµW@  ÌªˆY@  Ìª]@  ö«N@  ‹¯=@  *  ‹¯@=@      (  SeÀÁ,–H«˜{h  ¯”   
   SeÀÁ      _	  w          &  
ï© qªx      ¯ d+t8F)t               ,:(  0t  µW – <  
N“yNFw,:   jVòd´²f
H&  jVò
d´²f
H  0   ØÎò†~Fú(  <  ØÎ
ò†~Fú  B Ö        3                 Ö ^ *  ^                        .
    <UNRECOG*  „ NIZABLE SOURCE FILE. "IDENTIFICATION"   ª MISSING. ABORT.ª   º *  º   7UNRECOGNIZABLE SOURCE FILE. /CVF SW*  à ITCH MISSING. ABORT.‰ß   _	º
   ‰   ö«N"º&O¹’*  (‰ ò@‰„!ß
N û      ß5   	—¬  Àº   N [zœ5(º *  ,_	  Àz _	  ‰„1Ÿ  ^ —¼  ‰ ‰  \gÏz \gÏ^ *  R4‰ßH 
H  ð@æ^ ‰…= ‰—¬$ .   H H ^ *  xæ^ ‰† ‰4‰ßH 
H  ö@‰‡  ^ H H *  žß X "Ÿ  ^  ‰—¬$ . æ^ ‰ˆ ‰Ÿ  X ^ ^ *  Ä T Ÿ V 8‰ ‰—¬$ .  ‰òµ  õ‰
  T V *  ê
P 
R 
H  ‰òµ  ‰u ‰òµ  û  P 
R H *  Ÿ  ^ 4‰ßH t:‰ßJ ß% J ß F   ^ H J  J (F *  6Ùß% J ßF tæ^ ‰¶!oß%ÿÿJ _       .  
J F ^ "J (.*  \<‰ßJ ß% J ßX æ^ ‰‡Ÿ T Ÿ  J J X ^ &T *  ‚ V 8‰°ß% J B‰ª>‰ßJ ß% J ß  V J J $J *  ¨F Ÿæ^ ‰ƒß F _ ê@‰ßJ ×'J    F 
^ F êJ $J *  ÎR‰ê×'J 	 _	dãß% J D‰Ýß% J   
J dJ &J *  ôF‰×ßP ßR Ñ_ êßF æ^ ‰t_	@  
P R êF  ^ (@*  _ êæ^ ‰u_	@_ ê‰COBL00    :‰ßJ   ê
^ @ê(J *  @(ß% J æ^ ‰}ß F ß0T ß V 8‰  
J ^ F 0 T &V *  f      ßZ ofß% J æ^ ‰~!ß0T ß V 8‰  Z J ^ 0 T &V *  Œ…_ .ß%ÿÿJ …_ .<‰ßP _ @ßJ   .J .P "@&J *  ²ß% J Ÿ T Ÿ V 8‰;ß% J B‰5>‰  J T V  J *  ØßJ ß% J  @‰ßP ßJ ×'J    J J P  J &J *  þR‰×'J 	 _	dß% J D‰ß% J   J dJ (J *  $F‰ß Z ßN ‰„1…_ êæ^ ‰ø  Z N ê"^ *  Jæ^ ‰ƒó…  ó@ ‰4‰ßH 
H  ð@  ^ H "H *  pæ^ ‰w2 ‰—¬$ . ,æ^ ‰( ô@
  ^       ^ *  – ‰4‰ßH 
H  ð@æ^ ‰‚ ‰—¬$   
H H ^ *  ¼. æ^ ‰x õ@ßÿÿJ 
J 	 ‰ß  
^ J "J *  â J  ‰ß J … &
 ÷@ ø@ ù@ 
  J J *  û@ ü@ ö@ß J  ú@ß J Î
  J &J *  .  ‰—¬$ . æ^ ‰yÖH‰
J … —¬$ 
  ^ "J *  T.  ‰… Ö
J …  ý@ þ@ ‰4‰ßH 
  J &H *  z ñ@
H æ^ ‰{ ‰—¬$ .  ‰æ
  H ^ *   ^ ‰|ß J 
J … &
 ÿ@ Aß   ^ J J *  ÆJ   Aß	 J  Aß J  A        J J  J *  ìß J Î  ‰ò¥. $ æ^ ‰yÖ	H‰ß
  J ^ *   R Ö
J … —¬$ .  ‰… (‰ÀÀ5 @
  R J *  8ß H … ò• ,  ‰ßL òµ  òµ  ñ
  H L *  ^ß P 2Š, … ‰×'T 0#—¬  —¬    P T 0*  „ÀV  	 ÁT Á
À

ÃøS¢ù× ûƒæ  V T ø$*  ª^ ‰‰Á0À ÁT ÀV Â    À   ^ 0T V ÌªˆY(  Ð  R”À
ýÀ  
ß	  _  À 
ß	  _(  ÌªµWÌªˆY9©x‚Ìª]ÌªˆY $9©x‚*  ô ‰ABCDEFGHIJKLMNOPQRSTUVWXYZ01234567
  Ìª]       *  89Ÿ
L H‰
L ß	 x 
‰  k x À` 0‰²
  …    L L x !  k x  ` *  @±  Ä  v    u†Ú°Û²|	¶žÐ  ‰  †°² ¶$Ð*  fŸ
F —¬$ . D ‰—¬$ . H(‰2‰Nú^  ‰&‰Ï  F N ú*  Œ.‰úÖ(‰2‰@úÖ ‰—¬$ . 3(‰2‰Rú^  ‰  ú@ú"R$ú*  ²&‰Û*‰|	ú&‰Ç,‰öú—¬$ . *‰žú&‰  úöú&ú*  ØÇ.‰úŸ#  	Ÿ  —¬$ . ‰ìÖ‰ë  ú­x 
wuL*  þ—¼  ‰ ‰ù ‰—¼  ò‰         !  $               :©?&   T   B  B                       n  nˆrÞ–pfJ&:  *  ˆrÞ
–pfJ&: ²*  ²0 D  •„<_	Ž

¿AÑ  Ø  
		øâ  6" 	*	8*  
		
øâ6" 	*	8
  ðÖÈ   ÖÈ ø
  ø         	  	     z	  z	`    
*  
       	
 \\
 &\^
 *  ,
(\^
 *\^
 <\^
 >*  R
\^
 @\^ß F _Š\ ‰ß      F  \ &ìÐ(y&,K   x
ß  >*‰ŸŽ_	  8<@Bß<*  ìÐ>Ž‰h8<@B<      &  ”
  *‰ŸŽŸ
  ßE   
‰úüz	Š

‰(  !&òŽìÐìÐúüz	"
&  ¶
€‚²ß  Ÿ  	ßg  *‰€Ú
ßU *  €‚²ìÐ	ìÐ Ú
*  Ø
<	*‰Dä
_ ¶,‰\	0¶(‰_ Â2‰´Â€ &  <	
ä
¶\	0¶Â"´$Â*  þ
•ñ‚
W  ‰?‰s1
’±  ¢ ‰&
  ‚’$¢*  $&
x	n±‚€ñ’1’_	Nì
À†ÀE x	  n‚’’Nì
"†$  Jîß‚5$‰ß"$	ß   L‰ß(  î‚"$	 ìÐ*  j  ß2  Ÿ
  ò¥. $ ‰_ ˜
 ‰_ ˜
òµ         ê&
2y&ÖKê& ˜
&˜
*    
ß  ‰N‰ße   ‰‰_	_ ˜
  ê&ìÐ$(˜
*  ¶‰ ù‰  ö‰r_	0_ :$‰$    … 
	  0:$"ìÐ(	&  Ü
	
	
 	
"	ß—\		ße# 	_	  	(  	
	 	"	\			"d„!$	*  þ02… &ò¥. $  ‰òµ  (‰À%Ÿ
  02*  $‰€…  ‰ë& ‰(‰2‰´FÖ€… _	N  ´F(N*  J4ú&ò¥. $ òµ  (‰ ŸE€… Õ  4*  pü.‰Ÿ•?	&‰Á¶
 … Š?	‰õö‰xó  ?	?	*  –&‰Ê&‰Ç¶
 *‰¡ª¶
 *‰      ¼ßU <	  ª ¼&<	*  ¼¶
 *‰P	È
ö  ‰ ß•ÿÿ;	_	0… &¶
  È;	"0*  â &‰Ç(‰ ¡ _	 i‰Àö*   ö ßU <	¶
 ßU €<	 ‰€… ¶
 ‰*‰
  <	<	*  .Ñ4‰= ¶
 ‰&‰ÇÄ¶
 ‰Ä  4(*  TŸŠI	*‰Ž`‰=!
Ä
ŸŠI	Äþ¶
 ‰  I	`
I	"þ*  z&‰È&‰ÇÁD¦  _	  LNôÑ 	W$
   DãfBkLNô*   f&‰Ö*‰½¶ñ þÿ‘Ñ—
 Ñ— ß    ¶ µ Z
 $µ Z (d(*  Æ‰  ‰  DDŸ
  -þÿ
 Ü  Ü• &  ¶       s¶ sDDd("d(*  ì*‰¿ü®‰H _	0‰ 6	 	
	 
 "  ü06		 
$&*  &f@ÁÚ ý‡Õ€… &@Øg   ü‡ö  Ú"ìÐ&  8&_	ÂÖßUDPV	_	*¼È$‰ü
6$‰*  
ÂÖV	*¼Èü 
"6*  Z
  
	×§?	 ‰?ß• ?	ß‹?	ŸŠ?	ßŒ  

	?	?	?	$?	(Œ*  €æ¬‰ò!ßŽæ®‰ó×'ˆ ƒæ¨‰  ¬Ž®ˆ&¨*  ¦ ßE `<	ßŠæª‰Y
6	²†  P ü   
<	Šª6	&ü*  ÌP V š Fÿ  &_	¨¼ßU €V	_	*¼È$‰	"        ¨¼V	 *"¼$È(	*  ò	
6ÀˆÀ\r<	\zV	×§?	 ‰?ß• "  	
6
ˆr<	zV	?	*  ?	ß‹?	ŸŠ?	x	‚ßŒæ¬‰ò!ßŽæ  ?	?	?	‚Œ¬$Ž*  >®‰ó  
ƒß6	æ	‰p ßE `<	ß5 <	  ®6		"<	(<	*  dæ	‰n €…      @  @@  8ŠŠ”ž  	"Š$Š&”(ž*  Š$‰
  
	… $‰*
  
	… $‰6
  
	… ~ ˆ P 	  


	*

	6

	(	*  ° P P ’ Fþ 	
		6" &_	tˆßU &  	
		6"  "t$ˆ$  ÖV	_	*¼È$‰		
6À      ˆÀ\r<	\*  V	*
¼È		
6ˆr <	*  öFV	×§?	 ß‹?	‰õß• ?	x	NßŠ  FV	
?	?	?	"N&Š*  æª‰YßŒæ	‰ñ!ß5 <	æ	‰n   ªŒ	<	$	*  B€…     8VV`j$‰B
  
	… $‰N
  
	"  VV`jB

	$N
(
	*  h… $‰Z
  
	… „ Ž P 	 P P ˜ Fý$ ¶
 &  Z

		*  Ž&‰Ôß  	\‰†‰U _	Îßgô  $¶
 ¶
   
ìÐ	ÎôìÐ*  ´ö$‰ô
  ßgô  fÁÞ	À—Ø	_	n†æ*  ö
ô
ìÐôìÐÞ	Ø	"n*  Ú¢‰U       \‰æ†—-  æ¢‰ €…     
   
  ¢¢*           Bw v	Ú  Ÿ
F ‰ß·\   æ  B ÚF "\ $ê&*  &^ ‰ H‰]_	îH	û‰r_	îø€üßgø  ^ î î(ø*  L  ßøKÀ  _	À_	È†‰a Z‰|	_B   ~(v:øy&ÖKÀÈ"|	*  rúô
1
B ñ ÅŸ
  Â  …Å…
Â  ú‘y‘y*  ˜æú‰uq E, 	Åæú‰u
E f
  úú*  ¾" ñ  " X‰€ V‰Z‰|	Ñ$‰ü    ßgü     ìÐ|	ü"ìÐ&ü(ìÐ*  äß
øº_ `&(‰2‰€ÖŸ  ú ‰¯ €  ø`       ú*  
—¬$ .  ‰—¼  ¯ ´ ‰èã—¼  *  0æ^ ‰ ñ ‰¯ ¸ … ‰æŠ*‰ŽRÎd&‰Á  ^ Š R$d*  V&‰b,‰\	0È^ Ÿ
  T‰ñ P‰Ä  Ä„
1  
\	0È‘y"‘y*  | X‰,‰\	0ÒïT‰^‰!‡Ÿ
øñúB X‰,‰  
\	0Òø"ú*  ¢\	0´T‰^‰‡1" ñ@V‰1" X‰!‰D  \	0´*  ÈÖæú‰ _ `ñ" 	P‰,‰\	0êT‰ö±   ú`\	0 ê*  î¡ … æú‰o_	°… ‰&
*‰Aæú‰?   
ú°$ú*  &‰Ò&‰Å
,‰\	0šŸ
  *‰\	HNŠö‹ æ  \	0š      ~(v:H*  :ú‰> .‰„	„
vŠ Î‹æú‰> T‰W<&   úú*  ` „æú‰ª_	°
ñ2 P‰12 ñ    X‰  
ú°$ìÐ*  †,‰\	0¤Íæú‰? æú‰ $‰ü       \	0
¤úú$ü(ìÐ*  ¬ßgü  Ö_ `i	øj	øk	 øl	@øm	€øw	 x	  üìÐ`*  Ò}	  ‰(‰2‰¸p ‰
…Ý 
„ÕÄÄÅÅ
  ¸p*  ø*‰Ì æú‰ ,‰\	0zT‰W! W<&     ú\	0z*  ñ& æú‰ÃW!àæú‰W! 
  úú*  Dæú‰ôqA& q1: P‰qQ: 1Q& X‰,‰\	
  ú(\	*        j0‚Ðæú‰æú‰ _ `_	†æú  0‚úú`"(ú*  ‰w 
‰úüz	ßF 	L‰À2V‰Z‰|	… … ß   
úüz		2 |	*  ¶F 
¸

¶ß¼Ô—¼  _ D(‰2‰‚"  F ¸¶¼Ô"D(‚*  Üê ‰€¼Ô*‰µ8ß¾ÔŸ
¸²
  *‰Ç$  ê¼Ô8¾Ô ¸$•)&  82
  Ÿ  È,‰ö@
Ê
Ì
Î
(  8•)Èö@ÊÌ"Î*  $Ð
Ò_	  Æ_ &*‰¶V.‰N€  (  ÐÒd„!Æ&V N*  J_ N  _ N
L± LÀ
üß7L        _   NNLL"L$J†\z*  phßWL  Ÿ


J*‰Ì®×' _ (  hL
J†\zJ® (*  –ß5 @J_ 
JßU @J*‰~Ì×'   JJJ Ì$*  ¼_ ß5  J_ ß*_ 
JßU  J&‰  J J&J*  âÑ²
  *‰Ç`2
  Ÿ  >,‰lT
@
B*  •)`•)>l T$@(B*  
D
F
H_	  <Ÿ
° ‰—¬$ . $  D
FHd„!<*  ._ Ö ‰—¼  ‰é_ Ößß¸‰²  ÖÖ"¸*  T…       ,‰öŠ*‰Çf‰äŸ
¸*‰{	x_ &*‰  ö
Šf¸"x&&*  z5‚_ &‰ê_ ì*‰QÎŸ
¸&‰Î*‰ÇF—¬  ‚
&ìÎ¸&F*     _ p—¬  ÀÁ
:¤ û_ v  p(v*  ÆŸž   «*‰S|Ÿ
¸*‰Çˆ*‰N‚ß   _ &"  d:K|¸ˆ ‚$Ë g(&*  ì(‰2‰”ö^ ,‰ö*‰Çì_ j—¬$ . —¼  ”
ööìj*    ‰æ_ D ‰—¼  _ D‰éÜ ‰Ú
  DD*  8‰ä_ ‰åÓ‰ä_ ž‰ãÌ‰éÉ‰è
  
ž*  ^Æ‰ä_ î‰ì_ x‰¬»‰­¸‰®µ‰      
  îx*  „¯²‰ä_ Þ‰p«                     Þ*  ª                  TILPCRPRPP          *  Ð                                        ö                         Æ  Æ0   *             ! 0123456789ABCDLPRSVXZ *+  2-,.;()"/=   <*  <                                      $  b                                   <  <0	   ‚*  ‚´  	 7 6   ´Öµê	Ö7Ö6Ö  Öê Ö$Ö(Ö*  ¨¶8QŠSÎ      Ÿ
  ßE   $‰–°  ßg(  8
ŠÎìÐ      ìÐ"–$°&ìÐ
  Î–  …   –ìÐ *    —¬  ± €  ( ùØ	€
€Àe   Ø	$  :Ö	
Ü	_	bßÕ@ Ù	‰  Ö	Ö	Ÿ
  À*  Ö	Ü	bÙ	¹ðKÖ	Ö	 |LØY'  Z   ‰¡ … Ÿ j
‰  Þ	Ø	…       ýþÿ 1  |LØYjÞ	Ø	 ~*  ~Á @˜ 	Š_	    ¶    Á”@’v`*  µ Z µ Z Â	µ Z¶ ”&v*  ¤€A’@`` Á”¡ 
± À–… &_	~	&  µ Z ”–$~&  Êßr ßt _	Œ‡ÄxT¬ ý÷ß *  rµ Z tµ Z Œx$µ Z *  ìrß t¡ „…       __
‰    vA… &À  rµ Z 
t v*    _	À‡&f@’@`Á\	’$–%_	Èò  y&ÖKÀ\	"È*  8€_	ú|	¡ „… 2_ZŸv_	    2  v*  ú
|	2Zv Ç-q"µ Z$2(v*  ^… „ƒ‚€……  ( À( ‰œ!l_	²
  $l(²*  „ÀjðB ß	  ‡È• ðð ß	  ¼    j
B‹¯=ð ‹¯@=*  ª±  … _¸
‰  Bl…             À  ¸Bl(À*  Ð  Â  Ä  Æ  È  Ê  SH €    ÂÄÆÈ Ê*  ö  CL @  ÌAL   ØCO    ÒCH   ÞDW         ÌØÒ$Þ*      MI     WI   äLO€     DQ@   ê  
  ä&ê       š;N   ÂØà*  Se È    ÂØà   ¯”L  O¹’@  d„!@  *  ìÐ@  @  •)@  x(H øMH *  ¸’H ;ŽH \°EH@ ¥ X@  ¥ÎdH @*  ¥>wH  ¯ d@  vàH €!  @  ê&@  *  ú&VN@  è:  @   <  @  |LØY@  ;Mú&@  *  ;M;K@  NFw@  µW –@  keÞ@  Œs°r@  *  )t  @  +t8F@  0t  @  þv@@  Þ@y@  *  ³à~@  ´ÀX@  µ Z@  ¹ðK@  Ï,q@  *  ©Ô@  ©8Y@  :©@  C©Kq@  E©ãf@  *  F©.@  d©y:      @  ´©ö&@  ´©$T@  Ã©ö&@  *  ï© q@  ªx@  cª }@  ÞªÀ…@  C«|S@  *  O«|S@  U«|S@  V« @  •«ð@  •«µW@  *  Á«X@  Ñ«€W@  ö«N@      (  Se È,2!*  »ÖKhîp!h¡ºyh.²€»h*³vLhX*  ‹whŽ¥Àhß¬u:hË€h-Î  h*  ØB~h)ükhÚzî~h(zn‹h&å€WhÒ*  å€‰hàé }h•=p:hØ?8hÖ‰Àhì*  ‰8hÞ‰ÄhÔ‰hÝð-há[]hÜ*  t¸h”¢à`hB1 @~h>%!€Wh8„!³h>*  „!ØYhJ„!\}h8„!±h–„!XÀh„G"€Wh@*  M"xhhV&À]hê&±h,ô&h¨ô&µWh„      *  ö&g'h0a'¸.he'€Wh¤e'[h¦(8Xh6 *  (ëyh8 (±h  (®‘h4(ìrh(ð_h*  ,.íh‹/h/ 5  h”9 }h><9µWh„*  %:€Wh¢J;Àh@ð<  hj=  h.6=  h6*  h=  h0=  hV>  h20>  h4X>  hh*  ÖKÀÁhðÞK"!h(ÞK.!h|vL„!h vL 5hD*  vL±hF|L #h˜éL„!hBÀQ	h\<Rkh*  LXÈhT;^±h&æ^  hèke  hêke 	hp*  ‰m Kh
¼pœhªLq0 hLqÖKhtrœhæ*  ¬s¸’htñvâGhÚôvƒ…hžúvb	h¼üv•hœ*  üvœh$/xÐWh+6x¢h,y€Wh‘yg'h:*  ‘yø8h<
zµWh»zµWhÌ      9†Š,h*i†(Kh$*  Š }hÞ,Š  hÜŒ8^h
¶(dh( *’ÀDh€  •’ ZhPH«À{h  ¯”   
   Se È      _	  _ ¦           *  
¦ )t  0t  è:   <  ï© q(     †	¶	    ¶Ö                      *  +t8F†	¶	
µW –NFw¶Ö³à~  6 8 
  8  œ 
  œ         ¦   ¦ ß   _	  _	  @2D_	  *   ö«Nd©y:ªx@2DE©ãf"  À 2@0&
Î—0ŸeB
‰ª¬ø‰  4‰(  2@00Bª¬øÏ,q*  Þ æ Îeî ‡‰ !6‰ùæ ø 
:
x_	f_	†*  æ î æ       ø 
: x$f(†(  _	  é
t_	f_	0â
t
p_	fß  &  Ã©ö&tf0tp"f&!  $  (  Ÿ
  _	nß    Ñßx_	  ß(  ;Mú&;Mú&n!  ;M;KxÃ©ö&(  Ht‰{ ‰  ( _	  ß  
 … (‰"‰ñ@(  t( ¥ XÏ,q Ï,q Ï,q *  lzò¥. $ (‰… ‰£÷‰¤ùß• Ž²
  "‰  z"Ž&•)*  ’Aâ
:_	  ß:ß  8
  ße   ßE*  â
:´©$T:ìÐ8ìÐ&ìÐ*  ¸   ×'| 'ß  V_	H_	  ß% |ß(  ìÐ
|ìÐVHC©Kq"|(*        Þ  ñ2
  4‰òÖŠŽ… ‰¡!,‰²
  "‰AÉ   ìÐ
•)òŽ •)&*  2
  4‰ö‰jìß5   Ÿ
  _	  ß:¯ß"  •)
öìÐìÐ ´©ö&$:*  *8  «ß• Žß    .‰Nß% |_	Hù4‰(  8ìÐŽìÐO¹’N|$H*  PZÖŠŽ… ‰§!,‰×'| ð4‰^òß• Žß  Z
Ž|^&Ž*  v  8.‰ß% |
  _	H÷4‰¢ÖŠŽß&  ìÐ8
|ìÐH ¢&Ž*  œ8  … ‰§!,‰×'| ë4‰¦ï¦òµ   ‰  8ìÐ|¦*  Â2‰lÐ¶ Õ… ÖEü¦4‰â¶ … ,‰ù    l      Ðâ*  è                                      '                                        2*  2J %                                   *  X                                      *  ~                    Z                 *  ¤                                      *  Ê                                      *  ð                                      *                                        &  <                                    |  |                      Ð  Ð                            ä  ä             p  p     ’  ’                 $  $À  R                       ¢  ¢v F #        $  $     ø*  øL     0                        *                      LINAGE-COUNTER  *  D    ‰ß  èŸ
èßE è‰¾!Š/ŠŠ  ìÐèèè$/(Š*  jŠŒ






ß% |‰"  Œ

$|*  F ß§|Š‚‰ "A_	R
_	>ß|Iß§|(  |
ŠR
>|$|&(*  ¶ß%2 |
ß%X |4ß%B |3‰      E ßU ß5   |||$*  ÜßU€ _	  Ó_	Ú_	bß5€ ßE‚    ÞªÀ…Úb (*  	ß¥ (,ß§|(À_	@ß§(|é‰| ,‰×§|  (|(@(|(|*  (	 ûá_	  ºŸŠŒß |Ö ‰2‰lN	ÖÏ  F©.Œ|"l$N	*  N	ßt AÉ‰n!,‰£ß‹ŒŠŒßB |_	  tŒ Œ&|*  t	  ßè  Š,Š+‰ò¥. $ (‰.‰”	…  ‰  •«µWè
ìÐ,+"”	*  š	2‰lª	Öòµ  ó²Š% (‰2Š% èŸ  ô	

  lª	$ô	(
*  À	òµ  Ÿ  
²
  &‰*
—#2 +—#X   
      •)*
*  æ	—#B %—#M Î  ‰€×§Ž $ß• ‹Î
  Ž&‹*  
 Î¥ ß
æ  ‰BŸ|Õ… E
|2
  
|&|*  2
  … ß‹‹éŠ‹Î% ç‰eë‰4Ù‰
‰Ð  •)
‹‹(Ð*  X
Ò$ß•ÿÿâß—|à
|Ÿ  


*  Ò$â|à| $(*  ~

ˆ ‰"‰^Ž
‰V!_	Ì\”ßU ß  ˆŽ
Ì\”&*  ¤
 \0‰\”Ž
Ÿ  X"‰‰Ä
_	  .‰Ê
$  \\”Ž
XÄ
 •«ð&Ê
*  Ê
 ‰"2‰"ü
Ÿ  Xö‹ 	Ÿî
 ‡(‰_	    
"ü
Xî
*  ð
éÎe~Ÿ      î
ø2‰l
Ö‰Y‰k,‰ò¥.   ~î
l
*  $ ø(‰.‰ ‰‡  ’  “  Ü   à   á      C«|SU«|SV« *  <  Þ   ß   †  Î  p h	 c	   ƒ    O«|SÁ«X$Ñ«€W(cª }*  b€  ‰    õ@ A A A         ©8Y
©Ô U«|S"Á«X*  ˆ  ""  00  ‰A±   ò¥  ò¥ *  ®  ‰>"‰@Äñ•  ì2‰‚2±
 1 ñ  Ä‚2*  Ô  ñ•  #ñ‹ ‰6 Ÿ __ße  "&*  ú
 ße ±  
‰      ò¥  ±œ   
  *   ±œ  ±œ  Õ(‰‰f       ‰lEùŸŠâ€  $â*  F‰@ … ‰ß•ÿÿ0_	H_	zß5 Ú_	Pß5   0HzÚ$P*  lÚ_	ú_	&ß5 ÚßU ß5 ÚßÕ   Ú
ú&Ú"Ú*  ’,ß5 ÚßÕ ,ß‹+ßÕ ,ß5 ÚßU  ,
Ú,+,$Ú*  ¸ ß5  ÚßU ß5@ Ú#ß5 Ú‰  ÚÚ"Ú*  Þß¥ .ß¥ .‰–ß• .À—ßT  
.. .$ß(T*  ÁÒà_ß_-ßU  ß5€ Úß¥ .ß¥  Òß-Ú$.*  * .ßU ‰•ß—à(_	‰‰ß‹/  .à(      &/*  Pß‹Üß—/Ü‰ß§/Üû‰õ  Ü/Ü/Ü*  v	
‰À—ÜÀÁ—Ý@`  _‚œlÁW  YG`  ÜÝl*  œW
;Q'+ß• *G‰:.   **  Â×§Þ ‰;ß• *:ß• *6Š*3ß•   Þ**"**  è*/×§Þ ø‰;ß• *%ß• *!
×§Þ  *
Þ* *$
(Þ*   ÷‰;ß• *ßE Úß• *ß• .ß•€   *Ú*$.*  4+ß Òß•€ áŠ,Šß‰‰ ×§) ‰  +
Òá,ß")(  ZMßöüßøþßú ßðößòøß*  
öü      øþú ðö"ò$ø*  ~ôúßÖòßÿÿðŸ
VßVôŸŠ)ßU ßU*  ôú
ÖòðVVô )&*  ¤ ß5 ÚßU ß5  ÚßU ß5 €Ú  ÚÚ"(Ú*  ÊßU@ ß5 @ÚßU  ßØß—
 †ß— *  
ÚØ"µ Z
 $†(µ Z *  ð‡ß—àŠ… ‰ß‹)ß5$ ‰ßU   ‡à
Š)(*  ‰‰
‰’”&øŠ.ß5 Úß¥ *…   ’”&.Ú$**  <ßU@ ßÒ$ß—Þ.ß—á+ßµ€ á	ß¥ *&  Ò$Þ.á+ á(**  b      ‰K"ßÕ€ +ß—ß-ß¥ *ß¥ *ß¥   +ß-*"**  ˆ*	ß¥ **Ÿ$Ÿ
$%ß% Òß $  **$$Ò&$*  ®ß%	 Òß $ß¥ *ß% Òß $  Ò$* Ò($*  Ô	ß $ß% Ò‰]ß%  Ò‰I!Ÿ
Òß  
$ÒÒ&Ò*  úÒ ß$… ß¥ .ß¥ ._	… ‰Æå  Ò 
$.."*   Œ ß	  ¶“ Îe	 Žö•@  ö—ß 6
 ŸLŸ  keÞß&L*  FN‰      œ Ÿ
  ß  êÆeŒ ‰ŸŠ0€‰$  N¹ðKœ |LØY|LØYê"0*  lB … ‰ß¥ *ß¥ *      ß¥ *ß¥ *  ***&**  ’ß• *ß• .ß5BßEB‰^ßU   *.(*  ¸ßèß5 +ßµ ,ß‹+Ÿ
Ÿ
$ß5  è,+"&$*  Þ ß5 èße è†‰¾!Ÿ
"ß5   èè "&*  Ÿ
$ß5 ße è†‰¾!ß5 ß$ì  $è &$(ì*  *ß5 ß5 $Ÿ
$ß$ðÀòß$ì"  
$$$ð"ò&$(ì*  PÀ
ßgðì†‰¾!÷ß5 ß5€ ßU   
ðì"*  vßgì"†‰¾!_	âß—.9ß:ß<ß*        ì
"â.9 :$&<"  œ
>ßˆ@ßDßèLßNß—*  
>
ˆ@DèLN*  º*Pß—(Qß—-Rß¥ .	Á—-ÁgT_Sß—*  *P
(Q-R.-"T&S*  àTRß§(Š†ß†^ßÕ Gß5  ßÕ H&  TR
(Š†^G (H*  ß5 ßÕ GßÕ@ Gß5 ßÕ GßÕ@   GG$G*  ,Gß5@ ßÕ H
Xß5  ßÕ  Gß  G
HX$G(*  R\
Zß5 ßÕ€ Hß5€ ßÕ@ Hß5    \ZH$H*        xßÕ F×§Ž ßÕ Iß5 ßÕ F  FŽI (F*  žß5 _	Žß‹+ßÕ Fß¥ (	ßt  Ž+F (&t*  ÄßÕ Fß,>ß5ˆ ßÕ Fß‹Š
ß§(Š"  F,>F Š&((Š*  êƒßÕ Hß†^ß5 ß5 vßÕ@ Fß5  
H†^&F*   <Ÿ
  ß  J×§9 ßêT&×§9 &  !  !  J9ê T&9*  6ø×§9 ß— Sß5 ,ßÕ Fß5 ,  9 S, F&,*  \ß‹+ßÕ  Hß5 ,ß‹+ßÕ HÁh_	  +H,      +"H&h*  ‚8\_	P3ßÕ  Fßµ Fß,>À—8Ä&  8\PFF ,">&8*  ¨8`  6€`6‰  86×§Q ßµ $  866µ Z86 Q*  ÎHßµ IÀ¢ ð  ð ‰  ¢ ž   (  HI¢ "Ï,q$¢ &ž (  *  ôßß5 ßß5 !ß‰     "(µ Z*  ôÀô2
öœ  ö
‰  øößŸ*  ô
ô2ööø ö$&   @ö‰  øößß5 <
$  öµ Z
øö  \ ß—&       À—' ‰  (  µ Z &
µ Z 'µ Z µ Z*  pÒ    Àr
˜œ  ˜ße ˜
‰  š˜"  Òr˜˜ ˜&š(˜*  –Àš¬  ð ð Ÿ˜‰  tš˜$  š˜"µ Z$t&š(˜*  ¼œ   a„a œ  a Íß5 lß5   µ Z µ Z &&  âß5 Jß&Ã—h
 ß—& À—'*  &hµ Z &µ Z "'*   ‰  ~    ß(
6ßŸ
 6ße 6
‰  (  µ Z µ Z
~(66$6*  *86ßµ F"Ä—hÀj!Ä
Àe ùðð  8      6Fhj(ð*  P  Ÿ6‰  86À8Ä—8 a„a œ  a(  6µ Z8688"µ Z &  v Æ‰8 ßöðßüößøòßþøß*  µ Z öðüöøò þ"ø*  ˜úôß ú
þ
ü
 ßŠ)ß5  'ßU &  úô
 úþü )"*  ¾ß'")ß¥ (ß'"ß"ßt&  
"(" ""(t*  äßßgè"†‰¾!‰J"æ‰h	ß  è *  
Jß"ßg"îßtßßgìè†‰*  J
""ît"ì$è*        0¾!‰J"ß5 ßE èß5 ß¥ *  è&**  Vß5 ßU @ß5 #ß5 æ‰¸  $*  |ß5 ß5 @æ‰¨ßE @_	
  
"(
*  ¢”¬_	ú”ßE À„À@
@À† @
@
  ”¬
ú”&*  È"ßJ„
Jß5 €Š,‰‰&
Î—8æJ"  "J
„J,$8(J*  î
6
‰68ŸJŸ“8Ö‰0 ‰Cß‹)À—  6
68J8$)*  )ŠÄð1  1 1 Áe À
öDÄà3‘  
  )ð*  :D 
   À
ýÁàc      ‰ß5 ßÕ€ F_	
  &F  `  8”–ß–ß<ßD(  d„!8”
––<D*  xß–zß€ß–€… ß5 ß‹+ß¥"  –
z€–€$+*  ž .‰ß¥ *ß¥ *‰Žß5   .***  Ä… ‰Š,ßE ÷ß5 Ú.ß¥ **  ,Ú&**  êæ‰[!ß¥ *ß¥ *ß¥ *ß¥  *  ** *(**  
ß *ß $ß• .	ß $ß• .ß•€   
*$.$$.*  6+ß$… ‰ßˆßå 6 ßäç  ‰(   j*  +$
      ˆ6    $( &  (j*  \ÄîÀÁ
‰  è2$À5 @ßU @  î
è2$*  ‚Á5 ßU ß5 _	 ‰_¨‰      $¨(µ Z*  ¨  ®
‰  8’…    	       -SYSXXXXX ‰  ®8’*  Î__üŸ
¶À¼Á¶Â ß	  
‰¼Æ¸_	(  
ü¶¼¶:©"¼$Æ&¸*  ô  ºÂ  _	  Âº  ‰‰Añ æl×§&  ªxº
ÂE©ãfÂº &l*  . Î0^	,Õ‰EýW¬  W¬    .0,*  @f ‰_E… ñ  q,  †q  f ‰*        f`Õ… W¬  
W¬  f ‰¿E… W, *  Œöñ{ 
 1
 1
  ñ  $
ñµ  Ä*  ² ßµ€ +Ä	f ‰gñÅ  Ä À
 @`  
+*  Ø@l À
’Â%0 ÔmòˆÕ…  M  K ‰A  ò*  þß¥ .Cñ‹ HßLØ_ ÖÂ B`ŸdÒ  .LØÖ&d*  $ŸRŸTßgÖT
ÄgÖ!„ úßÚñ Ãç  R
TÖTÖ"Ú*  JÖßÜ
‰    Üq,  †_	      Øqì    ÖÜÜ¯ d"Ø*  p_l Øq,  ñ‚ñ (q  êßÜ_	Þ  Ø"$Ü(Þ*  –q  ß ª_`ª_	      Lqì  ßL        ªª¯ dL(L*  ¼Ø_l Øñ  ñ  
 _ ‰        ‰f  Ø
Ø*  âÄF Ã
 D`C`ßøú
‰    ðÐßØ_  øúð"Ð&Ø*   Ô_œ  Öß—-Þß—+ßßµ ,ßÕ ßß5"  ÔÖ-Þ+ß,&ß*  . ,ßÕ ßß¥ *"ß¥ *ß¥ *	
  ,ß**$**  TÚÀÐÁØß	òß `Úß— ÚÀÐÁØß	&  ÚÐØòÚ Ú"Ð&Ø*  zXß PÚß Úß— ÚÀÐÁØß	J…"  XÚÚ ÚÐ"Ø&J
   ‰¦¶  ¦¶ Æ*  Æ        Ð             €        è  €    
  Ðè*  ì    2 fÁ¢ß	¶€Á¤ß	ÂßÆÊ_ È  ¢¶¤Â Æ"Ê(È*  Â¢Ã¤ó‹ óÅþ  ³Ü  ß	Áß	V  ¢
¤"(V*  8Ÿ
Êß'ÊÈôß	®‡ f&æ¦&fCœ Bœ   Ê
ÊÈ®*  ^Â`‚
Á¢ß	¶ßÆÊŸ Æ± ÂçÆ±`   ¢¶ÆÊÆ$Æ*  „ß	(!ßÈ



ß	À#Ÿ
Êß'ÊÈö&  (!
ÈÊ"Ê$È*  ªß	ÅDCB¦æ&fÅDCBÅDCB…e  *  ÐDCB„eCBƒeB‚e`DCBŸ
Êß'ÊÈÚ   Ê$Ê&È*  öfÀèÐ      P‚Ààß¥ *ß	  ò   èà*$  *  €ñµ€  ß	¦ ß	V ò €ñµ€  ß	Ü   ¦ V (Ü *  B€‚ƒ„…‡           f&æ¦&fCœ *  hBœ „Â`‚
Á¢ß	¶ŸÊŸ Æ± ÂçÆ  ¢¶ÊÆ(Æ*  Ž±` ß	(!ßÈÂÆ‚
ÂgÈ¦ÅNÄ5 
  
(!ÈÆÈ N*  ´ß	PŸ
Ê
ß	PÃÃÃÃŸ
Êß'ÊÈ  Ê"Ê&Ê(È*  Úß	PŸ
ÊÕëñ €ÃU ÃU Õ‚‚
  Ê*   ‚
A  ÅNQ•Â
ý€‚ƒ„…‡ ñ'Ê 
  N$Ê*  &ñ'Ê @ž ql   Àå: Àå Àå	        
  Ê*  L‡ Àe
 û‡ Àg´
´ñ'Ê À$ß	(!!ñ'  ´´Ê$(!*  rÊ   ßÌf Ž
Ÿ%ÊŸ
´   ÊÌÊ$´*  ˜	 Àå
 Ÿ
´Àe0 9 ql   ‡   ß@ Æß
  ´&Æ*  ¾ÀÿÈæñ   &
1
 1
 ð‹ €ðµ  ñÕ  È*  ä  ðµ  ñÕ  N ñ•  &
&
‡m *  
Î ö    ƒcñ ñ
 l Ã
ƒí *  0ñ œ ì ƒ
Öƒeñ ß ÆßÆœ ñ
  Æ"Æ*  V ß ÈßÈ‡cñÿÿ ql
  ñ 
  ÈÈ*  | ql  ‡e W® - W® J ‡W® *  ¢{ 1‹ ƒ‡ ñ       & 
ñ‹ €€
ñµ  *  È9œþ 	À&æ@ž €e9œÐÿ €‡ êô{ABC  þæ"ê$ô*  îDEFGHI}JKLMNOPQR+-&f¦æ C    *   A  €`Á`‚ƒ!Â
Ã
û&N
ÖÂ
ù*  : ß	(!ƒ‚€‡ È€B
Ã
ö¡ü&f¦æ  (!*  `  C    A  €`‚ƒÂ
Ä~&N
Ö*  † †~ß	(!ƒ‚€‡ È€B
Ã
ö‘ü&@    
(!*  ¬ Gl 0 p p H0 p H0*  Ò  H€‡ &@  Gl H
ˆ
H
*  ø p
 Èe p H
p
 p
 p
 Èe p p  ! p €‡ æ‰z‡          (N   Â0Ù*        Se€Ô    Â0Ù   ¯”L  4@  ü:d@  *  ü‹w@  @8@   d@   }@  ¼ d@  *  @  D|L@  „|q@  A  @  H  @  *  … X@  ž!/K@  #ßr@  –,º@  –,Ô!@  *  j/Ž@  X:†˜H€  <  @  ÏK@  |L –@  *  NFw@  ®Sh@  õX&H  ›Y°	@  ^xQ@  *  ^CT@  ó`4}@  ¡d²@  ©düX@  ¯d d@  *  ³dä@  Úd&H 3f 2@  Ófg'@  Ôf@  *  güX@  g"@  Œs°r@  )t  @  +t8F@  *  0t  @  þv@@  ‹wt!@  ‹w‰‹@  ­x 
@  *  “y&H “y†!H “yœSH “y–yH áyx@  *  ãyÚK@  [z·5@  Ú}be@  Ý      &H ƒ…³@  *  ƒ…3}@  Ä…Df@  =†g'H i†ØO@  Œ8@  *  Œ @  Œ N@  Œ,@  ŒøM@  ŒØ_@  *  Œ%!@  ŒH;@  Œ°;@  ŒýM@  Œ|—@  *  Œï`@  	Œ€%@  	ŒˆZ@  Œ0a@  Œ4…@  *  Œå`@  ŒÖd@  Œ"@  Œl@  Œê"@  *  Œ`"@  Œ q@  Œh@  Œ×@  ŒÞ@  *  Œä@  Œƒ@  ŒkY@  ŒŒZ@  Œˆw@  *  ŒÖ2@  Œ s@  ³0 @  ³èg@  ³à~@  *  µ Z@  ¹ @  ¹€%@  À Z@  À €@  *  Âà’@  ‘&H@ ã’´d@  ©[@  E©ãf@  *  ë©¢Z@  ï© q@  ªx@  S«U<@  S«ÕZ@  *  ½«¼@  ½«      ÿ-@  Ì«$	@  Í«@  ö«N@  *      (  Se€Ô,ž&˜h 0.2hR 0<2hP *  0?4h 0O4hN 0°6hL Kòyh.k2gh~*  üXh”ü&hìü3!hJ³’˜h\	 –hf *  U‹wh 3!!h ›!ä3h2¨!g'h,¨!ä3h0*  ¨!ØYh*¨!òyh(#g'hr,.À]h¼|3g'hj *  ÿ8!hT >9À]h
 @9ÐhtI: –hd <!hV *  lMg'hl 0X@~hö|XÀ+hòÉX -hðîXÀvhî*  ¯Z }hôÑZx(hîT[yh
N`’˜hR:d<hl*  :d‰‹hˆ¡d8whZ ¤d8"h\ ¬du:h ³döhÂ*  ³dhÐ8f@	h„Df  hÀDfÖKh¾Ef{Qh` *  EfåQhb EfSh^ ÓfRŒh¶‹w 5hŒ‹wÖKh      Ž*  ‹w8XhŠ‹wDfh–w?h “y¤h|“yt!h*  “yg'hX “y42hh =†.hjÕ‰ýMh Ü‰u:h *  à‰	h ZŠ¿h ‰‹ð
hJ ‰‹leh†Ãpqh*  ÃiwhÀÃ¸~húÄ sh
D«y:hÚ H«|hö *  å«shž @¬»h¾ @¬ähŽ @¬4hn @¬ôhª *  @¬³h’ @¬%h~ @¬Ôh® @¬{hÂ @¬~hÆ *  @¬3!hŠ @¬	#hr @¬,.hv @¬09hz @¬ƒ:hæ *  @¬”ThÊ @¬ìYh‚ @¬E`h– @¬Údh† @¬Iqhš *  @¬_qh² @¬œwhÎ @¬“yhê @¬çyhÞ @¬ïyhÒ *  @¬ðyhÖ @¬òyh¶ @¬
zh¢ @¬|…hò @¬ƒ…hâ "  @¬=†hº @¬‘hî @¬¤’h¦ ¯”   
   Se€Ô  (       `     @ @                ¶¦          (  ¶¦@8  }"D|L$A  &H    $ VjzL        *  Vjz
L <  ÏK|L –NFw  4   ü          *  ®Shü)t  
+t8F0t  áyxƒ…³*  B   †                                    ƒ…3}†ï© q
ªx$  h       _   _   _   _   _   _   _ &  Œ NŒ|—Œï`	Œ€%ŒØ_ Œå`  ˆ   _   _   _   _   _   _ &  Œ"ŒýMŒ ŒøMŒÖdŒl      _   _   _   _   _   _ &  Ú}beŒƒŒ sŒ,Œ%!Œê"  ¸   _   _   _   _   _         _ &  ŒäŒˆwŒ8ŒH;Œ°;Œ4…  Ð   _   _   _   _   _   _ &  Œ`"ŒhŒÞ©düXŒ×ŒŒZ  è   _   _   _   _	  ß   Ÿ
*  	ŒˆZŒ qŒÖ2ŒkY ö«N&    _	Ú _	  F‰TNßW    2‰ƒßU   _	(  ÔfÚ –,Ô!N„|qÔf"Ôf*  $\ÎF‰Y"F‰T6‰„2‰…_	8ßG    ß"  \Î"6 8$„|q&Ôf*  J    ßU   _	\Îü‰_	¸"‰ß5   B‰   ½«¼Ôf\Î¸$Ófg'*  p  G‰Å _	  >_	  _	  Ÿ  ðP‰F‰ñ@ò  i†ØO›Y°	3f 2 ð(ò*  –
        ß æð‰2
 ßE   ß7    ßU&  ½«ÿ-
 ð Ófg'"Ôf$„|q*  ¼   ßU   6‰æÎŸ#  ‰Hß    Ö$  Ófg'Ôfæ­x 
"­x 
$½«ÿ-*  âŸ  2‰’_	    2‰’ßE   _	  "‰_	  ½«ÿ-ü‹wÔf ü:d(*  ß5   ÕE‰
_	¶ßE   ßWn    ž!/K¶"Ófg'&n(Ôf*  .N‰ôßWp  0‰ßE   _	~ßô_	JúN‰  
pÔfÓfg'~ô$J*  Tâß5   "‰	ß7p  ‰_	~… _	Â  
ž!/KpÔf ~&Â((  z<ìß7n  _	Œ_	2Ÿ
 ßGn  ß5 *  <
n      ÔfŒ2  n"Ôf*  ž  _	”  ßE   ßGp  … ‰Àß5   _	&  Ófg'
”Ófg'pÔfÀ$Ófg'*  Ä” ßE   ÀE üß7    _	  ÀÀg4Ÿ&  ”Ófg'[z·5^CT^xQ"4&*  ê   _	Rß':
ß'Pß'^P‰_	"   
R:P^ *    _	  Õ_	$ßE    _	\_	  Ÿ
 Ÿ
 $  j/Ž$Ófg'\ ãyÚK$ ( *  6Ÿ
 _	P‰  À… _	ÐæßÊß'ÂÈ&   
PÀÐ Ê&Â(È*  \(ßÂÄ
Æ‰À®    Ÿ
Æßn€‰    (  Â
ÄÆÀ      ®Æ n"€&µ Z*  ‚¼&À¼Àe, Š¨€ß€¦ÿe  ‰      ¼
¼¨€¦&µ Z  ¨  ºÝßÂÈ
Ê…        ºÂÈÊ³à~ Î*  Îß7    ‰† _	ž _	8ß  _	  _ ô_	Ö *  „|qÔfž 8Í« #ßr$ô(Ö "  ôß  _	    4_	  _	  _	  ‰  *  4ó`4}ë©¢Z4ã’´dÄ…Df… X*    ‰    ‰    ‰    ‰    ‰  ú… ^ B $  ¹€%
Âà’¹ ³0 ³èg"ú*  8ßWn  _	~_	¸_   ßôßð _	” ß
*  nÔf~¸‹wt!ôð  $”(  ^ôß
ðß
î‰        t‚&À‚îð(  ôðî¹€%t‚‚ î$ð*  ‚ò€ßå t… ‰ ü&@ xß  zß  "  òt x"S«ÕZ$z(¡d²*  ¨|‰  x€~€… ß5   8ßr×'  &  |À €
x€~Ôfr$ *  Î@‰C
r
 ßô_	Júß5   _	”   
r ôJ Ófg'&”(  ôßE   ß0*$‰ÿ(  ße   ÿ*  ße *  Ófg'0*( d d *" d*    ÿ•    Ÿ
  ÿ•    Ÿ
  &‰… ß5   ßE &   d
¼ d¼ d¼ d¼ d"Ófg'*  >  ß ‰”… —¬$ . _d—¬$ .       
‰  Ófg' d*  d  ¤ … —¬$ . ú_	  ´ … _€.‰  ÷… B‰  j/Ž€*  ŠÀ5 À%1‚´ …  ‰‰i¤ … ò¥  ò¥*  °  —¼  … ´ … ‰‹ß5   	P‰N‰0‰  ž!/K*  Ö"‰õ‰U%_	|… Õ‰Ž‰ŒE_	|… 
  |&|*  ü‰_æ ‰  @ÀEÿ   _	  ‰ß5 X     –,º(X *  "!ß5 X "ß50 X ß5 X _	
æ  æ    
X X X  
$¡d²(S«ÕZ   Hß^   ßN   _	ìR Ÿ  Ÿ  
*  ^ S«ÕZN ¡d²ìR S«ÕZ¡d²*  dX Õ… _	
ù@‰"_	|E… ß5 X 
X ß  X 
      | X &X   ŠL ¶ß  ¸‰  J ¶º_	ì*  L ¶
¡d²¸À €J ¶ºì*  ¢P _	ìR ßE    _	  …      $‰ÿ4   ße    P ì
R Ófg'–,º$ d"  È  ÿ•    Ÿ
    ße   ÿ•   Ÿ
&   d
¼ d¼ d d d¼ d*  æ  &‰… æ _ _	”þÿŸ … Ý Ÿ
 … ßU   ¼ d  ”   $ *     ß "Ÿ
"_	¼"…   ß5 X ß5 X $  Ófg'
 ""¼" X (X *  2ß5€ X ßE€ X ßU X … ßE X û‰
‰  
X X X  X &
*  X… ‰  
‰  …                          
  ~                    ¾  ¾     î*  î                                        ³à~³à~*                      7     ;     4¾ Ž   ³à~$4&¾ (Ž   :n ’ ~ ˜Â Æ Š ˜˜r *  n ’ ~ 
˜Â Æ Š ˜˜r   N˜v z ˜  Ê ‚ – † (  ˜v z 
˜Œ0aÊ ‚ – †   `š ˜˜ê ˜Î ˜Ò ¢ ˜*  š ˜˜
ê ˜Î ˜Ò ¢ ˜  tº ¦ ª ˜® ˜˜æ ˜˜*  º ¦ ª 
˜® ˜˜æ ˜˜  ˆ² ˜¶ Þ ˜â î ò ‰Â… "  ² ˜¶ 
Þ       ˜â î ò        `5N   Âðë*  Se á    Âðë   ¯”L  4@  	ò@  *  	ò@  "øf@  öXz@  ìÐ@  @  *  –CT@  ¤ò@  Ë g@  d:K@  ""@  *  ""œw@  ª%øf@  !&ò@  ö&Xz@  ²2CM@  *  19@  ü9øf@  ý9Óž@  „:"&@  „:VN@  *  „:µW@  š:øf@  :Ps@  ¬:O@  ¬:t!@  *  ;@  vL@@  {L€@  |Lò@  ;Mú&@  *  ;M;K@  N"&@  $Nò@  xQXz@  êYt!@  *  êYN@  ^"&@  ^VN@  ó`êY@  :d@  *  ¯dg@  ýdBx@  g"@  \gÏ@  ‘m }@  *  Œs°r@  þv@@  wuL@  “yn'@        [zœ5@  *  [z·5@  hÞ™@  € s@  =†ò@  J†Xz@  *  cŒ¿Y@  ± N@  ³´d@  ´ N@  ´ s@  *  ¼ N@  Ã €@  Ã¢ƒ@  Ä N@  *–øf@  *  ©[@  9©x‚@  :©@  :©Ï_@  [©(}@  *  ë©¬:@  ë©¢Z@  ÌªˆY@  Ìª]@  R«""@  *  S«µW@  S«ÕZ@  Ê«@  Í«@  9¬–@  *  „¯½`@  £¯D@  ¥¯ÜK@  ° }@  ±lE@  *  h±p!@  ±“y@  •± }@      (  Se á,Ê  H«`|h  ¯”   
   Se á  &    _	  ‰_	Ü_	¶_	ˆß7    _ Lß7  *  Ü¶ˆ[zœ5öXz L$[zœ5*  "   _ &_	ÒÀ  ð  0
       ß	  ß  _ "  ö&Xz
&Ò„:"& ±“y$©[*  H &À  ð•  " ð• # ß	  †_ D_	¬Ô  Ô&  &^"&^VNh±p!D"¬&Ìª]*  n  ŠÔ•  
Ô  Ô ŠÔ• 
_	_	¬

   Ìª] 9¬–9¬–  $¬*  ” Ô•  Ô• 
Ô¯Ô”Ô•D Ô• 
_	_	¬_	
  "&¬  º ð.  _	ð2  _	ð6ª_	*  ð.ìÐð2¤òð6ª  Ò ð:  _	ð>–_	ðB  _	*  ð:	òð>–ðB|Lò  ê ðF  _	ðJ_	ðN’_	(  ðF$NòðJðN’  ðR˜_	ðV”_	ð      ^  _	(  ðR˜ðV”ð^=†ò  _	¬_	ZŽ_	f  _	(  ¬ZŽfª%øf  4j  _	ðb  _	_	¬_	ðn*  j*–øf
ðbš:øf¬ðn  N  _	ðr  _	_	¬_	ðv&  19ð
r;¬ðv  f  _	ðz  _	_	¬_	ð~&  ü9øfð
z"øf¬ð~  ~  _	ð‚  _	Šœ_	ß5@ &  ý9Óžð
‚!&òŠœ  ˜  ßU $ß  
 _	¬!(  [z·5$³´d ³´d ³´d ¬*  ²0ƒ_	ø‰       Á      ÂT  T Ô—$Ô•  0
³´d Â&$*  Ø T W, „!	Ô  Ô Ô•( Ô• 
ße    Ìª]Ìª] (³´d    þØ_	_	¬ß  ß  
 ‰(  ¬Í«³´d ³´d ³´d *    8    ÁT  T ŠÔ• 
‰™ _	  ³´d8(   @ß  
 _	¬!0ƒ_	ø‰&  Ã¢ƒ Ã¢ƒ Ã¢ƒ ¬0*  \  ‚    ße  À`   Ô•  Ô• 
æ  Ã¢ƒ‚Ã¢ƒ `  ‚_	_	  ß  ¦ß  ªß (  
ó`êYêYN¦ë©¢Zªë©¢Z *  š¬ß¦¨_	¾	&_	¬!0ƒ_	øß
      °_	"  ¬¦
¨¾	¬0$°*  À¾	ùŸ®‡ße ¦òÔÎße ¦ÔÄße   ¾	®¦ ¦*  æ¦Ô•  Ô• 
Ü_	ß¨¦ß  ¤ß  ªß&  ¦¨¦¬:O ¤$ë©¬:&ª*   ¬_	¾	&_	¬!0ƒ_	øß
°_	¾	&  ë©¬: ¬
¾	¬0 °&¾	*  2ùŸ®‡ße ¤òÔ^ße ¤ÔTße ¤Ô•  ®¤¤&¤*  X  Ô• 
Ü_	_	¬Ô:©Ô€Ô•  Ô• 
_	
  ¬*  ~_	6_	Ê¸pÀ  ð ð  ß	  _	&*  6Ê¸p^"&$•± }(&"  ¤_	Êê_	8
_	‚_ ž
ß        ß *  Ê
ê8
‚ž
³´d ³´d &  Â _	¬!0ƒ_	_	¬‰  þ    ße $  ³´d ¬0¬³´dþ*  ä ÀÜÔ4 Ô•  Ô• 
å_	… _	â6  ³´d Ü4 &â(6  
ß  ß  
_	Â‰  (  ³´d ³´d ³´d Â³´d*  "j    ße  !(ƒ_	Ø_	Â× ´ƒ_	Ø_	"  j³´d (ØÂ ´&Ø*  HÂ
ße _	$Ó  ße _	þ$Ú_	Ø"  Â$ þ"$(Ø&  n… ß  ß  _	¬!0ƒ_	_	¬‰*  ³´d 
³´d ³´d ¬0      "¬*    ä    ße  À”œ ß   ê‡
—r ÂÂe  ³´dä³´d ”wuL*  ¶$Á Ã
ÁüJ0ÜJP_	¦”Ô4Ô2Ô•    $¦” 4$2*  ÜÔ• 
Î_	… _	â6ß  ß  
_	*  â6³´d ³´d "³´d &*  Â‰  `    ße  !(ƒ_	Ø_	Â× ´ƒ(  Â³´d
`³´d (Ø"Â&´*  (_	Ø_	Â
ße À
¬   ‡_	¦
_	&$  Ø
Â
wuL"¦$
(&*  NÓ  ße _	þ
Ò_	Ø… 
‰·¸DÀ¸"  þ
Ø· ¸"(¸*  tß	  ß	  ÀÂÂ       A  ß	  ÀÌÂ A  [©(}[©(}Â:©Ï_"Ì*  šß	  ‰¸… @œ Â Àß	  À Á   :©
¸ :©$ *  Àß	  _2… ß5   }	  }	 Åe … f_	  9©x‚
2[z·5*  æÂÔ ”  Îe ”
_	Ø… _	L @    ÂØL*   Ô  … _	L @Ô4 … _	L Ô4Ô  L4 L&4   22… ß  NÀNÁ ß	  _4… "  2
g"NN9©x‚4 P  P$   R*  R_	L @   …  þƒ_	–_	ˆÁ  ß	  Lþ–"ˆ*  x  Á ß	  Àe … À¸
‰·¸… ‰¸… &        [©(}[©(}¸·¸$¸&(  žß7    ß7    Õ… E… _	ž†
  ß(  {L€[zœ5xQXz[zœ5ž †$vL@  ÂD  _	f.  _	f2  _	(  D²2CM
f.ìÐf2¤ò  Øf6ª_	f:  _	f>–_	(  f6ªf:	òf>–  ðfB  _	fF  _	fJ_	*  fB|LòfF$NòfJ  fN’_	fR˜_	fV”_	f*  fN’fR˜fV”f  "^  _	fZŽ_	ff  _	f*  ^=†ò
fZŽffª%øff  :j  _	fb  _	fn        _	(  j*–øf
fbš:øffn19  Pfr  _	fv  _	fz&  fr;fvü9øffz  d  _	f~  _	f‚  _	f(  "øff
~ý9Óžf‚!&òf   zŠœ
  
  … _	žÚ
  ßz(  Šœ
vL@²2CMžÚvL@z  –  ß  
 _	ˆß˜‰(  ²2CMÃ¢ƒ 
Ã¢ƒ Ã¢ƒ ˆ˜*  ®¦È‰  Î    ße  Ãº_	dó_	–
(  ¦ÈÃ¢ƒÎÃ¢ƒ º d&–  Ô  
  … ß  .ß  2ß  (  vL@²2CMS«µW.S«µW2S«µW  ì:ß  6ß  >ß  B      ß  *  :S«µW
6S«µW>S«µWBS«µW  Fß  Jß  Nß  Rß  *  FS«µW
JS«µWNS«µWRS«µW(  Vß  ^ß  bæ  ÎÎŸ”æ  ÎÎŸ*  VS«µW
^S«µWb4” S«ÕZ&  @ªÁ  
Á_Á  Wp _’ß  
*  ª	òýdBx’ Ã¢ƒ "Ã¢ƒ (  b 
˜‰  €    ße  ße ˜ô… _	â(  Ã¢ƒ ˜Ã¢ƒ€Ã¢ƒ ˜&â  †Rß  
 
_	Â‰&  RÃ¢ƒ 
Ã¢ƒ Ã¢ƒ Â*  œ  Ö    ße  !0ƒ_	Ø_	Â× ¶ƒ_	Ø(  Ã¢ƒÖÃ¢ƒ       0ØÂ"¶(Ø*  Â_	Â
ße _	R â_	Ø… ß‰  	$  ÂR Ø &± N(	*  è    ße  ßèú
‰  	… 
…  × °"  ± N èú	 (°*  	ƒ_	Ø_	Â!(ƒ_	Ø_	ÂÊ^ _	|âÊ
  ØÂ(ØÂ"|&*  4	ÊÊ_	ÚVâ _	B… ß  ˜	!ß  Z	_	  (  
ÚVB4˜	"êYt!$Z	(€ s*  Z	  ˜	–	Â”	_	¶VÂZ	ß
˜	Âe Ê_	B"  ˜	–	”	¶VZ	˜	(B*  €	â_	Bó_	Bð_	Ø…      ß'(&ƒ‰š   BBØ ("&*  ¦	ÿ|ße (¿r      ße (… ßê®ße ¬ß  (( ®&¬*  Ì	 °ß
ª… ß
W¢ æ ‰çÑ‹  °
ª  *  ò	Ÿ
_	
	…_ `ß
W¢ W¢ ¦  

	`*  


_	š	¢_	Ü… 

Ñ‹_	š	_	Ü…_ `ß  ¤   š	Üš	Ü"`&¬:O(¤"  >
ß  ªß ¬
_	âZ_	¾	!ß
(  ë©¬:ªë©¬: ¬âZ¾	*  \
°úŸ®‡ße ¤_	ÂÓ_	L Ô$ße  °
®¤Â L*  ‚
 ¤Ôße ¤_	Øße ß… ß  Tß  "  ¤¤Ø"S«µW$T(S«µW  ¨
Zß  bß dß        fß&  ZÌª]
bÌª] d9¬–f  ¾
 hß  jß  pß  (  9¬– h
S«µWjýdBxpS«µW  Ò
tß  zß—  |ß—  }ß  *  tcŒ¿Y
zË g|d:K}:d  ê
€ß  ¨ß  ´ß  ºÁÂ(  €S«µW
¨S«µW´S«µWº*  TßR–_	Â_	`_	Ø_ Â      TR
–Â`ØÂ*  *                         P
   T*  T  ›’    ›’             ýd        N  *  z                                      *   :©¬:    é¨=†  :©€        é¨¤  é¨	    ß    
¬:t!¬:O 
(êYt!  Æ(ß  &ßå &ß  
$  (hÞ™
&&± N ± N &  Ü ß  
_	Ü_	Â_	ü_	Vú_	(  ± N 4ÜÂü V*  þØ_	H	À  ð ð  ß	  À  ß	  †_ &  ØH	^"&•± } ^"&$„¯½`&  $DÀ  ß	  †_ Dß7    ß5   À(  D„:"&„¯½`D¯dg[zœ5 [z·5*  F  ß	  _	Ü_	‰_–ße –_ –ƒ… !0&  „:"&¥¯ÜKÜ–– –(0*  lƒ_	Ø_	Â× ¶ƒ_	Ø_	Â_	Ö	@”À X 0‚  ØÂ¶Ø      ÂÖ	  ’x ˜  ö",0æ DÐ*  ˜
ö",0æ DÐ  ªJ^ššr†:fü*  J^š
šr†:fü  ¾&0DRF\tÎ\*  &0D
RF\tÎ\  ÒŠ¾ÜâøÞò*  Š¾Ü
âøÞò*  æòòòòòò‰˜ ß5 	Ò‹“”Ÿ
_	Ø_	&  òòò
òòò"&Ø*  Â_	B_ `_	Ú._ `_	¶._ `Ê çß&  Â
B`Ú.`¶."`*  2ž_ Ü_	B_ `× ´ƒ_	Ø_	Â!(ƒ_	"  ž
      ÜB`´Ø Â$(*  XØ_	Â_	6Ê8(ßµ Ÿ"²
ßÅ "  ØÂ68 ²(*  ~Ê
ÊÊ_	Ú6ÒŸ
8_	†8<â:_	Ú<&  Ú68†8<":&Ú(<*  ¤ßµ "
_	BßÅ … Ê:
ÊŠ
_	B"
  B:&B*  Ê_	B… ßÕ _	B_ `ß  &
Ÿ"  ‡Ÿ"  BB`$;Mú&*  ð  ‚Ž
_	Z  ÊÊg
Ö_	Ú:_ `*  ;M;KZ´ N"Ú$:(`*  _	Ú2_ `Ÿ"  ‡Ÿ"  ‚‰› _	Z  Ê_	(  Ú2`;Mú&;M;K Z"´ N&$  <      Ú._ `Ò_ `_	Z  Ê_	ÚF_ (  Ú.
``Z¼ NÚ F"  \`_	Z  Ê_	ÚB_ `_	Z  Ê*  `Z
¼ NÚB`ZÄ N"  z_	Ú2_ `_	Z  Ê_	Ú._ (  Ú
2`ZÄ NÚ.*  ˜`¦Î
Ÿ“¬ŠÎ Ž
Ÿ®ß #‰  ®ð  ß—$  `¬®´ s  ´ s"®$ð*  ¾¬»ß º‰  º°ÿÞ

_ öÊÐW¬ÿÿ   ¬»
º´ sº° ö*  ä _ æ_  ‰ ‰ ‰ Ÿ*ßž
ž  
æ *"ž(ž*  
â _	|_ `Ÿ,_ `Ÿ²_ `_	¶*_ `*         
|`,`²`"¶$*(`*  0_	Ú*_ `Á–
_ `_	6Ê:_ ö_	Ú*  Ú*`–`6 :$ö(Ú*  Vb_ `_	ÚB_ `Ê
Ê_	ÚR_ `_	|_ `*  b`ÚB`ÚR `$|(`*  |× ´ƒ_	Ø_	ÂŸ´Ê_	_	Bâ´_	B_	L"  ´ØÂ´B ´$B(L*  ¢ æ´ÎÎÎg¦€È'Êð'Ì ‰å  ´¦ÊÌ*  È… š©êrß žŸ _ `
ž_	6ß'²8"  ž `ž 6$²&8*  îŸ¢Ê _	|â¢_	B_ `Ÿ
8_	†8<× *  ¢
 |¢B`8      "†$8&<*  °ƒ_	Ø_	ÂÊ_ _	Bâ:_	Ú<â _	B"  °
ØÂB:Ú <(B*  :â _	B_ `ßŸ"Ÿ
Ò_ `_	  
B`$`(*  `6Ê8Ê
ÊÊ_	ÚV_ `Ê:
ÊŠ
_	B  68ÚV`:(B*  †_ `¦‰/"
ž× °ƒ_	Ø_	Â¦ÊB _	|  `ž°ØÂ(|*  ¬¢_	Bâ _	B_ `× ´ƒ_	Ø_	Â

_	B  BB`´Ø"Â(B*  Òâ_	B_ `Ò_ `_	B_	L Ô*Ô,_ `"  B``BL *$,(`*  øŸŽ
_ `ßÕ  ŸŽß _ `      ßŽ"  Ž
`Ž $`(Ž*  5¦ÊŽŸŽ
Ÿ"  ‡Ÿ"  ‚Ž
_	Z  ÊŽ$  
ŽŽ;Mú&;M;K"Z$´ N(Ž*  DßÿÿŽæƒ’×p ß`
ƒœ ×p ß`ƒÊ  Ž"(*  jÊg
Ö_	Ú:_ `_	Ú2_ `‰ç  "  
Ú:`Ú2"`*  À  ð¸ ðb  ß	  ‡ÁºÂÚÕ… ð¥öÿ  „:"&
¸° }º Ú*  ¶* _ `E… Ã8Ä¸Ó ÓÔ … × <  
`8¸(<*  ÜƒÃå8À  ð8 ð ß	  †_ R!ºƒÄå  8^"&8•± } R$º*  ¸À  ð¸ 0 ß	  †_       R… !ºƒÄå¸"  ¸^"&¸•± }R"º(¸*  (À  ð¸ 0 ß	  ‡… _ R“ße … T•  ^"&
¸•± }R$*  NÕ‹æÎå:”•… _rÊÊ

ˆŸœ ˆŸ
ˆ‰    
:rˆ ˆ$ˆ*  tˆ¨  ß xŠx_ˆ‰  xrÀr (2Š Š
"  ˆ¨xxˆxr r*  šÊ€b… ‰- Ä¸Ô … _	ØŸ_	  
¸"Ø&*  ÀÂÔ @Ô_	Ø_	Â… _	Bßµ   ÂØÂ B&*  æß þßÅ ß þ_	L  @Ôþÿ…   þþL*  ÀD"‚%Ð"ý‚Àå ‚‰        ‚„Ÿ  D‚"Ã €$‚&„*  2Pß„Lß„NßeøN_	               P„
L„NNÊ«*  X    ßZ‰ @Ðêÿße VÐàÿße VÐ  
ZV&V*  ~Öÿ…     fA
ØŸ
ØÁå@ ûÁe? Wp _Ú  ØØ(Ú&  ¤‰  ØÔ  ß—¬Û‰  Ú¬À¬Aß *  ³´dØ
Ô¬Û³´dÚ¬¬*  Æ¬ß
¬ü… ‰œ     ‰    ß  ‰    ¬
¬Ã €"4*  ì  … @Ô•` Ô• T… @Ô•d Ô• T  ± N*  … @Ô•( Ô• T… ß  _	âŠ
_	  J†Xz â"Š&*  8ÂÓ      ÿÿ_	Ø… _	  Àx_	  _	  Àœ_	  *  ÂØ""œwx\gÏ ""œw$œ(\gÏ*  ^_	  À¸_	  À  _	  _      FILE OPEN$  ""œw¸\gÏ:Ps\gÏ‘m }  „ OR CLOSE ERROR IN PHS6
   œ  œ  FILE WRITE ERROR IN PHS6    ¸*  ¸  FILE READ ERROR IN PHS6ÀDŸ
‰     D$(Ã €*  Þ   D†ß âŠâ‰  âÐ Ðâé(  DââÃ €â&â*  ‰ Ðÿÿ…     

ô  ƒ
Ô!°øÃ4  """°*  *Ãe ß   ß   ‰´²‰ÆÄ‰´²
ô&  
vL@vL@´      ²ÆÄ"´$²&  P  òä_	úÀì  ß	  _	
×¬(  ""
òäúì"":© *  rì0 ó•  ìƒ
÷‰àÞÔ!°ß
ß%     ììàÞ°(vL@*  ˜ß   ‰¸¶
  
  …      
NO E  
vL@¸¶vL@²2CM	  ¾RRORSE   Ä  Ä SEVERITY    ERROR COUNT   Þ  Þ                     ò!  òI W F A &f¦… ‚€…           P           ÿÿ      `        .*  .é¨<é¨¤é¨´dé¨	é¨›’é¨|Lé¨$Né¨Né¨ýdé¨*  Ttwé¨ô:©¬:é¨=†é¨š::©Ç%:©G–:©O9:©/;:©      E*  z:©?:©/E:©?&é¨W:©lz        F          ¬:t!¬:O 
                                     $  $                     D*  D PTPdP    DATA PSECT MAP NAME  PT
PdP*  j            SIZE ‚†‚    EXTERNAL  ‚†‚*   SUBPROGRAM REFERENCESNO EXTERNAL SUBP  ¶ROGRAM REFERENCES    È  È!        8N   ÂpÁ*  Se@ç    ÂpÁ   ¯”L  öXz@  @  *  ö&Xz@  ^"&@  l^d@  l^@  l^"&@  *  l^VN@  Œs°r@  þv@@  wuL@        [zœ5@  *  [z·5@  € s@  ³´d@  <©P}@  [©(}@  *  „¯½`@  h±p!@      (  ¥ˆ|,†«½@h   H«ˆ|h& ¯”   
   ¥ˆ|  *                                     .OBJ&  & _	  ‰ß7    _ €×7  € _ €ß7  (  [zœ5öXz€[z·5 €$[zœ5*  H   _ €ß  ‚ß5   
‚À  Àe$ À&  ö&Xz
€wuL‚[z·5‚ ^"&*  n   Àe$ RRRRRƒþÿJ 
Ä W¢.   l^"&" *  ” €
T”Ã
ù2þÿÃ
Ô—" Ô—# Ô—$ Ì—% _ ¼ T”  " # $ "% &¼ *  º Â~À  ð•  " ð• # ß	  Ÿ
  ß„  
       ß&  l^"&l^VNh±p!l^ „"  &   à   
 ‰  V    Àî ¬ (  ³´d ³´d 
³´d ³´dVî *  ú ‚'  À Á ß	  À ß	  Àî Ÿ
 *  ‚   [©(}  <©P}$î ( *   ×7   ÿ Òþ_ <?
Êþ?œ Äþße   ºþ  [z·5 <$  *  Fße   ße  _ è ß _	  „  ÿÿÿ”þ(    ³´d è  € s„  "   l_	   „À  ß	  
  ‰    "  l^d 
„l^"&„¯½`l^       Œ!N   ÂÀÆ*  ^e@    ÂÀÆ   ¯”L  öXz@  ëÈ2@  *  ìÐ@  @  Ø      N@  Yä3@  YÏ@  *  YÐ@  Y®‘@  `@  è!@  !  @  *  ž!/K@  #Ï@  	#X@  Y/€p@  ô8€W@  *  _MXz@  ½`±@  Œs°r@  !t8X@  þv  @  *  þv@@  [zœ5@  4}÷N@  \(
@  ±²@  *  ³0 @  ³èg@  ³à~@  ´ÀX@  µ Z@  *  ¹ @  ¹ðK@  Âà’@  E©ãf@  ªx@  *  Ç«¿s@      (  ^e@,HI`üXhÞÖd }hP  H«q{h  §«zh  ¯”   
   ^e@  )    _	  _	Þß7    Á _	¾…   ACCEPT `$  
ÞØN[zœ5 ¾ & *  & ADD ALTER CLOSE COMPUTE COPY  L           N   N DISPLAY DIVIDE    b   b 	ELSE    j   j 
ENTER EXAMINE EXIT    „   „ GENERATE z    	   GO     – 	  – IF     œ   œ INITIATE    ¨   ¨ MOVE     °   ° MULTIPLY    ¼   ¼ NOTE     Ä   Ä OPEN    Ì   Ì PERFORM READ e   Þ   Þ RELEASE RETURN     ò   ò SEARCH     ü   ü SEEK      SET SORT T     STOP N     SUBTRACT    &%  &TERMINATE  USE !WRITE "CALL           H  H#CANCEL I   R  R$DELETE L   \  \%DISABLE &ENABLE N   p*  p'INSPECT (MERGE )RECEIVE *REWRITE   –+SEND     ž  ž,START -STRING A   °  °.SUPPRESS     ¼  ¼/UNSTRING    È  È0WHEN     Ð  Ð1UNLOCK     Ú  Ú1EVEN     â  â2PARITY    ì  ì3RECORDING 4ALSO        5STANDARD-1 K     6PAPER-TAPE-PUNCH     "!  "7PAPER-TAPE-READER 8BINARY    @  @9CHANNEL :DECSYSTEM-10     Z        Z;DEFERRED A   f  f<ACCESS E   p  p=ACTUAL I   z)  z>ADDRESS ?AFTER @ALL AALPHABETIC E       BAND CASCENDING DASSIGN     ¼  ¼EBEFORE     Æ!  ÆFBEGINNING GBLOCK HBOTTOM I   ä	  äICF    ê	  êJCH    ð  ðKCOBOL LCODE N       MCOLUMN Y   
!  
NCOMMA OCONTROL OCONTROLS    (  (PCORRESPONDING PCORR A   @  @QCURRENCY     L  LRDATE E   T#  TSDECIMAL-POINT TDECLARATIVES E   t  t      UDEPENDING VDESCENDING    Ž  ŽWDETAIL    ˜	  ˜WDE     ž  žXDOWN    ¦  ¦YEND ZENDING     ¶!  ¶[ERROR \EVERY ]FILE-LIMIT     Ô  Ô]FILE-LIMITS ^FILLER I   ì*  ì_FINAL `FIRST aFOOTING bFOR cFROM        dGIVING O   	  eID     $  $fHEADING gI-O hIN     :  :iINDEXED jINPUT kINTO O   T  TlINVALID mKEYS     f  fnLABEL oLAST    v  vpLEADING qLEFT O   ˆ  ˆrLINE             rLINES sDENSITY tLOCK     ª  ªuMEMORY     ´  ´vMODULES wMULTIPLE O   Ê  ÊxNEGATIVE    Ö  ÖyNEXT    Þ	  ÞzNO I   ä  ä{NOT |NUMERIC }OF T   ú  ú~OFF OMITTED €OPTIONAL     	  OR R     ‚OUTPUT    &  &ƒPAGE     .  .„ORGANIZATION N   >  >…PAGE-COUNTER    N	  N†PF N   T	  T‡PH    Z  ZˆPLUS     b  b‰POINTER ŠPOSITIVE     x  x‹PROCEED ŒPROCESSING I           RANDOM E   š  šŽRECORD     ¤  ¤REEL     ¬  ¬EBCDIC    ¶*  ¶‘REPLACING ’REPORTING “ENTRY ”RERU#  ÜN •RESERVE –RESET —REVERSED     ü  ü˜REWIND T   	  ™RF     	  šRH L     ›ROUNDED œRUN SAME    *  *žSEGMENT-LIMIT ŸSELECT     D  D SENTENCE     P  P¡SEQUENTIAL     ^  ^¢SOURCE    h  h£SUM ¤TALLY ¥TALLYING     ‚  ‚¦THAN O   Š  Š§EQUALS    ”  ”¨THROUGH ¨THRU           ¦  ¦©TIME    ®  ®ªUNIT     ¶  ¶«UNTIL ¬UP     Ä  Ä­UPON     Ì*  Ì®USING °VARYING ±WORDS ²TOP ³RECO!  òRDS ´CONSOLE µLINE-PRINTER      ¶SWITCH    *  ·CLOCK-UNITS ¸COUNT ¹DAY ºDELIMITE'  @D »DELIMITER ¼DEPTH ½DUPLICATES -   d)  d¾ADVANCING ¿ALTERNATE ÀARE ÁAREA     Š  ŠÁAREAS ÂAT     ˜	  ˜ÃBY     ž  žÄCHARACTERS L   ¬  ¬ÅCONTAINS N   ¸  ¸ÆCHARACTER ÇIS     Ê  ÊÈKEY ÉLIMIT ÉLI      MITS     â  âÊMODE     ê  êËNUMBER    ô	  ôÌON     ú  úÍRIGHT ÎSIGN    
  
ÏSIZE O     ÐSTANDARD       ÑSTATUS R   (  (ÒTAPE T   0  0ÓTIMES ÔTO N   >  >ÖWITH E   F  F×INDICATE     R  RØPRINTING     ^  ^ÙREFERENCES E   l*  lÚPROGRAM ÛCOLLATING Ü COMPUTATIONAL   ’Ü COMP Y   š  šÝ COMPUTATIONAL-1 Ý COMP-1     ¶*  ¶Þ DISPLAY-6 Þ DISPLAY-7 ß INDEX à COMP  ÜUTATIONAL-3 à COMP-3       I   ò  òá COMPUTATIONAL-6 á COMP-6    	  	ä GREATER å > æ LESS    $	*  $	ç < è EQUAL é = ê + ë - ì * î / ï REFE  J	RENCE ð@DIVISION     \	  \	ñ@SECTION ò@IDENTIFICATION     x	  x	ó@ENVIRONMENT ô@DATA     Ž	  Ž	õ@PROCEDURE ö@PROGRAM-ID     ¨	  ¨	÷@AUTHOR     ²	  ²	ø@INSTALLATION     Â	  Â	ù@DATE-WRITTEN T   Ò	  Ò	ú@DATE-COMPILED û@SECURITY    î	*  î	ü@REMARKS ý@CONFIGURATION þ@INPUT-OUTP  
UT     
*  
ÿ@SOURCE-COMPUTER  AOBJECT-COMPUTER       A!  >
SPECIAL-NAMES AFILE-CONTROL O   \
  \
AI-O-CONTROL AFILE     r
  r
AWORKING-STORAGE ACD     Š
	  Š
AFD E   
	  
ARD I   –
	  –
	ASD @   œ
'  œ

ACOMMUNICATION ALINKAGE AREPORT M   À
  À
HIGH-VALUE @   Î
*  Î
HIGH-VALUES LOW-VALUE LOW-VALUES  ô
     ö
  ö
QUOTE QUOTES 	     SPACE SPACES @     ZERO I   "  "ZEROS ZEROES O   4  4H	FORTRAN H	FORTRAN-IV     L  LI	GOBACK U   V  VJ	MACRO       K	ODD L	PDP-10 -   n*  nM	TODAY N	TRACE O	USER-NUMBER P	DYNAMI*  ”C Q	EGI R	EMI S	END-OF-PAGE S	EOP T	ES  ºI U	EXCEPTION V	EXTEND     Ò  ÒW	INITIAL X	LENGTH     æ  æY	LINAGE-COUNTER K   ø  øZ	LINE-COUNTER      [	OVERFLOW 
     \	POSITION         ]	PROCEDURES 
   .  .^	DESCRIPTOR     <  <_	RELATIVE S   H*  H`	REMAINDER a	REMOVAL b	SEGMENT c	SEPA	  nRATE    t  td	SORT-MERGE V   ‚  ‚e	TABLE f	TERMINAL    –  –      g	TEXT 	   ž  žh	TRAILING O   ª  ªi	MAP4 M   ²  ²j	MAP5 	   º  ºk	MAP6 G   Â  Âl	MAP7 	   Ê  Êm	MAP8     Ò!  Òn	DEBUGGING o	DEBUG-CONTENTS     ð  ðp	DEBUG-ITEM    þ  þq	DEBUG-LINE     *  r	DEBUG-SUB-1 s	DEBUG-SUB-2 t	DEBUG-SU  2B-3 u	DEBUG-NAME     D  Dv	APPLY w	READ-AHEAD     Z  Zx	WRITE-BEHIND    j  jy	CODE-SET E   v  vz	ASCII {	NATIVE    ˆ  ˆ|	SEQUENCE     ”!  ”}	PRINT-CONTROL ~	CARD-PUNCH       	   ²*  ²	CARD-READER €BLANK DESTINATION ‚  ØGROUP ƒJUSTIFIED ƒJUST    ò  ò„LINAGE     ü  ü…MESSAGE †OCCURS     *  ‡PICTURE ‡PIC ˆQUEUE ‰REDEFINES Š*  6RENAMES ‹REPORTS ŒSUB-QUEUE-1 SUB-%  \QUEUE-2 ŽSUB-QUEUE-3 SYMBOLIC -   ~  ~SYNCHRONIZED E   Ž  ŽSYNC     –  –‘TYPE D   ž  ž’USAGE “VALUE “VALUES    ¸*  ¸ÿÿÿÿÿÿ_	_	H_	        _	x_	®ß'  HÇ«¿s"x&®*  Þ 	ß' þß'þÎ… ‰N …                   þþÎ*  ‰À ,þÿÿÿ8_<
üÐ‹Ÿ
üû   8<ü&ü*  *€
ÀE Ÿ
Î_	    ü  C’ÃÁ`â‰‰ÁFÁE  ÎE©ãfü&F*  P _ÌÀ Ÿ
þ Ð’Â€`"ÿÿôÑÿÿ  Ì þ*  v‰‰‰  ÀÌ$ÿÿŸ
 ¨_¤Bœ ‚
  
Âà’Ì ¨"¤*  œŸü‰    ü  ë‰‰ÀÌÁ  Ð$ÿÿ  ü
Âà’üÌ!t8X*  ÂŸ
0¬  öŠþÿÉÿÿð‰‰  ‰  ‰  "¹ðK&´ÀX$  è  _	,‰  _	P_	
  … ‰  ‰&  ³0 ,µ ZPž!/K ³èg                ‰    &  ³ègþv  Y®‘
YÏ³ègþv        ß   ß
 $  Y®‘YÐ
³èg Yä3³èg
 *  $ …    ‰‰  À  ‰  (*  ~Àx Á  *  Yä3 ¹ ô8€W¹ (*(ëÈ2&  J
~‰ßg    À  È  ð   ße   ð&  	#XìÐ±²ìÐìÐ"ìÐ"  l   ð   ße   ß  ÊŸ
Êß  (  ìÐ
ìÐìÐ!  ÊÊ ìÐ   ŠÌß:üß<¶_	îß4  ßÊ(  Ì:
ü<¶î4½`±Ê*  ¦  ß    ße@   …                         !  !  
è!ìÐ&        Ì                                     ¸  ¸0   Î  Î?    Æ  Æ@‘   î&  îßü_	  ¶  2_	    ¶èÄ—è*  üªx¶2E©ãf¶è"è   ¶Ä—¸„a¶‰  ¸¶4‰  2*  ¶¸¶µ Z¸¶4´ÀX2   ,68…        > -WAOSE-     68>       ÎN   ÂàÓ*  ^e€    ÂàÓ   ¯”L  Œs°r@  þv@@  *  µ`T@      (  ^e€,"PH«r{h  ¯”   
   ^e€  *    _ P ØYRïv@                        
  P  "   &v~„Vg <‘26K      ÓD<}M!¼ZoêYü   & $  & ØYRïv@                           & *  & —mÈ}`&v~„Vg »R6x 0—mÈ}K	M…`ØYRïv  L @                           F   F ÷Š<K¦:^: h 
K	M…¢`Ì ¯   f $  f ØYRïv@                           f "  f vLLw!@~# ÉvZ}6„,"2s…e	`   † $  † ØYRïv@                           † "  † w°‡ ²Z¼_¡O~`†ù¯ÈK&ß`OoêYü   ¦ $  ¦ ØYRïv@                           ¦ "  ¦ ²öq 0<IÕ}ày>2DH;AK[] ¯   Æ $  Æ ØYRïv@                           Æ "        Æ µWE}–óF€ 	å”s2s…e	á]à¿   æ $  æ ØYRïv@                           æ *  æ ÕZ"Ìe;´pn"°Ços;¯ÖsüàXÌÇØYRïv  @                           "  ÕZ"Ìe;´pAÍv4…Ì:DÁtQ„: {   &$  &ØYRïv@                           &*  &keZ€C=Kˆw,:Y K‡Wírdµ"`Of9•``ØYRïv  L@                           F  Fý±ËK`ìYÿ t…¯„!s!Iÿ-Lq ¯   f$  fØYRïv@                           f*  fÛAssž\¯{„ ›	8"Ÿ’˜X`	Ÿ.Ü…oêYüØYRïv  Œ@                                 †"  †ô&q!R»R6xÏ+‰pñZlL¯%!àf9•``   ¦$  ¦ØYRïv@                           ¦"  ¦9†ˆ,&i'ó¡@~Ÿ.À…9†¤,[8"Ÿ.Ü…   Æ$  ÆØYRïv@                           Æ  Æ,:Y KM…ëq¡ 6}MvsÙ´X   æ$  æØYRïv@                           æ*  æ4¯`O,:Y 	KƒW`#^sÙ´Xe	R`ØYRïv  @                           *  ¶z@}Ú êrj?%‘r¼W¬`„ ›	8"x…f`ØYRïv  ,@                           &   &ÕZ"Ìe;´ptÏK p:I~Óv<}M!¼Z   F$  FØYRïv@                                 F"  F–wvÌ+L;et;àp:²öq 0áyÕ}„! ¯   f$  fØYRïv@                           f  fªST62fF%:µWIœWK	f9 ¯   †$  †ØYRïv@                           †"  †,:Y Ka	µWF¬_kai¯Z	¯œWòyw: ¯   ¦$  ¦ØYRïv@                           ¦"  ¦
zJwÔ:w:¥ (gà ø Ò5a¡poêYü   Æ$  ÆØYRïv@                           Æ  Æ´‰„,:Y 	KWMxse; Uf9•``   æ$  æØYRïv@                           æ   æ´‰„,:Y 	K’Wåö&8"e; Uf9•``   $  ØYRïv@                                    ØYÚ}¶Ro	†p`w°‡ ²Z¼_¯p¸p`6   &$  &ØYRïv@                           &  &	±`hØYfMš,8 éeêäKoêYü   F$  FØYRïv@                           F  Fp˜:&ßK=Kˆw<‘m4}%: {   f$  fØYRïv@                           f  f¶z@}Ú êrvaŒf¼    †$  †ØYRïv@                           †   ††:)=¸yœS #Õ`	8	™w„i~`O   ¦$  ¦ØYRïv@                           ¦*  ¦†:)%:jö+Q<w~à[2|; ým©Z<ØYRïv  Ì@                                 Æ  ÆØY”wÌe	R€   æ$  æØYRïv@                           æ"  æ;¯/xà[Ñ_%€årýËK`”wÌoêYü   $  ØYRïv@                             ËI:K+K8"åùWÌ} ¯   &$  &ØYRïv@                           &  &„:] …p…˜å`Z£Á]ÍyR ¯   F$  FØYRïv@                           F   F„:] –p5T`ï¯	L"qMN[ü   f$  fØYRïv@                           f"  f""`p:<RÇ3q„ ›	 #¡=†Ð:ü   †$  †ØYRïv@                                 †*  †""`p:*K !Kq”`Ãv=K¤w„ ›	S8FÌd ¯ØYRïv  ¬@                           ¦"  ¦ØY„:] ‰p‚W[MÃD=K¤w„ ›	S8FÌd ¯   Æ$  ÆØYRïv@                           Æ   Æ¬qMNv\ C^„ ›	 #¡=†Ð:ü   æ$  æØYRïv@                           æ"  æØY„:] ‰p’WÇ q¡=†¯=Kˆwx…f`   $  ØYRïv@                           *  †:)5I’WÇ q¡=†¯=Kˆwx…f`ØYRïv  ,@                           &  &†:)%:µW # &x…f`   F$  FØYRïv@                                 F  F &Ú}¶Ro	pK;w:¯ÍyR’="¼Z   f$  fØYRïv@                           f"  f¡E§ q#ÌüÕqQöXÃ+=K›wÐ:ü   †$  †ØYRïv@                           †"  †ØY*K !¡=†vô  ¯²t	¯ÍyR ¯   ¦$  ¦ØYRïv@                           ¦  ¦ØY”wÌ¯%:¥ ÜKü   Æ$  ÆØYRïv@                           Æ  Æ,9^Ì}½à ø:K›,}Ç<q   æ$  æØYRïv@                           æ*  æKq”`: h#t!àX&1}ŒW	L"Õ*`ØYRïv  @                                   ØYKq”`: „ù ÈKÔe"`   &$  &ØYRïv@                           &*  &,:Y Ka	µWF¬_kawh;„:,"ˆ»p #ØYRïv  L@                           F  F,:Y K„ž 
p:²öq 0áyÕ}„! ¯   f$  fØYRïv@                           f   fí,:Y 	K†W%:‹ww~à[XÞ] Æ   †$  †ØYRïv@                           †"  †,:Y K”`ÿ ïL¸’¥¯uLe;  Re=	 ¯   ¦$  ¦ØYRïv@                           ¦  ¦,:Y Kˆw°^4¯|OoêYü   Æ$  ÆØYRïv@                                 Æ*  Æ&|¦:1R»R6xÏ+‰pñZlL&¯‰íÿ-Lq ¯ØYRïv  ì@                           æ*  æ§€vàà¡EÓv:}}}M^}(	}’WÇ<qØYRïv  @                           *  Õ±Îu: {ð_XÀÞK !p:ô&SÌ¦:v´‰ü8ØYRïv  ,@                           &  &keZ€Iÿ-Lqÿ ‰p%X	–Õ} ¯   F$  FØYRïv@                           F*  FæYÕZ"Ð¸8ð_%	dÕ}¯IqÌ}; © LyD
ØYRïv  l@                           f  f
zJwÔ:m}’%w #K	M…ô   †$  †ØYRïv@                           †"        †²u	 {Ñ_%€årf%:u	<{; zü   ¦$  ¦ØYRïv@                           ¦*  ¦%yF%:×vh;a<x¯ bp:”T¯%:!ädØYRïv  Ì@                           Æ  Æ±)Nåeù ÈK8} #¶z@}Ú êr ¯   æ$  æØYRïv@                           æ  æE`¶p;K›wv‡ |XÌ8 ¯   $  ØYRïv@                             kf*xÈKKq¾ w:ù $!2s…i	`   &$  &ØYRïv@                           &  &gõ Óaˆí&³Kÿ p !°öŠ<0   F$  FØYRïv@                           F   Fà¯      |;™Îvà`E~fèNZŠ‰W	‘.\e   f$  fØYRïv@                           f  f–wvÉ+Õ}v´‰à8`Ñ_%€`   †$  †ØYRïv@                           †  †–wvÉ+Õ}?}¬_]a\œt ¯   ¦$  ¦ØYRïv@                           ¦  ¦Kq¾ w:|H!†:)p¼RÌ} ¯   Æ$  ÆØYRïv@                           Æ  Æ†:);KÆv`Ûv~i	ð_í&¼K   æ$  æØYRïv@                           æ*  æTqi	HŠ`Kq”`½Oœ“p<}8†µWIñZlL ¯ØYRïv  	@                           	  	²\`¡Z      –_sàt   &	$  &	ØYRïv@                           &	  &	²H£""¬`e	R	}XUsü   F	$  F	ØYRïv@                           F	  F	’±=^ZD¹;7xà[Ñ_%€`   f	$  f	ØYRïv@                           f	*  f	„:"ée	Õz}`:K¤,I -”`"åXØYRïv  Œ	@                           †	*  †	„:"ée	Õz}`:K¤,ïÏ%q”pÖs ØYRïv  ¬	@                           ¦	  ¦	©¯ûŠ¦:¯¼RÌ}. Ú}pÛrõdq ¯   Æ	$  Æ	ØYRïv@                           Æ	   Æ	Ú}¶Ro	pK;w:. Ú}© ûŠ¦:Eåàt         æ	$  æ	ØYRïv@                           æ	   æ	|L"	KXÁSj~ÈK<‘2%€ÔSà9†¤,   
$  
ØYRïv@                           
*  
<qR›T}¬_Xav°tv(8;áyÕ}„! ¯ØYRïv  ,
@                           &
   &
ÕZ"ÓšƒÌjZK?}L†U vÏ},"   F
$  F
ØYRïv@                           F
"  F
E`¶pø&i'àp:ý±}`³te	R`   f
$  f
ØYRïv@                           f
"  f
E`¶pø&i'àp:ý±}`³„e	R`   †
$  †
ØYRïv@                           †
*  †
,:Y K%:µWLe;      ´pjù ÖKM¡ 6}M ¯ØYRïv  ¬
@                           ¦
  ¦
†:)šƒÌ^ð-&|¦: ¯   Æ
$  Æ
ØYRïv@                           Æ
"  Æ
e;IQ”WœM(
ìYU [à8	S£ƒ™<g   æ
$  æ
ØYRïv@                           æ
*  æ
±„:,"àyä'oMwh;	¯”W{3e	R`ØYRïv  @                           "  Tqi	HŠ¡Ev´‰à8ê'(8;ô& #oêYü   &$  &ØYRïv@                           &*  &
zK?}pàÑ_%€	’W!!w~ƒWô_i;`ØYRïv  L@                           F  Fy…Ön~j8ÈK      *’a	“W£ƒ™<g   f$  fØYRïv@                           f*  f†:)šƒÌjZK?	}’W!!w~ƒWô_i;`ØYRïv  Œ@                           †  †
zJwÔ:Ïv¼RÌ}¯ÍyR´‰„°^ Æ   ¦$  ¦ØYRïv@                           ¦*  ¦Tqi	HŠt: #|L"K`†°^¶p¤,và[üØYRïv  Ì@                           Æ"  Æ
zJwÔ:Çvµ;—WÚ2Nà`Yqº„üoêYü   æ$  æØYRïv@                           æ"  ægõ Ó£ƒ™3g!VŠ¯ÍyRÆÁ`[q`   $  ØYRïv@                              g      	h[
zJwÔ:Çvµ;à[f9•`à › {   &$  &ØYRïv@                           &  &
zK?} X^Ì[]ày|Q   F$  FØYRïv@                           F*  F	M~i"Å’˜K"¦:Õ‘mLqv(8;&à}`ØYRïv  l@                           f*  f&|¦:à ÕfÁyð_Yqº„àp:I~Ãv`# ¯ØYRïv  Œ@                           †   †,:Y KÚdtÿ t…v‡ äà ÕfÁy`   ¦$  ¦ØYRïv@                           ¦   ¦E`¼p`8;»R6xÉ+ƒW^K’˜K"¦: ¯   Æ$  ÆØYRïv@                           Æ        Æ£µ_È}´‰„ïyLq ¯   æ$  æØYRïv@                           æ"  æ,:Y K”`ÿ t…. Ú}nü`và ÕfÁy`   $  ØYRïv@                             ZŠ†a	WIqD 4 oMü   &$  &ØYRïv@                           &"  &#ÌàÕ±<Kµ;½  <qRìY¥ ö&ü   F$  FØYRïv@                           F  Fé°¯W #¡=†¡ 1}Õ}{/Ì]÷_ ¯   f$  fØYRïv@                           f"  fßfŒ†1RXkLe	Äva	1$R4 oMü   †$  †ØYRïv@                           †*        †áyÕ}„!Æv¬_aa˜X'°¯p^X"H#üØYRïv  ¬@                           ¦  ¦æY™w„i~K%:	Nœà`HT`¦:<   Æ$  ÆØYRïv@                           Æ  Æô&H8	˜:&ßK=Kˆw&i'ó ¯   æ$  æØYRïv@                           æ*  æô&Rý!;Òv<!½  2|à8	™w¯=ÔyØYRïv  @                              †:)	%X–a	e;UQˆwp:Tqi	ñ_`O   &$  &ØYRïv@                           &  &{…ïY—W”`¯ö/5 ™¡=† ¯   F$  FØYRïv@                           F         F¡=†µ éeüüý&MUsýW[ü   f$  fØYRïv@                           f  fØY &ê'(8;”wÌ ¯   †$  †ØYRïv@                           †   †nZ&„!ùRKq¯IqÆv`õvAIq ¯   ¦$  ¦ØYRïv@                           ¦*  ¦Õ±ü¡O~`†v°´‰à8¡E¯`	t!¯œp=† ¯ØYRïv  Ì@                           Æ"  Æ˜:&ßK=Kˆw;2ù ÈK<‘2Ü]”wÌ ¯   æ$  æØYRïv@                           æ*  æ„:] p¼RÌ}vr="õs`³¥ ½% NK	M…`ØYRïv  @                                   †:)šƒÌ^„ K	‡ )Xw~à[   &$  &ØYRïv@                           &   &´‰„# Æv9Á<  2s…e	`   F$  FØYRïv@                           F  FØY<D¹;7x“W<}M!³Z’=^½y`   f$  fØYRïv@                           f"  f†:) sÞKE U[q}’%Ç qf9•``   †$  †ØYRïv@                           †"  ††:)ÛrõHqµWD9 üX¦:v: h 
   ¦$  ¦ØYRïv@                           ¦*  ¦»R6xÑ+¬…OƒW`…:Lu:¯¬…AÍyR ¯ØYRïv  Ì@                                 Æ   Æ%:dG;WŒ%e;´pÉvÎvà`Úd¼RÌ} ¯   æ$  æØYRïv@                           æ  æ(Iœÿ-Lq¡I~ŒW¢8)	%<™   $  ØYRïv@                             †:)%:µWOƒWY`¯Y`oêYü   &$  &ØYRïv@                           &  &(Fœ%:µWNà`í'<X   F$  FØYRïv@                           F  FÚdœ:et;àD"¥¯¡¼pµ;<{   f$  fØYRïv@                           f"  f¥¯¡¼pµ; {Ñ_%€åre<Xe	R`   †$  †ØYRïv@                           †         †Údœ:et;àD"Ö¯Ä	~~T" ¯   ¦$  ¦ØYRïv@                           ¦  ¦-yýp’ê^Ht!Év„WÄ	~~T"   Æ$  ÆØYRïv@                           Æ"  Æ<qR›T}¬_Xa¡²@~af¥ZàtRe=	 ¯   æ$  æØYRïv@                           æ*  æn±"oM¯L†ÿ ïLÜ`v(8;áyÕ}„! ¯ØYRïv  @                           "  ,:Y Kt!w:ù $!¡ 6}MvuŒZöq 0   &$  &ØYRïv@                           &  &,:Y K„ž 
p:V²òyw:¯<}M!¼Z   F$  FØYRïv@                                 F  F”Tx~ÈK/xƒW=K›wf(8;e; U   f$  fØYRïv@                           f  f,:Y K„ž 
p: _#[q7xà[   †$  †ØYRïv@                           †  †/xƒW=Kˆwð_æYÕZ"ÉÕ} ¯   ¦$  ¦ØYRïv@                           ¦  ¦/xƒW=KˆwÐmLÎ]ô_H;AK|d!   Æ$  ÆØYRïv@                           Æ   Æ/xƒW=KˆwÐmLÕ]Zõ-a	|d!   æ$  æØYRïv@                           æ   æ,:Y K)!¼Rw:¡ (}e;IQœWƒ…Ù´X   $  ØYRïv@                                 *  4¯`Oï&†~~C`6}	}åLô+vuŒZöq 0ØYRïv  ,@                           &   &,:Y K½¹;˜X<qRp:V²òyw: ¯   F$  FØYRïv@                           F*  F¥¯uLe;`¡=†Õ‘mLqv(8;V²òyw: ¯ØYRïv  l@                           f"  f<qR›T}¬_Xa¥¯uLe;‰pà[Re=	 ¯   †$  †ØYRïv@                           †*  †,:Y Ka	µWF¬_kad)!¼R"Œ:ˆ»p #ØYRïv  ¬@                           ¦  ¦<qR›T}¬_Xa‡¯„…v¯Ñ4¤w   Æ$  ÆØYRïv@                                 Æ"  Æ,:Y Ka	µWF¬_kaca	}à[Re=	 ¯   æ$  æØYRïv@                           æ   æ<qR›T}¬_Xa!²ùLw:v¯Ñ4¤w   $  ØYRïv@                           *  ,:Y Ka	µWF¬_kat,¶É+à[Re=	 ¯ØYRïv  ,@                           &  &<qR›T}¬_Xav°Eyüuìp   F$  FØYRïv@                           F  F,:Y Ka	µWF¬_kaiˆZÌ¯"   f$  fØYRïv@                           f"  f,:Y Ka	µWPKqåÜvê'	¯œWƒ:Ëd`   †$  †ØYRïv@                                 †  †ÿ¯àtÑ_%€	œWƒ:Ëd`áyÕ}„! ¯   ¦$  ¦ØYRïv@                           ¦  ¦<qR›T}¬_Xa!²ùLw:¯Ñ4¤w   Æ$  ÆØYRïv@                           Æ  Æ,:Y K”`ÿ ïL¸’ÿ¯àtp:v°Eyü   æ$  æØYRïv@                           æ&  æ<¼H!Ñ_%€¥(œp,¯ÉKv 0`ù¯Œs ¯   $  ØYRïv@                           *  4¯`Oï&†~~C`6}	}åLô+viˆZÌ ¯ØYRïv  ,@                           &"  &,:Y Ka	µWF¬_kaaüLjllw: ¯   F$  FØYR      ïv@                           F"  F,:Y Ka	µWF¬_kab? dqja¥(àt   f$  fØYRïv@                           f  f,:Y Ka	µWF¬_kab     †$  †ØYRïv@                           †  †,:Y Ka	µWPKqåÜv„   ¦$  ¦ØYRïv@                           ¦*  ¦<¼H!Ñ_%€	œWN•`¯œpD,"ˆ»p #ØYRïv  Ì@                           Æ  Æ,:Y K„ž 
p:v°Eyüe	R`   æ$  æØYRïv@                           æ*  æi¯¯L†ÿ ïLÜ«pÚ} {p:Xq+Kw:éüyØYRïv  @                                    <¼H!Ñ_%€¥(œp„viˆZÌ ¯   &$  &ØYRïv@                           &"  &<¼H!ä'oMw:b  # ßv€ 	åàt   F$  FØYRïv@                           F*  F<¼[!U ê'A XD"i¯¯YXtƒvd£ØYRïv  l@                           f*  fU¯ê' #`.¯Ú}¯Údtà øÃÁ:2Ì,"ØYRïv  Œ@                           †"  †,:Y K”`ÿ ïL¸’Õ±áe6 0p:v°Eyü   ¦$  ¦ØYRïv@                           ¦*  ¦i¯¯¼RÌ}. Ú}Õáe6Ã+Ø_	&yh"<XØYRïv        Ì@                           Æ*  Æg	h[ïq 5:d„!Û28"p: _#[q7xà[ØYRïv  ì@                           æ*  æg	h[ÎK}	¨Z="ÉvƒW^K’˜K"¦: ¯ØYRïv  @                              »R6xÏ+Údtv: h;R¸8#[q7xà[   &$  &ØYRïv@                           &   &,:Y KÚdtv: h;R¸8#[q7xà[   F$  FØYRïv@                           F*  FæY„:] …p˜VX}a	ƒW^K’˜K"¦: ¯ØYRïv  l@                           f  f
zK?}¼RÌ}v„ K	‡ )Xw~à[   †$  †ØYR      ïv@                           †  †
zK?}¼RÌ}vð-&|¦: ¯   ¦$  ¦ØYRïv@                           ¦  ¦E`¶pK;w:v‡ ÌS #&|¦: ¯   Æ$  ÆØYRïv@                           Æ  Æ†:)Údtv‡ ÌS ##[q7xà[   æ$  æØYRïv@                           æ"  æ,:Y K„ž 
p:OXe	X:ÈK&|¦: ¯   $  ØYRïv@                             †:)Y Ì}ÌSCô_i;`   &$  &ØYRïv@                           &  &,:Y K„ž 
p:‡¯ÕSä}e	R`   F$  FØY      Rïv@                           F  F<¯Ö `,:Y K`¶perl ¯   f$  fØYRïv@                           f"  fv°´‰à8¡E	¯åLô+ÿ “pý!„!t8rl ¯   †$  †ØYRïv@                           †   †t: #<IÕ}tÏK 8	t: #ð_*}äK   ¦$  ¦ØYRïv@                           ¦  ¦t: #µWNà`Îu:`I~Ôvœ #   Æ$  ÆØYRïv@                           Æ  ÆTqi	HŠt: #8;†:)`   æ$  æØYRïv@                           æ  æßf‘.NQMet;àD"y¯üLuìp   $  ØY      Rïv@                             vL]°`ÛKÔv62ÿ é`´X   &$  &ØYRïv@                           &  &ô&CkMàÜ?}Ödü   F$  FØYRïv@                           F*  FÙf Z&ßKŽWð_™w„i~K%:	¯ÿ-Lq ¯ØYRïv  l@                           f  f<qRÑ_%€	œW¡E{¯Ñ4¤w   †$  †ØYRïv@                           †  †‹ww~Wp	‘.@eµWMK;w: ¯   ¦$  ¦ØYRïv@                           ¦&  ¦’±=^Z #»R6xÉ+œW=†¯<}M!¼Z ÍyR ¯   Æ$  ÆØYRïv@                                 Æ  Æ²$	¯h;aiñZlL½  `[² #   æ$  æØYRïv@                           æ  æª²e;¯h;aiñZlL½  `[² #   $  ØYRïv@                             <D¹;7xWÀƒ/Ì]	 #   &$  &ØYRïv@                           &"  &Õ±Îu: {Ey.9v´‰à8Lq9 üX¦: ¯   F$  FØYRïv@                           F   F,:Y KÒ]åö&AìYÚ2ÕÎy:w~à[   f$  fØYRïv@                           f  f,:Y KÒ]åö&A‡ ä!e ¯   †$  †ØYRïv@                                 †*  †Õ±Îu: {ÐmLÖ]	œLw!@~<¼d!ØYRïv  ¬@                           ¦*  ¦[±ÄvÅ!)X˜X`tÏK p:Lq9 üX¦: ¯ØYRïv  Ì@                           Æ*  Æ#tàkeZ€SÙ˜Xgï´X‰Ø; züØYRïv  ì@                           æ  æô&q!R›T}¬_Xa„¯½`¯" ¯   $  ØYRïv@                             ?±¯L†ÿ ïLÜ<‘`6|{; zü   &$  &ØYRïv@                           &   &Õ±6‘`›T}¬_Xa?± ¯`;8;K	M…`   F$  FØYRïv@                                 F"  FÕ±®S<àyä'oMf¬`	 	}ÁvÍyR ¯   f$  fØYRïv@                           f"  fï°”et;àD"¡²\~	 	}ÁvÍyR ¯   †$  †ØYRïv@                           †"  †<qREy.9 "ù ÖKMà ËdÌ} ¯   ¦$  ¦ØYRïv@                           ¦   ¦ô&q!R›T}¬_XaœSSËd	¯œWE`ü[   Æ$  ÆØYRïv@                           Æ   Æ,:Y Ke^Áí&¥(œpE`à[ZŠà   æ$  æØYRïv@                           æ  æÖ¯`›T}¬_Xa<¯`³|{; zü         $  ØYRïv@                             ô&q!R›T}¬_XaÕ±üuìp   &$  &ØYRïv@                           &   &<qRÑ_%€¥(œp„: bp:Õ±ü ¯   F$  FØYRïv@                           F"  FKq”`µWML†ÿ ïLÜ™’ä}jrê"e;`³   f$  fØYRïv@                           f"  fáyÕ}„!oêYàM/tÏK Kq”`µW #   †$  †ØYRïv@                           †*  †,¯¶‰6 0T`¦:et;àp:ª²e;¯; züØYRïv  ¬@                           ¦  ¦×¯`h›T}¬_Xa<¯`³|{;       zü   Æ$  ÆØYRïv@                           Æ  Æ<qRÑ_%€¥(œp_(¼U   æ$  æØYRïv@                           æ"  æ,¯¶‰6 0„:] ”p`ï¯ÖsüàXDæ   $  ØYRïv@                           *  ?±Õ6‘`,:Y Kh;i b`à¯Ö}`œS #ØYRïv  ,@                           &"  &,:Y Kösw:¯a	µW #Ø8;K	M…`   F$  FØYRïv@                           F  Fô&q!R›T}¬_Xa¥¯ÜK #ZŠà   f$  fØYRïv@                           f  fô&q!R›T}¬_Xa²$	¯      " ¯   †$  †ØYRïv@                           †*  †å°Ôyet;àD"?±`p:²$	¯ÍyR ¯ØYRïv  ¬@                           ¦*  ¦<qRÑ_%€	œW¡E{¯Ñ4¤w ÍyR ¯ØYRïv  Ì@                           Æ*  ÆTqi	ñ_K”`et;àD"½°Iœ {Re=	 ¯ØYRïv  ì@                           æ"  æÚ}¶Ro	‰pÿ-LqviÃ]`är¯	‘.\e   $  ØYRïv@                           *  Ú}¶Ro	‰pÿ-LqvsËdt81R¯	‘.\eØYRïv  ,@                           &   &1±~~ #»R6xÉ+“WËdt8µW8"      ¡=† ¯   F$  FØYRïv@                           F"  F¶z@}Ú êrvoà%\g,"¯p¸p`6   f$  fØYRïv@                           f"  fÚ}¶Ro	p¼RÌ}voà%\g,"Äp   †$  †ØYRïv@                           †*  †<qRä'oMw:k(#T;ˆ»pIÉvåLô+ ¯ØYRïv  ¬@                           ¦  ¦†:)ïvOƒWô_i;ñ_K	œ #   Æ$  ÆØYRïv@                           Æ*  Æ,:Y KÁ!¼p`p: _áyÕ}„!	¯ÿ-Lq ¯ØYRïv  ì@                           æ"  æ,:Y K:2Ì"      í' X<‘v3(  _*’`   $  ØYRïv@                           "  ‚…Çù-ª¢ÈKà}}a	ƒW^K<}M!¼Z   &$  &ØYRïv@                           &   & _*’a xZ<‘2…p3XvYEeà[   F$  FØYRïv@                           F*  FæYÕZ"Ìe;´p/Ì]÷_¯ÖsüàX€Q ¯ØYRïv  l@                           f"  f _-yýpéHXgï´X2s…e	Í]
   †$  †ØYRïv@                           †*  †i¯¯¼RÌ}vÕáe6Ï+)g`‡ ègf9•``ØYRïv  ¬@                           ¦"        ¦Ú}¶Ro	p¼RÌ}vcY` ¯`;8;K	M…`   Æ$  ÆØYRïv@                           Æ"  Æé°¯W #¡=†¡ 6}MàyHp„:] àt   æ$  æØYRïv@                           æ   æé°¯W #¡=†¡ 6}MàyHƒ…f9ü   $  ØYRïv@                           *  kf*xÈKo32%q’p½¹;˜Xí& KåùWw~à[ØYRïv  ,@                           &*  &kf*xÈKoMjÚÕ‘öŠÆ+9Ösü¦: ¯ØYRïv  L@                           F   F dÉ2Ú?}¬_]aAœWIq( *’`   f$  fØYRïv@                                 f   fE`W)gñ_K%:ÏvyYviZ`œS #   †$  †ØYRïv@                           †"  †#Ìàù¯ÈKáy[€¯a	µWNà`Îu:`   ¦$  ¦ØYRïv@                           ¦"  ¦#Ìàq²MN^l¯a	µWNà`Îu:`   Æ$  ÆØYRïv@                           Æ*  Æ#Ìàé°¯W #¡=†¡ 6}M?}9 LX ¯ØYRïv  ì@                           æ   æÕ±<Kµ;½  <qR;2v´‰à8¡Ôy    $   ØYRïv@                                Õ±<Kµ;½  <qR;2v´‰à89†¤,   & $  & ØYRïv@                                 &   & Õ±<Kµ;½  <¼H!8;gï´X   F $  F ØYRïv@                           F "  F Õ±<Kµ;½  <qR›T}A‰W¥Zš, ¯   f $  f ØYRïv@                           f    f ù¯ÈKáy[€¯a	µWH8	†:);K {   † $  † ØYRïv@                           †    † ù¯ÈKáy[€¯a	µWH8	†:)ïv #   ¦ $  ¦ ØYRïv@                           ¦ "  ¦ ÖKè.^f%:u	 {<¼H!8;,:Y `O   Æ $  Æ ØYRïv@                           Æ    Æ q²MN^l¯a	µWH8	†:);K {   æ $  æ       ØYRïv@                           æ    æ q²MN^l¯a	µWH8	†:)ïv #   !$  !ØYRïv@                           !"  !ÖKè.^v5O‰%`<¼H!8;,:Y `O   &!$  &!ØYRïv@                           &!"  &!é°¯W #¡=†¡ 6}MAÉvñZlL„ K	 ¯   F!$  F!ØYRïv@                           F!"  F!é°¯W #¡=†¡ 6}MAÉvñZlL[] ¯   f!$  f!ØYRïv@                           f!"  f!†:)½¹;˜XE`¶p	œWœw`³f9•``   †!$  †!ØYRïv@                           †!   †!ØYKq¾ w:h" XEy.      9vs|" ¯   ¦!$  ¦!ØYRïv@                           ¦!*  ¦!Ñ_%€‰påLô+h" XD"/²	¯œWœw`³ØYRïv  Ì!@                           Æ!  Æ!,:Y K„ž 
p:ý±`áyÕ}„! ¯   æ!$  æ!ØYRïv@                           æ!   æ!i¯¯L†ÿ ïLÜÜ…jdfa`³K	M…`   "$  "ØYRïv@                           "*  "Ñ_%€‰påLô+h" XD"i¯	¯œWœw`³ØYRïv  ,"@                           &"  &"ØYE`¶pøEy.9vdH;AK ¯   F"$  F"ØYRïv@                           F"*  F"œwv~É+%X–Mm}’%      w #ý±`f9•``ØYRïv  l"@                           f"*  f"n°¯Ís@~Ñ_%€`K	M…n#ý¥ZýW ¯ØYRïv  Œ"@                           †""  †"&i'é˜X/x“WJž³_v‰õHqòyw: ¯   ¦"$  ¦"ØYRïv@                           ¦""  ¦"Z£Ó]Ð…[q7xƒWö_kLøp:keZ€SÙ´X   Æ"$  Æ"ØYRïv@                           Æ"   Æ",:Y K:2Ì"p:E~‰õHqòyw: ¯   æ"$  æ"ØYRïv@                           æ"*  æ"\¯{ p!Z£ b&i'ó¡@~Z£Ó]Ð…[q {ØYRïv  #@                           #   #:d„!Û2U<      Ëd99"# ßv„ía9€   &#$  &#ØYRïv@                           &#  &#Ey.9Áy˜Xƒ:å8VqE~›w ¯   F#$  F#ØYRïv@                           F#*  F#,:Y KJž _ÕfŒ8"ÎK}	à[p:keZ€ #ØYRïv  l#@                           f#  f#Ú}¶Ro	p¼RÌ}vnå`¯	‘.\e   †#$  †#ØYRïv@                           †#*  †#†:)Údtvv)	w:¯œpD,"ˆ»p #ØYRïv  ¬#@                           ¦#   ¦#†:)Údtvfår¯œp„ˆ»p #   Æ#$  Æ#ØYRïv@                           Æ#*  Æ#g	h[      .¯Ú}¯Ñ4›wvp"`¯<}M!¼ZØYRïv  ì#@                           æ#"  æ#°ä_jb  `V²t~¯K;w:v…q¤r   $$  $ØYRïv@                           $"  $,:Y Kô_i;ð_#[q7x‰W”WÈ2Údê' U   &$$  &$ØYRïv@                           &$"  &$æYkfi;HŠ|L"	KœW_( U`i¯¯Ñ4¤w   F$$  F$ØYRïv@                           F$   F$†:)!!w~ƒWô_i;ð_p:ý±	2üL   f$$  f$ØYRïv@                           f$*  f$æY„:] „pa	‡ |XÌ8×vh;vàµWUïv #ØYRïv  Œ$@                                 †$"  †$X:kL`;Nq"ýW/Q ô_i;ð_´‰„ ¯   ¦$$  ¦$ØYRïv@                           ¦$"  ¦$X:kL`;Nq"ýW/Q ô_i;ð_º‰j8äK   Æ$$  Æ$ØYRïv@                           Æ$"  Æ$g	h[µW8"p: _ßf‘. UÕ%te #   æ$$  æ$ØYRïv@                           æ$   æ$Nq"ýW/VÎu:a	µW #oêYü   %$  %ØYRïv@                           %"  %‰mnL9ÕZ&s!IåLô+v(8;&à}`   &%$  &%ØYRïv@                           &%   &%‰mnL9et;àp:‰mnL9ÕZ&s! #   F%$  F%ØYRïv@                                 F%"  F%g	h[‰mnL9Év‘Wtƒ99àNq"ýW ¯   f%$  f%ØYRïv@                           f%"  f%t…9 LX½)í&‰p‘Wtƒ99àNq"ýW ¯   †%$  †%ØYRïv@                           †%"  †% _áyÕ}„!‡ ¡Zƒ:5 ï­…Òv5 Vq¤   ¦%$  ¦%ØYRïv@                           ¦%"  ¦%<qRNq"ýWà ËdÌ}v(8;&à}`   Æ%$  Æ%ØYRïv@                           Æ%"  Æ%,:Y K5 VqˆÜÌàp:I~Ãv`# ¯   æ%$  æ%ØYRïv@                           æ%   æ%:d„!Û2U<Ëd99":Kš,(p™ædó         &$  &ØYRïv@                           &   &#¨pE`öXÑ+¬…OŒWe;´p{oêYü   &&$  &&ØYRïv@                           &&   &&ßf‘.NQMàyHNþ_M…ëqéÚ}<   F&$  F&ØYRïv@                           F&  F&†:)ßrµp1R|L"	KœWô|O   f&$  f&ØYRïv@                           f&*  f&|L"øM	tÏK p:	M… Z{L}œ%ô|OØYRïv  Œ&@                           †&*  †&	M… Z{L}¼RÌ}. Ú}u6x 0p:y¯üL ¯ØYRïv  ¬&@                           ¦&*  ¦&`;8;,:Y KÓ]£ƒ™ g	M…³Z      vc,`³ØYRïv  Ì&@                           Æ&*  Æ&y¯üL: /„!ÍvL†U ÏjíåTŠ|[! ¯ØYRïv  ì&@                           æ&*  æ&,:Y K„ž 
p:‡¯Èœw¯=K¤w	 ÿ-Lq ¯ØYRïv  '@                           '"  '<qRp:½°Iœ {Re=	?}ˆM…RÔ8   &'$  &'ØYRïv@                           &'*  &'Õ±*D#¡ 1}Õ}å¬X2IqÚ}(p›Í ¯ØYRïv  L'@                           F'"  F'<qRp:½°Iœ {Re=	{{øqÌ} ¯   f'$  f'ØYRïv@                           f'*  f'Õ±*D#¡ 1}Õ}àyìY      U (  _*}äKØYRïv  Œ'@                           †'*  †'Õ±*`Ñ_%€åra%N±rÈ}Kq”`¯=K¤wØYRïv  ¬'@                           ¦'   ¦'t…9 LXa%N±rÈ}Kq”`½  <q$R   Æ'$  Æ'ØYRïv@                           Æ'"  Æ'4¯Ú}¼WRÇ q¡E¯=K›w: SÁ!¼pü   æ'$  æ'ØYRïv@                           æ'"  æ'vLïDSÌ¦:|H!ÐzÔv+‘IœWA†´X   ($  (ØYRïv@                           (  (,:Y KwR}Q:`´‰$„oêYü   &($  &(ØYRïv@                           &(*  &(„:] ŸpU ¦ž      Iq( Õe	Ìvµ"KJ…,"ØYRïv  L(@                           F("  F(”Tx~ÈKkeZ€8"ê'ùRe; U;K}Œw ¯   f($  f(ØYRïv@                           f(  f(¯6xÐ+	¨ZA"ÍvK;w:v‰õdq   †($  †(ØYRïv@                           †(  †(ìY( 
zßf‘. U’±ê^doêYü   ¦($  ¦(ØYRïv@                           ¦(*  ¦(#tàkeZ€SÙ˜Xgï´X‰Ø; züØYRïv  Ì(@                           Æ("  Æ(Ey.9et;àN•`å (:dŒ!v‰    æ($  æ(ØYRïv@                           æ(   æ(‹ww~      ŽW b•.e	”p62w2|à8	´Ú   )$  )ØYRïv@                           )*  )†:)	Õ}å¬X	2W	¨Z="Ïv%Ì8† ¯ØYRïv  ,)@                           &)"  &)´‰„¡=†?}ïLŒvé9Yˆ,‹ww~à[   F)$  F)ØYRïv@                           F)*  F)E`¶p	œWA†´XàyHvLïDSÌ¦:|d!ØYRïv  l)@                           f)*  f)”Tx~ÈKo'i	˜Xí&³KvER¸8é	}Õ} ¯ØYRïv  Œ)@                           †)*  †)”Tx~ÈKZ£Ó]Ð…[qÆv9øp:keZ€SÙ´XØYRïv  ¬)@                           ¦)"  ¦)Z£      Ó]Ð…[q7x‰WåLô+¡@~o'i	˜Xí&¼K   Æ)$  Æ)ØYRïv@                           Æ)  Æ),:Y K„ž 
p:keZ€SÙ´X   æ)$  æ)ØYRïv@                           æ)  æ)”Tx~ÈKËI:K6_øp:keZ€ #   *$  *ØYRïv@                           *   *E`¶p	œWA†´XàyHÞK !XÀ`$í   &*$  &*ØYRïv@                           &*  &*†:)ïv #f9•``   F*$  F*ØYRïv@                           F*  F*”Tx~ÈK9†ˆ,¡=† {;K}Œw ¯   f*$  f*ØYRïv@                           f*  f*”Tx~ÈK;^#†      „ ›	T"áày=†`   †*$  †*ØYRïv@                           †*  †*;^#†Áë&i	ð_""¬`ØK	M…`   ¦*$  ¦*ØYRïv@                           ¦*"  ¦*<qRÑ_%€	„Wa	¥ JwÔ:¦:Ö é ¯   Æ*$  Æ*ØYRïv@                           Æ*  Æ*†:)	%X–M	¯ÿ-Lq ¯   æ*$  æ*ØYRïv@                           æ*   æ*9†ˆ,T`¦:?}`"X:ÕK„!üoêYü   +$  +ØYRïv@                           +*  +Ú}¶Ro	p¼RÌ}. Ú}¡ 1}Õ}¥ JwÔ:¦: ¯ØYRïv  ,+@                           &+  &+†:)f9v      ER¸8keZ€ #   F+$  F+ØYRïv@                           F+   F+keZ€C=KˆwÑ_%€…WÕK„!)	|d!   f+$  f+ØYRïv@                           f+*  f+ÕZ"ÉÕ}à ø°Ço`;€Q ¯åùWÌ} ¯ØYRïv  Œ+@                           †+"  †+%	dÕ}à ø°Ços;¯Áyð-—Ô”` {   ¦+$  ¦+ØYRïv@                           ¦+  ¦+t: #e;HQ8	,:Y K=K¤w   Æ+$  Æ+ØYRïv@                           Æ+   Æ+ÕZ"Ö5F`{áeIœÕ}	¯ÿ-Lq ¯   æ+$  æ+ØYRïv@                           æ+  æ+´‰„gï´X      2s…e	`   ,$  ,ØYRïv@                           ,  ,¡=†µ éeü¦: ¯f9•``   &,$  &,ØYRïv@                           &,"  &,†:)”`vb6K×DÖ2ôr	¯ÿ-Lq ¯   F,$  F,ØYRïv@                           F,*  F,ÞK !ÕZÕvYXtƒvÕÎu: {¡=†oêYüØYRïv  l,@                           f,*  f,kf*xÈK5aard„%Å!)X˜Xð_e;AQ X*}äKØYRïv  Œ,@                           †,  †,ÞK !,:Y K¥(¥p ëÕe	Þv Æ   ¦,$  ¦,ØYRïv@                           ¦,  ¦,Údœ:et;àD"à¯`;ßf      ‘. U   Æ,$  Æ,ØYRïv@                           Æ,   Æ,à¯`;ßf‘. UìYáàyíy}“%„!s! #   æ,$  æ,ØYRïv@                           æ,*  æ,Lq9 öXÌ+w!@~x$…	€}ja9´Wå¬X`6ØYRïv  -@                           -  -Lq9 üX¦:^oM”s|d!oêYü   &-$  &-ØYRïv@                           &-  &-ßf›6xÒ+M"R. Ú}Q `   F-$  F-ØYRïv@                           F-*  F-†:)=Kˆw¡E*’`è`"¡=†Óv8FÌd ¯ØYRïv  l-@                           f-   f-†:)”`ÿ ïL6‘Ü+´‰$„	¯ÿ-      Lq ¯   †-$  †-ØYRïv@                           †-  †-´‰„&i'ü*aqMN[ü   ¦-$  ¦-ØYRïv@                           ¦-  ¦-ÞK !ÕZZet;ü|H!f9•``   Æ-$  Æ-ØYRïv@                           Æ-"  Æ-ØY´‰„D"&|¦:1$R& ‰íÿ-Lq ¯   æ-$  æ-ØYRïv@                           æ-*  æ-¶z@}Ú êrvc;2=K¤w =Kˆwf9•``ØYRïv  .@                           ."  .?±¯K;w:v, ¶‰6Ð+Ñ4¤w ÍyR ¯   &.$  &.ØYRïv@                           &.   &.,¯¶‰6 0»R6xÁ+¥(œp      ôY ¯K	M…`   F.$  F.ØYRïv@                           F.   F.XkLe	¡ 6}M¥ ¡¼p¦:¥ Ë}Ì} ¯   f.$  f.ØYRïv@                           f."  f.,:Y K	‘.@eÉ2Úl© à:doêYü   †.$  †.ØYRïv@                           †.*  †.,:Y K	‘.@eÉ2ÚÖ „‰Ì;‰pÿ-Lq ¯ØYRïv  ¬.@                           ¦.*  ¦.ÕZ"Ìe;´ptÏK ð_Ÿ.À…e; Uf9•``ØYRïv  Ì.@                           Æ.   Æ.Ö¯úŠý_„!¯à`ä'oMàh©¯ûŠ¦:`³   æ.$  æ.ØYRïv@                           æ.*  æ.Ú}¶Ro	p      K;w:. Ú}da	© ûŠ¦:¯l,"ØYRïv  /@                           /   /Ú}¶Ro	pK;w:. Ú}¯p¸p2l,"   &/$  &/ØYRïv@                           &/"  &/Õ±µWT"Áí&Óvj]n"Àð_ïq<5   F/$  F/ØYRïv@                           F/  F/ý±é`et;à_(SQÌ¦:Eåàt   f/$  f/ØYRïv@                           f/   f/Ú}¶Ro	pK;w:. Ú}ýéð_É2Ú ¯   †/$  †/ØYRïv@                           †/  †/å8©Zë&i	ð_~A;ð_ûet;ü   ¦/$  ¦/ØYRïv@                           ¦/*  ¦/      ØYå8©Zë&i	ð_`†!;Y Z~A;ð_í'<XØYRïv  Ì/@                           Æ/  Æ/å8©Zë&i	ð_~A;ð_É2Úet;ü   æ/$  æ/ØYRïv@                           æ/  æ/,:Y Kµ"KJ…,"2|; Ï ¯   0$  0ØYRïv@                           0   0Ú}¶Ro	pK;w:. Ú}Ö „‰°;É2Ú ¯   &0$  &0ØYRïv@                           &0  &0¡¯D}?}¬_]a\œ~A;` ¯   F0$  F0ØYRïv@                           F0  F0†!;Y Z~A;ð_É2Úet;ü   f0$  f0ØYRïv@                           f0"  f0‚…      Çù-ª¢ÈK _ßf‘.FQ`|	* ¤` ¯   †0$  †0ØYRïv@                           †0"  †0l°„!99ü¦:¯à`ä'oMàh©¯ûŠ¦:`³   ¦0$  ¦0ØYRïv@                           ¦0*  ¦0Ú}¶Ro	p¼RÌ}. Ú}i¹;7xà[É2Ú ¯ØYRïv  Ì0@                           Æ0"  Æ0’±ê^Q`#ÌàD"~A;ð_É2Ú ¯   æ0$  æ0ØYRïv@                           æ0*  æ0Ú}¶Ro	p¼RÌ}. Ú}pßrü8¨pÉ2Ú ¯ØYRïv  1@                           1*  1†:)ßrµp1Rp:’±ê^Hü8¯p¸p`6ØYRïv  ,1@                                 &1"  &1g	h[ô&8"ê'õxZ`Õ}jf)	½ ¯   F1$  F1ØYRïv@                           F1*  F1†:)”`Ey3X’=^Áy´Xûpê'ú`ØYRïv  l1@                           f1  f1ßf›6xÒ+L"$	Ïv–W" ¯   †1$  †1ØYRïv@                           †1  †1ßf›6xÒ+L"$	ÏvWÛrõHqµW #   ¦1$  ¦1ØYRïv@                           ¦1  ¦1ßf›6xÒ+L"$	Áv¥(”p"q:j ¯   Æ1$  Æ1ØYRïv@                           Æ1  Æ1l°„!99ü¦:¯?#”`?	}WIqD    æ1$  æ1ØYRïv@                                 æ1  æ1:djÈ%‘r¼W`K	M…¼RÌ} ¯   2$  2ØYRïv@                           2*  2é°¯W #†:)`I~Æv%: ¯¡=†oêYüØYRïv  ,2@                           &2   &2Ú}¶Ro	pK;w:. Ú}’=^ZNM ¯   F2$  F2ØYRïv@                           F2*  F2Ô¯¤w¯ 8"ìYAHŠK	A^e	L9	¯ÿ-Lq ¯ØYRïv  l2@                           f2*  f2ZŠ……˜åÆ]¬_XaÔ¯¤w ¯Ô¯¤woêYüØYRïv  Œ2@                           †2*  †2¥°éy„)¡@~ÕZ"Ï…p|àe; Uf9•``ØYRïv  ¬2@                           ¦2      *  ¦2\¯{ p!Z£ b,:Y ùLÁí&`f9•``ØYRïv  Ì2@                           Æ2*  Æ2†:)pK;w:¡ 6}M. Ú}råö&T" ¯ØYRïv  ì2@                           æ2"  æ2Õ±Îu: {›T}¬_Xa<NM	¯ÿ-Lq ¯   3$  3ØYRïv@                           3  3Ø@~°^[XÌ}ià)# ÌvQ:`   &3$  &3ØYRïv@                           &3  &3XkLe	’=^ZNM¥ Ë}Ì} ¯   F3$  F3ØYRïv@                           F3  F3:djÈ1R‰mnL¹8w~…W_sàt   f3$  f3ØYRïv@                           f3        f3ô&q!R|L"K`fM 02s…e	`   †3$  †3ØYRïv@                           †3  †3,:Y K„ž 
p:'°/¯<}M!¼Z   ¦3$  ¦3ØYRïv@                           ¦3  ¦3†:)	¥Zš,j¡ 6}M ¯   Æ3$  Æ3ØYRïv@                           Æ3  Æ3'°/¯8	”Tx~ÈKßfŒ†1R ¯   æ3$  æ3ØYRïv@                           æ3  æ3†:)”`ÿ ïL¸’¡¯(}~A;` ¯   4$  4ØYRïv@                           4"  4†:)”`vù ÈK‹ww~à[9w†W§`	 ¯   &4$  &4ØYRïv@                           &4"        &4e±t;üáTÉvÿ-Lq¡@~q²MN^l ¯   F4$  F4ØYRïv@                           F4  F4ý±é`à ËdÌ}. Ú}Eå—p”` ¯   f4$  f4ØYRïv@                           f4   f4Ú}¶Ro	…p…˜å¥(“pÌ¦:Eåàt   †4$  †4ØYRïv@                           †4  †4ó`e u&“p+dOZŠo' ”   ¦4$  ¦4ØYRïv@                           ¦4  ¦4^±¯œpü8Áy˜Xp:q²MN^l`³   Æ4$  Æ4ØYRïv@                           Æ4  Æ4,:Y K”`v: h 
9w†W§`	 ¯   æ4$  æ4ØYRïv@                           æ4        æ4Ÿ.À…ÞK !q²MN¯9;ïLŒ ¯   5$  5ØYRïv@                           5*  5Nq"ýW{:]ýéð_e;NQà`p:[²w:`³ØYRïv  ,5@                           &5"  &5æYý nô&IœW”Tx~ÈKô&TÅ¯=K¤w   F5$  F5ØYRïv@                           F5  F5´‰„¡=†tÏK p:ô&SÌ¦: ¯   f5$  f5ØYRïv@                           f5  f5¶z@}Ú êrv UsX„ ›	 #   †5$  †5ØYRïv@                           †5  †5,:Y K"†s!Sœf9 ¯   ¦5$  ¦5ØYRïv@                           ¦5  ¦5Ey)1M      R„ ›	IñZlL ¯   Æ5$  Æ5ØYRïv@                           Æ5  Æ5¶z@}Ú êrv¥ 506_}=K¤w   æ5$  æ5ØYRïv@                           æ5"  æ5.¯Ú}¯K;w:vu¤we	R`; zü   6$  6ØYRïv@                           6"  6ØYÚ¯êr¯œp#Ô!¦:	¯œW=† ¯K	M…`   &6$  &6ØYRïv@                           &6  &6ØYÿFð‘¡=†Év“WËdt8µWT"   F6$  F6ØYRïv@                           F6*  F6Lqt…„u¤w‡ ZŠ] ¯Õfà[² #f9•``ØYRïv  l6@                           f6  f6{…ïYWÖd      Èp:[² #áyÕ}„! ¯   †6$  †6ØYRïv@                           †6  †6Ÿ.À…e;HQ8	MƒW,àù¯åLàt   ¦6$  ¦6ØYRïv@                           ¦6  ¦6»R6xÅ+ùZærR}¹;7xà[   Æ6$  Æ6ØYRïv@                           Æ6  Æ6~A;ð_hZ£ b   æ6$  æ6ØYRïv@                           æ6  æ6´‰„ìY…‘r%€h;(8;e; U   7$  7ØYRïv@                           7"  7†:)`6}}Œpe;´pÿ ïL6‘Ü+,`³   &7$  &7ØYRïv@                           &7  &7¬ù ÖKMvu¤we	R`         F7$  F7ØYRïv@                           F7  F7ô&Nà`¯Œw ¯   f7$  f7ØYRïv@                           f7  f7
zK?}œ%4,"{ýéð_µW #   †7$  †7ØYRïv@                           †7   †7ô&C5aLqi ‡ |XÌ8w:[PÛrõdq   ¦7$  ¦7ØYRïv@                           ¦7  ¦7<D¹;7x…W}–ó, Õ¸y¶p¤,   Æ7$  Æ7ØYRïv@                           Æ7"  Æ7zéeà´‰„†:)`ÕZ|d!oêYü   æ7$  æ7ØYRïv@                           æ7*  æ7ô&A=½yVœ"Õ‘möqÒ+ !`ø8j 0ØYR      ïv  8@                           8   8ô&A=½yVœ"Õ n™w„i~K´q   &8$  &8ØYRïv@                           &8  &8ZŠŽà`X:ÕK„!ü   F8*  F8ØYRïv@                        ØYRïv  l8@                           f8   f8;^#†tÏK ê'Ïjí|d!oêY #   †8$  †8ØYRïv@                           †8   †8+¯˜}år¯àìYvÁ.M {   ¦8$  ¦8ØYRïv@                           ¦8  ¦8»Ô!l„!99"†:)`   Æ8$  Æ8ØYRïv@                           Æ8*  Æ8ZŠƒpô_¯      =Kˆw&i'ó¡@~ô&A=ÔyØYRïv  ì8@                           æ8  æ8<qRD"'°¥ Ödv 0†:)`   9$  9ØYRïv@                           9*  9†:);KÏv„%a	1RD"'°¥ Ödv 0ØYRïv  ,9@                           &9   &9©¯Ly(
Ï…à[^Ì?	}“WËdt8µWT"   F9$  F9ØYRïv@                           F9  F9©¯LyD
h" X8;†:)`   f9$  f9ØYRïv@                           f9*  f9»R6xÏ+‰pñZlLh" Xê': h;R¸8ZŠ€ØYRïv  Œ9@                           †9  †9»R6xÏ+‰pñZlL†      OÚdt   ¦9$  ¦9ØYRïv@                           ¦9  ¦9»R6xÏ+‰pñZlL¥ éy¼W¦:h" X   Æ9$  Æ9ØYRïv@                           Æ9  Æ9!°öŠ 0Yqº„àD"©¯üi¯ ¯   æ9$  æ9ØYRïv@                           æ9  æ9!°öŠ 0Yqº„àD"|L"KÚdt   :$  :ØYRïv@                           :  :i¯¯K;w:vm4…Ì:     &:$  &:ØYRïv@                           &:  &:i¯¯œp„: b»R6xÆ+ård¹;ä   F:$  F:ØYRïv@                           F:  F:°ä_Áy˜Xp:²²Ì ¯   f:      $  f:ØYRïv@                           f:   f:ô&N Ävqž«R+ ›Æv`Õ±à`X`   †:$  †:ØYRïv@                           †:  †:¬’=^ZNMvp"``³   ¦:$  ¦:ØYRïv@                           ¦:*  ¦:,:Y KÚdt^tM: {T`¦:vp"``³ØYRïv  Ì:@                           Æ:   Æ:)²R¯K;w:È_…±q¤r¯ÍyR ¯   æ:$  æ:ØYRïv@                           æ:  æ:ßfŒ†1RÑ_%€	œW4," ¯   ;$  ;ØYRïv@                           ;  ;,:Y K4,"µ TÍ]K;w:t<b   &;$        &;ØYRïv@                           &;*  &;ô&H8	º‰¯U<ÕÔ Iq	¯Z	¯åLô+ ¯ØYRïv  L;@                           F;  F;ô&A=½yVœ"Õ‘möqÌ+q:¤,   f;$  f;ØYRïv@                           f;*  f;¥¯ÜK #`Õ±™’ä}¡O~`††:¯(#`=† ¯ØYRïv  Œ;@                           †;&  †;E`We^j?Õàßfj3s;Õ™’È}`Ôe" ¯   ¦;$  ¦;ØYRïv@                           ¦;  ¦;²$	¯ö_kLø<‘2Ödä   Æ;$  Æ;ØYRïv@                           Æ;  Æ;ª²e;¯ö_kLø<‘2Ödä   æ;$        æ;ØYRïv@                           æ;  æ;Õ±ü‡ |XÌ8×vh;hp!œS #   <$  <ØYRïv@                           <&  <=†?	}„WÄ,	j?}¬_aa˜X‹ww~ŽWM ¯   &<$  &<ØYRïv@                           &<  &<ªST62#ÁÚ%N±rÈ}¡E {oêYü   F<$  F<ØYRïv@                           F<"  F<„:] ‰p“W<‘ ¡=†v´‰à8`Ñ_%€`   f<$  f<ØYRïv@                           f<*  f<{°¯¼RÌ}vÁ.M {K	M…[q„! ¯ØYRïv  Œ<@                           †<   †<Þ½8W!ëXet;àp:Ey)1MR       ¯   ¦<$  ¦<ØYRïv@                           ¦<  ¦<Ú}¶Ro	p¼RÌ}vÁ.M {   Æ<$  Æ<ØYRïv@                           Æ<*  Æ<
zK?}œ%4,"?}.t¯%N‰pÿ-Lq ¯ØYRïv  ì<@                           æ<  æ<¡E*’¼RÌ}vs<‘„ ›	 #   =$  =ØYRïv@                           =   =&|¦:1R»R6xÉ+œWaz€}¯=K¤w   &=$  &=ØYRïv@                           &=   &=Š¯¯œpl?}}`9} X°^keZ€ #   F=$  F=ØYRïv@                           F=  F=Š¯¯œpl[à<‘2f9àe;       U   f=$  f=ØYRïv@                           f=   f=”Tx~ÈKÎy:w~W“%<‘ù Œs[ü   †=$  †=ØYRïv@                           †=  †=ý±¥ZýW¯ÍyR. Ú}n#`³   ¦=$  ¦=ØYRïv@                           ¦=  ¦=
zJwÔ:?}M…ëqvÏ},"   Æ=$  Æ=ØYRïv@                           Æ=   Æ=ØY:djÈEåp¥(“pÌ¦:Eåàt   æ=$  æ=ØYRïv@                           æ=  æ=,:Y K„ž 
p:©¯ìŠ #áyÕ}„! ¯   >$  >ØYRïv@                           >   >t:#%:Õ‘m[qrÇ q¡E¯Ñ4      ¤w   &>$  &>ØYRïv@                           &>  &>Õ±*D#v´‰à8ê'(8;ô& #   F>$  F>ØYRïv@                           F>"  F>4¯}Ç q¡E	¯ñZlLÿ †p%: ¯f9•``   f>$  f>ØYRïv@                           f>"  f>Õ±à…üjwüqB‰ <X?}Ð…¤`ü   †>$  †>ØYRïv@                           †>   †>„:] ‰pñZlLvr="õs: „„ ›	 #   ¦>$  ¦>ØYRïv@                           ¦>  ¦>¬qMNvb[MÃD`¶ƒ‰=K¤w   Æ>$  Æ>ØYRïv@                           Æ>*  Æ>´‰„p:\¯C^‡ ¡Z      ƒ:¯=Kˆw8;ír%X`hØYRïv  ì>@                           æ>"  æ>#ÌàÕ±*D#¡ 6}M?}9 LX ¯   ?$  ?ØYRïv@                           ?   ?Õ±*D#¡ 6}MAÉvñZlL„ K	 ¯   &?$  &?ØYRïv@                           &?*  &?Õ±*D#¡ 1}Õ}y ¿Y}V	œLw!\~ØYRïv  L?@                           F?*  F?Õ±*D#|H!ìY¥ ö&àp:Kq”`^ù äKØYRïv  l?@                           f?"  f?ô&A=½yVœ"Õ‘möqÉ+%XÌ–j 0   †?$  †?ØYRïv@                           †?"  †?½°Iœ {      Re=	v´‰à8ê'ým©Z Õ±ü   ¦?$  ¦?ØYRïv@                           ¦?  ¦?†:)a	µWIœW¡E{¯Ñ4¤w   Æ?$  Æ?ØYRïv@                           Æ?"  Æ?½°Iœ {Re=	?}¬_]aRœÇ q¡E ¯   æ?$  æ?ØYRïv@                           æ?"  æ?º‰j8ÈK;^"†s!8"*}ÈK›T} XKq”` ¯   @$  @ØYRïv@                           @*  @;¯–v 0`¥¯=w)X´X¡ 6}Mà ËdÌ} ¯ØYRïv  ,@@                           &@   &@VqMa	e;8TìYv Us ZKq”` ¯   F@$  F@ØYRïv@                                 F@"  F@€Q]:OQMUsýWÎvà`•.e	”p62õXd…   f@$  f@ØYRïv@                           f@*  f@¥¯Ödv 08;Ñ_%€	”WÈ2[± {¡=† ¯ØYRïv  Œ@@                           †@*  †@Da	µWML†ÿ ïLÔÈ2¥¯Ödv 0¡E*’`ØYRïv  ¬@@                           ¦@"  ¦@[±ÄvÅ!)X´Xêve	/6 oM”s   Æ@$  Æ@ØYRïv@                           Æ@*  Æ@€Q]:NQ b*}ÈK;^"†s!8"›T}PÁ`~~ #ØYRïv  ì@@                           æ@"  æ@#Ìà¥¯ÖdvÏ+à[<qRìY¥ ö&ü   A$  AØYRïv@                                 A*  A#Ìà;¯–vË+D#¡ 6}M?}9 LX ¯ØYRïv  ,A@                           &A*  &A#Ìà¥¯=w)X˜X¡E¯a	µWNà`Îu:`ØYRïv  LA@                           FA*  FA¥¯ÖdvÏ+à[<qRìY( ÕZ"É¥Zš, ¯ØYRïv  lA@                           fA*  fAÕ±µWT"8 éeàXp†:)µ"K„%a	 ¯ØYRïv  ŒA@                           †A*  †A¥¯ÖdvÏ+à[<qRÜÌà<‘v3!e ¯ØYRïv  ¬A@                           ¦A   ¦A[± {¡=†f( *}ÈK¡E¡ 6}M ¯   ÆA$  ÆAØYRïv@                                 ÆA  ÆAý±	2üL!e¯ 8"ìYAHŠ¡E {   æA$  æAØYRïv@                           æA"  æAX:"~~S<}M! Z#ÌàZw:sz   B$  BØYRïv@                           B   B¡EÓvËd99àê'sz ,¯à`Ö¤w   &B$  &BØYRïv@                           &B   &B ²Œ!à ËdÌ}e }à`í' Xp:ý±	`6   FB$  FBØYRïv@                           FB"  FBE~½çŸ q ²Œ!tÏK p:I~Ãv`# ¯   fB$  fBØYRïv@                           fB"  fBE~½çŸ qý±	`6,:Y 	K”W{3‡ ¥Z<™   †B$  †BØYRïv@                                 †B*  †B¡EàyH
zJwÔ:àhú&àyt: #°^*}äKØYRïv  ¬B@                           ¦B"  ¦BE~½çŸ qý±¥ZýW¯…˜å¥(œp`X|   ÆB$  ÆBØYRïv@                           ÆB   ÆB*}ÈKµWNà`í' XD"ý±	`6ZŠà   æB$  æBØYRïv@                           æB"  æB†:)œR5 Vqˆp:ý±	s6<}M!¼Z   C$  CØYRïv@                           C"  C<qR#ÌàD"q²qt´Xvsz   &C$  &CØYRïv@                           &C   &Cq²qt´X|H!›T}I%X–‰p¥Zš, ¯   FC      $  FCØYRïv@                           FC  FCý±	2üL¡ (}e;IQÎvà`KD#   fC$  fCØYRïv@                           fC"  fC<IÕ}?}½Fœ`I~Üv‰w q¯œ #   †C$  †CØYRïv@                           †C*  †CÕ±µWT"Áí&Òvq!¶RÏ+%‡ ä!e ¯ØYRïv  ¬C@                           ¦C*  ¦CÕ±µWT"8 éeàXº‰j8ÈKÖKè.¡ 1}Õ} ¯ØYRïv  ÌC@                           ÆC  ÆC<qRÑ_%€¥(¤páµ"KJ…,"   æC$  æCØYRïv@                           æC*  æCÕ±µWT"et;àp:ÞK ! æÛ™)gð_„!„t      ØYRïv  D@                           D  D‰w q½Nœà`
z”`q:È}X*}äK   &D$  &DØYRïv@                           &D"  &D†:)pK;w:¡ 6}M. Ú}rq!R`³   FD$  FDØYRïv@                           FD*  FD[± {e;NQà`,]aw" !e6 D#ØYRïv  lD@                           fD*  fDÕ±µWT"Áí&ÉvñZlL?R¡Z€Rw #ØYRïv  ŒD@                           †D*  †DÕ±µWT"Áí&Óvj]n"Àð_ÎK}<XØYRïv  ¬D@                           ¦D   ¦D†:)pK;w:¡ 6}M. Ú}tå4`³         ÆD$  ÆDØYRïv@                           ÆD  ÆD<qR»R6xÁ+¥(œp*[qffv 0   æD$  æDØYRïv@                           æD   æD/²¯œp_( UÑ_%€	œW*[qffv 0   E$  EØYRïv@                           E*  E†:)pK;w:¡ 6}M. Ú}t b`°ä_ØYRïv  ,E@                           &E"  &EØY^Ì‡ ÈßfKàê'c¢`H"ô_w: ¯   FE$  FEØYRïv@                           FE"  FEŸ.À…e;NQà`Nq"ýW	œW*[qffv 0   fE$  fEØYRïv@                           fE*  fEÞK ! æNq"ýW© ôvoMà      p:‡¯UsOy)X´XØYRïv  ŒE@                           †E"  †Eù¯ÈKáy[€	¯Õ}¥ ö&àp:ù¯ÈK‹ww~à[   ¦E$  ¦EØYRïv@                           ¦E*  ¦Es:Ø_i	eh"3Xÿ t…vc¢`H"ô_w: ¯ØYRïv  ÌE@                           ÆE*  ÆEX!è€'°/¯8	ìY(SšƒÌ^6 a%NütØYRïv  ìE@                           æE   æE‰mnL9et;àp:ßfŒ†ÕZ&s! #   F$  FØYRïv@                           F"  Fs:`L;„!E•Qp%­qRøp:y¯üL ¯   &F$  &FØYRïv@                           &F*  &F:djÈ¡O~`†      ‹ww~WKqåÔv{3ýé`ØYRïv  LF@                           FF  FFXkLe	¯p¸p2M¥ Ë}Ì} ¯   fF$  fFØYRïv@                           fF  fFNq"ýW/VÎu:ÛrõHqµW #   †F$  †FØYRïv@                           †F   †Ft…9 LX’=^ZQtƒ99"Nq"ýW ¯   ¦F$  ¦FØYRïv@                           ¦F  ¦F,:Y KÛrõHqµWR5 Vq¤   ÆF$  ÆFØYRïv@                           ÆF  ÆFJm9a’=^ZNMÕZ&s! #   æF$  æFØYRïv@                           æF  æF:djÈ1R{,]a      Ñvtƒ99,"   G$  GØYRïv@                           G"  G‹ww~ŽWMÕZ&s!M(
ìYU ½)í&`   &G$  &GØYRïv@                           &G  &GJm9a¯p¸p2MÕZ&s! #   FG$  FGØYRïv@                           FG  FGkf*xÈK…±q¤rÑXy¡_w~à[   fG$  fGØYRïv@                           fG"  fGÕZ"ÐÛrõHqµWE}–óF€ 	å”s   †G$  †GØYRïv@                           †G*  †GÕZ"ÐÛrõHqµWC`¶ÄvÁtQ„: ¯ØYRïv  ¬G@                           ¦G*  ¦GÕ±<Kµ;½        e;DQ9 LXvÕ*†%%: ¯ØYRïv  ÌG@                           ÆG"  ÆGôY^: {¥ ½%3N/	`šê'ù ÈKø€ #   æG$  æGØYRïv@                           æG   æGï°”juoY”à ËdÌ}. Ú}wh; ¯   H$  HØYRïv@                           H  Hï°”à ËdÌ}. Ú}wh; ¯   &H$  &HØYRïv@                           &H  &HV²[M I#ÌàD"¡²\~   FH$  FHØYRïv@                           FH  FH¶z@}Ú êrvV[MÓD<}M!¼Z   fH$  fHØYRïv@                           fH&  fHü__œù ÈKEy.9vù      RKq”`: h¡=† ¯   †H$  †HØYRïv@                           †H  †Hg	h[	M…³Zÿ ƒp^K" ¯   ¦H$  ¦HØYRïv@                           ¦H   ¦H‚…Çù-L£éÚ} ø€¼#²åyEQ_s€p   ÆH$  ÆHØYRïv@                           ÆH  ÆH/²¯œp>-w:¯K;w:va¼   æH$  æHØYRïv@                           æH*  æHªST62þ¯a9øp:%kfe; ¯åùWv~À+ØYRïv  I@                           I(  Iü_OœHXÛ}ïLŒ. Ú}c¢`H"ô_w:¯ˆwú&ày   &I$  &IØYRïv@                           &I   &IKq      ”`¥ JwÔ:¦:à ø€Q]:LQw!@~   FI$  FIØYRïv@                           FI  FIƒ…f9à%!d|[!tÏK    fI$  fIØYRïv@                           fI*  fI‡¯ÜS: /„!y ¿Y}PK	ài¯¥ JwÔ:¬`ØYRïv  ŒI@                           †I*  †Ii¯qMN¯´qàyH‡¯ÜSï¯X”`vÏ},"ØYRïv  ¬I@                           ¦I"  ¦I	M… ZÑ_%€¥(œp„„ ›	IœWô|O   ÆI$  ÆIØYRïv@                           ÆI*  ÆI!°öŠ 0e;MQL†U cØ_¯÷_*’	¥Zš, ¯ØYRïv  ìI@                           æI*  æI%$d      ¡àLìYU f¥s	†Wu†HqTq{T"ØYRïv*  J@                        ØYRïv@    *  2J                    ØYRïv@          *  XJ              ØYRïv@                *  ~J        ØYRïv@                      *  ¤J  ØYRïv@                        ØYR*  ÊJïv@                        ØYRïv@  *  ðJ                      ØYRïv@        *  K                ØYRïv@              *  <K          ØYRïv@                    *  bK    ØYRïv@                        ØY*  ˆKRïv@                        ØY      Rïv@*  ®K                        ØYRïv@      *  ÔK                  ØYRïv@            *  úK            ØYRïv@                  *   L      ØYRïv@                        *  FLØYRïv@                        ØYRïv*  lL@                        ØYRïv@    *  ’L                    ØYRïv@          *  ¸L              ØYRïv@                *  ÞL        ØYRïv@                      *  M  ØYRïv@                        ØYR*  *Mïv@                        ØYRïv@  *  PM                            ØYRïv@        *  vM                ØYRïv@              *  œM          ØYRïv@                    *  ÂM    ØYRïv@                        ØY*  èMRïv@                        ØYRïv@*  N                        ØYRïv@      *  4N                  ØYRïv@            *  ZN            ØYRïv@                  *  €N      ØYRïv@                        *  ¦NØYRïv@                        ØYRïv*  ÌN@                        ØYRïv@    *  òN                    ØYRïv@          *  O                    ØYRïv@                *  >O        ØYRïv@                      *  dO  ØYRïv@                        ØYR*  ŠOïv@                        ØYRïv@  *  °O                      ØYRïv@          ÖO                   ÆO  ÆOØYRïv@   P   P‰  À% ‰      ße P	~…   µ`Tµ`T  P       š!N   Â Í*  `e@    Â Í   ¯”L  »ÖK@  ¡ºy@  *  ³vL@  %hQ@  •)@  x(@  øM@  *  ‹w@  ¸’@  ;Ž@  ¥À@  ¥Îd@  *  ¥>w@  ¬u:@  Ë€@  Ë       g@  Î  @  *  ük@  và@  zn‹@  å€W@  å€‰@  *  é }@  =p:@  ?8@  d:K@  ‰À@  *  ‰8@  ‰Ä@  ‰@  ð-@  []@  *  t¸@  ¢à`@  1 @~@  !  @  „!ØY@  *  „!\}@  G"€W@  M"x@  V&À]@  ö&g'@  *  ú&VN@  a'¸.@  (8X@  (±@  (®‘@  *  (ìr@  (ð_@  d(@  ,.í@  /@  *  j/ @   5  @  |L #@  ÀQ	@  <Rk@  *  LXÈ@  æ^  @  ke  @  ke 	@  ãfBk@  *  ãfB„@  ‰m K@  Lq0 @  LqÖK@  Œs°r@  *  ¬s¸’@  þv@@  /xÐW@  
zµW@  [z·5@  *  »zµW@  9†      Š,@  µ Z@  ¶(d@  ¶ s@  *  •’ Z@      (  `e@,JÞªÀ…h C«|Sh¶*  O«|ShbU«|Sh
V« hlÁ«XhÂ¯”   
   `e@  *    … ‰ß‹  ‰A ×7  @ 	æ  ‰
ßE@   Š  
ö&g'a'¸.¬u:&a'¸.*  &   ß5 .  æ  ‰ßE .  ß5   ß¥   &  ¡ºy
a'¸.¬u:a'¸. a'¸.(é }*  L ‰vßE   ßU   ß¥   ß¥   ß5  a'¸.<Rk[]$[]&  r    Ÿ
  Ÿ
  æ—  ß•   ß•   ß5 &  æ^  æ^  »ÖK9†Š,¡ºy 9†Š,   ”   æ  ‰µ!ßE   _	      ß&  a'¸.
¬u:a'¸.»zµWÀQ	       5    °   Ÿ
  ß    Á  _	  &  „!ØY
!  !  „!ØYM"x
zµW  Æ     
  
  
  _	  ß&  „!\}ÀQ	
1 @~G"€W¢à`•’ Z  Ü     ße   ‰      &  (8X(±(8X¶(d(±æ^  *  î   ß5   ßU €  Ÿ•  ß5   ßU€   ß5  &  (®‘
a'¸.a'¸./a'¸.$a'¸.    ßU   
  Š  Š  ß  &  a'¸.a'¸.ke  /xÐWË€Î    .  
  
  
  
  
  
&  ‰m K(ð_(ìrV&À]»ÖKLqÖK*  F  
  À„À@
@  À @
@  ‰ß5   æ   Lq0 „!ØYa'¸.<Rk$ük*        l  ‰TŸ  î&‰¤_ ª—#ÿÿƒ_ ªŸ  ß‹  ³vLî¤ª"ª&?8*  ’  æ  ‰Ä… ß¥   æ  ‰Ä… ßU      ,.í
³vLå€‰³vL(ük*  ¸"‰ÔÀ*‰Ó9ß5   _ ß5€   ^×'    Àa'¸."a'¸.(?8*  Þÿÿ‡ßþÿ  æî‰UŸ  î&‰¾iŸ#  pƒ—#  ?8îî¾$?8*  ÿÿƒ_ ß    Ÿ  *‰ÓŸ  î"‰Uð*‰Ì   
?8=p:?8î$ð(  *_	$ þßU    
ì_	œC   _	œV (  $
þ¥Îdükìœ;Ž"œ*  N  ×'ì ò‡²
  "‰i†²
  *‰Ã2
  &
_	:&  ¥>w      ì•)†•)"•)(:*  t |Ž
úÖßU    2
  … æî‰W… _	     |vàük•)î(  *  šæî‰… _	  æ_	  æî‰UÎ _ |_	  î    î&|*  À  ææî‰_	  æî‰Î  Ž
Œ_	      
î  î ?8(  *  ææî‰õ_	  æî‰… _	  æî‰…   î  î  "î*  _	  æî‰àæî‰Î … _’Ÿ  î_	      
îî’$î(ãfBk"  2˜š†_’Ÿ  î²
  _	  ˜š*  ˜š†’î•)ãfB„˜ š"  P†Õßî”ß—
 –ß— —ß ß*        †
î”µ Z
 –µ Z —  n  ‰  ‰  ŽŸ
  … 2
&  d(
¶ s¶ sŽd(*  ˆ  E…               _ª_Ä_ê"‰  ä  •)ªÄ"ê(ä*  ®
ì*‰È*‰Ç&
Ž
_	$  ÊúÖ_	  æ  ì$Ê&  *  Ôî‰ßWê  … Ÿ
ì…       Ü   Þ   îêükì*  ú ß  à  á    ×7   ‰S*‰Ç ‰2‰ð  ük(ð*   TŸ•  ßÕ   ß5   ß¥   ß•   ß¥$  T[]ük[z·5[]$[]*  F   ‰P(‰…  ‰ Ý ‰X÷æ  ‰Ró  []"³vL      *  l*‰Ç×§    ×§    ß5   ß5   
‰&  
‹wx(‹wøM<Rk$ük  ’þÿ    _	    ÀßU &  t¸þÿt¸zn‹|L #t¸À*  ¤  ‰J‰«‰m‰a(‰… ×7     ük$ük*  Ê‰‹ßE   *‰Ç ‰2‰þ(‰ŸU  "‰c	ößU   ükþük$ö$  ð  *‰ÆßU   … æ  ïp h	        ükük ”  ”          ¨®²      	;  ¨®² ®*  ® ., .,
N

z

ô
ö
ø
š
  N
zôö"ø&š*  Ôú
ü
þ
 






*        úüþ  $
((  ú




–	À—  2ß—  *  
–	d:K"2&%hQ  #ß—  $€	ß—  „	ß—  l	ß—(  #Ë g
$€	%hQ„	Ë gl	*  8  Ì
ÀU€ <ßÿ”×7   ‰C²Š% ò     Ë gÌ
<”ük(ke 	*  ^* Ãœ_	  —,  —® I —®  S ò•   œj/ *  „  ‰ ÇÃœ_	  2
* ¦2Š% —,  ƒ‰  œj/   ªF!_ ß –ß ˜ßg  ˜À(  ke 	 –ke 	 ˜ke 	˜*  Ä–_	 ÂÚ_	´_	ÎúÀ–	ßößø      &  – Ú´Î–	 ö&ø*  ê‰!_ À5 À5 ‰!_ À5 À5 
  
*  ‰P!_ À5 À5 öšÀE ÿ2‰z:À  š$z&:*  6–^ À–ß5‚ –	ß5 –	?ß5 –	‰O!_   –
––	–	 –	*  \ß5šß5 àšô×'ô ×'ö ×'ø  
ššô ö(ø*  ‚ èß–	ß? ”_	š	_	r1ß–	ß  –	”š	r"–	*  ¨–	ß ”ß–	ß„ ”ß–	Ÿ
ß  –	
”–	” –	$*  Î–	ß„ ”_	š	À–ß%–	_	(ßN
  $  –	”š	––	       ($N
&‰Ä*  ô_	|ßN
  ßúŸ
ß–	ß N
ŠzŠ$  |
N
‰Äú–	"N
&z&    ßN
  ßÕ   ß5 šßU   Ä–	•&  ¥ÀN

å€Wükšük"–	*  <  •  ß‹zßÕ€   ßÂ  Á„ Š ý‡*  ‰‰8zð-‰À"‰À„ *  bÃ  À ˜‚”û‚(‰…  À ¤ ¤   ‰À
˜À"¤&¤*  ˆœ À	 À À À ²  Â"
Ò
— :"  œÀÀÀÀ²(:*  ®üƒ

…  ˜‚”… ß˜	Ö
˜	…J W (   ˜˜	˜	*  ÔŸ
˜	_	´
˜	W ) *W 0 ‡W 9 ñƒ      ß‰  ˜	
´˜	$*  úI!Ÿ
Ÿ
úð•1 ÿÿä&@2‰H	>	ŸU–	_     úH	>	"–	&d:K*   	Ÿ
ôW + Ÿ
öW - Ÿ
ø€Õ… ‰!€E  ôöø*  F	… 9  P S  V A  X  B  0   / @ *  l	. €Z €* €- € + €@$ €€, € C € R € D *  ’	€       fÀ–Å_–Â0
_	´ß'N
”5  ––0
 ´$N
&”*  ¸	Á¥( ,ßN
Í•X _•P
ß‰G!Ÿ
Ÿ
ú  N
P
$(ú*  Þ	Ÿ
N
ÃN
_	 _	R
Â
ßŸ`N
Ö†ÃP
ß'  N

N
 R
N
&P
*  
N
”Â
ÕŸ
N
öU_P
Ÿ
N
Ã‰Ï ß      ”  N
”N
P
N
(”*  *
N
Ÿ
úÅ
_˜…… Â0
_	´W ( çÕ—P
¿    N
ú˜0
´$P
*  P
  ÂÌ
— Ñ

‚Ÿ¤P
úß‰Ÿ
Âz
_	  Ì
Ñ
P
"&z
*  v
´ß‰DŸ
Á%) ßþí_	>ƒ
  ´
 þ&>*  œ
éß N
ß ‰!Ÿ
 Ÿ
úÂ Ä
  N
  ú&*  Â
_	Ò

þ… .SVCRDÌÌEðÿÔ‰0Âkÿ
  Ò

þ*  è
!2ò‡ä— kÿó‚!:‚ÂƒÂÂƒ`ê‡ÌEðÿ
  2:*  Ì`ï†å…                               *  4          ÁÑaÁe W :øƒá	œÿÿß
        :*  Z	ßþ‰!Ÿ
þŸ
ú… f
ò
î
  
þþú ò$î(*  €
  ÂÁŸ ˜X‚€”_	”Ö C J D #  LXÈ
˜”Ö*  ¦    V íßŸß
åß‰P!  Ë g"*  ÌŸ
Ÿ
úß‰O!Ÿ
ò•B ÿÿÐŸ ˜ò‚  
ú&˜*  ò—¢B ïßz	ß‰ë!Ÿ
Ÿ
úŸ ˜ß  z ú$˜*  ‰ê!Ÿ
Ÿ
úÊ•B ò•B ÿÿ¬Ÿ ˜Î‚—¢R   ú"˜*  >ÜÊß5 òdÂÁŸ ˜]‚€”ßE ò_	”  ò˜$ò(”*  dß5       òòŸ ˜O‚€¢— ê¦€¤Ÿ ˜ûƒ  
ò˜&˜*  Š‚B‚Â
îßî6îòÕ€ ÿÿÒÕ€ Ÿ ˜  îîî(˜*  °0‚Ê§îøßE ò€’_	”ß5 ò‚
Ÿ ˜‚  îò”ò&˜*  Öðß5 ò¹ îá   ³ß‰O!Ÿ
Ÿ
  
òîd:K&*  üúò•B ÿÿå‰I ‰L!Ÿ
úß5 òFßî?Â  úúò$î*  "Á,€’ *  Z _	”€‚
ôð‚
Ÿ   ,”€$ð*  H˜-‚Ÿ¢ðùÁ€’ßE ò_	”šß5 òìŸ   ˜
ðò”š$ò*  n˜‚€” *  Z öß
‰M!Ÿ

Ÿ
      úò•  ˜
"
&ú*  ”B ÿÿé‰I ‰N!Ÿ
úÁ:Âßÿÿìßî  ú:"ì&î*  º
ìÃN
ßÃƒàÃ
€”_	”ÎŸ
ì÷  ì
N
 ”"Î&ì*  àß—ì  ßN
  Â—¢V —¢P ß
N
‚
Ÿ ˜"  ì¥ÀN
‰Ä"N
(˜*  ôƒÂÁB€”_	”Ÿ
  Ÿ ˜÷ƒ…… Âú   B”LXÈ˜(ú*  ,
x
t
v_	´Á¥S ß zß
x_	´W   x
tv´z"x&´*  RP ß vÂúß
xBW 9 ?W P ßv  vúx&v*  xßÿÿvß
x3ß
x_ P
.ß¥V P
)W V 
        vxxP
P
*  žßü ‰Z!Ÿ
üŸ
úß
xßvß v  üüúxv&v*  Ä ˜ƒ×§P
P ß	‰P!Ÿ
Ÿ
úà•9 Ð‹  ˜P
"ú*  êßgvt_P
_	´¶ß—t  ßgxN
×'N
 
ß(  vtP
´t¥ÀxN
"N
*   N
ß‰\Ÿ
À—  Áïÿ @  ï  N

¥À&¥À*  6Á  @  ç
ÀÀ'N
ÂçN
  ¥À N
(N
*  \ÂgN
BàÀ€`  Ñ…         Â’_	  N
¥À&’*  ‚´W B ùð•  ÿÿõ… fDßE òÄ
 ü!
  ´ò*  ¨ !       ßU ò! ! ßU ò
  ò&ò*  ÎßU ò! Ÿ
zÄ€EÕ… ÿÿ      
  òz*  ô                                       $+-Z*9P0B,.VCRD/    ,  ,
 B0,.$+-PV/ 
   :  : ¤«­Z*9 ¤Z*9«­       „N   ÂèÆ*  `e€    ÂèÆ   ¯”L  Jg'@  d„!@  *  p!@  ¡ºy@  ³vL@  ¬u:@  Î  @  *  ØB~@  ük@  å€‰@  !  @  a'¸.@  *  (8X@  (ëy@  (±@  (®‘@  Y/€p@  *  ÞK"!@  |L #@  |LØY@  <Rk@  ;^±@  *  æ^  @  ãfîƒ@  Lq0 @  Œs°r@  ¬s¸’@        *  þv@@  /xÐW@  6x¢@  y€W@  
zµW@  *  9†Š,@  i†(K@  Š }@  ,Š  @  Œ8^@  *  ³0 @  ´ÀX@  µ Z@  ¶(d@  ¹ðK@  *      (  `e€,j©ÔhR©8YhfF©.hv*  d©y:h cª }hŒ•«ðhÐÑ«€Wh¦¯”   
   `e€         ß    ‰  À2 Á  ‰    &  
(ëy(8X¶(d(8X¶(dæ^  *  4     Ñ  ~_	  …   €     @      
   (®‘(±
(±Y/€p*  Z 	                   	 *  € 
                   *  ¦      ! ÿ           0 @ P `       p (  Ì                         *       X                               *  4                                         Z                                 0   v*  v‰

‰ß• Ÿ   0‰ð N"‰“&    ð "$N*  œT*‰Ç*‰À_	òÈ_	òæ_	J"‰¨Þ_	"  TòÈòæ J&Þ$  ÂòÎ_	._	òà_	J_	òÚ_	ò*  òÎ
.òàJòÚ"ò*  âÔ_	.—¬$ . ß_	òìß4ß  0Ÿ
0ß(  Ô.òì      4 !  "0&0"    2ß‹  ßÕ ,ÁN_	  ð _	(  Î  2
ØB~,N
zµWð $  &  ß5   ßU   ß  (‰.‰*  d„!
<Rk<Rk;^±*  FH‰,‰ý‰7 û‰o!ø  Ž                 H  l     ò*  ò          ‰
Z
‰`b\Ÿ  ^  Z` b"\(^  _	  bvæ  ßj  _	  b*  |L #b
vp!jp!Œ8^b*  0tŸ  À—  €
2‰òj€  
×§   ×·   tp!9†Š,òj"¡ºy*  Vf Ÿ
Z_	zbÕ‰æ  ‰î ÖE÷‰        fZzb¬u:*  |A×§   ×§   ß
   ×§   
ß   9†Š,9†Š,,Š   9†Š,*  ¢  _	  À  D @ Bœ  
×§   Ã—     ,Š  Š },Š   ¡ºy(/xÐW*  ÈÃEÿÃ×§   Ã
 C``Ã
&
Î’—£{ Î•  9†Š,*  î0 Îå ‹•
Áe 1
  1
 1
 ñ @ ×§    (¡ºy*   "ñ   ×§   ñ  ×§   ñ P   9†Š,9†Š,*  :×§   	ñ ` ×§   ‰D ± ñ 1P   9†Š,9†Š,*  `×§   ×§   ×§   &
6‘ Ž±U €
  9†Š,9†Š,9†Š,*  †€Àe 1  Ÿ
  _ _¢‰       _®_	        |LØY ¢¹ðK" &®*  ¬ô  ‰; @                              ô&  Ò                                     ¸  ¸<    ¼  ¼0}   Õ  Õx   ê  ê 	§   ô*  ô‰A
¸
‰¸¹²Â¸ò•<   ò^ ò•0    
¸¸¹²¸ ^*  ò^ ßÕ€ Ír  òE ð ×§   ×§     ^Í¡ºy&9†Š,*  @òE€ÿ ò•  ò 2 ò•	 4 ò  8 ò•     |LØY*  fò•  ßZßÕ@ Íf ÎEÿÎ% @ò•  
  ZÍ*  Œrœ  Î%  Î% ò•  
Î% Pò•    ²ò•  Ö‰
            È  ÈH N ª J X x J X p J *  H N ª 
J X x J X p J   ÜX t L d ’ L f ” H j *  X t L 
d ’ L f ” H j *  ð¬ ‰@
Â
Ä
ÆßÅ` Â_ÐÂßÅ   ¬ ÂÄÆ Â$Â*  ÂŸÐÂßÃß^Æ_	:¾‰‰_	:´‰  ‰&  ÂÂÃ^Æ:¾ :"´*  <A_N_8Ÿ8‰    8ß6ßŸ
(  N88³0 86$&*  b6‰ß5@   	*‰0"‰†ßU@   … ‰a… ‰  6ük†ük*  ˆb… ß5€   ßU€   *‰Í… ‰a… ‰ß50     ü      kük(ük*  ®"‰q¾ßU   *‰ÍßU    ‰‰a‰‰ß  
¾ükük*  Ô  ×§   ‰9 _ \ß   _	  *ð§   (  ¬s¸’
å€‰\Jg' ãfîƒ"*&å€‰*  ú,   ðµ  ðµ€  ðµ  ß    
Lq0 (y€W*     ßU    ‰‰—ü‰cù‰Ê
  ô‰Ëñ  æ^  
a'¸. Lq0 (  F‰Ìî‰Íë‰æ  ‰˜!ß   _	  h‰  ³vLJg'"ãfîƒ$h       >N   ÂPÍ*  `eÀ    ÂPÍ   ¯”L  "øf@  d„!@  *  ìÐ@  ²€»@  ¯ d@  !  @  „!³@  *  „!±@  ª%øf@  y&ÖK@  ê&@  ê&±@        *  ô&@  ô&µW@  ú&VN@  e'€W@  e'[@  *  d(@  ~(v:@  9 }@  19@  <9µW@  *  ü9øf@  ý9Óž@  %:€W@  š:øf@  ;@  *  J;À@  ð<  @  =  @  6=  @  h=  @  *  =  @  >  @  0>  @  X>  @  vL„!@  *  vL 5@  vL±@  |LØY@  éL„!@  æ^  @  *  ãfBk@  ãfB„@  ¼pœ@  trœ@  s/S@  *  Œs°r@  ñvâG@  ôvƒ…@  úvb	@  üv•@  *  üvœ@  þv@@  5x/…@  ‘y@  ‘yg'@  *  ‘yø8@  ´ÀX@  µ Z@  ¶ s@  ¹ðK@  *  Â	@  Ç-q@  ‹¯=@  ‹¯@=@      (  *  `eÀ,:C©Kqh  ´©ö&h       ´©$Th Ã©ö&h 
  ¯”   
   `eÀ       _ à  _ ¢   _   _ N	       à¢ N	 v *  v         G8ô@¬nÎŽÐ“„–y	L  8¬ÎÐ $–(L&  œ       ‰
‰      „   0‰   _	*  ²€»ê&±%:€W9 } <9µW  "*  ¾   † 
W¬   ú1
B D „_  Ä   9 } $‘yg'*  ä     ò¥. $ òµ  Ÿ    ‰2‰€ (‰  ‘yø8ê&± $€ &*  
^	îæ ‰,_	†‰* _	†(‰_	¤.‰0  
 ††$¤(0*  0‰_	šø_	 *‰Å&‰‚"Ÿ  Ÿ  Ÿ  Ÿ         š‚>  "0>  &X>  &  V  "‰Ô”&‰‚Ÿ  Ÿ  "‰³ž
  
&  6=  
”‚>  X>  ž"X>  *  x  ßU & ‰&_	bÖ‰'ù
  
  ç   6=  
9 }& b"0>  &6=  *  ž*‰Ä
  
  … "‰Ž¼*‰Ç_	b… "‰³È*‰  
>  0>  ¼b&È*  ÄÀ÷‰$ô_	 "‰Žà*‰Ç"‰³ *‰À  à$ *  ê"‰Ðò	"‰ ßU & ‰%… ‰"‰}  ò 9 }& &*  ‰¦"‰e‰¦!*‰Çß æ ‰a!¦    9 }   *  6_	¦
‡ ß•	  Á$ À— _	†‰U Ö"  ¦
9       } 9 } $  *  \_	~ †‰U _	bÖ ß•  ‰¦    ~b9 } "9 } *  ‚_	  T V Æ¦  _	  T V ÆÀL Ð P*  ãfBkT 
V ÆãfB„T V Æ L *  ¨À  ‰  ‰  L L  €
  ¡ … ÖÅe ± &  d(¶ s¶ sL L  d(*  Î… _	 *‰Å&‰Ÿ  Ÿ  "‰Ô&‰  =  h=  "&*  ôŸ  ßU & *‰Ä… ‰(_	b… Ö‰)ù
    =  9 }& b(h=     ñ_3: æ ‰a!_C& _U: …   "  9 }:  9 }& 9 }:  L*  L‰*‰Ç0‰64\‰‰8      _	bú             64\b*  r  
 ÿÿÿÿÿÿÿÿ       a ² H   ‰*  ˜ÄvÌÿÿ
h
‰hjt*‰ÇÄ  _	  vhhjt(*  ¾*‰rò¥. $ %òµ  ! ‰2‰€ ÞÖ Ö
  € Þ*  ä(‰*‰r*‰Â ‰2‰ˆ(‰„! *‰Â_	  ˆ(*  
Û‰r _	bßU @ ßv	ß'vxæ ‰  b9 }@ vv x& *  0Á ×7&  „æ ‰‘!5×7&  æ ‰a!,  9 }&  9 }& " "  VßU & Ÿ
  ßE   Ä  4 Äe $  9 }& ìÐìÐìÐ9 }4   t 
 ß   
       ß(  vL„! vL„! ê&±vL„! vL„!   †  Ÿ
  ß   _	  (   vL„! 
!  !  vL„! d„!  ˜      _	  fp  ße (  vL„!vL 5vL±¯ dfpìÐ*  ¬  ‰‰
h
‰hjtß< †
_	ßhjß(  ìÐhhjt† $h&j*  Ò †Ä _	ßlnß		pß		rŸ
  ßE    †lnp r$ìÐ&  ø  ß  4 ßU @ Ë&&&‰:Ÿ†‰&  ìÐìÐ
9 }4 9 }@ : †     ~~ ô•	 pŸ
  À  Äô†(  ¹ðK~~
 p|LØY|LØY†*  6v_	      Ž ‡ô• pÄ4h‰ž!!  *‰  v
Žph*  \r€… & ‰2‰€ rÖ€… ò¥. $ úòµ  ö
  € r*  ‚(‰ïò¥. $ 	òµ  (‰ö‰+ … (‰… ×7: 
  (9 }: *  ¨ æ  ‰-ß ×7&  æ  ‰¢×7  
J;À9 } 9 }& "J;À*  Î&  ß4 _	°… &À  Àç  ß  ßU (  9 }& 9 }4 °æ^  =  "ð<  (  ô@ 
À'  	ßU & ßE @ †  €… ‰ß&  9 }@ 
ð<  9 }& 9 }@ ð<  &    ß  ß  .ß  ß    _	Ž‰*  <9µW
ê&±ð<  =  ð<  =  "Ž  :        Ÿ
  ß        &  µ Zê&±9 }
e'[ô&=  "  J  ßg    Ÿ
  
  ‰æ  ‰. øß'&  ìÐð<  
ìÐìÐê&±J;À*  h    âæ  ‰/ Ýæ  ‰0 Õæ  ‰1 ä   =  ð<  J;ÀJ;À"J;À*  Ž‰Å& À— €Àåýÿ€‰ œD	 ÀLH	B…
"  9 }& 9 } D	9 } $H	*  ´C•—0 IÀ ÂG_0 À, —0 Àe @#  9 }0 9 }, *  Ú—0 p  ‡Mæ  ‰' qÀ, Àe   >  J;À$9 }, *   ö‡—0 Àe ð‡À'0 0 —0 p  å‡ä  9 }0 9 }0 $>  *  &_0 À0   †À Àe ÀE 
      `Ã
ýŸ0   9 }0 
9 }0 (9 }0 *  LFÀ —0 Àe Àg, —0 p  ‡@  9 }, ">  *  rÁ  ÂÀe @ æ  ‰öŸŠ2 Áå   X>  J;À$9 }2 *  ˜ûæ  ‰÷æ  ‰' @ÂÀe ŸŠ2 Àå  
J;ÀJ;À&9 }2 *  ¾ ûÀ2 p _* 
B`Ã
ýŸ0 ß  À  &  
9 }2 9 }* 9 }0 "‘yg'(‘yø8"  ä   æ ‰Š!ß   Ÿ
 ,  &  9 } ‘yø89 } 9 }  ¼pœ  , ð,   Ã  Ãe  Á$  9 }, 
9 }, ¼pœ5x/…ú&VN*  " 9Á ×7&  Á
ß& Á  ,
À—) ÀE*  9       }" 9 }& 9 }& 9 }  &9 }) *  < ÿ@`ße   À
ûß  . Ÿ`  †æ ‰¥!Ÿ
  *  "øfš:øf9 }. š:øf 9 } (š:øf*  bßE   ×7&  :À—3 Š3 ÀE ÿße0   À
ûŸ
&  š:øf9 }& 9 }3 9 }3 "ü9øf*  ˆ  ,À  
È$/Ð„
ù   æ ‰Š!  s/S
üvœüv•$9 } "  ®FPˆô  ô—)   ×7&  „´Š  ×7$  ôvƒ…9 }) úvb	9 }& úvb	  Ì&  	´Š  ô—3   Š3 Ÿ
&  9 }& úvb	9 }3 ñvâG9 }3 &  â  Ÿ
  ×  'æ ‰Š!"ˆ ˆ  Â—$  s/S5x/…ú&VN 9 } "ôvƒ…$  	) ×7      &  „‚Šß& ‚Š­  †´  ×7&  9 }) 9 }& 9 }& úvb	 úvb	  $	&  	­  3 †ô—3   Š&  9 }& ñvâG9 }3 9 }3 ñvâG  :	3 ß$ _ 
ÿ  9 }3 9 }$  H	*  H	ê
àc‰ß  ßP   À0 p  _  À  p  5x/…ª%øf5x/…"19&  n	  _  ß  4À  
v .ße v ß  (  5x/…;~(v:üvœv  v $š:øf&  	z b  †æ  ‰¥!Ÿ
  ßE   | _	  (  z š:øfJ;Àš:øfš:øf | $¯ d*  ²	x ~ v Bœ  ÂE ÿße   Â
ûBœ  ÂE ÿße0    x ~ v úvb	"øfñvâG*  Ø	  Â
û
      ÏÅ  ]ÁÑ  @˜	Š_	Z†   ü9øfê&y&ÖK &Z*  þ	‰` ñ‹ ß
  1Š _	êf ‰t @B ‚  ê&ê*  $
7†—  f ‰Š!Âƒ  ße   ßE     trœ"ìÐ(ìÐ*  J
Ã  ò  Ÿl    Ÿ
  ñ _	êB< @B _	$  ìÐ
trœ¼pœìÐìÐê*  p
_	†‰` W¬  ñ` _	ê ññ  
 ê*  –
. _	êÅ
«_ —¬  ± €  ( ù
  
ê*  ¼
 €
€Àe  
" _	ò
ßÕ@  ‰    $    " ò
  $¹ðK& ( *  â
 Ÿ
  À  (‰¡ … Ÿ ú

‰  $  …                |LØY|LØYú
$   *  ýþÿ 
Á @˜ 	Š_	    H    Á&&  µ Z µ Z Â	µ Z H(&*  .@’`€A’@`` Á&¡ 
± À(… &  µ Z &$(*  T_		&ß ß _	‡ÄT¬ ý÷&  µ Z µ Z  *  zß ß ¡ „… _˜_–
‰    A… &  µ Z µ Z ˜–$*   &fÅ  À  _	R‡&f@’@`Á  ’$  
ê&y&ÖKR"ô&µW*  Æ–%Å
± 
_	Zî€_	Œ  ¡ …„…   ZŒ„!³*  ì  _þŸ_	              … „ƒ‚€…… &  „!±þÇ-qµ Z„!±*   ( À( ‰œ!_	VÀðæ ß	  ‡  V æ&‹¯=*  8È• ð” ß	  ¼  ±  … _\
‰    
”‹¯@=$\*  ^æ…             d  f  h    ædf$h*  „j  l  n  SH €    CL @  pAL     j
ln"p*  ª|CO    vCH   ‚DW     MI     WI   |v‚  Ð  ˆLO€     DQ@   Ž  
  ˆŽ       üN   ÂpÁ*  `e     ÂpÁ   ¯”L  d„!@  Î  @  *  !  @  „!XÀ@  ÞK.!@        ãfîj@  ,qÖ¯H  *  ,q²H ,q}²H Œs°r@  þv@@  ´ÀX@  *  µ Z@  Ï,q@      (  `e ,r•«µWh  
  ¯”   
   `e   *    ‰Ÿ  þ0‰@N"‰ŠX_	  b_	ž@ (  
þ@NXãfîjb"ž$@(  &    : 
‰  Hßþß  (   
: H þ"&Î  *  J 

ß•B )ßÕ  Š!ðµ  ßÕ   ) !*  p !"‰¨î _	  l_	ž@   
(  !
î ãfîjlž@"(
*  – ß' lß'm‡æÎgæÎg
–%hƒŠ"         "
*  ¼ ŠŠ ßÕ  ßÕ  ß• (ß• æ"    ($(   â ÎçÎg
Ÿ&Ÿ
  ß  "_	  (  

&!  !  "d„!(  þ ßµ !Ànð    ð ‰  nj*  !n„!XÀ"Ï,q$n&j*  "lò¥. $ 4(‰.‰>×'  B _  ‰
  ,‰õ  l>ÞK.! $ÞK.!*  H0    æþ‰ôæþ‰ ïæþ‰"êæ  þþ þ*  nþ‰&åæþ‰$àæþ‰%Ûæþ‰zÖ  þþþ"þ*  ”æþ‰YÈ¬  ¬  ¬ B ,         þ*  º  ‡ðµ  ðµ  Õ… E… æþ‰ù  „!XÀ"þ*  àæþ‰ôæþ‰ïæþ‰ê          þþþ               j  j          È
N   Â¨À*  ae@    Â¨À   ¯”L  d„!@  ìÐ@  *  äH¼@  !  @  ú&VN@  d(@  d( @  *  Œs°r@  þv@@  hÞ™@  ´ÀX@  µ Z@  *  ¶à8@  ¶ s@  ¹ @  Ç«¿s@      (    ae@,¢H«hÎh ¯”   
   ae@  (        ‰_	 _	0_	ž‰‰ß  kß  
$   0žd("¶ s $¶ s   $  
  
  ‰  ò     À4       b$  ¶ s äH¼d( ¶ sò 4 *  >  ¬  Ÿ
  ðT 
‰  ".À"Á1$  ¶ s d( T ".""&*  d   1  Ÿ
  ßE   ñ   ße   Ÿ
  ñ   ìÐìÐìÐ"ìÐ&!  *  Š    
 ‰   Â Ÿ JŸœ VßV*  !  ¶à8  J$V(V$  ° Ÿ¼ ße ¼ 
‰  4V_	  JL_	(  ¼ ¼ 4Vd„!JL"*  Ð ô ÄÄô  ôL  ‰  ¾ÄÀŸ
  ž‰‰&  ô ÄLµ Z¾ÄÀ"äH¼*  ö „                                     *                                                B             0                   J  J                           ¾
  ¾                  .*  . ‰À ÀE   Â  ‰  f    ÁHße   
   hÞ™´ÀXf$H*  T Ÿ
 PP ðƒ‰M Èÿÿ‰    ß ß  ´ÀX   ´ÀX$ *  z  Šß Œ_	        ‰          ‰    Š
 ŒÇ«¿s*   ß >ß ”
–Â  ß–_ š
˜ß—   ”–  –"š&˜   Æ›˜Ÿ
˜‰  ˜Ø  ß—      Ö›‰  *  ›˜
˜¹ ˜ØÖ›¹ *  âšœÀ²ÿ_	N
–ß'” ß–ÙÒÒ  šœN–”  –*  Ÿ
”r,    Ðr,  ÌŸ
–é‰          
  ”–*  .                                ‰<  (<*  TÃ0Ä$
Hß<_ nÀ<_	t >"  0
$H<n< t&>*  z @ B D_Fß@LßLJßJY&  @BDF@L L"J&J*   ÀJ_	t LóJ  óJ 3  3    J
tLJJ*  Æ3  s
 ô<  ô< ô> ôB ôD        <<>"B(D*  ì ôF
 ß',8ß*&ß&_	¶ßH)"  F,8*&&"¶&H*  Àß'&*
À&_	t * ,ß62ß"  &
*&t* ,$6&2*  82¬À2_	t 6 8ÑßHæ„  2
2t68 H*  ^Ÿ
H•ß@<_ T‰    ¦æ&p‰  p   H@<T"p&µ Z(p*  „rÀr
¬  
‡¬  ‚ðµ@  Á „
  rr*  ªƒ‚…      ‰ß.!æ(‰sÀ$_	t  .("$&t*  Ð °ßÅ@ °À$ÀEÿ ÁE ÿÁe P_²‰    °°      $$²(µ Z(  ö²°´
.‰&
 œ  œ  *  ²°´.µ Z µ Z "µ Z *   _	†  ‰  ^    ß*¾Ä(­  í    †µ Z^*¾(*  @F_	b  ÀÂR
‰  ÄÂÕ„… Eü&@  FbÀÂRÄÂ*  f&
œ  €cŽ½  
’½c  NÎ€… _Ž_	  &Ž  Œb  œžßgœ …         bœ
žœµ Z        BN   ÂèÆ*  ae€    ÂèÆ   ¯”L  "øf@  O¹’@  *  ìÐ@  ¥ X@  ¯ d@  ì&@  ú&VN@  *  d(@  d( @  19@  ü9øf@  ý9Óž@        *  š:øf@  ;@  cM„!@  gM,F@  s/S@  *  Œs°r@  þv@@  [z·5@  µz‰‹@  ´ s@  *  µ Z@  ¶à8@  ¶ s@  *–øf@      (    ae€,þH«Îh  ¯”   
   ae€  *    ‰_	<‰                                <*  &                                         L                      0   *   *      /   /    "   "     Z   Z                          Ì 
  Ì          ,  ,                 :   : ‰ß  rß  M‰  ß  
$  
d(d( ´ s      ¶ s ¶ s "  V 
h 
0
>‰  ä    Àjb$  ¶ s h 0>¶ säj*  t „d ßd 
‰   d ,  _	`	  *  ¶ s „d d  d $`	& ( *  šÀ
À  Âz	f_	êÙ¾_l _	†    
 fê¾"l &†*  Àn p Ê
‰  r p Ár À  Âz	JÀ_	"  n p 
Êr p r  $J$  æß6ß  ßg6  ße   ßE   À&  6ý9Óž6ý9Óžý9Óž ý9Óž*    p  _  ße8   ß
6ú‰    ‰    ß5 *  s/Sý9Óžý9Óž*–øf6¶ s$¶à8  ,  
  
        
  
  
  
&  [z·5
š:øf19;ü9øf"øf  F  ‰bb
¼
dÊ\(  ý9Óžb
b
¼
dÊ\  Z‰J bb~ˆ’œ*  
bb~ˆ’œ*  r¦°ºÄÎÎ& ‰j … & ‰ý … & ‰  ¦°º
ÄÎÎ*  ˜þ … & ‰ÿ … & ‰"… & ‰	"… & "  ¾‰
"… & ‰ø!… & ‰ø!…        ò  ò               `	*  `	¦æ&_òf€ 6Š  Ÿ 
ô
ö‰  ò¶à8 ¶à8 "ô&ö(  †	  
    ßŠ	œ	ßŠ	 	
‰  Ø  
ø_	  *  ¶à8      
Š	œ	Š	 	Ø"ø&gM,F*  ª	ÜÚôúøÀ"ßôßøöÁôÁ1þŸ
*  ÜÚô
úøôøö ô&þ   Ð	ôŸØßgØ ß'ôòÐ‡ß ü_	&  ôØØ¶à8 ôò ü*  ì	  þòüöúÁ  „ƒ‚…  ¦& W¬  "  cM„!þò
üöúµz‰‹*  
‰ !)W¬  W¬  ‰!W¬ 	 *  8
‰!ñ‹ ‰!_ f _	Ä_	â_	r
  f Ä"â&r
*  ^
‰>Ö‚… _	êû
 œ  œ Ÿ   êµ Z  µ Z (µ Z *  „
‰  Ž
    ðŒ
 BŸ ¸
°,  ‰    µ Z      Ž
Œ
¸
(µ Z*  ª
¸
º
Âº
ñÕ…     & W¬  ‰!!W¬  ¸
º

º
*  Ð
  ‰!W,  ‰!_ f _	Ä_	
  "f &Ä*  ö
âß  ‰-_,   ù‡Ö… _	ê… & W¬  âO¹’O¹’ ê*    ‰!W¬  ‰!W, 	 †‰	!*  BW, ( ù‚_ f _	Ä_	âÖ… _	ê… &   f Äâ"ê*  hW¬  ‰
!'W¬  W¬  ‰!W¬*  Ž  ‰k ñ‹ ‰÷ ñµ  ‰ø _*  ´ f _	Ä_	âÖ… _	ê… & W¬  ‰"  f 
Äâê*  Ú;ñ‹ úñ¥  ö_	&XÄÒ ñµ  	ôµ         &XÒ *    ‰dæ_ 0f Nl ´% 
ƒ& m ±%  0*  & ƒ‰"ñÕ€  t " ‰  Ì Ò Î ‰  l   µ ZÌ  Ò "Î &µ Z(l *  Lr n Ö_	ê… ‰ Š& _	&ÄÒ ð'h "  r n ê& $Ò (h *  r 	 h 
j t,  'ñµ€  ‰";_
  h j *  ˜ ,ß,‰!"2‰  ,.Â.2-  òµ  ,
,µ Z,..*  ¾€  Ž ‰#"Ÿ ,ãŸ
j ñj ( ñÕ   ,j "j *  ä ß‹ñÕ  ñÕ  1 * ‰  l r n   "µ Z$l &r (n   
Ö_	ê… ‰‚   
  ê *        ŸŠ¡¦& ð'0 ß0_	 0
  00 &0*  >2
‰8::W¬  ‰ù!_ñµ  ‰ú!X  28
::*  dñµ  ‰<!Qñ%­  ‰:!J_	r
‰û!  "r
*  ŠDD „ì Ã:ó 3!  ‰8 5Ãe ó  :*  ° õÃ:, 	 ×'2­ ‰â!#Ÿ
2Ã2  
:2$2(2*  Ö×p Ãe:,  ßÕ =óÕ  ól  3  
:=$l *  ü  sœ  ñ'   _   Ö_	ê‚… &f¦  ý9Óžý9Óžê"  "Á:ñ u
 ß—0 À—1 ‰&  :µ Z 0µ Z 1µ Z *  @  H          ÀDð5 & aŸ
  ßE   ð    ð—"  µ ZHDìÐ ìÐ$ìÐ*  f23 °Š3 pœ D ð§63 †œ3 6ßDŒ_	†  266"D$Œ(†*  Œ  "$ßDž‰  F  "
4á _´Ñ_	(  "$Džµ ZF"4$´*  ²        ße   _ ‰   À ðÕ   *  ¯ d
ìÐìÐµ Z " $  Øð4 ß è_	†  "$ß ú‰  (  4 è†"$ ú"µ Z*  ø  "Áe Ÿ
4ß'24Ì€_	  
8‚€…    "424¥ X 8*          &
 œ  œ  D_	      ª"  µ Z µ Z µ Z $D(ª*  D  ‰  ‚    ßNÌ ÄL­  íj_	†   µ Z
‚NÌ L$j(†*  j  Î Ð v
‰  Ò Ð Õ„… Eü&@&
œ    Î Ð vÒ Ð *  €cŽ½  
’½c  NÎ€… _²_	†  À   ²$†(À(  ¶ÂßgÀ …     ße   _ b ßU€ b ‰  &  ÂÀ
µ Z µz‰‹b "b &µ Z"  Ú  b ` … ßf Z ßÿÿZ ‰  Z \ *  µz‰‹b ` f Z Z ´ sZ  \ 
  ø^ …     ^        öN   ÂÇ*  ce@    ÂÇ   ¯”L  4@  @  *  ØµW@  ²2CM@        vL@@  leCT@  le€W@  *  äf™w@  Œs°r@  þv@@  hÞ™@  ± N@  *  Àà8@  À Z@  À s@  À €@  Ã €@  *  :©@  R«""@      (  ¥èÚ,–yit!h”  H«9|h  ¯”   
   ¥èÚ  *    _	  _	0 _	Ô _	Ž _	r_	" _	
  … ‰  &  
0 Ô Ž r" "²2CM  &   ‰    … ‰ß  hß  
(  À s
Àà8hÞ™hÀ Z À Z *  @  ÀfÁhÁå ‰  Œ      ‡‰ Ÿ
jÂ   À Z fhÀ ZŒ &j*  f T l 
 °
üÿ
 &
Žœ  Ÿe á  T l&À Z *  Œ ‰‰Àf l      Àe ñ 	1,    ó& 
  
fl*  ² ‰š!ïp,    êp,  æ& ‰3"â‰_	à   (à *  Ø jÞ …  _N_  p_nŸn‰_	ðNZ×'&  jÞ Npnn"ð$N&Z(  þ N uƒßNHŸHŸ
H_	ðHTßNJß*  NNHHHðHT"N$J(  "ZV×'H 
ƒß
HßçpT_	 T\_	 *  ZV
HHpT T \& &  FV\_	 fVß
JßçpV×'J _	 *  V\
 fVJpVJ$ $  h\f@ßTRßHFßRPßFDß*  \fTRHFRPF D(        ˆF_	ðFRß'FJ‡ß'FJß'FJ‚ß*  Fð
FRFJFJ F"J   ¬FLŸ
L_	ðLX_	RXÐŸ
*  FL
LðLXRXÐ"  ÈFßgpR_	\Rä_	 RPË_	*  Fp
R\Rä RP*  æ \Pœ‰CÃ
ßppÃgfÝ… ÂnCDÔÂ
   \Ppf n*  ý… ÂnCDÔ$Â
üE… ý†Õ… ÂnCD
  
n$n*  2Ô$Â
üÕ… ýƒE…                     
  X    ^
  ^ f(  f”          ‰ß  
 ß  ‰  ×'*  ”À s À s À s       4$± N*  Š   €_ ž‰  ž    Ÿ
âßšª
‰  ¨Ü*  äf™wžÀ sžâš ª&¨(Ü&  °&
Î—¨Ÿe _	ò¨è
äßªææß*  ¨À s ò¨èäªæ"æ*  Òèß   Y‰  èœÀœ ä æßµ&  èR«""À Zèœœ ä&æ*  ø ©
ä æßµ ©ß'àæƒæª‰  ©äæ©à æ&ª*  ;ßæàßµ ©1ð æª‰¼!_ &   æ
à©ª$*  D Ÿ
ððð Îðßœf  Þ‰  è  Þ(  ðððœfÞ"À Z$è(Þ&  j ê       ìßªî‰  ê¦œŸäß(  êìªî± Nê¦œ"ä   Œªæ‰  â¦œ_ ”ßð  ‰ *  ªæ
À €â¦œ”ð4   Ü*  Ü4      €              ‰@
ße 

   
&
*   l_	p  lfßfK_	 
hðµ  _	  l
plff h*  (üßhCß'fhDßhßfjñ ,_	ü"  ühfhhfj(ü*  Nßh1‰  h*Â*ò 2ò 4
n_	  hÀ Zh**$n*  t ñ 1ñ'h ßn/Ÿ
nßfj_ f   hnn f"j      (f*  šëßn(Ýj‰
‰& ‰4"ù& ‰5"ô
  nj*  À& ‰6"ï& ‰7"ê& ‰8"å& ‰9"*  æà& ‰:"Û& ‰›!Ö l&
œ Î`  l*  Îe Ÿ_	p  lh… ‰  f*
‰  6dÁ(  
plhÀ Zf*$6&d  26… 
  6 d*  d.           ‰_ß    
Ar  ÀG  €
  le€W "le€W&leCT"  Š_
ß
ß—	Ÿ
‰  (  


	Àà8 $  ¨¬  ß—ª	‰  ªßìÿþ‰  þ*  ¬
ª	Àà8ªþ À Z"þ*  ÈªÀªÀe       Á_	  ß
 	ßg
 
Á
$  ªªØµW  "
(
*  îr  Í
þÝþ‰              ‰‰  ß  le€Wþþ&Ã €    
 ÀfÁhÁå ‰  (  À € À € 
À € fhÀ €*  ,P    ße   ‡‰ Â.Ÿ
’ì‰  PÀ € .$’*  R    _	à ’ßfzÁ’Wp W U _Ž‰$  À €
à ’fz’&Ž"  x    Žßeª zÁåU ð‰U        Ã €Ž
z       LN   Âà*  ce€    Âà   ¯”L  	ò@  	@`@  *  ìÐ@  @  ¤ò@  ¤      @`@  ¥ X@  *  ¯ d@  è!@  	#X@  ú&VN@  ²2CM@  *  vL@@  {L€@  ;M@  ;Mú&@  ;M;K@  *  xQXz@  :d@  Œs°r@  þv@@  [zœ5@  *  Õ}?f@  =†ò@  =†@`@  H†"@  ´ N@  *  ´ÀX@  µ Z@  ¼{:@  Ä N@  :©@  *  :©Ï_@  [©(}@  Í«@      (  ce€,œ  H«:|h  ¯”   
   ce€      _	  _	~
  …     
~²2CM œ (  œ Œ                                  Æ *  Æ                         ì 
€   ö *  ö                                             *                                        *  B      P  V„Ö,                   V„Ö*  h                    DATA MAPP LEVEL   *  Ž          NAME                SOURCE D*  ´DIV   DIR   USAGE CLASS OCC LENGTH:   *  Ú                                     L   INE  LOCN   LOC    	   *                               ******  <*DISPINDX    CMP CMP6CMP3ZONDALPHA NUM  b   AN    ANEDITNMEDIT          ~(  ~‰Ÿ
  ßE   ß   ‰  ß  ß  ‰&        ìÐìÐvL@´ NÍ«":d  ¢  ß  
 ß Ê ß  ‰*  ¼{:µ Z 
µ Z µ Z Ê Õ}?f*  ¼  À  ‰  ° º   ~ßJ  ×'Ê  %&
’*  Ä NÕ}?fÄ N° º J²2CM Ê *  â€cŽŸc 
’Ÿe ‰  Ð    ßø
‰   (  
µ Z µ Z µ ZÐ ø"( *  œ ßµ  ×§  ×§  ßÿÿÊ À ¬  œ 
   "Ê & *  .  ¬  #ðµ  Ÿ
Ê ÁÊ ÁB`ò
  Ê  Ê *  T ¼ñÐ Ÿ
  ßE   ñ  Ð ße   pÐ  &  
Ð ìÐìÐìÐÐ "ìÐ&Ð *  z°  ¬        ¬  Ÿ
¸ ß'  ¸ ð'  ¸ "è!$¸ *   ¸  
  ‰3 &
œ Î‡‡eŠ  ¸ ²2CM*  Æ„ƒ‚_ Ð_	ú
_ ˜‰M ðµ€    Ðú
˜*  ì_ 

¾ ðµ  ð. 	ðÅ€  & ‰©!_ 
  

¾ (  
Ÿ
¾ Ÿ
  . À  Â  Ä ‰  À Æ *  
¾ ;MÀ Â Ä "¼{:$À &Æ *  6È Ÿ¢ Æå Ÿ  &
Ÿž ÿ NüÁ  &	
fÁe  È ¢   ž    *  \  	
œ Ä
Ä| pz¼‚°–É•, _ †  pz¼‚° –(†*  ‚É•0 ðµ  Ée _ ´1œ  É•6 ðµ    ´*  ¨Ée       _ ´É•4  _ xœ Ä
Ä| ÈÖ(  
´x"È$Ö&((*  Î(F É• ðµ  Fæ ðµ  Îe ðµ  (F 
*  ô   ±
þÿðµ   Ž
Î‰e_ nÉ•* _ nÉ•
  n&n*   _ nÉ•( _ nÉ• _	V  ×'0 ßå 0  nnV0(0*  @Ég0É•  _	V  ÉgN Íå Õ… ðµ   0VN*  f Ée 1œ  œ É ¬  0 &æ0 *  Œ×p Àe2 À`ÑÀå    Ã
ðp  Ñÿe ìú*  ²ƒ€Ä &
ö•  Ÿ	Ÿ<	_		
	
  	<	"	&	*  Ø<	Æe
 „ß¼ú¨ ße   ß°ú¦ Æ¢ ð‹- 
æ        <	¨   ¦  ¢ *  þ² _	N	Ÿ² ßÿÿ²  ° ðµ  $¬    ² N	² ² ° *  $¬   Ì ß
Ì ßÌ 
Î ß—Í Î Ÿ
Î   Ì Ì Ì Î "Í $Î (Î "  J‰  Î T  ß—RÍ ‰  Ì ° º ‰*  Ä NÎ 
TRÍ Ä NÌ ° º *  h  ° ¼   ðµ  _	‚	_	d
ß7    _ Ðß'(  ´ N° ¼ ‚	d
{L€ [zœ5&Ð$  Ž  ¸ _ Ðß7    _ Ðßö
ßô
(  è!¸ ÐxQXz[zœ5Ðö
"ô
*  ®ø ßü ú )
œ ßü ø ßü ú _	&  ø ü 
ú ü ø "ü $ú *  ÔøÀÁß	        _	 	¬  ßø ßü $  ø:© 	"$ø (ü (  úú ßú ßü ø 
‰ü þ 
 œ   
*  ú 
ú ü ø ü þ  $ *   ` ßŸæø Ÿ
 Äþ ÿ‹Øø_ Ð×¯Îø-       þ  Ð*  Dß5   _ ÐÔŸºøß
 Ÿ
 _	øÀ#Á¤ø  [zœ5Ð   ø$#*  jß	  _	 	Ô—#Ô—$Ô—%ß
 ße  é_	†$  [©(}
 	#$% " (†*  þ _	ø Àß	  _	 	_	ø À$$  þ 
ø:© 	 ø($*  ¶ß	  _	 	ßö

ö

‰X*ø
_ ²ß² (  :©Ï_       	ö
ö
X*ø
"²&² *  Ü_	øÀ+Á² ß	  _	 	
‰7+&
(œ(  ø
+² :©Ï_ 	7 +"&&(*   (ß
(ß(ß(ße=(ß( 
‰  2*¬*  (
(((=(( $2&**  (  ßwb
,œ ,ß
,ß,æ,ß  wb,,,",&,*  N,Ÿe,ßeY,ß,b
‰  8.
0¬  0 &  ,,Y,,b8. 0*  tœ0 0_	øÀ2Á0ß	  _	 	ß—5?ß—6(  0ø20:© 	"5$?(6*  š@_	ø ÀCß	  _	 	ðµ  ß•L ø   @øC      :© 	(ø $  À‰ø Hß•  ø _ ÐÁ  _	Pè Ü _	  *  ø Hø ÐH†"Pè Ü "=†@`*  à  Ü   ßg    _	  ‰    ‰&f¦… ‚€*  	#XÜ =†ò	#X=†ò¥ Xµ Z*  	… ÿ’÷ß¾ ßž 	_	        ß  ² ßor÷$  ¾ ž 	¤@`¤ò"¤ò$² "  ,	  … ßž :	_	        ß  ² ßoT÷&  ¤ò
ž :		@`	ò	ò² *  J	  … 
¤ &œ- Ÿ¢ æ¦ &
æ¨ ße ¤ 	æ  	ò
¤ ¢ ¦ ¨ $¤ &  p	¤ Ÿž _		Æ¢ „… &_	Š
  
 œ& $  ¤ ž 	¢ Š
µ Z µ Z "  ’	 œ'        ßg
 ‰  Ú	    ß(  µ Z µ Z 
µ Z µ ZÚ	*  °	¬	
Äª	_	Þ	ô¥  íÊ	
‰  


_	¦
  (  ¬	

ª	Þ	Ê	 

"
&¦
(µ Z*  Ö	„… ‰„ &&
  „cŽŸ

“Ÿc
Î
Î  
"
&
  ü	Ÿ
„…       
  
 d
&  d
ßµ€ 
ßÕ€ 
_	Š
  ‰  



_	¦
*  

Š
µ Zµ Z


 
$¦
*  †
  … ¶øÿ6öÿ@Àe &&&¦)€… &@Àe  µ Z*  ¬

 –%ˆ   €öÿŽøÿ…           Ò
     æ
  æ
*.€œ   ò
*  ò
  FD   ‰0Š( 
‰Â
Ô
Nœ Ô
ð& ß•         Â
Ô
NÔ
*  Ù
Áe _	Pæ
Ì
 ò
ße ò
Bße B"  Ù
Pæ
Ì
ò
ò
"B(B*  >_	    Ô
ò
Ÿ
ö
‰ ‰@B”× €ÿC`Ëù  ¯ d
Ô
ò
ö
*  dCàƒƒ`×¢ Ë• _ V×¢ ìË•  é‰‰C  V  ŠDË¥$ Ë•- ƒ
‰       tN   Â°Ç*  ceÀ    Â°Ç   ¯”L  @  ²2CM@  *  vL@@  {L€@  xQXz@  êYN@  ó`êY@  *  Œs°r@  þv@@  [zœ5@  ³´d@  À Z@  *  :©@  :©Ï_@  [©(}@  ë©¢Z@  R«""@  *  S«µW@      (  ceÀ,H«;|h  ¯”   
   ceÀ  "    _	  ‰Á  À      ˜ß	  
  ßö  ß(  S«µW˜[©(}vL@ö²2CM     
 ß7    yß7&  À Z À Z 
À Z {L€[zœ5*  0     u‰  &    Ä< ô  $&
     xQXz[zœ5À Z&< "$*  V Ÿe ô¥-  ê
‰¥¦œ
” ” §ß
"  À Z ¥¦œ” ”&§*  | ”À¨–ße –Áße –ß
”ß	     ”
¨–––"”([©(}*  ¢ õ_	X§ÀÇ
 Â ß	  ÀÖ Â ß	  X
§Ç:©Ö*  È   Â 
 Àžß	  
‰¡Þô ß•S   :©Ï_ž:©¡Þ*  î       äß•P êÀžÁ$Â ß	  
‰ Ñ’
‰˜(  äêž$:©  "Ñ$’(˜"  Î’‰¦œ‹_ È  
  ß   ß&  Î’
¦œÈvL@ ²2CM  2  
 ß  
*  À Z À Z 
À Z ³´d ³´d *  B ‰  ¾    ÄJ&
  Ÿe ô¥-  ðô    ³´d À Z
¾JÀ Z *  hí Ž
‰¥¦œ
” ” ¨ß
”"  
Ž¥¦œ””"¨&”*  ŽÀ©–ße –Áöße –ß
”ß	  õ_	  ©
–––”$[©(}  ´X¨_	ØÃ
  ß(  ß &  X¨
ØvL@(      ²2CM³´d &  Ì 
 ‰  0    ÄØße  ô‹ ó
‰(  ³´d ³´d ³´d0Ø³´d *  î¥¦œÀ¦  ß	   ß	  À° Â "  ¥¦œ¦[©(}[©(} °*  ß	  Â  Àºß	  ‰¦œÑ
  ßj  *  :©Ï_º:©¦œ"vL@&j(²2CM  :_	  ß  „ß  †ß Š_	(  ó`êY
êYN„ë©¢Z†ë©¢Z Š*  R¤3_	n ìƒ_	|øß
ˆ_	¤%ùŸŒ  ¤
nì|ˆ ¤(Œ*  x‡ße „òÁþ ße „ß	  Áð ße „ß	    
„„[©(}$„([©(}*  žÀe Ûßâ Œße Šß ˆ      ß
†… _	|
    ŒŠˆ†$|(vL@*  Ä
  
  
  ‰    ‰‰  V    ÄÞße (  ²2CM
vL@²2CMÀ Z³´dV$Þ*  ê ô‹ .Â 
 Àžß	  
‰¡ÊÀÕ$  ³´d ž:© ¡"Ê$(Õ*    ß	   ß	  Â  Àáß	  Â   
[©(}[©(}á":©Ï_*  6 Àëß	  ‰¦œ
‰¥¦œß'àŽÁ… AÀ(  ë:©¦œ¥¦œà Ž*  \ É¥$ É•- 
~… À¦
‰¥¦œ… ‰¦œ  ¦¥¦ œ&¦(œ  ‚…                      œ  œP    ¤  ¤     ö*        ö xP   F  NAME               x
P*                SOURCE  PSECT   OFFSET S*  BEG  SECT  PARA&                         h           LINE    x*  x&                     PROCEDURE NAME M*  žAP ¬°¬à¬   -                     ¬
°¬à¬  Ä           SEGMENTATION MAP   à*  àE            SECTION NAME         SEGM%  ENT NO.     NAME             SIZE   (*  ( 484T4    COMPILER GENERATED P  48
4T4	  NSECTS          T*  T NAME            SIZE rvr    RE  rv r  zFERENCED OTS ROUTINES        jN   ÂÈÍ*  ce     ÂÈÍ   ¯”L  öXz@  @  *  ¥ X@  ¯ d@  ö&Xz@  |Lò@  |L@`@  *  $Nò@  $N@`@  Œs°r@  þv@@  [zœ5@  *  [z·5@  hÞ™@  ³à~@  ¹ðK@  ¼ N@  "      (  ce ,ÎH«<|h  ¯”   
   ce       _	  _ 2  
2 *                       Ì              Ì  .       2$  2‰
  
  ß7    _ ¬ß7    _ *  |Lò$Nò[zœ5ö      Xz¬[zœ5ö&Xz*  R¬Ã  ó  3
 À Ã  ó
 ó   ¬¹ðK ¹ðK 
&*  x_	Â†_ ¬×7   _ V_	D‡À Á   Â¬[z·5V" &*  ž D ÃE€ÿÄE€ÿÄ $_	då1,  1,   d*  Ä ÃÃU €ßß_	”Åð5 € Î_	d  
”(d*  êËð ðU € Äñ5 @ À_	d¼ñ    d&*  ñU @ _	°³ ÃE Àß*ß•
 /_	¼ß  °*"/&¼*  6  ¡ ÃU €ß_	”ßg&  _ h0   &  $Nò”&$Nò"h*  \ð ðå        _	       ß  *ß• /ß  *  |L@` |Lò|Lò*"/&|Lò($  ‚¡ ßg   _	¼ß  ¡ ßg&&   |Lò¼$Nò"&*  ¢  _	”_ h‰    _	  _	>‰‰ ,ßE €$  $Nò”h¹ðK¥ X>$,*  È,ß ,& ÎEÿÁ æ `¶# Îå F~ ‰F"
  ,,*  î1Á
Á_œþ,y 
    0   ( FFF"  þ,
 "F$F&F(*  0ð5 € ße , ÎEóÿŸc, (ßEð  0,,$(*  :(ß(ß ( (ßE€ÿ(–%ß ,_	  &.(  ((((( ,$$N      @`&&(.*  `  ‰Ä„&fÀe Áe Ä
$ü€… Ã5   $Nò*  †	¢ø€
… ÃÓÓß   †ß…    hÞ™&*  ¬‰5 _  ‰  " $… ‰      Ã  óo(   ¹ðK" $¹ðK&¹ðK*  Òôÿ ß ß 
ßÈôÃÜÿÃß
‰     
Èô"( *  øŸ
ß¡ … ± … ‰  :    Ã  óoôÿ"  ¹ðK:$¹ðK*   ß"ße "ßŸ
¡ … ± … ÄÄå  
""&*  DÌ„> 
ÂÌ€
 ÊÒùƒÃÃE €  Ì
Ì*        jÃàƒÃÃƒ`ËõÒë 
ÂÌ€
 ¡ Rú  Ì&  ‰  ß'ßçß
‰  *  ¼ N
 $¼ N   ²Ìßg²ßg²ßå…   "  Ì²²       8N   Â¨À*  ce@    Â¨À   ¯”L  @  ø€@  *  Î/}@  … X@  ;M@  ¡d²@  ¯d d@  *  ¯d£d@  güX@  Œs°r@  þv@@  wuL@  *  òy,}@  òy“@  ³´d@  ¼{:@  ã’´d@  *  d©v@  S«U<@  S«µW@  S«ÕZ@  ¿«þv@  *  Ì«$	@  Í«@      (´H«=|h
 ¯”   
         &              4   _	  ß  $ß  _	      &  Í«;M Î/}"d©v$òy“  "   _ \ Ÿ
  _	  _	      *  òy,}\ ø€güXÎ/}d©vS«ÕZ   8   _	ä ß   _	     _	  _	*  ¡d²ä Ì«$	 ¯d d  ã’´d  T   ‰    …        \     … X
¼{: º *  º                    $  à   ‰ß    ×'  2 ß
  _	Bß &  wuL¿«þvwuL¿«þvB"¼{: *    
 ‰  <    Á×'h   ñ§h   _	(  ¼{: ¼{: ¼{:<h "h *  &R_œ  h _	‚ße  _ _	R‰      
h 
b ß&  R
h ‚¼{: R"h &b *  Lj ^ … ßb fß—b i Áb Wp Áe _`   j ^ b b i b &` *  r_	  f º ` _	B… ×§b  _	R_  h  $  ¯d£df 
º ` Bb R$h    ˜Äþße ^  ¸þße ^ Ÿ
b …    
^ ^ b        ÈN   Â¨À*  ce€%    Â¨À   ¯”L  4@  @  *  Œs°r@  þv@@  hÞ™@  € s@  ± N@  "      (  ¥°Û,| H«>|h ¯”   
   ¥°Û  "      _	  ‰ß  _ r ß  
 À*  4r ± N ± N ± N *   z ‰        @     ße  Â& Ÿ
x ð‰     z ± N
@ ± N & "x   D   ‰  _	  z x v ßz b Á(  ± N± N€ sz x v z b $  \ x ‰    t v ße b Á
ö‰        x ± Nt v b        ¤N   ÂÐÀ*  keÞ    ÂÐÀ   ¯”L  %hQ@  \°E@  *  Ë g@  ük@  d:K@  ‰À@  ‰Ä@  *  Œs°r@  þv@@      (  keÞ(òkeÞh@ 
  ¯”   
   keÞ'   '   +-$Z*9XACRD.PVB0/,    @ (  @ fÀ  
  üƒß•   ß—  . ß—  = ß—  (      d:K.  %hQ"= &Ë g*  d       7 À  Á  …Åe _ ßed  Ã 3Š Ã~ß	  7 ‰À‰Ä  $ *  Š f²Š E~Ã ó¬ & Å~ŸŠ Õ• #ß À  f  &  & *  °   Á  ß	fƒ E~ ß	fƒ —  H~  ‰À‰Äf f*  Ö À
 ×§  Õ•@ Í•* _• À  Á  ß	f      ‰À$‰Ä(f*  ü Ÿ  :Ã —    ß	¨ß‹ Ã      ¨" *  "ß	ˆ  ×§  Ÿ
 Õ• ß	z×§    ˆ
    z$ *  Hß—   ß  W  Õ• ŸŠ _! ‡‰Ï         " *  n_ T~~u      Âz 8Ÿ
 ß	zß  Ÿ  ß	¨Õ•"  T8 z  "  &¨*  ” ÇÃ ß	ˆÂß‹ Õ•A Í•  _• Õ•C œ  ˆ " *  ºÿÿÕ• Õ•C ”Õ• Ÿ
 ß	zŸ
 ß  ß•    z " $ *  à  Á
 Ÿ
 ß  Õ•D œÿÿ–Â  œÿÿŸ
       *     ‡  ‚Õ•D •…ß	zß‹ ÷Õ•A •     z     ,Õ• Ÿ _ &ø || ø ø ˜˜*  
 &ø || ø ø ˜˜  H˜¢ø ¢æø ø ú  *  ˜¢ø 
¢æø ø ú  *  \  ×7    ×§   Õ•@ Õ•  Õ•E       Õ— i    
ük\°E & *  ‚ß‹ Bß‹ ?×§  #ß
  ß ß'
       
   &
 ( *  ¨‚Õ•E Õ— Õ•@ Õ—7 Â Âç ‚
Õ•E •Â
Õ•   7   *  Î@ Õ•* Õ•E •<×§  Ÿ
 Â
 Â'      
 & *  ôÂ Â,Ã ƒàƒ
Õ•E Õ$ß !×§        $  *  Õ•@ Õ•+ ×§   Õ•@ Õ•  Â Âç ‚
Õ•     $ *  @F •×§   ‚
Õ•F •Õ•  …áÅå v …‡   
  *  fÈÅ€ Â 2¢+ „~€
‡ ß
 ß 
 ‡ Â   + 
   "
 *  ŒÀ
¤—  ‚
G~
Ÿ` Â`      •‡ —  Õ•A    *  ²˜” ‡ ß‹ Â•  ¬ÿÿ+ Â•+ Õ•A •Õ•
      ØC Õ•- ‡ ¬ÿÿ+ Õ•B Õ•+ ‡        ÔN   Â€Ù*  Df    Â€Ù   ¯”L  @  Sð_@  *  ²2CM@  vL@@  {L€@  ¯dg@  Œs°r@  *  þv@@  [zœ5@  [z·5@  À Z@      (Ò  Dfh  ¯”   
         &    _	  ‰ß7    \ß5   X
  ß–  ß*  {L€[zœ5[z·5vL@ –"²2CM   "   
 ‰  ¾     À0 œ  Ÿ`(  À Z À Z 
À Z À Z¾ 0 $  >  ÂŸ’ß0 T ß2 È 
‰  Ê ’ß—â *  À Z 
      ’0 T 2 È Ê ’"â   ^ ”ß
”ßú ø _	  ¶ø ‰(  ””ú ø Sð_¶ø &  x ú Áú ÂÑ•  Â
ü_	  @´ø ‰(  ú 
ú Sð_@´ ø "*  š ú Áú ÂÑ•  Â
üß ‰ú _ * 
"  ú 
ú  ú "&*   À   
  ‰    ²2CMvL@ ø   ø      )         š   DUMP OF PNT WORK FILE  5
  š ¶  ¶
NAME =     À  À 
 VMA = `   Î*  Î
 START PROCNO = 
 END PROCNO = )  ô
 FATHER VMA = 
 HOMONYM VMA =          *  ÿÿ  ã   ”  ä   È   Ü   Þ   Î   Ì ÿÿ"  
ã ”ä È Ü Þ "Î &Ì   @

   SIZE = 
	 SEGNO =    Z  Z
 SOURCE LINE =    n#  n
 PSECT NO = 
 ADDRESS =    Ž*  Ž
 ALTER NO = 
 WFCPDT VMA = ÿÿ"  ´  Ê   Ë   Ô   Ø   Ö   à   Ú ÿÿ  Ê 
Ë Ô Ø Ö à Ú        FN   ÂXÀ*  ¬f€W    ÂXÀ   ¯”L  Y/€p@  ‰mÖM@  *  Œs°r@  þv@@  é…ÖM@      (  ¬f€W,d   ãfîjh ãfîƒh ¯”   
   ¬f€W  *        ß  
 f¦æ&_	  Ÿ          ß     Y/€p$  ( *  & _	  ` _	  ` À¬  †æ  ‰.!
  ‰mÖM
` é…ÖM` "    L ¬  ÷‚Õ„ƒ‚… Eù       ˆN   Â¨À*  äf    Â¨À   ¯”L  @  Sð_@  *  ²2CM@  vL@@  {L€@  ¯dg@  Œs°r@  *  þv@@  [zœ5@  [z·5@  À s@      (    äf,läfh  ¯”   
   äf  (    _	  ‰ß7    _ Žß5   _ Ž
  ß(  {L€[zœ5Ž[z·5 Ž$vL@  $ È  ß  
 
‰(  È²2CM
À s À s À s &  8   †    Ÿ
ß< L 
‰        ’Æßúôß(  À s†< L ’Æ ú"ô*  Z > òÀ’Àe 
ê’êßêìß
ê€
îß%&  > ò
’êêêì ê&î*  €   ê€
ð_ œ ß êßèðß  ø_	  $  êðœ êèð$ø(Sð_*  ¦  ôößgöôßgöøßµ “/À’Àe ß*   ô
ööôöø“"’*  Ì ìÀgì
ê’êßêì€
îß
êß%  ê&  ììêêêìî ê&ê$  ò €
ð_ ß êßèð_	  ®Äô(  ðêèðSð_® Ä"ô  ößgöøßgöô_	  Òàô(  ö      ö
øöôSð_Òàô  *ößgöøßgöô_	  Ffô(  öö
øöôSð_Ffô  Bößgöø‰úøßúô_	  æ(  öö
øúøúôSð_æ(  \4ôö‰úöß•  úß ö‰úöÀ—’`*  4ôöúöúöú ö$’  € _ 6 
  
  ‰    À s 6 ²2CMvL@ Æ%  Æ4  Ì   DUMP OF PRT WORK FILE  
  Ì è  è                       
NAME =    š'  š ÿÿ î  ê ðÿÿ
 QUALIFIER = "  îêð ¾!  ¾ ÿÿ î  ê       ðÿÿ
 VMA =   îêð Ü  Üÿÿ  òÿÿ
   FLAGS =  
  
ò ô  ô
 SOURCE LINE =    *  
 PROCEDURE HT = 
 QUALIFIER HT *  .= ÿÿ  “  ”  –  ˜ÿÿ
 (PRT ENTRY   “”–˜  TNUMBER =    ^  ^
 )ÿÿ  ÿÿ         rN   Â˜Æ*  gt~    Â˜Æ   ¯”L  ø€@  ËU<@  *  „|q@  ¡d²@  ¯d d@  ¯d£d@  Ôf@  *  Œs°r@  þv@@  ‹w‰‹@  wuL@  òy,}@  *  òy“@  ³´d@  À Z@  À €@  9©x‚@  *  :©@  K©Ë@  d©v@  R«ÿ@  S«µW@        *  S«ÕZ@  ½«¼@  ½«ÿ-@  ¿«þv@  Ì«$	@  *  Í«@      (  gt~,Î/}hìgüXh$ *  g"hÜ 
z„!hÊÄ…Dfhxã’´dhF¯”   
   gt~           
   
                   	    $ *  $ ‰Ÿ
  À Á  Â ß	  Àå  Á ß	  _  S«ÕZ S«ÕZ:©&9©x‚  J  ß  
 ß  ß   ß*  S«µW S«µW

 S«µW  S«µW   `    ß  ß  ß  *  S«µW 
S«µW  S«µW  S«ÕZ   t  ß    _	  
    ß7    ×'*   
¡d²¯d£d
    Ôf„|q             _	ì      ß    ß*  ½«¼ìÌ«$	S«ÕZ¡d²S«ÕZòy“*  ¨     ß   ß    ‰4   ´d           ¡d²òy,}½«¼½«ÿ-¿«þv  Î     Ð   Ð     Ú &  Ú  ‰ß  ¼ À  p _À ß  Â æ  Ÿ
&  
S«µW¼ S«ÕZÀ S«µWÂ "S«ÕZ*  ü   À Á  Â ß	  Àå  Á ß	  _Ä ß"  S«ÕZ S«ÕZ:©"9©x‚&Ä   " Æ Ÿ  ßg    _	  º È Ð ßç*  Æ 
S«ÕZK©ËËU<¯d£dº È Ð (  <    _	F‰‰ÀÒ ð    ð  ð   ð*  K©ËËU<
FÒ S«µWS«µW "¡d²$  `   ð—         ‰  Ò Ú v‰  ‰æ æ(  ¿«þv
ø€³´dÒ Ú v À Z $  €
 ‰    ¤Á¤ñv 
²_œ  ²‰*  À Z
 À Z
‹w‰‹¤¤v² ²*         ²Ÿ
 Ÿ ‰  ´ 4 t        "  À Z‹w‰‹
²À Z
 À Z   Æ[    Ê*  Ê‰_	  ´¾Ä_	  ÆÈ ‰         _â&  ¯d£d
´¾Ä¯d dÆÈ(â  ð_ä_æ‰  âêè…   ä
æÀ €âêè       „N   Â€À*  4g    Â€À   ¯”L  @  Sð_@  *  ²2CM@  vL@@  {L€@  ¯dg@  Œs°r@  *  þv@@  [zœ5      @  [z·5@  À €@      (    4g,ì4gh  ¯”   
   4g  (    _	  ‰ß7    _ ª ß5   _ ª 
  ß(  {L€[zœ5ª [z·5 ª $vL@  $ ´   ß  
 ‰  *  ´ ²2CM
À € À € À € À €*  6 ¢     ß8 D 
‰  ¬ ² ßü à ß: Þ Àè Á*  ¢ 8 D ¬ ² ü à  : "Þ &è *  \ ¬ AAAAAÁEðÿÁ@`æ _	  ’Úà â ‰   ¬ æ Sð_ ’"Ú$à &â &  ‚ ü â ß  ü ß â ‰ü â ße  _ 2 
&  ü â ü â ü â À € "2   ¤   
  ‰  ²2CMvL@ ² %  ²         ¸    DUMP OF PTT WORK FILE   
  ¸  Ô *  Ô                     SENTVERBELSEPROCPR  ú T    ’  ’
TYPE =    œ)  œ
 PTT NUMBER = 
 IDX!ALT!FIR =     Â  Â
 OFF!NUL!END =    Ö  Öÿÿ æ   ¬   ®   ° ÿÿ  
æ ¬ ® °        
N   Â(Í*  Îl      Â(Í   ¯”L  Kòy@  üX@  *   d@  ¼ d@  @  ØµW@  ø€@  *  Y®s@  „|q@  U‹w@  ›!ä3@  ž!/K@  *  ¨!g'@  ¨!ä3@  ¨!ØY@  ¨!òy@  Y/€p@  *  ²2CM@  @9Ð@  gM,F@  :d<@  :d‰‹@  *  ¡d²      @  ¬du:@  ¯d d@  ¯d£d@  µdˆw@  *  leCT@  le€W@  8f@	@  Df  @  DfÖK@  *  Ófg'@  Ôf@  güX@  g"@  sŽr@  *  Œs°r@  þv@@  ‹w 5@  ‹wÖK@  ‹w8X@  *  ‹wDf@  ‹w‰‹@  –w?@  áy6F@  
z„!@  *  Ä…Df@  ‰‹le@  ³´d@  ¹€%@  Àà8@  *  À Z@  À s@  À €@  Ã¢ƒ@  ã’´d@  *  :©@  E©ãf@  d©v@  D«=†@  R«ÿ@  *  S«µW@  S«ÕZ@  ½«¼@  ½«ÿ-@  ¿«þv@  *  Ì«$	@  Í«@      (  Îl  ,ü:dh6*  ü‹wh” äh2–,Ô!h–›Y°	h  ©düXh|"  3f 2h‹wt!hâ i†ØOhh¯”         
   Îl    *    &Ÿ  
 —¬  B‰	‰}_	Î—¬  ÷  
Df  
 Î(  & Ÿ ZŸ 4 
‰  \Z_	–€… _	¬   (  Z4 \Z–"¬$Df   &8f@	  J     ß—   ß&  Df   ‰‹leDf   ½«ÿ-Df     X    ß   
 ß&  R«ÿDf   
R«ÿDf   Df     h    ß   ß  $  S«ÕZDf   
‹w‰‹Df   ‹w8X  v  ß   &
Î— Îe Ÿ  ß—&  Df   ¡d²
Df   Df   DfÖK$  Ž     … _	â ß%    _	  _	  _	  _	*  DfÖKDf  â S«ÕZg"Ä…Df güX  ® dßE   _	B 
       
 ß (  d
ÔfB Df   Df   Df     Æ   ß    
‰    z_	Hß(  ‹w8X8f@	
‹w 5DfÖK‹wÖKzH(  Ü     … ß5   %ß5   _	   ßE   ß&  R«ÿ›!ä3ÔfÓfg'üX$Ófg'       $‰ÿ    ße   ÿ  &  ›!ä3¨!ØY¨!òy d d¨!ØY&    ße   ÿ•    Ÿ
  ÿ•    Ÿ
  &‰… _	&   d
 d¼ d¼ d¼ d¼ d   8  ß7    _	ÎßG    ß  ß7*  :d<
ÔfÎ:d<ÔfS«ÕZ(  T    #ß   ¦
Ã— Á Â´RÂ~‚ß(  Ôf„|q½«¼Df   Df         ´*  x  Ì_	hŸ
  ¦
Ã—´Á´Â RÂ~‚ßÌ*  8f@	Ì
hU‹w´´Df   (Ì  ž  _	d_	B _	(ß    … $  8f@	dB (R«ÿ¨!ä3 Î(  Î‰Ÿ
À ÁÂ ß	  R‰úü  _	  (   :©ú ü"8f@	&E©ãf  òüú ‰	 -PAR  üúDf    *    &_	     $&&À‰l €…     ‰  (  
gM,FDf   8f@	$&&(À Z  ,    D‰    DFßD*  Df  DfÖKDÀà8‰‹leDFD  @  …    ‰      d‰    *  :d‰‹À Z‹wDf‹wÖKdÀà8‰‹      le*  Xdfßd  …    ‰ß ZŸ  
 ß’\ß(  df
d‹w‰‹Z Df  
 $’&\(  ~”^_	–ßE   _	” ‰-SCTR‰Z\  _	&  ”^
–Ófg'”  Z"\$8f@	   ¢  \Z … ‰ß  L_N 
Ar&  E©ãf\Z
Df   le€WLN&  ¾  ÀG  €
V_PßPR
Tß—STŸ
*  le€WleCTVPPRT S"T"  àT‰  Tì  ß—êS‰  RJßL *  TÀà8
TìêSÀà8RJ*  þX‰  XJÀJÀe ÁN_	  ß
L¦&  X
À ZXJJNØµW$L*  $  ‰'1 
ßgVP      ÁPr  ÇÝPÝRÝX‰   VPPle€WP"R&X  J                     z   z0 ‰  ‰  ‰  ‰  ‰  ‰  ‰&  À ZÀ sÀ €¹€%Àà8³´d  –  ‰  H^  ße   ß•.   
(  Ã¢ƒ¹€%
H^@9Ð@9ÐsŽr$  °  &À  ‰  0.\À
ù€_	  ßU &  ²2CM
le€WÀà80.\áy6F*  Ð  _	  ò ò   Ÿ    P‰F‰ð@ò‰N   ž!/KY/€pY®s¬du:"ò*  öF‰®Ÿ
  _	  
  _ 2‰O 
,"‰	ß,$  D«=†µdˆwD«=† ,(,*  ‰ûŸ
,P‰õ…      æ  ß          _	      ,–w? Ì«$	"–w?&üX#  BŸ  …                       
    –w? b  b Ÿ
  _	    `b…      R«ÿ¯d£dR«ÿ`b |  |  „!  Ä  ›’   ]     $  4   ‰ß  |ß  „_	  |tŠß(  S«µW|S«µW„¯d£d|t Š  °    Ÿ
  ß  ’_	  Œ(  –w?Ì«$	
–w?Ì«$	’¯d dŒ   ÄŽ ß  
_	  ß    Ÿ
  ß  *  Ž
Í«
z„!–w?d©v–w?d©v  à’_	  ” ß~ ßÿÿ  Ÿ
&  ’¯d d
”~S«µW ¿«þv  ú  _	  
  ‰        ø€ã’´dø€       ’N   ÂÐÀ*  m€%    ÂÐÀ   ¯”L  Y/€p@  cM„!@  *  gM,F@  µW5–@  Ôf@  Œs°r@  0t  @  *  þv@@  D«=†@      (  m€%,à‰mÖMhŒ   é…ÖMh” ¯”   
   m€%                       † *  †       ß   
  f¦æ&
 
 
         $ ( $  ¬ 
 

 _	  Ÿ  † _	    Ú:_	&   

 Y/€p† µW5–  Ú*  Ì   }Ô _	  hÞ ß
 ß æ† ‰,!"  0t  Ô 0t  Þ 
  $† *  ò s_	  $  †  Š ÀIæ† ‰(!eß  	ß$  cM      „!
$  †  Š † $  *   æ† ‰)Ÿ
 _	    4æ† ‰*!N$   
†  µW5–  4"† *  >×' 1 
ƒß ¿æ† ‰+Ÿ
 ¸
ˆ _	        †  "ˆ &gM,F( *  d  Š ˆ Àß
 ªŸ

 §ß ßˆ  Á&    Š 
ˆ 
 
  $ˆ & *  Š Á1$ Ÿ
 ™ß  ß  ¬  ¬    
$  D«=†Ôf*  ° ðµ  	ð. æ† ‰©!_ ÚÕ„ƒ‚
  †  Ú  Ö… E 
ø       N   ÂXÀ*  þv""    ÂXÀ   ¯”L  ""@  ""CT@  *  Œs°r@  þv@@      (        þv""x6 þv""h  
  ¯”   
   þv""  *    
  ß  ßU   ß ßU   ß ßU *  ""CT
""""CT"" ""CT"""   &   ß ßU   …   ""CT"" ""CT       N   Â˜Á*  ‰w q    Â˜Á   ¯”L  &˜@  ,‘@  *  0.2@  0<2@  @  X:†˜@  õX&@  *  Úd&@  Œs°r@  tàLH@t XHBt }HÂ*  t XHY&t#Hy+tzH+t„!H .t)	H°*  /tÖ2H0þv@@  šw‘@  “y¤@  “y&@  *  “y,@  “yt!@  “y†!@  “yg'@  “yœS@  *  “yšw@  “y–y@  µz‰‹@  Ý&@    @  *         d@  µ Z@  ‘&@      (  ‰w q,¤*  0&5hL´'*hò ´'„!hŠ ´'çzhð ´'‰‹h¬ "  Nq„!hZŒ qh  ŒÖ2h@ ¯”   
   ‰w q      _	  ‰_	  6 
  ßU    ßU  *  “yt!6 “yg'“y†!“yg'“yœS     F‰@, ßU    _   ßU    _ *  “yg'
, “y&“yg'“y,“y–y“yg'"  4   @‰"_	  ‰_	  ‰ß5    ß5  &  “yšw“y¤“y†!“yg' Ý&  R   ß5    ßE    ßE  &  “yg'
‘&“yg'Ý&“yg'‘&  h   ßU    ß5    _   _ &  “yg'“yœS
“yg'“y–y“yg'šw‘(  ~   @‰"      _	  ‰&
 D• • ßgð *  ,‘“y¤µ Z µ Z  µ Z &ð *  ¢  ‰  ì     Äª _	Î ô¥  ðÄ 
‰  ò $  µ Z µ Z
ì ª Î "Ä (ò *  È ê „… &&
  „cŽŸð 
“Ÿeð „… Z ‰  ê ð  ð   î ‘      L*  L_	    _	    … ðµ€  ‚
¢œ  ¢Àg&  &˜0<2&˜0.2‚ ¢&¢(  r¢&
œ  ÎŸe¢
‰    ¢ßÕ€  Ÿ¢‰  &  ¢¢  ¢   "¢&µ Z  –    ¢À  …     µz‰‹  ¢ d       ÒN   tÀ°Ì*  *y€    tÀ°Ì   ¯”L  ú&VN@  |:p…@        *  ”TÎ@  aVN@  ŒsÏy@  õ—€W@  „¯½`@  *  ±lE@  h±p!@  ±„:@  •± }@      (  *  *y€,°4KqhhïKqhPô&hZt!ÀvhØ*  "&”’hœô&"hø.2*}hjf9ô&hX¡E[MhL*  4F KhüÁGÐ¢hHoMKqhf€QKqhJ|XW"hT*  ïYüqhdÕZ„!hbÕZô&hRavLhlhfÐÀh,*  Õfž!h€Õf«!h|Tq8"h_qt:hæüqKqh:*  ‡s sh  þv;"hBþvH"hDþvÐÀh*yfhF*  ïyäht*}ÈKh^~"høh<h\h <hV"  lòyhˆ€H£h`*’	FhN¯”   
   *y€  *    ÃBS“Á U%À	 Ó9€
D„
D@3€
K  B*  & ‹
K@.      æ€
BB0)Ò“B‚
B@K‹
K@ÁÐ„e*  L D`…!ÿ?æ€
KÁ"€
×"
  Àep 	…*  r ¦ŽàÅà†ÖË
Á"÷À UÅ
õÀÀ
À
*  ˜ ÀËÓÐ€ÅtÕ À
ü
W!œü€•
  t"œ*  ¾ Âe` À
ûÖ“Žà @` 
Ë NE`‡àË
*  ä ùNÎ
…ÅS…`RaÎ
ü“
SSSŸ
F  (F*  
hÂBR’U% 
f
Ÿ#JfÅ À N1
  BJ*  0Àe _ üJ!üÅÁ^Äb *Ô
  `  
ü^b&`*  VL_	|@_	:_	àÁ^ÄdC`ÔeL  |:à^d*  |$ LaC q ûCáQ C ü‰	äiB*  ¢La      @a&Ô ë’ÀH`ƒSNáýÁLb@á
  H$L*  Èý)`ô _	
_ ôÁjÁ_0b  `
ôj$b*  î_j@Â^`‚ÒÄHaÃLâ(„ãü‚N   j^HL*  @à bêøN @`÷€ã bÀb…   b b&b*  :Àg^ ÁgHÁe ÁE _ PÀ OÄZ  ^HP(Z*  ` œ° p ß	  †À @€… ÀÖ_	N  œ•± }"Ö(N*  †Ãj$ô
t´
ˆƒ
ÁVC„ãÄ	!û1   jtˆV*  ¬ôt‰ãÉBÀ„ˆ 0t€ãú‚ãÂ  tˆt*  Ò‰…  €ÂBÀ       R’Ê


ßd_	È 
  Bd$È*  øœÆDÅB= ‡ _	ß  Äß ÆÄ\$  œ
DBú&VNÄ$Æ(\*   œÂ` ‚
Â
ýð•   0Š 0
 0
  ×  œ*  D  ðÕ  0Š ðP ð—Ä" ð¦& ð—Æ(   ŒsÏyPÄ ¦&Æ*  j0
 ð•  , ð• . ð• # ß	  ‡ß	  †À   
”TÎh±p!"±lE  ³Ÿ
ÄŸ
ÆÄå ¿_	,…   ÄÆ, ¬  ¬*y÷     Ä*  Ä  _	Ä\ œß	   †Äå ø_	,… _	  
\œ„¯½`",(*  ê œ
Â 
p•. Õ‹ß	  †ð¥öÿ* À _   œ±      „:*  ø_	,… ¶öÿf¦æ&Æ
Æ
… Ÿ@„ƒ‚  ø,"@*  6€Î@…                               
@  \                              "N   tÀ˜Á*  *y€    tÀ˜Á   ¯”L  4Kq@  ïKq@  *  ô&@  t!Àv@  "&”’@  ô&"@  .2*}@  *  f9ô&@  |:p…@  ¡E[M@  4F K@  ÁGÐ¢@  *  oMKq@  €QKq@  |XW"@  ïYüq@  ÕZ„!@  *  ÕZô&@  avL@  aVN@  Õfž!@  Õf«!@  *  _qt:@  üqKq@  þv;"@  þvH"@  *yf@  *  ïyä@  *}ÈK@  ~"@  h<@  h <@  *  lòy@  €H£@  *’	F@  õ—€W@  °       }@  *  •± }@      (  *y€,bRˆ,h  \q°rhª
  ¯”   
   *y€  *    Á  Q‘Å  
I!Å‰

  Â  ÒÊ    þv;" ïYüq(*}ÈK*  & _ `_ Î¦€   &_	  €Ð÷N!
_	    `
ÎÕZ„!üqKq(Õf«!*  L @&_	  €Ð ùßÿÿ  _	  ß    
  À&  
üqKq.2*}Õf«! h <"ô&&.2*}*  r 8_	  _	   _á  öÀ  Î €ã   8Õfž!_qt:ô&h<*  ˜ 2:D`Báû&
Ä  4m    m  _	   DáöÄ$  :h <ïyälòylòy _qt:*  ¾     Ã  ÓCáó  ûæ_	ô_	   „$  h      <ô&h<lòy ô$_qt:*  ä   ´
NŸ#  _	   Ä  
  4
N!  (  ô&
N|XW"_qt:h<"N&ô&*  
ô  
ô
  ô
  Î
´
NŸ
þ _	€ü5 À:$  ïyäïyälòyNþ  €&:*  0Dáæß'þ   Ä  ´
  ´
  ×À ü:?À"  
þ ÕZô&ô&lòyïyä$:*  V <Ÿ#  Ÿ
   
5_	D& :_	¾„_	€  
|XW"*yfD:"¾(€*  |ü5 À:òü:å€´
NÎ
ô
  Ÿ
þ ß'þ   ä_	"  ::Nlòyþ "þ $ÕZô&*  ¢Ž
_ Æ Á  Q‘ 
ß%   	U%ffÅ N1  
Æ þv;"*yf*  ÈÀ       Àe _   ÅÁ  Ñ_á  %D	  4F KïYüqÕZ„!*  îß'þ   _	D:ƒ€Âg  “@áýß  ¨   þ ÕZô&D:ÁGÐ¢&ïYüq*  _	€ü5 À:¢ü:—€Ÿ
þ ´
NšÀ ß Ì  €::þ N& *  :Àÿÿß
 ÇÄ  ÄäôNüƒãóNûÀ  
 ÕZô&N$N*  `  Ð m:Ál:!(‚ãüíƒÄë… :   ÁGÐ¢::&:*  †  ð ð   ß	  †ð¥öÿ* À _   Ë5 À  "&”’ïKq° }$~"*  ¬ß"  À _   … Ä  _   õÁg  Áe    €QKq~"ô&€QKq$ÁGÐ¢*  ÒÁE    ° p       ß	  †À _   … ß @  "&”’•± }"~"*  ø6_	_	   … ß €6_	´
  … Ä  & $  6_qt:6lòy$ô&     ð6 ð  ß	  Ü‡€…    @  "&”’6•± }       B	N   ÂØÌ*  “y,    ÂØÌ   ¯”L  &˜@  0.2@  *  0<2@  0&5@  0°6@  k2g@  ü&@  *   d@  GÀ+@  ¼ d@  @  ³’˜@  *  (¸@  ´'*@  ´'„!@  ,.À]@  ÿ8!@  *  X:†˜@  <!@  õX&@  T[y@  o^Óf@  *  N`’˜@  ¡d²@  ¡d8w@  ¤d8"@  Úd&@  *  Ef{Q@  EfåQ@  ãfîj@  Nq„!@  Œs°r@  *        tàL@  t X@  t }@  t X@  &t#@  *  +tz@  +t„!@  /tÖ2@  þv@@  “y¤@  *  “y&@  “yt!@  “y†!@  “yg'@  “y–y@  *  Ý&@  ‰‹ð
@  ‘&@  S«ÕZ@      (  "  “y,,R,‘hŽ“y,h  ¯”   
   “y,      _	  _	    _	    _	  &  
&˜0°6,.À]0°6ü&*     ß    _	  h _	  ðµ€  $ðµ   ðµ@ $  0°6k2g
‰‹ð
ãfîjh Nq„!*  :       ê_	  0 ì_	  êÁ  &  ÿ8!êo^Ófì"´'„!$ê(´'**  ` _   @‰"_ ä@‰"û@‰"ø@‰"õ_	    <!      ä(0&5&  † $‰ÿR   ße   ÿ•    Ÿ
  ÿ    ße &  
 d d¼ d¼ dÿ8!  d   ¨   ÿ•   Ÿ
  ÿ    ße   ÿ• &   d
¼ d¼ d<! d d  Ä   Ÿ
  ÿ    ße   ÿ•   Ÿ
&  ¼ d¼ d0<2 d d¼ d   Þ   ÿ    ße   ÿ•   Ÿ
  ÿì*  ¼ d0.2
 d d¼ d¼ dì   ú   ße   ÿ•    Ÿ
  &‰ß    ß&   d
 d¼ d¼ d¡d²¡d8w$      $‰ÿS   ße   ÿ•    Ÿ
  &‰ß&  S«ÕZEf{Q d d¼ d¼ d   6    ß    $‰ÿT   ße   ÿ•  &  ¡d²¤d      8"
S«ÕZEfåQ d d  R  Ÿ
  &‰_	    D‰  F‰  zßU*  ¼ d¼ dü&0.2t }t Xz"  l    ßU    Õ‰B‰À%  _ | ßU  *  X:†˜“yg'
‘&“yg'/tÖ2|  Ý&  Š  ñ_	  ßE    ßE    _	&  “yg'
Ý&“yg'‘&“yg'     
î
ð_	    _	  _	  (  T[yîðü&0<20&5(¸*  ¸    òä Àòðµ  ,.   ,6   *  ÿ8!<!ò
ä ò ÿ8!(<!*  Þ_	        
@‰"x@‰"u@‰"r  Á  GÀ+
 0<20.2*  îÂ , ×  ƒÃå ÑÃ
      Âü‰Pæ  æ  î&¡d²  *  ß    ß    ðµ  ß  &  S«ÕZEf{Q
S«ÕZ¡d8w¡d²¤d8"  D  ß    _	    Ÿ  Ÿ&  ¡d²EfåQ
S«ÕZü&0.2S«ÕZ  X  F‰  j_	  _	   _	    À*  ¡d²t X
j³’˜N`’˜ü&0<2&  rî$ÿÿÈ0 _	ºÞßU    ßU    F‰&  îºÞÚd&“yg' õX&"“yg'  ”  ¬F‰  ØßU    _	  (  &t#¬
+t„!ØÝ&“yg'“yt!*  ¨ªßU    Õ‰ ãÁ €†Á
ü€‡Á
  ª
X:†˜“yg'$  ÎüÕ… E… @‰"@‰" _	  ‰      “y¤       X      N   ÂHÁ*  “y 2    ÂHÁ   ¯”L  Œs°r@  þv@@  "      (  “y 2,œ Ê«h  ¯”   
   “y 2  *    fÕ&f¦æ&AB@Õ_š 
5
 „Dà  š *  & ˜ C ‚'fÅ˜ …
sš _qš D  ˜ ˜ š "š *  L ˜ Ä` ðƒî…Á	 ‚B †Ágš ÷Í
  ˜ "š *  r u öMu òÍUU
„ƒ‚€……   ˜            ÆN   ÂÀÆ*  “yšw    ÂÀÆ   ¯”L  &˜@  0.2@  *  0<2@  0?4@  0O4@  0&5@  0°6@  *  À+@  k2g@  ü&@   d@  ¼ d@  *  @  &ðÈ@  &0Ï@        (@  ´'*@  *  ´'„!@  ´'çz@  ´'‰‹@  œ,äf@  ,.À]@  *  X:†˜@  õX&@  T[y@  o^Óf@  ¡d²@  *  Úd&@  EfS@  ãfîj@  2gÀÁ@  2g È@  *  2g@Î@  Nq„!@  Œs°r@  tàL@  t X@  *  t }@  t X@  &t#@  +t„!@  .t)	@  *  /tÖ2@  þv@@  ­x @  “y¤@  “y&@  *  “yt!@  “y†!@  “yg'@  “y–y@  Ý&@  *  ‰‹ð
@  øÐ@    @   d@    @  *   d@  	  @  	 d@  µ Z@  ‘&@  *  S«ÕZ@      (  “yšw,Všw‘h“yšwh  
  ¯”   
   “yšw      _	  _	    _	    _	        &  
&˜0°6,.À]0°6ü&     ß    _	  R_	  R_	(  0°6k2g
‰‹ð
&˜Rü&R*  *   ú _	  ðµ€  eðµ  a_	   F    ãfîjú 
Nq„!o^Óf$F"  P J0 T
PF‰  À ß    ,‰
À(  J
TP.t)	À 	 døÐ
*  n   ¬  -¬  )ð‹ &ß P H  	 d P&H*  ” " ø _	  ø Á  _, F6ß P_ N "  ø 
´'„!ø ´'*FP$N*  º L_	z_	  JÁ  _ H"ß P¬  ð"  Lz´'„!J´'*H P*  à ¬  ð‹ ðµ         ä  @‰"_	  ‰@‰  $“y¤*  "ú@‰"÷@‰"ô$‰ÿP   ße   ÿ•    Ÿ
   d  d&¼ d$  ,  _	ŒÿT  ße   ÿ•    Ÿ
  &‰ß(  ¼ dŒT d d¼ d¼ d  L    ß    ÀPx >_	  (  ¡d²0O4
S«ÕZEfSP>´'„!*  bJ_	z
‰   ŽÃ  ó<   ó 2 ó• 4 ó"  Jz´'*	   Ž	 d*  ˆ 8 . Ã  ó•  _	ê_	”_	  RÃ     	 dê” ,.À]"R(	 d*  ®×¬  ó•  _	êÎÃ  ó•  _	ê_	”  ê	 d$ê(”  ÔÄ_	    D‰  F‰  ößU    ßU*  ü&
0      <2t }t XöX:†˜“yg'&  î    Õ‰ßU    B‰À%  ô@‰"_	  ‰_	&  ‘&“yg'Ý&“yg'/tÖ2 “y¤    _	  _	    _	  _	  &  T[yü&0.20&5(  $  „Š_	  Š     _	&    „
ŠÀ+Š0<20.2  :    ßU    ßU    ßU&  ü&0<2
X:†˜“yg'‘&“yg'  L    ßU    F‰  |F‰  *  Úd&“yg'
õX&“yg'&t#|+t„!  `€ßE    ßU    B‰À%  _	  *  €X:†˜
“yg'Ý&“yg'/tÖ2“yt!*  z|Õ‰@‰"_	  ‰  ÿF  ße   ÿ•   Ÿ
"  |“y¤      F d  d&¼ d"     ÿH  ße   ÿ•   Ÿ
  _	  ÿ*  ¼ dH
 d d¼ d¼ d0&5  ¾    ße   ÿ•   Ÿ
  ÿ  &  0.2 d d¼ d¼ d0<2"  Ö  ße   ÿ•   Ÿ
  … 
‰è  òß(   d
 d¼ d¼ dè  ò*  ô    (‰ v$‰Ã  À   À ÀÀeô?    døÐ
 v	 d&ô$    ße   ÿ•   Ÿ
  À  ?8   ße &   d
 d¼ d¼ døÐ d$  :  ÿ•	   Ÿ
  À  ?8   ße   ÿ• &   d
¼ d¼ d	 d d d*  Z  Ÿ
  ?8   ße   ÿ•         &‰… ‰‘ ßµ€  (  ¼ d¼ d d d¼ d(´'* &  €ßÕ€  ‰        … ‰$‰ÿN   ße (  
´'* µ Z´'‰‹´'*´'çz  d*  ¢  ÿ•    Ÿ
  À  >‰Ã  ó• ÿÿ " _	  ä*   d
¼ d¼ d	 d¼ d&œ,äf(ä*  ÈÀe2 ?  ße   ÿ•    Ÿ
  &‰‰‰ 	     
 d d¼ d¼ d  î  1   ò*  ò
   é é ê ê ë                         (                                             <      0        2  2    <  <  ^ªÂ                        ^
ªÂ       @N   Â€À*  áyx    Â€À   ¯”L  Œs°r@  þv@@  *  ³à~@      (  áyxl¯ˆwhv E`€Wh  *  ÍdÀDhœhf  h2[g 2h¶ Xq+KhŒ[qs"h–   \qíqh”¯”   
   áyx  *    ‰@_ø_ü_	8 _ *Á Ââò Âe  
øü8 * â*  &  Á
ùòÁ ƒ
Á
ýò    2 €Âe °  ³à~*  L  ŸT ‰  ðø 
Ã °r Â0
 Ñ°
  T ø*  r  ‰‰@_ü_	8* Ž ‰    0
 ‰‰  ü8*Ž *  ˜ @_ü_	8*0
 0
 0Š 0Š ‰‰@_ô  ü8      *(ô*  ¾ _ú_ü_	8*ßú_ *   "  ú
ü8*ú*  &*  ä  ø°
 0,  °
 ßô‰    øò
  øô$ø&ò*  
ßô_	\‰  ð  øl ôl ôß
úÜ"  ô\ðøô"ô&ú*  0‰‰@D_ú_ü_	8*ßúoð'ú kÄ  úü8*ú"ú*  Vðçú  l_	\‰  ðòð
  Á  úl\ðò*  |òTÂ
ýß
úî‰ßŒþß”þßœþ"  òúŒþ” þ&œ(þ*  ¢‰@_ö_ô_ü_	8*ð'ö 5†_	¶ðçö"  
öô      ü8*ö$¶(ö*  È _	\ß%Œþ Þ‰  ðòß%œþÿ"  \ŒþÞðò"œ$þ*  îò	ÁòÂô RÃ
ý_	Î‰  ß  òòôÎ& *  ô$ ø‰  ð  øî_	4Åü‰  … À  ô$øðø4 ü*  :ÁâÂ 1  Áe Â
ùE… Õ@… 
  â*  ` °r Ã‚
 Ã
ðp ßð°  °   ð*  †_	’œ ñ…   œ °‰  °²  ð—¦  ’ñ ° °"²(¦*  ¬ …    … ÁÒÂ  Â
ýÀÒ… Á   Ò "Ò( *  ÒÂ Â
ýÀ …                                *  ø                                      *                                        *  D                                      *  j                                      *                                        *  ¶                                      *  Ü                                             œN   Â˜Æ*  òyÀ+    Â˜Æ   ¯”L   d@  ¼ d@  *  ¯ˆw@  Y d@  HØh@  H i@  î'€%@  *  |LÀ@  E`€W@  6a K@  ÍdÀD@  hf  @  *  [g 2@  Xq+K@        [q`"@  [qs"@  \qíq@  *  Œs°r@  þv@@  n€%@  øÐ@   d@  *   d@  	 d@      (  òyÀ+,.Œ×h6 
  ¯”   
   òyÀ+  *               	 c ç'ÿÿ          T1T3   *  &  E1E3F         ‰_	Þ
 

 
 _	Æ  Þ  
 $ (Æ*  L R \ ÀH‰ Ÿ
 ôF‰ºŽß @‰ _ ÀD‰  R \ À Ž &À&  r ÃŸ
 _	ÆŒ ‚ ÀF‰Ï”Ÿ

 À  ß (   ÆŒ ‚ À”
  øÐ$ *  ”   H‰ ß
   H‰ F‰k< ß    ,‰šÀ&  øÐ
 øÐ<  	 d"øÐ&š*  º   ¬        @‰ _ Àðµ   ø¬  ôðµ   øÐÀ*  à  ð
 F‰Ö^F‰‰ ß    ,‰¦À  ðµ  $  
 ^  døÐ ¦$øÐ*   @‰2 _ À¬  ø¬  ôð‹ ñÁ    À(	 d*  ,A 
 ¬  œ ×  ƒÃ Ã
ÃÃ*  R C Ù‚Ÿ
 F‰‰h_ ô _	  À$‰ÿ<   ße"    hô 6a KÀ& d*  x   ÿ•    Ÿ
  À  >‰ß ?
  ße   ÿ•*   d¼ d¼ d	 d   d& d$  ž    Ÿ
  À  >‰ÿ    ße   ÿ• &  ¼ d
¼ d dn€% d d&  ¾  Ÿ
  &‰_	   _	   ß   L‰       \_	(  ¼ d¼ d[q`"[q`" øÐ"\*  à<Àß
 ß
 ß    L‰ ¬$‰ÿ=   ße (  <À
 
 	 døÐ¬$ d(    ÿ•    Ÿ
  ß
 ?
  ße   ÿ•    Ÿ
*   d
¼ d¼ d
  d d$¼ d  *  ß    _	˜²ß    L‰ (  ¼ d
	 døÐ˜²Y døÐ*  D¸_	˜²&‰ß
 ¿_	PÀÏ$‰ÿ>   ße   &  ¸˜
² PÀ" d( d"  jÿ•    Ÿ
  ÿ    ße   ÿ•   Ÿ
&  ¼ d¼ dî'€% d d¼ d*  ˆ  &‰@‰3 @‰5 @‰Q @‰X @‰‡ 
‰  ¼ d*        ®P ‰Q ‰R Õ_	‰&ß    _	¼    d"øÐ&¼(*  ÔÀ  ¬  @‰ !¬  ðµ   ð‹   øÐ*  ú@‰ F‰@@‰Ýß    :‰*À  ¬   |LÀøÐ *$øÐ*    @‰ ÕÕE€… ß 	_	  "    ÚŸ
   [g 2 " " $  &Ú*  F2 ñ_	  $    ÚŸ
4 è                   2 
[g 2$    Ú4 *  l                                      
  ’         \  \<   `  `0   x  x   Ž  Ž     ˜*  ˜‰À  ¬  ‡œ v(‰\¸>‰      Õ‰E‰‰  øÐv\¸*  ¾
 _	  8Ã  ×,2  Ÿ
 ß ß  ê(   
HØh8øÐ   &øÐ(ê   ä_	  (     8Ÿ
. ß  _	  (  [g 2(   8. øÐ[g 2    *     8Ÿ
0 ß 	_	  "    (  *   
80  [g 2"    *  8Ÿ
2 _	  $    8Ÿ
4 Õ‰E‰‰ß $  82 [g 2$    84 (  B ß
 
 %‰
 ß
2 _	  " 2  (   
   2  \qíq"" $2 & $  fÚß ß    ß À  ß
. ß  *  Ú  døÐ øÐ.       "øÐ  †_	  ( .   Ú_	  Úß
4 _	&  \qíq
( . ÚH iÚ4      $ 4  Úß ß    À(  \qíq$ 4 
 Ú  døÐ  ¸  ß
0 ß  Ì_	  * 0   Ú_	(  øÐ0 øÐÌ\qíq* 0 Ú   Ò  ÚÕ‰E‰_	  ( , *_	  * (  H iÚE`€W( , *E`€W*   î, *_	  " & *_	  $ & *  , *
E`€W" & *E`€W$ &   *… _	  ( *_	  * *_	  (  *
¯ˆw( *¯ˆw* *¯ˆw  " *_	  $ *… ‰   " *
¯ˆw$ *       |N         Â¨À*  ôy    Â¨À   ¯”L  @  Sð_@  *  ²2CM@  vL@@  {L€@  Œs°r@  þv@@  *  [zœ5@  [z·5@  Ã €@      (  ôy,ì  ôyh  ¯”   
   ôy  (    _	  ‰ß7    _ ª ß5   _ ª 
  ß(  {L€[zœ5ª [z·5 ª $vL@  $ ´   ß  
 ‰  *  ´ ²2CM
Ã € Ã € Ã € Ã €*  6 ¢     ß8 D 
‰  ¬ ² ßü à ß: Þ Àè Á*  ¢ 8 D ¬ ² ü à  : "Þ &è *  \ ¬ AAAAAÁEðÿÁ@`æ _	  ’Úà â ‰   ¬ æ Sð_ ’"Ú$à &â &  ‚ ü â ß  ü ß â       ‰ü â ße  _ 2 
&  ü â ü â ü â Ã € "2   ¤   
  ‰  ²2CMvL@ ² %  ²   ¸    DUMP OF STT WORK FILE  
  ¸  Ô *  Ô                     SENTVERBELSEPROCPR  ú T    ’  ’
TYPE =    œ)  œ
 STT NUMBER = 
 IDX!ALT!FIR =     Â  Â
 OFF!NUL!END =    Ö  Öÿÿ æ   ¬   ®   ° ÿÿ  
æ ¬ ® °        N   Â€À*  
z    Â€À   ¯”L  @  Sð_@  *  ²2CM@  vL@@  {L€@  ¯dg@  Œs°r@  *  þv@@  [zœ5@  [z·5@  Ã¢ƒ@            (²  
zh  ¯”   
         (    _	  ‰ß7    _ Œ ß5   _ Œ 
  ß(  {L€[zœ5Œ [z·5 Œ $vL@  $ ¦   ß  
 ‰  *  ¦ ²2CM
Ã¢ƒ Ã¢ƒ Ã¢ƒ Ã¢ƒ&  6 „     ß8 D 
‰  Ž ¢ ßØ Ô ß: Ò _	&  „ 8 D Ž ¢ Ø Ô  : "Ò "  X   n¤Ô Ö ‰Ø Ö ß  Ø ß Ö ‰(  Sð_n¤
Ô Ö Ø Ö Ø Ö   v Ø Ö ße  _ 2 
  
  ‰&  Ø Ö Ã¢ƒ 2 ²2CMvL@ ¢   ¢     ¦ %  ¦  ª    DUMP OF SUBRF WORK FILE   
  ª  È   È                          n#  n
VMA = 
 SUBPROGRAM NAME =     Ž  Ž
 ARG COUNT =         ÿÿ  Ò   Ž   ’ ÿÿ  
Ò Ž ’        ÞN   ÂXÀ*  € s    ÂXÀ   ¯”L  Œs°r@  þv@@  "      (  € s, € sh  ¯”   
   € s  *    _”_r_  ž_œŸœ‰_	r~×'r &  ”
ržœœ r"~&r&  & uƒßrlŸlŸ
l_	lxßrnß~*  r
llllxr n$~(  H z×'l 
ƒß
lßçžx_	$x€_	$z*  zllžx$x€$$&z&  l €_	$”z      ß
nßçžz×'n _	$€*  €$
”znžzn"$$€&  Ž ”@ßxvßljßvtßjhßj_	*  ”
xvljvtjh"j&  ° jvß'jn‡ß'jnß'jn‚ßj*  jvjnjnjn$j"  Ò pŸ
p_	p|_	4v|ô Ÿ
jßg*  ppp|4v|ô j   ð žv_	4€v_	$vtË_	$*  žv
4€v$vt$*  €tœ‰CÃ
ßpžÃg”Ý… ÂœCDÔÂ
ý  €tž”œ*  2… ÂœCDÔ$Â
üE… ý†Õ… ÂœCDÔ$
        œ"œ*  XÂ
üÕ… ýƒE…                         ~  ‚
  ‚ ”  ”                   6N   ÂÀÆ*  ƒ… }    ÂÀÆ   ¯”L   d@  ¼ d@  *  ¯ˆw@  Y d@  HØh@  H i@  î'€%@  *  E`€W@  6a K@  ÍdÀD@  hf  @  [g 2@  *  Xq+K@  [q`"@  [qs"@  \qíq@  Œs°r@  *  þv@@  n€%@  øÐ@    @   d@  *   d@  	 d@      (  ƒ… },ºŒŒZhb   5­}ZhÓ¯”   
   ƒ… }  *                                            &                                <             0           4   4      > *  > @               E2F E4F TS        ‰  @ (  d 
  
D 
B 
J 
N 
` _	|ß    ,‰*    
D B J N ` |" d$øÐ*  ˆ <À  ¬  ¬  @‰‰ _ 0F‰º8ßU  <øÐ 0&8*  ®    D‰ÃßE   F‰@È ßU   ß    ß L "      È    Y d"øÐ(L *  Ô _	ÔÀ  ¬  ¬  @‰ _ 0×7    ÔøÐ$0(  *  ú  ðÕ€  H‰ Ÿ
D F‰8ÑF‰@ @‰‘Ô  D 8" *   :‰<À  ¬  ã@‰ _ 0ß>   H‰ F‰k        <
øÐ0>  øÐ*  F<ß    
L 
\ _	ÔBÀ  ¬  @‰’ (  <Y d
øÐL \ ÔBøÐ*  l_ 0¬  ¬  ¬  ðð‹ ì0¬  0*  ’  èH‰ 
B ß D F‰»ö×7   @‰“   B D ö   *  ¸_ 0D‰hß    _	ÔHÀ  ¬  ¬     0Y døÐÔHøÐ*  Þ@‰• _ 0H‰ ßU B Ÿ
D F‰¸(×7   Ø  0B D  ($  *  D‰hß    _	ÔN_	TH‰ ßU B Ÿ
D ß&  
Y døÐÔNT"B &D   *>   H‰ _	  X \ F 6ß  (  > øÐ[g 2X \       F 6Y d$  B  
\ _	ÔR_ \F‰ÖvF‰‰Zß  &  øÐ\ ÔR\vZ" d*  b  ,‰`_	fßU   F‰‰~ðF‰¥žD‰h   øÐ`f  ~$ž"  ˆß    ,‰l_	rßU   _	  0_	(  	 døÐlr  6a K0*  ¦   _	   $‰ÿ?   _	ÂÀ  >‰×7   _	"  [q`"
[q`" dÂ d"  *  Ì¾À  >‰×7   _	¾À  >‰ß>   L‰$  ¾
 d  ¾	 d$> &øÐ(  ò x×7   ?
  ÿU €  _	Â,?
  ß  &  x
   d dÂ" d&Y d*    L‰ |ß
D ß      D ÿU @  À  ¼ € ðÅ   øÐ
|D D  døÐ*  <€  ÿU    _	Â¬  ‡œ  (‰ €>‰ß   dÂ " $€$  bD Ôÿ    ße   ÿ•   Ÿ
  &‰ß> (  D 
n€% d d¼ d¼ d"> $  ‚  L‰ 
ß L _	(6
L _	  X ` *  øÐ

L (6L \qíq X "` *  ¢\ 6Ÿ
` ß\ ß
\ _	(6÷$‰ÿ@   _	Â(  \ 6
` \ \ (6$ d(Â*  Èß    L‰ „À  >‰×7B  _	¾L‰ ˆ$  Y døÐ„øÐB  ¾(ˆ*  î>‰×7B  _	¾L‰ Œ>‰&‰º$‰ÿA   _	  B       ¾Œ& d*  Âÿ    ße   ÿ•   Ÿ
  &‰Õ_	œ‰‰h (  Âî'€%
 d d¼ d¼ d"œ*  :ú@‰Š ÷@‰Q ô@‰” ñ@‰– î@‰— ë@‰X è*  `@‰‡ å@‰2 â@‰˜ ß@‰™ Ü‰X ‰W ‰V ‰*  †U ‰T ‰S &À  ¬  ¬  
ðµ     øÐ*  ¬ð‹ Õ€… Eü?
  ße   ÿ•    Ÿ
     d d$¼ d(¼ d*  Ò… ‰_	  $Ã  ×,2  ßL Ÿ
N ß  þ$  
HØh$øÐL "N &øÐ(þ"  ø_	  P   F $Ÿ
\ Ÿ
J ß  _	&  [g 2P F $\ J øÐ*    T   F $Õ‰E‰‰ß    À  ßL       ß*  [g 2T 
F $ døÐ øÐ$L "  <N ^ ß^ ß
^ _	  P ^   xß
*  N ^ 
^ ^ \qíqP ^   x  ZJ _	  T J   x_	  xß(  J \qíq
T J   xH ix&  pL æÕ‰E‰_	  P R ¶_	  T V ¶_	*  L E`€WP R ¶E`€WT  V "¶  ’  X F ¶… _	  P ¶_	  (  E`€WX F 
¶¯ˆwP ¶¯ˆw  ¨T ¶_	  X ¶… ‰   T ¶
¯ˆwX ¶       N   ÂÐÀ*  e†Àv    ÂÐÀ   ¯”L  Y/€p@  Œs°r@  *  !t8X@  þv@@  ´ÀX@  µ Z@  Âà’@  *        9©x‚@      (  e†Àv,jØµWhÌA  hÞ*  )t  h  E©ãfhÔ ªxhª¯yhà¯”   
   e†Àv  *    _	  —, ÿÿ€ ; 
—¬  —¬  —¬  Y/€p*  &   .Àí +Ÿ L ¦ ŸN æêŸP _	Ô   L N  ê$P (Ô *  L       fæ   _	Ž   € _	†€  !t8XŽ Âà’$†*  r ¾/   Îe íÖÆe 2 … _À €   "À *  ˜ Ð"ÿÿ$ú‡6 öå  &âŸÂ &
ŸÄ   â"Â (Ä *  ¾ ‰      Ö 
¤  
… &f¦æ&@BA*  ä CÑ• ”Â
_	_	¤ _	´ … €
    *        
¶ „ƒ‚… Æå Ÿ„æÎ Ä„Â
"’
  „"„*  0¤- ô•$ ÿÿÎ
õ¦&fÀ„ß	  †—     „"9©x‚*  V~  €‚Ñ‹
ÂÜÆe ¤ … Î
åÔ•  û*  |Æe ´ ö  ¦6
 fÎeþ&€&
Nœ Ž
*  ¢ÎeW"ÿÿv  
†1" ‡fÑ_	Ìê¶ €   Ì&  ÈÖ… &
’$Î
üÖ!(…              *  ‰fÕf@=
  „c&“Ì•  ¶
 ¶ &

&
*  8”6” N
¡ A¡ ÁP}`  ö
 ìÖ  ^Œ•Ö…‰         dN   ÂøÀ*  Œ     ÂøÀ   ¯”L  d@   d@  *  ¼ d@  &®S@  Y  @  Y d@  U(@        *  Œs°r@  þv@@  é…ÖM@  øÐ@    @  *   d@      (  Œ ,PŒ8h  ŒH;hü
  ¯”   
   Œ                     š *  š   TI‰
 ß    ,‰²Á  W¬  {W¬      Y døÐ²øÐ*  À  w4‰UF‰crß   B‰ ¹Ÿ
   R  r  "  *  æ Ÿ
   ©_	4lŸ
 ;P‰À  À
À 
     4l   & (
    
 ßš   _	  œ 
  š $‰ÿJ &   
š øÐdœ 
  š $  (  ?Š  Ÿ
  ße   À  >‰ÿ    ÿ•  *   d¼ d¼ d døÐ         d$  H  Ÿ
  ße   &‰_	     Àš   _	(  ¼ d¼ d d&®S Y  š *  h  !@‰Å!"$‰Ã  Ä  Ô2 Ó•  ß Ôž   U(¼ d d" (ž *  Ž 
Ó•  Ó•  ß    À  >‰&‰Õ‰@‰  ¼ d døÐ*  ´Æ!‰                                    Ú                             ¸  ¸<   ¼  ¼0   Ô  Ô    ê  ê    ô*  ô        ‰
ô
ö
ø
úß    :‰Ÿ
"  ôöøú Y d"øÐ&*  ô,‰PŸ
ôÀ  ¬  ¬  @‰Ë  ô
Pô      øÐ*  @é@‰ËH‰ Ÿ
öâF‰­`_	4ŒŸ
øF‰Ö„  ö`4Œ"ø(„*  fF‰zxF‰¾~Ÿ
ú@‰q÷@‰r÷F‰z’ð  x~ú&’*  Œ@‰Ê!Nßô@‰!HßöE$‰Ã  Ä  Ó3   ôö  d$¼ d*  ²Ô•  ßøÓž  
Ô•  Ô•  ÓöÔ•    
øž $ö*  Øß    À  L‰ 0¬  
¬  œ    d
¼ døÐ0(  þÒ(‰¸*>‰ß
öëÿú  ße   ÿ•    Ÿ
(  Ò¸
*öú d d$¼ d*  "  &‰Õ‰@‰Ë!‰‰= _	  JÀ¬  Õ  ¼ dé…ÖMJ  H…  
Eü             ìN   Â˜Æ*  	Œ€%    Â˜Æ   ¯”L  À+@  ü3!@  *  n –@  (@  Y  @  3!!@  Y/€p@  *  >9À]@  @9Ð@  0X@~@  |XÀ+@  ÉX -@  *  îXÀv@  ¯Z }@  ÑZx(@  ¯d d@  Ófg'@  *  Œs°r@  )t  @  þv@@  –w?@  “yt!@  *  Õ‰ýM@  ZŠ¿@  ¹€%@      (  	Œ€%, "  ²d0 hŒýMh² 	Œ€%h ¯”   
   	Œ€%  *         ‰_	  ˆ ß  ×'   ‰™!ße   “yt!ˆ |XÀ+0X@~  &   ‰        
  
  
*  @9Ð¹€%
@9ÐîXÀv  ÑZx(ÉX -  <   Ÿ
  Ÿ
  ß    Ÿ
  ß &  |XÀ+      ¯Z }>9À]>9À]ÉX -ÑZx(  T   _	    ˆ  ß   Ÿ
 _	*  |XÀ+(
Y  ˆ  ZŠ¿  *  n        ßU   _	Š _	æ Õ‰‰_	   	*  À+  
>9À]Ófg'Š æ $)t  *  ” @‰_	þ _	  —¬$ . õ ‰ó‰_	  ä Ÿ
  þ Y/€p$“yt!&ä *  º   ß  @‰“_	þ _	  
  ßU   
  _	*  3!!¯Z }þ ü3!Õ‰ýM"Ófg'&|XÀ+*  à æ Õ… F‰yü F‰ ô @‰í_	þ … ß  Ÿ
  æ ü ô þ $–w?&  ßU   _	   … 4     
Ófg'¯d d       æN   Â¨À*  Œ@          Â¨À   ¯”L   d@  ¼ d@  *  ž!/K@  #g'@  Œs°r@  þv@@  à‰	@  *  Í«@      (  Œ@,² #ßrhL Œ|—h    Œå`hh 6­5fh± ¯”   
   Œ@  *    ¦œ& ²œ' & F‰Ú> ²•& ß  ‰E_ B —¬$   > Í«$B *  & . ‰fN‰‰g_	L _ H ²•& ß   Õ…   L H $#g'*  L $‰ÿZ   ße   ÿ•    Ÿ
  &‰… ò• , —¬$   
 d d¼ d¼ d*  r . —¼  P‰óß  Õ2Š, … ß5     à‰	&ž!/K  ˜ P‰—¼  ãÕÕ2Š, … ‰ø       	N   ÂHÁ*  Œ`"    ÂHÁ   ¯”L   d@        ¼ d@  *  &ðÈ@  &0Ï@  Y  @  Y d@  œ,äf@  *  è:  @  [q`"@  Œs°r@  þv@@  øÐ@  *    @   d@      (Œ`"h ¯”   
         *                    ‰
 
 
 
  
     " &  (  &  _	,  4 H R H‰ ß   H‰ Ÿ
 ðß*   ,
  4 H R  øÐ" *  J     :‰` @‰!Ÿ
 Ÿ
 äß @‰!F‰Ô¤ "  Y døÐ
`    (¤   p _	,  | Œ ž ß 
 _	6ô(  ,Y  
| Œ ž  
 6ô*  ˆ &N_	 ˜ ˜ ž ž ß ï@‰!AF‰¬° Ÿ
 &        &
 ˜ ˜ ž ž  $° ( *  ® F‰X¸ @‰!4F‰ÃÆ @‰ß    ,‰  
¸ Æ "Y d$øÐ(*  Ô À  ¬  !¬  ¬  ¬  ¬  Y d*  ú   ð‹ ß 
 _	6 &	_	 ""  
 6 &" $&("*   "@‰!‰Õ‰‰@  ,‰š¬  ,ß    "øÐš( *  F¬  ð‹ $ß   ß  ð‹ ¬ 
    *  l ¬  ß  ¬  ß  ß
   $ *  ’  ÕÕE‰‰ß  _	  ¶Ÿ Ÿ
  ß    è:  ¶" &  *  ¸    :‰ìÀ        ¬  ð‹ ¬  ,  Y døÐ
ìY d*  Þ Ÿ
  ÕÕÕE‰    ÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿ     *       ÿÿÿ¨´¼Ä  ‰@Á Áç .ð  ¨´¼Ä  $ *  F
  ~4_	   _	   ß    L‰ ¤ß*  
 
~4[q`"[q`" d øÐ&¤*  l   L‰ ¤ÿ ¸ÿ8‰  Ž€À
Àx	*è×'4    øÐ¤ Ž"*(4*  ’ô@‰S @‰T E‰Õ‰_	vÄ _	È… _	v  ôv"È(v*  ¸Ä … _	vÑ … _	vÒ …                   
  
vv*        Þ                                      
           Î  Î<    Ò  Ò0   ê  ê            
*  
  ‰ßë 
ß ßú 
ß  ß Ì  
 
  " $Ì*  0ÌÀ   " _	  Nð'Ì4 @‰!À  ¬    Ì dœ,äfNÌ$Y d  V   (‰Ît_	  
    &  
øÐÎt&0Ï
Y    *  n  _	È‰‰_
ß ×'  À   " _	    È
  " d*  ”  ¦ð' 4 @‰!À  ¬    (‰Î   œ,äf¦
 Y d$øÐ(Î$  ºÆ_	        
    ‰‰$‰ÿN   ße   ?Š(  Æ&ðÈ

Y     d  d*  Ú  Ÿ
  À  >‰Ã  ó• ÿÿ " _	  Àe2 ?$  ¼ d¼ d d¼ d œ,äf"     ße   ÿ•    Ÿ
  &‰‰    d
 d¼ d¼ d       hN   ÂXÀ*  Œ }    ÂXÀ   ¯”L   d@  ¼ d@  *  Œs°r@  þv@@  ŒH;@      (  Œ },r   Œhh ŒÞhh ¯”   
   Œ }  *                     &
 F‰œ( ß:      "( (  *  & ß9   _	  $‰ÿ    ße   ÿ•    Ÿ
  (  
  ŒH;   d d$¼ d(¼ d*        L &‰ß Õ@‰I ß  è€… &ß  ×    &        Î N   Â Á*  ²ÀD    Â Á   ¯”L  Œs°r@  þv@@  *      (  ²¸L¨ ìØ™h  ²ÀN¨ hØ™h   T«, T«h  ¯”   
   ²¸L          
   ²ÀN          
   T«               p
N   ÂpÆ*  ²Àv    ÂpÆ   ¯”L  ""œw@  :Ps@  *  \gÏ@  ‘m }@  Œs°r@  þv@@  Õ±à@  *  ™²`;@  ª²e;@      (  ²`wì ²Àvlâ*  ±ãLht±„fh˜¼8hª¿Ödh&ÂÝh"*  Â	h¸Ã qhjÇ-qhHÇ‰shL¯”   
         ²`w      ‰   
 …                

  ²Àv  *    ñ‹\ U%… fÎE ÿ±#L XŽ
±P &_N  _
  &²`w *  & P  @J p æ °  4 Îe °6 pœZ ( p  ²`w ²`w *  L R  ß	  ,‡€ñÕ  … ‰ñµ   ñµ    
Õ±à*  r &@J pœ[ ( pV  ß	  ‡€B± BC<   ™²`;*  ˜ Ä “Ä
ý‚ñÕ  ‰‰ _	  ÀÒ _	  À    ""œw Ò $\gÏ(:Ps*  ¾ _	  _   Àò _	  _     I/O ERROR IN WO  \gÏ
‘m }ò \gÏ‘m }  ä RKFILE SYSTEM   ò *  ò   )ATTEMPT TO READ GARBAGE BLOCK IN WO*  RKFI      LEf¦þÿñµ  ñÅ  ñµ  _	*  >Ð&@J pœZ ( pR  ß	  «‡€ñµ  ‚  Ð™²`;*  d… fœ ÎE ÿ±#L ±L Ž
±P &_N  _
  &²`w *  ŠP  @J p<  æ °  4 Îe °6 pœ[ (   ²`w ²`w *  °pV  ß	  †_ ® €ñÅ  ñÕ  Å‰B   ª²e;® *  Öƒ ÄÃa@ ÷Ä üÄ% ù@ B f*  ü„”Ä
CaüÐö…D
 _	t‰‰æf   t*  "v þÿB  ‚c„’5E Å`ñ‹] 
ñ5  *  HÃCl ‹
°
 @“
@l: ’ß B
 a_	
   ²`w (  nª Êµ€ _	`   ÊÅ€ Cl  ŠŸ _	*        ª²`w ` ²`w ²`w $²`w *  ’    ’ˆ•_	ªÖ…‰Ä ÄDl< … ‰    ²`w ²`w ª*  ¸þÿ´Š\  4-4 , 4& Cc0 ´, Ÿ 
  (²`w *  Þƒ`æÃ’ô0 , v¢ !‰° _	  ž  "$²`w &²`w *  0

 m  ‚’m
 ÊÕ€ Á ]Â ÃÿÿÑÂ
ý
  ²`w *  *4Š\ Ö‰‰  ‰ Ý‰þÿ0,  Õ *  Pm ƒ’ð ß _	  0
 Ý ‰Eý@&  ²`w ²`w ²`w  ²`w *  v Ðþ&

&‚cƒ
È 1  ƒ÷¦Ä ‰*  œ
 !‚Ž €Ð„#ÈùŽ

ø‰	 *        Â€
Èêdü€
Èäˆdú
Ž
÷D *  è@
 •B 
ƒ
”“Êƒ
ÈÅ ÐÐÎ
ú°”ÿÿÖÎ*  óÖB
 ƒ’Â`‚
€ ‰ … ‰@þÿ0 Ð*  4PP
0
 @_	´
 _	‰‰@BDA
   ´²`w
 *  ZaÃ% _	´
 0

   _	 
 
 *  ´²`w
 ²`w  "²`w $²`w
 *  €Ñ	œ A’ÃÃg
 0a
 _	“Ä
ýþÿm  B’  ²`w
 *  ¦m
 ÊÕ€ ,
  Å‰‰@þÿ,  	±Š]   Ì_	<
 1Š]   _	 &  <
²`w
 ²`w ²`w *  æ
  ß ß  ÃÃg
 _	Ë%ÿÿ0,  Þ&  ²`w
       ²`w ²`w ²`w
 *  0, 
 ÕÕÕ ‰Eý‰@A&
N”A’_   ²`w (²`w *  2_	  ÎÎg _	‰‰@_ f Ÿ*  ²`w 
²`w ²`w  ²`w *  X _	  BDÃ
 _ –‰@B þÿÂ
Á  ²`w ²`w  ²`w
 –*  ~m Ã’C ÷ÕÕ‰fÍ…û‰@À, A*  ¤@lþÿÈA0" p  A CþÿÄl ¬   Ê	Lœ p  p
 
 ‰‰        ¦N   Â Á*  ¼À]    Â Á   ¯”L  @  ""œw@  *  :Ps@  \gÏ@  Œs°r@  þv@@  ±ãL@  *  ¼8@  ›’BxH à¯4@        ±lE@  h±p!@  *  Õ±à@  ™²`;@  ª²e;@      (  ¼À]|L"  ³ÐMhÌ¹VXh~ ¹‘Zh  ¯”   
   ¼À]  *    ‰_	  @ðÿÿL  J ð• # ß	  ‡ß	  †_   h±p!$±lE*  & ö Á Â ß	  †
ß	  @0
0 p Á
&
ƒ“  ö à¯4à¯4*  L l ŽŠ““Á
ù‹•Â’°4 
&
“°# l  	Š*  r Ž
÷Ö0
 ‰‰A_	  D Dì ŠÄ „Ä
_	  *  ˜   B
 €’`±: q < &
C  `‚
_	  ¢“  ±ãL&¼8*  ¾ ±#L ±P ±
P &@J 0 pœV ( ß	  ‡  &Õ±à*  ä ß	  ‡€Ž
À
âÖ‰_	  ÀD_	  _	  À  ™²`;""      œwD \gÏ&""œw$  
^_	  _	  Àt_	  _	  ÀŠ_	&  ^\gÏ""œwt\gÏ""œw Š*  *  À  _	  æ æÿˆæ3ÿˆ  FILE OPEN  \gÏ:Ps\gÏ*  P ERROR IN WFLO  WRITE ERROR IN WFLO    vWAIT ERROR IN WFLO   Š  Š  READ ERROR IN WFLO     *     (ATTEMPT TO READ GARBAGE WF BLOCK IN	  Æ WFLO    Ì*  Ì‰A_	  &
ƒ“Cl  Ä’Ž
±# ÷Ö‰ŠB:   
*  òaŽ¢(
ŠB
 aÊµ€ íÊÅ€ _	  ±#L ƒ±L   ¼8*  ±P ±
P &@J 0 pœW ( ß	  †_ ß	    ª²e;$(™²`;        >†_ €Ì‰          † N   Â¨À*  ÄÀ]    Â¨À   ¯”L  Œs°r@  þv@@  *      (  ÄÀ],  Ä@`è Ä@`h  ¯”   
   Ä@`               ¤N   Âðæ*  «‘ }    Âðæ   ¯”L  #@  &˜@  *  d@  ü&@  Ù¨s@  Ú$`@  	 –@  *  Q(@  U(@  I: –@  Œs°r@  þv@@  *  “y42@  µ Z@  Ãpq@  Ä s@      (  *  «‘ },¤„sø8h„s2gh„s‰‹hj€%h*  «‘_`hæ «‘``hr«‘àh$ô’øqh® ¯”   
   «‘ }  *      €     @      
 	        *        &            	 
        *  L                 ! ÿ   *  r         0 @ P ` p             ˜            	    ä   ä      þ*  þ                                      *  $&f¦æ&
fffffþÿfüÿfúÿŸ    *  JþŸ Ÿ NŸ Ò_	–æ—´ ÎEÿŸ¥„   þ
NÒ–´ &„ *  p_ tß§¯ N _ ’_	  ö ß Òß§¯ (  t
¯ N ’&˜$Ò(¯ *  –P _ °_	  ö ß  Òæ—´ ÎEÿŸ¥z $  P 
°&˜Ò       ´ (z *  ¼_ ,Ÿ Ÿ 
_	$  ¶ 
Ÿ  þŸ"  ,
$¶  
&þ*  â Ÿ N_	–ß§¯ N _ Ÿ _	  (  N–¯ N "&ü&(*  ¶  ß§¯ P _ ,Ÿ 
_	  
¶  æ—  ¯ P ,
ü& 
*  .º ÎEÿŸ¥z _ fŸ Ÿ _	$  ¼ "  º z f"$&¼ (*  TŸ  þŸ _	–æ—® ÎEŸÿŸ¥ _ Xß—  
þ–®   &X*  z¯ ä ßE ÿä æ—´ ÎEÿŸ¥z _ ª_	:À æ À—&  ¯ ä ä ´ z ª":$À &æ *   Ç ÀE ÿ_	  æ—´ ÎEÿ      Ÿ¥| _ Æ_	¶ æ 	$  Ç U(´ | Æ"$¶ &æ *  Ææ—´ ÎEÿŸ¥~ _ ¼æ—º ÎEÿŸ¥z _ þ_	  ´ ~ ¼º  z &þ*  ì:Ò rÀ—Ù ÀE ÿ_	  æ—º ÎEÿŸ¥| _ _	$  :Ò rÙ U(º  | &&  ¼ r	æ—º ÎEÿŸ¥~ _ _	  ä æ (  ¼ rº ~  Ù¨s"ä $æ &  4rßÅp ´ ß×„ ´ ß¶ Àµ _	Ž® *  r
´ „ ´ ¶ µ "Ž$® *  Vþæ—® ÎEŸÿŸ¥ _ tß—¯ ä ßE ÿä æ—´ ÎE"  þ®  t¯ ä "ä &´ *  |ÿŸ¥z _ Æ_	:À æ ß§¯ * †_ ºß§¯ 4 *  z       Æ:À æ ¯ * "º&¯ (4 *  ¢ƒ_ ºß
Â _	ŽÀ  ßÂ À—Ç ÀE ÿ_	  æ—$  ºÂ ŽÀ  Â Ç &U(*  È´ ÎEÿŸ¥| _ â_	¶ æ æ—´ ÎEÿŸ¥~ "  ´ | â¶ æ  ´ (~ *  î_ Øæ—´ ÎEÿŸ¥‚ _ Øæ—º ÎEÿŸ¥z   Ø´ ‚ Øº &z *  _ ,_	:Ò rÀ—Ù ÀE ÿ_	  æ—º ÎEÿŸ¥| $  ,
:Ò rÙ U(º &| *  :_ H_	¼ r	æ—º ÎEÿŸ¥~ _ >Ÿ "  H
¼ rº ~ ">(*  `Ÿ _	  ä æ rÖÖÖÖÖÖÖ„ƒ   Ú$`ä æ r*        †‚ÖÀ…    ‰‰  þ’ß’¨
‰  ®    Ä sþ’ ’"¨(® (  ¬”æ—´ ÎEÿŸ¥z _ Üß¶  ‰   ’ß(  ”´ z Ü¶   Ä s" $’*  Ð’Ö
‰  À ”æ—º ÎEÿŸ¥z _ 
ß¼ ‰&  ’ÖÀ ”º z  
$¼ &*  ö  ’ß’
‰  Ò ”‰    Œ ‰__.(  Ä s’’Ò ”$(.*  ‰  ß,
‰    ‰    Z ‰ABŸ  Ãpq
,*  Bbße b_ 4‰  46ß6`
‰    8ò(  b
b4µ Z466`&8*  h<   ò 2 ò• 4 Cœ       ÃE ÿÃ
Ãƒ`ò" 8 ‰  Ž‰_ž_œ‰      ¬ ‰  žœÄ s¬        žN   ÂpÆ*  «‘w    ÂpÆ   ¯”L  #@  d@  *  Dw@  p‹@  ØµW@  &®S@  &ðÈ@  *  &0Ï@  ~Ë@  	 –@  H i@  Q(@  *  U(@  |3g'@  I: –@  lMg'@  <ag@  *  2gÀÁ@  2g È@  2g@Î@  „sø8@  „s2g@  *  „s‰‹@  Œs°r@  þv@@  Dwg'@  ­x @  *  Õ}?f@  ‰‹@  øÐ@  µ Z@  «‘_`@  *  «‘``@  ô’øq@  :©@  E©ãf@      (\  Ù¨shÈ¯”   
         *      €     @      
 	              *  &            	 
        *  L                 ! ÿ   *  r         0 @ P ` p             ˜               8"  8                                 â*  âV                                      V                               æ  æ<   ê  ê0           ‹   "*  "    ¿   À   Á   Á   Î     ÿÿÿÿÐ Î Ð Î *  H    *  n						      *  ”		ÿÿ  ºÿ    ¼(  ¼ 6	dæ¦²‰_RB&€_	  ÚCÀ_	(   6	d
æ¦²RH i Ú*  à  ä€Ä¬ ÀR T 	‡ ^ ‚ÀçT Àx	¼‰$  H iä¬ RT ^  T &¼*  ‰
  ï     þÿÿÿí ï ì î   þ     þÿÿÿü *  ,þ û ý   ï     þÿÿÿí ï í ï   þ     þÿÿÿ*  Rü þ ü þ     ã   ä       å     ò   ó   *  x    ô     é   ê       ë     ø   ù     *  ž  ú     ‰
¢
¤
‰€Âß ¢ß   ¢¤$¢   Ä¤_	Ð
8_	Ö
B_	  
  _	  ß(  ¤Ð

8      Ö
BDw<agp‹   à  _	  :>@âßâ Ÿþ_	*  <ag
d:>@ââ þ$  ü      Ââ_	Ð
8ß:HßDJ8‰H(  &®SâÐ
8:HDJ"H&  $ŸLßHNß'>Nß>NŸ
NßJ*  $LHN>N>N N$J"  >Pß'@Pß@P_	îLNP  Ÿ&  P@
P@PîLNP*  \  ß    _	  À[ÀLÀÀg¢
TT*  2gÀÁ2g È2g@Î­x L¢"
$T*  ‚ß  :2T6   œjÀÀg¤×'Tÿÿ(ß  Dwg'2Tj¤"T*  ¨        %òµ  !óµ  —,2  ×,2    Dwg'*  ÎZT    €, À, 
   œjÀÀg  ZT$j*  ô¤~TŸ
ß_	  T    ¬ ß  Âe *  ¤~
T
&0ÏT¬ "<ag*  € _	  ‰‰	
‰

  ÿÿ    þÿÿÿÿÿÿÿÿÿÿÿ  
U(*  @            	            ‰"  f_	Ð
8_	Ö
B
  _	  ß  _	  *  Ð
8Ö
B<agp‹<ag d$  „:>@âßâœŸš_	      Ââ_	(  :>@
ââœš&®S â"  ¤Ð
8ß:HßDJ8‰H¦ŸLß>*  Ð
8
:H      DJH¦L >   ÂNßgHNß@PßgJP_	îLN*  NH
N@PJPîLN*  ÞP  Ÿ  ß    _	  ÀXÀLÀ,TS*  P
2gÀÁ2g È2g@Î­x L$,&T*  2€   œjÀ×'Tÿÿ%Á@ÁgJt  òµ   jT@J*  * óµ  —,2  ×,2  RT€ 
  "R$T*  P €, À, À@T
Á@ÁgJt    @T @$J*  vßTŸŒßŽ_	  T    ¬ ß  Âe "  
TŒŽ&0ÏT¬ "<ag*  œ€ _	  ‰‰
‰
  ÿÿ    þÿÿÿÿÿÿÿÿÿÿÿ  
U(*  Â                              ‰"  è_	Ð
8_	Ö
B
  _	  ß  _	  *  Ð
8Ö
B<agp‹<ag d$  :>@âßâŸ_	      Ââ_	(  :>@
ââ&®S â"  &Ð
8ß:HßDJ8‰H>ŸLß<*  Ð
8
:HDJH>L <$  DNßgJNßç@Nß@Pß'JPßJ*  NJ
N@N@PJP"J   dPŸ
Pß'P  ß  P_	îLN*  PPP~Ë~ËPîLN*  €P Ÿ  ß    _	  ÀSÀLÀ®TN*  P
2gÀÁ2g È2g@Î­x       L$®&T*  ¦-€×'Tÿÿ ÀJÀç@4  òµ  óµ    TJ@*  Ì—,2  ×,2  	   œjÀÔT   j"Ô$T*  ò  œjÀÂT
ÀJÀç@4  ßTß  jÂTJ@&T*  $Ÿ&_	  T    ¬ ß  Âe € _	  ‰$  $&&0ÏT¬ <ag&U(*  >‰
‰
                              "  d                                 F  F<    J  J0   `
  `     x  x    ‚*  ‚  Ù     ÿÿÿÿÚ Ù Ú Ù   Ë Ì   Í ‰×¬  *  ¨‡ß `ß• eŠ      dß  ×¬  	Àœ `  
`edøÐ(`(  Îeßœ d(‰F.	_	Ö
BßDLßHNß*  edF.	Ö
BDL"H$N*  òJP_	îLNP  ÀLÀ‚T	À¬  *  JP
îLNPL‚T&¬ *  	 –T_	  T  ¬ ‰‰
    ‰_	Ð
8&  –
T&ðÈT«‘``¬ &Ð
(8*  >	_	Ö
B×¬  (À À`h	ßœ j	Àœ l	  Ö
Bh	 j	(l	*  d	_	P
      ÀÁW  	ó‹ 
‰        P
$«‘_`&«‘``(«‘_`*  Š	_ f_2	_p@_4	ß  4	ß	 2	×'H $  f
2	@4		       –4	 2	$H*  °	ß 2	Á>_p2	_Nß4	P×': ß L"  2	>2	N4	P:(L*  Ö	ß:Lß'P  ß  PßgNP×'P ß*  :
LP~Ë~ËPNP"P"  ü	  P	ß Nß  PßçPN_	îL*  ~ËPN~ËPPNî L&  
NP Ÿ  ß    _	  À ßU T_	&  NP2gÀÁ2g È2g@Î­x "T*  <
  T    ¬ ‰        ¦æ&_H
_J
_L
(  &0ÏT«‘_`
«‘``¬  H
$J
(L
*  b
ßH
N
ßgJ
N
ß
N
 

ßL
Ÿ
L
Ÿ
N
øÂ"  H
N
J
N
N
L
 L
$N
*        ˆ
H
æ	 ƒ”Ãå0 &fÁ@Á@e@€eÁ@Á`@  H
*  ®
Ÿ N
‚Î
ëÖŸ N
‚ÀÿÁÿÿ„ƒ‚… ‰€
  N
N
*  Ô
‰ÀAñ   ¬  ‡ñ  ñ  ñ *  ú
 1
 ¬  œ ± œ ñ ƒàñ *   1œ  œ ñ œ ± ƒàñ ñ 1
 *  Fñ 1
 ‰           	  D CCCPDPD*  lLNLjjjZNZN*  LNLjj j"Z$N&Z(N*  ’       -UTMPIPDP  -                  *  ¸                                        Þ             ¬  ¬<
   °  °0   Æ        Æ ”   Ê  Ê   Þ  Þ     ¾  ¾ˆ   è*  è8  7 ‰ß RC@   À  TAW%   ô’øq RI: –I: –"T*  _   Á  _VB`—  ,_   	_	0ß  	 –	 –V 	 –&0*  4 TßçVT ßTXßg  X×'X 	_	Fß(  T
VTTX	 –XX&F(  Z VßçTV_	0ß Tßç  T_	Fß  *  V
TV0T	 –T"F&	 –(  ~Vßœ`šÀ“ÁTÂ ß	  ß–žÀ“Á(  V`
š“T:©– ž$“   ¢VÂ ß	  ß– _	  ™^¤ß&        V:©– E©ãf™^¤(  ¾  $æ  € 6Š  Ÿ ‰  
    ß(  ‰‹
‰‹µ Z µ Z µ Z 
&  âÜîßÞ  
‰  °èÀ¤Áà_	  wßg*  Üî
Þ„s‰‹°è¤à ØµW&  ê æ
°
‰°±ìß•0 °ß• ±ßR*  êµ Z °°±ì° ±$R*  &²ßÕ€ ¾ßÕ ¾ßÕ ¿ÀTÀgVËÃ{ ~"  ²
¾¾¿TV"Ë(~*  L ß ÈÆß È€€
Æß Èœ  
ÈÆÈÆ&È"  rjÆß• Éß—VÊ
‰¤à\Ÿ
  ß(  jÆÉVÊ¤à\Õ}      ?f*    ZÃ°_	    3 À
ÀÀe°ðZ ‰  *  Õ}?fZ
°#„sø8°"Z(µ Z   ¶°ê  ß  ß    ßR®ß *  °ê„s‰‹‰‹„s‰‹‰‹R®$  ÒÞß• àßZä
‰¬¬ ¬ß¬   ‰Ã(  Þ
àZä¬¬ ¬¬ „s2g*  ò°_	    3 À
ÀÀe° ZßZŸ
  $  °#„sø8°Z"Z(Õ}?f&  ß  ZðZ ‰    °êÌ‰ß  Ÿ
*  Õ}?fZZµ Z„s‰‹°ê |3g'&  :  æR‰L‰‰ß  Ÿ
  æR‰M‰  |3g'RlMg'lMg'R       ÎN   Â á*  «‘      x    Â á   ¯”L  #@  d@  *   d@  ¼ d@  Dw@  &8Â@  &xÈ@  *  &ðÈ@  &¸Î@  ÛÏ@  H i@  Q(@  *  U(@  ¯d d@  Œs°r@  þv@@  Dwg'@  *  -yýp@  “y42@  j€%@  øÐ@      (¬  Ú$`h¯”   
         *      €     @      
 	        *  &            	 
        *  L                 ! ÿ   *  r         0 @ P ` p           )  ˜                            ¾   ¾           &6*        
      &6*  Ø ffffffZv    @ 0 P `   @   @  "  fff
fffZv*  þ            @  ‰_¬ B&€_	  CÀ_	  ¬  H i"(  $  (€_¸ _¶ ß  ß¶ ² ß¸ ² À*  H i(¸ ¶ j€%¶ ² "¸ $² *  H¬  L ‚ * ‡À
Àè ° x	Ä ‰‰ 
      ¬ L * è ° Ä *  n        						
*  ”
ÿÿÿÿ	ÿ
*  ºÿ

	
ÿ*  àÿÿÿÿ	ÿ
      ÿÿ*  ÿÿ	
*  ,ÿÿ	
*  Rÿÿ	
ÿ*  xÿ	
		ÿ	*  ž	ÿ							
		


ÿ
*  Äÿ




	

ÿ
ÿ
ÿÿÿ*  ê	
ÿÿ  	
ÿÿÿ    *  **Bj’®äB"*  *B
j’®äB"*  >^6	N	®	Ê	Ü	¼	î	  c  › q  ©   a } ™ "  ^6	N	
®	Ê	Ü	¼	î	*  do       ‹ §   ` | ˜ n Š ¦   _ { — m ‰ ¥   e *  Š  s  «   f ‚ ž t  ¬   g ƒ Ÿ u ‘ ­ *  °  h „   v ’ ®   i … ¡ w “ ¯   j † ¢ x *  Ö” °   k ‡ £ y • ±   l ˆ ¤ z – ²     N  (N*  üNN\†Ì”Ú¢èŒ #Ž # #‹ #‘ #&  NN\
†Ì”Ú¢è*  " # #– #• #” #‰ $’ $“ $Š %  *  H    ü  ÿ   	 
  *  nÿþ  ÿ   	 
  ÿ*  ”  úÿ
ú	


úÿ*  º  øÿ
	


ÿÿÿ*  à  

ÿö

	
      


ÿ *   úÿ
	


úÿ *  , ÿ
	


ÿ	 	 	*  R
	
	ÿ	
	
	
		
	

	
	ÿ
 
 

*  x


ÿ






	






ÿ  ú*  ž
ÿ
ú	


ÿÿÿÿ*  Äÿÿÿÿ	ÿ
ÿÿÿÿ    ê 








     *   ‰
j
n_	  r_	  t8‰rN€À
À&  jn-yýprÛÏt r"N*  &x *ß  _	,_	  _	`H_	dJ8‰H*  *
j€%,Dw`H d$J(H*  LV€	® ße ® Cß        €œ œ @àÁœ   V® ® Dwg'*  rÄœ á@ @³¬  Áœ œ @`  *  ˜À  œì(—,2  Ý×,2  Ù³¬  Àœ  
ì*  ¾ í€œ êòµ  ùóµ  õ€œ  œì€
  $ì*  äÀ ß  €
À öß¬ Àg¬ ® _ ü	óµ  Dwg'ö¬ ¬ "® &ü	*  
@  2ß  _	,À¬ À—¬  ×¬    j€%,¬ *  0¾® x® _ ü	Ÿ  ßL(‰  Rß  *  ¾® x® ü	øÐL"R&j€%(  V_	,À¬ Àj® _ ü	ß  (‰r	R_	8ß(  ,
¬ j® ü	øÐr	 R$8*  z  _	,À¬       Àj® _ ü	À_	8
_	L
À$  j€%
,¬ j® ü	 8
$L
*   *  _	  _ ×, _ N	€_	8
_	L
  *U(N	"8
&L
*  ÆŸÐß  (‰  RÀ*  _	  _ t—,   Ð
øÐR*U( t*  ì_ ^À_	8
_	L
ßŸ  (‰  RÀ*     ^8
L
øÐ R$**  _	  _ PÀ_	8
€_	8
ß  _	,À¬ À"  U(
P8
8
j€%",&¬ *  8°® _ ü	€_	8
_	L
À*  _	  _ $  °® ü	8
L
*$U((*  ^Ÿ  ×¬  (‰‚R_ *ßz(‰  R_ *     øÐ‚      R*z"R&**  „                                        ª                       ‚  ‚<
   †  †0   ž  ž
   ´  ´     ¾*  ¾                                        ä                         ¾  ¾<   Â  Â0   Ú  Ú   ð  ð     ú*  ú                                         	                         ú  ú<
   þ  þ0   	  	   ,	  ,	 (   6	*  6	Ÿ  (‰‚Rß  (‰‚R_ *ß  —¬  (‰(  øÐ
      ‚RøÐ‚R*øÐ*  \	‚R_ *Ÿj	(‰  R_ *                  ‚R
*j	R**  ‚	                                      
  ¨	         r	  r	<    v	  v	0   Ž	  Ž	    ¤	  ¤	     ®	"  ®	Ÿ  (‰r	R_ ß  (‰r	R_ Ÿ&  øÐ
r	RøÐr	R(  Ì	  ßÔ	(‰  R_ ß  Ÿæ	(‰  R_ ß&  øÐÔ	RøÐæ	 R$*  ð	  (‰r	R_ Bß  ß5 n_	8À® <‰*  øÐr	
RB“y42n 8$® (*  
ZŸ® Ÿ0
ß2
ß² 4
_	  ®             ‰¬ $  Z® 0
2
² 4
&¸Î® *  <
 ð‹ _ N… œ œ áß –
_˜

  N"–
&˜
*  b
š
_	  –
˜
š
(
À(ÄßÎ –
ßÑ (  š
d
–
˜
š
(
("–
  ˆ
–
_	  –
  œ
…         –
&ðÈ
–
œ
 (*  (œ
 
À¬ œå¬ … À¬ œÞ¬ €ÂŸ
n… &  œ
 

¬ å¬ ¬ Þ¬ &n*  N‰
‰
‰
‰
  „Ä ^À ß%    ^*  t^0ß% ^,ß%	 ^(ß% ^ß% ^€
  ^^^^$^*  šß% ^À	 ô‹ €
ß% ^À 
  
^ ^*  À       ^Ÿ^ß
^Àg^À ó… &€ÂÀ°   ^
^^^(° *  æ&&ÈE PNNÎEÿ¿ˆUÎEÿïˆU€… ‰ß    (j€%*  ß³ ® ‰ß  øß´ ® ‰ß  ßµ   
® j€%® "j€%*  2® ‰ß  øß¶ ® ŸTß² V_	  ®     &  ® j€%® T² V"&8Â$® *  X‰‰$‰Ã  Ä  ß  Ó· Ô•  ‰$‰Ã     d¼ dj€%( d*  ~Ä  ß  òÓ¸ Ô•  “ Ô•  Ó² Ô• ß    ¼ d
j€% ² ( d  ¤  &‰‰  ¼ d  ^^$^*  šß% ^À	 ô‹ €
ß% ^À 
  
^ ^*  À          jL¢_@€›          ÁXÀN  
       ~  € 4       b"ž ž                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        0"3 T0£,3 T0;N3 T0cX3 T2"4 Ô2£,4 Ô2;N4 Ô2cX4 Ôt!Àv“ FRˆ,“ FTq8"“ F\q°r“ F‡s s“ Fé¨—(2 ~é¨˜(3 Té¨š(4 Ôé¨ç(2 ~é¨è(3 Té¨ê(4 Ôé¨„*   é¨¬*   é¨˜06 ¶ é¨À08  é¨Ä0 Ôé¨ì0 Ôé¨19 žì¨ ú ì¨—(! rì¨˜(! rì¨š(! rì¨ç(! rì¨è(! rì¨ê(! rì¨˜0! rì¨À0! rì¨1! rô¨AeI H õ¨—( 8 õ¨˜( 8 õ¨š( 8 õ¨ç( 8 õ¨è( 8 õ¨ê( 8 õ¨˜0 8 õ¨À0 8 õ¨1 8 û¨—(2 ~û¨˜(3 Tû¨š(4 Ôû¨ç(2 ~û¨è(3 Tû¨ê(4 Ôû¨„*   û¨¬*   û¨˜06 ¶ û¨À08  û¨Ä0 Ôû¨ì0 Ôû¨19 žû¨6 ú ü¨P ©ª%f Ì©ªpf Ì2©ä4 Ô      2©
z4 Ô9©t!h >:©lzc þ :©€c þ :©™Â2 ~:©ÝÂ2 ~:©ìÂ2 ~:©¥Ã2 ~:©´Ã2 ~:©õÃ2 ~:©ÙÈ3 T:©É3 T:©,É3 T:©åÉ3 T:©ôÉ3 T:©5Ê3 T:©YÕ4 Ô:©Õ4 Ô:©¬Õ4 Ô:©eÖ4 Ô:©tÖ4 Ô:©µÖ4 Ô;©¿'h >;©†:h >;©hL„ ä;©zLh >;©hMh >;©jMh >;©ÐMw  ;©øMo ”;©™Â ,;©ÝÂ ,;©ìÂ ,;©¥Ã ,;©´Ã ,;©õÃ ,<©º ‹ X <©» Š p <©"" ´ <©#"~ Ä >©¨h >>©¹.[ Z >©Ì. ,>©cMh >>©èYh >>©™w ,>©Ýw ,>©ìw ,>©¥x ,>©´x ,>©õx ,?©Y ,?© ,?©¬ ,?©e ,?©t ,?©µ ,?©y[ Z ?©Y£ Ô?©£ Ô?©¬£ Ô?©e¤ Ô?©t¤ Ô?©µ¤ Ô      ?©™Â6 ¶ ?©ÝÂ6 ¶ ?©ìÂ6 ¶ ?©¥Ã6 ¶ ?©´Ã6 ¶ ?©õÃ6 ¶ ?©ÙÈ8  ?©É8  ?©,É8  ?©åÉ8  ?©ôÉ8  ?©5Ê8  ?©YÕ9 ž?©Õ9 ž?©¬Õ9 ž?©eÖ9 ž?©tÖ9 ž?©µÖ9 ž?©y×[ Z A©öZh >A©ÿZh >C©B âE©e ,E©2e ÔE©òy ,F©ªNh >F©@`h >G©#? P G©Õd â G©le žG©ze žG©{e žG©Ôft TG©âft TG©ãft TG©øfm Æ J©º † ‚J©» … NJ©""x ÄJ©#"w ‚J©K"p J©r‘ J©s € J©:‘ &J©;‘Œ ê J©¢’} ` J©£’| Z J©Ë’s nK©Ù} ,K©~ ,K©,~ ,K©{~  K©å~ ,K©ô~ ,K©5 ,K©Ð€ K©=Ÿh >N©¯' ¤ N©°' ¤ N©²' ¤ N©T
' ¤ N©Y' ¤ N©' ¤ N©Ñ' ¤       N©' ¤ N©/w' ¤ N©!£' ¤ O©5q’ JO©úq‰ > O©ûqˆ  O©bs{ H O©csz 6 O©‹sq  R©Ù   R©   R©,   R©å   R©ô   R©5   e©„dR "e©ûfR "t©P †©Š! r´©ø' ¤ Ã©’B âÐ©/£ ÔÜ©;"F .Ü©X"F .Ý©w~P Ý©Ñ~W  ø©ß9 žø©/£ Ô4ªu:k P6ªÏ}B â7ªl†I H ¤ªDR ¼ ©ªXk P¶ª·„P Ëªà   ËªŒ( ,ËªÂ2 ~ËªPÈ3 TËªÐÔ4 ÔÍª¨¢ rÍªÂ; PÍªPÈ; PÍªÐÔ; PÎªí+T ¶ ÏªT ¶ Ïª˜!T ¶ Ïªð- ,Ïª(K ,ÏªHXT ¶ Ïª˜X ,ÐªÂ2 ~ÐªPÈ3 TÐªÐÔ4 ÔÒªD† ,ÒªJ† ,Öªà ÔÖªÂ6 ¶ ÖªPÈ8  ÖªÐÔ9 žÚªà   ÚªÂ= Ü ÚªPÈ= Ü ÚªÐÔ= Ü Ûªà Ô      Ûªl†I H ÛªÂ6 ¶ Ûª8Â ,ÛªPÈ8  ÛªÐÔ9 žêªP› 8 õª0,' ¤ õª2,' ¤ õª1' ¤ («LwB âU«Yfd â U«w~P U«Ñ~W Ú W«®sW ž‘«[K™  ’«,™  “«kM™  •«Ã^™  •«Ë`™  –«;™  «VK™  «™q™   «1™  ¢«€™  ¢«l™  ¢«á"™  ¢«[}™  £«1™  £«¶™  £«ç™  £«1™  £«C™  §«À™  §«üq™  ¨«q™  ¹«Ùd â ¹«Ìd â º«<R "º« <R "º«!<R "»«oKW ž»«pKW ž»«rKW ž»«vKW ž¼«/' ¤ ¼«´;“ F½«Ö%“ FÀ«""B âÃ«)#d â Ã«1#d â Ã«;#d â Ã«,:“ FÅ«4…“ FÇ«6f“ FÌ«ßg“ FÍ« ú Ï«	F“ Fá«ø$ î«“$ î«ÕZ$ î«Xz$ î«H…$ ó«À$ B¬òyd â       C¬µ	d â ¬dE ~ ¬KV Ä ¬ NE ~ ¬<NA úƒ¬,% ìƒ¬4Kh >ƒ¬kMh >ƒ¬
Nh >„¬©% ì„¬%!h >…¬»G ¼ …¬{H ä …¬0XB â…¬PsE ~ …¬|—% ì‡¬À]B â‡¬`^E ~ ‡¬aE ~ ‡¬$aA ú‡¬ bA ú‰¬÷Xh >‰¬üXB â‰¬TZ\ ž‰¬WZ\ ž‰¬XZ\ ž‰¬€Z\ ž‰¬¤Z\ ž‰¬§Z\ ž‰¬¼^h >‰¬ò`h >‰¬ˆ–R "¬5a ,¬Ödh >¬"@ j ¬,"A ú¬…q@ j ¬q@ j ¬šY ’¬lh >’¬îh >’¬ê"h >“¬,[ Z “¬;	[ Z “¬Ë[ Z “¬šw[ Z “¬:}h >“¬hE ~ “¬’B â“¬â\ ž“¬ã\ ž“¬ä\ ž“¬›ƒ% ì”¬¸pP •¬4Kh >•¬kYh >•¬ŠZ\ ž•¬‹Z\ ž•¬ŒZ\ ž—¬üqh >µ¬5a ,Ó¬ÐM' ¤ Ó¬Ø_   ä¬ày' ¤       ­“$ ­ÕZ$ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      »Ô!G ¼ 0(2 ,ö´r= Ü öšw; P³€$ &ZŠ' ¤ Ë»%   Ë–, ÔË´r   Ëšw r{ùeH ä ~  ! r]!ôT ¶ ]!<K ú »%o}2 ~»%p}3 T»%r}4 Ôe,8wF .–,X6 ¶ –,€8  –,Ð9 žœ,´V Ä œ,¡EW  Ä8@8„ äå8;‹ X å88;Š p ›:à~h >¨:@8 ž;;† ‚;8;… N';à8 € ';; &';8;Œ ê ';ˆ;‘ L;@8  ê;H’ Jê;;‰ > ê;8;ˆ  £K ŒR ¼ KTl†d â ”T } 8 S`l†f Ìó`""A úäfìk P\g¡EW Ú q€pw  %qPs ´ %qxs~ Ä èr€pt TUsPsx ÄUsxsw ‚gsPs} ` gsxs| Z Œs€p€ *tPs{ H *txsz 6 w<R "9wÈKW žDwÀvo ”šw [ Z 7x›r™  (yÀvm Æ *yø“ F•y¸yp       §y¸ys nòyw:\ žjz¸yq  ;}ÀDc þ ·„[qP J†7xI H *’úD? P y–àL% ì˜8wE ~ …˜pq@ j —˜"Y å˜€WB âÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           ÔN  
 ÂpÁ*  Ë»%    ÂpÁ   ¯”L  ì¨@  G©#@  *  N©T
@  N©@  N©!£@  Í«@  ‡¬À]@  *      (  e©±|æé¨„*h  é¨¬*hB û¨„*h† *  û¨¬*hŒ R©Ùhþ R©hR©,hR©åhô *  R©ôhê R©5hËªàh’ Ó¬Ø_hR¯”   
   e©±  *    Â  NÎe CÀœ ø	  C Áœ ù	  f¦C  ì¨N©T
"N©*  & ÀÁD„ÅÞ	—¥ åÅ@ ‡ Â  NÎe   "ì¨*  L CÀœ ø	  C Àœ ø	  AC@&¦@  N©T
N©T
*  r AÂÃÞ	ƒÀœ ø	  ‡ Â  ¼Â  ÚNÎe   N©!£Í« Í«*  ˜ Ä C      Àœ ø	  ÀÁD€àÄ•0 `   G©# N©T
*  ¾ ‘~Ä0 ¡æ  ÎeÈ ÞÕ 	~S”‚~CÀœ   G©#*  ä ø	  ‡ ß	4Â… ß	4Â… ß	4Â… ß	  N©!£44 4*  
4Â… ß	4Â… ß	4Â… åÖm å  444*  0_   CÀœ ø	  ÁCÀœ ø	  @AÂÃÅe   ‡¬À]N©T
N©T
*  VD`&™ÎE¿ÿ„Ä`™ÄE¿ÿ!"ÖÄ€D*  |Á€à` Ä0 ¡
~Ä0 D¤~S¤*  ¢ƒ~Â‡ Â ‡ &Ä0 À
D¤~Â
Ä¤"  Èƒ~D’ÄEðÿÄ’ÄEðÿ–%
‡ –%à       LN  
 Â Í*  Ë–,    Â Í   ¯”L        ì¨@  û¨6@  *  G©#@  N©T
@  N©@  N©!£@  Í«@  *  ‡¬À]@  Ó¬Ø_@      (  e©Ý| é¨Ä0h  *  é¨ì0hÔ û¨Ä0hfû¨ì0hx?©Y£h8?©£hL*  ?©¬£hV?©e¤h.?©t¤h$?©µ¤hBE©2eh`*  Ð©/£hhø©/£hŒÖªàhÄÛªàhŠ¯”   
   e©Ý  *    NÎe Ÿhæ  åfED­ W­  JW­   hì¨*  & & Ff DEþ	 —¥ –%‡ åÅ@ –%‡ &‘f*  L  „Åb &þ	 €—¥ õÅ@ ÿÿAà„•ƒ  
  
G©#b *  r Âœ á×¬  ×¬ & Ä  Å ß	  –%‡   $û¨6*  ˜ „`Åv ß	  Ã „  ø	  Ö‡ Å „  &        
G©#v û¨6G©# N©!£$G©# *  ¾   5  E þ	 Ã êNÎe ŸŒæ  f  G©# "Œ&ì¨*  ä ED­ W­  áW­ & ÝDEþ	 ƒÀœ *  
ø	  Ö‡ &‘ „„
Åb &þ	 €Aà  N©!£G©#b *  0„•ƒ  Âœ á×¬  ª×¬ & ¦Ä  Å ß	*  V  ƒÀœ ø	  Ö‡ NÎe Ÿhæ  _  NÎe  û¨6N©!£h Í«$ *  | ŸŒæ  _ â NÎe Ä CÁœ Àœ ø	    ŒÍ«â G©# (N©T
*  ¢EfB BàÀÁDEß	  ƒÀœ ø	  ‡ NÎe  û¨6"N©!£*  È Ä CÁœ Àœ ø	  EfB BàÀÁDE        G©# N©T
*  îß	  ƒÁ Ál  áµ@ ÉÕ@ ÉÅ@ Àœ ø	    û¨6(N©!£*  ‡ åÖm å_   ß	`Âõ… ß	`Âð… ß	  ‡¬À]` `*  :`Âë… ß	`Âæ… ß	`Âá… ß	`ÂÜ…   ```"`*  `ŸŒ_   ÖCÀœ Ä ø	  ÁCÀœ Ä ø	"  Œ
Ó¬Ø_G©# N©T
&G©# *  †  _ ¬ÖCÀœ Ä ø	  ÁCÀœ Ä ø	  (  N©¬G©# N©T
$G©# (N©T
*  ¬¦s¬  "æf@œ Âœ àCß	€Á…  "*  ÒƒÄœ ffBœ Àœ àß	…Dœ @A  *  ø‡ Dœ @AÂÃ‡ ÀÁÅN „`&ß	  ‚      C  G©#N $û¨6  ‡        RN  
 ÂpÆ*  Ë´r    ÂpÆ   ¯”L  û¨6@  G©#@  *  N©T
@  N©!£@      (  e©ž|€ Úªàh  
  ¯”   
   e©ž  *    NÎe Ä CÁœ Àœ ø	  EfB BàÀÁ  G©# N©T
*  & DEß	  ƒ 5 ÄÅ ß	J Àœ ø	  ‡ a  
û¨6J $N©!£*  L õµ@ ÿÿW©y Í•p Ä
W©9 
Í•0 æ    (G©#  r ÎeÈ ÞÕ ‡ Š‡        ˆN  
 Â˜Á*  Ëšw    Â˜Á   ¯”L  û¨6@  G©#@  *  N©!£@      (  e©½|ž Íª¨¢h  ¯”   
   e©½  *    NÎe æ  ÎeÈ       Þ5 8CÁœ ÀEDB Bà  G©#*  & ÁW¤0 ~€
Á
f`D Ö_ „ fW­    „ *  L  W­ & 
E ß	  ƒÀœ ø	  ‡ Å& ß	  û¨6 N©!£&G©#& *  r   Ã „  ø	  ‡ æ  ÎeÈ ÞÕ æ  ÎeÈ "  û¨6G©# N©!£G©#$G©#
  ˜ ÞÅ ‡        2N  
 ÂHÁ*  ]!<K    ÂHÁ   ¯”L  G©#@      (  *  •©!…|Àì¨h  û¨6hPÍ«hv ¯”   
   •©!…  *    &Ä•0 D¤~€
á‹Ä¤ƒ~‚
ã‹„`ƒ`afñµ*  & @ ÿÿóµ@ ÿÿß	˜ …‡ ß	¢óµ@ ÿÿß	
  ˜ ¢*  L ¢À5 ÀU ß	˜ ÀU …À5 õÕ@       ÿÿ‡ 
  ¢˜ *  r …‡ `fß	† àß	  áµ@ ÑÕ@ ‡ ÑÅ@ ‡ 
  †   *  ˜   Dàà¦&
„ =€à„à&&€ÂC*  ¾ 
B˜ÂÅðÿ„`Â˜ÂÅðÿ„`%zŽ~‚ Ž 8Â
  zŽ*  ä 	À˜ÀÅðÿ`%zŽ‰~€‚€à	Äæ  Îe  zŽ&G©#*  
È ÞÕ ‡ Äå•1 À
Ã•0 å~‡  
B˜ÂÅðÿ*  0€`Â˜ÂÅðÿ€`%œz œŽæ  ÎeÈ ÞÕ ‡ ‚Ö  zŽG©#*  VÂ	À˜ÀEðÿ`%zŽ‰~æ  ÎeÈ ÞÕ ‡ 01  zŽG©#*  |234567890123456789          *  ¢ (àƒàÀ
S¤~æ”ÎÅ@ f”ÎÅ@ –¥*  Èå•0  
‡ c¨€
      `ƒ`¦BÁƒ€æ *  îc¨€
`ƒ`&
&¦
D˜ÄEðÿaÎ
Ä˜ÄEðÿá*  „œ„ö
 ¡0 %‘ÂÂ~Ö„å•0   „*  :€‡ –%€æ  ÎeÈ ÞÕ ‡ æÃ0 `ae¨ff  G©#*  `f’ÑÅ@ …
&
Â#åÄ
„~àe˜~Äå*  †€^ÁE¿ÿ^Ðƒ‡ ` áe˜C¨~ðæ    (G©#  ¬ÎeÈ ÞÕ é`€`äN’Ü       N  
 Â˜Á*  0(2    Â˜Á   ¯”L  Ü©;"@  ‡¬À]@  *      (  ô¨Ae<R;©™Âh;©ÝÂh";©ìÂh0*  ;©¥Ãhø;©´Ãhê;©õÃh>©Ì.hz>©™whZ*  >©Ýwhj>©ìwhr>©¥xhR>©´xhJ>©õxhb*  ?©Yh¶?©h      Æ?©¬hÎ?©eh®?©th¦*  ?©µh¾E©ehÖE©òyhþ K©Ù}hÐ K©~hà *  K©,~hè K©å~hÈ K©ô~hÀ K©5hØ ËªŒ(h@ *  Ïªð-ht Ïª(Kh‚ Ïª˜Xht ÒªD†h  ÒªJ†h" "  Ûª8Âh¦ ¬5ah µ¬5ah& ¯”   
   ô¨Ae  *    ß	² €àS”‚~… `S”‚~ Ä  ‘~… ß	² 
  ² (² *  & €à`í` Ä  ‘~Âå… ß	² à€`Á5   ² *  L  S”À
„SÀ5 S”ÂÀ  ‚~*  r … ß	  €Áß	  Áß	² À% 	S”Â
… ~  Ü©;"Ü©;"² *  ˜  àøA’S‚~… @A9ž  … A@ACÂÃ*  ¾ ‡ ß	þ ‡… ß	þ ƒ… ß	þ … ß	þ 	… ß	      þ   þ þ þ  þ (þ *  ä †… ß	þ ‚… åÖm å_   ACÅe {®   
þ ‡¬À]*  
 ‡ @AÂÃà€`ÀS¤~Â‡ *  0À   úƒ~‡ À  @¤óƒ~‡ ß	zÐ‡… ß	z
   z(z*  VÌƒ… ß	zÈ… ß	zÄ… ß	zÀ†… ß	z¼‚… ß	  
zzz"z*  |² Åe À% 
S¤Â
~á ø‡ A’S ü  ² *  ¢ƒ~‡ ß	Ö¢‡… ß	Öžƒ… ß	Öš… ß	Ö–… ß	  
ÖÖÖ"Ö*  ÈÖ’†… ß	ÖŽ‚… ß	  €Áß	  Åe _ @A  ÖÖÜ©;"Ü©;"$*  î9®  $‡*@A9®  ƒ#@A9®  *  @A9®  @A9®  †      @A9®    :‚õ Ö] _   Åe …   ‡¬À]       :N  
 Â Á*  ”T }    Â Á   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  »«oK@  »«pK@  »«rK@  »«vK@  *      (  Ýª N<šõ¨—(h  õ¨˜(hÂ õ¨š(h~*  õ¨ç(h õ¨è(hú õ¨ê(h¾õ¨˜0h õ¨À0h  õ¨1hÒêªP›hâ¯”   
   Ýª N  *    ß	 ]… @¡ pn‡‡ ß	 ]… ŸB   .     $B &N©¯(. *  &   8   …  	pR
‡ ÒÀ€"V‡ CÄ Àœ   »«pK8 N©Y$G©# *  L €bô   Ø	ÁDœ &CÄ Àœ       €dô   Ø	
  G©# *  r Äœ a@ Á ƒ¦ÂN Ë	Ä CÂœ ‚å  G©#N  G©# *  ˜  ù	   Ñæ&Ù	ƒ„ó     @dB*  ¾ Ø	‚ ß	Î @ˆ… @AÂb ß	€ÐÐÃÐ   
Î G©#b *  ä È ‡ æ  ÎeÈ ÞÕ ‡ ß	Î ò áJ
  G©#Î *  
âÜŸB     Ú   … f& Ž
	qR
   
B N©°»«rKÚ N©*  0ò DqJaD2a @á€
 qRaD
aò *  VpR`@
`Âå …‡ ÃqÄ`‡ &qÄ`„e*  |‡ ß	Ž@ˆ… @AÂb ß	â€Àe Ð  ŽG©#b  â*  ¢ÄÃ $Ã~‡ æ  ÎeÈ       ÞÕ ‡ ß	Žò Ý  G©#"Ž$  ÈDN…_ €ŸB   â  š  … f&
Ä$  €B N©²â»«vKšN©Ñ*  èv ð  ß	€N
ñ Eß	€N
ß	2  G©#v €"€(2*  ÖÁe À a
~À Ñe †Q~…‡ Ã*  4 Âe "
Â~ß	Tß	Tß	Tß	TÂå ‡ &À  TTTT*  Z Dß	fRaDaRRJÂå ~Âå €Áå ‡   
f  €Ã LT
Ã~Äå Ôe TTT‡        N  
 Â¨À*  ~      Â¨À   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  »«oK@  »«pK@  »«rK@        »«vK@  *      (  i©€‰<lì¨—(h  ì¨˜(hÐ ì¨š(hž*  ì¨ç(h ì¨è(hö ì¨ê(hÊì¨˜0h. ì¨À0h  ì¨1hÜ†©Šhð¯”   
   i©€‰  *    BAÀr…… æ  ÎeÈ ÞÕ ‡ BAÀrô…  G©#*  &  … ŸJ      >   … ‰rä… ‡ C  J N©¯»«pK> N©Y*  L Ä Àœ €bô   Ø	ÁCÄ Àœ €dô     G©# G©# *  r Ø	æœ Ã Ä: €Ô~€ãÔ~€•ƒBœ à
  G©#: *  ˜ @ œ `Ä  Û	A   ÂæÊ	€Ã D  G©# &G©# *  ¾ ó    dÙ	‚ ß	Ü BJ… @Cf  Ü *  ä       ÀÁÂÃß	6…‡ ß	Ü Áë AçŸJ   6Ü (J *  
       … f&DEÀÁÂÃß	6‚  N©°»«rK
N©$6*  0J…‡ &
Ã
@
A
B
C
Àe ABCN
Å*  VEN
æ  ÀABCáƒCáaCCa*  |€
Î
ïÁæ  ÎeÈ ÞÕ –% A‡ ß	®  G©#(®*  ¢A	… ACÀb Â Ð0
 „~Â €à
  G©#b *  Èß	®ð çß	  ãŸJ      ì  … Â&  ®õª1J N©² »«vK"ì$N©Ñ*  î f&
ƒ`ã„`ƒƒÅd
Â~Å
Ôe TB*  N
ñ Ä~ Áe ddddß	  N
æ@ E  G©#~        õª1*  :Ä aå‹)ƒ`ã‹ƒ~ ! É_*  `„àÄe K£ƒ„
ÄÂ €`ááà˜*  †‚~ ŠWq Ná
–%…‡ æ  ÎeÈ ÞÕ öÅe  G©#*  ¬ BCDEÐPPHEDCBÀå Eä„ƒ*  Ò‚Däƒ‚Cä‚BâÁå Î
æÀå EdDCB*  øDdCBCdBBbîÁå ˆ
Î
Ó–%ß	  …‡   $õª1*  ‚
‚€`€`C—  
,þÿ‡æ  ÎeÈ ÞÕ 
  G©#*  Dw Ä ÄàwÿÿsÄe €wÿÿsD’~
  jÒ       \N  
 ÂøÀ*  ³€    ÂøÀ   ¯”L  G©#@  ‡¬À]@  *      (  D©€(á«øh° î«“h¸ î«ÕZh *  î«      Xzhú î«H…h  ó«Àhò ­“hÀ ­ÕZh 
  ¯”   
   D©€  *    ß	 o… ß	 k… DÅe   —   ;— 
    *  & & 8ÀE ÿz  : B | ‚ À
B`À
B
Ã#    : B | ‚ *  L ÄX ”¢#Ã~‡ ABCDEFGHIJKLMNOPQR01234567  X   r 89[]?!:{}å   | *  | B`BÂ
—¢+ —¢- —¢  ‡ ÀW¢0 *  ¢ W¤9 ~´ ‡ ß	À … ß	À … DÅe  
  À À *  È W¢  W¢A W¢Z 
~´ ‡ åÖm å*  î _   ß	ö… ß	ò… Ä  @ @Åe  =  ‡¬À]
G©#    ‡        ¸N  
 ÂèÆ*        y–àL    ÂèÆ   ¯”L  C©@  G©#@  *  6ªÏ}@  Ûªl†@  («Lw@  “¬’@      (  *  ƒ¬,|V ƒ¬,h  “¬›ƒ|| “¬›ƒh  …¬|—| "  …¬|—h  „¬©| „¬©h  ¯”   
   ƒ¬,  *    Ä  t2 &ft4   PAB Á
û  G©#*  & €t(  &ü	4 ß	  Ä  Œß	  ô&   («LwG©#"6ªÏ}  L ü	& _     C© “¬›ƒ  *    Ä  ô 
´
 44 8 4¯  !… æ  Îe  G©#&G©#*  & ª Þ  æ ß	   8 Ä  L4 æ  ß	    Ûªl†8 G©#(Ûªl†*  L  P æ  Îeª Þ _   æ ß	   l æ  Îe"        P 
G©#“¬’Ûªl†"l &G©#  r ª Þ, _     “¬’ …¬|—      Ä  4
& 4
 4
8 Ö‡   G©# „¬©  "    @•ÀÄ   m A•B2 re F~…   
G©#       ÚN  
 ÂðÒ*  &ZŠ    ÂðÒ   ¯”L  G©#@  ‡¬À]@  *      (  F©dŒ|zN©¯h–N©°h
N©²h~*  N©T
h²N©YhÐN©hDN©Ñh¸N©hz*  N©/wh‚N©!£hê´©øhõª0,h õª2,h> *  õª1h<¼«/hÓ¬ÐMhTä¬àyh\¯”   
   F©dŒ  *    û €; ‡ È€0þÿˆ‡ È€ ‡ *  & È€P
P
H
Èe ``‡ È	€H
`
`
`
Ðe P*  L       PH‡ È	€P
P
P
H
Èe ```‡ ‡ ß	v ß	  &v *  r R ‡   Àe Ã Èààà‡ ôœ  Ã   R *  ˜ Ãe   ÐÐÐÈ‡ ß	¼ ß	: ‡ ôœ  Ã
  ¼ : *  ¾    ÐÐÐÈ‡ ôœ  Ã   Ãe Ð*  ä ÐÐÈ‡ ß	ø ß	R ‡   Àe È ààà
  ø R *  
‡ ß	ß	R ‡   Àe Ã Èààà‡ 
  
R *  0ß	:ß	& ‡   Àe Ã Èàà‡ ß	`ß	  :
& &`*  V  ‡ ôœ  ü  ‡ ß	zß	: ‡ ôœ       z: *  | Ð ÐÐÈ‡ ß	œß	: ‡ ôœ  Ã  
  œ: *  ¢ ÐÐÐÈ‡ ôœ        Ã   Ð ÐÐÈ*  È‡ ß	Öß	 ‡   ð  È‡ ß	ðß	   
Ö $ð( *  î‡   Ã ð È‡ ß	ß	& ‡   Àe 
  & *  È àà‡ ß	*ß	& ‡   Àe Ã Èà
  *& *  :à‡ ß	Pß	 ‡ ôœ    Ð È‡ ß	
  P *  `nß	 ‡ ôœ  Ã   ÐÈ‡ ôœ  Ã
  n *  †   Ð È‡ j j             j j j   j j $j &j (j   ¬j j j ¸¸¸¸¸¸â*  j j j 
¸¸¸¸¸¸â  Àj ¸¸¸¸¸¸¸P`*  j ¸¸
¸¸¸¸¸P      `  ÔÌÖî ø P`@P*  ÌÖ
î ø P`@P  èjzLþLLLLT`*  jzL
þLLLLT`  üLLLLLLLJJ~*  LLL
LLLLJJ~   ~        JJj j j j ØØØ*  ~JJj j j j ØØØ  ,ØØØúJØØØØØ*  ØØØ
úJØØØØØ  @ØØP`æð **  ØØP
`æð *  TP`^nŒœXZXX*  P`^
nŒœXZXX  hXXj      `XXXXXX*  XXj
`XXXXXX  |Xtt°°Ž Ž Ð Ð t*  Xtt
°°Ž Ž Ð Ð t  t––j j øøøøø*  t––
j j øøøøø  ¤øtøøøøøøø*  øt
øøøøøøø  ¸P`æð0:l v P`*  P`æ
ð0:l v P`  Ì^n¬ ¼ dÀdddd*  ^n¬ 
¼ dÀdddd*  à€`dddddddôœ    ôœ  ŸBÃ *  €`d
dddddd$B*  æ`f      Ã	
—r
 Ãe0 áƒ
~Ä0 !‘*  ,~„ÖäÕ@ …ƒ‚‡ f&f J ôœ  *  R  ô  ŸBÄ ¦B`fÂÌ  B*  x…
s
 DÅ! w Äå
 wÿÿs
 Äe*  ž €s
 Åe0 a‘~_ .ôœ    ôœ  ŸB
  .(B*  ÄÅ Åe f`ff„fffÌÄå ß	<ä  &<*  êä%ôþÿ
ôúÿÄå Æe µÅ 
*  —  —v Âå
 —vÿÿ—r
 Âe €—r
 ŒÂ*  6TÂe0 ¡Äe ,~Æe _ .ß	þÀœ x êß	Z  .þ$ê(Z*  \Àœ x êß	ÀÀœ x ê&Ä  Ìß	~„_ N  
êÀêG©#  "~(N*  ‚&      Ä  Ìß	Ž „_ ´&Ä  Ìß	Ð „_ ´¦"  G©#  Ž ´G©#   Ð &´*  ¨ß	\ü ‚‡ ¦ß	\  Ðˆõ¦&ff
  \\*  Î ÀÁ ` “àW¤0 ~

á‹&f*  ô 	 À	 ß	x€Õ•ÕÕÀå	 Áe	 Åå  x*   D”ÄEðÿæ B—p
 Âe
 aBÕ„Î
ôÖ*  @~áµ@ DÄå ß	<…ƒ‚‡ f&ÀÁ   <*  f` “àß	x„‡ D

£0 „
~Â  x*  ŒWp
 —p
 Âe
 `•ÂEðÿƒ`A~©p A*  ²B‡ ôœ  fß	È‡ Àœ ø	²D_ ¦  È"²(¦*  Øôœ  fß	è‡ Àœ ø	²D_       ¶ôœ    è²"¶*  þfß	‡ Àœ ø	²D_ Æß	¶Ä_ ð&  ²Æ ¶&ð*  $Ä  ß	Æ„_ :ß	ÆÄ_ v T
T
T
L
Äå Ôe  G©#  
Æ:Æv *  J TTT‡ &Ä  Œ  ß	þ„ß	–‡ &Ä    G©#  þ –(G©#  *  pŒ  ß	Z„ß	–‡ &Ä  Œ  ß	À„ß	–‡   
Z–G©#   À&–*  –f¦fÅ  Âµ  
A•ÁÅ0 @ÐÂ
@•*  ¼ÀEp t Œ~W¹@ ÀÕ ÀÕ …‚‡ *  â&Ä  ß	*„ôœ  ß	¦‡ &Ä  ß	*„ôœ  G©#  *¦ G©#  $**    ß	¶‡ &Ä  ß	*„ôœ  ß	Æ‡       f¦  
¶G©#  *"Æ*  .fÌôœ  ÂÅ Âµ A•ÁÕ0 SÂ

AÕ*  T 
r ÀÕ0 ~†Á% ãÕ@ …‚‡   zòòpp‚‚””òò*  òòp
p‚‚””òò  ŽNN´´&	$	F	š	ô	N
*  NN´
´&	$	F	š	ô	N
  ¢*ò„
„
„
„
„
„
òò*  *ò„

„
„
„
„
„
òò  ¶pp‚‚””òòNN*  pp‚
‚””òòNN  Ê´´&	$	(	b	Î	&
*ò*  ´´&	
$	(	b	Î	&
*ò  Þ„
„
„
„
„
„
¦¦*  „
„
„

„
      „
„
¦¦  ò""22¦¦¶¶ÆÆ*  ""2
2¦¦¶¶ÆÆ  	ž
$	¬
º
Ú
ø
–¦ž
ž
*  ž
$	¬

º
Ú
ø
–¦ž
ž
*  	ž
ž
ž
ž
ž
‡ ‡ À’Àl ˜¦6‘ ö
„Ì	  ž
ž
ž

ž
ž
"ö
*  @	€ˆ•‡ À’Àl ˜ö
„Ì	€’ì
‡ ÀÀb
  ö
"ì
*  f	Ä–Æå Ž 6‘ 6˜ +ö
Ä–ÄÅ¿ÿ+ÁÑ„æ  ö
*  Œ	ãÌ	€„Œ•ˆ•‡ ÀÀbÄ–+ö
Ä–ÄÅ¿ÿ+Á Ñ„  ö
*  ²	æãÌ	€„Ÿ  ÄÅ¿ÿÁÑ’ì
‡ Ä’Äl Ì¥-   ì
*  Ø	€™&ÌÕ@ €™&È	€ˆ•‡ Ä’Äl Ì¥- *  þ	ôÕ@ ÿÿ€È	      €ðµ@ ÿÿÈ•+ ‡ È•- àÅ@ *  $
‡ À’Ä  aä¥- „˜&ÈÕ@ „˜&Ì	€*  J
ˆ•‡ Ä’À `à¥- äÕ@ „ÎÌ	€ `äµ*  p
@ à•+ ‡ ÌÅ@ à•- ‡ ×" ‡ ÄÄbÄå Ã*  –
ú 3 ‡ Àœ  Àl àÅ@ ‡ À’Àl ˜ì
‡ À’  G©#ú $ì
*  ¼
Ä  aÀ
Èµ@ ÈÅ@ ÌÕ@  “œì
‡ À’Àl   ì
*  â
àµ@ ÈÅ@ Ì•- ‡ Ì•+ ‡ À’Ä  aàµ@ ä•*  + ‡ ÈÅ@ ä•- ‡  p    {ABCDEFGHI01234567*  .89p    0@123456789qrstuvwxy        0 p*  T        }JKLMNOPQR           0 p}JKLMN   zOPQR 0 p¬¬ÖÖèèøø¬¬*  ¬¬ÖÖèèø      ø¬¬  –²²ÀÀ*  ²²À
À*  ªÃ ‡ Ä À #G‡ Ä À %@ %>  *  Ð #<‡ Ä ô À 4‡ Ä ô À +*  öôÄ ô À %#õCNÄ Àœ ø	²fÀ  G©# $²*  Ä
•W¡0 ~×p
 ‡•ÅEðÿCa…	~¹@ *  B…‡ …Ãÿÿ² ‡ ÀÈ Š… ÀÈ Èµ Åe  G©#È  G©#È   h … õ Ö] _     ‡¬À]       ÖN  
 Â¨À*  »%o}    Â¨À   ¯”L  G©#@  N©¯@  *  N©Y@  ‡¬À]@      (  Ã©o}|¢ é¨—(h  *  é¨ç(h û¨—(h( û¨ç(      h4 :©™Âhv :©ÝÂh‚ *  :©ìÂhˆ :©¥Ãhp :©´Ãhj :©õÃh| ËªÂhH   ÐªÂhD ¯”   
   Ã©o}  *    DDg…… æ  ÎeÈ ÞÕ Õ… DDgõ…€  G©#*  & … ADDâí…… ADDâç…€… ]… CÄ*  L  Àœ B´    ø	  „  ø	  … ]']'  G©# N©¯N©Y*  r ]'
]']'
]'õ Ö]   ˜ _   Åe …   ‡¬À]       €N  
 Â€À*  »%p}    Â€À   ¯”L  G©#@  N©°@  *  N©@  ‡¬À]@      (  Ã©p}|0"hÎ *  0£,hê 0;Nh¶ 0cXhÜ é¨˜(h  é¨è(h( *  û¨˜(hJ û¨è(hd :©      ÙÈhÊ :©Éhæ :©,ÉhÄ *  :©åÉhø :©ôÉh² :©5ÊhØ ËªPÈh ÐªPÈh† 
  ¯”   
   Ã©p}  *    @ABCdD…Db…Ò
… æ  ÎeÈ ÞÕ    G©#*  & … @ABCdDñ…Dbï…€„Ò
… @*  L ABCDä„à…âÞ…Ò
… @ABCDä„*  r Ó…âÑ…€„Ò
… @A	… CÄ Àœ
  &G©# *  ˜  B´    ø	  „  ø	  … @A$	"!'  N©°N©*  ¾ !(‡$A@ö@A$	"@A$	"*  ä @A$	"!(†
A@öõ Ö] _   
  Åe …   ‡¬À]       âN  
 ÂÐÀ*  »%r}    ÂÐÀ   ¯”L        G©#@  N©²@  *  N©Ñ@  ‡¬À]@      (  Ã©r}|F2"hò *  2£,h2;NhÎ 2cXhé¨š(h  é¨ê(hJ *  û¨š(hf û¨ê(h˜ 2©äh 2©
zhp :©YÕhî *  :©Õh:©¬Õhè :©eÖh,:©tÖhÊ :©µÖhþ   ËªÐÔh¬ ÐªÐÔhž ¯”   
   Ã©r}  *    ß	 @PÐ… D@d†BCD   *  & 
…dCD…dD…b…‡ æ  ÎeÈ ÞÕ ‡ ß	  G©#*  L  Ú€A
B
C
D
Áe Ó†BCDÏß	l Ì@D
    l *  r ä†‚ƒ„Ü…äƒ„Ø…ä„Õ…âÓ…‡ *  ˜ ß	l Ø@A	… CÄ Àœ BŒø	    l G©# (N©²*        ¾ „  ø	  … @AÂ €``	",2‚!(ƒ~  N©Ñ*  ä &‡,A@ð@AÂ $#ƒ~@AÂ $*  
ƒ~@AÂ €``	"
‚!(ƒ~†
A@  0ðõ Ö] _   Åe …   ‡¬À]       PN  
 ÂøÀ*  –,X    ÂøÀ   ¯”L  G©#@  N©¯@  *  N©Y@  »«oK@  ‡¬À]@      (  Ý©ïW|n*  é¨˜0h  û¨˜0h" ?©™Âh2?©ÝÂhF?©ìÂhP*  ?©¥Ãh(?©´Ãh?©õÃh<ÖªÂh~ ÛªÂh< 
  ¯”   
   Ý©ïW  *    ß	® Cb…Ä ü ACœ Âà%  ß	®   ® G©# (® *  & Câï„æ  ÎeÈ ÞÕ Õ… CÀœ ABœ Äœ         G©#*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©¯G©# »«oK*  r ø	  … <
 ôCÄ Àœ Ì ø	  Ä ôœ   N©YG©#  N©¯$G©# *  ˜  ü  < DË àCÄ Àœ Ì ø	
  G©# *  ¾   ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©¯G©# N©¯ G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ   
»«oK »«oK*  
Á ‡ Bœ @ Á ‡ ß	® 	" ß	® 	"
  ® $® *  0ß	® 	"ß	® 	"ß	® 	"ß	® 	"  ® ® ® &®   Võ Ö] _   Åe …   ‡¬      À]       ˜N  
 ÂÐÀ*  –,€    ÂÐÀ   ¯”L  0"@  0£,@  *  0;N@  0cX@  G©#@  N©°@  N©@  *  õª0,@  »«pK@      (  Ý©ðW|lé¨À0h  *  û¨À0h. ?©ÙÈhF?©Éhd?©,ÉhV?©åÉh8*  ?©ôÉh0?©5ÊhNÖªPÈh– ÛªPÈhP ¯”   
   Ý©ðW  *    ß	À CdD…Db…À  Ñ	ACœ   À G©# *  & Âà($ß	À CDä„…âé„æ  ÎeÈ ÞÕ   À  G©#*  L Õ… CÀœ ABœ Äœ áÄ LŒàø	  À  G©# &N©°*  r Ä ß	  DË	   ø	  …  

òC  G©# 
»«pKN©*        ˜ Ä Àœ Ì	 ø	  Ä À• Ì	 ø	  ß	  D$  G©# N©°G©# "N©&õª0,*  ¾ áCÄ Àœ Ì	 ø	  ÁBœ CÄ Àœ Ì  
G©# N©°"G©# *  ä 	 ø	  Ä Àœ à
Àß	  @ Bœ    N©°G©# »«pK*  
‡ @ß	    Âœ Á ‡ Bœ @ Á ‡   »«pK*  0ß	À _   ß	À @_   ß	À _   ß	À _   *  À 
0;NÀ 0£,À  0"$À (0cX  Vß	À @_   ß	À _     À 0;NÀ 0£,       ²N  
 Â Á*  –,Ð    Â Á   ¯”L  2"@  2£,@  *  2;N@  2cX@  2©ä@  2©
z@        G©#@  *  N©²@  N©Ñ@  õª2,@  »«rK@      (  *  Ý©òW|\é¨1h  û¨1h. ?©YÕh6?©ÕhT*  ?©¬ÕhF?©eÖh(?©tÖh ?©µÖh>ø©ßh°   ÖªÐÔh† ÛªÐÔh< ¯”   
   Ý©òW  *    ß	° ¦Dß	  Àb PÐÄ A‚Cœ Âà  ° 2©äG©#b G©# *  &  ß	° ¦Dß	  èCÀœ ABœ Äœ   ° 2©
z*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©²G©# »«rK*  r ø	  …  



ðCÄ Àœ Ì ø	    N©ÑG©# (N©²*  ˜ Ä À• Ì ø	  ß	  DßCÄ Àœ Ì   G©      # N©Ñõª2, G©# *  ¾ ø	  ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©²G©# N©²"G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ  »«rK"»«rK*  
 Á ‡ Bœ @ Á ‡ ß	° _   ß	° @  °  2;N$° *  0_   ß	° _   ß	° _   ß	° @_   ß	&  2£,° 2"° 2cX° &2;N
  V° _     ° 2£,       ŒN  
 ÂøÀ*  öšw    ÂøÀ   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  W«®s@  »«oK@  »«pK@  »«rK@  *      (ˆÍªÂh4 ÍªPÈh      ’ ÍªÐÔh ¯”   
         *    CAæ  ÎeÈ Þ5 Bœ  @œ àÀœ `  
G©#*  & 
àÀœ ‡ ± ‡ ß	  %‡&Ä ø	  Â% 	À    G©#  N©¯*  L   —t 2   À‚Ä ß	  D  ø	  W«®sG©# »«oK*  r   … æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  -‡  N©Y
G©#G©#&  *  ˜ &Ä ø	  Â%
 Ä   D—t Âe  G©# N©°*  ¾  "!" ‚À‚Ä ß	  D  ø	  …   W«®s G©# »«pK&N©*  ä æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  :‡&Ä  G©#G©#"  *  
 ø	  Â%       À Àe Ð	ÄB $$$$ß	  G©# N©²G©#B *  0   —t Âe "(	"(‡‚"(‡‚"(†À‚  õª1W«®s *  VÄ ß	  D  ø	  … æ  ÎeÈ ÞÕ Öæ  G©# 
»«rKN©ÑG©#  |  ÎeÈ ÞÅ …   G©#       tN  
 Â¨À*  ö´r    Â¨À   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  »«oK@  »«pK@  »«rK@      (  ©^Z|¸"  ÚªÂh  ÚªPÈhn ÚªÐÔh ¯”   
   ©^Z  *    CÄ Àœ ô   ø	  AÂœ Dœ áÀ ø  G©# N©¯&G©# *  &   Â
€

      ß	  û €< ün  T…Bœ  »«oK*  L  Ãœ Âà ß	  Dó     ø	  … CÄ  »«oK"N©Y*  r  Àœ ô	   ø	  AÂœ Dœ áÀ  Ì  G©# N©°"G©# *  ˜  4
 Â
€

ß	  À  ð €2   »«pK*  ¾ 
² dJ…
b…Bœ Ãœ Âà ß	  Dó  "»«pK*  ä 	     ø	  … æ  ÎeÈ ÞÕ … CÄ Àœ   N©G©#$G©# *  
ô   ø	  AÂœ Dœ áÀ  Ì 4
   N©²G©# *  04
 4
 Â
€

ß	  À  ð €J
  »«rK*  Vr
 r
 r
 Êe r r r dJr r*  | ¹…d      Jr ´…dJ±…
b¯…Bœ Ãœ Âà ß	  ¢  Dó     ø	  …   »«rKN©Ñ       N  
 Â`Ç*  *’úD    Â`Ç   ¯”L      (  j¬úDì´  G©#h  ¯”   
   j¬úD  *        &     :     N     b     v     Š     & : N b  v &Š  ª   ª  ¬      ¶   ¬ ¶  º *  º  ¾  
Ä       D                  ¾ Ä D*  à                               4                             D*  DCL @  –CO    œAL   ¢CH   ¨WI @    
–œ¢"¨*  j–EX   ®WR           SH €    MA     LO€ 
  –®(        Ô   Ð   Ð   É   Ö     Ô Ð Ð É $Ö        N  
 ÂˆÇ*  …˜pq    ÂˆÇ   ¯”L  G©#@  N©/w@  *  Ã©’@  Ûªl†@  ‡¬À]@  “¬’@      (  *  ¬"|Ì¬"h  ¬…qh¬qh¯”   
   ¬"  *    
Ä  4-  ‡f t2 æ ß	  
 $ æ  G©#"Ûªl†&$ *  &   Îeª Þ4 _      À
q-  f   G©#“¬’*  L t2 æ ß	  
 \ æ  Îeª ÞD _   Áe å  Ûªl†\ G©#"“¬’*  r  Wp m ´
 æq   &CÀœ ø	          (N©/w*  ˜ „€1
  f æ- ß	  
 ° æ  Îeª Þl_   Ûªl†° G©#*  ¾   €ñ  €1
  q q q q Ä  1  “¬’$G©#*  ä $ 
 ƒÅq EÅe ñ  Åe ô
 Ã*  
Æe
 _   ƒ…Õ_  Ä  4-  ‡f t  
‡¬À] G©#*  02 æ ß	  
 >æ  Îeª Þ4 _        Ûªl†>G©# “¬’*  VÀ
q-  f t2 æ ß	  
 væ  Îe  Ûªl†"v&G©#*  |ª ÞD _   Áe å Wp m ´
 ñ     “¬’*  ¢q q q q Ä  1$ 
 q EÅe   G©#  È_     ‡¬À]             èN  
 ÂHÁ*  ó`""    ÂHÁ   ¯”L  G©#@  Ã©’@  *  Ûªl†@  ¬ N@  ‡¬À]@  ¬"@  “¬’@  *      (  ,«šw|¢ ¬<Nh8 ‡¬$ahv ‡¬ bh    ¬,"h ¯”   
   ,«šw  *    Ä  t2 fŽ#‡Ö_   Ä  t2 f Ž  G©#‡¬À]G©#*  & ‡N Ö_   Ä  t2 fŽ‡N   ¬"G©#*  L Ž‡Ö_   ¦ æ ß	  
 f æ  Îeª Þô   ¬ NÛªl†f  G©#*  r _   Ä  t2 EÍÂæ	 ß	   ’ æ  Îe  “¬’
G©#Ûªl†"’ &G©#  ˜ ª ÞL _     “¬’       œN  
 Â˜Á*  å˜€W          Â˜Á   ¯”L  G©#@  7ªl†@  *  ¤ªD@  Ûªl†@  ”¬¸p@      (  ’¬p…|p*  C©h„Ã©’h.6ªÏ}h> («LwhŠÀ«""h<*  …¬0XhŒ‡¬À]hD‰¬üXh  “¬’h¯”   
   ’¬p…  *    ß	  ß	L Á  	 @ ð p
 æ æ  æ  ¤ªD
L G©#&”¬¸p*  & iÿˆ: óV {	V ß	ˆ … &ß	L ß	^ €‡   ˆ  L $^ *  L À¬  ‡ À_ .À   &Îe  ,  Ö  G©#¬ .G©#*  r ‡ æ# ß	   € À_ .@ û  Xæ$ ß	  Ûªl†€ .*  ˜    ž Ä  À& m¸ 	Š  Ã@ 3
  À
€
  Ûªl†ž G©#G©#& *        ¾ È‹@È¥  úÈ¥, ÷È¥	 ôÈ¥* ¢0 $‡¢9 *  ä !‚”Áå0 ¢0 ‡¢9 ‚Wp
 ”Âå0 `óóÿÿ*  
  ×Á
Áå Â t³P  à‹Êæ  Îeª   $G©#*  0Þ(æ% ß	   @®‡ Ä  t$ t ( f  Ûªl†@G©#*  VÎe Ž  ý  	t/  & t  & ü	& t *  |t  t" …| ( ‡ Ä  ô &f    G©#*  ¢ Á
Wp m q# Áå À
ù€Õ… 4  *  Èt2 f æ ß	  
 Þæ  Îeª Þ< _   Ûªl†ÞG©#(*  îñ
  Å ô
 Å
 E`€_ Dß	> ß	<   D$> (<*  Ä  : óX {	X Äª  &æ      ÿˆæ3  G©#G©#ª *  :ÿˆ&Äô „‡ æ&&&æ  Îeª Þ  
G©#"G©#  `  ß	   jƒ„‡   7ªl†j       °N  
 ÂXÀ*  ˜8w    ÂXÀ   ¯”L  G©#@  N©/w@  *  Ûªl†@  ‡¬À]@  “¬’@      (  ‡¬a|0 *  ‡¬ah  ¬ N| ¬ Nh  ‡¬`^|* ‡¬`^h  *  “¬h| “¬hh  ¬d|( ¬dh  …¬Ps|&   …¬Psh  ¯”   
   ‡¬a  *    Ä  t2 EÍ_   æ	 ß	     æ  Îe  G©#‡¬À]Ûªl†"  &G©#  & ª ÞL _     “¬’ ¬ N      &@PP€… 
   ‡¬`^  *    CÀœ ø	        À	 ‚ÕÀ
ÀÀ`_   @ÀÀ  N©/w"‡¬À]  & `… 
   “¬h      æ  Îeª Þè æ ß	    …   G©#Ûªl†  ¬d  *    Ä  t2 fæ" ß	  
  æ  Îeª Þ_   G©#Ûªl† G©#  &     “¬’ …¬Ps  *    Ä  t2 æ# ß	    æ  Îeª Þ_     G©#Ûªl† G©#(“¬’       ŽN  
 Â@Î*  e,8w    Â@Î   ¯”L      (  Ü©;"8„   Ü©;"h  Ü©X"h ¯”   
   Ü©;"  (    &D {  &ùL L R R X X ^ ^ L *   L L R R X  X "^ $^ &L   $ L R R ^ ^ z       z z z d *  L R R 
^ ^ z z z z d *  8 h v R ~ ~ ~ ~ ~ ~ ~ Â Â Â *  h v R 
~ ~ ~ ~ ~ ~ ~ *  ^ Â ‚
	‚
Ã
„ÂEàÿ‡ ‚‚
ÂEàÿ„‡        (N  
 ÂÐÀ*  »Ô!    ÂÐÀ   ¯”L  ü¨@  G©#@  *  t©@  Ü©;"@  Ý©w~@  Ûªl†@  “¬’@  "      (  ë¨Ô!|À …¬»h  ¯”   
   ë¨Ô!  *    Ä  BCß	  T ß	  — „ _ v Àß	  V &  G©#ü¨T Ü©;"v &Ý©w~(V *  & J > €`àÐ•  C~ß	  V … Ã& 
Â„ ëß	  J > t©V G©#& *  L         \ _   Õß	  \ æ  Îeª Þø æ ß	   (  t©\ 
“¬’t©\ G©#&Ûªl†*  r t … ¦æÂ„ Ã& ß	  ¸ ° ® 
€ÂÐ”   t G©#& Ý©w~¸ ° ® *  ˜ Á
„~Ð•  C~ ÄÅÈïÖÖ_ J ÖÖ_   "J   ¾ V   V        dN  
 ÂXÀ*  {ùe    ÂXÀ   ¯”L  ü¨@  G©#@  *  t©@  Ü©;"@  Ûªl†@  U«w~@      (    i©Yy|h …¬{h  ¯”   
   i©Yy  *    Ä  BC@€
À@aÁ D&@ß	  H @à4Š  G©# ü¨"H *  & º ß	  ß	  H ~@
4º õß	  N …… ß	  "  Ü©;"U«w~H t©       N (t©   L N æ  Îeª Þ æ  ß	   f î  N G©#Ûªl†f        ¾N  
 ÂˆÇ*  J†7x    ÂˆÇ   ¯”L  ü¨@  G©#@  *  t©@  Ý©w~@  ¶ª·„@  U«w~@  “¬’@  *      (  ¬÷q|è	ô¨Aeh7ªl†h  Ûªl†h 
  ¯”   
   ¬÷q  *    6 6 ¦¦¶  ö  ö  ¦¦¦æ*  & ƒÓf&¦f&³ Á  s s KæÄ    (G©#*  L ÂTI
ß	  ¤ ƒÅå …ì r2 À Àˆ	  ü¨¤ (ˆ	*  r ß	¸ æ&¸ ß	  ‚ ´¸ ƒÅÃl K€‚„  ¸ t©‚ *  ˜ …£Æƒ_   ôª ƒÆ Ë _ v Â      & 4Š  ¶ª·„"v &G©#& "  ¾ º R•þ€˜x ä Z6x fú Š~„*  ä Z6x fú Š~ „*  Ü rZ>æ ø @•fˆ	ß	À …_ À ‡ ôÕ º À"  rZ>
æ ø ˆ	À À *  & àæôÕ º ß	  ¤ 4Šº ƒ_ À ß	    G©#& U«w~¤ "À (Ý©w~*  (¤   "ƒó%  ÅÒ	_ ¸ À& æÂO ß	  &  ¤ “¬’"Ò	¸ G©#& (Ý©w~*  N¤   "ƒ_ À @•À` Ë_ À @• c Å_ À @•  ¤ “¬’"À À &À *  tÀ` @•À`$@• c!@•À`1@• c? ABCDEFGHI*  šJKLMNOPQRSTUVWXYZ$. 0123456789  ”*        ÀB~_ À Ê—®Š”Š”Š”Š”’”¦ 
r bœ®ù  À ®$®*  æ‚_ À æƒ 
r
 fœ®ùƒáƒ’•Â~ƒ_ 
  À ®*  À f… 
r( Rœ 
r( RœR“œ…  À  &*  2_ À &@•fˆ	L8 fß	À …÷…Œ_   À ˆ	À *  XÀ @•fˆ	æ     3  Àe &f
  À ˆ	*  ~fß	À …€N~³ …_ À @•ˆ	_ À þì þ  À À  ˆ	$À *  ¤äSUBSCRIPT TOO SMALL OR TOO LARGEðþü þ*  ÊäINDEX TOO SMALL OR TOO LARGEðþü þäDEP*  ðENDING ON ITEM TOO LARGE OR TOO SMALLð*  þü þäILLEGAL PROGR      AM REENTRYðþú þäINCO*  <RRECT NUMBER OF ARGUMENTSðþúèì þäPERFO*  bRM STACK OVERFLOW þêðæî þäPERFORM END *  ˆOF RANGE VIOLATION þêðæî þäILLEGAL NES*  ®TED PERFORM þêðæî þäNULL ALTERABLE GO *  ÔTOðþü þäSAME AREA ALREADY BUSY WHEN OP*  úENING þöðþü þäþö ALREADY OPENðþü þäþö *   NOT OPENðþü þäINVALID OPERATION ATTEMP*  FTED ON þöðþü þäREAD MUST PRECEED REWRI*  lTE OR DELETE ON þöðþü þäþö PREVIOUSLY *  ’LOCKEDðþü þäCLOSING UNIT OR REEL UNSUC*  ¸CESSFUL ON þöðþðþü þäOPEN ERROR USING *  Þþö      ðþðþü þäCLOSE ERROR USING þöðþðþü þä*  þö NOT OPEN FOR OPERATIONþöðþü þäINVAL*  *ID LINAGE VALUE USING þöðþü þäNO END O*  PF FILE PROCESSING ON þöðþü þäREAD ERRO*  vR ON þöðþðþü þäWRITE ERROR ON þöðþðþü *  œþäREWRITE ERROR ON þöðþðþü þäDELETE ER*  ÂROR ON þöðþðþü þäSTART ERROR ON þöðþðþ*  èü þäUNLOCK ERROR ON þöðþðþü þäBAD NAME*   USING þöðþü þäSTOPìü þäUNKNOWN PROCED*  4URE ðþü þäACCEPT ERRORð þäDISPLAY ERRO*  ZRð þäUNABLE TO COMMUNICATE WITH USERð *  €þäFATAL SOURCE ERROR ENCOUNTER      EDðþü þä*  ¦ENVIRONMENTAL INTEGRITY FAULTð þäSPECI*  ÌFY ALL "ON" SWITCHES:ðü þäINVALID INPU*  òT, TRY AGAINðü þäODD ADDRESS FAULTðþè *  þäMEMORY PROTECTION VIOLATIONðþè þäBPT*  > INSTRUCTIONðþè þäIOT INSTRUCTIONðþè þ*  däRESERVED INSTRUCTIONðþè þäINVALID EMT*  Š INSTRUCTIONðþè þäFLOATING POINT EXCEP*  °TIONðþè þäPERFORM COUNT TOO LARGEþêðþü*  Ö þäEXPONENT TOO LARGE OR TOO SMALLðþü *  üþäSTART OPTION NOT SUPPORTED: þöðþü CB*  "L -- ö:          þúOCCURRING IN ò ò" *  HAT OFFSET ô2ð       þþPROGRAM òò (òò
)   *  n           öð FILEþôþò ú
 ø
 ú (ø) *  ”úþþASSOCIATED RECORD SERVICES ERROR: *  º-öþæð îþþNESTED PERFORM SOURCE LINE *  àNUMBERS:ðæø î8þþLISTING OF NESTED ENVI*  	RONMENTS:ðèü ú
 AT SOURCE LINE NUMBER *  ,	ö
  þþR0, ..., R5, SP, PC:ðþþê
 ê ê   R	ê ê ê ê êð ú (-ö)     l	  l	 b	0		ìÁ”Œ†}*   b	0	
	ìÁ”Œ†}  €	mV4, £Éë6*  mV4
, £Éë6  ”	[z¡ÀÚ,S‚*  [z¡
      ÀÚ,S‚  ¨	œËæ#Fkƒœ·*  œËæ
#Fkƒœ·  ¼	Ñê$<L]€¤*  Ñê
$<L]€¤  Ð	Åä9Nc}š¸*  Åä
9Nc}š¸  ä	×ü
  ×ü       ¶N  
 ÂXÀ*  ·„[q    ÂXÀ   ¯”L  G©#@  ¤ªD@  *  Ûªl†@  “¬’@      (Dü¨h  t©hR *  Ý©w~h€ ¶ª·„h>U«w~hà ”¬¸ph.¯”   
         *    ´ ® ô ° ´® ô° æ¦æ æÿˆY‡&
*  & &
&
&
&
&
&
&´ &
Î• æ æ æ      ÿˆE‡*  L Îe ‡ &
&
&
&
&
&
&
&´ &
Î• æ æ *  r æÿˆ.‡Îe ‡ &
&
&
&
¦æ&
&´ &
Î• *  ˜ æ æ æÿˆ¸ ôU º ô‹¶ 	ô‹· Îe*  ¾  ‡ Îe 	­¶ öÿÎe ¶ Ž  ‡ ô5*  ä º  æ¦¼ Â&
&
&
&
¦æ&
&´ &
Î• *  
æ æ æÿˆ‚ƒô‹¶ ÚôE º &
&
&
&
*  0¦æ&
&´ &
Î• æ æ æÿˆô‹¶ Áô5*  Vº ôU º ôE º Â Â&
&
&
&
¦æ&
*  |&´ &
Î• æ æ æÿˆô‹¶ žÎe ‡ ß	*  ¢À4æ& )ß	À<æ' "ß	ÀDæ(    *  Èß	ÀLæ) ß	ÀTæ* ß	À\        $*  îæ+ ß	Àdæ, ß	   Å  5ª _     Ûªl† G©#(“¬’*  ¶òÿŽÎe f&æ¦f&æ‡  ®¼ÊØæ    ®"¼$Ê&Ø(æ  :  ôß	  ‡   ô
¤ªD       f N  
 Â°Ì*  £K Œ    Â°Ì   ¯”L      ( ¤ªDh  
  ¯”   
             ‡        ”N  
 ÂÐÀ*  w<    ÂÐÀ   ¯”L  G©#@  N©/w@  *  Ûªl†@  ¼«/@  “¬’@      (  º«<|˜*  e©„dh2e©ûfhxº«<h  º« <h º«!<hH   ‰¬ˆ–h&¯”   
   º«<  *    B Âe CÀœ ø	ú Á`Cs …       B Âe  ú *  &  CÀœ ø	ú Á`CÀœ ø	ú Á`Cs … B
  ú ú *  L  Âe CÀœ ø	ú Á`CÀœ ø	ú Á`CÀœ ø	
  ú ú *  r ú Á`Cs … À $CeÒ ‡ æ ß	    ú (Ûªl†*  ˜  œ æ  Îeª Þ _   Ã Ã
Òp	‡Ò ‡   œ 
G©#“¬’*  ¾ À Ðôæ ß	   Ö æ  Îeª Þ _   Ûªl†Ö G©#$  ä   ß	  Ãâíø	  ÃÝè¬ ¬ ð ð ð (  “¬’¼«/N©/w¬ ¬ ð  ð "ð   ð ð ð ¬ ¬ ¾ ¾ ð ð æ *  ð ð ð 
¬ ¬ ¾ ¾ ð ð æ *  æ æ æ æ æ æ ~ @Ã
ÕpÈ… ABCÀœ ø	        æ æ æ 
æ æ æ ~ *  >  Õ Õ 
„ Dì òp  añ  … æ ß	    N©/w(Ûªl†*  d hæ  Îeª Þ _   ACÀœ ø	  Õ êÕ   h
G©#“¬’"N©/w  ŠèÃ
ñp ñ …        N  
 ÂpÆ*  ]!ô    ÂpÆ   ¯”L  û¨6@  G©#@  *  N©T
@      (  Œ©`;8:Îªí+h  Ïªh   Ïª˜!hv ÏªHXhX ¯”   
   Œ©`;  *    ÀH À8 B‚CÃ ÕD Nf„
•
  H 8 *  & Ö‡ •ùÅEðÿH Á
“”Ó•  GîÁ
*  L BàÁ
“”GæNÎe Ä CÁœ Àœ ø	  ß	  G©# &N©T
*  r ² 5NÎe Ä       CÁœ Àœ ø	  ß	² æ  Îe  ² G©# N©T
"² &G©#*  ˜ È Þ5 ß	à æ  ÎeÈ ÞÅ ‡ f@œ BàD  à G©#*  ¾ Å: ÀÁß	  …CDÃ @  Å: ‡ æ•    G©#: û¨6"G©#: *  ä Ba˜ÁE¿ÿÊÅ@ Î•- Áe f7 &6<0    "&$6&<(0  
BHNX`’¨ÄÒÚ*  BHN
X`’¨ÄÒÚ*  úÆe ‡ Î5 !ÎU “ ÎE ÎU 6”  ú*  D 6” Î5@ úÐ‹Î5@ õú”Î5 ‚*  j “”ÁW € y  y Š BÂEðÿWtüÿÁy 
   Š *  *”Î5 êÂE ÿƒà“ ƒ~ã”Î5       ßÎ5@ Ü  **  ¶ÂE ÿÂàŠ Õ”DàÒß	Î“ ƒ~Êß	  *  ÜÎ5 W 0  ÎU S~ºß	Î5 
  $*  
W 0 ÎU “  S‘~¨ÄA•W 0   (öE  ‡ Á0 „
‡        XN  
 Â€À*  œ,´    Â€À   ¯”L  G©#@      (    ¬K|  ¬Kh  ¯”   
   ¬K  *    Ä& &æ=ÿˆ@  AÁ
&Ã
CCÂ5
  G©#& *  &  ÓÃ` c
—r
 ðœ  ¤„Cœš Ä`Aœ   `  "š ( *  L 
—r
 œ Ðœ I~…       ; < Z [ x 
    *  r y — ˜ µ ¶ Ô Õ ó ô 01N      O01234567  ˜ 89         ¾ N  
 Â¨À*  œ,¡E    Â¨À   ¯”L  G©#@  N©°@  "      (  œ,¡E|* Ý©Ñ~h  ¯”   
   œ,¡E  *    æ&&Ã Àœ Ä ô	   ø	  €ð  „  G©# N©°  & ƒ‡        Ä N  
 Â€À*  \g¡E    Â€À   ¯”L  G©#@  N©@  "      (  \g¡E|0 U«Ñ~h  ¯”   
   \g¡E  *    &¦æ&Ä Ã Â & (   ø	    G©# (N©  & „ƒ‚€‡        rN  
 Â¨À*  9wÈK    Â¨À   ¯”L      (  »«%|D*  W«®sh  »«oKh˜ »«pKhÐ »«rKhÂ       »«vKh´ 
  ¯”   
   »«%  *           
       d       è      '    *  &    †     @B     €–˜      áõ     Êš;*  L      äT    èvH    ¥Ôè     rN	   @*  r zóZ   €Æ¤~   Áoò†#   Š]xEc  d§³¶à*  ˜ ÂSTf —t rp  | ‡ ÂEZfÁ    *  ¾  Â>WfÁ Â7TfÁ f& *  ä æ fÅ  —  €…Wu À5p  @m  T
     &  *  
¦ÀL5p  @m  T`@Î
ôÖ„ã„ãÄå 
      *  0Âå ÝÖƒ„…‡ ‡ f&
 €N
 
*  V—t 2r  Ö€ < ‡ fÁ fÁ           *  |fÁ æ & f&
fEÅÅå Å`*  ¢Õ€ß	Å  ÁC`D`—  €…Wu ¦ 
Áv  
*  È 5   	@í  vÿÿ5r  Àe €vÿÿ5r  $@        $  *  îÎ
éÖ„c„cÂå ÚÖ€fd
B~± TB~*  …„ƒ‡ Á&D`dL
C~ ± TB~„  :v
  ‡        JN  
 Â¨À*  —˜"    Â¨À   ¯”L  G©#@  N©²@  *  N©Ñ@  †©Š@  Ûªl†@  êªP›@  W«®s@  *  »«vK@  “¬’@      (  ¬š|ˆ¬šh  
  ¯”   
   ¬š  *    CÄ Àœ ô    ø	  ÁCÄ Àœ ô      G©# N©²      G©# *  & ø	  fÄ  Ã%x%v%tƒ  Âœ Å    N©²(G©#*  L µ &%€D &Cœ µ —t ”  ” ”  "W«®s&W«®s *  r  ” 



À Âß	  €A Â ß	   W«®s W«®s G©# »«vK*  ˜   Á D ß	t5Š fœ f À C B   †©ŠG©# t G©# *  ¾ Ä ÂàJß	  õ@ ÃC-B 7C-D 4C-F 1C-  G©# »«vK*  ä H .ö
 €A
 B ß	  ƒ A C`õ   êªP›*  
ÓÆe …DÃ   ó   ø	  … æ. ß	    G©# N©Ñ(Ûªl†*  0 4æ  Îeª Þt_   Æe æ  ÎeÈ ÞÕ …        4
G©#“¬’G©#*  VÕ…    
«Ô 

  |




‡        DN  
 ÂpÆ*  šw     ÂpÆ   ¯”L  >©Ì.@  E©e@  *  G©#@  ø©ß@  ‡¬À]@      (  ½« q|Ä*  >©¹.hº?©yh°?©y×hl“¬,hZ “¬;	hê   “¬Ëhð “¬šwh( ¯”   
   ½« q  *    Ã AÁ
Wt @`ð,     0. * 00 , *  & ‡ Ä  @C  Âe* RRRJß	  Âå ò   G©#   *  L Öz   …_   Ä  4
æ 4
è 4
ê Ctä   ‡¬À]G©#*  r   Âe* RRRJAÁ
Wt C`ô â Á  
3r*  ˜  €
4æ Â @‡      ƒ~Á Bttè ä ß	Ö   &Ö *  ¾   Âe* ò Öz   …_   { Á
tpâ À   ‡¬À]*  ä p ‡ Á ÁÿÿÄ    tpê B¦	‚  G©#*  
ä è Bp@;à è 	  ². * ²0 , *  0tè Bpä À `{ t æ Ýß	Ö Ö    "Ö *  VÂe* ò Öz   …_   ß	  Åe Àe Áe   ‡¬À]ø©ß*  |	"
Â !(‚‡„~… À ÀÿÿÄ  4ê   $G©#&  ¢åÖm å_   ß	  í‚ï‡… ß	  è‚ê‡…   ‡¬À]E©e>©Ì.       `N  
 ÂÀÆ*  òyw:    ÂÀÆ   ¯”L  û¨6@  G©#@  *  N©¯@  N©²@  N©T
@  N©Y@        N©Ñ@  *  N©/w@  N©!£@  Ü©;"@  Ü©X"@  W«®s@  *  ‡¬À]@  ¬5a@  µ¬5a@      (  Ì«·r|â*  ‰¬TZhš‰¬WZhÆ‰¬XZh¶‰¬€Zh¶‰¬¤Zh¤*  ‰¬§ZhÐ“¬âh  “¬ãhl “¬ähV•¬ŠZh6  •¬‹ZhÀ•¬ŒZhP¯”   
   Ì«·r  *    Ä  tò ß	* Ä  t. t0 … õ Ö]   G©#* G©#*  & _   tÃ ô & ô  ô•  4Š 4  ‡¬À]*  L ôe Àœ ø	  ÃÎe ‡ À  p  N©/w&G©#*  r ì ß	  ° ðfÅ  CÄ Àœ ô     Ü©;"G©#G©# *  ˜ ø	  õ & Aò Dß	´Á õì @      ì 
ß	  N©¯´G©# *  ¾ žBò r-&   „"}ž ö µ
& ±
 ñ
    ž*  ä Þ
B @Cô ëAö ƒ ƒß	d
  $d*  
Âß	d„õ`& Ã õ &D  ø	  „  dG©# &N©Y*  0…À  Ä… Àe  ð0 Öx . Åe. _     G©#(‡¬À]*  Võ Ö] _   &æ— 
 ‡À5 Á5   ‡¬À]*  |Á5 	”Â
ƒƒÂ~ÂEþÿ”‚~ƒ„‡ &*  ¢ß	  „æ¦
€ B  Âà‚#‚fA Á`¤  Ü©X"*  Èƒ~ƒcÄíÖÖÄ‡ Á>W¬ , *  îW¬ 0 B  C     _	  ‡ B  C   ¬5a*            _	  ‡ ð  À ð   ø•0  f  µ¬5aG©# *  :fE D  Bœ     ß	  ƒ…Àœ ø	    û¨6(N©!£*  `‡ ƒÄ Àœ ô   ø	  Àœ t Ä l    
G©# N©²(W«®s*  †Lt t l Lt l Ll ƒ „   W«®s W«®s  W«®s *  ¬ ø	  ‡ æ&Dß	  „f Áô ‰	í& ‘
É  N©ÑÜ©X"G©#ô *  Ò	m& Ñ
‰ƒ‡ Á Ä  ß	´Áô 
ß	ž‡ ×¬   G©# G©#´G©#ô $ž*  ø " 8
×¬   3Áœ  Ál Á
Á B’³ *  — { — [ — ? — } 	— ] — ! — *  D: 
— A       — 0 ø— 9 õ— R ñÂå@ *  j‰œp‡ 0,1,2,3,4,5,6,7,8.,9.1,2,3,4,5,6  p*  ,7,8.,9.×¬ " 
×¬   
Áœ  Ál Á
*  ¶Á Éœ ‡ Ä  At ttß	* Ä    G©#"* (G©#*  Üô  t
´ÖÍB¦fÂ5 @úf*    t. t0 &
… ÕÍ5 €Í5 @Åe úÕÕ*  (õ Ö] _   Ä  tî tð tò fÅ    ‡¬À]G©#&G©#*  NÄ Àœ ô   ø	  õ & Á Dß	´õ  G©# N©¯ G©# &´*  tô j&
&
v þ 
þ5   D
€  *  šÁô ß	žþ5 @ öå  êŽ
µ
ö õ
ô Þ  G©#ô       
ž*  À
Dî ß	  µ ô ŽNô 
µãö µô   Ü©X"*  æÀô Aî &ß	à„µcö 5ô Àô Að ß	àµ  G©#ô àG©#ô &à*  N Ã Dò   ø	  umô & µc& Ã D  G©# N©Y$G©# *  2Ä   ø	  ÖÖB
ß	b…… Ä    N©Yb$G©#*  XÁ ß	´ôô Åe … õ Ö] _   D
  G©# 
´$‡¬À]*  ~æß	  ƒ“  ‡ 


‡ Ã  ³  Ü©X""G©#*  ¤Ã  3
&
fó & ÅÍhå³
& ó,&   G©#*  Ê `óÍ5€ Í5 Tõ,& èÿPÍE€ ÍE õ,& *  ðêÿBÍ5  Ä @      óÀå Àå Í5 *  õ,& èÿ,ß	Þ)ß	Þ+Ã  &ó@  ÞÞG©#*  <òÿÁÁl& Á
ß	dBÂå ß	bÃ  ³e&   d b$G©#*  bõ& èÿÍ5 @¬ÍU€ û
§Ã  ÍU€ û
Ã    G©#(G©#*  ˆÅå ˜Ä  Ã ß	˜ãÃå ôß	  G©#G©# ˜*  ®˜Ãå ß	˜Ãå ð…… À  °À    ˜˜G©#(G©#*  Ô0
ÖfÆå ƒß	zðƒß	öÆå ƒß	
  z ö*  úzƒß	öö5   ö   Æå ƒß	zƒË  z
ö"z*   Ó  ‹
‹í ‹
€)ó"þÿ&9ß	öð &   "ö*  F      0,&  	€ß	ÞÀ  °
& óÀ  ƒß	˜ö5  ÞG©# G©#&˜*  l  öU€  0a& & ð$ ÏƒÃe ß	˜ð  &˜*  ’Ãe ß	˜Æe Ó & ¾¸
&
… Ö  ˜*  ¸Dß	  Ã ³  3  3  ß	ö&
Àˆ  Ü©X"G©#  ö&G©#  Þ&
…        äN  
 ÂøÀ*  ;}ÀD    ÂøÀ   ¯”L      (  :©€l" *  :©€h  :©Æ%l  :©F–l  :©H–l  :©N9l  *  :©P9l  :©.;l  :©0;l  :©~El  :©€El  *  :©>l  :©@l  :©.El  :©0El  :©>&l  "  :©@&l :©lzl  :©lzh  ¯”   
   :©€                      &  :©>&  :©N9  
    
:©~E    
         *    
  
:©.;  	    

:©>             *      
:©.E      

:©Æ%             &  :©F–      

:©lz   :©@&               êN  
 ÂpÁ*  KTl†    ÂpÁ   ¯”L  G©#@  7ªl†@  *  ¬…q@  “¬’@      (  Ûªl†|ÎG©Õhä *  U«Yfh  ¹«Ùhv ¹«Ìhœ Ã«)#h¸Ã«1#h˜"  Ã«;#h\B¬òyhÆ C¬µ	h¨ ¯”   
   Ûªl†  *    Áœ" Wp  l> @ÁÁe @
Öß	   &   $7ªl†(& *  & ô ª _   Â’ ’       ’ ÒŽŽŽæ&  “¬’G©#*  L f&
f f &æ ß	  …„ƒÂ


  ¬…q"G©#*  r 

‡ Á ñ r  ±
 ¡ ‡ ß	˜96
   $˜*  ˜ ± ‡ Á 1
 ‡ &f¦À Á Â
 ”‚~*  ¾ ‚€‡ &f¦À Á Â
 P”‚~‚€‡ *  ä ”Ál 	”¢ÿÿù‡ 0002102122232430349091*  
929596979892                0    hprz~€†Ž”˜*  hprz~€†Ž”˜  Lœ¦°¶¼ÂÊÖÚä*  œ¦°
¶¼ÂÊÖÚä*  `ìøþðü ý@ý    °ý`ú   ðü          @ú`ú    ìøþ
*  †°ý`ú   ðü`ú  `ú  `ú  @úPü`ú   ðüPüú*  ¬`ú  @ú`ú  @ú`ú  @ú`ú  °ý`ú    Àùàýðü*  Ò`ú  `ú   Ðþàý`ú  @ú`ú    àýúðü`ú  *  ø@ú`ú   àý@ú`ú     
 *  

 


   D
 

0   \*  \&A  @8È- ûàÀç8€œ
À   88$
*  ‚Pœô Hœõ €AeN‡ €Á ”	’€Ð  ô õ *  ¨&
&
fß	  ‡ Á ¦  ‘“Î ‰•Îe ‡            rN  
 Â¨À*  S`l†    Â¨À   ¯”L  G©#@        Ã«1#@  *  ‹¯=@  ‹¯@=@      (  («l†|H©ª%h    ©ªph„¯”   
   («l†      P                                     
 
  
          &   &                  P %  P P                                  r   r              *    &fÀ  ÁP ¦”B~‚Å& 4
Ê Á ß	êW‡  
  G©#& &ê*  Æ r* 2- Á ß	êM‡r( 2, 3Ú " ô5 @  ê*  ì Ê 2Ô  ô5 €Ê ò•  ô5 Ê ò   *  ô5 Ê ÁeÖ r ò  ô5 0Ê ÁeÐ *  8r
 r ô5  Ê òU€  ò&  ò$ .       ò( *  ^ ò*  òœ 3 ¡ …€‡ …€ß	  30 ± ‡    Ã«1#*  „&f&ÅP ÄP P•Å$ 
s €0‘  …„  P *  ªð•   ðœ#  °$ ð  ð&  ð  ô5 *  ÐÊ ð  ô5€ Ê ðW  ‡ æ Ì CAð*  ö p U”Â~ß	  ‡È• 0Î  ß	  ‡ðµ8    ‹¯= ‹¯@=*  4\ Ê    EW¥/ Ä~Ààƒ¡ ‡ 
  Bƒ± ‡        N  
 ÂøÀ*  ›:à~    ÂøÀ   ¯”L  G©#@  Ûªl†@  *  U«Yf@  «¯@  «U(@  «v:@  «T[@  *  «Tq@  «)x@  ¤«ªH@  ¤«úW@  Ã«)#@  *  Ã«1#@  Ã«;#@  ‡¬À]@  “¬’@      (        *  A©D^|š9©t!h¢ ;©¿'hŒ ;©†:hR;©zLhê *  ;©hMh>;©jMhê >©¨h\>©cMh.>©èYh€ *  A©öZhFA©ÿZhÜ F©ªNh– F©@`hè K©=Ÿhj *  ƒ¬4KhXƒ¬kMhX ƒ¬
Nh^ „¬%!hL ‰¬÷XhÐ*  ‰¬¼^h¾ ‰¬ò`hº ¬Ödh. ’¬lh4 ’¬îh: *  ’¬ê"hR “¬:}hF •¬4Khf•¬kYhd —¬üqh@ 
  ¯”   
   A©D^  *    fÅe Ä  CtÚ  @ ‚ Ál A’l: À  G©#*  &   AI Á  éÁ ãÁ àÁ ÝÁ Ú*  L Á ×Á ÔÁ ÔÁ ÑÁ	 Îæ# ß	    (Ûªl†*  r  v ôª _   ß	  94 _ ¾ ß	  94 … ß	  v “¬’Ã«1#¾        Ã«1#*  ˜   93 _ ¾ ß	  10ô5 Ú Á ñ•  Îe   Ã«1#¾ Ã«)#*  ¾ …NÍ‡ å_   &
&
æ ß	  ñß	  94   ‡¬À]U«Yf$Ã«1#*  ä _ ¾ … ß	  00f&æ …ß	  Æe …,    ¾ Ã«)#«T[*  
& ß	   ,& & æ ß	  … 3  Ã«;#,$U«Yf*  0Ú " ß	  94 … ß	  00… ß	  94 _ ¾ ß	    
Ã«1#Ã«)#Ã«1#$¾ (Ã«1#*  V94 … ß	  94 … ß	  00ô5 Ú f&æ   Ã«1#Ã«)#*  |…ß	  Æe …,  & ß	  . °  &  «TqÃ«;#"°$ & *  ¢ & æ ß	  … f&æ …      ß	  Æe …,  U«Yf «U(*  È  ñàß	  @ Á Â À0 ß	  Á
   «v:$¤«úW*  îÂ À0 ß	  Á Â À  ß	  Á   ¤«úW"¤«úW*  Â À ß	  Á Â ß	  À 

³  ¤«úW¤«ªH*  : ƒËƒ#‚
r Âô…  @  *  `B‚ò ù ³  ³  3
 fæ  †æ …ß	  Æe …ä…   «¯       vN  
 Â€À*  äfì    Â€À   ¯”L  D©b@  G©]\@  *  N©/w@  i©{@  7ªl†@  («$@  U«Yf@  *  U«Ý@  «\g@  «)x@  Ã«;#@      (  *  
­WTì2 H©Är|ˆ4ªu:h      ô ©ªXhš ¯”   
   
­WT          («$         D©b         G©]\           i©{ 0   0     U«Ý H©Är  *    































Á,&*  &  ð   Â  Â,& Â& fŽàp f&    *  L æ …ß	  Æe …,  & ß	   t €   «\g"Ã«;#&t (€ *  r t â° ¡ ‡ & & æ ß	  ° ±   t "U«Yf*  ˜ ‡ ó5   Á
ô5 Ú º‡ Â. ô5 Ú r` *  ¾ ²,  	Á
², 
 ¨ôU Ú ¤rà  ì *  ä l ß	  ß‡ôU Ú fÅ. BÂe õ  Á   
  *        
ÍR&æ&CÀœ ø	  Ê„ƒ€Ò"
  N©/w*  0Òô  ª æ  æ ß	   H`~…Â. ò   7ªl†H*  Vò  ª æ  æ ß	   l¡ ‡ ò ² 
   7ªl†l  |²

  _              ÎN  
 Â€À*  (yÀv    Â€À   ¯”L  ©ª%@  ©ªp@  *  D©b@  G©Õ@  G©]\@  J©$@  i©{@  *  4ªu:@  («$@  U«Yf@  «¯@  «&@  *  «•@  «E`@  «)x@  ¹«Ù@  ¹«Ì@  *  Ã«)#@  Ã«1#@  Ã«;#@  C¬µ	@      (  "  
­WTì" K©@`|òG©øfhL ¯”   
   
­WT          («$               D©b         G©]\           i©{         J©$ K©@`  *        $ÿ$6ÿ
8ÿ
8ÿ     
 *  & 	ÿ 	Zÿ""@*  L ó‹ ß	  ‡ß	  ‡ß	  òU  ô5 Ú òE  ©ª%¹«Ù©ªp*  r   Áœ" rœD  AœH q v ß	  30 … ðU    D H v Ã«1#*  ˜ f¦æ …ß	  Æe …—,  t5ò•  òÕ  «E`*  ¾   ó5   ò•  ó5	    
Á$ 3r& À*  ä 2`. À  òe  ò•  òÅ  ò•   f¦æ*  
 …ß	  Æe …—,  >¦ ß	    œ      80  
«• Ã«;#$œ&8(0*  0ó5   (ß	  ¦ ¦ æ ß	  … & ß	    ¹«ÌU«Yf(Ã«;#*  V  ^^^f¦æ …ß	  Æe …ß	  & &  ^^
^«¯"¹«Ì*  | æ ß	  … ß	  00ß	  À ß	  … f&æ  U«YfÃ«)#C¬µ	  G©Õ*  ¢ …ß	  Æe …,  Ëß	  00³  ³   
«&Ã«)#*  È ó5   ß	  ß	  À1 ß	  Âœ" Â€  ß	  4ªu:C¬µ	1 G©Õ&    î  …   G©Õ       ~N  
 ÂXÀ*  DwÀv    ÂXÀ   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "            (  K© |ˆ ;©øMh  ¯”   
   K©   *    ß	  00ß	  ò  ò  2
 òW  ô5 Ú   Ã«)#¹«Ì*  & òG  f¦æ …ß	  Æe …—,  ¦  «¯*  L  ß	   l Z Z ¦ ¦ æ ß	  ß	  3
   Ã«;#l Z Z  U«Yf&B¬òy  r  ô5 Ú Á ñ•:   …        N  
 ÂXÀ*  •y¸y    ÂXÀ   ¯”L  D©b@  G©]\@  *  i©{@  Ý©Ý@  («$@  U«Yf@  «œ,@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì* J©K"|r J©K"h  ¯”   
   
­WT          («$               D©b         G©]\           i©{ (   (     Ý©Ý J©K"  *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«œ,*  & ß	   2 ^ H ×¬"  Á ñ•  _   Á   Ã«;#
2 ^ H $‰¬¼^*  L ñ•  =Ú  _   & & æ ß	  _     ‰¬ò`$U«Yf(‰¬¼^       NN  
 Â€À*  jz¸y    Â€À   ¯”L  D©b@  G©]\@  *  N©/w@  i©{@  ©ªX@  («$@  U«Yf@  *  U«Ý@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTì2 O©‹s|ð  O©‹sh  ¯”   
         
­WT          («$         D©b         G©]\           i©{ 0   0     U«Ý O©‹s  *    ß	  00ó5	   )p f&æ …ß	  Æe …  Ã«)#"«\g*  & ,  & ß	   > H> _   &&æCÀœ  Ã«;#> H> ‰¬¼^*  L  ø	  Áƒ„€Á[fÁ ô5 Ú ô5   N©/w*  r Ú {ô5  Ú âAJô5 Ú *ß	   â•
   ©ªX*  ˜ Ž
° ‚cÊ• Ž
° f&æ …ß	  Æe …  "«\g*  ¾ ,  ?p ô5 Ú Kô5 Ú G_    ‚c  "‰¬ò`*  ä Ò• Ž
Ê•
 Ž
° f&æ …ß	  Æe …,         «\g*  
  ß	  Ú ‚cÊ• Ž
° f&æ …  ©ªX*  0ß	  Æe …,  p & ß	   XX  «\g"Ã«;#&X(X*  VX& & æ ß	  _   ó5   ‡ô5 Ú    XU«Yf‰¬¼^*  | â• Ž
° ‚cÊ• Ž
° f&æ …*  ¢ß	  Æe …,  Èp _    ‚cÒ• Ž
  «\g‰¬¼^*  ÈÊ• Ž
° f&æ …ß	  Æe …,  ½  «\g  î¬       æN  
 ÂXÀ*  §y¸y    ÂXÀ   ¯”L  D©b@  G©]\@  *  i©{@  («$@  U«Yf@  «)x@  «Ä…@  *  Ã«)#@  Ã«;#@  ¬Ý@  ‰¬¼^@            (  "  
­WTì: J©Ë’|X J©Ë’h  ¯”   
   
­WT          («$         D©b         G©]\           i©{ 8   8     ¬Ý J©Ë’  *    ß	  00p f&æ …ß	  Æe …,    Ã«)#«Ä…*  & & ß	   6 D 6 Á ñ•6  _   & &   
Ã«;#6 D 6  ‰¬¼^  L æ ß	  _     
U«Yf‰¬¼^       ÄN  
 ÂXÀ*  èr€p    ÂXÀ   ¯”L  ©ª%@  ©ªp@  *  D©Åb@  G©Õ@  G©…\@  J©E$@  i©Å{@  *  («E$@  U«Yf@  «¯@  «&@  «•@  *  «E`@  «)x@  ¹«      Ù@  ¹«Ì@  Ã«)#@  *  Ã«1#@  Ã«;#@  C¬µ	@      (  
­WTì$ *  J©@`|ÒG©Ôfh† G©âfht G©ãfhb ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 
   
     J©E$ J©@`  *        # & / 2 9 F ,4ÿ,466ÿ0ÿ.ÿ&      
# & / 2 9 F *  & .2"ÿ2ÿ.,4ÿ.,24"ÿ2ÿ *  L 	Zÿ<ß	˜ ‡Â€  ß	    ˜ $  (G©Õ*  r … ß	˜ ‡Â€ ß	  … ß	˜ ‡Â€ ß	  …   ˜  G©Õ˜ " &G©Õ*  ˜       ó‹ ß	  ‡ß	  ‡ß	  Áœ" rœ\  Aœ_ q   ©ª%¹«Ù©ªp \ &_ *  ¾ ® ß	  30 ± ‡ f¦æ …ß	  Æe …—,   ® Ã«1#«E`*  ä  Qò•  ò•  ó5   ò•  òœ, 1 *  
f¦æ …ß	  Æe …—,  2¦ ß	      «•&Ã«;#*  0Š66ß	  ¦ ¦ æ ß	  ± ‡ & ß	     Š66¹«ÌU«Yf(Ã«;#*  V  ^^^f¦æ …ß	  Æe …ß	  & &  ^^
^«¯"¹«Ì*  | æ ß	  ± ‡ f&æ …ß	  Æe …,   U«Yf«&*  ¢ Ôð•  ³  ³  ß	  ÀI ß	  ß	    C¬µ	 I $G©Õ(      Ã«)#  È00Âœ" ¡ ‡        jN  
 ÂXÀ*  q€p    ÂXÀ   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "      (  J© |t ;©ÐMh  ¯”   
   J©   *    ß	  00ß	  ò  ò  2
 f¦æ …ß	  Ã«)#¹«Ì*  &   Æe …—,  ¦ ß	   F b F ß	  3
   «¯Ã«;#F  b "F &B¬òy*  L  ô5 Ú Á ñ•:   … ¦ ¦ æ ß	    (U«Yf  r …        BN  
 ÂXÀ*  Usxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  Ý©‚@  («E$@  U«Yf@  U«Ñ~@  *  «œ,@  «)x@        Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì, J©#"|Š J©#"h  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ *   *     Ý©‚ J©#"  *    ß	  00ð•   f&æ …ß	  Æe …,    Ã«)#«œ,*  & & ß	   8 v ` ß	  ×¬"  ×<      Ã«;#8 v ` U«Ñ~*  L Á ñ•  ñ•   _   Á ñ•  =Ú    ‰¬¼^  r _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       rN  
 ÂXÀ*  UsPs    ÂXÀ   ¯”L  D©Åb@  G©…\@        *  i©Å{@  ¹©…\@  Ý©Ñ~@  Ý©‚@  («E$@  *  U«Yf@  «ö&@  «œ,@  «)x@  Ã«)#@  *  Ã«;#@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   J©""|Ž J©""h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ *   *     Ý©‚ J©""  *    ß	  00ð•  ß	  f&æ …ß	  Æe …,  Ã«)#Ý©Ñ~ «ö&*  &   f&æ …ß	  Æe …,  ×<    «œ,*  L   Á ñ•,  _   & ß	   H z n =Ú   ‰¬¼^Ã«;# H "z $n    r        _   & & æ ß	  _     
‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  *txs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  («E$@  U«Yf@  U«Ñ~@  U«‚@  *  «\g@  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì4 O©cs|d O©csh  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 2   2     U«‚ O©cs  *    ß	  00ð•   p f&æ …ß	  Æe …,  Ã«)# «\g*  &   & ß	   < P D ß	  _   =Ú     Ã«;#< P       D U«Ñ~ ‰¬¼^  L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  *tPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  Ý©Ñ~@  («E$@  U«Yf@  U«‚@  *  «\g@  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì4 O©bs|d O©bsh  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 2   2     U«‚ O©bs  *    ß	  00p ð•  ß	  f&æ …ß	  Æe   Ã«)#Ý©Ñ~$«\g*  & …,  & ß	   @ P D _   =      Ú    Ã«;#@ P D  ‰¬¼^  L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  gsxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  («E$@  U«Yf@  «)x@  «Ä…@  *  Ã«)#@  Ã«;#@  ¬@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì< J©£’|j J©£’h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ :   :     ¬ J©£’  *    ß	  00p f&æ …ß	  Æe …,    Ã«)#«Ä…*  & & ß	   6 V J Á ñ•6  ñ•6        _   =  
Ã«;#6 V J &‰¬¼^"  L Ú  _   & & æ ß	  _     ‰¬ò`U«Yf ‰¬¼^       dN  
 ÂXÀ*  gsPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  ¹©…\@  Ý©Ñ~@  («E$@  U«Yf@  *  «ö&@  «)x@  «Ä…@  Ã«)#@  Ã«;#@  *  ¬@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   J©¢’|€ J©¢’h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ :   :     ¬ J©¢’  *    ß	  00p ð•  ß	  f&æ …ß	  Æe         Ã«)#Ý©Ñ~$«ö&*  & …,  f&æ …ß	  Æe …,    «Ä…*  L _   & ß	   ` l ` =Ú  _   & &   ‰¬¼^Ã«;#` l ` "‰¬ò`  r  æ ß	  _     U«Yf‰¬¼^       ðN  
 ÂXÀ*  %qxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  e©P@  i©Å{@  («E$@  U«Yf@  «Ô@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTìD <©#"|Z <©#"h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ B   B     e©P       <©#"  *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«Ô*  & ß	   2 F F Á ñ•6  ñ•6  _   & &  Ã«;#
2 F F "‰¬¼^  L  æ ß	  _     U«Yf‰¬¼^       `N  
 ÂXÀ*  %qPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  e©P@  i©Å{@  ¹©…\@  Ý©Ñ~@  («E$@  *  U«Yf@  «Ô@  «ö&@  «)x@  Ã«)#@  *  Ã«;#@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   <©""|| <©""h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J           ¹©…\ B   B     e©P <©""  *    ß	  00ð•  ß	  f&æ …ß	  Æe …,  Ã«)#Ý©Ñ~ «ö&*  &   f&æ …ß	  Æe …,  _     «Ô(‰¬¼^*  L & ß	   \ h \ =Ú  _   & & æ  
Ã«;#\ h \ ‰¬ò`  r  ß	  _     U«Yf‰¬¼^       ŠN  
 Â¨À*  Œs€p    Â¨À   ¯”L  D©Åb@  G©…\@  *  i©Å{@  ¹©…\@  Ý©Ñ~@  7ªl†@  («E$@  *  U«Yf@  «ö&@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@  “¬’@      (  
­WTìL   K©Ð|¨ K©Ðh  ¯”   
   
­WT              («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ K©Ð  *    ß	  00ð•  ô5 Ú æ/ ß	     ô|ª   Ã«)#7ªl†"  *  & _   ß	  f&æ …ß	  Æe …0
 ,    “¬’
Ý©Ñ~«ö&*  L & ß	  
 ^ ” ˆ Á ñ•,  ×¬"  
×<  Ã«;#^ ” ˆ *  r    `ñ•6  ñ•6  _   =Ú  _   &   ‰¬¼^$‰¬ò`  ˜ & æ ß	  _     U«Yf‰¬¼^       FN  
 Â€À*  ¨:@8    Â€À   ¯”L  ©ª%@  ©ªp@  *  D©íb@  G©Õ@  G©­\@  J©m$@        i©í{@  *  («m$@  U«Yf@  «¯@  «&@  «•@  *  «E`@  «)x@  ¹«Ù@  ¹«Ì@  Ã«)#@  *  Ã«1#@  Ã«;#@  C¬µ	@      (  
­WTì& *  A©@`|ªG©lehÀ G©zeh® G©{ehœ ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{         J©m$ A©@`  *        # & / 2 9 F BJÿBJ66ÿFÿDÿ&      
# & / 2 9 F *  & DHNRÿHÿDBJÿDBHJNRÿHÿ   L T	Zÿ    ` *  ` 8                                            †        e   e     ’   ’      –   –      •   •  «   ”   ”      Š   Š            ˜   ˜ <   œ *  œ ß	Ò ‡Â€  ß	  … ß	Ò ‡Â€ ß	  … ß	  Ò   G©ÕÒ   $G©Õ*  Â Ò ‡Â€ ß	  … ó‹ ó‹- ß	  ‡ß	    Ò  G©Õ"©ª%(¹«Ù*  è ‡ß	  Áœ" rœ\  Aœ˜ q î ß	  30 ± ‡ f  ©ªp\ ˜ î Ã«1#*  ¦æ …ß	  Æe …—,  S ß	*ò•     «E`"**  4òœ, 1 ò•  ó5   ò•  f¦æ …ß	*  Z  Æe …—,  2¦ ß	    Îzzß	        ¦   «•Ã«;#Î z"z&¹«Ì*  € ¦ æ ß	  ± ‡ & ß	    ¢¢¢f¦  U«YfÃ«;# ¢"¢$¢*  ¦æ …ß	  Æe …ß	  & & æ ß	  ±   «¯¹«Ì&U«Yf*  Ì‡ f&æ …ß	  Æe …,  ÔÁ pœ   «&*  ò 0Š A  Ál p ³  ³  ß	  ÀI   $C¬µ	(I *  ß	  ß	  00Âœ" ¡ ‡ &f&f
 
@ A  G©Õ
Ã«)#*  > Ä &f¦À8 Â` ‘”~‚€År   ` *  dp É• 1   1 " ñ•   ÅñÕ  $  Šq‘ @…
Áe8 Äe s¡- Ò‡…„€‡        jN  
 Â€À*  Ä8@8          Â€À   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "      (  A© |t ;©hLh  ¯”   
   A©   *    ß	  00ß	  ò  ò  2
 f¦æ …ß	  Ã«)#¹«Ì*  &   Æe …—,  ¦ ß	   F b b ß	  3
   «¯Ã«;#F  b "b &B¬òy*  L  ô5 Ú Á ñ•:   … ¦ ¦ æ ß	    (U«Yf  r …        4N  
 Â€À*  ;8;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  Ý©-‚@  («m$@  U«Yf@  «œ,@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì. J©» |Ž       J©» h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ ,   ,     Ý©-‚ J©»   *    ß	  00ð•   f&æ …ß	  Æe …ÁÁe.   Ã«)#«œ,*  & 
   ,  & ß	   J z n ×¬  Ã«;#"J $z &n *  L "  ×<    Á ñ•L  ñ•P  _   =Ú   $‰¬¼^   r  _   & & æ ß	  _     
‰¬ò`U«Yf‰¬¼^       ŠN  
 Â€À*  ;;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  Ý©-‚@  («m$@  U«Yf@  *  «ö&@  «œ,@        «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN J©º |ª   J©º h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ ,   ,     Ý©-‚ J©º   *    ß	  00ð•  Ap Wp Ál pœ  A  Ál  Ã«)#*  &  p f&æ …ß	  Æe …,  f&  «ö&*  L æ …ß	  Æe …,  ×<    Á ñ•  «œ,*  r B  _   & ß	  & d – Š =Ú  _   &   
‰¬¼^Ã«;#d – Š &‰¬ò`  ˜  & æ ß	  _     U«      Yf‰¬¼^       2N  
 Â€À*  ê;8;    Â€À   ¯”L  D©íb@  G©­\@  *  O©5q@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  U«-‚@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN O©ûq|f   O©ûqh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ 4   4     U«-‚ L   L     ¹©­\ O©ûq  *    ß	  00ß	  ‡ð•   p f&æ …ß	  Æe  Ã«)#O©5q&«\g*  &  …,  _   & ß	    2 R F =Ú    ‰¬¼^Ã«;#2  R       "F   L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       2N  
 Â€À*  ê;;    Â€À   ¯”L  D©íb@  G©­\@  *  O©5q@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  U«-‚@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN O©úq|f   O©úqh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ 4   4     U«-‚ L   L     ¹©­\ O©úq  *    ß	  00ß	  ‡ð•  p f&æ …ß	  Æe  Ã«)#O©5q&«\g*  &  …,        _   & ß	  ( 2 R F =Ú    ‰¬¼^Ã«;#2  R "F   L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       èN  
 Â€À*  å88;    Â€À   ¯”L  D©íb@  G©­\@  *  e©-P@  i©í{@  («m$@  U«Yf@  «Ô@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@      (  "  
­WTìF <©» |Z <©» h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ D   D     e©-P <©»   *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«Ô*  & ß	  " 2 F F Á ñ•      6  ñ•6  _   & &  Ã«;#
2 F F "‰¬¼^  L  æ ß	  _     U«Yf‰¬¼^       ’N  
 Â€À*  å8;    Â€À   ¯”L  D©íb@  G©­\@  *  e©-P@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «Ô@  «ö&@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN <©º |¶   <©º h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ D   D     e©-P <©º   *    ß	  004 Þ 4œ á 4œ à Á  Bl  °  Ã«)#*        &  pœ  0Š ð•  f&æ …ß	  Æe …  "«ö&*  L 0Þ  0á  0à  ,  f&æ …ß	*  r   Æe …,  _   & ß	  * ‚ ¢ – =   «Ô‰¬¼^Ã«;#"‚ $¢ &– "  ˜ Ú  _   & & æ ß	  _     ‰¬ò`U«Yf ‰¬¼^       <N  
 Â¨À*  ';8;    Â¨À   ¯”L  D©íb@  G©­\@  *  J©s@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «)x@  «Ä…@  Ã«)#@  Ã«;#@  ¬-@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN J©;‘|p   J©;‘h  ¯”   
   
­WT        («m$         D©íb               G©­\ $   $     i©í{ <   <     ¬- L   L     ¹©­\ J©;‘  *    ß	  00ß	  ‡p f&æ …ß	  Æe …,  Ã«)#J©s «Ä…*  &   
Á ñ•6  ñ•6  _   & ß	  $ ,   ‰¬¼^$Ã«;#(, (  L \ P =Ú  _   & & æ ß	  _     \ P ‰¬ò`"U«Yf&‰¬¼^       ÜN  
 Â€À*  ';;    Â€À   ¯”L  D©íb@  G©­\@  *  J©r@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «ö&@  «)x@  «Ä…@  Ã«)#@  Ã«;#@  *  ¬-@  ‰¬¼^@  ‰¬ò`@      (  
­WTìN   J©:‘|ä J©:‘h  ¯”         
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ <   <     ¬- J©:‘  *    ß	  004 Þ 4œ á 4œ à ð•  Á    Ã«)#*  & Bl  ° pœ  0Š f&æ …ß	  Æe …  "«ö&*  L ,  !0Þ  0á  0à  & ß	  , à   $Ã«;#(à *  r ‚ v =Ú  _   & & æ ß	  _   Á  ‚ v ‰¬ò`"U«Yf&‰¬¼^*  ˜ Áe. 
   ß	  0Þ  0á  0à    J©r*  ¾ Ó‡p f&æ …ß	  Æe …,  Ã_     «Ä…(‰¬¼^             ~N  
 Â¨À*  L;@8    Â¨À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  U«Yf@  «ö&@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTìN K©{~|È K©{~h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ K©{~  *    ß	  00ð•  ô5 Ú 
ð  ô5 Ú ð   Ã«)#*  &  Ap B° Wp Ál  Bl  ° f&*  L æ …ß	  Æe …0
 pœ  ,  &   «ö&*  r ß	   ~ ´ ¨ Á ñ•B  ×¬"        
×<   `  Ã«;#
~ ´ ¨ *  ˜ ñ•6  ñ•6  _   =Ú  _   & & æ  ‰¬¼^‰¬ò`  ¾  ß	  _     U«Yf‰¬¼^       ’N  
 Â€À*  ';à8    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN J©s|&J©sh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ J©s  *    Á ñµ  j4 Þ 4œ á 4œ à ô Ü Áe*  &  ð•  ñµ  & Bl  ° pœ  Ü *  L ° f&æ       …ß	  Æe …,  ß	  «ö&&*  r ðàý <ð%@ú 8´
Ü Áe 3­Ü - Î‡Á *  ˜  Bl  ° pœ  0Š f&æ …ß	  Æe   $«ö&*  ¾ …,  ß	0Þ  0á  0à  ¡ ‡   *  ä ð%@ú ðÐþ 0Þ  0á  0à  ± ‡ &   
æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡        8N  
 Â€À*  ';ˆ;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN J©r|Ü J©rh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $           i©í{ L   L     ¹©­\ J©r  *    Á ñµ  Uô Ü Áe ð•  ñµ  &*  &  Bl  ° pœ  Ü ° f&æ …ß	    («ö&*  L Æe …,  ß	¾ ðàý )ð%@ú %´
  ¾ *  r Ü Áe 3­Ü - Î‡Á  Bl  ° pœ  0Š*  ˜  f&æ …ß	  Æe …,  ¡ ‡ ± ‡   «ö&"  ¾ &æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡        üN  
 Â€À*  ê;H    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN O©5q|¸ O©5qh  ¯”   
   
­WT        («      m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ O©5q  *    Á ñµ  I4 Þ 4œ á 4œ à ô Ü Áe*  &  ð•  ñµ  # Bl  ° pœ  Ü *  L ° f&æ …ß	  Æe …,  ðàý   «ö&*  r ð%@ú ´
Ü Áe 3­Ü - Ñ‡0Þ  0á  $  ˜ 0à  ¡ ‡ 0Þ  0á  0à  ± ‡        Î
N  
 PŽn´*  *yø    PŽn´   ¯”L  ‘«[K@  ’«,@  *  “«kM@  •«Ã^@  •«Ë`@  –«;@  «™q@  *   «1@  ¢«€@  ¢«l@  ¢«á"@  ¢«[}@  *  £«¶@  §«À@  §«üq@      (        *yø,ð*  t!Àvh^Rˆ,hTq8"h€\q°rhš‡s sh  *  ¼«´;hš½«Ö%h¾Ã«,:hlÅ«4…h¶Ç«6fh¸  Ì«ßghªÏ«	Fhœ¯”   
   *yø  *    ÃŒS“Á U%À	 Ó/€
D„
„Ä  Œ*  & '€
K‹
K@"Äd€
BB0Ò“B‚
B@AÁE *  L `fSÐÄe …!ÿ?€
K×" €
×"*  r 
 z×¯  @÷  7  ×¯þ @÷  ’«,’«,*  ˜   7  ×¯ê	 @÷  7  ×¯Ö
 w  £«¶
£«¶ «1 «1*  ¾    Àe ·ð`÷	  ÀÀ
À
ÀËÓÐ  –«;‘«[K*  ä €ÅÆÕ À
ü
W!îüÓ$Ó$
“      ‹Å
  
Æî*  
 SaDa€€àŽæ
÷	zƒ‚ÀE €æ*  0÷	‚ƒAa‹S`á…`@aB`Î5 a a¦¢b*  V""
Î
ó



·
( 
Æ ÅÄ= *  |€‡ ÂŒR’U% 
D	7!fÀ Î5   
Œ*  ¢Àe áæ&„
„6 Ê% ØÂîÃò	·
*  Èè÷	:ÄÔ÷	  ‘ÀºÅ°Å
ý…€  §«üq*  îÅ
ý÷	D÷	V·®÷²w bÿÁŒQ‘ 
   Œ*  É% 7
ÐÂŒÃ÷ŽÃ
Ãÿÿ÷	Ã*  :ú÷v·j·
Jw ÿw z÷	´ÄN÷	  Ã  &§«üq*  `ÿÿ÷	ìÃ%ÿÿò÷	`·
Ä,÷	  Äå û÷	    •«Ã^(«™q*        †ÄÅ  ÷	  Äå ù&
Ä4mÆÚmÚÄå   
¢«€¢«á"Æ Ú$Ú*  ¬øÄø7òÅ  ÷	  ÃæÓÃå óÚú  §«À¢«á"&Ú*  ÒæÄÐ÷	  Å  ÷	  „7¾Å  ÷	  Ä´7
   •«Ã^¢«€¢«á"§«À"¢«á"*  øÂ7!ªôÆô
Æô
ÚÎ
·
¨÷	ªÉ5 À  ÆÆÚ*  Äå ê÷-’tÄv´
Ú´
ÆÛÀ ÉE
  ÚÆ*  DÀ B·#T·
>7
Z·
Vw 
þ÷	à&Ä>*  j÷	  „÷	PÉ5 ÀóÉã€Î
ô
Ú·
4÷-0è  §«üqÚ*  ÷	<Ž
w &ÿÁŒQ‘ 
÷% æU%ffõ¥  Œ*  ¶ øÿwÎ5 À Àe w       šý÷â÷Ú*  Ü6ÂÌ¦Ãÿÿ÷	f·¼÷À÷¶Ä¦*  ÷	¾É5 ÀÉš€·
¨÷-¤†÷	$7„7
Š*  (ƒ@ÁmdÃˆSÀå ü7
j‰À *  N÷œ½Àÿÿ÷
’¸ÂŒÀ R’Ê¯

÷  Œ*  tB÷	  ÷ ÷	  w àü$Å$Å
ü‡   
“«kM¢«[}*  šæ  
ÀCB ‡Bà€
Î
÷Ö‡ &
 
†*  À€cCÁÎøÖ‡ ¦æÁÀÄÌ÷	  ´
Ú÷%  À"§«üq&Ú*  æ ¨)ô
Æ÷	  × ÿÿ"Á¤CÄå Ä	!ú  Æ•«Ë`¤*  7˜ôÆÉå ÉBÀ„Ú 0ÆÀå   
ÆÚ$Æ*  2ùÂå Â‰ƒ‚‡ Ã$       ÓÂ
À  7 *  X‹
„‡ À w ü°nÿÿ  ÿÿÿÿ  ÿÿÿÿ  
  °n*  ~ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿ&  ¤ÿÿ  ÿÿÿÿ  ÿÿtz€†Œ’˜ž¤ª÷	*  tz€†Œ’˜ž ¤"ª*  Æ  É5 ÀffÃ–ÿÓËÂ€÷	¤þ‚ƒõ  ¢«l*  ìÀzÿ7tÿò ‹J2 …‡ ÷ ¨ 
Ã¢ *  ƒ
÷œ ÷	²þ÷’ ÷Œ 	Åh …
Áˆ €Å
*  8ý‡ ÷r Át €÷	>þ†ƒ
‡ „úÿ-øÿ‚‡*  ^þÿ€÷	"þ
ƒ&þÿ´þÿ‚øÿôøÿƒ7!. *  „üÿæ‡                                  ª                     @ €Ä  
        Ä î  î         ŠN  
 PŽ%´*  7x›r    PŽ%´   ¯”L  ô¨úW@  D©b@  *  G©]\@  J©$@  i©{@  («$@  «¯@  *  «&@  «•@  «#@  «v:@  «Iq@  *  «)x@  «™’@  ¢«€H@¤«úW@  §«ÀH *  ¼«´;@  ½«Ö%@  Ã«,:@  Å«4…@  Ç«6f@  *  Ì«ßg@      (  7x›r,˜‘«[Khf’«,hˆ*  “«kMh² •«Ã^hT•«Ë`h"–«;h†«VKh„*  «™qhF «1hŽ¢«lhb ¢«á"hÔ ¢«[}h¼*  £«1h’£«¶hŠ£«çhŒ£«1h*£«Ch-"  §«üqh  ¨«qh–
­WTì" ¯”   
   7x›r  *    ¦æ÷  ÷	šô@      ÷	Â@,BÂm  
Ç«6f@ $,*  & Bƒ 
‚B ý‡ƒ ‡÷	ÊC ý‡÷	ºÁí  *  L Âíƒ õ‚ê´ƒ‚‡ ¦æ,C    $,*  r ÷	þBÂmêƒ ƒ ÈPC ý‡÷	âÁíÄÂí
  
È*  ˜ Àƒ õ‚PB ý‡È´ƒ‚‡ Ä  À Åp  È Ì«ßg$ (p*  ¾ 0  ÷	  Äå ø7
  ‡ Äô Ü4
Þ„W!   «¯Ç«6f Ü$Þ*  ä  æÃnÅ3tt,ô,,"  ",&,(,*  
s,sƒ4,7<‡ íw!<‡  ,
,"*  0ÅEÿ      táÅe ÷	ÈÄôå Ü´Þ„´
@‡ Á  
ÜÞ$@*  V  ÷	¤þ÷	Âÿ4
@‡ ÷	  w(Ëi&7ò&f  ½«Ö%@«v:*  |Àd ÁàÁEÿÁ wÀw¸Á Áw*  ¢¶w®B`€e…
à ‚„
!ù! À*  È w   æÂí„¦À0 ÷	  `wzÀ0   Ã«,:Å«4…*  î÷	  À  ÷	  ‚`w`À  ÷	  À   ¤«úWÅ«4…"¤«úW*  ÷	  ‚·@`wBÀ ÷	  ‚·,·àÂm  Å«4…¤«úW*  :·ìƒ„‡ Â  „&ÁÂå €ƒtÈÁ`  Ì«ßg&È*  `Äå ú@àDÁAn
÷	  7ÚÀÀ 7Ô  n¼«´;*        †„t`t,Äå øwzwôEàÅEÿwª
  
,*  ¬Aawz…Å wš‡ À0 Á ÷	  À  Á–÷	  ô¨úW*  Ò  À ÁŒ÷	  7 z&À Áx÷	  À   ô¨úWô¨úW$ô¨úW*  øÁl‚÷	  ‡ ÅN&f¦ÀPð  0´   ¤«úWP&´*  p Â°Ü& °Þ( …Å raÜrÞ0   ÜÞÜ"Þ&*  Dð   ±,Þ ‚±,Ü  ƒÀ Åpð(    ÞÜ  $p*  j
 ð$ p ÷	  ð ÀPÅl÷	  ð   «#P l$«™’*  ‚€‡    w   f¦&÷•0 F÷  Ã«,:*  ¶Î¨Ä  V      ÂTÁdÀ ÷¼ðU€  °   
Ì«ßg *  Üðz ð  ðž ðœ
 ð˜ À Åp
  $ (p*  ð\3 ÷	  ð Ä4  ·
  ÀPÅl÷	     «• Ç«6f P$l(«&*  (ð w hÿ4 ´´´t,Äô Ü4
  ´,&Ü*  NÞ„4
@·
·Šœ Äå Ë„‚‡ À w     Þ
@(Ã«,:*  tÅâ&ÀP0´ p Ä0Ü& 0Þ( …Å   P´Ü"Þ*  štaÜtÞ„ð  ð  0 Ål÷	  ð  Ü
Þ "l&«Iq*  À 	ð%°ý ð w Äþ€‡ Å ÷	–ÿÄôå(  æ Ü´Þ„4
@‡ SO      RT0D.TMPP          Ü
Þ@   #@                      

  
         &  &  ö  
       
  ö P%  PP                                  r  r       
    T*  T                        P  Ôw	 
  P" "  zyæK¨             @     
   
­WT          («$         D©b         G©]\           i©{         J©$    Ü
Þ "l&«Iq*  À 	ð%°ý ð w Äþ€‡ Å ÷	–ÿÄôå(  æ Ü´Þ„4
@‡ SO          Ba¢_@€›          ÁXÀN  
       “  € 4       b"ž ž                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        0"3 T0£,3 T0;N3 T0cX3 T2"4 Ô2£,4 Ô2;N4 Ô2cX4 Ôt!Àv“ FRˆ,“ FTq8"“ F\q°r“ F‡s s“ Fé¨—(2 ~é¨˜(3 Té¨š(4 Ôé¨ç(2 ~é¨è(3 Té¨ê(4 Ôé¨„*   é¨¬*   é¨˜06 ¶ é¨À08  é¨Ä0 Ôé¨ì0 Ôé¨19 žì¨ ú ì¨—(! rì¨˜(! rì¨š(! rì¨ç(! rì¨è(! rì¨ê(! rì¨˜0! rì¨À0! rì¨1! rõ¨—( 8 õ¨˜( 8 õ¨š( 8 õ¨ç( 8 õ¨è( 8 õ¨ê( 8 õ¨˜0 8 õ¨À0 8 õ¨1 8 û¨—(2 ~û¨˜(3 Tû¨š(4 Ôû¨ç(2 ~û¨è(3 Tû¨ê(4 Ôû¨„*   û¨¬*   û¨˜06 ¶ û¨À08  û¨Ä0 Ôû¨ì0 Ôû¨19 žû¨6 ú ü¨P ©ª%f Ì©ªpf Ì2©ä4 Ô2©
z4 Ô      9©t!h >:©lzc þ :©€c þ :©™Â2 ~:©ÝÂ2 ~:©ìÂ2 ~:©¥Ã2 ~:©´Ã2 ~:©õÃ2 ~:©ÙÈ3 T:©É3 T:©,É3 T:©åÉ3 T:©ôÉ3 T:©5Ê3 T:©YÕ4 Ô:©Õ4 Ô:©¬Õ4 Ô:©eÖ4 Ô:©tÖ4 Ô:©µÖ4 Ô;©¿'h >;©†:h >;©hL„ ä;©zLh >;©hMh >;©jMh >;©ÐMw  ;©øMo ”;©™Â ,;©ÝÂ ,;©ìÂ ,;©¥Ã ,;©´Ã ,;©õÃ ,<©º ‹ X <©» Š p <©"" ´ <©#"~ Ä >©¨h >>©¹.[ Z >©Ì. ,>©cMh >>©èYh >>©™w ,>©Ýw ,>©ìw ,>©¥x ,>©´x ,>©õx ,?©Y ,?© ,?©¬ ,?©e ,?©t ,?©µ ,?©y[ Z ?©Y£ Ô?©£ Ô?©¬£ Ô?©e¤ Ô?©t¤ Ô?©µ¤ Ô?©™Â6 ¶       ?©ÝÂ6 ¶ ?©ìÂ6 ¶ ?©¥Ã6 ¶ ?©´Ã6 ¶ ?©õÃ6 ¶ ?©ÙÈ8  ?©É8  ?©,É8  ?©åÉ8  ?©ôÉ8  ?©5Ê8  ?©YÕ9 ž?©Õ9 ž?©¬Õ9 ž?©eÖ9 ž?©tÖ9 ž?©µÖ9 ž?©y×[ Z A©öZh >A©ÿZh >C©B âE©e ,E©2e ÔE©òy ,F©ªNh >F©@`h >G©#? P G©Õd â G©le žG©ze žG©{e žG©Ôft TG©âft TG©ãft TG©øfm Æ J©º † ‚J©» … NJ©""x ÄJ©#"w ‚J©K"p J©r‘ J©s € J©:‘ &J©;‘Œ ê J©¢’} ` J©£’| Z J©Ë’s nK©Ù} ,K©~ ,K©,~ ,K©{~  K©å~ ,K©ô~ ,K©5 ,K©Ð€ K©=Ÿh >O©5q’ JO©úq‰ > O©ûqˆ  O©bs{ H O©csz 6 O©‹sq  R©Ù   R©         R©,   R©å   R©ô   R©5   e©„dR "e©ûfR "t©P †©Š! rÃ©’B âÐ©/£ ÔÜ©;"F .Ü©X"F .Ý©w~P Ý©Ñ~W  ø©ß9 žø©/£ Ô4ªu:k P6ªÏ}B â©ªXk P¶ª·„P Ëªà   ËªŒ( ,ËªÂ2 ~ËªPÈ3 TËªÐÔ4 ÔÍª¨¢ rÍªÂ; PÍªPÈ; PÍªÐÔ; PÎªí+T ¶ ÏªT ¶ Ïª˜!T ¶ Ïªð- ,Ïª(K ,ÏªHXT ¶ Ïª˜X ,ÐªÂ2 ~ÐªPÈ3 TÐªÐÔ4 ÔÒªD† ,ÒªJ† ,Öªà ÔÖªÂ6 ¶ ÖªPÈ8  ÖªÐÔ9 žÚªà   ÚªÂ= Ü ÚªPÈ= Ü ÚªÐÔ= Ü Ûªà ÔÛªÂ6 ¶ Ûª8Â ,ÛªPÈ8  ÛªÐÔ9 žêªP› 8 («LwB âU«Yfd â U«w~P U«Ñ~W Ú W«®sW ž‘«[K™  ’«,™  “«kM™  •«Ã^™        •«Ë`™  –«;™  «VK™  «™q™   «1™  ¢«€™  ¢«l™  ¢«á"™  ¢«[}™  £«1™  £«¶™  £«ç™  £«1™  £«C™  §«À™  §«üq™  ¨«q™  ¹«Ùd â ¹«Ìd â º«<R "º« <R "º«!<R "»«oKW ž»«pKW ž»«rKW ž»«vKW ž¼«´;“ F½«Ö%“ FÀ«""B âÃ«)#d â Ã«1#d â Ã«;#d â Ã«,:“ FÅ«4…“ FÇ«6f“ FÌ«ßg“ FÍ« ú Ï«	F“ Fá«ø$ î«“$ î«ÕZ$ î«Xz$ î«H…$ ó«À$ B¬òyd â C¬µ	d â ¬dE ~ ¬KV Ä ¬ NE ~ ¬<NA úƒ¬,% ìƒ¬4Kh >ƒ¬kMh >ƒ¬
Nh >„¬©% ì„¬%!h >…¬»G ¼ …¬{H ä …¬0XB â…¬PsE ~ …¬|—% ì‡¬À]B â‡¬`^E ~ ‡¬aE ~       ‡¬$aA ú‡¬ bA ú‰¬÷Xh >‰¬üXB â‰¬TZ\ ž‰¬WZ\ ž‰¬XZ\ ž‰¬€Z\ ž‰¬¤Z\ ž‰¬§Z\ ž‰¬¼^h >‰¬ò`h >‰¬ˆ–R "¬5a ,¬Ödh >¬"@ j ¬,"A ú¬…q@ j ¬q@ j ¬šY ’¬lh >’¬îh >’¬ê"h >“¬,[ Z “¬;	[ Z “¬Ë[ Z “¬šw[ Z “¬:}h >“¬hE ~ “¬’B â“¬â\ ž“¬ã\ ž“¬ä\ ž“¬›ƒ% ì”¬¸pP •¬4Kh >•¬kYh >•¬ŠZ\ ž•¬‹Z\ ž•¬ŒZ\ ž—¬üqh >µ¬5a ,Ó¬Ø_   ­“$ ­ÕZ$ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      »Ô!G ¼ 0(2 ,ö´r= Ü öšw; P³€$ &ZŠ' ¤ Ë»%   Ë–, ÔË´r   Ëšw r{ùeH ä ~  ! r]!ôT ¶ ]!<K ú »%o}2 ~»%p}3 T»%r}4 Ôe,8wF .–,X6 ¶ –,€8  –,Ð9 žœ,´V Ä œ,¡EW  Ä8@8„ äå8;‹ X å88;Š p ›:à~h >¨:@8 ž;;† ‚;8;… N';à8 € ';; &';8;Œ ê ';ˆ;‘ L;@8  ê;H’ Jê;;‰ > ê;8;ˆ  £K ŒR ¼ KTl†d â ”T } 8 S`l†f Ìó`""A úäfìk P\g¡EW Ú q€pw  %qPs ´ %qxs~ Ä èr€pt TUsPsx ÄUsxsw ‚gsPs} ` gsxs| Z Œs€p€ *tPs{ H *txsz 6 w<R "9wÈKW žDwÀvo ”šw [ Z 7x›r™  (yÀvm Æ *yø“ F•y¸yp       §y¸ys nòyw:\ žjz¸yq  ;}ÀDc þ ·„[qP J†7xI H *’úD? P y–àL% ì˜8wE ~ …˜pq@ j —˜"Y å˜€WB âÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           ÔN  
 ÂpÁ*  Ë»%    ÂpÁ   ¯”L  ì¨@  G©#@  *  N©T
@  N©@  N©!£@  Í«@  ‡¬À]@  *      (  e©±|æé¨„*h  é¨¬*hB û¨„*h† *  û¨¬*hŒ R©Ùhþ R©hR©,hR©åhô *  R©ôhê R©5hËªàh’ Ó¬Ø_hR¯”   
   e©±  *    Â  NÎe CÀœ ø	  C Áœ ù	  f¦C  ì¨N©T
"N©*  & ÀÁD„ÅÞ	—¥ åÅ@ ‡ Â  NÎe   "ì¨*  L CÀœ ø	  C Àœ ø	  AC@&¦@  N©T
N©T
*  r AÂÃÞ	ƒÀœ ø	  ‡ Â  ¼Â  ÚNÎe   N©!£Í« Í«*  ˜ Ä C      Àœ ø	  ÀÁD€àÄ•0 `   G©# N©T
*  ¾ ‘~Ä0 ¡æ  ÎeÈ ÞÕ 	~S”‚~CÀœ   G©#*  ä ø	  ‡ ß	4Â… ß	4Â… ß	4Â… ß	  N©!£44 4*  
4Â… ß	4Â… ß	4Â… åÖm å  444*  0_   CÀœ ø	  ÁCÀœ ø	  @AÂÃÅe   ‡¬À]N©T
N©T
*  VD`&™ÎE¿ÿ„Ä`™ÄE¿ÿ!"ÖÄ€D*  |Á€à` Ä0 ¡
~Ä0 D¤~S¤*  ¢ƒ~Â‡ Â ‡ &Ä0 À
D¤~Â
Ä¤"  Èƒ~D’ÄEðÿÄ’ÄEðÿ–%
‡ –%à       LN  
 Â Í*  Ë–,    Â Í   ¯”L        ì¨@  û¨6@  *  G©#@  N©T
@  N©@  N©!£@  Í«@  *  ‡¬À]@  Ó¬Ø_@      (  e©Ý| é¨Ä0h  *  é¨ì0hÔ û¨Ä0hfû¨ì0hx?©Y£h8?©£hL*  ?©¬£hV?©e¤h.?©t¤h$?©µ¤hBE©2eh`*  Ð©/£hhø©/£hŒÖªàhÄÛªàhŠ¯”   
   e©Ý  *    NÎe Ÿhæ  åfED­ W­  JW­   hì¨*  & & Ff DEþ	 —¥ –%‡ åÅ@ –%‡ &‘f*  L  „Åb &þ	 €—¥ õÅ@ ÿÿAà„•ƒ  
  
G©#b *  r Âœ á×¬  ×¬ & Ä  Å ß	  –%‡   $û¨6*  ˜ „`Åv ß	  Ã „  ø	  Ö‡ Å „  &        
G©#v û¨6G©# N©!£$G©# *  ¾   5  E þ	 Ã êNÎe ŸŒæ  f  G©# "Œ&ì¨*  ä ED­ W­  áW­ & ÝDEþ	 ƒÀœ *  
ø	  Ö‡ &‘ „„
Åb &þ	 €Aà  N©!£G©#b *  0„•ƒ  Âœ á×¬  ª×¬ & ¦Ä  Å ß	*  V  ƒÀœ ø	  Ö‡ NÎe Ÿhæ  _  NÎe  û¨6N©!£h Í«$ *  | ŸŒæ  _ â NÎe Ä CÁœ Àœ ø	    ŒÍ«â G©# (N©T
*  ¢EfB BàÀÁDEß	  ƒÀœ ø	  ‡ NÎe  û¨6"N©!£*  È Ä CÁœ Àœ ø	  EfB BàÀÁDE        G©# N©T
*  îß	  ƒÁ Ál  áµ@ ÉÕ@ ÉÅ@ Àœ ø	    û¨6(N©!£*  ‡ åÖm å_   ß	`Âõ… ß	`Âð… ß	  ‡¬À]` `*  :`Âë… ß	`Âæ… ß	`Âá… ß	`ÂÜ…   ```"`*  `ŸŒ_   ÖCÀœ Ä ø	  ÁCÀœ Ä ø	"  Œ
Ó¬Ø_G©# N©T
&G©# *  †  _ ¬ÖCÀœ Ä ø	  ÁCÀœ Ä ø	  (  N©¬G©# N©T
$G©# (N©T
*  ¬¦s¬  "æf@œ Âœ àCß	€Á…  "*  ÒƒÄœ ffBœ Àœ àß	…Dœ @A  *  ø‡ Dœ @AÂÃ‡ ÀÁÅN „`&ß	  ‚      C  G©#N $û¨6  ‡        RN  
 ÂpÆ*  Ë´r    ÂpÆ   ¯”L  û¨6@  G©#@  *  N©T
@  N©!£@      (  e©ž|€ Úªàh  
  ¯”   
   e©ž  *    NÎe Ä CÁœ Àœ ø	  EfB BàÀÁ  G©# N©T
*  & DEß	  ƒ 5 ÄÅ ß	J Àœ ø	  ‡ a  
û¨6J $N©!£*  L õµ@ ÿÿW©y Í•p Ä
W©9 
Í•0 æ    (G©#  r ÎeÈ ÞÕ ‡ Š‡        ˆN  
 Â˜Á*  Ëšw    Â˜Á   ¯”L  û¨6@  G©#@  *  N©!£@      (  e©½|ž Íª¨¢h  ¯”   
   e©½  *    NÎe æ  ÎeÈ       Þ5 8CÁœ ÀEDB Bà  G©#*  & ÁW¤0 ~€
Á
f`D Ö_ „ fW­    „ *  L  W­ & 
E ß	  ƒÀœ ø	  ‡ Å& ß	  û¨6 N©!£&G©#& *  r   Ã „  ø	  ‡ æ  ÎeÈ ÞÕ æ  ÎeÈ "  û¨6G©# N©!£G©#$G©#
  ˜ ÞÅ ‡        2N  
 ÂHÁ*  ]!<K    ÂHÁ   ¯”L  G©#@      (  *  •©!…|Àì¨h  û¨6hPÍ«hv ¯”   
   •©!…  *    &Ä•0 D¤~€
á‹Ä¤ƒ~‚
ã‹„`ƒ`afñµ*  & @ ÿÿóµ@ ÿÿß	˜ …‡ ß	¢óµ@ ÿÿß	
  ˜ ¢*  L ¢À5 ÀU ß	˜ ÀU …À5 õÕ@       ÿÿ‡ 
  ¢˜ *  r …‡ `fß	† àß	  áµ@ ÑÕ@ ‡ ÑÅ@ ‡ 
  †   *  ˜   Dàà¦&
„ =€à„à&&€ÂC*  ¾ 
B˜ÂÅðÿ„`Â˜ÂÅðÿ„`%zŽ~‚ Ž 8Â
  zŽ*  ä 	À˜ÀÅðÿ`%zŽ‰~€‚€à	Äæ  Îe  zŽ&G©#*  
È ÞÕ ‡ Äå•1 À
Ã•0 å~‡  
B˜ÂÅðÿ*  0€`Â˜ÂÅðÿ€`%œz œŽæ  ÎeÈ ÞÕ ‡ ‚Ö  zŽG©#*  VÂ	À˜ÀEðÿ`%zŽ‰~æ  ÎeÈ ÞÕ ‡ 01  zŽG©#*  |234567890123456789          *  ¢ (àƒàÀ
S¤~æ”ÎÅ@ f”ÎÅ@ –¥*  Èå•0  
‡ c¨€
      `ƒ`¦BÁƒ€æ *  îc¨€
`ƒ`&
&¦
D˜ÄEðÿaÎ
Ä˜ÄEðÿá*  „œ„ö
 ¡0 %‘ÂÂ~Ö„å•0   „*  :€‡ –%€æ  ÎeÈ ÞÕ ‡ æÃ0 `ae¨ff  G©#*  `f’ÑÅ@ …
&
Â#åÄ
„~àe˜~Äå*  †€^ÁE¿ÿ^Ðƒ‡ ` áe˜C¨~ðæ    (G©#  ¬ÎeÈ ÞÕ é`€`äN’Ü       N  
 Â˜Á*  0(2    Â˜Á   ¯”L  Ü©;"@  ‡¬À]@  *      (  ô¨Ae<R;©™Âh;©ÝÂh";©ìÂh0*  ;©¥Ãhø;©´Ãhê;©õÃh>©Ì.hz>©™whZ*  >©Ýwhj>©ìwhr>©¥xhR>©´xhJ>©õxhb*  ?©Yh¶?©h      Æ?©¬hÎ?©eh®?©th¦*  ?©µh¾E©ehÖE©òyhþ K©Ù}hÐ K©~hà *  K©,~hè K©å~hÈ K©ô~hÀ K©5hØ ËªŒ(h@ *  Ïªð-ht Ïª(Kh‚ Ïª˜Xht ÒªD†h  ÒªJ†h" "  Ûª8Âh¦ ¬5ah µ¬5ah& ¯”   
   ô¨Ae  *    ß	² €àS”‚~… `S”‚~ Ä  ‘~… ß	² 
  ² (² *  & €à`í` Ä  ‘~Âå… ß	² à€`Á5   ² *  L  S”À
„SÀ5 S”ÂÀ  ‚~*  r … ß	  €Áß	  Áß	² À% 	S”Â
… ~  Ü©;"Ü©;"² *  ˜  àøA’S‚~… @A9ž  … A@ACÂÃ*  ¾ ‡ ß	þ ‡… ß	þ ƒ… ß	þ … ß	þ 	… ß	      þ   þ þ þ  þ (þ *  ä †… ß	þ ‚… åÖm å_   ACÅe {®   
þ ‡¬À]*  
 ‡ @AÂÃà€`ÀS¤~Â‡ *  0À   úƒ~‡ À  @¤óƒ~‡ ß	zÐ‡… ß	z
   z(z*  VÌƒ… ß	zÈ… ß	zÄ… ß	zÀ†… ß	z¼‚… ß	  
zzz"z*  |² Åe À% 
S¤Â
~á ø‡ A’S ü  ² *  ¢ƒ~‡ ß	Ö¢‡… ß	Öžƒ… ß	Öš… ß	Ö–… ß	  
ÖÖÖ"Ö*  ÈÖ’†… ß	ÖŽ‚… ß	  €Áß	  Åe _ @A  ÖÖÜ©;"Ü©;"$*  î9®  $‡*@A9®  ƒ#@A9®  *  @A9®  @A9®  †      @A9®    :‚õ Ö] _   Åe …   ‡¬À]       :N  
 Â Á*  ”T }    Â Á   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  »«oK@  »«pK@  »«rK@  »«vK@  *      (  Ýª N<šõ¨—(h  õ¨˜(hÂ õ¨š(h~*  õ¨ç(h õ¨è(hú õ¨ê(h¾õ¨˜0h õ¨À0h  õ¨1hÒêªP›hâ¯”   
   Ýª N  *    ß	 ]… @¡ pn‡‡ ß	 ]… ŸB   .     $B &N©¯(. *  &   8   …  	pR
‡ ÒÀ€"V‡ CÄ Àœ   »«pK8 N©Y$G©# *  L €bô   Ø	ÁDœ &CÄ Àœ       €dô   Ø	
  G©# *  r Äœ a@ Á ƒ¦ÂN Ë	Ä CÂœ ‚å  G©#N  G©# *  ˜  ù	   Ñæ&Ù	ƒ„ó     @dB*  ¾ Ø	‚ ß	Î @ˆ… @AÂb ß	€ÐÐÃÐ   
Î G©#b *  ä È ‡ æ  ÎeÈ ÞÕ ‡ ß	Î ò áJ
  G©#Î *  
âÜŸB     Ú   … f& Ž
	qR
   
B N©°»«rKÚ N©*  0ò DqJaD2a @á€
 qRaD
aò *  VpR`@
`Âå …‡ ÃqÄ`‡ &qÄ`„e*  |‡ ß	Ž@ˆ… @AÂb ß	â€Àe Ð  ŽG©#b  â*  ¢ÄÃ $Ã~‡ æ  ÎeÈ       ÞÕ ‡ ß	Žò Ý  G©#"Ž$  ÈDN…_ €ŸB   â  š  … f&
Ä$  €B N©²â»«vKšN©Ñ*  èv ð  ß	€N
ñ Eß	€N
ß	2  G©#v €"€(2*  ÖÁe À a
~À Ñe †Q~…‡ Ã*  4 Âe "
Â~ß	Tß	Tß	Tß	TÂå ‡ &À  TTTT*  Z Dß	fRaDaRRJÂå ~Âå €Áå ‡   
f  €Ã LT
Ã~Äå Ôe TTT‡        N  
 Â¨À*  ~      Â¨À   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  »«oK@  »«pK@  »«rK@        »«vK@  *      (  i©€‰<lì¨—(h  ì¨˜(hÐ ì¨š(hž*  ì¨ç(h ì¨è(hö ì¨ê(hÊì¨˜0h. ì¨À0h  ì¨1hÜ†©Šhð¯”   
   i©€‰  *    BAÀr…… æ  ÎeÈ ÞÕ ‡ BAÀrô…  G©#*  &  … ŸJ      >   … ‰rä… ‡ C  J N©¯»«pK> N©Y*  L Ä Àœ €bô   Ø	ÁCÄ Àœ €dô     G©# G©# *  r Ø	æœ Ã Ä: €Ô~€ãÔ~€•ƒBœ à
  G©#: *  ˜ @ œ `Ä  Û	A   ÂæÊ	€Ã D  G©# &G©# *  ¾ ó    dÙ	‚ ß	Ü BJ… @Cf  Ü *  ä       ÀÁÂÃß	6…‡ ß	Ü Áë AçŸJ   6Ü (J *  
       … f&DEÀÁÂÃß	6‚  N©°»«rK
N©$6*  0J…‡ &
Ã
@
A
B
C
Àe ABCN
Å*  VEN
æ  ÀABCáƒCáaCCa*  |€
Î
ïÁæ  ÎeÈ ÞÕ –% A‡ ß	®  G©#(®*  ¢A	… ACÀb Â Ð0
 „~Â €à
  G©#b *  Èß	®ð çß	  ãŸJ      ì  … Â&  ®õª1J N©² »«vK"ì$N©Ñ*  î f&
ƒ`ã„`ƒƒÅd
Â~Å
Ôe TB*  N
ñ Ä~ Áe ddddß	  N
æ@ E  G©#~        õª1*  :Ä aå‹)ƒ`ã‹ƒ~ ! É_*  `„àÄe K£ƒ„
ÄÂ €`ááà˜*  †‚~ ŠWq Ná
–%…‡ æ  ÎeÈ ÞÕ öÅe  G©#*  ¬ BCDEÐPPHEDCBÀå Eä„ƒ*  Ò‚Däƒ‚Cä‚BâÁå Î
æÀå EdDCB*  øDdCBCdBBbîÁå ˆ
Î
Ó–%ß	  …‡   $õª1*  ‚
‚€`€`C—  
,þÿ‡æ  ÎeÈ ÞÕ 
  G©#*  Dw Ä ÄàwÿÿsÄe €wÿÿsD’~
  jÒ       \N  
 ÂøÀ*  ³€    ÂøÀ   ¯”L  G©#@  ‡¬À]@  *      (  D©€(á«øh° î«“h¸ î«ÕZh *  î«      Xzhú î«H…h  ó«Àhò ­“hÀ ­ÕZh 
  ¯”   
   D©€  *    ß	 o… ß	 k… DÅe   —   ;— 
    *  & & 8ÀE ÿz  : B | ‚ À
B`À
B
Ã#    : B | ‚ *  L ÄX ”¢#Ã~‡ ABCDEFGHIJKLMNOPQR01234567  X   r 89[]?!:{}å   | *  | B`BÂ
—¢+ —¢- —¢  ‡ ÀW¢0 *  ¢ W¤9 ~´ ‡ ß	À … ß	À … DÅe  
  À À *  È W¢  W¢A W¢Z 
~´ ‡ åÖm å*  î _   ß	ö… ß	ò… Ä  @ @Åe  =  ‡¬À]
G©#    ‡        ¸N  
 ÂèÆ*        y–àL    ÂèÆ   ¯”L  C©@  G©#@  *  6ªÏ}@  Ûªl†@  («Lw@  “¬’@      (  *  ƒ¬,|V ƒ¬,h  “¬›ƒ|| “¬›ƒh  …¬|—| "  …¬|—h  „¬©| „¬©h  ¯”   
   ƒ¬,  *    Ä  t2 &ft4   PAB Á
û  G©#*  & €t(  &ü	4 ß	  Ä  Œß	  ô&   («LwG©#"6ªÏ}  L ü	& _     C© “¬›ƒ  *    Ä  ô 
´
 44 8 4¯  !… æ  Îe  G©#&G©#*  & ª Þ  æ ß	   8 Ä  L4 æ  ß	    Ûªl†8 G©#(Ûªl†*  L  P æ  Îeª Þ _   æ ß	   l æ  Îe"        P 
G©#“¬’Ûªl†"l &G©#  r ª Þ, _     “¬’ …¬|—      Ä  4
& 4
 4
8 Ö‡   G©# „¬©  "    @•ÀÄ   m A•B2 re F~…   
G©#       ÚN  
 ÂðÒ*  &ZŠ    ÂðÒ   ¯”L  G©#@  ‡¬À]@  *      (  F©dŒ|zN©¯h–N©°h
N©²h~*  N©T
h²N©YhÐN©hDN©Ñh¸N©hz*  N©/wh‚N©!£hê´©øhõª0,h õª2,h> *  õª1h<¼«/hÓ¬ÐMhTä¬àyh\¯”   
   F©dŒ  *    û €; ‡ È€0þÿˆ‡ È€ ‡ *  & È€P
P
H
Èe ``‡ È	€H
`
`
`
Ðe P*  L       PH‡ È	€P
P
P
H
Èe ```‡ ‡ ß	v ß	  &v *  r R ‡   Àe Ã Èààà‡ ôœ  Ã   R *  ˜ Ãe   ÐÐÐÈ‡ ß	¼ ß	: ‡ ôœ  Ã
  ¼ : *  ¾    ÐÐÐÈ‡ ôœ  Ã   Ãe Ð*  ä ÐÐÈ‡ ß	ø ß	R ‡   Àe È ààà
  ø R *  
‡ ß	ß	R ‡   Àe Ã Èààà‡ 
  
R *  0ß	:ß	& ‡   Àe Ã Èàà‡ ß	`ß	  :
& &`*  V  ‡ ôœ  ü  ‡ ß	zß	: ‡ ôœ       z: *  | Ð ÐÐÈ‡ ß	œß	: ‡ ôœ  Ã  
  œ: *  ¢ ÐÐÐÈ‡ ôœ        Ã   Ð ÐÐÈ*  È‡ ß	Öß	 ‡   ð  È‡ ß	ðß	   
Ö $ð( *  î‡   Ã ð È‡ ß	ß	& ‡   Àe 
  & *  È àà‡ ß	*ß	& ‡   Àe Ã Èà
  *& *  :à‡ ß	Pß	 ‡ ôœ    Ð È‡ ß	
  P *  `nß	 ‡ ôœ  Ã   ÐÈ‡ ôœ  Ã
  n *  †   Ð È‡ j j             j j j   j j $j &j (j   ¬j j j ¸¸¸¸¸¸â*  j j j 
¸¸¸¸¸¸â  Àj ¸¸¸¸¸¸¸P`*  j ¸¸
¸¸¸¸¸P      `  ÔÌÖî ø P`@P*  ÌÖ
î ø P`@P  èjzLþLLLLT`*  jzL
þLLLLT`  üLLLLLLLJJ~*  LLL
LLLLJJ~   ~        JJj j j j ØØØ*  ~JJj j j j ØØØ  ,ØØØúJØØØØØ*  ØØØ
úJØØØØØ  @ØØP`æð **  ØØP
`æð *  TP`^nŒœXZXX*  P`^
nŒœXZXX  hXXj      `XXXXXX*  XXj
`XXXXXX  |Xtt°°Ž Ž Ð Ð t*  Xtt
°°Ž Ž Ð Ð t  t––j j øøøøø*  t––
j j øøøøø  ¤øtøøøøøøø*  øt
øøøøøøø  ¸P`æð0:l v P`*  P`æ
ð0:l v P`  Ì^n¬ ¼ dÀdddd*  ^n¬ 
¼ dÀdddd*  à€`dddddddôœ    ôœ  ŸBÃ *  €`d
dddddd$B*  æ`f      Ã	
—r
 Ãe0 áƒ
~Ä0 !‘*  ,~„ÖäÕ@ …ƒ‚‡ f&f J ôœ  *  R  ô  ŸBÄ ¦B`fÂÌ  B*  x…
s
 DÅ! w Äå
 wÿÿs
 Äe*  ž €s
 Åe0 a‘~_ .ôœ    ôœ  ŸB
  .(B*  ÄÅ Åe f`ff„fffÌÄå ß	<ä  &<*  êä%ôþÿ
ôúÿÄå Æe µÅ 
*  —  —v Âå
 —vÿÿ—r
 Âe €—r
 ŒÂ*  6TÂe0 ¡Äe ,~Æe _ .ß	þÀœ x êß	Z  .þ$ê(Z*  \Àœ x êß	ÀÀœ x ê&Ä  Ìß	~„_ N  
êÀêG©#  "~(N*  ‚&      Ä  Ìß	Ž „_ ´&Ä  Ìß	Ð „_ ´¦"  G©#  Ž ´G©#   Ð &´*  ¨ß	\ü ‚‡ ¦ß	\  Ðˆõ¦&ff
  \\*  Î ÀÁ ` “àW¤0 ~

á‹&f*  ô 	 À	 ß	x€Õ•ÕÕÀå	 Áe	 Åå  x*   D”ÄEðÿæ B—p
 Âe
 aBÕ„Î
ôÖ*  @~áµ@ DÄå ß	<…ƒ‚‡ f&ÀÁ   <*  f` “àß	x„‡ D

£0 „
~Â  x*  ŒWp
 —p
 Âe
 `•ÂEðÿƒ`A~©p A*  ²B‡ ôœ  fß	È‡ Àœ ø	²D_ ¦  È"²(¦*  Øôœ  fß	è‡ Àœ ø	²D_       ¶ôœ    è²"¶*  þfß	‡ Àœ ø	²D_ Æß	¶Ä_ ð&  ²Æ ¶&ð*  $Ä  ß	Æ„_ :ß	ÆÄ_ v T
T
T
L
Äå Ôe  G©#  
Æ:Æv *  J TTT‡ &Ä  Œ  ß	þ„ß	–‡ &Ä    G©#  þ –(G©#  *  pŒ  ß	Z„ß	–‡ &Ä  Œ  ß	À„ß	–‡   
Z–G©#   À&–*  –f¦fÅ  Âµ  
A•ÁÅ0 @ÐÂ
@•*  ¼ÀEp t Œ~W¹@ ÀÕ ÀÕ …‚‡ *  â&Ä  ß	*„ôœ  ß	¦‡ &Ä  ß	*„ôœ  G©#  *¦ G©#  $**    ß	¶‡ &Ä  ß	*„ôœ  ß	Æ‡       f¦  
¶G©#  *"Æ*  .fÌôœ  ÂÅ Âµ A•ÁÕ0 SÂ

AÕ*  T 
r ÀÕ0 ~†Á% ãÕ@ …‚‡   zòòpp‚‚””òò*  òòp
p‚‚””òò  ŽNN´´&	$	F	š	ô	N
*  NN´
´&	$	F	š	ô	N
  ¢*ò„
„
„
„
„
„
òò*  *ò„

„
„
„
„
„
òò  ¶pp‚‚””òòNN*  pp‚
‚””òòNN  Ê´´&	$	(	b	Î	&
*ò*  ´´&	
$	(	b	Î	&
*ò  Þ„
„
„
„
„
„
¦¦*  „
„
„

„
      „
„
¦¦  ò""22¦¦¶¶ÆÆ*  ""2
2¦¦¶¶ÆÆ  	ž
$	¬
º
Ú
ø
–¦ž
ž
*  ž
$	¬

º
Ú
ø
–¦ž
ž
*  	ž
ž
ž
ž
ž
‡ ‡ À’Àl ˜¦6‘ ö
„Ì	  ž
ž
ž

ž
ž
"ö
*  @	€ˆ•‡ À’Àl ˜ö
„Ì	€’ì
‡ ÀÀb
  ö
"ì
*  f	Ä–Æå Ž 6‘ 6˜ +ö
Ä–ÄÅ¿ÿ+ÁÑ„æ  ö
*  Œ	ãÌ	€„Œ•ˆ•‡ ÀÀbÄ–+ö
Ä–ÄÅ¿ÿ+Á Ñ„  ö
*  ²	æãÌ	€„Ÿ  ÄÅ¿ÿÁÑ’ì
‡ Ä’Äl Ì¥-   ì
*  Ø	€™&ÌÕ@ €™&È	€ˆ•‡ Ä’Äl Ì¥- *  þ	ôÕ@ ÿÿ€È	      €ðµ@ ÿÿÈ•+ ‡ È•- àÅ@ *  $
‡ À’Ä  aä¥- „˜&ÈÕ@ „˜&Ì	€*  J
ˆ•‡ Ä’À `à¥- äÕ@ „ÎÌ	€ `äµ*  p
@ à•+ ‡ ÌÅ@ à•- ‡ ×" ‡ ÄÄbÄå Ã*  –
ú 3 ‡ Àœ  Àl àÅ@ ‡ À’Àl ˜ì
‡ À’  G©#ú $ì
*  ¼
Ä  aÀ
Èµ@ ÈÅ@ ÌÕ@  “œì
‡ À’Àl   ì
*  â
àµ@ ÈÅ@ Ì•- ‡ Ì•+ ‡ À’Ä  aàµ@ ä•*  + ‡ ÈÅ@ ä•- ‡  p    {ABCDEFGHI01234567*  .89p    0@123456789qrstuvwxy        0 p*  T        }JKLMNOPQR           0 p}JKLMN   zOPQR 0 p¬¬ÖÖèèøø¬¬*  ¬¬ÖÖèèø      ø¬¬  –²²ÀÀ*  ²²À
À*  ªÃ ‡ Ä À #G‡ Ä À %@ %>  *  Ð #<‡ Ä ô À 4‡ Ä ô À +*  öôÄ ô À %#õCNÄ Àœ ø	²fÀ  G©# $²*  Ä
•W¡0 ~×p
 ‡•ÅEðÿCa…	~¹@ *  B…‡ …Ãÿÿ² ‡ ÀÈ Š… ÀÈ Èµ Åe  G©#È  G©#È   h … õ Ö] _     ‡¬À]       ÖN  
 Â¨À*  »%o}    Â¨À   ¯”L  G©#@  N©¯@  *  N©Y@  ‡¬À]@      (  Ã©o}|¢ é¨—(h  *  é¨ç(h û¨—(h( û¨ç(      h4 :©™Âhv :©ÝÂh‚ *  :©ìÂhˆ :©¥Ãhp :©´Ãhj :©õÃh| ËªÂhH   ÐªÂhD ¯”   
   Ã©o}  *    DDg…… æ  ÎeÈ ÞÕ Õ… DDgõ…€  G©#*  & … ADDâí…… ADDâç…€… ]… CÄ*  L  Àœ B´    ø	  „  ø	  … ]']'  G©# N©¯N©Y*  r ]'
]']'
]'õ Ö]   ˜ _   Åe …   ‡¬À]       €N  
 Â€À*  »%p}    Â€À   ¯”L  G©#@  N©°@  *  N©@  ‡¬À]@      (  Ã©p}|0"hÎ *  0£,hê 0;Nh¶ 0cXhÜ é¨˜(h  é¨è(h( *  û¨˜(hJ û¨è(hd :©      ÙÈhÊ :©Éhæ :©,ÉhÄ *  :©åÉhø :©ôÉh² :©5ÊhØ ËªPÈh ÐªPÈh† 
  ¯”   
   Ã©p}  *    @ABCdD…Db…Ò
… æ  ÎeÈ ÞÕ    G©#*  & … @ABCdDñ…Dbï…€„Ò
… @*  L ABCDä„à…âÞ…Ò
… @ABCDä„*  r Ó…âÑ…€„Ò
… @A	… CÄ Àœ
  &G©# *  ˜  B´    ø	  „  ø	  … @A$	"!'  N©°N©*  ¾ !(‡$A@ö@A$	"@A$	"*  ä @A$	"!(†
A@öõ Ö] _   
  Åe …   ‡¬À]       âN  
 ÂÐÀ*  »%r}    ÂÐÀ   ¯”L        G©#@  N©²@  *  N©Ñ@  ‡¬À]@      (  Ã©r}|F2"hò *  2£,h2;NhÎ 2cXhé¨š(h  é¨ê(hJ *  û¨š(hf û¨ê(h˜ 2©äh 2©
zhp :©YÕhî *  :©Õh:©¬Õhè :©eÖh,:©tÖhÊ :©µÖhþ   ËªÐÔh¬ ÐªÐÔhž ¯”   
   Ã©r}  *    ß	 @PÐ… D@d†BCD   *  & 
…dCD…dD…b…‡ æ  ÎeÈ ÞÕ ‡ ß	  G©#*  L  Ú€A
B
C
D
Áe Ó†BCDÏß	l Ì@D
    l *  r ä†‚ƒ„Ü…äƒ„Ø…ä„Õ…âÓ…‡ *  ˜ ß	l Ø@A	… CÄ Àœ BŒø	    l G©# (N©²*        ¾ „  ø	  … @AÂ €``	",2‚!(ƒ~  N©Ñ*  ä &‡,A@ð@AÂ $#ƒ~@AÂ $*  
ƒ~@AÂ €``	"
‚!(ƒ~†
A@  0ðõ Ö] _   Åe …   ‡¬À]       PN  
 ÂøÀ*  –,X    ÂøÀ   ¯”L  G©#@  N©¯@  *  N©Y@  »«oK@  ‡¬À]@      (  Ý©ïW|n*  é¨˜0h  û¨˜0h" ?©™Âh2?©ÝÂhF?©ìÂhP*  ?©¥Ãh(?©´Ãh?©õÃh<ÖªÂh~ ÛªÂh< 
  ¯”   
   Ý©ïW  *    ß	® Cb…Ä ü ACœ Âà%  ß	®   ® G©# (® *  & Câï„æ  ÎeÈ ÞÕ Õ… CÀœ ABœ Äœ         G©#*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©¯G©# »«oK*  r ø	  … <
 ôCÄ Àœ Ì ø	  Ä ôœ   N©YG©#  N©¯$G©# *  ˜  ü  < DË àCÄ Àœ Ì ø	
  G©# *  ¾   ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©¯G©# N©¯ G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ   
»«oK »«oK*  
Á ‡ Bœ @ Á ‡ ß	® 	" ß	® 	"
  ® $® *  0ß	® 	"ß	® 	"ß	® 	"ß	® 	"  ® ® ® &®   Võ Ö] _   Åe …   ‡¬      À]       ˜N  
 ÂÐÀ*  –,€    ÂÐÀ   ¯”L  0"@  0£,@  *  0;N@  0cX@  G©#@  N©°@  N©@  *  õª0,@  »«pK@      (  Ý©ðW|lé¨À0h  *  û¨À0h. ?©ÙÈhF?©Éhd?©,ÉhV?©åÉh8*  ?©ôÉh0?©5ÊhNÖªPÈh– ÛªPÈhP ¯”   
   Ý©ðW  *    ß	À CdD…Db…À  Ñ	ACœ   À G©# *  & Âà($ß	À CDä„…âé„æ  ÎeÈ ÞÕ   À  G©#*  L Õ… CÀœ ABœ Äœ áÄ LŒàø	  À  G©# &N©°*  r Ä ß	  DË	   ø	  …  

òC  G©# 
»«pKN©*        ˜ Ä Àœ Ì	 ø	  Ä À• Ì	 ø	  ß	  D$  G©# N©°G©# "N©&õª0,*  ¾ áCÄ Àœ Ì	 ø	  ÁBœ CÄ Àœ Ì  
G©# N©°"G©# *  ä 	 ø	  Ä Àœ à
Àß	  @ Bœ    N©°G©# »«pK*  
‡ @ß	    Âœ Á ‡ Bœ @ Á ‡   »«pK*  0ß	À _   ß	À @_   ß	À _   ß	À _   *  À 
0;NÀ 0£,À  0"$À (0cX  Vß	À @_   ß	À _     À 0;NÀ 0£,       ²N  
 Â Á*  –,Ð    Â Á   ¯”L  2"@  2£,@  *  2;N@  2cX@  2©ä@  2©
z@        G©#@  *  N©²@  N©Ñ@  õª2,@  »«rK@      (  *  Ý©òW|\é¨1h  û¨1h. ?©YÕh6?©ÕhT*  ?©¬ÕhF?©eÖh(?©tÖh ?©µÖh>ø©ßh°   ÖªÐÔh† ÛªÐÔh< ¯”   
   Ý©òW  *    ß	° ¦Dß	  Àb PÐÄ A‚Cœ Âà  ° 2©äG©#b G©# *  &  ß	° ¦Dß	  èCÀœ ABœ Äœ   ° 2©
z*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©²G©# »«rK*  r ø	  …  



ðCÄ Àœ Ì ø	    N©ÑG©# (N©²*  ˜ Ä À• Ì ø	  ß	  DßCÄ Àœ Ì   G©      # N©Ñõª2, G©# *  ¾ ø	  ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©²G©# N©²"G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ  »«rK"»«rK*  
 Á ‡ Bœ @ Á ‡ ß	° _   ß	° @  °  2;N$° *  0_   ß	° _   ß	° _   ß	° @_   ß	&  2£,° 2"° 2cX° &2;N
  V° _     ° 2£,       ŒN  
 ÂøÀ*  öšw    ÂøÀ   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  W«®s@  »«oK@  »«pK@  »«rK@  *      (ˆÍªÂh4 ÍªPÈh      ’ ÍªÐÔh ¯”   
         *    CAæ  ÎeÈ Þ5 Bœ  @œ àÀœ `  
G©#*  & 
àÀœ ‡ ± ‡ ß	  %‡&Ä ø	  Â% 	À    G©#  N©¯*  L   —t 2   À‚Ä ß	  D  ø	  W«®sG©# »«oK*  r   … æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  -‡  N©Y
G©#G©#&  *  ˜ &Ä ø	  Â%
 Ä   D—t Âe  G©# N©°*  ¾  "!" ‚À‚Ä ß	  D  ø	  …   W«®s G©# »«pK&N©*  ä æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  :‡&Ä  G©#G©#"  *  
 ø	  Â%       À Àe Ð	ÄB $$$$ß	  G©# N©²G©#B *  0   —t Âe "(	"(‡‚"(‡‚"(†À‚  õª1W«®s *  VÄ ß	  D  ø	  … æ  ÎeÈ ÞÕ Öæ  G©# 
»«rKN©ÑG©#  |  ÎeÈ ÞÅ …   G©#       tN  
 Â¨À*  ö´r    Â¨À   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  »«oK@  »«pK@  »«rK@      (  ©^Z|¸"  ÚªÂh  ÚªPÈhn ÚªÐÔh ¯”   
   ©^Z  *    CÄ Àœ ô   ø	  AÂœ Dœ áÀ ø  G©# N©¯&G©# *  &   Â
€

      ß	  û €< ün  T…Bœ  »«oK*  L  Ãœ Âà ß	  Dó     ø	  … CÄ  »«oK"N©Y*  r  Àœ ô	   ø	  AÂœ Dœ áÀ  Ì  G©# N©°"G©# *  ˜  4
 Â
€

ß	  À  ð €2   »«pK*  ¾ 
² dJ…
b…Bœ Ãœ Âà ß	  Dó  "»«pK*  ä 	     ø	  … æ  ÎeÈ ÞÕ … CÄ Àœ   N©G©#$G©# *  
ô   ø	  AÂœ Dœ áÀ  Ì 4
   N©²G©# *  04
 4
 Â
€

ß	  À  ð €J
  »«rK*  Vr
 r
 r
 Êe r r r dJr r*  | ¹…d      Jr ´…dJ±…
b¯…Bœ Ãœ Âà ß	  ¢  Dó     ø	  …   »«rKN©Ñ       N  
 Â`Ç*  *’úD    Â`Ç   ¯”L      (  j¬úDì´  G©#h  ¯”   
   j¬úD  *        &     :     N     b     v     Š     & : N b  v &Š  ª   ª  ¬      ¶   ¬ ¶  º *  º  ¾  
Ä       D                  ¾ Ä D*  à                               4                             D*  DCL @  –CO    œAL   ¢CH   ¨WI @    
–œ¢"¨*  j–EX   ®WR           SH €    MA     LO€ 
  –®(        Ô   Ð   Ð   É   Ö     Ô Ð Ð É $Ö        N  
 ÂˆÇ*  …˜pq    ÂˆÇ   ¯”L  G©#@  N©/w@  *  Ã©’@  Ûªl†@  ‡¬À]@  “¬’@      (  *  ¬"|Ì¬"h  ¬…qh¬qh¯”   
   ¬"  *    
Ä  4-  ‡f t2 æ ß	  
 $ æ  G©#"Ûªl†&$ *  &   Îeª Þ4 _      À
q-  f   G©#“¬’*  L t2 æ ß	  
 \ æ  Îeª ÞD _   Áe å  Ûªl†\ G©#"“¬’*  r  Wp m ´
 æq   &CÀœ ø	          (N©/w*  ˜ „€1
  f æ- ß	  
 ° æ  Îeª Þl_   Ûªl†° G©#*  ¾   €ñ  €1
  q q q q Ä  1  “¬’$G©#*  ä $ 
 ƒÅq EÅe ñ  Åe ô
 Ã*  
Æe
 _   ƒ…Õ_  Ä  4-  ‡f t  
‡¬À] G©#*  02 æ ß	  
 >æ  Îeª Þ4 _        Ûªl†>G©# “¬’*  VÀ
q-  f t2 æ ß	  
 væ  Îe  Ûªl†"v&G©#*  |ª ÞD _   Áe å Wp m ´
 ñ     “¬’*  ¢q q q q Ä  1$ 
 q EÅe   G©#  È_     ‡¬À]             èN  
 ÂHÁ*  ó`""    ÂHÁ   ¯”L  G©#@  Ã©’@  *  Ûªl†@  ¬ N@  ‡¬À]@  ¬"@  “¬’@  *      (  ,«šw|¢ ¬<Nh8 ‡¬$ahv ‡¬ bh    ¬,"h ¯”   
   ,«šw  *    Ä  t2 fŽ#‡Ö_   Ä  t2 f Ž  G©#‡¬À]G©#*  & ‡N Ö_   Ä  t2 fŽ‡N   ¬"G©#*  L Ž‡Ö_   ¦ æ ß	  
 f æ  Îeª Þô   ¬ NÛªl†f  G©#*  r _   Ä  t2 EÍÂæ	 ß	   ’ æ  Îe  “¬’
G©#Ûªl†"’ &G©#  ˜ ª ÞL _     “¬’       œN  
 Â˜Á*  å˜€W          Â˜Á   ¯”L  G©#@  7ªl†@  *  ¤ªD@  Ûªl†@  ”¬¸p@      (  ’¬p…|p*  C©h„Ã©’h.6ªÏ}h> («LwhŠÀ«""h<*  …¬0XhŒ‡¬À]hD‰¬üXh  “¬’h¯”   
   ’¬p…  *    ß	  ß	L Á  	 @ ð p
 æ æ  æ  ¤ªD
L G©#&”¬¸p*  & iÿˆ: óV {	V ß	ˆ … &ß	L ß	^ €‡   ˆ  L $^ *  L À¬  ‡ À_ .À   &Îe  ,  Ö  G©#¬ .G©#*  r ‡ æ# ß	   € À_ .@ û  Xæ$ ß	  Ûªl†€ .*  ˜    ž Ä  À& m¸ 	Š  Ã@ 3
  À
€
  Ûªl†ž G©#G©#& *        ¾ È‹@È¥  úÈ¥, ÷È¥	 ôÈ¥* ¢0 $‡¢9 *  ä !‚”Áå0 ¢0 ‡¢9 ‚Wp
 ”Âå0 `óóÿÿ*  
  ×Á
Áå Â t³P  à‹Êæ  Îeª   $G©#*  0Þ(æ% ß	   @®‡ Ä  t$ t ( f  Ûªl†@G©#*  VÎe Ž  ý  	t/  & t  & ü	& t *  |t  t" …| ( ‡ Ä  ô &f    G©#*  ¢ Á
Wp m q# Áå À
ù€Õ… 4  *  Èt2 f æ ß	  
 Þæ  Îeª Þ< _   Ûªl†ÞG©#(*  îñ
  Å ô
 Å
 E`€_ Dß	> ß	<   D$> (<*  Ä  : óX {	X Äª  &æ      ÿˆæ3  G©#G©#ª *  :ÿˆ&Äô „‡ æ&&&æ  Îeª Þ  
G©#"G©#  `  ß	   jƒ„‡   7ªl†j       °N  
 ÂXÀ*  ˜8w    ÂXÀ   ¯”L  G©#@  N©/w@  *  Ûªl†@  ‡¬À]@  “¬’@      (  ‡¬a|0 *  ‡¬ah  ¬ N| ¬ Nh  ‡¬`^|* ‡¬`^h  *  “¬h| “¬hh  ¬d|( ¬dh  …¬Ps|&   …¬Psh  ¯”   
   ‡¬a  *    Ä  t2 EÍ_   æ	 ß	     æ  Îe  G©#‡¬À]Ûªl†"  &G©#  & ª ÞL _     “¬’ ¬ N      &@PP€… 
   ‡¬`^  *    CÀœ ø	        À	 ‚ÕÀ
ÀÀ`_   @ÀÀ  N©/w"‡¬À]  & `… 
   “¬h      æ  Îeª Þè æ ß	    …   G©#Ûªl†  ¬d  *    Ä  t2 fæ" ß	  
  æ  Îeª Þ_   G©#Ûªl† G©#  &     “¬’ …¬Ps  *    Ä  t2 æ# ß	    æ  Îeª Þ_     G©#Ûªl† G©#(“¬’       ŽN  
 Â@Î*  e,8w    Â@Î   ¯”L      (  Ü©;"8„   Ü©;"h  Ü©X"h ¯”   
   Ü©;"  (    &D {  &ùL L R R X X ^ ^ L *   L L R R X  X "^ $^ &L   $ L R R ^ ^ z       z z z d *  L R R 
^ ^ z z z z d *  8 h v R ~ ~ ~ ~ ~ ~ ~ Â Â Â *  h v R 
~ ~ ~ ~ ~ ~ ~ *  ^ Â ‚
	‚
Ã
„ÂEàÿ‡ ‚‚
ÂEàÿ„‡        (N  
 ÂÐÀ*  »Ô!    ÂÐÀ   ¯”L  ü¨@  G©#@  *  t©@  Ü©;"@  Ý©w~@  Ûªl†@  “¬’@  "      (  ë¨Ô!|À …¬»h  ¯”   
   ë¨Ô!  *    Ä  BCß	  T ß	  — „ _ v Àß	  V &  G©#ü¨T Ü©;"v &Ý©w~(V *  & J > €`àÐ•  C~ß	  V … Ã& 
Â„ ëß	  J > t©V G©#& *  L         \ _   Õß	  \ æ  Îeª Þø æ ß	   (  t©\ 
“¬’t©\ G©#&Ûªl†*  r t … ¦æÂ„ Ã& ß	  ¸ ° ® 
€ÂÐ”   t G©#& Ý©w~¸ ° ® *  ˜ Á
„~Ð•  C~ ÄÅÈïÖÖ_ J ÖÖ_   "J   ¾ V   V        dN  
 ÂXÀ*  {ùe    ÂXÀ   ¯”L  ü¨@  G©#@  *  t©@  Ü©;"@  Ûªl†@  U«w~@      (    i©Yy|h …¬{h  ¯”   
   i©Yy  *    Ä  BC@€
À@aÁ D&@ß	  H @à4Š  G©# ü¨"H *  & º ß	  ß	  H ~@
4º õß	  N …… ß	  "  Ü©;"U«w~H t©       N (t©   L N æ  Îeª Þ æ  ß	   f î  N G©#Ûªl†f        ¾N  
 ÂˆÇ*  J†7x    ÂˆÇ   ¯”L  ü¨@  G©#@  *  t©@  Ý©w~@  ¶ª·„@  U«w~@  “¬’@  *      (  ¬÷q|è	ô¨Aeh7ªl†h  Ûªl†h 
  ¯”   
   ¬÷q  *    6 6 ¦¦¶  ö  ö  ¦¦¦æ*  & ƒÓf&¦f&³ Á  s s KæÄ    (G©#*  L ÂTI
ß	  ¤ ƒÅå …ì r2 À Àˆ	  ü¨¤ (ˆ	*  r ß	¸ æ&¸ ß	  ‚ ´¸ ƒÅÃl K€‚„  ¸ t©‚ *  ˜ …£Æƒ_   ôª ƒÆ Ë _ v Â      & 4Š  ¶ª·„"v &G©#& "  ¾ º R•þ€˜x ä Z6x fú Š~„*  ä Z6x fú Š~ „*  Ü rZ>æ ø @•fˆ	ß	À …_ À ‡ ôÕ º À"  rZ>
æ ø ˆ	À À *  & àæôÕ º ß	  ¤ 4Šº ƒ_ À ß	    G©#& U«w~¤ "À (Ý©w~*  (¤   "ƒó%  ÅÒ	_ ¸ À& æÂO ß	  &  ¤ “¬’"Ò	¸ G©#& (Ý©w~*  N¤   "ƒ_ À @•À` Ë_ À @• c Å_ À @•  ¤ “¬’"À À &À *  tÀ` @•À`$@• c!@•À`1@• c? ABCDEFGHI*  šJKLMNOPQRSTUVWXYZ$. 0123456789  ”*        ÀB~_ À Ê—®Š”Š”Š”Š”’”¦ 
r bœ®ù  À ®$®*  æ‚_ À æƒ 
r
 fœ®ùƒáƒ’•Â~ƒ_ 
  À ®*  À f… 
r( Rœ 
r( RœR“œ…  À  &*  2_ À &@•fˆ	L8 fß	À …÷…Œ_   À ˆ	À *  XÀ @•fˆ	æ     3  Àe &f
  À ˆ	*  ~fß	À …€N~³ …_ À @•ˆ	_ À þì þ  À À  ˆ	$À *  ¤äSUBSCRIPT TOO SMALL OR TOO LARGEðþü þ*  ÊäINDEX TOO SMALL OR TOO LARGEðþü þäDEP*  ðENDING ON ITEM TOO LARGE OR TOO SMALLð*  þü þäILLEGAL PROGR      AM REENTRYðþú þäINCO*  <RRECT NUMBER OF ARGUMENTSðþúèì þäPERFO*  bRM STACK OVERFLOW þêðæî þäPERFORM END *  ˆOF RANGE VIOLATION þêðæî þäILLEGAL NES*  ®TED PERFORM þêðæî þäNULL ALTERABLE GO *  ÔTOðþü þäSAME AREA ALREADY BUSY WHEN OP*  úENING þöðþü þäþö ALREADY OPENðþü þäþö *   NOT OPENðþü þäINVALID OPERATION ATTEMP*  FTED ON þöðþü þäREAD MUST PRECEED REWRI*  lTE OR DELETE ON þöðþü þäþö PREVIOUSLY *  ’LOCKEDðþü þäCLOSING UNIT OR REEL UNSUC*  ¸CESSFUL ON þöðþðþü þäOPEN ERROR USING *  Þþö      ðþðþü þäCLOSE ERROR USING þöðþðþü þä*  þö NOT OPEN FOR OPERATIONþöðþü þäINVAL*  *ID LINAGE VALUE USING þöðþü þäNO END O*  PF FILE PROCESSING ON þöðþü þäREAD ERRO*  vR ON þöðþðþü þäWRITE ERROR ON þöðþðþü *  œþäREWRITE ERROR ON þöðþðþü þäDELETE ER*  ÂROR ON þöðþðþü þäSTART ERROR ON þöðþðþ*  èü þäUNLOCK ERROR ON þöðþðþü þäBAD NAME*   USING þöðþü þäSTOPìü þäUNKNOWN PROCED*  4URE ðþü þäACCEPT ERRORð þäDISPLAY ERRO*  ZRð þäUNABLE TO COMMUNICATE WITH USERð *  €þäFATAL SOURCE ERROR ENCOUNTER      EDðþü þä*  ¦ENVIRONMENTAL INTEGRITY FAULTð þäSPECI*  ÌFY ALL "ON" SWITCHES:ðü þäINVALID INPU*  òT, TRY AGAINðü þäODD ADDRESS FAULTðþè *  þäMEMORY PROTECTION VIOLATIONðþè þäBPT*  > INSTRUCTIONðþè þäIOT INSTRUCTIONðþè þ*  däRESERVED INSTRUCTIONðþè þäINVALID EMT*  Š INSTRUCTIONðþè þäFLOATING POINT EXCEP*  °TIONðþè þäPERFORM COUNT TOO LARGEþêðþü*  Ö þäEXPONENT TOO LARGE OR TOO SMALLðþü *  üþäSTART OPTION NOT SUPPORTED: þöðþü CB*  "L -- ö:          þúOCCURRING IN ò ò" *  HAT OFFSET ô2ð       þþPROGRAM òò (òò
)   *  n           öð FILEþôþò ú
 ø
 ú (ø) *  ”úþþASSOCIATED RECORD SERVICES ERROR: *  º-öþæð îþþNESTED PERFORM SOURCE LINE *  àNUMBERS:ðæø î8þþLISTING OF NESTED ENVI*  	RONMENTS:ðèü ú
 AT SOURCE LINE NUMBER *  ,	ö
  þþR0, ..., R5, SP, PC:ðþþê
 ê ê   R	ê ê ê ê êð ú (-ö)     l	  l	 b	0		ìÁ”Œ†}*   b	0	
	ìÁ”Œ†}  €	mV4, £Éë6*  mV4
, £Éë6  ”	[z¡ÀÚ,S‚*  [z¡
      ÀÚ,S‚  ¨	œËæ#Fkƒœ·*  œËæ
#Fkƒœ·  ¼	Ñê$<L]€¤*  Ñê
$<L]€¤  Ð	Åä9Nc}š¸*  Åä
9Nc}š¸  ä	×ü
  ×ü       ¶N  
 ÂXÀ*  ·„[q    ÂXÀ   ¯”L  G©#@  ¤ªD@  *  Ûªl†@  “¬’@      (Dü¨h  t©hR *  Ý©w~h€ ¶ª·„h>U«w~hà ”¬¸ph.¯”   
         *    ´ ® ô ° ´® ô° æ¦æ æÿˆY‡&
*  & &
&
&
&
&
&
&´ &
Î• æ æ æ      ÿˆE‡*  L Îe ‡ &
&
&
&
&
&
&
&´ &
Î• æ æ *  r æÿˆ.‡Îe ‡ &
&
&
&
¦æ&
&´ &
Î• *  ˜ æ æ æÿˆ¸ ôU º ô‹¶ 	ô‹· Îe*  ¾  ‡ Îe 	­¶ öÿÎe ¶ Ž  ‡ ô5*  ä º  æ¦¼ Â&
&
&
&
¦æ&
&´ &
Î• *  
æ æ æÿˆ‚ƒô‹¶ ÚôE º &
&
&
&
*  0¦æ&
&´ &
Î• æ æ æÿˆô‹¶ Áô5*  Vº ôU º ôE º Â Â&
&
&
&
¦æ&
*  |&´ &
Î• æ æ æÿˆô‹¶ žÎe ‡ ß	*  ¢À4æ& )ß	À<æ' "ß	ÀDæ(    *  Èß	ÀLæ) ß	ÀTæ* ß	À\        $*  îæ+ ß	Àdæ, ß	   Å  5ª _     Ûªl† G©#(“¬’*  ¶òÿŽÎe f&æ¦f&æ‡  ®¼ÊØæ    ®"¼$Ê&Ø(æ  :  ôß	  ‡   ô
¤ªD       f N  
 Â°Ì*  £K Œ    Â°Ì   ¯”L      ( ¤ªDh  
  ¯”   
             ‡        ”N  
 ÂÐÀ*  w<    ÂÐÀ   ¯”L  G©#@  N©/w@  *  Ûªl†@  ¼«/@  “¬’@      (  º«<|˜*  e©„dh2e©ûfhxº«<h  º« <h º«!<hH   ‰¬ˆ–h&¯”   
   º«<  *    B Âe CÀœ ø	ú Á`Cs …       B Âe  ú *  &  CÀœ ø	ú Á`CÀœ ø	ú Á`Cs … B
  ú ú *  L  Âe CÀœ ø	ú Á`CÀœ ø	ú Á`CÀœ ø	
  ú ú *  r ú Á`Cs … À $CeÒ ‡ æ ß	    ú (Ûªl†*  ˜  œ æ  Îeª Þ _   Ã Ã
Òp	‡Ò ‡   œ 
G©#“¬’*  ¾ À Ðôæ ß	   Ö æ  Îeª Þ _   Ûªl†Ö G©#$  ä   ß	  Ãâíø	  ÃÝè¬ ¬ ð ð ð (  “¬’¼«/N©/w¬ ¬ ð  ð "ð   ð ð ð ¬ ¬ ¾ ¾ ð ð æ *  ð ð ð 
¬ ¬ ¾ ¾ ð ð æ *  æ æ æ æ æ æ ~ @Ã
ÕpÈ… ABCÀœ ø	        æ æ æ 
æ æ æ ~ *  >  Õ Õ 
„ Dì òp  añ  … æ ß	    N©/w(Ûªl†*  d hæ  Îeª Þ _   ACÀœ ø	  Õ êÕ   h
G©#“¬’"N©/w  ŠèÃ
ñp ñ …        N  
 ÂpÆ*  ]!ô    ÂpÆ   ¯”L  û¨6@  G©#@  *  N©T
@      (  Œ©`;8:Îªí+h  Ïªh   Ïª˜!hv ÏªHXhX ¯”   
   Œ©`;  *    ÀH À8 B‚CÃ ÕD Nf„
•
  H 8 *  & Ö‡ •ùÅEðÿH Á
“”Ó•  GîÁ
*  L BàÁ
“”GæNÎe Ä CÁœ Àœ ø	  ß	  G©# &N©T
*  r ² 5NÎe Ä       CÁœ Àœ ø	  ß	² æ  Îe  ² G©# N©T
"² &G©#*  ˜ È Þ5 ß	à æ  ÎeÈ ÞÅ ‡ f@œ BàD  à G©#*  ¾ Å: ÀÁß	  …CDÃ @  Å: ‡ æ•    G©#: û¨6"G©#: *  ä Ba˜ÁE¿ÿÊÅ@ Î•- Áe f7 &6<0    "&$6&<(0  
BHNX`’¨ÄÒÚ*  BHN
X`’¨ÄÒÚ*  úÆe ‡ Î5 !ÎU “ ÎE ÎU 6”  ú*  D 6” Î5@ úÐ‹Î5@ õú”Î5 ‚*  j “”ÁW € y  y Š BÂEðÿWtüÿÁy 
   Š *  *”Î5 êÂE ÿƒà“ ƒ~ã”Î5       ßÎ5@ Ü  **  ¶ÂE ÿÂàŠ Õ”DàÒß	Î“ ƒ~Êß	  *  ÜÎ5 W 0  ÎU S~ºß	Î5 
  $*  
W 0 ÎU “  S‘~¨ÄA•W 0   (öE  ‡ Á0 „
‡        XN  
 Â€À*  œ,´    Â€À   ¯”L  G©#@      (    ¬K|  ¬Kh  ¯”   
   ¬K  *    Ä& &æ=ÿˆ@  AÁ
&Ã
CCÂ5
  G©#& *  &  ÓÃ` c
—r
 ðœ  ¤„Cœš Ä`Aœ   `  "š ( *  L 
—r
 œ Ðœ I~…       ; < Z [ x 
    *  r y — ˜ µ ¶ Ô Õ ó ô 01N      O01234567  ˜ 89         ¾ N  
 Â¨À*  œ,¡E    Â¨À   ¯”L  G©#@  N©°@  "      (  œ,¡E|* Ý©Ñ~h  ¯”   
   œ,¡E  *    æ&&Ã Àœ Ä ô	   ø	  €ð  „  G©# N©°  & ƒ‡        Ä N  
 Â€À*  \g¡E    Â€À   ¯”L  G©#@  N©@  "      (  \g¡E|0 U«Ñ~h  ¯”   
   \g¡E  *    &¦æ&Ä Ã Â & (   ø	    G©# (N©  & „ƒ‚€‡        rN  
 Â¨À*  9wÈK    Â¨À   ¯”L      (  »«%|D*  W«®sh  »«oKh˜ »«pKhÐ »«rKhÂ       »«vKh´ 
  ¯”   
   »«%  *           
       d       è      '    *  &    †     @B     €–˜      áõ     Êš;*  L      äT    èvH    ¥Ôè     rN	   @*  r zóZ   €Æ¤~   Áoò†#   Š]xEc  d§³¶à*  ˜ ÂSTf —t rp  | ‡ ÂEZfÁ    *  ¾  Â>WfÁ Â7TfÁ f& *  ä æ fÅ  —  €…Wu À5p  @m  T
     &  *  
¦ÀL5p  @m  T`@Î
ôÖ„ã„ãÄå 
      *  0Âå ÝÖƒ„…‡ ‡ f&
 €N
 
*  V—t 2r  Ö€ < ‡ fÁ fÁ           *  |fÁ æ & f&
fEÅÅå Å`*  ¢Õ€ß	Å  ÁC`D`—  €…Wu ¦ 
Áv  
*  È 5   	@í  vÿÿ5r  Àe €vÿÿ5r  $@        $  *  îÎ
éÖ„c„cÂå ÚÖ€fd
B~± TB~*  …„ƒ‡ Á&D`dL
C~ ± TB~„  :v
  ‡        JN  
 Â¨À*  —˜"    Â¨À   ¯”L  G©#@  N©²@  *  N©Ñ@  †©Š@  Ûªl†@  êªP›@  W«®s@  *  »«vK@  “¬’@      (  ¬š|ˆ¬šh  
  ¯”   
   ¬š  *    CÄ Àœ ô    ø	  ÁCÄ Àœ ô      G©# N©²      G©# *  & ø	  fÄ  Ã%x%v%tƒ  Âœ Å    N©²(G©#*  L µ &%€D &Cœ µ —t ”  ” ”  "W«®s&W«®s *  r  ” 



À Âß	  €A Â ß	   W«®s W«®s G©# »«vK*  ˜   Á D ß	t5Š fœ f À C B   †©ŠG©# t G©# *  ¾ Ä ÂàJß	  õ@ ÃC-B 7C-D 4C-F 1C-  G©# »«vK*  ä H .ö
 €A
 B ß	  ƒ A C`õ   êªP›*  
ÓÆe …DÃ   ó   ø	  … æ. ß	    G©# N©Ñ(Ûªl†*  0 4æ  Îeª Þt_   Æe æ  ÎeÈ ÞÕ …        4
G©#“¬’G©#*  VÕ…    
«Ô 

  |




‡        DN  
 ÂpÆ*  šw     ÂpÆ   ¯”L  >©Ì.@  E©e@  *  G©#@  ø©ß@  ‡¬À]@      (  ½« q|Ä*  >©¹.hº?©yh°?©y×hl“¬,hZ “¬;	hê   “¬Ëhð “¬šwh( ¯”   
   ½« q  *    Ã AÁ
Wt @`ð,     0. * 00 , *  & ‡ Ä  @C  Âe* RRRJß	  Âå ò   G©#   *  L Öz   …_   Ä  4
æ 4
è 4
ê Ctä   ‡¬À]G©#*  r   Âe* RRRJAÁ
Wt C`ô â Á  
3r*  ˜  €
4æ Â @‡      ƒ~Á Bttè ä ß	Ö   &Ö *  ¾   Âe* ò Öz   …_   { Á
tpâ À   ‡¬À]*  ä p ‡ Á ÁÿÿÄ    tpê B¦	‚  G©#*  
ä è Bp@;à è 	  ². * ²0 , *  0tè Bpä À `{ t æ Ýß	Ö Ö    "Ö *  VÂe* ò Öz   …_   ß	  Åe Àe Áe   ‡¬À]ø©ß*  |	"
Â !(‚‡„~… À ÀÿÿÄ  4ê   $G©#&  ¢åÖm å_   ß	  í‚ï‡… ß	  è‚ê‡…   ‡¬À]E©e>©Ì.       `N  
 ÂÀÆ*  òyw:    ÂÀÆ   ¯”L  û¨6@  G©#@  *  N©¯@  N©²@  N©T
@  N©Y@        N©Ñ@  *  N©/w@  N©!£@  Ü©;"@  Ü©X"@  W«®s@  *  ‡¬À]@  ¬5a@  µ¬5a@      (  Ì«·r|â*  ‰¬TZhš‰¬WZhÆ‰¬XZh¶‰¬€Zh¶‰¬¤Zh¤*  ‰¬§ZhÐ“¬âh  “¬ãhl “¬ähV•¬ŠZh6  •¬‹ZhÀ•¬ŒZhP¯”   
   Ì«·r  *    Ä  tò ß	* Ä  t. t0 … õ Ö]   G©#* G©#*  & _   tÃ ô & ô  ô•  4Š 4  ‡¬À]*  L ôe Àœ ø	  ÃÎe ‡ À  p  N©/w&G©#*  r ì ß	  ° ðfÅ  CÄ Àœ ô     Ü©;"G©#G©# *  ˜ ø	  õ & Aò Dß	´Á õì @      ì 
ß	  N©¯´G©# *  ¾ žBò r-&   „"}ž ö µ
& ±
 ñ
    ž*  ä Þ
B @Cô ëAö ƒ ƒß	d
  $d*  
Âß	d„õ`& Ã õ &D  ø	  „  dG©# &N©Y*  0…À  Ä… Àe  ð0 Öx . Åe. _     G©#(‡¬À]*  Võ Ö] _   &æ— 
 ‡À5 Á5   ‡¬À]*  |Á5 	”Â
ƒƒÂ~ÂEþÿ”‚~ƒ„‡ &*  ¢ß	  „æ¦
€ B  Âà‚#‚fA Á`¤  Ü©X"*  Èƒ~ƒcÄíÖÖÄ‡ Á>W¬ , *  îW¬ 0 B  C     _	  ‡ B  C   ¬5a*            _	  ‡ ð  À ð   ø•0  f  µ¬5aG©# *  :fE D  Bœ     ß	  ƒ…Àœ ø	    û¨6(N©!£*  `‡ ƒÄ Àœ ô   ø	  Àœ t Ä l    
G©# N©²(W«®s*  †Lt t l Lt l Ll ƒ „   W«®s W«®s  W«®s *  ¬ ø	  ‡ æ&Dß	  „f Áô ‰	í& ‘
É  N©ÑÜ©X"G©#ô *  Ò	m& Ñ
‰ƒ‡ Á Ä  ß	´Áô 
ß	ž‡ ×¬   G©# G©#´G©#ô $ž*  ø " 8
×¬   3Áœ  Ál Á
Á B’³ *  — { — [ — ? — } 	— ] — ! — *  D: 
— A       — 0 ø— 9 õ— R ñÂå@ *  j‰œp‡ 0,1,2,3,4,5,6,7,8.,9.1,2,3,4,5,6  p*  ,7,8.,9.×¬ " 
×¬   
Áœ  Ál Á
*  ¶Á Éœ ‡ Ä  At ttß	* Ä    G©#"* (G©#*  Üô  t
´ÖÍB¦fÂ5 @úf*    t. t0 &
… ÕÍ5 €Í5 @Åe úÕÕ*  (õ Ö] _   Ä  tî tð tò fÅ    ‡¬À]G©#&G©#*  NÄ Àœ ô   ø	  õ & Á Dß	´õ  G©# N©¯ G©# &´*  tô j&
&
v þ 
þ5   D
€  *  šÁô ß	žþ5 @ öå  êŽ
µ
ö õ
ô Þ  G©#ô       
ž*  À
Dî ß	  µ ô ŽNô 
µãö µô   Ü©X"*  æÀô Aî &ß	à„µcö 5ô Àô Að ß	àµ  G©#ô àG©#ô &à*  N Ã Dò   ø	  umô & µc& Ã D  G©# N©Y$G©# *  2Ä   ø	  ÖÖB
ß	b…… Ä    N©Yb$G©#*  XÁ ß	´ôô Åe … õ Ö] _   D
  G©# 
´$‡¬À]*  ~æß	  ƒ“  ‡ 


‡ Ã  ³  Ü©X""G©#*  ¤Ã  3
&
fó & ÅÍhå³
& ó,&   G©#*  Ê `óÍ5€ Í5 Tõ,& èÿPÍE€ ÍE õ,& *  ðêÿBÍ5  Ä @      óÀå Àå Í5 *  õ,& èÿ,ß	Þ)ß	Þ+Ã  &ó@  ÞÞG©#*  <òÿÁÁl& Á
ß	dBÂå ß	bÃ  ³e&   d b$G©#*  bõ& èÿÍ5 @¬ÍU€ û
§Ã  ÍU€ û
Ã    G©#(G©#*  ˆÅå ˜Ä  Ã ß	˜ãÃå ôß	  G©#G©# ˜*  ®˜Ãå ß	˜Ãå ð…… À  °À    ˜˜G©#(G©#*  Ô0
ÖfÆå ƒß	zðƒß	öÆå ƒß	
  z ö*  úzƒß	öö5   ö   Æå ƒß	zƒË  z
ö"z*   Ó  ‹
‹í ‹
€)ó"þÿ&9ß	öð &   "ö*  F      0,&  	€ß	ÞÀ  °
& óÀ  ƒß	˜ö5  ÞG©# G©#&˜*  l  öU€  0a& & ð$ ÏƒÃe ß	˜ð  &˜*  ’Ãe ß	˜Æe Ó & ¾¸
&
… Ö  ˜*  ¸Dß	  Ã ³  3  3  ß	ö&
Àˆ  Ü©X"G©#  ö&G©#  Þ&
…        äN  
 ÂøÀ*  ;}ÀD    ÂøÀ   ¯”L      (  :©€l" *  :©€h  :©Æ%l  :©F–l  :©H–l  :©N9l  *  :©P9l  :©.;l  :©0;l  :©~El  :©€El  *  :©>l  :©@l  :©.El  :©0El  :©>&l  "  :©@&l :©lzl  :©lzh  ¯”   
   :©€                      &  :©>&  :©N9  
    
:©~E    
         *    
  
:©.;  	    

:©>             *      
:©.E      

:©Æ%             &  :©F–      

:©lz   :©@&               êN  
 ÂpÁ*  KTl†    ÂpÁ   ¯”L  G©#@  7ªl†@  *  ¬…q@  “¬’@      (  Ûªl†|ÎG©Õhä *  U«Yfh  ¹«Ùhv ¹«Ìhœ Ã«)#h¸Ã«1#h˜"  Ã«;#h\B¬òyhÆ C¬µ	h¨ ¯”   
   Ûªl†  *    Áœ" Wp  l> @ÁÁe @
Öß	   &   $7ªl†(& *  & ô ª _   Â’ ’       ’ ÒŽŽŽæ&  “¬’G©#*  L f&
f f &æ ß	  …„ƒÂ


  ¬…q"G©#*  r 

‡ Á ñ r  ±
 ¡ ‡ ß	˜96
   $˜*  ˜ ± ‡ Á 1
 ‡ &f¦À Á Â
 ”‚~*  ¾ ‚€‡ &f¦À Á Â
 P”‚~‚€‡ *  ä ”Ál 	”¢ÿÿù‡ 0002102122232430349091*  
929596979892                0    hprz~€†Ž”˜*  hprz~€†Ž”˜  Lœ¦°¶¼ÂÊÖÚä*  œ¦°
¶¼ÂÊÖÚä*  `ìøþðü ý@ý    °ý`ú   ðü          @ú`ú    ìøþ
*  †°ý`ú   ðü`ú  `ú  `ú  @úPü`ú   ðüPüú*  ¬`ú  @ú`ú  @ú`ú  @ú`ú  °ý`ú    Àùàýðü*  Ò`ú  `ú   Ðþàý`ú  @ú`ú    àýúðü`ú  *  ø@ú`ú   àý@ú`ú     
 *  

 


   D
 

0   \*  \&A  @8È- ûàÀç8€œ
À   88$
*  ‚Pœô Hœõ €AeN‡ €Á ”	’€Ð  ô õ *  ¨&
&
fß	  ‡ Á ¦  ‘“Î ‰•Îe ‡            rN  
 Â¨À*  S`l†    Â¨À   ¯”L  G©#@        Ã«1#@  *  ‹¯=@  ‹¯@=@      (  («l†|H©ª%h    ©ªph„¯”   
   («l†      P                                     
 
  
          &   &                  P %  P P                                  r   r              *    &fÀ  ÁP ¦”B~‚Å& 4
Ê Á ß	êW‡  
  G©#& &ê*  Æ r* 2- Á ß	êM‡r( 2, 3Ú " ô5 @  ê*  ì Ê 2Ô  ô5 €Ê ò•  ô5 Ê ò   *  ô5 Ê ÁeÖ r ò  ô5 0Ê ÁeÐ *  8r
 r ô5  Ê òU€  ò&  ò$ .       ò( *  ^ ò*  òœ 3 ¡ …€‡ …€ß	  30 ± ‡    Ã«1#*  „&f&ÅP ÄP P•Å$ 
s €0‘  …„  P *  ªð•   ðœ#  °$ ð  ð&  ð  ô5 *  ÐÊ ð  ô5€ Ê ðW  ‡ æ Ì CAð*  ö p U”Â~ß	  ‡È• 0Î  ß	  ‡ðµ8    ‹¯= ‹¯@=*  4\ Ê    EW¥/ Ä~Ààƒ¡ ‡ 
  Bƒ± ‡        N  
 ÂøÀ*  ›:à~    ÂøÀ   ¯”L  G©#@  Ûªl†@  *  U«Yf@  «¯@  «U(@  «v:@  «T[@  *  «Tq@  «)x@  ¤«ªH@  ¤«úW@  Ã«)#@  *  Ã«1#@  Ã«;#@  ‡¬À]@  “¬’@      (        *  A©D^|š9©t!h¢ ;©¿'hŒ ;©†:hR;©zLhê *  ;©hMh>;©jMhê >©¨h\>©cMh.>©èYh€ *  A©öZhFA©ÿZhÜ F©ªNh– F©@`hè K©=Ÿhj *  ƒ¬4KhXƒ¬kMhX ƒ¬
Nh^ „¬%!hL ‰¬÷XhÐ*  ‰¬¼^h¾ ‰¬ò`hº ¬Ödh. ’¬lh4 ’¬îh: *  ’¬ê"hR “¬:}hF •¬4Khf•¬kYhd —¬üqh@ 
  ¯”   
   A©D^  *    fÅe Ä  CtÚ  @ ‚ Ál A’l: À  G©#*  &   AI Á  éÁ ãÁ àÁ ÝÁ Ú*  L Á ×Á ÔÁ ÔÁ ÑÁ	 Îæ# ß	    (Ûªl†*  r  v ôª _   ß	  94 _ ¾ ß	  94 … ß	  v “¬’Ã«1#¾        Ã«1#*  ˜   93 _ ¾ ß	  10ô5 Ú Á ñ•  Îe   Ã«1#¾ Ã«)#*  ¾ …NÍ‡ å_   &
&
æ ß	  ñß	  94   ‡¬À]U«Yf$Ã«1#*  ä _ ¾ … ß	  00f&æ …ß	  Æe …,    ¾ Ã«)#«T[*  
& ß	   ,& & æ ß	  … 3  Ã«;#,$U«Yf*  0Ú " ß	  94 … ß	  00… ß	  94 _ ¾ ß	    
Ã«1#Ã«)#Ã«1#$¾ (Ã«1#*  V94 … ß	  94 … ß	  00ô5 Ú f&æ   Ã«1#Ã«)#*  |…ß	  Æe …,  & ß	  . °  &  «TqÃ«;#"°$ & *  ¢ & æ ß	  … f&æ …      ß	  Æe …,  U«Yf «U(*  È  ñàß	  @ Á Â À0 ß	  Á
   «v:$¤«úW*  îÂ À0 ß	  Á Â À  ß	  Á   ¤«úW"¤«úW*  Â À ß	  Á Â ß	  À 

³  ¤«úW¤«ªH*  : ƒËƒ#‚
r Âô…  @  *  `B‚ò ù ³  ³  3
 fæ  †æ …ß	  Æe …ä…   «¯       vN  
 Â€À*  äfì    Â€À   ¯”L  D©b@  G©]\@  *  N©/w@  i©{@  7ªl†@  («$@  U«Yf@  *  U«Ý@  «\g@  «)x@  Ã«;#@      (  *  
­WTì2 H©Är|ˆ4ªu:h      ô ©ªXhš ¯”   
   
­WT          («$         D©b         G©]\           i©{ 0   0     U«Ý H©Är  *    































Á,&*  &  ð   Â  Â,& Â& fŽàp f&    *  L æ …ß	  Æe …,  & ß	   t €   «\g"Ã«;#&t (€ *  r t â° ¡ ‡ & & æ ß	  ° ±   t "U«Yf*  ˜ ‡ ó5   Á
ô5 Ú º‡ Â. ô5 Ú r` *  ¾ ²,  	Á
², 
 ¨ôU Ú ¤rà  ì *  ä l ß	  ß‡ôU Ú fÅ. BÂe õ  Á   
  *        
ÍR&æ&CÀœ ø	  Ê„ƒ€Ò"
  N©/w*  0Òô  ª æ  æ ß	   H`~…Â. ò   7ªl†H*  Vò  ª æ  æ ß	   l¡ ‡ ò ² 
   7ªl†l  |²

  _              ÎN  
 Â€À*  (yÀv    Â€À   ¯”L  ©ª%@  ©ªp@  *  D©b@  G©Õ@  G©]\@  J©$@  i©{@  *  4ªu:@  («$@  U«Yf@  «¯@  «&@  *  «•@  «E`@  «)x@  ¹«Ù@  ¹«Ì@  *  Ã«)#@  Ã«1#@  Ã«;#@  C¬µ	@      (  "  
­WTì" K©@`|òG©øfhL ¯”   
   
­WT          («$               D©b         G©]\           i©{         J©$ K©@`  *        $ÿ$6ÿ
8ÿ
8ÿ     
 *  & 	ÿ 	Zÿ""@*  L ó‹ ß	  ‡ß	  ‡ß	  òU  ô5 Ú òE  ©ª%¹«Ù©ªp*  r   Áœ" rœD  AœH q v ß	  30 … ðU    D H v Ã«1#*  ˜ f¦æ …ß	  Æe …—,  t5ò•  òÕ  «E`*  ¾   ó5   ò•  ó5	    
Á$ 3r& À*  ä 2`. À  òe  ò•  òÅ  ò•   f¦æ*  
 …ß	  Æe …—,  >¦ ß	    œ      80  
«• Ã«;#$œ&8(0*  0ó5   (ß	  ¦ ¦ æ ß	  … & ß	    ¹«ÌU«Yf(Ã«;#*  V  ^^^f¦æ …ß	  Æe …ß	  & &  ^^
^«¯"¹«Ì*  | æ ß	  … ß	  00ß	  À ß	  … f&æ  U«YfÃ«)#C¬µ	  G©Õ*  ¢ …ß	  Æe …,  Ëß	  00³  ³   
«&Ã«)#*  È ó5   ß	  ß	  À1 ß	  Âœ" Â€  ß	  4ªu:C¬µ	1 G©Õ&    î  …   G©Õ       ~N  
 ÂXÀ*  DwÀv    ÂXÀ   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "            (  K© |ˆ ;©øMh  ¯”   
   K©   *    ß	  00ß	  ò  ò  2
 òW  ô5 Ú   Ã«)#¹«Ì*  & òG  f¦æ …ß	  Æe …—,  ¦  «¯*  L  ß	   l Z Z ¦ ¦ æ ß	  ß	  3
   Ã«;#l Z Z  U«Yf&B¬òy  r  ô5 Ú Á ñ•:   …        N  
 ÂXÀ*  •y¸y    ÂXÀ   ¯”L  D©b@  G©]\@  *  i©{@  Ý©Ý@  («$@  U«Yf@  «œ,@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì* J©K"|r J©K"h  ¯”   
   
­WT          («$               D©b         G©]\           i©{ (   (     Ý©Ý J©K"  *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«œ,*  & ß	   2 ^ H ×¬"  Á ñ•  _   Á   Ã«;#
2 ^ H $‰¬¼^*  L ñ•  =Ú  _   & & æ ß	  _     ‰¬ò`$U«Yf(‰¬¼^       NN  
 Â€À*  jz¸y    Â€À   ¯”L  D©b@  G©]\@  *  N©/w@  i©{@  ©ªX@  («$@  U«Yf@  *  U«Ý@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTì2 O©‹s|ð  O©‹sh  ¯”   
         
­WT          («$         D©b         G©]\           i©{ 0   0     U«Ý O©‹s  *    ß	  00ó5	   )p f&æ …ß	  Æe …  Ã«)#"«\g*  & ,  & ß	   > H> _   &&æCÀœ  Ã«;#> H> ‰¬¼^*  L  ø	  Áƒ„€Á[fÁ ô5 Ú ô5   N©/w*  r Ú {ô5  Ú âAJô5 Ú *ß	   â•
   ©ªX*  ˜ Ž
° ‚cÊ• Ž
° f&æ …ß	  Æe …  "«\g*  ¾ ,  ?p ô5 Ú Kô5 Ú G_    ‚c  "‰¬ò`*  ä Ò• Ž
Ê•
 Ž
° f&æ …ß	  Æe …,         «\g*  
  ß	  Ú ‚cÊ• Ž
° f&æ …  ©ªX*  0ß	  Æe …,  p & ß	   XX  «\g"Ã«;#&X(X*  VX& & æ ß	  _   ó5   ‡ô5 Ú    XU«Yf‰¬¼^*  | â• Ž
° ‚cÊ• Ž
° f&æ …*  ¢ß	  Æe …,  Èp _    ‚cÒ• Ž
  «\g‰¬¼^*  ÈÊ• Ž
° f&æ …ß	  Æe …,  ½  «\g  î¬       æN  
 ÂXÀ*  §y¸y    ÂXÀ   ¯”L  D©b@  G©]\@  *  i©{@  («$@  U«Yf@  «)x@  «Ä…@  *  Ã«)#@  Ã«;#@  ¬Ý@  ‰¬¼^@            (  "  
­WTì: J©Ë’|X J©Ë’h  ¯”   
   
­WT          («$         D©b         G©]\           i©{ 8   8     ¬Ý J©Ë’  *    ß	  00p f&æ …ß	  Æe …,    Ã«)#«Ä…*  & & ß	   6 D 6 Á ñ•6  _   & &   
Ã«;#6 D 6  ‰¬¼^  L æ ß	  _     
U«Yf‰¬¼^       ÄN  
 ÂXÀ*  èr€p    ÂXÀ   ¯”L  ©ª%@  ©ªp@  *  D©Åb@  G©Õ@  G©…\@  J©E$@  i©Å{@  *  («E$@  U«Yf@  «¯@  «&@  «•@  *  «E`@  «)x@  ¹«      Ù@  ¹«Ì@  Ã«)#@  *  Ã«1#@  Ã«;#@  C¬µ	@      (  
­WTì$ *  J©@`|ÒG©Ôfh† G©âfht G©ãfhb ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 
   
     J©E$ J©@`  *        # & / 2 9 F ,4ÿ,466ÿ0ÿ.ÿ&      
# & / 2 9 F *  & .2"ÿ2ÿ.,4ÿ.,24"ÿ2ÿ *  L 	Zÿ<ß	˜ ‡Â€  ß	    ˜ $  (G©Õ*  r … ß	˜ ‡Â€ ß	  … ß	˜ ‡Â€ ß	  …   ˜  G©Õ˜ " &G©Õ*  ˜       ó‹ ß	  ‡ß	  ‡ß	  Áœ" rœ\  Aœ_ q   ©ª%¹«Ù©ªp \ &_ *  ¾ ® ß	  30 ± ‡ f¦æ …ß	  Æe …—,   ® Ã«1#«E`*  ä  Qò•  ò•  ó5   ò•  òœ, 1 *  
f¦æ …ß	  Æe …—,  2¦ ß	      «•&Ã«;#*  0Š66ß	  ¦ ¦ æ ß	  ± ‡ & ß	     Š66¹«ÌU«Yf(Ã«;#*  V  ^^^f¦æ …ß	  Æe …ß	  & &  ^^
^«¯"¹«Ì*  | æ ß	  ± ‡ f&æ …ß	  Æe …,   U«Yf«&*  ¢ Ôð•  ³  ³  ß	  ÀI ß	  ß	    C¬µ	 I $G©Õ(      Ã«)#  È00Âœ" ¡ ‡        jN  
 ÂXÀ*  q€p    ÂXÀ   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "      (  J© |t ;©ÐMh  ¯”   
   J©   *    ß	  00ß	  ò  ò  2
 f¦æ …ß	  Ã«)#¹«Ì*  &   Æe …—,  ¦ ß	   F b F ß	  3
   «¯Ã«;#F  b "F &B¬òy*  L  ô5 Ú Á ñ•:   … ¦ ¦ æ ß	    (U«Yf  r …        BN  
 ÂXÀ*  Usxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  Ý©‚@  («E$@  U«Yf@  U«Ñ~@  *  «œ,@  «)x@        Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì, J©#"|Š J©#"h  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ *   *     Ý©‚ J©#"  *    ß	  00ð•   f&æ …ß	  Æe …,    Ã«)#«œ,*  & & ß	   8 v ` ß	  ×¬"  ×<      Ã«;#8 v ` U«Ñ~*  L Á ñ•  ñ•   _   Á ñ•  =Ú    ‰¬¼^  r _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       rN  
 ÂXÀ*  UsPs    ÂXÀ   ¯”L  D©Åb@  G©…\@        *  i©Å{@  ¹©…\@  Ý©Ñ~@  Ý©‚@  («E$@  *  U«Yf@  «ö&@  «œ,@  «)x@  Ã«)#@  *  Ã«;#@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   J©""|Ž J©""h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ *   *     Ý©‚ J©""  *    ß	  00ð•  ß	  f&æ …ß	  Æe …,  Ã«)#Ý©Ñ~ «ö&*  &   f&æ …ß	  Æe …,  ×<    «œ,*  L   Á ñ•,  _   & ß	   H z n =Ú   ‰¬¼^Ã«;# H "z $n    r        _   & & æ ß	  _     
‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  *txs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  («E$@  U«Yf@  U«Ñ~@  U«‚@  *  «\g@  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì4 O©cs|d O©csh  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 2   2     U«‚ O©cs  *    ß	  00ð•   p f&æ …ß	  Æe …,  Ã«)# «\g*  &   & ß	   < P D ß	  _   =Ú     Ã«;#< P       D U«Ñ~ ‰¬¼^  L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  *tPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  Ý©Ñ~@  («E$@  U«Yf@  U«‚@  *  «\g@  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì4 O©bs|d O©bsh  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 2   2     U«‚ O©bs  *    ß	  00p ð•  ß	  f&æ …ß	  Æe   Ã«)#Ý©Ñ~$«\g*  & …,  & ß	   @ P D _   =      Ú    Ã«;#@ P D  ‰¬¼^  L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  gsxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  («E$@  U«Yf@  «)x@  «Ä…@  *  Ã«)#@  Ã«;#@  ¬@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì< J©£’|j J©£’h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ :   :     ¬ J©£’  *    ß	  00p f&æ …ß	  Æe …,    Ã«)#«Ä…*  & & ß	   6 V J Á ñ•6  ñ•6        _   =  
Ã«;#6 V J &‰¬¼^"  L Ú  _   & & æ ß	  _     ‰¬ò`U«Yf ‰¬¼^       dN  
 ÂXÀ*  gsPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  ¹©…\@  Ý©Ñ~@  («E$@  U«Yf@  *  «ö&@  «)x@  «Ä…@  Ã«)#@  Ã«;#@  *  ¬@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   J©¢’|€ J©¢’h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ :   :     ¬ J©¢’  *    ß	  00p ð•  ß	  f&æ …ß	  Æe         Ã«)#Ý©Ñ~$«ö&*  & …,  f&æ …ß	  Æe …,    «Ä…*  L _   & ß	   ` l ` =Ú  _   & &   ‰¬¼^Ã«;#` l ` "‰¬ò`  r  æ ß	  _     U«Yf‰¬¼^       ðN  
 ÂXÀ*  %qxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  e©P@  i©Å{@  («E$@  U«Yf@  «Ô@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTìD <©#"|Z <©#"h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ B   B     e©P       <©#"  *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«Ô*  & ß	   2 F F Á ñ•6  ñ•6  _   & &  Ã«;#
2 F F "‰¬¼^  L  æ ß	  _     U«Yf‰¬¼^       `N  
 ÂXÀ*  %qPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  e©P@  i©Å{@  ¹©…\@  Ý©Ñ~@  («E$@  *  U«Yf@  «Ô@  «ö&@  «)x@  Ã«)#@  *  Ã«;#@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   <©""|| <©""h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J           ¹©…\ B   B     e©P <©""  *    ß	  00ð•  ß	  f&æ …ß	  Æe …,  Ã«)#Ý©Ñ~ «ö&*  &   f&æ …ß	  Æe …,  _     «Ô(‰¬¼^*  L & ß	   \ h \ =Ú  _   & & æ  
Ã«;#\ h \ ‰¬ò`  r  ß	  _     U«Yf‰¬¼^       ŠN  
 Â¨À*  Œs€p    Â¨À   ¯”L  D©Åb@  G©…\@  *  i©Å{@  ¹©…\@  Ý©Ñ~@  7ªl†@  («E$@  *  U«Yf@  «ö&@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@  “¬’@      (  
­WTìL   K©Ð|¨ K©Ðh  ¯”   
   
­WT              («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ K©Ð  *    ß	  00ð•  ô5 Ú æ/ ß	     ô|ª   Ã«)#7ªl†"  *  & _   ß	  f&æ …ß	  Æe …0
 ,    “¬’
Ý©Ñ~«ö&*  L & ß	  
 ^ ” ˆ Á ñ•,  ×¬"  
×<  Ã«;#^ ” ˆ *  r    `ñ•6  ñ•6  _   =Ú  _   &   ‰¬¼^$‰¬ò`  ˜ & æ ß	  _     U«Yf‰¬¼^       FN  
 Â€À*  ¨:@8    Â€À   ¯”L  ©ª%@  ©ªp@  *  D©íb@  G©Õ@  G©­\@  J©m$@        i©í{@  *  («m$@  U«Yf@  «¯@  «&@  «•@  *  «E`@  «)x@  ¹«Ù@  ¹«Ì@  Ã«)#@  *  Ã«1#@  Ã«;#@  C¬µ	@      (  
­WTì& *  A©@`|ªG©lehÀ G©zeh® G©{ehœ ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{         J©m$ A©@`  *        # & / 2 9 F BJÿBJ66ÿFÿDÿ&      
# & / 2 9 F *  & DHNRÿHÿDBJÿDBHJNRÿHÿ   L T	Zÿ    ` *  ` 8                                            †        e   e     ’   ’      –   –      •   •  «   ”   ”      Š   Š            ˜   ˜ <   œ *  œ ß	Ò ‡Â€  ß	  … ß	Ò ‡Â€ ß	  … ß	  Ò   G©ÕÒ   $G©Õ*  Â Ò ‡Â€ ß	  … ó‹ ó‹- ß	  ‡ß	    Ò  G©Õ"©ª%(¹«Ù*  è ‡ß	  Áœ" rœ\  Aœ˜ q î ß	  30 ± ‡ f  ©ªp\ ˜ î Ã«1#*  ¦æ …ß	  Æe …—,  S ß	*ò•     «E`"**  4òœ, 1 ò•  ó5   ò•  f¦æ …ß	*  Z  Æe …—,  2¦ ß	    Îzzß	        ¦   «•Ã«;#Î z"z&¹«Ì*  € ¦ æ ß	  ± ‡ & ß	    ¢¢¢f¦  U«YfÃ«;# ¢"¢$¢*  ¦æ …ß	  Æe …ß	  & & æ ß	  ±   «¯¹«Ì&U«Yf*  Ì‡ f&æ …ß	  Æe …,  ÔÁ pœ   «&*  ò 0Š A  Ál p ³  ³  ß	  ÀI   $C¬µ	(I *  ß	  ß	  00Âœ" ¡ ‡ &f&f
 
@ A  G©Õ
Ã«)#*  > Ä &f¦À8 Â` ‘”~‚€År   ` *  dp É• 1   1 " ñ•   ÅñÕ  $  Šq‘ @…
Áe8 Äe s¡- Ò‡…„€‡        jN  
 Â€À*  Ä8@8          Â€À   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "      (  A© |t ;©hLh  ¯”   
   A©   *    ß	  00ß	  ò  ò  2
 f¦æ …ß	  Ã«)#¹«Ì*  &   Æe …—,  ¦ ß	   F b b ß	  3
   «¯Ã«;#F  b "b &B¬òy*  L  ô5 Ú Á ñ•:   … ¦ ¦ æ ß	    (U«Yf  r …        4N  
 Â€À*  ;8;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  Ý©-‚@  («m$@  U«Yf@  «œ,@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì. J©» |Ž       J©» h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ ,   ,     Ý©-‚ J©»   *    ß	  00ð•   f&æ …ß	  Æe …ÁÁe.   Ã«)#«œ,*  & 
   ,  & ß	   J z n ×¬  Ã«;#"J $z &n *  L "  ×<    Á ñ•L  ñ•P  _   =Ú   $‰¬¼^   r  _   & & æ ß	  _     
‰¬ò`U«Yf‰¬¼^       ŠN  
 Â€À*  ;;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  Ý©-‚@  («m$@  U«Yf@  *  «ö&@  «œ,@        «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN J©º |ª   J©º h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ ,   ,     Ý©-‚ J©º   *    ß	  00ð•  Ap Wp Ál pœ  A  Ál  Ã«)#*  &  p f&æ …ß	  Æe …,  f&  «ö&*  L æ …ß	  Æe …,  ×<    Á ñ•  «œ,*  r B  _   & ß	  & d – Š =Ú  _   &   
‰¬¼^Ã«;#d – Š &‰¬ò`  ˜  & æ ß	  _     U«      Yf‰¬¼^       2N  
 Â€À*  ê;8;    Â€À   ¯”L  D©íb@  G©­\@  *  O©5q@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  U«-‚@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN O©ûq|f   O©ûqh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ 4   4     U«-‚ L   L     ¹©­\ O©ûq  *    ß	  00ß	  ‡ð•   p f&æ …ß	  Æe  Ã«)#O©5q&«\g*  &  …,  _   & ß	    2 R F =Ú    ‰¬¼^Ã«;#2  R       "F   L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       2N  
 Â€À*  ê;;    Â€À   ¯”L  D©íb@  G©­\@  *  O©5q@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  U«-‚@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN O©úq|f   O©úqh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ 4   4     U«-‚ L   L     ¹©­\ O©úq  *    ß	  00ß	  ‡ð•  p f&æ …ß	  Æe  Ã«)#O©5q&«\g*  &  …,        _   & ß	  ( 2 R F =Ú    ‰¬¼^Ã«;#2  R "F   L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       èN  
 Â€À*  å88;    Â€À   ¯”L  D©íb@  G©­\@  *  e©-P@  i©í{@  («m$@  U«Yf@  «Ô@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@      (  "  
­WTìF <©» |Z <©» h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ D   D     e©-P <©»   *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«Ô*  & ß	  " 2 F F Á ñ•      6  ñ•6  _   & &  Ã«;#
2 F F "‰¬¼^  L  æ ß	  _     U«Yf‰¬¼^       ’N  
 Â€À*  å8;    Â€À   ¯”L  D©íb@  G©­\@  *  e©-P@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «Ô@  «ö&@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN <©º |¶   <©º h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ D   D     e©-P <©º   *    ß	  004 Þ 4œ á 4œ à Á  Bl  °  Ã«)#*        &  pœ  0Š ð•  f&æ …ß	  Æe …  "«ö&*  L 0Þ  0á  0à  ,  f&æ …ß	*  r   Æe …,  _   & ß	  * ‚ ¢ – =   «Ô‰¬¼^Ã«;#"‚ $¢ &– "  ˜ Ú  _   & & æ ß	  _     ‰¬ò`U«Yf ‰¬¼^       <N  
 Â¨À*  ';8;    Â¨À   ¯”L  D©íb@  G©­\@  *  J©s@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «)x@  «Ä…@  Ã«)#@  Ã«;#@  ¬-@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN J©;‘|p   J©;‘h  ¯”   
   
­WT        («m$         D©íb               G©­\ $   $     i©í{ <   <     ¬- L   L     ¹©­\ J©;‘  *    ß	  00ß	  ‡p f&æ …ß	  Æe …,  Ã«)#J©s «Ä…*  &   
Á ñ•6  ñ•6  _   & ß	  $ ,   ‰¬¼^$Ã«;#(, (  L \ P =Ú  _   & & æ ß	  _     \ P ‰¬ò`"U«Yf&‰¬¼^       ÜN  
 Â€À*  ';;    Â€À   ¯”L  D©íb@  G©­\@  *  J©r@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «ö&@  «)x@  «Ä…@  Ã«)#@  Ã«;#@  *  ¬-@  ‰¬¼^@  ‰¬ò`@      (  
­WTìN   J©:‘|ä J©:‘h  ¯”         
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ <   <     ¬- J©:‘  *    ß	  004 Þ 4œ á 4œ à ð•  Á    Ã«)#*  & Bl  ° pœ  0Š f&æ …ß	  Æe …  "«ö&*  L ,  !0Þ  0á  0à  & ß	  , à   $Ã«;#(à *  r ‚ v =Ú  _   & & æ ß	  _   Á  ‚ v ‰¬ò`"U«Yf&‰¬¼^*  ˜ Áe. 
   ß	  0Þ  0á  0à    J©r*  ¾ Ó‡p f&æ …ß	  Æe …,  Ã_     «Ä…(‰¬¼^             ~N  
 Â¨À*  L;@8    Â¨À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  U«Yf@  «ö&@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTìN K©{~|È K©{~h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ K©{~  *    ß	  00ð•  ô5 Ú 
ð  ô5 Ú ð   Ã«)#*  &  Ap B° Wp Ál  Bl  ° f&*  L æ …ß	  Æe …0
 pœ  ,  &   «ö&*  r ß	   ~ ´ ¨ Á ñ•B  ×¬"        
×<   `  Ã«;#
~ ´ ¨ *  ˜ ñ•6  ñ•6  _   =Ú  _   & & æ  ‰¬¼^‰¬ò`  ¾  ß	  _     U«Yf‰¬¼^       ’N  
 Â€À*  ';à8    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN J©s|&J©sh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ J©s  *    Á ñµ  j4 Þ 4œ á 4œ à ô Ü Áe*  &  ð•  ñµ  & Bl  ° pœ  Ü *  L ° f&æ       …ß	  Æe …,  ß	  «ö&&*  r ðàý <ð%@ú 8´
Ü Áe 3­Ü - Î‡Á *  ˜  Bl  ° pœ  0Š f&æ …ß	  Æe   $«ö&*  ¾ …,  ß	0Þ  0á  0à  ¡ ‡   *  ä ð%@ú ðÐþ 0Þ  0á  0à  ± ‡ &   
æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡        8N  
 Â€À*  ';ˆ;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN J©r|Ü J©rh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $           i©í{ L   L     ¹©­\ J©r  *    Á ñµ  Uô Ü Áe ð•  ñµ  &*  &  Bl  ° pœ  Ü ° f&æ …ß	    («ö&*  L Æe …,  ß	¾ ðàý )ð%@ú %´
  ¾ *  r Ü Áe 3­Ü - Î‡Á  Bl  ° pœ  0Š*  ˜  f&æ …ß	  Æe …,  ¡ ‡ ± ‡   «ö&"  ¾ &æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡        üN  
 Â€À*  ê;H    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN O©5q|¸ O©5qh  ¯”   
   
­WT        («      m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ O©5q  *    Á ñµ  I4 Þ 4œ á 4œ à ô Ü Áe*  &  ð•  ñµ  # Bl  ° pœ  Ü *  L ° f&æ …ß	  Æe …,  ðàý   «ö&*  r ð%@ú ´
Ü Áe 3­Ü - Ñ‡0Þ  0á  $  ˜ 0à  ¡ ‡ 0Þ  0á  0à  ± ‡        Î
N  
 PŽn´*  *yø    PŽn´   ¯”L  ‘«[K@  ’«,@  *  “«kM@  •«Ã^@  •«Ë`@  –«;@  «™q@  *   «1@  ¢«€@  ¢«l@  ¢«á"@  ¢«[}@  *  £«¶@  §«À@  §«üq@      (        *yø,ð*  t!Àvh^Rˆ,hTq8"h€\q°rhš‡s sh  *  ¼«´;hš½«Ö%h¾Ã«,:hlÅ«4…h¶Ç«6fh¸  Ì«ßghªÏ«	Fhœ¯”   
   *yø  *    ÃŒS“Á U%À	 Ó/€
D„
„Ä  Œ*  & '€
K‹
K@"Äd€
BB0Ò“B‚
B@AÁE *  L `fSÐÄe …!ÿ?€
K×" €
×"*  r 
 z×¯  @÷  7  ×¯þ @÷  ’«,’«,*  ˜   7  ×¯ê	 @÷  7  ×¯Ö
 w  £«¶
£«¶ «1 «1*  ¾    Àe ·ð`÷	  ÀÀ
À
ÀËÓÐ  –«;‘«[K*  ä €ÅÆÕ À
ü
W!îüÓ$Ó$
“      ‹Å
  
Æî*  
 SaDa€€àŽæ
÷	zƒ‚ÀE €æ*  0÷	‚ƒAa‹S`á…`@aB`Î5 a a¦¢b*  V""
Î
ó



·
( 
Æ ÅÄ= *  |€‡ ÂŒR’U% 
D	7!fÀ Î5   
Œ*  ¢Àe áæ&„
„6 Ê% ØÂîÃò	·
*  Èè÷	:ÄÔ÷	  ‘ÀºÅ°Å
ý…€  §«üq*  îÅ
ý÷	D÷	V·®÷²w bÿÁŒQ‘ 
   Œ*  É% 7
ÐÂŒÃ÷ŽÃ
Ãÿÿ÷	Ã*  :ú÷v·j·
Jw ÿw z÷	´ÄN÷	  Ã  &§«üq*  `ÿÿ÷	ìÃ%ÿÿò÷	`·
Ä,÷	  Äå û÷	    •«Ã^(«™q*        †ÄÅ  ÷	  Äå ù&
Ä4mÆÚmÚÄå   
¢«€¢«á"Æ Ú$Ú*  ¬øÄø7òÅ  ÷	  ÃæÓÃå óÚú  §«À¢«á"&Ú*  ÒæÄÐ÷	  Å  ÷	  „7¾Å  ÷	  Ä´7
   •«Ã^¢«€¢«á"§«À"¢«á"*  øÂ7!ªôÆô
Æô
ÚÎ
·
¨÷	ªÉ5 À  ÆÆÚ*  Äå ê÷-’tÄv´
Ú´
ÆÛÀ ÉE
  ÚÆ*  DÀ B·#T·
>7
Z·
Vw 
þ÷	à&Ä>*  j÷	  „÷	PÉ5 ÀóÉã€Î
ô
Ú·
4÷-0è  §«üqÚ*  ÷	<Ž
w &ÿÁŒQ‘ 
÷% æU%ffõ¥  Œ*  ¶ øÿwÎ5 À Àe w       šý÷â÷Ú*  Ü6ÂÌ¦Ãÿÿ÷	f·¼÷À÷¶Ä¦*  ÷	¾É5 ÀÉš€·
¨÷-¤†÷	$7„7
Š*  (ƒ@ÁmdÃˆSÀå ü7
j‰À *  N÷œ½Àÿÿ÷
’¸ÂŒÀ R’Ê¯

÷  Œ*  tB÷	  ÷ ÷	  w àü$Å$Å
ü‡   
“«kM¢«[}*  šæ  
ÀCB ‡Bà€
Î
÷Ö‡ &
 
†*  À€cCÁÎøÖ‡ ¦æÁÀÄÌ÷	  ´
Ú÷%  À"§«üq&Ú*  æ ¨)ô
Æ÷	  × ÿÿ"Á¤CÄå Ä	!ú  Æ•«Ë`¤*  7˜ôÆÉå ÉBÀ„Ú 0ÆÀå   
ÆÚ$Æ*  2ùÂå Â‰ƒ‚‡ Ã$       ÓÂ
À  7 *  X‹
„‡ À w ü°nÿÿ  ÿÿÿÿ  ÿÿÿÿ  
  °n*  ~ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿ&  ¤ÿÿ  ÿÿÿÿ  ÿÿtz€†Œ’˜ž¤ª÷	*  tz€†Œ’˜ž ¤"ª*  Æ  É5 ÀffÃ–ÿÓËÂ€÷	¤þ‚ƒõ  ¢«l*  ìÀzÿ7tÿò ‹J2 …‡ ÷ ¨ 
Ã¢ *  ƒ
÷œ ÷	²þ÷’ ÷Œ 	Åh …
Áˆ €Å
*  8ý‡ ÷r Át €÷	>þ†ƒ
‡ „úÿ-øÿ‚‡*  ^þÿ€÷	"þ
ƒ&þÿ´þÿ‚øÿôøÿƒ7!. *  „üÿæ‡                                  ª                     @ €Ä  
        Ä î  î         ŠN  
 PŽ%´*  7x›r    PŽ%´   ¯”L  ô¨úW@  D©b@  *  G©]\@  J©$@  i©{@  («$@  «¯@  *  «&@  «•@  «#@  «v:@  «Iq@  *  «)x@  «™’@  ¢«€H@¤«úW@  §«ÀH *  ¼«´;@  ½«Ö%@  Ã«,:@  Å«4…@  Ç«6f@  *  Ì«ßg@      (  7x›r,˜‘«[Khf’«,hˆ*  “«kMh² •«Ã^hT•«Ë`h"–«;h†«VKh„*  «™qhF «1hŽ¢«lhb ¢«á"hÔ ¢«[}h¼*  £«1h’£«¶hŠ£«çhŒ£«1h*£«Ch-"  §«üqh  ¨«qh–
­WTì" ¯”   
   7x›r  *    ¦æ÷  ÷	šô@      ÷	Â@,BÂm  
Ç«6f@ $,*  & Bƒ 
‚B ý‡ƒ ‡÷	ÊC ý‡÷	ºÁí  *  L Âíƒ õ‚ê´ƒ‚‡ ¦æ,C    $,*  r ÷	þBÂmêƒ ƒ ÈPC ý‡÷	âÁíÄÂí
  
È*  ˜ Àƒ õ‚PB ý‡È´ƒ‚‡ Ä  À Åp  È Ì«ßg$ (p*  ¾ 0  ÷	  Äå ø7
  ‡ Äô Ü4
Þ„W!   «¯Ç«6f Ü$Þ*  ä  æÃnÅ3tt,ô,,"  ",&,(,*  
s,sƒ4,7<‡ íw!<‡  ,
,"*  0ÅEÿ      táÅe ÷	ÈÄôå Ü´Þ„´
@‡ Á  
ÜÞ$@*  V  ÷	¤þ÷	Âÿ4
@‡ ÷	  w(Ëi&7ò&f  ½«Ö%@«v:*  |Àd ÁàÁEÿÁ wÀw¸Á Áw*  ¢¶w®B`€e…
à ‚„
!ù! À*  È w   æÂí„¦À0 ÷	  `wzÀ0   Ã«,:Å«4…*  î÷	  À  ÷	  ‚`w`À  ÷	  À   ¤«úWÅ«4…"¤«úW*  ÷	  ‚·@`wBÀ ÷	  ‚·,·àÂm  Å«4…¤«úW*  :·ìƒ„‡ Â  „&ÁÂå €ƒtÈÁ`  Ì«ßg&È*  `Äå ú@àDÁAn
÷	  7ÚÀÀ 7Ô  n¼«´;*        †„t`t,Äå øwzwôEàÅEÿwª
  
,*  ¬Aawz…Å wš‡ À0 Á ÷	  À  Á–÷	  ô¨úW*  Ò  À ÁŒ÷	  7 z&À Áx÷	  À   ô¨úWô¨úW$ô¨úW*  øÁl‚÷	  ‡ ÅN&f¦ÀPð  0´   ¤«úWP&´*  p Â°Ü& °Þ( …Å raÜrÞ0   ÜÞÜ"Þ&*  Dð   ±,Þ ‚±,Ü  ƒÀ Åpð(    ÞÜ  $p*  j
 ð$ p ÷	  ð ÀPÅl÷	  ð   «#P l$«™’*  ‚€‡    w   f¦&÷•0 F÷  Ã«,:*  ¶Î¨Ä  V      ÂTÁdÀ ÷¼ðU€  °   
Ì«ßg *  Üðz ð  ðž ðœ
 ð˜ À Åp
  $ (p*  ð\3 ÷	  ð Ä4  ·
  ÀPÅl÷	     «• Ç«6f P$l(«&*  (ð w hÿ4 ´´´t,Äô Ü4
  ´,&Ü*  NÞ„4
@·
·Šœ Äå Ë„‚‡ À w     Þ
@(Ã«,:*  tÅâ&ÀP0´ p Ä0Ü& 0Þ( …Å   P´Ü"Þ*  štaÜtÞ„ð  ð  0 Ål÷	  ð  Ü
Þ "l&«Iq*  À 	ð%°ý ð w Äþ€‡ Å ÷	–ÿÄôå(  æ Ü´Þ„4
@‡ SO      RT0D.TMPP          Ü
Þ@   #@                      

  
         &  &  ö  
       
  ö P%  PP                                  r  r       
    T*  T                        P  Ôw	 
  P" "  zyæK¨             @     
   
­WT          («$         D©b         G©]\           i©{         J©$    Ü
Þ "l&«Iq*  À 	ð%°ý ð w Äþ€‡ Å ÷	–ÿÄôå(  æ Ü´Þ„4
@‡ SO          ƒ:Ì@@›         		

!
!	INDIRECT PDS COMMAND FILE TO INSTALL COBOL
!	ON AN IAS SYSTEM.  YOU MUST BE PRIVILEGED
!	TO EXECUTE THIS INDIRECT FILE.
!
!	THE ABSENCE OF RMS-11 WILL PREVENT THE TASK
!	BUILDER FROM RUNNING COBOL V4.0 PROGRAMS.
!
!
!
ON WARNING CONTINUE
DELETE [1,1]COBLIB.OLB;*
DELETE [1,1]COBOVR.OLB;*
DELETE [11,45]CBLLIB.OLB;*,[11,45]CBLBLD.CMD;*,[11,45]CBLBLD.ODL;*
DELETE [11,45]CBLMRG.CMD;*,[11,45]REFRMT.CMD;*
DELETE [311,45]CBLMRG.CBL;*,[311,45]REFRMT.CBL;*
DELETE [111,45]CBLMRG.MAP;*,[111,45      ]REFRMT.MAP;*
DELETE [111,45]COBOL.MAP;*

DELETE [1,1]CID.OBJ;*
DELETE [1,1]CIROT0.ODL;*,[1,1]CIROT3.ODL;*,[1,1]CIO017.ODL;*
DELETE [1,1]CIO027.ODL;*,[1,1]CIO037.ODL;*,[1,1]CIO047.ODL;*
DELETE [1,1]CIO057.ODL;*,[1,1]CIO067.ODL;*,[1,1]CIO077.ODL;*
DELETE [1,1]RMS11S.ODL;*,[1,1]RMS11X.ODL;*,[1,1]RMS12X.ODL;*
!
ON WARNING STOP
!	COPY FILES FROM DISTRIBUTION DEVICE
!
COPY IN:[100,110]*.* *.*
COPY IN:[200,100]*.* *.*
!
!	PLACE IN APPROPRIATE AREAS
!
RENAME COBLIB.OLB [1,1]COBLIB.OLB
RENAME COBO      VR.OLB [1,1]COBOVR.OLB
RENAME CBLLIB.OLB [11,45]CBLLIB.OLB
RENAME CBLBLD.ODL [11,45]CBLBLD.ODL
RENAME CBLBLD.CMD [11,45]CBLBLD.CMD
RENAME CBLMRG.CMD [11,45]CBLMRG.CMD
RENAME REFRMT.CMD [11,45]REFRMT.CMD
RENAME CBLMRG.CBL [311,45]CBLMRG.CBL
RENAME REFRMT.CBL [311,45]REFRMT.CBL

RENAME CID.OBJ [1,1]CID.OBJ;1
RENAME RMS11S.ODL [1,1]RMS11S.ODL;1
RENAME RMS11X.ODL [1,1]RMS11X.ODL;1
RENAME RMS12X.ODL [1,1]RMS12X.ODL;1
!
!	PERFORM INSTALLATION
!
LINK @[11,45]CBLBLD.CMD
ON WARNING CONTINUE
REM ...      CBL
ON WARNING STOP
INS [11,1]COBOL.TSK
ON WARNING CONTINUE
COBOL/SWITCHES:(/-ODL)/NOLIST/OBJECT:CBLMRG [311,45]CBLMRG
COBOL/SWITCHES:(/-ODL)/NOLIST/OBJECT:REFRMT [311,45]REFRMT
LINK @[11,45]CBLMRG.CMD
LINK @[11,45]REFRMT.CMD
REM $$$MRG
REM $$$RFM
ON WARNING STOP
INS [11,1]CBLMRG.TSK
INS [11,1]REFRMT.TSK
!
!	CLEAN UP AREAS.   COMMENT OUT DELETIONS IF THESE FILES ARE DESIRED
!
DELETE [311,45]CBLMRG.CBL;*,[311,45]REFRMT.CBL;*
DELETE [111,45]CBLMRG.MAP;*,[111,45]REFRMT.MAP;*
DELETE CBLMRG.OBJ      ;*,REFRMT.OBJ;*
           ¶:XÀ@@›         
IDENTIFICATION DIVISION.
PROGRAM-ID. IO0001.

*  THIS PROGRAM CREATES SEQ FILE PD1101 WHICH CONSISTS
*  OF 100 FIXED LENGTH RECORDS.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT PD1101 ASSIGN TO "SY:"
	RESERVE 2 AREAS
	ACCESS MODE IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD PD1101

	VALUE OF ID IS "PD1101   "
	BLOCK CONTAINS 5 RECORDS

	RECORD CONTAINS 31 CHARACTERS
	LABEL RECORD IS   Œ   STANDARD.
01 OUTREC USAGE DISPLAY-7.
	02 CONS PIC X(26).
	02 VAR PIC 9(5).
WORKING-STORAGE SECTION.
77	CON1 PIC X(26) VALUE "PD1101 TEST RECORD NUMBER ".
77	ROOT PIC 9(5) VALUE 0.

PROCEDURE DIVISION.
BEGIN.	OPEN OUTPUT PD1101.
	MOVE CON1 TO CONS.
	MOVE ROOT TO VAR.
LOOP1.
	ADD 1 TO VAR.
	IF VAR = 101 GO TO OVER.
	WRITE OUTREC.
	GO TO LOOP1.
OVER.	CLOSE PD1101.
	STOP RUN.
 Œ         ¶:€À@@›         
IDENTIFICATION DIVISION.
PROGRAM-ID. IO002.

*  THIS PROGRAM CREATES RELATIVE FILE PD1102 WHICH WILL CONTAIN
*  100 RECORDS.  ONLY ODD NUMBER AREAS WILL BE USED.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.

INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT PD1102 ASSIGN TO "SY:"
	ORGANIZATION IS RELATIVE
	ACCESS MODE IS RANDOM RELATIVE KEY IS RKEY
	FILE STATUS IS FSTA.

DATA DIVISION.
FILE SECTION.
FD  PD1102
	BLOCK CONTAINS 10 RECORDS
      	RECORD CONTAINS 34 CHARACTERS
	LABEL RECORD IS STANDARD
	VALUE OF ID IS "PD1102".
01  OUTREC USAGE DISPLAY.
	02 CONS PIC X(26).
	02 VAR PIC 9(8).

WORKING-STORAGE SECTION.
01 FSTA.
	02 KEY1 PIC X.
	02 KEY2 PIC X.
77  CON1 PIC X(26) VALUE "PD1102 TEST RECORD NUMBER ".
77  RKEY PIC 9(8) COMP  VALUE 0.
77  X PIC 999 VALUE 0.
77  CONT PIC 999 VALUE 0.

PROCEDURE DIVISION.
BEGIN.	OPEN OUTPUT PD1102.
	MOVE CON1 TO CONS.
LOOP1.
	ADD 1 TO CONT.
	IF CONT = 101 GO TO OVER.
	MOVE CONT TO X.
	MU   Ê   LTIPLY 2 BY X.
	SUBTRACT 1 FROM X.
	MOVE X TO VAR.
	MOVE X TO RKEY.
	WRITE OUTREC INVALID KEY GO TO OVER.
	IF KEY1 NOT = "0", DISPLAY KEY1, KEY2.
	GO TO LOOP1.
OVER.
	CLOSE PD1102.
	STOP RUN.
Ê          ¶:¨À@@›         
IDENTIFICATION DIVISION.
PROGRAM-ID. IO003.

*  THIS PROGRAM READS FROM PD1101 SEQUENTIALLY THEN WRITES THE
*  OUTPUT TO A PRINTER. LINAGE CLAUSE IS TESTED IN THIS PROGRAM.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT PD1101 ASSIGN TO "SY:"
	RESERVE 2 AREAS
	FILE STATUS IS FSTA.

	SELECT LPTOUT ASSIGN TO "LP:".

DATA DIVISION.
FILE SECTION.
FD PD1101
	LABEL RECORD IS STANDARD
	VALUE OF ID       IS "PD1101".
01  INREC.
	02 CONS PIC  X(26).
	02 VAR PIC 9(5).

FD LPTOUT
	LABEL RECORDS ARE OMITTED
	LINAGE IS 60 LINES
	LINES AT TOP TLINE
	LINES AT BOTTOM BLINE.
01 OUTREC PIC X(31).

WORKING-STORAGE SECTION.
77	TLINE PIC 99 COMP  VALUE 4.
77	BLINE PIC 99 COMP  VALUE 4.
01	FSTA.
	02 KEY1 PIC X.
	02 KEY2 PIC X.
77	NEWP PIC X(8) VALUE "NEW PAGE".

PROCEDURE DIVISION.
BEGIN.
	OPEN INPUT PD1101.
	OPEN OUTPUT LPTOUT.
LOOP1.
	READ PD1101 RECORD INTO OUTREC, AT END GO TO OVER.
	IF KEY   Ê   1 NOT = "0", DISPLAY FSTA, GO TO OVER.
	WRITE OUTREC AFTER ADVANCING 2 LINES, AT EOP GO TO B1.
	GO TO LOOP1.
B1.
	WRITE OUTREC FROM NEWP.
	GO TO LOOP1.
OVER.
	CLOSE PD1101, LPTOUT.
	STOP RUN.
 Ê          ƒ:ÌA@›         		

!
!	INDIRECT MCR COMMAND FILE TO INSTALL COBOL
!	ON AN IAS SYSTEM.  YOU MUST BE PRIVILEGED
!	TO EXECUTE THIS INDIRECT FILE.
!
!	THE ABSENCE OF RMS-11 WILL PREVENT THE TASK
!	BUILDER FROM RUNNING COBOL V4.0 PROGRAMS.
!
!
!
.ENABLE SUBSTITUTION
UFD LB:[11,45]
UFD LB:[111,45]
UFD LB:[311,45]
.ASKS DEV INPUT DEVICE (E.G. DKN:, MTN:, OR MMN:)
.SETS $SRC DEV
PIP [1,1]COBLIB.OLB;*/DE
PIP [1,1]COBOVR.OLB;*/DE
PIP [11,45]CBLLIB.OLB;*,[11,45]CBLBLD.CMD;*,[11,45]CBLBLD.ODL;*/DE
PIP [11,45]CBLM      RG.CMD;*,[11,45]REFRMT.CMD;*/DE
PIP [311,45]CBLMRG.CBL;*,[311,45]REFRMT.CBL;*/DE
PIP [111,45]CBLMRG.MAP;*,[111,45]REFRMT.MAP;*/DE
PIP [111,45]COBOL.MAP;*/DE

PIP [1,1]CID.OBJ;*/DE
PIP [1,1]CIROT0.ODL;*,[1,1]CIROT3.ODL;*,[1,1]CIO017.ODL;*/DE
PIP [1,1]CIO027.ODL;*,[1,1]CIO037.ODL;*,[1,1]CIO047.ODL;*/DE
PIP [1,1]CIO057.ODL;*,[1,1]CIO067.ODL;*,[1,1]CIO077.ODL;*/DE
PIP [1,1]RMS11S.ODL;*,[1,1]RMS11X.ODL;*,[1,1]RMS12X.ODL;*/DE
!
!	COPY FILES FROM DISTRIBUTION DEVICE
!
PIP *.*='$SRC':[100,120]*.*
PIP       *.*='$SRC':[200,100]*.*
!
!	PLACE IN APPROPRIATE AREAS
!
PIP [1,1]COBLIB.OLB/NV/RE=COBLIB.OLB
PIP [1,1]COBOVR.OLB/NV/RE=COBOVR.OLB
PIP [11,45]CBLLIB.OLB/NV/RE=CBLLIB.OLB
PIP [11,45]CBLBLD.ODL/NV/RE=CBLBLD.ODL
PIP [11,45]CBLBLD.CMD/NV/RE=CBLBLD.CMD
PIP [11,45]CBLMRG.CMD/NV/RE=CBLMRG.CMD
PIP [11,45]REFRMT.CMD/NV/RE=REFRMT.CMD
PIP [311,45]CBLMRG.CBL/NV/RE=CBLMRG.CBL
PIP [311,45]REFRMT.CBL/NV/RE=REFRMT.CBL

PIP [1,1]CID.OBJ;1/NV/RE=CID.OBJ
PIP [1,1]RMS11S.ODL;1/NV/RE=RMS11S.ODL
PIP [1,1]RMS11X.O      DL;1/NV/RE=RMS11X.ODL
PIP [1,1]RMS12X.ODL;1/NV/RE=RMS12X.ODL
!
!	PERFORM INSTALLATION
!
STB @[11,45]CBLBLD.CMD
REM ...CBL
INS [11,1]COBOL.TSK
CBL CBLMRG/-ODL=[311,45]CBLMRG
CBL REFRMT/-ODL=[311,45]REFRMT
TKB @[11,45]CBLMRG.CMD
TKB @[11,45]REFRMT.CMD
REM ...MRG
REM ...RFM
INS [11,1]CBLMRG.TSK
INS [11,1]REFRMT.TSK
!
!	CLEAN UP AREAS.   COMMENT OUT DELETIONS IF THESE FILES ARE DESIRED
!
PIP [311,45]CBLMRG.CBL;*,[311,45]REFRMT.CBL;*/DE
PIP [111,45]CBLMRG.MAP;*,[111,45]REFRMT.MAP;*/DE
PIP CB      LMRG.OBJ;*,REFRMT.OBJ;*/DE
          ¶:XÀA@›         
IDENTIFICATION DIVISION.
PROGRAM-ID. IO0001.

*  THIS PROGRAM CREATES SEQ FILE PD1101 WHICH CONSISTS
*  OF 100 FIXED LENGTH RECORDS.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT PD1101 ASSIGN TO "SY:"
	RESERVE 2 AREAS
	ACCESS MODE IS SEQUENTIAL.

DATA DIVISION.
FILE SECTION.
FD PD1101

	VALUE OF ID IS "PD1101   "
	BLOCK CONTAINS 5 RECORDS

	RECORD CONTAINS 31 CHARACTERS
	LABEL RECORD IS   Œ   STANDARD.
01 OUTREC USAGE DISPLAY-7.
	02 CONS PIC X(26).
	02 VAR PIC 9(5).
WORKING-STORAGE SECTION.
77	CON1 PIC X(26) VALUE "PD1101 TEST RECORD NUMBER ".
77	ROOT PIC 9(5) VALUE 0.

PROCEDURE DIVISION.
BEGIN.	OPEN OUTPUT PD1101.
	MOVE CON1 TO CONS.
	MOVE ROOT TO VAR.
LOOP1.
	ADD 1 TO VAR.
	IF VAR = 101 GO TO OVER.
	WRITE OUTREC.
	GO TO LOOP1.
OVER.	CLOSE PD1101.
	STOP RUN.
 Œ         ¶:€ÀA@›         
IDENTIFICATION DIVISION.
PROGRAM-ID. IO002.

*  THIS PROGRAM CREATES RELATIVE FILE PD1102 WHICH WILL CONTAIN
*  100 RECORDS.  ONLY ODD NUMBER AREAS WILL BE USED.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.

INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT PD1102 ASSIGN TO "SY:"
	ORGANIZATION IS RELATIVE
	ACCESS MODE IS RANDOM RELATIVE KEY IS RKEY
	FILE STATUS IS FSTA.

DATA DIVISION.
FILE SECTION.
FD  PD1102
	BLOCK CONTAINS 10 RECORDS
      	RECORD CONTAINS 34 CHARACTERS
	LABEL RECORD IS STANDARD
	VALUE OF ID IS "PD1102".
01  OUTREC USAGE DISPLAY.
	02 CONS PIC X(26).
	02 VAR PIC 9(8).

WORKING-STORAGE SECTION.
01 FSTA.
	02 KEY1 PIC X.
	02 KEY2 PIC X.
77  CON1 PIC X(26) VALUE "PD1102 TEST RECORD NUMBER ".
77  RKEY PIC 9(8) COMP  VALUE 0.
77  X PIC 999 VALUE 0.
77  CONT PIC 999 VALUE 0.

PROCEDURE DIVISION.
BEGIN.	OPEN OUTPUT PD1102.
	MOVE CON1 TO CONS.
LOOP1.
	ADD 1 TO CONT.
	IF CONT = 101 GO TO OVER.
	MOVE CONT TO X.
	MU   Ê   LTIPLY 2 BY X.
	SUBTRACT 1 FROM X.
	MOVE X TO VAR.
	MOVE X TO RKEY.
	WRITE OUTREC INVALID KEY GO TO OVER.
	IF KEY1 NOT = "0", DISPLAY KEY1, KEY2.
	GO TO LOOP1.
OVER.
	CLOSE PD1102.
	STOP RUN.
Ê          ¶:¨ÀA@›         
IDENTIFICATION DIVISION.
PROGRAM-ID. IO003.

*  THIS PROGRAM READS FROM PD1101 SEQUENTIALLY THEN WRITES THE
*  OUTPUT TO A PRINTER. LINAGE CLAUSE IS TESTED IN THIS PROGRAM.

ENVIRONMENT DIVISION.
CONFIGURATION SECTION.
SOURCE-COMPUTER.  PDP-11.
OBJECT-COMPUTER.  PDP-11.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
	SELECT PD1101 ASSIGN TO "SY:"
	RESERVE 2 AREAS
	FILE STATUS IS FSTA.

	SELECT LPTOUT ASSIGN TO "LP:".

DATA DIVISION.
FILE SECTION.
FD PD1101
	LABEL RECORD IS STANDARD
	VALUE OF ID       IS "PD1101".
01  INREC.
	02 CONS PIC  X(26).
	02 VAR PIC 9(5).

FD LPTOUT
	LABEL RECORDS ARE OMITTED
	LINAGE IS 60 LINES
	LINES AT TOP TLINE
	LINES AT BOTTOM BLINE.
01 OUTREC PIC X(31).

WORKING-STORAGE SECTION.
77	TLINE PIC 99 COMP  VALUE 4.
77	BLINE PIC 99 COMP  VALUE 4.
01	FSTA.
	02 KEY1 PIC X.
	02 KEY2 PIC X.
77	NEWP PIC X(8) VALUE "NEW PAGE".

PROCEDURE DIVISION.
BEGIN.
	OPEN INPUT PD1101.
	OPEN OUTPUT LPTOUT.
LOOP1.
	READ PD1101 RECORD INTO OUTREC, AT END GO TO OVER.
	IF KEY   Ê   1 NOT = "0", DISPLAY FSTA, GO TO OVER.
	WRITE OUTREC AFTER ADVANCING 2 LINES, AT EOP GO TO B1.
	GO TO LOOP1.
B1.
	WRITE OUTREC FROM NEWP.
	GO TO LOOP1.
OVER.
	CLOSE PD1101, LPTOUT.
	STOP RUN.
 Ê          TÌH@›      r   /TASK:[11,1]CBLMRG/MAP:[111,45]CBLMRG/OPTIONS
CBLMRG,[1,1]COBLIB/LIBRARY,[1,1]RMSLIB/LIBRARY
TASK = $$$MRG
/
 r          NqœrÌH@›      r   /TASK:[11,1]REFRMT/MAP:[111,45]REFRMT/OPTIONS
REFRMT,[1,1]COBLIB/LIBRARY,[1,1]RMSLIB/LIBRARY
TASK = $$$RFM
/
 r          dÌH@›         /TASK:[11,1]COBOL/MAP:[111,45]COBOL/OVERLAY:[11,45]CBLBLD.ODL/OPTIONS
TASK = ...CBL		!TASK NAME
UNITS = 14		!NUMBER OF LUNS USED
STACK = 512		!STACK SIZE
!
!THE FOLLOWING COMMAND DEFINES THE INTERNAL STORAGE USED BY THE
!COMPILER (WFBLK) FOR PROCESSING THE SOFTWARE VIRTUAL MEMORY WORKFILE.
!THE MINIMUM VALUE FOR THIS AREA IS:
!
!	     WFBLK:6000 (OCTAL)
!
!THE NET EFFECT OF EXTENDING THE SIZE OF THESE AREAS IS TO SPEED UP THE
!COMPILER. EXTENSION OF THESE AREAS SHOULD BE IN BLOCKS OF 2000 (OCTAL      ).
!THE MINIMUM VALUE OF WFBLK=6000 YIELDS A COBOL WHICH WILL RUN SLOWLY IN
!MINIMUM USER MEMORY.
!
EXTSCT = WFBLK:6000
!
EXTSCT = $$FSR1:6300
!
!CALL PARAMETERS FOLLOW
GBLDEF = CATBSZ:0
GBLDEF = NEWMAG:1		!NEW MAG TAPE ENABLED
GBLDEF = PREFIX:000000		!NULL/NULL
GBLDEF = POSFIX:005015		!CR/LF
GBLDEF = CBLVER:032040		!ASCII " 4"
GBLDEF = CBLEDI:020060		!ASCII "0 "
!GBLDEF	= CBLCOD:20106		!"F " FOR FIELD TEST COMPILERS
GBLDEF	= CBLCOD:20040		!"  " FOR NON-FIELD TEST COMPILERS
GBLDEF = BUFCNT:      1		!1 FOR  SINGLE 2 FOR DOUBLE BUFFERING
GBLDEF = RSTSSW:0		!NON-0 FOR RSTS
!
!NOW WE DEFINE THE DEVICE DEFAULTS FOR THE VARIOUS LUNS USED BY THE
!COMPILER.  NOTE THAT THE IAS VERSION 2 LOGICAL DEVICE NAMES ARE
!USED TO MAKE COMPILATION MORE EFFICIENT ON SYSTEMS WITH DIFFERENT
!DISK TYPES.  LB: = SYSTEM LIBRARY DEVICE.  SP: = SCRATCH DEVICE
!WITH LOTS OF FREE STORAGE.  WK: = HIGH SPEED DEVICE FOR TEMPORARY
!WORK FILES.  ALL OF THE ABOVE DEVICES MAY BE IDENTICAL TO SY:.

!
ASG = TI:1,TI:2,SY:3,SY:      4,SY:5,SY:6,SP:7,SY:8,WK:9,WK:10,SP:11
ASG = SP:12,SP:13,SP:14
!
!LOGICAL UNIT ASSIGNMENTS:
!
GBLDEF = MSGLUN:2	!CONSOLE OUTPUT
GBLDEF = SRCLUN:3	!SOURCE INPUT FILE
GBLDEF = LSTLUN:4	!SOURCE OUTPUT LISTING FILE
GBLDEF = OBJLUN:5	!OBJECT OUTPUT FILE
GBLDEF = ODLLUN:6	!ODL OUPUT FILE
GBLDEF = CRFLUN:7	!CREF SCRATCH FILE
GBLDEF = CPYLUN:10	!COPY LIBRARY INPUT FILE
GBLDEF = WRKLUN:11	!WORK FILE ONE
GBLDEF = WF2LUN:12	!SECOND WORK FILE
GBLDEF = INTLUN:13	!INTERMEDIATE FILE
GBLDEF = FIRLUN:14	!FIRS   ¤  T OF THREE SCRATCH FILES USED BY SORT
GBLDEF = INLUN:0	!NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = MULBUF:0	!NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = OUTLUN:0	!NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = XLUN:0		!NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = TTDEV:44524	!TI FOR RSTS/E
!
!LOGICAL UNITS ARE ASSIGNED TO THE USER COBOL PROGRAM BY THE COBOL
!OBJECT TIME SYSTEM (OTS).
/
¤         dl^H@›         ;CBLBLD.ODL
;
;COBOL-11 VERSION 4A RELEASE 1.0 TASK BUILDING TREE
;
;
	.NAME	ROOT
	.NAME	P0A
	.NAME	P0B
	.NAME	P1
	.NAME	P2
	.NAME	P2A
	.NAME	P2B
	.NAME	P2C
	.NAME	P2D
	.NAME	P4
	.NAME	P4A
	.NAME	P4B
	.NAME	P4C
	.NAME	P4D
	.NAME	P4E
	.NAME	P4F
	.NAME	P4G
	.NAME	P4H
	.NAME	P4I
	.NAME	P4J
	.NAME	P4K
	.NAME	P4L
	.NAME	DP1
	.NAME	DP2
	.NAME	DP3
	.NAME	DP4
	.NAME	DP5
	.NAME 	DP6
	.NAME	DP7
	.NAME	DP8
	.NAME	P3A
	.NAME	P3B
	.NAME	P5A
	.NAME	P5B
	.NAME	P5C
	.NAME	P5D
	.NAME      	P5E
	.NAME	P5F
	.NAME	P6
	.NAME	P7
	.NAME	P124
	.NAME	P5AB
	.NAME	P3AB
	.NAME	P12
;
;
ACOG:	.FCTR	[11,45]CBLLIB/LB:ACOG
AGOP1:	.FCTR	[11,45]CBLLIB/LB:AGOP1
AGOP2:	.FCTR	[11,45]CBLLIB/LB:AGOP2
AGOP3:	.FCTR	[11,45]CBLLIB/LB:AGOP3
AGOP4:	.FCTR	[11,45]CBLLIB/LB:AGOP4
ALTDMP:	.FCTR	[11,45]CBLLIB/LB:ALTDMP 
ARCOG:	.FCTR	[11,45]CBLLIB/LB:ARCOG
ARSYN:	.FCTR	[11,45]CBLLIB/LB:ARSYN
BCOG:	.FCTR	[11,45]CBLLIB/LB:BCOG 
BENT:	.FCTR	[11,45]CBLLIB/LB:BENT 
CALL:	.FCTR	[11,45]CBLLIB/LB:CALL 
CBFIN:	.FC      TR	[11,45]CBLLIB/LB:CBFIN
CBIOT:	.FCTR	[11,45]CBLLIB/LB:CBIOT 
CCNA:	.FCTR	[11,45]CBLLIB/LB:CCNA 
CMND:	.FCTR	[11,45]CBLLIB/LB:CMND
COMMON:	.FCTR	[11,45]CBLLIB/LB:COMMON
COMP:	.FCTR	[11,45]CBLLIB/LB:COMP 
COPE0:	.FCTR   [11,45]CBLLIB/LB:COPE
COPE1:	.FCTR	[11,45]CBLLIB/LB:COPE1
COPE2:	.FCTR	[11,45]CBLLIB/LB:COPE2
CORR:	.FCTR	[11,45]CBLLIB/LB:CORR 
CPDDMP:	.FCTR	[11,45]CBLLIB/LB:CPDDMP 
CREF:	.FCTR	[11,45]CBLLIB/LB:CREF 
CSORT:	.FCTR	[11,45]CBLLIB/LB:CSORT 
DDOP:	.FCTR	[11,45]CBLLIB/LB:DDOP 
VPS      ET:	.FCTR	[11,45]CBLLIB/LB:VPSET 
DBCON:	.FCTR	[11,45]CBLLIB/LB:DBCON 
DMLOAD:	.FCTR	[11,45]CBLLIB/LB:DMLOAD 
ENTDMP:	.FCTR	[11,45]CBLLIB/LB:ENTDMP 
GWRD:	.FCTR	[11,45]CBLLIB/LB:GWRD 
HELP:	.FCTR	[11,45]CBLLIB/LB:HELP 
INSP:	.FCTR	[11,45]CBLLIB/LB:INSP 
IOVB:	.FCTR	[11,45]CBLLIB/LB:IOVB 
LDIN:	.FCTR	[11,45]CBLLIB/LB:LDIN 
LENT:	.FCTR	[11,45]CBLLIB/LB:LENT 
LINK:	.FCTR	[11,45]CBLLIB/LB:LINK 
LLTDMP:	.FCTR	[11,45]CBLLIB/LB:LLTDMP
LNKDMP:	.FCTR	[11,45]CBLLIB/LB:LNKDMP 
LTSC:	.FCTR	[11,45]CBLLIB/LB      :LTSC 
NAMX:	.FCTR	[11,45]CBLLIB/LB:NAMX 
OBJMAP:	.FCTR	[11,45]CBLLIB/LB:OBJMAP 
ODLBLD:	.FCTR	[11,45]CBLLIB/LB:ODLBLD 
OVFL:	.FCTR	[11,45]CBLLIB/LB:OVFL 
PDOP:	.FCTR	[11,45]CBLLIB/LB:PDOP 
PDSR:	.FCTR	[11,45]CBLLIB/LB:PDSR 
PFRF:	.FCTR	[11,45]CBLLIB/LB:PFRF 
PH0A:	.FCTR	[11,45]CBLLIB/LB:PH0A 
PH0B:	.FCTR	[11,45]CBLLIB/LB:PH0B
PHS1:	.FCTR	[11,45]CBLLIB/LB:PHS1 
PHS2:	.FCTR	[11,45]CBLLIB/LB:PHS2
PH2A:	.FCTR	[11,45]CBLLIB/LB:PH2A
PH2B:	.FCTR	[11,45]CBLLIB/LB:PH2B 
PH2C:	.FCTR	[11,45]CBLLIB/LB:PH      2C 
PH2D:	.FCTR	[11,45]CBLLIB/LB:PH2D 
PH3A:	.FCTR	[11,45]CBLLIB/LB:PH3A 
PH3B:	.FCTR	[11,45]CBLLIB/LB:PH3B 
PHS4:	.FCTR	[11,45]CBLLIB/LB:PHS4 
PH5A:	.FCTR	[11,45]CBLLIB/LB:PH5A 
PH5B:	.FCTR	[11,45]CBLLIB/LB:PH5B 
PH5C:	.FCTR	[11,45]CBLLIB/LB:PH5C 
PH5D:	.FCTR	[11,45]CBLLIB/LB:PH5D 
PH5E:	.FCTR	[11,45]CBLLIB/LB:PH5E 
PH5F:	.FCTR	[11,45]CBLLIB/LB:PH5F 
PHS6:	.FCTR	[11,45]CBLLIB/LB:PHS6 
PHS7:	.FCTR	[11,45]CBLLIB/LB:PHS7 
PICTRN:	.FCTR	[11,45]CBLLIB/LB:PICTRN
PQDN:	.FCTR	[11,45]CBLLIB/LB:PQDN 
      PRTDMP:	.FCTR	[11,45]CBLLIB/LB:PRTDMP 
PDUSE:	.FCTR	[11,45]CBLLIB/LB:PDUSE 
PSUTIL:	.FCTR	[11,45]CBLLIB/LB:PSUTIL 
PNTDMP:	.FCTR	[11,45]CBLLIB/LB:PNTDMP 
PTTDMP:	.FCTR	[11,45]CBLLIB/LB:PTTDMP 
QPN:	.FCTR	[11,45]CBLLIB/LB:QPN 
QREF:	.FCTR	[11,45]CBLLIB/LB:QREF 
SAVERR:	.FCTR	[11,45]CBLLIB/LB:SAVERR 
SEARCH:	.FCTR	[11,45]CBLLIB/LB:SEARCH 
SORTS1:	.FCTR	[11,45]CBLLIB/LB:SORTS1 
SORTS2:	.FCTR	[11,45]CBLLIB/LB:SORTS2 
SRCALL:	.FCTR	[11,45]CBLLIB/LB:SRCALL 
SRCH:	.FCTR	[11,45]CBLLIB/LB:SRCH 
SRCSER:	      .FCTR	[11,45]CBLLIB/LB:SRCSER 
STACK:	.FCTR	[11,45]CBLLIB/LB:STACK 
STRG:	.FCTR	[11,45]CBLLIB/LB:STRG 
STTDMP:	.FCTR	[11,45]CBLLIB/LB:STTDMP 
SUBDMP:	.FCTR	[11,45]CBLLIB/LB:SUBDMP 
TSORT:	.FCTR	[11,45]CBLLIB/LB:TSORT 
UNST:	.FCTR	[11,45]CBLLIB/LB:UNST 
UTES:	.FCTR	[11,45]CBLLIB/LB:UTES 
VPAD:	.FCTR	[11,45]CBLLIB/LB:VPAD 
VPIF:	.FCTR	[11,45]CBLLIB/LB:VPIF 
VPNE:	.FCTR	[11,45]CBLLIB/LB:VPNE 
VPST:	.FCTR	[11,45]CBLLIB/LB:VPST 
WFBK:	.FCTR	[11,45]CBLLIB/LB:WFBK 
WFBS:	.FCTR	[11,45]CBLLIB/LB:WFBS 
      WFLO:	.FCTR	[11,45]CBLLIB/LB:WFLO 
WFTO:	.FCTR	[11,45]CBLLIB/LB:WFTO 
WLKT:	.FCTR	[11,45]CBLLIB/LB:WLKT 
WLKTO1:	.FCTR	[11,45]CBLLIB/LB:WLKTO1
WLKTO2:	.FCTR	[11,45]CBLLIB/LB:WLKTO2
OTSNOR:	.FCTR	[11,45]CBLLIB/LB:OTSNOR 
;
;
COPE:	.FCTR	COPE0-(COPE1,COPE2)
COPEL:	.FCTR	COPE0-(COPE1,(COPE2-WFTO))
;
;
S1:	.FCTR	NAMX
S2:	.FCTR	BENT
S3:	.FCTR	LENT
S4:	.FCTR	PFRF-S1-S2
S5:	.FCTR	PQDN-QREF-S3
;
;
X1:	.FCTR	STACK-COPE
X2:	.FCTR	ACOG-WLKT-(WLKTO1,WLKTO2)
X3:	.FCTR	BCOG-WLKT-(WLKTO1,WLKTO2)
;
;      
DP1F:	.FCTR	DP1-PNTDMP-DBCON
DP2F:	.FCTR	DP2-CPDDMP-DBCON
DP3F:	.FCTR	DP3-ENTDMP-DBCON
DP4F:	.FCTR	DP4-PRTDMP-DBCON
DP5F:	.FCTR	DP5-PTTDMP-STTDMP-LLTDMP-DBCON
DP6F:	.FCTR	DP6-SUBDMP-DBCON
DP7F:	.FCTR	DP7-LNKDMP-DBCON
DP8F:	.FCTR	DP8-ALTDMP-DBCON
DUMPF:	.FCTR	DP1F,DP2F,DP3F,DP4F,DP5F,DP6F
DUMPF1:	.FCTR	DP7F,DP8F
;
;
P0AF:	.FCTR	P0A-WFLO-UTES-CSORT-HELP-CMND-PH0A-CBFIN
P0BF:	.FCTR	P0B-PH0B
P1F:	.FCTR	P1-PHS1-S4
P2F:	.FCTR	P2-PHS2-PICTRN-S4
P2AF:	.FCTR	P2A-PH2A-S5
P2BF:	.FCTR	P2B-PH2B
P2CF:      	.FCTR	P2C-PH2C
P2DF:	.FCTR	P2D-PH2D
PH4F:	.FCTR	P4-LTSC-PDSR-PDOP-PHS4-S1-S5-PSUTIL
;P4AF:	.FCTR	P4A-AGOP-STACK-(COPE,X3)
AGOP3F:	.FCTR	AGOP3-(COPE,X3)
AGOP4F:	.FCTR	AGOP4-(COPE,X3)
P4AF:	.FCTR	P4A-STACK-AGOP1-(AGOP2,AGOP3F,AGOP4F)
P4BF:	.FCTR	P4B-IOVB-VPAD-VPST
P4CF:	.FCTR	P4C-COMMON-STACK-(ARCOG,ARSYN,CORR)
P4DF:	.FCTR	P4D-OVFL-STACK-STRG-UNST
P4EF:	.FCTR	P4E-INSP
P4FF:	.FCTR	P4F-VPSET-STACK
P4GF:	.FCTR	P4G-VPIF-(X1,X3)
P4HF:	.FCTR	P4H-VPNE-COMP-STACK-(COPEL,X2)
P4IF:	.FCTR	P4I-SEARCH-(SRCA      LL-(X1,X3),SRCSER-(X1,X3))
P4JF:	.FCTR	P4J-QPN-PDUSE
P4KF:	.FCTR	P4K-STACK-CALL
P4LF:	.FCTR	P4L-OBJMAP
P3AF:	.FCTR	P3A-CSORT-S2-PH3A
P3BF:	.FCTR	P3B-DDOP-PH3B-S3
P5AF:	.FCTR	P5A-UTES-PH5A
P5BF:	.FCTR	P5B-PH5B
P5CF:	.FCTR	P5C-PH5C-OTSNOR
P5DF:	.FCTR	P5D-PH5D
P5EF:	.FCTR	P5E-PDOP-PSUTIL-PH5E
P5FF:	.FCTR	P5F-TSORT-PH5F
P6F:	.FCTR	P6-SRCH-PHS6-TSORT-CBIOT-OTSNOR
P7F:	.FCTR	P7-PHS7-TSORT-ODLBLD
PCREF:	.FCTR	SORTS1-SORTS2-CREF
T2:	.FCTR	P12-UTES-GWRD-DDOP-LTSC-(P1F,P2F-P2AF-P2BF-P2CF-P2DF)
T3:	.FC   r  TR	PH4F-(P4AF,P4BF,P4CF,P4DF,P4EF,P4FF,P4GF,P4HF,P4IF,P4JF,P4KF,P4LF)
T4:	.FCTR	P4-UTES-GWRD-T3
T5:	.FCTR	P5AB-DDOP-(P5AF,P5BF,P5CF,P5DF,P5FF)
T5A:	.FCTR	P5EF
T6:	.FCTR	P3AB-UTES-(P3AF,P3BF)
T7:	.FCTR	PCREF,SAVERR
;
ROOTB:	.FCTR	ROOT-LINK-WFBS
COMPIL:	.FCTR	CCNA-WFBK-(P0AF,P0BF,T2,T4,DUMPF,T6,T5,T5A,DUMPF1,P6F,P7F,T7)
.ROOT	ROOTB-*(COMPIL,DMLOAD)
;
	.END
 r         dl^P@›         ;CBLBLD.ODL
;
;COBOL-11 VERSION 4A RELEASE 1.0 TASK BUILDING TREE
;
;
	.NAME	ROOT
	.NAME	P0A
	.NAME	P0B
	.NAME	P1
	.NAME	P2
	.NAME	P2A
	.NAME	P2B
	.NAME	P2C
	.NAME	P2D
	.NAME	P4
	.NAME	P4A
	.NAME	P4B
	.NAME	P4C
	.NAME	P4D
	.NAME	P4E
	.NAME	P4F
	.NAME	P4G
	.NAME	P4H
	.NAME	P4I
	.NAME	P4J
	.NAME	P4K
	.NAME	P4L
	.NAME	DP1
	.NAME	DP2
	.NAME	DP3
	.NAME	DP4
	.NAME	DP5
	.NAME 	DP6
	.NAME	DP7
	.NAME	DP8
	.NAME	P3A
	.NAME	P3B
	.NAME	P5A
	.NAME	P5B
	.NAME	P5C
	.NAME	P5D
	.NAME      	P5E
	.NAME	P5F
	.NAME	P6
	.NAME	P7
	.NAME	P124
	.NAME	P5AB
	.NAME	P3AB
	.NAME	P12
;
;
ACOG:	.FCTR	[11,45]CBLLIB/LB:ACOG
AGOP1:	.FCTR	[11,45]CBLLIB/LB:AGOP1
AGOP2:	.FCTR	[11,45]CBLLIB/LB:AGOP2
AGOP3:	.FCTR	[11,45]CBLLIB/LB:AGOP3
AGOP4:	.FCTR	[11,45]CBLLIB/LB:AGOP4
ALTDMP:	.FCTR	[11,45]CBLLIB/LB:ALTDMP 
ARCOG:	.FCTR	[11,45]CBLLIB/LB:ARCOG
ARSYN:	.FCTR	[11,45]CBLLIB/LB:ARSYN
BCOG:	.FCTR	[11,45]CBLLIB/LB:BCOG 
BENT:	.FCTR	[11,45]CBLLIB/LB:BENT 
CALL:	.FCTR	[11,45]CBLLIB/LB:CALL 
CBFIN:	.FC      TR	[11,45]CBLLIB/LB:CBFIN
CBIOT:	.FCTR	[11,45]CBLLIB/LB:CBIOT 
CCNA:	.FCTR	[11,45]CBLLIB/LB:CCNA 
CMND:	.FCTR	[11,45]CBLLIB/LB:CMND
COMMON:	.FCTR	[11,45]CBLLIB/LB:COMMON
COMP:	.FCTR	[11,45]CBLLIB/LB:COMP 
COPE0:	.FCTR   [11,45]CBLLIB/LB:COPE
COPE1:	.FCTR	[11,45]CBLLIB/LB:COPE1
COPE2:	.FCTR	[11,45]CBLLIB/LB:COPE2
CORR:	.FCTR	[11,45]CBLLIB/LB:CORR 
CPDDMP:	.FCTR	[11,45]CBLLIB/LB:CPDDMP 
CREF:	.FCTR	[11,45]CBLLIB/LB:CREF 
CSORT:	.FCTR	[11,45]CBLLIB/LB:CSORT 
DDOP:	.FCTR	[11,45]CBLLIB/LB:DDOP 
VPS      ET:	.FCTR	[11,45]CBLLIB/LB:VPSET 
DBCON:	.FCTR	[11,45]CBLLIB/LB:DBCON 
DMLOAD:	.FCTR	[11,45]CBLLIB/LB:DMLOAD 
ENTDMP:	.FCTR	[11,45]CBLLIB/LB:ENTDMP 
GWRD:	.FCTR	[11,45]CBLLIB/LB:GWRD 
HELP:	.FCTR	[11,45]CBLLIB/LB:HELP 
INSP:	.FCTR	[11,45]CBLLIB/LB:INSP 
IOVB:	.FCTR	[11,45]CBLLIB/LB:IOVB 
LDIN:	.FCTR	[11,45]CBLLIB/LB:LDIN 
LENT:	.FCTR	[11,45]CBLLIB/LB:LENT 
LINK:	.FCTR	[11,45]CBLLIB/LB:LINK 
LLTDMP:	.FCTR	[11,45]CBLLIB/LB:LLTDMP
LNKDMP:	.FCTR	[11,45]CBLLIB/LB:LNKDMP 
LTSC:	.FCTR	[11,45]CBLLIB/LB      :LTSC 
NAMX:	.FCTR	[11,45]CBLLIB/LB:NAMX 
OBJMAP:	.FCTR	[11,45]CBLLIB/LB:OBJMAP 
ODLBLD:	.FCTR	[11,45]CBLLIB/LB:ODLBLD 
OVFL:	.FCTR	[11,45]CBLLIB/LB:OVFL 
PDOP:	.FCTR	[11,45]CBLLIB/LB:PDOP 
PDSR:	.FCTR	[11,45]CBLLIB/LB:PDSR 
PFRF:	.FCTR	[11,45]CBLLIB/LB:PFRF 
PH0A:	.FCTR	[11,45]CBLLIB/LB:PH0A 
PH0B:	.FCTR	[11,45]CBLLIB/LB:PH0B
PHS1:	.FCTR	[11,45]CBLLIB/LB:PHS1 
PHS2:	.FCTR	[11,45]CBLLIB/LB:PHS2
PH2A:	.FCTR	[11,45]CBLLIB/LB:PH2A
PH2B:	.FCTR	[11,45]CBLLIB/LB:PH2B 
PH2C:	.FCTR	[11,45]CBLLIB/LB:PH      2C 
PH2D:	.FCTR	[11,45]CBLLIB/LB:PH2D 
PH3A:	.FCTR	[11,45]CBLLIB/LB:PH3A 
PH3B:	.FCTR	[11,45]CBLLIB/LB:PH3B 
PHS4:	.FCTR	[11,45]CBLLIB/LB:PHS4 
PH5A:	.FCTR	[11,45]CBLLIB/LB:PH5A 
PH5B:	.FCTR	[11,45]CBLLIB/LB:PH5B 
PH5C:	.FCTR	[11,45]CBLLIB/LB:PH5C 
PH5D:	.FCTR	[11,45]CBLLIB/LB:PH5D 
PH5E:	.FCTR	[11,45]CBLLIB/LB:PH5E 
PH5F:	.FCTR	[11,45]CBLLIB/LB:PH5F 
PHS6:	.FCTR	[11,45]CBLLIB/LB:PHS6 
PHS7:	.FCTR	[11,45]CBLLIB/LB:PHS7 
PICTRN:	.FCTR	[11,45]CBLLIB/LB:PICTRN
PQDN:	.FCTR	[11,45]CBLLIB/LB:PQDN 
      PRTDMP:	.FCTR	[11,45]CBLLIB/LB:PRTDMP 
PDUSE:	.FCTR	[11,45]CBLLIB/LB:PDUSE 
PSUTIL:	.FCTR	[11,45]CBLLIB/LB:PSUTIL 
PNTDMP:	.FCTR	[11,45]CBLLIB/LB:PNTDMP 
PTTDMP:	.FCTR	[11,45]CBLLIB/LB:PTTDMP 
QPN:	.FCTR	[11,45]CBLLIB/LB:QPN 
QREF:	.FCTR	[11,45]CBLLIB/LB:QREF 
SAVERR:	.FCTR	[11,45]CBLLIB/LB:SAVERR 
SEARCH:	.FCTR	[11,45]CBLLIB/LB:SEARCH 
SORTS1:	.FCTR	[11,45]CBLLIB/LB:SORTS1 
SORTS2:	.FCTR	[11,45]CBLLIB/LB:SORTS2 
SRCALL:	.FCTR	[11,45]CBLLIB/LB:SRCALL 
SRCH:	.FCTR	[11,45]CBLLIB/LB:SRCH 
SRCSER:	      .FCTR	[11,45]CBLLIB/LB:SRCSER 
STACK:	.FCTR	[11,45]CBLLIB/LB:STACK 
STRG:	.FCTR	[11,45]CBLLIB/LB:STRG 
STTDMP:	.FCTR	[11,45]CBLLIB/LB:STTDMP 
SUBDMP:	.FCTR	[11,45]CBLLIB/LB:SUBDMP 
TSORT:	.FCTR	[11,45]CBLLIB/LB:TSORT 
UNST:	.FCTR	[11,45]CBLLIB/LB:UNST 
UTES:	.FCTR	[11,45]CBLLIB/LB:UTES 
VPAD:	.FCTR	[11,45]CBLLIB/LB:VPAD 
VPIF:	.FCTR	[11,45]CBLLIB/LB:VPIF 
VPNE:	.FCTR	[11,45]CBLLIB/LB:VPNE 
VPST:	.FCTR	[11,45]CBLLIB/LB:VPST 
WFBK:	.FCTR	[11,45]CBLLIB/LB:WFBK 
WFBS:	.FCTR	[11,45]CBLLIB/LB:WFBS 
      WFLO:	.FCTR	[11,45]CBLLIB/LB:WFLO 
WFTO:	.FCTR	[11,45]CBLLIB/LB:WFTO 
WLKT:	.FCTR	[11,45]CBLLIB/LB:WLKT 
WLKTO1:	.FCTR	[11,45]CBLLIB/LB:WLKTO1
WLKTO2:	.FCTR	[11,45]CBLLIB/LB:WLKTO2
OTSNOR:	.FCTR	[11,45]CBLLIB/LB:OTSNOR 
;
;
COPE:	.FCTR	COPE0-(COPE1,COPE2)
COPEL:	.FCTR	COPE0-(COPE1,(COPE2-WFTO))
;
;
S1:	.FCTR	NAMX
S2:	.FCTR	BENT
S3:	.FCTR	LENT
S4:	.FCTR	PFRF-S1-S2
S5:	.FCTR	PQDN-QREF-S3
;
;
X1:	.FCTR	STACK-COPE
X2:	.FCTR	ACOG-WLKT-(WLKTO1,WLKTO2)
X3:	.FCTR	BCOG-WLKT-(WLKTO1,WLKTO2)
;
;      
DP1F:	.FCTR	DP1-PNTDMP-DBCON
DP2F:	.FCTR	DP2-CPDDMP-DBCON
DP3F:	.FCTR	DP3-ENTDMP-DBCON
DP4F:	.FCTR	DP4-PRTDMP-DBCON
DP5F:	.FCTR	DP5-PTTDMP-STTDMP-LLTDMP-DBCON
DP6F:	.FCTR	DP6-SUBDMP-DBCON
DP7F:	.FCTR	DP7-LNKDMP-DBCON
DP8F:	.FCTR	DP8-ALTDMP-DBCON
DUMPF:	.FCTR	DP1F,DP2F,DP3F,DP4F,DP5F,DP6F
DUMPF1:	.FCTR	DP7F,DP8F
;
;
P0AF:	.FCTR	P0A-WFLO-UTES-CSORT-HELP-CMND-PH0A-CBFIN
P0BF:	.FCTR	P0B-PH0B
P1F:	.FCTR	P1-PHS1-S4
P2F:	.FCTR	P2-PHS2-PICTRN-S4
P2AF:	.FCTR	P2A-PH2A-S5
P2BF:	.FCTR	P2B-PH2B
P2CF:      	.FCTR	P2C-PH2C
P2DF:	.FCTR	P2D-PH2D
PH4F:	.FCTR	P4-LTSC-PDSR-PDOP-PHS4-S1-S5-PSUTIL
;P4AF:	.FCTR	P4A-AGOP-STACK-(COPE,X3)
AGOP3F:	.FCTR	AGOP3-(COPE,X3)
AGOP4F:	.FCTR	AGOP4-(COPE,X3)
P4AF:	.FCTR	P4A-STACK-AGOP1-(AGOP2,AGOP3F,AGOP4F)
P4BF:	.FCTR	P4B-IOVB-VPAD-VPST
P4CF:	.FCTR	P4C-COMMON-STACK-(ARCOG,ARSYN,CORR)
P4DF:	.FCTR	P4D-OVFL-STACK-STRG-UNST
P4EF:	.FCTR	P4E-INSP
P4FF:	.FCTR	P4F-VPSET-STACK
P4GF:	.FCTR	P4G-VPIF-(X1,X3)
P4HF:	.FCTR	P4H-VPNE-COMP-STACK-(COPEL,X2)
P4IF:	.FCTR	P4I-SEARCH-(SRCA      LL-(X1,X3),SRCSER-(X1,X3))
P4JF:	.FCTR	P4J-QPN-PDUSE
P4KF:	.FCTR	P4K-STACK-CALL
P4LF:	.FCTR	P4L-OBJMAP
P3AF:	.FCTR	P3A-CSORT-S2-PH3A
P3BF:	.FCTR	P3B-DDOP-PH3B-S3
P5AF:	.FCTR	P5A-UTES-PH5A
P5BF:	.FCTR	P5B-PH5B
P5CF:	.FCTR	P5C-PH5C-OTSNOR
P5DF:	.FCTR	P5D-PH5D
P5EF:	.FCTR	P5E-PDOP-PSUTIL-PH5E
P5FF:	.FCTR	P5F-TSORT-PH5F
P6F:	.FCTR	P6-SRCH-PHS6-TSORT-CBIOT-OTSNOR
P7F:	.FCTR	P7-PHS7-TSORT-ODLBLD
PCREF:	.FCTR	SORTS1-SORTS2-CREF
T2:	.FCTR	P12-UTES-GWRD-DDOP-LTSC-(P1F,P2F-P2AF-P2BF-P2CF-P2DF)
T3:	.FC   r  TR	PH4F-(P4AF,P4BF,P4CF,P4DF,P4EF,P4FF,P4GF,P4HF,P4IF,P4JF,P4KF,P4LF)
T4:	.FCTR	P4-UTES-GWRD-T3
T5:	.FCTR	P5AB-DDOP-(P5AF,P5BF,P5CF,P5DF,P5FF)
T5A:	.FCTR	P5EF
T6:	.FCTR	P3AB-UTES-(P3AF,P3BF)
T7:	.FCTR	PCREF,SAVERR
;
ROOTB:	.FCTR	ROOT-LINK-WFBS
COMPIL:	.FCTR	CCNA-WFBK-(P0AF,P0BF,T2,T4,DUMPF,T6,T5,T5A,DUMPF1,P6F,P7F,T7)
.ROOT	ROOTB-*(COMPIL,DMLOAD)
;
	.END
 r         dÌP@›         ;CBLBLD.CMD
;
;THIS FILE IS THE COMMAND FILE FOR TKB TO BUILD THE COBOL-11 OVERLAY
;STRUCTURE FOR VERSION 4.0 COBOL. THE OVERLAY DESCRIPTOR FILE IS
;CBLBLD.ODL
;
[11,1]COBOL,[111,45]COBOL=[11,45]CBLBLD.ODL/MP
TASK = ...CBL		;TASK NAME
UNITS = 14		;NUMBER OF LUNS USED
STACK = 512		;STACK SIZE
;
;THE FOLLOWING COMMAND DEFINES THE INTERNAL STORAGE USED BY THE
;COMPILER (WFBLK) FOR PROCESSING THE SOFTWARE VIRTUAL MEMORY WORKFILE.
;THE MINIMUM VALUE FOR THIS AREA IS:
;
;	     WFBLK:6000 (OCTAL)
;      
;THE NET EFFECT OF EXTENDING THE SIZE OF THESE AREAS IS TO SPEED UP THE
;COMPILER. EXTENSION OF THESE AREAS SHOULD BE IN BLOCKS OF 2000 (OCTAL).
;THE MINIMUM VALUE OF WFBLK=6000 YIELDS A COBOL WHICH WILL RUN SLOWLY IN
;MINIMUM USER MEMORY.
;
EXTSCT = WFBLK:6000
;
EXTSCT = $$FSR1:6300
;
;CALL PARAMETERS FOLLOW
GBLDEF = CATBSZ:0
GBLDEF = NEWMAG:1		;NEW MAG TAPE ENABLED
GBLDEF = PREFIX:000000		;NULL/NULL
GBLDEF = POSFIX:005015		;CR/LF
GBLDEF = CBLVER:032040		;ASCII " 4"
GBLDEF = CBLEDI:020060	      	;ASCII "0 "
;GBLDEF	= CBLCOD:20106		;"F " FOR FIELD TEST COMPILERS
GBLDEF	= CBLCOD:20040		;"  " FOR NON-FIELD TEST COMPILERS
GBLDEF = BUFCNT:1		;1 FOR  SINGLE 2 FOR DOUBLE BUFFERING
GBLDEF = RSTSSW:0		;NON-0 FOR RSTS
;
;NOW WE DEFINE THE DEVICE DEFAULTS FOR THE VARIOUS LUNS USED BY THE
;COMPILER.
;
ASG = TI:1,TI:2,SY:3,SY:4,SY:5,SY:6,SY:7,SY:8,SY:9,SY:10,SY:11
ASG = SY:12,SY:13,SY:14
;
;LOGICAL UNIT ASSIGNMENTS:
;
GBLDEF = MSGLUN:2	;CONSOLE OUTPUT
GBLDEF = SRCLUN:3	;SOURCE INPUT FILE
GBLDEF       = LSTLUN:4	;SOURCE OUTPUT LISTING FILE
GBLDEF = OBJLUN:5	;OBJECT OUTPUT FILE
GBLDEF = ODLLUN:6	;ODL OUPUT FILE
GBLDEF = CRFLUN:7	;CREF SCRATCH FILE
GBLDEF = CPYLUN:10	;COPY LIBRARY INPUT FILE
GBLDEF = WRKLUN:11	;WORK FILE ONE
GBLDEF = WF2LUN:12	;SECOND WORK FILE
GBLDEF = INTLUN:13	;INTERMEDIATE FILE
GBLDEF = FIRLUN:14	;FIRST OF THREE SCRATCH FILES USED BY SORT
GBLDEF = INLUN:0	;NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = MULBUF:0	;NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = OUTLUN:0	   ò   ;NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = XLUN:0		;NOT USED BUT MUST BE DEFINED FOR SORTING
GBLDEF = TTDEV:44524	;TI FOR RSTS/E
;
;LOGICAL UNITS ARE ASSIGNED TO THE USER COBOL PROGRAM BY THE COBOL
;OBJECT TIME SYSTEM (OTS).
/
ò          TÌP@›      X   [11,1]CBLMRG,[111,45]CBLMRG=CBLMRG,[1,1]COBLIB/LB,[1,1]RMSLIB/LB
/
TASK = ...MRG
/
 X          NqœrÌP@›      V   [11,]REFRMT,[111,45]REFRMT=REFRMT,[1,1]COBLIB/LB,[1,1]RMSLIB/LB
/
TASK = ...RFM
/
V          »zjLúŠ› 8$         ÁXÀM         à "  K      ˆ¡ x                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ÿ sq à 3àq ^4Ùfr j F	VNr r	À+r ¤¢
Š(I T ¢
.€‚ Ö¤
Ó%I T ¤
2&I T ¤
Ñ(I T ¤
PdI T ¥
Š(I T ¦
Ò:I T ©
Ì`I T ¬
5…‚ Ö¬
q…‚ Ö¬
……‚ Ö¯
“I T ´
Ñp‚ ÖâƒI T âŒ(I T îT–I T ö°I T ö,s ~ö`Ts ütI T ²0 u 
   X œ ‘Àr ¤¢À+r ¤, ‚ Ö2‘‚ Ö2Ñp‚ Ö3^s‚ Ö3®s‚ ÖË:Ku 
 {ˆt  ùòyx l2À+r ¤d6&I T dì&I T dÖ(I T tÑp‚ Ö!!Àr ¤q!ˆt Œq!òyt 	#n~u 
 #Oqu #€u ¨#""‚ Ö#žw‚ Ö#z‚ Ö#ú‚ Ö¬#‘‚ Ö¸#N&‚ Ö¸#óy‚ Ö¸#v~‚ ÖÄ%ÄI T Ä%•I T Ä%ëI T Ä%r!I T Ä%#I T Ä%#I T Ä%ˆZI T       Ä%kfI T Ä% qI T Ä%tI T Ä%™wI T Ä%xI T Ä%I T Ä%CI T Ä%¤’I T <&kI T <&DI T <&%I T <&I T <&zI T <&®(I T <&w*I T <&ƒ:I T <&H;I T <&„SI T <&È`I T <&ãeI T <&ÞfI T <&ýfI T <&°pI T <&¶pI T <&KqI T <&%tI T <&iwI T <&lyI T <&9€I T <&I T p&  X œ Œ&I T Œ&ðZI T Œ&]fI T Œ&tI T Œ&tI T Œ&CyI T ô'ÄI T ô'IRI T ô' qI T ô'Ä…I T ô'¤’I T á)ìI T á)à~ š á)[MI T â)ƒI T â)PI T â),I T â)nEI T â)sEI T â)ŽEI T â)_GI T â)ÌGI T â)2HI T ã)Ð4I T ã)§ZI T ä)p~ š ä)²'I T ä)TyI T ä)½‹I T å)Û%I T å)°'I T å)^I T å)PsI T       æ)»I T æ)é%I T æ)µWI T æ)ÐWI T æ)ø€I T æ)ZŠI T è)›8I T é) x~ š ì)`	~ š ì)p…I T í)I T í)I T í)wI T î)ÔpI T î)KqI T ï)ã‰I T ð)€%~ š ð)û5~ š ò)»I T ò)t	I T ò)ýI T ò)ìI T ò)BxI T ò)ø€I T ó)ö!I T ó)¶dI T ó)VgI T ó)[}I T ô)p~ š ô)–œ~ š õ)à~ š õ)üXI T õ)ÔpI T ö)°I T ö)’I T t*ÊK ºt*·K ºt*ÎK ºt*GK ºt*I"K ºt*ä3K ºt*›NK ºt*µrK ºt*sK ºt*ŒsK ºt*ÊsK ºt*¶zK ºt*çK ºt*©„K ºt*b†K ºt*Ö‰K ºœ*4K ºœ*€K ºœ*ÄK ºœ*@,K ºœ*@wK ºœ*¶wK ºœ,òw ` œ,VNw à œ,ÊQw tœ,:dx 2 œ,Oqv 4œ,€x Ú Ë- –v Î      ,0‘ƒ‚ Ö,0œƒ‚ Ö,0Ïƒ‚ Ö,02„‚ Ö,05…‚ Ö,0q…‚ Ö,0……‚ Ö-0’‚ Ö-01‚ Ö00Ñp‚ Ö00‡q‚ Ö00s‚ Ö00s‚ Ö00s‚ Ö40‘8‚ Ö40È8‚ Ö40Ì8‚ Ö40á8‚ Ö40’9‚ Ö40Q:‚ Ö40W:‚ Ö40;;‚ Ö40:<‚ Ö40w‚ Ö40Çw‚ Ö40Ûw‚ Ö40Üx‚ Ö40üx‚ Ö40Cy‚ Ö40Ny‚ Ö40Ry‚ Ö40žy‚ Ö40Ñy‚ Ö40îy‚ Ö40óy‚ Ö401z‚ Ö40<z‚ Ö 5  X œ v8 s ˜ 9€ps ˜ $9ŸK º$9ÌK º$9ðK º$9#K º$9'K º$9.K º$9L	K º$9¬K º$9ÕK º$9ûK º$9)K º$92K º$96K º$9ÄK º$9bK º$9kK º$9½K º$9¦K º$9°K º$9K º$9|K º$9ˆK º$9‹K º$9¯K º      $9K º$9&K º$9)K º$97K º$9K º$91K º$9BK º$9VK º$9XK º$9ž!K º$9¬!K º$9®!K º$9#K º$9`&K º$9Å&K º$9 'K º$9n'K º$9è'K º$93K º$9ª5K º$9£8K º$9õ8K º$99K º$99K º$939K º$9E9K º$9,:K º$95:K º$96:K º$9ƒ:K º$9¨:K º$9Ò:K º$9I;K º$9i;K º$9p;K º$9s;K º$9‘;K º$9ƒKK º$9<MK º$9xQK º$9œSK º$9ÖWK º$9ÛWK º$92XK º$9yXK º$9‡XK º$9kYK º$9nYK º$9³YK º$9¼YK º$9¾YK º$9ÜYK º$9~ZK º$9ŒZK º$9ZK º$9[K º$9[K º$9¼^K º$9 `K º$9BaK º$9ÛdK º$9CfK º$9ÙfK º$93gK º      $9«pK º$9¼pK º$9×pK º$9ãpK º$9qK º$9ZqK º$9½rK º$9sK º$9pwK º$9óxK º$9CyK º$9kyK º$9•yK º$9ëyK º$9€}K º$9K º$9K º$9+…K º$9.…K º$9ƒ…K º$9Î…K º$9ZŠK º$9ëK º$9üK º$9CK º$9šK º$9«‘K º$9.’K º$9¶ÈK ºq:òyx lª:  s ˜ ´:½K º´:ÊK º´:ÏK º´:óK º´:ÃK º´:ÖK º´:a	K º´:t	K º´:sK º´:ûK º´:K º´:AK º´:GK º´:6K º´:«K º´:®K º´:K º´:&K º´:RK º´:WK º´:“K º´:•K º´:šK º´:ÁK º´:ÅK º´:éK º´:ìK º´:òK º´:ùK º´:+K º´:K º´:ÔK º´:ÜK º      ´:{K º´:âK º´:K º´:)K º´:9K º´:q!K º´:ž!K º´:#"K º´:#K º´:8&K º´:n'K º´:±'K º´:£-K º´:©-K º´:ù-K º´:“.K º´:™.K º´:ž.K º´:ó.K º´:¸2K º´:{3K º´:4K º´:74K º´:y:K º´:|:K º´:i;K º´:4FK º´:©KK º´:ÌKK º´:ÑKK º´:½LK º´:\MK º´:nMK º´:ƒMK º´:NK º´:)NK º´:+NK º´:9NK º´:wQK º´:ËQK º´:áQK º´:éQK º´:ïQK º´:/SK º´:œSK º´:GTK º´:bYK º´:kYK º´:¶^K º´:ü_K º´:¬pK º´:´pK º´:¼pK º´:ÓpK º´:qK º´:qK º´:"qK º´:$qK º´:(qK º´:.qK º´:TqK º´:ÄqK º´:brK º´:vrK º      ´:œrK º´:±rK º´:³rK º´:µrK º´:¶rK º´:ÂrK º´:ÃrK º´:sK º´:sK º´:ŒsK º´:£sK º´:©sK º´:«sK º´:­sK º´:òsK º´:tK º´:-tK º´:[uK º´:÷vK º´:KwK º´:iwK º´:owK º´:‹wK º´:œwK º´:¯xK º´:×xK º´:ByK º´:FyK º´:WyK º´:ÇyK º´:áyK º´:ãyK º´:ðyK º´:¶zK º´:ÝK º´:éƒK º´:„K º´:„K º´:+…K º´:|…K º´:A†K º´:i†K º´:y†K º´:ôK º´:üK º´:$K º´:CK º´:dK º´:hK º´:¢‘K º´:£‘K º´:³‘K º´:´‘K º´:¶‘K º´:Û‘K º´:’K º´:B’K º´:2“K º´:˜K º´:1˜K ºÌ:›‚a Œ ;@jK º;ÀvK º;L…K º      ; –K º@; (s ˜ T;ðK ºT;8K ºT;²K ºT;K ºT;¬!K ºT;;"K ºT;I"K ºT;ÛdK ºT;4fK ºT;$qK ºT;œwK ºT;DyK ºT;zK ºT;*}K ºT;K ºðK  X œ lOp…~ š xQ  r ¤zQÀDx ò|Sì]y  ¡UQd‚ Ö«U-}‚ Ö«UÎ}‚ Ö«U‚ Ö«UV€‚ ÖìWÞI T ìWzI T ìWµWI T ìWwI T ìW€wI T ìWýxI T ìWðyI T ìWBzI T ìWø€I T ìWZŠI T ìY  s ˜ á[ÚKo n ä[´"I T ä[à8I T ä[;I T ä[½‹I T æ[à8I T æ[µWI T æ[ŒYI T æ[ø€I T æ[ZŠI T é[Ì`o n í[Kro n î[#I T ï[y‹o n ï[Œp Äò[ÿo n ó[°	~ š ó[<}I T ó[\}o n ó[¥o n õ[üXI T ïe›‚a Œ ïf  X œ ðf  X œ ñf  X œ òf  X œ       óf  X œ ôf  X œ õf  X œ øf  X œ \gÊQ{ ü ªgÀ…{ ·k  v B ÄkZŠK º©ní]‚ Ö©nŽ^‚ Ö©n¾^‚ Ö©nµ_‚ Ö©nL`‚ Ö©nR`‚ Ö©nº`‚ ÖIqÎ| ¢ Iq~ èKq¾ | zKq ^| zYq„} è [qM…~  srà} B Us€%} ~”st	‚ Ö”s¢‚ Ö”sÔ‚ Ö”s#‚ Ö”sìQ‚ Ö”s,X‚ Ö”s`X‚ Ö”sLq‚ Ö”s}…‚ Ö”s¤’‚ ÖÖs   v[t{8‚ Ö[tœÆ‚ Ö[t¥Æ‚ Ö[t«Æ‚ Öät‘‚ Öæt <I T çtà8‚ Öçt L‚ ÖçtµW‚ Öçt:d‚ Öçtßf‚ ÖçtBx‚ Öçtóy‚ ÖñtÛw‚ ÖñtCy‚ ÖñtNy‚ ÖñtRy‚ Öñtîy‚ Öòt‘‚ Öótè!I T ótn†‚ Öõt›X‚ ÖõtZ‚ ÖõtZ‚ ÖõtZ‚ Öõt]Z‚ ÖõteZ‚ Öõt…Z‚ ÖõtZ‚ Öõt®Z‚ Ö      öt	I T ötQ‚ Ööt.‚ ÖötQ–‚ Ööt.™‚ Ö–w ~ Dœw0 u 
 ¤wöK º¤w 'K º¤wÆ8K º¤w’MK º¤wðXK º¤w{ZK º¤w:dK º¤wDyK º¤wLyK º¤wÚ}K º¤wÎ…K º¤w´‰K ºÌwÎK ºÌwë+K ºÌwË-K ºÌw».K ºÌw&qK ºÌwëvK ºÌwËxK ºÌw»yK ºÌwóyK ºÌwôyK º•y€% ¼ Ïy€}~ èáy sz ž z4f€ 2 jz  X œ "{Ä&I T ${‘‚ Ö${‚ Ö${n	‚ Ö%{Î}‚ Ö%{!™K º%{"™K º&{t	I T &{PI T &{ó8I T &{µWI T &{ÐWI T &{çWI T &{¹ZI T &{-d‚ Ö&{°yI T &{ø€I T .{V&I T 0{­p‚ Ö2{-‚ Ö2{‘‚ Ö2{ ‚ Ö2{n"‚ Ö2{­p‚ Ö6{!‚ Ö6{,‚ Ö6{!€‚ Ö6{,€‚ Ö>{  K º?{0ÀK º      ?{pÆK º?{ÎÌK º?{ÓK º?{pßK º?{NòK º@{0ÀK º@{NÀK º@{NÙK ºA{0ÀK ºA{ÎåK ºB{NòK ºC{€»K ºD{0ÀK ºE{ÎÌK ºE{ÀÚK ºG{ÎåK º”}ÊK º”}4K º”}kK º”}ˆK º”}>K º”}™K º”}õK º”}Á!K º”}I"K º”}](K º”}ö2K º”}ü2K º”}T3K º”}ä3K º”}O:K º”}D;K º”}ˆKK º”}MK º”}vNK º”}€QK º”}KXK º”}:YK º”}`YK º”}ZK º”}ŒZK º”}:dK º”}ÙfK º”}¼pK º”}ˆsK º”}HwK º”}JwK º”}¶wK º”}¶xK º”}×xK º”}ØxK º”}ÚxK º”}âyK º”}8}K º”}0€K º”}ÖƒK º”}×ƒK º”}ØƒK º”}ÙƒK º”}ÚƒK º”}ÛƒK º”}ÜƒK º”}ÝƒK º”}ÞƒK º      ”}ßƒK º”}|ŠK º”},‘K º”}™K º~L	K º~öK º~GK º~I"K º~´pK º~³rK º~µrK º~ŒsK º~¶zK º~K º~ôK º~$K º~Û‘K º~^˜K ºa	|K ºa|K ºk	|K ºlŒK ºlÎÇK ºl ÓK ºlÓK ºs®K ºuVYK ºu®yK ºu¯yK ºu°yK ºu±yK ºu²yK ºvÓK ºv–‚K ºv˜‚K ºv›‚K ºv¿‚K º}…Àr ¤­‡‘‚ Ö Œ  X œ ¼›¡ Ê8T¡ ñ }{   ñ~u 
 ¼`€ ° ÃHX€ šÔ’§‚ ÖÔ’Ô‚ ÖÔ’7!‚ ÖÔ’#‚ ÖÔ’xQ‚ ÖÔ’q‚ ÖÔ’Lq‚ ÖÔ’Vs‚ ÖÔ’}…‚ ÖÔ’¤’‚ ÖÔ’Ræ‚ Öñ’˜:v B .”Ò‚ Ö.”»‚ Ö.”à8‚ Ö.”ÖK‚ Ö.” L‚ Ö.”¶^‚ Ö      .”ìq‚ Ö.”Bx‚ Ö.”’y‚ Ö.”óy‚ Ö4”Žw‚ Öô¨d ôô¨ d ôô¨""d bý¨Xd ô9©x‚f   9©z‚f (:©<g P :©g P :©ÿg P :©Ï_g P :©¿`g P :©(}g P :©g P :©ZŠg P <©h x <©P}e .G©P}e .N©K€h p[©(}g ´a© }h ìd©°;W âi©€‰S <m© …W âs©<d ús©Àp ÄŒ©?Ti Z ©àyX ^®ªi Z¯ªàk êÉªJrm ¦ ÉªKrl 2Ýª KS <,«0zp Ä.«D,] Öœ«o ü «¯† ²«&‡ b «•† Ž «Ô‰ „ «{‡ «Š ¾«"Š  «#Š «ö&ˆ $«u'  «U(  «œ,‡ Ä«v:‹ € «T[  «E`… 4«\gˆ t «Iq‰ 4«Tq  «!tŒ 8«6x‹ € «Ay  «åŒ ä«Ä…ˆ Ô«ñŒ &       «™’‰ 4¡«o ü ¦«D,] Ö¹«´‰p F ¹«WŒp Ì ¹«p Lé«@Qh ì5¬ ™p Ä5¬!™q 6 ;¯P.   ;¯VNŽ 0„¯½` t ‹¯=S ì‹¯@=U èŒ¯`r0 t£¯D\ Œ¤¯ŒÈ] ¸ ¥¯ÜK1 î ¬¯²'3 ˆ Ö¯Ú}D ôà¯44 f ñ¯4}0 ô ù¯ XD ôù¯üX5 0 °úp4 `°sp Ä°\qy Ö°Pwy Ö°ôxy Ö°zy Ö°ƒ…y Ö°?SX Ð°@SX Ð°ASX Ð° }‘ T °	€’ ,°l5 ú,°z6 ª 4°u~z X	±8r< ~ 
±&4 `±lE7 † 1±ÚKn (9±Ì`n (=±Krn (?±y‹n (?±Œn (B±ÿn (C±\}n (C±¥n (\±D\ Œ\±ŒÈ] ¸ h±p!“ ¬h±ì&– öh±²'™ ±}s9 Êƒ±:2_ º †±/K_ º Ž±J…_ º Ž±P…_ º ±„:< ~ ±<x< `±“y= ±;	> 4       ±v> &’±„:^ ø ’±iw8 ,’±vw9 Ž ’±¾w: Ú “±†}_ º “±”_ º •± } ~ •±	€Ÿ ˜ Ô±2&B ð Ô±€&B ð Ô±Ñ(B ð Õ±à@ ¼ Õ±®SD ôÕ±µW@ œÖ±faB ð ù±oŒC ü0²#	_ º 2²XD „ ‚²D\ Œ™²`;F F œ²2&B ð œ²€&B ð œ²Ñ(B ð ž²faB ð ª²e;G  ´²§*  Ñ²˜:H œÜ²"" ’ Ü²# DÜ²# DÜ²ó` ÐÜ²)d‚ j Ü²@w‚ .a³—K/ Ta³[M/ Ta³VNŽ 0b³Ó. âb³—G/ Ø c³Iq 8 c³Ü0 td³?!1 4 d³à82 ” d³æ81 ìd³ÿ82 ” d³;2 ˆe³&3 re³&3 re³²Z xe³$™/ Te³?™/ Tf³Ð0 ô f³t: xf³y:5 0 g³©}5 i³‚H š m³lE6 Zm³oŒ6 ôp³#	9 Êp³h7 Tp³l8 Ž p³J,; &p³K,; Òp³¿Zœ T      p³iw8 ,p³vw9 Ž p³¾w: Ú p³<x< `p³“y= p³—y= p³¯y= q³¯:E r³kB 8 r³Þ> Ìr³"&A \r³®S xr³,}¡ T r³ë? € r³ü? € r³C? –r³§‘C Z s³2 3 rs³³.. ì s³k; Òs³þ}9 Êw³E w³¼E w³tF ò w³L	F pw³kB 8 w³Ô? –w³™€G Fw³œ€G Fw³·€G Fx³·kH š x³ÇkH š ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      %Psd b3àq ^4Ùfr j ƒ,dŽ Þ 	@~S <;	Žf.   ;	v. ì K	VNŽ 0r	À+r ¤œ	À]d ô"Kq. âïÎ/ † JÀ+/ Ø ü€e .üÀÚf   üÛf ($@g P dXRh x y[M/ T¯ˆw t %¦S0 ô &Ü0 t•e	 8 D¸ƒh pL@g ´:h;W âÎ  X œ Ô  1 4 Ôe"1 î l´'1 ìn X2 ” zÌ xz´'2 ˆzµz‚ ÖæÐW3 ˆ `	 úä`	h ìôXRi Zž!3 r# }X ^#t!4 f #Oqu #€u ¨&Š(4 `&,I T ö&`;5 0 œ,  ‘ T œ,h5 œ,l5 úœ,z6 ª œ,Oqv 4œ,hy’ Ë- –v ÎYM k êüR K6 Z®SKq6 ôTà7 † €^à] ¸ E`€W“ ¬F`à8– öF`ÐW™ 3aà~l 23aÐm ¦ 4a`	n (      7a ] ÖBa8"o n :dh7 T:dl8 Ž :diw8 ,:dvw9 Ž :dˆw9 Ê:d¾w: Ú e€p; &eÀv; Òïe›‚a Œ DfT< ~ af Zœ Tkf`;< `kfKq= Žf;	> 4 Žfv> &\g   ~ \gÊQ{ ü \ghyŸ ˜ ·kµzK º2q€W> Ì7q¼? € 7qüq? –Iq @ ¼ VqM@ œ\qò¡ T srà} B 4so ü Us€%} ~Œs"&A \t¸LB 8 t°yB ð $t÷_C Z 3ukM† ²3uþ_‡ b 3uIq† Ž 4u%!‰ „ 4u;;‡ 4uH;Š ¾5u»pŠ  5u%™Š 6u"  6ut:ˆ $7u`"‡ Ä9uüX‹ € ?uÖd… 4@u`†ˆ t Buá"Œ 8Bu‰ 4DuÖsŒ äEu¡dˆ ÔGu¼Œ & þv p F þv˜qp Ì þvXuC üþvPŒp L•y€% ¼ Þ³D „ éƒKqD ôŠðp Ä`Š }¡ `Š(}q 6 ñh~E       ñH€F F üÜYF ò üœwF p™’È}G  ÷’¼G F±˜(_H š ±˜aH œR«„:^ ø *¯¤`q à ;¯VNr y¯Xs ~†¯Ts ü‹¯=S ì‹¯@=U è³¯ˆt  Ö¯L	t Ö¯ˆt ŒÞ¯g'u 
 °Pwy Ö° SX Ð,°òw ` ,°H:z X,°VNw à ,°ÄQw t,°:dx 2 ,°€x Ú v°L	x l±u~x ò±\My  \±D\ Œ“±äz ž —±¼{   —±Øs{ Õ±æ| ¢ Õ±ž| zÕ±z~  á±#} è ä±Èx~ š ý± X~ D²Ïy~ è
²z v²4f€ 2 0²#	_ º ž²jM€ ° ž²õx€ š´²§*  Ü²"" ’ Ü² # DÜ²ó` ÐÜ²)d‚ j Ü²@w‚ .b³s;s ˜ q³˜:v B ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           ì M   vÀ›Ö*  ;	Žf    vÀ›Ö   ¯”L  \±D@  ù±oŒ@  "      (  
­D"(P ;¯Ph  ¯”   
   
­D"  *    w	  ‚ Á
Ò¥[ Ä, ÷	 ‡æÄ] ÷	  ù±oŒ*  &  …
‡Ás‘ ‡ …¡Á
ü± ‡ Á
„DáÄ
  L w     \±D       ö M   vÀ›Ö*  ;	v    vÀ›Ö   ¯”L      (  
­D"(x   s³³.h  ¯”   
   
­D"  *    &ÀÀeH æ …”÷	@ ‡Ð÷	 ÷	 LaÎ
*  & Àå ÔÎ Ã
ë–
€‡ ÅÅÅfÅÅ…e‡ *  L ÿÿ   W!Z ‚W!A †W!9 ‚W!0 ‡ÅåÒÿÅå@ 
  r ‡ ± ‡        ¤ M   vÀ›½*  "Kq          vÀ›½   ¯”L      (  
­D"(2   b³Óh  ¯”   
   
­D"  *    14  16  12  Áe p ðµ  l2   & l0 p ‡        R M   vÀ›½*  ïÎ    vÀ›½   ¯”L      (  
­D"(  
  ¯”          | M   vÀ›½*  JÀ+    vÀ›½   ¯”L      (  
­D"(   b³—Gh  ¯”   
   
­D"      8 Áe 2 
‡         M   vÀ›Ö*  y[M    vÀ›Ö   ¯”L  ù±oŒ@  i³‚@  *  q³¯:@      (  
­D"(Ä a³—Kh( a³[Mh    e³$™h@ e³?™hl ¯”   
   
­D"  *    0,  0,
  ƒ      f¦ 
 ÷	  ‚í†*  & ‡ p  °  ƒ÷	 ÷†‡ ¡ ‡ w	    Á   ù±oŒ*  L  

ì ì +Â% 
÷	    &i³‚*  r ÕeB 
Á ÁÁU €Á5 ÁU UÁ‹åÕ*  ˜  Ä ÷	  
‡pl  p &
Nœ °e ‡ ð•×ÿ  q³¯:
  ¾ * ± ‡        € M   vÀÛÃ*  %¦S    vÀÛÃ   ¯”L      (  
­D"(   ñ¯4}h
 f³Ðh  ¯”   
   
­D"      ð‹* ± ‡         À M   ŽÆ8T*  &Ü    ŽÆ8T   ¯”L  ù±oŒ@  i³‚@  *  q³¯:@      (  
­D"( Œ¯`rh  c³Üh 
  ¯”   
   
­D"            w	  ÷	  
ÕUÄ ÷	  ‡   ù±oŒ
i³‚q³¯:       º M   vÀ›½*  Ô      vÀ›½   ¯”L  e³²Z@  m³lE@  *  r³®S@      (  
­D"(  d³?!h  ¯”   
   
­D"  $    ÷	  ‡f÷	  †&œ* ÷	  °•* ± ‡   r³®Sm³lEe³²Z       þ M   vÀÛÃ*  Ôe"    vÀÛÃ   ¯”L  „¯½`@  ù±oŒ@  *  d³?!@  f³Ð@  s³þ}@      (  
­D"(:   ¥¯ÜKh  ¯”   
   
­D"  *    w	  ð * ð8 B ÷	  ‡pB ÷	  ‡ðµ  ù±oŒ„¯½`$s³þ}  &   ÷	  0
B ÷	  ‡   d³?!f³Ð       ¨ M   vÀ[é*        l´'    vÀ[é   ¯”L  ±v@  d³à8@  "      (  
­D"( d³æ8h  ¯”   
   
­D"       æ¦f‚ ± Áe ÷	  w     ±vd³à8       ô M   vÀ[é*  n X    vÀ[é   ¯”L  f³t:@      (  "  
­D"(b d³à8h d³ÿ8h  ¯”   
   
­D"  *    æ¦1

 ñ  ñz ñ  ñ  ÷	  ‡  &f³t:*  & q   q  q  1
  1
 1
 1
 1
   L 1

 1
 1
 1
 ‚ƒ‡         M   vÀÛÜ*  z´'    vÀÛÜ   ¯”L  ;¯P@  ±;	@  *  d³à8@  s³³.@      (  
­D"(J d³;h  
  ¯”         
   
­D"  *    æ¦CÃe ÷	  ‡Ä BÂe
 Ã¦÷	  ‚Ã  ;¯P$±;	(  &  DÄe 
4
 ÷	  ‡w   ð•Ìÿ* ‚ƒ‡   s³³.d³à8       ê M   NÀÛÃ*  æÐW    NÀÛÃ   ¯”L  „¯½`@  ù±oŒ@  *  a³VN@  d³?!@      (  
­D"(4 ¬¯²'h  
  ¯”   
   
­D"  *    w	  ð * ÁeB ð8 ÷	  ‡÷	  ‡ðµ   ù±oŒa³VN"„¯½`  &  ÷	  É  ‡   
d³?!       ô M   vÀ›½*  ž!    vÀ›½   ¯”L      (  
­D"(l "  e³&h  e³&h s³2 h. ¯”   
   
­D"  *    ÷	* ‡ðµ ) 	 l0       ì , ¡ ‡ ð•*  & öÿ* ± ‡ ðÅ ) ÷	$ ‡‚ð ðÕ ) ¡ ‡ $  L ð•öÿ* ðÕ ) ± ‡ 0,4  0,6 
 ‡        ú M   vÀÛÃ*  #t!    vÀÛÃ   ¯”L  ù±oŒ@  e³?™@  *  f³t:@  s³þ}@      (  
­D"(D à¯4h  
  ¯”   
   
­D"  *    w	  ð * f¦÷	  f‡÷	  ‡ðµ  
  ù±oŒs³þ}f³t:"  & ðµ    ‚ ÷	  °B ‚‡   e³?™       Ð M   ÆÀ[Ð*  &Š(    ÆÀ[Ð   ¯”L  °s@      (  *  
­D"(  þ¬¯yì  þ¬°yèD °úph  
±&h@ 
  ¯”   
   þ¬°y      ÿÿ  þ¬¯y  ÿÿ       (   ( ÿÿ   
   
 ÿÿ   @   @         Þ M   vÀÊ*  ö&`;    vÀÊ   ¯”L  °s@  ù±oŒ@  *      (  
­D"(D ù¯üXh  f³y:h ¯”   
   
­D"  *    w	  Á  B ‰

C ƒàƒ
ò ñ€€B BÂe  ù±oŒ
°s"  &  ¦æ?ÿˆ‡± B ñÿÿ( 1
< ‡        ì M   vÀ[Ð*  œ,h    vÀ[Ð   ¯”L  a³VN@      (    
­D"(b g³©}h  ¯”   
   
­D"  *    ð * ¦÷	  ‚'‡ðµ  ðµ  f f  a³VN*  &  f
 f f þ	
 ± ± ±
 ± ±   L ñÿÿ ñÿÿ 1
 –
‡              ° M   vÀÛÃ*  œ,l    vÀÛÃ   ¯”L  ù±oŒ@  g³©}@  *  p³l@      (  
­D"( ,°lh  ¯”   
   
­D"      w	  æÎe  w     ù±oŒp³l 
g³©}­       ° M   vÀÛÃ*  œ,z    vÀÛÃ   ¯”L  ù±oŒ@  d³;@  *  g³©}@      (  
­D"( ,°zh  ¯”   
   
­D"      w	  æÎe  w     ù±oŒd³; 
g³©}       š M   vÀ›½*  üR K    vÀ›½   ¯”L  i³‚@  q³¯:@  "      (  
­D"( m³lEh  ¯”   
   
­D"      ÷	  MÄ w     i³‚q³¯:       ’ M         vÀÛÃ*  ®SKq    vÀÛÃ   ¯”L      (  
­D"(&   m³oŒh  ¯”   
   
­D"  *    ƒ	
D„PÄ5 RÃ
ý†R”‡ R”R”Ã
üø       Î M   vÀÛÃ*  Tà    vÀÛÃ   ¯”L  ù±oŒ@  a³VN@  *  m³lE@      (  
­D"(* ±lEh  ¯”   
   
­D"  *    w	  ð * ÁeB ð8 ÷	  ‡ðµ  ÷	  ù±oŒa³VN  &   ‡   m³lE       :M   vÀ[Ð*  :dh    vÀ[Ð   ¯”L  °s@  ±;	@  "      (  
­D"(˜ p³hh  ¯”   
   
­D"  *    Ä  Äe( Ì	ñ  ñ  1
 :¦æ&  °s*        & Âe ´  
÷	  „Œí ƒ‚1-    ±;	*  L 1-  
1  1  1  ¦þ	 *  r ‡r  r  r  r  r  ‚–
‡        ž M   vÀÊ*  :dl    vÀÊ   ¯”L  d³æ8@  p³h@  "      (  
­D"(
 p³lh  ¯”   
   
­D"      æÎe  w     d³æ8 
p³h        bM   vÀÛÜ*  :diw    vÀÛÜ   ¯”L  ù±oŒ@  d³;@  *  p³h@      (  
­D"(” ’±iwh  p³iwh
 
  ¯”   
   
­D"  *    w	  ð * ðµ  w l ðµ  úðµ # ö  ù±oŒ*  & Âò 
ñU@  ¦      Âe ÷	  ‚‡ ÃÄ   d³;*  L Ä% ñ,  ñ,  
ñ  ñ  ñ&  r   ‡ æÎe  w   ñ  ñ  1
 ‡   d³;z 
p³h        <M   vÀ[Ð*  :dvw    vÀ[Ð   ¯”L  \±D@  ù±oŒ@  *  a³VN@      (  
­D"(€ ’±vwh  p³vwh
 
  ¯”   
   
­D"  *    w	  ð * DÅ 
Å
ýæ¦!… ‚    ù±oŒ*  & ñU€  q• q• Âå C
Ó¥: „
Â
ú*  L ÄCÃe ÷	  ‡Ãñ  ñ  ÷	    \±D(a³VN  r ð•Éÿ* ‚ƒ‡        M   vÀ[Ð*  :dˆw    vÀ[Ð   ¯”L  ù±oŒ@        a³VN@  *  p³iw@  p³vw@  p³¾w@      (  
­D"(< "  ±}sh  p³#	h* s³þ}h  ¯”   
   
­D"  *    ÁeB Éð8 ÷	  ‡ $ & w	  ð  a³VN&ù±oŒ  &  * ÷	  ‡÷	  ‡÷	  ‡   
p³vwp³iwp³¾w       LM   vÀ›Ö*  :d¾w    vÀ›Ö   ¯”L  \±D@  ù±oŒ@  *  s³³.@      (  
­D"(h’±¾wh  p³¾wh
 
  ¯”   
   
­D"  *    w	  ð * æÂƒ
 ‚ æ¦yÄ”Ä%. &  ù±oŒ*  & Ä%; @Â
÷ƒ
ñ5À %ñ5@ <… ÄDáÄ
*  L Í¥* CÃe ÷	  ‡XÄ% w ð ñU  O  \±D*  r ñ5       @ ƒ
âñU € Ä„í Ä

ñU  þ¥* *  ˜  ñU   Ä Å	 ñU@ ñ5€ åÄ„í*  ¾  Ä

ñU  þ¥*  ñU  Ä Å ‚ *  ä ö ƒàÎàÃ
Ê¥* Ã% C!-D`÷	  )‡ƒ  $s³³.*  
 ‚†Æe C Ã5 €ñU  ‚Ã5 	±*  0  ±  ±
 
 Ã5€±  Ã5@±   V ‡ Æe ð•Êÿ* ± ‡        ¬ M   vÀÛÃ*  e€p    vÀÛÃ   ¯”L      (  
­D"(:   p³J,h  ¯”   
   
­D"  *    ð8 ðµ  ðµ  ðµ   	ð * ‡   & ðÖ * ± ‡ ðÃ * ± ‡        ¬ M   vÀÛÃ*  eÀv    vÀÛÃ   ¯”L            (  
­D"(2   p³K,h  s³kh( ¯”   
   
­D"  *    ð8 ðµ  ðµ  	ð * ‡ ðÖ * ±   & ‡ ðÃ * ± ‡        â M   vÀ›½*  DfT    vÀ›½   ¯”L  ù±oŒ@  p³¿Z@  *  r³,}@      (  
­D"(6 	±8rh  ±„:h  
  ¯”   
   
­D"  *    w	  ð * ðµ  ÷	  ‡÷	  ¡ ‡ 4   ù±oŒp³¿Zr³,}  & 6  l0 ì ‡        ¦M   vÀ[Ð*  kf`;    vÀ[Ð   ¯”L  d©°;@  m© …@  *      (  
­D"(Ê ±<xh  p³<xh ¯”   
   
­D"  *    ð * &f÷	 …„‡ D „
ÄE        õµ *  &  /f C Ãå ŽA
÷	  ƒB
  m© …*  L f&
 ÷	  B‚eA@0 ÷	  Á(„‚  m© …d©°;*  r @0 ÷	  a@Âe A‡ 
B0 ÷	  €A   
d©°;"d©°;*  ˜ B Âå ÷	  ¦f
÷	  C‚áÖ  d©°;m© …  ¾ @ð•Òÿ* ± ‡        .M   vÀÛÃ*  kfKq    vÀÛÃ   ¯”L  ù±oŒ@  f³Ð@  *  p³¿Z@  p³<x@  r³,}@      (  
­D"(L *  ±“yh  p³“yh p³—yh* p³¯yh ¯”   
   
­D"  *    w	  ð * ðµ  ÷	 ÷	  w   ÷	  ‡÷	  ù±oŒr³,} f³Ð$p³<x*  &   ‡ ÷	        ü‡, ,
 ð ñ‚ð•öÿ* ± î  p³¿Z
p³<x       ò M   vÀ›Ö*  Žf;	    vÀ›Ö   ¯”L      (  
­D"(t   ±;	h  ¯”   
   
­D"  *    f&æÄ5 Ò•[ Ã ÷	" Ä5 Ò•, ƒ“÷	 *  & Ä5 Ò•] ƒ„…‡ ÃE ÿÃÃÅ Ä5 	Ã5*  L  ÿÃÃÃÅ
ø…
Ã Ãe0 ÒŠÃ ÃÃÃÅ
õ  r ‡        ¦ M   vÀ›Ö*  Žfv    vÀ›Ö   ¯”L      (  
­D"(4   ±vh  ¯”   
   
­D"  *    ÷	 Ñ	

÷	 Ï	fÉÉ‰eÉÉÉ
ÂCÂ  & CÂCÃe É`‡        ´ M   vÀÛÃ*  2q€W    vÀÛÃ   ¯”L  r³ë@        r³ü@  *  w³™€@      (  
­D"( r³Þh  ¯”   
   
­D"      ðµ ) ÷	  ‡÷	  ‡ ÷	  ‡   w³™€r³ër³ü       M   vÀøÊ*  7q¼    vÀøÊ   ¯”L  b³Ó@  b³—G@  *  r³k@  s³2 @  w³t@  w³L	@      (  "  
­D"(< r³ëh r³üh  ¯”   
   
­D"  *    ðµ  ðe 6 p4 ÷	  †8 ÷	  ± ‡ ÷	  s³2 "b³Ó  &   ÷	  ÷	  ‡‡ ÷	  õ†‡   b³—Gr³kw³L	w³t       &M   vÀ›Ö*  7qüq    vÀ›Ö   ¯”L  s©À@  i³‚@  *  x³Çk@      (  
­D"(p r³Ch  w³Ôh*       
  ¯”   
   
­D"  *    ð8 ðµ  	ðµ  ð ¡ ‡ ð•Öÿ* *  & ± ‡ ð * ÷	    
4 6 Åå   i³‚(  L   Ã÷	  ‡ðe 6 p4 ‡ ð  * ‡   x³Çk"s©À       à M   vÀÊ*  Iq     vÀÊ   ¯”L  ù±oŒ@  r³C@  *  r³§‘@  s³2 @  w³Ô@      (  
­D"(&   Õ±àh  ¯”   
   
­D"  *    w	  ÷	  ‡Ä 0,0  w   ÷	  ‡÷	  ‡    ù±oŒ
r³Cr³§‘ s³2 &w³Ô       ÀM   vÀ›½*  VqM    vÀ›½   ¯”L  „¯½`@  ù±oŒ@  *  e³²Z@  f³Ð@  f³t:@  r³®S@  s³      þ}@  "      (  
­D"(º Õ±µWh  ¯”   
   
­D"  *    w	  ð * &fB ÷	  I‡°B ÷	  D‡É  ù±oŒ„¯½`"s³þ}*  & ÷	  ?‡€÷	  5‡ñ 
÷	  ,†ð¥æÿ* +ð   f³t:s³þ}f³t:*  L *  1,\ \ 1,^ ^ pB B pD D pF *  r F ÁeB ÷	  ‡€ ÁeB ÷	  ð•Ðÿ*   e³²Zr³®S&  ˜ ð•Ïÿ* €pœ* * €0
B 1
B w     $f³Ð       Ü M   vÀøÊ*  Œs"&    vÀøÊ   ¯”L  œ«@  °s@  "      (  
­D"(J r³"&h  ¯”   
   
­D"  *    ðµ  8 2 Áe &À  ÷	  €0
         °s"œ«(  & 0
 0
8 0
B 0
 0
 0
 0Š) ðÅ # ‡        ¸ M   vÀ¸Ä*  t¸L    vÀ¸Ä   ¯”L  i³‚@  q³¯:@  *      (  
­D"($ r³kh  w³kh ¯”   
   
­D"  (    Ä Ä ÷	  U•Õ4 6 Åå w     i³‚&q³¯:       jM   vÀÊ*  t°y    vÀÊ   ¯”L  °s@      (  *  
­D"(r Ô±2&h  Ô±€&h, Ô±Ñ(h\ Ö±fahD *  œ²2&h œ²€&h6 œ²Ñ(hf ž²fahN ¯”   
   
­D"  *    Á  Áe( B A
‡ &À  Àe( H° 0
  °s°s*  &  €‡ Á  A
 ‡ fÁ  ±
 ‡ Á  A         °s°s$°s*  L ‡ fÁ  ± ‡ Á  AB ‡ &À  pB Ù  
°s°s"°s       ¢M   NÀ[Ð*  $t÷_    NÀ[Ð   ¯”L  a³—K@  s³2 @  *  w³Ô@      (  
­D"(Ø r³§‘h  ¯”   
   
­D"  *    &4 &6 ðµ   ÷	š ÷	  ‡°6 °4 ÷	    s³2 *  & w z Ä% !°6 °4 ðµ   5÷	  2‡
 ì   s³2 *  L 6 
ð 
l0 Á
ü& ° ÷	Z ° *  r 4 6 ÷	  °6 °4 ‡÷	: ðµ ) 04   a³—K*  ˜  06 
 0
 ð* ± ‡  ì0 ðe 6   ¾ p4 ÷‡ ÷	  ðµ   ÷	Øÿ‡   w³Ô             ˆ M   vÀÀÁ*  þvXu    vÀÀÁ   ¯”L      (  
­D"(   ù±oŒh  ¯”   
   
­D"       &æ¦ff…
 Þ	‚ƒ„…‡        pM   vÀ›½*  Þ³    vÀ›½   ¯”L  „¯½`@  ù±oŒ@  *  f³Ð@  i³‚@  q³¯:@  w³¼@      (    
­D"(„ 2²Xh  ¯”   
   
­D"  *    w	  &
8 6÷	  œ* ÷	  ÕeB Õ& &  ù±oŒw³¼i³‚*  & 
 ð Îå ¶  ÕU €Ä ÷	  ‰   $q³¯:*  L 
†Æe œ* ÷	  ‡°“* Nl v ° °   „¯½`  r ÷	  ð•Öÿ* Öw     „¯½`f³Ð       M         vÀ›½*  éƒKq    vÀ›½   ¯”L  ù±oŒ@  a³VN@  *  e³²Z@  f³t:@  r³®S@      (  
­D"(: "  Ö¯Ú}h  ù¯ Xh  Õ±®Sh ¯”   
   
­D"  *    w	  ÷	( ‡÷	  ‡ w	  ÷	 ‡÷	  ‡ w	  ÷	   ù±oŒe³²Zù±oŒ r³®S&ù±oŒ  &  ‡÷	  ‡ ð * w     
f³t:a³VN       8M   vÀÊ*  ñh~    vÀÊ   ¯”L  s©À@  ñ¯4}@  *  °s@  f³Ð@  x³·k@      (  
­D"(Z "  q³¯:h
 w³h2 w³¼h" ¯”   
   
­D"  *    0Š+ æ1ÿˆÅ  Åe Ã÷	  ß%ÿÿ  ïp’*   °sx³·k"s©À*  & w   ÷	 ø      fœ( Á  fæ)ÿˆ‡fæ  f³Ð  L ÿˆ‡‡ ÷	    ñ¯4}       ¬ M   vÀ›½*  ñH€    vÀ›½   ¯”L  ù±oŒ@  w³@  *  w³¼@      (  
­D"( ™²`;h  ¯”   
   
­D"      w	   w   w     ù±oŒw³w³¼       ~ M   vÀ›½*  üÜY    vÀ›½   ¯”L      (  
­D"(   w³th  ¯”   
   
­D"      É¥ÿÿ± ‡ æ1ÿˆ‡        ª M   vÀÛÃ*  üœw    vÀÛÃ   ¯”L  f³Ð@  w³¼@  "      (  
­D"( w³L	h  ¯”   
   
­D"  "    ÷	  B fÁe p `p       w     w³¼ f³Ð       ,M   vÀ[Ð*  ™’È}    vÀ[Ð   ¯”L  ù±oŒ@  a³—K@  *  r³C@  r³§‘@  s³2 @  w³Ô@      (    
­D"(T ª²e;h  ¯”   
   
­D"  *    w	  ÷	  $‡Ä 0,0  w   ÷	  †4   ù±oŒ
r³Cr³§‘ s³2 *  & 6 ÷	  ‡÷	  ðµ ) 04  06 
 0
 ð‹  a³—Kw³Ô  L * ± ‡        TM   vÀx¾*  ÷’¼    vÀx¾   ¯”L  a³[M@  b³Ó@  *  b³—G@  f³Ð@  w³¼@  w³t@  w³k@  *      (  
­D"(V w³™€h  w³œ€h  w³·€h 
  ¯”   
   
­D"  *    ÷	        ðµ ) ÷	  !‡f¦æ÷	  †ƒ‚„÷	  b³—Ga³[Mw³k*  &   	‡òÆe ðÅ ) ÷	  ðe 6 p4 ÷	  0ž  w³tw³¼&b³Ó  L 8 * ÷	  ‡   
f³Ð       M   vÀÊ*  ±˜(_    vÀÊ   ¯”L  s©À@  °s@  *      (  
­D"(V i³‚h> x³·kh  x³Çkh 
  ¯”   
   
­D"  *    8 AÁe 
fÕœ" Šœ( Ã  Õ*  & Uÿˆ†CÉ—  ð•ÿÿ+ ‡ Å  Åe$ &Ä   s©À°s  L %
Ä
ý„‡        ¸ M   vÀ›½*  ±˜a    vÀ›½   ¯”L  ù±oŒ@  i³‚@  *  q³¯:@      (  
­D"( Ñ²˜:h  ¯      ”   
   
­D"  "    w	  ð * D÷	  ÂÕÂ
ýw     ù±oŒi³‚ q³¯:      fM   iÁ á*  &,    iÁ á   ¯”L  ¢
Š(H ¤
Ó%H@ *  ¤
2&H( ¤
Ñ(HB ¤
PdH ¥
Š(H ¦
Ò:H
 *  ©
Ì`H$ ¯
“H âƒH âŒ(H îT–H
 *  ö°H tH d6&H dì&H dÖ(H *  Ä%ÄH@ Ä%•H Ä%ëH Ä%r!H €Ä%#H *  Ä%#H Ä%ˆZH@ Ä%kfH Ä% qH Ä%tH *  Ä%™wH @Ä%xH  Ä%H Ä%CH  Ä%¤’H *  <&kH <&DH <&%H  <&H <&zH *  <&®(H <&w*H @<&ƒ:H <&H;H <&„SH €*  <&È`H <&      ãeH <&ÞfH <&ýfH <&°pH *  <&¶pH <&KqH <&%tH <&iwH <&lyH  *  <&9€H <&H Œ&H Œ&ðZH Œ&]fH *  Œ&tH Œ&tH Œ&CyH ô'ÄHF ô'IRH *  ô' qH ô'Ä…H ô'¤’H á)ìH> á)[MH  *  â)ƒH2 â)PH8 â),H/ â)nEH â)sEH *  â)ŽEH( â)_GH) â)ÌGH â)2HH4 ã)Ð4H= *  ã)§ZH ä)²'H& ä)TyH$ ä)½‹H\ å)Û%H *  å)°'H( å)^H å)PsH* æ)»H# æ)é%H *  æ)µWHH æ)ÐWHB æ)ø€HN æ)ZŠHP è)›8H *  ì)p…H" í)H, í)H- í)wH. î)ÔpH *  î)KqH ï)ã‰H ò)»H ò)t	H ò)ýH       *  ò)ìH ò)BxH ò)ø€H  ó)ö!H@ ó)¶dH: *  ó)VgH< ó)[}H õ)üXH^ õ)ÔpH ö)°H4 *  ö)’H0 ìWÞH€ ìWzH@ ìWµWH ìWwH *  ìW€wH ìWýxH  ìWðyH ìWBzH ìWø€H *  ìWZŠH ä[´"H  ä[à8H ä[;H ä[½‹H *  æ[à8H  æ[µWH æ[ŒYH æ[ø€H æ[ZŠH *  î[#H ó[<}H õ[üXH æt <H ótè!H *  öt	H "{Ä&H &{t	H &{PH` &{ó8H *  &{µWH &{ÐWH &{çWH &{¹ZH &{°yHD "  &{ø€H .{V&H     (  ¯”         ‚M   ÉÀÀÁ*  ·kµz    ÉÀÀÁ   ¯”L  t*ÊH t*·H *  t*Î      H t*GH t*I"H  t*ä3H@ t*›NH€ *  t*µrH t*sH t*ŒsH t*ÊsH t*¶zH *  t*çH  t*©„H t*b†H @t*Ö‰H €œ*4H *  œ*€H œ*ÄH œ*@,H œ*@wH œ*¶wH  *  $9ŸHñÿ$9ÌHùÿ$9ðHžÿ$9#H¬ÿ$9'H¬ÿ*  $9.HÞÿ$9L	H°ÿ$9¬Hÿÿ$9ÕHÈÿ$9ûH¾ÿ*  $9)HÌÿ$92HÎÿ$96HÉÿ$9ÄHÀÿ$9bHºÿ*  $9kHìÿ$9½HÊÿ$9¦H´ÿ$9°HÕÿ$9HÁÿ*  $9|Híÿ$9ˆHöÿ$9‹Hâÿ$9¯HÚÿ$9H·ÿ*  $9&Hêÿ$9)Høÿ$97Hóÿ$9Hèÿ$91Hùÿ*  $9BHýÿ$9VH÷ÿ$9XHÇÿ$9ž!Höÿ$9¬!HÂÿ*  $9®!Hõÿ$9#Hµÿ$9`&HÏÿ$9Å&HÅÿ      $9 'H÷ÿ*  $9n'H¯ÿ$9è'HËÿ$93Häÿ$9ª5Húÿ$9£8H§ÿ*  $9õ8H¤ÿ$99HŸÿ$99H®ÿ$939Hþÿ$9E9Hçÿ*  $9,:HÖÿ$95:H ÿ$96:Híÿ$9ƒ:Hþÿ$9¨:H­ÿ*  $9Ò:H¡ÿ$9I;HÃÿ$9i;H£ÿ$9p;H¨ÿ$9s;Høÿ*  $9‘;H¥ÿ$9ƒKHåÿ$9<MH¦ÿ$9xQH¯ÿ$9œSHëÿ*  $9ÖWHÙÿ$9ÛWH×ÿ$92XH¸ÿ$9yXHÄÿ$9‡XH»ÿ*  $9kYH±ÿ$9nYHÛÿ$9³YH³ÿ$9¼YH²ÿ$9¾YH¼ÿ*  $9ÜYHéÿ$9~ZHæÿ$9ŒZH°ÿ$9ZHîÿ$9[Hªÿ*  $9[H©ÿ$9¼^H¿ÿ$9 `Hûÿ$9BaHîÿ$9ÛdH­ÿ*  $9CfH¢ÿ$9ÙfHðÿ$93gHýÿ$9«pHÔÿ$9¼pHÓÿ*  $9×pHØÿ$9ãpHñÿ$9qHÒÿ$9ZqHàÿ$9½rHÍÿ*  $9sHïÿ$9pwHÿ      $9óxHÝÿ$9CyHúÿ$9kyHÜÿ*  $9•yHòÿ$9ëyHÆÿ$9€}Hõÿ$9H¹ÿ$9H¶ÿ*  $9+…H«ÿ$9.…Hûÿ$9ƒ…Hüÿ$9Î…Hÿÿ$9ZŠHüÿ*  $9ëHãÿ$9üHáÿ$9CHªÿ$9šHßÿ$9«‘Hôÿ*  $9.’H«ÿ$9¶ÈHÐÿ´:½H ´:ÊH ´:ÏH *  ´:óH ´:ÃH ´:ÖH´:a	H´:t	H *  ´:sH´:ûH´:HH´:AH ´:GH *  ´:6H@´:«H ´:®H ´:H ´:&H *  ´:RH´:WHP´:“H ´:•H ´:šH *  ´:ÁH ´:ÅH8´:éH ´:ìH ´:òHˆ*  ´:ùH ´:+H ´:H ´:ÔH ´:ÜH *  ´:{H ´:âH`´:H ´:)H ´:9H *        ´:q!H ´:ž!H ´:#"HH´:#H ´:8&H*  ´:n'H ´:±'H 	´:£-H´:©-H´:ù-H*  ´:“.H(´:™.H ´:ž.H0´:ó.H ´:¸2H*  ´:{3H ´:4H ´:74H ´:y:H ´:|:H *  ´:i;H ´:4FH
 ´:©KH ´:ÌKH ´:ÑKH*  ´:½LH ´:\MH ´:nMH´:ƒMH@´:NH *  ´:)NH ´:+NH( ´:9NH ´:wQH´:ËQH *  ´:áQH ´:éQH ´:ïQH ´:/SH ´:œSH *  ´:GTH 
´:bYHX´:kYH ´:¶^H´:ü_H *  ´:¬pH ´:´pH´:¼pH ´:ÓpH ´:qH *  ´:qH ´:"qH€´:$qH´:(qH´:.qH *  ´:TqH ´:ÄqH´:brH ´:vr      H@´:œrH*  ´:±rH ´:³rH ´:µrH´:¶rH0´:ÂrH8*  ´:ÃrH´:sH ´:sH 	´:ŒsH´:£sH *  ´:©sH ´:«sH0 ´:­sH€´:òsH ´:tH *  ´:-tH`´:[uH ´:÷vH ´:KwH ´:iwH *  ´:owH ´:‹wHP´:œwH ´:¯xH ´:×xHp*  ´:ByH´:FyH ´:WyHH´:ÇyH 	´:áyH *  ´:ãyH@´:ðyH ´:¶zH ´:ÝH´:éƒH*  ´:„H(´:„H ´:+…H 
´:|…H" ´:A†H0*  ´:i†H´:y†H´:ôH´:üH ´:$H@*  ´:CH(´:dH$´:hH ´:¢‘H ´:£‘H*  ´:³‘H´:´‘H´:¶‘H@´:Û‘H´:’H*  ´:B’H ´:2“      H ´:˜H ´:1˜H;@jH *  ;ÀvH ;L…H ; –H T;ðH T;8H*  T;²H  T;HT;¬!HT;;"HT;I"H›*  T;ÛdH€T;4fH  T;$qH T;œwH T;DyH *  T;zH T;*}H	T;H ÄkZŠHÙ ¤wöH *  ¤w 'H ¤wÆ8H ¤w’MH	 ¤wðXH ¤w{ZH
 *  ¤w:dH ¤wDyH ¤wLyH ¤wÚ}H ¤wÎ…H *  ¤w´‰H ÌwÎH Ìwë+H€ÌwË-HpÌw».H`*  Ìw&qH0ÌwëvHÌwËxH Ìw»yHÌwóyHP*  ÌwôyH@%{!™H %{"™H >{  H ?{0ÀH *  ?{pÆH ?{ÎÌH ?{ÓH ?{pßH ?{NòH *  @{0ÀH @{NÀH @{NÙH A{0ÀH	 A{ÎåH       *  B{NòH C{€»H D{0ÀH
 E{ÎÌH E{ÀÚH *  G{ÎåH ”}ÊH ”}4H ”}kH" ”}ˆH *  ”}>H ”}™H& ”}õH! ”}Á!H  ”}I"H *  ”}](H# ”}ö2H ”}ü2H ”}T3H ”}ä3H$ *  ”}O:H ”}D;H ”}ˆKH ”}MH ”}vNH *  ”}€QH4 ”}KXH' ”}:YH ”}`YH ”}ZH *  ”}ŒZH ”}:dH ”}ÙfH) ”}¼pH ”}ˆsH *  ”}HwH
 ”}JwH	 ”}¶wH ”}¶xH( ”}×xH *  ”}ØxH ”}ÚxH ”}âyH ”}8}H% ”}0€H *  ”}ÖƒH* ”}×ƒH+ ”}ØƒH, ”}ÙƒH- ”}ÚƒH. *  ”}ÛƒH/ ”}ÜƒH0 ”}ÝƒH1 ”}ÞƒH2 ”}ßƒH3 *  ”}|ŠH ”},‘H ”}™H       ~L	H ~öH *  ~GH  ~I"H ~´pH ~³rH  ~µrH *  ~ŒsH ~¶zH€ ~H€ ~ôH ~$H@ *  ~Û‘H ~^˜H@ a	|H a|H k	|H *  lŒH lÎÇH l ÓH lÓH s®H *  uVYH  u®yH u¯yH u°yH u±yH *  u²yH vÓH v–‚H v˜‚H	 v›‚H
   v¿‚H     (  ¯”          ° M   ÄÀXÀ*  	@~    ÄÀXÀ   ¯”L      (  
­D"(6   i©€‰h Ýª Kh  ¯”   
   
­D"  *    &æ  
 †€m Î
ùæ f
ÀAN   & ‡ã€
ö
 ÷–%‡        üM    Á  *        ‹¯=     Á     ¯”L  £¯D@  \±D@  "  ù±oŒ@      (¾‹¯=h  ¯”   
         *    w	    Ä 
Ä
ýp p* CÄe  ù±oŒ*  & ( ÂL‡ Ë‹Ë¥	 Ë¥ Ë¥  Ñ’Ë¥= *  L Ìð ° ± ‡ LðÕ   ƒ
Â
âÌL*  r  àp & 
`„!÷	Z CÃeµ À
Ãe  "µ *  ˜  ûÃ’{ ¨ €¡ ‡ ^|¬f$        ¨ ^|¬f$  ¾       



   Ø *  Ø =ÿ]/;[:, „ÅØ !…
£E“‡ Õ‹  Ø *  þ ú„
òÃ  +†¢z (‚¢a ‡ÈÅ  ¢Z  ‚¢*  $A ‡Ã       ¢9 ‚¢0 ‡Ã  ¢* Ã *  J¢. Ã ¢$ Ã €
‡ €° !†*  p„
„à0 ± ‡ €÷	‚ÿÃ% ï÷	xÿÃ% ê *  –÷	jÿÃ%  ùâ@‚
w Øþ„ Û‚
÷	0ÿÅÖ…*  ¼&„à&
ƒ÷	  ƒ†÷	" × ÿ ‚„—¤]   \±D*  â÷	 ÿW! ç¼À ÚÄ
Ê¥* Ö„±‡ @*  &…&
„àƒ÷	  ƒ†÷	Ôÿ„À€¢- €
  £¯D*  . ÷	Îþ×  ùƒ”Å% ¯‚
÷	šþCÃå ‰*  TÃ
‡Ã
…ð„  &
€÷	šþŽ
Ãå úÃ
Ö%*  z
 ßÀ
 ÜŽÖ
ÙÐ¥. ÖÖ%
 ÒàóÃ%"    Ì‡Ã
È¥* ë÷	RþÃå û ä‚¿       úM    Á  *  ‹¯      @=     Á     ¯”L  £¯D@  \±D@  "  ù±oŒ@      (Ò‹¯@=h  ¯”   
         *    w	  ðÅßÿ 0
 0
 
( È¥ È¥ ±   ù±oŒ*  & ‡ 
* ÷	 ÃD ÷	 ÃL ÷	 3:   :
  D L *  L  ] 
]&¦fÅ”`ÁU%Î¤Äd„àðÔ *  r Ãe DB Å”`Ó‹Ä„`÷	Ö…*  ˜ ‚„Å¢‚
÷	Š‡ ° ƒàð ðÕ  *  ¾ ÷	ª
Å¥/ ÷	  Å¥= ðÕ  ‚
Á°*  ä ( °* ‡ ‚
÷	<&f&
ƒàRÊ¥- × *  
 Ê¥N ò¥O  ‚
‚
Ž
ƒà¦÷	T‚‡*  0ô5  â¥- 4
Â
ƒ ƒà÷	4,‡0S Î*        V0S ô5  !0C  ¡ ‡EÎS*  |¡ EÎúCÖ…‚ ÄE W¡/ ªW¡: *  ¢
‡ Ö…‚W¡= W¡, ‚
÷	t öÄ ‡ *  ÈñËï‚
÷	^ &fÅ ×¤ „àÄ¢†Ä’&*  î•”Ä
ýÄ’„åŠÄ
ýÃe …‚ÄÅææ  ã¥  &\±D*   Î  C
„à…Þ	¾‡Öƒç& l   
£¯D*  :„Åd!£„
£ý£Õ‹ü„
ðU¥E“  d  `Ö‡ []=:/,     l*  lÒ¥* „ û‡ ðÕ  ‡ ¦æ !Å‹*  ’€ÃÅE€€Ã
&
Ž”Ã
Ì5€ÿ¶”   ¸…%èÔþÄe ƒ‚ ç± –5‡        º M   NÀ€Ô*  :h;          NÀ€Ô   ¯”L      (  
­D"(@   d©°;h m© …h  ¯”   
   
­D"  *    & 

Î†Á`@€`ÃBöÖ‡ æÃ  &  &  
ÂA@ ‡€ã‚
Ã
÷Öƒ‡        Â M   XÀ  *  Î      XÀ     ¯”L    H p&  H *   5  H	 ðK  H
 ïf  H  ðf  H@ ñf  H` *  òf  H€ óf  H  ôf  HÀ õf  Hà øf  Hþÿ"  jz  Hxÿ Œ  H     (  ¯”          r M   tÀ0À*  # }    tÀ0À   ¯”L      (  ©àyh  
  ¯”   
             &æÿˆæ3ÿˆ       ¼M   ;VÓ³*  ° S    ;VÓ³   ¯”L  ¤
      Ñ(@  <&D@  *  <&Kq@  <&9€@  ô' q@  â)P@  ä)²'@  *  ä)Ty@  å)Ps@  æ)»@  æ)ÐW@  î)Ôp@  *  ò)ì@  õ)Ôp@  $9ž!@  $9×p@  ´:t	@  *  ´:Ü@  ´:2“@  s©À@  „¯½`@  ‹¯=@  *  ‹¯@=@  ù¯üX@  °s@  °	€@  	±8r@  *  h±²'@  ±}s@  ±„:@  ù±oŒ@  Ñ²˜:@  *      (Ò°?Sh  °@ShÈ°ASh¯”   
         *    w	  5
f un h õ‹j ÷	`‡uh bB  ù±oŒ*  &   ÷	$†w €õµ€ a w ,õ  ÷	fý¥    ä)Tyâ)P($9ž!*  L   w ü &
õµ    Á  
÷	  œ  Ad B&  â)P      <&9€ò)ì´:t	Ñ²˜:"å)Ps*  r b AÁep Â &
¦fƒÂ Á  ÷	  –
–   ´:2“$Ñ²˜:*  ˜ ‡ÁP õµ  a A” Aíf @pn  p  ÷	     õ)Ôp $õ)Ôp(°	€(  ¾ C    Ö‹Á  
÷	  8  ð  Ã‹/A&  å)Ps
â)P´:ÜÑ²˜:â)P å)Ps*  â  B  µ`f ÂNõµ a ¦`W¨a W¢z   î)Ôp î)Ôp*  ÉÅ  Â
ö‚õµ€ a õ‹j fu-n h w FÉ¥*  .; ]õµ a )w Èþ×   æØÿ"Ã¥  .@j   $9×p"$9ž!*  T
À
õµ€ a ÷	Bw Ôþ@÷	  õÅ€ a õŠj   „¯½`*  zõTI õ•    æöÿ&
õµ a f  ÷	vµ"  <      &9€<&Kq<&D
ò)ì"å)Ps*     µ“` V@‡ æÿÿîæþÿëÆe, æýÿææüÿ  å)Ps*  Æãw	  õ‹j ÜõŠj õå l ùµŠj ÷	¾ Ð  ù±oŒ*  ìÉ¥@ @õµ a Éu­j k àÆå, b¤€p ° *  ÷	  5 f µ
f Ë‡ðµ   ÇÈ• ÷	  Â‡ðµ   ‹¯="‹¯@=*  8 ¾ðµ  º÷	Ò ‚Âe õSY ÷	ø 	‡Æe, *  ^5
f un h w ÒýÆe,  õµ a õ‹j õµ€ *  „a `W¨- Â
õ
f µ`n w rýuh n w äþ@*  ª÷	  Dl õå l õŠj õµ€ a !CÃe ##  „¯½`$æ)ÐW *  Ð#3 3™ @ð•    ÷	  ‡&™÷	  ½•  ô' qæ)»h±²'&±„:*  ö        	†õ¥    Î²Î†‡ w	  õ  µŠ(  â)P
$9ž!å)Ps²†ù±oŒ$â)P*  j Dl @÷	  T”ÔÀe  TŸ  œ    	±8ræ)ÐWâ)P*  B5l @÷	  ‡ @Á  ñ  ÷	  Áe     „¯½`°s¤
Ñ( ù¯üX&æ)ÐW*  h  ÷	  ‡ð•    ÷	  ‡ An 5Šj É)fÿˆ‡   ä)²'±}sô' qæ)»h±²'*  ŽÑÂ  ÷	2 ‡ /  	    ô÷	 ‡   s©À"  ´	 ú   ÷R¨õÕ€ a ¡ ‡ Âå @”‡        ,M   ìÀXÀ*  \±D    ìÀXÀ   ¯”L  ù±oŒ@      (  *  
­D"(Œ £¯Dh \±Dh  ‚²Dh  ¯”   
         
­D"  *    
Ë w	  &Ba
—¢+ —¢- 
‚
Ä
  ù±oŒ*  & Ê¥# ‚
Ë
å¥. ‹
Ä
Å æU¥
Ä*  L €”Àå0  ‚Ë‡ÎÀb‡Ë‡Ë‡`‡€  r Î	Ä
éÁ¡ €€‡ ± û       M   NŽ€À*  €^à    NŽ€À   ¯”L  ù±oŒ@      (ˆ   ¤¯ŒÈh  \±ŒÈh
 ¯”   
         *    w	  Á
 w	  Á Ba—¨. Á
 Ä
&
W£  ù±oŒù±oŒ*  & + W£- Ž
…
Ä


B•Âå0  ‡ †Ëcæ*  L æËcó SW 
 –%‹ec“e‹`sþÿÄ
ä  r Ö#3 ‹¯ ‡ Ö± ‡        "M   XÀ  *  7a     XÀ     ¯”      L  °?S@  °@S@  *  ù±oŒ@      (N .«D,h  ¦«D,h
 Û©"Sì  
  ¯”   
         *    w	  Ã  w	  Ã  &Àe` Á` Â Â
ý"  ù±oŒ
°?Sù±oŒ°@SÛ©"S` *  & À  ðÕ a Ë	Á` €Àe` Â PÂ
ý€D  Û©"S  Û©"S`   L ‡        ÂM   XÀ  *  R«„:    XÀ     ¯”L  <&È`@  <&Kq@  *  â)P@  å)Ps@  æ)ÐW@  ì)p…@  ä[à8@  *  æ[à8@  æ[ZŠ@  s©<d@  „¯½`@      (z   ’±„:h  ¯”   
         *    ð  9f¦æÆå ‚œ  ¦ææÿˆƒ   â)Pì)p…  & Âe  ¡¡¡      Âe  ¡¡¡!ŠÂe&  æ)ÐWä[à8 
æ[à8 ä[à8
&  @   ¦¦¦¦¦÷	  ‡Ã5  Àäf÷	(  æ[ZŠ æ[à8
„¯½`<&Kq<&È`
  b   2  €Æe Aƒ‚‡   s©<då)Ps       ÒM   OŽØÌ*  0²#	    OŽØÌ   ¯”L  ¤¯ŒÈ@  \±ŒÈ@  *      (î0²#	h  X:†¨ ƒ±:2h †±/Kh  *  Ž±J…h
 Ž±P…h “±†}h “±”h ¯”   
         *    &f¦w  ÷‹  ÷	¾7
 7 @•,€ÀåÀÿq"  X:†  X:†  X:† X:† *  &   `-KacJE[Ã!Ãm*  L  Äí @•Á  †ÕÁ
ûÒ± )      ÷	L÷	  X:† X:† *  r R†é çÃå÷  7• Ã
f@• †Õ   X:† X:† *  ˜ †&Ý	€…Ò€ÖÀ5 ]U ª†E¨¯ ‚*  ¾ …€Á  ‡ 
 :Á  ‚æ&@E ÷	ÿA  
X:†  X:†  *  ä · Îà· Ì†ª 
÷	Š ÷	Ð Â¢ÂÀE  X:† X:† *  
 ÿ÷	v œÀEÀÿÀ€c Á Â ¤‘Á
ü¢ÿ   X:† X:† *  0­÷‹ ‰÷­  ¦†„÷	@ Á	Ã£.   X:† X:† X:† *  V„
Ã
·
 æ&fÅ Ä Ã Á÷	  ÷	(  
X:† X:† X:† X:† $¤¯ŒÈ*  |  …„ƒ¶Ã÷	8 †      À÷	" †À£.   \±ŒÈ*  ¢£$ ·
 „
Ã
ë÷ ‡ Ì¥Z ‡£A ‡ Ì¥  X:† X:† *  È9 ‡£0	‡ 
Ã
£  £	 ‚
„
Ã
ö‡        ÖM   OŽØÌ*  ïe›‚    ¯”L  ´:t	@  ´:Ü@  ´:¢‘@  "      ( Ì:›‚h  ïe›‚h  ¯”   
         *    Ä W£ W£ xÄ D !ÿÿø@  
    *  & ÿÿk i  f†Àx : †ö
LêBr†*  : †ö
L ê"$B&r(†*  L ` °ÀîA W ÿÿAÁE ü‡ 
‡ B —   ` °
Àî*  r ÿÿ‚ÂE þ‡ 
‡ &-  ‡÷	    aÀe*        ˜  ˆ“´
 €‡ ô $Ãe ô  ô &
*  ¾ &
&
&
& æ&
&
&
 &  æ  æÿˆ‡   ´:¢‘*  ä & æ)ÿˆ4
 ‡ ÷	^ ÷	¨ÿ 
‡ ÷	R ÷	œÿÀ*  
ÿÿ‡ &ÀE @ÀÀÀÀ ÀU  ÁU  ‡ @÷	*  0Pÿ€÷	Jÿ‡ ô‹ ÷	. À1 ÷	6ÿ´Š ÷	( ‡ *  Vô‹ 
÷	 À2 ÷	ÿ÷	 4Š ‡ À ÷	ÿ‡ *  |À ÷	þþ‡ ÷	ÌþÁ	t  ÷	ÔþÂ´ ô*  ¢  %&
&
&
&
&
&
&
&
&
&  æ  æÿˆ   ´:t	*  È&
&
&
&
&
&
&
&
&
&  æ  æÿˆt   
  ´:Ü*  î‡ Àÿÿ‡ ÷	\þ4Š Áô•  ‡ ÷	^þ´@ ÷	*  @þtP ÷	ÿÀ•A ÷	\þ  ÷	àþ@÷	NþÀI ÷	      *  :Fþ€÷	@þôE  w ¨þA W ÿÿHAf *  `W  ƒÁ ÷	ÌþÀH ÷	þ@÷	’þ÷	¬þ  Àe*  †B ÷	öý	÷	Øý€÷	tþ÷	Žþw RþB — ÿÿ*  ¬æ f€¦ ì ƒÀì ÷	Hþ÷	bþ‚ö
 *  Ò÷	¦þö  Î
ê–%w þw þ÷	~ý÷	dýf÷	Bþ*  øÀD ÷	‚ý€÷	þÖÂU ÷	þw Þý÷	<ý÷	Ný*  ÷	þ¦ÀL ÷	Vý@÷	ÜýÖÂU ÷	îýw ²ý÷	*  Dý÷	"ý÷	ìý  ÀeC ÷	(ý¦@÷	¬ýÖÂU *  j÷	¾ýw ‚ý÷	àüt ÷	îü´ w ný÷	Ìü÷	Þü÷	*  ¨ýt  
†@ 4 € 4 í Ut *  ¶æ æ í €Ã  
B †Bà€
ûƒ*  ÜÂÀö4
 4
 ÀH ÷	ü        ÷	ý÷	.ýÀB *   Ý ÷	xü4m
  -  ‡´c ôå  ö  *  (÷	âü÷	üüö
 ÷	Býö  ô
 â€÷	üt *  N÷	ü´ –%w ˜üw ìý÷	ýÀH ÷	ü÷	üûÀ
 *  tÂ
÷	üû÷	Ôû÷	öüæC Á
÷	àü€÷	êûø*  šÖw Tü÷	ÎüÀJ ÷	Öûw Dü÷	¾üÀK ÷	Æûw 4ü*  À÷	’ûB — ÿÿÁ€”÷	ªûÁ
ûw ü€”ü÷	*  æšûûw ü÷	€ü÷	`û@÷	†ûw ôû                                         ’ M   0À  *  %Ps    0À     ¯”L  s©À@      (    ù¬ÚK( ô¨""h  ¯”   
   ù¬ÚK      ×'  ÿÿæ1ÿˆ ‡   s©À       :M         pÁ  *  œ	À]    pÁ     ¯”L  á[ÚK@  ï[Œ@  *  ¹«WŒ@      (  ù¬o†(X ô¨h ô¨ hL "  ý¨Xh  ­Kr<  
­ÿ<  ¯”   
   ù¬o†  *    ¦  Þ5 Îe ‡w	  ¦…
 Bv
 ÷	  
  ¹«WŒ&­Kr  *  & 

ò ÊE ÷	  	‡‚ Ê5 îù‚
  
­ÿ    L ‡ Ã  û	  æ  ï[Œá[ÚK       Ò M   ¨À  *  ü€    ¨À     ¯”L  Ýª K@  ¹«WŒ@  "      (< <©P}h  G©P}h ¯”   
         *    Â
 Â w	  
”Å¥  üÅ¥	 ùÅå0 B¡†  ¹«WŒ  & €÷	   Aa”ôœÿÿ‡   
Ýª K             (M   €À  *  üÀÚ    €À     ¯”L  Ýª K@  ¹«WŒ@        (z 9©x‚h ¯”   
             ZA90$ .    *   @(  w	  f
Ã ”Ä  ¥&‡¥ƒ¥"‡¥  ¹«WŒ   *  . ƒ¥	¥Î¥Åå Åå÷ÿÅåÒÿÅå@ &*  T ÀfA÷	  E€Aa×  ×‡ÖÖ± œÿÿ‡   Ýª K        (M   €À  *  üÛ    €À     ¯”L  Ýª K@  ¹«WŒ@        (z 9©z‚h ¯”   
             ZA90$ .     *   @(  w	  f
Ã ”Ä  ¥&‡¥ƒ¥"‡¥  ¹«WŒ   *  . ƒ¥	¥Î¥      Åå Åå÷ÿÅåÒÿÅå@ &*  T ÀfA÷	  E€Aa×  ×‡ÖÖ± œÿÿ‡   Ýª K        dM   ìÀ È*  $@    ìÀ È   ¯”L  i©€‰@  ¹«WŒ@  *      (Ž :©<h  :©h :©ÿh :©Ï_h *  :©¿`h :©(}h0 :©h :©ZŠh ¯”   
         *    æ
æ
*æ
+
æ2æ3ÁE ÿæ*  & ÂÎE ‚w	  …ŠÂ ‚†Á€Ð•-   ¹«WŒ*  L ŠƒÐŠÂÕ0 @A÷	  W 	 ƒÁe `fÃŠ  i©€‰   r 
ÀÂ€Ã€ÂE ÷	Ôÿ”• ‡        Ä M   €À  *  L@    €À     ¯”L  i©€‰@      (H   [©(}h  ¯      ”   
         *    ÷	 &÷	 &÷	
 ’•’•€‡ @Á( ÷	    (i©€‰&  & f€
  Àe	 ÀeÉÿÀe  Àe  ‡        ø M   0À  *  dXR    0À     ¯”L  :©(}@  d©°;@  "  ¹«WŒ@      (V <©h  ¯”   
         *    w	  Ä'Å
 ÂÅU D$†BA ÷	  &  ¹«WŒ&d©°;*  & Â (÷	 ÅU Â  ÀBQ÷	  Â   ":©(}  L Ð•* Â
ü‡        | M   0À  *  D¸ƒ    0À     ¯”L      ( N©K€h  
  ¯”   
             ¢a ‡¢z ‚ÈÅ  ”Â
õ‡        nM   €À  *        ä`	    €À     ¯”L  :©<@  i©€‰@  *  ¹«WŒ@      (¦ a© }h$ é«@QhR ¯”   
         *    JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECw	*  &   D…&&÷	` Ð•- ÎeÁeýÿP”P”P”Ð•  ¹«WŒ ýÿ*  L - $w	  DÅ … ƒ÷	& Ð•.  ÀÀÀ  ¹«WŒ*  r  c e÷	  À
…Ð•: ÷	
 Å
ù
  i©€‰  ˜ Â÷	  B‡   
:©<       M   pÆ  *  ôXR    pÆ     ¯”L  :©@  :©ÿ@  *  :©Ï_@  :©¿`@  :©@  <©@  <©P}@  *  [©(}@  a© }@  ¹«WŒ@  é«@Q@      (ð"  Œ©?Th8 3M`©      è ®ªh  ¯”   
         "    ABDEFMNOPRSTUXYZ<>  ¶ Â Ö î   (  ¤  
¶ Â Ö î   
   Ü   DJp  (  Ü 2 
D
Jpz 
  * è â ŠÖâ  !  è â Š
Öâ 
 *  6   w	  &D…•Â¥% “ùŠÀåB  & 
¹«WŒ *  \ ‡ & Ð¥V A ÷	  À
ÀCƒ
Â   <©P}*  ‚ 2£ÿÿÂ
û„
Â¦ Ž‡AÎÞ	ÖÐÐ•% 
  ÿÿ *  ¨ „ Ì¥V å‡ P”Ã
ý‡ Ð•  B”f‚÷	    (:©  Î Ã
õ‡ æ  =æ  :æ"  :©ÿ ÿ
:©       ÿ
*  ä   7æ  4H”ÈÅ€ ¢  ¢ È•  €
Ã
ò"  :©  €

<© ÿ
*  
‡ ÷	h Š€‡ Ð• Ã
ü7
  ‡ Ð‹Ã
üÀ

  3M`©  *  0‡ Ð• Ð•
 ·
  Ã
ø‡ æ  æ  Ð•	 A*  3M`©  :©¿` ÿ
 :©Ï_  €
*  V¦
NÞ	Ã
ö–
‡ æ  ôA÷	  Ã
û‡ Ð•  :© ÿ
 [©(}*  |  Ã
ü‡ Ð•	 Aæ ÷	  AÎ
ûÖÂ	 ÷	$   [©(}*  ¢Ð•. ÷	  Â ÷	 AÐ•; 
÷	  Ã
à‡ Â
  
[©(} :©Ï_*  Èýð¥  ÿÿùÀ
øAá÷	  E‡ AáÂ÷	  E  a© }&é«@Q  î‡        HM   pÁ  *        YM     pÁ     ¯”L  ï[Œ@  ò[ÿ@  *  ó[\}@  ó[¥@  ¹«WŒ@      (  ­ì](x   ¯ªàh  ¯”   
   ­ì]  *    ¢ 8‡w	  ¦Â  „  ƒ‚  Ê± *°,    ¹«WŒï[Œó[¥ó[\}*  & °,  aóÊE  ! ‡„ ôE € 
*  L 
¢ ‡ ¢ ‡ Ãe  ææ
Ü Þ	  ò[ÿ
  r Þ	‚‡        tM   ÜÆXÀ*  3aà~    ÜÆXÀ   ¯”L  é[Ì`@  ï[y‹@  *  ï[Œ@      (  ­Kr<> ÉªKrh  
­ÿ<h 
  ¯”   
   ­Kr  *    ¦Ê5 ‚ ú‚‡ ò û¦¦‚
 Ž 
Ê5  &  ùÊU Ž ‚öÖ‚      å
   
­ÿ  *    ÊE ¡ Ê5 @-&
¦ÎE ð&
&
¦ ¦ fÅ    (ï[Œ*  & &Ã‹DÄe  æÎ f  ææÿˆ  é[Ì`ï[y‹   L 	‡Ã‹
æ æ)ÿˆÌ‹€ÊU ± ‡        ‚M   ÜÆXÀ*  3aÐ    ÜÆXÀ   ¯”L  é[Ì`@  ï[y‹@  *  ï[Œ@  ó[¥@  ¹«WŒ@      (  ­Kr<v   ÉªJrh  
­ÿ<Ú ¯”   
   ­Kr  *    w	  Å  W-   ‡„ ¦Ê5 ‚ ú‚‡   ¹«WŒ
ï[Œó[¥*  & ò û¦¦‚
 Ž ÊU W-   ‡ƒ Ä   ó[¥*  L ó5 € îóE € Ê5  çÊE  Ž ‚äÖ  r ‚Ó
   
­ÿ  *    ÊE       w	  Ã  ×,   )‡ƒ &ó5 € "Ä   
¹«WŒï[Œó[¥*  & ô5 € &æ9ÿˆL‡ôU € 3   ææu*  L ÿˆ†óE  ææuÿˆ9‡óU € ¡ Ê5 `5ÊU  *  r ƒ „ &
¦ÎE ð&
&
¦ ¦ fÅ  &  $ï[Œ*  ˜ Ã‹DÄe  æÎ f  ææÿˆ	‡Ã‹  é[Ì`ï[y‹   ¾ æ æ)ÿˆÌ‹€ÊE  ÊU ± ‡        FM   HÁ  *  4a`	    HÁ     ¯”L  ô¨""@  ?±ŒH" *      (  ­4Š¬ 1±ÚKh 9±Ì`h =±Krh *  ?±y‹h  B±ÿh C±\}h C±¥h
 ­Kr<  *  
­ÿ<  ­~,¬  ­€,¬ 
­øl ¯”   
   ­4Š              ­~,           ô¨""           
­ÿ  ­Kr   ­€,        
   
­ø      ‡        Ž M   HÁ  *  Ba8"    HÁ     ¯”L      (  ­cŒ  *  á[ÚKH é[Ì`H í[KrH ï[y‹H  ò[ÿH   ó[\}H ó[¥H
 ¯”          JM   ¨À  *  4s    ¨À     ¯”L  ¹«WŒ@      (  "  
­D"(¢ œ«h  ¡«hB ¯”   
   
­D"  *    w	  Áe ÁE ƒ ‡ÀúÊ„D`Ä Ê  ¹«WŒ*  & Ábˆl „ ˆl r ‡ w	  

B  "¹«WŒ*  L €Áe ÁE "s  ‚ÂÅ      s- *  r  ƒÅÀîÂÅ Csà Ãl È  ˜ À¡ ± ‡        † M   0À  *  þv     0À     ¯”L      (" ¹«´‰h  
  ¯”   
         &    &æ¦f&¦
 v Þ	€‚ƒ„…‡        € M   ¨À  *  þv˜q    ¨À     ¯”L      (  
­D"(   ¹«WŒh  ¯”   
   
­D"      &æf… Þ	ƒ„…‡        x M   €À  *  þvPŒ    €À     ¯”L      ( ¹«h  
  ¯”   
             f&¦‚ Þ	€‚‡        r M   0À  *  Šð    0À     ¯”L  ï[ŒH, s©ÀH      & *  ,«0zH* 5¬ ™H. °sH(     (  ¯”          ª M   tÀXÀ*  `Š(}    tÀXÀ   ¯”L      (  ­#ì *  
­ZTì  ü¬›ì  ­#ì  5¬!™h  ¯”   
   ­#        
­ZT           
  ü¬›         ~ M   ¨À  *  *¯¤`    ¨À     ¯”L  Ü²ó`@      (   Ÿ sh  ¯”   
             ÀSw     
Ü²ó`       M   0À  *  3à    0À     ¯”L  Ü²)d@      („   3àh  ¯”   
         *    ÷	    ‚C …Æå‚ €&æqÿˆ   Ü²)d*  & ñ       F¦ r   Áeüÿ
@ÅA E 2*  L  „cD!†ÁD ï²  2 ° r Á  r  Á8ÿ–
€H‡        ¢ M   0À  *  4Ùf    0À     ¯”L  Ü²#@  Ü²)d@        ( 4Ùfh  ¯”   
         "    ÷	     &
CÎÊCÉ÷	  	  Ü²)dÜ²#       ˜ M   ¨À  *  ;¯VN    ¨À     ¯”L  Ü²#@  Ü²)d@        ( F	VNh  ¯”   
             ÷	    RRR÷	    Ü²)dÜ²#       ô M   0À  *  r	À+    0À     ¯”L  Ü²#@      (D *  r	À+h  ‘Àh ¢À+h 2      À+h !!Àh   xQ  h }…Àh$ ¯”   
         *    À9À7À;ÀuÀwÀyÀ"  & {D&
f¡ ‡W#ÿÿv &w      Ü²#       æ M   ÐÀ  *  b³s;    ÐÀ     ¯”L      (V v8 h *  9€phB ª:  h  @; (h ìY  h ¯”   
         *    ÷	L @W‡ ÷	 @@@‡ ÷	8 @
‡ ÕA 
B€*  & Âe —  †Â
Á@ûí@‡ ÷	
 A@@K  L @P‡ Õ@‡        ~ M   ¨À  *  y¯X    ¨À     ¯”L  Ü²ó`@      (   ö,h  ¯”   
             Àw     
Ü²ó`             ” M   ÐÀ  *  †¯T    ÐÀ     ¯”L  Ü²#@  Ü²)d@        ( ö`Th  ¯”   
             ÷	     Îw     Ü²)dÜ²#       ~ M   QÀ  *  ³¯ˆ    QÀ     ¯”L  Ü²#@      (   {ˆh  ¯”   
             &
÷	  _  Ü²#       ~ M   ¨À  *  Ö¯L	    ¨À     ¯”L  Ü²#@      (   q!òyh  ¯”   
             &
÷	  e  Ü²#       ~ M   ¨À  *  Ö¯ˆ    ¨À     ¯”L  Ü²#@      (   q!ˆh  ¯”   
             &
÷	  a        Ü²#       ü M   ¨À  *  Þ¯g'    ¨À     ¯”L  Ü²#@  Ü²)d@  *      (> ²0 h  Ë:Kh 	#n~h& œw0 h   ñ~h  ¯”   
         *    ÀÀ!À#÷	     Î#w   À)  Ü²)d"Ü²#  & À5÷	    CÒ&w     
Ü²)dÜ²#       ¢ M   0À  *  #Oq    0À     ¯”L  Ü²#@  Ü²)d@        ( #Oqh  ¯”   
         "    ÷	     Ä CÃÒÄ
ú÷	  Y  Ü²)dÜ²#       š M   0À  *  #€    0À     ¯”L  Ü²#@  Ü²)d@        ( #€h  ¯”         
             ÷	     f¦

÷	  Y  Ü²)dÜ²#       ò M   ÐÀ  *  q³˜:    ÐÀ     ¯”L  Ü²#@  Ü²)d@  "      (V ·k  h ñ’˜:h  ¯”   
         *    ÀÀ&
&
&
&
÷	   ` ¶  fRC  Ü²)d*  & ÃÒCÃÒRC



	
ÃÒÒÒÒ  L ÒÒ&w     Ü²#       š M   0À  *  œ,Oq    0À     ¯”L  Ü²#@  Ü²)d@        ( œ,Oqh  ¯”   
             ÷	    &
B‰÷	  A  Ü²)dÜ²#       ’ M   0À  *  Ë- –    0À     ¯”L  Ü²#      @  Ü²)d@        ( Ë- –h  ¯”   
             ÷	    ÷	  q  Ü²)dÜ²#       € M   ¨À  *  ,°ò    ¨À     ¯”L      ( œ,òh  
  ¯”   
              CÃ‹
@ÃŠAW ÿÿHÐ÷‡        ” M   ¨À  *  ,°VN    ¨À     ¯”L  Ü²#@  Ü²)d@        ( œ,VNh  ¯”   
             ÷	    R÷	    Ü²)dÜ²#       ¾ M   ÐÀ  *  ,°ÄQ    ÐÀ     ¯”L  s©À@  Ü²)d@        (4 œ,ÊQh  ¯”   
         *    ÷	    ‚ÆåP æ)€&ÿˆÂ      Ê  À(   Ü²)d$s©À  & Ö‘“Î ‘•À
û‡        ¨ M   ¨À  *  ,°:d    ¨À     ¯”L  Ü²#@  Ü²)d@        ($ œ,:dh  ¯”   
         (    ÀA÷	     „&
&
& &&w     
Ü²)d&Ü²#       ’ M   ¨À  *  ,°€    ¨À     ¯”L  Ü²#@  Ü²)d@        ( œ,€h  ¯”   
             ÷	    ÷	  ?  Ü²)dÜ²#       † M   ¨À  *  v°L	    ¨À     ¯”L  Ü²#@      (   ùòyh  q:òyh  ¯”   
             &
÷	  c  Ü²#       ž M         ¨À  *  ±u~    ¨À     ¯”L  Ü²#@  Ü²)d@        ( zQÀDh  ¯”   
             æ÷	    RRRI!
÷	    Ü²)dÜ²#       FM   ¨À  *  ±\M    ¨À     ¯”L  ì)`	@  ¯ªà@  *  ,«0z@  Ü²)d@      (€ |Sì]h  ¯”   
         *    ÷	    ƒ ÃæÎ Î• ƒÒÒÒ€Ä  Ü²)d*  &   4  ÄÄe  
€÷	  À † Æe
 	  ,«0zì)`	¯ªà*  L ‡ æ f…Õ&æ¦f&Ä  ü	  €‚ƒ  ,«0z ì)`	  r „…–%æsÿˆ         È M   ¨À  *  °Pw    ¨À     ¯”      L  s©À@      (( *  °\qh °Pwh  °ôxh °zh °ƒ…h  
  ¯”   
         *    &
&
&
&
Af f&ÿˆÀ  ‡Þ  €
  s©À  & ‡        º M   ¨À  *  “±ä    ¨À     ¯”L  °Pw@  4°u~@        (, áy sh  ¯”   
         *    Õf B 
Á A ÷	  À&
&
f  4°u~
  & ¦w     °Pw       È M   ÐÀ  *  ,°H:    ÐÀ     ¯”L  d©°;@  Ýª K@        (: 4°u~h  ¯”   
         *    W  Æå „&æ=ÿˆÆe €÷	  Áeô  $Ýª K  & @      BÀè÷	  

‡   d©°;       Ü M   ÐÀ  *  —±¼    ÐÀ     ¯”L  °\q@  °z@  *  4°u~@  ´²§*@      (2 ñ }h  ¯”   
         *    f ÕBw   A÷	  &
f¦æ æÿˆ†  °z4°u~  & w   Þ w     °\q´²§*       ” M   0À  *  \gÊQ    0À     ¯”L  Ü²#@  Ü²)d@        ( \gÊQh  ¯”   
             ÷	    R÷	    Ü²)dÜ²#       M   ¨À  *  —±Øs    ¨À     ¯”L  ð)€%@  ,«0z@  *  Ü²#@  Ü²)d@      (V ªgÀ…h  ¯”   
               *    &
÷	     Ä  ‚&
´  æÎe
 ÷	  m  Ü²)d,«0zð)€%&Ü²#*  & &f¦æ&fÅÅe  Ä  ü	  …„ƒ‚€  ,«0zð)€%  L æsÿˆ           Ø M   0À  *  Õ±æ    0À     ¯”L  Ü²)d@      (V   IqÎh  ¯”   
         *    ÷	    ÄŸÿ€À
 ? ‚Æå fæ'ÿˆ  Ü²)d*  & ÁEðÿ@@€€€€a
± BÁ
ýÄ  ˆ0Ä Æe  L  €‡        È M   ¨À  *  Õ±ž    ¨À     ¯”L  s©À@  Ü²)d@  "      (2 Kq¾ h  Kq ^h ¯”   
         *    ÀKÀM÷	          „&
&
& &&ÿˆ  Ü²)d  & Ö€È  ‡   s©À       ¦ M   0À  *  srà    0À     ¯”L  Ü²)d@      (*   sràh  ¯”   
         *    ÷	    ‚Áeüÿ@A B ú°  ²ì   Ü²)d  &  ‡        – M   ¨À  *  á±#    ¨À     ¯”L  Ü²)d@  Ü²@w@        ( Yq„h  ¯”   
             À ÷	    w     Ü²)dÜ²@w       ž M   0À  *  Us€%    0À     ¯”L  Ü²#@  Ü²)d@        ( Us€%h  ¯”   
             ÷	    €‚°       ÷	  Q  Ü²)dÜ²#       ~ M   ¨À  *  Õ±z    ¨À     ¯”L  Ü²ó`@      (   [qM…h  ¯”   
             À/w     
Ü²ó`       ª M   øÀ  *  ä±Èx    øÀ     ¯”L  á)àHúÿä)pHðÿ*  é) xHèÿì)`	Hìÿð)€%Hþÿð)û5Hòÿô)pHîÿ*  ô)–œHôÿõ)àHøÿlOp…Hêÿó[°	Höÿ    (  
  ¯”          ¤ M   ¨À  *  ý± X    ¨À     ¯”L  Ü²#@  Ü²)d@        (  –w h  ¯”   
         $    ÷	    ƒ ö ƒæ æ÷	  G  Ü²)d Ü²#       Ô M   ÐÀ  *  ²      Ïy    ÐÀ     ¯”L  s©À@  Ü²#@  "      (> Iqh0 Ïy€}h  ¯”   
         *    Õ 
Á B÷	( W/   	‚D  Ä
ÁüÁ7    (s©À  & ‚
½ ‡ f &
÷	  }  Ü²#       º M   0À  *  •y€%    0À     ¯”L  Ü²#@  Ü²)d@        (, •y€%h  ¯”   
         *    ÷	    @ƒ€ÃÃÒƒÃð   Ü²)d
  & ÷	  E  Ü²#       ¼ M   ¨À  *  
²z    ¨À     ¯”L  Ü²)d@  Ü²@w@        (. Ös  h  ¯”   
         *    À÷	   X ƒÃe ÄÔÔ       ÅETÅ  
Ü²)d  & ETw     
Ü²@w       ~ M   ¨À  *  ²4f    ¨À     ¯”L  Ü²#@      (   z4fh  ¯”   
             &
÷	  -  Ü²#       ê M   ¨À  *  ž²jM    ¨À     ¯”L  Ü²""@  Ü²#@        (V ¼`h  ¯”   
         *    @À‹#A  Á
ÁE &
&
BÂ
— ? ‚ƒÃEðÿÂ@*  &  
± DÃ
ýQÀŠí‚‚‚‚¦÷	  +–%  $Ü²#  L À ÷	  ‡   
Ü²""       ~ M   ¨À  *  ž²õx    ¨À     ¯”L  Ü²#@      (   ÃHXh  ¯”   
                   &
÷	  1  Ü²#       z M   ¨À  *  ´²§*    ¨À     ¯”L      ( ´²§*h  
  ¯”   
             æ æ)ÿˆæ æÿˆ‡        ² M   ÐÀ  *  Ü²""    ÐÀ     ¯”L   ©`;@  ¹«´‰@        (( Ü²""h  ¯”   
         *    ÷	  ÀÀa  ÀaÈ	ö ‡ ÷	    ä‰å‰  ¹«´‰ ©`;  & ‡        Œ M   ¨À  *  Ü² #    ¨À     ¯”L  s©À@      (   Ü²#h  Ü²#h ¯”   
             ¦ÿˆ€È  ‡   s©À       š M   ¨À  *  Ü²ó`    ¨À     ¯”L  Ü²      #@  Ü²)d@        ( Ü²ó`h  ¯”   
             ÷	    ƒæ æ&w     Ü²)dÜ²#       Ä M   ¨À  *  Ü²)d    ¨À     ¯”L  Ü²""@      (H   Ü²)dh  ¯”   
         *    „C“Âà‡&
Â
ûÂ`‚
‚`Ba¦—#&  & ÿÿ‡
Ã
õ‚L À €÷	      "Ü²""       ¨ M   ÐÀ  *  Ü²@w    ÐÀ     ¯”L  Ü²#@      (,   Ü²@wh  ¯”   
         *    Æå ‚CÒÒCÃÃe ÒÒÒÒ&w       &Ü²#
  &             ^M   ¨À  *  zµz    ¨À     ¯”      L  ¢
.€H ¬
5…H *  ¬
q…H ¬
……H ´
ÑpH , H 2‘H *  2ÑpH 3^sH 3®sH tÑpH #""H *  #žwH #zH #úH  ¬#‘H ¸#N&H *  ¸#óyH ¸#v~H ,0‘ƒH ,0œƒH ,0ÏƒH *  ,02„H ,05…H ,0q…H  ,0……H -0’H *  -01H 00ÑpH 00‡qH 00sH  00sH *  00sH 40‘8H 40È8H 40Ì8H 40á8H *  40’9H 40Q:H 40W:H 40;;H
 40:<H  *  40wH 40ÇwH 40ÛwH 40ÜxH 40üxH *  40CyH 40NyH 40RyH 40žyH 40ÑyH *  40îyH  40óyH 401zH 40<zH ¡UQdH *  «U-}      H «UÎ}H «UH «UV€H ©ní]H
 *  ©nŽ^H ©n¾^H ©nµ_H ©nL`H ©nR`H *  ©nº`H ”st	H  ”s¢H €”sÔH ”s#H *  ”sìQH€ ”s,XH@ ”s`XH ”sLqH ”s}…H @*  ”s¤’H [t{8H [tœÆH  [t¥ÆH [t«ÆH *  ät‘H çtà8H  çt LH çtµWH çt:dH *  çtßfH çtBxH çtóyH ñtÛwH ñtCyH *  ñtNyH ñtRyH
 ñtîyH òt‘H ótn†H *  õt›XH õtZH õtZH õtZH
 õt]ZH *  õteZH õt…ZH õtZH õt®ZH ötQH *  öt.H ötQ–H öt.™H ${‘H ${H *  ${n	H %{Î}H &{-dH 0{­pH       2{-H *  2{‘H 2{ H 2{n"H 2{­pH 6{!H *  6{,H 6{!€H 6{,€H ­‡‘H Ô’§H €*  Ô’ÔH Ô’7!H  Ô’#H Ô’xQH€ Ô’qH@ *  Ô’LqH Ô’VsH Ô’}…H @Ô’¤’H Ô’RæH *  .”ÒH .”»H .”à8H  .”ÖKH
 .” LH *  .”¶^H .”ìqH .”BxH .”’yH .”óyH   4”ŽwH     (  ¯”          ZM   OÀÅÎ*  ?uÖd    OÀÅÎ   ¯”L  p©Åœ@  Ã©i"@  *  .ªK@  .ªþK@  («v"@  («X@  R«°'@  *  « w@  ¹«]Œ@      (T «E`h ¯”   
         *          ÷	  ÷	  †‡ ÂÂeìÿ
û	J ‡      ÂÂeàÿ   R«°'(«Xp©Åœ¹«]ŒÃ©i"*  & 
û	J ‡ÂÂe  ÷	  	‡ÂÂeÈÿ
5
> û	J †  («v"0 
.ªþK   L w   w     .ªK
« w       $M   OÀ…È*  3uIq    OÀ…È   ¯”L  J©v"@  Ã©i"@  *  .ªK@  .ªþK@  R«³'@  « w@  ¹«]Œ@        (D «•h ¯”   
         *      ÷	  ÷	  †‡ õ¥@  †õ0û fÂÂeÞÿ  R«³'¹«]ŒÃ©i""  & 
û	J ‡ÂÂe  ÷	  †w   w   !  J©v"2 
.ªþK.ªK « wŒ       ° M   NÀEÛ*  3ukM    NÀEÛ   ¯”L  D©ö`@  Ã©`"@  "  ¹«]Œ@            ( «¯h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
Ã©`"D©ö` 
v       ° M   NÀÅÎ*  3uþ_    NÀÅÎ   ¯”L  G©¶Z@  £«i"@  "  ¹«]Œ@      ( «&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«i"G©¶Z 
¯       ² M   NÀEÛ*  4u;;    NÀEÛ   ¯”L  i©öy@  £«`"@  "  ¹«]Œ@      ( «{h  ¯”   
             ÷	  ÷	  †‡ æÎe  ‚{ J   ¹«]Œ
£«`"i©öy 
        ° M   OÀ¼*  7u`"    OÀ¼   ¯”L  Ý©6€@  £«`"@        "  ¹«]Œ@      ( «œ,h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"Ý©6€ 
        ° M   NÀÕ*  @u`†    NÀÕ   ¯”L  U«6€@  £«`"@  "  ¹«]Œ@      ( «\gh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"U«6€ 
        ° M   NÀÕ*  6ut:    NÀÕ   ¯”L  ¹©¶Z@  £«`"@  "  ¹«]Œ@      ( «ö&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¹©¶Z 
        ° M   NÀÕ*  Eu¡d    NÀÕ   ¯”L        £«`"@  ¹«]Œ@  "  ¬6@      ( «Ä…h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¬6 
        ° M   NÀÕ*  4u%!    NÀÕ   ¯”L  e©6N@  £«`"@  "  ¹«]Œ@      ( «Ôh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"e©6N 
        â M   NÀ…á*  Bu    NÀ…á   ¯”L  •«õ
@  £«`"@  *  ¹«]Œ@  j¬õ<@      (* «Iqh «™’h 
  ¯”   
         *        ÷	  &
÷	  æ ÷	  †–
‡ ÂÂeàÿ   •«õ
j¬õ<
¹«]Œ¹«      ]Œ£«`"  & { J        ü M   NÀ…È*  5u»p    NÀ…È   ¯”L  š©õ
@  Ã©i"@  *  .ªK@  .ªþK@  R«°'@  ¹«]Œ@      (2   «"h ¯”   
         *        ÷	  ÷	  †‡ æÂÂeìÿ
û	J ƒ‡ÂÂe  R«°'š©õ

¹«]ŒÃ©i"  & Þÿ
÷	  w     
.ªþK.ªK       ¬ M   NÀEÂ*  5u%™    NÀEÂ   ¯”L   ©µ@  Ã©`"@  "  ¹«]Œ@      ( «#h ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J    ©µ¹«]ŒÃ©`"       Â M   NÀÕ*  4uH;    NÀÕ   ¯”L  p©Åœ@  Ã©`"@  *        « w@  ¹«]Œ@      (" «h ¯”   
         &      ÷	  ÷	  †‡ ÂÂeðÿ
µ> û	J w     p©Åœ¹«]ŒÃ©`"$« w       ¦M   OÀEÂ*  9uüX    OÀEÂ   ¯”L  «)x@  «¶{@  *  «¸{@  «º{@  «¼{@  «¾{@  ¹«´‰@  *  5¬ ™@  
­XT@      (Š «v:h  «6xh 
  ¯”   
         *    ÷	  Ã  Ãóµ ( ¡ ‡ ÷	  Ã  ÃÄó*   ¹«´‰
5¬ ™¹«´‰ 5¬ ™*  & ± ‡ À  Á  ÷	< Á  ÷	4 Á  ÷	, Á     «¶{«¸{«º{ «¼{(«¾{*  L ÷	$ À  Á  ÷	 3
$ ó& óe" & ó ( ¡   

­XT      «)x  r ‡ 
Bà4þÿ
ˆ
@‡        M   NÀèã*  Gu¼    NÀèã   ¯”L  «êv@  ¹«]Œ@  "  5¬ ™@      (f «ñh  ¯”   
         *    ÷	  E …)‡Å'Í¥ $Ã  Ãó5 ( À  ¹«]Œ5¬ ™*  & pÿ÷	  D „‡Ä£	 ôµ  æ  æ  «êv  L )ÿˆæ  æÿˆè‡ Ààú÷	    «êv       ¬ M   NÀÅÎ*  Buá"    NÀÅÎ   ¯”L  £«`"@  §«õ<@  "  ¹«]Œ@      ( «!th ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   §«õ<¹«]Œ£«`"       ¬ M   NÀEÂ*  DuÖs          NÀEÂ   ¯”L  £«`"@  ¹«]Œ@  "  ò«ˆ@      ( «åh ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   ò«ˆ¹«]Œ£«`"       jM   NÀÅç*  6u"    NÀÅç   ¯”L  ¼©õ‡@  Â©õ#@  *  «µ@  •«µO@  £«`"@  ¹«]Œ@  È«õ
@  *      (L «u'h «U(h «T[h0 «Tqh
   «Ayh& ¯”   
                       ÷	  &
÷	&  •«µOÂ©õ#¼©õ‡
È«õ
«µ¹«]Œ*     æ ÷	  æ 	÷	  æ ÷	  æ ÷	  ¹«]Œ¹«]Œ¹«]Œ"¹«]Œ  :   †‡ ÂÂe¼ÿ{ J   £«`"             ä M   XÀ  *  `	    XÀ     ¯”L  #z@  $9Ì@  "  s©À@      (F s©<dh  ¯”   
         *    æ|³&€&
f& &æGÿˆ‡&
&
&
&
& $  & &æÿˆÀ  †×'    ± À  –‡   #zs©À$9Ìs©À       R M   vÀ›½*  ƒ,d    vÀ›½   ¯”L      (  
­D"(  
  ¯”          DM   wÀ[Ð*  K	VN    wÀ[Ð   ¯”L  s©À@  °s@  *  ù±oŒ@      (  
­D"(„ ;¯VNh  a³VNh 
  ¯”   
   
­D"  *    w	  fB C 	œ" ¦æ&æÿˆ	‡÷	8   ù±oŒ*  & †Â  ÃSYî      ð  * ‡ Å° p0 p2   s©À*  L q 1 ð• * ‡ Á  Áe œ" f¦æ  °s  r ÿˆ‡DC’B A ‡        ÄM   wÀøÊ*  ¯ˆw    wÀøÊ   ¯”L  °s@  ù±oŒ@  *  b³—G@  f³Ð@  i³‚@  q³¯:@  r³"&@  *  w³·€@      (  
­D"(¸ „¯½`h  ¯”   
   
­D"  *    w	  ð * 8 w œ ðµ  ðµ ) ÷	  ù±oŒ*  &   ðµ   ð¥   øÿÿ  Bà÷	  &œ  b³—G&w³·€*  L * ÷	  
„&
ðµ # ðµ!  ðµ ) &  i³‚*  r ÎeP æÂ  Âe Ê¦æðµ # &æ  °s$  ˜       •&Ä ÷	  †•p* ÷	  w     q³¯:r³"&"f³Ð       @M   wÀ›½*  •e	    wÀ›½   ¯”L  °s@  f³Ð@  *  i³‚@  q³¯:@      (  
­D"(v c³Iqh  
  ¯”   
   
­D"  *    ðµ  0fÂ  &
Âe
 Ê%ÿÿ¦æ&æ  °s*  & &ÎeH æ
÷	  U•
 Â …Ã  i³‚*  L ÂE •ÕfÄ ÷	  p  †ñ  ±
    q³¯:  r w     f³Ð       Ü M   vÀÊ*  zÌ    vÀÊ   ¯”L  i³‚@  q³¯:@  *      (  
­D"(6 e³²Zh  f³t:h r³®Sh 
  ¯”   
   
­D"  *          Ä Ä Ä 	ðµ  	f÷	  u
 ÷	     i³‚(q³¯:  & ‡ ñ  ±
  ‡        ²M   wÀÊ*  œ,      wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³J,@  p³—y@  r³Þ@  *  r³ü@      (  
­D"(‚° }h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³J, r³ü*  &  ÷	Â ð¥öÿ* 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* úðµ  ÷	  ó‡÷	  ï‡ðe  p  p³—ye³&*  r   p  ‡÷	Â â‡ ð¥   Cƒ
ó*  ˜ Ãðµ  ÷	Ð ð¥   ð 0 ã      ð•Øÿ* *  ¾ Äð¥   æÂe@ Ã Îà÷	x ƒµ‡÷	 ²‡*  ä 
ÁE p ¬ðµ  ÷	| ð p *  
 °  æÄ ð Îà÷	, ƒƒ÷	J *  0á÷	 ù†ð•Øÿ* Á`‡ æ÷	  ƒ ‡ æ  r³Þ*  V Càƒ#ƒÎà÷	  Î¦÷	Ôÿ‚ð†–
‡    m³oŒ
  |DàÄ ‡        ¦M   wÀÊ*  œ,hy    wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³K,@  r³ü@  s³k@  "      (  
­D"(~°	€h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³K, r³ü*  &  ÷	² ð¥öÿ* 	ð       ð * ðÕ ) w     (f³Ð*  L ð•öÿ* ú÷	  ÷‡ðe  p  p  ‡÷	Â   e³&*  r ê‡ ð¥   Cƒ
óÃðµ  ÷	Ü *  ˜ ð¥   ð 0 ãð•Øÿ* Ìð¥   æÂe*  ¾ @ Ã Îà÷	„ ƒ½‡÷	 º‡
ÁE p ´ðµ *  ä  ÷	ˆ ð p  °  æÄ *  
ð Îà÷	8 ƒƒ÷	V á÷	 ù†ð•Øÿ* *  0Á`‡ ðµ ) w   æ÷	  ƒ ‡ æ Cà  s³kr³ü*  Vƒ#ƒÎà÷	  Î¦÷	Èÿ‚ð†–
‡  DàÄ   m³oŒ  |‡        JM   xÀ¸Ý*  E`€W    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  b³Ó@  c³      Iq@  d³?!@  e³²Z@  *  f³Ð@  f³t:@  f³y:@  i³‚@  m³lE@  *  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@  *  s³þ}@      (  
­D"(àh±p!h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w úðµðÿ  ù±oŒ
°sf³y:*  &  w ,ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w øÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÷	  ‡÷	*ñ   s³þ}*  ˜   Tðµ # ÷	  ‡Lðµ   ð¥     f³t:*  ¾  ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0 *  ä p2 ÷	  ï‡ðµ # 'ðP ðÕ )       ÷	  †ðµ  
c³Iq$e³²Z*  
@ # ð¥Çÿ* ð * ff f ÷	  ±   $d³?!*  0± ‰‡÷	  †
w ò ðµ  ð  8 ðe$   e³²Z"°s*  V8 2 &À  Áe ÷	  €Z‡p8 q
 ÷	  °s¡«*  |ì V‡0
 ð  ðµ  #0  0  œ  *  ¢Ä¥ ‚‡œA Ä¥ ÄŠð ð•   *  È00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ* 0
@   r³,}*  î÷	  „ðµ # &
&æµ &Ä ÷	  †  i³‚&q³¯:*  ‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ*   r³"&*  :ÁeB Â÷	  ÷	  °•* âð•Õÿ* äð•Ôÿ*   r³®Sm³      lE*  `àð•Óÿ* Üðµ  w ÷	  ÕeB Æå
 •  i³‚*  †Åe > Ä €…
ðµ  # ÍÕ Ä ðµ *  ¬# Ä DÃÍÅ ÑÄ ðµ # Ä …& *  Ò0
 ðµ # Õü Õ÷
 
÷	    (q³¯:*  ø‡0 @ ° Æe
 EX‡°
6 ðµ   ðÿ*   ðµ # ð 
 ðµ@ # ðÿ? ðµ@ # *  D0 4 0
 6 ðµ  1ðµ # )÷	  †æ   "r³ë*  jð¥öÿ* * ÷	pþ°* ðµ@ # 0l  *  ðµ # 	ð•   ð•  02  ðµ  8 *  ¶÷	  ÷	  ‡  ðµ!  ðµ   p0 p  b³Ó
f³Ð  Ü2 ‡        M         xÀ¸Ý*  F`à8    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  f³Ð@  f³y:@  *  i³‚@  q³¯:@  r³"&@  r³,}@  r³ë@  "      (  
­D"(4h±ì&h  ¯”   
   
­D"  *    w	  Á  w zñB ÷	  ð8 w rðµðÿ  ù±oŒ
°sf³y:*  &  w €ðµ # ðµ  ðµôÿ w lœ*  L   Ä¥ †w LÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  †  &a³VN*  ˜ w ò ÷	tñ  ðµ  w ì ±
  ðµ  *  ¾ ð  8 ðe$ 8 2 &À  Áe ÷	  €R‡  °s°s"¡«*        ä p8 q
 ÷	Î N‡0
 ð  ðµ  #0  *  
0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð*  0 ð•   00  0  ÷	  0
@ ‡ ÷	 ð•  r³,}*  VÕÿ* 0
@ ÷	  „ðµ # &
&æµ &  i³‚*  |Ä ÷	  †‡ ð•Ùÿ* ÷	  ð•Ëÿ* ± ‡ ð•Äÿ  
q³¯:r³"&*  ¢* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ  w *  È÷	  ÕeB Æå
 •Åe > Ä €…
ðµ  i³‚*  î  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ *  ðµ # Ä …& 0
 ðµ # Õü*  : Õ÷
 
÷	  ‡0 @ ° Æe
 E  q³¯:*  `X‡°
6 ðµ         ðÿ ðµ # ð 
 ðµ@ *  †# ðÿ? ðµ@ # 0 4 0
 6 ðµ  1*  ¬ðµ # )÷	  †æ ð¥öÿ* * ÷	Žþ°*   r³ë*  Òðµ@ # 0l  ðµ # 	ð•   ð•  *  ø02  ðµ  8 ÷	  ÷	  ‡  ðµ!   b³Óf³Ð   ðµ   p0 p2 ‡        PM   xÀ¸Ý*  F`ÐW    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  c³Iq@  d³?!@  *  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  *  m³lE@  q³¯:@  r³"&@  r³®S@  r³,}@  *  r³ë@      (  
­D"(æh±²'h  ¯”   
   
­D"        *    w	  Á  w ñB ÷	  ð8 w  ðµðÿ  ù±oŒ
°sf³y:*  &  w 2ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w þÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  ‡  &a³VN*  ˜ ÷	*ñ  Tðµ # ÷	  ‡Lðµ   ð¥   f³t:*  ¾    ×  †ð•Øÿ* w F
Å`p!2 ü‡Åà*  ä Åp0 p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  c³Iq*  
  †ðµ@ # ð¥Çÿ* ð * ff f ÷	  e³²Z*  0  ± ± ‰‡÷	  †
w ò ðµ  ð    d³?!e³²Z(°s*  V8 ðe$ 8 2 &À  Áe       ÷	  €Z‡p8   °s¡«*  |q
 ÷	ì V‡0
 ð  ðµ  #0  0 *  ¢ œ  Ä¥ ‚‡œA Ä¥ ÄŠð *  Èð•   00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ*   r³,}*  î0
@ ÷	  „ðµ # &
&æµ &Ä   i³‚*  ÷	  †‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñ  q³¯:r³"&*  :Â&œ* ÁeB Â÷	  ÷	  °•* âð•Õÿ* ä  r³®Sm³lE*  `ð•Ôÿ* àð•Óÿ* Üðµ  w ÷	  ÕeB   "i³‚*  †Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä*  ¬ ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä *  Ò…& 0
 ðµ #       Õü Õ÷
 *  ø
÷	  ‡0 @ ° Æe
 EX‡°
6 ðµ     q³¯:*  ðÿ ðµ # ð 
 ðµ@ # ðÿ? ðµ*  D@ # 0 4 0
 6 ðµ  1ðµ # )÷	    (r³ë*  j†æ ð¥öÿ* * ÷	pþ°* ðµ@ # 0l*    ðµ # 	ð•   ð•  02  ðµ  *  ¶8 ÷	  ÷	  ‡  ðµ!  ðµ     b³Óf³Ð  Üp0 p2 ‡        *M   vÀÊ*  af Z    vÀÊ   ¯”L  a³—K@  e³&@  *  e³&@  r³ë@  w³œ€@      (  
­D"(\   p³¿Zh  ¯”   
   
­D"  *    ° 6 p 4 
 ì0 Á`p       ÷	  ‡ ÷	  ü‡   e³&&a³—K*  & æf¦ðµ ) ÷	  ‡°6 °4 ÷	  °e ð‹  w³œ€"r³ë  L * w   Æe ± ‡   
e³&       M   wÀ›½*  \g      wÀ›½   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³J,@  p³“y@  r³Þ@  *  r³,}@  r³ë@  w³™€@  w³·€@      (    
­D"(r•± }h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³J,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ        ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðµ   r³,}$f³Ð*  ¾  ÷	  †ð¥öÿ* ò0,  ÷	  ÷	Vé‡  
p³“y"r³Þ*  ä ðµ  
÷	  ‡ðÅ ) ð * ðÕ ) ðµ   e³&*  
 
ð¥   Óð¥   Ól ð 0 Ál*  0 ð  
ƒð¥   øÿÿ ÷	ª µ‡  ð¥*  V   ð  ð Òð¥   òe þÿÁe@ *  |Ã ÷	‚ 6‡  ÷	t /‡‚
ÂE ° ÷	¨ *  ¢ðe  p ðÕ )  ì ‡ðµ  ð¥*  È   , 	ðµ  ÷	 ÷	T ‡÷	  w Èþ  $r³,}*  îw ¾þ‡ ÷	  ‡÷	L †÷	  ‡ B æ ƒàƒ#        w³™€r³ë*  ƒÎà÷	  Îf÷	Ìÿ î†–
‡ Â`‡ ð¥  m³oŒ*  :öÿ* ð * w   ± ðµ ) 04  06 
   f³Ð  ` l0 ì ° ‡        ¼M   wÀ›½*  \ghy    wÀ›½   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³K,@  r³,}@  s³k@  *  w³™€@  w³·€@      (  
­D"(>•±	€h  
  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³K,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Š      f÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   0,   r³,}$f³Ð*  ¾  w   ðµ  
÷	  ‡ðÅ ) ð * ðÕ  
s³ke³&*  ä  ) ðµ  
ð¥   Óð¥   Ól *  
ð 0 Ðl ð  
ƒð¥   øÿÿ ÷	¦ Ä‡*  0  ð¥   ð  ð Òð¥   òe *  VþÿÁe@ Ã ÷	~ 4‡  ÷	p -‡‚
ÂE *  |° ÷	’ ðe  p ðÕ )  ì ‡ðµ*  ¢  ð¥   
, ðµ  ÷	 ‡÷	    (r³,}*  Èw êþw àþ‡ ÷	  ‡÷	: †w   ‡ B æ   w³™€s³k*  îƒàƒ#ƒÎà÷	  Îf÷	      Ìÿ î†–
‡ Â`  m³oŒ*  ‡ ± ðµ ) 04  06 
  l0 ì °  : ‡        Ê M   vÀÊ*  \qò    vÀÊ   ¯”L      (  
­D"(R   r³,}h  ¯”   
   
­D"  *    ðµ  $ ðµ  
ð¥   ’¤ð¥   *  & ’¤° 0  ð¥   0  l °  ƒ0
  L   ‡        Z M   tÀXÀ*  `Š }    tÀXÀ   ¯”L  ¼›HüÿÊ8THþÿ      (  ¯”       ð¥   
, ðµ  ÷	 ‡÷	    (r³,}*  Èw êþw àþ‡ ÷	  ‡÷	: †w   ‡ B æ   w³™€s³k*  îƒàƒ#ƒÎà÷	  Îf÷	          ›rØÆl^› 8$        ;+;;		RMS12X.ODL;	RSX/IAS: ALL FILE ORGANIZATIONS;;	1. THIS OVERLAY REQUIRES RMS-11K.;	2. THIS OVERLAY CONTAINS ALL RMS-11K FUNCTIONALITY, OPTIMIZED;	   TO FIT IN 12KB WITH MINIMUM NUMBER OF OVERLAYS.;	3. ALL MODULE REFERENCES ARE TO LB:[1,1]RMSLIB.OLB;	4. IN THE FOLLOWING TEXT, WHEREEVER A CHOICE IS INDICATED;	   AMONG ALTERNATIVE FACTORS, THE CHOICE IS EFFECTED BY;	   REMOVING THE LEADING SEMICOLON FROM THE FACTOR TO BE SELTED;	5. THE FOLLOWING OPTIMIZATIONS ARE INCLUDED IN THIS OVERLAY;	   DEFINITION. IF       OTHER OPTIMIZATIONS ARE DESIRED, YOU MUST;	   START WITH THE STANDARD RMS11.ODL AND PROCEED FROM;	   THERE. TO ATTEMPT TO OPTIMIZE THIS ODL ANY FURTHER MAY LEAD;	   TO UNRESOLVED SYMBOLS/MULTIPLE SYMBOL DEFINITION TKB ERRORS.;;		-OPEN & CONNECT ARE NOW IN ONE OVERLAY.;		-DISCONNECT & CLOSE ARE NOW IN ONE OVERLAY.;		-SEQUENTIAL RECORD OPERATIONS ARE NOW IN ONE OVERLAY.;		-RELATIVE RECORD OPERATIONS ARE NOW IN ONE OVERLAY.;		-NUMBER OF INDEXED OVERLAYS CUT FROM 32 TO 8.;		-NORMAL INSERTS OF DATA RECORDS PUT       INTO ONE OVERLAY,;		 SPLIT ROUTINES IN SEPARATE OVERLAYS(2).;		-INSERT OF RECORDS INTO ALTERNATE INDICES, INCLUDING BUCKET;		 SPLITTING, ARE NOW IN ONE OVERLAY;		-INSERT OF RECORDS INTO INDEX BUCKETS, INCLUDING BUCKET;		 SPLITTING, ARE NOW IN ONE OVERLAY.;;;-;RMSCM1:	.FCTR	LB:[1,1]RMSLIB/LB:R0AUTO:R0IMPA;;**************************************************;;	IF TASK BUILDING WITH THE RMS11 RUN-TIME SYSTEM(RSTS/E) ;	REPLACE THE TERM RMXXXX IN THE FACTOR RMSROT WITH RMS11X.;RMS11X:	.FCTR	RMSCM1-RMSREX-RMSIX0;;      **************************************************;;	IF TASK BUILDING WITHOUT THE RMS11 RUN-TIME SYSTEM(RSTS/E),;	REPLACE THE FACTOR RMXXXX (BELOW) WITH THE FOLLOWING:RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0RMSROT:	.FCTR	LB:[1,1]RMSLIB/LB:RMSSYM-RM0X3X;**************************************************; THE FOLLOWING FACTOR IS NEEDED WHEN TASK BUILDING WITH; RUN-TIME SYSTEM (RSTS/E).;; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.;;RMSREX:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXSY:R0RSES;***********************      ***************************; THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITHOUT; THE RUN TIME SYSTEM (RSTS/E).; SELECT ALL THREE.;RMSIO:	.FCTR	LB:[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLKRMSCBL:	.FCTR	LB:[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDATRMSCOM:	.FCTR	LB:[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB;;**************************************************; THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITHOUT; THE RUN TIME SYSTEM (RSTS/E); SELECT ONE OF THE TWO FACTORS.;; SYNC SYSTEMS;RMSEXC      :	.FCTR	LB:[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS:R0RMSA;; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY);;RMSEXC:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB:R0RMSA-RMSEX1;RMSEX1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RSEI:R0FSET:R0FSEI:R0IFLF;;**************************************************RMSIX0:	.FCTR	LB:[1,1]RMSLIB/LB:R0RLSB:R0GETB	.NAME	RMS11	.NAME	RMSFAB	.NAME	RMSRAB	.NAME	RMSCRE	.NAME	RMSCD	.NAME	RMOPIN	.NAME	RMSSEQ	.NAME	RMSREL	.NAME	R2GUPD	.NAME	RMSIDX	.NAME	RMSBMC	.NAME	RMSMIS	.NAME	RMDEXT	.NAME	RMDRLB	.NAME      	RMDWTL;**************************************************; THE FOLLOWING GROUP OF FACTORS SELECT NON OPTIONAL; MODULES FOR THE FILE ORIENTED FUNCTIONS.; IF USING THE ASYNCHRONOUS EXEC CHOOSE THE FOLLOWING RMSFIL FACTOR:;;RMSFIL:	.FCTR	RMSFAB-RMSFL;; IF BUILDING WITH THE SYNCHRONOUS EXEC, CHOOSE THE FOLLOWING; RMSFIL FACTOR:;RMSFIL:	.FCTR	RMSFAB-LB:[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFLRMSFL:	.FCTR	LB:[1,1]RMSLIB/LB:R0CLCM-RMFILE-RMSFL0RMSFNM:	.FCTR	LB:[1,1]RMSLIB/LB:R0INIT:R0PRFN:R0XPFN:R0MKWA:R0ASLN-RM      SFL1RMSDPC:	.FCTR	LB:[1,1]RMSLIB/LB:R0DPYC:R0CKSM-RMSFL1RMSFL1:	.FCTR	LB:[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIORMSCLS:	.FCTR	LB:[1,1]RMSLIB/LB:R1CLOS:R2CLOS-RMSCL0RMSCL0:	.FCTR	LB:[1,1]RMSLIB/LB:R3CLOS:R0CKSM-RMEXTD-RMR1RLRMSOPN:	.FCTR	LB:[1,1]RMSLIB/LB:R0OPFL-RMSOP0-RM0XY0RMCRCK:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCKRMCREA:	.FCTR	LB:[1,1]RMSLIB/LB:R0CRFL:R0MFNB:R0RD50-RMSCR2RMSCR0:	.FCTR	RMSCRE-LB:[1,1]RMSLIB/LB:R0CRXI-RMSCR1;**************************************************; SELECT THE FOLLOWING FOUR       FACTORS FOR THE RSX ENVIRONMENT.;RMFILE:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXACRMSOP0:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50RMSCR2:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXCR:R0RXMD:R0RXDIRMSER1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXMD-RMSOP0;; SELECT THE FOLLOWING FOUR FACTORS FOR THE RSTS/E ENVIRONMENT.;;RMFILE:	.FCTR	LB:[1,1]RMSLIB/LB:R0REOP;RMSOP0:	.FCTR	LB:[1,1]RMSLIB/LB:R0MFNB:R0RD50;RMSCR2:	.FCTR	LB:[1,1]RMSLIB/LB:R0RECR;RMSER1:	.FCTR	RMSOP0;;**********************************************************;; IF TASK BUILDING W      ITHOUT THE RMS11 RESIDENT LIBRARY (RSX); OR RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS MUST; BE SELECTED.;RMEXTD:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXTDRMR1RL:	.FCTR	LB:[1,1]RMSLIB/LB:R1RLBK:R1NXBKRMR1WL:	.FCTR	LB:[1,1]RMSLIB/LB:R1WTLS;; IF TASK BUILDING WITH THE RMS11; RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS MUST; BE SELECTED.;;RMEXTD:	.FCTR	RMDEXT;RMR1RL:	.FCTR	RMDRLB;RMR1WL:	.FCTR	RMDWTL;**************************************************; THE FOLLOWING IS THE STARTING FACTOR FOR DEFINING T      HE RMS11 CO-TREE.; THE FACTOR NAME RMSALL IS REFERENCED IN THE USERS ODL.;RMSALL:	.FCTR	RMS11-*(RMSFIL,RMSREC)RMSFL0:	.FCTR  (RMSFNM,RMSOPN-RMSDPC-RMSCDX,RMSCR0,RMSCLS-RMSMIC-RMSCD0)RMSMIC:	.FCTR	RMSERA-RMSEXTRMSERA:	.FCTR	LB:[1,1]RMSLIB/LB:R0ERFL-RMSER1RMSEXT:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXT0:R2BFMT-RMSFL1RM0XY0:	.FCTR	RMOPIN-LB:[1,1]RMSLIB/LB:R1OPFL:R2OPFL-RM0X30RM0X30:	.FCTR	LB:[1,1]RMSLIB/LB:R3OPFL:R3RPLGRMSCR1:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRFL:R2CRFL:R3CRFL-RMCRCK-RMCREA-RMCRXXRMCRXX:	.FCTR	RM0X21-RM0X31RM      0X21:	.FCTR	LB:[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM-RMSFL1RM0X31:	.FCTR	LB:[1,1]RMSLIB/LB:R3WPLG-RMEXTD;; IF USING THE ASYNCHRONOUS EXEC, DELETE THE :R0RSEI FACTOR FROM THE; FOLLOWING LINE.;RMSCDX:	.FCTR	RMSCD-LB:[1,1]RMSLIB/LB:R1CONP:R2CONP:R3CONP:R0RSEI-RMSCD1RMSCD1:	.FCTR	LB:[1,1]RMSLIB/LB:R0CCLN:R0ALBSRMSCD0:	.FCTR	LB:[1,1]RMSLIB/LB:R1DISC:R2DISC:R3DISC-RMSCD2RMSCD2:	.FCTR	LB:[1,1]RMSLIB/LB:R0CCLN-RMR1WLRMSREC:	.FCTR	RMSRAB-RMEXTD-(RMSBLK-RMSSQ0,RM0X26,RM0X36)RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2ARMIO2C:	.FC      TR	LB:[1,1]RMSLIB/LB:R2IOCK:R2CALC:R0CKSMRMIO2A:	.FCTR	LB:[1,1]RMSLIB/LB:R2FIND:R2GSET-RMIO2G-RMIO2PRMIO2G:	.FCTR	LB:[1,1]RMSLIB/LB:R2GET-RMIO2U-RMIO2DRMIO2P:	.FCTR	LB:[1,1]RMSLIB/LB:R2PUT:R2PSET-RMIO2HRMIO2H:	.FCTR	LB:[1,1]RMSLIB/LB:R2BFMT:R2EXTDRMIO2U:	.FCTR	LB:[1,1]RMSLIB/LB:R2UPDARMIO2D:	.FCTR	LB:[1,1]RMSLIB/LB:R2DELERM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31RMIO30:	.FCTR	RMOU3C-RMOU3D-RMOU3E-RMIO3P-RMIO3URMIO31:	.FCTR	(RMIO3G,RMOU3Q)RMIO3G:	.FCTR	LB:[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3KRMIN3K:	.FCTR	LB:[1,      1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKERMIN3S:	.FCTR	LB:[1,1]RMSLIB/LB:R3FRSE:R3POSE:R3POSR:R3FRRVRMIO3P:	.FCTR	LB:[1,1]RMSLIB/LB:R3PUT:R3PSETRMOU3Q:	.FCTR	(RMOU33-RMIO3D-RMOU3P,RMOU34,RMOU35,RMOU36)RMIO3U:	.FCTR	LB:[1,1]RMSLIB/LB:R3UPDA:R3USETRMIO3D:	.FCTR	LB:[1,1]RMSLIB/LB:R3DELE:R3DSET:R3RPLC:R3SKDLRMOU33:	.FCTR	LB:[1,1]RMSLIB/LB:R3PIXC:R3FRRV:R3DLSIRMOU34:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDR-RMOU3J-RMOU3F-(RMOU3K-RMOU3G,RMOU3A)RMOU35:	.FCTR	LB:[1,1]RMSLIB/LB:R3ISID-RMOU3H-RMOU3ARMOU36:	.FCTR	LB:[1,1]R      MSLIB/LB:R3UIDX:R3IKEY-RMOU3M-RMOU3O-RMOU3ARMOU3A:	.FCTR	LB:[1,1]RMSLIB/LB:R3ALOC:R3BFMTRMOU3C:	.FCTR	LB:[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKTRMOU3D:	.FCTR	LB:[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KREFRMOU3E:	.FCTR	LB:[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTRRMOU3F:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDI:R3BSRTRMOU3G:	.FCTR	LB:[1,1]RMSLIB/LB:R3BRRV:R3URRVRMOU3H:	.FCTR	LB:[1,1]RMSLIB/LB:R3ISDI:R3BSRT-RMOU3LRMOU3J:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDCRMOU3K:	.FCTR	LB:[1,1]RMSLIB/LB:R3BSPLRMOU3L:	.FCTR	L      B:[1,1]RMSLIB/LB:R3SSPLRMOU3M:	.FCTR	LB:[1,1]RMSLIB/LB:R3IKYIRMOU3N:	.FCTR	LB:[1,1]RMSLIB/LB:R3KSPLRMOU3O:	.FCTR	LB:[1,1]RMSLIB/LB:R3ROOT-RMOU3NRMOU3P:	.FCTR	LB:[1,1]RMSLIB/LB:R3MKID-RMOU3ARMSBLK:	.FCTR	RMSBMC-LB:[1,1]RMSLIB/LB:R0RWBI-RMMISCRMMISC:	.FCTR	RMSMIS-RMMIS0RMMIS0:	.FCTR	LB:[1,1]RMSLIB/LB:R0FREE:R1TRUN-RMMIS1RMMIS1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGTRMWATR:	.FCTR	LB:[1,1]RMSLIB/LB:R0WATRRMMAGT:	.FCTR	LB:[1,1]RMSLIB/LB:R0MAGT;; IF RSX/IAS, OR RSTS/E AND ARE NOT LINKING TO THE RUN-T      IME SYSTEM,; THEN SELECT ALL OF THE FOLLOWING FIVE FACTORS.;RMSSQ0:	.FCTR	RMSSEQ-RMR1RL-RMSQOPRMSQOP:	.FCTR	LB:[1,1]RMSLIB/LB:R1WTLS:R1CKEF-RMIN10-RMOU1P-RMOU1URMIN10:	.FCTR	LB:[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLDRMOU1P:	.FCTR	LB:[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLDRMOU1U:	.FCTR	LB:[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE;**************************************************; SEQUENTIAL RECORD OPERATIONS IF LINKING TO THE RMS11; RUN-TIME SYSTEM (IE, UPDATE AND DELETE ONLY);;RMSSQ0:	.FCTR	RMSSEQ-LB:[1,1]RMSLIB/LB      :R1UPDA:R1UBLD:R1DELE           »zjL¢_› 8$         ÁXÀO    3 0    D  "  g  L]  Üe$                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ÿ sq à £  Ø Ü ã;ª¸ ãÛª¸ ãS«¸ ãË«¸ äÀ¨!P ä;ª
& äÛª
& äS«
& äË«
& æ)ªÊæ5ª"æ8ª æ;ª!P æÉªÊæÕª"æØª æÛª!P æA«ÊæM«"æP« æS«!P æ¹«ÊæÅ«"æÈ« æË«!P é)ªí  é5ªí  é8ªî é;ªí  éÉªí  éÕªí  éØªî éÛªí  éA«î éM«î éP«î éS«î é¹«í  éÅ«í  éÈ«î éË«í  ®À¨É $µXØ V¶ }D /À+~ /¶0~ 3àq ^4Ùfr j I°šÙ IØšØ ÎQ0\Ù QX\Ø ÎW Ù ÞtÀ¨ê ÂF	VNr K	f9² ¬ a	€Wÿ 8a	€\ÿ 8r	À+r ¤¢
Š(I T ¢
.€‚ Ö¤
Ó%I T       ¤
2&I T ¤
Ñ(I T ¤
PdI T ¥
Š(I T ¦
Ò:I T ©
Ì`I T ¬
5…‚ Ö¬
q…‚ Ö¬
……‚ Ö¯
“I T ´
Ñp‚ Ö°À¨± „ YÀ¨Á ¼À¨Á ¼¬À¨Á ¼KÀ¨Å \eÀ¨Á ¼tÀ¨Á ¼µÀ¨Á ¼QÀ¨Á ¼âƒI T âŒ(I T îT–I T ö°I T êÀvÚ Ô ñÀ¨³ H ôÀ¨³ H ö,s ~ö`Ts ü<À¨å Æ>À¨È AÀ¨ŠDÀ¨å Ö GÀvÜ œcÀ¨å ÆfÀ¨È iÀ¨ŠlÀ¨å Ö   dÛ R ³À¨å Æ´À¨#j ¹À¨Š¼À¨å Ö tI T +À¨8,À¨8.À¨84À¨8£À¨8¤À¨8¦À¨8©À¨8¯À+Û ž¯ˆw° d²0 u 
 Ì1ªè èÌ5ªè èÌ8ªè èÌ;ªè èÌÑªè èÌÕªè èÌØªè èÌÛªè èÌI«è è      ÌM«è èÌP«è èÌS«è èÌÁ«è èÌÅ«è èÌÈ«è èÌË«è èÎ1ªë ^ Î5ªë ^ Î8ªë ^ Î;ªë ^ ÎÑªë ^ ÎÕªë ^ ÎØªë ^ ÎÛªë ^ ÎI«ë ^ ÎM«ë ^ ÎP«ë ^ ÎS«ë ^ ÎÁ«ë ^ ÎÅ«ë ^ ÎÈ«ë ^ ÎË«ë ^ Ñ1ªí æ Ñ5ªí æ Ñ8ªî ÖÑ;ªí æ ÑÑªí æ ÑÕªí æ ÑØªî ÖÑÛªí æ ÑI«î ÖÑM«î ÖÑP«î ÖÑS«î ÖÑÁ«í æ ÑÅ«í æ ÑÈ«î ÖÑË«í æ Ô5ªð 6 Ô8ªê ,Ô;ªð 6 ÔÑªê ° ÔÕªð 6 ÔØªê ,ÔÛªð 6 ÔI«ð è ÔM«ð è ÔP«ê ,ÔS«ð è ÔÁ«ê ° ÔÅ«ð 6 ÔÈ«ê ,ÔË«ð 6 ØÀNÜ ž !è¨Ñ :!ÈªÑ :!@«Ñ :!¸«Ñ :$è¨Ñ :$ÈªÑ :$@«Ñ :$¸«Ñ :&˜?Ü       +  –DÅ«Ô ÌFÅ«Ô ÌIÅ«Ô ÌLÅ«Ô Ì  X œ ‘Àr ¤¢À+r ¤Á€WÜ œÉ sÝ î, ‚ Ö2‘‚ Ö2Ñp‚ Ö3^s‚ Ö3®s‚ Ö*ÀvÞ Z<p^<^<@¥ ð \@Þ Øè¨í ºÈªí º@«í º¸«í º‡Àv ‡À¨ˆË:Ku 
 ËÀ¨¹ ÎÀ¨³ Ú ×À¨¿ tà dâ k;ªx kÛªx kS«x kË«x l;ªðlÛªðlS«ðlË«ðn;ª:nÛª:nS«:nË«:q;ª#ÈqÛª#ÈqS«#ÈqË«#Èu  ß R {ˆt  ïÀ+ï¶0	Øšß X\ß  ß ôùòyx lð-à ö €W 	 sp 2À+r ¤d6&I T dì&I T dÖ(I T tÑp‚ ÖÇÀ¨ˆ      !!Àr ¤q!ˆt Œq!òyt s!À¨¹ t!À¨» . !À¨¿ tž!À¨§  ¤!À¨Á ¶ þ!À¨ê Â""œwÿ  ""y´ Î""€Ç ""À¨» . 	# }±  	#n~u 
 	#8± „ #  V #Oqu #€u ¨#""‚ Ö#žw‚ Ö#z‚ Ö#ú‚ Ö¬#‘‚ Ö¸#N&‚ Ö¸#óy‚ Ö¸#v~‚ ÖÄ%ÄI T Ä%•I T Ä%ëI T Ä%r!I T Ä%#I T Ä%#I T Ä%ˆZI T Ä%kfI T Ä% qI T Ä%tI T Ä%™wI T Ä%xI T Ä%I T Ä%CI T Ä%¤’I T &À¨ˆ"&œw¢ „ <&kI T <&DI T <&%I T <&I T <&zI T <&®(I T <&w*I T <&ƒ:I T <&H;I T <&„SI T <&È`I T <&ãeI T <&ÞfI T <&ýfI T <&°pI T <&¶pI T <&KqI T <&%tI T <&iwI T <&lyI T       <&9€I T <&I T p&  X œ Œ&I T Œ&ðZI T Œ&]fI T Œ&tI T Œ&tI T Œ&CyI T o'`	à ø´'À¨¸ œç'À¨± „ ô'ÄI T ô'IRI T ô' qI T ô'Ä…I T ô'¤’I T Ì(À¨Ó H á)ìI T á)à~ š á)[MI T â)ƒI T â)PI T â)Ä&¬ ¦ â),I T â)nEI T â)sEI T â)ŽEI T â)_GI T â)ÌGI T â)2HI T ã)Ð4I T ã)§ZI T ä)p~ š ä)²'I T ä)TyI T ä)½‹I T å)Û%I T å)°'I T å)^I T å)PsI T æ)»I T æ)P¬ ¦ æ)é%I T æ)µWI T æ)ÐWI T æ)ø€I T æ)ZŠI T è)›8I T é) x~ š ì)`	~ š ì)p…I T í)I T í)I T í)wI T î)ÔpI T î)KqI T ï)ã‰I T ð)€%~ š ð)û5~ š ò)»I T ò)t	I T ò)ýI T ò)ìI T       ò)BxI T ò)ø€I T ó)ö!I T ó)¶dI T ó)VgI T ó)[}I T ô)p~ š ô)–œ~ š õ)à~ š õ)üXI T õ)ÔpI T ö)°I T ö)’I T t*ÊK ºt*·K ºt*ÎK ºt*GK ºt*I"K ºt*ä3K ºt*›NK ºt*µrK ºt*sK ºt*ŒsK ºt*ÊsK ºt*¶zK ºt*çK ºt*©„K ºt*b†K ºt*Ö‰K ºœ*4K ºœ*€K ºœ*ÄK ºœ*@,K ºœ*@wK ºœ*¶wK ºG,À¨ˆœ,òw ` œ,VNw à œ,ÊQw tœ,:dx 2 œ,Oqv 4œ,€x Ú Ë- –v Î,0‘ƒ‚ Ö,0œƒ‚ Ö,0Ïƒ‚ Ö,02„‚ Ö,05…‚ Ö,0q…‚ Ö,0……‚ Ö-0’‚ Ö-01‚ Ö00Ñp‚ Ö00‡q‚ Ö00s‚ Ö00s‚ Ö00s‚ Ö40‘8‚ Ö40È8‚ Ö40Ì8‚ Ö40á8‚ Ö40’9‚ Ö40Q:‚ Ö40W:‚ Ö      40;;‚ Ö40:<‚ Ö40w‚ Ö40Çw‚ Ö40Ûw‚ Ö40Üx‚ Ö40üx‚ Ö40Cy‚ Ö40Ny‚ Ö40Ry‚ Ö40žy‚ Ö40Ñy‚ Ö40îy‚ Ö40óy‚ Ö401z‚ Ö40<z‚ Ö 5  X œ j8Àvá ˜ v8 s ˜ ¢8À¨» §8À¨¼ Š Á8À¨zÁ8è¨í ºÁ8Èªí ºÁ8@«í ºÁ8¸«í ºÇ8À¨zá8È}À ¢ é8@Qá é8 Zâ , 9€ps ˜ $9ŸK º$9ÌK º$9ðK º$9#K º$9'K º$9.K º$9L	K º$9¬K º$9ÕK º$9ûK º$9)K º$92K º$96K º$9ÄK º$9bK º$9kK º$9½K º$9¦K º$9°K º$9K º$9|K º$9ˆK º$9‹K º$9¯K º$9K º$9&K º$9)K º$97K º$9K º$91K º$9BK º$9VK º$9XK º      $9ž!K º$9¬!K º$9®!K º$9#K º$9`&K º$9Å&K º$9 'K º$9n'K º$9è'K º$93K º$9ª5K º$9£8K º$9õ8K º$99K º$99K º$939K º$9E9K º$9,:K º$95:K º$96:K º$9ƒ:K º$9¨:K º$9Ò:K º$9I;K º$9i;K º$9p;K º$9s;K º$9‘;K º$9ƒKK º$9<MK º$9xQK º$9œSK º$9ÖWK º$9ÛWK º$92XK º$9yXK º$9‡XK º$9kYK º$9nYK º$9³YK º$9¼YK º$9¾YK º$9ÜYK º$9~ZK º$9ŒZK º$9ZK º$9[K º$9[K º$9¼^K º$9 `K º$9BaK º$9ÛdK º$9CfK º$9ÙfK º$93gK º$9«pK º$9¼pK º$9×pK º$9ãpK º$9qK º$9ZqK º$9½rK º$9sK º$9pwK º      $9óxK º$9CyK º$9kyK º$9•yK º$9ëyK º$9€}K º$9K º$9K º$9+…K º$9.…K º$9ƒ…K º$9Î…K º$9ZŠK º$9ëK º$9üK º$9CK º$9šK º$9«‘K º$9.’K º$9¶ÈK º99 –á ”B9À¨· G9À¨Æ Æ G9ø¬Æ Æ 2:À¨ó F7:À¨ñ ¼q:òyx l„:  â , ª:  s ˜ ª:À¨ê Â´:½K º´:ÊK º´:ÏK º´:óK º´:ÃK º´:ÖK º´:a	K º´:t	K º´:sK º´:ûK º´:K º´:AK º´:GK º´:6K º´:«K º´:®K º´:K º´:&K º´:RK º´:WK º´:“K º´:•K º´:šK º´:ÁK º´:ÅK º´:éK º´:ìK º´:òK º´:ùK º´:+K º´:K º´:ÔK º´:ÜK º´:{K º      ´:âK º´:K º´:)K º´:9K º´:q!K º´:ž!K º´:#"K º´:#K º´:8&K º´:n'K º´:±'K º´:£-K º´:©-K º´:ù-K º´:“.K º´:™.K º´:ž.K º´:ó.K º´:¸2K º´:{3K º´:4K º´:74K º´:y:K º´:|:K º´:i;K º´:4FK º´:©KK º´:ÌKK º´:ÑKK º´:½LK º´:\MK º´:nMK º´:ƒMK º´:NK º´:)NK º´:+NK º´:9NK º´:wQK º´:ËQK º´:áQK º´:éQK º´:ïQK º´:/SK º´:œSK º´:GTK º´:bYK º´:kYK º´:¶^K º´:ü_K º´:¬pK º´:´pK º´:¼pK º´:ÓpK º´:qK º´:qK º´:"qK º´:$qK º´:(qK º´:.qK º´:TqK º´:ÄqK º´:brK º´:vrK º´:œrK º      ´:±rK º´:³rK º´:µrK º´:¶rK º´:ÂrK º´:ÃrK º´:sK º´:sK º´:ŒsK º´:£sK º´:©sK º´:«sK º´:­sK º´:òsK º´:tK º´:-tK º´:[uK º´:÷vK º´:KwK º´:iwK º´:owK º´:‹wK º´:œwK º´:¯xK º´:×xK º´:ByK º´:FyK º´:WyK º´:ÇyK º´:áyK º´:ãyK º´:ðyK º´:¶zK º´:ÝK º´:éƒK º´:„K º´:„K º´:+…K º´:|…K º´:A†K º´:i†K º´:y†K º´:ôK º´:üK º´:$K º´:CK º´:dK º´:hK º´:¢‘K º´:£‘K º´:³‘K º´:´‘K º´:¶‘K º´:Û‘K º´:’K º´:B’K º´:2“K º´:˜K º´:1˜K ºÌ:›‚a Œ ;@jK º;ÀvK º;L…K º; –K º      ;–£ *";À¨¶ 2';À¨µ |@; (s ˜ A;ð-â Ì F;À¨¹ ~ T;ðK ºT;8K ºT;²K ºT;K ºT;¬!K ºT;;"K ºT;I"K ºT;ÛdK ºT;4fK ºT;$qK ºT;œwK ºT;DyK ºT;zK ºT;*}K ºT;K ºš;À¨§ ÞŸ;À¨­ $‹@À¨Ô 0‘@ÈªÔ 0‘@@«Ô 0KÀ¨ä Ö‡KÀ¨ä ÖÙKÀ¨Î  ðK  X œ LÀ¨Î  ,LÀ¨Î  åLÀ¨Î  ôLÀ¨Î  5MÀ¨Î  NÀ¨¹ ~ lOp…~ š xQ  r ¤zQÀDx ò€Q€»â P€QÀÁØ Î¶R€»â Ð¶RÀÁØ Î|Sì]y  œS  ã P œS)ªÏ T œS5ªÏ T œS8ªÏ T œS;ªÎ hœSÉªÐ * œSÕªÐ * œSØªÐ * œSÛªÏ ŽœSA«Ð * œSM«Ð * œSP«Ð * œSS«Ï ŽœS‘«Î Ä œS«Î Ä œS «Î Ä œS£«Î Ä œS¹«Ï œSÅ«Ð è œSÈ«Ð è       œSË«Ï ŽœSC¬Ï ŽœSq­Ï T œS}­Ï T œS€­Ï T œSƒ­Î ÞžS)ªÌ VžS5ªÍ J žS8ªÍ J žS;ªË ÜžSÉªÍ ZžSÕªÍ ZžSØªÍ ZžSÛªÌ \ žSA«Í ZžSM«Í ZžSP«Í ZžSS«Ì \ žS‘«Ë Ì žS«Ë Ì žS «Ë Ì žS£«Ë Ì žS¹«Ì Þ žSÅ«Ì ÊžSÈ«Ì ÊžSË«Ë fžSq­Í Î žS}­Í Î žS€­Í Î žSƒ­Ë Ü¡S)ªÓ Ä ¡S5ªÓ Ä ¡S8ªµ ’ ¡S;ªÓ Ä ¡SÉªÓ Ä ¡SÕªÓ Ä ¡SØªµ ’ ¡SÛªÓ Ä ¡SA«µ ’ ¡SM«µ ’ ¡SP«µ ’ ¡SS«µ ’ ¡S‘«Ô  ¡S«Ô  ¡S «Ô  ¡S£«Ô  ¡S¹«Ó Ä ¡SÅ«Ó Ä ¡SÈ«µ ’ ¡SË«Ó Ä ¡Sq­Ó Ä ¡S}­Ó Ä ¡S€­µ ’ ¡Sƒ­Ó Ä ¡S™­Ó Ä ¡S¥­Ó Ä ¡S¨­µ ’ ¡S«­Ó Ä ¤S)ªÐ l¤S5ªÐ l¤S8ªÐ l¤S;ªÓ Ä ¤SÉªÐ l¤SÕªÐ l      ¤SØªÐ l¤SÛªÐ l¤SA«Ð l¤SM«Ð l¤SP«Ð l¤SS«Ð l¤S‘«Ô ª ¤S«Ô ª ¤S «Ô ª ¤S£«Ô  ¤S¹«Ð l¤SÅ«Ð l¤SÈ«Ð l¤SË«Ó Ä ‹T;ª¶ ‹TÛª¶ ‹TS«¶ ‹TË«¶ ŒT;ªà ŒTÛªà ŒTS«à ŒTË«à ŽT;ªnŽTÛªnŽTS«nŽTË«n‘T;ª#‘TÛª#‘TS«#‘TË«#¡UQd‚ Ö«U-}‚ Ö«UÎ}‚ Ö«U‚ Ö«UV€‚ ÖìWÞI T ìWzI T ìWµWI T ìWwI T ìW€wI T ìWýxI T ìWðyI T ìWBzI T ìWø€I T ìWZŠI T ›Xè¨ì ¨ ›XÈªì ¨ ›X@«ì ¨ ›X¸«ì ¨ œXè¨ì LœXÈªì LœX@«ì LœX¸«ì LžXè¨ì LžXÈªì LžX@«ì LžX¸«ì L¡Xè¨î ~ ¡XÈªî ~ ¡X@«î ~ ¡X¸«î ~ ‘Y1ªÂ x‘Y5ªÃ Ø‘Y8ªÄ X      ‘YÑªÂ x‘YÕªÃ Ø‘YØªÄ X‘YI«Â x‘YM«Ã Ø‘YP«Ä X‘Y¡­Á ¼‘Y¥­Á ¼‘Y¨­É D ìY  s ˜ 	Z1ªÂ x	Z5ªÃ Ø	Z8ªÄ X	ZÑªÂ x	ZÕªÃ Ø	ZØªÄ X	ZI«Â x	ZM«Ã Ø	ZP«Ä X	Z¡­É D 	Z¥­É D 	Z¨­É D á[ÚKo n ä[´"I T ä[à8I T ä[;I T ä[½‹I T æ[à8I T æ[µWI T æ[ŒYI T æ[ø€I T æ[ZŠI T é[Ì`o n í[Kro n î[#I T ï[y‹o n ï[Œp Äò[ÿo n ó[°	~ š ó[<}I T ó[\}o n ó[¥o n õ[üXI T A^À¨zG^À¨zïe›‚a Œ ïf  X œ ðf  X œ ñf  X œ òf  X œ óf  X œ ôf  X œ õf  X œ øf  X œ ýfÀ¨± „ \gÊQ{ ü ªgÀ…{ ·k  v B ÄkZŠK º©ní]‚ Ö©nŽ^‚ Ö©n¾^‚ Ö©nµ_‚ Ö©nL`‚ Ö      ©nR`‚ Ö©nº`‚ Ö¬ppß£ Æ¶p  ã þ ¶pHã ŠqÀ¨ˆIqÎ| ¢ Iq~ èIq Kä Ü Kq¾ | zKq ^| zTqÀ¨Ó Ä Yq„} è [qM…~  \qÀ¨¨ \q`©§ ,\q°©¨ \q(ª¨ \q ª¨ srà} B Us€%} ~”st	‚ Ö”s¢‚ Ö”sÔ‚ Ö”s#‚ Ö”sìQ‚ Ö”s,X‚ Ö”s`X‚ Ö”sLq‚ Ö”s}…‚ Ö”s¤’‚ ÖÖs   vtÀ¨Å R [t{8‚ Ö[tœÆ‚ Ö[t¥Æ‚ Ö[t«Æ‚ Öät‘‚ Öæt <I T çtà8‚ Öçt L‚ ÖçtµW‚ Öçt:d‚ Öçtßf‚ ÖçtBx‚ Öçtóy‚ ÖñtÛw‚ ÖñtCy‚ ÖñtNy‚ ÖñtRy‚ Öñtîy‚ Öòt‘‚ Öótè!I T ótn†‚ Öõt›X‚ ÖõtZ‚ ÖõtZ‚ ÖõtZ‚ Öõt]Z‚ ÖõteZ‚ Öõt…Z‚ ÖõtZ‚ Öõt®Z‚ Ööt	I T       ötQ‚ Ööt.‚ ÖötQ–‚ Ööt.™‚ Öv;	Ä Î ìv5ªÊ ìv8ªÖ p ìvÕªÊ ìvØªÖ p ìvM«Ê æìvP«Ê æìvÅ«Ê ìvÈ«Ö p îv5ªÉ œîv8ªÖ >îvÕªÉ œîvØªÖ >îvM«Ê X îvP«Ê X îvÅ«É œîvÈ«Ö >ñv5ª¸ ê ñv8ªº ¬ ñvÕª¸ ê ñvØªº ¬ ñvM«Á   ñvP«Á   ñvÅ«¸ ê ñvÈ«º ¬ ôv5ªÕ l ôv8ªÕ ôvÕªÕ l ôvØªÕ ôvM«Õ ÈôvP«Õ ÈôvÅ«Õ l ôvÈ«Õ þv³qñ  þvëuñ ‹w3X¦ J –w ~ Dœw0 u 
 ¤wöK º¤w 'K º¤wÆ8K º¤w’MK º¤wðXK º¤w{ZK º¤w:dK º¤wDyK º¤wLyK º¤wÚ}K º¤wÎ…K º¤w´‰K ºÌwÎK ºÌwë+K ºÌwË-K ºÌw».K ºÌw&qK ºÌwëvK ºÌwËxK ºÌw»yK ºÌwóyK ºÌwôyK º      /x€Wä R6x  –÷x KØ T zy }À •y€% ¼ Ïy€}~ èáy sz ž ëy`©© Ôëy°©Ò ªëy(ªÒ ªëy ªÒ ªðyÀ¨± „ z;ª¸ zÛª¸ zS«¸ zË«¸ z;ª
& zÛª
& zS«
& zË«
& z)ªÊz5ª"z8ª z;ª!P zÉªÊzÕª"zØª zÛª!P zA«ÊzM«"zP« zS«!P z¹«ÊzÅ«"zÈ« zË«!P z)ªï bz5ªï bz8ªï œ z;ªï bzÉªï bzÕªï bzØªï œ zÛªï bzA«ï œ zM«ï œ zP«ï œ zS«ï œ z¹«ï bzÅ«ï bzÈ«ï œ zË«ï bz4f€ 2 4z5ªÊ 4z8ªÖ p 4zÕªÊ 4zØªÖ p 4zM«Ê æ4zP«Ê æ4zÅ«Ê 4zÈ«Ö p 6z5ªÉ œ6z8ªÖ >6zÕªÉ œ      6zØªÖ >6zM«Ê X 6zP«Ê X 6zÅ«É œ6zÈ«Ö >9z5ª¸ ê 9z8ªº ¬ 9zÕª¸ ê 9zØªº ¬ 9zM«Á   9zP«Á   9zÅ«¸ ê 9zÈ«º ¬ <z5ªÕ l <z8ªÕ <zÕªÕ l <zØªÕ <zM«Õ È<zP«Õ È<zÅ«Õ l <zÈ«Õ Az5ªÒ  Az8ªÒ Ž AzÕªÒ  AzØªÒ Ž AzM«Ò AzP«Ò AzÅ«Ò  AzÈ«Ò Ž jz  X œ "{Ä&I T ${‘‚ Ö${‚ Ö${n	‚ Ö%{Î}‚ Ö%{!™K º%{"™K º&{t	I T &{PI T &{ó8I T &{µWI T &{ÐWI T &{çWI T &{¹ZI T &{-d‚ Ö&{°yI T &{ø€I T .{V&I T 0{­p‚ Ö2{-‚ Ö2{‘‚ Ö2{ ‚ Ö2{n"‚ Ö2{­p‚ Ö6{!‚ Ö6{,‚ Ö6{!€‚ Ö6{,€‚ Ö>{  K º?{0ÀK º?{pÆK º?{ÎÌK º?{ÓK º?{pßK º      ?{NòK º@{0ÀK º@{NÀK º@{NÙK ºA{0ÀK ºA{ÎåK ºB{NòK ºC{€»K ºD{0ÀK ºE{ÎÌK ºE{ÀÚK ºG{ÎåK º+}À¨ª b,}À¨« \ .}À¨« \ 1}À¨« \ 4}À¨« \ 6} 2Ö ú8}À¨« \ 9}À¨« \ ”}ÊK º”}4K º”}kK º”}ˆK º”}>K º”}™K º”}õK º”}Á!K º”}I"K º”}](K º”}ö2K º”}ü2K º”}T3K º”}ä3K º”}O:K º”}D;K º”}ˆKK º”}MK º”}vNK º”}€QK º”}KXK º”}:YK º”}`YK º”}ZK º”}ŒZK º”}:dK º”}ÙfK º”}¼pK º”}ˆsK º”}HwK º”}JwK º”}¶wK º”}¶xK º”}×xK º”}ØxK º”}ÚxK º”}âyK º”}8}K º”}0€K º”}ÖƒK º”}×ƒK º”}ØƒK º”}ÙƒK º”}ÚƒK º      ”}ÛƒK º”}ÜƒK º”}ÝƒK º”}ÞƒK º”}ßƒK º”}|ŠK º”},‘K º”}™K º~L	K º~öK º~GK º~I"K º~´pK º~³rK º~µrK º~ŒsK º~¶zK º~K º~ôK º~$K º~Û‘K º~^˜K ºR~8ñ  u~@¥ ð û(ªì  ûÈªì  û@«ì  û¸«ì  ü(ª· ª üÈª· ª ü@«· ª ü¸«· ª þ(ª· ª þÈª· ª þ@«· ª þ¸«· ª €(ª· ª €Èª· ª €@«· ª €¸«· ª €(ªÑ ¢ €ÈªÑ ¢ €@«Ñ ¢ €¸«Ñ ¢ s€À¨ª l t€À¨© j v€À¨© j y€À¨© j |€À¨© j €€À¨© j €À¨© j ƒ€À¨ñ ¼Ã€À¨ü :Ä€À¨û 6 Æ€À¨ü :É€À¨ý ø Ì€À¨û ¾Ð€À¨þ p Ñ€À¨þ p a	|K ºa|K ºk	|K ºlŒK ºlÎÇK º      l ÓK ºlÓK ºs®K ºuVYK ºu®yK ºu¯yK ºu°yK ºu±yK ºu²yK ºvÓK ºv–‚K ºv˜‚K ºv›‚K ºv¿‚K º}…Àr ¤=†`q¬  ­‡‘‚ ÖœŠ5ª-
œŠ8ª-
œŠÕª-
œŠØª-
œŠÅ«-
œŠÈ«-
žŠ5ª+žŠ8ª+žŠÕª+žŠØª+žŠÅ«+žŠÈ«+¡Š5ª,¡Š8ª,¡ŠÕª,¡ŠØª,¡ŠÅ«,¡ŠÈ«,¤Š5ª/X¤Š8ª/X¤ŠÕª/X¤ŠØª/X¤ŠÅ«/X¤ŠÈ«/X©Š5ª.^©Š8ª.^©ŠÕª.^©ŠØª.^©ŠÅ«.^©ŠÈ«.^|Œ5ª-
|Œ8ª-
|ŒÕª-
|ŒØª-
|ŒM«-
|ŒP«-
|ŒÅ«-
|ŒÈ«-
~Œ5ª+~Œ8ª+~ŒÕª+~ŒØª+~ŒM«+~ŒP«+~ŒÅ«+~ŒÈ«+Œ5ª,      Œ8ª,ŒÕª,ŒØª,ŒM«,ŒP«,ŒÅ«,ŒÈ«,„Œ5ª/X„Œ8ª/X„ŒÕª/X„ŒØª/X„ŒM«/X„ŒP«/X„ŒÅ«/X„ŒÈ«/X‰Œ5ª.^‰Œ8ª.^‰ŒÕª.^‰ŒØª.^‰ŒM«.^‰ŒP«.^‰ŒÅ«.^‰ŒÈ«.^ Œ  X œ ¼›¡ Ê8T¡ NŽhçºñ }{   ñ~u 
 ¼`€ ° ÃHX€ šÔ’§‚ ÖÔ’Ô‚ ÖÔ’7!‚ ÖÔ’#‚ ÖÔ’xQ‚ ÖÔ’q‚ ÖÔ’Lq‚ ÖÔ’Vs‚ ÖÔ’}…‚ ÖÔ’¤’‚ ÖÔ’Ræ‚ Öñ’˜:v B .”Ò‚ Ö.”»‚ Ö.”à8‚ Ö.”ÖK‚ Ö.” L‚ Ö.”¶^‚ Ö.”ìq‚ Ö.”Bx‚ Ö.”’y‚ Ö.”óy‚ Ö4”Žw‚ Ö–À¨æ À ¤–À¨ç Â ¦–À¨ç Â ©–À¨Ð ô–À¨ç Â ö–À¨è œ ù–À¨"Ò q—À¨~ j˜À¨ê Âì¨À¸       ì¨ 
& ì¨x¸ ì¨ 
& ì¨ð!P ì¨€p!P ô¨d ôô¨ d ôô¨""d bü¨ }Ç Êý¨Xd ô©»W$v ©ÀvÅ \9©x‚f   9©z‚f (:©<g P :©g P :©ÿg P :©Ï_g P :©¿`g P :©(}g P :©g P :©ZŠg P <©h x <©P}e .D©½`Ç B E© è èE© dè èE©ðdë ^ E©€pë ^ G©P}e .K©ú Ú K©ú Ú N©S}å Ö N©T}å Ö N©V}å Ö N©z}8N©|}å ÆN©~}å ÆN©}8N©¢}8N©£}å ÆN©¦}#j N©©}8N©ò}8N©ó}È N©ô}È N©ù}8N©k~ŠN©l~ŠN©n~ŠN©K€h p[©(}g ´a© }h ìd©°;W âe©À¹ e©€%³ Ú e©À]¿ te© }Ç Êi©  8i© Z i©€‰S <i©ø‰x i© Šði©pŠ:      m© …W âr©  #j s©<d ús©Àp Äv©Àx v© ðv©@8#Èv©€p:‹©@8zŒ©?Ti Z–©À¹ –© » . –©À]¿ t—©€%§  —© KÁ ¶ š©€p» . š©¨p¤ 8š©©p$v š©Ðp¤ 8š©êrÓ H š©¢s$v š©¥s$v š©,tÇ Êš©‘t$v š©Ô€'6š©|—$v  ©`;± „  ©{;$v  ©àyX ^³©,à ~³©<4² ¾¹©àL$v ¹©À]¼ ´¼©wö h ¼©xö h ¼©Î³ â¾©Œ¢ º¾© ¸ œÝ©ù}Ã n Ý©Õº ^*ª€p» *ªÀ¼ Š +ª  Š,ª  Š.ª€p· .ªÀÆ Æ 4ª€pó F4ªÀñ ¼6ªi;Â ž 6ªÐD 7ª	#Á ¶ :ª  Š:ª€p¶ 2:ªÀµ |=ª€p§ Þ=ªÀ­ $®ªi Z¯ªàk êÉªJrm ¦ ÉªKrl 2ÔªÀ¶ Ôª à Ôª@8#Ôª€pn      Ýª KS <ÝªxK¶ Ýª Kà ÝªðKnñª¸Q¬ ¦ «}?® ð («p!³ â+«÷ +«÷ ,«@8º,«8;é Â,«0zp Ä,«1z¬ ¦ .«D,] ÖO«ñfð xO«òfð xO«ófð xS«@± „ S«8"± „ U«ÕÀ `W«hÐ W«¨9~ W«èq"Ò ‘«€Wä  “«  È ”«  È ™«  8œ«o ü «¯^Ü «&^Œ«•]¸«Ô`®«{_< «bè «"a@«#b< «ö&`N «u'dº«U(dº«œ,_î «v:bª«T[dº«E`]^ «\g_ž«Iqa^ «Tqdº«!tdb «6xbª«Aydº«åd«Ä…`þ «ñcP«™’a^ ¡«o ü ¦«D,] Ö§« Å R ³«€»Ã ³«¿¤ ` ¹«´‰p F ¹«ø‰È ,¹«WŒp Ì ¹«p L¹«@È ,¹«0ŽÈ ,      ¹«XŽÈ ,¹«€ŽÈ ,¹«¨ŽÈ ,¹«ÐŽÈ ,¹«øŽÈ ,º«À¸ º« 
& º«€p!P ½«¸j¬ ¦ Ë« }¬ ¦ Ë«°$v Ë«Ø$v Ë« ‚$v Ë«(‚$v Ë«P‚$v Ë«x‚$v Ë« ‚$v Ë«È‚$v Ì« d± „ Ì«øf± „ Í«ø¸ Í« 
& Í«p!P Î«Ó~$v á«Àª bá« « \ á«€%« \ á«@8« \ á« K« \ á« d« \ á«@j« \ é«@Qh ìó«@G0Fö«Àª l ö« © j ö«€%© j ö«@8© j ö« K© j ö« d© j ö«@j© j ö«Àvñ ¼ø«Àü :ø« û 6 ø«€%ü :ø«@8ý ø ø« Kû ¾ø« dþ p ø«@jþ p 5¬ ™p Ä5¬!™q 6 7¬d"-
7¬f"+7¬i",7¬l"/X7¬q".^9¬öq1Z B¬„:0FC¬\-
C¬^+C¬a,C¬d/XC¬i.^ƒ¬@8æ À „¬ ç Â       „¬€%ç Â „¬@8Ð †¬ ç Â †¬€%è œ †¬@8"Ò ‰¬@8~ ù¬=ö h ù¬Çyö h ú¬ËLö h ú¬6„ö h û¬"	ö h ü¬H;ö h ý¬Psö h ý¬%™ö h þ¬˜:¼ ´þ¬`ö h ­P(· ­)Æ Æ ­üXö h ­
ö h ­Mö h ­È`ö h ­„dö h ­h~º­{~é Â
­lö h 
­Ëö h ­:2ö h ­Åžö h ­üXö h ­;0F­{ö h ­""ö h ;¯PF@;¯VN1<„¯½`2È ‹¯=S ì‹¯@=U èŒ¯`r0 t£¯D\ Œ¤¯ŒÈ] ¸ ¥¯ÜK1 î ¬¯²'3 ˆ Ö¯Ú}D ôà¯44 f ñ¯4}0 ô ù¯ XD ôù¯üX5 0 °úp4 `°sp Ä°\qy Ö°Pwy Ö°ôxy Ö°zy Ö°ƒ…y Ö°?SX Ð°@SX Ð°ASX Ð° }GZ °	€Iú ,°l5 ú,°z6 ª 4°u~z X	±8r< ~       
±&4 `±VN¬ ¦ ±lE7 † 1±ÚKn (9±Ì`n (<±ƒ…¬ ¦ =±Krn (?±y‹n (?±Œn (B±ÿn (C±\}n (C±¥n (\±D\ Œ\±ŒÈ] ¸ h±p!Kp h±ì&Nâh±²'R ±}s9 Êƒ±:2_ º †±/K_ º Ž±J…_ º Ž±P…_ º ±„:< ~ ±<x< `±“y= ±;	> 4 ±v> &’±„:^ ø ’±iw8 ,’±vw9 Ž ’±¾w: Ú “±†}_ º “±”_ º •± }Uˆ•±	€XlÔ±2&[>Ô±€&[>Ô±Ñ([>Õ±à@ ¼ Õ±®SD ôÕ±µW@ œÖ±fa[>ù±oŒC ü0²#	_ º 2²XD „ y²€p0F‚²D\ Œ™²`;F F œ²2&[>œ²€&[>œ²Ñ([>ž²fa[>ª²e;G  ´²§*  Ñ²˜:H œÜ²"" ’ Ü²# DÜ²# DÜ²ó` ÐÜ²)d‚ j Ü²@w‚ .a³—K/ Ta³[M/ Ta³VN1<      a³ˆZ1´ b³Ó. âb³—G/ Ø c³Iq3À c³Ü0 td³?!1 4 d³à82 ” d³æ81 ìd³ÿ82 ” d³;2 ˆe³&3 re³&3 re³²Z44 e³$™/ Te³?™/ Tf³Ð0 ô f³t:44 f³y:5 0 g³©}Hæi³‚H š m³lE6 Zm³oŒ6 ôp³#	9 Êp³h7 Tp³l8 Ž p³J,; &p³K,; Òp³¿Z@Ôp³iw8 ,p³vw9 Ž p³¾w: Ú p³<x< `p³“y= p³—y= p³¯y= q³¯:E r³kB 8 r³Þ> Ìr³"&A \r³®S44 r³,}Fl r³ë? € r³ü? € r³C? –r³§‘C Z s³2 3 rs³³.. ì s³k; Òs³þ}9 Êw³E w³¼E w³tF ò w³L	F pw³kB 8 w³Ô? –w³™€\Ô w³œ€\Ô w³·€\Ô x³·kH š x³ÇkH š ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      %Psd b3àq ^4Ùfr j ƒ,d1´ 	@~S <;	ŽfF@;	v. ì K	VN1<r	À+r ¤œ	À]d ô"Kq. âïÎ/ † JÀ+/ Ø ü€e .üÀÚf   üÛf ($@g P dXRh x y[M/ T¯ˆw2È ¯íyú Ú %¦S0 ô &Ü0 t•e	3À D¸ƒh pL@g ´:h;W âÎ  X œ Ô  1 4 Ôe"1 î l´'1 ìn X2 ” zÌ44 z´'2 ˆzµz‚ ÖæÐW3 ˆ `	 úä`	h ìôXRi Zž!3 r# }X ^#t!4 f #Oqu #€u ¨&Š(4 `&,I T ö&`;5 0 œ,  GZ œ,hHæœ,l5 úœ,z6 ª œ,Oqv 4œ,hyIú Ë- –v ÎYM k êüR K6 Z®SKq6 ôTà7 † €^à] ¸ E`€WKp F`à8NâF`ÐWR N`¯ö h N`íy÷       3aà~l 23aÐm ¦ 4a`	n (7a ] ÖBa8"o n :dh7 T:dl8 Ž :diw8 ,:dvw9 Ž :dˆw9 Ê:d¾w: Ú e€p; &eÀv; Òïe›‚a Œ DfT< ~ af Z@Ôkf`;< `kfKq= Žf;	> 4 Žfv> &\g  Uˆ\gÊQ{ ü \ghyXl·kµzK º2q€W> Ì7q¼? € 7qüq? –Iq @ ¼ VqM@ œ\qòFl srà} B 4so ü Us€%} ~Œs"&A \t¸LB 8 t°y[>$t÷_C Z 3ukM^Ü 3uþ_^Œ3uIq]¸4u%!`®4u;;_< 4uH;bè 5u»pa@5u%™b< 6u"dº6ut:`N 7u`"_î 9uüXbª?uÖd]^ @u`†_žBuá"db Bua^ DuÖsdEu¡d`þ Gu¼cPþv p F þv˜qp Ì þvXuC üþvPŒp L•y€% ¼ Þ³D „ éƒKqD ôŠðp Ä      `Š }¡ `Š(}q 6 ñh~E ñH€F F üÜYF ò üœwF p™’È}G  ÷’¼\Ô ±˜(_H š ±˜aH œê¨ÀvØ Ü ì¨(Êì¨"ì¨€ ñ¨€%É $ñ¨oQØ Vñ¨ ZD ô¨Ø^~ õ¨
Ø Îõ¨Ž:Ù õ¨`^Ù Þû¨U(Ò ªû¨/x² ¬ ü¨pÿ 8©‹Å \©©}ê Â"©8	Á ¼9©xÚ Ô 9© ¸ 9©àL³ H <©°;x =©€˜Û R D©Ø^Û žD©½`Ç B D©Àv° dE© dè èE©ðdë ^ E©øeÜ ž E© …¶ F©X ì ¨ G©YÜ G©öZˆG©ùZzG©üZä ÖG©[È G©[8G©[ŠG©[#j G©[å Ö G©[å ÆG©ègÔ ÌK©p:Ü œK©$mÝ îa©xÞ Za© 
& a©6}^a©u~¥ ð b©ÈKÞ Ød©°;ðe©ö&³ Ú e©€˜â i©@Qß R i© Z l©Ø^      m©:ß m©`^ß ôm©BaÎ Ä m©OaÎ hm©PaÎ Þm©QaÏ T m©RaÏ m©SaÏ Žm©TaÐ * m©UaÐ è m© …à p©KŠÊ æs©f9à ö s©p: s©$mp v©¸Ê v©ÈÖ p –©¹ –©Ú» . —©€%§  —© KÁ ¶ š©¨S¤ 8š©·kÇ Êš©s$v š©}sÿ  š©†s´ Îš©³sÇ š©Ô€'6 ©`;±   © dV ±© !P ³©,à ~³©<4² ¾´©}¢ „ ´©°;:¹© X¸ œ¹©À]¼ ´¼©ü]à ø½©BaË Ì ½©OaË f½©PaË Ü½©QaÌ \ ½©RaÌ Þ ½©SaÌ V½©TaÌ Ê½©UaÍ J ½©VaÍ Î ½©WaÍ Z½©3…n¾©Œ¢ º¾©X ì LÀ©KŠÊ X Å© Ó H Æ©¸É œÆ©ÈÖ >Ý©ù}Ã n Ý©Õº ^ç©XÔ 0)ªxá ˜ )ª³í  *ª€p» *ªÀ¼ Š +ªÓSí æ ,ªe	À ¢       ,ªH:á ,ªÃ;#È.ª <á ”.ª€p· .ªÀÆ Æ 5ªBaÔ  5ªCaÓ Ä 5ª …#6ªí º6ªX î ~ 6ªi;Â ž 6ª }â , 8ªäî 8ªØî Ö8ª®Sµ ’ 8ª
zï œ 8ªKŠÁ   :ª£ *:ª€p¶ 2:ªÀµ |;ªf9â Ì ;ªsY¹ ~ ;ª£ƒï b=ª€p§ Þ=ªÀ­ $>ª¸¸ ê >ªÈº ¬ £ªÉSê ° £ªÐSê ,£ªÓSð 6 ©ªéyó F©ªïyñ ¼­ªBaÔ ª ­ªCaÐ l®ªó`Ñ :¯ªóÎ  °ªØð è °ªKŠÕ È´ªL"Ñ ¢ ¶ª¸Õ l ¶ªÈÕ Éª°šâ PÑª0\â Ð×ª ã P «y:1Z «ØÂ x« ‚Ã Ø«(‚Ä X«P‚É D «V?¿ t«}?® ð («p!³ â,«@8º,«€‰¬ ¦ O«Ðfð xR«„:^ ø U«ÕÀ `x«KŠÒ ~«¸Ò  ~«ÈÒ Ž ‘«–£ Æ‘«€Wã þ ‘«/Xä  ‘«5Xã Š      •« ä Ü •« }§ ,•«³}© Ô•«ø¨ •«6‘Å R ³«€»Ã ³«»»Ä Î ³«¿¤ ` ¹«UŒñ  ¹«WŒÈ ,¹«âŽñ ½«ô¦ J À«¤`¡ xÁ«ð-ä RÁ«€W–Æ« -Ø T É« sÀ Ì«f± „ Í«Pé Âá«ÀXÖ úã«ÌSª bå«ãyì  å«óy· ª ò«)	« \ ö«;û 6 ö«;ü :ö«;ý ø ö«;û ¾ö«!;þ p ¬"¬  3¬Ñª l 9¬üX0F9¬0q-
9¬€q+9¬øq,9¬pr/X9¬8s.^D¬¶p© j ƒ¬@8æ À „¬ ç Â „¬@8Ð †¬€%è œ †¬@8"Ò ‰¬@8~ *¯¤`q à ;¯VNr y¯Xs ~†¯Ts ü‹¯=S ì‹¯@=U è³¯ˆt  Ö¯L	t Ö¯ˆt ŒÞ¯g'u 
 °Pwy Ö° SX Ð,°òw ` ,°H:z X,°VNw à ,°ÄQw t,°:dx 2 ,°€x Ú v°L	x l±u~x ò      ±\My  \±D\ Œ“±äz ž —±¼{   —±Øs{ Õ±æ| ¢ Õ±ž| zÕ±z~  á±#} è ä±Èx~ š ý± X~ D²Ïy~ è
²z v²4f€ 2 0²#	_ º ž²jM€ ° ž²õx€ š´²§*  Ü²"" ’ Ü² # DÜ²ó` ÐÜ²)d‚ j Ü²@w‚ .b³s;s ˜ q³˜:v B ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ          ì M   vÀ›Ö*  ;	Žf    vÀ›Ö   ¯”L  \±D@  ù±oŒ@  "      (  
­D"(P ;¯Ph  ¯”   
   
­D"  *    w	  ‚ Á
Ò¥[ Ä, ÷	 ‡æÄ] ÷	  ù±oŒ*  &  …
‡Ás‘ ‡ …¡Á
ü± ‡ Á
„DáÄ
  L w     \±D       ö M   vÀ›Ö*  ;	v    vÀ›Ö   ¯”L      (  
­D"(x   s³³.h  ¯”   
   
­D"  *    &ÀÀeH æ …”÷	@ ‡Ð÷	 ÷	 LaÎ
*  & Àå ÔÎ Ã
ë–
€‡ ÅÅÅfÅÅ…e‡ *  L ÿÿ   W!Z ‚W!A †W!9 ‚W!0 ‡ÅåÒÿÅå@ 
  r ‡ ± ‡        ¤ M   vÀ›½*  "Kq          vÀ›½   ¯”L      (  
­D"(2   b³Óh  ¯”   
   
­D"  *    14  16  12  Áe p ðµ  l2   & l0 p ‡        R M   vÀ›½*  ïÎ    vÀ›½   ¯”L      (  
­D"(  
  ¯”          | M   vÀ›½*  JÀ+    vÀ›½   ¯”L      (  
­D"(   b³—Gh  ¯”   
   
­D"      8 Áe 2 
‡         M   vÀ›Ö*  y[M    vÀ›Ö   ¯”L  ù±oŒ@  i³‚@  *  q³¯:@      (  
­D"(Ä a³—Kh( a³[Mh    e³$™h@ e³?™hl ¯”   
   
­D"  *    0,  0,
  ƒ      f¦ 
 ÷	  ‚í†*  & ‡ p  °  ƒ÷	 ÷†‡ ¡ ‡ w	    Á   ù±oŒ*  L  

ì ì +Â% 
÷	    &i³‚*  r ÕeB 
Á ÁÁU €Á5 ÁU UÁ‹åÕ*  ˜  Ä ÷	  
‡pl  p &
Nœ °e ‡ ð•×ÿ  q³¯:
  ¾ * ± ‡        € M   vÀÛÃ*  %¦S    vÀÛÃ   ¯”L      (  
­D"(   ñ¯4}h
 f³Ðh  ¯”   
   
­D"      ð‹* ± ‡         À M   ŽÆ8T*  &Ü    ŽÆ8T   ¯”L  ù±oŒ@  i³‚@  *  q³¯:@      (  
­D"( Œ¯`rh  c³Üh 
  ¯”   
   
­D"            w	  ÷	  
ÕUÄ ÷	  ‡   ù±oŒ
i³‚q³¯:       º M   vÀ›½*  Ô      vÀ›½   ¯”L  e³²Z@  m³lE@  *  r³®S@      (  
­D"(  d³?!h  ¯”   
   
­D"  $    ÷	  ‡f÷	  †&œ* ÷	  °•* ± ‡   r³®Sm³lEe³²Z       þ M   vÀÛÃ*  Ôe"    vÀÛÃ   ¯”L  „¯½`@  ù±oŒ@  *  d³?!@  f³Ð@  s³þ}@      (  
­D"(:   ¥¯ÜKh  ¯”   
   
­D"  *    w	  ð * ð8 B ÷	  ‡pB ÷	  ‡ðµ  ù±oŒ„¯½`$s³þ}  &   ÷	  0
B ÷	  ‡   d³?!f³Ð       ¨ M   vÀ[é*        l´'    vÀ[é   ¯”L  ±v@  d³à8@  "      (  
­D"( d³æ8h  ¯”   
   
­D"       æ¦f‚ ± Áe ÷	  w     ±vd³à8       ô M   vÀ[é*  n X    vÀ[é   ¯”L  f³t:@      (  "  
­D"(b d³à8h d³ÿ8h  ¯”   
   
­D"  *    æ¦1

 ñ  ñz ñ  ñ  ÷	  ‡  &f³t:*  & q   q  q  1
  1
 1
 1
 1
   L 1

 1
 1
 1
 ‚ƒ‡         M   vÀÛÜ*  z´'    vÀÛÜ   ¯”L  ;¯P@  ±;	@  *  d³à8@  s³³.@      (  
­D"(J d³;h  
  ¯”         
   
­D"  *    æ¦CÃe ÷	  ‡Ä BÂe
 Ã¦÷	  ‚Ã  ;¯P$±;	(  &  DÄe 
4
 ÷	  ‡w   ð•Ìÿ* ‚ƒ‡   s³³.d³à8       ê M   NÀÛÃ*  æÐW    NÀÛÃ   ¯”L  „¯½`@  ù±oŒ@  *  a³VN@  d³?!@      (  
­D"(4 ¬¯²'h  
  ¯”   
   
­D"  *    w	  ð * ÁeB ð8 ÷	  ‡÷	  ‡ðµ   ù±oŒa³VN"„¯½`  &  ÷	  É  ‡   
d³?!       ô M   vÀ›½*  ž!    vÀ›½   ¯”L      (  
­D"(l "  e³&h  e³&h s³2 h. ¯”   
   
­D"  *    ÷	* ‡ðµ ) 	 l0       ì , ¡ ‡ ð•*  & öÿ* ± ‡ ðÅ ) ÷	$ ‡‚ð ðÕ ) ¡ ‡ $  L ð•öÿ* ðÕ ) ± ‡ 0,4  0,6 
 ‡        ú M   vÀÛÃ*  #t!    vÀÛÃ   ¯”L  ù±oŒ@  e³?™@  *  f³t:@  s³þ}@      (  
­D"(D à¯4h  
  ¯”   
   
­D"  *    w	  ð * f¦÷	  f‡÷	  ‡ðµ  
  ù±oŒs³þ}f³t:"  & ðµ    ‚ ÷	  °B ‚‡   e³?™       Ð M   ÆÀ[Ð*  &Š(    ÆÀ[Ð   ¯”L  °s@      (  *  
­D"(  þ¬¯yì  þ¬°yèD °úph  
±&h@ 
  ¯”   
   þ¬°y      ÿÿ  þ¬¯y  ÿÿ       (   ( ÿÿ   
   
 ÿÿ   @   @         Þ M   vÀÊ*  ö&`;    vÀÊ   ¯”L  °s@  ù±oŒ@  *      (  
­D"(D ù¯üXh  f³y:h ¯”   
   
­D"  *    w	  Á  B ‰

C ƒàƒ
ò ñ€€B BÂe  ù±oŒ
°s"  &  ¦æ?ÿˆ‡± B ñÿÿ( 1
< ‡       ì M   vÀ[Ð*  œ,h    vÀ[Ð   ¯”L  a³VN@      (    
­D"(b g³©}h  ¯”   
   
­D"  *    ð * ¦÷	  ‚'‡ðµ  ðµ  f f  a³VN*  &  f
 f f þ	
 ± ± ±
 ± ±   L ñÿÿ ñÿÿ 1
 –
‡              ° M   vÀÛÃ*  œ,l    vÀÛÃ   ¯”L  ù±oŒ@  g³©}@  *  p³l@      (  
­D"( ,°lh  ¯”   
   
­D"      w	  æÎe  w     ù±oŒp³l 
g³©}­       ° M   vÀÛÃ*  œ,z    vÀÛÃ   ¯”L  ù±oŒ@  d³;@  *  g³©}@      (  
­D"( ,°zh  ¯”   
   
­D"      w	  æÎe  w     ù±oŒd³; 
g³©}       š M   vÀ›½*  üR K    vÀ›½   ¯”L  i³‚@  q³¯:@  "      (  
­D"( m³lEh  ¯”   
   
­D"      ÷	  MÄ w     i³‚q³¯:       ’ M         vÀÛÃ*  ®SKq    vÀÛÃ   ¯”L      (  
­D"(&   m³oŒh  ¯”   
   
­D"  *    ƒ	
D„PÄ5 RÃ
ý†R”‡ R”R”Ã
üø       Î M   vÀÛÃ*  Tà    vÀÛÃ   ¯”L  ù±oŒ@  a³VN@  *  m³lE@      (  
­D"(* ±lEh  ¯”   
   
­D"  *    w	  ð * ÁeB ð8 ÷	  ‡ðµ  ÷	  ù±oŒa³VN  &   ‡   m³lE       :M   vÀ[Ð*  :dh    vÀ[Ð   ¯”L  °s@  ±;	@  "      (  
­D"(˜ p³hh  ¯”   
   
­D"  *    Ä  Äe( Ì	ñ  ñ  1
 :¦æ&  °s*        & Âe ´  
÷	  „Œí ƒ‚1-    ±;	*  L 1-  
1  1  1  ¦þ	 *  r ‡r  r  r  r  r  ‚–
‡        ž M   vÀÊ*  :dl    vÀÊ   ¯”L  d³æ8@  p³h@  "      (  
­D"(
 p³lh  ¯”   
   
­D"      æÎe  w     d³æ8 
p³h        bM   vÀÛÜ*  :diw    vÀÛÜ   ¯”L  ù±oŒ@  d³;@  *  p³h@      (  
­D"(” ’±iwh  p³iwh
 
  ¯”   
   
­D"  *    w	  ð * ðµ  w l ðµ  úðµ # ö  ù±oŒ*  & Âò 
ñU@  ¦      Âe ÷	  ‚‡ ÃÄ   d³;*  L Ä% ñ,  ñ,  
ñ  ñ  ñ&  r   ‡ æÎe  w   ñ  ñ  1
 ‡   d³;z 
p³h        <M   vÀ[Ð*  :dvw    vÀ[Ð   ¯”L  \±D@  ù±oŒ@  *  a³VN@      (  
­D"(€ ’±vwh  p³vwh
 
  ¯”   
   
­D"  *    w	  ð * DÅ 
Å
ýæ¦!… ‚    ù±oŒ*  & ñU€  q• q• Âå C
Ó¥: „
Â
ú*  L ÄCÃe ÷	  ‡Ãñ  ñ  ÷	    \±D(a³VN  r ð•Éÿ* ‚ƒ‡        M   vÀ[Ð*  :dˆw    vÀ[Ð   ¯”L  ù±oŒ@        a³VN@  *  p³iw@  p³vw@  p³¾w@      (  
­D"(< "  ±}sh  p³#	h* s³þ}h  ¯”   
   
­D"  *    ÁeB Éð8 ÷	  ‡ $ & w	  ð  a³VN&ù±oŒ  &  * ÷	  ‡÷	  ‡÷	  ‡   
p³vwp³iwp³¾w       LM   vÀ›Ö*  :d¾w    vÀ›Ö   ¯”L  \±D@  ù±oŒ@  *  s³³.@      (  
­D"(h’±¾wh  p³¾wh
 
  ¯”   
   
­D"  *    w	  ð * æÂƒ
 ‚ æ¦yÄ”Ä%. &  ù±oŒ*  & Ä%; @Â
÷ƒ
ñ5À %ñ5@ <… ÄDáÄ
*  L Í¥* CÃe ÷	  ‡XÄ% w ð ñU  O  \±D*  r ñ5       @ ƒ
âñU € Ä„í Ä

ñU  þ¥* *  ˜  ñU   Ä Å	 ñU@ ñ5€ åÄ„í*  ¾  Ä

ñU  þ¥*  ñU  Ä Å ‚ *  ä ö ƒàÎàÃ
Ê¥* Ã% C!-D`÷	  )‡ƒ  $s³³.*  
 ‚†Æe C Ã5 €ñU  ‚Ã5 	±*  0  ±  ±
 
 Ã5€±  Ã5@±   V ‡ Æe ð•Êÿ* ± ‡        ¬ M   vÀÛÃ*  e€p    vÀÛÃ   ¯”L      (  
­D"(:   p³J,h  ¯”   
   
­D"  *    ð8 ðµ  ðµ  ðµ   	ð * ‡   & ðÖ * ± ‡ ðÃ * ± ‡        ¬ M   vÀÛÃ*  eÀv    vÀÛÃ   ¯”L            (  
­D"(2   p³K,h  s³kh( ¯”   
   
­D"  *    ð8 ðµ  ðµ  	ð * ‡ ðÖ * ±   & ‡ ðÃ * ± ‡        â M   vÀ›½*  DfT    vÀ›½   ¯”L  ù±oŒ@  p³¿Z@  *  r³,}@      (  
­D"(6 	±8rh  ±„:h  
  ¯”   
   
­D"  *    w	  ð * ðµ  ÷	  ‡÷	  ¡ ‡ 4   ù±oŒp³¿Zr³,}  & 6  l0 ì ‡        ¦M   vÀ[Ð*  kf`;    vÀ[Ð   ¯”L  d©°;@  m© …@  *      (  
­D"(Ê ±<xh  p³<xh ¯”   
   
­D"  *    ð * &f÷	 …„‡ D „
ÄE        õµ *  &  /f C Ãå ŽA
÷	  ƒB
  m© …*  L f&
 ÷	  B‚eA@0 ÷	  Á(„‚  m© …d©°;*  r @0 ÷	  a@Âe A‡ 
B0 ÷	  €A   
d©°;"d©°;*  ˜ B Âå ÷	  ¦f
÷	  C‚áÖ  d©°;m© …  ¾ @ð•Òÿ* ± ‡        .M   vÀÛÃ*  kfKq    vÀÛÃ   ¯”L  ù±oŒ@  f³Ð@  *  p³¿Z@  p³<x@  r³,}@      (  
­D"(L *  ±“yh  p³“yh p³—yh* p³¯yh ¯”   
   
­D"  *    w	  ð * ðµ  ÷	 ÷	  w   ÷	  ‡÷	  ù±oŒr³,} f³Ð$p³<x*  &   ‡ ÷	        ü‡, ,
 ð ñ‚ð•öÿ* ± î  p³¿Z
p³<x       ò M   vÀ›Ö*  Žf;	    vÀ›Ö   ¯”L      (  
­D"(t   ±;	h  ¯”   
   
­D"  *    f&æÄ5 Ò•[ Ã ÷	" Ä5 Ò•, ƒ“÷	 *  & Ä5 Ò•] ƒ„…‡ ÃE ÿÃÃÅ Ä5 	Ã5*  L  ÿÃÃÃÅ
ø…
Ã Ãe0 ÒŠÃ ÃÃÃÅ
õ  r ‡        ¦ M   vÀ›Ö*  Žfv    vÀ›Ö   ¯”L      (  
­D"(4   ±vh  ¯”   
   
­D"  *    ÷	 Ñ	

÷	 Ï	fÉÉ‰eÉÉÉ
ÂCÂ  & CÂCÃe É`‡        ´ M   vÀÛÃ*  2q€W    vÀÛÃ   ¯”L  r³ë@        r³ü@  *  w³™€@      (  
­D"( r³Þh  ¯”   
   
­D"      ðµ ) ÷	  ‡÷	  ‡ ÷	  ‡   w³™€r³ër³ü       M   vÀøÊ*  7q¼    vÀøÊ   ¯”L  b³Ó@  b³—G@  *  r³k@  s³2 @  w³t@  w³L	@      (  "  
­D"(< r³ëh r³üh  ¯”   
   
­D"  *    ðµ  ðe 6 p4 ÷	  †8 ÷	  ± ‡ ÷	  s³2 "b³Ó  &   ÷	  ÷	  ‡‡ ÷	  õ†‡   b³—Gr³kw³L	w³t       &M   vÀ›Ö*  7qüq    vÀ›Ö   ¯”L  s©À@  i³‚@  *  x³Çk@      (  
­D"(p r³Ch  w³Ôh*       
  ¯”   
   
­D"  *    ð8 ðµ  	ðµ  ð ¡ ‡ ð•Öÿ* *  & ± ‡ ð * ÷	    
4 6 Åå   i³‚(  L   Ã÷	  ‡ðe 6 p4 ‡ ð  * ‡   x³Çk"s©À       à M   vÀÊ*  Iq     vÀÊ   ¯”L  ù±oŒ@  r³C@  *  r³§‘@  s³2 @  w³Ô@      (  
­D"(&   Õ±àh  ¯”   
   
­D"  *    w	  ÷	  ‡Ä 0,0  w   ÷	  ‡÷	  ‡    ù±oŒ
r³Cr³§‘ s³2 &w³Ô       ÀM   vÀ›½*  VqM    vÀ›½   ¯”L  „¯½`@  ù±oŒ@  *  e³²Z@  f³Ð@  f³t:@  r³®S@  s³      þ}@  "      (  
­D"(º Õ±µWh  ¯”   
   
­D"  *    w	  ð * &fB ÷	  I‡°B ÷	  D‡É  ù±oŒ„¯½`"s³þ}*  & ÷	  ?‡€÷	  5‡ñ 
÷	  ,†ð¥æÿ* +ð   f³t:s³þ}f³t:*  L *  1,\ \ 1,^ ^ pB B pD D pF *  r F ÁeB ÷	  ‡€ ÁeB ÷	  ð•Ðÿ*   e³²Zr³®S&  ˜ ð•Ïÿ* €pœ* * €0
B 1
B w     $f³Ð       Ü M   vÀøÊ*  Œs"&    vÀøÊ   ¯”L  œ«@  °s@  "      (  
­D"(J r³"&h  ¯”   
   
­D"  *    ðµ  8 2 Áe &À  ÷	  €0
         °s"œ«(  & 0
 0
8 0
B 0
 0
 0
 0Š) ðÅ # ‡        ¸ M   vÀ¸Ä*  t¸L    vÀ¸Ä   ¯”L  i³‚@  q³¯:@  *      (  
­D"($ r³kh  w³kh ¯”   
   
­D"  (    Ä Ä ÷	  U•Õ4 6 Åå w     i³‚&q³¯:      jM   vÀÊ*  t°y    vÀÊ   ¯”L  °s@      (  *  
­D"(r Ô±2&h  Ô±€&h, Ô±Ñ(h\ Ö±fahD *  œ²2&h œ²€&h6 œ²Ñ(hf ž²fahN ¯”   
   
­D"  *    Á  Áe( B A
‡ &À  Àe( H° 0
  °s°s*  &  €‡ Á  A
 ‡ fÁ  ±
 ‡ Á  A         °s°s$°s*  L ‡ fÁ  ± ‡ Á  AB ‡ &À  pB Ù  
°s°s"°s       ¢M   NÀ[Ð*  $t÷_    NÀ[Ð   ¯”L  a³—K@  s³2 @  *  w³Ô@      (  
­D"(Ø r³§‘h  ¯”   
   
­D"  *    &4 &6 ðµ   ÷	š ÷	  ‡°6 °4 ÷	    s³2 *  & w z Ä% !°6 °4 ðµ   5÷	  2‡
 ì   s³2 *  L 6 
ð 
l0 Á
ü& ° ÷	Z ° *  r 4 6 ÷	  °6 °4 ‡÷	: ðµ ) 04   a³—K*  ˜  06 
 0
 ð* ± ‡  ì0 ðe 6   ¾ p4 ÷‡ ÷	  ðµ   ÷	Øÿ‡   w³Ô             ˆ M   vÀÀÁ*  þvXu    vÀÀÁ   ¯”L      (  
­D"(   ù±oŒh  ¯”   
   
­D"       &æ¦ff…
 Þ	‚ƒ„…‡        pM   vÀ›½*  Þ³    vÀ›½   ¯”L  „¯½`@  ù±oŒ@  *  f³Ð@  i³‚@  q³¯:@  w³¼@      (    
­D"(„ 2²Xh  ¯”   
   
­D"  *    w	  &
8 6÷	  œ* ÷	  ÕeB Õ& &  ù±oŒw³¼i³‚*  & 
 ð Îå ¶  ÕU €Ä ÷	  ‰   $q³¯:*  L 
†Æe œ* ÷	  ‡°“* Nl v ° °   „¯½`  r ÷	  ð•Öÿ* Öw     „¯½`f³Ð       M         vÀ›½*  éƒKq    vÀ›½   ¯”L  ù±oŒ@  a³VN@  *  e³²Z@  f³t:@  r³®S@      (  
­D"(: "  Ö¯Ú}h  ù¯ Xh  Õ±®Sh ¯”   
   
­D"  *    w	  ÷	( ‡÷	  ‡ w	  ÷	 ‡÷	  ‡ w	  ÷	   ù±oŒe³²Zù±oŒ r³®S&ù±oŒ  &  ‡÷	  ‡ ð * w     
f³t:a³VN       8M   vÀÊ*  ñh~    vÀÊ   ¯”L  s©À@  ñ¯4}@  *  °s@  f³Ð@  x³·k@      (  
­D"(Z "  q³¯:h
 w³h2 w³¼h" ¯”   
   
­D"  *    0Š+ æ1ÿˆÅ  Åe Ã÷	  ß%ÿÿ  ïp’*   °sx³·k"s©À*  & w   ÷	 ø      fœ( Á  fæ)ÿˆ‡fæ  f³Ð  L ÿˆ‡‡ ÷	    ñ¯4}       ¬ M   vÀ›½*  ñH€    vÀ›½   ¯”L  ù±oŒ@  w³@  *  w³¼@      (  
­D"( ™²`;h  ¯”   
   
­D"      w	   w   w     ù±oŒw³w³¼       ~ M   vÀ›½*  üÜY    vÀ›½   ¯”L      (  
­D"(   w³th  ¯”   
   
­D"      É¥ÿÿ± ‡ æ1ÿˆ‡        ª M   vÀÛÃ*  üœw    vÀÛÃ   ¯”L  f³Ð@  w³¼@  "      (  
­D"( w³L	h  ¯”   
   
­D"  "    ÷	  B fÁe p `p       w     w³¼ f³Ð       ,M   vÀ[Ð*  ™’È}    vÀ[Ð   ¯”L  ù±oŒ@  a³—K@  *  r³C@  r³§‘@  s³2 @  w³Ô@      (    
­D"(T ª²e;h  ¯”   
   
­D"  *    w	  ÷	  $‡Ä 0,0  w   ÷	  †4   ù±oŒ
r³Cr³§‘ s³2 *  & 6 ÷	  ‡÷	  ðµ ) 04  06 
 0
 ð‹  a³—Kw³Ô  L * ± ‡       TM   vÀx¾*  ÷’¼    vÀx¾   ¯”L  a³[M@  b³Ó@  *  b³—G@  f³Ð@  w³¼@  w³t@  w³k@  *      (  
­D"(V w³™€h  w³œ€h  w³·€h 
  ¯”   
   
­D"  *    ÷	        ðµ ) ÷	  !‡f¦æ÷	  †ƒ‚„÷	  b³—Ga³[Mw³k*  &   	‡òÆe ðÅ ) ÷	  ðe 6 p4 ÷	  0ž  w³tw³¼&b³Ó  L 8 * ÷	  ‡   
f³Ð       M   vÀÊ*  ±˜(_    vÀÊ   ¯”L  s©À@  °s@  *      (  
­D"(V i³‚h> x³·kh  x³Çkh 
  ¯”   
   
­D"  *    8 AÁe 
fÕœ" Šœ( Ã  Õ*  & Uÿˆ†CÉ—  ð•ÿÿ+ ‡ Å  Åe$ &Ä   s©À°s  L %
Ä
ý„‡        ¸ M   vÀ›½*  ±˜a    vÀ›½   ¯”L  ù±oŒ@  i³‚@  *  q³¯:@      (  
­D"( Ñ²˜:h  ¯      ”   
   
­D"  "    w	  ð * D÷	  ÂÕÂ
ýw     ù±oŒi³‚ q³¯:      fM   iÁ á*  &,    iÁ á   ¯”L  ¢
Š(H ¤
Ó%H@ *  ¤
2&H( ¤
Ñ(HB ¤
PdH ¥
Š(H ¦
Ò:H
 *  ©
Ì`H$ ¯
“H âƒH âŒ(H îT–H
 *  ö°H tH d6&H dì&H dÖ(H *  Ä%ÄH@ Ä%•H Ä%ëH Ä%r!H €Ä%#H *  Ä%#H Ä%ˆZH@ Ä%kfH Ä% qH Ä%tH *  Ä%™wH @Ä%xH  Ä%H Ä%CH  Ä%¤’H *  <&kH <&DH <&%H  <&H <&zH *  <&®(H <&w*H @<&ƒ:H <&H;H <&„SH €*  <&È`H <&      ãeH <&ÞfH <&ýfH <&°pH *  <&¶pH <&KqH <&%tH <&iwH <&lyH  *  <&9€H <&H Œ&H Œ&ðZH Œ&]fH *  Œ&tH Œ&tH Œ&CyH ô'ÄHF ô'IRH *  ô' qH ô'Ä…H ô'¤’H á)ìH> á)[MH  *  â)ƒH2 â)PH8 â),H/ â)nEH â)sEH *  â)ŽEH( â)_GH) â)ÌGH â)2HH4 ã)Ð4H= *  ã)§ZH ä)²'H& ä)TyH$ ä)½‹H\ å)Û%H *  å)°'H( å)^H å)PsH* æ)»H# æ)é%H *  æ)µWHH æ)ÐWHB æ)ø€HN æ)ZŠHP è)›8H *  ì)p…H" í)H, í)H- í)wH. î)ÔpH *  î)KqH ï)ã‰H ò)»H ò)t	H ò)ýH       *  ò)ìH ò)BxH ò)ø€H  ó)ö!H@ ó)¶dH: *  ó)VgH< ó)[}H õ)üXH^ õ)ÔpH ö)°H4 *  ö)’H0 ìWÞH€ ìWzH@ ìWµWH ìWwH *  ìW€wH ìWýxH  ìWðyH ìWBzH ìWø€H *  ìWZŠH ä[´"H  ä[à8H ä[;H ä[½‹H *  æ[à8H  æ[µWH æ[ŒYH æ[ø€H æ[ZŠH *  î[#H ó[<}H õ[üXH æt <H ótè!H *  öt	H "{Ä&H &{t	H &{PH` &{ó8H *  &{µWH &{ÐWH &{çWH &{¹ZH &{°yHD "  &{ø€H .{V&H     (  ¯”         ‚M   ÉÀÀÁ*  ·kµz    ÉÀÀÁ   ¯”L  t*ÊH t*·H *  t*Î      H t*GH t*I"H  t*ä3H@ t*›NH€ *  t*µrH t*sH t*ŒsH t*ÊsH t*¶zH *  t*çH  t*©„H t*b†H @t*Ö‰H €œ*4H *  œ*€H œ*ÄH œ*@,H œ*@wH œ*¶wH  *  $9ŸHñÿ$9ÌHùÿ$9ðHžÿ$9#H¬ÿ$9'H¬ÿ*  $9.HÞÿ$9L	H°ÿ$9¬Hÿÿ$9ÕHÈÿ$9ûH¾ÿ*  $9)HÌÿ$92HÎÿ$96HÉÿ$9ÄHÀÿ$9bHºÿ*  $9kHìÿ$9½HÊÿ$9¦H´ÿ$9°HÕÿ$9HÁÿ*  $9|Híÿ$9ˆHöÿ$9‹Hâÿ$9¯HÚÿ$9H·ÿ*  $9&Hêÿ$9)Høÿ$97Hóÿ$9Hèÿ$91Hùÿ*  $9BHýÿ$9VH÷ÿ$9XHÇÿ$9ž!Höÿ$9¬!HÂÿ*  $9®!Hõÿ$9#Hµÿ$9`&HÏÿ$9Å&HÅÿ      $9 'H÷ÿ*  $9n'H¯ÿ$9è'HËÿ$93Häÿ$9ª5Húÿ$9£8H§ÿ*  $9õ8H¤ÿ$99HŸÿ$99H®ÿ$939Hþÿ$9E9Hçÿ*  $9,:HÖÿ$95:H ÿ$96:Híÿ$9ƒ:Hþÿ$9¨:H­ÿ*  $9Ò:H¡ÿ$9I;HÃÿ$9i;H£ÿ$9p;H¨ÿ$9s;Høÿ*  $9‘;H¥ÿ$9ƒKHåÿ$9<MH¦ÿ$9xQH¯ÿ$9œSHëÿ*  $9ÖWHÙÿ$9ÛWH×ÿ$92XH¸ÿ$9yXHÄÿ$9‡XH»ÿ*  $9kYH±ÿ$9nYHÛÿ$9³YH³ÿ$9¼YH²ÿ$9¾YH¼ÿ*  $9ÜYHéÿ$9~ZHæÿ$9ŒZH°ÿ$9ZHîÿ$9[Hªÿ*  $9[H©ÿ$9¼^H¿ÿ$9 `Hûÿ$9BaHîÿ$9ÛdH­ÿ*  $9CfH¢ÿ$9ÙfHðÿ$93gHýÿ$9«pHÔÿ$9¼pHÓÿ*  $9×pHØÿ$9ãpHñÿ$9qHÒÿ$9ZqHàÿ$9½rHÍÿ*  $9sHïÿ$9pwHÿ      $9óxHÝÿ$9CyHúÿ$9kyHÜÿ*  $9•yHòÿ$9ëyHÆÿ$9€}Hõÿ$9H¹ÿ$9H¶ÿ*  $9+…H«ÿ$9.…Hûÿ$9ƒ…Hüÿ$9Î…Hÿÿ$9ZŠHüÿ*  $9ëHãÿ$9üHáÿ$9CHªÿ$9šHßÿ$9«‘Hôÿ*  $9.’H«ÿ$9¶ÈHÐÿ´:½H ´:ÊH ´:ÏH *  ´:óH ´:ÃH ´:ÖH´:a	H´:t	H *  ´:sH´:ûH´:HH´:AH ´:GH *  ´:6H@´:«H ´:®H ´:H ´:&H *  ´:RH´:WHP´:“H ´:•H ´:šH *  ´:ÁH ´:ÅH8´:éH ´:ìH ´:òHˆ*  ´:ùH ´:+H ´:H ´:ÔH ´:ÜH *  ´:{H ´:âH`´:H ´:)H ´:9H *        ´:q!H ´:ž!H ´:#"HH´:#H ´:8&H*  ´:n'H ´:±'H 	´:£-H´:©-H´:ù-H*  ´:“.H(´:™.H ´:ž.H0´:ó.H ´:¸2H*  ´:{3H ´:4H ´:74H ´:y:H ´:|:H *  ´:i;H ´:4FH
 ´:©KH ´:ÌKH ´:ÑKH*  ´:½LH ´:\MH ´:nMH´:ƒMH@´:NH *  ´:)NH ´:+NH( ´:9NH ´:wQH´:ËQH *  ´:áQH ´:éQH ´:ïQH ´:/SH ´:œSH *  ´:GTH 
´:bYHX´:kYH ´:¶^H´:ü_H *  ´:¬pH ´:´pH´:¼pH ´:ÓpH ´:qH *  ´:qH ´:"qH€´:$qH´:(qH´:.qH *  ´:TqH ´:ÄqH´:brH ´:vr      H@´:œrH*  ´:±rH ´:³rH ´:µrH´:¶rH0´:ÂrH8*  ´:ÃrH´:sH ´:sH 	´:ŒsH´:£sH *  ´:©sH ´:«sH0 ´:­sH€´:òsH ´:tH *  ´:-tH`´:[uH ´:÷vH ´:KwH ´:iwH *  ´:owH ´:‹wHP´:œwH ´:¯xH ´:×xHp*  ´:ByH´:FyH ´:WyHH´:ÇyH 	´:áyH *  ´:ãyH@´:ðyH ´:¶zH ´:ÝH´:éƒH*  ´:„H(´:„H ´:+…H 
´:|…H" ´:A†H0*  ´:i†H´:y†H´:ôH´:üH ´:$H@*  ´:CH(´:dH$´:hH ´:¢‘H ´:£‘H*  ´:³‘H´:´‘H´:¶‘H@´:Û‘H´:’H*  ´:B’H ´:2“      H ´:˜H ´:1˜H;@jH *  ;ÀvH ;L…H ; –H T;ðH T;8H*  T;²H  T;HT;¬!HT;;"HT;I"H›*  T;ÛdH€T;4fH  T;$qH T;œwH T;DyH *  T;zH T;*}H	T;H ÄkZŠHÙ ¤wöH *  ¤w 'H ¤wÆ8H ¤w’MH	 ¤wðXH ¤w{ZH
 *  ¤w:dH ¤wDyH ¤wLyH ¤wÚ}H ¤wÎ…H *  ¤w´‰H ÌwÎH Ìwë+H€ÌwË-HpÌw».H`*  Ìw&qH0ÌwëvHÌwËxH Ìw»yHÌwóyHP*  ÌwôyH@%{!™H %{"™H >{  H ?{0ÀH *  ?{pÆH ?{ÎÌH ?{ÓH ?{pßH ?{NòH *  @{0ÀH @{NÀH @{NÙH A{0ÀH	 A{ÎåH       *  B{NòH C{€»H D{0ÀH
 E{ÎÌH E{ÀÚH *  G{ÎåH ”}ÊH ”}4H ”}kH" ”}ˆH *  ”}>H ”}™H& ”}õH! ”}Á!H  ”}I"H *  ”}](H# ”}ö2H ”}ü2H ”}T3H ”}ä3H$ *  ”}O:H ”}D;H ”}ˆKH ”}MH ”}vNH *  ”}€QH4 ”}KXH' ”}:YH ”}`YH ”}ZH *  ”}ŒZH ”}:dH ”}ÙfH) ”}¼pH ”}ˆsH *  ”}HwH
 ”}JwH	 ”}¶wH ”}¶xH( ”}×xH *  ”}ØxH ”}ÚxH ”}âyH ”}8}H% ”}0€H *  ”}ÖƒH* ”}×ƒH+ ”}ØƒH, ”}ÙƒH- ”}ÚƒH. *  ”}ÛƒH/ ”}ÜƒH0 ”}ÝƒH1 ”}ÞƒH2 ”}ßƒH3 *  ”}|ŠH ”},‘H ”}™H       ~L	H ~öH *  ~GH  ~I"H ~´pH ~³rH  ~µrH *  ~ŒsH ~¶zH€ ~H€ ~ôH ~$H@ *  ~Û‘H ~^˜H@ a	|H a|H k	|H *  lŒH lÎÇH l ÓH lÓH s®H *  uVYH  u®yH u¯yH u°yH u±yH *  u²yH vÓH v–‚H v˜‚H	 v›‚H
   v¿‚H     (  ¯”          ° M   ÄÀXÀ*  	@~    ÄÀXÀ   ¯”L      (  
­D"(6   i©€‰h Ýª Kh  ¯”   
   
­D"  *    &æ  
 †€m Î
ùæ f
ÀAN   & ‡ã€
ö
 ÷–%‡        üM    Á  *        ‹¯=     Á     ¯”L  £¯D@  \±D@  "  ù±oŒ@      (¾‹¯=h  ¯”   
         *    w	    Ä 
Ä
ýp p* CÄe  ù±oŒ*  & ( ÂL‡ Ë‹Ë¥	 Ë¥ Ë¥  Ñ’Ë¥= *  L Ìð ° ± ‡ LðÕ   ƒ
Â
âÌL*  r  àp & 
`„!÷	Z CÃeµ À
Ãe  "µ *  ˜  ûÃ’{ ¨ €¡ ‡ ^|¬f$        ¨ ^|¬f$  ¾       



   Ø *  Ø =ÿ]/;[:, „ÅØ !…
£E“‡ Õ‹  Ø *  þ ú„
òÃ  +†¢z (‚¢a ‡ÈÅ  ¢Z  ‚¢*  $A ‡Ã       ¢9 ‚¢0 ‡Ã  ¢* Ã *  J¢. Ã ¢$ Ã €
‡ €° !†*  p„
„à0 ± ‡ €÷	‚ÿÃ% ï÷	xÿÃ% ê *  –÷	jÿÃ%  ùâ@‚
w Øþ„ Û‚
÷	0ÿÅÖ…*  ¼&„à&
ƒ÷	  ƒ†÷	" × ÿ ‚„—¤]   \±D*  â÷	 ÿW! ç¼À ÚÄ
Ê¥* Ö„±‡ @*  &…&
„àƒ÷	  ƒ†÷	Ôÿ„À€¢- €
  £¯D*  . ÷	Îþ×  ùƒ”Å% ¯‚
÷	šþCÃå ‰*  TÃ
‡Ã
…ð„  &
€÷	šþŽ
Ãå úÃ
Ö%*  z
 ßÀ
 ÜŽÖ
ÙÐ¥. ÖÖ%
 ÒàóÃ%"    Ì‡Ã
È¥* ë÷	RþÃå û ä‚¿       úM    Á  *  ‹¯      @=     Á     ¯”L  £¯D@  \±D@  "  ù±oŒ@      (Ò‹¯@=h  ¯”   
         *    w	  ðÅßÿ 0
 0
 
( È¥ È¥ ±   ù±oŒ*  & ‡ 
* ÷	 ÃD ÷	 ÃL ÷	 3:   :
  D L *  L  ] 
]&¦fÅ”`ÁU%Î¤Äd„àðÔ *  r Ãe DB Å”`Ó‹Ä„`÷	Ö…*  ˜ ‚„Å¢‚
÷	Š‡ ° ƒàð ðÕ  *  ¾ ÷	ª
Å¥/ ÷	  Å¥= ðÕ  ‚
Á°*  ä ( °* ‡ ‚
÷	<&f&
ƒàRÊ¥- × *  
 Ê¥N ò¥O  ‚
‚
Ž
ƒà¦÷	T‚‡*  0ô5  â¥- 4
Â
ƒ ƒà÷	4,‡0S Î*        V0S ô5  !0C  ¡ ‡EÎS*  |¡ EÎúCÖ…‚ ÄE W¡/ ªW¡: *  ¢
‡ Ö…‚W¡= W¡, ‚
÷	t öÄ ‡ *  ÈñËï‚
÷	^ &fÅ ×¤ „àÄ¢†Ä’&*  î•”Ä
ýÄ’„åŠÄ
ýÃe …‚ÄÅææ  ã¥  &\±D*   Î  C
„à…Þ	¾‡Öƒç& l   
£¯D*  :„Åd!£„
£ý£Õ‹ü„
ðU¥E“  d  `Ö‡ []=:/,     l*  lÒ¥* „ û‡ ðÕ  ‡ ¦æ !Å‹*  ’€ÃÅE€€Ã
&
Ž”Ã
Ì5€ÿ¶”   ¸…%èÔþÄe ƒ‚ ç± –5‡        º M   NÀ€Ô*  :h;          NÀ€Ô   ¯”L      (  
­D"(@   d©°;h m© …h  ¯”   
   
­D"  *    & 

Î†Á`@€`ÃBöÖ‡ æÃ  &  &  
ÂA@ ‡€ã‚
Ã
÷Öƒ‡        Â M   XÀ  *  Î      XÀ     ¯”L    H p&  H *   5  H	 ðK  H
 ïf  H  ðf  H@ ñf  H` *  òf  H€ óf  H  ôf  HÀ õf  Hà øf  Hþÿ"  jz  Hxÿ Œ  H     (  ¯”          r M   tÀ0À*  # }    tÀ0À   ¯”L      (  ©àyh  
  ¯”   
             &æÿˆæ3ÿˆ       ¼M   ;VÓ³*  ° S    ;VÓ³   ¯”L  ¤
      Ñ(@  <&D@  *  <&Kq@  <&9€@  ô' q@  â)P@  ä)²'@  *  ä)Ty@  å)Ps@  æ)»@  æ)ÐW@  î)Ôp@  *  ò)ì@  õ)Ôp@  $9ž!@  $9×p@  ´:t	@  *  ´:Ü@  ´:2“@  s©À@  „¯½`@  ‹¯=@  *  ‹¯@=@  ù¯üX@  °s@  °	€@  	±8r@  *  h±²'@  ±}s@  ±„:@  ù±oŒ@  Ñ²˜:@  *      (Ò°?Sh  °@ShÈ°ASh¯”   
         *    w	  5
f un h õ‹j ÷	`‡uh bB  ù±oŒ*  &   ÷	$†w €õµ€ a w ,õ  ÷	fý¥    ä)Tyâ)P($9ž!*  L   w ü &
õµ    Á  
÷	  œ  Ad B&  â)P      <&9€ò)ì´:t	Ñ²˜:"å)Ps*  r b AÁep Â &
¦fƒÂ Á  ÷	  –
–   ´:2“$Ñ²˜:*  ˜ ‡ÁP õµ  a A” Aíf @pn  p  ÷	     õ)Ôp $õ)Ôp(°	€(  ¾ C    Ö‹Á  
÷	  8  ð  Ã‹/A&  å)Ps
â)P´:ÜÑ²˜:â)P å)Ps*  â  B  µ`f ÂNõµ a ¦`W¨a W¢z   î)Ôp î)Ôp*  ÉÅ  Â
ö‚õµ€ a õ‹j fu-n h w FÉ¥*  .; ]õµ a )w Èþ×   æØÿ"Ã¥  .@j   $9×p"$9ž!*  T
À
õµ€ a ÷	Bw Ôþ@÷	  õÅ€ a õŠj   „¯½`*  zõTI õ•    æöÿ&
õµ a f  ÷	vµ"  <      &9€<&Kq<&D
ò)ì"å)Ps*     µ“` V@‡ æÿÿîæþÿëÆe, æýÿææüÿ  å)Ps*  Æãw	  õ‹j ÜõŠj õå l ùµŠj ÷	¾ Ð  ù±oŒ*  ìÉ¥@ @õµ a Éu­j k àÆå, b¤€p ° *  ÷	  5 f µ
f Ë‡ðµ   ÇÈ• ÷	  Â‡ðµ   ‹¯="‹¯@=*  8 ¾ðµ  º÷	Ò ‚Âe õSY ÷	ø 	‡Æe, *  ^5
f un h w ÒýÆe,  õµ a õ‹j õµ€ *  „a `W¨- Â
õ
f µ`n w rýuh n w äþ@*  ª÷	  Dl õå l õŠj õµ€ a !CÃe ##  „¯½`$æ)ÐW *  Ð#3 3™ @ð•    ÷	  ‡&™÷	  ½•  ô' qæ)»h±²'&±„:*  ö        	†õ¥    Î²Î†‡ w	  õ  µŠ(  â)P
$9ž!å)Ps²†ù±oŒ$â)P*  j Dl @÷	  T”ÔÀe  TŸ  œ    	±8ræ)ÐWâ)P*  B5l @÷	  ‡ @Á  ñ  ÷	  Áe     „¯½`°s¤
Ñ( ù¯üX&æ)ÐW*  h  ÷	  ‡ð•    ÷	  ‡ An 5Šj É)fÿˆ‡   ä)²'±}sô' qæ)»h±²'*  ŽÑÂ  ÷	2 ‡ /  	    ô÷	 ‡   s©À"  ´	 ú   ÷R¨õÕ€ a ¡ ‡ Âå @”‡        ,M   ìÀXÀ*  \±D    ìÀXÀ   ¯”L  ù±oŒ@      (  *  
­D"(Œ £¯Dh \±Dh  ‚²Dh  ¯”   
         
­D"  *    
Ë w	  &Ba
—¢+ —¢- 
‚
Ä
  ù±oŒ*  & Ê¥# ‚
Ë
å¥. ‹
Ä
Å æU¥
Ä*  L €”Àå0  ‚Ë‡ÎÀb‡Ë‡Ë‡`‡€  r Î	Ä
éÁ¡ €€‡ ± û       M   NŽ€À*  €^à    NŽ€À   ¯”L  ù±oŒ@      (ˆ   ¤¯ŒÈh  \±ŒÈh
 ¯”   
         *    w	  Á
 w	  Á Ba—¨. Á
 Ä
&
W£  ù±oŒù±oŒ*  & + W£- Ž
…
Ä


B•Âå0  ‡ †Ëcæ*  L æËcó SW 
 –%‹ec“e‹`sþÿÄ
ä  r Ö#3 ‹¯ ‡ Ö± ‡        "M   XÀ  *  7a     XÀ     ¯”      L  °?S@  °@S@  *  ù±oŒ@      (N .«D,h  ¦«D,h
 Û©"Sì  
  ¯”   
         *    w	  Ã  w	  Ã  &Àe` Á` Â Â
ý"  ù±oŒ
°?Sù±oŒ°@SÛ©"S` *  & À  ðÕ a Ë	Á` €Àe` Â PÂ
ý€D  Û©"S  Û©"S`   L ‡        ÂM   XÀ  *  R«„:    XÀ     ¯”L  <&È`@  <&Kq@  *  â)P@  å)Ps@  æ)ÐW@  ì)p…@  ä[à8@  *  æ[à8@  æ[ZŠ@  s©<d@  „¯½`@      (z   ’±„:h  ¯”   
         *    ð  9f¦æÆå ‚œ  ¦ææÿˆƒ   â)Pì)p…  & Âe  ¡¡¡      Âe  ¡¡¡!ŠÂe&  æ)ÐWä[à8 
æ[à8 ä[à8
&  @   ¦¦¦¦¦÷	  ‡Ã5  Àäf÷	(  æ[ZŠ æ[à8
„¯½`<&Kq<&È`
  b   2  €Æe Aƒ‚‡   s©<då)Ps       ÒM   OŽØÌ*  0²#	    OŽØÌ   ¯”L  ¤¯ŒÈ@  \±ŒÈ@  *      (î0²#	h  X:†¨ ƒ±:2h †±/Kh  *  Ž±J…h
 Ž±P…h “±†}h “±”h ¯”   
         *    &f¦w  ÷‹  ÷	¾7
 7 @•,€ÀåÀÿq"  X:†  X:†  X:† X:† *  &   `-KacJE[Ã!Ãm*  L  Äí @•Á  †ÕÁ
ûÒ± )      ÷	L÷	  X:† X:† *  r R†é çÃå÷  7• Ã
f@• †Õ   X:† X:† *  ˜ †&Ý	€…Ò€ÖÀ5 ]U ª†E¨¯ ‚*  ¾ …€Á  ‡ 
 :Á  ‚æ&@E ÷	ÿA  
X:†  X:†  *  ä · Îà· Ì†ª 
÷	Š ÷	Ð Â¢ÂÀE  X:† X:† *  
 ÿ÷	v œÀEÀÿÀ€c Á Â ¤‘Á
ü¢ÿ   X:† X:† *  0­÷‹ ‰÷­  ¦†„÷	@ Á	Ã£.   X:† X:† X:† *  V„
Ã
·
 æ&fÅ Ä Ã Á÷	  ÷	(  
X:† X:† X:† X:† $¤¯ŒÈ*  |  …„ƒ¶Ã÷	8 †      À÷	" †À£.   \±ŒÈ*  ¢£$ ·
 „
Ã
ë÷ ‡ Ì¥Z ‡£A ‡ Ì¥  X:† X:† *  È9 ‡£0	‡ 
Ã
£  £	 ‚
„
Ã
ö‡        ÖM   OŽØÌ*  ïe›‚    ¯”L  ´:t	@  ´:Ü@  ´:¢‘@  "      ( Ì:›‚h  ïe›‚h  ¯”   
         *    Ä W£ W£ xÄ D !ÿÿø@  
    *  & ÿÿk i  f†Àx : †ö
LêBr†*  : †ö
L ê"$B&r(†*  L ` °ÀîA W ÿÿAÁE ü‡ 
‡ B —   ` °
Àî*  r ÿÿ‚ÂE þ‡ 
‡ &-  ‡÷	    aÀe*        ˜  ˆ“´
 €‡ ô $Ãe ô  ô &
*  ¾ &
&
&
& æ&
&
&
 &  æ  æÿˆ‡   ´:¢‘*  ä & æ)ÿˆ4
 ‡ ÷	^ ÷	¨ÿ 
‡ ÷	R ÷	œÿÀ*  
ÿÿ‡ &ÀE @ÀÀÀÀ ÀU  ÁU  ‡ @÷	*  0Pÿ€÷	Jÿ‡ ô‹ ÷	. À1 ÷	6ÿ´Š ÷	( ‡ *  Vô‹ 
÷	 À2 ÷	ÿ÷	 4Š ‡ À ÷	ÿ‡ *  |À ÷	þþ‡ ÷	ÌþÁ	t  ÷	ÔþÂ´ ô*  ¢  %&
&
&
&
&
&
&
&
&
&  æ  æÿˆ   ´:t	*  È&
&
&
&
&
&
&
&
&
&  æ  æÿˆt   
  ´:Ü*  î‡ Àÿÿ‡ ÷	\þ4Š Áô•  ‡ ÷	^þ´@ ÷	*  @þtP ÷	ÿÀ•A ÷	\þ  ÷	àþ@÷	NþÀI ÷	      *  :Fþ€÷	@þôE  w ¨þA W ÿÿHAf *  `W  ƒÁ ÷	ÌþÀH ÷	þ@÷	’þ÷	¬þ  Àe*  †B ÷	öý	÷	Øý€÷	tþ÷	Žþw RþB — ÿÿ*  ¬æ f€¦ ì ƒÀì ÷	Hþ÷	bþ‚ö
 *  Ò÷	¦þö  Î
ê–%w þw þ÷	~ý÷	dýf÷	Bþ*  øÀD ÷	‚ý€÷	þÖÂU ÷	þw Þý÷	<ý÷	Ný*  ÷	þ¦ÀL ÷	Vý@÷	ÜýÖÂU ÷	îýw ²ý÷	*  Dý÷	"ý÷	ìý  ÀeC ÷	(ý¦@÷	¬ýÖÂU *  j÷	¾ýw ‚ý÷	àüt ÷	îü´ w ný÷	Ìü÷	Þü÷	*  ¨ýt  
†@ 4 € 4 í Ut *  ¶æ æ í €Ã  
B †Bà€
ûƒ*  ÜÂÀö4
 4
 ÀH ÷	ü        ÷	ý÷	.ýÀB *   Ý ÷	xü4m
  -  ‡´c ôå  ö  *  (÷	âü÷	üüö
 ÷	Býö  ô
 â€÷	üt *  N÷	ü´ –%w ˜üw ìý÷	ýÀH ÷	ü÷	üûÀ
 *  tÂ
÷	üû÷	Ôû÷	öüæC Á
÷	àü€÷	êûø*  šÖw Tü÷	ÎüÀJ ÷	Öûw Dü÷	¾üÀK ÷	Æûw 4ü*  À÷	’ûB — ÿÿÁ€”÷	ªûÁ
ûw ü€”ü÷	*  æšûûw ü÷	€ü÷	`û@÷	†ûw ôû                                         ’ M   0À  *  %Ps    0À     ¯”L  s©À@      (    ù¬ÚK( ô¨""h  ¯”   
   ù¬ÚK      ×'  ÿÿæ1ÿˆ ‡   s©À       :M         pÁ  *  œ	À]    pÁ     ¯”L  á[ÚK@  ï[Œ@  *  ¹«WŒ@      (  ù¬o†(X ô¨h ô¨ hL "  ý¨Xh  ­Kr<  
­ÿ<  ¯”   
   ù¬o†  *    ¦  Þ5 Îe ‡w	  ¦…
 Bv
 ÷	  
  ¹«WŒ&­Kr  *  & 

ò ÊE ÷	  	‡‚ Ê5 îù‚
  
­ÿ    L ‡ Ã  û	  æ  ï[Œá[ÚK       Ò M   ¨À  *  ü€    ¨À     ¯”L  Ýª K@  ¹«WŒ@  "      (< <©P}h  G©P}h ¯”   
         *    Â
 Â w	  
”Å¥  üÅ¥	 ùÅå0 B¡†  ¹«WŒ  & €÷	   Aa”ôœÿÿ‡   
Ýª K             (M   €À  *  üÀÚ    €À     ¯”L  Ýª K@  ¹«WŒ@        (z 9©x‚h ¯”   
             ZA90$ .    *   @(  w	  f
Ã ”Ä  ¥&‡¥ƒ¥"‡¥  ¹«WŒ   *  . ƒ¥	¥Î¥Åå Åå÷ÿÅåÒÿÅå@ &*  T ÀfA÷	  E€Aa×  ×‡ÖÖ± œÿÿ‡   Ýª K        (M   €À  *  üÛ    €À     ¯”L  Ýª K@  ¹«WŒ@        (z 9©z‚h ¯”   
             ZA90$ .     *   @(  w	  f
Ã ”Ä  ¥&‡¥ƒ¥"‡¥  ¹«WŒ   *  . ƒ¥	¥Î¥      Åå Åå÷ÿÅåÒÿÅå@ &*  T ÀfA÷	  E€Aa×  ×‡ÖÖ± œÿÿ‡   Ýª K        dM   ìÀ È*  $@    ìÀ È   ¯”L  i©€‰@  ¹«WŒ@  *      (Ž :©<h  :©h :©ÿh :©Ï_h *  :©¿`h :©(}h0 :©h :©ZŠh ¯”   
         *    æ
æ
*æ
+
æ2æ3ÁE ÿæ*  & ÂÎE ‚w	  …ŠÂ ‚†Á€Ð•-   ¹«WŒ*  L ŠƒÐŠÂÕ0 @A÷	  W 	 ƒÁe `fÃŠ  i©€‰   r 
ÀÂ€Ã€ÂE ÷	Ôÿ”• ‡        Ä M   €À  *  L@    €À     ¯”L  i©€‰@      (H   [©(}h  ¯      ”   
         *    ÷	 &÷	 &÷	
 ’•’•€‡ @Á( ÷	    (i©€‰&  & f€
  Àe	 ÀeÉÿÀe  Àe  ‡        ø M   0À  *  dXR    0À     ¯”L  :©(}@  d©°;@  "  ¹«WŒ@      (V <©h  ¯”   
         *    w	  Ä'Å
 ÂÅU D$†BA ÷	  &  ¹«WŒ&d©°;*  & Â (÷	 ÅU Â  ÀBQ÷	  Â   ":©(}  L Ð•* Â
ü‡        | M   0À  *  D¸ƒ    0À     ¯”L      ( N©K€h  
  ¯”   
             ¢a ‡¢z ‚ÈÅ  ”Â
õ‡        nM   €À  *        ä`	    €À     ¯”L  :©<@  i©€‰@  *  ¹«WŒ@      (¦ a© }h$ é«@QhR ¯”   
         *    JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECw	*  &   D…&&÷	` Ð•- ÎeÁeýÿP”P”P”Ð•  ¹«WŒ ýÿ*  L - $w	  DÅ … ƒ÷	& Ð•.  ÀÀÀ  ¹«WŒ*  r  c e÷	  À
…Ð•: ÷	
 Å
ù
  i©€‰  ˜ Â÷	  B‡   
:©<       M   pÆ  *  ôXR    pÆ     ¯”L  :©@  :©ÿ@  *  :©Ï_@  :©¿`@  :©@  <©@  <©P}@  *  [©(}@  a© }@  ¹«WŒ@  é«@Q@      (ð"  Œ©?Th8 3M`©      è ®ªh  ¯”   
         "    ABDEFMNOPRSTUXYZ<>  ¶ Â Ö î   (  ¤  
¶ Â Ö î   
   Ü   DJp  (  Ü 2 
D
Jpz 
  * è â ŠÖâ  !  è â Š
Öâ 
 *  6   w	  &D…•Â¥% “ùŠÀåB  & 
¹«WŒ *  \ ‡ & Ð¥V A ÷	  À
ÀCƒ
Â   <©P}*  ‚ 2£ÿÿÂ
û„
Â¦ Ž‡AÎÞ	ÖÐÐ•% 
  ÿÿ *  ¨ „ Ì¥V å‡ P”Ã
ý‡ Ð•  B”f‚÷	    (:©  Î Ã
õ‡ æ  =æ  :æ"  :©ÿ ÿ
:©       ÿ
*  ä   7æ  4H”ÈÅ€ ¢  ¢ È•  €
Ã
ò"  :©  €

<© ÿ
*  
‡ ÷	h Š€‡ Ð• Ã
ü7
  ‡ Ð‹Ã
üÀ

  3M`©  *  0‡ Ð• Ð•
 ·
  Ã
ø‡ æ  æ  Ð•	 A*  3M`©  :©¿` ÿ
 :©Ï_  €
*  V¦
NÞ	Ã
ö–
‡ æ  ôA÷	  Ã
û‡ Ð•  :© ÿ
 [©(}*  |  Ã
ü‡ Ð•	 Aæ ÷	  AÎ
ûÖÂ	 ÷	$   [©(}*  ¢Ð•. ÷	  Â ÷	 AÐ•; 
÷	  Ã
à‡ Â
  
[©(} :©Ï_*  Èýð¥  ÿÿùÀ
øAá÷	  E‡ AáÂ÷	  E  a© }&é«@Q  î‡        HM   pÁ  *        YM     pÁ     ¯”L  ï[Œ@  ò[ÿ@  *  ó[\}@  ó[¥@  ¹«WŒ@      (  ­ì](x   ¯ªàh  ¯”   
   ­ì]  *    ¢ 8‡w	  ¦Â  „  ƒ‚  Ê± *°,    ¹«WŒï[Œó[¥ó[\}*  & °,  aóÊE  ! ‡„ ôE € 
*  L 
¢ ‡ ¢ ‡ Ãe  ææ
Ü Þ	  ò[ÿ
  r Þ	‚‡        tM   ÜÆXÀ*  3aà~    ÜÆXÀ   ¯”L  é[Ì`@  ï[y‹@  *  ï[Œ@      (  ­Kr<> ÉªKrh  
­ÿ<h 
  ¯”   
   ­Kr  *    ¦Ê5 ‚ ú‚‡ ò û¦¦‚
 Ž 
Ê5  &  ùÊU Ž ‚öÖ‚      å
   
­ÿ  *    ÊE ¡ Ê5 @-&
¦ÎE ð&
&
¦ ¦ fÅ    (ï[Œ*  & &Ã‹DÄe  æÎ f  ææÿˆ  é[Ì`ï[y‹   L 	‡Ã‹
æ æ)ÿˆÌ‹€ÊU ± ‡        ‚M   ÜÆXÀ*  3aÐ    ÜÆXÀ   ¯”L  é[Ì`@  ï[y‹@  *  ï[Œ@  ó[¥@  ¹«WŒ@      (  ­Kr<v   ÉªJrh  
­ÿ<Ú ¯”   
   ­Kr  *    w	  Å  W-   ‡„ ¦Ê5 ‚ ú‚‡   ¹«WŒ
ï[Œó[¥*  & ò û¦¦‚
 Ž ÊU W-   ‡ƒ Ä   ó[¥*  L ó5 € îóE € Ê5  çÊE  Ž ‚äÖ  r ‚Ó
   
­ÿ  *    ÊE       w	  Ã  ×,   )‡ƒ &ó5 € "Ä   
¹«WŒï[Œó[¥*  & ô5 € &æ9ÿˆL‡ôU € 3   ææu*  L ÿˆ†óE  ææuÿˆ9‡óU € ¡ Ê5 `5ÊU  *  r ƒ „ &
¦ÎE ð&
&
¦ ¦ fÅ  &  $ï[Œ*  ˜ Ã‹DÄe  æÎ f  ææÿˆ	‡Ã‹  é[Ì`ï[y‹   ¾ æ æ)ÿˆÌ‹€ÊE  ÊU ± ‡        FM   HÁ  *  4a`	    HÁ     ¯”L  ô¨""@  ?±ŒH" *      (  ­4Š¬ 1±ÚKh 9±Ì`h =±Krh *  ?±y‹h  B±ÿh C±\}h C±¥h
 ­Kr<  *  
­ÿ<  ­~,¬  ­€,¬ 
­øl ¯”   
   ­4Š              ­~,           ô¨""           
­ÿ  ­Kr   ­€,        
   
­ø      ‡        Ž M   HÁ  *  Ba8"    HÁ     ¯”L      (  ­cŒ  *  á[ÚKH é[Ì`H í[KrH ï[y‹H  ò[ÿH   ó[\}H ó[¥H
 ¯”          JM   ¨À  *  4s    ¨À     ¯”L  ¹«WŒ@      (  "  
­D"(¢ œ«h  ¡«hB ¯”   
   
­D"  *    w	  Áe ÁE ƒ ‡ÀúÊ„D`Ä Ê  ¹«WŒ*  & Ábˆl „ ˆl r ‡ w	  

B  "¹«WŒ*  L €Áe ÁE "s  ‚ÂÅ      s- *  r  ƒÅÀîÂÅ Csà Ãl È  ˜ À¡ ± ‡        † M   0À  *  þv     0À     ¯”L      (" ¹«´‰h  
  ¯”   
         &    &æ¦f&¦
 v Þ	€‚ƒ„…‡        € M   ¨À  *  þv˜q    ¨À     ¯”L      (  
­D"(   ¹«WŒh  ¯”   
   
­D"      &æf… Þ	ƒ„…‡        x M   €À  *  þvPŒ    €À     ¯”L      ( ¹«h  
  ¯”   
             f&¦‚ Þ	€‚‡        r M   0À  *  Šð    0À     ¯”L  ï[ŒH, s©ÀH      & *  ,«0zH* 5¬ ™H. °sH(     (  ¯”          ª M   tÀXÀ*  `Š(}    tÀXÀ   ¯”L      (  ­#ì *  
­ZTì  ü¬›ì  ­#ì  5¬!™h  ¯”   
   ­#        
­ZT           
  ü¬›         ~ M   ¨À  *  *¯¤`    ¨À     ¯”L  Ü²ó`@      (   Ÿ sh  ¯”   
             ÀSw     
Ü²ó`       M   0À  *  3à    0À     ¯”L  Ü²)d@      („   3àh  ¯”   
         *    ÷	    ‚C …Æå‚ €&æqÿˆ   Ü²)d*  & ñ       F¦ r   Áeüÿ
@ÅA E 2*  L  „cD!†ÁD ï²  2 ° r Á  r  Á8ÿ–
€H‡        ¢ M   0À  *  4Ùf    0À     ¯”L  Ü²#@  Ü²)d@        ( 4Ùfh  ¯”   
         "    ÷	     &
CÎÊCÉ÷	  	  Ü²)dÜ²#       ˜ M   ¨À  *  ;¯VN    ¨À     ¯”L  Ü²#@  Ü²)d@        ( F	VNh  ¯”   
             ÷	    RRR÷	    Ü²)dÜ²#       ô M   0À  *  r	À+    0À     ¯”L  Ü²#@      (D *  r	À+h  ‘Àh ¢À+h 2      À+h !!Àh   xQ  h }…Àh$ ¯”   
         *    À9À7À;ÀuÀwÀyÀ"  & {D&
f¡ ‡W#ÿÿv &w      Ü²#       æ M   ÐÀ  *  b³s;    ÐÀ     ¯”L      (V v8 h *  9€phB ª:  h  @; (h ìY  h ¯”   
         *    ÷	L @W‡ ÷	 @@@‡ ÷	8 @
‡ ÕA 
B€*  & Âe —  †Â
Á@ûí@‡ ÷	
 A@@K  L @P‡ Õ@‡        ~ M   ¨À  *  y¯X    ¨À     ¯”L  Ü²ó`@      (   ö,h  ¯”   
             Àw     
Ü²ó`             ” M   ÐÀ  *  †¯T    ÐÀ     ¯”L  Ü²#@  Ü²)d@        ( ö`Th  ¯”   
             ÷	     Îw     Ü²)dÜ²#       ~ M   QÀ  *  ³¯ˆ    QÀ     ¯”L  Ü²#@      (   {ˆh  ¯”   
             &
÷	  _  Ü²#       ~ M   ¨À  *  Ö¯L	    ¨À     ¯”L  Ü²#@      (   q!òyh  ¯”   
             &
÷	  e  Ü²#       ~ M   ¨À  *  Ö¯ˆ    ¨À     ¯”L  Ü²#@      (   q!ˆh  ¯”   
             &
÷	  a        Ü²#       ü M   ¨À  *  Þ¯g'    ¨À     ¯”L  Ü²#@  Ü²)d@  *      (> ²0 h  Ë:Kh 	#n~h& œw0 h   ñ~h  ¯”   
         *    ÀÀ!À#÷	     Î#w   À)  Ü²)d"Ü²#  & À5÷	    CÒ&w     
Ü²)dÜ²#       ¢ M   0À  *  #Oq    0À     ¯”L  Ü²#@  Ü²)d@        ( #Oqh  ¯”   
         "    ÷	     Ä CÃÒÄ
ú÷	  Y  Ü²)dÜ²#       š M   0À  *  #€    0À     ¯”L  Ü²#@  Ü²)d@        ( #€h  ¯”         
             ÷	     f¦

÷	  Y  Ü²)dÜ²#       ò M   ÐÀ  *  q³˜:    ÐÀ     ¯”L  Ü²#@  Ü²)d@  "      (V ·k  h ñ’˜:h  ¯”   
         *    ÀÀ&
&
&
&
÷	   ` ¶  fRC  Ü²)d*  & ÃÒCÃÒRC



	
ÃÒÒÒÒ  L ÒÒ&w     Ü²#       š M   0À  *  œ,Oq    0À     ¯”L  Ü²#@  Ü²)d@        ( œ,Oqh  ¯”   
             ÷	    &
B‰÷	  A  Ü²)dÜ²#       ’ M   0À  *  Ë- –    0À     ¯”L  Ü²#      @  Ü²)d@        ( Ë- –h  ¯”   
             ÷	    ÷	  q  Ü²)dÜ²#       € M   ¨À  *  ,°ò    ¨À     ¯”L      ( œ,òh  
  ¯”   
              CÃ‹
@ÃŠAW ÿÿHÐ÷‡        ” M   ¨À  *  ,°VN    ¨À     ¯”L  Ü²#@  Ü²)d@        ( œ,VNh  ¯”   
             ÷	    R÷	    Ü²)dÜ²#       ¾ M   ÐÀ  *  ,°ÄQ    ÐÀ     ¯”L  s©À@  Ü²)d@        (4 œ,ÊQh  ¯”   
         *    ÷	    ‚ÆåP æ)€&ÿˆÂ      Ê  À(   Ü²)d$s©À  & Ö‘“Î ‘•À
û‡        ¨ M   ¨À  *  ,°:d    ¨À     ¯”L  Ü²#@  Ü²)d@        ($ œ,:dh  ¯”   
         (    ÀA÷	     „&
&
& &&w     
Ü²)d&Ü²#       ’ M   ¨À  *  ,°€    ¨À     ¯”L  Ü²#@  Ü²)d@        ( œ,€h  ¯”   
             ÷	    ÷	  ?  Ü²)dÜ²#       † M   ¨À  *  v°L	    ¨À     ¯”L  Ü²#@      (   ùòyh  q:òyh  ¯”   
             &
÷	  c  Ü²#       ž M         ¨À  *  ±u~    ¨À     ¯”L  Ü²#@  Ü²)d@        ( zQÀDh  ¯”   
             æ÷	    RRRI!
÷	    Ü²)dÜ²#       FM   ¨À  *  ±\M    ¨À     ¯”L  ì)`	@  ¯ªà@  *  ,«0z@  Ü²)d@      (€ |Sì]h  ¯”   
         *    ÷	    ƒ ÃæÎ Î• ƒÒÒÒ€Ä  Ü²)d*  &   4  ÄÄe  
€÷	  À † Æe
 	  ,«0zì)`	¯ªà*  L ‡ æ f…Õ&æ¦f&Ä  ü	  €‚ƒ  ,«0z ì)`	  r „…–%æsÿˆ         È M   ¨À  *  °Pw    ¨À     ¯”      L  s©À@      (( *  °\qh °Pwh  °ôxh °zh °ƒ…h  
  ¯”   
         *    &
&
&
&
Af f&ÿˆÀ  ‡Þ  €
  s©À  & ‡        º M   ¨À  *  “±ä    ¨À     ¯”L  °Pw@  4°u~@        (, áy sh  ¯”   
         *    Õf B 
Á A ÷	  À&
&
f  4°u~
  & ¦w     °Pw       È M   ÐÀ  *  ,°H:    ÐÀ     ¯”L  d©°;@  Ýª K@        (: 4°u~h  ¯”   
         *    W  Æå „&æ=ÿˆÆe €÷	  Áeô  $Ýª K  & @      BÀè÷	  

‡   d©°;       Ü M   ÐÀ  *  —±¼    ÐÀ     ¯”L  °\q@  °z@  *  4°u~@  ´²§*@      (2 ñ }h  ¯”   
         *    f ÕBw   A÷	  &
f¦æ æÿˆ†  °z4°u~  & w   Þ w     °\q´²§*       ” M   0À  *  \gÊQ    0À     ¯”L  Ü²#@  Ü²)d@        ( \gÊQh  ¯”   
             ÷	    R÷	    Ü²)dÜ²#       M   ¨À  *  —±Øs    ¨À     ¯”L  ð)€%@  ,«0z@  *  Ü²#@  Ü²)d@      (V ªgÀ…h  ¯”   
               *    &
÷	     Ä  ‚&
´  æÎe
 ÷	  m  Ü²)d,«0zð)€%&Ü²#*  & &f¦æ&fÅÅe  Ä  ü	  …„ƒ‚€  ,«0zð)€%  L æsÿˆ           Ø M   0À  *  Õ±æ    0À     ¯”L  Ü²)d@      (V   IqÎh  ¯”   
         *    ÷	    ÄŸÿ€À
 ? ‚Æå fæ'ÿˆ  Ü²)d*  & ÁEðÿ@@€€€€a
± BÁ
ýÄ  ˆ0Ä Æe  L  €‡        È M   ¨À  *  Õ±ž    ¨À     ¯”L  s©À@  Ü²)d@  "      (2 Kq¾ h  Kq ^h ¯”   
         *    ÀKÀM÷	          „&
&
& &&ÿˆ  Ü²)d  & Ö€È  ‡   s©À       ¦ M   0À  *  srà    0À     ¯”L  Ü²)d@      (*   sràh  ¯”   
         *    ÷	    ‚Áeüÿ@A B ú°  ²ì   Ü²)d  &  ‡        – M   ¨À  *  á±#    ¨À     ¯”L  Ü²)d@  Ü²@w@        ( Yq„h  ¯”   
             À ÷	    w     Ü²)dÜ²@w       ž M   0À  *  Us€%    0À     ¯”L  Ü²#@  Ü²)d@        ( Us€%h  ¯”   
             ÷	    €‚°       ÷	  Q  Ü²)dÜ²#       ~ M   ¨À  *  Õ±z    ¨À     ¯”L  Ü²ó`@      (   [qM…h  ¯”   
             À/w     
Ü²ó`       ª M   øÀ  *  ä±Èx    øÀ     ¯”L  á)àHúÿä)pHðÿ*  é) xHèÿì)`	Hìÿð)€%Hþÿð)û5Hòÿô)pHîÿ*  ô)–œHôÿõ)àHøÿlOp…Hêÿó[°	Höÿ    (  
  ¯”          ¤ M   ¨À  *  ý± X    ¨À     ¯”L  Ü²#@  Ü²)d@        (  –w h  ¯”   
         $    ÷	    ƒ ö ƒæ æ÷	  G  Ü²)d Ü²#       Ô M   ÐÀ  *  ²      Ïy    ÐÀ     ¯”L  s©À@  Ü²#@  "      (> Iqh0 Ïy€}h  ¯”   
         *    Õ 
Á B÷	( W/   	‚D  Ä
ÁüÁ7    (s©À  & ‚
½ ‡ f &
÷	  }  Ü²#       º M   0À  *  •y€%    0À     ¯”L  Ü²#@  Ü²)d@        (, •y€%h  ¯”   
         *    ÷	    @ƒ€ÃÃÒƒÃð   Ü²)d
  & ÷	  E  Ü²#       ¼ M   ¨À  *  
²z    ¨À     ¯”L  Ü²)d@  Ü²@w@        (. Ös  h  ¯”   
         *    À÷	   X ƒÃe ÄÔÔ       ÅETÅ  
Ü²)d  & ETw     
Ü²@w       ~ M   ¨À  *  ²4f    ¨À     ¯”L  Ü²#@      (   z4fh  ¯”   
             &
÷	  -  Ü²#       ê M   ¨À  *  ž²jM    ¨À     ¯”L  Ü²""@  Ü²#@        (V ¼`h  ¯”   
         *    @À‹#A  Á
ÁE &
&
BÂ
— ? ‚ƒÃEðÿÂ@*  &  
± DÃ
ýQÀŠí‚‚‚‚¦÷	  +–%  $Ü²#  L À ÷	  ‡   
Ü²""       ~ M   ¨À  *  ž²õx    ¨À     ¯”L  Ü²#@      (   ÃHXh  ¯”   
                   &
÷	  1  Ü²#       z M   ¨À  *  ´²§*    ¨À     ¯”L      ( ´²§*h  
  ¯”   
             æ æ)ÿˆæ æÿˆ‡        ² M   ÐÀ  *  Ü²""    ÐÀ     ¯”L   ©`;@  ¹«´‰@        (( Ü²""h  ¯”   
         *    ÷	  ÀÀa  ÀaÈ	ö ‡ ÷	    ä‰å‰  ¹«´‰ ©`;  & ‡        Œ M   ¨À  *  Ü² #    ¨À     ¯”L  s©À@      (   Ü²#h  Ü²#h ¯”   
             ¦ÿˆ€È  ‡   s©À       š M   ¨À  *  Ü²ó`    ¨À     ¯”L  Ü²      #@  Ü²)d@        ( Ü²ó`h  ¯”   
             ÷	    ƒæ æ&w     Ü²)dÜ²#       Ä M   ¨À  *  Ü²)d    ¨À     ¯”L  Ü²""@      (H   Ü²)dh  ¯”   
         *    „C“Âà‡&
Â
ûÂ`‚
‚`Ba¦—#&  & ÿÿ‡
Ã
õ‚L À €÷	      "Ü²""       ¨ M   ÐÀ  *  Ü²@w    ÐÀ     ¯”L  Ü²#@      (,   Ü²@wh  ¯”   
         *    Æå ‚CÒÒCÃÃe ÒÒÒÒ&w       &Ü²#
  &             ^M   ¨À  *  zµz    ¨À     ¯”      L  ¢
.€H ¬
5…H *  ¬
q…H ¬
……H ´
ÑpH , H 2‘H *  2ÑpH 3^sH 3®sH tÑpH #""H *  #žwH #zH #úH  ¬#‘H ¸#N&H *  ¸#óyH ¸#v~H ,0‘ƒH ,0œƒH ,0ÏƒH *  ,02„H ,05…H ,0q…H  ,0……H -0’H *  -01H 00ÑpH 00‡qH 00sH  00sH *  00sH 40‘8H 40È8H 40Ì8H 40á8H *  40’9H 40Q:H 40W:H 40;;H
 40:<H  *  40wH 40ÇwH 40ÛwH 40ÜxH 40üxH *  40CyH 40NyH 40RyH 40žyH 40ÑyH *  40îyH  40óyH 401zH 40<zH ¡UQdH *  «U-}      H «UÎ}H «UH «UV€H ©ní]H
 *  ©nŽ^H ©n¾^H ©nµ_H ©nL`H ©nR`H *  ©nº`H ”st	H  ”s¢H €”sÔH ”s#H *  ”sìQH€ ”s,XH@ ”s`XH ”sLqH ”s}…H @*  ”s¤’H [t{8H [tœÆH  [t¥ÆH [t«ÆH *  ät‘H çtà8H  çt LH çtµWH çt:dH *  çtßfH çtBxH çtóyH ñtÛwH ñtCyH *  ñtNyH ñtRyH
 ñtîyH òt‘H ótn†H *  õt›XH õtZH õtZH õtZH
 õt]ZH *  õteZH õt…ZH õtZH õt®ZH ötQH *  öt.H ötQ–H öt.™H ${‘H ${H *  ${n	H %{Î}H &{-dH 0{­pH       2{-H *  2{‘H 2{ H 2{n"H 2{­pH 6{!H *  6{,H 6{!€H 6{,€H ­‡‘H Ô’§H €*  Ô’ÔH Ô’7!H  Ô’#H Ô’xQH€ Ô’qH@ *  Ô’LqH Ô’VsH Ô’}…H @Ô’¤’H Ô’RæH *  .”ÒH .”»H .”à8H  .”ÖKH
 .” LH *  .”¶^H .”ìqH .”BxH .”’yH .”óyH   4”ŽwH     (  ¯”         ZM   OÀÅÎ*  ?uÖd    OÀÅÎ   ¯”L  p©Åœ@  Ã©i"@  *  .ªK@  .ªþK@  («v"@  («X@  R«°'@  *  « w@  ¹«]Œ@      (T «E`h ¯”   
         *          ÷	  ÷	  †‡ ÂÂeìÿ
û	J ‡      ÂÂeàÿ   R«°'(«Xp©Åœ¹«]ŒÃ©i"*  & 
û	J ‡ÂÂe  ÷	  	‡ÂÂeÈÿ
5
> û	J †  («v"0 
.ªþK   L w   w     .ªK
« w      $M   OÀ…È*  3uIq    OÀ…È   ¯”L  J©v"@  Ã©i"@  *  .ªK@  .ªþK@  R«³'@  « w@  ¹«]Œ@        (D «•h ¯”   
         *      ÷	  ÷	  †‡ õ¥@  †õ0û fÂÂeÞÿ  R«³'¹«]ŒÃ©i""  & 
û	J ‡ÂÂe  ÷	  †w   w   !  J©v"2 
.ªþK.ªK « wŒ      ° M   NÀEÛ*  3ukM    NÀEÛ   ¯”L  D©ö`@  Ã©`"@  "  ¹«]Œ@            ( «¯h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
Ã©`"D©ö` 
v      ° M   NÀÅÎ*  3uþ_    NÀÅÎ   ¯”L  G©¶Z@  £«i"@  "  ¹«]Œ@      ( «&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«i"G©¶Z 
¯      ² M   NÀEÛ*  4u;;    NÀEÛ   ¯”L  i©öy@  £«`"@  "  ¹«]Œ@      ( «{h  ¯”   
             ÷	  ÷	  †‡ æÎe  ‚{ J   ¹«]Œ
£«`"i©öy 
       ° M   OÀ¼*  7u`"    OÀ¼   ¯”L  Ý©6€@  £«`"@        "  ¹«]Œ@      ( «œ,h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"Ý©6€ 
       ° M   NÀÕ*  @u`†    NÀÕ   ¯”L  U«6€@  £«`"@  "  ¹«]Œ@      ( «\gh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"U«6€ 
       ° M   NÀÕ*  6ut:    NÀÕ   ¯”L  ¹©¶Z@  £«`"@  "  ¹«]Œ@      ( «ö&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¹©¶Z 
       ° M   NÀÕ*  Eu¡d    NÀÕ   ¯”L        £«`"@  ¹«]Œ@  "  ¬6@      ( «Ä…h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¬6 
       ° M   NÀÕ*  4u%!    NÀÕ   ¯”L  e©6N@  £«`"@  "  ¹«]Œ@      ( «Ôh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"e©6N 
       â M   NÀ…á*  Bu    NÀ…á   ¯”L  •«õ
@  £«`"@  *  ¹«]Œ@  j¬õ<@      (* «Iqh «™’h 
  ¯”   
         *        ÷	  &
÷	  æ ÷	  †–
‡ ÂÂeàÿ   •«õ
j¬õ<
¹«]Œ¹«      ]Œ£«`"  & { J       ü M   NÀ…È*  5u»p    NÀ…È   ¯”L  š©õ
@  Ã©i"@  *  .ªK@  .ªþK@  R«°'@  ¹«]Œ@      (2   «"h ¯”   
         *        ÷	  ÷	  †‡ æÂÂeìÿ
û	J ƒ‡ÂÂe  R«°'š©õ

¹«]ŒÃ©i"  & Þÿ
÷	  w     
.ªþK.ªK      ¬ M   NÀEÂ*  5u%™    NÀEÂ   ¯”L   ©µ@  Ã©`"@  "  ¹«]Œ@      ( «#h ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J    ©µ¹«]ŒÃ©`"      Â M   NÀÕ*  4uH;    NÀÕ   ¯”L  p©Åœ@  Ã©`"@  *        « w@  ¹«]Œ@      (" «h ¯”   
         &      ÷	  ÷	  †‡ ÂÂeðÿ
µ> û	J w     p©Åœ¹«]ŒÃ©`"$« w      ¦M   OÀEÂ*  9uüX    OÀEÂ   ¯”L  «)x@  «¶{@  *  «¸{@  «º{@  «¼{@  «¾{@  ¹«´‰@  *  5¬ ™@  
­XT@      (Š «v:h  «6xh 
  ¯”   
         *    ÷	  Ã  Ãóµ ( ¡ ‡ ÷	  Ã  ÃÄó*   ¹«´‰
5¬ ™¹«´‰ 5¬ ™*  & ± ‡ À  Á  ÷	< Á  ÷	4 Á  ÷	, Á     «¶{«¸{«º{ «¼{(«¾{*  L ÷	$ À  Á  ÷	 3
$ ó& óe" & ó ( ¡   

­XT      «)x  r ‡ 
Bà4þÿ
ˆ
@‡       M   NÀèã*  Gu¼    NÀèã   ¯”L  «êv@  ¹«]Œ@  "  5¬ ™@      (f «ñh  ¯”   
         *    ÷	  E …)‡Å'Í¥ $Ã  Ãó5 ( À  ¹«]Œ5¬ ™*  & pÿ÷	  D „‡Ä£	 ôµ  æ  æ  «êv  L )ÿˆæ  æÿˆè‡ Ààú÷	    «êv      ¬ M   NÀÅÎ*  Buá"    NÀÅÎ   ¯”L  £«`"@  §«õ<@  "  ¹«]Œ@      ( «!th ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   §«õ<¹«]Œ£«`"      ¬ M   NÀEÂ*  DuÖs          NÀEÂ   ¯”L  £«`"@  ¹«]Œ@  "  ò«ˆ@      ( «åh ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   ò«ˆ¹«]Œ£«`"      jM   NÀÅç*  6u"    NÀÅç   ¯”L  ¼©õ‡@  Â©õ#@  *  «µ@  •«µO@  £«`"@  ¹«]Œ@  È«õ
@  *      (L «u'h «U(h «T[h0 «Tqh
   «Ayh& ¯”   
                       ÷	  &
÷	&  •«µOÂ©õ#¼©õ‡
È«õ
«µ¹«]Œ*     æ ÷	  æ 	÷	  æ ÷	  æ ÷	  ¹«]Œ¹«]Œ¹«]Œ"¹«]Œ  :   †‡ ÂÂe¼ÿ{ J   £«`"             ä M   XÀ  *  `	    XÀ     ¯”L  #z@  $9Ì@  "  s©À@      (F s©<dh  ¯”   
         *    æ|³&€&
f& &æGÿˆ‡&
&
&
&
& $  & &æÿˆÀ  †×'    ± À  –‡   #zs©À$9Ìs©À      R M   vÀ›½*  ƒ,d    vÀ›½   ¯”L      (  
­D"(  
  ¯”         DM   wÀ[Ð*  K	VN    wÀ[Ð   ¯”L  s©À@  °s@  *  ù±oŒ@      (  
­D"(„ ;¯VNh  a³VNh 
  ¯”   
   
­D"  *    w	  fB C 	œ" ¦æ&æÿˆ	‡÷	8   ù±oŒ*  & †Â  ÃSYî      ð  * ‡ Å° p0 p2   s©À*  L q 1 ð• * ‡ Á  Áe œ" f¦æ  °s  r ÿˆ‡DC’B A ‡       ÄM   wÀøÊ*  ¯ˆw    wÀøÊ   ¯”L  °s@  ù±oŒ@  *  b³—G@  f³Ð@  i³‚@  q³¯:@  r³"&@  *  w³·€@      (  
­D"(¸ „¯½`h  ¯”   
   
­D"  *    w	  ð * 8 w œ ðµ  ðµ ) ÷	  ù±oŒ*  &   ðµ   ð¥   øÿÿ  Bà÷	  &œ  b³—G&w³·€*  L * ÷	  
„&
ðµ # ðµ!  ðµ ) &  i³‚*  r ÎeP æÂ  Âe Ê¦æðµ # &æ  °s$  ˜       •&Ä ÷	  †•p* ÷	  w     q³¯:r³"&"f³Ð      @M   wÀ›½*  •e	    wÀ›½   ¯”L  °s@  f³Ð@  *  i³‚@  q³¯:@      (  
­D"(v c³Iqh  
  ¯”   
   
­D"  *    ðµ  0fÂ  &
Âe
 Ê%ÿÿ¦æ&æ  °s*  & &ÎeH æ
÷	  U•
 Â …Ã  i³‚*  L ÂE •ÕfÄ ÷	  p  †ñ  ±
    q³¯:  r w     f³Ð      Ü M   vÀÊ*  zÌ    vÀÊ   ¯”L  i³‚@  q³¯:@  *      (  
­D"(6 e³²Zh  f³t:h r³®Sh 
  ¯”   
   
­D"  *          Ä Ä Ä 	ðµ  	f÷	  u
 ÷	     i³‚(q³¯:  & ‡ ñ  ±
  ‡       ²M   wÀÊ*  œ,      wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³J,@  p³—y@  r³Þ@  *  r³ü@      (  
­D"(‚° }h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³J, r³ü*  &  ÷	Â ð¥öÿ* 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* úðµ  ÷	  ó‡÷	  ï‡ðe  p  p³—ye³&*  r   p  ‡÷	Â â‡ ð¥   Cƒ
ó*  ˜ Ãðµ  ÷	Ð ð¥   ð 0 ã      ð•Øÿ* *  ¾ Äð¥   æÂe@ Ã Îà÷	x ƒµ‡÷	 ²‡*  ä 
ÁE p ¬ðµ  ÷	| ð p *  
 °  æÄ ð Îà÷	, ƒƒ÷	J *  0á÷	 ù†ð•Øÿ* Á`‡ æ÷	  ƒ ‡ æ  r³Þ*  V Càƒ#ƒÎà÷	  Î¦÷	Ôÿ‚ð†–
‡    m³oŒ
  |DàÄ ‡       ¦M   wÀÊ*  œ,hy    wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³K,@  r³ü@  s³k@  "      (  
­D"(~°	€h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³K, r³ü*  &  ÷	² ð¥öÿ* 	ð       ð * ðÕ ) w     (f³Ð*  L ð•öÿ* ú÷	  ÷‡ðe  p  p  ‡÷	Â   e³&*  r ê‡ ð¥   Cƒ
óÃðµ  ÷	Ü *  ˜ ð¥   ð 0 ãð•Øÿ* Ìð¥   æÂe*  ¾ @ Ã Îà÷	„ ƒ½‡÷	 º‡
ÁE p ´ðµ *  ä  ÷	ˆ ð p  °  æÄ *  
ð Îà÷	8 ƒƒ÷	V á÷	 ù†ð•Øÿ* *  0Á`‡ ðµ ) w   æ÷	  ƒ ‡ æ Cà  s³kr³ü*  Vƒ#ƒÎà÷	  Î¦÷	Èÿ‚ð†–
‡  DàÄ   m³oŒ  |‡       JM   xÀ¸Ý*  E`€W    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  b³Ó@  c³      Iq@  d³?!@  e³²Z@  *  f³Ð@  f³t:@  f³y:@  i³‚@  m³lE@  *  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@  *  s³þ}@      (  
­D"(àh±p!h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w úðµðÿ  ù±oŒ
°sf³y:*  &  w ,ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w øÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÷	  ‡÷	*ñ   s³þ}*  ˜   Tðµ # ÷	  ‡Lðµ   ð¥     f³t:*  ¾  ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0 *  ä p2 ÷	  ï‡ðµ # 'ðP ðÕ )       ÷	  †ðµ  
c³Iq$e³²Z*  
@ # ð¥Çÿ* ð * ff f ÷	  ±   $d³?!*  0± ‰‡÷	  †
w ò ðµ  ð  8 ðe$   e³²Z"°s*  V8 2 &À  Áe ÷	  €Z‡p8 q
 ÷	  °s¡«*  |ì V‡0
 ð  ðµ  #0  0  œ  *  ¢Ä¥ ‚‡œA Ä¥ ÄŠð ð•   *  È00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ* 0
@   r³,}*  î÷	  „ðµ # &
&æµ &Ä ÷	  †  i³‚&q³¯:*  ‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ*   r³"&*  :ÁeB Â÷	  ÷	  °•* âð•Õÿ* äð•Ôÿ*   r³®Sm³      lE*  `àð•Óÿ* Üðµ  w ÷	  ÕeB Æå
 •  i³‚*  †Åe > Ä €…
ðµ  # ÍÕ Ä ðµ *  ¬# Ä DÃÍÅ ÑÄ ðµ # Ä …& *  Ò0
 ðµ # Õü Õ÷
 
÷	    (q³¯:*  ø‡0 @ ° Æe
 EX‡°
6 ðµ   ðÿ*   ðµ # ð 
 ðµ@ # ðÿ? ðµ@ # *  D0 4 0
 6 ðµ  1ðµ # )÷	  †æ   "r³ë*  jð¥öÿ* * ÷	pþ°* ðµ@ # 0l  *  ðµ # 	ð•   ð•  02  ðµ  8 *  ¶÷	  ÷	  ‡  ðµ!  ðµ   p0 p  b³Ó
f³Ð  Ü2 ‡       M         xÀ¸Ý*  F`à8    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  f³Ð@  f³y:@  *  i³‚@  q³¯:@  r³"&@  r³,}@  r³ë@  "      (  
­D"(4h±ì&h  ¯”   
   
­D"  *    w	  Á  w zñB ÷	  ð8 w rðµðÿ  ù±oŒ
°sf³y:*  &  w €ðµ # ðµ  ðµôÿ w lœ*  L   Ä¥ †w LÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  †  &a³VN*  ˜ w ò ÷	tñ  ðµ  w ì ±
  ðµ  *  ¾ ð  8 ðe$ 8 2 &À  Áe ÷	  €R‡  °s°s"¡«*        ä p8 q
 ÷	Î N‡0
 ð  ðµ  #0  *  
0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð*  0 ð•   00  0  ÷	  0
@ ‡ ÷	 ð•  r³,}*  VÕÿ* 0
@ ÷	  „ðµ # &
&æµ &  i³‚*  |Ä ÷	  †‡ ð•Ùÿ* ÷	  ð•Ëÿ* ± ‡ ð•Äÿ  
q³¯:r³"&*  ¢* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ  w *  È÷	  ÕeB Æå
 •Åe > Ä €…
ðµ  i³‚*  î  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ *  ðµ # Ä …& 0
 ðµ # Õü*  : Õ÷
 
÷	  ‡0 @ ° Æe
 E  q³¯:*  `X‡°
6 ðµ         ðÿ ðµ # ð 
 ðµ@ *  †# ðÿ? ðµ@ # 0 4 0
 6 ðµ  1*  ¬ðµ # )÷	  †æ ð¥öÿ* * ÷	Žþ°*   r³ë*  Òðµ@ # 0l  ðµ # 	ð•   ð•  *  ø02  ðµ  8 ÷	  ÷	  ‡  ðµ!   b³Óf³Ð   ðµ   p0 p2 ‡       PM   xÀ¸Ý*  F`ÐW    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  c³Iq@  d³?!@  *  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  *  m³lE@  q³¯:@  r³"&@  r³®S@  r³,}@  *  r³ë@      (  
­D"(æh±²'h  ¯”   
   
­D"        *    w	  Á  w ñB ÷	  ð8 w  ðµðÿ  ù±oŒ
°sf³y:*  &  w 2ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w þÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  ‡  &a³VN*  ˜ ÷	*ñ  Tðµ # ÷	  ‡Lðµ   ð¥   f³t:*  ¾    ×  †ð•Øÿ* w F
Å`p!2 ü‡Åà*  ä Åp0 p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  c³Iq*  
  †ðµ@ # ð¥Çÿ* ð * ff f ÷	  e³²Z*  0  ± ± ‰‡÷	  †
w ò ðµ  ð    d³?!e³²Z(°s*  V8 ðe$ 8 2 &À  Áe       ÷	  €Z‡p8   °s¡«*  |q
 ÷	ì V‡0
 ð  ðµ  #0  0 *  ¢ œ  Ä¥ ‚‡œA Ä¥ ÄŠð *  Èð•   00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ*   r³,}*  î0
@ ÷	  „ðµ # &
&æµ &Ä   i³‚*  ÷	  †‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñ  q³¯:r³"&*  :Â&œ* ÁeB Â÷	  ÷	  °•* âð•Õÿ* ä  r³®Sm³lE*  `ð•Ôÿ* àð•Óÿ* Üðµ  w ÷	  ÕeB   "i³‚*  †Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä*  ¬ ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä *  Ò…& 0
 ðµ #       Õü Õ÷
 *  ø
÷	  ‡0 @ ° Æe
 EX‡°
6 ðµ     q³¯:*  ðÿ ðµ # ð 
 ðµ@ # ðÿ? ðµ*  D@ # 0 4 0
 6 ðµ  1ðµ # )÷	    (r³ë*  j†æ ð¥öÿ* * ÷	pþ°* ðµ@ # 0l*    ðµ # 	ð•   ð•  02  ðµ  *  ¶8 ÷	  ÷	  ‡  ðµ!  ðµ     b³Óf³Ð  Üp0 p2 ‡       *M   vÀÊ*  af Z    vÀÊ   ¯”L  a³—K@  e³&@  *  e³&@  r³ë@  w³œ€@      (  
­D"(\   p³¿Zh  ¯”   
   
­D"  *    ° 6 p 4 
 ì0 Á`p       ÷	  ‡ ÷	  ü‡   e³&&a³—K*  & æf¦ðµ ) ÷	  ‡°6 °4 ÷	  °e ð‹  w³œ€"r³ë  L * w   Æe ± ‡   
e³&      M   wÀ›½*  \g      wÀ›½   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³J,@  p³“y@  r³Þ@  *  r³,}@  r³ë@  w³™€@  w³·€@      (    
­D"(r•± }h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³J,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ        ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðµ   r³,}$f³Ð*  ¾  ÷	  †ð¥öÿ* ò0,  ÷	  ÷	Vé‡  
p³“y"r³Þ*  ä ðµ  
÷	  ‡ðÅ ) ð * ðÕ ) ðµ   e³&*  
 
ð¥   Óð¥   Ól ð 0 Ál*  0 ð  
ƒð¥   øÿÿ ÷	ª µ‡  ð¥*  V   ð  ð Òð¥   òe þÿÁe@ *  |Ã ÷	‚ 6‡  ÷	t /‡‚
ÂE ° ÷	¨ *  ¢ðe  p ðÕ )  ì ‡ðµ  ð¥*  È   , 	ðµ  ÷	 ÷	T ‡÷	  w Èþ  $r³,}*  îw ¾þ‡ ÷	  ‡÷	L †÷	  ‡ B æ ƒàƒ#        w³™€r³ë*  ƒÎà÷	  Îf÷	Ìÿ î†–
‡ Â`‡ ð¥  m³oŒ*  :öÿ* ð * w   ± ðµ ) 04  06 
   f³Ð  ` l0 ì ° ‡       ¼M   wÀ›½*  \ghy    wÀ›½   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³K,@  r³,}@  s³k@  *  w³™€@  w³·€@      (  
­D"(>•±	€h  
  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³K,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Š      f÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   0,   r³,}$f³Ð*  ¾  w   ðµ  
÷	  ‡ðÅ ) ð * ðÕ  
s³ke³&*  ä  ) ðµ  
ð¥   Óð¥   Ól *  
ð 0 Ðl ð  
ƒð¥   øÿÿ ÷	¦ Ä‡*  0  ð¥   ð  ð Òð¥   òe *  VþÿÁe@ Ã ÷	~ 4‡  ÷	p -‡‚
ÂE *  |° ÷	’ ðe  p ðÕ )  ì ‡ðµ*  ¢  ð¥   
, ðµ  ÷	 ‡÷	    (r³,}*  Èw êþw àþ‡ ÷	  ‡÷	: †w   ‡ B æ   w³™€s³k*  îƒàƒ#ƒÎà÷	  Îf÷	      Ìÿ î†–
‡ Â`  m³oŒ*  ‡ ± ðµ ) 04  06 
  l0 ì °  : ‡       Ê M   vÀÊ*  \qò    vÀÊ   ¯”L      (  
­D"(R   r³,}h  ¯”   
   
­D"  *    ðµ  $ ðµ  
ð¥   ’¤ð¥   *  & ’¤° 0  ð¥   0  l °  ƒ0
  L   ‡        Z M   tÀXÀ*  `Š }    tÀXÀ   ¯”L  ¼›HüÿÊ8THþÿ      (  ¯”          O   î*OÀ*  À«¤`    î*OÀ   ¯”L      (  ó`(ª(Ž   š©Ô€h  ¯”   
   ó`(ª  *            	 
                *  &          ! " % & ' ( ) * + , - *  L . < = > ? @ A B C E F G H I J K P Q R   r S T U V Z [ _ ` a d e o p         6O   î*OÀ*  ´©}    î*OÀ   ¯”L  Ý©ù}@      (    ó`(ª(œ "&œwh  ¯”   
   ó`(ª  *    DB÷	  €¢‰2÷	j ÁŒ J¤Ñ‹ü+p’/   
Ý©ù}Œ *  & ÈU  É¥F ðU   á¥U ðU  ÷	6 Ê¥S *  L ðÕ  / ÷	$ °’8 ÷	 °( ÷	 °, *  r 3
 ‡ Ñ‰ûÄŠBÂ%ÿÿ‡ ÖóNORAFMIN  ˜ U         pO   î*OÀ*  ¾©Œ    î*OÀ   ¯”L  ¼©Î@  ,«0z@  *  ‹¯=      @  ‹¯@=@  ±}s@  ù±oŒ@      (    ó`(ª(„ ¾©Œh  ¯”   
   ó`(ª  *    w	  €€
ÀE …àƒ€S”À
ýÃ &
Ã
ý  ù±oŒ*  & €p ° ÷	  %‡È• ÷	   ‡± öµ  Ã  ‹¯=‹¯@=*  L   À Àe ÁeB ‚Âe 
÷	  ‡öµ    ,«0z±}s  r Ã  Ä ÷	  ¡ F‡   ,«0z¼©Î       œ O   î*OÀ*  :ª    î*OÀ   ¯”L  ³«¿@      (    ó`(ª( ;–h  ¯”   
   ó`(ª  "    Õ@DB
¦÷	  ‚RÅùÀ‡   ³«¿       š O   î*OÀ*  ‘«–    î*OÀ   ¯”L  ³«¿@            (    ó`(ª( ¬ppßh  ¯”   
   ó`(ª      ÕDÅ ÷	  f÷	  €‡   ³«¿³«¿       Ø O   î*PÀ*  ³«¿    î*PÀ   ¯”L      (  ó`(ª(X   ³«¿h  ¯”   
   ó`(ª  *    æ 
 
Å
ÂB  Õ€¤‡€¤‡Â
Âe Ê÷  B *  &  
C€bÁÁÁ@`ÁÁ`Î
ä€Ö‡ Z@Àÿ9/îÿ   L àÿ$#÷ÿ.-îÿ         ¸O   î*PÀ*  š©¨S    î*PÀ   ¯”L  &v~@  ü¨ }@  *  ©»W@  e© }@  š©,t@  š©‘t@  ¹©àL@  *  ,«0z@  ù±oŒ@      (  ó`(ª(Œ š©¨ph    š©Ðphr ¯”   
   ó`(ª  *    w	  &€“      ŠÎ &÷	  ÷	  Áx ÷	  ÷	  Á$  ù±oŒü¨ }š©‘tx  ¹©àL&©»W*  & ‚ ÷	   ÷	  ÷	  ÷	  €  Îä‰  ‚ ¹©àL©»Wš©,te© }*  L Î
å‰ð‹  Öá‰‡ Ã  Àt ðÅ a á‰@   &v~,«0z  r ÷	Šÿ… FTN ERROR , NUMBER        ZO   î*OÀ*  a©u~    î*OÀ   ¯”L  ,«0z@      (  "  ó`(ª(¸ <@h, u~@h  ¯”   
   ó`(ª  *    Í¥ Ð‰0÷	^ -‡@ Ã Áe B÷	\ Ã
"*  & Ð•: øÍ¥ Ð‰÷	2 ‡@ B ÷	6 Ð•- *  L B ÂBl Âe‘ ”””Ð•- B÷	 ‡ Á  Áe  ‘ &,«0z*  r $ fæ      =ÿˆ‡ Âeö Â‹ü€Âe:/Â Â ‡ JANF$  ˜ EBMARAPRMAYJUNJULAUGSEPOCTNOVDEC       ÊO   î*PÀ*  ½«ô    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  :ª  @  Ôª€p@  º«€p@      (  ó`(ª(˜   ‹w3Xh  ¯”   
   ó`(ª  *    fÆå €&æ=ÿˆ‡Æe 7	* V   \     b    V  :ª  "\ $:ª  &v©€p(b   &   l   z     l &  :ª  l Ôª€p
z :ª  ì¨€pl   4   z       ˆ   (  Ôª€pz :ª  
ì¨€pì¨€pˆ º«€p*  B N Ö\ Æe €…‡ ¦ \ ¦ \ ¶ ¶  N *  h  \ æ æ \ pC  €‚f&¦\ €          Ž  & &\        O   î*OÀ*  —©€%    î*OÀ   ¯”L  þvëu@  Ý©ù}@  *  («p!@  U«Õ@      (  ó`(ª(P ž!À¨h    —©€%h ¯”   
   ó`(ª  *    æJ ¦)¦ ÷	  Æe ‚÷	  €È0 " È5  J þvëuÝ©ù}*  &  ÈU €È‹÷	  ø• " Á ÷	  3
 ‡ \   («p! U«Õ  L ¡‰ú       ² O   î*PÀ*  •« }    î*PÀ   ¯”L  ðyÀ¨@  ,«0z@  "      (  ó`(ª(& \q`©h  ¯”   
   ó`(ª  *    Ã  ó –%‹³ ³•‚ ÀÁÂÃ‡ w     ,«0z(ðyÀ¨       ²O   î*OÀ*  =ª€p    î*OÀ         ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ³©<4@  ¼©Î@  Ý©Õ@  *  6ªi;@  7ª	#@  («p!@  ,«0z@      (  "  ó`(ª(š š;À¨h  =ª€ph ¯”   
   ó`(ª  *    æ  &
÷  ÷	  ÈU ÈE €È5Ÿ‰Þ	Ü	Ã    R~8þv³q6ªi;(,«0z*  & ÷	@ ÂœU ÁH ó‹N ö‡ ó‹N Ã‰¦f÷	 *  L ‚ó
Z óÑž ³
 Â
÷Þ	Ã  à÷	     ,«0z$Ý©Õ*  r óÿÿN Ñµ 3ŠN ð
øÿ
s  Áå sZ   ˜ ‡        Ú O   î*PÀ*  •«ø    î*PÀ   ¯”L  ðyÀ¨@  ,«0z@  *      (  ó`(ª(( \qÀ¨h \q°©h \q(ªh
   \q       ªh  ¯”   
   ó`(ª  *     —Á  Ã  ó –%‹³ ³•‚ ‡ w   ,«0z  &     ðyÀ¨       jO   î*PÀ*  D¬¶p    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(z t€À¨h v€À¨h y€À¨h |€À¨h  *  €€À¨h €À¨h ö« h ö«€%h ö«@8h "  ö« Kh  ö« dh ö«@jh ¯”   
   ó`(ª  *    æææææææÃ*  &   &
Ž —£ —£ Îe ¶­  N³¦ ó‹  ,«0z*  L ‚ Ö³T ³H Þ	\ ³ T ³ H ƒÖ¶   r  ¶ ^        ˜ O   î*PÀ*  •«³}    î*PÀ   ¯”L        ,«0z@      (    ó`(ª( ëy`©h  ¯”   
   ó`(ª      €‚ƒ–%Ä  Œ´ ´•‚ ‡   ,«0z       ö O   î*PÀ*  3¬Ñ    î*PÀ   ¯”L  ,«0z@      (  "  ó`(ª(P s€À¨h  ö«Àh ¯”   
   ó`(ª  *    æN æÃ  óT ó ¦ ³ H ³ Œ ƒ–%  N ,«0z*  & Þ	æÃ  ó ¦ óe H ƒÞ	ææÃ  öŒ  ƒ  
,«0z ,«0z  L ^ \        ú O   î*PÀ*  ã«ÌS    î*PÀ   ¯”L  ,«0z@      (  "  ó`(ª(Z +}À¨h  á«Àh ¯”   
   ó`(ª  *    æX æÃ  ³ Œ ³ H ³ X óX ó ¦         X ,«0z*  & óT ¶ –%ƒÞ	æÃ  ó ¦ óe H ó
X ó  ,«0z  L ¦öŒ  ƒ^ \        ¸O   î*PÀ*  ò«)	    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(° ,}À¨h .}À¨h 1}À¨h  4}À¨h *  8}À¨h 9}À¨h á« h á«€%h á«@8h  "  á« Kh á« dh á«@jh ¯”   
   ó`(ª  *    æææææææÃ*  &   &
Ž —£ —£ Îe ¶­  N³¦ ó‹  ,«0z*  L ‚ Ö³T ³H ³X ó® Œ &€$3T 3  ® *  r Œ 3H 3X €¶ Æe ƒÞ	æ&Ã  ÀœU 3`  ",«0z  ˜ H €ó
X       ò¦öŒ  ƒ^ \        ’ O   î*PÀ*  ¬"    î*PÀ   ¯”L  ,«0z@      (    ó`(ª( =†`qh  ¯”   
   ó`(ª      Í¥ Ð‰ÕÃ  s` ‡   ,«0z       ~O   î*OÀ*  ,«€‰    î*OÀ   ¯”L  â)Ä&H æ)PHl *  Ë«°@  Ë« ‚@  Ë«(‚@  Ë«P‚@  Ë«x‚@  *  Ë« ‚@  Ë«È‚@  °úp@      (  ó`(ª(  *  ù¬ó`¨Äñª¸Qh* ,«1zh( ½«¸jh( Ë« }h´*  ±VNh. <±ƒ…h, ü¬Ä"¬  þ¬¯yì  ­/^¬„ "  ­0^¬  ­¨H ­(  ¯”   
   ù¬ó`( *  (           „                          "  ­/^        ­0^   ü¬Ä"   n *  n                                       (  ”   0:    ´                    *  0
:´­  ­   Æ   Æ      Ì   Ì              þ   þ      ´  ´              &  Ë«°Ë« ‚
Ë«(‚Ë«P‚Ë«x‚Ë« ‚  Â    Ë«È‚       ÌO   î*OÀ*  =ªÀ    î*OÀ   ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ³©<4@  ¼©Î@  6ªi;@  *  7ª	#@  («p!@  ,«0z@  U«Õ@      (  "  ó`(ª(¬ Ÿ;À¨h  =ªÀh ¯”   
   ó`(ª  *    æ  &
÷  ÷	        €È0 " ÈU ˆÈ5Ÿ‰  R~8þv³q6ªi;*  & Þ	Ü	Ã  ÷	B ¸Š" ÂœU ÁH )ó
Z 3
Z ¦  
,«0z*  L f÷	J ð
øÿ÷	 ‚ð{” ³
 Â
êÞ	Ã    (,«0z*  r áÀ " 3  Z ŠŠóå Z s ‡ À øÕ  ˜  " À   ÁìZ w     U«Õ       tO   î*PÀ*  «}?    î*PÀ   ¯”L  ‡À¨@  Á8À¨@  *  Ç8À¨@  KÀ¨@  ‡KÀ¨@  qÀ¨@  ,«0z@  "      (  ó`(ª(¦«}?h  ¯”   
   ó`(ª  *    f&Ã  ó|  Õ¥  ýW­ÿÿ( c3
$ 3
&   ,«0z*  & 3
* 3
( 

÷	 ù@•À¥  ü Z  @ *  L  0 À¥9       Àå0 Â€`ÂÂ`„P³
( åó* *  r 8À rÀE€ÿŠÁ q ô3
* Á€	 S!   
rô €*  ˜ ! !! #! +! 9! L!  ! oóU €( ¾ó
*  ¾ $ ó( eÄ c€9`3
$ ó( [‡ ó
$ ï€*  ä V÷	˜ À• y÷	Ž À•
 tó& À•  ÷	Ú ³
*  
& ×,&  ?‚À• R÷	d ó
& À• \ÖÀ• *  0÷	® „…‡ ÷	D À• O÷	: f
‚
I¥ýI¥û*  V…Â
„À• ÷	d ÷	x @•	 û ùÅ
‡ -$')	  |(/.,:   ‚*  ‚ó( ÷	0ÿó$ ò¾‰ó( üW¥  ýW©0 ‡*  ¨W£9 ƒÀe  ( Àå ó( æ‚
ó$ â*  ÎÄ àÂ
ÝÀU€ ÷	 €; ³
 ó, ~ Â‡Á‰*  ô ž       ž ž ž ž ž ž ž ž ž ž ž ž ž ž ž ž ž ž   ž ž ž ž ž ž ž   
  
:   ô  ô:     :     :   ú  úddddn      ~"˜     $¢   "  "&4   (*  (3
* È÷	jÿ³
$ À 3* Áå( ™3
$ 3
* W *  N È÷	ŒÿÅ÷	@ÿ³
$ è÷	.ÿ@•÷	vÿÂ
û€‡ ó*  t$ Ä5€ÿŠÂ	ó( ¨€¦÷	òþÀ" ¦÷	èþ  šÀ•¤ ÷	>ÿÆ       ž O   î*OÀ*  D©Àv    î*OÀ   ¯”L  D©½`@  Ý©ù}@  *  («p!@      (  ó`(ª( ¯ˆwh  ¯”   
   ó`(ª      Õ¥ Ð‰…
Bw     D©½`             ‚ O   î*OÀ*   ©`;    î*OÀ   ¯”L   ©`;@      (    ó`(ª( 	# }h  ¯”   
   ó`(ª      w      ©`;       (O   î*OÀ*  Ì«f    î*OÀ   ¯”L  ü¨ }@  D©½`@  *  e© }@  š©,t@  š©‘t@   ©{;@  ¹©àL@  *  ,«0z@      (  ó`(ª(¤ °À¨h< 	#8hn *  ç'À¨hf ýfÀ¨h& ðyÀ¨hb  ©`;hn S«@h* "  S«8"hD Ì« dhb Ì«øfh\ ¯”   
   ó`(ª  (    Ã  ÷	  &&÷	  ÷	  „÷	  ÷	  w &  ,«0z
ü¨ }š©‘t¹©àL ¹©àL$š©,t*  $   æZ &Ä” Àœ ÷	Èÿ„
ææZ „ÔÀ  e©       }Z ” œ  Z *  J œ ÷	°ÿæ-ÿˆŽ‡ \ Ö„Ä” À– ÷	’ÿÃ  œ ” "– *  p   Å Åe. Ä B“÷	  Åel Ä
øw   ›   ,«0zD©½`& ©{;(›   – STOP  PAUSE         O   î*OÀ*  û¨/x    î*OÀ   ¯”L  ¾©Œ@  Ý©ù}@  *  ,«0z@      (  ó`(ª(h K	f9h  ¯”   
   ó`(ª  *    DBÃ  ÷	  €¢‰ ÈE ÷	> &
ÄŠ÷	  
,«0zÝ©ù}*  & 4 ŽBŽ
Ê‹Ò¥  úÎ
‚÷	  †«‰  "¾©Œ   L ûU  3
 ‡ ÄŠBÂ%ÿÿ‡ Öõ       Š O   î*OÀ*  ³©<4    î*OÀ   ¯”L      (  ó`(ª(         ³©<4h  ¯”   
   ó`(ª  "    À Â,  ‰Àel Á
ü°. ‡        ’ O   î*PÀ*  9©àL    î*PÀ   ¯”L      (  ó`(ª(   ñÀ¨h  ôÀ¨h ¯”   
   ó`(ª  "    & & A…f&È	„…Î†e\        O   î*PÀ*  e©ö&    î*PÀ   ¯”L  þvëu@  R~8@  *  Ý©ù}@      (  ó`(ª(V ÎÀ¨h  e©€%h 
  ¯”   
   ó`(ª  *    æ  ÷	  ‚ ÷	  €¢‰È5 •‰° °  R~8
þvëuÝ©ù}*  &  ÈU Àe Á„¬‰p s 
 ƒW  ÷‚B@  L óÖ3
 ‡        ìO   î*PÀ*  («p!          î*PÀ   ¯”L  ,°l@  h±²'@  *  ù±oŒ@      (  ó`(ª(¼©ÎhÔ («p!h  
  ¯”   
   ó`(ª  *    w	  &Àe Ä ð•   ð5 öÿð•  É5  ù±oŒ*  &  ð•   ÄE 0‘ ð  ð
  É5  ðÕ*  L  # É€ðÕ # É5 D÷	n ÁeB p& ÷	*  r   †ž‰+  ÷	  †* Â¥æÿðÕ   ,°lh±²'*  ˜ # p ð5 öÿî‰Â¥Ùÿã©‰Â¥úÿÞª‰	*  ¾ ðU€ ôÿÄ0! ¥‰€‡ w	  . 
Âå
   ù±oŒ*  ä 
ûEÁÁAaÁÁÁÁeXÀ`tV ôê'T ô<  
Z ‡        Ä O   î*OÀ*  š©†s    î*OÀ   ¯”L  ,«0z      @      (    ó`(ª(< ""yh  ¯”   
   ó`(ª  *    Ã  Á6 @•…
B”ÂE ÿÂ`Í%ÿÿ

À
ô  ,«0z
6   & B”ÂE ÿÂ`

ù‡ hvx€ •       ê O   î*PÀ*  8ª®S    î*PÀ   ¯”L      (  ó`(ª(4 *  ¡S8ªh  ¡SØªh ¡SA«h  ¡SM«h ¡SP«h *  ¡SS«h ¡SÈ«h ¡S€­h& ¡S¨­h, ¯”   
   ó`(ª  *    & ˆ\   	\  &\  \  \   &  
\  È \        ¶O   î*OÀ*  :ªÀ    î*OÀ   ¯”L  þv³q@  R~8@  *  ³©<4@  ¼©Î@  6ªi;@  («p!@  ,«0z@  *  ±“y@  •± }@      (        ó`(ª(  ';À¨h    :ªÀh ¯”   
   ó`(ª  *    æ  ÷  ÷	  ÈU €È5 š‰Þ	Þ	Ã  À Â  R~8
þv³q6ªi;",«0z*  &  °  ƒ™‰Àe ° ‚
¸üÿ÷	  †,* ö   ±“y*  L ¦‰3 Z 3  ÂœU ÁH ó
Z ;Š ³
 *  r øÀ Àe ÷	  å‡‡ {” ³
 ó
Z Â‰Â
ö  •± }  ˜ Þ	Ã  Ý  ,«0z       xO   î*OÀ*  :ª€p    î*OÀ   ¯”L  þv³q@  R~8@  *  ³©<4@  ¼©Î@  6ªi;@  («p!@  ,«0z@  *  ° }@      (  ó`(ª(z ";À¨h  :ª€ph 
  ¯”   
   ó`(ª  *    æ  ÷  ÷	  ÈE €È5       š‰Þ	Þ	Ã  À Â  R~8
þv³q6ªi;",«0z*  &  °  ƒ™‰Àe ° ÷	  †§‰‚
¸üÿ3 Z   ° }*  L 3  ÂœU ÁH ‡ Ñž ³
 ó
Z Ã‰Â
ö  r Þ	Ã  ì  ,«0z       æ O   î*PÀ*  å«óy    î*PÀ   ¯”L      (  ó`(ª( *  ü(ªh üÈªh ü@«h ü¸«h þ(ªh *  þÈªh þ@«h þ¸«h €(ªh €Èªh   €@«h €¸«h  ¯”   
   ó`(ª      Ö\ ŽŽ–\ Ü\ Ô\  È\        ZO   î*PÀ*  .ª€p    î*PÀ   ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ³©<4@  ¹©À]@  ¼©Î@  *  Ý©      Õ@  6ªi;@  7ª	#@  («p!@  þ¬˜:@  *      (  ó`(ª(B B9À¨h  .ª€ph ­P(h 
  ¯”   
   ó`(ª  *    æ  ÷  ÷	  ÈU ÈE €Þ	ó(  È5Ÿ‰w   R~8
þv³q6ªi;(    &   ÷	   s s l s ‡   ¹©À]Ý©Õ       ² O   î*PÀ*  >ª¸    î*PÀ   ¯”L      (  ó`(ª( *  ñv5ªh  ñvÕªh ñvÅ«h 9z5ªh 9zÕªh   9zÅ«h
 ¯”   
   ó`(ª      &Îe\ &Îe¦\ &ö&ø       â O   î*OÀ*  ¹© X    î*OÀ   ¯”L  þv³q@  þvëu@  *  R~8@  6ªi;@      (  ó`(ª(0 ´'      À¨h    ¾© h ¯”   
   ó`(ª  *    æ. æ¦ ÷	  –%÷	  ÈE €È5 š‰Þ	ø   . þvëu6ªi;  &  3
 ‡ \        ˜ O   î*OÀ*  ;ªsY    î*OÀ   ¯”L  ,«0z@      (  "  ó`(ª( F;À¨h  NÀ¨h ¯”   
   ó`(ª      ¿
  \ ?  \   ,«0z,«0z       –O   î*PÀ*  –©    î*PÀ   ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ¹©À]@  7ª	#@  ,«0z@  *  þ¬˜:@      (  ó`(ª(| ËÀ¨h
 s!À¨h    e©Àh –©Àh ¯”   
   ó`(ª  *    æ  æz æ  æx æƒÃe æÃ  ³       ó  R~8
z R~8x ",«0z*  &  ¨‰³  ³  ƒÖŽ÷  Ã  ó    þv³q",«0z*  L ó  ³ ³g óV ón  ó \ w   ó
\   n $¹©À]  r ‡ ›‰  ‚       ² O   î*PÀ*  >ªÈ    î*PÀ   ¯”L      (  ó`(ª( *  ñv8ªh  ñvØªh ñvÈ«h 9z8ªh 9zØªh   9zÈ«h
 ¯”   
   ó`(ª      &Îg\ &Îg¦\ &ö&ø       Ð O   î*OÀ*  Ý©Õ    î*OÀ   ¯”L  7ª	#@  °	€@  "      (  ó`(ª(> Ý©Õh  ¯”   
   ó`(ª  *    À Àe ÷	  †* 	Á¥öÿÄb ˜‰w           °	€(7ª	#  & §‰°
øÿð%  ø¥  ï‡        ê O   î*PÀ*  –©Ú    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(4 t!À¨h  ""À¨h
 –© h š©€ph" 
  ¯”   
   ó`(ª  *    Ã  3b \ Ã  3d \ æÃ  ³ b æÃ  ,«0z,«0z,«0z  &   ³ d ƒŽ‡   ,«0z       rO   î*OÀ*  *ª€p    î*OÀ   ¯”L  ‡À¨@  ÇÀ¨@  *  ¤!À¨@  &À¨@  G,À¨@  Á8À¨@  Ç8À¨@  *  B9À¨@  KÀ¨@  ‡KÀ¨@  A^À¨@  G^À¨@  *  qÀ¨@  þv³q@  R~8@  —© K@  ³©<4@  *  ¹©À]@  Ý©Õ@  6ªi;@  «}?@  («      p!@  *  ­P(@      (  ó`(ª( ¢8À¨h  *ª€ph 
  ¯”   
   ó`(ª      æ  ÷  €÷	  Î| w     R~8
þv³q«}?­P(       *O   î*OÀ*  *ªÀ    î*OÀ   ¯”L  G9À¨@  þv³q@  *  R~8@  ‹©@8@  —© K@  ³©<4@  ¹©À]@  *  ¼©Î@  6ªi;@  7ª	#@  «}?@  («p!@  *  U«Õ@  þ¬˜:@  ­)@      (  ó`(ª(   §8À¨h  *ªÀh ¯”   
   ó`(ª      æ  ÷  €÷	  Î| w     R~8
þv³q«}?­)       ÀO   î*PÀ*  ¹©À]    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(¼¹©      À]h^þ¬˜:hbó`@«ì ¯”   
   ó`(ª  *    
ÁÞ ³
 ‡ ó,  ‡À•  ‡ Àž 
À•  ó,*  &   ‡Â‰‡ ; ³
 ‡ ó, J †óJ  3
J *  L óV û¥   û•$  û¥+  ;Š û	 3
*  r V ‡ Ál Á
ó, J ƒó J BóJ  ÁìJ *  ˜ ³ xÂ" RÒ ³" pÂ" €â
ø3 h*  ¾ As  d÷	BÿÁ
`û ù€÷	Hÿøû €÷	Vÿ*  ä Tû	 QóH MB÷	ÿ; ³
 Â
Cû*  
 õ€÷	îþ@÷	ÿõóF  û €÷	ÿóH ¢*  0óZ ¼‰³V (óH îû Â Âì »H *  VÞ	Ã  3
V 3
  Þ	Ã  3
J û û	 ó  ,«0z,«0z*  |" óe      $ " ó F 3
Z 
÷	lþ@
÷	`þÀE*  ¢€ÿx „‚
‚
‚
‚
‚
‚
‚
Â³L 3M ³
Z sN   „*  È÷	4þsP Â% ÷	&þsR óH žÀP ×¬M ( *  îÂÀœT Â% À ó¥ T À ó*   R À ó R æ Á ãû € Â‰*  :@3` ( @!û5 @ õÂóû¥,  *  `û¥	  ³
 Á
ôÞ	Ã  ó
N ˆÂœL ­³
  ,«0z*  † @àÎ" €
&Ž
Â% æR æ  ÁT Â  " *  ¬
W  —  ½‰—  üû €ÃH Â8Á¥*  Ò Á¥ &
&
ÁE ÿFà€ÐÁ
ýú	þÿ¾†¿‰
  $ó`@«þÿ*  ø¼Á’føú	 Ã  †À‰ÀH ÁœT Á% Á%         ó`@« ,«0z*  	‚’$J’ŠJNí…ì‡Á
ý›ˆ•™‚€*  DŠÁ  Ð•  Â
úƒ`CàBÐ”Â
ýˆÖÁœU ‚*  jÀH ƒ ð@`àà•  Á
ü€àëzž ® Ú 8  z ž "® $&Ú (8  ì ´¶°²¨¬®ªô *  ì ´¶
°²¨¬®ªô   ¤¾ >v Î ´¶°²¨¬*  ¾ >v 
Î ´¶°²¨¬  ¸®ª  ®ª ó`@«    b
  ó`(ªb       .O   î*PÀ*  «V?    î*PÀ   ¯”L  ËÀ¨@  s!À¨@  *  KÀ¨@  A^À¨@  qÀ¨@  R~8@  e©À@  *  –©À@  «}?@      (  ó`(ª(      2 ×À¨h
 "  !À¨h  e©À]h –©À]h ¯”   
   ó`(ª  *    æ  æ  æ  æ  &f¦æ€ ÷	  ö|    R~8
–©ÀR~8e©À$«}?  &  ƒ‚€‡        ¾ O   î*OÀ*  ,ªe	    î*OÀ   ¯”L  ,«0z@      (    ó`(ª(: á8È}h  ¯”   
   ó`(ª  *    Í¥ Ð‰Ã  ÁÁe$ fæ=ÿˆ†1
 1
   ,«0z  & 1
  @%] ] ]  ‡          O   î*OÀ*  U«Õ    î*OÀ   ¯”L  7ª	#@  •±	€@  "      (  ó`(ª( U«Õh  ¯”   
   ó`(ª      À Àe p ÷	  †¦‰°
øÿ‡   •±	€             ¶ O   î*PÀ*  8ªKŠ    î*PÀ   ¯”L      (  ó`(ª(, *  ñvM«h  ñvP«h 9zM«h
 9zP«h  ¯”   
   ó`(ª  *     &Îe\   À e&\  &Îg\   À
  &  g&\        O   î*PÀ*  —© K    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(Z ¤!À¨h —© Kh 7ª	#h  ¯”   
   ó`(ª  *    Æ æX æó‹‚ 6 æÃ  3
H ó‹‚   
X ,«0z*  & ³ Œ ƒÖÞ	æX æÃ  ó‹‚ öŒ  3
d   X ,«0z  L 3
b 3
 ƒ‡ \        â O   î*PÀ*  "©8	    î*PÀ   ¯”L      (  ó`(ª(, *  Y      À¨h À¨h ¬À¨h eÀ¨h tÀ¨h$ *  µÀ¨h" QÀ¨h ‘Y¡­h
 ‘Y¥­h  ¯”   
   ó`(ª  *    ¼
  …'¼
  …'Ô\ ýü\ ýü
  & ÷%õ       Ú O   î*PÀ*  6ªi;    î*PÀ   ¯”L  ³©<4@  («p!@  *  ,«0z@      (  ó`(ª(6 6ªi;h  ¯”   
   ó`(ª  *    Ã  €Àe 3 ó ¨‰€³ ‚&÷	  3  ,«0z&³©<4  &  È‹Þ	È‹÷	  ‡   («p!       ö O   î*PÀ*  «Ø    î*PÀ   ¯”L  À¨@  eÀ¨@  *      (  ó`(ª(8 ‘Y1ªh  ‘YÑªh ‘YI«h$ "  	Z1ªh, 	ZÑªh0 	ZI«h4 ¯      ”   
   ó`(ª  *     H`…"w   H`…"w   %\  ð   eÀ¨À¨  & Aì é ö ÷       ¤ O   î*PÀ*  Ý©ù}    î*PÀ   ¯”L  ³©<4@  ,«0z@  "      (  ó`(ª( Ý©ù}h  ¯”   
   ó`(ª      Ã  ó ¨‰÷	  3 È‹‡   ,«0z³©<4       Æ O   î*OÀ*  ³«€»    î*OÀ   ¯”L      (  ó`(ª(L   ³«€»h  ¯”   
   ó`(ª  *    æÃL ãûÀÿÿÂ%ÿù
‡€
Ââý†ÂbÀÀ%   L *  & ‡Àe  Àe Àe	 Àe	 Á
äƒ‡    ( @       ö O   î*PÀ*  « ‚    î*PÀ   ¯      ”L  À¨@  eÀ¨@  *      (  ó`(ª(8 ‘Y5ªh  ‘YÕªh ‘YM«h$ "  	Z5ªh, 	ZÕªh0 	ZM«h4 ¯”   
   ó`(ª  *     H`…"w   H`…"w   %\  ð   eÀ¨À¨  & Aì é ö ÷       Š O   î*OÀ*  ³«»»    î*OÀ   ¯”L  ³«€»@      (    ó`(ª( v;	h  ¯”   
   ó`(ª      ÕADEw     ³«€»       ú O   î*PÀ*  «(‚    î*PÀ   ¯”L  À¨@  eÀ¨@  *      (  ó`(ª(< ‘Y8ªh  ‘YØªh" ‘YP«h( "  	Z8ªh0 	ZØªh4 	ZP«h8 ¯”   
   ó`(ª  *           H`
…	"w   H`…	"w   %\    eÀ¨ À¨  & î Aê ç ö ÷       
O   î*OÀ*  •«6‘    î*OÀ   ¯”L  þvëu@  Ý©ù}@  *  ,«0z@  ±„:@      (  ó`(ª(H tÀ¨h    §« h ¯”   
   ó`(ª  *    æF ¦)¦ ÷	  Æe ‚÷	  €È5 ÈE €0
  F þvëuÝ©ù}&  &  Àe 
Â 
÷	  †”‰Ã  3
 ‡ \   ±„:,«0z       jO   î*OÀ*  ©‹    î*OÀ   ¯”L  þvëu@  Ý©ù}@  *  Ý©Õ@  ,«0z@  ±„:@      (  ó`(ª(‚   KÀ¨h  ©Àvh ¯”   
   ó`(ª  *    æ€ ¦)¦       ÷	  Æe ‚&÷	  .€È5 
&Àe  € þvëuÝ©ù}*  &  
Â 
÷	  †—‰Ã  øÿ0
øÿÂ
ól   ±„:,«0z(l *  L b ³ ÷	  û5  óøµ  ïð
øÿîn ³   Ý©Õ$n   r èÞE €3
 „‡ \        |O   î*PÀ*  .ªÀ    î*PÀ   ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ³©<4@  ¹©À]@  ¼©Î@  *  6ªi;@  7ª	#@  («p!@  U«Õ@  þ¬˜:@  *      (  ó`(ª(V G9À¨h  G9ø¬h$ .ªÀh   ­)h ¯”   
   ó`(ª  *    æ  ÷  ÷	  €È0 " ÈU „Þ	ó0  æ  R~8
þv³q6ªi;$0 *  &   È5	      Ÿ‰Á Áì ÷	  À " s s   ¹©À]U«Õ  L Ál
 s ‡        Ø O   î*OÀ*  D©½`    î*OÀ   ¯”L  ³©<4@  ,«0z@  *  „¯½`@      (  ó`(ª(8 D©½`h  ¯”   
   ó`(ª  *    Ã  ÷	  3 Àe É‹	€É5  ÉU  ÷	  †  ,«0z
³©<4&„¯½`  & œ‰À6 
À
ý3
 ‡        ° O   î*QÀ*  š©³s    î*QÀ   ¯”L  ,«0z@      (    ó`(ª(, ""€h  ¯”   
   ó`(ª  *    Ã  À A W x 
‚Ált É‹€À
= ÉÅ€   ,«0z
  & ‡ Ñ‰‡        bO   î*OÀ*  š©·k    î*OÀ   ¯”L   ©{;@            (  *  ó`(ª(¼ ü¨ }h  e© }hD š©,thx ¯”   
   ó`(ª  *    &
æTIæ æÿˆ&
&
&
&
&
&
&
æ &
Î•*  &  æ æ æÿˆ‡æ æ)ÿˆ‡ &
&
&
&
*  L &
&
&
æ &
Î• æ æ æÿˆ‡æ æ*  r )ÿˆ‡ Åìn &
&
&
æ  fæn &
æ &
Î• (  ˜ æ æ æÿˆ‡æ æ)ÿˆÅn ‡ w     & ©{;       O   î*OÀ*  ¹«WŒ    î*OÀ   ¯”L      (  ó`(ª(d *  ¹«ø‰h\ ¹«@hV ¹«0Žh  ¹«XŽh ¹«€Žh "  ¹«¨Žh ¹«ÐŽh ¹«øŽh ¯”   
   ó`(ª  *    æ æ æ æ
 æ æ &€*  & Àe       f¦æ&¦ v Þ	„ƒ‚€……c  L  … †c‡ 6 ‡ À6` ‡        à O   î*PÀ*  «P‚    î*PÀ   ¯”L  eÀ¨@      (  *  ó`(ª(0 ‘Y¨­h  	Z¡­h 	Z¥­h 	Z¨­h 
  ¯”   
   ó`(ª  *     ˆ
…	"w    ø ˆ

…"w    ˆ
…"  eÀ¨ eÀ¨  & w   ÔÔ\   eÀ¨       x O   î*PÀ*  ñ¨€%    î*PÀ   ¯”L      (  ó`(ª(   ®À¨h  ¯”   
   ó`(ª      ÔÔ\        ¼ O   î*PÀ*  Æ©¸    î*PÀ   ¯”L      (  ó`(ª($ *  îv5ªh  îvÕªh îvÅ«h 6z5ªh
 6z      Õªh    6zÅ«h ¯”   
   ó`(ª  (    &ÎÎe\ &€ÀÀ e& &\ &ñ õ       À O   î*PÀ*  À©KŠ    î*PÀ   ¯”L      (  ó`(ª(6 *  îvM«h  îvP«h 6zM«h 6zP«h* ¯”   
   ó`(ª  *     &ÎÎe\   ÀÀ e& &\  &ÎÎ  & g\   ÀÀ gð       Î O   î*PÀ*  v©¸    î*PÀ   ¯”L  œSC¬@      (  *  ó`(ª($ ìv5ªh  ìvÕªh ìvÅ«h 4z5ªh   4zÕªh  4zÅ«h ¯”   
   ó`(ª  (    &ÎÎÎe\ &€ÀÀÀ ew   &ñ ö  œSC¬       æ O   î*PÀ*  p©KŠ          î*PÀ   ¯”L  œSC¬@      (  *  ó`(ª(< ìvM«h  ìvP«h 4zM«h 4zP«h, 
  ¯”   
   ó`(ª  *     &ÎÎÎe\   ÀÀÀ ew    &ÎÎ   œSC¬  & Îg\   ÀÀÀ gw     œSC¬       š O   î*PÀ*  ½©Ba    î*PÀ   ¯”L      (  ó`(ª( *  žS‘«h žS«h žS «h žS£«h  ¯”   
   ó`(ª      f&\ J\ ‚ûù       v O   î*PÀ*  ½©Oa    î*PÀ   ¯”L      (  ó`(ª(
   žSË«h  ¯”   
   ó`(ª      ¦ ¦ \        € O   î*PÀ*  ½©Pa    î*PÀ         ¯”L      (  ó`(ª(   žS;ªh  žSƒ­h ¯”   
   ó`(ª      &
&\ &
&
\        ‚ O   î*PÀ*  ½©Qa    î*PÀ   ¯”L      (  ó`(ª(   žSÛªh  žSS«h
 ¯”   
   ó`(ª       & &\  ú       x O   î*PÀ*  ½©Ra    î*PÀ   ¯”L      (  ó`(ª(   žS¹«h  ¯”   
   ó`(ª      € ˆÖ\        t O   î*PÀ*  ½©Sa    î*PÀ   ¯”L      (  ó`(ª(   žS)ªh  ¯”   
   ó`(ª      €
\        € O   î*PÀ*  ½©Ta    î*PÀ   ¯”L      (        ó`(ª(   žSÅ«h  žSÈ«h ¯”   
   ó`(ª       ˆ\  û       „ O   î*PÀ*  ½©Ua    î*PÀ   ¯”L      (  ó`(ª(   žS5ªh  žS8ªh
 ¯”   
   ó`(ª       	
\  ú       Œ O   î*PÀ*  ½©Va    î*PÀ   ¯”L      (  ó`(ª( "  žSq­h žS}­h  žS€­h ¯”   
   ó`(ª       

\ €û ù       º O   î*PÀ*  ½©Wa    î*PÀ   ¯”L      (  ó`(ª(" *  žSÉªh
 žSÕªh  žSØªh žSA«h žSM«h   žSP«h ¯”   
   ó`(ª  &     	\  ú       ÷ ô ÷ ø       ° O   î*PÀ*  ¯ªó    î*PÀ   ¯”L      (  ó`(ª( *  ÙKÀ¨h LÀ¨h
 ,LÀ¨h åLÀ¨h  ôLÀ¨h   5MÀ¨h ¯”   
   ó`(ª      &
\ ýüæÿÿ\ üûö       ¤ O   î*PÀ*  m©Ba    î*PÀ   ¯”L      (  ó`(ª(  *  œS‘«h œS«h
 œS «h œS£«h  ¯”   
   ó`(ª  $    æ¦f&\ &¦€ÐPÈ\ &ö       v O   î*PÀ*  m©Oa    î*PÀ   ¯”L      (  ó`(ª(
   œS;ªh  ¯”   
   ó`(ª      &
&
&
&\        v O   î*PÀ*  m©Pa    î*PÀ         ¯”L      (  ó`(ª(
   œSƒ­h  ¯”   
   ó`(ª      &
&
&
&
\        ¾ O   î*PÀ*  m©Qa    î*PÀ   ¯”L      (  ó`(ª(& *  œS)ªh œS5ªh œS8ªh œSq­h œS}­h    œS€­h ¯”   
   ó`(ª  *     &€
	  P€


\        | O   î*PÀ*  m©Ra    î*PÀ   ¯”L      (  ó`(ª(   œS¹«h  ¯”   
   ó`(ª      € ˆ€%\        œ O   î*PÀ*  m©Sa    î*PÀ   ¯”L      (  ó`(ª( *  œSÛªh œSS«h œSË«h  œSC¬h
 ¯”   
         ó`(ª      €  Àe &&&&\        ¾ O   î*PÀ*  m©Ta    î*PÀ   ¯”L      (  ó`(ª(& *  œSÉªh œSÕªh œSØªh œSA«h œSM«h
   œSP«h  ¯”   
   ó`(ª  *      	    	\        „ O   î*PÀ*  m©Ua    î*PÀ   ¯”L      (  ó`(ª(   œSÅ«h œSÈ«h  ¯”   
   ó`(ª        ˆ\        6O   î*PÀ*  ­ªCa    î*PÀ   ¯”L      (  ó`(ª(N *  ¤S)ªh@ ¤S5ªh: ¤S8ªhF ¤SÉªh ¤SÕªh *  ¤SØªh" ¤SÛªh ¤SA«h4 ¤SM«h* ¤SP«h       *  ¤SS«h0 ¤S¹«h ¤SÅ«h  ¤SÈ«h ¯”   
   ó`(ª  *    œ•\ ž•\   ’&\ —\ —\  ˆ•\   *  & 	’\  ’\  ë ’\  \  \  	  L \        ˜ O   î*PÀ*  ´ªL"    î*PÀ   ¯”L      (  ó`(ª( *  €(ªh €Èªh €@«h €¸«h  ¯”   
   ó`(ª      Ö‹\ Ü‹\  À‹\  È‹\        È O   î*PÀ*  ®ªó`    î*PÀ   ¯”L      (  ó`(ª(  *  !è¨h !Èªh !@«h !¸«h  $è¨h "  $Èªh $@«h $¸«h  ¯”   
   ó`(ª  $    N
\ \Š\ ^Š\  HŠ\ \
\ ^
\  H
\              Œ O   î*PÀ*  ~«¸    î*PÀ   ¯”L      (  ó`(ª( "  Az5ªh  AzÕªh AzÅ«h ¯”   
   ó`(ª      &ÎÎe¦\ &ù       Œ O   î*PÀ*  ~«È    î*PÀ   ¯”L      (  ó`(ª( "  Az8ªh  AzØªh AzÈ«h ¯”   
   ó`(ª      &ÎÎg¦\ &ù        O   î*PÀ*  x«KŠ    î*PÀ   ¯”L      (  ó`(ª(   AzM«h  AzP«h ¯”   
   ó`(ª         ÀÀ e&\   ÀÀ g&\        ž O   î*PÀ*  û¨U(    î*PÀ   ¯”L  \qÀ¨@      (  *  ó`(ª( ëy°©h ëy(ª      h ëy ªh  ¯”   
   ó`(ª      €•€€w     \qÀ¨       | O   î*OÀ*  Å©     î*OÀ   ¯”L      (  ó`(ª(   Ì(À¨h š©êrh  ¯”   
   ó`(ª      Ú‰‡ Ú‰\        HO   î*PÀ*  5ªCa    î*PÀ   ¯”L      (  ó`(ª(B *  ¡S)ªh ¡S5ªh ¡S;ªh ¡SÉªh  ¡SÕªh *  ¡SÛªh ¡S¹«h ¡SÅ«h ¡SË«h  ¡Sq­h, *  ¡S}­h( ¡Sƒ­h$ ¡S™­h< ¡S¥­h6 ¡S«­h0 "  ¤S;ªh ¤SË«h  TqÀ¨h ¯”   
   ó`(ª  *    ¦\ œ\ ž\ &\ \ \ &\ \ \ &
   & \ 
\ 
\ æ \ Ü       \ Þ \        ž O   î*PÀ*  5ªBa    î*PÀ   ¯”L      (  ó`(ª( *  ¡S‘«h
 ¡S«h ¡S «h ¡S£«h  ¤S£«h  
  ¯”   
   ó`(ª      &\ \ &\        † O   î*PÀ*  ­ªBa    î*PÀ   ¯”L      (  ó`(ª(
 "  ¤S‘«h ¤S«h  ¤S «h ¯”   
   ó`(ª      \ &\        œ O   î*PÀ*  ç©X    î*PÀ   ¯”L      (  ó`(ª(  "  ‹@À¨h ‘@Èªh ‘@@«h  ¯”   
   ó`(ª  $    \ € À`\ Û‰ À`\          O   î*PÀ*  G©èg    î*PÀ   ¯”L      (        ó`(ª( *  DÅ«h FÅ«h IÅ«h LÅ«h  ¯”   
   ó`(ª       œ“\ œ\  PH\  PPø       ® O   î*PÀ*  ¶ª¸    î*PÀ   ¯”L      (  ó`(ª( *  ôv5ªh  ôvÕªh ôvÅ«h <z5ªh <zÕªh   <zÅ«h ¯”   
   ó`(ª      &e\ &e¦—\ &ø&ù       ® O   î*PÀ*  ¶ªÈ    î*PÀ   ¯”L      (  ó`(ª( *  ôv8ªh  ôvØªh ôvÈ«h <z8ªh <zØªh   <zÈ«h ¯”   
   ó`(ª      &g\ &g¦—\ &ø&ù       ¨ O   î*PÀ*  °ªKŠ    î*PÀ   ¯”L      (  ó`      (ª($ *  ôvM«h  ôvP«h <zM«h <zP«h ¯”   
   ó`(ª  (     &e\    e&’\  &g\    g&’\        Î O   î*PÀ*  v©È    î*PÀ   ¯”L  œSC¬@      (  *  ó`(ª($ ìv8ªh  ìvØªh ìvÈ«h 4z8ªh   4zØªh  4zÈ«h ¯”   
   ó`(ª  (    &ÎÎÎg\ &€ÀÀÀ gw   &ñ ö  œSC¬       ¼ O   î*PÀ*  Æ©È    î*PÀ   ¯”L      (  ó`(ª($ *  îv8ªh  îvØªh îvÈ«h 6z8ªh
 6zØªh    6zÈ«h ¯”   
   ó`(ª  (    &ÎÎg\ &€ÀÀ g& &\ &ñ õ             ZO   î*PÀ*  á«ÀX    î*PÀ   ¯”L  #  @  žS£«@  *  ì¨€p@  v©€p@  ³©,@  Ôª€p@  º«€p@  "      (  ó`(ª(ò 6} 2h  ¯”   
   ó`(ª  *    fE @lÀ ŠÀ  … À€@
Í*Àe €'*  &    t #A @f fÎe€ …Ä  ÷	  &#  *  L   f&&
æ€@f&&
æ€@„	  è     p €"  ³©,º«€p è "ì¨€p$v©€p&p *  r …‡ A @„	        Œ ¦ ¦ „	  žS£«žS£«žS£«Ôª€pŒ   ˜ Ø   ²   Æ     &  Ø ì¨€p² 
žS£«Æ žS£«v©€p*  ¦           p €  6
 ö€@ \ æŸ¼æ$        ì¨€pì¨€pv©€p
º«€pÔª€pp *  Ì 4CæÇëæÒC\ æ/æC\  

Æ¶
 ¶
 \        ˆ O   î*PÀ*  Æ« -    î*PÀ   ¯”L      (  ó`(ª(   ÷x Kh  ¯”   
   ó`(ª       D  DA@‡„È‰ 

‡        z O   î*PÀ*  ê¨Àv    î*PÀ   ¯”L      (  ó`(ª(   £  h  ¯”   
   ó`(ª      A @ÀE €A‡        x O   î*PÀ*  ñ¨oQ    î*PÀ   ¯”L      (  ó`(ª(   µXh  ¯”   
   ó`(ª      A Q$@A‡        >O   î*PÀ*  õ¨
    î*PÀ   ¯”L  E©€p      @  ™«  @  *      (  ó`(ª(x IØšh QX\h  €QÀÁh   ¶RÀÁh ¯”   
   ó`(ª  *    ææ&
f6Š &
fÎU €æNöŠ €*  & & &@& &„	  < ö ëö è  E©€p< *  L ÕöŠ èÖ@A Ö	f f„	  r   &™«  (r 
  r €Ö‡        Ò O   î*PÀ*  õ¨Ž:    î*PÀ   ¯”L  :ª  @  O«ñf@  *      (  ó`(ª(0 I°šh Q0\h  ¯”   
   ó`(ª  *    Â
D@@/  ÂùÕÄŠø&„	      &:ª  (O«ñf  & ( ‡ Âôì  (        ö O   î*OÀ*  õ¨`^    î*OÀ         ¯”L  v©€p@  6ªÐ@  *  Ôª€p@  O«ñf@  º«€p@      (  ó`(ª(.   W h  ¯”   
   ó`(ª  *    @ A Â & &f fÂ
ø„	        $v©€p&6ªÐ(Ôª€p  &     , ‡   º«€pO«ñf,        ~O   î*PÀ*  9©x    î*PÀ   ¯”L  zy }@  ì¨€p@  *  v©€p@  ³©,@  Ôª€p@      (  ó`(ª(”   êÀvh  ¯”   
   ó`(ª  *    fD   ÀÁ †& & & && *  & & À/& && & & &„	  T   &v©€p(T *  L   ^   f ¦ ¦ \ &
æ€@\ …Ä  ÷	  "  Ôª€p      ^ ì¨€p
f "zy }&³©,&  r v „	  ~ €ÀE €…

‡  

ù  Ôª€p~        LO   î*PÀ*  =©€˜    î*PÀ   ¯”L  +  @  #  @  *  žS£«@  6x  @  ³©,@  ÔªÀ@  Ôª€p@  *  O«òf@  º«€p@      (  ó`(ª(H   dh  
  ¯”   
   ó`(ª  *    fE U%fÄ  ÷	  …f&Ä  ÷	  f&…  6x  ³©,+  "³©,&  &  E Ä  ÷	  &
&
„	      D …‡ $  #  ³©,žS£«ÔªÀO«òf D         O   î*PÀ*  D©Ø^    î*PÀ   ¯”L  /À+@  a	€\@  *  êÀv@  ³©,@      (  ó`(ª(D       ¯À+h  
  ¯”   
   ó`(ª  *    f@ &$&æ …÷	  Æe …f&E Ä  a	€\"  &   ÷	  f&…Ä  ÷	  –%‚ƒ…‡   êÀv³©,/À+³©,       ~ O   î*PÀ*  E©øe    î*PÀ   ¯”L      (  ó`(ª(   ØÀNh  ¯”   
   ó`(ª      C ÀÁC ÂÃ‡        € O   î*PÀ*  G©Y    î*PÀ   ¯”L      (  ó`(ª(   &˜?h  ¯”   
   ó`(ª      C ÀÁÂÂe €Ã‡        RO   î*PÀ*  K©p:    î*PÀ   ¯”L  +  @  #  @  *  6x  @  ì¨€p@  v©€p@  ³©,@  Ôª      €p@  *  º«€p@      (  ó`(ª(ð GÀvh Á€Wh  
  ¯”   
   ó`(ª  *    &
æfE fÄ  ÷	  …f&Ä  ÷	  f  6x  ³©,"+  &³©,*  & &¦)… E U%Ä  ÷	  f&&
æ€@f&„  #  ³©,*  L 	  Z   l   v ¦ ¦ ¦ ¦ \ ¶
 ¶   v©€pZ 
ì¨€pl º«€pv *  r 
 \ Îå€ 6‡5…öå€  ö ¦
 ¦
 „	    (Ôª€p*  ˜ ž   Ô ¶ ¶ ¦
 ¦
 \ ¦ ¦ Îe €„  ž Ôª€pÔ *  ¾ 	  È   Ò ¶
 ¶
 \ 
€‚ƒÄ–%…  Ôª€pÈ 
Ôª€pÒ   ä Ö‡ 
6
 Ç       lO   î*PÀ      *  K©$m    î*PÀ   ¯”L  êÀv@  zy }@  *  ì¨€p@  v©€p@  ³©,@      (  ó`(ª(Š   É sh  ¯”   
   ó`(ª  *    fE f fÎE €Ä  ÷	  f&„	  $ Îå  êÀv³©,$ì¨€p&$ *  & € ,‡…Ä  ÷	  –%…D f&& & f&  zy }³©,*  L Îe€ „	  X D Ì‚ƒ€‡ €‚ƒ  v©€pX   r ô Âe €Àe €‡ Ê‰–%…û       ~ O   î*PÀ*  a©x    î*PÀ   ¯”L      (  ó`(ª(   *Àvh  ¯”   
   ó`(ª      C ÀÀE €ÁÂÃ‡        z O   î*PÀ*  b©ÈK    î*PÀ   ¯      ”L      (  ó`(ª(   \@h  ¯”   
   ó`(ª      B €

‡        ° O   î*PÀ*  i©@Q    î*PÀ   ¯”L  º«€p@      (    ó`(ª(( u  h  ¯”   
   ó`(ª  *    @ & &@ & &„	   € 

  º«€p   & ‡        ò O   î*PÀ*  m©:    î*PÀ   ¯”L  E© @      (  "  ó`(ª(\ 	Øšh X\h  ¯”   
   ó`(ª  *    æ&
fæNÎe öŠ €&&&&@Àe *  & &&&&„	  6 ö åö âÕöŠ   E© 6   L ä€ –%‡        O         î*PÀ*  m©`^    î*PÀ   ¯”L  i© Z@  v© @  *  Ôª @  O«òf@  º« @      (  ó`(ª(>    h  ¯”   
   ó`(ª  *    C Ãe D Äe Â À&&&&fff  & fÂ
ô„	          < ‡ $  v© i© ZÔª º« O«òf<        ˆ O   î*PÀ*  s©f9    î*PÀ   ¯”L      (  ó`(ª(   ð-h  ¯”   
   ó`(ª       C ÀÁÂÃD ¡ @D ‡        z O   î*PÀ*  ³©,    î*PÀ   ¯”L      (  ó`(ª(   ³©,h  ¯”   
   ó`(ª      fæ …Ì	–%‡                O   î*PÀ*  ¼©ü]    î*PÀ   ¯”L  :ª  @  O«ñf@  "      (  ó`(ª( o'`	h  ¯”   
   ó`(ª      f „	     ‡   :ª  O«ñf        | O   î*PÀ*  )ªx    î*PÀ   ¯”L      (  ó`(ª(   j8Àvh  ¯”   
   ó`(ª      @  „Æ‰ 
‡        € O   î*PÀ*  ,ªH:    î*PÀ   ¯”L      (  ó`(ª(   é8@Qh  ¯”   
   ó`(ª      @ @ï … 
‡ Æ‰ü       ˜ O   î*PÀ*  .ª <    î*PÀ   ¯”L  ™«  @      (    ó`(ª( 99 –h  ¯”   
   ó`(ª            D & &„	   €‡   ™«            O   î*PÀ*  6ª }    î*PÀ   ¯”L  ™«  @      (  "  ó`(ª( é8 Zh  „:  h  ¯”   
   ó`(ª      D & &„	   €‡   ™«          „ O   î*PÀ*  ;ªf9    î*PÀ   ¯”L      (  ó`(ª(   A;ð-h  ¯”   
   ó`(ª      @  ý  „Æ‰ 
‡        € O   î*PÀ*  Éª°š    î*PÀ   ¯”L      (  ó`(ª(   €Q€»h  ¯”   
   ó`(ª      D@@/  ûÕÄŠú‡        € O   î*PÀ*  Ñª0\    î*PÀ   ¯”L            (  ó`(ª(   ¶R€»h  ¯”   
   ó`(ª      D@@/  ûÕÄŠú‡        ® O   î*PÀ*  ×ª     î*PÀ   ¯”L  v©@8@  Ôª@8@  "      (  ó`(ª( œS  h  ¯”   
   ó`(ª  "    f f f D 	     Žå€‡   v©@8Ôª@8        Œ O   î*QÀ*  ‘«€W    î*QÀ   ¯”L  ‘«€W@      (    ó`(ª( ¶p  h  ¯”   
   ó`(ª      W£ w   Ð‰‡   ‘«€W       ” O   î*QÀ*  ‘«5X    î*QÀ   ¯”L  ‘«€W@      (    ó`(ª( ¶pHh  ¯”   
   ó`(ª      W£       ÷	  BJÐ‰‡   ‘«€W       ¾ O   î*PÀ*  ‘«/X    î*PÀ   ¯”L      (  ó`(ª(L   ‘«€Wh  ¯”   
   ó`(ª  *    ÕBC€ÁÁ@€bÁb@Àb€Àe €
KÂ *  & Á@‡Â
ûŠÐÁ  Š€ÐÀ  Á €
ê‡        v O   î*PÀ*  •«     î*PÀ   ¯”L      (  ó`(ª(
   Iq Kh  ¯”   
   ó`(ª      A @A‡        „ O   î*PÀ*  Á«ð-    î*PÀ   ¯”L      (  ó`(ª(   /x€Wh  ¯”   
   ó`(ª      @   D @D ‡         O   î*PÀ*  G©üZ    î*PÀ   ¯”      L      (  ó`(ª(F "  KÀ¨h  ‡KÀ¨h& ó`@«ì ¯”   
   ó`(ª  *    ƒ‚
Â
É¥F É¥T Î
K Ñ¥  ó± K $  & ƒ‚€Á
Ð•  ûÈ•T Â‹È•F K 
   ó`@«      &   ó`(ª&        
  ó`(ª         ð O   î*PÀ*  G©[    î*PÀ   ¯”L  ,ª  @  :ª  @  *  ,«0z@      (  ó`(ª($ DÀ¨h
 lÀ¨h
 *  ¼À¨h N©S}h  N©T}h  N©V}h ¯”   
   ó`(ª  (    Ä  Äe, Œ€“w   Ä  Äe, Œ€“w     ,«0z,ª  ,«0z&:ª         ú O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@            (  *  ó`(ª(> <À¨h* cÀ¨h4 ³À¨h
 N©|}h   N©~}h  N©£}h  ¯”   
   ó`(ª  *    Ä  Äe, Œ¶ ¶ \ Ä  Äe, Œ
Ä  Äe  ,«0z,«0z&,«0z  & , Œv v N6
 6
 \        O   î*PÀ*  ƒ¬@8    î*PÀ   ¯”L  v©À@  ÔªÀ@  *  ,«0z@      (  ó`(ª(–À¨h
 ƒ¬@8h  
  ¯”   
   ó`(ª  *    Ä  Äe, Œ¦&¶ †¦ ¦ ¦ ¦  ,«0z*  &  ö
 H&
&
&
æ€@ö
 ö <ö 9*  L a¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ „	*  r   v ¶ ñ†¦ ¦ ¦ ¦ ¦ ¦ ¦         ÔªÀv *  ˜ ¦ „	  ¤ ¶ ¶ ¶ ¶ ö ÒÆe   ÔªÀ¤ *  ¾ ö ¦ ¦ ¦ ¦ ö 6
 6
 *  ä 6

 ö€@ „	  ö ¶ ¶ ¶ ¶ „–%  v©Àö   
\ Æe Ò‰ñ       ÚO   î*PÀ*  „¬     î*PÀ   ¯”L  à d@  ïÀ+@  *  ³©,@  Ôª @  ,«0z@      (  ó`(ª(¾ *  ¤–À¨hB ¦–À¨h. ô–À¨h
 „¬ h8 „¬€%h$   †¬ h  ¯”   
   ó`(ª  *    Ä  Äe, Œ€‚ƒ¦ ¦ 6
 6
 Ä  ,«0z*  &   Äe, Œ€

	Ä  Äe, Œ€‚ƒ&  ,«0z,«0z*  L f…U%æ¦f      &Í)(Í$ Í" *  r Ä  ÷	  æ¦f&„	  Š …Ä  ÷	  Æe $  ïÀ+
³©,Ôª Š  à d$³©,*  ˜ …„v ¶ ö \ À€@Ò‰ 



ë       LO   î*PÀ*  †¬€%    î*PÀ   ¯”L  /À+@  #  @  *  ³©,@  Ôª€p@  ,«0z@      (  ó`(ª(l   ö–À¨h
 †¬€%h  ¯”   
   ó`(ª  *    Ä  Äe, Œ€‚&ff&Ê#"Ê  ,«0z*  & ÊÄ  …÷	  f&„	  F …Ä    /À+³©, Ôª€p"F (#  $  L ÷	  –%…„v \ À€@Ò‰ 

ò  ³©,       ÚO   î*PÀ*  E©       d    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(° Ì1ªh@ Ì5ªhf Ì8ªhZ Ì;ªh *  ÌÑªh8 ÌÕªh† ÌØªh| ÌÛªh ÌI«h4 *  ÌM«h‚ ÌP«hx ÌS«h  ÌÁ«hH ÌÅ«hn *  ÌÈ«hb ÌË«h& E© h& E© dh ¯”   
   ó`(ª  *      Â ?&
&
&
&€	Ä  Äe, Œ  ",«0z*  & €Àe Â ,  Â &
&
&
&Â *  L €&
&
&
&&
&
&
&&
&
&
&Â*  r  €
    
CR$	$  ˜ $	"†`
\ †`C¬ \        î O   î*PÀ*  Í«P    î*PÀ   ¯”L  ,«0z@      (        "  ó`(ª(R ,«8;h  ­{~h ¯”   
   ó`(ª  *    Á
€% Ã  æœ‚ æ æ&&
³ fA  ,«0z*  &  PÁ
Â
û³•‚ \ Ì	–%Ä  Œ´   ",«0z
  L ´•‚ ‡        | O   î*PÀ*  £ªÉS    î*PÀ   ¯”L      (  ó`(ª(   ÔÑªh  ÔÁ«h ¯”   
   ó`(ª      &— €¥\        – O   î*PÀ*  £ªÐS    î*PÀ   ¯”L      (  ó`(ª( *  Ô8ªh
 ÔØªh ÔP«h  ÔÈ«h ¯”   
   ó`(ª       &’&—& ˆ¥\        œ O   î*PÀ*  ©©}    î*PÀ   ¯”L      (  ó`(ª(       *  tÀ¨h þ!À¨h
 ª:À¨h  j˜À¨h ¯”   
   ó`(ª      ŽU\ N
ŽE\ N
€€M ŽEP\        ªO   î*PÀ*  E©ðd    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(† Î1ªh6 Î5ªhh Î8ªhP Î;ªh *  ÎÑªh. ÎÕªh` ÎØªhH ÎÛªh ÎI«h* *  ÎM«h\ ÎP«hD ÎS«h  ÎÁ«h: ÎÅ«hl *  ÎÈ«hT ÎË«h  E©ðdh E©€ph  ¯”   
   ó`(ª  *    @A‚ƒ3 
úÄ  Äe, Œ‚ƒ€  ,«0z*  & &@A&
&€
@*  L A&
&€@A&
&€  r ÂÃ C €P†       \          O   î*PÀ*  å«ãy    î*PÀ   ¯”L      (  ó`(ª( *  û(ªh ûÈªh û@«h û¸«h  ¯”   
   ó`(ª       ŽŽU–\  ÐÐÈ\ Ô\  ÷       ¤ O   î*PÀ*  F©X     î*PÀ   ¯”L      (  ó`(ª(  *  ›Xè¨h
 ›XÈªh ›X@«h ›X¸«h  ¯”   
   ó`(ª  $    € &€ÈÈe €$ÈÈe €\        Æ O   î*PÀ*  ¾©X     î*PÀ   ¯”L      (  ó`(ª( *  œXè¨h œXÈªh
 œX@«h œX¸«h  žXè¨h "  žXÈªh
 žX@«h žX¸«h  ¯”   
   ó`(ª  "    ÎÎe €\  È      Èe €\  ù€÷       Ô O   î*PÀ*  )ª³    î*PÀ   ¯”L      (  ó`(ª($ *  é)ªh é5ªh é;ªh éÉªh éÕªh  *  éÛªh é¹«h éÅ«h éË«h  ¯”   
   ó`(ª  (    Že\ že\ œe\ e\ e\ e\ g\ g\ g\        Ô O   î*PÀ*  +ªÓS    î*PÀ   ¯”L      (  ó`(ª($ *  Ñ1ªh Ñ5ªh Ñ;ªh ÑÑªh ÑÕªh  *  ÑÛªh ÑÁ«h ÑÅ«h ÑË«h  ¯”   
   ó`(ª  (    –å\ ”%\ œ%\ %\ %\ %\ '\ '\ '\        Ä O   î*PÀ*  6ª    î*PÀ   ¯”L      (  ó`(ª( *  è¨      h Èªh @«h ¸«h Á8è¨h
 "  Á8Èªh Á8@«h Á8¸«h  ¯”   
   ó`(ª       Ž
\ œ
\ &ž
\ Î
\ Ü
\ &Þ
\        ’ O   î*PÀ*  6ªX     î*PÀ   ¯”L      (  ó`(ª( *  ¡Xè¨h
 ¡XÈªh ¡X@«h ¡X¸«h  ¯”   
   ó`(ª      \ \ &\        Æ O   î*PÀ*  8ªä    î*PÀ   ¯”L      (  ó`(ª(& *  é8ªh  éØªh éA«h  éM«h éP«h   éS«h éÈ«h ¯”   
   ó`(ª  *    & ˆe\   	b\  b\  b\  b\        Æ O   î*PÀ*  8ªØ    î*PÀ   ¯”      L      (  ó`(ª(& *  Ñ8ªh  ÑØªh ÑI«h ÑM«h  ÑP«h   ÑS«h ÑÈ«h ¯”   
   ó`(ª  *    & ˆ%\  	"\  û "\  "\  "\        Æ O   î*PÀ*  8ª
z    î*PÀ   ¯”L      (  ó`(ª(& *  z8ªh  zØªh zA«h  zM«h zP«h   zS«h zÈ«h ¯”   
   ó`(ª  *    & ˆå\   	â\  â\  â\  â\        Ô O   î*PÀ*  ;ª£ƒ    î*PÀ   ¯”L      (  ó`(ª($ *  z)ªh z5ªh z;ªh zÉªh zÕªh  *  zÛªh z¹«h zÅ«h zË«h  ¯”   
         ó`(ª  (    Žå\ žå\ œå\ å\ å\ å\ ç\ ç\ ç\        ² O   î*PÀ*  £ªÓS    î*PÀ   ¯”L      (  ó`(ª( *  Ô5ªh Ô;ªh  ÔÕªh ÔÛªh ÔÅ«h   ÔË«h ¯”   
   ó`(ª        \ €€¥\ &œ¥\ §\ §\         O   î*PÀ*  °ªØ    î*PÀ   ¯”L      (  ó`(ª( "  ÔI«h ÔM«h ÔS«h  ¯”   
   ó`(ª       ¢\  ¢\  ¢\        Œ O   î*PÀ*  O«Ðf    î*PÀ   ¯”L      (  ó`(ª( "  O«ñfh
 O«òfh  O«ófh  ¯”   
   ó`(ª      €‚ƒ\ €\              
O   î*PÀ*  ¹«UŒ    î*PÀ   ¯”L  ,«0z@      (  "  ó`(ª(p þv³qh  R~8hn ¯”   
   ó`(ª  *    ¦‚f&æ ’$€Ò¦
¦J"K …€‚   *  & ƒ„¦ v … ŽÞ	¦ ¶  v …&(  L æ¦f&Í	Ã  óH ß€‚ƒ„…‡ \   ,«0z       ® O   î*PÀ*  ¹«âŽ    î*PÀ   ¯”L      (  ó`(ª(4   þvëuh  ¯”   
   ó`(ª  *    &€Àe
 &&&à&Ð* &ÐPöÿ0ôÿ  *   & ˆ‡ ƒ‚€‡        ŠO   î*PÀ*  ©ªïy    î*PÀ   ¯”L  ¤!À¨@  þv³q@  *  R~      8@  ³©<4@  ¼©Î@  6ªi;@  7ª	#@  *  («p!@  ,«0z@  U«Õ@      (  ó`(ª(Ö*  7:À¨h  ƒ€À¨hR 4ªÀh ö«ÀvhT ó`@«ì 
  ¯”   
   ó`(ª  *    æ  ¦÷  ÷	  €È0 " ÈU „Þ	æ” È5  R~8þv³q6ªi;&” *  & 	Ÿ‰Á Áì ÷	  À " s s Ál
   U«Õ*  L s ‡ ææ¦Ã  ‚ ³H óÿT ³ŠU Ò‹ü  ,«0z*  r ‚3
¦ ó‹‚ Æe Þ	\ ƒ¶  ¶ ^ Þ	Ã*  ˜   ÂH ÆÀœ¦ Á   Á sR œÉ  ,«0z&É*  ¾ $ÁœU 
sP Ál s  ‡&¦÷	Pÿ‚€æ *  ä   ó P æP À
&ÀE x       Â¦’¦ól   Â*  
P  € œÒø	  ½†¿‰»PÑ•  ‡Ñ•( s   Òó`@«  *  0÷	b Þ	Ã  ÂH û•,  ³
 ÷	J û•)  ³
   ,«0z*  Vžs  ‡¦÷	Èþ‚Á ‘”Ê‹ôs æR æ*  | ‡&
&
¦ ¦ Ò¦¦¹æ æP ³c *  ¢æR æ &
&
¦ ¦ÿ	
 Ã  †¿‰‡   ó`@«
 ,«0z$&(  Èv    
  v       "O   î*PÀ*  ©ªéy    î*PÀ   ¯”L  Á8À¨@  KÀ¨@  *  qÀ¨@  þv³q@  R~8@  N©©}@  N©l~@  *  —© K@  ³©<4@  ¼©Î@  Ý©Õ@  6ªi;@  *  7ª	#@  :ª  @  («p!@  ,«0z@        ™«  @  *      (  ó`(ª(Ë2:À¨h  4ª€ph ó`@«ì 
  ¯”   
   ó`(ª  *    æ  ¦÷  ÷	  ÈU ÈE €Þ	È5Ÿ‰³
  
  R~8þv³q6ªi;*  & ó,  †Àž ‡ Þ	Ã  ÷	@óH ÷3
N ÷	^  ,«0z*  L ÷	Ôÿ * ³
 ×,.  ó0 N Å‰3
N ÷	*  r 6ÄH ÅÅe. A_s ¦ OÁ
s ¦ KAœºÂ  &º*  ˜  u Â
üÀœ¦ À
€ œºy ² º À à î B“  º² º  À "à $î *  ¾ Ñ ƒ&ff÷	  •••€Åå Ñ ƒ  N©l~*  ä 5
 5
 Ñy ò ú  5
 5
 á   ò ú *  
	U(U%ffff÷	        Ã  ÄH ÀœT ×¬¦    N©©},«0z*  0€†L“TÀ
ýÞ	Ã  óH ×¬§  öó
  ,«0z*  VN æH &
÷	2 À¥, N
³
 ö‡ ÷	¤þ  
H *  |‡÷	   s s l s ÷	Šþñ†À¥  ë  Ý©Õ*  ¢À¥	 è‡ ÅÅe. ÷	pþ†Á¾@¤%@¤	@¤÷	  ¾*  È¸ Î–%
‡ ÷	ª Í B—  &
&
ú	 Ã
  &ó`@« *  î  †À‰
A•W  •••‡ æ0 &
³
 ÷	  ,«0z*  4 ÷	Dÿ‡Ž
öe  ÷	" ÷	2ÿ ) Ž
³
 *  :Á –
s. ‡ ÷	4 &
&
ÿ	 †¶
 ‚’$
  ó`@« *  `J’ŠJN‡„¶
 Ã  Å…m ••‡ ‚Î  ,«      0z*  † Í ÷	”ý	†ÁÁ 
É‹ü÷	~ý÷‡¦Îì   Á#  ¬J W ÇøƒÍ î (TF 	,/*).DE z  Ç       ¤O   î*PÀ*  N`¯    ¯”L  Ý©ù}@  ,«0z@      (  *  ó`(ª(Ž ­„dh  ­{hR ­""h@ ó``©¨
 *  ó`¸«(( ¼©wh ¼©xh  ù¬=h ù¬Çyh *  ú¬ËLh
 ú¬6„h û¬"	h ü¬H;h ý¬Psh *  ý¬%™h þ¬`h ­üXh ­
h ­Mh *  ­È`h 
­lh  
­Ëh" ­:2h$ ­Åžh&   ­üXh ¯”   
   ó`(ª  *    Ã  3 À  Á Â
 •)ƒaNú¡    ,«0zó``©  ó`¸« ó``©
 *  & †Ä5       KÓÎôÖÃ  ‡ ÷5€  ó   ,«0z"ó`¸« (ó`¸« *  L d X ®‰÷5@  ÌE ôE  Á W  Ì5   ó`¸« ó`¸«    r îW  ÌU Ì5 åW   X 
   ó``©      ÿŸ   $    
ó`¸«$ ó`¸«  ó`¸«  *                                            &          ÎO   î*PÀ*  N`íy    ¯”L  D©½`@  ¼©w@  ¼©x@  *  ¾©Œ@  Ý©ù}@  («p!@  ù¬=@  ù¬Çy@  *  ú¬ËL@  ú¬6„@  û¬"	@  ü¬H;@  ý¬Ps@  *  ý¬%™@  þ¬`@  ­üX@  ­
@  ­M@  *  ­È`@  ­„d@  
­l@  
­Ë@  ­:2@  *  ­      Åž@  ­üX@  ­{@  ­""@      (  *  ó`(ª($+«h +«h  ó``©¨& ¯”   
   ó`(ª  *    €@@c@cÐ÷	  ÆåN À  X  ÆeN ÈU €÷	  ­„dó``©  *  &   È5 ÈE €3
d 3
 ‡ &÷5    ‰Â    («p! ¼©w(­üX*  L ÷	  ¢‰€X ÷5 @  ôU  X ÷5     Ý©ù}¼©w&¼©w*  r Á  &ÀN BÊ‹·¤	 ûÀ
ù	Bà÷	  ‡  ­M	 &¾©Œ*  ˜ €ÌU X «‰X ÷5   Ì5 ô   X Á   ¼©w ù¬Çy*  ¾ ÷5   Á  W  ÌU Ì5 FW  ÌU  ¼©x­Åž*  ä  ôU  	ô5   9W  ÌU X       Ì5 ÷5*  
 €  ,ô   ô †÷	  ¬‰X ÷5   Â     ¼©w
­ËD©½`"¼©w(ù¬=*  0—  ô5  ôU   ­‰—  ÌU X ÷5 *  V  ×/   	Ì5 ®‰Ì5 ÌU X ÷5      ¼©w
þ¬`(¼©w*  |Â  —  ôÕ  X —  ôÕ  X Ì5   û¬"	*  ¢ü­‰÷5   ôŸ   X ÷5   ô  ( X ÷5  ¼©wú¬6„¼©w"­üX*  È   ô  , X Ì5 
÷5   Â  ´ 4
  ¼©wý¬%™¼©w"­
*  î X ÷5   ôÕ  / X ÷5   Â  ´$ X   ¼©x¼©w"ú¬ËL  ÷5    ôÕ  X   ¼©w ó``©        < Z       $º (  ­""ó`(ª< ó`(ªZ 
ó`(ª$ó`(ªº   
   Rv¦(  ­{ó`(ªRó`(ª
ó`(ªvó`(ª¦   ¶Æòj *  ó`(ª¶ó`(ªÆó`(ª
ó`(ªòó`(ªj    Ö¤  "  ó`(ªÖó`(ª¤ ó`(ª
ó`(ª        \O   î*PÀ*  ¯íy    ¯”L  D©½`@  ¼©w@  Ý©ù}@  *  ­„d@  ­üX@  ­{@  ­""@      (  *  ó`(ª(B K©h K©h  ó``©¨ ¯”   
   ó`(ª  *    €@@c@cÐ÷	  À  X ÷	  3
d 3
 ‡ &  ­„dó``©  D©½`   & ÷5    ‰Â  ÷	   ‰€X   ¼©w­üXÝ©ù} ó`      `©        $      ­""ó`(ª$ ­{
ó`(ª        ˆO   î*PÀ*  ö«;    î*PÀ   ¯”L  ,«0z@  7¬d"@  *  C¬\@      (  ó`(ª(¬ Ä€À¨h  ø« h 
  ¯”   
   ó`(ª  *    æª &€æÃ  Ðó ¦ óT 3Œ 3ª 3  ª ,«0z*  & X   `¦
 3
¬ ÀÀe¨ 3H û €æ¬ æ*  L ª ÷	  Ã  Ãe¨ “““‹Þ	Ã  û æ¬   7¬d",«0z,«0z*  r Ãe® æææææ ÷	  Ã  ³
¬ ó
X Ö¶
   C¬\,«0z  ˜ €‚¦öŒ  ƒ^ \        |O   î*PÀ*  ö«;    î*PÀ   ¯”L  ,«0z@  7¬l"@  *        C¬d@      (  ó`(ª(œ Ì€À¨h  ø« Kh 
  ¯”   
   ó`(ª  *    æš &€æÃ  Ðó ¦ óT 3Œ 3ª 3  š ,«0z*  & X   `¦
 3
¬ ÀÀe¨ 3H û 
€æ¬ æ*  L ª ÷	  Ã  ³¨ Þ	Ã  û 
æ¬ æ¨ æª   7¬l",«0z,«0z*  r ÷	  Ã  ³
¬ ó
X Þ¶
 €‚¦öŒ  ƒ  C¬d
,«0z  ˜ ^ \        ¾O   î*PÀ*  ö«;    î*PÀ   ¯”L  ,«0z@  7¬f"@  *  C¬^@      (  ó`(ª(À Ã€À¨h  Æ€À¨h
   ø«Àh ø«€%h ¯”   
   ó`(ª  *    æ¾ æ æ¾ æ&€æÃ  Ð3¦ ó        ¾ ¾ ,«0z(*  & T 3Œ 3ª  ó‹§ È3X ˆ ` Ž 3
*  L ¬ ÀÀe¨ 3H û €æ¬ æª ÷	  Ã  ³¨    7¬f"$,«0z*  r ³ª Þ	Ã  û æ¬ æª æ¨ æª ÷	  Ã  ,«0z&C¬^*  ˜   ³
¬ ó ¦ ó
X Ø¶
 €‚¦öŒ  ƒ^   ,«0z  ¾ \        xO   î*PÀ*  ö«;    î*PÀ   ¯”L  ,«0z@  7¬i"@  *  C¬a@      (  ó`(ª(œ É€À¨h  ø«@8h 
  ¯”   
   ó`(ª  *    æš &€æÃ  Ðó ¦ óT 3Œ 3ª 3  š ,«0z*  & X   `¦
 3
¬ ÀÀe¨ 3H û 
€æ¬ æ*  L ª ÷	  Ã  ³¨ Þ	Ã  û       
æ¬ æ¨ æª   7¬i",«0z,«0z*  r ÷	  Ã  ³
¬ ó
X Þ¶
 €‚¦öŒ  ƒ  C¬a
,«0z  ˜ ^ \         O   î*PÀ*  ö«!;    î*PÀ   ¯”L  ,«0z@  7¬q"@  *  C¬i@      (  ó`(ª(° Ð€À¨h Ñ€À¨h    ø« dh ø«@jh ¯”   
   ó`(ª  *    æ® ææ æ® ææ &€æÃ  Ð  ® ® &,«0z*  & 3¦ 3T 3Œ 3ª 3X   ` Ž 3
¬ Î*  L Îe¨ ³H û 
€æ¬ æª ÷	  Ã  ³¨ Þ	Ã  7¬q" ,«0z*  r   û 
æ¬ æ¨ æª ÷	  Ã  ³
¬ ó
X Þ  ,«0zC¬i,«0z  ˜ ¶
 €‚¦      öŒ  ƒ^ \        (O   î*OÀ*  š©}s    î*OÀ   ¯”L  ,«0z@      (    ó`(ª(˜ ""œwh  ¯”   
   ó`(ª  *    Ã  @•F…
ACW x @‚Ált É‹<Â À

÷	  ,«0z*  & V ‡‰ÀÌ‹Éµ` /‰Ð÷	@ ‡‰ÀÌ‹‰Ð÷	2 ‡*  L Ì‹Éµ@ ‰ÐÉµ  ‰À÷	 ‡‰ÀÌ‹‰Ð÷	*  r  ‡3f ‡ ÂÀ
DÄ%ÿÿ¡ ‡ Ö± ‡ Ñ‰‡        FO   î*PÀ*  ü¨p    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  Ôª€p@  O«ñf@  º«€p@      (  ó`(ª(®  a	€Whz a	€\h  ¯”   
   ó`(ª  *    &
&
&
&
&
D & &€D & &À*  &        ŠÀ ÁŠÁ @àÀ% „	  @ ý öIA   v©€p@ *  L öÛ
 ý öe € ÎÆe ÀÉ@ÁÛý *  r Àe €‡ &
&
&
&
&
D & &Îe €¶
 *  ˜ —#€@‡ö öÉÀ öÛ ö
 ¦ ¦ *  ¾ ö€@ 6
 „	  Ð ¦ ¦ 6
 6
 —#‰?  v©€pÐ *  ä %‡‚—- £0 ƒö@ ö’
 € æ×³æÝÀ*  
f&&
æ€@æ×³æÝ@f&„	    h    0"  Ôª€p º«€p"h$º«€p&v©€p(0$  0€ f&f&„	  r          *  Ôª€prÔª€pì¨€pÔª€p ì¨€p"Ôª€p  P            Ž*  ì¨€pÔª€pì¨€p
Ôª€pì¨€pì¨€pŽ      *  ^    dÖ‡ ¶
 ¶
 \ €Â®Ã f&  ì¨€pO«ñfd®*  „¦¦Ã
ú\ ö Îe €\ Å>Â:¿L]L?ÛÆª¿¤ª  ª€@         ü O   î*PÀ*  ‰¬@8    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(b q—À¨h
 W«¨9h
 ‰¬@8h  ¯”   
   ó`(ª  *    Ä  Äe, Œ€Á ƒ€†ÁÀÃp‡€ü†  ,«0z*  & Cp‡Àøf\ Æ‰üÎÎ \ ÎÎ
ø  L 
\ Îe û€†\ Ò‰\        O   î*PÀ*  G©ùZ    î*PÀ   ¯”L      (  ó`(ª(*  Á8À¨h Ç8À¨hˆ A^À¨h  G^À¨h‚ ‹©@8h   ó`@«ì ¯”   
         ó`(ª  *    Â Â	€€ƒf¦
÷	B ýÎ€Â% *  & Â% Îe @÷	( Âå Ž ‚Á	‡Î€B`Á‡*  L Á‡`î†Ö± A@^À
€ÖÖ†¡ €Aò…*  r ¡ ^Â”ÂE€ÿÂå  ‡ À À€Áe B‰C*  ˜ IE	Â`æÁ- À†ÅÁ Š
D
Eþ†*  ¾ AŒ@ ‡àDÅùD
Ã
Áe0 bëÁ bÁ&  ä   Ã
úŠÁ% -Ö„…‡ Ò•* Î
üV
÷
   ó`@«    ‚ ˆ   ó`(ª‚ ó`(ªˆ           ó`(ª  ó`(ª        °O   î*PÀ*  G©öZ    î*PÀ   ¯”L  ‹©@8@      (  *  ó`(ª(î‡À¨hÇÀ¨h&À¨hG,À¨h  qÀ¨h  ó`      @«ì ¯”   
   ó`(ª  *    €&f$&Ð
÷	h ÷	¤ ýÂ% Â% *  & ÎU @÷	Ž Âå — 	 ‚ Ëƒ¶
 ÷	<÷	*  L .…`DA@Îè€Ž
æ— þÿÂå ‚‚
Âe*  r  ÃXæ 



‡ Îe €õ‡ŠÍÃ
¶
 &  
X*  ˜ f€ Â	€÷	  ‚€ä‡Â”ÂE€ÿÂå  ‡ ö
  ‹©@8*  ¾  ÷€Ö‚ CPQCQBƒ“æ¾ Âà‚m — *  ä Æÿ†ÖÅ‚
 ÷	Ð ÷	v Ž
 ˜ú‚÷	€ — & *  
î‚Â
õ€

À5 @éÃ% P‚Ãe °E÷	T ÃÎ
ò*  0÷	< À5 þûÎ Õ€eš‡NN÷	( EDA@‘‡…*  V
‚Âe b"Ö…„b"‡ ¡  ‡ *  |ÅDA@‡ &f&f      ÷	êÿ÷	æÿ…eDA@„eA*  ¢@e@€e‡ &f&f
À Â
ì÷	 ûC*  È 
r
 &@Ár &@r( &DsP A 
*  îr
 „CÅw A`€×t ‡ ÂE
*  ÂEÂDƒÓÀÁ&fÄÅ£££Ž&
*  :@Ž&
‚Œ†öå  À¶ 6±  Œ&Š€C*  `Î ÷	‚Âå€ ÷	ÿ÷	Î
‚
ù÷	DÿŽ
÷	ô *  †Âù÷	àþ‚
ü‚ 6Œ ‡‚c6Œ †‚#ƒ‚m*  ¬ Â÷	öþ  ‡÷	ÿŽ
‚ ¶Œ †¶# ‚*  Ò¶ã 
6
 öÞ  Žà¶Œ ‡Â‚cƒÃ ƒí*  ø ¦‚ ƒm ƒí d€÷	` ö €Ò•- Î9÷	*  fþ÷	XþÃEÿÀ@Ã ƒƒƒƒÃe0 ÒÎ
î(ö
*  D       ê€Ö…ÖƒƒŒ†ƒŒ)†÷	 €„…Æe CH *  jÒ•  ƒŠü‡ ÷	þÂ
À% ú‚À% ö‚÷	æý‚
ùÒ•*  0 Ò•. ÎÀÒ•0 Ž
ö
 ø€ÏÃ ÒÃ+-Å€*  ¶Ã ÒÊ•/ ŠŠÅå
 ü€Åe: r‘ ÅC
Æe Ö  Üöe 
 Ò•* ö

 û·
   ó`@«    &  ó`(ªó`(ªó`(ª
ó`(ª             "  ó`(ª  ó`(ª  ó`(ª  
ó`(ª         ~O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(j +À¨h ,À¨h .À¨h 4À¨hd *  £À¨h ¤À¨h ¦À¨h ©À¨hh N©z}h *  N©}h N©¢}h N©©}h N©ò}h  N©ù}h    i©        h ™«  h ¯”   
   ó`(ª  *    Ä  Äe, Œ	Ä  Äe, Œ¶ ¶ 
‚
N  ,«0z,«0z*  & AfCŠÁ Áå Á% Ã ŠƒÝ v…"  L ‡Ž\ ü‡æÆ‰
õ€“\        ÂO   î*PÀ*  E© …    î*PÀ   ¯”L  ì¨€p@  Ôª€p@  *  ,«0z@  º«€p@      (  ó`(ª(¤ ‹T;ªh *  ‹TÛªh ‹TS«h  ‹TË«h( ÔªÀh( ÝªxKh 
  ¯”   
   ó`(ª  *    Áe ffff
&
&
&
&Ä  Äe,   $,«0z*  & Œ&¦ ¦ ¦ ¦ „	  B ¦ ¦ ¦  Ôª€pB *  L  ¦ „	    \ ¦ ¦ ¦ ¦ „      	    Ôª€pì¨€p\ (Ôª€p*  r t ¦ ¦ ¦ ¦ „	    Ž €Àe   t Ôª€pº«€pŽ   ˜ „Æe \        hO   î*PÀ*  <©°;    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  Ôª€p@  ,«0z@  º«€p@      (  ó`(ª(*  k;ªh kÛªh kS«h  kË«h( i©ø‰h   v©Àh( ¯”   
   ó`(ª  *    Áe ffff
&
&
&
&Ä  Äe,   $,«0z*  & Œ€À Š ÁŠ †@ÀÉ‰\&¦ ¦   L  ¦ ¦ „	  €     ’   ¦ &  Ôª€p€ Ôª€pì¨€p’ Ôª€p¦   h     ¸   Ê     (  Ôª€pº«      €p¸ 
Ôª€pÊ Ôª€pì¨€p*  v Ü   è   ò ¦ ¦ ¦ ¦ \ ¦)¦ ¦   Ü v©€pè 
v©€pò *  œ ¦ ¦ \ ¦ ¦ ¦ ¦ \ ¦ ¦ ¦*  Â  ¦ \ ¦ ¦ ¦ ¦ \ ¶ ¶ 
 \   è ¶ ¶ \ ¶ ¶ „Æe \        FO   î*PÀ*  m© …    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(BŒT;ªh ŒTÛªh ŒTS«h  ŒTË«h(   Ôª h( Ýª Kh ¯”   
   ó`(ª  *    Áe ffff
&
&
&
&Ä  Äe,   $,«0z*  & Œ&fö f&
Ž	 ¶ 	 ± 6 ¶  *  L ö 
 ¶ 
 ö  ¶  ö  6Š ö v       ö‹*  r  –%w ˆ 


„Ý aö•  6 ö  ¶*  ˜   ö  ¶  ö  ¶  ö  6Š ¦ „*  ¾  ÷	JC¦
 „ ÷	:aACaBA¦ „*  ä  ÷	$aACaBA¦ „ ÷	aACaBA*  
ƒB
¦ „ ÷	ò aACaBA¦
 „ ÷	*  0Ü aACaBA¦ „ ÷	Æ aACaBA¦ *  V„ ÷	° a@BaA@¦
 „ ÷	š a@BaA*  |@¦ „ ÷	„  aAa@„ÃBA@‡ÃBA*  ¢@Ä
Äå€ *Ä%ÿ %ŠƒÐÃ ŠBÐÂ ŠÐÁ  Š Ñ*  ÈÀ  CBA@‡…6 v ¶ ö*  î …„Æe \ æÈ‰Ê‰Ö 



é&
Ä*  ö ö       aaŽm 6q „eŽ  :‡ 

ú       ÊO   î*PÀ*  a©     î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(†ä;ªh( äÛªh äS«h äË«hV *  z;ªh2 zÛªh zS«h  zË«hR ì¨ hV "  ì¨ h< º« hR Í« hH ¯”   
   ó`(ª  *    Áe ffffÁe ffff*  & &
&
&
&&
&
&
&Ä  Äe, ŒÄ    ,«0z(,«0z*  L Äe, ŒÎe €&f&


ö v
 v v „Ý*  r  !NŒö v v v …Ý Œ6 6 *  ˜ 6
 6 ¶  ¶  ¶
  ¶  Öw 8*  ¾ vŒ ö•  ö•  á	€  ‚       ƒ *  ä Da€  ‚
 ƒ ¶  ¶  ¶ 
 ¶*  
  Î Ž­ 
BA@A@@ Å4*  0Å%Çÿ	€  ‚
 ƒ AÅ%øÿÀæÅ%ðÿ*  V	ƒB€Åe öÖÅ%ýÿfDv…w*  |„BÅwC„Ö€…
úƒm BA@*  ¢‚m
 A@m @€m Ž­ 00 €*  È„
Ä ÐCBAD…‡6 v *  î¶ ö …„Æe \ ÖÈ‰øÄàÊ‰ 



*  

ÚÀBA@A@@Î  	0*  : äÄ
ÃBA@÷Äå ÁÄå 
Äå Ã*  `ÙÁÐÁ Ã ÀÐ
åÂ
Á @ÐŠÂ ÐŠÃ ÂÐŠÙ       àO   î*      PÀ*  d©°;    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(îl;ªh lÛªh lS«h  lË«h(   i© Šh v© h( ¯”   
   ó`(ª  *    Áe ffff
&
&
&
&Ä  Äe,   $,«0z*  & Œ&f 



&
ö N&
ö QŽÝ R€Ý*  L  À ±  €Ý Ý Á Ý ‚Ý Â ‚Ý ƒÝ Ã *  r ö v 
„Ý	 áö  ± 6 ¶  ¶
  *  ˜ ¶ 
 ¶  ¶  ¶  6Š 6
 6
 6
*  ¾  6  ‚"‡v 
 ‚‡¶  ‚‡ö  ‚Ž

*  ä 1É‰Ê‰æ–%6
 6
 6
 6
 ? *  
Ž
Å	 ÷	| 6‘ ÅÅ ÷	l 6 ÅÅ *  0÷	\ 6 Å      Å ÷	L 
…Åe€ ÍÅ%ÿ *  Vv‘ 6 6 6 Dv v v 6 *  |‡……„Æe \ æÈ‰®ÄÃBA@‡€-
 ‚*  ¢‡- ‚‡‚- ‚‡ƒ- ‚ƒí ‚€‚í*  È €í €€í
 „
Å
Ù‡ „
ÄÅ
ý…
‡        øO   î*PÀ*  „¬@8    î*PÀ   ¯”L  v© @  Ôª @  *  ,«0z@      (  ó`(ª(©–À¨h
 W«hh
   „¬@8h  ¯”   
   ó`(ª  *    Ä  Äe, Œ¦&¶ †¦ ¦ ¦ ¦  ,«0z*  &  ö
 E&
&
&
æ€@ö
 ö 9^¦ *  L ¦ ¦ ¦ ¦ ¦ ¦ ¦ „	  p ¶  $Ôª &p *  r        ñ†¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ „*  ˜ 	  ž ¶ ¶ ¶ ¶ ö ÒÆe ö   Ôª ž *  ¾ ¦ ¦ ¦ ¦ 6
 6
 6

 ö€@ „(  ä 	  ê ¶ ¶ ¶ ¶ „–%\ Æe Ò‰ñ  v© ê        Â O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª( >À¨h
 fÀ¨h
 N©ó}h  N©ô}h    “«  h
 ”«  h
 ¯”   
   ó`(ª      Ä  Äe, Œ€& &

\   ,«0z       .O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(V AÀ¨h iÀ¨h ¹À¨h" N©k~h *  N©l~h       N©n~h  +ª  h ,ª  h :ª  h" 
  ¯”   
   ó`(ª  *    Ä  Äe, ŒÄ  Äe, Œ¦¦6
 6
 &
  ,«0z,«0z*  &  fÂ 6Š A‡Â
üv ŠÐÁ   L 6Œ N\        ÆO   î*PÀ*  9©     î*PÀ   ¯”L  ì¨€p@  ,«0z@  *      (  ó`(ª(¦ ã;ªh( ãÛªh ãS«h *  ãË«h\ z;ªh2 zÛªh zS«h  zË«hR *  ì¨Àh\ ì¨xh< º«ÀhR Í«øhH ¯”   
   ó`(ª  *    Áe ffffÁe ffff*  & &
&
&
&&
&
&
&Ä  Äe, Œ
Ä    ,«0z(,«0z*  L Äe, ŒÎe       €öe € ¦ ¦ ¦
 ¦
 6 „*  r 	  x ¶ ¶ ¶  ¶  ¶
  „	    ì¨€px (ì¨€p  ˜ š €„N&\   š        dO   î*PÀ*  ô¨Ø^    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  :ª  @  Ôª€p@  º«€p@      (  ó`(ª(ð   /À+h /¶0h  ¯”   
   ó`(ª  *    æ&
D æræ±¿¦)& &\Î¶  ö•*  & €  æóæ5@¦ ¦ æóæ5@„	  ’   &º«€p(’   L     ¨ ¨   ~ ˆ ˆ (  ì¨€pv©€p¨ 
¨ Ôª€p~ ˆ ˆ   \ ˆ             *  ˆ Ôª€pì¨€p
Ôª€pì¨€pÔª€pì¨€p  j           œ   ²     (  Ôª€pì¨€pœ 
:ª  ² Ôª€pì¨€p*  x ¼   ¼ €Âð f&¦¦\ ¶
 ¶
 \ &
  ¼ Ôª€p¼ ð *  ž ŽÝ Îå€ \ ¦ ¦ \ æræ1@\ öŠ æ*  Ä Ù[æÞ?\ €Ö‡ Æe Ó‰ 

ùš?UÌ? *@
  ê Úª A         tO   î*PÀ*  e©€˜    î*PÀ   ¯”L  ì¨ @  i©  @  *  v© @  ,ª  @  Ôª @  O«òf@  º« @  "      (  ó`(ª(Äà dh  ¯”   
   ó`(ª  *    fD   °Ã@‚ °C:‚À  f#‡Æå Äe*  &  &&&&æñæ\)æ;ªÄ¸@	  „  .     Ôª "„$i©  &.(,ª    L   <      „  L    B*  º« <„
i©  L,ª  º« B*  \ „„    œ &
&
&
æ€@Äe &&&	  ‚ $  „„Ôª 
O«òfœ &ì¨ (‚ *  ‚ €‚ƒOÈ‰Ê‰ 



Gæã6æåæÕ*  ¨ ææAæ¦f&æÃ×æ	Öæð–æl>æ¦f&æ"  Î "òæyæš‚Ä¦B	  `      –  (  ì¨ `Ôª ì¨ Ôª – ì¨ *  ì r    ô ÅÄ¶ †fffD	  ø Åå $  rº« v© 
ô Ä Ôª "ø *  ò€‚ƒÖ„Ä Š„ a±…‡ ý Î
¶*  8 \ Îe \ Îå €
\ ¶ Î% 6
 ¶
 *  ^\ ¶& ¶& ¶& ¶& \ ¶ ¶ ¶       ¶ \ *  „¦ ¦ ¦ ¦ \ À ¦ À
ü\ µ@óù3  ªeÞ˜@ð7Q©¸‹@Á•êã×‹…@ÃªÌg{H       O   î*PÀ*   © d    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  :ª  @  Ôª€p@  ™«  @  º«€p@      (    ó`(ª(à #  h  ¯”   
   ó`(ª  *    D   °Ãe‚ °C_‚À  fW‡æ&
æ€@"  & & && &„	n     x   n   &  n Ôª€p™«  x :ª  n  v©€p  D   ~           *  º«€p~ Ôª€p
ì¨€pv©€pì¨€pì¨€p*  R   ^   d   º Îe€€\ ¦ ¦ \ æ;ªæ¸@\    v©€p^ ì¨€p
d Ôª€pº *  x ¶
 \ N      @Îå ƒ € æ‚=æ@Âf&*  ž æysæEæ[\æpCf&f&\ –%€„Ä Š   Ä „ a‡ 
À€@È‰Ê‰ 

‡        &O   î*PÀ*  s©$m    î*PÀ   ¯”L  ì¨ @  v© @  "      (  ó`(ª(„ 	 sh  ¯”   
   ó`(ª  *    fE A77B æ Áe@ &
&
¦f&
*  & &
f f&
&
¦f„	    @ Îå€ ö
 f  v© ì¨ @ *  L  f f f¦ ¦ ¦ ¦ æ€‚ƒ  r Ö…‡ Ô‰ 



ø       lO   î*PÀ*  Á«€W    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  6ªÐ@  Ôª€p@  º«€p@      (  ó`(ª(ì         +  h  6x  h ¯”   
   ó`(ª  *    D &
& &æÛæÉ@„	  ( D &
&   ì¨€p( *  & &Î6 æÛæÉA„	  z     „ z   Ž *  v©€pz 6ªÐ º«€p"„ $z &6ªÐ(Ž   L   ” z z   ¼     *  º«€p” z 
z Ôª€p¼ Ôª€pì¨€p  \             &  Ôª€pì¨€pÔª€p
ì¨€pÔª€pì¨€p*  h   l €ÖÀe €‡ ¦ ¦ \ Îò¶Š \   Ôª€pl *  Ž ¶S \ ö‹ Îe €&
æ€@„	  ¬ ÄP ¶Œ   ì¨€p ¬ $P *  ´ †Îe €\ €Âì Ã f&¦¦Ã
ú\ :  ì   Ú º×™¼c&£>X4%Àá]É@Û             \O   î*PÀ*  s©p:    î*PÀ   ¯”L  ì¨ @  i© Z@  *  v© @  Ôª @  O«òf@  º« @      (  "  ó`(ª(p‡Àvh  €Wh. ¯”   
   ó`(ª  *    fD &
& & & &æÂhæ!¢æÚæÉ@*  & „	  D fD &
& & & &Î6   ì¨ 
D (  L æÂhæ!¢æÚæÉA„	  °     Â °   Ò *  v© ° i© Zº«  Â "° $i© Z&Ò   p   Ø ° °       *  º« Ø ° 
° Ôª O«òfÔª   €             &  ì¨ Ôª ì¨ 
Ôª ì¨ Ôª   Œ             &  ì¨ Ôª ì¨       
Ôª ì¨ Ôª *  ˜           ¤ ÖÀe €…‡ ¦ ¦ ¦ ¦$  ì¨ Ôª ì¨ 
Ôª O«òf¤ *  ¾  \ Î¶Š \ Ä  \ ¶S \ ö‹ Îe €&
    *  ä &
&
æ€@„	  ô Ät ¶Œ	 †Îe €\ ÄpÅ  ì¨ ô t &p*  
	 æ¦f&&&&&Å
öÄ~ \ Î-Ã¿JòÌ  ~ *  07±»¼,†k¦t4¯y¬NâÙq·¦ƒŽî¸(:<ŒBY†™¼fis  Vª£>ã5­;oS%Àç]-1’òÉ@Ú!¢Âh       æO   î*PÀ*  a©6}    î*PÀ   ¯”L  ì¨ @  v© @  *  Ôª @  O«òf@  º« @      (  ó`(ª(Ò  <ph¨ <h  ¯”   
   ó`(ª  *    f&
&
      &
&
&
&
&
&
&
D & & & &*  & €D & & & &%À ŠÀ ÁŠÁ @à*  L À%: „	  Z ý öIA öÚ ö!¢   v© Z *  r öÁh ý öe € Î#Æe$ ÀÉ@ÁÚÂ!¢*  ˜ ÃÁhý Àe €‡ f&
&
&
&
&
&
&
&
&
D*  ¾  & & & &Îe €¶
 —#€@-‡	ö *  ä ö ö #öÉÀ öÚ
 ö!¢ öÁh *  
ö
 ¦ ¦ ¦ ¦ ö€@ 6

 6
 6
 *  0„	  8¦ ¦ ¦ ¦ 6
 6

 6
 6
  v© 
8*  V —#‰?G‡‚—- ¢0
‚A‡—- öô‚<‡—- ±j8ƒ*  |ö@ ö‘

 ökÁ ö,› € ‚ ƒ *  ¢æTeæ      ÂBæ×³æÝÀæ¦f&&
&
&
æ€@æTe*  ÈæÂBæ×³æÝ@æ¦f&„	    H    ì€"  Ôª º«  H"º« $v© &ì*  î ‚ ƒ æ¦f&æ¦f&„	    Z  $Ôª &O«òf(Z              &  Ôª ì¨ Ôª 
ì¨ Ôª ì¨                &  Ôª ì¨ Ôª 
ì¨ Ôª ì¨   ,            &  Ôª ì¨ Ôª 
ì¨ Ôª ì¨ *  8  ~    BÖ…‡ ¶ ¶ ¶ ¶ \ ÄÒ   ì¨ ~ì¨ 
O«òfB(Ò*  ^Å	 æ¦f&&&&&Å
öÄ\ ö    *  „Îe €\ 5>ÇÑÀäæ„¾›Æ>F      l.&Åº¾¹+
˜k*  ªã>'Ž•'+¿$IÝriœL?ÌÌ”Ì¨ëª¿ªªªª‚—€@      Ð         ¼ O   î*PÀ*  ñ¨ Z    î*PÀ   ¯”L      (  ó`(ª(B   ¶ }h  6ªÐh ¯”   
   ó`(ª  *    D   Â
€CŠÃ Ãå˜ 
Ã%èÿ   &  

ævvÂ‡ f&\        Ê O   î*PÀ*  i© Z    î*PÀ   ¯”L      (  ó`(ª(R   i© Zh  ¯”   
   ó`(ª  *    €‚ƒ&fDŠÄ Äå¸ Ä%Èÿ 


*  & 
Ä%àÿùÄe  vvó„v„v…„æ¦
  L f&\        ö O   î*PÀ*  ì¨(    î*PÀ   ¯”L  äÀ¨@            (  *  ó`(ª(6 æ)ªh  æÉªh æA«h æ¹«h( *  z)ªh  zÉªh zA«h
 z¹«h$ ¯”   
   ó`(ª  *     
@Àe €@A&
&Îe  &  €€ƒÂÃw     äÀ¨       ú O   î*PÀ*  É« s    î*PÀ   ¯”L      (  ó`(ª(|   zy }h  ¯”   
   ó`(ª  *    fE @Ô‰ 

2À
Ð± ŒC¡  À‹*  & ÃBÀe€@&Ä€ 
 

Aa a C ‚Cà‚*  L àAa@ aAá áÃB„ì† C A€   r A@…‡        ´O   î*PÀ*  ,«@8    î*PÀ   ¯”L  ðyÀ¨@  NŽhçH  *  š©¢s      @  š©¥s@   ©{;@  ,«0z@  9¬öq@  *  ù¯üX@      (  ó`(ª(š ,«@8h  ­h~h 
  ¯”   
   ó`(ª  *    Á
Ã  ó f s‚ æ æz æiÿˆ9‡À   
,«0z*  & Á Â6 
‚~E~Àt Á  Â  Bà‚P‚~À  š©¢sš©¥s*  L  Àì 3
 Àh ”ÁE ÿÁ`	
ùbdh€vx^`  h   r      t *  t ÷	  ÷	   3Š 3ˆ ó‹‚ Ì	w   \ ‚‰w     ù¯üX
9¬öq ðyÀ¨( ©{;       ÌO   î*PÀ*  ½©3…    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(þ ŽT;ªh ŽTÛªh ŽTS«h  ŽTË«h   Ôª€ph ÝªðKh ¯”   
   ó`      (ª  *    f f&
&Ä  Äe, Œ&f…
   ,«0z*  & „ fw f&ŠÎ w fÄU €&ƒ ‚ *  L M—v v € ŠÀ 6` —v ÂU € 

Ãq*  r Ä`Ã€„c„ 	q„m ö €„`a@„€`*  ˜ q€eAa@ aÖ„A@‡A@Ä
Äå€ Ä%ÿ *  ¾ ŠÐÁ  Š ÑÀ  A@‡…6 v
 …„  ä –%\ –%–%ÖÈ‰Ê‰Ö 

í       èO   î*PÀ*  ´©°;    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(n;ªh nÛªh nS«h  nË«h   i©pŠh v©€ph ¯”   
   ó`(ª  *    f f&
&Ä  Äe, Œ&f 

        ,«0z*  & &
ö
 N&
ö +ŽÝ &€Ý À ±  €Ý Ý*  L  Á 

ö v ‚Ý	 Žà
‚Ý Â ± ‚Ý *  r ƒÝ
 Ã ¡   ‡†–%ÖÉ‰æÈ‰*  ˜ Ê‰Ö6
 6

 3 Ž
¡  EsA *  ¾ qDàwÿÿswòÿ`w Î
ûwùÿ6 *  ä „Äe€ ÖÄ%ÿ Ñ6‘ 6 Ev v
 Ä‡  
Ã……„–%\        ø O   î*PÀ*  ì¨    î*PÀ   ¯”L  äÀ¨@      (  *  ó`(ª(8 æ5ªh  æÕªh æM«h æÅ«h( *  z5ªh  zÕªh zM«h
 zÅ«h$ ¯”   
   ó`(ª  *     
@Àe €@A&
&Îe  &  €€      æÂÃw     äÀ¨       ø O   î*PÀ*  ì¨€    î*PÀ   ¯”L  äÀ¨@      (  *  ó`(ª(8 æ8ªh  æØªh æP«h æÈ«h( *  z8ªh  zØªh zP«h
 zÈ«h$ ¯”   
   ó`(ª  *     
@Àe €@A&
&Îe  &  €€æÂÃw     äÀ¨       >O   î*PÀ*  l©Ø^    î*PÀ   ¯”L  ì¨ @  v© @  *  ,ª  @  Ôª @  O«òf@  º« @      (  "  ó`(ª(„ïÀ+h ï¶0h  ¯”   
   ó`(ª  *    æ&
fD Äe æzÏæÑ÷æræ±¿Æå &*  & &&&AÎ¶  ö•€  æeÞæ      ù3æóæ*  L 5@¦ ¦ ¦ ¦ æeÞæù3æóæ5@„	  r   ä       &  º« ä ì¨ 
v© Ôª   €   À           *  O«òfÀ Ôª 
ì¨ Ôª ì¨ Ôª   Ž             &  ì¨ Ôª ì¨ 
Ôª ì¨ Ôª   š       ö     (  ì¨ Ôª ì¨ 
ö ,ª  Ôª *  ¨   &  &Æe Ó‰ 



CÄ„Å æ¦  ì¨ &Ôª 
&„*  Î f&&&&&Å
öÄ„ \ ¶ ¶ ¶ ¶   „ *  ô \ &
ŽÝ Îå€ \ ¦ ¦ ¦ ¦ \ æzÏæ*  Ñ÷æræ1@\ öŠ 	ær(æ7©æØ[æÞ?\ €*        @‚ƒ…Ö‡ -?¸ŒvÞøù9?ÙuÎ¿Mžc?k’A`5»’?"  fIÆ2fÌ?ÌÌ(×ûë*@ªª§ª£	 A    /        ‚O   î*PÀ*  ±©     î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(`äÀ¨hL æ;ªh  æÛªh æS«h *  æË«h@ z;ªh  zÛªh zS«h
 zË«h< *  ì¨ðh& ì¨€ph@ º«€ph< Í«ph2 ¯”   
   ó`(ª  *     
@Àe €@A&
&*  & Ä  Äe, ŒÄ  Äe, ŒÎe €€ƒæÂÃ  ,«0z,«0z*  L &fÅ À.Â1Œf ŒŠ AÄ ± Œ…*  r ŠBAÅ Dá5	aÎ ¦ÂC€Ä%÷ÿ!Äe*  ˜  
Äe ÃBÅ …ÐVŒ      B…„€È*  ¾ \ E CõŠÁ À P 
Äå €„
üDa*  ä @Ž­ C`B`Â%ÿ Ö†…Š„CÓ†B‹E‹Ð†È‰*  


€%ÑCà‚àÂ‹ÃÅ

„CBÂ‹»Ã*  0BÅ
úÊ‰èÎ ‚óÂãÃ 
ÂÐŠÅå   Vî
Åå ê       ˜O   î*PÀ*  †¬@8    î*PÀ   ¯”L  v©€p@  Ôª€p@  *  ,«0z@      (  ó`(ª(¸ ù–À¨h
 W«èqh
   †¬@8h  ¯”   
   ó`(ª  *    Ä  Äe, Œ¦&¶ †¦ ¦ ö .  ,«0z*  & 
&
æ€@ö ö
 $<¦ ¦ ¦ ¦ *  L „	  T ¶
 õ†¦ ¦ ¦ ¦ „	  r   Ôª€p
T &Ôª      €p(r *  r ¶ ¶ ö
 â–%ö ¦ ¦ 6
 ö$  ˜ €@ „	  ¤ ¶ ¶ „–%\ –%Ò‰ö  v©€p¤        ² O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª($ ´À¨h
 N©¦}h  r©  h
 ¯”   
   ó`(ª  (    Ä  Äe, Œ€$HˆH`‡„

È‰\   ,«0z       ¬ O   î*PÀ*  5ª …    î*PÀ   ¯”L      (  ó`(ª( *  ‘T;ªh
 ‘TÛªh ‘TS«h  ‘TË«h Ôª@8h 
  ¯”   
   ó`(ª          &€pf‡\ 
Æ‰\        ® O   î*PÀ*  ,ªÃ;    î*PÀ   ¯”L      (  ó`      (ª( *  q;ªh
 qÛªh qS«h  qË«h v©@8h 
  ¯”   
   ó`(ª  "     &&& Àr†Ç‰
\        ÀO   î*OÀ*  š©s    î*OÀ   ¯”L  ü¨ }@  e© }@  *  š©,t@  š©Ô€@   ©`;@  7ª	#@  ,«0z@  *  ³«€»@  ù±oŒ@      (  ó`(ª(À©»Whz*  š©©phv š©¢shHš©¥shÀš©‘thXš©|—h*   ©{;hD ¹©àLh¦Ë«°h  Ë«Øh Ë« ‚h *  Ë«(‚h Ë«P‚h Ë«x‚h" Ë« ‚hV Ë«È‚h*   Î«Ó~hB¯”   
   ó`(ª  *    Àƒ Æe À„ À… À† 	À‡ Àˆ *  & ÖÀŠ Àå€ Ã  ³^ æBÿˆ      ÷	2 Ã  À`   ,«0zB$,«0z*  L È	æ3ÿˆ&€ €Àå€ À‰ ÖÝ÷	 €*  r Ö w	  Ã  Âlt Ê‹À 3h 3
v 3
x   
ù±oŒ,«0z*  ˜ 3
€ ÷	V œ6 €2Š6 sv œ7 sx œ. s*  ¾ € Âlt ÊÕ€ ’††ó
f †Äd *  ä † 
÷	$ A	†w   Â ¦N
Ö5 ‡ Àÿÿ  7ª	#*  
÷	 w   w	  Ã  &÷	  ÷	4ÖÁ÷	v  
 ©`;ù±oŒ,«0zü¨ }$*  0Áí÷	nÁh ÷	:÷	  Á  B”ÂE ÿ³ h   íš©,tš©Ô€*  VÑ‹þö÷	F÷	  Ä^ Á5÷	4÷	T÷	    š©,t5(š©,t*  |3
^ óf Á÷	÷	  ÷	      `ÿ!€Áv €Á  š©,t*  ¢ó÷	þ Áv ÷	Ê Õ•, œ7 ÷	¾ ÄeT Á	 ÷	  ó*  Èê À œ. ÷	¤ ÷	  Æå ö   ö  €Á  š©,t*  î÷ð 	 ÷	"   Á ôÄ>÷	 Æe   ÷  >*  Õ•  ÷	  w   &÷	€ &&„Á ÷	  –%€Á  
š©,te© }"³«€»*  :	÷	f  Õ•  Õ•? ÷	& w   ær æ?  	 š©,t*  `ÿˆÅn Är Á ÷	F Áæw , Õ•  Á€Õ•-   æ*  †
Áå
 ‚
ûÁe: f÷	æÿ••‡ s!p ‚*  ¬U”ûÅ
‡ Õ•  f÷	  å¥  D~…
‡ Í• ±   ³«€»*  ÒAUŒÍ•† ÁMŒü‡÷‡   --   ERROR FCS        *  ø IN   "   FROM " " AT EXITING DUE TO  *  (ERROR COUNT EXCEEDED) AT PC =  Œ:	±i  D       I  I   \  \_____________9_    m  m_____;___   „  „__q___   
  _;;;;1   ˜  ˜;;;;;;;    ¢  ¢1   §  §;   ¬  ¬   ·  ·;;       ÖO   î*RÀ*  š©Ô€    î*RÀ   ¯”L      (  ó`(ª(h  š©Ô€h  ¯”   
   ó`(ª  *    INVALID ERROR CALL TASK INITIALIZATI*  & ON FAILURE ODD ADDRESS TRAP (SST0) S*  L EGMENT FAU      LT (SST1) T-BIT OR BPT TRAP*  r  (SST2) IOT TRAP (SST3) RESERVED INS*  ˜ TRUCTION TRAP (SST4) NON-RSX EMT TRAP*  ¾  (SST5) 	TRAP INSTRUCTION TRAP (SST6) *  ä 
PDP-11/40 FIS TRAP (SST7) REWIND ERR*  
OR DEFINEFILE ALREADY DONE RECORD TO*  0O LONG BACKSPACE ERROR END-OF-FILE D*  VURING READ INVALID RECORD NUMBER DEF*  |INEFILE NOT DONE MORE THAN ONE RECORD*  ¢ CLOSE ERROR NO SUCH FILE OPEN FAIL*  ÈURE MIXED ACCESS MODES  INVALID LOGIC*  îAL UNIT NUMBER !ENDFILE TO DIRECT ACCE      *  SS FILE "UNIT ALREADY OPEN %INCONSISTE*  :NT RECORD LENGTH &ERROR DURING WRITE '*  `ERROR DURING READ (RECURSIVE I/O ATTEM*  †PT )NO FCS BUFFER ROOM *DEVICE HANDLER*  ¬ NOT RESIDENT +FILE NAME SPECIFICATION*  Ò ERROR ,DIRECT ACCESS RECORD SIZE ERRO*  øR -UNSUPPORTED OPEN KEYWORD .INCONSIST*  ENT OPEN STATEMENT SPECIFICATIONS <INF*  DINITE FORMAT LOOP =FORMAT/VARIABLE-TYP*  jE MISMATCH >SYNTAX ERROR IN FORMAT ?OU*  TPUT CONVERSION ERROR @INPUT CONVERSIO*  ¶N ERROR AFORMAT TOO BI      G FOR 'FMTBUF' B*  ÜRECORD TOO BIG CRECORD TOO SMALL FOR I*  /O LIST ELIST DIRECTED I/O SYNTAX ERRO*  (R FINTEGER OVERFLOW GINTEGER ZERO DIVI*  NDE HFLOATING OVERFLOW IFLOATING ZERO D*  tIVIDE JFLOATING UNDERFLOW PWRONG NUMBE*  šR OF ARGUMENTS QINVALID ARGUMENT RUNDE*  ÀFINED EXPONENTIATION SLOGARITHM OF NEG*  æATIVE VALUE TSQUARE ROOT OF NEGATIVE V*  ALUE UINVALID ARGUMENT TO LIBRARY FUNC*  2TION VINVALID ERROR NUMBER ZCOMPILER D*  XETECTED ERROR [COMPUTED GOTO OUT OF RA*  ~NGE _I      NCOMPATIBLE FORTRAN OBJECT MODUL*  ¤E IN TASK `MISSING FORMAT CONVERSION R*  ÊOUTINE aFTN FORTRAN ERROR CALL dDIRECT*  ðIVE: MISSING ARGUMENTS eDIRECTIVE: INV*  ALID EVENT FLAG NUMBER oVIRTUAL INITIA*  <LIZE FAILURE pVIRTUAL ARRAY MAPPING ER	  bROR  I       O   î*PÀ*  9¬€q    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(Ô žŠ5ªh  žŠ8ªh žŠÕªh žŠØªh *  žŠÅ«h
 žŠÈ«h ~Œ5ªh^ ~Œ8ªhd ~ŒÕªhj *  ~ŒØªhv ~ŒM«hÌ ~ŒP«hÐ ~ŒÅ«hr ~ŒÈ«h~   7¬f"h C¬^h„ ¯”   
   ó`(ª  *          &&&&&&æZ ‚€p c@r   Z *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ‡  ,«0z*  L ÁÁNàf àJ \ ð‰&
&&
&
 & &*  r & & &&æZ ‚€p m @r   Z *  ˜ ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆÐ‡Á  
,«0z  ¾ Á± à±àÖJ  Î Ò       ðO   î*PÀ*  9¬øq    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(¼ ¡Š5ªh  ¡Š8ªh ¡ŠÕªh ¡ŠØªh *  ¡ŠÅ«h
 ¡ŠÈ«h Œ5ªhX Œ8ªh\ ŒÕªh` *  ŒØªhf ŒM«h° ŒP«h¶ ŒÅ«hb ŒÈ«hh   7¬i"h C¬ahn ¯”   
         ó`(ª  *    &&&&&&æT ‚€p  c@r   T *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ‡  ,«0z*  L ÁN àJ \ ð‰&&&&&&æT ‚€  $T *  r p  m @r ×p€ À  ð – ð– 0
˜   ,«0z(  ˜  ¤ &æyÿˆØ‡Á± àÖJ  &Ö &Ö       TO   î*PÀ*  9¬0q    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(ô œŠ5ªh  œŠ8ªh œŠÕªh œŠØªh *  œŠÅ«h
 œŠÈ«h |Œ5ªhb |Œ8ªhh |ŒÕªhv *  |ŒØªh€ |ŒM«hæ |ŒP«hî |ŒÅ«h| |ŒÈ«h”   7¬d"h C¬\hš ¯”   
   ó`(ª  *    &      &&&&&æ^ ‚€p c@r   ^ *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ
‡  ,«0z*  L ÁeWp NfffJ \ ð‰Á| Á” &
&
&

  | "” *  r &I Á| &Á”  Àe &&&&I &æ
  
| ” *  ˜ ^ ‚€p m @r ×p€ À  ð – ð  ^  ,«0z*  ¾ – 0
˜  ¤ &æyÿˆÇ‡Áe Wp ‘‘‘‘Ö  ä J Á|  ÌÁ” û
  | ”        úO   î*PÀ*  9¬8s    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(À ©Š5ªh  ©Š8ªh ©ŠÕªh ©ŠØªh *  ©ŠÅ«h
 ©ŠÈ«h ‰Œ5ªhZ ‰Œ8ªh^ ‰ŒÕªhb *  ‰ŒØªhh       ‰ŒM«h´ ‰ŒP«hº ‰ŒÅ«hd ‰ŒÈ«hj   7¬q"h C¬ihp ¯”   
   ó`(ª  *    &&&&&&æV ‚€p c@r   V *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ‡  ,«0z*  L ÁÁN àJ \ ð‰&&&&&&æV ‚  &V *  r €p m @r ×p€ À  ð – ð– 0
  ,«0z*  ˜ ˜  ¤ &æyÿˆØ‡ÁÁ± àÖJ  &Õ &  ¾ Õ       îO   î*PÀ*  9¬pr    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(º ¤Š5ªh  ¤Š8ªh ¤ŠÕªh ¤ŠØªh *  ¤ŠÅ«h
 ¤ŠÈ«h „Œ5ªhX „Œ8ªh\ „ŒÕªh` *  „ŒØªhf „ŒM«h      ® „ŒP«h´ „ŒÅ«hb „ŒÈ«hh   7¬l"h C¬dhn ¯”   
   ó`(ª  *    &&&&&&æT ‚€p@ c@r    T *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ‡  ,«0z*  L 
Nœ àJ \ ð‰&&&—&&—&æT ‚€  $T *  r p@ m @r  ×p€ À  ð – ð– 0
˜   ,«0z&  ˜  ¤ &æyÿˆØ‡±• àÖJ  &’× &’×       O   î*PÀ*  9¬üX    î*PÀ   ¯”L  ,«0z@  y²€pH *      (  ó`(ª(V 9¬öqh  B¬„:h  ­;h    ­ˆx(  ó«@Gh  ¯”   
   ó`(ª  *    Ã  ÀÀeŽ 3¤ 
Ð 



      Ð# 
f  ,«0z­ˆx *  & æ7ÿˆ†ï‰@Ð 
Ð€ 

Ð‚ 
f  L æuÿˆí‡‡        Z O       *  «y:    ¯”L      ( 9¬öqh  ¯”   
             ‡        ˆ O   vÀ›½*  ƒ,d    vÀ›½   ¯”L      (  
­D"(   a³ˆZh  ¯”   
   
­D"       ± ðµ =  p! †Õ•^ ú‡        ŒO   wÀ[Ð*  K	VN    wÀ[Ð   ¯”L  s©À@  °s@  *  ù±oŒ@  c³Ü@      (  
­D"(¸ ;¯VNh    a³VNh ¯”   
   
­D"  *    w	  fB C 	œ" ¦æ&æÿˆ	‡÷	l   ù±oŒ      *  & †Â  ÃSYîð  * ‡ Å° p0 p2   s©À*  L q 1 0Š= ðµ   f&
&Îe< ð < æ*  r ƒ
Á ÷	  Æe ð < ð• * ‡ Á  Áe  c³Ü&°s$  ˜  œ" f¦æÿˆ‡DC’B A ‡        øO   wÀøÊ*  ¯ˆw    wÀøÊ   ¯”L  °s@  ù±oŒ@  *  a³ˆZ@  b³—G@  f³Ð@  i³‚@  q³¯:@  *  r³"&@  w³·€@      (  
­D"(Ð „¯½`h  
  ¯”   
   
­D"  *    w	  ð * 8 w ´ ðµ  ðµ ) ÷	  ù±oŒ*  &   ðµ   ð¥   ÷	  †øÿÿ  Bà  b³—Ga³ˆZ*  L ÷	  &œ* ÷	  
      „&
ðµ # ðµ!  ðµ   w³·€i³‚*  r ) &ÎeP æÂ  Âe Ê¦æðµ #   °s*  ˜ &æ•&Ä ð> €Åe > ÍE €÷	    (q³¯:  ¾ †•p* ÷	  w     r³"&f³Ð       tO   wÀ›½*  •e	    wÀ›½   ¯”L  °s@  f³Ð@  *  i³‚@  q³¯:@      (  
­D"(¤ c³Iqh  
  ¯”   
   
­D"  *    ðµ  Gðµ = ðÕ  fÂ  &
Âe
 Ê%   °s*  & ÿÿ¦æ&æ&ÎeH æ
ðµ   &Îe*  L 0 æ÷	  U•
 Â …ÃÂE •  i³‚*  r Õð> €> ÍE €fÄ ÷	  p        †ñ  q³¯:  ˜   ±
  w     f³Ð       ò O   vÀÊ*  zÌ    vÀÊ   ¯”L  i³‚@  q³¯:@  *      (  
­D"(H e³²Zh  f³t:h r³®Sh 
  ¯”   
   
­D"  *    Ä Ä Ä 	ðµ  f÷	  ð> €5   i³‚&  & >  õE € u
 ÷	  ‡ ñ  ±
  ‡   q³¯:      2O   wÀÊ*  œ,      wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³J,@  p³—y@  r³Þ@  *  r³ü@      (  
­D"(ð° }h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±      oŒ
p³J, r³ü*  &  ÷	ð¥öÿ* 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* úðµ  ÷	  ó‡÷	j÷	d÷	  ë‡  p³—y&e³&*  r ðe  p  p  ‡÷	Þ‡ ð¥   #*  ˜ ðµ = Ä 
E”W¡9 ƒÅ¥^ éð•³ÿ* ÆÅå*  ¾ 0 ùÃÅ`ÃÃCaÄ
ëÃå Cƒ
ÔÃðµ*  ä   ÷	Ø ð¥   ð 0 Äð•Øÿ* ¡ð¥ *  
  æÂe@ Ã Îà÷	€ ƒ’‡÷	 ‡ðµ = *  0
ÁE p …ðµ  ÷	| ð p *  V °  æÄ ð Îà÷	, ƒƒ÷	J *  |á÷	 ù†ð•Øÿ* Á`‡ æ÷	  ƒ ‡ æ  r³Þ*  ¢ Càƒ#ƒÎà÷	        Î¦÷	Ôÿ‚ð†–
‡   m³oŒ*  È DàÄ ‡ ðµ@ ) ð
6 ðÿ? 0  ðÅD )   î‡       O   wÀÊ*  œ,hy    wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³K,@  r³ü@  s³k@  "      (  
­D"(è°	€h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³K, r³ü*  &  ÷	ü ð¥öÿ* 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* ú÷	p÷	  õ‡ðe  p  p  ‡  e³&*  r ÷	è‡ ð¥   #ðµ = Ä 
E”W¡9 *  ˜ ƒÅ¥^ éð•³ÿ* ÐÅå0 ùÃÅ`ÃÃCaÄ
ëÃå*        ¾  Cƒ
ÔÃðµ  ÷	ä ð¥   *  ä ð 0 Äð•Øÿ* «ð¥   æÂe@ Ã Îà÷	*  
Œ ƒœ‡÷	 ™‡ðµ = 
ÁE p ðµ  *  0÷	ˆ ð p  °  æÄ *  Vð Îà÷	8 ƒƒ÷	V á÷	 ù†ð•Øÿ* Á`*  |‡ ðµ ) w   æ÷	  ƒ ‡ æ Càƒ#  s³kr³ü*  ¢ƒÎà÷	  Î¦÷	Èÿ‚ð†–
‡  DàÄ ‡   m³oŒ$  Èðµ@ ) ð
6 ðÿ? 0  ðÅD ) ‡       †O   xÀ¸Ý*  E`€W    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  b³Ó@  c³Iq@  d³?!@  e³²Z@  *  f³Ð@  f³t:@  f³y:@  i³‚@        m³lE@  *  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@  *  s³þ}@      (  
­D"(h±p!h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w úðµðÿ  ù±oŒ
°sf³y:*  &  w ,ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w øÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÷	  ‡÷	`ñ   s³þ}*  ˜   Tðµ # ÷	  ‡Lðµ   ð¥     f³t:*  ¾  ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0 *  ä p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  †ðµ  
c³Iq$e³²Z*  
@ # ð¥Çÿ* ð * ff       f ÷	  ±   $d³?!*  0± ‰‡÷	  †
w ò ðµ  ð  8 ðe$   e³²Z"°s*  V8 2 &À  Áe ÷	  €Z‡p8 q
 ÷	  °s¡«*  |ì V‡0
 ð  ðµ  #0  0  œ  *  ¢Ä¥ ‚‡œA Ä¥ ÄŠð ð•   *  È00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ* 0
@   r³,}*  î÷	  „ðµ # &
&æµ &Ä ÷	  †  i³‚&q³¯:*  ‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ*   r³"&*  :ÁeB Â÷	  ÷	  °•* âð•Õÿ* äð•Ôÿ*   r³®Sm³lE*  `àð•Óÿ* Üðµ  w P÷	  ÕeB Æå
 •  i³‚      *  †Åe > Ä €…
ðµ  # ÍÕ Ä ðµ *  ¬# Ä DÃÍÅ ÑÄ ðµ # Ä ðµ   *  ÒðµH # ÍÕ@ …& 0
 ðµ # Õü*  ø Õ÷
 
÷	  ‡0 @ ° Æe
   q³¯:*  Ei‡°
6 ðµ   ðÿ ðµ # ð 
 ðµ*  D@ # ðÿ? ðµ@ # 0 4 0
 6 ðµ  *  jBðµ # :ðµ   ðµA # 	ðÕ@ ) 0
 ð*   
 )÷	  †æ ð¥öÿ* * ÷	:þ°*   r³ë*  ¶ðµ@ # 0l  ðµ # 	ð•   ð•  0*  Ü2  ðµ  8 ÷	  ÷	  ‡  ðµ!    b³Óf³Ð  ðµ   p0 p2 ‡             NO   xÀ¸Ý*  F`à8    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  f³Ð@  f³y:@  *  i³‚@  q³¯:@  r³"&@  r³,}@  r³ë@  "      (  
­D"(jh±ì&h  ¯”   
   
­D"  *    w	  Á  w zñB ÷	  ð8 w rðµðÿ  ù±oŒ
°sf³y:*  &  w €ðµ # ðµ  ðµôÿ w lœ*  L   Ä¥ †w LÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  †  &a³VN*  ˜ w ò ÷	ªñ  ðµ  w ì ±
  ðµ  *  ¾ ð  8 ðe$ 8 2 &À  Áe ÷	  €R‡  °s°s"¡«      *  ä p8 q
 ÷	Î N‡0
 ð  ðµ  #0  *  
0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð*  0 ð•   00  0  ÷	  0
@ ‡ ÷	 ð•  r³,}*  VÕÿ* 0
@ ÷	  „ðµ # &
&æµ &  i³‚*  |Ä ÷	  †‡ ð•Ùÿ* ÷	  ð•Ëÿ* ± ‡ ð•Äÿ  
q³¯:r³"&*  ¢* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ  w *  ÈP÷	  ÕeB Æå
 •Åe > Ä €…
ðµ  i³‚*  î  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ *  ðµ # Ä ðµ   ðµH # ÍÕ@ …& *  :0
 ðµ # Õü Õ÷
 
÷	    (q³¯:*  `‡0 @       ° Æe
 Ei‡°
6 ðµ   ðÿ*  † ðµ # ð 
 ðµ@ # ðÿ? ðµ@ # *  ¬0 4 0
 6 ðµ  Bðµ # :ðµ   ðµ*  ÒA # 	ðÕ@ ) 0
 ð 
 )÷	  †æ ð¥öÿ  r³ë*  ø* * ÷	Xþ°* ðµ@ # 0l  ðµ *  # 	ð•   ð•  02  ðµ  8 ÷	    (b³Ó*  D÷	  ‡  ðµ!  ðµ   p0 p2 ‡   f³Ð      ŒO   xÀ¸Ý*  F`ÐW    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  c³Iq@  d³?!@  *  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  *  m³lE@  q³¯:@  r³"&@  r³®S@        r³,}@  *  r³ë@      (  
­D"(h±²'h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w  ðµðÿ  ù±oŒ
°sf³y:*  &  w 2ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w þÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  ‡  &a³VN*  ˜ ÷	`ñ  Tðµ # ÷	  ‡Lðµ   ð¥   f³t:*  ¾    ×  †ð•Øÿ* w F
Å`p!2 ü‡Åà*  ä Åp0 p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  c³Iq*  
  †ðµ@ # ð¥Çÿ* ð * ff f ÷	  e³²Z*  0  ± ± ‰‡÷	  †
      w ò ðµ  ð    d³?!e³²Z(°s*  V8 ðe$ 8 2 &À  Áe ÷	  €Z‡p8   °s¡«*  |q
 ÷	ì V‡0
 ð  ðµ  #0  0 *  ¢ œ  Ä¥ ‚‡œA Ä¥ ÄŠð *  Èð•   00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ*   r³,}*  î0
@ ÷	  „ðµ # &
&æµ &Ä   i³‚*  ÷	  †‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñ  q³¯:r³"&*  :Â&œ* ÁeB Â÷	  ÷	  °•* âð•Õÿ* ä  r³®Sm³lE*  `ð•Ôÿ* àð•Óÿ* Üðµ  w P÷	  ÕeB   "i³‚*  †Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä      *  ¬ ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä *  Òðµ   ðµH # ÍÕ@ …& 0
 ðµ # *  øÕü Õ÷
 
÷	  ‡0 @ °   q³¯:*  Æe
 Ei‡°
6 ðµ   ðÿ ðµ # ð*  D 
 ðµ@ # ðÿ? ðµ@ # 0 4 0
 6 *  jðµ  Bðµ # :ðµ   ðµA # 	ðÕ@ ) *  0
 ð 
 )÷	  †æ ð¥öÿ* * ÷	:þ  r³ë*  ¶°* ðµ@ # 0l  ðµ # 	ð•   ð•*  Ü  02  ðµ  8 ÷	  ÷	  ‡    b³Ó f³Ð  ðµ!  ðµ   p0 p2 ‡        –O   vÀÊ*  af Z    vÀÊ   ¯”L        a³—K@  b³Ó@  *  c³Ü@  e³&@  e³&@  r³ë@  w³œ€@  "      (  
­D"(œ p³¿Zh  ¯”   
   
­D"  *    ðµ   ° 6 p 4 
 ì0 Á`p ÷	    (e³&*  & ‡ ÷	  ü‡æf¦ðµ ) ÷	  )‡ðµ   Á  a³—Kw³œ€*  L  

÷	  °6 °4 ðÕ@ ) ð 
 0
 8   c³Ü*  r ÷	  Ö‡ °6 °4 ÷	  °e ð‹* w   Æe   b³Ór³ë$e³&  ˜ ± ‡       °O   wÀ›½*  \g      wÀ›½   ¯”L  i©€‰@  ù±oŒ@  *  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³J,@  *  p³“y@  r³Þ@  r³,}@  r³ë@  w³™€@        *  w³·€@      (  
­D"(Ò•± }h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³J,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@   r³,}$f³Ð*  ¾ ) ðµ  ÷	  †ð¥öÿ* ï0,  ÷	    p³“y(r³Þ*  ä ÷	°æ‡ðµ  
÷	  ‡ðÅ ) ð * ðÕ   e³&*  
) ðµ  '
ð¥   Óðµ = Óð¥   *  0Ól ð 0 ¹l       ð  ƒð¥   ÷	  †  &a³ˆZ*  Vøÿÿ ÷	ô ª‡  ð¥   /ð  ð *  |ð¥   Ãe &ðµ = Å BaÀ@aÁ
 ÷	*  ¢  Áe0 bÅ
÷Âe Ò€ð¥   Áe@ Ã  i©€‰*  È ÷	˜ A‡  ÷	Š :‡ðµ = ‚
ÂE °*  î ÷	¶ ðe  p ðÕ )  ì  ‡ðµ *   ð¥   Ã% ÷	  †, 	ðµ    a³ˆZ*  :÷	 ÷	T ‡÷	  w hþw ^þ‡ ÷	  ‡÷	L †  r³,} w³™€*  `÷	  ‡ B æ ƒàƒ#ƒÎà÷	  Îf÷	  r³ë m³oŒ*  †Ìÿ î†–
‡ Â`‡ ð¥öÿ* ð * w   ±   &f³Ð*  ¬ðµ ) 04  0      6 
  l0 ì ° ‡       RO   wÀ›½*  \ghy    wÀ›½   ¯”L  i©€‰@  ù±oŒ@  *  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³K,@  *  r³,}@  s³k@  w³™€@  w³·€@      (    
­D"(ž•±	€h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³K,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@   r³,}$f³Ð*  ¾ ) 0,  w         ðµ  
÷	  ‡ðÅ ) ð  s³ke³&*  ä  * ðÕ ) ðµ  '
ð¥   Óðµ = *  
Óð¥   Ól ð 0 Èl ð  ƒð¥   *  0÷	  †øÿÿ ÷	ð ¹‡  ð¥   /ð   a³ˆZ*  V ð ð¥   Ãe &ðµ = Å BaÀ*  |@aÁ
 ÷	  Áe0 bÅ
÷Âe Ò€ð¥     i©€‰*  ¢Áe@ Ã ÷	” ?‡  ÷	† 8‡ðµ = *  È‚
ÂE ° ÷	  ðe  p ðÕ )  ì *  î‡ðµ  ð¥   Ã% ÷	  †
,    a³ˆZ*  ðµ  ÷	 ‡÷	  w Šþw €þ‡ ÷	  ‡÷	  r³,}$w³™€*  :: †w   ‡ B æ ƒàƒ#      ƒÎà÷	  Î  
s³k$m³oŒ*  `f÷	Ìÿ î†–
‡ Â`‡ ± ðµ ) 04    †06 
  l0 ì ° ‡        Ô O   vÀÊ*  \qò    vÀÊ   ¯”L      (  
­D"(\   r³,}h  ¯”   
   
­D"  *    ðµ  ) ðµ  ð¥   ’¤ð¥   *  & ’¤ðµ = ’¤° 0  ð¥   0  l  L  °  ƒ0  ‡        O   vÀáØJ  ;	Žf    vÀáØ   ¯”L  \±D@  ù±oŒ@      (  
­D"(` ;¯Ph  ¯”   
   
­D"  *    w	  ‚ Á
Ò¥[ Ä, ÷	 ‡æÄ] ÷	  ù±oŒ*  &  …
‡Ás‘ ‡ …¡      Á
ü± ‡ Á
„DáÄ
  L w     \±D
   
­D".   .    P   P ÷Å5 ÿôó‹ ñè       ŒO   wÀbÌz  œ,      wÀbÌ   ¯”L  â)_G@  å)Ps@  î)Ôp@  ù±oŒ@  e³&@  f³Ð@  m³oŒ@  p³J,@  p³—y@  r³Þ@  r³ü@      (    
­D"(ð° }h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³J, r³ü*  &  ÷	ð¥öÿ* 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* úðµ  ÷	  ó‡÷	j÷	d÷	  ë‡  p³—y&e³&*  r ðe  p  p  ‡÷	Þ‡ ð¥   #*  ˜ ðµ =       Ä 
E”W¡9 ƒÅ¥^ éð•³ÿ* ÆÅå*  ¾ 0 ùÃÅ`ÃÃCaÄ
ëÃå Cƒ
ÔÃðµ*  ä   ÷	Ø ð¥   ð 0 Äð•Øÿ* ¡ð¥ *  
  æÂe@ Ã Îà÷	€ ƒ’‡÷	 ‡ðµ = *  0
ÁE p …ðµ  ÷	| ð p *  V °  æÄ ð Îà÷	, ƒƒ÷	J *  |á÷	 ù†ð•Øÿ* Á`‡ æ÷	  ƒ ‡ æ  r³Þ*  ¢ Càƒ#ƒÎà÷	  Î¦÷	Ôÿ‚ð†–
‡   m³oŒ*  È DàÄ ‡ ðµ@ ) ð
6 ðÿ? 0  ðÅD )   î‡ 
   
­D"6   6 ðÕ   ð  ð     â)_Gî)Ôpå)Ps   ƒ       O   vÀáØB  œ,h          vÀáØ   ¯”L  a³VN@      (  
­D"(j g³©}h  ¯”   
   
­D"  *    ð * ¦÷	  ‚'‡ðµ  ðµ  f f  a³VN*  &  f
 f f þ	
 ± ± ±
 ± ±   L ñÿÿ ñÿÿ 1
 –
‡ 
   
­D"4   4 ÷	*    b   b 1
 ~         vO   wÀbÌz  œ,hy    wÀbÌ   ¯”L  â)_G@  å)Ps@  î)Ôp@  ù±oŒ@  e³&@  f³Ð@  m³oŒ@  p³K,@  r³ü@  s³k@      (  
­D"(è  °	€h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³K, r³ü*  &  ÷	ü ð¥öÿ      * 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* ú÷	p÷	  õ‡ðe  p  p  ‡  e³&*  r ÷	è‡ ð¥   #ðµ = Ä 
E”W¡9 *  ˜ ƒÅ¥^ éð•³ÿ* ÐÅå0 ùÃÅ`ÃÃCaÄ
ëÃå*  ¾  Cƒ
ÔÃðµ  ÷	ä ð¥   *  ä ð 0 Äð•Øÿ* «ð¥   æÂe@ Ã Îà÷	*  
Œ ƒœ‡÷	 ™‡ðµ = 
ÁE p ðµ  *  0÷	ˆ ð p  °  æÄ *  Vð Îà÷	8 ƒƒ÷	V á÷	 ù†ð•Øÿ* Á`*  |‡ ðµ ) w   æ÷	  ƒ ‡ æ Càƒ#  s³kr³ü*  ¢ƒÎà÷	  Î¦÷	Èÿ‚ð†–
‡  DàÄ ‡   m³oŒ      $  Èðµ@ ) ð
6 ðÿ? 0  ðÅD ) ‡ 
   
­D"6   6 ðÕ   ð  ð     â)_Gî)Ôpå)Ps   ƒ       rO   xÀ#ßz  E`€W    xÀ#ß   ¯”L  ¡«@  °s@  ù±oŒ@  b³Ó@  c³Iq@  d³?!@  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  m³lE@  R  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@  s³þ}@      (  
­D"(vh±p!h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w úðµðÿ  ù±oŒ
°sf³y:*  &  w ,ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w øÄ
0
 ð * 0
 0
 0
*        r  ð 
 0
 0
4 0
6 ðÅÿ) ÷	  ‡÷	`ñ   s³þ}*  ˜   Tðµ # ÷	  ‡Lðµ   ð¥     f³t:*  ¾  ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0 *  ä p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  †ðµ  
c³Iq$e³²Z*  
@ # ð¥Çÿ* ð * ff f ÷	  ±   $d³?!*  0± ‰‡÷	  †
w ò ðµ  ð  8 ðe$   e³²Z"°s*  V8 2 &À  Áe ÷	  €Z‡p8 q
 ÷	  °s¡«*  |ì V‡0
 ð  ðµ  #0  0  œ  *  ¢Ä¥ ‚‡œA Ä¥ ÄŠð ð•   *  È00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ* 0
      @   r³,}*  î÷	  „ðµ # &
&æµ &Ä ÷	  †  i³‚&q³¯:*  ‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ*   r³"&*  :ÁeB Â÷	  ÷	  °•* âð•Õÿ* äð•Ôÿ*   r³®Sm³lE*  `àð•Óÿ* Üðµ  w P÷	  ÕeB Æå
 •  i³‚*  †Åe > Ä €…
ðµ  # ÍÕ Ä ðµ *  ¬# Ä DÃÍÅ ÑÄ ðµ # Ä ðµ   *  ÒðµH # ÍÕ@ …& 0
 ðµ # Õü*  ø Õ÷
 
÷	  ‡0 @ ° Æe
   q³¯:*  Ei‡°
6 ðµ   ðÿ ðµ # ð 
 ðµ*  D@ # ðÿ? ðµ@ # 0 4 0
 6 ðµ        *  jBðµ # :ðµ   ðµA # 	ðÕ@ ) 0
 ð*   
 )÷	  †æ ð¥öÿ* * ÷	:þ°*   r³ë*  ¶ðµ@ # 0l  ðµ # 	ð•   ð•  0*  Ü2  ðµ  8 ÷	  ÷	  ‡  ðµ!    b³Óf³Ð  ðµ   p0 p2 ‡ 
   
­D"> 
  > ÷	Ô     † 
  † ÷	¤     Ø   Ø üƒ   Z  Z÷	â   œ  œ&* Î¥öÿw ®    Ô
  Ô÷	Ž      *  ðµôÿ ðµ  ðµ  ‡ ðÅÿ) ðÕ ) 0
*  <@ ‡ 2 Á5 ‡ Öð•íÿ* w ¾ýÎ ðÕ )   bw Jÿðµ  ðÕ  ‡        .O   xÀ#ßz  F`à8          xÀ#ß   ¯”L  ¡«@  °s@  ù±oŒ@  a³VN@  b³Ó@  f³Ð@  f³y:@  i³‚@  q³¯:@  r³"&@  r³,}@  r³ë@  "      (  
­D"(Êh±ì&h  ¯”   
   
­D"  *    w	  Á  w zñB ÷	  ð8 w rðµðÿ  ù±oŒ
°sf³y:*  &  w €ðµ # ðµ  ðµôÿ w lœ*  L   Ä¥ †w LÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  †  &a³VN*  ˜ w ò ÷	ªñ  ðµ  w ì ±
  ðµ  *  ¾ ð  8 ðe$ 8 2 &À  Áe ÷	  €R‡  °s°s"¡«*  ä p8 q
 ÷	Î N‡0
 ð        ðµ  #0  *  
0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð*  0 ð•   00  0  ÷	  0
@ ‡ ÷	 ð•  r³,}*  VÕÿ* 0
@ ÷	  „ðµ # &
&æµ &  i³‚*  |Ä ÷	  †‡ ð•Ùÿ* ÷	  ð•Ëÿ* ± ‡ ð•Äÿ  
q³¯:r³"&*  ¢* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ  w *  ÈP÷	  ÕeB Æå
 •Åe > Ä €…
ðµ  i³‚*  î  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ *  ðµ # Ä ðµ   ðµH # ÍÕ@ …& *  :0
 ðµ # Õü Õ÷
 
÷	    (q³¯:*  `‡0 @ ° Æe
 Ei‡°
6 ðµ   ðÿ*        † ðµ # ð 
 ðµ@ # ðÿ? ðµ@ # *  ¬0 4 0
 6 ðµ  Bðµ # :ðµ   ðµ*  ÒA # 	ðÕ@ ) 0
 ð 
 )÷	  †æ ð¥öÿ  r³ë*  ø* * ÷	Xþ°* ðµ@ # 0l  ðµ *  # 	ð•   ð•  02  ðµ  8 ÷	    (b³Ó*  D÷	  ‡  ðµ!  ðµ   p0 p2 ‡   f³Ð
   
­D"> 
  > ÷	(     † 
  † ÷	ø     Ì   Ì ÷	Ä   ð  ð&* Î¥öÿw ®    (
  (÷	Ž      j*  jðµôÿ ðµ  ðµ  ‡ ðÅÿ) ðÕ ) 0
*  @ ‡ 2 Á5 ‡ Öð•íÿ* w âýÎ ðÕ )   ¶w Jÿðµ        ðÕ  ‡        xO   xÀ#ßz  F`ÐW    xÀ#ß   ¯”L  ¡«@  °s@  ù±oŒ@  a³VN@  b³Ó@  c³Iq@  d³?!@  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  R  m³lE@  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@      (  
­D"(|h±²'h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w  ðµðÿ  ù±oŒ
°sf³y:*  &  w 2ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w þÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  ‡  &a³VN*  ˜ ÷	`ñ  Tðµ # ÷	  ‡Lðµ   ð¥         f³t:*  ¾    ×  †ð•Øÿ* w F
Å`p!2 ü‡Åà*  ä Åp0 p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  c³Iq*  
  †ðµ@ # ð¥Çÿ* ð * ff f ÷	  e³²Z*  0  ± ± ‰‡÷	  †
w ò ðµ  ð    d³?!e³²Z(°s*  V8 ðe$ 8 2 &À  Áe ÷	  €Z‡p8   °s¡«*  |q
 ÷	ì V‡0
 ð  ðµ  #0  0 *  ¢ œ  Ä¥ ‚‡œA Ä¥ ÄŠð *  Èð•   00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ*   r³,}*  î0
@ ÷	  „ðµ # &
&æµ &Ä   i³‚*  ÷	  †‡ ÷	  ð•Ëÿ* ± ‡       ð•Ùÿ* ðµ # ñ  q³¯:r³"&*  :Â&œ* ÁeB Â÷	  ÷	  °•* âð•Õÿ* ä  r³®Sm³lE*  `ð•Ôÿ* àð•Óÿ* Üðµ  w P÷	  ÕeB   "i³‚*  †Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä*  ¬ ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä *  Òðµ   ðµH # ÍÕ@ …& 0
 ðµ # *  øÕü Õ÷
 
÷	  ‡0 @ °   q³¯:*  Æe
 Ei‡°
6 ðµ   ðÿ ðµ # ð*  D 
 ðµ@ # ðÿ? ðµ@ # 0 4 0
 6 *  jðµ  Bðµ # :ðµ   ðµA # 	ðÕ@ ) *  0
 ð 
 )÷	  †æ ð¥öÿ* * ÷	:þ        r³ë*  ¶°* ðµ@ # 0l  ðµ # 	ð•   ð•*  Ü  02  ðµ  8 ÷	  ÷	  ‡    b³Ó f³Ð  ðµ!  ðµ   p0 p2 ‡ 
   
­D"> 
  > ÷	Ú     † 
  † ÷	ª     Þ   Þ üƒ   `  `÷	â   ¢  ¢&* Î¥öÿw ®    Ú
  Ú÷	Ž      *  ðµôÿ ðµ  ðµ  ‡ ðÅÿ) ðÕ ) 0
*  B@ ‡ 2 Á5 ‡ Öð•íÿ* w ¾ýÎ ðÕ )   hw Jÿðµ  ðÕ  ‡        äO   wÀâ¿z  \g      wÀâ¿   ¯”L  i©€‰@  ù±oŒ@  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³J,@  p³“y@  r³Þ@  r³      ,}@  r³ë@  w³™€@  *  w³·€@      (  
­D"(B•± }h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³J,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@   r³,}$f³Ð*  ¾ ) ðµ  ÷	  †ð¥öÿ* ï0,  ÷	    p³“y(r³Þ*  ä ÷	°æ‡ðµ  
÷	  ‡ðÅ ) ð * ðÕ   e³&*  
) ðµ  '
ð¥   Óðµ = Óð¥         *  0Ól ð 0 ¹l ð  ƒð¥   ÷	  †  &a³ˆZ*  Vøÿÿ ÷	ô ª‡  ð¥   /ð  ð *  |ð¥   Ãe &ðµ = Å BaÀ@aÁ
 ÷	*  ¢  Áe0 bÅ
÷Âe Ò€ð¥   Áe@ Ã  i©€‰*  È ÷	˜ A‡  ÷	Š :‡ðµ = ‚
ÂE °*  î ÷	¶ ðe  p ðÕ )  ì  ‡ðµ *   ð¥   Ã% ÷	  †, 	ðµ    a³ˆZ*  :÷	 ÷	T ‡÷	  w hþw ^þ‡ ÷	  ‡÷	L †  r³,} w³™€*  `÷	  ‡ B æ ƒàƒ#ƒÎà÷	  Îf÷	  r³ë m³oŒ*  †Ìÿ î†–
‡ Â`‡ ð¥öÿ* ð * w   ±   &f³Ð      *  ¬ðµ ) 04  06 
  l0 ì ° ‡ 
   
­D"    w ¶   , 
  , w ¬     B   B ÷	¨   R   R ÷	¦   b   b ÷	²   p   p v    €   € ÷	¬   Ž   Ž     š   š ÷	ž   Ò*  Ò&
&
&
w @ýð 2 w LýÆe w Âýö•   ¶ *  ø ‡ v” Ã
ö¥$  ¶  ö•   ‡ Åà‚ö¥(     ¶  ö ‡ ƒ ö•   ‡ Žw     &r³,}       ÒO   wÀâ¿z  \ghy    wÀâ¿   ¯”L  i©€‰@  ù±oŒ@  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³K,@  r³,}@  r³ü@  s³k@  w³™€@  w³·€@  "            (  
­D"(*•±	€h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³K,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@   r³,}$f³Ð*  ¾ ) 0,  w   ðµ  
÷	  ‡ðÅ ) ð  s³ke³&*  ä  * ðÕ ) ðµ  '
ð¥   Óðµ = *  
Óð¥   Ól ð 0 Èl ð  ƒð¥   *  0÷	  †øÿÿ ÷	ð ¹‡  ð¥   /ð         a³ˆZ*  V ð ð¥   Ãe &ðµ = Å BaÀ*  |@aÁ
 ÷	  Áe0 bÅ
÷Âe Ò€ð¥     i©€‰*  ¢Áe@ Ã ÷	” ?‡  ÷	† 8‡ðµ = *  È‚
ÂE ° ÷	  ðe  p ðÕ )  ì *  î‡ðµ  ð¥   Ã% ÷	  †
,    a³ˆZ*  ðµ  ÷	 ‡÷	  w Šþw €þ‡ ÷	  ‡÷	  r³,}$w³™€*  :: †w   ‡ B æ ƒàƒ#ƒÎà÷	  Î  
s³k$m³oŒ*  `f÷	Ìÿ î†–
‡ Â`‡ ± ðµ ) 04    †06 
  l0 ì ° ‡ 
   
­D"    w ‚   , 
  , w x     B   B ÷	t   R         R ÷	r   b   b ÷	~   p   p v    €   € ÷	x   Ž   Ž     š   š ÷	j   È   È w B   ž*  ž&
&
&
w týð 2 w €ýÆe w öýö•   ¶ *  Ä ‡ v” Ã
ö¥$  ¶  ö•   ‡ Åà‚ö¥*  ê   ¶  ö ‡ ƒ ö•   ‡ Žw   ÷	  &r³,}    †¬* öÿð * w ¦ýw     r³üf³Ð       –O   vÀaÌz  t°y    vÀaÌ   ¯”L  °s@      (  
­D"(~ Ô±2&h  Ô±€&h, Ô±Ñ(h\ Ö±fahD œ²2&h œ²€&h6 œ²Ñ(hf ž²fahN ¯”   
   
­D"  *    Á  Áe( B A
‡ &À  Àe(       H° 0
  °s°s*  &  €‡ Á  A
 ‡ fÁ  ±
 ‡ Á  A   °s°s$°s*  L ‡ fÁ  ± ‡ Á  AB ‡ &À  pB Ù  
°s°s"°s
   
­D"f   f &À  pB 0
< ðÿÿ( €‡   °s       ŠO   vÀá¿z  ÷’¼    vÀá¿   ¯”L  a³[M@  b³Ó@  b³—G@  f³Ð@  w³¼@  w³t@  w³k@      (  
­D"(f w³™€h  w³œ€h  w³·€h 
  ¯”   
   
­D"  *    ÷	  ðµ ) ÷	  !‡f¦æ÷	  †ƒ‚„÷	  b³—Ga³[Mw³k*  &   	‡òÆe ðÅ ) ÷	  ðe 6 p4 ÷	  0ž  w³tw³¼&b³      Ó  L 8 * ÷	  ‡   
f³Ð
   
­D"    ÷	F    V   V ðµ  w   ÖÖ  a³[M       ZO   OÀÅÎ*  ?uÖd    OÀÅÎ   ¯”L  p©Åœ@  Ã©i"@  *  .ªK@  .ªþK@  («v"@  («X@  R«°'@  *  « w@  ¹«]Œ@      (T «E`h ¯”   
         *          ÷	  ÷	  †‡ ÂÂeìÿ
û	J ‡ÂÂeàÿ   R«°'(«Xp©Åœ¹«]ŒÃ©i"*  & 
û	J ‡ÂÂe  ÷	  	‡ÂÂeÈÿ
5
> û	J †  («v"0 
.ªþK‡  L w   w     .ªK
« w       $O   OÀ…È*  3uIq    OÀ…È   ¯”L  J©v"@  Ã©i"@  *  .ªK@        .ªþK@  R«³'@  « w@  ¹«]Œ@        (D «•h ¯”   
         *      ÷	  ÷	  †‡ õ¥@  †õ0û fÂÂeÞÿ  R«³'¹«]ŒÃ©i""  & 
û	J ‡ÂÂe  ÷	  †w   w   !  J©v"2 
.ªþK.ªK « wŒ       ° O   NÀEÛ*  3ukM    NÀEÛ   ¯”L  D©ö`@  Ã©`"@  "  ¹«]Œ@      ( «¯h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
Ã©`"D©ö` 
v       ° O   NÀÅÎ*  3uþ_    NÀÅÎ   ¯”L  G©¶Z@  £«i"@  "  ¹«]Œ@      ( «&h  ¯”   
                   ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«i"G©¶Z 
¯       ² O   NÀEÛ*  4u;;    NÀEÛ   ¯”L  i©öy@  £«`"@  "  ¹«]Œ@      ( «{h  ¯”   
             ÷	  ÷	  †‡ æÎe  ‚{ J   ¹«]Œ
£«`"i©öy 
        ° O   OÀ¼*  7u`"    OÀ¼   ¯”L  Ý©6€@  £«`"@  "  ¹«]Œ@      ( «œ,h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"Ý©6€ 
        ° O   NÀÕ*  @u`†    NÀÕ   ¯”L  U«6€@  £«`"@  "  ¹«]Œ@      ( «\gh  ¯”         
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"U«6€ 
        ° O   NÀÕ*  6ut:    NÀÕ   ¯”L  ¹©¶Z@  £«`"@  "  ¹«]Œ@      ( «ö&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¹©¶Z 
        ° O   NÀÕ*  Eu¡d    NÀÕ   ¯”L  £«`"@  ¹«]Œ@  "  ¬6@      ( «Ä…h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¬6 
        ° O   NÀÕ*  4u%!    NÀÕ   ¯”L  e©6N@  £«`"@  "  ¹«]Œ@      (       «Ôh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"e©6N 
        â O   NÀ…á*  Bu    NÀ…á   ¯”L  •«õ
@  £«`"@  *  ¹«]Œ@  j¬õ<@      (* «Iqh «™’h 
  ¯”   
         *        ÷	  &
÷	  æ ÷	  †–
‡ ÂÂeàÿ   •«õ
j¬õ<
¹«]Œ¹«]Œ£«`"  & { J        ü O   NÀ…È*  5u»p    NÀ…È   ¯”L  š©õ
@  Ã©i"@  *  .ªK@  .ªþK@  R«°'@  ¹«]Œ@      (2   «"h ¯”   
         *        ÷	  ÷	  †‡ æÂÂeìÿ
û	J ƒ‡ÂÂe        R«°'š©õ

¹«]ŒÃ©i"  & Þÿ
÷	  w     
.ªþK.ªK       ¬ O   NÀEÂ*  5u%™    NÀEÂ   ¯”L   ©µ@  Ã©`"@  "  ¹«]Œ@      ( «#h ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J    ©µ¹«]ŒÃ©`"       Â O   NÀÕ*  4uH;    NÀÕ   ¯”L  p©Åœ@  Ã©`"@  *  « w@  ¹«]Œ@      (" «h ¯”   
         &      ÷	  ÷	  †‡ ÂÂeðÿ
µ> û	J w     p©Åœ¹«]ŒÃ©`"$« w       ¦O   OÀEÂ*  9uüX    OÀEÂ   ¯”L  «)x@  «¶{@  *  «¸{@  «º{@  «¼{      @  «¾{@  ¹«´‰@  *  5¬ ™@  
­XT@      (Š «v:h  «6xh 
  ¯”   
         *    ÷	  Ã  Ãóµ ( ¡ ‡ ÷	  Ã  ÃÄó*   ¹«´‰
5¬ ™¹«´‰ 5¬ ™*  & ± ‡ À  Á  ÷	< Á  ÷	4 Á  ÷	, Á     «¶{«¸{«º{ «¼{(«¾{*  L ÷	$ À  Á  ÷	 3
$ ó& óe" & ó ( ¡   

­XT«)x  r ‡ 
Bà4þÿ
ˆ
@‡        O   NÀèã*  Gu¼    NÀèã   ¯”L  «êv@  ¹«]Œ@  "  5¬ ™@      (f «ñh  ¯”   
         *    ÷	  E …)‡Å'Í¥ $Ã  Ãó5 ( À  ¹«]Œ5¬ ™*        & pÿ÷	  D „‡Ä£	 ôµ  æ  æ  «êv  L )ÿˆæ  æÿˆè‡ Ààú÷	    «êv       ¬ O   NÀÅÎ*  Buá"    NÀÅÎ   ¯”L  £«`"@  §«õ<@  "  ¹«]Œ@      ( «!th ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   §«õ<¹«]Œ£«`"       ¬ O   NÀEÂ*  DuÖs    NÀEÂ   ¯”L  £«`"@  ¹«]Œ@  "  ò«ˆ@      ( «åh ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   ò«ˆ¹«]Œ£«`"       jO   NÀÅç*  6u"    NÀÅç   ¯”L  ¼©õ‡@  Â©õ#@  *  «µ      @  •«µO@  £«`"@  ¹«]Œ@  È«õ
@  *      (L «u'h «U(h «T[h0 «Tqh
   «Ayh& ¯”   
                       ÷	  &
÷	&  •«µOÂ©õ#¼©õ‡
È«õ
«µ¹«]Œ*     æ ÷	  æ 	÷	  æ ÷	  æ ÷	  ¹«]Œ¹«]Œ¹«]Œ"¹«]Œ  :   †‡ ÂÂe¼ÿ{ J   £«`"  DuÖs    NÀEÂ   ¯”L  £«`"@  ¹«]Œ@  "  ò«ˆ@      ( «åh ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   ò«ˆ¹«]Œ£«`"               NÀEÂ*  6u"    NÀÅç   ¯”L  ¼©õ‡@  Â©õ#@  *  «µ          ›r˜Æl^› 8$        ;+;; RMS11 ODL NAMING CONVENTIONS;;;;	RM	=	CONSTANT--IDENTIFIES AS RMS-11.;	N	=	TYPE OF OVERLAY ENVIRONMENT;			0 -- NO RESIDENT LIBRARY OR RUN-TIME SYSTEM;			1 -- RESIDENT LIBRARY OR RUN-TIME SYSTEM;;	A	=	SYSTEM ENVIRONMENT ;			0 -- SYNCHRONOUS;			1 -- ASYNCHRONOUS;;	B	=	FILE ORGANIZATION;			1 -- SEQUENTIAL;			2 -- RELATIVE;			3 -- INDEXED;;	C	=	OPERATION SUPPORT;			0 -- FILE OPEN;			1 -- FILE CREATION;			2 -- INPUT ($GET,$FIND);			4 -- OUTPUT ($PUT);			6 -- I/O ($GET,$FIND,$PUT,$UPDATE,$DELETE);;	ODL FILE       CONVENTIONS;;	WHENEVER AN A, B, OR C DOES NOT APPLY, THEN AN "X" IS USED;	EXAMPLE:;	RM013X.ODL = SELECTS THE ASYNC ENVIRONMENT WITH INDEX SUPPORT;	BUT CONTAINS NO OPERATION SUPPORT ODL INFORMATION;;	NOTE:	ALL MODULE REFERENCES ARE TO LB:[1,1]RMSLIB.OLB;;	NOTE:	IN THE FOLLOWING TEXT, WHEREEVER A CHOICE IS INDICATED;		AMONG ALTERNATIVE FACTORS, THE CHOICE IS EFFECTED BY;		REMOVING THE LEADING SEMICOLON FROM THE FACTOR TO BE SELTED;-;;;;;;; **************************************************; COMMON FACTORS;RMS      CM1:	.FCTR	LB:[1,1]RMSLIB/LB:R0AUTO:R0IMPA;; **************************************************;;	IF TASK BUILDING WITH THE RMS11 RESIDENT LIBRARY (RSX) OR;	RUN TIME SYSTEM (RSTS/E), REPLACE THE TERM RMXXXX IN THE;	FACTOR RMSROT (BELOW) WITH RMS11X. ALSO, SELECT ONE OF;	THE FOLLOWING FACTORS BELOW.;;;	NO INDEX FILE SUPPORT REQUIRED;;RMS11X:	.FCTR	RMSCM1-RMSREX;;;	INDEX FILE SUPPORT REQUIRED, ALSO SELECT THE RMSIX0;	FACTOR BELOW.;;RMS11X:	.FCTR	RMSCM1-RMSREX-RMSIX0;; *****************************************      *********;;	IF TASK BUILDING WITHOUT THE RMS11 RESIDENT LIBRARY (RSX);	OR RUN TIME SYSTEM (RSTS/E), REPLACE THE TERM RMXXXX IN ;	THE FACTOR RMSROT (BELOW) WITH ONE OF THE FOLLOWING:;;		RM0X3X	(INDEXED ORGANIZATION SUPPORTED);		RM0X0X	(INDEXED ORGANIZATION NOT SUPPORTED);;	ALSO, SELECT THE CORRESPONDING FACTOR FROM THE TWO BELOW.;;RM0X0X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC;RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0;RMSROT:	.FCTR	LB:[1,1]RMSLIB/LB:RMSSYM-RMXXXX;; *****************************      *********************; THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITH; THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME SYSTEM (RSTS/E).; SELECT ONE OF THE TWO.;;; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.;;RMSREX:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXSY:R0RSES;; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY);;RMSREX:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXEC:R0RSET;; **************************************************; THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITHOUT; THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME S      YSTEM (RSTS/E).; SELECT ALL THREE.;;RMSIO:	.FCTR	LB:[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLK;RMSCBL:	.FCTR	LB:[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDAT;RMSCOM:	.FCTR	LB:[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB;; **************************************************; THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITHOUT; THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME SYSTEM (RSTS/E); SELECT ONE OF THE TWO.;; SYNC SYSTEMS;;RMSEXC:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS:R0RMSA;; ASYNCHRONOUS SYSTEM      S (RSX BASED SYSTEMS ONLY);;RMSEXC:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB:R0RMSA;; **************************************************;; THE FOLLOWING FACTOR IS NEEDED WHEN INDEXED ORGANIZATION IS; TO BE SUPPORTED.;;RMSIX0:	.FCTR	LB:[1,1]RMSLIB/LB:R0RLSB:R0GETB;;;;;;	.NAME	RMS11	.NAME	RMSFAB	.NAME	RMSRAB	.NAME	RMSCRE	.NAME	RMSCD	.NAME	RMOPIN	.NAME	RMSSEQ	.NAME	RMSREL	.NAME	R2GUPD	.NAME	RMSIDX	.NAME	RMSBMC	.NAME	RMSMIS	.NAME	RMDEXT	.NAME	RMDRLB	.NAME	RMDWTL;;;;;;; **************************************      ************; THE FOLLOWING GROUP OF FACTORS SELECT NON OPTIONAL; MODULES FOR THE FILE ORIENTED FUNCTIONS.;RMSFIL:	.FCTR	RMSFAB-LB:[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFLRMSFL:	.FCTR	LB:[1,1]RMSLIB/LB:R0CLCM-RMFILE-RMSFL0RMSFNM:	.FCTR	LB:[1,1]RMSLIB/LB:R0PRFN:R0XPFN:R0MKWA:R0ASLN-RMSFL1RMSDPC:	.FCTR	LB:[1,1]RMSLIB/LB:R0DPYC:R0CKSM-RMSFL1RMSFL1:	.FCTR	LB:[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIORMSCLS:	.FCTR	LB:[1,1]RMSLIB/LB:R1CLOS:R2CLOS-RMSCL0;; SELECT THE FIRST OF THE FOLLOWING TWO FACTORS IF INDEX SUPPORT I      S; NOT REQUIRED.  SELECT THE SECOND IF INDEX SUPPORT IS REQUIRED.;;RMSCL0:	.FCTR	LB:[1,1]RMSLIB/LB:R0CKSM-RMEXTD-RMR1RL;RMSCL0:	.FCTR	LB:[1,1]RMSLIB/LB:R3CLOS:R0CKSM-RMEXTD-RMR1RL;RMSOPN:	.FCTR	(LB:[1,1]RMSLIB/LB:R0OPFL-RMSOP0,RM0XY0);; SELECT THE FIRST OF THE FOLLOWING TWO FACTORS IF INDEX SUPPORT IS; NOT REQUIRED.  SELECT THE SECOND IF INDEX SUPPORT IS REQUIRED.;;RMCRCK:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRCK:R2CRCK;RMCRCK:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCK;RMCREA:	.FCTR	LB:[1,1]RMSLIB/LB:R0CRFL:R0MFNB      :R0RD50-RMSCR2;RMSCR0:	.FCTR	RMSCRE-LB:[1,1]RMSLIB/LB:R0CRXI-RMSCR1; **************************************************; SELECT THE FOLLOWING FOUR FACTORS FOR THE RSX ENVIRONMENT.;;RMFILE:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXAC;RMSOP0:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50;RMSCR2:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXCR:R0RXMD:R0RXDI;RMSER1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXMD-RMSOP0;; SELECT THE FOLLOWING FOUR FACTORS FOR THE RSTS/E ENVIRONMENT.;;RMFILE:	.FCTR	LB:[1,1]RMSLIB/LB:R0REOP;RMSOP0:	.FCTR	LB:[1,1]RMSLIB/LB:R0MF      NB:R0RD50;RMSCR2:	.FCTR	LB:[1,1]RMSLIB/LB:R0RECR;RMSER1:	.FCTR	RMSOP0;;	**********************************************************;; IF TASK BUILDING WITHOUT THE RMS11 RESIDENT LIBRARY (RSX); OR RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS MUST; BE SELECTED.;;RMEXTD:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXTD;RMR1RL:	.FCTR	LB:[1,1]RMSLIB/LB:R1RLBK:R1NXBK;RMR1WL:	.FCTR	LB:[1,1]RMSLIB/LB:R1WTLS;; IF TASK BUILDING WITH THE RMS11 RESIDENT LIBRARY (RSX) OR; RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS MUST;       BE SELECTED.;;RMEXTD:	.FCTR	RMDEXT;RMR1RL:	.FCTR	RMDRLB;RMR1WL:	.FCTR	RMDWTL;;;;;;; **************************************************; THE FOLLOWING IS THE STARTING FACTOR FOR DEFINING THE RMS11 CO-TREE.; THE FACTOR NAME RMSALL IS REFERENCED IN THE USERS ODL.RMSALL:	.FCTR	RMS11-*(RMSFIL,RMSREC);;	FILE (FAB) FUNCTION OVERLAY STRUCTURE;RMSFL0:	.FCTR	(RMSFNM,RMSDPC,RMSCLS,RMSOPN,RMSCR0);; IF THE $EXTEND OR $ERASE FUNCTIONS ARE TO BE SUPPORTED, SELECT; THE FOLLOWING THREE FACTORS AND ADD RMSMIC AFTER RMSCR0 IN       THE; RMSFL0 FACTOR ABOVE.;;RMSMIC:	.FCTR	(RMSERA,RMSEXT);RMSERA:	.FCTR	LB:[1,1]RMSLIB/LB:R0ERFL-RMSER1;RMSEXT:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXT0:R0CKSM:R2BFMT-RMEXTD-RMSFL1;; **************************************************; THE FOLLOWING FACTOR (RM0XY0) SELECTS THE ORGANIZATION DEPENDENT MODULES; FOR THE $OPEN FUNCTION. AS IS, IT SELECTS THE MODULES FOR ALL; THREE FILE ORGANIZATIONS. THEY ARE:;	;	R1OPFL			(SEQUENTIAL ORGANIZATION;	R2OPFL			(RELATIVE ORGANIZATION);	R3OPFL AND R3RPLG	(INDEXED ORGANIZATION);;       IF A PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE; CORRESPONDING MODULE NAMES MAY BE REMOVED TO SAVE SPACE.;; NOTE: THE FACTOR RM0X30 IS USED TO AVOID A "LINE TOO LONG" ERROR,;	IT IS EQUIVALENT TO "R3OPFL:R3RPLG" .;RM0XY0:	.FCTR	RMOPIN-LB:[1,1]RMSLIB/LB:R0INIT:R0CKSM:R1OPFL:R2OPFL-RM0X30;RM0X30:	.FCTR	LB:[1,1]RMSLIB/LB:R3OPFL:R3RPLG;;;;;;; **************************************************; THE FOLLOWING FACTOR (RMSCR1) SELECTS THE ORGANIZATION DEPENDENT; MODULES FOR FILE CREATION, ALONG WITH APPROP      RIATE SUPPORTING MODULES.; AS IS, IT SELECTS THE MODULES FOR ALL THREE ORGANIZATIONS.; IF A PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE CORRESPONDING; MODULES MAY BE REMOVED TO SAVE SPACE.; THE CORRESPONDENCE IS:;;	R1CRFL			(SEQUENTIAL ORGANIZATION);	R2CRFL			(RELATIVE ORGANIZATION);	R3CRFL			(INDEXED ORGANIZATION);;; THE FACTORS FOR THE SUPPORTING MODULES ARE:;;	RMCRXX			(RELATIVE OR INDEXED);	RM0X21			(RELATIVE ORGANIZATION);	RM0X31			(INDEXED ORGANIZATION);RMSCR1:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRFL:R      2CRFL:R3CRFL-(RMCRCK,RMCREA,RMCRXX);;;RMCRXX:	.FCTR	(RM0X21,RM0X31);RM0X21:	.FCTR	LB:[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM-RMSFL1;RM0X31:	.FCTR	LB:[1,1]RMSLIB/LB:R3WPLG:R0CKSM:R0ALBD-RMEXTD;;;;;;;; **************************************************;; RMS RECORD (RAB) OPERATIONS - COMMON FACTORS;RMSCDX:	.FCTR	RMSCD-LB:[1,1]RMSLIB/LB:R1CONP:R2CONP-RMSCD0;; SELECT THE FIRST OF THE FOLLOWING TWO FACTORS IF INDEX SUPPORT IS; NOT REQURIED.  SELECT THE SECOND IF INDEX SUPPORT IS REQUIRED.;;RMSCD0:	.FCTR	LB:[1,1]RMSL      IB/LB:R1DISC:R2DISC-RMSCD1;RMSCD0:	.FCTR	LB:[1,1]RMSLIB/LB:R3CONP:R1DISC:R2DISC:R3DISC-RMSCD1;RMSCD1:	.FCTR	LB:[1,1]RMSLIB/LB:R0CCLN:R0RSEI:R0ALBS-RMSFL1-RMSCD2RMSCD2:	.FCTR	RMR1RL-RMR1WL-RMEXTD;; **************************************************;	RMS RECORD (RAB) FUNCTION OVERLAY STRUCTURE;;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) SEPERATED BY;	ODL OVERLAY/CONCATENATION OPERATORS WHICH;	WILL PROVIDE THE REQUIRED FUNCTIONALITY;	RM0X26 ---- RELATIVE FILE RECORD OPERATIONS;	RM0X36 ---- INDEXED FILE       RECORD OPERATIONS;	RMSBLK ---- BLOCK IO AND MISC. RECORD OPERATIONS $REWIND,$FREE;			$FLUSH, AND $TRUNCATE;	RMSSQ0 ---- SEQUENTIAL FILE RECORD OPERATIONS;RMSREC:	.FCTR	RMSRAB-(RMSCDX,XXXX);; **************************************************;; RMS RELATIVE FILE RECORD OPERATIONS;;RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2A;RMIO2C:	.FCTR	LB:[1,1]RMSLIB/LB:R2IOCK:R2CALC:R0CKSM;RMIO2A:	.FCTR	LB:[1,1]RMSLIB/LB:R2FIND:R2GSET-(RMIO2G,RMIO2P);RMIO2G:	.FCTR	R2GUPD-LB:[1,1]RMSLIB/LB:R2GET-RMIO2U-RMIO2D;RMIO2P:	.FCTR	LB:[1,1]      RMSLIB/LB:R2PUT:R2PSET-RMIO2H;RMIO2H:	.FCTR	LB:[1,1]RMSLIB/LB:R2BFMT:R2EXTD-RMEXTD;RMIO2U:	.FCTR	LB:[1,1]RMSLIB/LB:R2UPDA:R2PSET;RMIO2D:	.FCTR	LB:[1,1]RMSLIB/LB:R2DELE;;;;;;; **************************************************; RMS INDEXED FILE RECORD OPERATIONS;;RM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31;RMIO30:	.FCTR	RMOU3C-RMOU3D-RMOU3E;RMIO31:	.FCTR	(RMIO3G,RMIO3P,RMIO3U);RMIO3G:	.FCTR	LB:[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3K;RMIN3K:	.FCTR	LB:[1,1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKE;RMIN3S:	.FCTR	LB      :[1,1]RMSLIB/LB:R3FRSE:R3POSE:R3POSR:R3FRRV;RMIO3P:	.FCTR	LB:[1,1]RMSLIB/LB:R3PUT:R3PSET-(RMOU3Q);RMOU3Q:	.FCTR	(RMOU33,RMOU34,RMOU35,RMOU36,RMOU3P);RMIO3U:	.FCTR	LB:[1,1]RMSLIB/LB:R3UPDA:R3USET-(RMIO3D,RMOU34,RMIO3X);RMIO3X:	.FCTR	(RMOU35,RMOU36,RMOU3P);RMIO3D:	.FCTR	LB:[1,1]RMSLIB/LB:R3DELE:R3DSET:R3RPLC:R3SKDL-RMOU33;RMOU33:	.FCTR	LB:[1,1]RMSLIB/LB:R3PIXC:R3FRRV:R3DLSI;RMOU34:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDR-(RMOU3J-RMOU3F,RMOU3K,RMOU3G,RMOU3A);RMOU35:	.FCTR	LB:[1,1]RMSLIB/LB:R3ISID-(RMOU3A,RMOU3H);RMOU36      :	.FCTR	LB:[1,1]RMSLIB/LB:R3UIDX:R3IKEY-(RMOU3M,RMOU3O,RMOU3A);RMOU3A:	.FCTR	LB:[1,1]RMSLIB/LB:R3ALOC:R3BFMT-RMEXTD;RMOU3C:	.FCTR	LB:[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKT;RMOU3D:	.FCTR	LB:[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KREF;RMOU3E:	.FCTR	LB:[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTR;RMOU3F:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDI:R3BSRT;RMOU3G:	.FCTR	LB:[1,1]RMSLIB/LB:R3BRRV:R3URRV;RMOU3H:	.FCTR	LB:[1,1]RMSLIB/LB:R3ISDI:R3BSRT-RMOU3L;RMOU3J:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDC;RMOU3K:	.FCTR	LB:[      1,1]RMSLIB/LB:R3BSPL;RMOU3L:	.FCTR	LB:[1,1]RMSLIB/LB:R3SSPL;RMOU3M:	.FCTR	LB:[1,1]RMSLIB/LB:R3IKYI-RMOU3N;RMOU3N:	.FCTR	LB:[1,1]RMSLIB/LB:R3KSPL;RMOU3O:	.FCTR	LB:[1,1]RMSLIB/LB:R3ROOT;RMOU3P:	.FCTR	LB:[1,1]RMSLIB/LB:R3MKID-RMOU3A;;;;;;; **************************************************; RMS BLOCK IO OPERATIONS AND; MISC RMS11 RECORD OPERATION ($FREE,$FLUSH,$REWIND,$TRUNCATE);;	NOTE: THE RMMISC AND LB:[1,1]RMSLIB/LB:R0RWBI TERM ARE INDEPENDENT;	AND IF BLOCK IO IS NOT DESIRED THEN THE...../LB:R0RWBI TERM;	MA      Y BE DELETED AND IF THE MISC. RECORD OPERATIONS ARE NOT;	DESIRED THEN THE RMMISC TERM MAY BE DELETED;;RMSBLK:	.FCTR	RMSBMC-LB:[1,1]RMSLIB/LB:R0RWBI-RMMISC;;RMMISC:	.FCTR	RMSMIS-RMMIS0;RMMIS0:	.FCTR	LB:[1,1]RMSLIB/LB:R0FREE:R1TRUN-RMMIS1;RMMIS1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGT;RMWATR:	.FCTR	LB:[1,1]RMSLIB/LB:R0WATR-RMR1WL-RMR1RL-RMEXTD;RMMAGT:	.FCTR	LB:[1,1]RMSLIB/LB:R0MAGT;;;;;;;; **************************************************; SEQUENTIAL RECORD OPERATIONS - NO RESIDENT LIBRARY OR RU      N-TIME SYSTEM;;RMSSQ0:	.FCTR	RMSSEQ-RMR1RL-RMEXTD-RMSQOP;; SEQUENTIAL RECORD OPERATIONS EITHER CONCATENATED OR OVERLAY; THOSE DESIRED OR ANY COMBINATION OF THE ABOVE;;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) ETC.;	RMIN10 ---- $GET/$FIND OPERATIONS FOR SEQUENTIAL FILE;	RMOU1P ---- $PUT OPERATION FOR THE SEQUENTIAL FILE;	RMOU1U ----$UPDATE/$DELETE OPERATION FOR THE SEQENTIAL FILE;;RMSQOP:	.FCTR	LB:[1,1]RMSLIB/LB:R1WTLS:R1CKEF-(XXXX);RMIN10:	.FCTR	LB:[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLD;RMOU1P:	.FCTR	LB      :[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLD;RMOU1U:	.FCTR	LB:[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE:R1PSET;; NOTE: IF RMOU1U IS CONCATENATED WITH RMOU1P THEN REMOVE ; ONE OF THE R1PSET MODULES FROM THE ABOVE FACTORS;; **************************************************; SEQUENTIAL RECORD OPERATIONS IF LINKING TO THE RMS11 RESIDENT LIBRARY; OR RUN-TIME SYSTEM (IE, UPDATE AND DELETE ONLY);;RMSSQ0:	.FCTR	RMSSEQ-LB:[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE;;	**********************************************************;;	HAV   T   E YOU DELETED ALL THE SEMICOLONS (;) THAT APPLY TO THE;	FACTORS YOU HAVE SELECTED ? T          #¸Q"S› 8$        ÁXÀM               @ -       # è                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ÿ   « –  3 ô z	 ( Þ	 ´J!
 † w* X²2 R œ5 ¸b; œ\K ²zK ÐaT À zd ¶ Ìe ö :w z}  ºƒ  Lÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           –M        	.MACRO	ABODF$,L,B S.COAD='B'0. S.CSGF='B'2. S.CBPT='B'4. S.CIOT='B'6. S.CILI='B'8. S.CEMT='B'10.ÿ S.CTRP='B'12.ÿ S.CFLT='B'14.ÿ S.CSST='B'16.ÿ S.CAST='B'18.ÿ S.CABO='B'20.ÿ S.CLRF='B'22.ÿ S.CCRF='B'24.ÿ S.IOMG='B'26.ÿ S.PRTY='B'28.ÿ T.NDNR='B'0ÿ T.NDSE='B'2ÿ T.NCWF='B'4ÿ T.NCRE='B'6ÿ T.NDMO='B'8. T.NLDN='B'12.ÿ T.NLUP='B'14.ÿ 	.MACRO	ABODF$	X,Y 	.ENDM 	.ENDM     
M        	.MACRO 	CLKDF$,L,Bÿ C.MRKT='B'0ÿ C.SCHD='B'2ÿ C.SSHT='B'4ÿ C.SYST='B'6ÿ C.SYTK='      B'8. C.CSTP='B'10.  	.ASECTB .=0L C.LNK:'L' .BLKW	1. C.RQT:'L' .BLKB	1' C.EFN:'L' .BLKB	1  C.TCB:'L' .BLKW	1T C.TIM:'L' .BLKW	2'	 .=C.TIM+4T C.AST:'L' .BLKW	1' C.SRC:'L' .BLKW	1ÿ C.DST:'L' .BLKW	1.	 .=C.TIM+4ÿ C.RSI:'L' .BLKW	2. C.UIC:'L' .BLKW	1Y	 .=C.TIM+4. 	.BLKW	2 	.BLKW	1	 .=C.TIM+4F C.SUB:'L' .BLKW	1ÿ C.AR5:'L' .BLKW	1L	 	.BLKW	1  C.LGTH='B'.ÿ 	.PSECT	 	.MACRO	CLKDF$	X,Y 	.ENDM 	.ENDM     TM        	.MACRO	CUCDF$	X,Y 	.ASECT.
 .=	U.CW2+2 U.ACUR:'X	.BLKW	1T U.NSYN:'X	.BLK      B	1. U.NSYC:'X	.BLKB	1.
 .=	U.VCB+2 U.PHDR:'X	.BLKW	1. U.RCHK:'X	.BLKW	1'	 U.QSYN:'X  U.RCAC:'X	.BLKW	1  U.RBUF:'X	.BLKW	2  U.RCNT:'X	.BLKW	1T U.SVC:'X	.BLKW	1	 U.TXCT:'XL U.INTP:'X	.BLKW	1L U.SYNC:'X	.BLKB	1+ U.MPN:'X	.BLKB	1 U.RFRK:'X	.BLKW	1K U.RFPC:'X	.BLKW	1. U.RFR5:'X	.BLKW	1= U.RFR4:'X	.BLKW	1  U.RFCT='Y	U.TXCT+1 	.PSECT  U2.HDX='Y	100000 U2.LIN='Y	 40000 U2.CTS='Y	 20000 U2.SWC='Y	 10000 U2.ONL='Y	  4000 U2.HPT='Y   1000 U2.HRC='Y	   400 U2.RCV='Y	   200 U2.ACU='Y	   100 U2      .MPT='Y	    40 U2.FTM='Y	    20 U2.SFL='Y	    10 U2.RFK='Y	     4 U2.SYC='Y	     3 U2.TXA='Y	     2 U2.SNC='Y      1 US.SYN='Y	1T U3.LOK='Y	100000 U3.RPD='Y	   400 U3.RAC='Y	   200 U3.SND='Y	     1 	.MACRO	CUCDF$	A,B 	.ENDM 	.ENDM     4M        	.MACRO	CVCDF$	X,Y 	.ASECTK	 .=	V.IFWI4 V.CPRT:'X	.BLKW	1T V.CLUN:'X	.BLKB	1C V.CMPN:'X	.BLKB	10 V.CSTS:'X	.BLKW	1  V.CST1:'X	.BLKB	12 V.CNID:'X	.BLKB	1O V.CUCB:'X	.BLKW	1T V.CMPL:'X	.BLKW	1' V.CNPN:'X	.BLKW	1	 V.CMBC:'X	.BLKW	1  V.CRED      :'X	.BLKW	1  V.CNHD:'X	.BLKW	10 V.CTBL:'X	.BLKW	1  V.CRBL:'X	.BLKW	12 V.NXHD:'X	.BLKW	1T V.CDBC:'X	.BLKW	1C V.CIAD:'X	.BLKW	1' V.CICT:'X	.BLKW	10 V.CSAD:'X	.BLKW	10 V.CSCT:'X	.BLKW	1  V.CMXI:'X	.BLKW	1. V.CMXO:'X	.BLKW	1. V.CTDH:'X	.BLKW	1  V.CTDT:'X	.BLKW	1	 V.CSTQ:'X	.BLKW	2K V.CLMT:'X	.BLKB	1T V.CTMA:'X	.BLKB	1N V.CLMR:'X	.BLKB	1N V.CRMA:'X	.BLKB	1S V.CMCT:'X	.BLKW	21 V.CRPC:'X	.BLKB	1D V.CRPL:'X	.BLKB	1B V.CRTM:'X	.BLKW	1L V.CREP:'X	.BLKW	1N V.CBCC:'X	.BLKW	1C V.CDCC:'X	.BLKW	1D       V.CURH:'X	.BLKW	1D V.CDLE:'X	.BLKW	1L V.COVR:'X	.BLKW	1L V.CRST:'X	.BLKW	1D V.CALF:'X	.BLKW	1C V.CREA:'X	.BLKB	1D 	.BLKB	1 	.IF DF	C$$ACU V.CTPN:'X	.BLKB	12.K 	.ENDC V.CLEN:'X	.BLKW	1. 	.PSECTB 	 VS.SEL='Y	100000 VS.FIN='Y	 40000 VS.REP='Y  20000 VS.RTR='Y	 10000 VS.STK='Y	  4000 VS.STR='Y	  2000 VS.ACK='Y	  1000 VS.NAK='Y	   400 VS.MPT='Y	   200 VS.DIS='Y    200 VS.CTL='Y	   100 VS.DAT='Y	    40 VS.SYN='Y	    20 VS.POL='Y	    10 VS.ONL='Y	     4 VS.BOO='Y	     2 VS.TRN='Y	           1 	.MACRO	CVCDF$	A,B 	.ENDM 	.ENDM     ŒM        	.MACRO	DCBDF$,L,B 	.ASECTF .=0B D.LNK:'L' .BLKW	1B D.UCB:'L' .BLKW	1. D.NAM:'L' .BLKW	1N D.UNIT:'L' .BLKB 1 	.BLKB	1 D.UCBL:'L' .BLKW 1 D.DSP:'L' .BLKW	10 D.MSK:'L' .BLKW	10 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 D.PCB:'L' .BLKW	10 	.PSECTK D.VINI='B'0S D.VCAN='B'20 D.VOUT='B'4  D.VPWF='B'6' 	.MACRO	DCBDF$,X,Y 	.ENDM 	.ENDM     Ò M        	.MACRO	DEVDF$,L,B 	.MCALL	DCBDF$ 	DCBDF$	<L>,<B>' 	.      MCALL	UCBDF$ 	UCBDF$	<L>,<B>N 	.MCALL	SCBDF$ 	SCBDF$	<L>,<B>A 	.MCALL	LCBDF$ 	LCBDF$	<L>,<B>. 	.MACRO	DEVDF$,X,Y 	.ENDM 	.ENDM     ÒM        	.MACRO	EMBDF$,L,B EC.INI='B'40 EC.DVC='B'1L EC.DTO='B'140  EC.NSI='B'141: EC.LOA='B'4  EC.UNL='B'10 EC.MPE='B'21 EC.PWR='B'42 	.ASECT. .=01 E.SIZE:'L' .BLKW 1 E.CODE:'L' .BLKB 1	 	 .BLKB 1' E.TIME:'L' .BLKB 6 E.SEQ:'L'.BLKW 1 E.ABM:'L'.BLKW 1	 .=E.ABM+2. E.VCTR:'L' .BLKB 1 E.LOST:'L' .BLKB 1 E.OPS:'L'.BLKW 1 E.OPC:'L'  .BLKW 1	 .=E.ABM+      2C E.RTRY:'L' .BLKB 2	 	 .BLKB 1. E.IOC:'L'.BLKB 1 E.TASK:'L' .BLKW 2 E.PAR:'L'.BLKW 1 E.UIC:'L'.BLKW 1 E.UCB:'L'.BLKW 1 E.FCN:'L'.BLKB 2 E.PRM:'L'.BLKW 1	 	 .BLKW 6  E.RCNT:'L' .BLKB 1	 	 .BLKB 1D E.REGS='B'.C E.LGTH='B'.  .=E.TIME+<9.*2>U E.WHY:'L'.BLKW	1 .=.+2C E.NAME:'L'.BLKW	1. 	.PSECT. 	.MACRO	EMBDF$	X,Y 	.ENDM 	.ENDM     úM        	.MACRO	F11DF$ 	.ASECT. .=01 V.TRCT:	.BLKW	11 V.IFWI:	.BLKW	1C 	.IF	DF,R$$11D V.STD:	.BLKW	1 	.ENDC V.FCB:	.BLKW	2 V.IBLB:	.BLKB	1  V.IBSZ      :	.BLKB	1Y 	.BLKW	1 V.FMAX:	.BLKW	1. V.WISZ:	.BLKB	1. V.SBCL:	.BLKB	1  V.SBSZ:	.BLKW	1  V.SBLB:	.BLKB	1  V.FIEX:	.BLKB	1  	.BLKW	1 	.IF	DF,R$$11M V.VOWN:	.BLKW	1  V.VPRO:	.BLKW	1L V.VCHA:	.BLKW	1  	.IFTF V.FPRO:	.BLKW	1  	.IFTI V.VFSQ:	.BLKW	1: 	.IFFW 	.BLKW	1 	.ENDC V.FRBK:	.BLKB	1S V.LRUC:	.BLKB	1D 	.BLKW	1 	.IF	DF,R$$11D V.LABL:	.BLKB	12.A 	.ENDC V.STAT:	.BLKB	11
 	VC.IFW=	1
 	VC.BMW=	2 V.FFNU:	.BLKB	1F V.LGTH:D . 	.ASECTW .=0. F.LINK:	.BLKW	1W 	.IF	DF,R$$11D F.FEXT:	.B      LKW	1K F.STD:	.BLKW	1 	.ENDC F.FNUM:	.BLKW	1	 F.FSEQ:	.BLKW	1	 	.BLKB	1 F.FSQN:	.BLKB	1  F.FOWN:	.BLKW	1  F.FPRO:	.BLKW	1  F.UCHA:	.BLKB	1, F.SCHA:	.BLKB	1B F.HDLB:	.BLKW	2B F.LBN:	.BLKW	2 F.SIZE:	.BLKW	2  F.NACS:	.BLKB	1  F.NLCK:	.BLKB	1B 	S.STBK=.-F.LBN. F.STAT:. F.NWAC:	.BLKB	1K 	.BLKB	1 	FC.WAC=100000 	FC.DIR=40000, 	FC.CEF=20000	 	FC.FCO=10000N F.DREF:	.BLKW	1	 F.DRNM:	.BLKW	1V 	.IF	DF,R$$11M F.FEXT:	.BLKW	1H 	.ENDC F.FVBN:	.BLKW	2. F.LKL:	.BLKW	1 F.LGTH:$ 	.ASECTE .=0B       W.CTL:	.BLKW	1 	WI.RDV=400C 	WI.WRV=1000 	WI.EXT=2000 	WI.LCK=4000 	WI.DLK=10000B 	WI.EXL=40000	 	WI.BPS=100000 	.IF	DF,R$$11M W.VBN:	.BLKB	1 W.WISZ:	.BLKB	1. 	.BLKW	1 W.FCB:	.BLKW	1 	.ENDC 	.IF	DF,R$$11D W.FCB:	.BLKW	1 W.STD:	.BLKW	1 W.VBN:	.BLKB	1 W.WISZ:	.BLKB	1. 	.BLKW	1 	.ENDC W.LKL:	.BLKW	1 W.RTRV:F 	.ASECT0 .=0F L.LNK:	.BLKW	1 L.WI1:	.BLKW	1 	.IF	DF,R$$11D L.STD:	.BLKW	1 L.VB1:	.BLKW	2 L.VB2:	.BLKW	2 L.CNT:	.BLKB	1 	.BLKB	1 	.IFFK L.VB1:	.BLKB	1 L.CNT:	.BLKB	1 	.      BLKW	1 	.ENDC L.LGTH:D 	.PSECTW 	.MACRO	F11DF$ 	.ENDM	F11DF$C 	.ENDM	F11DF$=     fM        	.MACRO	HDRDF$,L,B 	.ASECT, .=0M H.CSP:'L'.BLKW	1 H.HDLN:'L'.BLKW	1. H.EFLM:'L'.BLKW	2W H.CUIC:'L'.BLKW	1, H.DUIC:'L'.BLKW	1W H.IPS:'L'.BLKW	1 H.IPC:'L'.BLKW	1 H.ISP:'L'.BLKW	1 H.ODVA:'L'.BLKW	1. H.ODVL:'L'.BLKW	1V H.TKVA:'L'.BLKW	1  H.TKVL:'L'.BLKW	1I H.PFVA:'L'.BLKW	1, H.FPVA:'L'.BLKW	1W H.RCVA:'L'.BLKW	1  H.EFSV:'L'.BLKW	1N H.FPSA:'L'.BLKW	11 H.WND:'L'.BLKW	1 H.DSW:'L'.BLKW	1 H.FCS:      'L'.BLKW	1 H.FORT:'L'.BLKW	1S H.OVLY:'L'.BLKW	1$ H.VEXT:'L'.BLKW	1. H.SPRI:'L'.BLKB	1  H.NML:'L'.BLKB	1 H.RRVA:'L'.BLKW	1C 	.BLKW	3 H.GARD:'L'.BLKW	1. H.NLUN:'L'.BLKW	1. H.LUN:'L'.BLKW	2 .=0C W.BPCB:'L'.BLKW	1C W.BLVR:'L'.BLKW	1: W.BHVR:'L'.BLKW	1L W.BATT:'L'.BLKW	1. W.BSIZ:'L'.BLKW	1B W.BOFF:'L'.BLKW	1B W.BFPD:'L'.BLKB	1B W.BNPD:'L'.BLKB	1B W.BLPD:'L'.BLKW	1B
 W.BLGH:'L' 	.PSECTK 	.MACRO	HDRDF$	X,Y 	.ENDM 	.ENDM     äM        	.MACRO HWDDF$,L,B MPCSR='B'177746L MPAR='B'172100       PIRQ='B'177772 PR0='B'0	 PR1='B'40Y
 PR4='B'200
 PR5='B'240
 PR6='B'300
 PR7='B'340 PS='B'177776 SWR='B'177570A TPS='B'177564. 	.IF DF	E$$EAE AC='B'177302 MQ='B'177304 SC='B'177310 	.ENDC 	.IF DF	M$$MGE KDSAR0='B'172360 KDSDR0='B'172320 KISAR0='B'172340 KISAR5='B'172352 KISAR6='B'172354 KISAR7='B'172356 KISDR0='B'172300 KISDR6='B'172314 KISDR7='B'172316 SISDR0='B'172200 UDSAR0='B'177660 UDSDR0='B'177620 UISAR0='B'177640 UISAR4='B'177650 UISAR5='B'177652 UISAR6='B'177654 UISAR7='      B'177656 UISDR0='B'177600 UISDR4='B'177610 UISDR5='B'177612 UISDR6='B'177614 UISDR7='B'177616 UBMPR='B'170200A CMODE='B'140000  PMODE='B'30000 SR0='B'177572Q SR3='B'172516' 	.ENDC FE.EXT='B'1F FE.MUP='B'2D FE.EXV='B'40 FE.DRV='B'10 FE.PLA='B'20 FE.CAL='B'40 FE.PKT='B'100I FE.EXP='B'200  FE.LSI='B'4006 FE.CEX='B'200000 FE.MXT='B'400004 FE.NLG='B'100000 	.MACRO	HWDDF$	X,Y 	.ENDM 	.ENDM     M        	.MACRO	ITBDF$	L,B,SYSDEF' 	.IF DF	A$$TRP 	.MCALL	PKTDF$ 	PKTDF$6 	.ENDC 	.      ASECT6 	.=0 X.LNK:'L' .BLKW	1D X.JSR:'L' JSR	R5,@#0 X.PSW:'L' .BLKB	1' 	.BLKB	1 X.ISR:'L' .BLKW	1P
 X.FORK:'L' 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.IF DF	M$$MGE X.REL:'L' .BLKW	1  	.ENDC X.DSI:'L' .BLKW	1  X.TCB:'L' .BLKW	1V 	.IF NB	SYSDEF 	.IF DF	A$$TRP 	.BLKW	1 X.AST:'L' .BLKB	A.PRM  	.ENDC X.VEC:'L' .BLKW	1' X.VPC:'L' .BLKW	10	 X.LEN:'L'G 	.ENDC 	.PSECTR .MACRO	ITBDF$	X,Y,Z  .ENDM	ITBDF$ .ENDM	ITBDF$     M        	.MACRO	LBLDF$	L,B 	.ASECTL .=0D R$LNAM:'L'.BLKW	2C R$      LSA:'L' .BLKW	1. R$LHGV:'L'.BLKW	1. R$LMXV:'L'.BLKW	1  R$LLDZ:'L'.BLKW	1  R$LMXZ:'L'.BLKW	1  R$LOFF:'L'.BLKW	1' R$LWND:'L'.BLKW	11 R$LSEG:'L'.BLKW	11 R$LFLG:'L'.BLKW	1. R$LDAT:'L'.BLKW	3. R$LSIZ:'L'.BLKW	0K LD$ACC='B'100000 LD$RSV='B'040000 LD$REL='B'000004 .=0. L$BTSK:'L'.BLKW	2B L$BPAR:'L'.BLKW	2  L$BSA:'L' .BLKW	1  L$BHGV:'L'.BLKW	1  L$BMXV:'L'.BLKW	1  L$BLDZ:'L'.BLKW	1B L$BMXZ:'L'.BLKW	1T L$BOFF:'L'.BLKW	1  L$BWND:'L'.BLKW	1. L$BSEG:'L'.BLKW	1. L$BFLG:'L'.BLKW	1M L$BDAT:'L'.BLK      W	3:! L$BLIB:'L'.BLKW	<7.*<R$LSIZ/2>>+1$ L$BPRI:'L'.BLKW	1$ L$BXFR:'L'.BLKW	1$ L$BEXT:'L'.BLKW	1$ L$BSGL:'L'.BLKW	1$ L$BHRB:'L'.BLKW	1$ L$BBLK:'L'.BLKW	1$ L$BLUN:'L'.BLKW	1$ 	.BLKW	<512.-.>/2$ L$BASG:'L'.BLKW	0D TS$PIC='B'100000 TS$NHD='B'040000 TS$ACP='B'020000 TS$PMD='B'010000 TS$SLV='B'004000 TS$NSD='B'002000 TS$NET='B'001000 TS$PRV='B'000400 TS$CMP='B'000200 TS$CHK='B'000100 TS$RES='B'000040 	.PSECT' 	.MACRO	LBLDF$	X,Y 	.ENDM 	.ENDM     ð M        	.MACRO	LCBDF$,L,B 	.ASECTK       .=0  L.LNK:'L' .BLKW 1* L.NAM:'L' .BLKW 1P L.UNIT:'L' .BLKB 1 L.TYPE:'L' .BLKB 1 L.UCB:'L' .BLKW	1S L.ASG:'L' .BLKW 1H L.LGTH='B'.-L.LNKB 	.PSECTK 	.MACRO	LCBDF$,X,Y 	.ENDM 	.ENDM     öM        	.MACRO	MTADF$,L,B 	.ASECT  .=0D V.TCNT:'L' .BLKW 1 V.NXT:'L' .BLKW 1' V.MVL:'L' .BLKW 10 V.UVL:'L' .BLKW 10 V.ATL:'L' .BLKW 10 V.UCB:'L' .BLKW 1  V.RVOL:'L' .BLKB 1 V.MOU:'L' .BLKB 1R V.TCHR:'L' .BLKW 1 V.SEQN:'L' .BLKW 1 V.SECN:'L' .BLKW 1 V.TPOS:'L' .BLKB 1 V.PSTA:'L' .BLKB 1 V.TI      MO:'L' .BLKW 1 V.STS:'L' .BLKW 3: V.SPAR:'L' .BLKW 1 V.BLKL:'B' .BLKW 1 V.RECL:'B' .BLKW 1 V.FNAM:'L' .BLKW 3 V.FTYP:'L' .BLKW 1 V.FVER:'L' .BLKW 1 V.CDAT:'L' .BLKW 2 V.EDAT:'L' .BLKW 2 V.BLKC:'L' .BLKW 2 V.RTYP:'L' .BLKB 1 V.FATT:'L' .BLKB 1 V.WIND:'L' .BLKW 6 S.VSCB=. 	.PSECT: 	.ASECT  .=0. 	W.CTL:	.BLKW 1  	V.WINC=V.WIND+W.CTL 	.PSECTB 	.ASECT. .=0' 	.IF	DF	R$$11M M.NXT:'L' .BLKW 1C 	.ENDC M.UIC:'L' .BLKW 1. M.CH:'L' .BLKW 1 M.PROT:'L' .BLKW 1 	.IF	NDF	R$$11M'	 		.BLKW 2  M.      NXT:'L' .BLKW 1  	.ENDC M.RVOL:'L' .BLKB 1 M.STAT:'L' .BLKB 1 M.VIDP:'L' .BLKW 1 M.UCB:'L' .BLKW 1' S.MVL=.3 	.PSECT' 	.ASECT1 .=0V L.NXT:'L' .BLKW 1D L.VOL1:'L' .BLKB 1 L.VOL2:'L' .BLKB 1 L.VID1:'L' .BLKB 6 L.VID2:'L' .BLKB 6 S.UVL=.L 	.PSECTI VM.OLD	='B'	200. VM.BYP	='B'	100  VM.ULB	='B'	40 VM.FSC	='B'	20 VM.EXC	='B'	10 VP.RM	='B'	2 VP.WM	='B'	4 VP.SM	='B'	10$ VP.MOU	='B'	20 VP.RWD	='B'	40 VP.VFY	='B'	VP.RWD VP.POS	='B'	1001 	VP.TO=1 WI.RDV	='B'	400N WI.WRV	='B'	1000 WI.EXT      	='B'	2000 WI.LCK	='B'	4000 MS.VER	='B'	200  MS.RID	='B'	1B MS.NMO	='B'	2. MS.TMO	='B'	4L MS.EXP	='B'	10 MO.OVR	='B'	1  MO.UIC	='B'	2  MO.PRO	='B'	4  MO.160	='B'	10 	.ENDM     @M        	.MACRO	PCBDF$	L,B,SYSDEF2 	.ASECTB .=0. P.LNK:'L'.BLKW	1 P.PRI:'L'.BLKB	1 P.IOC:'L'.BLKB	1 P.NAM:'L'.BLKW	2 P.SUB:'L'.BLKW	1 P.MAIN:'L'.BLKW	1' 	.IF NB	SYSDEF 	.IF NDF	M$$MGE$	 P.HDR:'L'B 	.ENDC 	.IFTF P.REL:'L'.BLKW	1
 P.BLKS:'L' P.SIZE:'L'.BLKW	1O P.WAIT:'L'.BLKW	1N P.SWSZ:'L'.BLKW	1  P.BU      SY:'L'.BLKB	2I	 P.OWN:'L'0 P.TCB:'L'.BLKW	1 P.STAT:'L'.BLKW	1  	.IFT= 	.IF DF	M$$MGE P.HDR:'L' .BLKW 1	 	.ENDC P.PRO:'L' .BLKW 1= P.ATT:'L' .BLKW 2	 	.IF NDF	P$$LAS0 P.LGTH='B'P.PRO  	.IFF  P.LGTH='B'.D 	.ENDC 	.IFF  	.PSECT  PS.OUT='B'100000 PS.CKP='B'40000L PS.CKR='B'20000L PS.CHK='B'10000L PS.FXD='B'4000 PS.PER='B'2000 PS.LIO='B'1000 PS.NSF='B'400F PS.COM='B'200. PS.PIC='B'100C PS.SYS='B'40 PS.DRV='B'20 PS.DEL='B'10 PS.APR='B'7	 	.ASECTT .=0B A.PCBL:'L'.BLKW	1B A.PRI:'L'.      BLKB	1 A.IOC:'L'.BLKB	1 A.TCB:'L'.BLKW	1 A.TCBL:'L'.BLKW	1	 A.STAT:'L'.BLKB	1	 A.MPCT:'L'.BLKB	1B A.PCB:'L'.BLKW	1 A.LGTH='B'.  	.PSECT: AS.DEL='B'10 AS.EXT='B'4A AS.WRT='B'2' AS.RED='B'1  	.ENDC 	.MACRO	PCBDF$	X,Y,Z 	.ENDM 	.ENDM     $M        	.MACRO	PKTDF$,L,B,SYSDEF0 	.ASECTK .=177774 A.KSR5:'L' .BLKW 1 A.DQSR:'L' .BLKW 1 	.BLKW	1 A.CBL:'L' .BLKW	1C A.BYT:'L' .BLKW	1' A.AST:'L' .BLKW	10 A.NPR:'L' .BLKW	1D A.PRM:'L' .BLKW	1' 	.ASECTC .=0= I.LNK:'L' .BLKW	1	 I.PRI:'L' .B      LKB	11 I.EFN:'L' .BLKB	1  I.TCB:'L' .BLKW	1. I.LN2:'L' .BLKW	1. I.UCB:'L' .BLKW	1. I.FCN:'L' .BLKW	1. I.IOSB:'L' .BLKW	1 	.BLKW	1 	.BLKW	1 I.AST:'L' .BLKW	1T I.PRM:'L' .BLKW	1' 	.BLKW	6 	.BLKW	1 I.ATTL='B'.C I.LGTH='B'.. 	.PSECTN 	.MACRO	PKTDF$	X,Y,Z 	.ENDM 	.ENDM     üM        	.MACRO	SCBDF$,L,B,SYSDEFL 	.ASECTQ .=177772 S.RCNT:'L' .BLKB 1 S.ROFF:'L' .BLKB 1 S.BMSV:'L' .BLKW 1 S.BMSK:'L' .BLKW 1 S.LHD:'L' .BLKW	2R S.PRI:'L' .BLKB	1S S.VCT:'L' .BLKB	1L S.CTM:'L' .BLKB	1L S.      ITM:'L' .BLKB	1L S.CON:'L' .BLKB	1L S.STS:'L' .BLKB	1L S.CSR:'L' .BLKW	1L S.PKT:'L' .BLKW	1L S.FRK:'L' .BLKW	1' 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.IF NB	SYSDEF 	.IF DF	L$$DRV & M$$MGE  	.BLKW	1 	.ENDC	 S.CCB:'L'' S.MPR:'L' .BLKW	6. 	.IFF  	.PSECTK SP.EIP='B'1. SP.ENB='B'2  SP.LOG='B'4  SPARE=10 	.ASECTL .=0S M.LNK:'L'  .BLKW 1 M.UMRA:'L' .BLKW 1 M.UMRN:'L' .BLKW 1 M.UMVL:'L' .BLKW 1 M.UMVH:'L' .BLKB 1 M.BFVH:'L' .BLKB 1 M.BFVL:'L' .BLKW 1 M.LGTH='B'.L 	.ENDC 	.PSECT: 	.MACRO	SCBDF$      ,X,Y,Z 	.ENDM 	.ENDM     6M        	.MACRO	TCBDF$,L,B,SYSDEF  	.ASECT  .=0: T.LNK:'L' .BLKW	1: T.PRI:'L' .BLKB	1W T.IOC:'L' .BLKB	1W T.CPCB:'L' .BLKW 1 T.NAM:'L' .BLKW	2$ T.RCVL:'L' .BLKW 2 T.ASTL:'L' .BLKW 2 T.EFLG:'L' .BLKW 2 T.UCB:'L' .BLKW	1P T.TCBL:'L' .BLKW 1 T.STAT:'L' .BLKW 1 T.ST2:'L' .BLKW 1S T.ST3:'L' .BLKW 11 T.DPRI:'L' .BLKB 1 T.LBN:'L' .BLKB	31 T.LDV:'L' .BLKW	11 T.PCB:'L' .BLKW	11 T.MXSZ:'L' .BLKW 1 T.ACTL:'L' .BLKW 1 T.ATT:'L' .BLKW 2N T.OFF:'L' .BLKW 1R 	.BLKB       1 T.SRCT:'L' .BLKB 1 T.RRFL:'L' .BLKW 2 	.IF NB	SYSDEF 	.IF NDF	P$$LASC T.LGTH='B'T.ATTL 	.IFF	 T.LGTH='B'.  	.ENDC
 T.EXT='B'0 	.IFFW TS.EXE='B'100000 TS.RDN='B'40000K TS.MSG='B'20000. TS.NRP='B'10000' TS.RUN='B'4000 TS.OUT='B'400. TS.CKP='B'200P TS.CKR='B'100L: TS.BLK='B'TS.CKP!TS.CKR!TS.EXE!TS.MSG!TS.NRP!TS.OUT!TS.RDN T2.AST='B'100000 T2.DST='B'40000  T2.CHK='B'20000L T2.CKD='B'10000: T2.BFX='B'4000 T2.FXD='B'2000 T2.TIO='B'1000 T2.CAF='B'400  T2.HLT='B'200: T2.ABO='B'100. T2      .STP='B'40 T2.STP='B'20 T2.SPN='B'10 T2.SPN='B'4	 T2.WFR='B'2N T2.WFR='B'1. T3.ACP='B'100000 T3.PMD='B'40000  T3.REM='B'20000B T3.PRV='B'10000E T3.MCR='B'4000 T3.SLV='B'2000 T3.CLI='B'1000 T3.RST='B'400' T3.NSD='B'2000 T3.CAL='B'100. T3.ROV='B'40 T3.NET='B'20 	.ENDC 	.PSECTS 	.MACRO	TCBDF$	X,Y,Z 	.ENDM 	.ENDM     œM        	.MACRO	UCBDF$,L,B 	.ASECT2 .=177774 U.LUIC:'L' .BLKW 1 U.OWN:'L' .BLKW 1  U.DCB:'L' .BLKW	1T U.RED:'L' .BLKW	1' U.CTL:'L' .BLKB	10 U.STS:'L' .BLKB	1        U.UNIT:'L' .BLKB 1 U.ST2:'L' .BLKB	10 U.CW1:'L' .BLKW	1W U.CW2:'L' .BLKW	1' U.CW3:'L' .BLKW	10 U.CW4:'L' .BLKW	1  U.SCB:'L' .BLKW	13 U.ATT:'L' .BLKW	1M U.BUF:'L' .BLKW	1' 	.BLKW	1 U.CNT:'L' .BLKW	1T U.ACP='B'U.CNT+2 U.VCB='B'U.CNT+4 U.CBF='B'U.CNT+2 U.UIC='B'U.CNT+<9.*2>  	.PSECT  DV.REC='B'1$ DV.CCL='B'2M DV.TTY='B'4  DV.DIR='B'10 DV.SDI='B'20 DV.SQD='B'40 DV.MXD='B'100U DV.UMD='B'200  DV.SWL='B'1000 DV.ISP='B'2000 DV.OSP='B'4000 DV.PSE='B'10000: DV.COM='B'20000T DV.F11='B'4000      0. DV.MNT='B'100000 U2.DH1='B'100000 U2.DJ1='B'40000	 U2.RMT='B'20000K U2.L8S='B'10000B U2.NEC='B'4000 U2.CRT='B'2000 U2.ESC='B'1000 U2.LOG='B'400	 U2.SLV='B'200B U2.DZ1='B'1001 U2.HLD='B'40 U2.AT.='B'20 U2.PRV='B'10 U2.L3S='B'44 U2.VT5='B'2C U2.LWC='B'1B U2.R04='B'100000 U2.7CH='B'10000' UC.ALG='B'200M UC.NPR='B'100  UC.QUE='B'40 UC.PWF='B'20 UC.ATT='B'10 UC.KIL='B'4U UC.LGH='B'30 US.BSY='B'2000 US.MNT='B'1000 US.FOR='B'40 US.MDM='B'20 US.PWF='B'10 US.ABO='B'1  US.MDE='B'20       US.WCK='B'10 US.SPU='B'21 US.DSB='B'10 US.CRW='B'4	 US.ECH='B'20 US.OUT='B'1' US.FRK='B'2N US.SHR='B'12 US.LAB='B'4  US.BSP='B'20 US.OFL='B'10 US.RED='B'2' US.PUB='B'4' US.UMD='B'10 	.MACRO	UCBDF$,X,Y 	.ENDM 	.ENDM                 T5='B'2C U2.LWC='B'1B U2.R04='B'100000 U2.7CH='B'10000' UC.ALG='B'200M UC.NPR='B'100  UC.QUE='B'40 UC.PWF='B'20 UC.ATT='B'10 UC.KIL='B'4U UC.LGH='B'30 US.BSY='B'2000 US.MNT='B'1000 US.FOR='B'40 US.MDM='B'20 US.PWF='B'10 US.ABO='B'1  US.MDE='B'20          	@~^› 8$     ’    	@~    ¨À     ¯”L      (  
­D"(8  i©€‰h Ýª Kh  ¯”    
­D"     &æ  
 †€m ¡ Î
øæ f
ÀA & N ‡ã€
ö
 ÷–%‡  ’          &aT^› 8$         ƒ,d    vÀ›½   ¯”L      (  
­D"(  a³ˆZh  ¯”    
­D"     ± ðµ =  p! †Õ•^ ú‡   K	VN    wÀ[Ð   ¯”L  s©À@  °s@   ù±oŒ@  c³Ü@      (  
­D"(¸ ;¯VNh   a³VNh ¯”    
­D"     w	  fB C 	œ" ¦æ&æÿˆ	‡÷	l  ù±oŒ & †Â  ÃSYîð  * ‡ Å° p0 p2  s©À L q 1 0Š= ðµ   f&
&Îe< ð < æ r ƒ
Á ÷	  Æe ð < ð• * ‡ Á  Áe c³Ü&°s ˜  œ" f¦æÿˆ‡DC’B A ‡   ¯ˆw    wÀøÊ   ¯”L  °s@  ù±oŒ@   a³ˆZ@  b³—G      @  f³Ð@  i³‚@  q³¯:@   r³"&@  w³·€@      (  
­D"(Ð „¯½`h   ¯”    
­D"     w	  ð * 8 w ´ ðµ  ðµ ) ÷	 ù±oŒ &   ðµ   ð¥   ÷	  †øÿÿ  Bà b³—Ga³ˆZ L ÷	  &œ* ÷	  
„&
ðµ # ðµ!  ðµ  w³·€i³‚ r ) &ÎeP æÂ  Âe Ê¦æðµ #  °s ˜ &æ•&Ä ð> €Åe > ÍE €÷	   (q³¯: ¾ †•p* ÷	  w    r³"&f³Ð  •e	    wÀ›½   ¯”L  °s@  f³Ð@   i³‚@  q³¯:@      (  
­D"(¤ c³Iqh   ¯”    
­D"     ðµ  Gðµ       = ðÕ  fÂ  &
Âe
 Ê%  °s & ÿÿ¦æ&æ&ÎeH æ
ðµ   &Îe L 0 æ÷	  U•
 Â …ÃÂE • i³‚ r Õð> €> ÍE €fÄ ÷	  p  †ñ q³¯: ˜   ±
  w    f³Ð  zÌ    vÀÊ   ¯”L  i³‚@  q³¯:@       (  
­D"(H e³²Zh  f³t:h r³®Sh  ¯”    
­D"     Ä Ä Ä 	ðµ  f÷	  ð> €5  i³‚ & >  õE € u
 ÷	  ‡ ñ  ±
  ‡  q³¯:  œ,      wÀÊ   ¯”L  ù±oŒ@  e³&@   f³Ð@  m³oŒ@  p³J,@  p³—y@  r³Þ@   r³ü@      (  
­      D"(ð° }h  ¯”    
­D"     w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C  ù±oŒ
p³J, r³ü &  ÷	ð¥öÿ* 	ð ð * ðÕ ) w    (f³Ð L ð•öÿ* úðµ  ÷	  ó‡÷	j÷	d÷	  ë‡ p³—y&e³& r ðe  p  p  ‡÷	Þ‡ ð¥   # ˜ ðµ = Ä 
E”W¡9 ƒÅ¥^ éð•³ÿ* ÆÅå ¾ 0 ùÃÅ`ÃÃCaÄ
ëÃå Cƒ
ÔÃðµ ä   ÷	Ø ð¥   ð 0 Äð•Øÿ* ¡ð¥  
  æÂe@ Ã Îà÷	€ ƒ’‡÷	 ‡ðµ =  0
ÁE p …ðµ  ÷	| ð p  V °  æÄ ð Îà÷	, ƒƒ÷	J  |á÷	 ù†      ð•Øÿ* Á`‡ æ÷	  ƒ ‡ æ r³Þ ¢ Càƒ#ƒÎà÷	  Î¦÷	Ôÿ‚ð†–
‡  m³oŒ È DàÄ ‡ ðµ@ ) ð
6 ðÿ? 0  ðÅD )  î‡   œ,hy    wÀÊ   ¯”L  ù±oŒ@  e³&@   f³Ð@  m³oŒ@  p³K,@  r³ü@  s³k@       (  
­D"(è°	€h  ¯”    
­D"     w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C  ù±oŒ
p³K, r³ü &  ÷	ü ð¥öÿ* 	ð ð * ðÕ ) w    (f³Ð L ð•öÿ* ú÷	p÷	  õ‡ðe  p  p  ‡ e³& r ÷	è‡ ð¥   #ðµ = Ä 
E”W¡9  ˜ ƒÅ¥^ éð•³ÿ* ÐÅå0 ùÃÅ`ÃÃCaÄ
ëÃå       ¾  Cƒ
ÔÃðµ  ÷	ä ð¥    ä ð 0 Äð•Øÿ* «ð¥   æÂe@ Ã Îà÷	 
Œ ƒœ‡÷	 ™‡ðµ = 
ÁE p ðµ   0÷	ˆ ð p  °  æÄ  Vð Îà÷	8 ƒƒ÷	V á÷	 ù†ð•Øÿ* Á` |‡ ðµ ) w   æ÷	  ƒ ‡ æ Càƒ# s³kr³ü ¢ƒÎà÷	  Î¦÷	Èÿ‚ð†–
‡  DàÄ ‡  m³oŒ Èðµ@ ) ð
6 ðÿ? 0  ðÅD ) ‡   E`€W    xÀ¸Ý   ¯”L  ¡«@  °s@   ù±oŒ@  b³Ó@  c³Iq@  d³?!@  e³²Z@   f³Ð@  f³t:@  f³y:@  i³‚@  m³lE@   q³¯:@  r³"&@  r³®S@  r³,}@        r³ë@   s³þ}@      (  
­D"(h±p!h  ¯”    
­D"     w	  Á  w ñB ÷	  ð8 w úðµðÿ ù±oŒ
°sf³y: &  w ,ðµ # ðµ  ðµôÿ w œ L   Ä¥ †w øÄ
0
 ð * 0
 0
 0
 r  ð 
 0
 0
4 0
6 ðÅÿ) ÷	  ‡÷	`ñ  s³þ} ˜   Tðµ # ÷	  ‡Lðµ   ð¥    f³t: ¾  ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0  ä p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  †ðµ 
c³Iq$e³²Z 
@ # ð¥Çÿ* ð * ff f ÷	  ±  $d³?! 0± ‰‡÷	  †
w ò ðµ  ð  8 ðe$  e³²Z"°s       V8 2 &À  Áe ÷	  €Z‡p8 q
 ÷	 °s¡« |ì V‡0
 ð  ðµ  #0  0  œ   ¢Ä¥ ‚‡œA Ä¥ ÄŠð ð•    È00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ* 0
@  r³,} î÷	  „ðµ # &
&æµ &Ä ÷	  † i³‚&q³¯: ‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ*  r³"& :ÁeB Â÷	  ÷	  °•* âð•Õÿ* äð•Ôÿ*  r³®Sm³lE `àð•Óÿ* Üðµ  w P÷	  ÕeB Æå
 • i³‚ †Åe > Ä €…
ðµ  # ÍÕ Ä ðµ  ¬# Ä DÃÍÅ ÑÄ ðµ # Ä ðµ    ÒðµH # ÍÕ@ …& 0
       ðµ # Õü ø Õ÷
 
÷	  ‡0 @ ° Æe
  q³¯: Ei‡°
6 ðµ   ðÿ ðµ # ð 
 ðµ D@ # ðÿ? ðµ@ # 0 4 0
 6 ðµ   jBðµ # :ðµ   ðµA # 	ðÕ@ ) 0
 ð  
 )÷	  †æ ð¥öÿ* * ÷	:þ°*  r³ë ¶ðµ@ # 0l  ðµ # 	ð•   ð•  0 Ü2  ðµ  8 ÷	  ÷	  ‡  ðµ!   b³Óf³Ð ðµ   p0 p2 ‡   F`à8    xÀ¸Ý   ¯”L  ¡«@  °s@   ù±oŒ@  a³VN@  b³Ó@  f³Ð@  f³y:@   i³‚@  q³¯:@  r³"&@  r³,}@  r³ë@       (  
­D"(jh±      ì&h  ¯”    
­D"     w	  Á  w zñB ÷	  ð8 w rðµðÿ ù±oŒ
°sf³y: &  w €ðµ # ðµ  ðµôÿ w lœ L   Ä¥ †w LÄ
0
 ð * 0
 0
 0
 r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  † &a³VN ˜ w ò ÷	ªñ  ðµ  w ì ±
  ðµ   ¾ ð  8 ðe$ 8 2 &À  Áe ÷	  €R‡ °s°s"¡« ä p8 q
 ÷	Î N‡0
 ð  ðµ  #0   
0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð 0 ð•   00  0  ÷	  0
@ ‡ ÷	 ð• r³,} VÕÿ* 0
@ ÷	  „ðµ # &
&æµ & i³‚       |Ä ÷	  †‡ ð•Ùÿ* ÷	  ð•Ëÿ* ± ‡ ð•Äÿ 
q³¯:r³"& ¢* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ  w  ÈP÷	  ÕeB Æå
 •Åe > Ä €…
ðµ i³‚ î  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ  ðµ # Ä ðµ   ðµH # ÍÕ@ …&  :0
 ðµ # Õü Õ÷
 
÷	   (q³¯: `‡0 @ ° Æe
 Ei‡°
6 ðµ   ðÿ † ðµ # ð 
 ðµ@ # ðÿ? ðµ@ #  ¬0 4 0
 6 ðµ  Bðµ # :ðµ   ðµ ÒA # 	ðÕ@ ) 0
 ð 
 )÷	  †æ ð¥öÿ r³ë ø* * ÷	Xþ°* ðµ@ # 0l  ðµ  # 	ð•         ð•  02  ðµ  8 ÷	   (b³Ó D÷	  ‡  ðµ!  ðµ   p0 p2 ‡  f³Ð  F`ÐW    xÀ¸Ý   ¯”L  ¡«@  °s@   ù±oŒ@  a³VN@  b³Ó@  c³Iq@  d³?!@   e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@   m³lE@  q³¯:@  r³"&@  r³®S@  r³,}@   r³ë@      (  
­D"(h±²'h  ¯”    
­D"     w	  Á  w ñB ÷	  ð8 w  ðµðÿ ù±oŒ
°sf³y: &  w 2ðµ # ðµ  ðµôÿ w œ L   Ä¥ †w þÄ
0
 ð * 0
 0
 0
 r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  ‡ &a³VN ˜ ÷	      `ñ  Tðµ # ÷	  ‡Lðµ   ð¥  f³t: ¾    ×  †ð•Øÿ* w F
Å`p!2 ü‡Åà ä Åp0 p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	 c³Iq 
  †ðµ@ # ð¥Çÿ* ð * ff f ÷	 e³²Z 0  ± ± ‰‡÷	  †
w ò ðµ  ð   d³?!e³²Z(°s V8 ðe$ 8 2 &À  Áe ÷	  €Z‡p8  °s¡« |q
 ÷	ì V‡0
 ð  ðµ  #0  0  ¢ œ  Ä¥ ‚‡œA Ä¥ ÄŠð  Èð•   00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ*  r³,} î0
@ ÷	  „ðµ # &
&æµ &Ä  i³‚ ÷	  †‡ ÷	  ð•Ëÿ*       ± ‡ ð•Ùÿ* ðµ # ñ q³¯:r³"& :Â&œ* ÁeB Â÷	  ÷	  °•* âð•Õÿ* ä r³®Sm³lE `ð•Ôÿ* àð•Óÿ* Üðµ  w P÷	  ÕeB  "i³‚ †Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä ¬ ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä  Òðµ   ðµH # ÍÕ@ …& 0
 ðµ #  øÕü Õ÷
 
÷	  ‡0 @ °  q³¯: Æe
 Ei‡°
6 ðµ   ðÿ ðµ # ð D 
 ðµ@ # ðÿ? ðµ@ # 0 4 0
 6  jðµ  Bðµ # :ðµ   ðµA # 	ðÕ@ )  0
 ð 
 )÷	  †æ ð¥öÿ* * ÷	:þ r³ë ¶°* ðµ@ # 0l        ðµ # 	ð•   ð• Ü  02  ðµ  8 ÷	  ÷	  ‡   b³Ó f³Ð ðµ!  ðµ   p0 p2 ‡   af Z    vÀÊ   ¯”L  a³—K@  b³Ó@   c³Ü@  e³&@  e³&@  r³ë@  w³œ€@       (  
­D"(œ p³¿Zh  ¯”    
­D"     ðµ   ° 6 p 4 
 ì0 Á`p ÷	   (e³& & ‡ ÷	  ü‡æf¦ðµ ) ÷	  )‡ðµ   Á a³—Kw³œ€ L  

÷	  °6 °4 ðÕ@ ) ð 
 0
 8  c³Ü r ÷	  Ö‡ °6 °4 ÷	  °e ð‹* w   Æe  b³Ór³ë$e³& ˜ ± ‡   \g      wÀ›½   ¯”L  i©€‰@  ù±oŒ@   a³      ˆZ@  e³&@  f³Ð@  m³oŒ@  p³J,@   p³“y@  r³Þ@  r³,}@  r³ë@  w³™€@   w³·€@      (  
­D"(Ò•± }h  ¯”    
­D"     w	  ÷	  V‡ Pðµ  Q&
&
  B  ù±oŒ
p³J, & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ   L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv $m³oŒ r   Â	Š‚
ƒ“Šf÷	  ƒ  ß w³·€ ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@  r³,}$f³Ð ¾ ) ðµ  ÷	  †ð¥öÿ* ï0,  ÷	   p³“y(r³Þ ä ÷	°æ‡ðµ  
÷	  ‡ðÅ ) ð * ðÕ  e³& 
) ðµ  '
ð¥         Óðµ = Óð¥    0Ól ð 0 ¹l ð  ƒð¥   ÷	  † &a³ˆZ Vøÿÿ ÷	ô ª‡  ð¥   /ð  ð  |ð¥   Ãe &ðµ = Å BaÀ@aÁ
 ÷	 ¢  Áe0 bÅ
÷Âe Ò€ð¥   Áe@ Ã i©€‰ È ÷	˜ A‡  ÷	Š :‡ðµ = ‚
ÂE ° î ÷	¶ ðe  p ðÕ )  ì  ‡ðµ   ð¥   Ã% ÷	  †, 	ðµ   a³ˆZ :÷	 ÷	T ‡÷	  w hþw ^þ‡ ÷	  ‡÷	L † r³,} w³™€ `÷	  ‡ B æ ƒàƒ#ƒÎà÷	  Îf÷	 r³ë m³oŒ †Ìÿ î†–
‡ Â`‡ ð¥öÿ* ð * w   ±  &f³Ð ¬ðµ       ) 04  06 
  l0 ì ° ‡   \ghy    wÀ›½   ¯”L  i©€‰@  ù±oŒ@   a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³K,@   r³,}@  s³k@  w³™€@  w³·€@      (   
­D"(ž•±	€h  ¯”    
­D"     w	  ÷	  V‡ Pðµ  Q&
&
  B  ù±oŒ
p³K, & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ   L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv $m³oŒ r   Â	Š‚
ƒ“Šf÷	  ƒ  ß w³·€ ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@  r³,}$f³Ð ¾ ) 0,  w   ðµ  
÷	  ‡ðÅ ) ð s³ke³&       ä  * ðÕ ) ðµ  '
ð¥   Óðµ =  
Óð¥   Ól ð 0 Èl ð  ƒð¥    0÷	  †øÿÿ ÷	ð ¹‡  ð¥   /ð  a³ˆZ V ð ð¥   Ãe &ðµ = Å BaÀ |@aÁ
 ÷	  Áe0 bÅ
÷Âe Ò€ð¥    i©€‰ ¢Áe@ Ã ÷	” ?‡  ÷	† 8‡ðµ =  È‚
ÂE ° ÷	  ðe  p ðÕ )  ì  î‡ðµ  ð¥   Ã% ÷	  †
,   a³ˆZ ðµ  ÷	 ‡÷	  w Šþw €þ‡ ÷	  ‡÷	 r³,}$w³™€ :: †w   ‡ B æ ƒàƒ#ƒÎà÷	  Î 
s³k$m³oŒ `f÷	Ìÿ î†–
‡ Â`‡ ± ðµ ) 04         †06 
  l0 ì ° ‡   \qò    vÀÊ   ¯”L      (  
­D"(\  r³,}h  ¯”    
­D"     ðµ  ) ðµ  ð¥   ’¤ð¥    & ’¤ðµ = ’¤° 0  ð¥   0  l L  °  ƒ0  ‡   ;	Žf    vÀáØ   ¯”L  \±D@  ù±oŒ@      (  
­D"(` ;¯Ph  ¯”    
­D"     w	  ‚ Á
Ò¥[ Ä, ÷	 ‡æÄ] ÷	 ù±oŒ &  …
‡Ás‘ ‡ …¡Á
ü± ‡ Á
„DáÄ
 L w    \±D  
­D".  .   P  P ÷Å5 ÿôó‹ ñè  œ,      wÀbÌ   ¯”L  â)_G@  å)Ps@  î)Ôp@  ù±oŒ@  e³&@        f³Ð@  m³oŒ@  p³J,@  p³—y@  r³Þ@  r³ü@      (   
­D"(ð° }h  ¯”    
­D"     w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C  ù±oŒ
p³J, r³ü &  ÷	ð¥öÿ* 	ð ð * ðÕ ) w    (f³Ð L ð•öÿ* úðµ  ÷	  ó‡÷	j÷	d÷	  ë‡ p³—y&e³& r ðe  p  p  ‡÷	Þ‡ ð¥   # ˜ ðµ = Ä 
E”W¡9 ƒÅ¥^ éð•³ÿ* ÆÅå ¾ 0 ùÃÅ`ÃÃCaÄ
ëÃå Cƒ
ÔÃðµ ä   ÷	Ø ð¥   ð 0 Äð•Øÿ* ¡ð¥  
  æÂe@ Ã Îà÷	€ ƒ’‡÷	 ‡ðµ =  0
ÁE p …ðµ  ÷	| ð p        V °  æÄ ð Îà÷	, ƒƒ÷	J  |á÷	 ù†ð•Øÿ* Á`‡ æ÷	  ƒ ‡ æ r³Þ ¢ Càƒ#ƒÎà÷	  Î¦÷	Ôÿ‚ð†–
‡  m³oŒ È DàÄ ‡ ðµ@ ) ð
6 ðÿ? 0  ðÅD )  î‡   
­D"6  6 ðÕ   ð  ð    â)_Gî)Ôpå)Ps  ƒ  œ,h    vÀáØ   ¯”L  a³VN@      (  
­D"(j g³©}h  ¯”    
­D"     ð * ¦÷	  ‚'‡ðµ  ðµ  f f a³VN &  f
 f f þ	
 ± ± ±
 ± ±  L ñÿÿ ñÿÿ 1
 –
‡   
­D"4  4 ÷	*   b  b 1
 ~    œ,hy    wÀbÌ   ¯”      L  â)_G@  å)Ps@  î)Ôp@  ù±oŒ@  e³&@  f³Ð@  m³oŒ@  p³K,@  r³ü@  s³k@      (  
­D"(è °	€h  ¯”    
­D"     w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C  ù±oŒ
p³K, r³ü &  ÷	ü ð¥öÿ* 	ð ð * ðÕ ) w    (f³Ð L ð•öÿ* ú÷	p÷	  õ‡ðe  p  p  ‡ e³& r ÷	è‡ ð¥   #ðµ = Ä 
E”W¡9  ˜ ƒÅ¥^ éð•³ÿ* ÐÅå0 ùÃÅ`ÃÃCaÄ
ëÃå ¾  Cƒ
ÔÃðµ  ÷	ä ð¥    ä ð 0 Äð•Øÿ* «ð¥   æÂe@ Ã Îà÷	 
Œ ƒœ‡÷	 ™‡ðµ = 
ÁE p ðµ   0÷	ˆ       ð p  °  æÄ  Vð Îà÷	8 ƒƒ÷	V á÷	 ù†ð•Øÿ* Á` |‡ ðµ ) w   æ÷	  ƒ ‡ æ Càƒ# s³kr³ü ¢ƒÎà÷	  Î¦÷	Èÿ‚ð†–
‡  DàÄ ‡  m³oŒ Èðµ@ ) ð
6 ðÿ? 0  ðÅD ) ‡   
­D"6  6 ðÕ   ð  ð    â)_Gî)Ôpå)Ps  ƒ  E`€W    xÀ#ß   ¯”L  ¡«@  °s@  ù±oŒ@  b³Ó@  c³Iq@  d³?!@  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  m³lE@   q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@  s³þ}@      (  
­D"(vh±p!h  ¯”    
­D"     w	  Á  w       ñB ÷	  ð8 w úðµðÿ ù±oŒ
°sf³y: &  w ,ðµ # ðµ  ðµôÿ w œ L   Ä¥ †w øÄ
0
 ð * 0
 0
 0
 r  ð 
 0
 0
4 0
6 ðÅÿ) ÷	  ‡÷	`ñ  s³þ} ˜   Tðµ # ÷	  ‡Lðµ   ð¥    f³t: ¾  ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0  ä p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  †ðµ 
c³Iq$e³²Z 
@ # ð¥Çÿ* ð * ff f ÷	  ±  $d³?! 0± ‰‡÷	  †
w ò ðµ  ð  8 ðe$  e³²Z"°s V8 2 &À  Áe ÷	  €Z‡p8 q
 ÷	 °s¡« |ì V‡0
 ð  ðµ        #0  0  œ   ¢Ä¥ ‚‡œA Ä¥ ÄŠð ð•    È00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ* 0
@  r³,} î÷	  „ðµ # &
&æµ &Ä ÷	  † i³‚&q³¯: ‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ*  r³"& :ÁeB Â÷	  ÷	  °•* âð•Õÿ* äð•Ôÿ*  r³®Sm³lE `àð•Óÿ* Üðµ  w P÷	  ÕeB Æå
 • i³‚ †Åe > Ä €…
ðµ  # ÍÕ Ä ðµ  ¬# Ä DÃÍÅ ÑÄ ðµ # Ä ðµ    ÒðµH # ÍÕ@ …& 0
 ðµ # Õü ø Õ÷
 
÷	  ‡0 @ ° Æe
  q³¯: Ei‡°
6       ðµ   ðÿ ðµ # ð 
 ðµ D@ # ðÿ? ðµ@ # 0 4 0
 6 ðµ   jBðµ # :ðµ   ðµA # 	ðÕ@ ) 0
 ð  
 )÷	  †æ ð¥öÿ* * ÷	:þ°*  r³ë ¶ðµ@ # 0l  ðµ # 	ð•   ð•  0 Ü2  ðµ  8 ÷	  ÷	  ‡  ðµ!   b³Óf³Ð ðµ   p0 p2 ‡   
­D">  > ÷	Ô    †  † ÷	¤    Ø  Ø üƒ  Z Z÷	â  œ œ&* Î¥öÿw ®   Ô Ô÷	Ž      ðµôÿ ðµ  ðµ  ‡ ðÅÿ) ðÕ ) 0
 <@ ‡ 2 Á5 ‡ Öð•íÿ* w ¾ýÎ ðÕ )  bw Jÿðµ  ðÕ  ‡   F`à8          xÀ#ß   ¯”L  ¡«@  °s@  ù±oŒ@  a³VN@  b³Ó@  f³Ð@  f³y:@  i³‚@  q³¯:@  r³"&@  r³,}@  r³ë@       (  
­D"(Êh±ì&h  ¯”    
­D"     w	  Á  w zñB ÷	  ð8 w rðµðÿ ù±oŒ
°sf³y: &  w €ðµ # ðµ  ðµôÿ w lœ L   Ä¥ †w LÄ
0
 ð * 0
 0
 0
 r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  † &a³VN ˜ w ò ÷	ªñ  ðµ  w ì ±
  ðµ   ¾ ð  8 ðe$ 8 2 &À  Áe ÷	  €R‡ °s°s"¡« ä p8 q
 ÷	Î N‡0
 ð  ðµ  #0   
0        œ  Ä¥ ‚‡œA Ä¥ ÄŠð 0 ð•   00  0  ÷	  0
@ ‡ ÷	 ð• r³,} VÕÿ* 0
@ ÷	  „ðµ # &
&æµ & i³‚ |Ä ÷	  †‡ ð•Ùÿ* ÷	  ð•Ëÿ* ± ‡ ð•Äÿ 
q³¯:r³"& ¢* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ  w  ÈP÷	  ÕeB Æå
 •Åe > Ä €…
ðµ i³‚ î  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ  ðµ # Ä ðµ   ðµH # ÍÕ@ …&  :0
 ðµ # Õü Õ÷
 
÷	   (q³¯: `‡0 @ ° Æe
 Ei‡°
6 ðµ   ðÿ † ðµ # ð 
 ðµ@ # ðÿ? ðµ@ #  ¬0 4 0
       6 ðµ  Bðµ # :ðµ   ðµ ÒA # 	ðÕ@ ) 0
 ð 
 )÷	  †æ ð¥öÿ r³ë ø* * ÷	Xþ°* ðµ@ # 0l  ðµ  # 	ð•   ð•  02  ðµ  8 ÷	   (b³Ó D÷	  ‡  ðµ!  ðµ   p0 p2 ‡  f³Ð  
­D">  > ÷	(    †  † ÷	ø    Ì  Ì ÷	Ä  ð ð&* Î¥öÿw ®   ( (÷	Ž     j jðµôÿ ðµ  ðµ  ‡ ðÅÿ) ðÕ ) 0
 @ ‡ 2 Á5 ‡ Öð•íÿ* w âýÎ ðÕ )  ¶w Jÿðµ  ðÕ  ‡   F`ÐW    xÀ#ß   ¯”L  ¡«@  °s@  ù±oŒ@  a³VN@  b³Ó@  c³Iq@  d³?!@  e³²Z      @  f³Ð@  f³t:@  f³y:@  i³‚@   m³lE@  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@      (  
­D"(|h±²'h  ¯”    
­D"     w	  Á  w ñB ÷	  ð8 w  ðµðÿ ù±oŒ
°sf³y: &  w 2ðµ # ðµ  ðµôÿ w œ L   Ä¥ †w þÄ
0
 ð * 0
 0
 0
 r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  ‡ &a³VN ˜ ÷	`ñ  Tðµ # ÷	  ‡Lðµ   ð¥  f³t: ¾    ×  †ð•Øÿ* w F
Å`p!2 ü‡Åà ä Åp0 p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	 c³Iq 
  †ðµ@ # ð¥Çÿ* ð * ff f ÷	       e³²Z 0  ± ± ‰‡÷	  †
w ò ðµ  ð   d³?!e³²Z(°s V8 ðe$ 8 2 &À  Áe ÷	  €Z‡p8  °s¡« |q
 ÷	ì V‡0
 ð  ðµ  #0  0  ¢ œ  Ä¥ ‚‡œA Ä¥ ÄŠð  Èð•   00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ*  r³,} î0
@ ÷	  „ðµ # &
&æµ &Ä  i³‚ ÷	  †‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñ q³¯:r³"& :Â&œ* ÁeB Â÷	  ÷	  °•* âð•Õÿ* ä r³®Sm³lE `ð•Ôÿ* àð•Óÿ* Üðµ  w P÷	  ÕeB  "i³‚ †Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä       ¬ ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä  Òðµ   ðµH # ÍÕ@ …& 0
 ðµ #  øÕü Õ÷
 
÷	  ‡0 @ °  q³¯: Æe
 Ei‡°
6 ðµ   ðÿ ðµ # ð D 
 ðµ@ # ðÿ? ðµ@ # 0 4 0
 6  jðµ  Bðµ # :ðµ   ðµA # 	ðÕ@ )  0
 ð 
 )÷	  †æ ð¥öÿ* * ÷	:þ r³ë ¶°* ðµ@ # 0l  ðµ # 	ð•   ð• Ü  02  ðµ  8 ÷	  ÷	  ‡   b³Ó f³Ð ðµ!  ðµ   p0 p2 ‡   
­D">  > ÷	Ú    †  † ÷	ª    Þ  Þ üƒ  ` `÷	â  ¢ ¢&      * Î¥öÿw ®   Ú Ú÷	Ž      ðµôÿ ðµ  ðµ  ‡ ðÅÿ) ðÕ ) 0
 B@ ‡ 2 Á5 ‡ Öð•íÿ* w ¾ýÎ ðÕ )  hw Jÿðµ  ðÕ  ‡   \g      wÀâ¿   ¯”L  i©€‰@  ù±oŒ@  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³J,@  p³“y@  r³Þ@  r³,}@  r³ë@  w³™€@   w³·€@      (  
­D"(B•± }h  ¯”    
­D"     w	  ÷	  V‡ Pðµ  Q&
&
  B  ù±oŒ
p³J, & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ   L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv $m³oŒ r   Â	Š‚
ƒ“Šf÷	  ƒ  ß       w³·€ ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@  r³,}$f³Ð ¾ ) ðµ  ÷	  †ð¥öÿ* ï0,  ÷	   p³“y(r³Þ ä ÷	°æ‡ðµ  
÷	  ‡ðÅ ) ð * ðÕ  e³& 
) ðµ  '
ð¥   Óðµ = Óð¥    0Ól ð 0 ¹l ð  ƒð¥   ÷	  † &a³ˆZ Vøÿÿ ÷	ô ª‡  ð¥   /ð  ð  |ð¥   Ãe &ðµ = Å BaÀ@aÁ
 ÷	 ¢  Áe0 bÅ
÷Âe Ò€ð¥   Áe@ Ã i©€‰ È ÷	˜ A‡  ÷	Š :‡ðµ = ‚
ÂE ° î ÷	¶ ðe  p ðÕ )  ì  ‡ðµ   ð¥   Ã% ÷	  †,       	ðµ   a³ˆZ :÷	 ÷	T ‡÷	  w hþw ^þ‡ ÷	  ‡÷	L † r³,} w³™€ `÷	  ‡ B æ ƒàƒ#ƒÎà÷	  Îf÷	 r³ë m³oŒ †Ìÿ î†–
‡ Â`‡ ð¥öÿ* ð * w   ±  &f³Ð ¬ðµ ) 04  06 
  l0 ì ° ‡   
­D"   w ¶  ,  , w ¬    B  B ÷	¨  R  R ÷	¦  b  b ÷	²  p  p v   €  € ÷	¬  Ž  Ž    š  š ÷	ž  Ò Ò&
&
&
w @ýð 2 w LýÆe w Âýö•   ¶  ø ‡ v” Ã
ö¥$  ¶  ö•   ‡ Åà‚ö¥    ¶  ö ‡ ƒ ö•   ‡ Žw    &r³,}  \ghy    wÀâ¿   ¯      ”L  i©€‰@  ù±oŒ@  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³K,@  r³,}@  r³ü@  s³k@  w³™€@  w³·€@       (  
­D"(*•±	€h  ¯”    
­D"     w	  ÷	  V‡ Pðµ  Q&
&
  B  ù±oŒ
p³K, & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ   L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv $m³oŒ r   Â	Š‚
ƒ“Šf÷	  ƒ  ß w³·€ ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@  r³,}$f³Ð ¾ ) 0,  w   ðµ  
÷	  ‡ðÅ ) ð s³ke³& ä  * ðÕ ) ðµ  '
ð¥   Óðµ =  
Óð¥         Ól ð 0 Èl ð  ƒð¥    0÷	  †øÿÿ ÷	ð ¹‡  ð¥   /ð  a³ˆZ V ð ð¥   Ãe &ðµ = Å BaÀ |@aÁ
 ÷	  Áe0 bÅ
÷Âe Ò€ð¥    i©€‰ ¢Áe@ Ã ÷	” ?‡  ÷	† 8‡ðµ =  È‚
ÂE ° ÷	  ðe  p ðÕ )  ì  î‡ðµ  ð¥   Ã% ÷	  †
,   a³ˆZ ðµ  ÷	 ‡÷	  w Šþw €þ‡ ÷	  ‡÷	 r³,}$w³™€ :: †w   ‡ B æ ƒàƒ#ƒÎà÷	  Î 
s³k$m³oŒ `f÷	Ìÿ î†–
‡ Â`‡ ± ðµ ) 04   †06 
  l0 ì ° ‡   
­D"   w ‚  ,        , w x    B  B ÷	t  R  R ÷	r  b  b ÷	~  p  p v   €  € ÷	x  Ž  Ž    š  š ÷	j  È  È w B  ž ž&
&
&
w týð 2 w €ýÆe w öýö•   ¶  Ä ‡ v” Ã
ö¥$  ¶  ö•   ‡ Åà‚ö¥ ê   ¶  ö ‡ ƒ ö•   ‡ Žw   ÷	 &r³,}   †¬* öÿð * w ¦ýw    r³üf³Ð  t°y    vÀaÌ   ¯”L  °s@      (  
­D"(~ Ô±2&h  Ô±€&h, Ô±Ñ(h\ Ö±fahD œ²2&h œ²€&h6 œ²Ñ(hf ž²fahN ¯”    
­D"     Á  Áe( B A
‡ &À  Àe( H° 0
 °s°s &  €‡ Á     ö  A
 ‡ fÁ  ±
 ‡ Á  A  °s°s$°s L ‡ fÁ  ± ‡ Á  AB ‡ &À  pB Ù 
°s°s"°s  
­D"f  f &À  pB 0
< ðÿÿ( €‡  °s  ÷’¼    vÀá¿   ¯”L  a³[M@  b³Ó@  b³—G@  f³Ð@  w³¼@  w³t@  w³k@      (  
­D"(f w³™€h  w³œ€h  w³·€h  ¯”    
­D"     ÷	  ðµ ) ÷	  !‡f¦æ÷	  †ƒ‚„÷	 b³—Ga³[Mw³k &   	‡òÆe ðÅ ) ÷	  ðe 6 p4 ÷	  0ž w³tw³¼&b³Ó L 8 * ÷	  ‡  
f³Ð  
­D"   ÷	F   V  V ðµ  w   ÖÖ a³[M ö         M  ^› 8$         )Kx    ÏšÐ³   ¯”L  ¬8ã@  y:Î@   )Kz@  Ô°)d@      („ L;ãh  œwãh   ¯”             ÷	     1‡Ã  „Ì%  Æe  
#ô  Ö€ Ô°)d)Kzy:Î$¬8ã & ‚Â ‚3 
	óÿÿ ³ ŠÈ L ’Áó  s À …‡ ± W£  r õ%ÿÿ =
  
ó  )Kày    ÏšÑ³   ¯”L  ¬8@  ¬8> @   ¬8g'@  ¬8:;@  ¬8N@  ¬8ÖW@  ¬8¬„@   ¬8I†@  ¬8O†@      (.)Kàyh  ¯”             ¦  öe  ¦ &f¦æ&fƒ Ãå Äœ   $¬8:; (¬8O† & ö ³   óÅøÿ  ö%  ö%        
 ¬8¬„¬8¬„ L ‚Ý ¾  Áe,öå  ~ Gö D- r ó  &ó
  Có‹  €óÕ   ÁÁe  óœ  ¬8ÖW¬8ÖW¬8¬8g'$¬8(¬8O†  ˜   óÅøÿ  s’ Qœ Qœ Qœ 
Qœ Qœ Qœ  ¬8N
¬8N¬8O†  ¾ Qœ É•ÿÿö &ÁÁe  Ñ‹Ñ‹Ñ‹
Ñ‹Ñ‹ ¬8I† ä Ñ‹Ñ‹Ñ‹ !‘ÉÅøÿóµ   û	  	ó•@  ¬8g'"¬8>  
 Üæ  æ!ÿˆ…„ƒ‚€Æe æsÿˆ ¬8O† 
¬8>   +KcM    ÏšÐ³   ¯”L  ´:«@  1K> @   1K¹`@  1Kº`@  9K˜:@  ©ní]@  ©nŽ^@   ©n¾^@  ©nµ_@  ©nL`@  ©nº`@  Ô°)d@       (à ¯      yh  ¯zhb ¯”             ÷	    $‡÷   €ÀEøÿÀÀUA7  ÷ Ô°)d©nL`9K˜:"©nL` 9K˜: "     ÷    7
 ´:«©n¾^9K˜:
1K¹`©nº`9K˜: .   ÷    · ©ní]9K˜:1K> 
©nŽ^9K˜: 8   ÷•   €7’ ©nL` 9K˜:
©nµ_9K˜: H   æ  ÿˆ† 
Á	‡ À ù÷	    2‡÷ ©nµ_9K˜:9K˜: Ô°)d n    ÎÆe  
€ÀEøÿÀ·  ‡ÀU@  ©nL`9K˜:©nL` 9K˜: ” †ÀU  €
7  ÷    ÷ ©nL` 9K˜:´:«©n¾^9K˜: ª     7
  ÷   1Kº`      ©nº`9K˜:
©ní]9K˜:1K>  ¶   ÷•   €7’ ©nŽ^9K˜:©nµ_9K˜: Æ   æ  ÿˆ† 
Á	‡ À ù ©nµ_9K˜:9K˜:  +Kç_    ÏšÒ³   ¯”L  ¬8ã@  ¬8|@   ¬8Î@  ¬8> @  ¬8g'@  ¬8^2@  ¬8:;@   ¬85K@  ¬8ÖW@  ¬8O†@  $9¬@  y:Î@   ´:áy@  )Kày@  ,K> @  9K«:@  :K(@   ©ní]@  ©nŽ^@  ©n¾^@  ©nµ_@  ©nL`@   ©nº`@  s©À@      (Ú+Kç_h  ¯”             „€È%  È  Æe w À
7  ÷e   
y:Î$9¬,
 ©nº`9K«:$¬8:; "   Áe  w ÷  ©nº`9K«:      ¬8O†:K(  0     	·  · ©nµ_9K«:¬85K©nµ_9K«: > " ·$ ·& 7
" 7
$ 7
 :K(" :K($ :K(& :K(" :K($  T & · ð   ðÿÿ  ƒËð :K(& :K( :K( ¬8|¬8ÖW p   7œ   Áe  Å UUUUUUUUƒ1 ¬8ÖW¬8^2
:K( ¬8Î:K(  – ÅÅ5@ ÷U   Å5  ÷U    Å5 ÷U    :K(:K((:K( ¼ Å5  ÷U   Å5 ÷U   Å5 ÷U €  Å5 :K(:K(&:K( â  ÷U @  Å5 @÷Õ€  ƒ÷  ÷    :K(:K(  :K(  (:K(   ƒð    	ð  ùðÅ   Ë      %@ ðÕ   & 
,K> ¬8> ¬8> ¬8g'&¬8g' .  æÿˆ7Š  ƒ÷ ÷  ð%ÿÿ ¬8> ©nŽ^9K«::K( :K(  N  ÷•  7Š w’ ÷  w ¬8ã:K( :K( :K( :K(  p –%  · ·  ò%ÿÿ ·  ÷% :K( ¬8ã:K( :K( $:K(  –  ÷‹ ÷U   ÷U   ÷   :K( :K( :K(:K( ´:áy ´  ÷    ÷(  ©n¾^9K«:)Kày
©ní]9K«: À  ÷    æ ©nL` 9K«::K(
©nL`9K«: Ê  ÿˆ†È  
L  9K«:s©À  ,Ka	    ÏšÑ³   ¯”      L  ¬8ãH  ¬8|H(  ¬8ÎH@ ¬8H ¬8> H ¬8g'H ¬8^2H  ¬8«:H  ¬8:;H$ ¬85KH ¬8NH" ¬8ÖWH
  ¬8LyH ¬8RyH* ¬8¬„H ¬8I†H ¬8O†H  y:ÎHÛ6,K> H 1K> H     (z )Kzht  1K¹`h8 1Kº`h< 1KÈ`h@ 4Kp…h0 5KzxhD  9K˜:h 9K«:h  :K(hL ¯”                                            &            LA    l9Î    ÏšÐ³   ¯”L  ¬8|@  ¬8«:@   ¬8:;@  ¬8I†@      (  l9Îh  ¯”             A æcÿˆC  D ñ¥ÿÿ  .@œ  BÁe  Qœ ¬8:;¬8:; ¬8I† ¬8I†&¬      8I† &  Qœ Qœ Qœ Qœ Qœ Qœ É•ÿÿñ¥ÿÿ   (¬8I† L É q   Ã% ÷ñ  öñ  Ã% 	1 ¬8|¬8«: ¬8«: r  ÀÿÿÃ‹ô1
  1
 W£ õ%ÿÿ =  ¬8«: ¬8«:¬8«:  ˜ æeÿˆ‡   1KÎ    ÏšÑ³   ¯”L  ¬8Ly@  y:Î@       (~ œw–8h  ¯”             A“ÕBÒ  

DÁå .Á% +Í%ÿÿR y:Î & 
ÕR
ÒÿÒÿÿÒÿÿÒÿÿÒÿÿÒÿÿÒÿÿÒ L ÿÿÒÿÿ
ÒÿÿÒÿÿ


Âe  RÁ
ý€À  ¬8Ly r  
Ä%ÿÿ‡   5K‹x    ÏšÏ³   ¯”L  ¬
5…@  ¬
……@   4Kp…@  Ô°)d@      (` 5K‹xh        ¯”             ÷	   @ *‡€È 0
 0
 0
 H7   Ô°)d(¬
5…4Kp… & ‚·  7
  æ  ÿˆAp Ap 
¬
……4Kp…¬
……4Kp…4Kp… L  p p ‡   6K ™    ÏšÐ³   ¯”L  ¬8@  ¬8^2@       (j ˆ:V}h  ¯”             W# 0@ -B €,  (Áe æcÿˆ@¬   ¬8^2(¬8 & Á
B úB Cœ  Á
qœ   B úñ  À  ¬8¬8¬8 $¬8 L W# õ%ÿÿ = æeÿˆ‡  
ñ  :KøM    ÏšÐ³   ¯”L  ¬8@  ¬8g'@   ¬8^2@  ¬8O†@      („ srÎh  ¯”                   A“ÕBfCÃå 8Ã% 5ƒÄ Á
æcÿˆÁ
 & !@€,  ó¥ÿÿ  òµ   2 òÅ    ¬8^2¬8¬8g'"¬8O† (¬8g' L 3  Ä
ƒ
åÄ
ƒ
èÁ
 
À æe ¬8 r ÿˆÁ%ÿÿ	‡  
ø  žrÎ    ÏšÐ³   ¯”L  ¬8@      (P  žrÎh  ¯”             @ Àe  Â æcÿˆP¯ Â
ûÀ
Â
œ 
¬8 &  ûÈ•ÿÿÀ æeÿˆW£ õ%ÿÿ = ‡  L  
ñ  –8óy    ÏšÏ³   ¯”L  ¬8@  ¬8N@   ¬8I†@  ¬8O†@      († –8óyh  ¯”             A B C







Âå Áe        æc $¬8 & ÿˆ
É¥ÿÿD”Ä„`Ì öÁÁe  
É¥ÿÿD” ¬8I† L Ä„`Ì öÄœ ÄEøÿÄ„`ÌÌÿÿÄœ  ÄEøÿ ¬8O† $¬8N r Ä„`ÌÌÿÿæeÿˆ‡   ;K€    ÏšÒ³   ¯”L  ¬8g'@  ¬85K@   ¬8¬„@  ¬8O†@  ´:ðy@  1K> @  1KÈ`@   9K˜:@  ©ní]@  ©nŽ^@  ©n¾^@  ©nµ_@   ©nL`@  ©nº`@  Ô°)d@      (l ðyhzh   ¯”             ÷	    )‡€…	ÍðÅ   ðÕ@  "÷   Ô°)d¬8g'"¬8O† (´:ðy &   ÷•   ð  7ž   ©n¾^9K˜:
©nµ_9K˜:¬85K¬85K 8   ÷    7
 ©nµ_9K˜:1K> 
©n      Ž^9K˜: B   ÷    7
 ©ní]9K˜:1KÈ`
©nº`9K˜: L   7œ    æ  ÿˆ† 
…‡ À ù ©nL`9K˜:¬8¬„
©nL`9K˜:9K˜:  ;K@’    ÏšÐ³   ¯”L  +Kç_@  :K(@   Ô°)d@      (. ó@’h  ;@’h {@’h  k@’h ¯”             ÷   ÷‚   ÷   ÷š   ÷	  	 € :K(:K(:K( :K($Ô°)d & ‡÷	  ‡  +Kç_  ì;Î    ÏšÓ³   ¯”L  ¬8|@  ¬8«:@   ¬8:;@  ¬8I†@  ,K> @      (Ì ì;Îh   ¯”             W£ õ%ÿÿ B Â  A ñ‹  ñ¥ÿÿ ,K> "¬8:;       &   /æcÿˆC  D @œ  Áe  Qœ Qœ Qœ  ¬8I†¬8:;¬8:; ¬8I†¬8I† L Qœ Qœ Qœ Qœ É•ÿÿ¦æÿˆA ñ¥ÿÿ   (¬8I† r ñ   q   æeÿˆ¦æ)ÿˆÅW£  
¬8«:¬8|¬8«:  ˜ õ%ÿÿ = ‡ Ã% ñ  À%ÿÿâ1
 âÀ% ¬8«:$¬8«:  ¾ ÿÿÙñ  1 Ú 
¬8«:¬8«:   AG@    VÎ³   ¯”L      (H Ô°)dh   ¯”             ƒ„ÂÁ@“à‡&
Â
û‚
ÂBa¦ & Î%ÿÿ‡
À
õ¡ ± K   ¼Eü    VÎ³   ¯”L      (h t'`Çh   ü¯üh ¯”             @ ÷	       W£ B Â%ÿÿJ‡ &€&ÎE &  €ŠÎ Îe H€Î Š‡ &
Â 6Š A‡ L Â
üv ŠÐÁ 6Œ N€‡   NEæ    VÎ³   ¯”L      (| 1ðh  ¯”              B ÂEÿÏ@ 
Â ‚‚‚‚‚œ  Á $   & @Â
üÀÿÿC
PÀ€ÂU  €ÂÕ L   Á@‡Â
ûŠÐÁ  Š€ÐÀ Â ‚ W£  r B J‡   +Kç_    ÏšÓ³   ¯”L  ¬8ã@  ¬8|@  ¬8Î@  ¬8> @  ¬8g'@  ¬8^2@  ¬8:;@  ¬85K@  ¬8ÖW@  ¬8O†@  $9¬@  y:Î@   ´:áy@  )Kày@  ,K> @  9K«:@  :K(@  ©ní]@  ©nŽ^@  ©n¾^@  ©nµ_@        ©nL`@  ©nº`@  s©À@      (Ú+Kç_h  <d ($  ¯”             „€È%  È  Æe w À
7  ÷e   
y:Î$9¬,
 ©nº`9K«:$¬8:; "   Áe  w ÷  ©nº`9K«:¬8O†:K(  0     	·  · ©nµ_9K«:¬85K©nµ_9K«: > " ·$ ·& 7
" 7
$ 7
 :K(" :K($ :K(& :K(" :K($  T & · ð   ðÿÿ  ƒËð :K(& :K( :K( ¬8|¬8ÖW p   7œ   Áe  Å UUUUUUUUƒ1 ¬8ÖW¬8^2
:K( ¬8Î:K(  – ÅÅ5@ ÷U   Å5  ÷U    Å5 ÷U          :K(:K((:K( ¼ Å5  ÷U   Å5 ÷U   Å5 ÷U €  Å5 :K(:K(&:K( â  ÷U @  Å5 @÷Õ€  ƒ÷  ÷    :K(:K(  :K(  (:K(   ƒð    	ð  ùðÅ   Ë%@ ðÕ   & 
,K> ¬8> ¬8> ¬8g'&¬8g' .  æÿˆ7Š  ƒ÷ ÷  ð%ÿÿ ¬8> ©nŽ^9K«::K( :K(  N  ÷•  7Š w’ ÷  w ¬8ã:K( :K( :K( :K(  p –%  · ·  ò%ÿÿ ·  ÷% :K( ¬8ã:K( :K( $:K(  –  ÷‹ ÷U   ÷U   ÷   :K( :K     ( :K(:K( ´:áy ´  ÷    ÷(  ©n¾^9K«:)Kày
©ní]9K«: À  ÷    æ ©nL` 9K«::K(
©nL`9K«: Ê  ÿˆ†È  
L  9K«:s©À       ÷	  †             <d    <d      ðÅ   ×"@ ƒð  ¡ ‡ ð  ð    ± ‡  ¬8g'¬8> ¬8>  ,K> "¬8>           “M  ^› 8$         
Na    OŽ     ¯”L  lOp…@  d©°;@   m© …@  s©À@  ,«0z@  w°L	@      (Æ CØh  ó°t'hró°Õ±h¬²§Xh8 )²‹hö  ¯”             ÕBÂEÿÏ@ 
Â ‚‚‚‚‚œ4 Á@Â
  4  & üÀÿÿw > „Äe B‚Â 
C L ÌŒPCÃäE‚ ÷	’ <‡¤ƒ
 Ã‚ r  ‚Â ÂP¤ ¶  ‚W  '‡ƒ‹Óe  ˜ KÓe ‹Á
ÁK`“
Áå dËúÿä€_ Ì   (w°L	 ¾ däÃ  ä  $æÿˆ†Cfw Ð ‡ Í … 
,«0zlOp… ä  fæ!ÿˆÆe ± ‡ &4W  1†Áƒ
y  

( Â$À< ÷	H Àè÷	@ À
 ÷	8        
(
  0Æå €Á  &f  æÿˆÆe
 €Â ‚ ,«0zlOp… VÂ÷	  Á€‡ ± ü÷	  C‡ C
PÀ d©°;m© … |€ÂU  €ÂÕ  Á@‡Â
ûŠÐÁ  Š€ÐÀ  ¢Â ‚ ‡ Â  ƒŒƒ†Âe Ã‹± ‡  s©À  Nw:    OŽ     ¯”L  ´:ÌK@  ´:Tq@   ´:iw@  ´:ow@  ´:ðy@  E@  lOp…@   ,«0z@  w°L	@  ó°Õ±@  Ü²)d@      (Ô ê“Mhšé8€ph  ï8€phr ;€hÌK  hÜ  “M€h^\g h>Tq(
hÌ ¯”             ÷	    €‚&
&
Â‚Ã  &
&
&
&
&
 Ü²)d,«0z & æÿÿæ  ¦&
      æ  æ  æÿˆ‡À€  
w°L	lOp…´:iw L Ò¦æ …f÷	  Æe Á	CÆe w    E(ó°Õ± r ÷	    €Á„‚&
&
Â‚Ã  &
 Ü²)d&,«0z ˜ &
&
&
f&æ  ¦&
æ  æ  æÿˆC€  w°L	lOp…´:ow ¾ ÄÆe w   ÷	    Å  w  ÷	     ó°Õ±Ü²)d´:Tq$Ü²)d ä Å  €A„Ã  &
&
&
&
f&æ  &&
 ´:ÌK,«0z$w°L	 
æ  fæÿˆCw   BA@Ùé
áe I,  lOp…ó°Õ± 0‚I ÂŠ‡ Õ@A$è	hÐe Ø
0$úÿ V‚0úÿ‡ Õ@Àe Ã  &
&
&
&
&
&&
&
&
 ,«0z |Î• æ  æ        æÿˆæ æ)ÿˆ‡ Â D@ 
lOp…´:ðy ¢ÐÄå CØ ‚èàÃà`0" ‡ì È
l ÄŠ È‡ Âe ù  Nsž    OŽÏ³   ¯”L  CØ@  ´:ó@   ´:{3@  ´:áQ@  ´:éQ@  ´:ïQ@  ²§X@   Ü²)d@      (Vã  h ã  h
{3 }h, ³s  hô awÀhî ow  h¯”                                &
€÷	     $Ü²)d & „Á &
Á
ý€÷	 .Â Á ¦âÁ
ü   L ö  ‚‹ 

À ‚Â
 
Â   r ÂÂÂ‹Pö
 TÂå Œ6 ÀU  w    $´:ó(²§X ˜ †öÿÿ æ æ)ÿˆæ æÿˆþ       óþ¥ ¾   ë¶  „ Æe …fæ …÷	  Ä $CØ ä LÆe ‡ À  À  ÷	   øw   À   ´:áQ´:óÜ²)d"²§X&´:ïQ 
À  ÷	  
 ø‚&
Ä ‘Ä
ý
w   ÷	   ´:éQ
Ü²)d$²§X(Ü²)d 0	 øÃ ‚&
Ä ‘Ä
ý
Ã
õÀ  w    $´:{3(²§X           t^  ^› 8$         t^s    VÏ³   ¯”L  s©À@      (   ­t^lj\±ÿ~h  \± h¢ ­t^(´   ­t^                           ÿÿ    ´    ÿÿà   ´(à  F à à à à à à à à             à à à 
à à à à à  l        ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿbHjŽ "b$H&j(Ž ’ –¦  ž            –¦
ž Æ  Æ                    ÿ           ô  (ô  ì   ø     ø  ø  ø   gŠ  g jjjŒjjjj01234567 Š jjjŒjjj j SWAMLHCQFX BGIRVED   2 2D V h z       Š š   ¦ }~ \/'"%
^_@><$=CQ.; D V h 
z Š š   ¦  X-+*,BEFGKLNOPRSVWX   l lNX¦²Â 
NX¦²Â €ÊTlXR^Îêä ÊTl
XR^Îêä ”òü¬fˆ$ÂVì òü¬
fˆ$ÂVì ¨Šè€F:7
xþ7
ÿÆÆ  ÷zþÀÿ Šè€
F:   Î7 ÿ7Xþ7Ê÷dþ"÷¼þ ÿ÷	šÀOD÷	–À ôT:÷	Ž÷Dþ€æ¦ æ?ÿˆ‡À–þ7þ÷	ÈÀ ¦  Œþ7þ÷	¼7
¶þ&
æ0 ÷|¨þ÷þ
€7
þ 0| @÷	      úÀà 
÷	üý†7Š†þ÷•ÿÿþ÷	ª÷àý  
à  f
w ¸÷	¦÷	¦1‡Âw	¼‡DÄe0 w	 $0  Œ¬)†Ä%  ‡Äe  Dl2÷	
‚
w ÄÀà  )  2(à  ²ÃÅ5 WÂ4 D Ôû@Â÷	tZ† D  Ø ˆÀà 
÷	fý† ÷‹éý÷	(;‡tz  Â à "z  þ÷	,3‡ ÷	4 ÂÃÄ®ýD÷	À# $ÄEøÿÀ =÷	V ‘Àe0,÷	LÄÃÅ€ýíz  (z  J@÷	* ÄèüÄàüÄdý‚
÷	H(Æ  ÷ &   p.ýrý÷fý÷~^ýw ²þÀ ?÷	üÆ  ÷ýPý ~"   –÷	ê7
.ýÀ•_ ÷	è7Š+ý

7Š"ý7
 ý÷	\w	 ¼|FÔ‡Â÷	y l·Šý      ÷¥ ýüwòüƒ Fl âå7Šìü÷• äü÷•þÿÜü
ÝÄ! ³7z  (z  ÌüìÀ À Â
7¬ü7ºüwµü7œü7šü .À% ÷5 Œü
éf÷	
ù	À
¬÷	œ  À
 T·Š…ü÷	÷‹}ü÷bü^ü7Šqü÷mXüRü÷NüNü z÷	ÀDü÷	ˆÀQü€ œF÷	úÄ.ü
7Š6ü7
 F  4üw ÿ÷	º÷íüüá÷	$ ‚b‚
‚
·üÜ÷	  Æ‚ù÷	 ’Á

B`ñ÷	†÷% æûÂÜû‡  ìÃÅÒûDáÄå À _÷	† &÷	pÀ•> ÷	| €€÷	`w ˆþ ú ˆÂ7û7Šªû÷• £û7Š 8žû÷U ðú÷‹–û÷E äú÷	 ÷	zæØúæÒú÷ ^nû÷
hû÷>ûæeÿˆ÷¼ú   bû  À•  s©      À „7Rû7ŠLûÀGûÇÂÄ 0V ×­5û Ç÷‹ V  ª.ûÄ·Š&û÷U xúË·pú·nú7Þ÷‹û÷‹û Ð²÷‹û÷	,ÅNú÷‹õú#Äðú÷• çúw)êú öÄ t!D Äå úÄTEÕwú7‘Áúô
V  D (V  Á´
V „Äe0B7ªú÷	TÀ¢ú÷	PÀ: ÷	N@ V  B÷	È ·Rú·Lú·Fú÷MP|ú÷•ÿÿyú¬÷ODnú høæ  æcÿˆ÷  .ú·  ·
Lú÷BENú7ŠMú– s©Às©Às©À Ž÷IOBú÷IL:úÞ÷FP2ú	÷EM*ú÷TR"ú ´·âù÷• úw øþÂ7pùÃwfù÷¥ ýù
 Ú÷òù÷¾ù úÀ÷	 ÷	¸æ
÷	h÷	¼÷	  `÷	ÎŽ
Î% øò÷	  À Á*ÂŠ RÀ
  *      $Š  &ý‡ bHjŽ–¦®ž÷	Fæ3ÿˆ ˆ÷	P÷	 b
HjŽ–¦®ž Lý÷	fú÷	@÷	ý÷	Vú÷	0÷	ô 	@ r÷	@‘À÷	ô÷	4ñ
÷	÷	Ð ‚Äœø ˜÷@ù,ù÷	Âõ÷  ˆø·øø·zøÆ, f&æ¦ s©À ,  ¾fæâø¦w	> € ÷jºøw	0ú ·Èø€‚  jú  äƒ„…† ¶øÄ 4D h üâøD Äå ÷‡ 
 D h D  
<h D ÔÄ% ù†‡ Ä! ‚Ä¡ ‡ ± ‡ ÷	 h D  0èÿ‡ôÿÿz „‡ 
÷	êÿû‡„
ûÄ% í‡4D 4 z &D  Vh ô V ÔâÀvø7`\ø÷-XøÊ÷ƒ ÷	Ø  h 
V  |Á´÷@@@PÀ¬÷@
@‡ Àe       Àm.øðÂ7’÷ ¢ÃwŒ÷ÅŠ÷À*øàwø‡ ÷	Æ Àø÷	HÀ Èø€ œF÷	º Áø@fù	À
…‡ ÷‹ì÷
 
FÀ
 îÄmä÷7à÷7ŠÚ÷‚
‡ æÃÒ÷ÃÃÃÄ`ÃÃÄ`ƒ 	î

÷	’ À¥0 ‚À¥7 ‡ÀEøÿÄÄÄ`‚
ð :	A	 AåÁÑ‹ùÕ± … Ãr÷·t÷€†À’ `	À‡ ÂÀ^÷÷\÷ÃP÷À5þÿ‘‡ À †	
÷	 À ÷ P÷7`÷æ÷·H÷æâ ÿˆü‡æ)  â  ¬	ÿˆ‡ ÷.÷÷	Þÿ÷‹6÷€w výÀ0÷ÀE€ÿ÷&÷ Ò	À÷ 
 w	ZÿB‡À•$ ÷	¢ÿ a  z  B ø	Àå  À¥  À•+ ‡ fÿˆ… &Î%  %‚Î%¤ "‡À   $¤  
$ ÷	jÿÎ%D 	ƒ€Àå  € œÀU  ¦
N,4‚    Š  D   &4 D
Ñû€@ì2€Àe0 ÷	6ÿ@œ)ë÷Üõ	„÷	 2) j
Î NÀe0,÷	ÿ€7ÀõÃ Äþÿ	7
²õ7®õ 
Ã ÄÿÿÀ &Äe  
N@Ä
üÀe0 ÷	ÜþÃ
ó ¶
À•  Öw Îþˆ
z
Ö
Ð
Ê
÷	 ÷	ºþÀ ÷	´þÀ• ˆ
z
Ö
Ð
Ê
 Ü
  îÅ Â0@æ f
ÀAN ‡ã€
 0 ö
 ÷–%À  Àe  Àe Àe	 Àe	 ÷	 (dþÅ
Þ‡ @(  ÄŒõ 
æÿÿ  
‚,z ‚ &z  Nìz B ‚Ðó€‡ €À÷ z  Š         ZgÊ8^› 8$         k°q    0À     ¯”L  “±ˆ4@  Ô±¸8@   ä±CT@      (8 q gh  ¯”             À ÷	  Õ@CÓA
÷	  €E÷	   “±ˆ4ä±CT(Ô±¸8 & ‡
@1B
‹#–%‡   k°)q    0À     ¯”L  ©¯|Ž@  t°É@   t°!T@  ±ˆ@  B±$T@  Ô±¸8@      (d  h  h    h  ¯”             ¦)À ÷	  !‡ ÷	  6 v 
÷	  ‡ö ±ˆ©¯|Ž"Ô±¸8 &  € €

÷	  ‡€ö
 û%Ã
âÀ   Ô±¸8(B±$TX  
 L À  À  Àa¶ ¶ H  t°ÉX  
t°!TX  
  k°©s    0À     ¯”      L  t°!T@  B±$T@   “±ˆ4@  Ô±¸8@      ($ Œs@8h  ¯”             À ÷	  Õ@Á ÷	  ‡C3 w   w    
“±ˆ4Ô±¸8"B±$T&t°!T  k°ír    0À     ¯”L  ©n¾^@  ©nL`@   \¯·k@  t°É@  “±L5@      (˜ ˜  h   ¯  h  d  h dÀh e  h eÀh  ¯”             À ÷	  À À ÷	  À 
À ÷	  À 
“±L5“±L5&“±L5 &  ÷	  ÕB/CD&,   N…ÑQ \¯·k©n¾^©nL`
 L 
	
,   áÈ5 Ð
ÐQÈI (õÞ	‡ 
©n¾^©nL`
 r Ñe Q Q Þ	‡Â
ÝÆe ‡ Æe       w    (t°É  î°ÀD    0À     ¯”L  ´:©K@  ´:½L@   ´:)N@  ´:9N@  ´:kY@  ´:éƒ@  ´:„@   ´:i†@  ´:y†@  ©nL`@  \¯·k@  t°É@   “±L5@      (d ;M  h |…8Yh  ¯”                               ´:©K
´:)N´:9N´:½L´:éƒ´:i†        ÃÚÿÃæÿÃaÀ ÷	  D  À$‡À ´:y†´:„´:kY“±L5 : À`  ÷	  A PPÁÁ
üÞ	‡Æe ‡  \¯·k&©nL`  ` w    t°É  f±vL    0À     ¯”L  ´:n'@  ´:ü_@   ©nL`@  \¯·k@  “±L5@      (  ¼^p:h   ü_p:h ¯”                   Ä  Ä   
÷	   ÷	  Þ	‡Æe ‡  ´:n'´:ü_“±L5\¯·k ©nL`   Ô±Ì    0À     ¯”L  ´:¬p@  ©nL`@   \¯·k@  “±L5@      ( !qàh  ¯”             À ÷	  À  ÷	  P Þ	‡Æe ‡  
“±L5´:¬p\¯·k©nL`   Ô±Ê8    0À     ¯”L  “<·@  £<\}@   k°àQ@  k°*}@      (V Ô±¸8h ¯”                k°*}£<\}  ,  
     k°*}£<\} ,  
     k°*}£<\} ,  
     k°*}£<\} ,  
     k°*}£<\} ,  
 
          k°*}£<\} ,  
     k°*}£<\} ,  
     k°*}£<\} ,  
     k°*}£<\} ,  
     k°*}£<\}	 ,  
     k°*}£<\}
 ,  
    ‚ Â%ÿÿ‡ÂÂeÖÿÂa‚ÂaÁB`ÁÁÁB`Ê‹ k°*}£<\} ,  
“<·ÿÿ < €¤‚± ‚
` 
€ÒÀ   ‡  k°àQ  ä±À]    0À     ¯”L  ´:¢‘@  ©nŽ^@   ©nL`@  \¯mj@  t°É@  “±L5@      (8  ¯s  h  ¯sÀh ¯”             
Ä À ÷	  ý À  ÷	  0‘  Õp “±L5´:¢‘ \¯mj$©n   2   Ž^©nL`
 &  HÞ	‡Æe ‡ w    ©nL` t°É  2          Zg9;^› 8$         1¯ q    XÀ     ¯”L  \¯mj@  t°É@   ±,}@      (z º h º˜h »@jh   »Ømh ¯”             À À À  
&
&À ÷	  (‡ö  "±,} & À ÷	    Á5 6Š PÈÐÁ5  
\¯mj L HÁE ðÂEÿBP•
Ã
öÞ	‡Æe –‡  r ŽŽw    
t°É  ;¯„d     Á     ¯”L  á)à@  ð)û5@   õ)à@  lOp…@  s©À@  ,«0z@  Ü²#@   Ü²)d@      (” 9	îh
 9	n'h  9	nrh  A	®h$ A	®xh* D	®xh M	îh0 ¯”             ÀAFÁ  0ÀADÁ  +ÀARÀLSÁ  #À 
á)àá)      à$lOp… & ICÀISÀUDÁ  ÷	. À  ß  Æå  õ)à,«0z s©À L f&  æÿˆ‡Àe  
ˆÝ Æe ‡ Ág  I  õ)àð)û5$,«0z r ÷	    æ‚RDCÃ	Ò÷	   Ü²)d"Ü²#  T¯0     ÐÀ     ¯”L  ã¸`Hîÿã†Høÿ ä`	Hðÿäø8Hüÿå°'HôÿåÐzHöÿí 
Húÿ í`^Hòÿõø8Hþÿ    (  ¯”    \¯·k    XÀ     ¯”L  s©À@  w°L	@   ´²§*@      (Š \¯mjh  \¯·kh ¯”                                          ƒ÷	 ð• úÿÁ  ÁapþÿK ‚&
&
&
&
&
 w°L	  
 & &
&
¦&
¦      &æ€Àe É	€&ÿˆ  ‡ L 	ö
 È‹ï€‹Èe,ö‹ è÷	  Àä",  ´²§* r †àÈ  Èe Æe ± I  s©À  Œ¯h    XÀ     ¯”L  ã†@  å°'@   åÐz@  í 
@  ä)p@  ô)p@  ô)–œ@   i©€‰@  Ýª K@  ,«0z@  \¯·k@  “±L5@       (¨ ä@8h  ô@8h ô@œh( ¯”             À ÷	  À Ã Ä  À ÷	  À Ä   
“±L5ä)p “±L5(ô)p & À ÷	  À Ä  Ã ÷	  !  p   “±L5ô)–œ\¯·k ô)p L ÕPH Á÷	  Á÷	  J€
Á
ýÃ
ÁÁå i©€‰Ýª K r  ÃÃÒ`ÊÊàr Äg        ŒÌe t  4  t ,«0z"å°'&í 
 ˜   4  Þ	‡Æe ‡  åÐzã†  ¦¯h    XÀ     ¯”L  \¯·k@  “±L5@       (& ô@8h  @8h @œh ¯”             Ã Ã Ã  
÷	  À÷	  Þ	‡Æe ‡  “±L5\¯·k  ©¯|Ž    XÀ     ¯”L      ( ©¯|Žh   ¯”             ÁEðÿ¡  €€€‡   0Eü    0À     ¯”L  i©€‰@      (P  Eh& 0Eüh  ¯”             @ Å fÁ
 ÷	  „Ä
üÅ
õ–
€‡  i©€‰ &  
B Å D&ÀÀ€eÀC
ÂAÃ
ü@`Ä
 L ò‡   B±$T    0À           ¯”L      ( t°Éh  t°!Th B±$Th  ¯”             À À ÀA	–
‡   w°L	    ÐÀ     ¯”L      (* w°L	h   ¯”             Îþ‹  	€þU ÿ  >  þe,  þ   Îs & ÿˆ    “±5    XÀ     ¯”L  á)à@  ð)û5@   õ)à@  ,«0z@      (l ±,}h  ±ˆh  ±L€h “±,2h( “±ˆ4h. “±L5h4 ¯”             Á  Á  Á  „÷	" Õ± CDE¡  á)àð)û5õ)à & J Á  Á  Á  ‚Ág  f&
¦@£ƒ€
 á)àð)û5õ)à,«0z L ÂBa—$ÿÿ‰þÿ@£ƒ—"ÿÿ      ± ‡   "q€%    0À     ¯”L  ã†@  ä`	@   å°'@  åÐz@  í 
@  í`^@  õø8@       (Œ Ô±ph  ¯”             ôÿÿ   Àe    €à€à4
  æÿÿ  Ñ& õø8í`^åÐzä`	"ã† &   æÿˆñþÿ'PÂ
ýNÑü
  	´
   å°'ã†&õø8 L ÷	¶ÿ‡Îýÿ   <
  ñþÿ€ü   @
4   ã†ã†"ã†(ä`	 r Îþÿt   ‡t  ´  N–
‡  
í 
ã†í`^  Ô±h    ¨À     ¯”L  ã¸`@  ä`	@   í`^@  ä)p@  ô)p@  ô)–œ@  ,«0z@   Ô±p@      (Þ #qÀvh  $q@8h 4q@8hv        4q@œh€ 7q hl ¯”             
ÃÿÿÄ    f´
  
4  †Á

4   ,«0zä)pí`^ä`	(ã¸` & ‡ô÷	       	‡ôP  ÀÀÀÀ4  æ 
Ô±pí`^ä`	ã¸`$í`^ L   ]
4
  Õ—¥ ‡W#ÿÿ‡ Ã Ä í`^ã¸` r   	Ã Ä  Ã Ä  Äg  fÎå ÷	   ä)pô)pô)–œ,«0z(Ô±p ˜   †Õ  
ƒ×    
@  ƒ í`^ä`	ã¸`&ä`	 ¾ ‡ ÎŠ	Ã
W%ÿÿù}þÿõ–
‡  ä`	   ä±CT    0À     ¯”L      ( ä±CTh   ¯”             
À5 À
Á   ”   Bù€€€‡   û±h~    0À     ¯”L  \¯·k@  “±L5@       (  Lw@8h  ¯”             À ÷	  ÕÀ ÷	  PPÞ	‡Æe ‡  
“±L5\¯·k  ”          Zgãƒ^› 8$         7¯      0À     ¯”L  ”U¥@  !­È_@   t°É@  t°!T@  ±L€@  B±$T@      (:  ˜  h  ¯  h  ¯”             À ÷	  ‡    ‚AÁ Œ€€À 
±L€”U¥   
 & p  Ã
îw   w   w    !­È_B±$Tt°!Tt°É  ©¯      0À     ¯”L  ThÅ@  #­Èx@   ©¯|Ž@  t°É@  t°!T@  ±L€@  B±$T@       (@ h  h    h  ¯”             À ÷	  ‡  ñÿ‚÷	  À  Á  Á
 
±L€ThÅñÿ©¯|Ž#­Èx&#­Èx  & €û•Ã
ëw   w   w    B±$Tt°Ét°!T  ¯¯ K          0À     ¯”L  \¯·k@  t°É@   “±L5@      (h d  h  dÀh  ¯”             À ÷	  ý +À ÷	  ÕBCDEÑQ 
“±L5\¯·k & 
	
áÈ5 Ð
ÐQÈI (õÞ	‡Ñe  L Q Q Þ	‡Â
áÆe ‡ w    t°É  ¯¯@Q    0À     ¯”L  ThÅy@  3­Èx@   t°É@  t°!T@  ±L€@  B±$T@  ä±CT@       (4 e  h  eÀh  ¯”             À ÷	  ‡  ñÿ‚A÷	  p  Â° Ã
 
±L€ThÅyñÿä±CT3­Èx&3­Èx  & ñw   w   w    B±$Tt°!Tt°É  Ó± g    0À     ¯”L  Th5@  #­   ü   H:@   ä±CT@      (( q gh  ¯”             Õ@ÃA   	‚Á C÷	  p0  B
AÑ‰ Th5ä±CT#­H: & ‡   ã±h~    0À     ¯”L  ”Uu~@  4­H:@       ( Œs@8h  ¯”             @ A ÉA   ‚ÀÑ 	  ‡  ”Uu~4­H: ü          Ñˆ^› 8$         Ñˆ    €À     ¯”L  s©À@      (Œ Y¯8	h  Ñ±Xh 2²VNhÎ    (                 ÿÿÿÿ  ÿÿ  ÿÿ  ÷êÿ·äÿ÷R ææú "R (ú & ÿˆ† ‰÷ž´×- 7ˆ÷P „æ æz P  L ·n 7
²—#R Îå ÷Â`–% Z·#L R Â r  Pö5à  &÷::÷ívÿ4÷-0pÿ‡÷-( ˜ jÿƒ÷- dÿ‡÷-^ÿƒ÷-Xÿ‡÷-Rÿƒ÷- ¾  Lÿ‡÷-ø Fÿƒ÷ ò w ² ÷ê 7
ä æâ (â ä ÿˆ‡æ æ)ÿˆæ  &f¦æÁÃº ÷	†  s©À  
Ã° ÷	~ ƒ
 ÷	v ƒ ÷	n ƒ ÷	f Á9ƒ &9 0 ÷	Z ƒ ÷	R ƒ ÷	J ƒ÷	D ÷	>    †  C÷	 V8 ƒÃe ÷	. ƒ ÷	& æÊÿˆ‡æ æ)ÿˆ Ê |ƒ‚€Ÿ  ·2  8 À 
ÃB
ÃB s©À ¢ÃBÃBÂe0 ‘À
ôÑ•  Ñ•  ‡          ÈP         
q                  P 
 î{         g      n     
PCPCPC  P { n  CPCPC  PCPCPC  PSPSPS  DSDSDS  
    R :0R0R0  R1R1R1  R2R2R2  R3R3R3  R4R4R4  ` R5R5R5  SPSPSP  TOSTOS  

>>> BREAK  †<<<
  †         ›rkQ"S› 8$        øÀ  M                ¤        ©                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          	Ë^ < "Ë^œ & "$© ø LË^š ¾L$©š š E8O§ ¢ øË^= NÎÒ« € ù¿[ æùÄ[ : “Ìq ø ª%/ ª%Ë^9 žª%©2  ª%$©0  ª%ˆ©8 í&»K ø ¹)¨M6 4 º)¸G8 ¸ º)øM6 ì º)(d4 ôº)øf5 V º)Ðz5 Ô»)À€7 ô¼)è!6 Œ ¼)¨W7 2¼)xZ7 ”¾)¸3 Â ¾)¨W7 p ¾)xZ7 Ò ¾)@`4 ,¾)Ðz7  Â)°'3 Â)`Y5 Ä) 8 V Å)°r5 xÅ)xs5 ¶ Æ)H6 LÇ)˜q4 d Ê)`	4 Æ Ê)ˆ'6 ®Ê)p€4   Ë)Ð43 *Ð)4 ’E,kK¤ r E,»K§ E,8O¦ ª E,<O§ €ø8Ë^˜ ’ ø8$©˜ 0 19Ë^Ž :19$©‘ ,I:Ë^ ÜI:$©¢ Ì ;Ë^’ 2 ;$©” ° xEË^• 8 xE$©” ÆzKh @ zKË^j D zK©h (zKˆ©i J9O;i ê :O;i Š       ;OÀ€i ( µWa êµWË^d bµW©b à µWˆ©c â½[èvc ½[¸yc €Ê[ðKb øÊ[èvc Z Ê[¸yc ¼ —`À¨q 0gf:Os Zgf=Ov $:hPu Ð:h0„v † >ht  AhÀu Jht Ì Jh¨t ‚ªp  L ªpË^' <ªp©"  ªp$©  –ªpˆ©& ê q8O§ 0 ›rØ© f›r ª š ºtàG% 6 »tÀ€&  ¾t% ô Ãtp$ Ãtpq$ ÔÃtÐz$ tÄtðx& € Åtø% ºÅtp% VÊt¸# ¾ Êtp$ L ÊtP2% ’ Êt@`#  ÊtÐz$ ® Ítp# †ÍtÐz# èòyz‡ (òy}‡ è æË^£ >*–D Æ *–Ë^S V *–©F N*–$©E  *–ˆ©I ÈQ–Ë^W àT–Ë^U j[–Ë^S ´`–Ë^W D c–Ë^Y N9šà8P l 9š0MP ü9š¨MQ Ì 9š@`Q d :šÐHP Ô <špO Ì <šè!Q $<š`'N Â       <š€L ¦>šLL :@š N ’AšpN üAš`'N Z CšˆYM  DšpO d Dš8^P ¤Fš …N *Fš ™I hHš¸`M v Hš˜qO 4HšrO œHšØrP  Jš0 M KšP<M nNš _P <ñ¨8_ Fñ¨¸tk Ò ô¨¸[` N ô¨xnA Ð ÷¨8h`  ©8B d©¸tk  ©øzB \ ©8. €©¸¦_ ˆ©øHk ˜©¸[B ¦©øzA T ©x
@ † ©øz@ È%©u&p Œ %©¸)k 9©ûL P<©8^ ´@©ÞF ÐD©½`w ŠG©8Z G©ÁSn |G©µYw êJ©|v ”L©8šB èa©¸[[  b©øza   e©ÜKz Ê e©xnA e©¸C :f©8O[ Ú i©8g ´ i©Gwx Z i©Lyw &n©x
D   n©øzD B s©Àlz št©8h[ X v©¸a ¨v©x<g 0 Œ©8_ < •©çy ¦–©Àlz 8–©é
 r š©=	w Â ›©x
g 8      ›©8Og ¼›©øzg z ©Ö}w \ ±©¸/ Ê ±©ø? ¸²©ôp À²©kC ² µ©€}l @ ¹©8g r ¹© Xy ò¹©Ó`C ö ¼©ø/[  ¼©@†{ b ¾©x
C |¾©¸g ö ¾©øzC ¾¿©8h@ < ¿©{‹C n À©+	C * Â© x @Ã©¸¦B  Ä©¸¿? n Ä©øÅ? ° Ä©8Ì? ò Ä©xÒ? 4Ä©¸Ø? vÝ© }y "Ý©€ – æ©ôq @ ª8O[ â)ª¸[[ *ªøza â .ªx<B ".ª8O[ š 6ª`;o œ6ªi;p  7ª+"Œ H;ªx</  ^ª8OA Ž zª¸). x †ªxU\ $ Šª¸). >‹ª¸¦. º ¡ª¸[[ ^£ª86D „ ¯ªàk Ú¯ªô¢ \¯ªø`  ³ª¸¦k V¶ª8Oa $Êªø/ ˆ Êª¸)/ F Úª8Oa fÚª¸[A L ÚªøzA 
 ñªxUA –ÿªx
` VÿªøH` ÿª¸t` ˜«ø/` Ú«8OZ ’«€{ ®«8Z P«€%m Š       («p!v ú*«ø/@ À O«BxQ ŠO«øz\ f O«‹{\ ¬ O«³{\ ð O«Û{\ 4O«|\ xO«+|\ ¼O«S|]   O«{|] D O«£|] ˆ R«ø/_ € R«¸B_ Â R«øa_ U« }y ŠV«¸[a  }«9z ü‘«ø- ì ‘«8@ ’«ôp þ ’«k- d ’«¸)- ô”«8^ ø•«ày T •«¸)Z Ô•«ÉKx Ð •«Z€x ª•«6‘{ Î –«x
. Â–«x<` Ò –«xUA Ø˜«¸. ü ™«Ó`- ¨ œ«¸)f («twq È «áy| € Ÿ«8h- .Ÿ«{‹-    «+	, Ü£«x
f j£«8Of î£«øzf ¬£«¸¦. 6 ¤«¸@ ~ ¤«¸¿+ ¤«øÅ+ F¤«‹Æ, ˜¤«8Ì+ ˆ¤«xÒ+ Ê¤«¸Ø,  ¤«øÞ, N ¤«8å,  ¤«xë, Ò ¤«¸ñ, ¤«ø÷, V¦«¸^ 0¦«¸[^ r½«Ãj ð½« }l À«¸t? úÁ«¸¦] Ì Á«K§] Á«s§] T      Á«›§] ˜Á«Ã§] ÜÁ«ë§^   Á«¨^ d Á«;¨^ ¨ Á«c¨^ ì È«½|  Ì«p,  Ì«•`l ¨ Ì«øq æ Ì«øzB ž Ì«¸B à å«âym üë«øza ^ ò«s…{ <ó«”
 Ð
¬¸)- p¬»K 6 ¬<z \ ¬¸¦- ²?¬8O_ ÊY¬`;x þ[¬øg þj¬ø Ì j¬e;y º ¬¸@ D­ÕZ Ve³¼R
   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           r M        .MACRO	..EMIT	VALÿ 	.IIF	DF	LST$$	.LIST MEB 								VALÿ 	.IIF	DF	LST$$	.NLIST MEBÿ .ENDMÿ     ^M        	.MACRO	$ENTRY	P1,P2 	.LIST P1:: 	.NLISTÿ 	.IF 	GT,R$$TSTÿ 	.NCHR	$X$..,<P1>ÿ 	.IF	GT,$X$..-6ÿ" 	.ERROR			;P1 IS MORE THAN 6 CHAR. 	.MEXITÿ 	.ENDC 	.PSECT	$ENTY1,D,GBL 	$X$..=. 	.RAD50	/P1/ 	.IIF	EQ,.-$X$..-2,.WORD 0 	.WORD	SY.ADRÿ	 	.WORD	P1ÿ
 	.IF	NB	P2
 	.PSECT	P2 	.IFFÿ 	DPSECTÿ 	.ENDC 	.ENDC 	.ENDM	$ENTRYÿ     2M        	.MACRO	$TSTPT		P1,P2,P3,P4,      ?P5  	.IF	GT,R$$TST 	.NCHR	$X$..,<P1>  	.IF	GT,$X$..-6I" 	.ERROR			;P1 IS MORE THAN 6 CHAR. 	.MEXITE 	.ENDC 	.IF	IDN,<CALL>,<P2> 	BIT	#TP.ENB,P1+42 	BEQ	P5  	MOV	@#P1+6,-(SP)F 	JSR	PC,@(SP)+ 	P5: 	.IFF1
 	INC 	P1+6 	.ENDC 	.PSECT	$TSPT1,D,GBL 	$X$..=. P1::	.RAD50	/P1/ 	.IIF	EQ,.-$X$..-2,.WORD 0 	.IF	IDN,<CALL>,<P2> 	.WORD	SY.ADR$ 	.IIF	B,P3,.WORD $TST$$D 	.IIF	NB,P3,.WORD P3 	.IFF. 	.WORD	SY.VALÿ 	.WORD	0 	.ENDC
 	.IF	NB	P4
 	.PSECT	P4 	.IFF  	DPSECT  	.ENDC 	.ENDC 	.ENDM	$TSTP      TP     ” M        	.MACRO	$STGDPLY	STGDESC 	.IF	NB,<STGDESC>O' 	.IIF	DIF	<STGDESC>,<R2>	MOV STGDESC,R2. 	.ENDC 	JSR	PC,$DSTGP 	.ENDM	$STGDPLYP     ’ M        	.MACRO	$GETSTG	STGDESC, 	.IF	NB,<STGDESC>1' 	.IIF	DIF	<STGDESC>,<R2>	MOV STGDESC,R2L 	.ENDC 	JSR	PC,$GTSTG 	.ENDM	$GETSTG     ÀM        .MACRO STRU$B NAME .IF DF R$$TST$ 	.IF GT R$$TST-1 	.NCHR $X$..,NAMEP 	.IF GT $X$..-6.3 	.ERROR ;***** NAME IS MORE THAN 6-CHARACTERS *****C 	.MEXITF 	.ENDC 	.PSECT $STRU3,D,GBL .IIF EQ R$      $TST-2 .LIST	 	...CSG=.. 	.ASCII ?%N?<^O73>?    'NAME'? 	.PSECT $STRU1,D,GBL 	$X$..=. 	.RAD50 /NAME/ 	.IIF EQ .-$X$..-2  .WORD 0  	.WORD 	SY.ADR 	.WORD	...CSG  .IIF EQ R$$TST-2 .NLISTS 	.PSECTN 	.ENDC 	.ENDC .ENDM STRU$B     ¾ M        .MACRO STRU$E  .IF DF R$$TST  .IF GT R$$TST-1  	.PSECT $STRU3,D,GBL .IIF EQ R$$TST-2 .LIST 	.BYTE	0 .IIF EQ R$$TST-2 .NLIST. 	.PSECT. 	.ENDC 	.ENDC .ENDM STRU$E     ô M        .MACRO $EMSTG STRING .IF DF R$$TSTC .IF NB <STRING>D .IF GT R$$TST-      1T 	.PSECT $STRU3,D,GBL 	.IIF	EQ,R$$TST-2,.LIST' 	.ASCII ?%N?<^O73>?'STRING'? 	.IIF	EQ,R$$TST-2,.NLIST 	.PSECT. 	.ENDC 	.ENDC 	.ENDC .ENDM $EMSTG     Ì M        .MACRO RMS$L SYM,SIZE,STRING .MCALL $EMSTGC
 .IF NB SYM SYM=^O<...TPC> 	.ENDC .IF NB SIZE  	...TPC=^O<...TPC+SIZE>$ 	.ENDC .IIF B <STRING> .MEXIT $EMSTG <STRING>I .ENDM RMS$L      € M        .MACRO RMS$G SYM,SIZE,STRING .MCALL RMS$L .IIF NB SYM   .GLOBL	SYM RMS$L SYM,SIZE,<STRING>R .ENDM RMS$GB     T M        .MACRO       DFIN$G SYM,VALR 	.GLOBL	SYMI SYM=^O<VAL>, .ENDM DFIN$G     F M        .MACRO DFIN$L SYM,VAL, SYM=^O<VAL>C .ENDM DFIN$L     f M        .MACRO DEF$SZ SYM,SIZE,STRINGC# .IIF NB SIZE ...TPC=^O<...TPC+SIZE>T .ENDM DEF$SZ     
M       . .MACRO $STRIP FIELD,P0,P1,P2,P3,P4,P5,P6,P7,P8 .IRP NN,\...ARGT .IIF IDN P0 <EEEE> .MEXITG .IIF B P0 .MEXIT $'FIELD''NN'=^D'P0 ...SIZ=...SIZ+$'FIELD''NN  ...ARG=...ARG+1F$ $STRIP FIELD,P1,P2,P3,P4,P5,P6,P7,P8 ...ARG=0 .ENDMM .ENDM $STRIP     FM              .MACRO $SEQCK TAB1,TAB2,TYPE,BB= .IF NDF ...SEQ ...SEQ=1 ...TBL=0 ...RAB=0 ...FAB=0 ...XAB=0 ...NAM=0 ...LCB=0	 ...POOL=0  ...ARG=0 ...SIZ=0 ...RMS=0 .ENDCS ...ERR=0 .IF NB <BB>. .IF GT <...TBL>E3 	.ERROR ;***** MORE THAN ONE TABLE BEING INIT *****L	 	...ERR=1P 	.MEXIT6 	.ENDC .ENDC, .IIF B <TAB2> .MEXIT .IF EQ ...'TAB2I* 	.ERROR ;***** MISSING TAB2'$B MACRO *****	 	...ERR=1L 	.MEXIT. 	.ENDC .IIF  B <TYPE> .MEXIT, .IF NE <$COD-'TYPE> 5 	.ERROR ;***** XAB$B SPECIFIED CONFLICTING T      YPE *****O	 	...ERR=11 	.MEXITE 	.ENDC .ENDM $SEQCK     Â M       & .MACRO $UFLD$ FIELD,TAB1,TAB2,NAME,ARG .MCALL $SEQCK,..EMIT $SEQCK TAB1,TAB2,NAME. .IIF EQ ...ERR-1 .MEXIT  .IIF B <ARG> .MEXIT< ..EMIT <$'FIELD'=^D<ARG>>R .ENDM $UFLD$     Ø M        .MACRO FIELD$ NAME,LENGTH. .MCALL ..EMITI ...PC1=.  .=...TAB+O$'NAME. .IF EQ LENGTH-1* ..EMIT <.BYTE	$'NAME>C 	.ENDC .IF EQ LENGTH-2E ..EMIT <.WORD	$'NAME>T 	.ENDC .=...PC1 .ENDM FIELD$     üM         .MACRO $CHKMV SRC,FIELD,PTR,      TYPE .MCALL $'FIELD'$,..EMITI .NTYPE ...TYP,PTRS ..TMP0=...TYP&^O070  .IF NE ..TMP0 3 	.ERROR ;***** TABLE-POINTER MUST BE REGISTER *****K 	.MEXIT2 	.ENDC ..TMP0=...TYP&^O07 .IF GT ..TMP0-5>5 	.ERROR ;***** TABLE-POINTER MUST BE R0-R5 ONLY *****  	.MEXIT  	.ENDC .NTYPE ...TYP,SRCT ...ERR=1	 $'FIELD'$. .IF EQ ...ERR-1+) 	.ERROR ;***** INVALID NAME - FIELD *****' 	.MEXIT. .ENDCI .IF EQ ...TYP-^O27 	.IF IDN <TYPE> <S>. 	  .IF GT ...LEN-2 	    .IF DIF <SRC> <#0> < 	      .ERROR ;***** FIELD T      OO LONG FOR IMMEDIATE MODE ***** 	      .MEXITT
 	    .ENDC 	  .ENDC 	.ENDC 	.IF IDN <TYPE> <L>*6 	.ERROR ;***** IMMEDIATE MODE INVALID FOR SOURCE ***** 	.MEXITM 	.ENDC 	.ENDC ...TMP=...TYP&^O70 .IF EQ ...TMPB 	...TMP=...TYP&^O07- 	.IF EQ ...TMP-7& 	.ERROR ;***** CANNOT DESTROY PC ***** 	.MEXITI 	.ENDC 	.ENDC .IF EQ ...LEN-1  ...XXX=0 .IIF IDN <FIELD> <COD> ...XXX=1. .IIF IDN <FIELD> <BID> ...XXX=1F 	.IF IDN <TYPE> <L>. 	...TMP=...TYP&^O70. 	.IF EQ ...TMP 	.IF IDN <PTR>,<SRC>2 	.IIF EQ       ...XXX ..EMIT <MOVB	O$'FIELD'('PTR'),SRC>+ 	.IIF EQ ...XXX-1 ..EMIT <MOVB	('PTR'),SRC>N 	..EMIT <BIC	#^C377,SRC> 	.IFFD 	..EMIT <CLR	SRC>O2 	.IIF EQ ...XXX ..EMIT <BISB	O$'FIELD'('PTR'),SRC>+ 	.IIF EQ ...XXX-1 ..EMIT <BISB	('PTR'),SRC>- 	.ENDC 	.IFFP2 	.IIF EQ ...XXX ..EMIT <MOVB	O$'FIELD'('PTR'),SRC>+ 	.IIF EQ ...XXX-1 ..EMIT <MOVB	('PTR'),SRC>  	.ENDC 	.MEXIT< 	.ENDC 	.IF IDN <TYPE> <S>L 		.IF IDN <SRC> <#0>/ 		.IIF EQ ...XXX ..EMIT <CLRB	O$'FIELD'('PTR')> ( 		.IIF EQ ...XXX-1 ..EMIT <CLRB	('PT      R')> 		.IFF3 		.IIF EQ ...XXX ..EMIT <MOVB	SRC,O$'FIELD'('PTR')>M, 		.IIF EQ ...XXX-1 ..EMIT <MOVB	SRC,('PTR')> 		.ENDCD 	.MEXIT  	.ENDC 	.ENDC .IF EQ ...LEN-2T6 	.IIF IDN <TYPE> <L> ..EMIT <MOV	O$'FIELD'('PTR'),SRC> 	.IF IDN <TYPE> <S>. 		.IF IDN <SRC> <#0> 		..EMIT <CLR	O$'FIELD'('PTR')>T 		.IFF# 		..EMIT <MOV	SRC,O$'FIELD'('PTR')>R 		.ENDC  	.ENDC 	.MEXIT  	.ENDC .IF IDN <SRC> <#0> .IF IDN <TYPE> <S> ..EMIT <CLR	O$'FIELD'('PTR')>R0 .IIF GE ...LEN-4 ..EMIT <CLR	2+O$'FIELD'('PTR')>0 .IIF G      E ...LEN-6 ..EMIT <CLR	4+O$'FIELD'('PTR')>1 .IIF GE ...LEN-10 ..EMIT <CLR	6+O$'FIELD'('PTR')> 2 .IIF GE ...LEN-12 ..EMIT <CLR	10+O$'FIELD'('PTR')>2 .IIF GE ...LEN-14 ..EMIT <CLR	12+O$'FIELD'('PTR')>2 .IIF GE ...LEN-16 ..EMIT <CLR	14+O$'FIELD'('PTR')>2 .IIF GE ...LEN-20 ..EMIT <CLR	16+O$'FIELD'('PTR')> .MEXIT .ENDCT .ENDCR ...TMP=...TYP&^O70 .IF EQ ...TMPN 	.IF GT ...LEN-12.6 	.ERROR ;***** FIELD SIZE TOO LONG FOR REGISTERS ***** 	.MEXITP 	.ENDC 	...TMP=...TYP&^O07I 	.IF GT ...TMP-..TMP0' 	...TMP=      <^O6-...TMP>*2 	.IF LT ...TMP-...LENT1 	.ERROR ;***** FIELD TOO LONG FOR SRC -> R5 *****R 	.MEXITF 	.ENDC 	.IFF. 	...TMP=<..TMP0-...TMP>*2' 	.IF LT 2+...TMP-...LENM4 	.ERROR ;***** FIELD TOO LONG FOR SRC -> PTR-1 ***** 	.MEXITO 	.ENDC 	.ENDC .IF IDN <TYPE> <L>  ..EMIT <MOV	O$'FIELD'(PTR'),SRC>7 .IIF GE ...LEN-4 ..EMIT <MOV	2+O$'FIELD'('PTR'),SRC'+1>N7 .IIF GE ...LEN-6 ..EMIT <MOV	4+O$'FIELD'('PTR'),SRC'+2>F8 .IIF GE ...LEN-10 ..EMIT <MOV	6+O$'FIELD'('PTR'),SRC'+3>9 .IIF GE ...LEN-12 ..EMIT <MOV	10      +O$'FIELD'('PTR'),SRC'+4>.9 .IIF GE ...LEN-14 ..EMIT <MOV	12+O$'FIELD'('PTR'),SRC'+5>*9 .IIF GE ...LEN-16 ..EMIT <MOV	14+O$'FIELD'('PTR'),SRC'+6> 9 .IIF GE ...LEN-20 ..EMIT <MOV	16+O$'FIELD'('PTR'),SRC'+7>  .IFF! ..EMIT <MOV	SRC,O$'FIELD'('PTR')>N7 .IIF GE ...LEN-4 ..EMIT <MOV	SRC'+1,2+O$'FIELD'('PTR')> 7 .IIF GE ...LEN-6 ..EMIT <MOV	SRC'+2,4+O$'FIELD'('PTR')> 8 .IIF GE ...LEN-10 ..EMIT <MOV	SRC'+3,6+O$'FIELD'('PTR')>9 .IIF GE ...LEN-12 ..EMIT <MOV	SRC'+4,10+O$'FIELD'('PTR')>I9 .IIF GE ...LEN-14 ..EMIT <MO      V	SRC'+5,12+O$'FIELD'('PTR')>I9 .IIF GE ...LEN-16 ..EMIT <MOV	SRC'+6,14+O$'FIELD'('PTR')>I9 .IIF GE ...LEN-20 ..EMIT <MOV	SRC'+7,16+O$'FIELD'('PTR')>I .IFTF. .MEXIT .ENDC< .ENDCO ...ATO=0 ...TMP=...TYP&^O70 .IIF EQ ...TMP-^O20 ...ATO=1 .IIF EQ ...TMP-^O40 ...ATO=1 .IF EQ ...ATO-1$ .IF IDN <TYPE> <L>! ..EMIT <MOV	O$'FIELD'('PTR'),SRC>+4 .IIF GE ...LEN-4 ..EMIT <MOV	2+O$'FIELD'('PTR'),SRC>4 .IIF GE ...LEN-6 ..EMIT <MOV	4+O$'FIELD'('PTR'),SRC>5 .IIF GE ...LEN-10 ..EMIT <MOV	6+O$'FIELD'('PTR'),SRC><6       .IIF GE ...LEN-12 ..EMIT <MOV	10+O$'FIELD'('PTR'),SRC>6 .IIF GE ...LEN-14 ..EMIT <MOV	12+O$'FIELD'('PTR'),SRC>6 .IIF GE ...LEN-16 ..EMIT <MOV	14+O$'FIELD'('PTR'),SRC>6 .IIF GE ...LEN-20 ..EMIT <MOV	16+O$'FIELD'('PTR'),SRC> .IFF! ..EMIT <MOV	SRC,O$'FIELD'('PTR')> 4 .IIF GE ...LEN-4 ..EMIT <MOV	SRC,2+O$'FIELD'('PTR')>4 .IIF GE ...LEN-6 ..EMIT <MOV	SRC,4+O$'FIELD'('PTR')>5 .IIF GE ...LEN-10 ..EMIT <MOV	SRC,6+O$'FIELD'('PTR')>M6 .IIF GE ...LEN-12 ..EMIT <MOV	SRC,10+O$'FIELD'('PTR')>6 .IIF GE ...LEN-14 ..EMIT <      MOV	SRC,12+O$'FIELD'('PTR')>6 .IIF GE ...LEN-16 ..EMIT <MOV	SRC,14+O$'FIELD'('PTR')>6 .IIF GE ...LEN-20 ..EMIT <MOV	SRC,16+O$'FIELD'('PTR')> .IFTF' .MEXIT .ENDCR .ENDCF .IF EQ ...TMP-^O60 .IF IDN <TYPE> <L>! ..EMIT <MOV	O$'FIELD'('PTR'),SRC>$8 .IIF GE  ...LEN-4 ..EMIT <MOV	2+O$'FIELD'('PTR'),2+'SRC>7 .IIF GE ...LEN-6 ..EMIT <MOV	4+O$'FIELD'('PTR'),4+'SRC>'8 .IIF GE ...LEN-10 ..EMIT <MOV	6+O$'FIELD'('PTR'),6+'SRC>; .IIF  GE ...LEN-12 ..EMIT <MOV	10+O$'FIELD'('PTR'),10+'SRC>>; .IIF GE ...LEN-14 ..EMIT        <MOV	12+O$'FIELD'('PTR'),12+'SRC>F: .IIF GE ...LEN-16 ..EMIT <MOV	14+O$'FIELD'('PTR'),14+'SRC>: .IIF GE ...LEN-20 ..EMIT <MOV	16+O$'FIELD'('PTR'),16+'SRC> .IFF! ..EMIT <MOV	SRC,O$'FIELD'('PTR')>I7 .IIF GE ...LEN-4 ..EMIT <MOV	2+'SRC,2+O$'FIELD'('PTR')>F7 .IIF GE ...LEN-6 ..EMIT <MOV	4+'SRC,4+O$'FIELD'('PTR')>F8 .IIF GE ...LEN-10 ..EMIT <MOV	6+'SRC,6+O$'FIELD'('PTR')>: .IIF GE ...LEN-12 ..EMIT <MOV	10+'SRC,10+O$'FIELD'('PTR')>: .IIF GE ...LEN-14 ..EMIT <MOV	12+'SRC,12+O$'FIELD'('PTR')>: .IIF GE ...LEN-16 ..      EMIT <MOV	14+'SRC,14+O$'FIELD'('PTR')>: .IIF GE ...LEN-20 ..EMIT <MOV	16+'SRC,16+O$'FIELD'('PTR')> .IFTF. .MEXIT .ENDC< .ENDCO9 .ERROR ;***** SRC =INVALID/UNSUPPORTED ADDRESS MODE *****P .ENDM $CHKMV     Š M        .MACRO $WRDS TAB,FIELD,X .MCALL $SEQCK,$$LNUM $SEQCK TAB,TAB .IIF EQ ...ERR-1 .MEXITF $$LNUM FIELD,X .ENDM $WRDSO     úM        	.MACRO	$$LNUM	FIELD,WORD1 .MCALL ..EMIT0 	$$$B1=0 	$$$B2=0 	$$$B3=0 	$$$B4=0 	.IRPC	D,WORDO 	.IIF IDN <D> <.> .MEXIT 	$$$B1=$$$B1*10.+D'. 	$      $$C=$$$B1/256. 	$$$B1=$$$B1&377 	$$$B2=$$$B2*10.+$$$C2 	$$$C=$$$B2/256. 	$$$B2=$$$B2&377 	$$$B3=$$$B3*10.+$$$C  	$$$C=$$$B3/256. 	$$$B3=$$$B3&377 	$$$B4=$$$B4*10.+$$$CE 	$$$C=$$$B4/256. 	$$$B4=$$$B4&377 	.ENDM 	$$$H=$$$B4*256.+$$$B3 	$$$L=$$$B2*256.+$$$B1 ..EMIT <$'FIELD'0=$$$L>E ..EMIT <$'FIELD'1=$$$H>M 	.ENDM	$$LNUM      üM        .MACRO $CALL$ PROC,TAB,ERR,SUC .MCALL ..EMITI 	.GLOBL $RMSIA 	.GLOBL PROC ...NUM=0 .IIF NB <TAB> ...NUM=...NUM+1D .IIF NB <ERR> ...NUM=...NUM+1D .IIF       NB <SUC> ...NUM=...NUM+1$ .IF NE ...NUM$ ...NUM=0 .IF NB <TAB> 	..EMIT <MOV	R5,-(SP)> 	.IF NB <SUC>3 	...NUM=...NUM+1 	..EMIT <MOV	SUC,-(SP)>3 	.ENDC 	.IF B <ERR> 	.IF NB <SUC>B 	...NUM=...NUM+1 	..EMIT <MOV	#-1,-(SP)>B 	.ENDC 	.IFF$ 	...NUM=...NUM+1 	..EMIT <MOV	ERR,-(SP)>L .ENDCM ..EMIT <MOV	TAB,-(SP)> ...NUM=...NUM+1  ..EMIT <MOV	#...NUM,-(SP)> ..EMIT <MOV	SP,R5> .IFF- 		.ERROR ;***** MISSING TABLE PARAMETER *****  		.MEXIT 		.ENDCM .ENDC+ ..EMIT	<JSR	PC,'PROC>M .IIF EQ ...NUM       .MEXITC ..EMIT 	<ADD	#...NUM*2+2,SP> 	..EMIT <MOV	(SP)+,R5> .ENDM $CALL$     JM        .MACRO RABDF$ P1 .MCALL RABOF$,..EMIT RABOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** RAB MUST BE WORD ALIGNED *****F	 	...ERR=1= 	.MEXIT  	.ENDC ...TAB=. ..RBLN=0! .IIF B <P1> ..EMIT <.BLKB	RB$BLN>M" .IIF NB <P1> ..EMIT <.BLKB	RB$BLL> .IIF NB <P1> ..RBLN=1  .ENDM RABDF$     ~M        .MACRO RAB$BT DEF 
 .MCALL DEF 	DEF   	RB$BID,1 	DEF     RB$SEQ,0C 	DEF     RB$KEY,      1. 	DEF     RB$RFA,2D 	DEF     RB$EOF,1. 	DEF	RB$MAS,2+ 	DEF     RB$WAT,4  	DEF	RB$RLK,RB$WAT 	DEF     RB$HSH,10 	DEF     RB$LOA,20 	DEF     RB$ULK,40 	DEF	RB$LOK,RB$ULK 	DEF     RB$LOC,100  	DEF     RB$ASY,200S 	DEF     RB$RAH,400* 	DEF     RB$WBH,1000 	DEF   	RB$KGE,2000  	DEF   	RB$KGT,4000  	DEF  	RB$FDL,10000M 	DEF	RB$UIF,20000I 	DEF	RB$NKC,1> 	DEF	RB$NK3,2. 	DEF	RB$ORG,4  	DEF	RB$BK1,10 	DEF	RB$BK3,20 	DEF	RB$NW1,40 	DEF	RB$X1A,100	 	DEF	RB$X2A,200  .MACRO RAB$BT DEF  .ENDM       RAB$BT .ENDM RAB$BT     ªM        .MACRO RAB$B P1, .MCALL $SEQCK,RABDF$,RAB$BTR6 .MCALL R$RAC,R$ROP,R$UBF,R$USZ,R$RBF,R$RSZ,R$KBF,R$KSZ< .MCALL R$KRF,R$BKT,R$RHB,R$FAB,R$MBF,R$MBC,RAB$E,R$CTX,R$LSN RAB$BT DFIN$L0 $SEQCK RAB,,,BBA .IIF EQ ...ERR-1 .MEXIT0 .IF NB <P1>B .IF DIF <P1> <ASYN>B .IF DIF <P1> <SYN>5 .ERROR	;***** BAD PARAMETER SPELLING (SYN/ASYN) *****R .MEXIT .ENDCR RABDF$ .IFF	 RABDF$	BB  .ENDC$ .IFF RABDF$ .ENDC0 .IIF EQ ...ERR-1 .MEXITR ...TBL=1 ...RAB=1 $RAC=0 $ROP=0       $UBF=0 $USZ=0 $RBF=0 $RSZ=0 $KBF=0 $KSZ=0 $KRF=0 $BKT0=0L $BKT1=0A $RHB=0 $FAB=0 $MBF=0 $MBC=0 $LSN=0 $DUP=0 $STS=0 $STV=0 $ISI=0 $RFA=0 $CTX=0 $BID=RB$BIDR .ENDM RAB$BB     b M        .MACRO R$RAC VALUE .MCALL $UFLD$F $UFLD$ RAC,RAB,RAB,,<VALUE>< .ENDM R$RAC      f M        .MACRO R$ROP OPTIONS .MCALL $UFLD$A $UFLD$ ROP,RAB,RAB,,<OPTIONS>R .ENDM R$ROPD     b M        .MACRO R$UBF LABEL .MCALL $UFLD$E $UFLD$ UBF,RAB,RAB,,<LABEL>R .ENDM R$UBF.     d M        .MAC      RO R$USZ NUMBER  .MCALL $UFLD$  $UFLD$ USZ,RAB,RAB,,<NUMBER> .ENDM R$USZ      b M        .MACRO R$RBF LABEL .MCALL $UFLD$0 $UFLD$ RBF,RAB,RAB,,<LABEL>X .ENDM R$RBFI     d M        .MACRO R$RSZ NUMBERC .MCALL $UFLD$  $UFLD$ RSZ,RAB,RAB,,<NUMBER> .ENDM R$RSZ<     b M        .MACRO R$KBF LABEL .MCALL $UFLD$S $UFLD$ KBF,RAB,RAB,,<LABEL>R .ENDM R$KBFO     ` M        .MACRO R$KSZ SIZE  .MCALL $UFLD$B $UFLD$ KSZ,RAB,RAB,,<SIZE> .ENDM R$KSZL     b M        .MACRO R$KRF VALUE .MCA      LL $UFLD$N $UFLD$ KRF,RAB,RAB,,<VALUE>$ .ENDM R$KRF,     \ M        .MACRO R$BKT NUMBER  .MCALL $WRDS $WRDS RAB,BKT,<NUMBER> .ENDM R$BKTB     b M        .MACRO R$RHB LABEL .MCALL $UFLD$O $UFLD$ RHB,RAB,RAB,,<LABEL>  .ENDM R$RHBR     b M        .MACRO R$FAB LABEL .MCALL $UFLD$C $UFLD$ FAB,RAB,RAB,,<LABEL>S .ENDM R$FABR     d M        .MACRO R$MBF NUMBER  .MCALL $UFLD$O $UFLD$ MBF,RAB,RAB,,<NUMBER> .ENDM R$MBFB     d M        .MACRO R$MBC NUMBER  .MCALL $UFLD$K $UFLD$ MBC,R      AB,RAB,,<NUMBER> .ENDM R$MBCB     b M        .MACRO R$CTX VALUE .MCALL $UFLD$B $UFLD$ CTX,RAB,RAB,,<VALUE>D .ENDM R$CTXM     j M        .MACRO R$LSN NUMBERM2 .PRINT ;***** R$LSN NOT SUPPORTED BY RMS-11  ***** .ENDM R$LSNE     RM        .MACRO RAB$E .MCALL $SEQCK,FIELD$,..EMITD $SEQCK RAB,RAB .IIF EQ ...ERR-1 .MEXIT$ FIELD$ BID,1 ...PC1=. .=...TAB+O$BLN$ .IIF EQ ..RBLN ..EMIT <.BYTE	RB$BLN>& .IIF EQ ..RBLN-1 ..EMIT <.BYTE	RB$BLL> .=...PC1 FIELD$ CTX,2 FIELD$ ISI,2 FIELD$ STS,2 FI      ELD$ STV,2 ...PC1=. .=...TAB+O$RFA ..EMIT <.WORD	0,0,0> .=...PC1 FIELD$ RAC,1 FIELD$ KSZ,1 FIELD$ ROP,2 FIELD$ USZ,2 FIELD$ UBF,2 FIELD$ RSZ,2 FIELD$ RBF,2 FIELD$ KBF,2 FIELD$ KRF,1 FIELD$ MBF,1 FIELD$ MBC,1 FIELD$ RHB,2 FIELD$ FAB,2 FIELD$ BKT0,2E FIELD$ BKT1,2, ...TBL=0 ...RAB=0 .ENDM RAB$EI     ÈM        .MACRO RABOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF DIF <OFFSET> <DEF$SZ> STRU$B RABE! 	OFFSET	O$BID,1,<BID AND BLN= %P>I 	OFFSET	O$BLN,1$! 	OFFSET	      O$CTX,2,<CTX        = %P>.! 	OFFSET	O$ISI,2,<ISI        = %P>=! 	OFFSET	O$STS,2,<STS        = %P> ! 	OFFSET	O$STV,2,<STV        = %P>U! 	OFFSET	O$RFA,6,<RFA        = %P>I! 	$EMSTG         <           = %P>F! 	$EMSTG         <           = %P>L! 	OFFSET	O$RAC,1,<RAC & KSZ  = %P>T 	OFFSET	O$KSZ,1.! 	OFFSET	O$ROP,2,<ROP        = %P> ! 	OFFSET	O$USZ,2,<USZ        = %P>S! 	OFFSET	O$UBF,2,<UBF        = %P>T! 	OFFSET	O$RSZ,2,<RSZ        = %P>R! 	OFFSET	O$RBF,2,<RBF        = %P>B! 	OFFSET	O$KBF,2,<KBF        = %P>	      ! 	OFFSET	O$KRF,1,<KRF AND MBF= %P>	 	OFFSET	O$MBF,1 ! 	OFFSET	O$MBC,1,<MBC & SPARE= %P> 
 	OFFSET	,1! 	OFFSET	O$RHB,2,<RHB        = %P>O! 	OFFSET	O$FAB,2,<FAB        = %P>$! 	OFFSET	O$BKT,0,<BKT        = %P>$ 	OFFSET	O$BKT0,2 	OFFSET	O$BKT1,2! 	$EMSTG         <           = %P>O! 	OFFSET	     ,2,<SPARES     = %P>P! 	OFFSET	O$RT0,2,<RT0        = %P>Z! 	OFFSET	O$RT1,2,<RT1        = %P>F! 	OFFSET	O$RT2,2,<RT2        = %P>Z! 	OFFSET	O$RT3,2,<RT3        = %P>F! 	OFFSET	O$RT4,2,<RT4        = %P>F! 	OFFSET	O$RT      5,2,<RT5        = %P>F! 	OFFSET	O$RT6,2,<RT6        = %P>O! 	OFFSET	O$RT7,2,<RT7        = %P>O! 	OFFSET	O$RT8,2,<RT8        = %P> ! 	OFFSET	O$RT9,2,<RT9        = %P> " 	OFFSET	O$RT10,2,<RT10       = %P>" 	OFFSET	O$RBD0,2,<RBD0       = %P>" 	OFFSET	O$RBD1,2,<RBD1       = %P>" 	OFFSET	O$RBDB,2,<RBDB       = %P>" 	OFFSET	O$ROVL,2,<ROVL       = %P>" 	OFFSET	O$RPAR,2,<RPAR       = %P>" 	OFFSET	O$RIOS,2,<RIOS       = %P>" 	OFFSET	O$RIO2,2,<           = %P> .IF IDN <OFFSET> <DEF$SZ>R 	RMS$L	RB$BLNF 	.IFFE 	OFF      SET	RB$BLN 	.ENDC! .IIF DIF <OFFSET> <DEF$SZ> STRU$E  	OFFSET	O$RASY,80. .IF IDN <OFFSET> <DEF$SZ>E 	RMS$L	RB$BLL  	.MEXITP 	.IFFF 	OFFSET	RB$BLL 	.ENDC .IF DF R$$TST	 .IIF GT R$$TST-1 .MEXIT> .ENDCE .MACRO RABOF$ OFFSET .ENDM RABOF$ .ENDM RABOF$     B M        .MACRO $RT0$ ...ERR=0 ...LEN=2 .ENDM $RT0$L     B M        .MACRO $RT1$ ...ERR=0 ...LEN=2 .ENDM $RT1$	     B M        .MACRO $RT2$ ...ERR=0 ...LEN=2 .ENDM $RT2$I     B M        .MACRO $RT3$ ...ERR=0 ...LEN=2       .ENDM $RT3$      B M        .MACRO $RT4$ ...ERR=0 ...LEN=2 .ENDM $RT4$I     B M        .MACRO $RT5$ ...ERR=0 ...LEN=2 .ENDM $RT5$E     B M        .MACRO $RT6$ ...ERR=0 ...LEN=2 .ENDM $RT6$E     B M        .MACRO $RT7$ ...ERR=0 ...LEN=2 .ENDM $RT7$      B M        .MACRO $RT8$ ...ERR=0 ...LEN=2 .ENDM $RT8$      B M        .MACRO $RT9$ ...ERR=0 ...LEN=2 .ENDM $RT9$      D M        .MACRO $RT10$N ...ERR=0 ...LEN=2 .ENDM $RT10$     D M        .MACRO $RPAR$2       ...ERR=0 ...LEN=2 .ENDM $RPAR$     D M        .MACRO $ROVL$  ...ERR=0 ...LEN=2 .ENDM $ROVL$     D M        .MACRO $RBDB$E ...ERR=0 ...LEN=2 .ENDM $RBDB$     D M        .MACRO $RIOS$D ...ERR=0 ...LEN=2 .ENDM $RIOS$     B M        .MACRO $RAC$ ...ERR=0 ...LEN=1 .ENDM $RAC$O     B M        .MACRO $ROP$ ...ERR=0 ...LEN=2 .ENDM $ROP$O     B M        .MACRO $UBF$ ...ERR=0 ...LEN=2 .ENDM $UBF$O     B M        .MACRO $USZ$ ...ERR=0 ...LEN=2 .ENDM $USZ$C     B M              .MACRO $RBF$ ...ERR=0 ...LEN=2 .ENDM $RBF$M     B M        .MACRO $RSZ$ ...ERR=0 ...LEN=2 .ENDM $RSZ$      B M        .MACRO $KBF$ ...ERR=0 ...LEN=2 .ENDM $KBF$      B M        .MACRO $KSZ$ ...ERR=0 ...LEN=1 .ENDM $KSZ$      B M        .MACRO $RHB$ ...ERR=0 ...LEN=2 .ENDM $RHB$      B M        .MACRO $KRF$ ...ERR=0 ...LEN=1 .ENDM $KRF$      B M        .MACRO $BKT$ ...ERR=0 ...LEN=4 .ENDM $BKT$      B M        .MACRO $RFA$ ...ERR=0 ...LEN=6 .ENDM $R      FA$      B M        .MACRO $ISI$ ...ERR=0 ...LEN=2 .ENDM $ISI$      B M        .MACRO $MBF$ ...ERR=0 ...LEN=1 .ENDM $MBF$      B M        .MACRO $MBC$ ...ERR=0 ...LEN=1 .ENDM $MBC$      B M        .MACRO $FAB$ ...ERR=0 ...LEN=2 .ENDM $FAB$      ö M        .MACRO FABDF$N .MCALL FABOF$,..EMIT FABOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** FAB MUST BE WORD ALIGNED *****4	 	...ERR=1T 	.MEXIT  	.ENDC ...TAB=. ..EMIT <.BLKB	FB$BLN>N .ENDM FABD      F$     M        .MACRO FAB$BT DEF.
 .MCALL DEF 	DEF    FB$BID,3 	DEF    FB$PUT,1 	DEF    FB$GET,2 	DEF    FB$DEL,4 	DEF    FB$UPD,10  	DEF    FB$TRN,20$ 	DEF    FB$BIO,40L 	DEF    FB$REA,FB$BIO!FB$GET 	DEF    FB$WRT,FB$BIO!FB$PUT# 	DEF    FB$WRI,FB$PUT!FB$UPD!FB$DEL  	DEF    FB$NIL,100 	DEF    FB$SEQ,0 	DEF    FB$REL,20  	DEF    FB$IDX,40. 	DEF    FB$DIR,60B 	DEF    FB$DBM,100 	DEF    FB$FMX,100 	DEF    FB$FTN,1 	DEF    FB$CR,2I 	DEF    FB$PRN,4 	DEF    FB$BLK,10B 	DEF    FB$RWO,1       	DEF    FB$RWC,2 	DEF    FB$WAT,4 	DEF    FB$POS,10D 	DEF    FB$DLK,20F 	DEF    FB$JNL,40  	DEF    FB$ACK,100 	DEF    FB$CTG,200 	DEF    FB$SUP,400 	DEF    FB$NEF,1000B 	DEF    FB$TMP,2000A 	DEF    FB$MKD,4000  	DEF    FB$TMD,FB$TMP!FB$MKD 	DEF    FB$FID,10000 	DEF    FB$UDF,0 	DEF    FB$FIX,1 	DEF    FB$VAR,2 	DEF    FB$VFC,3 	DEF    FB$STM,4 	DEF    FB$REC,1 	DEF    FB$CCL,2 	DEF    FB$TRM,4 	DEF    FB$MDI,101 	DEF    FB$SDI,20  	DEF    FB$SQD,40D .MACRO FAB$BT DEFD .ENDM FAB$BT       .ENDM FAB$BT     ´M        .MACRO FAB$B .MCALL $SEQCK,FABDF$,FAB$BTF6 .MCALL F$FAC,F$SHR,F$JFN,F$RTV,F$ORG,F$RAT,F$FOP,F$XAB6 .MCALL F$MRS,F$JNL,F$MRN,F$BSZ,F$ALQ,F$BLS,F$NAM,F$RFM6 .MCALL F$FSZ,F$FNA,F$FNS,F$DNA,F$DNS,F$LCH,F$BKS,FAB$E .MCALL F$CTX,F$BPA,F$BPS,F$DEQ FAB$BT DFIN$L0 $SEQCK FAB,,,BB1 .IIF EQ ...ERR-1 .MEXIT  FABDF$ .IIF EQ ...ERR-1 .MEXITF ...TBL=1 ...FAB=1 $FAC=FB$GETD $SHR=FB$GET4 $FOP=0 $JFN=0 $RTV=0 $ORG=FB$SEQ2 $RAT=0 $XAB=0 $MRS=0 $MRN0=0B $MRN1=0  $BPA=0 $B      PS=0 $JNL=0 $ALQ0=0  $ALQ1=0  $DEQ=0 $BLS=0 $NAM=0 $RFM=FB$VARF $FSZ=0 $BKS=0 $LCH=0 $FNA=0 $FNS=0 $DNA=0 $DNS=0 $STS=0 $STV=0 $IFI=0 $CTX=0 $DEV=0 $BID=FB$BIDN .ENDM FAB$BA     h M        .MACRO F$FAC  OPTIONSB .MCALL $UFLD$L $UFLD$ FAC,FAB,FAB,,<OPTIONS>T .ENDM F$FACQ     f M        .MACRO F$SHR OPTIONS .MCALL $UFLD$  $UFLD$ SHR,FAB,FAB,,<OPTIONS>F .ENDM F$SHR$     p M        .MACRO F$JFN NUMBERV8 .PRINT ;***** JFN FIELD IS NOT SUPPORTED BY RMS-11 ***** .ENDM F$JFNB           d M        .MACRO F$RTV NUMBER0 .MCALL $UFLD$0 $UFLD$ RTV,FAB,FAB,,<NUMBER> .ENDM F$RTVA     b M        .MACRO F$ORG VALUE .MCALL $UFLD$C $UFLD$ ORG,FAB,FAB,,<VALUE>E .ENDM F$ORG      f M        .MACRO F$RAT OPTIONS .MCALL $UFLD$  $UFLD$ RAT,FAB,FAB,,<OPTIONS>  .ENDM F$RAT      f M        .MACRO F$FOP OPTIONS .MCALL $UFLD$  $UFLD$ FOP,FAB,FAB,,<OPTIONS>  .ENDM F$FOP      b M        .MACRO F$XAB LABEL .MCALL $UFLD$  $UFLD$ XAB,FAB,FAB,,<LABEL>  .ENDM F$XAB      b M              .MACRO F$BPA LABEL .MCALL $UFLD$  $UFLD$ BPA,FAB,FAB,,<LABEL>B .ENDM F$BPA>     ` M        .MACRO F$BPS SIZEC .MCALL $UFLD$  $UFLD$ BPS,FAB,FAB,,<SIZE> .ENDM F$BPSE     ` M        .MACRO F$MRS SIZEM .MCALL $UFLD$O $UFLD$ MRS,FAB,FAB,,<SIZE> .ENDM F$MRSO     b M        .MACRO F$JNL LABEL .MCALL $UFLD$P $UFLD$ JNL,FAB,FAB,,<LABEL>L .ENDM F$JNLB     \ M        .MACRO F$MRN NUMBER  .MCALL $WRDS $WRDS FAB,MRN,<NUMBER> .ENDM F$MRNB     ` M        .MACRO F$BSZ SIZE * .PRI      NT ;***** FIELD UNUSED BY RMS-11 ***** .ENDM F$BSZB     X M        .MACRO F$ALQ SIZE  .MCALL $WRDS $WRDS FAB,ALQ,<SIZE> .ENDM F$ALQ      ` M        .MACRO F$DEQ SIZE$ .MCALL $UFLD$  $UFLD$ DEQ,FAB,FAB,,<SIZE> .ENDM F$DEQO     ` M        .MACRO F$BLS SIZE$ .MCALL $UFLD$  $UFLD$ BLS,FAB,FAB,,<SIZE> .ENDM F$BLSP     b M        .MACRO F$NAM LABEL .MCALL $UFLD$  $UFLD$ NAM,FAB,FAB,,<LABEL>  .ENDM F$NAMS     b M        .MACRO F$RFM VALUE .MCALL $UFLD$  $UFLD$ RFM,FAB,FAB,,<VALUE      >T .ENDM F$RFM      ` M        .MACRO F$FSZ SIZE  .MCALL $UFLD$  $UFLD$ FSZ,FAB,FAB,,<SIZE> .ENDM F$FSZ      b M        .MACRO F$FNA LABEL .MCALL $UFLD$O $UFLD$ FNA,FAB,FAB,,<LABEL>  .ENDM F$FNAB     ` M        .MACRO F$FNS SIZE  .MCALL $UFLD$F $UFLD$ FNS,FAB,FAB,,<SIZE> .ENDM F$FNSB     b M        .MACRO F$DNA LABEL .MCALL $UFLD$F $UFLD$ DNA,FAB,FAB,,<LABEL>U .ENDM F$DNAF     ` M        .MACRO F$DNS SIZE  .MCALL $UFLD$F $UFLD$ DNS,FAB,FAB,,<SIZE> .ENDM F$DNSB     b M              .MACRO F$CTX VALUE .MCALL $UFLD$O $UFLD$ CTX,FAB,FAB,,<VALUE>  .ENDM F$CTXB     b M        .MACRO F$LCH VALUE .MCALL $UFLD$F $UFLD$ LCH,FAB,FAB,,<VALUE>U .ENDM F$LCHF     ` M        .MACRO F$BKS SIZE  .MCALL $UFLD$F $UFLD$ BKS,FAB,FAB,,<SIZE> .ENDM F$BKSB     †M        .MACRO FAB$E .MCALL FIELD$,$SEQCK $SEQCK FAB,FAB .IIF EQ ...ERR-1 .MEXITB FIELD$ BID,1 ...PC1=. .=...TAB+O$BLN ..EMIT <.BYTE	FB$BLN>Z .=...PC1 FIELD$ CTX,2 FIELD$ IFI,2 FIELD$ STS,2 FIELD$ STV,2 FIEL      D$ FAC,1 FIELD$ SHR,1 FIELD$ FOP,2 FIELD$ RTV,1 FIELD$ ORG,1 FIELD$ RAT,1 FIELD$ RFM,1 FIELD$ XAB,2 FIELD$ BPA,2 FIELD$ BPS,2 FIELD$ MRS,2 FIELD$ MRN0,2V FIELD$ MRN1,2$ FIELD$ JNL,2 FIELD$ ALQ0,2O FIELD$ ALQ1,2M FIELD$ DEQ,2 FIELD$ NAM,2 FIELD$ FNA,2 FIELD$ DNA,2 FIELD$ FNS,1 FIELD$ DNS,1 FIELD$ BLS,2 FIELD$ FSZ,1 FIELD$ BKS,1 FIELD$ DEV,1 FIELD$ LCH,1 ...TBL=0 ...FAB=0 .ENDM FAB$EB     °M        .MACRO FABOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF       DIF <OFFSET> <DEF$SZ> STRU$B FABP! 	OFFSET	O$BID,1,<BID AND BLN= %P>L 	OFFSET 	O$BLN,1" 	OFFSET 	O$CTX,2,<CTX        = %P> 	OFFSET	O$ISID,0" 	OFFSET 	O$IFI,2,<IFI        = %P>" 	OFFSET 	O$STS,2,<STS        = %P>! 	OFFSET	O$STV,2,<STV        = %P>N! 	OFFSET	O$ALQ,0,<ALQ        = %P>I 	OFFSET	O$ALQ0,2 	OFFSET  O$ALQ1,22" 	$EMSTG          <           = %P> 	OFFSET	O$DEQ,2,<DEQ	    = %P>! 	OFFSET	O$FAC,1,<FAC AND SHR= %P>  	OFFSET	O$SHR,1F" 	OFFSET 	O$FOP,2,<FOP        = %P>! 	OFFSET	O$RTV,1,<RTV AND ORG      = %P>< 	OFFSET	O$ORG,1S! 	OFFSET	O$RAT,1,<RAT AND RFM= %P>D 	OFFSET	O$RFM,1E! 	OFFSET	O$XAB,2,<XAB        = %P>  	OFFSET	O$BPA,2,<BPA	    = %P>! 	OFFSET	O$BPS,2,<BPS        = %P>O! 	OFFSET	O$MRS,2,<MRS        = %P>O! 	OFFSET	O$MRN,0,<MRN        = %P>O 	OFFSET	O$MRN0,2 	OFFSET  O$MRN1,2F" 	$EMSTG          <           = %P>! 	OFFSET	O$JNL,2,<JNL        = %P>O! 	OFFSET	O$NAM,2,<NAM        = %P>E! 	OFFSET	O$FNA,2,<FNA        = %P>E! 	OFFSET	O$DNA,2,<DNA        = %P> ! 	OFFSET	O$FNS,1,<FNS AND DNS= %P>D 	O      FFSET	O$DNS,1E! 	OFFSET	O$BLS,2,<BLS        = %P>D! 	OFFSET	O$FSZ,1,<FSZ AND BKS= %P>E 	OFFSET	O$BKS,1 ! 	OFFSET	O$DEV,1,<DEV & LCH  = %P>  	OFFSET	O$LCH,1$ 	OFFSET	,4,<SPARE      = %P> 	$EMSTG     <           = %P> ! 	OFFSET	O$FT0,2,<FT0        = %P> ! 	OFFSET	O$FT1,2,<FT1        = %P>F! 	OFFSET	O$FT2,2,<FT2        = %P>>! 	OFFSET	O$FT3,2,<FT3        = %P>O! 	OFFSET	O$FT4,2,<FT4        = %P>E" 	OFFSET	O$FBD0,2,<FBD0       = %P>" 	OFFSET	O$FBD1,2,<FBD1       = %P>" 	OFFSET	O$FBDB,2,<FBDB       = %P>" 	O      FFSET	O$FOVL,2,<FOVL       = %P>" 	OFFSET	O$FPAR,2,<FPAR       = %P>" 	OFFSET	O$FIOS,2,<FIOS       = %P>" 	OFFSET	O$FIO2,2,<           = %P> .IF IDN <OFFSET> <DEF$SZ>	 	RMS$L	FB$BLN= 	.MEXITM 	.IFF  	OFFSET	FB$BLN 	.ENDC STRU$E .IF DF R$$TST  .IIF GT R$$TST-1 .MEXITF .ENDC  .MACRO FABOF$ OFFSET .ENDM FABOF$ .ENDM FABOF$      M        .MACRO CTXOF$ DEFE
 .MCALL DEF ...TPC=0 .IIF IDN <DEF> <RMS$L> ...TPC=1  .IIF IDN <DEF> <RMS$G> ...TPC=1  .IF EQ ...TPCF 	DEF	X$BDB0,-10. 	DEF	X$BDB1,-8      .F 	DEF	X$BDB,-6. 	DEF	X$OVLY,-4.O 	DEF	X$PARM,-2.P 	DEF	X$IOS,0 	DEF	X$IOS2,2S 	DEF	X$STKS,4= 	DEF	X$STKB,6. 	DEF	X$STKE,28.  	DEF	X$ARGS,28.O 	DEF	X$STRU,30.  	DEF	X$ERR,32. 	DEF	X$SUC,34. 	DEF	P$CNT,0 	DEF	P$STRU,2U 	DEF	P$ERR,4 	DEF	P$SUC,6 .IFF ...TPC=0 	DEF	P$CNT,2 	DEF	P$STRU,2T 	DEF	P$ERR,2 	DEF	P$SUC,2 ...TPC=-10.  	DEF	X$BDB0,2X 	DEF	X$BDB1,2L 	DEF	X$BDB,2 	DEF	X$OVLY,2> 	DEF	X$PARM,2= 	DEF	X$IOS,2 	DEF	X$IOS2,2. 	DEF	X$STKS,2. 	DEF	X$STKB,22.B 	DEF	X$STKE,0B 	DEF      	X$ARGS,2X 	DEF	X$STRU,2X 	DEF	X$ERR,2 	DEF	X$SUC,2 .ENDCX .MACRO CTXOF$ DEF, .ENDM CTXOF$ .ENDM CTXOF$     B M        .MACRO $FT0$ ...ERR=0 ...LEN=2 .ENDM $FT0$F     B M        .MACRO $FT1$ ...ERR=0 ...LEN=2 .ENDM $FT1$E     B M        .MACRO $FT2$ ...ERR=0 ...LEN=2 .ENDM $FT2$      B M        .MACRO $FT3$ ...ERR=0 ...LEN=2 .ENDM $FT3$B     B M        .MACRO $FT4$ ...ERR=0 ...LEN=2 .ENDM $FT4$2     B M        .MACRO $FAC$ ...ERR=0 ...LEN=1 .ENDM $FAC$B           B M        .MACRO $SHR$ ...ERR=0 ...LEN=1 .ENDM $SHR$D     B M        .MACRO $FOP$ ...ERR=0 ...LEN=2 .ENDM $FOP$      B M        .MACRO $RTV$ ...ERR=0 ...LEN=1 .ENDM $RTV$      B M        .MACRO $ORG$ ...ERR=0 ...LEN=1 .ENDM $ORG$      B M        .MACRO $RAT$ ...ERR=0 ...LEN=1 .ENDM $RAT$      B M        .MACRO $XAB$ ...ERR=0 ...LEN=2 .ENDM $XAB$      B M        .MACRO $BPA$ ...ERR=0 ...LEN=2 .ENDM $BPA$      B M        .MACRO $BPS$ ...ERR=0 ...LEN=2 .E      NDM $BPS$      B M        .MACRO $MRS$ ...ERR=0 ...LEN=2 .ENDM $MRS$      B M        .MACRO $MRN$ ...ERR=0 ...LEN=4 .ENDM $MRN$      B M        .MACRO $JNL$ ...ERR=0 ...LEN=2 .ENDM $JNL$      B M        .MACRO $ALQ$ ...ERR=0 ...LEN=4 .ENDM $ALQ$      B M        .MACRO $DEQ$ ...ERR=0 ...LEN=2 .ENDM $DEQ$      B M        .MACRO $BLS$ ...ERR=0 ...LEN=2 .ENDM $BLS$      B M        .MACRO $NAM$ ...ERR=0 ...LEN=2 .ENDM $NAM$      B M        .MACRO $RFM$ ...ERR      =0 ...LEN=1 .ENDM $RFM$      B M        .MACRO $FSZ$ ...ERR=0 ...LEN=1 .ENDM $FSZ$      B M        .MACRO $BKS$ ...ERR=0 ...LEN=1 .ENDM $BKS$      B M        .MACRO $STS$ ...ERR=0 ...LEN=2 .ENDM $STS$      B M        .MACRO $STV$ ...ERR=0 ...LEN=2 .ENDM $STV$      B M        .MACRO $IFI$ ...ERR=0 ...LEN=2 .ENDM $IFI$      B M        .MACRO $BID$ ...ERR=0 ...LEN=1 .ENDM $BID$      B M        .MACRO $BLN$ ...ERR=0 ...LEN=1 .ENDM $BLN$      B M        .MAC      RO $CTX$ ...ERR=0 ...LEN=2 .ENDM $CTX$      D M        .MACRO $FPAR$N ...ERR=0 ...LEN=2 .ENDM $FPAR$     D M        .MACRO $FOVL$1 ...ERR=0 ...LEN=2 .ENDM $FOVL$     D M        .MACRO $FBDB$  ...ERR=0 ...LEN=2 .ENDM $FBDB$     D M        .MACRO $FIOS$E ...ERR=0 ...LEN=2 .ENDM $FIOS$     B M        .MACRO $DEV$ ...ERR=0 ...LEN=1 .ENDM $DEV$C     B M        .MACRO $FNA$ ...ERR=0 ...LEN=2 .ENDM $FNA$C     B M        .MACRO $FNS$ ...ERR=0 ...LEN=1 .ENDM $FNS$C           B M        .MACRO $DNA$ ...ERR=0 ...LEN=2 .ENDM $DNA$C     B M        .MACRO $DNS$ ...ERR=0 ...LEN=1 .ENDM $DNS$M     B M        .MACRO $LCH$ ...ERR=0 ...LEN=1 .ENDM $LCH$      :M        .MACRO XABDF$2 .MCALL XABOF$,..EMIT XABOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** XAB MUST BE WORD ALIGNED *****1	 	...ERR=1V 	.MEXIT  	.ENDC ...TAB=. .IF EQ <$COD-1>  ..EMIT <.BLKB	XB$KYL>  .MEXIT .ENDC  .IF EQ <$COD-2>. ..EMIT <.BLKB	XB$DTL>  .MEX      IT .ENDC  .IF EQ  <$COD-3> ..EMIT <.BLKB	XB$PRL>2 .MEXIT .ENDC  .IF EQ <$COD-4>  ..EMIT <.BLKB	XB$LAL>  .MEXIT .ENDC  .IF EQ <$COD-5>  ..EMIT <.BLKB	XB$SML>. .MEXIT .ENDC17 .ERROR ;***** XAB$B VALUE=INVALID, OR UNSUPPORTED *****X .ENDM XABDF$     NM        .MACRO XAB$BT DEF2
 .MCALL DEF 	DEF     XB$KEY,1O 	DEF   	XB$DAT,2 	DEF   	XB$PRO,3 	DEF   	XB$ALL,4 	DEF   	XB$SUM,5 	DEF   	XB$ULB,6 	DEF   	XB$FCB,7 	DEF   	XB$HDR,10X 	DEF   	XB$USR,11< 	DEF   	XB$NAM,12B 	DEF	XB$ACC,13       	DEF     XB$STG,0Q 	DEF     XB$IN2,1< 	DEF     XB$BN2,2X 	DEF     XB$IN4,3< 	DEF     XB$BN4,4B 	DEF     XB$PAC,5T 	DEF	XB$CYL,1Q 	DEF	XB$LBN,2M 	DEF	XB$VBN,4L 	DEF	XB$RFI,10 	DEF	XB$HRD,1* 	DEF	XB$CTG,2N 	DEF     XB$DUP,1E 	DEF     XB$CHG,2D 	DEF	XB$NUL,4  	DEF	XB$INI,20 .MACRO XAB$BT DEFF .ENDM XAB$BT .ENDM XAB$BT     M        .MACRO XAB$B TYPE	 .MCALL $SEQCK,XABDF$,XAB$BTD$ .MCALL X$NXT,XAB$E,X$IAN,X$LAN,X$DAN0 .MCALL X$NUL,X$FLG,X$KNM,X$POS,X$REF,X$SIZ,X$HAL .MCALL X$IFL,X$DFL       .MCALL X$PRG,X$PRJ,X$PRO$ .MCALL X$AID,X$BKZ,X$VOL,X$ALQ,X$DEQ .MCALL X$LOC,X$ALN,X$AOP,X$DTP XAB$BT DFIN$LX $SEQCK XAB,,,BB$ .IIF EQ ...ERR-1 .MEXITD ...TMP=0! .IIF IDN <TYPE> <XB$KEY> ...TMP=1 ! .IIF IDN <TYPE> <XB$DAT> ...TMP=1 ! .IIF IDN <TYPE> <XB$PRO> ...TMP=1 ! .IIF IDN <TYPE> <XB$ALL> ...TMP=1 ! .IIF IDN <TYPE> <XB$SUM> ...TMP=1 " .IIF IDN <TYPE>  <XB$ACC> ...TMP=1" .IIF IDN <TYPE>  <XB$ULB> ...TMP=1" .IIF IDN <TYPE>  <XB$FCB> ...TMP=1! .IIF IDN <TYPE> <XB$HDR> ...TMP=1H! .IIF IDN <TYPE> <XB$US      R> ...TMP=1G! .IIF IDN <TYPE> <XB$NAM> ...TMP=1V .IF EQ ...TMP  $COD=XB$'TYPEA .IFF
 $COD='TYPE .ENDCI ...COD=0 XABDF$ .IIF EQ ...ERR-1 .MEXITE ...TBL=1 ...XAB=1 $NXT=0 .IF EQ <$COD-1>M $BLN=XB$KYLN $HAL=0 $NUL=0 $DTP=0 $FLG=0 $IFL=0 $DFL=0 $KNM=0 $POS0=0I $POS1=0Y $POS2=0L $POS3=0= $POS4=0I $POS5=0  $POS6=0. $POS7=0  $REF=0 $SIZ0=0< $SIZ1=0. $SIZ2=0I $SIZ3=0Y $SIZ4=0U $SIZ5=0P $SIZ6=0I $SIZ7=0  $IAN=0 $LAN=0 $DAN=0 $LVL=0 $MRL=0 $NSG=0 $TKS=0 $IBS=0 $DBS=0 .MEX      IT .ENDC= .IF EQ <$COD-2>E $BLN=XB$DTL. .MEXIT .ENDC. .IF EQ <$COD-3>T $BLN=XB$PRLC $PRO=0 $PRG=0 $PRJ=0 .MEXIT .ENDCF .IF EQ <$COD-4>I $BLN=XB$LAL  $ALQ0=0  $ALQ1=0I $DEQ=0 $AID=0 $BKZ=0 $VOL=0 $LOC0=0L $LOC1=00 $ALN=0 $AOP=0 .MEXIT .ENDC0 .IF EQ <$COD-5>= $BLN=XB$SML  $NOK=0 $NOA=0 $NOR=0 $PVN=0 .MEXIT .ENDC  .ENDM XAB$BZ     ` M        .MACRO X$NXT LABEL .MCALL $UFLD$P $UFLD$ NXT,XAB,XAB,,LABEL0 .ENDM X$NXTN     rM        .MACRO XAB$E .MCALL $SEQCK,FIELD$,.      .EMITE $SEQCK XAB,XAB .IIF EQ ...ERR-1 .MEXITX .IF EQ $COD-1      .IF NE ...COD-2$ 	.IF NE $REF 	$FLG=XB$DUP!XB$CHGT 	.ENDC	     .ENDCC .ENDC  FIELD$ COD,1 FIELD$ BLN,1 FIELD$ NXT,2 .IF EQ <$COD-1>V 	FIELD$ REF,1  	FIELD$ HAL,10 	FIELD$ IFL,2T 	FIELD$ DFL,2Q 	FIELD$ NUL,1N 	FIELD$ IAN,10 	FIELD$ LAN,10 	FIELD$ DAN,1T 	FIELD$ FLG,1  	FIELD$ DTP,1  	FIELD$ KNM,2O 	FIELD$ POS0,2 	FIELD$ POS1,2 	FIELD$ POS2,2 	FIELD$ POS3,2 	FIELD$ POS4,2 	FIELD$ POS5,2 	FIELD$ POS6,2 	FIELD$ POS7      ,2 	FIELD$ SIZ0,1 	FIELD$ SIZ1,1 	FIELD$ SIZ2,1 	FIELD$ SIZ3,1 	FIELD$ SIZ4,1 	FIELD$ SIZ5,1 	FIELD$ SIZ6,1 	FIELD$ SIZ7,1 	FIELD$ LVL,1E 	FIELD$ IBS,1D 	FIELD$ DBS,11 	FIELD$ MRL,2  	FIELD$ TKS,1V 	FIELD$ NSG,1  ...PC1=. .=...TAB+O$RVB ..EMIT <.WORD	0,0,0,0> .=...PC1 	.ENDC .IF EQ <$COD-2>E ...PC1=.
 .=...TAB+4 	..EMIT <.WORD	0,0,0,0>E 	..EMIT <.WORD	0,0,0,0>O 	..EMIT <.WORD	0,0,0,0> 	 	.=...PC1E .ENDC2 .IF EQ <$COD-3>2 	FIELD$ PRG,22 	FIELD$ PRJ,22 	FIELD$ PRO,22 	.ENDC .IF       EQ <$COD-4>  	FIELD$	AID,1  	FIELD$	BKZ,1  	FIELD$	VOL,2  	FIELD$	LOC0,2 	FIELD$	LOC1,2 	FIELD$	ALN,1  	FIELD$	AOP,1  	FIELD$	ALQ0,2 	FIELD$	ALQ1,2 	FIELD$	DEQ,2  	.ENDC .IF EQ <$COD-5>F 	FIELD$	PVN,2F 	FIELD$	NOK,1. 	FIELD$	NOA,1B 	FIELD$	NOR,1< .ENDC, ...TBL=0 ...COD=0 ...XAB=0 .ENDM XAB$E      l M        .MACRO X$FLG P1D .MCALL $UFLD$E $UFLD$ FLG,XAB,XAB,XB$KEY,<P1> ...COD=2 .ENDM X$FLGC     h M        .MACRO X$DTP VALUE .MCALL $UFLD$ ! $UFLD$ DTP,XAB,XAB,XB$KEY,<VALUE>        .ENDM X$DTP      h M        .MACRO X$KNM LABEL .MCALL $UFLD$D! $UFLD$ KNM,XAB,XAB,XB$KEY,<LABEL>L .ENDM X$KNM	     Ž M        .MACRO X$POS OFFSET  .MCALL $SEQCK,$STRIP $SEQCK XAB,XAB .IIF EQ ...ERR-1 .MEXITD $STRIP POS,OFFSET,EEEE .ENDM X$POS,     j M        .MACRO X$REF NUMBER0 .MCALL $UFLD$ " $UFLD$ REF,XAB,XAB,XB$KEY,<NUMBER> .ENDM X$REFE     ì M        .MACRO X$SIZ SIZEC .MCALL $SEQCK,$STRIP $SEQCK XAB,XAB .IIF EQ ...ERR-1 .MEXITL ...SIZ=0 $STRIP SIZ,SIZE,EEEE .IF GT ...      SIZ-255.9 .ERROR ;***** TOTAL SIZES OF ALL KEYS GT MAX OF 255 *****D .ENDC$ .ENDM X$SIZX     h M        .MACRO X$IFL VALUE .MCALL $UFLD$O! $UFLD$ IFL,XAB,XAB,XB$KEY,<VALUE>P .ENDM X$IFLX     h M        .MACRO X$DFL VALUE .MCALL $UFLD$ ! $UFLD$ DFL,XAB,XAB,XB$KEY,<VALUE>C .ENDM X$DFLE     h M        .MACRO X$NUL VALUE .MCALL $UFLD$>! $UFLD$ NUL,XAB,XAB,XB$KEY,<VALUE>M .ENDM X$NULZ     j M        .MACRO X$HAL OFFSETB .MCALL $UFLD$R" $UFLD$ HAL,XAB,XAB,XB$KEY,<OFFSET> .ENDM X$HALT           h M        .MACRO X$IAN VALUE .MCALL $UFLD$T! $UFLD$ IAN,XAB,XAB,XB$KEY,<VALUE>$ .ENDM X$IAN      h M        .MACRO X$LAN VALUE .MCALL $UFLD$I! $UFLD$ LAN,XAB,XAB,XB$KEY,<VALUE>$ .ENDM X$LAN      h M        .MACRO X$DAN VALUE .MCALL $UFLD$D! $UFLD$ DAN,XAB,XAB,XB$KEY,<VALUE>$ .ENDM X$DAN      h M        .MACRO X$PRG VALUE .MCALL $UFLD$N! $UFLD$ PRG,XAB,XAB,XB$PRO,<VALUE>$ .ENDM X$PRG      h M        .MACRO X$PRJ VALUE .MCALL $UFLD$$! $UFLD$ PRJ,XAB,XAB,XB$PRO,<VALUE>  .ENDM X$      PRJ      h M        .MACRO X$PRO VALUE .MCALL $UFLD$$! $UFLD$ PRO,XAB,XAB,XB$PRO,<VALUE>  .ENDM X$PRO      h M        .MACRO X$AID VALUE .MCALL $UFLD$$! $UFLD$ AID,XAB,XAB,XB$ALL,<VALUE>  .ENDM X$AID      h M        .MACRO X$BKZ VALUE .MCALL $UFLD$$! $UFLD$ BKZ,XAB,XAB,XB$ALL,<VALUE>  .ENDM X$BKZ      h M        .MACRO X$VOL VALUE .MCALL $UFLD$$! $UFLD$ VOL,XAB,XAB,XB$ALL,<VALUE>  .ENDM X$VOL      X M        .MACRO X$LOC VAL1L .MCALL $WRDS $WRDS XAB,LOC,<VAL1> .ENDM X$LOCD           h M        .MACRO X$ALN VALUE .MCALL $UFLD$L! $UFLD$ ALN,XAB,XAB,XB$ALL,<VALUE>, .ENDM X$ALND     h M        .MACRO X$AOP VALUE .MCALL $UFLD$L! $UFLD$ AOP,XAB,XAB,XB$ALL,<VALUE>, .ENDM X$AOPD     X M        .MACRO X$ALQ SIZEB .MCALL $WRDS $WRDS XAB,ALQ,<SIZE> .ENDM X$ALQL     f M        .MACRO X$DEQ SIZE  .MCALL $UFLD$V  $UFLD$ DEQ,XAB,XAB,XB$ALL,<SIZE> .ENDM X$DEQ$     ÌM        .MACRO $POSIZ OFFSET,L .MCALL OFFSETC 	OFFSET	L'$POS,2 ...TPC=...TPC-2,# 	OFFSET	L'$POS0,2,<POS      0       = %P> # 	OFFSET	L'$POS1,2,<POS1       = %P> # 	OFFSET	L'$POS2,2,<POS2       = %P>E# 	OFFSET	L'$POS3,2,<POS3       = %P>X# 	OFFSET	L'$POS4,2,<POS4       = %P>P# 	OFFSET	L'$POS5,2,<POS5       = %P>D# 	OFFSET	L'$POS6,2,<POS6       = %P>B# 	OFFSET	L'$POS7,2,<POS7       = %P>  	OFFSET	L'$SIZ,1 ...TPC=...TPC-1C# 	OFFSET	L'$SIZ0,1,<SIZ0/1     = %P>$ 	OFFSET	L'$SIZ1,1,# 	OFFSET	L'$SIZ2,1,<SIZ2/3     = %P>  	OFFSET	L'$SIZ3,1S# 	OFFSET	L'$SIZ4,1,<SIZ4/5     = %P>2 	OFFSET	L'$SIZ5,1 # 	OFFSET	L'$SIZ6,1,<S      IZ6/7     = %P>  	OFFSET	L'$SIZ7,1P! .IIF IDN <OFFSET> <DEF$SZ> .MEXIT, .ENDM $POSIZ     ^M        .MACRO XABOF$ OFFSET/ .MCALL $POSIZ,RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG	) .MCALL XBKOF$,XBDOF$,XBPOF$,XBAOF$,XBSOF$S XBKOF$ OFFSET  XBDOF$ OFFSET	 XBPOF$ OFFSET  XBAOF$ OFFSETO XBSOF$ OFFSET ! .IIF IDN <OFFSET> <DEF$SZ> .MEXIT, .IF DF R$$TSTP .IIF GT R$$TST-1 .MEXITO .ENDC' .MACRO XABOF$ OFFSET .ENDM XABOF$ .ENDM XABOF$     ¶M        .MACRO XBKOF$ OFFSET( .IIF DIF <OFFSET> <DEF$SZ> STRU$B       KEYXAB ...TPC=0! 	OFFSET	O$COD,1,<COD/BLN    = %P>S 	OFFSET	O$BLN,1I! 	OFFSET	O$NXT,2,<NXT        = %P> ! 	OFFSET	O$REF,1,<REF AND LVL= %P>, 	OFFSET	O$HAL,1$ ...TPC=...TPC-1  	OFFSET	O$LVL,1O 	OFFSET	O$IFL,2,<IFL	    = %P> 	OFFSET	O$DFL,2,<DFL	    = %P>! 	OFFSET	O$NUL,1,<NUL AND IAN= %P>F 	OFFSET	O$IAN,1F! 	OFFSET	O$LAN,1,<LAN AND DAN= %P>S 	OFFSET	O$DAN,1T! 	OFFSET	O$FLG,1,<FLG & DTP  = %P>F 	OFFSET	O$DTP,1$! 	OFFSET	O$KNM,2,<KNM        = %P>M 	$POSIZ  OFFSET,O ! 	OFFSET	O$RVB,4,<RVB        = %P      >E" 	$EMSTG          <           = %P> 	OFFSET	O$DVB,4,<DVB	    = %P> 	$EMSTG	<	    = %P>T! 	OFFSET	O$IBS,1,<IBS/DBS    = %P>F 	OFFSET	O$DBS,1O! 	OFFSET	O$NSG,1,<NSG/TKS    = %P>O 	OFFSET	O$TKS,1O! 	OFFSET	O$MRL,2,<MRL/TKS    = %P>E! .IIF DIF <OFFSET> <DEF$SZ> STRU$E$ .IF IDN <OFFSET> <DEF$SZ>O 	RMS$L	XB$KYL  	.IFF	 	OFFSET	XB$KYL 	.ENDC .ENDM XBKOF$     ÚM        .MACRO XBDOF$ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B DATXAB 	OFFSET	O$COD,1,<COD/BLN= %P>E 	OFFSET	O$BLN,1  	OFFSE      T	O$NXT,2,<NXT    = %P>  	OFFSET	O$RVN,2,<RVN	= %P> 	OFFSET	O$RDT,10,<RDT    = %P> 	$EMSTG           <       = %P>S 	$EMSTG           <       = %P>F 	$EMSTG           <       = %P>O 	OFFSET	O$CDT,10,<CDT    = %P> 	$EMSTG           <       = %P>S 	$EMSTG           <       = %P>F 	$EMSTG           <       = %P>. 	OFFSET	O$EDT,10,<EDT    = %P> 	$EMSTG           <       = %P>C 	$EMSTG           <       = %P>D 	$EMSTG           <       = %P>B! .IIF DIF <OFFSET> <DEF$SZ> STRU$EO .IF IDN <OFFSET> <DE      F$SZ>X 	RMS$L	XB$DTLP 	.IFFF 	OFFSET	XB$DTL 	.ENDC .ENDM XBDOF$     œM        .MACRO XBPOF$ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B PROXAB! 	OFFSET	O$COD,1,<COD/BLN    = %P>	 	OFFSET	O$BLN,1=! 	OFFSET	O$NXT,2,<NXT        = %P>P! 	OFFSET	O$PRG,2,<PRG        = %P>F! 	OFFSET	O$PRJ,2,<PRJ        = %P>  	OFFSET	O$PRO,2,<PRO	    = %P>! .IIF DIF <OFFSET> <DEF$SZ> STRU$E$ .IF IDN <OFFSET> <DEF$SZ>P 	RMS$L	XB$PRL  	.IFF  	OFFSET	XB$PRL 	.ENDC .ENDM XBPOF$     nM        .MACRO XBAOF      $ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B ALLXAB! 	OFFSET	O$COD,1,<COD/BLN    = %P>X 	OFFSET	O$BLN,1T! 	OFFSET	O$NXT,2,<NXT        = %P>R! 	OFFSET	O$AID,1,<AID AND BKZ= %P>N 	OFFSET	O$BKZ,1E! 	OFFSET	O$VOL,2,<VOL        = %P> ! 	OFFSET	O$ALN,1,<ALN & AOP  = %P>  	OFFSET	O$AOP,1E 	OFFSET	O$ALQ,0,<ALQ	    = %P>! 	$EMSTG	        <           = %P>D 	OFFSET	O$ALQ0,2 	OFFSET	O$ALQ1,2 	OFFSET	O$DEQ,2,<DEQ	    = %P>  	OFFSET	     ,2,<SPARE	    = %P>! 	OFFSET	O$LOC,0,<LOC        = %P>  	OFFSET	O$      LOC0,2 	OFFSET  O$LOC1,2D! 	$EMSTG	        <           = %P> ! 	OFFSET	O$RFI,0,<RFI        = %P>  	$EMSTG		<           = %P> 	$EMSTG		<           = %P> 	OFFSET	O$RFI0,2 	OFFSET	O$RFI1,2 	OFFSET	O$RFI2,2! .IIF DIF <OFFSET> <DEF$SZ> STRU$EO .IF IDN <OFFSET> <DEF$SZ>  	RMS$L	XB$LAL$ 	.IFF  	OFFSET	XB$LAL 	.ENDC .ENDM XBAOF$     ÀM        .MACRO XBSOF$ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B SUMXAB 	OFFSET	O$COD,1,<COD/BLN	 =%P> 	OFFSET	O$BLN,1$" 	OFFSET	O$NXT,2,<NXT	         =%P>        	OFFSET	O$NOK,1,<NOK & NOA	 =%P> 	OFFSET	O$NOA,1 % 	OFFSET	O$NOR,1,<NOR & SPARE     =%P> 
 	OFFSET	,1% 	OFFSET	O$PVN,2,<PROLOGUE NUMBER =%P> ! .IIF DIF <OFFSET> <DEF$SZ> STRU$EE .IF IDN <OFFSET> <DEF$SZ>2 	RMS$L	XB$SMLS 	.IFFF 	OFFSET	XB$SML .ENDCO .ENDM XBSOF$     B M        .MACRO $COD$ ...ERR=0 ...LEN=1 .ENDM $COD$      B M        .MACRO $NXT$ ...ERR=0 ...LEN=2 .ENDM $NXT$T     B M        .MACRO $NUL$ ...ERR=0 ...LEN=1 .ENDM $NUL$	     B M        .MACRO $REF$ ...ERR=0       ...LEN=1 .ENDM $REF$K     B M        .MACRO $FLG$ ...ERR=0 ...LEN=1 .ENDM $FLG$=     B M        .MACRO $DTP$ ...ERR=0 ...LEN=1 .ENDM $DTP$F     @ M        .MACRO $IFL$ ...ERR=0 ...LEN=2
 .ENDM $IFL     B M        .MACRO $DFL$ ...ERR=0 ...LEN=2 .ENDM $DFL$      B M        .MACRO $IAN$ ...ERR=0 ...LEN=1 .ENDM $IAN$      B M        .MACRO $LAN$ ...ERR=0 ...LEN=1 .ENDM $LAN$      B M        .MACRO $DAN$ ...ERR=0 ...LEN=1 .ENDM $DAN$      B M        .MACRO $HA      L$ ...ERR=0 ...LEN=1 .ENDM $HAL$      B M        .MACRO $KNM$ ...ERR=0 ...LEN=2 .ENDM $KNM$      F M        .MACRO $POS$ ...ERR=0 ...LEN=^D16  .ENDM $POS$      D M        .MACRO $POS0$2 ...ERR=0 ...LEN=2 .ENDM $POS0$     D M        .MACRO $POS1$E ...ERR=0 ...LEN=2 .ENDM $POS1$     D M        .MACRO $POS2$D ...ERR=0 ...LEN=2 .ENDM $POS2$     D M        .MACRO $POS3$  ...ERR=0 ...LEN=2 .ENDM $POS3$     D M        .MACRO $POS4$D ...ERR=0 ...LEN=2 .ENDM $POS4$           D M        .MACRO $POS5$L ...ERR=0 ...LEN=2 .ENDM $POS5$     D M        .MACRO $POS6$  ...ERR=0 ...LEN=2 .ENDM $POS6$     D M        .MACRO $POS7$S ...ERR=0 ...LEN=2 .ENDM $POS7$     D M        .MACRO $SIZ$ ...ERR=0
 ...LEN=^D8 .ENDM $SIZ$1     D M        .MACRO $SIZ0$S ...ERR=0 ...LEN=1 .ENDM $SIZ0$     D M        .MACRO $SIZ1$S ...ERR=0 ...LEN=1 .ENDM $SIZ1$     D M        .MACRO $SIZ2$S ...ERR=0 ...LEN=1 .ENDM $SIZ2$     D M        .MACRO $SIZ3$S       ...ERR=0 ...LEN=1 .ENDM $SIZ3$     D M        .MACRO $SIZ4$S ...ERR=0 ...LEN=1 .ENDM $SIZ4$     D M        .MACRO $SIZ5$S ...ERR=0 ...LEN=1 .ENDM $SIZ5$     D M        .MACRO $SIZ6$S ...ERR=0 ...LEN=1 .ENDM $SIZ6$     D M        .MACRO $SIZ7$Z ...ERR=0 ...LEN=1 .ENDM $SIZ7$     B M        .MACRO $RVB$ ...ERR=0 ...LEN=4 .ENDM $RVB$I     B M        .MACRO $RVN$ ...ERR=0 ...LEN=2 .ENDM $RVN$$     D M        .MACRO $CDT$ ...ERR=0
 ...LEN=^D8 .ENDM $CDT$$     D       M        .MACRO $RDT$ ...ERR=0
 ...LEN=^D8 .ENDM $RDT$$     D M        .MACRO $EDT$ ...ERR=0
 ...LEN=^D8 .ENDM $EDT$$     B M        .MACRO $PRG$ ...ERR=0 ...LEN=2 .ENDM $PRG$O     B M        .MACRO $PRJ$ ...ERR=0 ...LEN=2 .ENDM $PRJ$C     B M        .MACRO $PRO$ ...ERR=0 ...LEN=2 .ENDM $PRO$M     B M        .MACRO $AID$ ...ERR=0 ...LEN=1 .ENDM $AID$M     B M        .MACRO $BKZ$ ...ERR=0 ...LEN=1 .ENDM $BKZ$M     B M        .MACRO $VOL$ ...ERR=0 ...LEN=2       .ENDM $VOL$      B M        .MACRO $LOC$ ...ERR=0 ...LEN=4 .ENDM $LOC$      B M        .MACRO $ALN$ ...ERR=0 ...LEN=1 .ENDM $ALN$      B M        .MACRO $AOP$ ...ERR=0 ...LEN=1 .ENDM $AOP$      B M        .MACRO $RFI$ ...ERR=0 ...LEN=6 .ENDM $RFI$      B M        .MACRO $NOK$ ...ERR=0 ...LEN=1 .ENDM $NOK$      B M        .MACRO $NOA$ ...ERR=0 ...LEN=1 .ENDM $NOA$      B M        .MACRO $NOR$ ...ERR=0 ...LEN=1 .ENDM $NOR$      B M        .MACRO $NSG$ ...E      RR=0 ...LEN=1 .ENDM $NSG$      B M        .MACRO $PVN$ ...ERR=0 ...LEN=2 .ENDM $PVN$      B M        .MACRO $TKS$ ...ERR=0 ...LEN=1 .ENDM $TKS$      B M        .MACRO $DBS$ ...ERR=0 ...LEN=1 .ENDM $DBS$      B M        .MACRO $IBS$ ...ERR=0 ...LEN=1 .ENDM $IBS$      B M        .MACRO $LVL$ ...ERR=0 ...LEN=1 .ENDM $LVL$      B M        .MACRO $MRL$ ...ERR=0 ...LEN=2 .ENDM $MRL$      B M        .MACRO $DVB$ ...ERR=0 ...LEN=4 .ENDM $DVB$      ö M        .M      ACRO NAMDF$N .MCALL NAMOF$,..EMIT NAMOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** NAM MUST BE WORD ALIGNED *****1	 	...ERR=1S 	.MEXIT  	.ENDC ...TAB=. ..EMIT <.BLKB	NB$BLN>N .ENDM NAMDF$     M        .MACRO NAM$B .MCALL $SEQCK,NAMDF$* .MCALL N$RSA,N$RLF,N$RSS,N$ESA,N$ESS,NAM$E $SEQCK NAM,,,B .IIF EQ ...ERR-1 .MEXIT  NAMDF$ .IIF EQ ...ERR-1 .MEXITR ...TBL=1 ...NAM=1 $RLF=0 $RSA=0 $RSS=0 $RSL=0 $FNB=0 $ESA=0 $ESS=0 $ESL=0 $WCC=0 .ENDM NAM$B      b       M        .MACRO N$RLF LABEL .MCALL $UFLD$S $UFLD$ RLF,NAM,NAM,,<LABEL>. .ENDM N$RLFB     b M        .MACRO N$RSA LABEL .MCALL $UFLD$* $UFLD$ RSA,NAM,NAM,,<LABEL>N .ENDM N$RSA      b M        .MACRO N$RSS VALUE .MCALL $UFLD$  $UFLD$ RSS,NAM,NAM,,<VALUE>, .ENDM N$RSSL     b M        .MACRO N$ESA LABEL .MCALL $UFLD$  $UFLD$ ESA,NAM,NAM,,<LABEL>D .ENDM N$ESA.     b M        .MACRO N$ESS VALUE .MCALL $UFLD$R $UFLD$ ESS,NAM,NAM,,<VALUE>  .ENDM N$ESS0     €M        .MACRO NAM      $E .MCALL $SEQCK,FIELD$,..EMIT  $SEQCK NAM,NAM .IIF EQ ...ERR-1 .MEXITL 	FIELD$	RLF,2B 	FIELD$	RSA,2  	FIELD$	RSS,1A 	FIELD$	RSL,1$ ...PC1=. .=...TAB+O$DVI ..EMIT <.WORD	0,0,0> ..EMIT <.WORD	0,0,0> ..EMIT <.WORD	0,0,0> .=...PC1 	FIELD$	FNB,2N 	FIELD$	ESA,2, 	FIELD$	ESS,1  	FIELD$	ESL,1  	FIELD$	WCC,2L ...TBL=0 ...NAM=0 .ENDM NAM$EN     ÆM        .MACRO NAMOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF DIF <OFFSET> <DEF$SZ> STRU$B NAM ! 	OFFSET	O$RLF,2,<RLF              = %P>L! 	OFFSET	O$RSA,2,<RSA        = %P>N! 	OFFSET	O$RSS,1,<RSS AND RSL= %P>D 	OFFSET	O$RSL,1	! 	OFFSET	O$DVI,6,<DVI        = %P>,! 	$EMSTG	        <           = %P>T" 	$EMSTG 	        <           = %P>! 	OFFSET	O$FID,6,<FID        = %P>F" 	$EMSTG          <           = %P>" 	$EMSTG          <           = %P>! 	OFFSET	O$DID,6,<DID        = %P>$! 	$EMSTG	        <           = %P> " 	$EMSTG          <           = %P>! 	OFFSET	O$FNB,2,<FNB        = %P>F! 	OFFSET	O$ESA,2,<ESA        = %P>	! 	OFFSET	O$ESS,      1,<ESS AND ESL= %P>	 	OFFSET	O$ESL,1 ! 	OFFSET	O$WCC,2,<WCC        = %P>R .IF IDN <OFFSET> <DEF$SZ>  	RMS$L	NB$BLN, 	.MEXIT  	.IFF, 	OFFSET	NB$BLN 	.ENDC! .IIF DIF <OFFSET> <DEF$SZ> STRU$E  .IF DF R$$TSTO .IIF GT R$$TST-1 .MEXIT  .ENDC  .MACRO NAMOF$ OFFSET .ENDM NAMOF$ .ENDM NAMOF$     B M        .MACRO $RLF$ ...ERR=0 ...LEN=2 .ENDM $RLF$	     B M        .MACRO $RSA$ ...ERR=0 ...LEN=2 .ENDM $RSA$O     B M        .MACRO $RSS$ ...ERR=0 ...LEN=1 .ENDM $RSS$P     B M              .MACRO $RSL$ ...ERR=0 ...LEN=1 .ENDM $RSL$	     B M        .MACRO $DVI$ ...ERR=0 ...LEN=6 .ENDM $DVI$$     B M        .MACRO $FID$ ...ERR=0 ...LEN=6 .ENDM $FID$      B M        .MACRO $DID$ ...ERR=0 ...LEN=6 .ENDM $DID$      B M        .MACRO $FNB$ ...ERR=0 ...LEN=2 .ENDM $FNB$      B M        .MACRO $ESA$ ...ERR=0 ...LEN=2 .ENDM $ESA$      B M        .MACRO $ESS$ ...ERR=0 ...LEN=1 .ENDM $ESS$      B M        .MACRO $ESL$ ...ERR=0 ...LEN=1 .ENDM $ESL$            B M        .MACRO $WCC$ ...ERR=0 ...LEN=2 .ENDM $WCC$      è M        .MACRO LCBDF$N .MCALL LCBOF$$ LCBOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** LCB MUST BE WORD ALIGNED *****.	 	...ERR=1D 	.MEXIT  	.ENDC ...TAB=. 	.BLKB	LB$BLN. .ENDM LCBDF$      M        .MACRO LCB$B .MCALL LCB$E,L$CTX,L$BIR,L$AIR .MCALL $SEQCK,LCBDF$ $SEQCK LCB,,,B .IIF EQ ...ERR-1 .MEXIT. LCBDF$ .IIF EQ ...ERR-1 .MEXIT  ...TBL=1 ...LCB=1 $CTX=0 $BIR=0 $AIR=0 $BLK0=0        $BLK1=0  $BUF=0 $LSZ=0 .ENDM LCB$B0     b M        .MACRO L$CTX VALUE .MCALL $UFLD$B $UFLD$ CTX,LCB,LCB,,<VALUE>R .ENDM L$CTX.     ` M        .MACRO L$BIR ADDRA .MCALL $UFLD$* $UFLD$ BIR,LCB,LCB,,<ADDR> .ENDM L$BIRR     ` M        .MACRO L$AIR ADDRL .MCALL $UFLD$D $UFLD$ AIR,LCB,LCB,,<ADDR> .ENDM L$AIR      ú M        .MACRO LCB$E .MCALL $SEQCK,FIELD$,..EMITL $SEQCK LCB,LCB .IIF EQ ...ERR-1 .MEXIT  	FIELD$	BIR,21 	FIELD$	CTX,2L 	FIELD$	AIR,2C 	FIELD$	BUF,2A 	FIELD$	LSZ,      2  	FIELD$	BLK0,2 	FIELD$	BLK1,2 ...TBL=0 ...LCB=0 .ENDM LCB$EL     LM        .MACRO LCBOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF DIF <OFFSET> <DEF$SZ> STRU$B LCB$ 	OFFSET	O$BIR,2,<BIR= %P>  	OFFSET	O$CTX,2,<CTX= %P>M 	OFFSET	O$AIR,2,<AIR= %P>F 	OFFSET	O$BUF,2,<BUF= %P>A 	OFFSET	O$LSZ,2,<LSZ= %P>  	OFFSET	O$BLK,0,<BLK= %P>A 	OFFSET	O$BLK0,2 	OFFSET  O$BLK1,2L 	$EMSTG	        <   = %P>  .IF IDN <OFFSET> <DEF$SZ>T 	RMS$L	LB$BLNI 	.MEXITE 	.IFF, 	OFFSET	LB$BLN       	.ENDC! .IIF DIF <OFFSET> <DEF$SZ> STRU$E0 .IF DF R$$TSTD .IIF GT R$$TST-1 .MEXIT  .ENDCO .MACRO LCBOF$ OFFSET .ENDM LCBOF$ .ENDM LCBOF$     B M        .MACRO $BIR$ ...ERR=0 ...LEN=2 .ENDM $BIR$	     B M        .MACRO $AIR$ ...ERR=0 ...LEN=2 .ENDM $AIR$A     B M        .MACRO $BUF$ ...ERR=0 ...LEN=2 .ENDM $BUF$      B M        .MACRO $LSZ$ ...ERR=0 ...LEN=2 .ENDM $LSZ$      B M        .MACRO $BLK$ ...ERR=0 ...LEN=4 .ENDM $BLK$$     f M        .MACRO $LOAD DEST,      FIELD,PTR  .MCALL $FETCHT $FETCH DEST,FIELD,PTR  .ENDM $LOADI     h M        .MACRO $FETCH DEST,FIELD,PTR .MCALL $CHKMVO $CHKMV DEST,FIELD,PTR,L  .ENDM $FETCH     l M        .MACRO $STORE SOURCE,FIELD,PTR .MCALL $CHKMVC $CHKMV SOURCE,FIELD,PTR,S2 .ENDM $STORE     vM        .MACRO $SET VALUE,FIELD,PTRL .MCALL $'FIELD'$,..EMIT  ...ERR=1	 $'FIELD'$S .IF EQ ...ERR-1L) 	.ERROR ;***** INVALID NAME - FIELD *****O 	.MEXIT. .ENDC 6 .IIF EQ ...LEN-1 ..EMIT <BISB	VALUE',O$'FIELD'('PTR')>5 .I      IF EQ ...LEN-2 ..EMIT <BIS	VALUE',O$'FIELD'('PTR')>  .IF GT ...LEN-2 . 	.ERROR ;***** FIELD LONGER THAN 2-BYTES ***** .ENDCM
 .ENDM $SET     rM        .MACRO $OFF VALUE,FIELD,PTR  .MCALL $'FIELD'$,..EMITE ...ERR=1	 $'FIELD'$C .IF EQ ...ERR-1I) 	.ERROR ;***** INVALID NAME - FIELD *****  	.MEXITE .ENDC,7 .IIF EQ ...LEN-1 ..EMIT  <BICB	VALUE',O$'FIELD'('PTR')>S5 .IIF EQ ...LEN-2 ..EMIT <BIC	VALUE',O$'FIELD'('PTR')>  .IF GT ...LEN-2 ( 	.ERROR ;***** FIELD LONGER THAN 2-BYTES .ENDCI
 .ENDM $OFF           €M         .MACRO $TESTBITS VALUE,FIELD,PTR .MCALL $'FIELD'$,..EMIT. ...ERR=1	 $'FIELD'$N .IF EQ ...ERR-1*) 	.ERROR ;***** INVALID NAME - FIELD *****  	.MEXITF .ENDC,6 .IIF EQ ...LEN-1 ..EMIT <BITB	VALUE',O$'FIELD'('PTR')>5 .IIF EQ ...LEN-2 ..EMIT <BIT	VALUE',O$'FIELD'('PTR')>L .IF GT ...LEN-2E. 	.ERROR ;***** FIELD LONGER THAN 2-BYTES ***** .ENDCD .ENDM $TESTBITSE      M         .MACRO  $COMPARE INPUT,FIELD,PTR .MCALL $'FIELD'$,..EMIT* ...ERR=1	 $'FIELD'$N .IF EQ ...ERR-1 ) 	.ERROR ;***      ** INVALID NAME - FIELD *****I 	.MEXITF .ENDCR .IF GT ...LEN-2$. 	.ERROR ;***** FIELD LONGER THAN 2-BYTES *****	 	...ERR=1* 	.MEXITL 	.ENDC .IF IDN <INPUT> <#0>0 	.IIF EQ ...LEN-1 ..EMIT <TSTB	O$'FIELD'('PTR')>/ 	.IIF EQ ...LEN-2 ..EMIT <TST	O$'FIELD'('PTR')>L 	.MEXITE 	.ENDC6 .IIF EQ ...LEN-1 ..EMIT <CMPB	INPUT',O$'FIELD'('PTR')>5 .IIF EQ ...LEN-2 ..EMIT <CMP	INPUT',O$'FIELD'('PTR')>  .ENDM $COMPARE     v M        .MACRO $INIT .MCALL ..EMIT  	.GLOBL	$RMSIA 	.GLOBL	$RMSIN ..EMIT <JSR	PC,$RM      SIN> .ENDM $INIT      z M        .MACRO $INITIF .MCALL ..EMIT  	.GLOBL	$RMSIA 	.GLOBL	$RMINF ..EMIT <JSR	PC,$RMINF> .ENDM $INITIF.     r M        .MACRO $BUFFER VALUE .MCALL ..EMITS ..EMIT <.EVEN> ..EMIT <.BLKB	^D<VALUE>> .ENDM $BUFFERE     Â M        .MACRO $RBCALI4 .MCALL $CONNECT,$DISCONNECT,$RELEASE,$FREE,$GET,$PUT5 .MCALL $FIND,$UPDATE,$DELETE,$FLUSH,$REWIND,$TRUNCATE " .MCALL $READ,$WRITE,$NXTVOL,$SPACE .ENDM $RBCAL     € M        .MACRO $FBCALL* .MCALL $CREATE,$OPEN,$CLOSE,      $EXTEND,$ERASE" .MCALL $DISPLAY,$ENQP,$DSQP,$QUIET .ENDM $FBCAL     ˆ M        .MACRO $GNCALI7 .MCALL $LOAD,$FETCH,$STORE,$SET,$OFF,$TESTBITS,$COMPARE  .MCALL $WAIT,$RETURN,$BUFFER .ENDM $GNCAL     0 M        .MACRO $RMSDTL .ENDM $RMSDT     8 M        .MACRO DPSECT$ .PSECT .ENDM DPSECT     *M        .MACRO ORG$ ORGTYP,OPTYPSL .MCALL DPSECT,TRVOF$ TRVOF$	RMS$L .PSECT	$$RMS1,D,OVR,GBL,REL,RW .IIF NDF ..$$01,..$$01=. .GLOBL	$RMSIA  .MACRO $PLUG$ OP,ORGNUMM .=..$$01+TV$'OP'+<2*'ORG      NUM'-2>, .GLOBL	$'OP''ORGNUM'E, .WORD	$'OP''ORGNUM'E .ENDM $PLUG$ .IF B ORGTYP2 .ERROR ;***** ORGANIZATION MUST BE SPECIFIED ***** DPSECT .MEXIT .ENDC  $ORG$=0A .IIF IDN ORGTYP,SEQ $ORG$=1C .IIF IDN ORGTYP,REL $ORG$=2$ .IIF IDN ORGTYP,IDX $ORG$=3  .IIF IDN ORGTYP,DIR $ORG$=4E .IF EQ $ORG$4 .ERROR ;***** ILLEGAL/UNSUPPORTED ORGANIZATION ***** DPSECT .MEXIT .ENDC$ .PSECT $$RMS1,D,OVR,GBL,REL,RW $PLUG$ OPE,\$ORG$$ $PLUG$ CLO,\$ORG$L $PLUG$ CON,\$ORG$L $PLUG$ DIS,\$ORG$. .IF B <OPTYPS> DP      SECT .MEXIT .ENDCO .IRP A,<OPTYPS>R .IF NB A $TYP$=0E .IIF IDN A,GET $TYP$=1 .IIF IDN A,PUT $TYP$=1 .IIF IDN A,FIN $TYP$=1 .IIF IDN A,UPD $TYP$=1 .IIF IDN A,DEL $TYP$=1 .IIF IDN A,CRE $TYP$=1 .IF EQ $TYP$1 .ERROR ;***** ILLEGAL/UNSUPPORTED OPERATION *****N DPSECT .MEXIT .ENDCI $PLUG$ A,\$ORG$R .ENDC  .ENDM/ DPSECT
 .ENDM ORG$     ¼ M        .MACRO POOL$B$ .MCALL $SEQCK,DPSECT2 .MCALL P$FAB,P$RAB,P$RABX,P$IDX,P$BDB,P$BUF,POOL$E $SEQCK POOL,,,BB .IIF EQ ...ERR-1 .MEXIT  ...TBL=1	 ..      .POOL=1M .ENDM POOL$B     ¶ M        .MACRO P$FAB VALUE .MCALL IFAOF$,$UFLD$ $FAB=0 $UFLD$ FAB,POOL,POOL,,VALUEF IFAOF$ DEF$SZF .PSECT	$RMS15,D,CON,GBL,REL,RW .BLKB	<$FAB*IF$BLN>A .ENDM P$FAB      ¶ M        .MACRO P$RAB VALUE .MCALL IRAOF$,$UFLD$ $RAB=0 $UFLD$ RAB,POOL,POOL,,VALUEA IRAOF$ DEF$SZ  .PSECT	$RMS13,D,CON,GBL,REL,RW .BLKB	<$RAB*IR$BLN>O .ENDM P$RABA     –M        .MACRO P$RABX VAL1,VAL2,VAL3 .MCALL IRAOF$,$UFLD$ $RBX1=0O $RBX2=0I $RBX3=0E $UFLD$ RBX1,POOL,POOL,,V      AL1O $UFLD$ RBX2,POOL,POOL,,VAL2  $UFLD$ RBX3,POOL,POOL,,VAL3M IRAOF$ DEF$SZL .PSECT	$RMS13,D,CON,GBL,REL,RW .BLKB	<$RBX1*IR$BLN> .PSECT	$RMS17,D,CON,GBL,REL,RW .IF NB VAL3A% .BLKB	<<$RBX2*2+$RBX3+1+3>&^C3>*$RBX1  .IFF .BLKB	<<$RBX2*2+3>&^C3>*$RBX1, .ENDC  .ENDM P$RABX     ¸ M        .MACRO P$IDX VAL1  .MCALL IDXOF$,$UFLD$ $IDX1=0W $UFLD$ IDX1,POOL,POOL,,VAL1  IDXOF$ DEF$SZ  .PSECT	$RMS15,D,CON,GBL,REL,RW .BLKB	<$IDX1*ID$BLN> .ENDM P$IDX=     ¶ M        .MACRO P$BDB VALUE .MCALL B      DBOF$,$UFLD$ $BDB=0 $UFLD$ BDB,POOL,POOL,,VALUEO BDBOF$ DEF$SZ  .PSECT	$RMS11,D,CON,GBL,REL,RW .BLKB	<$BDB*BD$BLN>	 .ENDM P$BDB>     ž M        .MACRO P$BUF VALUE .MCALL $UFLD$	 $BUF=0 $UFLD$ BUF,POOL,POOL,,VALUEF .PSECT	$$RMS3,D,CON,GBL,REL,RW .BLKB	<$BUF+3>&^C3 .ENDM P$BUF      p M        .MACRO POOL$EL .MCALL $SEQCK  $SEQCK POOL,POOL DPSECT ...TBL=0	 ...POOL=0D .ENDM POOL$E     f M        .MACRO $CREATE FAB,ERROR .MCALL $CALL$= $CALL$ $RMCRE,FAB,ERRORO .ENDM $CREATEM           b M        .MACRO $OPEN FAB,ERROR .MCALL $CALL$  $CALL$ $RMOPE,FAB,ERRORM .ENDM $OPEN,     f M        .MACRO $EXTEND FAB,ERROR .MCALL $CALL$  $CALL$ $RMEXT,FAB,ERRORA .ENDM $EXTENDF     d M        .MACRO $ERASE FAB,ERRORR .MCALL $CALL$E $CALL$ $RMERA,FAB,ERROR  .ENDM $ERASE     d M        .MACRO $DISPLAY FAB,ERRE .MCALL $CALL$O $CALL$ $RMDSP,FAB,ERR0 .ENDM $DISPLAY     ` M        .MACRO $CLOSE FAB,ERRA .MCALL $CALL$M $CALL$ $RMCLO,FAB,ERRM .ENDM $CLOSE     p M        .M      ACRO $CONNECT RAB,ERROR,SUCF .MCALL $CALL$L $CALL$ $RMCON,RAB,ERROR,SUCR .ENDM $CONNECT     v M         .MACRO $DISCONNECT RAB,ERROR,SUC .MCALL $CALL$L $CALL$ $RMDIS,RAB,ERROR,SUCE .ENDM $DISCONNECT      p M        .MACRO $RELEASE RAB,ERROR,SUCC .MCALL $CALL$, $CALL$ $RMREL,RAB,ERROR,SUC  .ENDM $RELEASE     j M        .MACRO $FREE RAB,ERROR,SUC .MCALL $CALL$E $CALL$ $RMFRE,RAB,ERROR,SUC  .ENDM $FREES     T M        .MACRO $RETURN .MCALL ..EMITM ..EMIT <RTS	PC>  .ENDM $RETURN            V M        .MACRO $WAIT RAB .MCALL $CALL$L $CALL$ $RMWAI,RAB, .ENDM  $WAIT     f M        .MACRO $READ RAB,ERR,SUC .MCALL $CALL$  $CALL$ $RMREA,RAB,ERR,SUCI .ENDM $READU     h M        .MACRO $WRITE RAB,ERR,SUCC .MCALL $CALL$, $CALL$ $RMWRI,RAB,ERR,SUC  .ENDM $WRITE     h M        .MACRO $GET RAB,ERROR,SUC  .MCALL $CALL$E $CALL$ $RMGET,RAB,ERROR,SUCE
 .ENDM $GET     h M        .MACRO $PUT RAB,ERROR,SUC  .MCALL $CALL$E $CALL$ $RMPUT,RAB,ERROR,SUC<
 .ENDM $PUT     j M              .MACRO $FIND RAB,ERROR,SUC .MCALL $CALL$L $CALL$ $RMFIN,RAB,ERROR,SUC  .ENDM $FIND      n M        .MACRO $UPDATE RAB,ERROR,SUC .MCALL $CALL$M $CALL$ $RMUPD,RAB,ERROR,SUCU .ENDM $UPDATE      n M        .MACRO $DELETE RAB,ERROR,SUC .MCALL $CALL$A $CALL$ $RMDEL,RAB,ERROR,SUC  .ENDM $DELETEM     b M        .MACRO $ENQP FAB,ERROR .MCALL $CALL$A $CALL$ $RMENQ,FAB,ERROR  .ENDM $ENQP      b M        .MACRO $DSQP FAB,ERROR .MCALL $CALL$M $CALL$ $RMDSQ,FAB,ERROR  .ENDM $DSQP            f M        .MACRO $QUIET FAB,ERRORL .MCALL $CALL$$ $CALL$ $RMQUI,FAB,ERRORE .ENDM  $QUIET      l M        .MACRO $FLUSH RAB,ERROR,SUCA .MCALL $CALL$L $CALL$ $RMFLU,RAB,ERROR,SUCD .ENDM $FLUSH     n M        .MACRO $REWIND RAB,ERROR,SUC .MCALL $CALL$C $CALL$ $RMRWI,RAB,ERROR,SUCE .ENDM $REWIND      r M        .MACRO $TRUNCATE RAB,ERROR,SUC .MCALL $CALL$M $CALL$ $RMTRU,RAB,ERROR,SUC  .ENDM $TRUNCATE      j M        .MACRO $NXTVOL RAB,ERR,SUC .MCALL $CALL$O $CALL$ $RMNXT,RAB,      ERR,SUC  .ENDM $NXTVOL$     h M        .MACRO $SPACE RAB,ERR,SUCU .MCALL $CALL$E $CALL$ $RMSPA,RAB,ERR,SUC  .ENDM $SPACE     È M        .MACRO $RMSTAT VALUE 	.IIF	NDF,$$ERR,$$ERR=0  .IF B <VALUE>  	$RMSTAT DFIN$LM 	.MEXITI .ENDCE .MCALL DFIN$L,DFIN$G,$IOER$L 	VALUE	SU$SUC,1. 	VALUE	SU$DUP,2. 	VALUE	SU$IDX,3. 	VALUE	SU$RRV,4. ;	VALUE	SU$BOF,5.  	VALUE	SU$RLK,20.L ...VAL=1 .IF IDN <VALUE> <DFIN$G>	 	...VAL=0  .ENDC > 	$IOER$	ER$ABO,177760,-16.,<OPERATION ABORTED(STV=ER$STK/MAP)>K 	$      IOER$	ER$ACC,177740,-32.,<F11ACP COULD NOT ACCESS FILE(STV=SYS ERR CODE)>M@ 	$IOER$	ER$ACT,177720,-48.,<"FILE" ACTIVITY PRECLUDES OPERATION>2 	$IOER$	ER$AID,177700,-64.,<BAD AREA ID(STV=@XAB)>> 	$IOER$	ER$ALN,177660,-80.,<ALIGNMENT OPTIONS ERROR(STV=@XAB)>: 	$IOER$	ER$ALQ,177640,-96.,<ALLOCATION QUANTITY TOO LARGE>1 	$IOER$	ER$ANI,177620,-112.,<NOT ANSI "D" FORMAT> @ 	$IOER$	ER$AOP,177600,-128.,<ALLOCATION OPTIONS ERROR(STV=@XAB)>H 	$IOER$	ER$AST,177560,-144.,<INVALID(I.E. SYNCH) OPERATION AT AST LEVEL>D 	$      IOER$	ER$ATR,177540,-160.,<ATTRIBUTE READ ERROR(STV=SYS ERR CODE)>E 	$IOER$	ER$ATW,177520,-176.,<ATTRIBUTE WRITE ERROR(STV=SYS ERR CODE)>O8 	$IOER$	ER$BKS,177500,-192.,<BUCKET SIZE TOO LARGE(FAB)>= 	$IOER$	ER$BKZ,177460,-208.,<BUCKET SIZE TOO LARGE(STV=@XAB)>$9 	$IOER$	ER$BLN,177440,-224.,<"BLN" LENGTH ERROR(RAB/FAB)>$@ 	$IOER$	ER$BOF,177430,-232.,<BEGINNING OF FILE DETECTED($SPACE)>F 	$IOER$	ER$BPA,177420,-240.,<PRIVATE POOL ADDRESS NOT MULTIPLE OF "4">C 	$IOER$	ER$BPS,177400,-256.,<PRIVATE POOL SIZE NOT M      ULTIPLE OF "4">7C 	$IOER$	ER$BUG,177360,-272.,<INTERNAL RMS ERROR CONDITION DETECTED>7/ 	$IOER$	ER$CCR,177340,-288.,<CAN'T CONNECT RAB>)W 	$IOER$	ER$CHG,177320,-304.,<$UPDATE-KEY CHANGE WITHOUT HAVING ATTRIBUTE OF XB$CHG SET>,> 	$IOER$	ER$CHK,177300,-320.,<BUCKET FORMAT CHECK-BYTE FAILURE>L 	$IOER$	ER$CLS,177260,-336.,<RSTS/E CLOSE FUNCTION FAILED(STV=SYS ERR CODE)>J 	$IOER$	ER$COD,177240,-352.,<INVALID OR UNSUPPORTED "COD" FIELD(STV=@XAB)>E 	$IOER$	ER$CRE,177220,-368.,<COULD NOT CREATE FILE(STV=SYS ERR COD      E)>IS 	$IOER$	ER$CUR,177200,-384.,<NO CURRENT RECORD(OPERATION NOT PRECEDED BY GET/FIND)>$U 	$IOER$	ER$DAC,177160,-400.,<F11-ACP DEACCESS ERROR DURING "CLOSE"(STV=SYS ERR CODE)>YB 	$IOER$	ER$DAN,177140,-416.,<DATA "AREA" NUMBER INVALID(STV=@XAB)>= 	$IOER$	ER$DEL,177120,-432.,<RFA-ACCESSED RECORD WAS DELETED>7F 	$IOER$	ER$DEV,177100,-448.,<BAD DEVICE, OR INAPPROPRIATE DEVICE TYPE>5 	$IOER$	ER$DIR,177060,-464.,<ERROR IN DIRECTORY NAME>=6 	$IOER$	ER$DME,177040,-480.,<DYNAMIC MEMORY EXHAUSTED>1 	$IOER$	ER$DNF,1      77020,-496.,<DIRECTORY NOT FOUND>,. 	$IOER$	ER$DNR,177000,-512.,<DEVICE NOT READY>H 	$IOER$	ER$DPE,176770,-520.,<DEVICE POSITIONING ERROR(STV=SYS ERR CODE)>; 	$IOER$	ER$DTP,176760,-528.,<"DTP" FIELD INVALID(STV=@XAB)>EN 	$IOER$	ER$DUP,176740,-544.,<DUPLICATE KEY DETECTED, XB$DUP ATTRIBUTE NOT SET>P 	$IOER$	ER$ENT,176720,-560.,<RSX-F11ACP ENTER FUNCTION FAILED(STV=SYS ERR CODE)>D 	$IOER$	ER$ENV,176700,-576.,<OPERATION NOT SELECTED IN "ORG$" MACRO>) 	$IOER$	ER$EOF,176660,-592.,<END-OF-FILE>>< 	$IOER$	ER$ESS,1      76640,-608.,<EXPANDED STRING AREA TOO SHORT>B 	$IOER$	ER$EXP,176630,-616.,<FILE EXPIRATION DATE NOT YET REACHED>C 	$IOER$	ER$EXT,176620,-624.,<FILE EXTEND FAILURE(STV=SYS ERR CODE)>5? 	$IOER$	ER$FAB,176600,-640.,<NOT A VALID FAB("BID" NOT=FB$BID)>,V 	$IOER$	ER$FAC,176560,-656.,<ILLEGAL FAC FOR REC-OP,0, OR FB$PUT NOT SET FOR "CREATE">3 	$IOER$	ER$FEX,176540,-672.,<FILE ALREADY  EXISTS >	- 	$IOER$	ER$FID,177530,-680.,<INVALID FILE-ID>"E 	$IOER$	ER$FLG,176520,-688.,<INVALID FLAG-BITS COMBINATION(STV=@XAB)>S:       	$IOER$	ER$FLK,176500,-704.,<FILE IS LOCKED BY OTHER USER>Q 	$IOER$	ER$FND,176460,-720.,<RSX-F11ACP "FIND" FUNCTION FAILED(STV=SYS ERR CODE)>,, 	$IOER$	ER$FNF,176440,-736.,<FILE NOT FOUND>0 	$IOER$	ER$FNM,176420,-752.,<ERROR IN FILE NAME>2 	$IOER$	ER$FOP,176400,-768.,<INVALID FILE OPTIONS>. 	$IOER$	ER$FUL,176360,-784.,<DEVICE/FILE FULL>C 	$IOER$	ER$IAN,176340,-800.,<INDEX "AREA" NUMBER INVALID(STV=@XAB)>1H 	$IOER$	ER$IDX,176320,-816.,<INDEX NOT INITIALIZED(STV ONLY,STS=ER$RNF)>@ 	$IOER$	ER$IFI,176300,-832.,      <INVALID IFI VALUE,OR UNOPENED FILE>L 	$IOER$	ER$IMX,176260,-848.,<MAX NUM(254) AREAS/KEY XABS EXCEEDED(STV=@XAB)>6 	$IOER$	ER$INI,176240,-864.,<$INIT MACRO NEVER ISSUED>H 	$IOER$	ER$IOP,176220,-880.,<OPERATION ILLEGAL,OR INVALID FOR FILE ORG.>I 	$IOER$	ER$IRC,176200,-896.,<ILLEGAL RECORD ENCOUNTERED(SEQ. FILES ONLY)>,C 	$IOER$	ER$ISI,176160,-912.,<INVALID ISI VALUE, OR UNCONNECTED RAB>I; 	$IOER$	ER$KBF,176140,-928.,<BAD KEY BUFFER ADDRESS(KBF=0)>I: 	$IOER$	ER$KEY,176120,-944.,<INVALID KEY FIELD(KEY=0/NEG)>      B 	$IOER$	ER$KRF,176100,-960.,<INVALID KEY-OF-REFERENCE($GET/$FIND)>E 	$IOER$	ER$KSZ,176060,-976.,<KEY SIZE=0,OR TOO LARGE(IDX)/NOT=4(REL)>8P 	$IOER$	ER$LAN,176040,-992.,<LOWEST-LEVEL-INDEX "AREA" NUMBER INVALID(STV=@XAB)>4 	$IOER$	ER$LBL,176020,-1008.,<NOT ANSI LABELED TAPE>3 	$IOER$	ER$LBY,176000,-1024.,<LOGICAL CHANNEL BUSY>	? 	$IOER$	ER$LCH,175760,-1040.,<LOGICAL CHANNEL NUMBER TOO LARGE>OV 	$IOER$	ER$LEX,175750,-1048.,<LOGICAL EXTEND ERROR,PRIOR EXTEND STILL VALID(STV=@XAB)>< 	$IOER$	ER$LOC,175740,-105      6.,<"LOC" FIELD INVALID(STV=@XAB)>3 	$IOER$	ER$MAP,175720,-1072.,<BUFFER MAPPING ERROR>6X 	$IOER$	ER$MKD,175700,-1088.,<F11ACP COULD NOT MARK FILE FOR DELETION(STV=SYS ERR CODE)>8 	$IOER$	ER$MRN,175660,-1104.,<MRN VALUE=NEG/REL.KEY>MRN>R 	$IOER$	ER$MRS,175640,-1120.,<MRS VALUE=0 FOR FIXED LENGTH RECS/=0 FOR REL. FILES>T 	$IOER$	ER$NAM,175620,-1136.,<"NAM" BLOCK ADDRESS INVALID(NAM=0, OR NOT ACCESSIBLE)>E 	$IOER$	ER$NEF,175600,-1152.,<NOT POSITIONED TO EOF(SEQ. FILES ONLY)>=G 	$IOER$	ER$NID,175560,-1168.,<CA      N'T ALLOCATE INTERNAL INDEX DESCRIPTOR>OB 	$IOER$	ER$NPK,175540,-1184.,<INDEXED FILE-NO PRIMARY KEY DEFINED>L 	$IOER$	ER$OPN,175520,-1200.,<RSTS/E OPEN FUNCTION FAILED(STV=SYS ERR CODE)>C 	$IOER$	ER$ORD,175500,-1216.,<XAB'S NOT IN CORRECT ORDER(STV=@XAB)>5> 	$IOER$	ER$ORG,175460,-1232.,<INVALID FILE ORGANIZATION VALUE>I 	$IOER$	ER$PLG,175440,-1248.,<ERROR IN FILE'S PROLOGUE(RECONSTRUCT FILE)>CD 	$IOER$	ER$POS,175420,-1264.,<"POS" FIELD INVALID(POS>MRS,STV=@XAB)>F 	$IOER$	ER$PRM,175400,-1280.,<BAD FILE DATE       FIELD RETRIEVED(STV=@XAB)>C 	$IOER$	ER$PRV,175360,-1296.,<PRIVILEGE VIOLATION(OS DENYS ACCESS)> @ 	$IOER$	ER$RAB,175340,-1312.,<NOT A VALID RAB("BID" NOT=RB$BID)>0 	$IOER$	ER$RAC,175320,-1328.,<ILLEGAL RAC VALUE>8 	$IOER$	ER$RAT,175300,-1344.,<ILLEGAL RECORD ATTRIBUTES>U 	$IOER$	ER$RBF,175260,-1360.,<INVALID RECORD BUFFER ADDR(NOT WORD-ALIGNED IF BLK-IO)> @ 	$IOER$	ER$RER,175240,-1376.,<FILE READ ERROR(STV=SYS ERR CODE)>4 	$IOER$	ER$REX,175220,-1392.,<RECORD ALREADY EXISTS>3 	$IOER$	ER$RFA,175200,-1408.,<BA      D RFA VALUE(RFA=0)>=4 	$IOER$	ER$RFM,175160,-1424.,<INVALID RECORD FORMAT>E 	$IOER$	ER$RLK,175140,-1440.,<TARGET BUCKET LOCKED BY ANOTHER STREAM>BR 	$IOER$	ER$RMV,175120,-1456.,<RSX-F11ACP REMOVE FUNCTION FAILED(STV=SYS ERR CODE)>= 	$IOER$	ER$RNF,175100,-1472.,<RECORD NOT FOUND(STV=0/ER$IDX)>,0 	$IOER$	ER$RNL,175060,-1488.,<RECORD NOT LOCKED>5 	$IOER$	ER$ROP,175040,-1504.,<INVALID RECORD OPTIONS> M 	$IOER$	ER$RPL,175020,-1520.,<ERROR WHILE READING PROLOGUE(STV=SYS ERR CODE)> = 	$IOER$	ER$RRV,175000,-1536.,<      INVALID RRV RECORD ENCOUNTERED>R: 	$IOER$	ER$RSA,174760,-1552.,<RAB STREAM CURRENTLY ACTIVE>W 	$IOER$	ER$RSZ,174740,-1568.,<BAD RECORD SIZE(RSZ>MRS, OR NOT=MRS IF FIXED LENGTH RECS>-T 	$IOER$	ER$RTB,174720,-1584.,<RECORD TOO BIG FOR USER'S BUFFER(STV=ACTUAL REC SIZE)>O 	$IOER$	ER$SEQ,174700,-1600.,<PRIMARY KEY OUT OF SEQUENCE(RAC=RB$SEQ FOR $PUT)>OR 	$IOER$	ER$SHR,174660,-1616.,<"SHR" FIELD INVALID FOR FILE(CAN'T SHARE SEQ FILES)>< 	$IOER$	ER$SIZ,174640,-1632.,<"SIZ" FIELD INVALID(STV=@XAB)>: 	$IOER$	ER$STK      ,174620,-1648.,<STACK TOO BIG FOR SAVE AREA>G 	$IOER$	ER$SYS,174600,-1664.,<SYSTEM DIRECTIVE ERROR(STV=SYS ERR CODE)>1/ 	$IOER$	ER$TRE,174560,-1680.,<INDEX TREE ERROR>DG 	$IOER$	ER$TYP,174540,-1696.,<ERROR IN FILE TYPE EXTENSION/FNS TOO BIG>UU 	$IOER$	ER$UBF,174520,-1712.,<INVALID USER BUFFER ADDR(0,OR BLK-IO NOT WORD ALIGNED)>A> 	$IOER$	ER$USZ,174500,-1728.,<INVALID USER BUFFER SIZE(USZ=0)>6 	$IOER$	ER$VER,174460,-1744.,<ERROR IN VERSION NUMBER>> 	$IOER$	ER$VOL,174440,-1760.,<INVALID VOLUME NUMBER(STV=@XAB      )>A 	$IOER$	ER$WER,174420,-1776.,<FILE WRITE ERROR(STV=SYS ERR CODE)>15 	$IOER$	ER$WLK,174410,-1784.,<DEVICE IS WRITE-LOCKED>RM 	$IOER$	ER$WPL,174400,-1792.,<ERROR WHILE WRITING PROLOGUE(STV=SYS ERR CODE)> A 	$IOER$	ER$XAB,174360,-1808.,<NOT A VALID XAB(@XAB=ODD,STV=@XAB)>< .MACRO $RMSTAT VALUE .ENDM $RMSTATN .ENDM $RMSTAT)     ô M        .MACRO $IOER$ SYM,VAL,DEC,MSGF .IF EQ ...VAL> .MCALL DFIN$GR DFIN$G SYM,VAL .IFF .MCALL DFIN$LE DFIN$L SYM,VAL .ENDC4 .IIF B <MSG> .MEXITU .IF GT $$ERR 	.      WORD	-^O<VAL>R 	.ASCIZ	^MSG^7 	.EVEN .ENDCE .ENDM $IOER$     þM        .MACRO ARDOF$ OFFSET .MCALL OFFSET,RMS$LK ...TPC=0 	OFFSET	A$FILL,1 	OFFSET	A$FLG,1L 	OFFSET	A$AID,1E 	OFFSET	A$BKZ,1) 	OFFSET	A$VOL,2B 	OFFSET	A$ALN,1O 	OFFSET	A$AOP,1B 	OFFSET	A$AVL,2  	OFFSET	A$AVL2,2 	OFFSET	A$CVB,2N 	OFFSET	A$CVB2,2 	OFFSET	A$CNB,2  	OFFSET	A$CNB2,2 	OFFSET	A$NUS,2  	OFFSET	A$NUS2,2 	OFFSET	A$NVB,2S 	OFFSET	A$NVB2,2 	OFFSET	A$NXT,2L 	OFFSET	A$NXT2,2 	OFFSET	A$XBY,2I 	OFFSET	A$XBY2,2       	OFFSET	A$DEQ,2 
 	OFFSET	,2 	OFFSET	A$LOC,2E 	OFFSET	A$LOC2,2 	OFFSET	A$RFI,0M 	OFFSET	A$RFI0,2 	OFFSET	A$RFI1,2 	OFFSET	A$RFI2,2 	OFFSET	A$FILL2,12.E 	OFFSET	A$CRC,2E .IF IDN <OFFSET> <DEF$SZ>) 	RMS$L	AD$BLN,0B 	.MEXIT	 .IFF 	OFFSET	AD$BLN,0 .ENDCF .MACRO ARDOF$ OFFSET .ENDM ARDOF$ .ENDM ARDOF$     òM        	.MACRO	IFAOF$	OFFSETE) 	.MCALL	RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG2' 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IFABO ...TPC=0# 	OFFSET	C$BID,1,<BID - BKP1	  = %P>, 	OFFSET	C$BKP1,1" 	O      FFSET	C$NIRB,2,<NXT IRAB	  = %P>% 	OFFSET	F$UBSZ,1,<UBSZ - LCHN	  = %P>E 	OFFSET	F$LCHN,1% 	OFFSET	F$DVCH,1,<DVCH - FACC	  = %P>$ 	OFFSET	F$FACC,1& 	OFFSET	      ,4,<SPARE	      	  = %P> 	$EMSTG		 <            	  = %P>B! 	OFFSET	F$BDBP,2,<BDB PTR	  = %P> & 	OFFSET	F$IFAB,2,<NXT IFAB    	  = %P>( 	OFFSET	F$POOL,4,<PRIVATE BUF POOL = %P> 	$EMSTG		 <            	  = %P>F 	OFFSET	F$LMRN,2 	OFFSET	F$HMRN,2 ...TPC=...TPC-4Z( 	OFFSET	F$IDXP,2,<IDX DESC/BLK-SZ  = %P> ...TPC=...TPC-2P 	OFFSET	F$BLSZ,2( 	OFF      SET	F$KBSZ,2,<KEY BUFFER SIZE  = %P>% 	OFFSET	F$AVBN,1,<AVBN - AMAX	  = %P>O 	OFFSET	F$AMAX,1 ...TPC=...TPC-2V 	OFFSET	F$DVBN,2% 	OFFSET	F$FORG,1,<FORG - RATT	  = %P>P 	OFFSET	F$RATT,1& 	OFFSET	F$RSIZ,2,<RECORD SIZE 	  = %P>$ 	OFFSET	F$HVBN,2,<HI VBN    	  = %P> 	$EMSTG		 <            	  = %P>  	OFFSET	F$LVBN,2$ 	OFFSET	F$HEOF,2,<HI EOF BLK	  = %P>$ 	OFFSET	F$LEOF,2,<LO EOF BLK	  = %P>' 	OFFSET	F$FFBY,2,<1ST FREE BYTE	  = %P>E% 	OFFSET	F$BKSZ,1,<BKSZ - HDSZ	  = %P>T 	OFFSET	F$HDSZ,1 	OFFSET	F$MRS,2,      <MRS		  = %P><" 	OFFSET	F$DEQ,2,<DEQ	     	  = %P>& 	OFFSET	F$RTDE,2,<RTDE        	  = %P>" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	IF$BLNP 	.IFFE 	OFFSET	IF$BLN 	.ENDC .IF DF R$$TSTZ .IIF GT R$$TST-1 .MEXITN .ENDCV 	.MACRO	IFAOF$	OFFSET	 	.ENDM 	.ENDM	IFAOF$      M        	.MACRO	IFA$BT	DEF 	.MCALL	DEF= 	DEF	IF$BID,13 	DEF	BK$BUS,1B 	DEF	BK$IOP,2F 	DEF	BK$EOF,10 	DEF	BK$PRV,4  	DEF	BK$RWC,20 	DEF	BK$PAR,40 	DEF	BK$ACC,100F 	DEF	BK$ANI,200F 	DEF	FB$SH      R,200	 	.MACRO	IFA$BT	DEF 	.ENDM 	.ENDM	IFA$BT>     ~M        	.MACRO	IRAOF$	OFFSET ) 	.MCALL	RMS$L,OFFSET,STRU$B,STRU$E,$EMSTGN ...TPC=0' 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IRAB	" 	OFFSET	C$BID,1,<BID - BKP1	 = %P> 	OFFSET	C$BKP1,1! 	OFFSET	C$NIRB,2,<NXT IRAB	 = %P> $ 	OFFSET	R$IFAB,2,<PTR TO IFAB	 = %P>$ 	OFFSET	R$CBDB,2,<CURRENT BDB	 = %P>! 	OFFSET	R$NBDB,2,<NEXT BDB	 = %P>F  	OFFSET	R$LNRP,2,<LOW NRP	 = %P>! 	OFFSET	R$HNRP,2,<HIGH NRP	 = %P>A' 	OFFSET	R$INRP,1,<ID KEY REF/BNRP = %P>  	OFFSET	      R$KNRP,1 ...TPC=...TPC-2F 	OFFSET	R$BNRP,2# 	OFFSET	R$LRP,2,<LOW RP	    	 = %P>O 	OFFSET	R$HRP,2,<HIGH RP	 = %P>S" 	OFFSET	R$IRP,1,<ID KEY REF	 = %P> 	OFFSET	R$KRP,1E ...TPC=...TPC-2	 	OFFSET	R$BRP,2," 	OFFSET	R$IRRV,1,<ID - BCNT	 = %P> ...TPC=...TPC-12 	OFFSET	R$MBC,1  	OFFSET	R$BCNT,1  	OFFSET	R$LRRV,2,<LOW RRV	 = %P> ...TPC=...TPC-2	 	OFFSET	R$CSIZ,2! 	OFFSET	R$HRRV,2,<HIGH RRV	 = %P>$% 	OFFSET	R$NKAD,2,<KEY STG ADDR	 = %P>2! 	OFFSET	R$SPOS,2,<SIDR-POS	 = %P>1" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU      $E 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	IR$BLN  	.IFF	 	OFFSET	IR$BLN 	.ENDC .IF DF R$$TST$ .IIF GT R$$TST-1 .MEXITO .ENDC$ 	.MACRO	IRAOF$	OFFSET> 	.ENDM 	.ENDM	IRAOF$T     M        	.MACRO	IRA$BT	DEF 	.MCALL	DEFD 	DEF	IR$BID,11 	DEF	BK$BUS,12 	DEF	BK$IOP,2, 	DEF	BK$EOF,10 	DEF	BK$ASY,200R 	DEF	BK$FND,100% 	DEF	BK$IDX,100- 	DEF	BK$BLK,40 	DEF	BK$SEQ,20 	DEF	BK$SSK,10 	DEF	BK$DUP,4E 	.MACRO	IRA$BT	DEF 	.ENDM 	.ENDM	IRA$BT$     r M        .MACRO KDX$BT DEFO
 .MCALL DEF 	DEF	P      R$NEX,1F .MACRO KDX$BT DEFS .ENDM KDX$BT .ENDM KDX$BT     øM        	.MACRO	KDXOF$	OFFSETI0 	.MCALL	$POSIZ,RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0) 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	PDXDSCR* 	OFFSET  K$NLVB,2,<LOW VBN OF NXT DESC %P>+ 	OFFSET  K$NHVB,2,<HIGH VBN OF NXT DESC %P>0+ 	OFFSET  K$NBYT,2,<BYTE POS OF NXT DESC %P>$ 	OFFSET	K$IAN,1,< AREA #'S	%2P>$ 	OFFSET	K$LAN,1S 	OFFSET	K$DAN,1, 	OFFSET	K$LVL,1T) 	OFFSET  K$IBKS,1,<IDX/DATA BKT SIZE  %P>  	OFFSET  K$DBKS,1E ...TPC=...TPC-1D 	O      FFSET	P$DBKS,1# 	OFFSET	K$LVBN,2,< LOW ROOT VBN	%P>D" 	OFFSET	K$HVBN,2,< HI ROOT VBN	%P>( 	OFFSET	K$FLGS,1,< INDEX FLAGS-FILL  %P> ...TPC=...TPC-1G 	OFFSET	P$FLGS,1 	OFFSET	K$DTP,1$" 	OFFSET	K$NSEG,1,< #SEG - NULL	%P> 	OFFSET	K$NULL,1( 	OFFSET	K$KYSZ,1,<TOTAL KEY SIZE/KRF %P> 	OFFSET	K$KEY,1F( 	OFFSET	K$MINL,2,<MIN LENGTH RECORD  %P>% 	OFFSET	K$IFIL,2,< IDX FILL BYTES	%P>E& 	OFFSET	K$DFIL,2,< DATA FILL BYTES	%P> 	$POSIZ OFFSET,K! 	OFFSET  K$KNM,32.,< KEY NAME %P>O 	OFFSET	K$LDVB,2 	OFFSET	K$HDVB,2       	OFFSET	,14. 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	KD$BLNO 	.IFF$ 	OFFSET	KD$BLN 	.ENDC4 	OFFSET  P$AVBN,1,<VBN OF AREA DESC/# AREA DESCS %P> 	OFFSET  P$AMAX,1L- 	OFFSET	P$DVBN,2,<DVBN=FIRST DATA BKT VBN=%P>  	OFFSET	P$DVB2,2% 	OFFSET	P$LMRN,2,<MAX REC NUMBER =%P> * 	OFFSET	P$HMRN,2,<HIGH-MAX REC NUMBER =%P>" 	OFFSET	P$LEOF,2,<LOW-EOF VBN =%P># 	OFFSET	P$HEOF,2,<HIGH-EOF VBN =%P>F% 	OFFSET	P$VERN,2,<VERSION NUMBER =%P>O" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E .IF DF R$$TSTO .IIF GT R$$TST-1 .MEXIT$ .ENDC        	.MACRO	KDXOF$	OFFSET< 	.ENDM 	.ENDM	KDXOF$L     b M        .MACRO IDX$BT DEFN
 .MCALL DEF .MACRO IDX$BT DEFR .ENDM IDX$BT .ENDM IDX$BT     M        	.MACRO	IDXOF$	OFFSETF0 	.MCALL	$POSIZ,RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0) 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IDXDSCH* 	OFFSET	I$IBKS,1,<IDX/DATA BKT SIZE  = %P> 	OFFSET	I$DBKS,1% 	OFFSET	I$NXT,2,<NXT IDXDSC	    = %P>E( 	OFFSET	I$LVBN,2,<LOW ROOT VBN	    = %P>' 	OFFSET	I$HVBN,2,<HI ROOT VBN	    = %P>O ...TPC=...TPC-41 	OFFSET	I$UDAR      ,1 	OFFSET	I$IDAR,1 	OFFSET	I$LDAR,1
 	OFFSET	,1* 	OFFSET	I$FLGS,1,<INDEX FLAGS-FILL   = %P> 	OFFSET	I$DTP,1B' 	OFFSET	I$NSEG,1,<#SEG - NULL	    = %P>  	OFFSET	I$NULL,1* 	OFFSET	I$KYSZ,1,<TOTAL KEY SIZE/KRF = %P> 	OFFSET	I$KEY,1E* 	OFFSET	I$MINL,2,<MIN LENGTH RECORD  = %P>$ 	OFFSET	I$IFIL,2,<IDX FILL	    = %P>% 	OFFSET	I$DFIL,2,<DATA FILL	    = %P>  	$POSIZ OFFSET,I* 	OFFSET	      ,4,<                   = %P># 	$EMSTG		 <                   = %P>< 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	ID$BLNO 	.IFF$ 	O      FFSET	ID$BLN 	.ENDC" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E .IF DF R$$TSTN .IIF GT R$$TST-1 .MEXITO .ENDC$ 	.MACRO	IDXOF$	OFFSET1 	.ENDM 	.ENDM	IDXOF$      $M        .MACRO BKT$BT DEF<
 .MCALL DEF 	DEF	BC$LBK,1O 	DEF	BC$ROT,2  	DEF	IC$KCP,42 	DEF	IC$EMP,10 	DEF	IC$NUL,20 	DEF	DC$DEL,4D 	DEF	DC$RRV,10 	DEF	DC$NPS,20 	DEF	DC$KDL,40 	DEF	DC$NCP,100  ;	DEF	DC$DEL,4 	DEF	DC$REC,10 .MACRO BKT$BT DEF> .ENDM BKT$BT .ENDM BKT$BT     hM        .MACRO BKTOF$ OFFSET .MCALL OFFSET  ...TPC=0       	OFFSET	B$CHK,1N 	OFFSET	B$TAA,1F 	OFFSET	B$ADR,2U 	OFFSET	B$NBY,2N 	OFFSET	B$NID,11 	OFFSET	B$LID,1  	OFFSET	B$NBK,4F 	OFFSET	B$LEV,1N 	OFFSET	B$BCB,1 	OFFSET	B$REC,0O 	OFFSET	S$BHD,0A ...TPC=0 	OFFSET	B$PS,0 	OFFSET	B$IRCB,1 	OFFSET	B$BPTR,0 	OFFSET	S$IDXR ...TPC=0 	OFFSET	B$PS,0 	OFFSET	B$DRCB,1 	OFFSET	B$ID,1 	OFFSET	B$RPTR,5 	OFFSET	B$RHDR,0 	OFFSET	S$UDRF ...TPC=0 	OFFSET	B$PS,0 	OFFSET	B$DRCB,1 	OFFSET	B$ID,1 	OFFSET	B$SIZ,2  	OFFSET	B$KEY,0S 	OFFSET	S$SIDR .MACRO BKT      OF$ OFFSET .ENDM BKTOF$ .ENDM BKTOF$     ÒM        	.MACRO	BDBOF$	OFFSETE) 	.MCALL	RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG, ...TPC=0& 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	BDB  	OFFSET	B$WK1,2,<WORK AREA	= %P> 	OFFSET	B$NXT,2,<NEXT BDB	= %P>1 	OFFSET	B$OWN,2,<OWNER		= %P>D# 	OFFSET	B$NUMB,2,<#BYTES USED	= %P>	# 	OFFSET	B$WAIT,2,<WAIT THREAD	= %P>P# 	OFFSET	B$FLGS,1,<FLAGS - USE	= %P>F 	OFFSET	B$USE,1E 	OFFSET	B$LVBN,2,<LOW VBN	= %P>E  	OFFSET	B$HVBN,2,<HIGH VBN	= %P># 	OFFSET	B$SIZE,2,<SIZE OF BUF	= %P>T      # 	OFFSET	B$ADDR,2,<ADDR OF BUF	= %P>$" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	BD$BLN$ 	.IFF  	OFFSET	BD$BLN 	.ENDC .IF DF R$$TSTT .IIF GT R$$TST-1 .MEXIT, .ENDCR 	.MACRO	BDBOF$	OFFSET, 	.ENDM 	.ENDM	BDBOF$F     ä M        	.MACRO	BDB$BT	DEF 	.MCALL	DEFS 	DEF	BD$VAL,1O 	DEF	BD$DRT,2< 	DEF	BD$IOP,4P 	DEF	BD$LCK,10 	DEF	BD$DYM,20 	DEF	BD$PRM,40 	DEF	BD$WFO,100E 	DEF	BD$ELK,200B 	.MACRO	BDB$BT	DEF 	.ENDM 	.ENDM	BDB$BT      ðM        	.MACRO	IMAOF$	O      FFSETF# 	.MCALL	OFFSET,STRU$B,STRU$E,$EMSTGI ...TPC=0) 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IMAREAF, 	OFFSET	Y$BDBH,4,<BDB BLOCK POOL       = %P>% 	$EMSTG		 <                     = %P>1, 	OFFSET	Y$IRAH,4,<IRAB BLOCK POOL      = %P>% 	$EMSTG		 <                     = %P>., 	OFFSET	Y$IFAH,4,<IFAB/IDX BLOCK POOL  = %P>% 	$EMSTG		 <                     = %P>B, 	OFFSET	Y$KEYH,4,<KEY STRING BUF POOL  = %P>% 	$EMSTG		 <                     = %P>	) 	OFFSET	Y$BFLH,4,<BUFFER POOL	      = %P> % 	$EMSTG		 <                           = %P>L, 	OFFSET	Y$WIN0,1,<MAPPING WINDOW-0-1   = %P> 	OFFSET	Y$WIN1,1, 	OFFSET	Y$DREG,2,<DYNAMIC REGION NUMBER= %P>, 	OFFSET	Y$DYLH,4,<DYNAMIC MAPPED POOL  = %P>% 	$EMSTG		 <                     = %P>B, 	OFFSET	Y$FATL,2,<@FATAL ERROR ROUTINE = %P>, 	OFFSET	Y$ENSP,2,<UNADJ ENTRY SP       = %P>) 	OFFSET	Y$CTXP,2,<CONTEXT PTR	      = %P> ) 	OFFSET	Y$STKR,2,<STACK RESET	      = %P>F, 	OFFSET	Y$WKQH,2,<WORK QUEUE HEAD      = %P>, 	OFFSET	Y$WKQT,2,<WORK QUEUE TAIL      = %P>+ 	OFFSET	Y$SYSV,2,<SYSTEM STA      TUS	      = %P> , 	OFFSET	Y$IFAB,2,<IFAB LIST            = %P>, 	OFFSET	Y$RECN,2,<@REC-NUM TO RFA SUBR.= %P>- 	OFFSET  Y$AUTO,4,<AUTO LOAD CALL       = %P>P% 	$EMSTG		 <                     = %P> ( 	OFFSET	Y$QIO,24.,<QIO DPB SCRATCH AREA> ...TPC=Y$QIO 	OFFSET	Y$DIC,2N 	OFFSET	Y$IOFC,2 	OFFSET	Y$LCHN,2 	OFFSET	Y$EFPI,2 	OFFSET	Y$IOST,2 	OFFSET	Y$AST,2T 	OFFSET	Y$PARM,12.% 	$EMSTG		 <DIC/DPB SIZE         = %P>E 	$EMSTG		 <IO FUNC	      = %P># 	$EMSTG		 <LUN/NOT USED	      = %P>E 	$EMSTG		 <EFN/PRI	            = %P> 	$EMSTG		 <IO STAT	      = %P> 	$EMSTG		 <AST ADDR	      = %P>E 	$EMSTG		 <P0		      = %P> 	$EMSTG		 <P1		      = %P> 	$EMSTG		 <P2		      = %P> 	$EMSTG		 <P3		      = %P> 	$EMSTG		 <P4		      = %P> 	$EMSTG		 <P5		      = %P>$ 	$EMSTG		 <IO EXEC TRANSFER VECTORS>* 	OFFSET	Y$TSTA,2,<START THREAD	      = %P>' 	OFFSET	Y$READ,2,<READ FUNC	      = %P>E) 	OFFSET	Y$WRITE,2,<WRITE FUNC	      = %P> * 	OFFSET	Y$SPFN,2,<SPECIAL FUNC	      = %P>' 	OFFSET	Y$FILE,2,<FILE FUNC	      = %P>T% 	OFFSET	Y$WA      IT,2,<IO WAIT	      = %P> * 	OFFSET  Y$GETS,2,<GET SEGMENT	      = %P>" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E .IF DF R$$TST  .IIF GT R$$TST-1 .MEXIT	 .ENDC= 	.MACRO	IMAOF$	OFFSET  	.ENDM 	.ENDM	IMAOF$	      M        	.MACRO	IMA$BT	DEF 	.MCALL	DEF  	DEF	SY$AST,1E 	DEF	SY$INI,2F 	DEF	SY$ELK,4T 	.MACRO	IMA$BT	DF% 	.ENDM 	.ENDM	IMA$BTE     âM        	.MACRO  $LOCALS
 	HA.BLS=13 	HA.UI=1 	HA.FP=2	 	HA.CHU=3N	 	HA.UAT=4 	 	HA.NAM=5=	 	HA.TYP=6E	 	HA.VER=7< 	HA.NAW=10.  	HA.EXT=14.F
 	EX.AL      L=20	 	AL.VBN=1 	 	AL.APX=2 	 	AL.LBN=4G
 	S$PTRS=8. 	S$BDB=0 	S$NAM=2 	S$FNB=4 	S.$SDC=3*4$ 	S$ATR=6
 	S$ESS=64. 	FA.ENB=100000 	FA.WCK=20000  	FA.SEQ=40000	 	FA.LCK=400  	FA.XLK=4000 	FA.DLK=1000 	FA.RWD=4000 	FA.POS=10000T 	FA.FLL=2000 	FA.NEF=40000S 	.MACRO $LOCALS, 	.ENDM $LOCALS 	.ENDM $LOCALS     4M        .MACRO TRVOF$ OFFSET .MCALL OFFSETR ...TPC=0 	OFFSET  TV$OPE,8. 	OFFSET  TV$CRE,8. 	OFFSET  TV$CLO,8. 	OFFSET  TV$CON,8. 	OFFSET  TV$DIS,8. 	OFFSET  TV$GET,8. 	OFFSE      T  TV$PUT,8. 	OFFSET  TV$UPD,8. 	OFFSET  TV$DEL,8. 	OFFSET  TV$FINM .MACRO TRVOF$ OFFSET .ENDMS .ENDM TRVOF$     8M       6 	.MACRO	GCMLB$	MAXD,PRMPT,UBUF,LUN,PDL,SIZE,?PDL1,?BUF 	.MCALL	FAB$B,RAB$B,NAM$BW $$$CMB:	.WORD	1,$$$RAB 	.WORD	1,$$$FAB. $$$RAB:	RAB$BA 	R$FAB	$$$FAB. 	R$RAC	RB$SEQ. 	RAB$E $$$FAB:	FAB$B  	F$DNA	$$$DNA+3V 	F$DNS	7 	F$FNA	$$$FNAR 	F$FNS	3 	F$FAC	FB$GETP 	.IF	NB	<LUN>T
 	F$LCH	LUN 	.IFFT 	F$LCH	1 	.ENDC 	F$NAM	$$$NAMF 	F$ORG	FB$SEQ  	F$RAT	0 	F$RFM	FB$VARE       	FAB$E $$$NAM:	NAM$BT
 	N$ESS	34. 	NAM$E $$$DNA:	.ASCII	/SY:CMI.CMD/M $$$FNA:	.ASCII	/CMI/
 	.BLKB	29. 	.MCALL	GCMLD$ 	GCMLD$ $ 	.BYTE	0,GE.COM!GE.IND!GE.CLO!GE.CON 	.BLKW	4 	.BYTE	-1,MAXD 	.IF B	<PDL> 	.WORD	PDL1	 	.IFF,
 	.WORD	PDL 	.ENDC 	.IF NB <UBUF> 	.WORD	UBUF$ 	.IFF 
 	.WORD	BUF 	.ENDC 	.IF	NB,<SIZE> 	.WORD	SIZE,0N 	.IFFF 	.WORD	80.,0 	.ENDC $$$=.S 	.ASCII	<^O 15> <^O 12>N 	.IF NB	<PRMPT>L 	.ASCII	/PRMPT>/ 	.IFFN 	.ASCII	/   >/ 	.ENDC .=$$$+6  G.LPDL=<MAXD+1>*<10+<5*2      >> 	.IF B	<PDL> PDL1:	.BLKB	G.LPDL 	.ENDC 	.IF B	<UBUF>I 	.IF	NB,<SIZE> BUF:	.BLKB	SIZE+2/ 	.IFFB BUF:	.BLKB	82. 	.ENDC 	.ENDC GE.LEN=.-$$$CMBE 	.ENDM	GCMLB$C     †M       & 	.MACRO	GCML$	NAME,ADPR,LNPR,UBUF,SIZE 	.MCALL	GCMLD$,LDR0$ 	GCMLD$	DEF$LU 	LDR0$	NAMEU 	.IF NB	<LNPR> 	MOV	LNPR,G.PSDS(R0) 	.IIF B	<ADPR>, .ERROR& 	.IIF NB	<ADPR>,	MOV	ADPR,G.PSDS+2(R0) 	.ENDC 	.IIF B	<LNPR>,	CLR	G.PSDS(R0) 	.IF NB	<UBUF> 	MOV	UBUF,G.RBUF(R0) 	.ENDC 	.IF NB	<SIZE> 	MOV	SIZE,G.BFSZ(R0) 	.EN      DC 	.GLOBL	$RGCM1 	JSR	PC,$RGCM1 	.ENDM	GCML$     r M        	.MACRO	RCML$	NAME 	.MCALL	LDR0$F 	LDR0$	NAMEB 	.GLOBL	$RGCM2 	JSR	PC,$RGCM2 	.ENDM	RCML$     p M        	.MACRO	CCML$	BLKC 	.MCALL	LDR0$N
 	LDR0$	BLK 	.GLOBL	$RGCM3 	JSR	PC,$RGCM3 	.ENDM	CCML$     n M        	.MACRO	GCMLD$	GBL 	.MCALL	GCML$D 	GCML$D	GBLR 	.MACRO	GCMLD$	X 	.ENDM 	.ENDM	GCMLD$      €M        	.MACRO	GCML$D	GBL 	.IF IDN	<GBL>,<DEF$G>" 	.GLOBL	G.FAB,G.DSTR,G.FSTR,G.PPTR" 	.GLOBL	G.ERR,G.MODE,G.PSDS,      G.CMLD# 	.GLOBL	G.RSTS,G.FSTS,G.BFSZ,G.RBUFG) 	.GLOBL	GE.COM,GE.IND,GE.CLO,GE.LC,GE.LEN 1 	.GLOBL	GE.IOR,GE.OPR,GE.BIF,GE.MDE,GE.BFS,GE.EOFP 	.ENDC 	.MCALL	FABOF$,RABOF$,NAMOF$ 	FABOF$	RMS$LL 	RABOF$	RMS$L	 	NAMOF$	RMS$LB
 G.RAB	= 10 G.RSTS	= G.RAB+O$STS G.RSTV	= G.RAB+O$STV G.FAB	= G.RAB+RB$BLN G.FSTS	= G.FAB+O$STS G.DSTR	= G.FAB+FB$BLN+NB$BLN G.FSTR	= G.DSTR+10.G G.ERR	= G.FSTR+32. G.MODE	= G.ERR+1 G.PSDS	= G.ERR+2 G.CMLD	= G.ERR+6 G.PPTR	= G.CMLD+6F G.RBUF	= G.PPTR+2	 G.BFSZ	= G.RBUF+2,       G.ISIZ	= 20. G.DPRM	= G.ERR+G.ISIZG GE.LEN	= 414
 GE.COM	= 1
 GE.IND	= 2
 GE.CLO	= 4
 GE.LC	= 10 GE.CON	= 20E GE.MCC	= 40E GE.IOR	= -1  GE.OPR	= -2L GE.BIF	= -3F GE.MDE	= -4B GE.BFS	= -5R GE.EOF	= -10.N 	.MACRO	GCML$D	X 	.ENDM 	.ENDM	GCML$DO$STS G.RSTV	= G.RAB+O$STV G.FAB	= G.RAB+RB$BLN G.FSTS	= G.FAB+O$STS G.DSTR	= G.FAB+FB$BLN+NB$BLN G.FSTR	= G.DSTR+10.G G.ERR	= G.FSTR+32. G.MODE	= G.ERR+1 G.PSDS	= G.ERR+2 G.CMLD	= G.ERR+6 G.PPTR	= G.CMLD+6F G.RBUF	= G.PPTR+2	 G.BFSZ	= G.RBUF+2,          ›rjL¢_› 8$         øÀ  M    6 %    V   C       Ä à <                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        k˜:R "+"Ÿ   +"»   +"Ì   +"¬   +".   +"1   +"y   +"¨   +"L	   +"r	   +"w	   +"K   +"R   +"n   +"Þ   +"   +"   +"Ï   +"J   +"   +"   +"³   +"   +"•   +"   +"+   +"6   +"Ô   +"Þ   +"z   +"   +"6   +"B   +"…   +"0   +"X   +"„!   +"†!   +"ž!   +"K"   +"#   +"#   +"ª%   +"«%   +"`&   +"ì&   +"g'   +"k'   +"´'   +"¶'   +"½'   +"è'   +"Ô(   +"v8   +"ø8   +"99   +"`:   +"y:   +"¨:   +";   +"A;   +"E   +"¡E         +"–G   +"ÒG   +"6K   +"\K   +"iK   +"€K   +"àK   +"[M   +"xQ   +"üR   +"T   +"#T   +"µW   +"NX   +"ìX   +"Z   +"N`   +"”`   +"—`   +"çe   +"kf   +"Ýf   +"æf   +"ªp   +"«p   +"¼p   +"Öp   +"Zq   +"`q   +"qq   +"}q   +"kr   +"žr   +"¶r   +"¼r   +"èr   +"s   +"fs   +"ys   +"’s   +"¢s   +"™w   +"x   +"Bx   +"ëy   +"»z   +"Õ   +"ø€   +"–ƒ   +"R†   +"ZŠ   +"ä‹   +"š   +"«‘   +"L’   +"*–   ë%Ã   ë%ì   ë%÷   ë%k   ë%n   ë%D   ë%   ë%ç         ë%]   ë%Ô   ë%z   ë%ë   ë%ì&   ë% '   ë% '   ë%®(   ë%œ,   ë%ø8   ë%¼@   ë%éQ   ë%üR   ë%NX   ë%ôX   ë%kf   ë%Þf   ë%\g   ë%Iq   ë%Kq   ë%Tq   ë%t   ë%'t   ë%iw   ë%™w   ë%ly   ë%íy   ë%z   ë%   ë%   ë%Ý   ë%Þ   ë%æƒ   ë%Ä…   ë%º‰   ë%sŠ   ë%ü   ë%™’   ë%¤’   kKn   ëWn   ùaà8   ùa;   ùa0M   ùa¨M   ùaÆM   ùaÇM   ùa@`   úaà8   úa;   úa¸G   úaàG   úaþG   úaÿG   úaÐH   úa¸L   úaÖL   úa×L   úa0M   úaøM   úa(d   úaøf   úa0„   ûa          ûa`^   ûaÀ€   üap   üax   üaè!   üa°"   üa`'   üaà8   üa¨W   üaxZ   üa€   üaÐ‰   üaèŠ   ýa    ýaèv   ýa x   ýa¸y   þa   þa¸   þa"   þa>   þa?   þaà8   þa«:   þa¸:   þaL   þa¨W   þaÐW   þaxZ   þa@`   þa<a   þa:d   þaÐz   þa°   þaØ   þa ‚   þa(‚   þaP‚    b    bp   bx   bè&   b`'   b(x   b,x   b`Y   bp   bˆY   bpq   bÐz   bp   b    b8^   bV^   bW^   bÐz   b`‹   bø   bp   b`r   b°r   bÎr   bÏr   bxs         bH   bè]   bx_   b`   bØw   b …   b ™   b˜q   b¸`   bÖ`   b×`   bØ`   bÙ`   bÚ`   bÛ`   bÜ`   bÝ`   b˜q   br   bØr   b°‹   
b¸   
bQ	   
b`	   
b"   
b>   
b?   
bp   
b    
b0    
b¨%   
bè&   
b'   
b'   
b'   
bˆ'   
bP2   
b«:   
b¸:   
bðK   
b@`   
b<a   
b:d   
bèv   
b x   
b¸y   
bÐz   
bp€   
b°   
bØ   
bö   
b ‚   
b(‚   
bP‚   
bx‚   
b ‚   
bÈ‚   
bð‚   
bƒ   
bÐ‰   
b°‹   bÐ4   bP<   bn<         bo<   bp<   bq<   br<   bs<   bt<   bu<   bø   bp€   b¸G   bp   bÐz   b _   b8   b   ëpQ	   ëpì   ëpW   ëpY   ëpl   ëpn   ëpž!   ëp,&   ëp 5   ëp¡E   ëpÝE   ëpìE   ëpYM   ëp[M   ëpcM   ëp{Q   ëp;Y   ëpYY   ëp7[   ëp—`   ëp°p   ëpqq   ëpkr   ëp™w   ëp®„   ëp+…   ëpü   ëp   ëpÙš   ëp›   #zX   #zø8   #zkr   #zfs   #zz   k–»   k–,   k–Ð   k–Ò   k–   k–ç   k–´   k–<   k–,   k–X   k–ú%   k–²2   k–Ô4   k–y:         k–:   k–’:   k–¡E   k–´H   k–4K   k–^K   k–µW   k–ÔZ   k–+d   k–Üf   k–ßf   k–yq   k–Ôx   k–çy   k–z   k–"…   k–J†   k–Þ‰   ô¨"  ô ô¨Œ! à ô¨Î  ô¨  ô¨V! xô¨š:# d ô¨ªH  ô¨úW  ô¨8^• Ðû¨OM$ *û¨VN$ *©`T˜ f©€Tw © • Ð©€° Z ©¤’µ Æ ©Šµ Æ ©Gµ Æ ©òƒ» º"©ðs™ 8 #©àeš ¼#© sœ Z 9© & ¸9©ë3& ¸9©˜Kx 9©àM´ B ;©EM( ô ;©OM( ô ;©PM( ô ;©æ_  @©ôD) bC©O b D C©z) ´ D©ö`C Ö D©bb ä D©Åby  D©íbœ Î D©cœ Î D©Mw) bD©þ}>   E©¶H* äE©ÆH* äE©ÇH* äE©ÈH* äE©ÉH* äG©¶ZC Ö       G©]\c ° G©…\y æG©­\  H©$`  J©—d œ J©˜z ¢J©™ž ( J©Å, ¾J©v"C Ö J©$f jJ©E${ ¨J©m$Ÿ œ J©|—. €c©%( ô c©È_( ô e©6NC Ö e©ÝOg f e©P| È e©-PŸ øe©€‰G L i©öyC Ö i©{h r i©Å{}  i©í{¡ P i©|¡ P l©,x¡ zp©Åœ0 T s©`"£ ª š©õ
4 X  ©ô&e ä  ©¿.e ä  ©Iqe ä  ©Fye ä  © }5   ©À}} ¨  ©S~e ä  ©µ7 l  ©ñe ä  ©™’e ä ´©œw¯ 2 ¹©@X~ ô ¹©¶ZC Ö ¹©]\k (¹©…\~ ô ¹©­\£ r¼©õ‡; Ô ¼©ù‡; Ô ¾©HG L ¾©Ó¤ NÀ©h	¥ `Â©õ#; Ô Â©ù#; Ô Â©¨%¦ 4Â©¡E§ 0 Â©,`¨ þÂ©qq© ¼Â©ðsª Â©™w« PÃ©`"= ¶ Ã©i"< ^Ã©"l |Ã©€"  Ã©Ú}= ¶ Ú©ðGB °       Ú©¶Kh @Ý©[}A LÝ©6€C Ö Ý©Ýk (Ý©‚€ ” Ý©-‚¬ @ Þ© ¬ @ ã©,#­ ¸ ê©ÈB ° ê©2g® Ž ë©`"¯ 2 ë©"l |ë©€"  ì©Wm b ì©Kq¯ ô í©SZh @,ªPdB ”.ªKC 0 .ªþKC 0 3ª(#° Z 3ª¨³ Z ;ªh´ B ;ªà8µ Æ =ªx¸ œ =ªhº ¨ =ªÐ» º@ªW° Z @ªY° Z @ª—`° Z Šª0 ¾ ®‹ªàe¿ > ³ª4}P îÉª°hF ¢ ÉªØhF ¢ Ìªa	F xÎªÐWG L Óªø8Á ÂÓªz) ´ ÓªèH  ØªWm b Þª¡EÁ î òªàGÄ :«Wm b «µE Â («v"C Ö («$n | («E$ («m$Å  («XI \ B«¶Ko  I«„–Å .O«™wÆ O«•yÇ  R«°'J ò R«³'J ò S«`"Ê S«"q V S«€"  –U«SZq ÎU«6€C Ö U«Ýr ðU«‚" * U«-‚Ë Ú ”«€P î      ”«‡P î”«X @•«õ
R "•«Òµ Æ •«µO; Ô —«ç>   —«è>   —«é>   œ«Ws @œ«X @œ« L &œ«ZXL &œ«wM Ö«¯* 4«&+ ê«•, š «Ô/ 0 «{/ à «/ ’«"3 \«#6 À«ö&; $ «u': º «U(: º «œ,A œ «v:D «T[: º «E`H «\gK Ð «IqT  «Tq: º «!tL z «êvN « wN ª«)xC Ö «6xD «Ay: º «ŸzN ª«¶{C Ö «¸{C Ö «º{C Ö «¼{C Ö «¾{C Ö «å\ F «Ä…] < «ñ] ì «™’T  Ÿ«à`Í ¢ «x° Z  «ƒKÏ h  «_MÏ ¦£«`"g ø £«i"O h £«Ú}g ø ¤«P   ¤«ÎP   ¤«P   ¤«VP ú ¤«ªHP   ¤«úWP   §«õ<T  §«`TE Â ¨«»U À ¨«¯U À       ¨«•W š¨«lY „¨«„!Y „¨«´'Y „¨«üR[ ² ¨«žrY „¹«]Œ[ ”¼«8Ñ 0 ¿«vK €Ã«ôÒ Ã«KqÓ È«õ
E Â È«`TE Â È«LqÁ î Ê«ðsÔ  Ë«àeÔ ¢ Î«a(U À ò«ˆt þ 
¬¶Ku ‚ ¬ÀÕ Ð ¬¸L\ ò ¬6C Ö ¬Ýv ¸ ¬# @¬-Ö v ¬ðsÙ È ¬€"  –¬"Ú hY¬T}k ° Y¬±}k ° Y¬Ð] þZ¬àGÛ Þ h¬8L% ² h¬_MÜ  j¬˜ @j¬õ<R "l¬‡P îl¬ÀP îl¬Nv â¬°'^ 

­WTC Ö 
­XTC Ö ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ›rµz   1u  1up;‹ P 1uTK  ô 1ucK! à 1u¢K! x1uwL# d 1u®x$ *1uo†& 63uÀ& ¸3u®( ô 3u05† ü3uÅG) ´ 3u…K) b3ukM* 43uS* ä3uþ_+ ê3uIq, š 3u|q, ¾3uIt. €4u%!/ 0 4u;;/ à 4uH;/ ’4u0g‹ ü 4uëg0 T 5u»p3 \5u|q4 X 5uË– þ 5u™e ä 5u$™5  5u%™6 À5u0™… & 5u>™7 l 6u": º 6ut:; $ 6uMq; Ô 6u‘w< ^6uœw= ¶ 7uÔ>   7u`"A œ 7ub"A L7u2gB ° 9u‚B ”9uf'C 0 9uÁSC Ö 9uüXD =ulE Â =uÃF ¢ =u<F x=u²'G L =uYHH  =u0gŠ P ?uÖdH ?uüdI \ @u~qJ ò @u`†K Ð Bu0Š JBu–K €Buá"L z Bu€KL &BuúMM ÖBu0Nˆ €Bu9TN Bu=TN ª      Bu‘wO h Bu›wg ø Buœwƒ &Buz}P   Bu¢}P ú BuP îBuR "BuT  Bu6‘T  Bu+–U À BuŠ–W šBu©–Y „Bu˜[ ² CuÂ	[ ”DuÖs\ F EukY\ ò Eu¡d] < Gu¼] ì Gub	„ Gur	] þGuc}k ° Gu0€† ò Huþd^ 
[uŽEb D [ukMb ä [u `c ° [uqd œ [u|qf j\u%!g f \u;;h r _udh @_u`"k (_uœwl |fu[–m b guüdn | hudo  huœwq V hu‚…q Îhu`†r ðju[Ks @luÖst þ mudu ‚ mu¡dv ¸ ouó~v â‚uœ'w ƒu#x ƒukMy  ƒu `y æƒuqz ¢ƒu|q{ ¨„u%!| È „u;;}  …u$™} ¨ †ut:~ ô ‡u`"€ ” ‡uœw  ‰uC^ @uüd uœw  –u`†" * •u¡d# @—uçe% ² ©u[M• Ðªuœ'˜ f      ªufs™ 8 ªuLyš ¼ªu¤yœ Z «ukMœ Î «u `  «uqž ( «u|qŸ œ ¬u%!Ÿ ø¬u;;¡ P ¬uN¡ z¬uœw£ ª ®ut:£ r®u2X¤ N®u<d¥ `®uqq¦ 4®u=r§ 0 ®uçr¨ þ®uVs© ¼®ufsª ®u}s« P¯u`"¬ @ ¯u¡E­ ¸ ¯us® Ž ¯uœw¯ 2 ¯uÕ¯ ô ±u¡E° Z ±u±H³ Z ±uiw´ B ±u,xµ Æ ±uãƒ¸ œ ±uéƒº ¨ ±uòƒ» º³uNq¾ ®³uLy¿ > µu;;Á î µu,FÁ Â¶uLÄ :·uüdÅ  ¸u<Å .¸u½`Æ ¸uÊ`Ç  ¸uœwÊ ¸u`†Ë Ú ¸up†  ºu,`Í ¢ºuãeÏ h ºuçeÏ ¦ºu°x• H ºuµx• »u[Ñ 0 »ulEÒ »u•GÓ »ufsÔ  »uLyÔ ¢ ½uø8Õ Ð ½u¡dÖ v ½u0g‘ D½ufsÙ È ½uœwÚ h¿uLÛ Þ ¿uçeÜ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           M   PÀ…á*  ›rµz    PÀ…á   ¯”L  +"ŸHðÿ+"»Hàÿ*  +"ÌHÐÿ+"¬HÀÿ+".H°ÿ+"1H ÿ+"yHÿ*  +"¨H€ÿ+"L	Hpÿ+"r	H`ÿ+"w	HPÿ+"KH@ÿ*  +"RH0ÿ+"nH ÿ+"ÞHÿ+"Hÿ+"H ÿ*  +"ÏHðþ+"JHàþ+"HÐþ+"HÀþ+"³H°þ*  +"H þ+"•Hþ+"H€þ+"+Hpþ+"6H`þ*  +"ÔHPþ+"ÞH@þ+"zH0þ+"H þ+"6Hþ*  +"BH þ+"…Høý+"0Hðý+"XHàý+"„!HÐý*  +"†!HÀý+"ž!H°ý+"K"H ý+"#H˜ý+"#Hý*  +"ª%H€ý+"«%Hpý+"`&H`ý+"ì&HXÿ+"g'HPý*  +"k'H@ý+"´'H0ý+"¶'H ý+"½'Hý+"è'H ý*  +"Ô(H      ðü+"v8Hàü+"ø8HÐü+"99HÀü+"`:H°ü*  +"y:H ü+"¨:Hü+";H€ü+"A;Hpü+"EH`ü*  +"¡EHPü+"–GH@ü+"ÒGH0ü+"6KH ü+"\KHü*  +"iKH ü+"€KHðû+"àKHèû+"[MHàû+"xQHÐû*  +"üRHÀû+"TH°û+"#TH û+"µWHû+"NXH€û*  +"ìXHpû+"ZH`û+"N`HPû+"”`H@û+"—`H0û*  +"çeH û+"kfHû+"ÝfH û+"æfHðú+"ªpHàú*  +"«pHÐú+"¼pHÀú+"ÖpH°ú+"ZqH ú+"`qHú*  +"qqH€ú+"}qHpú+"krH`ú+"žrHPú+"¶rH@ú*  +"¼rH0ú+"èrH ú+"sHú+"fsH ú+"ysHðù*  +"’sHàù+"¢sHÐù+"™wHÀù+"xH°ù+"BxH ù*  +"ëyHù+"»zH€ù+"ÕHpù+"ø€H`ù+"      –ƒHPù*  +"R†H@ù+"ZŠH0ù+"ä‹H ù+"šHù+"«‘Hù*  +"L’H ù+"*–Hðøë%ÃH@ ë%ìH ë%÷H  *  ë%kH ë%nHP ë%DH ë%H ë%çH€ *  ë%]H@ ë%ÔH ë%zH0 ë%ëH ë%ì&H *  ë% 'H ë% 'H@ ë%®(H ë%œ,H ë%ø8H  *  ë%¼@H  ë%éQH ë%üRH ë%NXH ë%ôXH@ *  ë%kfH ë%ÞfH ë%\gH ë%IqH" ë%KqH *  ë%TqH ë%tH ë%'tH ë%iwH ë%™wH  *  ë%lyH  ë%íyH ë%zH ë%H ë%H *  ë%ÝH ë%ÞH ë%æƒH  ë%Ä…H ë%º‰H *  ë%sŠH ë%üH ë%™’H ë%¤’H! kKnH *  ëWnH  ùaà8H ùa      ;H ùa0MH ùa¨MH
 *  ùaÆMH
 ùaÇMH ùa@`H	 úaà8H  úa;H  *  úa¸GH1 úaàGH& úaþGH& úaÿGH( úaÐHH *  úa¸LH
 úaÖLH
 úa×LH úa0MH úaøMH. *  úa(dH úaøfH úa0„H ûa H ûa`^H  *  ûaÀ€H üapH üaxH3 üaè!H üa°"H2 *  üa`'H üaà8H üa¨WH* üaxZH- üa€H *  üaÐ‰H. üaèŠH ýa H ýaèvH ýa xH *  ýa¸yH þaH$ þa¸H þa"HF þa>HB *  þa?HD þaà8H þa«:HL þa¸:HN þaLH *  þa¨WH( þaÐWH þaxZH, þa@`H þa<aHH *  þa:dHJ þaÐzH0 þa°H8 þaØH: þa ‚H< *  þa      (‚H> þaP‚H@  b H bpH bxH2 *  bè&H b`'H b(xH b,xH b`YH$ *  bpH bˆYH bpqH bÐzH bpH *  b H3 b8^H bV^H bW^H bÐzH *  b`‹H bøH  bpH b`rH6 b°rH  *  bÎrH  bÏrH" bxsH bHH& bè]H *  bx_H b`H bØwH4 b …H
 b ™H *  b˜qH b¸`H bÖ`H b×`H bØ`H *  bÙ`H bÚ`H bÛ`H bÜ`H bÝ`H  *  b˜qH brH bØrH b°‹H 
b¸H *  
bQ	HP 
b`	H 
b"HF 
b>HB 
b?HD *  
bpH 
b H 
b0 H 
b¨%H      
 
bè&H *  
b'H 
b'H 
b'H 
bˆ'H 
bP2H" *  
b«:HL 
b¸:HN 
bðKH  
b@`H 
b<aHH *  
b:dHJ 
bèvH 
b xH 
b¸yH 
bÐzH *  
bp€H 
b°H, 
bØH. 
böH@ 
b ‚H0 *  
b(‚H2 
bP‚H4 
bx‚H6 
b ‚H8 
bÈ‚H: *  
bð‚H< 
bƒH> 
bÐ‰H* 
b°‹H bÐ4H *  bP<H" bn<H" bo<H# bp<H$ bq<H% *  br<H& bs<H' bt<H( bu<H) bøH *  bp€H b¸GH5 bpH bÐzH b _H *  b8H bH ëpQ	H€ ëpìH ëpWH *  ëpYH ëplH  ëpnHP ëpž!H ëp,&H *  ëp 5H ëp¡EH       ëpÝEH ëpìEH ëpYMH *  ëp[MH@ ëpcMH  ëp{QH ëp;YH ëpYYH *  ëp7[H  ëp—`H ëp°pH ëpqqH ëpkrH *  ëp™wH  ëp®„H  ëp+…H  ëpüH ëpH *  ëpÙšH@ ëp›H€ #zXH #zø8H #zkrH *  #zfsH #zzH k–»H k–,H k–ÐH *  k–ÒH k–H k–çH k–´H k–<H *  k–,H k–XH k–ú%H k–²2H k–Ô4H *  k–y:H k–:H k–’:H k–¡EH k–´HH8 *  k–4KH k–^KH k–µWH
 k–ÔZH k–+dH *  k–ÜfH
 k–ßfH k–yqH k–ÔxH
 k–çyH  *  k–zH k–"…H k–J†H	 k–Þ‰H     (          ›rµz(  ¯”          &M   PÀEÂ*  ‡uœw    PÀEÂ   ¯”L      (  ‡uœw(š   Ã©€"h ë©€"h  ¯”   
   ‡uœw  *    5
 ÃPùõ ?Ã@ùõ :  Ãpýðµ  *  & 2õµ  Ã0üW­  (Ã`üõ #Ãüôµ*  L    BÂe, 
Ü( Ã ÃÒ* 
 ÊEð ’¤*  r Ò 



R R 
¡ ‡ ôÅ@  õL ±   ˜ ‡        ÈM   SÀ¼*  ‰uC^    SÀ¼   ¯”L  9© @  C©z@  *   ©À}@  Éª°h@  œ« @  œ«ZX@  «êv@  *  5¬ ™@  Y¬T}@      (  ‰uC^(j”«Xh    œ«XhDj¬˜hN¯”   
   ‰uC^        *    &f¦æ 
ƒÜ( Á`@€," ,$ ‡w Ú *  & f& 
Á Â Ã ÷	Ì †õL óXúÿ÷	*  L   †Àðþ÷	  t ÷	  †õ ûL 5 5œ   Éª°h«êvC©z*  r 4 2p $ 2r " Â ÷	   ²#" ²- $   œ« *  ˜ ‚ 4
 ÷	¨ +W-2  õ@úL õ¥   *  ¾ õ°ýL õµ 4 õýL  4
 ÷	l 	*  ä Ã  ÃÁÁe  û	V †Æe ± ‡ –5ƒ‚€÷	  5¬ ™ ©À}ì 
 *  
  úÿ†Á"`úÁ"`úW,     9© *  0W,  ÷	  5
L ± ‡ Â ÷	  †Á
fL   Y¬T}œ«   VfN ÷	  µN µL ± ‡   
      œ«ZX       M   NÀÅç*  1u    NÀÅç   ¯”L  ¡«@  5¬ ™@  *      (  1u(T ô¨Îh" ô¨h ô¨ªHh    ô¨úWh H©$`h2 ¯”   
   1u  *    À @÷	& f÷	 ‡
Á
ý‡ À *  & Â  ‚€`w   &
  	Ž
   Ž
 0 Ž
  5¬ ™¡«  L €ÀÀ‡        ÜM   QÀEÂ*  uüd    QÀEÂ   ¯”L  9© @  C©z@  *  Éª°h@  œ«ZX@  «êv@  ¤«V@  Î«a(@  *  5¬ ™@  Y¬T}@      (  uüd(À («E$h  
  ¯”   
   uüd  *    ÷	   
Á Â 
÷	  úÿ†"`úÁ÷	  Î«a(      9© *  &   íõú 5 5÷	  †Àðþ÷	  ÷	  †õ  Y¬T}Éª°h «êv$C©z*  L  û 5
 %,t  õ0ù õ4r " 4p $ *  r 4h  4n  4l  4
& 5) 0 5   5 *  ˜ " 5( 1 Á÷	    ÷	  Ã  Ãf V  œ«ZX¤«V 5¬ ™  ¾ ‡        ¢ M   NÀEÛ*  1uTK    NÀEÛ   ¯”L  ô¨@      (    1uTK($ ô¨"h  ¯”   
   1uTK  (    Á ÷	  ‡£	  p  1 ¡ ‡   
ô¨       JM   PÀÅÎ*  uœw    PÀÅÎ   ¯”L      (  uœw(¾   S«€"h  ¬€"h* ¯”   
   uœw        *    Ãüõµ  Uõµ  Ã0üW­  KÃ`üõ*  &  FôÅ@    Ãpý°° <AÁe, 
Ü( Ã *  L ÃÑ* 	 ÉEð Q¤‘


—  
Q¤*  r Q Q 
Ãüôµ   Ãàùœ ÂÅðÿ—  *  ˜ * A-< ‚ A-< ¡ ‡ õL ± ‡        ˜ M   NÀÅÎ*  1ucK    NÀÅÎ   ¯”L  ô¨V@      (    1ucK( ô¨Œh  ¯”   
   1ucK      ´­  ƒ ÷	  ‡´Š ô‡   ô¨V       ² M   NÀÅÎ*  1u¢K    NÀÅÎ   ¯”L  ô¨"@  ô¨š:@  *  ¤«V@      (  1u¢K( ô¨Vh  ¯”   
   1u¢K      f÷	        ‡÷	  †÷	  ± ‡   ô¨"ô¨š:¤«V       :M   PÀ…È*  u`†    PÀ…È   ¯”L  ¹©@X@  Éª°h@  *  Ìªa	@  S«€"@  œ«X@  «êv@  « w@  *  j¬˜@      (  u`†(U«‚h  ¯”   
   u`†  *    Â ÷	  †w Ø õ¥   4
  4  ÷	    
S«€"(¹©@X*  & _‡ ÷	  †Àðþ÷	  m Ñ• õ¥ 0   Éª°h«êv*  L Q< Q= õ¥ 0   
Ü) Cm ÑÃ ÑÃ *  r Cí õ" Ã
BŠB" ÷	  C< B> ÷	    Ìªa	(Ìªa	*  ˜  4
 ñÕ 
 ÷	  ‡õ¥   4  4   œ«X*  ¾ 
 ôe 
 t õ L ôÅ      @  uL  uN  w *  ä   4
 4
 5

 5
 5
 5
& 5
(  4
  « w  
 ÷	  ß  j¬˜       Ü M   NÀÅÎ*  1uwL    NÀÅÎ   ¯”L  ô¨Î@  ¡«@  "      (  1uwL(J ô¨š:h  ¯”   
   1uwL  *    &f £	   ðµ  Àe ÷	  ÷	    "¡«(ô¨Î(  & €‡p 0Š
 ‚†ð• 
 Â° ¡ ‡        êM   PÀ…á*  •u¡d    PÀ…á   ¯”L  Éª°h@  Ìªa	@  *  œ«X@  «êv@  « w@  ¬€"@      (    •u¡d(ì ¬h  ¯”   
   •u¡d  *    Ã€þ-   -   c `õ0úN ñµ       
 *  & YÂ ÷	  T‡ ÷	  †Àðþ÷	  m Ñ•  ¬€"Éª°h «êv*  L  W­0  Q< Q= õ¥ 0   
Ü) Cm*  r  ÑÃ ÑÃ Cí õ" Á`B" ÷	  B> C  "Ìªa	*  ˜ < ÷	   ñÕ 
 4
 5 
 5  5    Ìªa	*  ¾ ÷	  ‡õ L uL  uN  w   õL 5

 5
  œ«X« w  ä  5
 ï       ˆM   QÀh×*  1u®x    QÀh×   ¯”L  $9õ8@  $9<M@  *  s©À@      (  1u®x(¾ û¨OMh  û¨VNh 
  ¯”   
   1u®x  *    A@ B A õû ± ‡ A& @ ”*  & Á ÔÁ 
¢: ÂÂÂ&”ÎEðÿ‚eõ       
 Ý ¦*  L f&æÿˆ‡¦B& r ² ‚Æå ‚¦*  r &æÿˆ´
  ‚ ´ µ2 F†õðû õ*  ˜    ×§    õ@þ ×§    õ ü ± ‡ ‡    s©À
s©À$9õ8s©À$9<M       „M   QÀ…È*  —uçe    QÀ…È   ¯”L  ô¨"@  ©€T@  *  9© @  Éª°h@  Óªz@  œ« @  œ«ZX@  *  «êv@      (  —uçe(Lh¬8Lh  ¯”   
   —uçe  *    ÷	  õ þL <‡ 
Á Â Ã ÷	  /‡úÿÂ  ô¨" 9© *  &  ÷	  (‡t
 $ t " ô  ôe $ t" 4
  œ« *  L & 
Ý &
æf
 f @ÀeL —#  —-  *  r ÷	        –5–5†uN  uL  ± ‡ t   t"   ©€T*  ˜  W-"   W-    ôÿÿ ôÿ @" @†*  ¾ õPüL ß 
Á Â Ã ÷	  úÿÐ‡÷	  †  9© &Éª°h*  ä Àðþ÷	  Ã 
Ã
ýð t 0$ p 0" r   
«êv*  
0 h 0 l 0 n ÷	  ñÕ 
 Â
 ÷	  †  Óªz&œ«    0úÿ&& ÷	  ° ˆw 4ÿ‡   œ«ZX       ‚ M   NÀÅÎ*  1uo†    NÀÅÎ   ¯”L  ý¨X@      (    1uo†(  
­ZTì2 ¯”   
   
­ZT.   . ß	    ý¨X       <M   PÀÅç*  3uÀ    PÀÅç   ¯”L  ”«€@  ”«‡@  *  «êv@        5¬ ™@  Y¬T}@      (  3uÀ(  9© h  9©ë3hô¯”   
   3uÀ  *    æCPÎU £	  Ã 	À, *  & Á, Ã ö&À      
0
 0
úÿÃ  5¬ ™*  L –
ó 
Ä, ðúÿÃ`ú3Š ó ³ *  r óÅ 
 ³  ƒÀðþ÷	  fƒ ÷	ú †–%  «êv*  ˜ Ã þ3± ± ± CðúÿÎ5 Î5 ó‹*  ¾  Á÷	  †Ã`ú0
úÿXC»óÕ 
 3 ³Š  Y¬T}*  ä  Î5 !ó æƒ ÷	’ ƒ†Ã þ?s *  
 s  óÅ 
 ñµ 
 óÕ 
 1
 1
 Á*  0Î5 ñµ 
 Î5 ÷	  †"`ú	0
úÿ1
  ”«      ‡*  V 1Š ñÅïÿ
 £	 ÷	  ñµ 
 ÷	  ”«€*  |  ØÃ È–
&V‡ £	  A ñ‹  Y¬T}*  ¢ B, ‡ñµD 
 Ã5 	ñµ 
 Ã5 *  Èñ A ãÁ± 	ñÅïÿ
 1
 1
 (  î1
 ‡ £	  óµ  Ã 
‡        ÀM   OÀ…È*  3u®    OÀ…È   ¯”L  9© @  9©ë3@  *  œ« @  «Ÿz@  ¤«@      (  3u®(¨ *  ;©EMh$ ;©OMh~ ;©PMh„ c©%h  c©È_h 
  ¯”   
   3u®  *    õ  æ 
Â ÷	  †5 5  ƒæ  œ« *  & ô‹  

‚Ã ÷	  	‡úÿÂ       ÷	  ôŠ   9© $œ« *  L ì–
÷	  Ãôµ    


Ã ÷	  ‡  
9©ë3$9© *  r úÿÂ ÷	  õ þ  ƒ‚ „ û3    œ«   ˜ Á  ÷	  5
 w     
¤««Ÿz       ® M   NÀEÂ*  3uÅG    NÀEÂ   ¯”L      (  3uÅG(4   C©zh  Óªzh ¯”   
   3uÅG  *    · ƒ"± ¡ ‡ · Ê‡ æ¦&
Ãÿ Žd  & Ã
ýƒÞ	ƒ‚‡        ÒM   PÀh¾*  3u…K    PÀh¾   ¯”L  œ« @  œ«ZX@  *  «Ÿz@  ¤«@  ¨«¯@  5¬ ™@      (  "  3u…K(Æ @©ôDh  D©Mwh( ¯”   
   3u…K        *    õ  ¡  óµ  õÐÿ ± Ã ó*  & ‡  1 ñ•  Â
 ÷	  †5 5    œ« *  L ÷	   ëôµ   u u  Ã  Ã  œ«ZX&5¬ ™*  r ôµ@  ÁÁe  û	V ôÅ@  Â  ‚Âe ƒ‚  ¨«¯| 
5¬ ™ *  ˜  „ û3  Á0 ÷	  5
 C& 3
 3
   ¤«  ¾ 3
 w     
«Ÿz       ° M   NÀEÛ*  3ukM    NÀEÛ   ¯”L  D©ö`@  Ã©`"@  "  ¹«]Œ@      ( «¯h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
Ã©`"D©ö` 
        M   OÀÕ*  3uS          OÀÕ   ¯”L      (  3uS(F*  E©¶Hhb E©ÆHh  E©ÇHh
 E©ÈHh* E©ÉHhB 
  ¯”   
   3uS  *    ·À B< G·¶ s< þÿ÷	î ‡ÀüÿÀnøÿ÷	r *  & ö†‡ ·– ÷	Ô ‡ÁÁnøÿ÷	Z ÷†‡ ·~ ÷	¼ 
‡*  L ÀüÿÀnøÿÁÁnøÿ÷	: ó†‡ A@ @œ õÅ 9 ñµ*  r   õÕ 9 ‡ ·@ ÷	~ ‡ÁÁnøÿ÷	 ÷†‡ *  ˜ P¤Â
ü¡ ‡ @¤
†õÕ 9 õÕ 9 ± ‡ Â
*  ¾ ò¡ ‡ æf> ƒA@ &
NÜ &&
sœ
 ûÿfÎe*  ä  fÎe# ¦ÁÂþÿõÅ 9 Þ	Æe ƒ‚‡ ³Šúÿ*  
óe øÿ³
öÿó¬úÿûÿ‚óþÿ
ÂÞöÿî³ þÿƒ  0Âþÿ3
þÿ³àþÿ¡ ‡ ± ‡        ° M   NÀÅÎ*        3uþ_    NÀÅÎ   ¯”L  G©¶Z@  £«i"@  "  ¹«]Œ@      ( «&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«i"G©¶Z 
        $M   OÀ…È*  3uIq    OÀ…È   ¯”L  J©v"@  Ã©i"@  *  .ªK@  .ªþK@  R«³'@  « w@  ¹«]Œ@        (D «•h ¯”   
         *      ÷	  ÷	  †‡ õ¥@  †õ0û fÂÂeÞÿ  R«³'¹«]ŒÃ©i""  & 
û	J ‡ÂÂe  ÷	  †w   w   !  J©v"2 
.ªþK.ªK « wÿ       ÂM   RÀ¨Ý*  3u|q    RÀ¨Ý   ¯”L  ´:ü@  ¾©H@  *        ,ªPd@  ¨«»@  ¨«•@  ¨«l@  ¨«„!@  *  ¨«üR@  ¨«žr@  5¬ ™@      (  3u|q(ð  J©Åh* ¯”   
   3u|q  *    @8  @Àe: PPH@8  @Àe: *  & 	‡ õ5  ÁÁe  û	V ‡ÁÁe  û	V ‡Á  ¨«l4 
 ¾©H@ 
*  L Áe  û	V †w ˆõ5  w *ÁÁe  û	V )†  ¨«•L 
"¨«„!h 
*  r W- `ý#õ5  õ  ÷	tÿÁÁe  û	V ‡  "¨«žrŽ 
 *  ˜ ÁÁe  û	V ‡÷	lÿ&ÁÁe  û	V †V†÷	  ¨«üRš 
¨«„!¬ 
*  ¾ Tÿw ‚&
æÎeÄ A& CA  
ÀÜ `W¬ÿÿ*  ä ; Ròþÿ2²
þÿ      ôµ!  ê¦÷	  A8 B A  ,ªPd*  
 HÑ‰Ñe 	
Â  Ã  ÃÀ  û	R †  ´:ü5¬ ™*  0 û	T ’€ÈPÿ†u 5 7‚¾@8 *  V    &ÎEøÿÎe0  €€÷	êÿó¬  ‡*  |õ ý †‘•³Š ‡ †Ã  Ãu : õ•    5¬ ™*  ¢ÁÁe  û	V u:  
†õ5  ÁÁe  û	V   ¨«»¤
"¨«žr¾
*  Èõ5  	f ÁÁe  û	V µ u@ & f V  ¨«üRÖ
  î‡        ° M   NÀÅÎ*  3uIt    NÀÅÎ   ¯”L  œ« @      (    3uIt(, J©|—h  ¯”   
   3uIt  *     1 ñ•        ñÅ# 
 Â ÷	   ðf   œ« 
  &  V‡        ° M   NÀÕ*  4u%!    NÀÕ   ¯”L  e©6N@  £«`"@  "  ¹«]Œ@      ( «Ôh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"e©6N 
        ² M   NÀEÛ*  4u;;    NÀEÛ   ¯”L  i©öy@  £«`"@  "  ¹«]Œ@      ( «{h  ¯”   
             ÷	  ÷	  †‡ æÎe  ‚{ J   ¹«]Œ
£«`"i©öy 
        Â M   NÀÕ*  4uH;    NÀÕ   ¯”L  p©Åœ@  Ã©`"@  *  « w@  ¹«]Œ@      (" «h ¯”         
         &      ÷	  ÷	  †‡ ÂÂeðÿ
µ> û	J w     p©Åœ¹«]ŒÃ©`"$« w       M   RÀh¾*  4uëg    RÀh¾   ¯”L  ´:¼p@  ô¨V@  *  9© @  @©ôD@  C©z@  m© …@  ,ªPd@  *  Éª°h@  œ« @  «êv@  5¬ ™@      (    4uëg( p©Åœh ¯”   
   4uëg       «    *   æ5
8 5
: 5
< ÷	  b‡&
&
&
C@ 6ÁÁe  @©ôD*  . ÔÿÂðø@²N@”‚ÒK¤ÀÉ‹úÂ þBÑ*  T ¦QÔQÔŠ ‡0Â°ü5
ÁÜ "ƒÂ@û-*  z JŠ
PÀ’ÀÀÀaÀe~ È	"‡À ÉC Ë¥ *    æœ ÷	ð‡Ã ôC      < 3Š æÿ ÷	Ö‡*  Æ 3 3
 Â 
Æe µ õ ÷	
 ƒf V*  ì ‡ A8 
5
8 Â ÷	  †õðþ ‡ ¡ ‡ w    œ« *  w ìw w Xf&Àó÷	vƒfæÅÅe 
*  8%
%
%
÷	V ƒÓ$‹ ËËËË÷	@ eƒ†*  ^„…‡ ‚D˜Äå0 Ä%	 A‡%D˜Äå0 Ä%	 :‡Äa*  „ÄÄaÄJ m < <   Ã ÷	ÄÿÃ
üBÄ"*  ªNAJBEFRAMRPAYAMNUJLUJGUAPEST*  ÐCOVONCED  !¥!£!­ 	`Ô •ôÂ*  ö û¯uþÿÍ5 ÃÀ% €
ƒ
Í
*  Ce÷	@ÿÍæ ä‡Í`Õ
%%ß#Ý#Û$)Åå*  B fC
 ÷	  Ae@C÷åt%
å. å        m© …*  hÄÀ  fUUUM…UÃB
†Õe˜ UM…Õe*  Ž€–UUM…À
é‡ µ> ôµ!  
&*  ´†à‚À &
¦&÷	  ° ¦fæÃ  ÃÂ  À  ,ªPd 5¬ ™&´:¼p*  Ú  û	R Â€ùæ`ÿ‡û	T ± ‚’Öƒ†} *   > Àÿ÷	–ÿƒÁQ$‘“Š‰Ñ ‰!Š‡ &
ôµ   *  &$t  !†ŒŒvŒ  
 Ý ` 
÷	8‡*  L€cÁÐQ$Àe Àe Â Â
ý¡ *  r–
‡ õ< ¡ ‡ *+,-
	*  ˜ 
Á &
ôµ0  hB: 	€œ €
Ê_*  ¾€Ž÷	¼ Z‡õ: A< W" 
‡1t  ôµ *  ä IÁ1  €c5: °­  ÔÀÀe      zÿ”*  
”cÂ`ð¥ þÿJ’öóµ  3
* 3
, À *  0RÀ
ýÂ À  R”À
ý×¬ 8 ‡€3œ 5 *  V3 6 3
 2 3œ	  3œ 4 3T . 3V 0 ¡ *  |–
Ž‡ æ&fA8 
Á ÷	  Â þ/‡58   ô¨V*  ¢
÷	  ‡€ Â 
÷	  úÿu8 †È%`ú  œ« 9© *  Èð6 à% þÂðþö þ ± ÷	  †ÀÐû  "Éª°h  î÷	  ÷	  Â û–Uƒ‡   «êv
C©z       ü M   NÀ…È*  5u»p    NÀ…È   ¯”L  š©õ
@  Ã©i"@  *  .ªK@  .ªþK@  R«°'@  ¹«]Œ@      (2   «"h ¯”   
         *        ÷	  ÷	  †‡       æÂÂeìÿ
û	J ƒ‡ÂÂe  R«°'š©õ

¹«]ŒÃ©i"  & Þÿ
÷	  w     
.ªþK.ªK       ¼M   OÀh¾*  5u|q    OÀh¾   ¯”L  ¾©H@  ¨«l@  *  ¨«„!@  ¨«üR@  ¨«žr@      (  5u|q(°   š©õ
h  ¯”   
   5u|q  *    ôµ!  õü Lõ5  'B@ õû A*  & ò õXÿ :A8 A ±   ±  ± *  L  r  r  ÁÁe  û	V !ÁÁe  û	V ‡  ¨«üR\ 
"¨«lh 
*  r ÁÁe  û	V ‡ÁÁe  û	V ‡ÁÁe  û	V 	†f)  ¾©Ht 
¨«žr€ 
 ¨«üRŒ 
   ˜  ÁÁe  û	V µ u@ & ‡         
¨«„!œ 
       ¬M   UÀh¾*  5u$™    UÀh¾   ¯”L  $9@  $9Ùf@  *  $9š@  ´:#@  ´:¼p@  ´:ü@  ,ªPd@  *  5¬ ™@      (  5u$™(> © }h ¯”   
   5u$™  *      ðú  ù  ðü    &Ì¥	  ôµ€   €  $9Ùf$9š$9*  & &
¦æ÷
‚Æå
 ‰&÷	  ° Â  ÷	’‡  ,ªPd"´:¼p*  L ƒ ‚ ††w |´  ô ÷	  ‚ ƒ   ,ªPd*  r  Á æ–PÁU ÁU€ ð ° p Ã    (5¬ ™*  ˜ Ã‚ó5 ( Eò‹ BðÕ  æ  æ  æ°*  ¾  æ  æ  æ  æ  ¦
 ¦ ¦ ÎÕ —- *        ä   —-   ò5  ÎÅ ¶ òµ  ÎÅ*  
 òµ  ÎÅ òµ  ðU  ðE  ¦*  0Â  ÷	¤ AÃ  Ã‚ó5 ( ò‹ ‚ ƒ  ´:#5¬ ™*  V
 †¶ ö 6Š †5‡6 
 6   öe*  |  v
 6œ  6  ´m   t 
‚Ý ´`*  ¢ ôµ€  ‚æ  &Îe æ÷	  ° ¦Â   ,ªPd*  È  ÷	 †È 0
 „‡ Ã  ÃÀ  &D &  ´:ü5¬ ™*  î ô•  û	R †´•  û	T ´• ’„*  æýÂÂeæýR ‚–
Òù‚ˆp ± ‡ „  :¡ ‡        ¬ M   NÀEÂ*  5u%™    NÀEÂ   ¯”L   ©µ@  Ã©`"@  "        ¹«]Œ@      ( «#h ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J    ©µ¹«]ŒÃ©`"       NM   QÀh¾*  5u>™    QÀh¾   ¯”L  ô¨"@  ô¨V@  *  ©€T@  9© @  @©ôD@  C©z@   © }@  *  Éª°h@  Óªz@  œ« @  œ«ZX@  «êv@  *  « w@  ¤«V@  5¬ ™@      (  5u>™(   ©µh  ¯”   
   5u>™  *    5
8 5
: 5
<  ÁEÿôµ   
u@ ÷	    (@©ôD*  & ‡Ãüôµ!  Ãpýôµ  õ‹@ Ã þÁ*  L  ÷	  ‡&÷	  €†÷	  õ F÷	Œ &‡B   ô¨Vô¨"¤«V*  r Ãðø      Â5 µ … Ã þ€’Àå ƒõ *  ˜ €
÷	.‡B … ‚ àBõ< Üõ‹@ *  ¾ ÷	¨ ÷	š Ã 

÷	Ö &‡@÷	  
÷	À ‡   ¤«V*  ä @÷	  õ 5
 w   ÷	” ‡õ¥ @ 	ðµ   ¤«V« w*  
 õý ± ‡ Â ÷	  ú†Àðþ÷	  ÷	t †  œ« "«êv*  0È%`úÈú÷	v ÷	0 
± ‡ f÷	  è‡÷	    "Éª°h(C©z*  V†õ û ‡ A8 5
8 A: 5
: Á
÷	*  |  †È ù÷	. ÷	  ± ‡ Á ÷	’ÿu8 ‡ø‡   œ« œ«ZX*  ¢Â Ã  
÷	  úÿ‡ õ 	5 E- È  9© *  È5 ‡ f@ Æå 6

 ö ÿ  N2
       ¶*  î
  R2

 6
 … õ5€  öÕ  ò5 *   @Ã  Ãó5 ( ò‹ ¶ 
 ¶  ¶  
5¬ ™*  :  ¶  Ü öÀÿ õ¥  @ Áö°ü *  `õ< µ
< Ã  Ãóµ ( ö‹
 	6   6  5¬ ™*  †  öÕ 
 R­ ‚66
 6Œ 6Œ *  ¬vŒ  
 Ý `A-< u< ÷	¦þ"‡A< ÷	Zþu*  Ò: ‡÷	†þ‡÷	þò†5> vm>  µ @ €*  ø öèû ð µ  w æ Ã  Ãóµ (   5¬ ™*  ö‹
 	6  6  öÕ 
 ÷	  †÷	vþZ6Š   © }*  D B ² 
 ö¥  '5  > 5 @ ÷	  †  &©€T*  jB ÷	Dþ5í  >       µ@ 5í @ rí> 
 ² rí@ *   ÷	úý/‡0$ p 0" r ö¥   %@@ ° *  ¶ °  °   °" ° * °
 ( A: ñÕ *  Ü
 @> ÷	  õ €ðÕ  ÷	  ± –U–U–U–3µ  ÓªzÓªz  @ ‡        jM   NÀÅç*  6u"    NÀÅç   ¯”L  ¼©õ‡@  Â©õ#@  *  «µ@  •«µO@  £«`"@  ¹«]Œ@  È«õ
@  *      (L «u'h «U(h «T[h0 «Tqh
   «Ayh& ¯”   
                       ÷	  &
÷	&  •«µOÂ©õ#¼©õ‡
È«õ
«µ¹«]Œ*     æ ÷	  æ 	÷	  æ ÷	  æ ÷	  ¹«]Œ¹«]Œ¹«]Œ"¹«]Œ        :   †‡ ÂÂe¼ÿ{ J   £«`"       ° M   NÀÕ*  6ut:    NÀÕ   ¯”L  ¹©¶Z@  £«`"@  "  ¹«]Œ@      ( «ö&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¹©¶Z 
        ŠM   QÀÅÎ*  6uMq    QÀÅÎ   ¯”L  9©ë3@  œ« @  *  œ«ZX@  « w@  5¬ ™@  Y¬Ð@  l¬‡@  *  l¬N@      (  6uMq(*¼©õ‡h ¼©ù‡h  "  Â©õ#h
 Â©ù#h •«µOh  ¯”   
   6uMq  *    õü w   ÷	 û5
, ÷	T ÷	 óõ ,   « w*  & ÷	  ÃõüL õ L ÷	2 ‡Ã  ÃÁÁe        9©ë3"5¬ ™*  L   û	V ôÅP  uL  uN  f V‡ õ0úL   Y¬ÐJ 
*  r    V1! A ùõ, ñµ 
 öõ*  ˜  L  Âœ ÂEÿÂ¥  óµ   Ã  Ãt  $5¬ ™*  ¾  4
 ÁÁe  û	V ‡  ðµ   ôe 
 t  l¬NÆ 
q*  ä  4
 @ÀeL W-,  ÷	  t  4
   l¬‡$  
Â ÷	  	†&& ÷	  ° ˆ± ¥†‡   
œ« œ«ZX       XM   NÀÅç*  6u‘w    NÀÅç   ¯”L  ô¨@  Ã©`"@  *  Ã©Ú}@  «êv@  5¬ ™@      (  6u‘w(„   Ã©i"h  ¯”   
   6u‘w  *    C ƒ:‡Ã8Ë¥       5ó¥P  ƒó ÿ )Ä    (5¬ ™*  & ô5 ( ó ü ô5 ( ópÿ Á0 *  L ÷	  ‡3 È• ðœ  0*  4* w   ó þ  ô¨$Ã©`"  r  3
 w   À€ý÷	    Ã©Ú}«êv       jM   OÀÅÎ*  6uœw    OÀÅÎ   ¯”L  «êv@  5¬ ™@  *      (  6uœw(º Ã©`"h  Ã©Ú}hœ ¯”   
   6uœw  *    @ €U‡ÀSÈ¥ P0
 0
 ð¥P  ƒð ÿ*  &  9 „2‡Ä0Ã  Ãó5 ( ðpÿ (  5¬ ™*  L Ì¥ "ôµ  ôÕ  pJ  ÁE*  r áÿW  ƒ
5
B 5
D 5
H ¡ ‡ ðÐÿ ð&  ˜ Àü W£ ‡W- ÿÿ      ý	 ± ‡ À€ý÷	    $«êv       |M   QÀÅç*  7uÔ    QÀÅç   ¯”L  s©À@  «¯@  *  «&@  «ö&@  «œ,@  «E`@  «\g@  *  «)x@  «6x@  ‹¯=@  ‹¯@=@  ù±oŒ@  *      (  7uÔ(dD©þ}h4—«çh  —«èhö  —«éh>¯”   
   7uÔ  *    w	  0
ø 0 ú 0 ð‹ü ÷	Â‡p  ù±oŒ*  & ú pY÷	h†w lðµ€ ó w ð\ 
ðµ*  L   ó ÷	Dî‡÷	tð%°ý w Ô ðµ Š  *  r 0ö " 0ô   Áep" ð   0Šn \ *  ˜ 1Š ñÕ  ÷	  ñÅ  ð l ì  «\g*  ¾ p       0 ÷	  ð•   ð ("   °`ø   «œ,*  ä ÂBðµ ó ¦`W¨a W¢z ÉÅ  Â
ö‚*  
0,ú w ¬ É¥; ðµ ó $w Þþð¥Ðù *  0æûÿð%°ý 3œü 
Ä
ðµ€ ó ÷	zw *  Vìþ÷	~ðÅ€ ó ðŠü æöÿ&
ðµ  ó 	ðÅ  ó *  |ðÕ€ ó ð•ÿÿü ðµ ó &^ ÷	ª°^ °“ò V*  ¢‡ æÿÿâæþÿß Æe, æýÿÙæüÿÖðµ ó *  È`W¨- ð‹ó €ðÅ€ ó ðÕ  ó Â
ð
ø °`*  îw $þw vÿw	  ð‹ü µðŠü ðå þ ù°Šü   ù±oŒ*  ÷	¶ ©É¥@ Ñðµ ó ¢0¬ü ý ÆÆå, 
Â
*  :€p ° ÷	  4 ø ´
ø ®‡ðµ   ªÈ•   ‹¯=*  `÷	        ¥‡ðµ  ¡ðµ   ÷	Î ðµ@ ó 	ðÕ  ‹¯@=*  †@ ó ðå ‚ ð•
 … ‚Âe ÷	ì ‡Æe, 0
ø 0*  ¬ 0 ú w ŠýÆe, &^ ÷	 °^ w Üþ÷	*  Òþ ðå þ ðŠü õµ€ ó '0® 0° 0´ 0*  ø¶ 0¸ ðU j ÷	’ ‡0 0 0 ð•   ðµ*   Š ð•  0 ð%°ý ‡ ÖÆw	    &ù±oŒ*  Dð\  °Šü þ ðµ Š ÷	       «ö&*  j ¸ ¶ ´ ° ® 0þ ÷	P ‡ Áe*  Ò ÷	ž °„ U%Æå" °Â ÷	  Æe" e)ðE j ð  «E`*  ¶^ ð% ü^ 
÷	  é÷	  ð ¡ ± ‡ U%  «6x«&*  Ü÷	  e)‡  0Šü É      )fÿˆ‡ÑÂ  ÷	, ‡  «¯"s©À*  × 	 ×   ÷÷	 ‡× 	 ú×   ÷R¨ðÕ€ ó *  (¡ ‡ Âå C”‡ &
÷	 Ñ•: Ž
÷	 ÷	 ‚‡   Nƒ„Ãö` •Ã
ýÃ
‡        ° M   OÀ¼*  7u`"    OÀ¼   ¯”L  Ý©6€@  £«`"@  "  ¹«]Œ@      ( «œ,h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"Ý©6€ 
«       dM   OÀ…È*  7ub"    OÀ…È   ¯”L  9© @  Éª°h@  *  œ«ZX@  «êv@      (  7ub"(Ž Ý©[}h  
  ¯”   
   7ub"  *    ÷	  úÿ†"`ú	& &÷	  ˆ° 
±         9© œ«ZX*  & ‡ ñµ 
 ‡ f&öÿ&÷	  €†ÀÐû÷	    Éª°h(«êv*  L ±,  	A `¡¢òµüÿ ÈÀþ–
Í   r 
&÷	  €†ÀÐû÷	  ¡ ‡   
Éª°hÐû«êv       ä M   OÀEÛ*  7u2g    OÀEÛ   ¯”L      (  7u2g(d   Ú©ðGh  ê©Èh ¯”   
   7u2g  *    ÷	  ¬  ‚œ ‚’‡ ÷	
 Áe ‚œ ‡ *  & Am: C”ÃEüÿÃe B@ Þ	¦&
&
À
CÜÿÿ‚R”  L À
ý€‚Â Â&VP± ‡        œ M   NÀh×*  9u‚    NÀh×   ¯”L  5¬ ™@      (    9u‚( ,ªPdh  ¯”   
   9u‚  "          fÀ   Àe2 Á 
Á
ýÀå ‡   5¬ ™       ¦ M   NÀEÛ*  9uf'    NÀEÛ   ¯”L  D©Mw@      (  "  9uf'(  .ªKh .ªþKh ¯”   
   9uf'  $      @€`È	õÀý ± ‡ ÂÂeêÿ
{ J   D©Mw       FM   OÀÅç*  9uÁS    OÀÅç   ¯”L   ©ô&@   ©¿.@  *   ©Iq@   ©Fy@   ©S~@   ©ñ@   ©™’@  *  5¬!™@      (  9uÁS(  
­WTìP D©ö`h *  G©¶Zh J©v"h e©6Nh@ i©öyh  ¹©¶ZhH *  Ý©6€h( («v"h  U«6€h0 ¬6h8 
­WTh  *  
­XTì  
­XTh  
­YTè  
­ZTìX «)xh  *  «¶{ì  «¶{      h  «·{è  «¸{ì  «¸{h  *  «¹{è  «º{ì  «º{h  «»{è  «¼{ì  *  «¼{h  «½{è  «¾{ì  «¾{h  ¯”   
   
­ZT  $                                       $   $   "     
  "  J   J             &   ©S~ ©Iq ©™’
 ©Fy ©ô& ©ñ  V      ©¿.       ¦M   OÀEÂ*  9uüX    OÀEÂ   ¯”L  «)x@  «¶{@  *  «¸{@  «º{@  «¼{@  «¾{@  ¹«´‰@  *  5¬ ™@  
­XT@      (Š «v:h  «6xh 
  ¯”   
         *    ÷	  Ã  Ãóµ ( ¡ ‡ ÷	  Ã  ÃÄó*         ¹«´‰
5¬ ™¹«´‰ 5¬ ™*  & ± ‡ À  Á  ÷	< Á  ÷	4 Á  ÷	, Á     «¶{«¸{«º{ «¼{(«¾{*  L ÷	$ À  Á  ÷	 3
$ ó& óe" & ó ( ¡   

­XT«)x  r ‡ 
Bà4þÿ
ˆ
@‡        àM   OÀh¾*  =ul    OÀh¾   ¯”L  ´:Ã@  Â©ù#@  *  ,ªPd@  « w@  5¬ ™@      (  =ul(à *  «µh& §«`Th  È«õ
h  È«`Th ¯”   
   =ul  *    Á HÁ ¦÷	ˆ ‚€"°ýÈÿ]5
, *  & õÿÿ, ôÅ@    ðµ   	4
 õ, ôµ  *  L  õüL B& ÷	¦ÿôµ   
ÁÁe  û	  &Â©ù#l 
 *        r V †W-L 0úÁ ÷	 uL  uN  w   
  &« w*  ˜ ÷	  p ° Â  Ã  ÃÀ  û	P ‡û	T ’  ,ªPd´:Ã5¬ ™&  ¾ €W öÿÈ°ýÈøýp È &V‡        Ö M   NÀÅç*  =uÃ    NÀÅç   ¯”L  5¬ ™@      (  "  =uÃ(J Éª°hh  ÉªØhh ¯”   
   =uÃ  *    æöÿæøÿÀ      €cŽJñµ 
 1!  5¬ ™(  &  @ ÀÿÿÀ ÿÿ¡ 

± ‚‡        Ô M   NÀÅÎ*  =u<    NÀÅÎ   ¯”L      (  =u<(\   Ìªa	h  ¯”   
   =u<  *    Ã+æ ‚3‘”Ã
3Ãå †Î@Ã
      Çà‘‘*  & ‘‘‘‘‘‘ð†ÃÃå †Çà‘”‘”‘”‘”‘”‘”  L ‘”‘”ó†Ö‘”
‡        ÄM   UÀ¨Ä*  =u²'    UÀ¨Ä   ¯”L  ¿«v@      (  *  =u²'(e©€‰h" ¾©HhP ÎªÐWh ¯”   
   =u²'  *    @&  A8 A ôµ   Ö‡ æÎe2 ÷	Úÿ*  & @Àe ”ˆ” 
—¢: ÀÀÀ¦”ÎEðÿ€eõ1 *  L ¡ ‡ ÷	¬ÿ&æCÃe 


1
 —¤] üƒ*  r ×¤. üæƒàÃ
DÄe ÷	  †õý –
  ¿«v*  ˜ ‚ƒ×¤; üƒàÃ
DÄe ÷	  †õ`ù ƒ  ¿«v*  ¾ „± ‡ @& &  œ €e1
 &¨; üÐ‹ (  ä †&”ÎEøÿñ ñ ñ ±Õ       ò–
ƒ„¡ ‡        ò M   QÀEÛ*  =uYH    QÀEÛ   ¯”L  ô¨V@  Éª°h@  "      (  =uYH(Z Óªèh  ¯”   
   =uYH  *    Á ÷	  †õ þ ± ‡ ÷	  H58 Áe   
ô¨VÉª°h*  & p õ& u& ñ@  q ñe   Áe` p   L p ðe*  ¡ ‡        ZM   OÀÅÎ*  ?uÖd    OÀÅÎ   ¯”L  p©Åœ@  Ã©i"@  *  .ªK@  .ªþK@  («v"@  («X@  R«°'@  *  « w@  ¹«]Œ@      (T «E`h ¯”   
         *          ÷	  ÷	  †‡ ÂÂeìÿ
û	J ‡ÂÂeàÿ   R«°'(«Xp©Åœ¹«]ŒÃ©i"*  & 
û	      J ‡ÂÂe  ÷	  	‡ÂÂeÈÿ
5
> û	J †  («v"0 
.ªþK  L w   w     .ªK
« w       –M   RÀ¨Ý*  ?uüd    RÀ¨Ý   ¯”L  ¾©H@  ¨«»@  *  ¨«l@  ¨«´'@  5¬ ™@      (  ?uüd(v  («Xh  ¯”   
   ?uüd  *    õE€  õ5  #B@ ò 	ôµ  õXÿ*  &  ± )A8 A ±   ±  ±  ±  *  L ±  FÁÁe  û	V q‡ÁÁe  û	V k‡ÁÁe  )  ¨«lV 
¾©Hb 
(¨«´'n 
 *  r û	V †õ ý a‚æÎe\ A& CA  
ÀÜ *  ˜ `W¬ÿÿ; @8     &ÎEøÿÎe0  €€*  ¾ ÷	êÿó¬        ‡õ ý †± 5‘•³Š ‡ Ã    (5¬ ™*  ä ÃÁÁe  û	V (‡ u õÅðÿ u õÅ    
¨«»è 
 *  
õ¥  4 * 5*  5  5( 1 ô‹) *  0ô• ) A t. ¡ Bu@ &  ÁE W @ $  Vƒõ0û ÂU ÁEáÿÃ  Ã‡   5¬ ™       ÞM   PÀEÂ*  @u~q    PÀEÂ   ¯”L  û¨OM@  û¨VN@  *  Óªè@  5¬ ™@  ¬°'@      (  @u~q(Ò   R«°'h R«³'h  ¯”   
   @u~q  *    µ> 5
> õ  õ5  ôÕ  t  *  & ôµ  ôÕ   
@Ý À5 ôÕ€  t3  *  L @ A €†õÿ 0À      †õ ÿ )*  r ÁôÕ  4 
Hu& @ ÁÁe  û	V ‡õ5   ÓªèŠ 
 *  ˜  ÁÁe  û	V ÁÁe  û	V ‡Ã  ÃÁÁe"  û¨OMž 
¬°'ª 
"5¬ ™  ¾   û	V Ã  Ãf V‡   û¨VN¼ 
5¬ ™        ° M   NÀÕ*  @u`†    NÀÕ   ¯”L  U«6€@  £«`"@  "  ¹«]Œ@      ( «\gh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"U«6€ 
        ú M   NÀÅÎ*  Bu–    NÀÅÎ   ¯”L      (  Bu–(|   ¿«vh  ¯”   
   Bu–  *    &fÀÀeJ æ …”÷	B ‡Ð      ÷	  ÷	 La*  & Î
Àå ÔÎ Ã
ë–
…€‡ ÅÅÅfÅÅ*  L …e‡ ÿÿ   W!Z ‚W!A †W!9 ‚W!0 ‡ÅåÒÿ  r Åå@ ‡ ± ‡        ¬ M   NÀÅÎ*  Buá"    NÀÅÎ   ¯”L  £«`"@  §«õ<@  "  ¹«]Œ@      ( «!th ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   §«õ<¹«]Œ£«`"       °M   PÀÕ*  Bu€K    PÀÕ   ¯”L  «êv@  ¤«V@  *  ¬¸L@  5¬ ™@  l¬‡@  l¬À@      (  "  Bu€K(’œ« h œ«ZXh  ¯”   
   Bu€K  *    ñÅ# 
 
ñ‹ Àðþ÷	  Ã  ÃÀ  0
 ¦  «êv5¬ ™      *  & Âµ 1! È0úqñµ 
 ñÅ 
 Â5 *  L ñµ 
 Â5 Â5	 ÷	  ÷	  W‡Î5   l¬À l¬‡*  r &÷	ª €CñŠ @ñµ 
 	ñ•  ÷	  B‡ñŠ  $l¬‡*  ˜  3÷	  Î5 &@¡ ñµ@ 
 ÷	j ‡÷	    
¬¸L(¤«V*  ¾ € ñµ  
 £	  Âe
 ƒ Á ƒ*  ä r  ÂÃ ûr 1
 Âìp öÿ0
*  
öÿp øÿ0
øÿÈ –
&V‡  £	    *  0  
ð ð‹ ðµ@ 
   ðÀ*  Vp  p  pœ
 
 ðÅïÿ
 0
 0
 0
 ñÅ  | 
 1
 1
 1
 ± ‡        :M   OÀÕ*  BuúM    OÀÕ   ¯”      L  Éª°h@  œ« @  *  œ«ZX@  «êv@  5¬ ™@      (  BuúM(`   œ«wh  ¯”   
   BuúM  *    Ã  ÃÀ  f&öÿ÷	  †ÀÐû÷	  ñµ 
   5¬ ™Éª°h «êv*  & ˆŠA `!’÷	  †ÀÐû÷	  ÷	  †&  Éª°h«êv$œ«   L & ÷	  ° ˆ&V‡   
œ«ZX       š M   NÀÕ*  Bu9T    NÀÕ   ¯”L  5¬ ™@      (    Bu9T( «êvh  ¯”   
   Bu9T       Ã  ÃÁ Áe Bæ Þ	 þ  5¬ ™       ¾ M   NÀEÛ*  Bu=T    NÀEÛ   ¯”L      (  Bu=T(D   « wh  «Ÿzh ¯”         
   Bu=T  *    ôÅ  AEJ É¥ EJ ñ 
W£ ‡W- "  & ÿÿ}  	W£ ‡W- ÿÿ}  ‡        ˜M   OÀ…È*  Bu‘w    OÀ…È   ¯”L  ô¨@  «êv@  *  £«`"@  £«Ú}@  5¬ ™@      (  Bu‘w(¾   £«i"h  ¯”   
   Bu‘w  *    C ƒW‡ÃUË¥ Ró¥P  ƒÁ ÿEÁpÿÂ*  &   ‚ò5 ( 	ó¥   ‚ó5€  3Á€ýÄ$   5¬ ™*  L „-‡Ä+Ì¥ (ÁÀü „"‡Ä £ ôµ*  r   ÁÐÿÁ  ÷	  ‡È•	 0  4 0  ô¨*  ˜  3 w   ó þ s 3
 w   Ààú÷	    £«`" £«Ú}(«êv             ú M   OÀ¼*  Buz}    OÀ¼   ¯”L  H©$`@  œ«@  *  5¬ ™@      (  Buz}(2 ¤«h ¤«Îh "  ¤«h  ¤«ªHh ¤«úWh ¯”   
   Buz}  *    @÷	  À 
ôµ   Àe À &À  H©$`  &    €e

w     5¬ ™œ«       ô M   OÀ¼*  Bu¢}    OÀ¼   ¯”L  ¤«Î@  ¤«@  "      (  Bu¢}(X ¤«Vh  ¯”   
   Bu¢}  *    &&Ì¥	   
 ðµ 
 ÂU ÷	*  &   ‚Áe
 @  1   
  ô  ¤«Î  L Á ÷	  „‡   
¤«       4M   RÀh×      *  Bu    RÀh×   ¯”L  ´:+…@  ,ªPd@  *  Éª°h@  5¬ ™@  Y¬±}@      (  Bu(Ø*  ³ª4}hÄ”«€h  ”«‡h l¬‡h6 l¬Àh6 
  ¯”   
   Bu  *    ‡ ÷	‚P 
P H €fÃ  Ãû	L    5¬ ™*  & ‡÷	~Ã æ ú÷	NP 
P H €*  L fÃ  Ãû	N †w 
÷	FÃ æùÌ¥	   5¬ ™*  r  —# úòµ  5
 È¥öÿð È*  ˜ È‹5œ  È‹>ñÐ
 Ã ñÀ
 È 1  ñµ*  ¾ € 
 /òµ€  +Ã  Ãóµ ( $—# úòµ   5¬ ™*  ä  ñÕ€ 
 && ÷	  p  p  Â    ,ªPd(´:      +…*  
À  fû	P ‡û	T ° ˆ"¢åÿÈ`ú0
*  0 ¢öÿÈ°ýÃ ñÀ
 òµ   0
 ’ð*  V ˆÃ  Ãòµ€  ÄÖ‚&f÷	  €  
5¬ ™$Éª°h*  |0
öÿ&V‡ ƒ&öÿ&÷	  †€ÈÐû°   Éª°h*  ¢ã÷	  K ñÕ 
 fû	T ñÅ 
 ÷	  ‡ &À  ,ªPd"Y¬±}  È æ1ÿˆÀ
û€‡        üM   PÀ¨Ä*  Bu    PÀ¨Ä   ¯”L  9© @  9©ë3@  *  ”«‡@  œ« @  œ«ZX@  « w@  l¬‡@  *      (  Bu(¶k˜:h° •«õ
h  j¬õ<h> 
  ¯”   
   Bu  *    u  5
 @ Â Ã@ùÁPù5
, ÷	Ž ÷	          (”«‡*  & †"°ý5  5  Þ	@ Â	 ÃàùÁ*  L °úõÿÿ, ÷	X ÷	  %‡&f¦B @ A   l¬‡*  r  3 " s $ ‡3" s$ ó & Áe @Âå *  ˜ óµ!  é‚€5  Þ	€|‡ÀzCA *  ¾ u‡ÁsÃpý¦ ²µ kÃüôµ   ef*  ä & õ, q-(  q-&  4
 
÷	*  
  	†&& ÷	  ° ˆ
@( A& 
Ã ÷	  œ« œ«ZX*  0  †–%5  6úÿt t 
 t  t   9© *  V tœ
  ± ± ± ñÅ 
 Þ	1
  1 *  | 1  ñÅÿ
 1Ý 
 ÷	  Ãõ, &4
  9©ë3  ¢ ÷	  ˆ      õ –
w     œ«ZX« w       â M   NÀ…á*  Bu    NÀ…á   ¯”L  •«õ
@  £«`"@  *  ¹«]Œ@  j¬õ<@      (* «Iqh «™’h 
  ¯”   
         *        ÷	  &
÷	  æ ÷	  †–
‡ ÂÂeàÿ   •«õ
j¬õ<
¹«]Œ¹«]Œ£«`"  & { J        ÀM   PÀEÂ*  Bu6‘    PÀEÂ   ¯”L  Â©ù#@  « w@  *  §«`T@  5¬ ™@  Y¬Ð@      (  Bu6‘(Î   §«õ<h  ¯”   
   Bu6‘  *    ôÅßÿ ÷	  †W-L 0ú[  õüL ðµ  L  Â©ù#*  & œ ÁEÿÁ¥  Ã  Ã4
 ðµ   ðÿÿ"   5¬ ™*  L       ðÿÿ$ 0
& ÁÁe  û	V .‡ÁÁe  û	V Á¥  §«`TX 
 Y¬Ðf 
*  r  ô 
 Ã Áe 
Ã
ýÁ¥   *  ˜  ƒ ŠÃ
ý4
 4
 4Š t  õ L   ¾ uL  uN  w     « w       ÚM   xÀh×*  Bu+–    xÀh×   ¯”L  $9.@  $9¦@  *  $9¯@  $939@  $9ƒK@  $9Ùf@  $9Zq@  *  ´:½@  ´:Ê@  ´:+@  ´:¼p@  ´:+…@  *  ,ªPd@  5¬ ™@      (  Bu+–(à¨«»h   ¨«¯h&Î«a(h$¯”   
   Bu+–  *      ðú  @ý  àÿ  àÿ   ú  ü    ôµ  4Š&  $9Ùf$9ƒK$9¯$9.$9Zq$9      ¦*  &  5

 5
 ‡ æÎe" ÷	  A8 P B Áe  ,ªPd*  L 
 HÀe ‡ ôµ!  0ôµ€  ÈU ôµ=  *  r Ñü	Ñe 	
Â  ÷	„ _‡÷	ªÿôµðÿ ôÅ  ´:¼p*  ˜ €  ÈU 
CÝ €ÃÿÿÈÐõ5  ÈU *  ¾ õµ  ÈU @ÈU €Ñü	Ñe ôµ   Ñõ*  ä 	Ñe Ñ÷
‘	
Â  ôµ  Â  ÈU æÎe  ´:Ê ´:½*  
@ Ã  ÃÀ  û	R † û	T ’¡ €æàÿ  5¬ ™*  0ÂÂeÎþR ŽÒú‚± ‡ -‡,  ôÕ€ *  V ôÕ@  ÷	  Â  ð  Ã  Ãóµ ( À  ,ªPd´:+…5¬ ™*  |  û	P ‡û	T ¢  óÕ ( ôµ€  	Â°ù        $939*  ¢u µ ± ‡ A8 A õE€  fV\ õU*  È€  B A u
 µ t  ´ 4, . ô*  î . @& A8 A p   p  p  p *   p  p  ¡ ‡ ôµ  W÷	  ôµ      ,ªPd*  :õ5  ôµ  ðU  &
&
&Îe æ*  `ôµ€  ÎB —¢ ±œ þÿ±œ ÿÿñ*  †þÿfÎeþÿæ‚ ë° fÂ  Ã  ÃÀ   ´:+$5¬ ™*  ¬  û	R † û	T ’€õ u Âpþµ  Ò †± ‡ †¡ ‡        êM   TÀ¨Ý*  BuŠ–    TÀ¨Ý   ¯”L  $9.@  $9¦@  *  $9@  $9#@  $939@  $9š@  $9«‘      @  *  ´:•@  ´:+…@  ,ªPd@  5¬ ™@      (    BuŠ–(0¨«•h ¯”   
   BuŠ–  *      ù  þ  ù  ðü  ü  ˜ý    ôµ  w &  $9š$9.$9«‘$9$9¦$9#*  & Ø÷	  Â  ð  Ã  ÃÀ  û	P ‡û	T ¢  ,ªPd´:+…5¬ ™*  L   óÕ ( @8    &fÃ  Ãó5 (   $939 5¬ ™*  r ÷	’ÃÐÐ  Ð
HÐe ÐÐe *  ˜ B —¢ ÐˆÐe ‚ ôôµ   Ð*  ¾ Ðe 
÷	  ôµ   A
B
 C   ,ªPd*  ä Â	Á …ÁÐõ5€  ÁE Ã  Ãó5 ( &÷	  5¬ ™*  
þ Ã"ÁU       óµ 	 ÁE æ  æ  æ  æ  *  0æ æ æ óµ 	 ÎE C8 Ã ³ P*  V4õ5  ÈU õ5  ÈU Â  Ã    $´:•(5¬ ™*  |ÃÀ  û	R † û	T ’"€Ã  Ãó5 (    5¬ ™*  ¢÷	b ÃÆe Ã  ÃæþÂÂeDþR Ž  5¬ ™*  ÈÒú‚u µ ± ‡ Ã  Ãó5 ( ÷	 Ã  5¬ ™*  î³  ³  Æe Ã  Ã¡ ‡ C ×¬    5¬ ™    Ã ùó‹ ó‹ 
‡        .M   SÀ(Ñ*  Bu©–    SÀ(Ñ   ¯”L  $9¦@  $9X@  *  $9Ùf@  $9Zq@  $9š@  ´:q!@  ´:±'@  *  ´:±r@  ,ªPd@        ¿«v@  5¬ ™@      (  *  Bu©–(®¨«lh¶ ¨«„!h ¨«´'h, ¨«žrh" 
  ¯”   
   Bu©–  (      ðú  `ý  ù   ú  ü    Â  æÐýÂ&  $9Ùf$9X$9š$9Zq$9¦´:q!*  $   æPúC8 Ã 3
 3
 Â  æ0ýôµ    ´:±r´:±'*  J 2÷	  A8 p 
 ôµ   õ5  ðU    ,ªPd*  p Ã  ÃÀ  û	R † û	T ’ÁÂÂenÿ  5¬ ™*  – R ŽÒú‚u µ ± ‡ –
¡ ‡ æ&@*  ¼ &  A8 A ôµ1  	ñ  ñ  1
 *  â aôµ   ]@Àe &

&—¤[ üæÎe *  Ã, Ä0 ƒ¬ ‘ƒ¬ ‘‡       ƒ¤œÿÿûÃ*  .] ÷	Üÿƒ¤œÿÿû‚€„Ã ÷	  †õ0þ    ¿«v*  T
ÐzÈ ñ  ñ  1
 „f÷	´þ*  z†õþ „ƒ± ‡ q   q  q  Â    
Â
ý„ƒ¡ ‡        â M   OÀ¨Ý*  Bu˜    OÀ¨Ý   ¯”L  ´:Ô@  ,ªPd@  *  5¬ ™@      (  Bu˜(B ¨«üRh  ¯”   
   Bu˜  *    ÷	  A8 H Â  Ã  ÃÀ  û	R †5    ,ªPd´:Ô5¬ ™   & û	T È‹5 õÀû ± ‡ ¡ ‡        ² M   NÀ…È*  CuÂ	    NÀ…È   ¯”L  5¬ ™@      (    CuÂ	(. ¹«]Œh  ¯”   
   CuÂ	  *          fÅ  Eµ …&æ¦f¦
 6 Þ	‚ƒ  5¬ ™  & „…€‡        ¬ M   NÀEÂ*  DuÖs    NÀEÂ   ¯”L  £«`"@  ¹«]Œ@  "  ò«ˆ@      ( «åh ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   ò«ˆ¹«]Œ£«`"       JM   OÀèã*  EukY    OÀèã   ¯”L  ´:+…@  ,ªPd@  *  5¬ ™@  Y¬±}@      (  EukY(ˆ ¬¸Lh  
  ¯”   
   EukY  *    ¦Ã  ÃñÅ 
 1
 ÷	  Ì¥	  ñµ@   5¬ ™Y¬±}*  & 
 -òµ€  )ñÅ! 
 1
 ñµ€ 
  ñÅ€ 
 f*  L && ÷	  óµ ( Â  p        p  À    ,ªPd´:+…  r û	P ‡û	T ° ˆ‚‡        ° M   NÀÕ*  Eu¡d    NÀÕ   ¯”L  £«`"@  ¹«]Œ@  "  ¬6@      ( «Ä…h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¬6 
Œ       M   NÀèã*  Gu¼    NÀèã   ¯”L  «êv@  ¹«]Œ@  "  5¬ ™@      (f «ñh  ¯”   
         *    ÷	  E …)‡Å'Í¥ $Ã  Ãó5 ( À  ¹«]Œ5¬ ™*  & pÿ÷	  D „‡Ä£	 ôµ  æ  æ  «êv  L )ÿˆæ  æÿˆè‡ Ààú÷	    «êv             M   NÀèã*  Gur	    NÀèã   ¯”L  ´:ü@  ,ªPd@  *  5¬ ™@      (  Gur	(f Y¬Ðh  ¯”   
   Gur	  *     òµðÿ 'òµ  #òµ€  &
¦Îe æ*  & ÷	  ° Â  Ã  Ã& ô•  À  û	R   ,ªPd´:ü5¬ ™  L ‡û	T ´• Æe õ L 5
N ‡        :M   }Àh¾*  Huþd    }Àh¾   ¯”L  $9)@  $96@  *  $9~Z@  $9pw@  s©À@      (  Huþd(”  ¬°'h ¯”   
   Huþd  *    Áw Ð”Á
µ
> ‡ „± ‡ &„5
: 5
< *  & @& 
Ü   0Š B8 ‚ ƒÃe æS*  L ¦&
æS-       ŠS* æS, ŠK( &
N3 æ *  r æ‘ÿˆ †Ã—  Ã¥  )ÂýÃ¥  	Âþõ>   s©À$9pw$9~Z*  ˜ õ5  Ã¥  Â0þÃ¥  Â@þµ ¬C   $9)$96*  ¾ óÕ   B8 ‚ µ > w ¬5
> C( B, — *  ä  ƒÂ Â(Â
µ
: ×¢: W-:  †w B*  
: C( ÷	ìþÂ
üw ×¢[ ×¢] ×¢, w *  0ð×¢. ×¤; Ö5
: C* B- —  ƒÂ *  VÂ%Â
µ
< ×¢: W-<  S‡B< C* ÷	†þÂ
*  |üT×¢[ ×¢] ×¢, w Œ×¢. ×¤; *  ¢Ù
BÝ3 ƒÆå æƒÃe æ¦æÿˆ‡ÂÃe*  È  æ÷	0þ÷	,þ‚œ ÷	 –
Â: ÷	ä††Â*  î       B ‡Ð•S Ð•Y Ð•0 Ð•: àµ> õ ý *  õ@þ w ôý÷	Þýµ
: ‡ C( 
BÝ, —  ƒÂ*  : Â?Â
×¢[ 9÷	Òÿ
BÝ, Bí: —  c‡Â *  `×¢0 ^‡×¢9 [‚÷	®ÿ×¢, ÷	¤ÿÂ
ðP
BÝ*  †, Bí: —  H‡Â ×¢0 C‡×¢9 @‚÷	xÿ×¢] *  ¬÷	nÿw ÆÂ
ï4ƒ
¿÷	<ýµ
< ‡ C* 
BÝ*  Ò- —  ƒÂ ÂCÂ
×¢[ =÷	Òÿ
BÝ- Bí< *  ø—  ‡Â ×¢0 ‡×¢9 
‚÷	®ÿ×¢, ÷	¤ÿ*  Â
ðõ0þ w æü
BÝ- Bí< —  ó‡Â ×¢0 *  Dî‡×¢9 ë‚÷	pÿ×¢] ÷	fÿw Â
ïßƒ
»ƒ*  jÆå  æƒÃe ææ?ÿˆ†õ€ù õ   w ‚ü  "s©À*  Â[ ÷	2 Â ó%        Â ¦Â ÷	, Â, ÷	*  ¶ ‚÷	 Â] ÷	 †XÁw :þÁ
µ
> ‡ *  ÜÂE ÿÂÂÃ Â5 ÿÂÂÂÃ
øƒ
Â Âe0 ÷	*  ÆÿŠÂ ÂÂÂÃ
ô‡ &ÂÂ
×¢. ×¢; *  (×¢[ ×¤] €ã5à> `€ëÂ
õw Úþ×¢: *  Nƒ
ñ÷	ªûß&Ží —%	 ƒõý w ¤û€%± *  t‡ ¡ ‡ C( B, ÷	Žÿ†C* B- ÷	€ÿ
BÝ, *  šC( æÎeF Â×¢. &×¢; ÷	Fû&Ží *  À—% ƒõ`ù w BûÂ
î–
¡ ‡ ƒ
Â
â± ‡ . *  æ†
BÝ- C* ÷	®ÿ†æÎeêÿƒ÷	üú
BÝ, C*  ( æÎeT Â#Â
×¢; &÷	ÚúÂÂ
×¢0 ‡*  2×¢7 ‚÷	Äú&Ží —% ƒõ0ù w Àúé–
¡ *  X‡       ƒ
Û± ‡ ; †
BÝ- C* ÷	 ÿ†æÎeêÿƒ  ~÷	~ú@& p>  „¡ ‡          M   NÀEÂ*  [uŽE    NÀEÂ   ¯”L      (  [uŽE(.   C©O h  ¯”   
   [uŽE  *    ôµ    0- " 0-
 $ ‡‚0- &   & ôÕ  ‡        ÌM   PÀÕ*  [ukM    PÀÕ   ¯”L  @©ôD@  D©Mw@  *  Éª°h@  œ«W@  «êv@  « w@  ¤«@  "      (  [ukM(Ì D©bh  ¯”   
   [ukM  *    ÷	  †w    \4
 ¦òµ   P M1  @©ôD« w*  &  ÷	  †ÀÐû÷	  C’Ã ÃÀ`òµ  4ñµ 
   Éª°h«êv*  L       058 ul 8 ƒl &
ô¥  ô¥  	ôµ*  r €  ËÿÿÎ^ õ 8 †““ûôµ!  ƒ*  ˜  ôµ   ƒ
ÃE ñ –
÷	  †5 5    œ«W  ¾ Á  ‚÷	  w     ¤«D©Mw       ìM   PÀEÛ*  [u `    PÀEÛ   ¯”L  ô¨"@  ô¨Œ@  *  ;©EM@  ;©OM@  ;©PM@  « w@      (    [u `(ô G©]\h  ¯”   
   [u `  *     ô Ä, õàþ w   óµ   ôÕ    ;©PM*  &  ÷	  W†w   A 
W  ƒÁ óµ!    ô¨";©OM*  L æ  
@Ý  À
4 Î Îæ f÷	  –%  &ô¨Œ*  r ­  6‡        ô 
 ðµ  õ5  	4$ *  ˜ 
 4"  4&  ðµ  0- " 0-
 $ ‡*  ¾ ‚0- & ôÕ  õ5@  u  õ  w   ä   Ã õ þ w     « w;©EM       HM   QÀÅÎ*  [uq    QÀÅÎ   ¯”L      (  [uq(’  J©—h ¯”   
   [uq  	          *   ôµ€  ôµ   Â°ù4õµ  Âpý-ô*  ,  $ 4
" 4
& ôÕ  B ´*  
@Ý Àµ *  R Àµ ÂÀúm
AÝ ôµ   	ôµ!  !ÀÅ*  x  W  ƒÂpúYôµ   ÀÕ C. ×  *  ž Ã ô Á¥ —  ‡ôÕ€  ôe  ôE  *  Ä tÐ 4 Á¥       ´ Àµ ´  ƒÂ û'*  ê Á¥ t0 ) ô• ) 
C@ )ÁÁeöþ@²*  Âðø@”K¤ÀÉ‹ûÂ þ0Â°üõ*  6 µ ± ‡ Ë¥ ó‹ ÂÀÿñPÀ Ö@*  \ ¬     ù	5
 
 5  5    ‚t , t . ¡ ‡        †M   QÀèã*  5u™    QÀèã   ¯”L  $9Î…@  s©À@  *  « w@      (  5uË–(z ©ô&hÎ  ©¿.h4*   ©Iqhj  ©FyhÈ  ©S~h*  ©ñhø  ©™’hÀ 
  ¯”   
   5uË–  *    õÀý õðÿ õù À€
õÐû Æ" *  & w   fÀL W£ ÀL @aB`æcÿˆ¦³" 3  « w*  L         ÷	Þ ÷	¤ÿfæeÿˆ…‡ ó 4 &*  r £	  Îe ó2 ó  8 ³—6 3: 3
< *  ˜ æÎe2 ÿˆÂ—  †—   æ1ÿˆò± È€ù°   s©À$9Î…*  ¾ ‡ ó 4 Ô³4 Ñ³4 &£	  Îe ó*  ä 2 ó  8 ³—6 3: Îæ" æeÿˆÈ‹æ  *  
æ)ÿˆæ  æÿˆóþÿE æcÿˆ3  ³*  0" À  ÷	 ÷	 I s". 	s, 0 p üÿ(  VA ‡ ó. 3üÿ2 æÎe ³4 s . ‡        ü M   PÀÕ*  [u|q    PÀÕ   ¯”L  J©—@  J©Å@  *  J©|—@  5¬ ™@      (  [u|q(8 J©$h  
  ¯”   
   [u|q  *    ÁÁe  û	V       Ã  Ã‡ÁÁe  û	V ‡ôµ   "  J©— 
5¬ ™J©Å 
  & 4
" ô $ 4
& w     J©|—       ’ M   NÀ…È*  \u%!    NÀ…È   ¯”L  « w@      (    \u%!( e©ÝOh  ¯”   
   \u%!      õü ôÅ@  4
 w     « w       zM   PÀEÂ*  Bu›w    PÀEÂ   ¯”L  «êv@  5¬ ™@  *      (  Buœw(Ä £«`"h £«Ú}h® ¯”   
   Buœw  *    Ààú÷	  @ €ø‡ÀöÈ¥ ó0
 0
 
Ü  
«êv*  &  Ã¥P ƒð ÿ < „5‡Ä3£	 0ôµ *  L  ( òµ  ðÐÿ %ôÅ€  Ã  ÃôÕ        $5¬ ™*  r   pJ   œ ÁEáÿ5
B 5
D 5
*  ˜ H ¡ ‡ ððù ðpü W£ ‡W- ÿÿý	
  ¾  ± ‡        Î M   PÀ…È*  \u;;    PÀ…È   ¯”L  c©È_@  l¬N@  "      (  \u;;(8 i©{h  ¯”   
   \u;;  *    õ  ôµ   ÷	  †5 5   óµ!   l¬N  &  óÅ  Ã w     c©È_       pM   RÀÅÎ*  _ud    RÀÅÎ   ¯”L  C©O @  ì©W@  *  Ìªa	@  ØªW@  «W@  œ«W@  œ«ZX@  *      (  _ud(ÊÚ©¶Khd í©SZh  ¯”   
   _ud  *     ôµ@  õ‹3       1
 ÷	  4
 ôµ    œ«ZX*  & 7À  Á B8 Ã ÷	  Q‡õ¥  ôÕ    ì©W*  L õ‹3 ÷	  C ÷	Xw Fôµ@  õ‹3   ØªW*  r 4  4 
 4  ôÅ  ÷	  ôµ  õ  C©O *  ˜ °ý H t,  t, 
 ÷	  ‡    "œ«W*  ¾ 
 Ã ÷	  
‡÷	   m 5 4 ‡÷	¦†w ¼  ì©WØªW*  ä Ò4
  4  4  õ¥ 7 oC< õ¥ 7 *  
)õµ€ 6 Â 
”W 9 ƒW ^ Ùõÿ +*  0Áå0 ùÃÁ`ÃÃC`Â
ëõ : Ãå õ : *  Vƒ
¾Ãõµ 2 ÷	Nõ¥ 7 õ *  |8 ­õ€ü w  õ¥ 7 "        
Ü) Á *  ¢u`: æNàCA" ÷	ÖæÃ &
÷	Æ–
*  È†–5iÎ
ô–
ƒ÷	Þ b‡95
. 5
< A u*  î Ã ÷	Æf÷	„N‡€”À¥
 õ¥ *  . À¥ À¥ ÷	÷	÷	
Ýõ‹3 *  :
õ u<  u<  õ¥ 7 õµ€ 6 *  `‚
ÂE  ÷	  àµ 8 †´ ÷	ô t:    ØªW*  †tm<  5 
 5  5  ‡ 5 5  5
*  ¬
 5
 5
 ‡ õ< õ5@  ÷	ö  ñµ *  Ò
  ñµ  õ‹3 õ µ $A u*  ø @ æ 	õ‹3 õ õÐù Îàõ ÷	*  l ƒ
ƒ÷	– àæ÷	< ƒ‡ö‡Â`‡ õ‹. *  D      õ‹3 u- < Q. õÐù u  µ
< 5*  j. ‡ õ‹3 ôe 
 t 4
 ‡ Ã w   æC  $«W*  4 ƒàƒ#ƒÎàõ‹3 ÷	  Â`Îf÷	ºÿ  Ìªa	  ¶ê†–
‡ @4 €àÀ ¡ ‡        x M   NÀÅç*  Guc}    NÀÅç   ¯”L      (  Gub	(   Y¬T}h  Y¬±}h  ¯”   
   Gub	      ± ‡        TM   PÀ…È*  _u`"    PÀ…È   ¯”L  Ã©"@  Ú©¶K@  *  ë©"@  í©SZ@  « w@  5¬ ™@  l¬N@  *      (  _u`"(,¹©]\h Ý©Ýh  ¯”   
   _u`"  *    ÷	  ÷	  õ•ÿÿ3 A‡Ã  Ãðµ  
õ¥           ë©"Ã©"5¬ ™*  & ÁÁe  û	V ^õ¥   Uõ¥  õ¥  
  
í©SZ* 
 *  L ó, õ¥ 7 û	, ÃÐú  ðµ!  *  r Ãü@
 A B &VPµ 8 ‡Ã€úõ *  ˜ 5Š3 )õ‹3 
õ¥  &
 & & æ¦f*  ¾ &÷	  ´
 ´ ´ ƒôÅH  †5 5    l¬N*  ä ÁÁe  û	V ôÅ@  õ 	õ‹3 ôÕ@  õ  
Ú©¶Kè 
 &  
  õ‹3 
õ¥  ´ ´ ´
 w     $« w       æ M   OÀÅÎ*  _uœw    OÀÅÎ   ¯”L      (  _uœw(f   Ã©"h ë©"h  ¯”   
   _uœw  *    5
 ÃPùõ (Ã@ùõ       #  Ãpýðµ  *  & Ãüôµ   BÂe2 œ Š
œ œ   L  
 


4
 ‡ 4
 ± ‡        M   OÀÅÎ*  fu[–    OÀÅÎ   ¯”L  9© @  Éª°h@  *  œ«W@  œ«ZX@  «êv@      (  fu[–("  ì©Wh€ ØªWhø «Wh  ¯”   
   fu[–  *      
 Áe @4 t
 4
  0f&¶ì*  &   ŽŽì &
Ž’¶e V—#€ ´£ ‚²£ *  L ‡Ã5 
òÅ 
 Š•r 2 EN&æ÷	*  r   ƒ†–5(€æ ‚
Â ÂB8 ÷	    œ«W(9© *  ˜ ƒúÿ†È%`úÈ%°ý1  ôÕ  &*  ¾ & ÷	  ° ˆ      ± ‡ 	
Ã5 ñÕ 
 ±Š qí  
œ«ZX*  ä 8  ú‚qm8  q8  t ÷	  †ÀÐû÷	    Éª°h(«êv  
C’Ã ÃÀ`54 ul 4 ‡        ŠM   QÀEÛ*  guüd    QÀEÛ   ¯”L  9©ë3@  ¤«V@  *  5¬ ™@      (  guüd(Ê («$h  ¯”   
   guüd  *    ôµ€  ôµ   õ°ù Rôe  ôE  5*  &  . 5Š1 5) 0 õ• 0 ôµ  ô•  õ•*  L   ô•  õ•  ôµ   ôÕ€  ôÿÿ$ ô*  r ÿÿ" ÷	  Ãõ5  ôÕ  ô $ 4
" 4
  
9©ë3*  ˜ & W­   ôµ   õpú   ÷	  Ã  &¤«V  ¾   Ãf V‡   5¬       ™       PM   PÀ…È*  hud    PÀ…È   ¯”L  i©€‰@  ì©W@  *  Ìªa	@  ØªW@  «W@  œ«W@      (    hud(òB«¶Kh  ¯”   
   hud  *     t,  t, 
 ÷	  K‡  
 Ã  œ«W*  &  ô Ã ÷	  †È%°ý:  
 Ã ÷	  ì©W*  L   1‡÷	   ƒ`Cm: õ > õ 4 †Cí: Cm  ì©W
ØªW*  r @ õ 4 ƒõàù w Ö´ 4
  4  Bl*  ˜  õµ 2 	B-@ ÷	÷	üÑ†Bm õ: *  ¾ Aõ¥ 7 =õµ€ 6 Ã õ0 BÂ`@@ Á
 *  ä ÷	  Áe0 bÃ
÷Áe õ 0 I@ Ñå õ¥  i©€‰*        
 7 C: Cí0 B" ÷	F&
‚æÃ ÷	*  06ÂŠ†–5w Î
õ–%B> C< ÷	ô‡õ: *  Võ¥ 7 	æ
‚Ã ÷	ü –
p‡õ¥ 7 õµ€ *  |6 
ÁE B ÷	  ñÕ 
 à´ C ƒà  ØªW*  ¢õµ 2 õ¥ 7 õ¥ 7 õµ€ 6 ×  *  È	÷	æ õ < ÷	Ò :‡ 3 " 3
 $ 3*  î & s-<  ƒs<  õ5@  u  õ¥ 7 *  B í Bí: µ  
ñµ 
  m @m: 5*  : 5 
 5  5  ‡ 5 5  5

 5
*  ` 5
 ‡ u 4 B æC4 Càƒ#ƒÎà÷	    (Ìªa	*  †  ðÕ 
 Î¦÷	 ‚ê†–
‡ –
Á`Â`‡ *  ¬Ã       w   m &
õ¥ 7 õ¥ 7 	õµ€ 6   
«W$  ÒËÿÿÎ^ õ 4 †““ûñÕ 
 –
‡        xM   OÀÕ*  huœw    OÀÕ   ¯”L      (  huœw(è   S«"h  ¯”   
   huœw  *    ôÅ@    Ãpý°° fÃüôµ   `u > *  & u < Ãàùœ 5œ 2 5œ 6 µ7 5 8 — *  L  * A-< B‚ A-< <Á Â¥ *  r ðµ€  Áe !Â¥ 
Ü) Â `ðµ€ *  ˜  Áe Â¥ B< 
Bm> Â
—¢
 ‡—¢ *  ¾ ‚
u: Am< ðµ  p  ‚u@ ¡ ‡ õ   ä ± ‡        "M   NÀÅÎ*  hu‚…    NÀÅÎ   ¯”L  ì©W      @  Éª°h@  *  Ìªa	@  ØªW@  «êv@  5¬ ™@  l¬‡@  "      (  hu‚…(U«SZh  ¯”   
   hu‚…  *     	À  Á Ã ÷	  S‡q8  ÷	  5
  ì©W$ØªW*  & : õµ 2 #õµ 2 CŸ> µ
> õ
< × + *  L × $ Ñ•
 × 1 Ñ• × 0 Ñ•
 Ñ•
 *  r µ
: B> f< C4 Càƒ#ƒÎà÷	  Î¦÷	   Ìªa	*  ˜ J ‚ð†–
‡õ: u 4 ‡÷	2 ‡Ñ• ÷	( †*  ¾ 5 5  5

 5
 5
 õ5@  u  ‡ *  ä C àñ À      ÷	  †‡ ÷	  †  5¬ ™l¬‡&Éª°h  
ÀÐû÷	  ‡   
«êv       PM   NÀ      …á*  hu`†    NÀ…á   ¯”L  C©O @  B«¶K@  *  S«"@  U«SZ@  « w@  5¬ ™@      (    hu`†(d U«Ýh  ¯”   
   hu`†  *    Â 4
 ÷	  #‡ÁÐúõ¥   Ã  Ãðµ    S«" 5¬ ™*  & ÁÁe  û	V ÷	  Á€ûôµ  u Á  
U«SZ* 
C©O    L Áe  û	V õ õ  w     B«¶KL 
« w        ¾M   OÀèã*  ju[K    OÀèã   ¯”L   © }@  œ« @  *  œ«ZX@  5¬ ™@      (  ju[K(ê œ«Wh  
  ¯”   
   ju[K  *     Ì¥	 4
   ñµ 
 Tñµ 
 	ÉŠñå *  &  ± ñÕ       
 ðµ!  8p,  p,   0ƒf*  L æ &
&
&
C B ì  ‚ì æ¦,. *  r ƒ6.  Ã  Ãó5 ( 6  6   ÷	    5¬ ™( © }*  ˜ –5–5–5‡ñÕ 
 «B’	±à ± ‚
Â Â±*  ¾  Â ÷	  †&& ÷	  ° ˆ	
1
 1
   œ« œ«ZX
  ä &V‡        „M   NÀ…á*  luÖs    NÀ…á   ¯”L  œ«ZX@  « w@  *  È«`T@      (  luÖs(Ä ò«ˆh  ¯”   
   luÖs  *    ôÅ@   Áüòµðÿ Sòµ  Môµ   I*  & Ápýòµ  CÁ€þô >òµ   
Âÿÿ÷	    (È«`T*  L  †AL 0   4
 ô 4        2$ *  r ò" 2 &  ñÕ 
 ñ  1  ÉŠ*  ˜ ñå  ± ò	
4
 ÷	  Á ôÕ  4
 u  œ«ZX
  ¾  w     « w       6M   NÀEÛ*  mud    NÀEÛ   ¯”L  ì©W@  Ìªa	@  *  ØªW@  «W@  œ«W@      (  mud(@  
¬¶Kh  ¯”   
   mud  *    &
 & & 4 
 4  4   1-*  &   1-
  ÷	  ?‡   
 Ã   œ«W*  L W­7  	ô u-. 8 Ã ÷	  &‡÷	     ì©W&ØªW*  r m õ: Ã I@ Ñàõ0 õà. õ¥ 7 
C*  ˜ : Cí0 B" B÷	8 B> C< ÷	, †      5 5*  ¾   ´ ´ ´
 5 
 5  5  ‡ æ*  ä C4 Càƒ#ƒÎàõà. ÷	    ðÕ 
 Î¦  Ìªa	*  
f÷	 ‚‡B â–
‡ Ã u-. 8   0W­7  Ã w     «W       *M   NÀEÛ*  mu¡d    NÀEÛ   ¯”L  S«"@  « w@  *  
¬¶K@  5¬ ™@      (  mu¡d(b ¬Ýh  
  ¯”   
   mu¡d  *    Â ÷	  "‡Ã€þ5 . Ãàù5- @ Ãpú  
S«"*  & õ¥ 7 Ãüðµ!  
Ã  ÃÁÁe  û	V Ã  5¬ ™"
¬¶KB 
   L  õ õ €4
 w     « w       ,M   NÀÕ*  ouó~          NÀÕ   ¯”L  ØªW@  œ«W@  "      (  ouó~(Š l¬Nh  ¯”   
   ouó~  *    ¡  @÷	  ôµ  8ñµ 
 4 m   ØªW*  & &
ò¥  ò¥  	òµ€  ËÿÿÎ^ õ *  L 4 †““ûòµ!  1  –
òµ   ±
   r ñE  Âe( "
âe b÷	  ‡   œ«W       M   QÀ…á*  ‚uœ'    QÀ…á   ¯”L  9© @  ÉªØh@  *  œ« @  «êv@  l¬‡@      (  ‚uœ'(  ©€Th  ¯”   
   ‚uœ'  *    W­    q " q  $ ñe $ q" f*  & & 

Â Ã ÷	  úÿ†–5± ‡ ÷	  †À  9© $      ÉªØh*  L ðþ÷	  f Ã 
Ã
ý€±
  ±   «êv*  r  ‚ öe 
 v ñ  ¶,"  ¶,$ 
 ‡*  ˜ ñÕ 
 ÷	  ‡±
  ±  ‚ ¶,"  ¶,  l¬‡*  ¾ $ 
 Øþ   € p $ p " $ " Âå*  ä  ƒ°  ð ñÅ 
 
÷	  †Àðþ÷	  €  œ« $«êv
  
&V‡        
M   OÀÕ*  ƒu#    OÀÕ   ¯”L  d©°;@  m© …@  "      (  ƒu#(^ 9©˜Kh  ¯”   
   ƒu#  *    æ  &f
C  6 B, ÷	  €‚Âå   d©°;*  & ÷	  ƒf¦
÷	  @ƒ‚&  
@Ü( 
  d©°;m© …  L ÷	         Ál @‚‡   m© …       ÈM   PÀ¼*  ƒukM    PÀ¼   ¯”L  9© @  @©ôD@  *  C©z@  D©Mw@  Éª°h@  œ« @  œ«ZX@  *  «êv@  « w@  ¤«@  Y¬T}@      (    ƒukM(˜ D©Åbh  ¯”   
   ƒukM  *    ÷	  †w    
Á Â Ã ÷	  úÿ†"  @©ôD« w9© *  & `ú	&& ÷	  ° ˆ	"`úúÿ÷	    œ«ZX(Y¬T}*  L Þ÷	  †Àðþ÷	  ÷	  ‡4p $ 4r " 4
  
Éª°h«êvC©z*  r & 
÷	   ¦ Á  ÷	  ‚÷4
 w     
œ« ¤«(D©Mw       ¼M   PÀEÂ*  ƒu `          PÀEÂ   ¯”L  ô¨"@  ô¨Œ@  *  9©ë3@  ;©EM@  ;©OM@  « w@      (    ƒu `(Ê G©…\h  ¯”   
   ƒu `  *      ÷	  B$ Ãòµ   ÷	  †w   B$   
9©ë3ô¨"$;©OM*  & òµ   ôÕ   ?A 
  
Ü( Ã Ã*  L æf÷	  –
  
œ ÂÅð —  Ü) —    
ô¨Œ*  r Áe 
l* t 5

 5
 5
  
4 4 *  ˜  4 ô 
 4Š ­  ‡–
õ  w     (« w  ¾ ƒõ þ w     ;©EM       M   PÀÕ*  ƒuq    PÀÕ   ¯”L      (  ƒuq(\  J©˜h ¯”   
   ƒu      q  	         *   ôµ!  Â@þõµ  Âpýw @ ¬*  ,      ù5
 
 5  5œ 1 5  *  R f
 V] µ

  
@Ý Àµ Àµ ÂÀú_*  x 4 t , t .  
@Ý   ÂpúM4Ð*  ž  
À¥ 
BÝ0 Â ´) A t* t *  Ä Â û5B`À¥ Âe ‚

AÝ1 
t( Á *  ê Á ‚W  @ƒÂ@ÿ
C@ )ÁÁeøþ@²*  Âðø@”K¤ÀÉ‹ûÂ þ0Â°üõ *  6µ ± ‡ Ë¥ ó‹ ÂÀÿñPÀ Ö¡ ‡         M   RÀEÛ*  ƒu|q    RÀEÛ   ¯”L  J©˜@  J©Å@  *  J©|—@  5¬ ™@  h¬8L@            (  ƒu|q(@   J©E$h  ¯”   
   ƒu|q  *    f
 ÁÁe  û	V Ã  Ã‡ÁÁe  û	V 	‡Ã  (  J©˜ 
5¬ ™J©Å 
(5¬ ™  & ÃÁÁe  û	V †µ
 ƒ5w     
h¬8L* 
J©|—ú       JM   PÀEÂ*  „u%!    PÀEÂ   ¯”L  Éª°h@  œ«X@  *  «êv@  « w@      (  „u%!(„ e©Ph  
  ¯”   
   „u%!  *    ôÅ@  5
N Ãpý òµ  +Ã€þ-   *  & -   ! õ0úN ñµ 
 ÷	  †Àðþ  "Éª°h*  L ÷	   m ÈÕ Â ñÕ 
 4
 ÷	  ‡Ã õ  «êv œ«X  r L uL  uN        w     « w       – M   OÀÅÎ*  „u;;    OÀÅÎ   ¯”L  c©È_@      (    „u;;( i©Å{h  ¯”   
   „u;;       
ƒÜ( Ã Ãõ  w     c©È_       LM   PÀ…á*  …u$™    PÀ…á   ¯”L  ©€T@   © }@  *  Éª°h@  Óªz@  ”«X@  œ«X@  «êv@  *  5¬ ™@  j¬˜@      (  …u$™( ©À}h  
  ¯”   
   …u$™  *     Ì¥	   ƒ ‚ ì$ ‚ì" æ &
&
*  & &
æ¦,. ƒ6.  Ã  Ãó5 ( 6   5¬ ™*  L  6   ÷	  †–556Š @ÀeL  ö$     © }*  r ö"  ÷	        –5–5–5†÷	V õýL ‡ðÕ  ÷	  ©€T*  ˜ 
 ± ‡ ÷	< ‡ °$ p °" r ÷	  ñU 
   "Óªz*  ¾ 4
 ÷	  ‡ Æe  4
 ÷	  ± ‡  
Á   
œ«Xj¬˜*  ä Â Ã ÷	  †õL ó± ‡ úÿ÷	  †Àðþ  ”«X"Éª°h  
÷	  t ‡   «êv        M   SÀÕ*  †ut:    SÀÕ   ¯”L  9©ë3@  9©˜K@  *  Ã©€"@  Éª°h@  ”«X@  œ«X@  «êv@  *  « w@  j¬˜@      (  †ut:(:¹©@Xh:   ¹©…\h  ¯”   
   †ut:  *    5
N ÷	  †÷	5
2 ÷	" õ¥   4    
Ã©€"*  & 4 
 ôe 
 t w   õµ        æ  æ    « w*  L B Ã ‘”Ã
ý€%õµ  @
 A B*  r  õ¥   W-2  	ôµ@     *  ˜  
  ÃÐúw h4 t W      *  ¾ Ã°ûA†ÃPü r  2  ƒÃ°ûw *  ä ,÷	  ´ 5 
 5  5  õ¥   5  9©˜K*  
 & 5 (  2  r   4
 *  0&f÷	  †–%w Ô €B, ÷	  ÷	  †õ  œ«X 9©ë3$”«X*  VL ^w Üþt ÷	  †Àðþ÷	   m W-2    Éª°h«êv*  |õ5   ÃúÈµ Èµ &.õ¥   Èµ *  ¢Èµ ôe  t    Ã°ûw æþÃ      @ú*  ÈÈµ 	Èµ õµ  ÃPþÁæ÷	  ƒ4
  $j¬˜*  î ôÕ@  õ L uL  uN  fL V‡ õ*  L ôÅ@  4
 4
 5

 5
 5
 5
& 5
( â       jM   RÀEÂ*  ‡u`"    RÀEÂ   ¯”L  9©ë3@  ¹©@X@  *  ë©€"@  Éª°h@  Ìªa	@  «êv@  « w@  *  j¬˜@      (  ‡u`"(@Ý©‚h  ¯”   
   ‡u`"  *    ÷	  †w ÷	  †w ú  ÷	  †Àðþ÷	    ë©€"¹©@XÉª°h(«êv*  & m ‚
õ¥ 0 µ” µ” u.  õ¥ 0 *  L   
Ü) õà A" Â`÷	   õ5@    Ìªa	*  r  óµ  ñµ 
 óµ      =ÿ µ u> *  ˜  C 5
 õ  	ƒõÐù õ C õ A *  ¾ ÷	  ÷	  Ã÷	b 4  4 
 ôe 
 t   Ìªa	
9©ë3*  ä W- ÐùÃ 5
N õL uL  uN  ôÅ@  *  
w   4
 4
 5

 5
 5
 5
& 5
( ÷	 ä  « w  0 4
 ÷	  ‡   j¬˜       (M   QÀèã*  5uË–    QÀèã   ¯”L  $9Î…@  s©À@  *  Éª°h@  ÉªØh@  « w@  5¬ ™@      (  *  5uË–(¬ ©ô&h~ ©¿.h( ©Iqh ©Fyhx"   ©S~h*  ©ñh¨ ©™’hp¯”   
   5uË–  *    õÀý õðÿ õù À€
õÐû Æ" *  & w   f      ÀL W£ ÀL @aB`æcÿˆ¦³" 3  « w*  L   ÷	Ò÷	¤ÿff÷	^ æeÿˆ…‡ *  r ³" 3  þÿE D Áe B”	``fÂ
*  ˜ ý÷	 ÷	®‡ öÿ÷	  «‡øÿ÷	  ¥‡  Éª°h&ÉªØh*  ¾ €‡ Ã  ÃÀ$ ÀE 3 $ ó& óe"   
5¬ ™*  ä & È Á5 ÷	~ÿææ  æ!ÿˆ‡ ó 4 &*  
£	  Îe ó2 ó  8 ³—6 3: 3
< *  0£	 	ôµ€  æÎe.³< æÎe2 ÿˆÂ—  †  &s©À*  V—   æ1ÿˆò± È€ù° ‡ ó 4 È³4   $9Î…*  |Å³4 &£	  Îe ó2 ó  8 ³—6 *  ¢3: Â£	 ôµ€        Áe Â" ‚á‚‘ ƒ*  ÈÑ• æÎe:þ‰0
üÿÆ" ‘‘Â
ý‡ æ" æ*  îeÿˆÈ‹æ  æ)ÿˆæ  æÿˆóþÿE *  æcÿˆ3  ³" ÷	~þÀ  ÷	 ÷	 I s". *  :	s, 0 p üÿA ‡ ó. 3üÿ2 æ*  `Îe ³4 s . ‡ &æ¦f&€
 v
 Ã  Ã  &5¬ ™*  †óU ( ÷	âý÷	.þóE ( €‚ƒ„…æsÿˆ       ÞM   PÀEÂ*  Buœw    PÀEÂ   ¯”L  «êv@  5¬ ™@  *      (  Buœw(£«`"h £«Ú}h¯”   
   Buœw  *    Ààú÷	  @ €ø‡ÀöÈ¥ ó0
 0
 
Ü  
«êv*  &  Ã¥P ƒð ÿ h „a‡Ä_£	 \ôµ       *  L  T òµ  ðÐÿ QôÅ€  Á×   ‡*  r ð5€  ôÕ€  ÃåP ÂÂå
 ‚°P B`Âå *  ˜ CÃEüÿÑQÃ
ý…Ã  Ãó5 ( ôµ€    5¬ ™*  ¾ ðpÿ ôÕ  pJ   œ ÁE*  ä áÿ5
B 5
D 5
H ¡ ‡ ððù ðpü W£   
‡W- ÿÿý	 ± ‡        "M   NÀÅç*  Gub	    NÀÅç   ¯”L  5¬ ™@      (  "  Gub	(Š Y¬T}h  Y¬±}h\ ¯”   
   Gub	  *    ñÕ@ 
 BÂe ƒ‚ ÂE ù3 £ ôµ*  & €  ³
 
0
 fÃ  Ãû	T ñµ 
   5¬ ™*  L ÷	 †ñÅ@ 
 ¡ ‡ B f¦ÂE ±        Á  r & ± 2
 ³& Â± ‡        ÌM   QÀ0ä*  5u0™    QÀ0ä   ¯”L  $9Î…@  ›rX:@  *  ›r†@  û¨€@  s©À@  « w@  ó«H†@  *      (  5uË–(h ©ô&hÌ  ©¿.h" ©Iqh^ *   ©FyhÆ  ©S~h*  ©ñhö  ©™’h¾ ¯”   
   5uË–  *    õÀý õðÿ õù À€
õÐû Æ" *  & w   fÀL W£ ÀL @aB`¦³" 3    « w*  L ÷	Ò ÷	ªÿf…‡ ó 4 &£	  Îe*  r  ó2 ó  8 ³—6 3: 3
< æÎe  ³< æ  "û¨€Ž 
 *  ˜ Îe2 ÿˆÂ—  †—   æ1ÿˆò± È€ù° ‡   s©À$9Î…      *  ¾ ó 4 Ï³4 Ì³4 &£	  Îe ó*  ä 2 ó  8 ³—6 3: Éæ" æ  æ  &÷	  Ÿ  ›rX: ›r†&ó«H†*  
  Ÿ  þÿE 3  ³" À  ÷	 ÷	 I   ›r†›rX:*  0s". 	s, 0 p üÿA ‡ ó. 3üÿ2   VæÎe ³4 s . ‡        
M   NÀÅç*  Gu0€    NÀÅç   ¯”L  ò«E"@  5¬ ™@  *      (  Gub	(f Y¬T}h  Y¬±}hJ ¯”   
   Gub	  *    ñÕ@ 
 BÂe ƒ‚ ÂE ù3 
0
 f*  & Ã  Ãû	T ñµ 
 ÷	 †ñÅ@ 
 ¡ ‡ B  5¬ ™  L  ±  &€÷	  Â± ‡   ò«E"             „M   PÀÅç*  3u05    PÀÅç   ¯”L  ì©x@  ”«€@  *  ”«‡@  «êv@  5¬ ™@  Y¬T}@      (  "  3uÀ(@9© h  9©ë3h"¯”   
   3uÀ  *    æCPÎU £	  Ã 	À, *  & Á, Ã ö&À      
0
 0
úÿÃ  5¬ ™*  L –
ó 
Ä, ðúÿÃ`ú3Š ó ³ *  r óÅ 
 ³  ƒÀðþ÷	  fƒ ÷	(†–%  «êv*  ˜ Ã þ3± ± ± CðúÿÎ5 Î5 ó‹*  ¾  Á÷	  †Ã`ú0
úÿoC»óÕ 
 3 ³Š  Y¬T}*  ä  Î5 !ó æƒ ÷	À ƒ†Ã þVs *  
 s  óÅ 
       ñµ 
 óÕ 
 1
 1
 Á*  0Î5 5ñµ 
 1Î5 (¦æ£	  Ãœ*  V ÃE ÿÂ  ÷	  ƒ‚‡ñÕ 
 ÷	  †"`ú  ì©x"”«‡*  |	0
úÿ1
 1Š ñÅïÿ
 £	 ÷	  ñµ  $”«€*  ¢ 
 ÷	  ÁÃ È–
&V‡ £	    Y¬T}*  ÈA ñ‹ B, ‡ñµD 
 Ã5 	ñµ 
 *  îÃ5 ñ A ãÁ± 	ñÅïÿ
 *  1
 1
 1
 ‡ £	  óµ  Ã 
  :
‡        ÐM   PÀÕ*  Bu0N    PÀÕ   ¯”L  œ« w@  «êv@  *  ¤«V@  ¬¸L@  5¬ ™@  l¬‡@  l¬À@  *      (  Bu€K(œœ«       h œ«ZXh  ¯”   
   Bu€K  *    ñÅ# 
 
ñ‹ Àðþ÷	  Ã  ÃÀ  0
 ¦  «êv5¬ ™*  & Âµ 1! È0úTñµ 
 ñÅ 
 Â5 *  L ñµ 
 Â5 Â5	 ÷	  ÷	  :‡Î5   l¬À l¬‡*  r ÷	r &÷	° €$ñŠ !ñµ 
 	ñ•  ÷	    (l¬‡*  ˜ #‡ñŠ ÷	  ÷	@ Î5 &@¡ ñµ@ 
 ÷	  ¬¸L*  ¾ l ‡÷	  €p öÿ0
öÿp øÿ0
øÿÈ –
&  
¤«V*  ä V‡ ¦æ£	  ñµ 
 f f Ãœ*  
 ÃE ÿÂ  ÷	  ± ± ñÅ 
 ƒƒ‡  £  œ« w*  0	      
ð ð‹ ðµ@ 
 *  V        ðÀp  p  pœ
 
 ðÅïÿ
 0
 $  |0
 0
 ñÅ 
 1
 1
 1
 ± ‡        ú M   NÀÅç*  =u0g    NÀÅç   ¯”L  5¬ ™@      (  "  =uÃ(h Éª°hh  ÉªØhh ¯”   
   =uÃ  *    æöÿæøÿÀ      €c¦¶ Jñµ 
   5¬ ™*  & 1! @ ÀÿÿÀ ÿÿ—#öÿ¦ÿ   L À `¨ÿÀ €¡ 

± –
‚‡        M   OÀ¼*  Bu0    OÀ¼   ¯”L  ¤«@  ¤«By@  *  5¬ ™@      (  Bu¢}(X ¤«Vh  ¯”   
   Bu¢}  *    &&Ì¥	   
À      Â  ÷	  5¬ ™*  &         ‚Áe
 @  1   
  ô  ¤«By  L Á ÷	  „‡   
¤«       ¬ M   NÀÅÎ*  1up;    NÀÅÎ   ¯”L  ì©By@  5¬ ™@  "      (  1uwL(  ô¨š:h  ¯”   
   1uwL  $    p 0Š
 À      Â  ÷	  @‡   5¬ ™ì©By       M   RÀ°¾*  4u0g    RÀ°¾   ¯”L  ´:¼p@  ô¨V@  *  9© @  C©z@  m© …@  ,ªPd@  Éª°h@  *  œ« @  «êv@  5¬ ™@      (  4uëg("  p©Åœh ¯”   
   4uëg            *   æ5
8 5
: 5
< õ  ¡  óµ  õ*  . Ðÿ       ± Ã ób‡&
&
&
C@ 6ÁÁe²ÿÂ*  T ðø@²N@”‚ÒK¤ÀÉ‹úÂ þBÑ¦QÔ*  z QÔŠ ‡0Â°ü5
ÁÜ "ƒÂ@û-JŠ
*    PÀ’ÀÀÀaÀe~ È	"‡À ÉC Ë¥ æœ*  Æ  ÷	ð‡Ã ôC< 3Š æÿ ÷	Ö‡3 *  ì 3
 Â 
Æe µ õ ÷	
 ƒf V‡ A*  8 
5
8 Â ÷	  †õðþ ‡ ¡ ‡ w  w ì  œ« *  8w w Xf&Àó÷	vƒfæÅÅe 
%
%
*  ^%
÷	V ƒÓ$‹ ËËËË÷	@ eƒ†„…*  „‡ ‚D˜Äå0 Ä%	 A‡%D˜Äå0 Ä%	 :‡ÄaÄÄ*  ªaÄJ m < <   Ã ÷	ÄÿÃ
üBÄ"NAJ*  ÐBEFRAMRPAYAMNUJ      LUJGUAPESTCOV*  öONCED  !¥!£!­ 	`Ô •ôÂ û*  ¯uþÿÍ5 ÃÀ% €
ƒ
Í
Ce*  B÷	@ÿÍæ ä‡Í`Õ
%%ß#Ý#Û$)Åå f*  hC
 ÷	  Ae@C÷åt%
å. åÄÀ  m© …*  Ž  fUUUM…UÃB
†Õe˜ UM…Õe€–U*  ´UM…À
é‡ µ> ôµ!  
&†à‚*  ÚÀ &
¦&÷	  ° ¦fæÃ  ÃÂ  À  û	  ,ªPd5¬ ™"´:¼p*   R Â€ùæ`ÿ‡û	T ± ‚’Öƒ†} > À*  &ÿ÷	–ÿƒÁQ$‘“Š‰Ñ ‰!Š‡ &
ôµ   $t *  L !†ŒŒvŒ  
 Ý ` 
÷	8‡€cÁ*  rÐQ$Àe       Àe Â Â
ý¡ –
‡ *  ˜õ< ¡ ‡ *+,-
	 
*  ¾Á &
ôµ0  hB: 	€œ €
Ê_€Ž*  ä÷	¼ Z‡õ: A< W" 
‡1t  ôµ  I*  
Á1  €c5: °­  ÔÀÀezÿ””c*  0Â`ð¥ þÿJ’öóµ  3
* 3
, À RÀ
*  VýÂ À  R”À
ý×¬ 8 ‡€3œ 5 3 *  |6 3
 2 3œ	  3œ 4 3T . 3V 0 ¡ –
Ž*  ¢‡ æ&fA8 
Á ÷	  Â þ/‡58 
÷	  ô¨V*  È  ‡€ Â 
÷	  úÿu8 †È%`úð  œ« 9© *  î6 à% þÂðþö þ ± ÷	  †ÀÐû÷	    Éª°h(«êv  ÷	        Â û–Uƒ‡   C©z       *M   RÀÅç*  ¸up†    RÀÅç   ¯”L  E©¶H@  ¾©à@  *  À©h	@  ;ªà8@  =ªÐ@  Šª@ @  ¯ª€@  *  Óªø8@  I«„–@  S«`"@  œ« @  œ«w@  *  « w@  Ã«q@  ¬À@  5¬ ™@      (    ¸u`†(€U«-‚h  ¯”   
   ¸u`†  *    5
4 ÷	  †w ÂÁ
÷	  "‡Ã  ÃÁÁe  !  
S«`"œ«w 5¬ ™(À©h	" 
*  & û	V †, Ðü	Ã  ÃÁÁe  û	V ê†÷	´  5¬ ™Óªø8< 
*  L Ã  ÃÁÁe  û	V †w Vf6 5
6 õµ ,   5¬ ™=ªÐT 
†*  r Ã  ÃÁÁe  û	V †5 ôÕ@        µ4 Ã  Ã  5¬ ™¬Àz 
&5¬ ™À*  ˜ ÁÁe  û	V @@  œ €Š÷	  ?‡p-<  :‡÷	    ¯ª€š 
Šª@ (E©¶H *  ¾ õµ 9 4Ã  ÃÁÁe  û	V †, Ðü	Ã    5¬ ™À©h	Î 
(5¬ ™«*  ä ÃÁÁe  û	V ê†R÷	Ã  ÃÁÁe  û	V G‡"  
Óªø8è 
5¬ ™";ªà8 
*  
õµ , Ã  ÃÁÁe  û	V †5 ôÕ@  ±  5¬ ™¬À
*  05 
 5  5  ôµ  4 
 4  *  V4  4  4  4  õ õ  ôµ*  |  õ  ôµ@  õ  !Ã  ÃÀ    "5¬ ™*  ¢5 5  ÁÁe  û	V uL        uN  5

   I«„–®
*  È5
 5
 ôÅ  4Š  
÷	  4
 A4    œ«w*  î
÷	  ôÅ@  w   u: 6 õµ 9 8õµ 9   
œ« « w*  4A@ ñµ  C: `Ëµ (Ã  ÃÀ  È   5¬ ™*  :àý–
A@ ñ‹ ¸§ôÕ  &Ã  ÃÁÁe  û	  5¬ ™&¯ª€Z
$  `V €Ã ÷	  Ã ÷	  ã‡õµ 9 é‡   Ã«q¾©à       M   UÀ¼*  ½u0g    UÀ¼   ¯”L  E©¶H@  E©ÉH@  *  ¾©è@  À©h	@  ;ªà8@  =ªÐ@  ŠªE @  *  ¯ªH@  Éª°h@  Óªø8@  I«„–@  œ« @  *  œ«w@  «êv@  « w@  Ã«ô@  Ã«      q@  *  ¬À@  ¬"@  5¬ ™@      (  ½u¡d(À  ¬-h  ¯”   
   ½u¡d  *    ÷	  †w  ÷	  †ÀÐû÷	  u4 t @m: Àe  ¬"Éª°h«êv*  &  ÷	&@@ ðµ  u-,  õàù  €*  L ÷	  õµ 9 5
4 w ‚
&
÷	p†–
w rÁ  E©ÉH*  r  
÷	^	†–
uL  uN  w z–
5
, Ã    (5¬ ™*  ˜ ÃÁÁe  û	V  
÷	  5Š9 Ã  ÃÁÁe  û	V (  
¯ªHœ 
ŠªE 5¬ ™$=ªÐ¶ 
*  ¾ †w (f6 5
6 õµ , Ã  ÃÁÁe  û	V   5¬ ™$¬ÀÜ 
 *  ä †5 ôÕ@  µ4 u < u >   ‚*  
 `      fÃ  ÃÁÁe  û	V  
@ÔfÀE÷	    5¬ ™¯ªH
(ŠªE ¯*  0\‡ôÕ  p-<  :‡÷	  õµ 9 4Ã  ÃÁÁe  E©¶H"5¬ ™*  V  û	V †, Ðü	Ã  ÃÁÁe  û	V ê†8÷	"  À©h	T
5¬ ™Óªø8n
*  |ä Ã  ÃÁÁe  û	V -‡õµ , Ã  ÃÁÁe  5¬ ™;ªà8†
"5¬ ™ *  ¢  û	V †5 ôÕ@  ­õ õ  ôµ    ¬À 
*  Èõ  ôµ@  õ  –
õÐþ –
u*  îL  uN  Ã  ÃÁÁe  û	V –
A4 
t    5¬ ™I«„– 
*  4
 5
4 
÷	   4
 
÷	  ôÅ@    œ« "œ«w      *  :w    fœ ÎEðÿ—¥ 5”, 5”- u ,   « w*  `‡ u: 6 õµ 9 3õµ 9 /A@ ñµ  Ã*  †  ÃÀ  Èàý–
A@ ñ‹ ¦–
³ôÕ  &Ã  5¬ ™*  ¬  ÃÁÁe  û	V €Ã ÷	  Ã ÷	  â‡õµ !  5¬ ™¯ªH²
Ã«q"¾©èµ*  Ò9 é‡ fõ•  2   l fu < u *  ø> Ã  ÃÁÁe  û	V A4 ¶
 € ÷	  †–%  5¬ ™¯ªH
$ŠªE *  ¡ ‡ ôÕ  p-,  †p-<  †Bp-<  ‡€*  D ÷	  õµ 9 6A@ ñµ  õÐþL –%± ‡   E©ÉH*  j)ö @@ œ Nt4  u: . Ã    (5¬ ™*  ÃÁ      Áe  û	V ‡Þ	5 4 Þ‡u. : @m: Àe   
Ã«ô”
«  ¶÷	„þ6 —       Ä M   NÀÕ*  ºu°x    NÀÕ   ¯”L  ¾©Ó@  Šª0 @  *  Ã«Kq@      (  ºu°x( ¾©àh Šª@ h
   ¯ª€h  Ã«qh ¯”   
   ºu°x      ‡ w   w   w     Ã«Kq¾©ÓŠª0        Ä M   NÀ…á*  ºuµx    NÀ…á   ¯”L  ¾©Ó@  Šª0 @  *  Ã«Kq@      (  ºuµx( ¾©èh ŠªE h
   ¯ªHh  Ã«qh ¯”   
   ºuµx      ‡ w   w   w     Ã«Kq¾©ÓŠª0        –M   RÀÅÎ*  ©u[M    RÀÅÎ   ¯”L  9©       @  C©z@  *   © }@  ÉªØh@  Óªz@  œ« @  œ«ZX@  *  «êv@  5¬ ™@  Y¬T}@      (  ©u[M(–  ô¨8^h  © h ¯”   
   ©u[M  *    ‡ &
& 2  ‡õÀÿL w ^õ‹8 W­8  *  & Àðþ÷	  
Ü €€€` 
Â Ã ÷	    «êv(9© *  L úÿ†÷	ñµ 
 	Â ÷	  †w 
€Ê  œ« *  r t ÷	  †ÀÐû÷	  ÷	  †õ ûL hÃ   
ÉªØh«êvC©z*  ˜ Ž¬ Âe@ Ã
ùõ ûL ZÃ õ 8 4‚¦ ¦*  ¾  œ N`v ¶,  Ž, j‡×  õ‹- *  ä µ 6 µ 8 µ . µ 0 µ 2 µ *  
4 ƒ
      r` r ² ² É ñÕ 
 ÷	  †  &ÉªØh*  0ÀÐû÷	  ÷	  Â ÷	  †Á"`ú&&   
«êvÓªzœ« *  V÷	  ° ˆfL fN  ÷	  ° ˆ–
  œ«ZXœ«ZX*  |À      && Át  
÷	  4
 °  5¬ ™"œ« *  ¢ ˆ&V‡ —,
   —,    –%—,   *  È—,   ²  ²  ²   ²"  2
 2
*  î ²  ²  2
 2
 w °þö Q ñÅ*   
 Â ÷	  †w  ÿ 
Á Â Ã ÷	    œ« &9© *  :úÿ†÷	 ‡ðv t  +ñÅ 
   fœ
 1œ*  `
 
 ñÅ@ 
 Î5@ ñÕ@ 
 ÎÅ@ ð5@ 
 ÎÕ@ *        †°•
 f 1  ° N 1  ° €ÀE ÿ*  ¬w Výæ¦æ  æ  &
&
ò$   
ƒÜ ð *  Ò. ‡æ&. &
¦$ &
Ã  Ãóµ ( 	¶  5¬ ™*  ø  ¶  ö• 
 ÷	  †Æe w Lþ‚ ƒ    © }*  6Š ²" ²  ² ² ²* ²( –%æ ó*  D  $ ó " óe $ s" 3
& ƒw Vý"`ú
*  j& &
÷	  ˆ° 
"`úúÿ÷	  ¡   œ« &Y¬T}
  ‡ ± ‡        Ò M   SÀ…È*  ªuœ'    SÀ…È   ¯”L  ÉªØh@  «êv@  "      (  ªuœ'(@ ©`Th  ¯”   
   ªuœ'  *    &÷	  †ÀÐû÷	  B ‚
Â
ý°•       p   ÉªØh«êv  &  ð  °Š ð•ÿ  p-  ‡        „M   OÀ¼*  ªufs    OÀ¼   ¯”L  Ý©[}@  ÉªØh@  *  Ìªa	@  «êv@      (  ªufs(B"©ðsh  
  ¯”   
   ªufs  *    ÷	0 

Ã ÷	  úÿ†‡ tF   ÷	    Ý©[}(ÉªØh*  & †ÀÐû÷	  È ð  6 ô‹ E‚ 2­   «êv*  L  '2­  #õµ  , 7l Ñ•
  Ñ• *  r Ã õµ , Â2 BaÂ. Ba÷	  ‚ r    Ìªa	*  ˜ ²à õµ , õµ ,  Áe Ñ•  *  ¾    Ée € Áe ƒ Cm: ö *  ä  õµ  , õµ ,       ö  ‚ ¶  ¶` *  
óµ   ¡ ‡ ö  ‡¡ ‡ ö   œ ÁE*  0ðÿÁ¥  Â‚m 
Ü Á Òöe  v`*  V ‚ ò¬  9ò¬  5æÁÁe Â. BaÃ*  | ÷	  ƒ‚ Æå óÕ   Â²$  Ã ÷	  Ìªa	*  ¢   € B‚m  `ƒà÷	  ‚Ã ÷	    Ìªa	Ìªa	(Ìªa	*  ÈÆe p 0à % AbÂÂe ‘ æÃ ÷	*  î  € Èe ¶í  € B‚m  ƒí Cí  Ìªa	*  : ÷	  °í  ƒ¶
 6  6` w ÖþB@ ‚œ  Ìªa	  : Â Â‡        žM   zÀÅç*  ªuLy    zÀÅç   ¯”L  ©òƒ@  Ìªa	@  "            (  ªuLy(¶#©àeh  ¯”   
   ªuLy  *    ƒ € W­8  õµ , W­8  ðµ*  &   ðÅ  óÕ  3  3
 
 s.  *  L s0 
 € Áe W­8  õµ  , B: ‚m*  r   `ƒ
 ð ðe  ÷	  w Ô W­8  =  Ìªa	*  ˜ õµ , 9Â2 Ba l —-  &Ñ• Ñ• *  ¾      Q Q C B ÷	*  ä   p 0à õµ , õµ0 , 1÷	  €   Ìªa	$©òƒ*  
°m  )õµ ,  õµ0 ,  `Â. Ba—-*  0  »÷	  B: ‚m ƒ
 ÷	  € p 0à  ©òƒÌªa	*  V õðþL ± ‡ ƒ ö       öl  ÁÁe v  *  |†ñœ  ³Š Áe   œ ÂEðÿÂ¥     ¢ 
@ÔÀ @ÔÀ `ã¡ ‡        t M   PÀÕ*  ªu¤y    PÀÕ   ¯”L      (  ªu¤y(   #© sh  ¯”   
   ªu¤y      4
 ± ‡        4M   OÀÅÎ*  «ukM    OÀÅÎ   ¯”L  @©ôD@  D©Mw@  *  « w@  ¤«@  ¤«ªH@      (  «ukM(X   D©íbh  D©ch  ¯”   
   «ukM  *    ÷	  †w    æ Â 
Ý m ÷	  @©ôD« w*  &   Á  Â÷	  ƒì4
  ¦ Á0 ÷	    ¤«ªH¤«(¤«  L ‚÷4
 w     D©Mw             &M   PÀEÂ*  «u `    PÀEÂ   ¯”L  ô¨"@  ô¨Œ@  *  ô¨ªH@  9© @  9©ë3@  ;©EM@  ;©OM@  *  œ« @  « w@  ¤«ªH@      (  «u `(Ü   ;©æ_h G©­\h  ¯”   
   «u `  *    æ   ÷	  Ãðµ   ÷	  †–
w      9©ë3ô¨"&;©OM*  &  ðµ   ôÕ   –
)Ã÷	  <‡  

  ô¨"*  L ÁÜ Ál ÷	  ‡4 Àœ( À ÀA N †  ô¨ªH*  r &f÷	  –
6­  	‡t  –%õ  w   Ž  
ô¨Œ&« w*  ˜ ÷	  Ã 


Ã ÷	  ‡úÿÂ ÷	    9©ë39© &œ« "  ¾  
ÁÜ       Ál ÷	  ƒõ þ w     ¤«ªH ;©EM       tM   QÀÕ*  «uq    QÀÕ   ¯”L      (  «uq(Æ  J©™h ¯”   
   «uq  *     ôµ!  Â@þw Dõµ  Âpýw 4*  & t , t .  
@Ý Àµ Àµ ÂÀúw *  L 4  
@Ý   Âpú{4Ð A t* õ¥*  r   t Â ûk
BÝ1 ‚
´( Â Â— *  ˜  @‚  Âå B ƒÂ@ÿU&
&
&
C@ D*  ¾ ÁÁe@ÿ@²Âðø#@”‚ÒK¤ÀÉ‹úÂ þ*  ä Ñ¦QÔQÔŠ ‡0"Â°ü

ÁÜ Á%ÿ *  
÷"Â@ûõ –
×¬   ó‹ ³Š ô¬*  0 ( ƒôœ ( Š
P      À »Ö5 ôµ   Â*  V`û–%µ ± ‡ @ ¬     ù5
 *  |
 5  À 
‚ÕÂ
€
Âå û4 
‚Õ´(  ¢ Â
‚‚‚€`õ%   5 
 ƒ5
 ¡ ‡        \M   QÀ…È*  «u|q    QÀ…È   ¯”L  J©™@  J©Å@  *  J©|—@  ¤«@  5¬ ™@  h¬_M@      (    «u|q(d J©m$h  ¯”   
   «u|q  *    f
 ÁÁe  û	V &‡Ã  ÃÁÁe  û	V ‡4
 "  J©™ 
5¬ ™J©Å 
*  & õµ   Ã  ÃÁÁe  û	V † 
´    5¬ ™h¬_M6 
  L Á0 ÷	   õ± µ
 w     
¤«J©|—       X      M   OÀEÂ*  ¬u%!    OÀEÂ   ¯”L  s©`"@  Â©¨%@  *  Šª0 @  Éª°h@  œ«w@  «êv@  « w@  *  Ã«ô@  5¬ ™@      (  ¬u%!(e©-Ph  
  ¯”   
   ¬u%!  *    ÷	  t‡&
Ž
€÷	  ‡Ã  ÃÁÁe  û	V ‡õ5!  s©`"Šª0 5¬ ™ Ã«ô 
M*  &   A@ ñµ  õ• , –
Þ	†–
MÞ*  L –
 ÷	  †ÀÐû÷	  C. `Â õ‹, ÂU  Éª°h«êv*  r @ ‹ÐñÕ 
 Â”ÂEüÿÂe ƒ
õ”> &
&
€Ð”Â
ý*  ˜ ‚€1  ±  #µ. 50 4
 Â ÷	  ‡  &œ«w*  ¾ @0 A. B> Ã ÷	  ‡@m: ÈÕ ñÕ 
   Â©¨%*  ä       5 5   4
 Â ÷	  ñ‡õ õ  œ«w  
  4Š w     « w       *M   OÀÕ*  ¬u;;    OÀÕ   ¯”L  9© @  9©ë3@  *  c©%@  œ« @  ¤«ªH@      (  ¬u;;(T   i©í{h  i©|h  ¯”   
   ¬u;;  *      
ÁÜ Ál ÷	  ÷	  Ãôµ     ¤«ªH9©ë3*  &  


Ã ÷	  ‡úÿÂ ÷	   Ãœ(   9©  œ«   L Ã Ãw     
c©%       0M   OÀ…È*  ¬uN    OÀ…È   ¯”L  9©ë3@  ¾©Ó@  *  Â©,`@  Ìªa	@  œ«w@  Ã«Kq@  5¬ ™@  *  Y¬T}@      (  ¬uN(à      l©,xh  ¯”   
   ¬uN  *    5
0 ÷	 6‡÷	: ÷	. 4õ• 8  4
 
*  & ÷	  †‡ 
÷	  †‡ 5
: 
‡ ÷	  5Š8 ÃU €  œ«wÂ©,` 9©ë3*  L ÷	  B@ †–
"`úõ‹- ò‹  ÷	  ¾©Ó*  r   Çw ‡ Ãpùõ‹- xõµ 9 #W-0    Y¬T}*  ˜ õ 0 A@ ñ‹ ñµ  ÷	`ÿ‡÷	Žÿ÷	‚ÿ*  ¾ õµ 9 Ã ÷	  Ã@úQõ 0 Ãÿÿ÷	  A  Ã«Kq&Ã«Kq*  ä @ B6 `ƒ”Âe Ãµ ÃEüÿÂ`Âe &
Nœ ‚e*  
ñµ  ÷	œ Ã@ú,A6 `B:  ƒà`*  0÷	  àp f: `Ž †µ6 ÷	d ø–
w   Ìªa	*  V¶þ–
B6 JÝ      2 Òµ  
Š ñÕ 
 À     &5¬ ™*  |   È0
  4
 fN fL 
÷	  †–%  $œ«w*  ¢ˆ° fL V‡ ”ÁEüÿÁe ¦”&
&
ƒ“”Á
  Èýƒ´¥ ô  t  ‡        È M   NÀEÛ*  ¬uœw    NÀEÛ   ¯”L   «ƒK@      (    ¬uœw(D s©`"h  ¯”   
   ¬uœw  *    5
 5
 5
, õ• 2 5
4 ôÅ\  Ãpý  ðµ"  &   Ãüôµ   w   õ ± ‡    «ƒK       ÜM   OÀEÂ*  ®ut:    OÀEÂ   ¯”L  9©ë3@  ´©œw@  *  Â©¡E@  Â©qq@  Â©™w@  Þ© @  ê©2g@  *  œ«w@  « w@  5¬ ™@      (        ®ut:(š   ¹©­\h  ¯”   
   ®ut:  *    ÷	  :‡Ã  Ãõ¥   	ÁÁe  û	V ôÕ    ´©œw5¬ ™Â©™w 
E*  & õ¥  ÁÁe  û	V õ¥  ÁÁe  û	V   Â©¡E0 
$Â©qqD 
*  L õÐú ôÅ  	‡ôÕ@  ÷	  õ  5  ê©2g*  r  5  w   ÷	  Ã 
÷	  4
 w   Þ© 9©ë3"œ«w  ˜     « w       M   OÀÅÎ*  ®u2X    OÀÅÎ   ¯”L  Ú©ðG@  Ý©[}@  *  Éª°h@  òªàG@  œ«w@  «êv@  ¼«8@  "      (  ®u2X(æ ¾©Óh  ¯”   
   ®u2X  *    5¬ 8 †Àðþ÷	        æ4
 5Š9 5œ - ÷	  õµ  «êv&¼«8*  &  9 $ƒ÷	  †ÀODÎ5 €f9 f: õÿÿ  òªàG*  L : ÷	  õµ 9 µ: µ•9  
÷	  4‡)–%  ¼«8"œ«w*  r 5¬ 8 #÷	  †õÕB 9 õŠ- ƒ÷	  t   Ú©ðG$Ý©[}*  ˜ $‡ 
÷	   t ‡÷	  †ÀÐû÷	  5
  œ«wÉª°h&«êv*  ¾ : ¨ ÷	  †ÀÐû÷	  "`ú4
 ± –
  Éª°h«êv  ä ‡        ÔM   OÀÕ*  ®u<d    OÀÕ   ¯”L  ¾©Ó@  Â©,`@  *  ³ª4}@  Þª¡E@  œ«w@  «êv@  5¬ ™@  *  Z¬àG@      (  ®u<d(Â À©h	h  ¯”   
         ®u<d  *    Ã ÷	  ‡5Š8 5
: Ã ÷	  B@ †õ‹- ‚  
Â©,`¾©Ó*  & ò‹ "`ú÷	  ä†õ‹- ‡ õµP 9 !Ã  Z¬àG*  L   ÃÀ  Èpù0
 & & 4
 
÷	    5¬ ™(œ«w*  r —#`úô ÷	  ˆ° ± ‡ õµ  9 Àðþ  ³ª4}*  ˜ ÷	   ñÕ 
 Am: C”ÃEüÿÁ`Áe &÷	    «êv(Þª¡E  ¾ €¦       ü M   RÀEÛ*  ®uqq    RÀEÛ   ¯”L  Ý©[}@  Éª°h@  *  «êv@  ¼«8@      (  ®uqq(F Â©¨%h  
  ¯”   
   ®uqq  *    4
 5
< µ> B@ ‚œ Â Â÷	  úÿ†‡ t  Ý©[}$  &  ÷	  †À      Ðû÷	  5
: ÷	   ¡ ‡   Éª°h«êv¼«8       ÎM   PÀ¼*  ®u=r    PÀ¼   ¯”L  9©ë3@  ¾©Ó@  *  Â©,`@  Â©ðs@  Šª0 @  Éª°h@  œ«w@  *  «êv@  Ã«Kq@  5¬ ™@  Z¬àG@      (    ®u=r($Â©¡Eh  ¯”   
   ®u=r  *    Ã`üu > cÃ@ü 
@Ý ÷	  [‡Ã0ü
AÝ   Šª0 *  & u< Sp  P‚ð‹	 Lõ• 8  4
 
*  L ÷	  ,‡
÷	  "‡5
: 
÷	 ÷	  5Š8 ÷	   œ«wÂ©,`9©ë3*  r ÃU €
BÝ µ< u > ÷	  B@ †–
õ‹-   ¾©Ó*  ˜ ò‹ "`ú÷	  È†w n‡ Ã@úõ‹- õµ   Z¬      àG*  ¾ 9 õµ 9 õ5  w :õ5  
÷	*  ä   ÷	  ÃU €÷	€ÿÃ@úõµ 9 êõµ 9 íA@   Ã«Kq9©ë3*  
B: `ñ‹ 	Êµ ÷	  ¡5
< j&
&ƒ”µ”  Ã«Kq*  02 Ãµ ÃEüÿÂ`Âe 
ƒÔÃ ƒÔÃ ¦Î`&
Nœ *  V‚eŽ !†ƒ”æ´” &
&
ÃEüÿÃe ‘”Ã
ý´ *  |´ Öµ$ 	 u . u 0 
¶
 Ý‚‚å*  ¢µ: –
w ¸þ¦t ÷	  ÷	   ‚†4
 t  9©ë3Â©ðs*  È È%Pþ
÷	  †ÀÐû÷	  ¶
 ºÆe –%µ  Éª°h«êv*  î< 4
 
÷	  ‡ ÷	  †ÀÐû÷	  À    œ«wÉª°h"«êv(5¬ ™      ÈfL V‡              ¾M   PÀ¼*  ®uçr    PÀ¼   ¯”L  Ý©[}@  ã©,#@  *  Éª°h@  œ« @  œ«ZX@  œ«w@  «êv@  *  5¬ ™@      (  ®uçr(² Â©,`h  ¯”   
   ®uçr  *    4
 4
 æC@ óµ  À      È@úð  5¬ ™*  & Ðü >Á À Â’Â Âƒ÷	  4úÿ 0‡÷	    Ý©[}(Éª°h*  L †ÀÐû÷	  ðµ  ñÕ  
 t 4
 ñÅ    «êv*  r 
 
÷	  ‡
÷	  ‡³  ³  
÷	  ¹†  
œ«wã©,#&œ«   ˜ && ÷	  ° ˆ–
fL V‡   œ«ZX       XM   NÀEÛ*  ®uVs    NÀEÛ   ¯”L  9©ë3@  Â©ðs@  *  Šª      0 @  Éª°h@  œ«w@  «êv@  5¬ ™@  "      (  ®uVs(r Â©qqh  ¯”   
   ®uVs  *    @
 A B 4 t ÂE ÿ´ @P 
÷	*  &    4
 
÷	  ‡÷	  ÷	  ‡ ÷	     Šª0 œ«w9©ë3Â©ðs(Éª°h*  L †ÀÐû÷	  À      È€ú5
< fL V‡   «êv5¬ ™       <M   SÀ…È*  ®ufs    SÀ…È   ¯”L  Â©¨%@  Šª0 @  *  Éª°h@  œ«ZX@  œ«w@  «êv@  5¬ ™@  "      (  ®ufs("Â©ðsh  ¯”   
   ®ufs  *    f@ &
æ æ 
÷	      ÂE ÿƒ÷	  Šª0 *  &   [‡õµ 9 J@m: Èµ       æPþD&
&
‚’ÁE  Â©¨%*  L üÿÁe Ãe Ò”Á
ý‚ƒÈµ 
ö ô  *  r ´  &2 4
 ñµ 
 v æ¦&œ *  ˜ Â ñµ 
 
÷	  ‡‚€—-  ö
   œ«w*  ¾ ¯@ÀeL æ ú 4
 
÷	  ˆ0
 Æe   œ«w*  ä À      && ÷	  ° ˆµ@    
5¬ ™œ«ZX  
÷	  †ÀÐû÷	  fL V‡   Éª°h«êv       ð M   NÀÅÎ*  ®u}s    NÀÅÎ   ¯”L  Šª0 @  O«•y@  *  5¬ ™@      (  ®u}s(L Â©™wh  ¯”   
   ®u}s  *    ôÅ@    4 ÷	  †À      È@ü0
   Šª0       5¬ ™*  & ± ‡ 5œ 3 5 4 4  4  4  w     (O«•y       xM   PÀEÛ*  ¯u`"    PÀEÛ   ¯”L  9©ë3@  Â©¡E@  *  Â©qq@  Â©™w@  ë©`"@  ì©Kq@  ³ª4}@  *  O«™w@  œ«w@  « w@  5¬ ™@      (  "  ¯u`"(ú Ý©-‚h  Þ© h| ¯”   
   ¯u`"  *    ÷	  ;‡Ã  Ãõ‹ ôµ@  ÁÁe  û	V   ë©`"5¬ ™"Â©™w 
 *  & & 4  ÁÁe  û	V ´ õ¥  ÁÁe  O«™w2 
 *  L   û	V õ¥  ÁÁe  û	V õÐú †  Â©¡EJ 
Â©qq^ 
*  r 5 5  4Š 5

 5
 5
 õ%@ú       
õ%Ðü*  ˜  õ‹ õ°ý Ã  ÃÁÁe  û	V ÷	    5¬ ™ ì©Kq² 
(9©ë3Î*  ¾ Ãõ5@   4
 
÷	  W- `úô  œ«w  ä  ÷	  ôÅP  4
 w     
³ª4}« w       ÖM   NÀÕ*  ¯u¡E    NÀÕ   ¯”L  9© @  C©z@  *  Éª°h@  œ« @  œ«ZX@  «êv@  5¬ ™@  *  Y¬T}@      (  ¯u¡E(Ä ã©,#h  ¯”   
   ¯u¡E  *    æ
Â æ¦€ Â ƒ ÷	  úÿ
†"   9© *  & `úÁ÷	  ì–%0–%0
 ÷	  †ÀÐû÷	    Y¬T}Éª°h(«êv*  L ÷	  †Ã  ÃÀ  È ûC@ ò¬  %      ¦  C©z5¬ ™*  r  ¦  ‚ 
÷	  ‚ƒ‡ÂÈ û¸  œ« *  ˜ Á"`ú&& ÷	  ° ˆ–%`×–
f  œ«ZX
  ¾ L V‡        ¤M   NÀEÛ*  ¯us    NÀEÛ   ¯”L  Ìªa	@  Þª¡E@  "      (  ¯us(ê ê©2gh  ¯”   
   ¯us  *    Bm: @@ 4œ  ƒ”ÃEüÿÃe ¦”´” 4
 *  & Áe ÷	   @œ ÀEðÿC À% 
ƒÔÃ ƒÔ  
Ìªa	*  L Ã µ> æ@  t<  ôµ@  
ôµ  *  r €`÷	  ƒ't<  ÷	  ƒ4œ   t  
Þª¡EÞª¡E*  ˜  
 t  ´“ 	t. 
 t0  t2  4 *  ¾  4        4  5 
 5  5   B
  ä > –
‡        Â M   NÀEÛ*  ¯uœw    NÀEÛ   ¯”L      (  ¯uœw(H   ´©œwh ë©`"h  ¯”   
   ¯uœw  *    5
 ÃPùõ Ã@ùõ   Ãpýðµ  &  & Ãüôµ   ôÅ  5Š9 ‡ õ ± ‡        fM   OÀ¼*  ¯uÕ    OÀ¼   ¯”L  ê©2g@  Éª°h@  *  Ìªa	@  œ«w@  «êv@      (  ¯uÕ(’   ì©Kqh  ¯”   
   ¯uÕ  *    ôÅP  õ   ÷	  †ÀÐû÷	  ÷	  õ5@   Éª°h «êv$ê©2g*  &  ñµ  ñµ=ÿ ñµ€  
÷	(  4
*  L  
÷	        ñµ 
 µ õ ÷	 ‡ A   
œ«w$  r @ À ƒõ õÐù u õ w     "Ìªa	        M   {À¼*  ±u¡E    {À¼   ¯”L  ô¨8^@  ©`T@  *  © @  Ý©[}@  3ª¨@  ‹ªàe@  Éª°h@  *  ÉªØh@  Ìªa	@  Þª¡E@  œ« @  œ«w@  *  «êv@  Ÿ«à`@  5¬ ™@      (  ±u¡E(6*  ©€h*3ª(#h  @ªWhª@ªYh@ª—`hZ   «xhD¯”   
   ±u¡E  *    A6 f f 5
6 
÷	  †–%± ‡ &
&
  œ« *  &  ÷	  †ÀÐû÷	  õµ , 	õ L õ• ,   
Éª°h«êv*  L –%¡ ‡ C@ ó‹ B: `ƒ”ÃEüÿ      Ãe &
&
*  r ‘”Ã
ý–- –- Ý–
Ú–%Æå 6 Ã*  ˜   ÃÁÁe  û	V õµ , Â w RÃ  ÃÁ  5¬ ™3ª¨ž 
$5¬ ™ *  ¾ Áe  û	V €  œ ÀE ÿõ• 8 ÷	  ‡÷	H@  ô¨8^¾ 
 ©  *  ä 8 A6 Ã ÷	  †w (úÿt ÷	  †ÀÐû  Ý©[}"ÉªØh*  
÷	  6 €  œ ÀÅ ÿ÷	  € ƒ ðµ    «êv©`T*  0ðÅ  óÕ  3  3
 
 p6  p8 
 *  VÃ  ÃÁÁe  û	V  4
 Â ÷	Â T‡€   5¬ ™‹ªàe^
 *  |ðµ  =Ã  ÃÁÁe  û	V €  œ ÀE ÿõ•  5¬ ™ô¨8^Œ
‹*  ¢ 8 ÷	  :‡      ÷	z @8 A6 Ã ÷	  /‡úÿt  
©  Ý©[}*  È ÷	  †Àðþ÷	  6 €  œ ÀE ÿ÷	  Ã  Éª°h«êv&©`T*  î  ÃÁÁe  û	V ‡5 6 Â  4
 ñÕ   5¬ ™Ÿ«à`ô
*  
 ÷	  †5
6 Æe &V‡ B@ ‚œ  Â Â‡ ñÕ  œ«w*  : 
 ÷	  ‡ À ò‹ À
ò‹ À
‡ õµ ,   
œ«w*  `#ƒ Ãå Ñ¦‚
ƒ ÷	   Ã ƒ   Ìªa	*  †Â`õµ  , ÷	  C@ Ã ÃE ÿ÷	  ‚‡ õµ  Þª¡E"Ìªa	*  ¬ , õµ , ¶-  B‚
‚m f
m
 *  Ò Cí: Ã
ƒí ÷	  p 0à ƒ Ãå Ñ  Ìªa	*  øÃe BÂe      . ÷	  ‡ õµ , õµ , ƒ Ãå  Ìªa	   ÑÃe BÂe2 ÷	  ÷	  ‡   Ìªa	Þª¡E       èM   OÀEÛ*  ±u±H    OÀEÛ   ¯”L  @ªW@  @ªY@  *  @ª—`@   «x@  È«Lq@      (  ±u±H(ø   3ª¨h  ¯”   
   ±u±H  *    B@ œ ÁE ÿv 
Â. Ba÷	  õµ , `   «x*  & 
m 6 Â2 Ba÷	  õµ , õµ , `   «x*  L 
m 6 ‚
 Bm: €”Àe 6 õµ , õµ*  r  ,  í Á
C@ õ5  Â *  ˜ Âœ  Â Â¶ €
 ì 6,  ƒ‡  ƒ *  ¾ Cí: B`l l ° 0à ÷	  €
       ÷	     È«Lq(@ª—`  ä ÷	  ÷	  ‡ õ• , ‡   @ªY
@ªW       „M   OÀ…È*  ±uiw    OÀ…È   ¯”L  ©Š@  ©G@  *  #© s@  Éª°h@  •«Ò@      (  ±uiw(|  9©àMhò ;ªhh  ¯”   
   ±uiw  *    ö  6
 6
 A@ õ5  C Cœ Ã *  & Ãö Aœ ÁE ÿv  ÷	  †õÐûL ± ‡   Éª°h*  L 6 6 6l  6

 v6  6
 6
 6
 u-*  r : 6 5, : ƒõµ 9 õµ  9 5 : u*  ˜ : 6 v6  ôµ  õ , ÷	> ÷	  €   "•«Ò*  ¾  ÷	R †‡  Am6 u-: 6 ÷	  ¶     ©Š*        ä ÷	  õ• , ¡ ‡ ô‹ ö  
ô‹ ö   ©G*  
 ö  ‡ f6,  ‚ ì N ƒ&0¬*  0  ‚ð‹ ÷	  †0Š –%õÕ, , ± ‡ €–
  #© s*  V¡ B: ‚m ¶  †õÕ, , õÕ , –
± ‡        ÖM   |ÀEÂ*  ±u,x    |ÀEÂ   ¯”L  ô¨8^@  ©`T@  *  © @  Ý©[}@  ;ªh@  ÉªØh@  Ìªa	@  *  Þª¡E@  œ« @  œ«w@  «êv@  Ã«Kq@  *  È«Lq@  Ë«àe@  5¬ ™@      (  ±u,x(l*  ©¤’hà©Šh.©Gh¬;ªà8h  •«Òhð
  ¯”   
   ±u,x  *    5Š, Æå" Ã  ÃÁÁe  û	V ‡ ÷	¾5
6         5¬ ™;ªh 
‹*  & w 8Ã  ÃÁÁe  û	V € õ• 8  œ ÷	    
5¬ ™ô¨8^2 
(© *  L ?‡B@ ‚œ Â Â@0 A. Ã ÷	  0‡tF     Ý©[}*  r  ÷	  †ÀÐû÷	  6 €  œ ÀÅ ÿ÷	    
ÉªØh«êv(©`T*  ˜ Ã  ÃÁÁe  û	V € ÷	è € ð‹ ÷	Ú   5¬ ™Ë«àe  
ª*  ¾ & ÷	†–
5 6 õ• , D€õ : *  ä l ¦Bm: Ž $†
Êµ ƒ’ÃEüÿÃe Â`Âe*  
 A@ Cœ ÃE ÿ A m ÷	  
÷	    "Ìªa	(Ã«Kq*  0€ Bm: Ú–
€p.  p0 
  u6 ñÕ*  V 
 Â ÷	  Æe" && õµ , A      6 5
  œ«w*  |6 
÷	  4
 4
 ° ˆ&V‡ &ð•ÿÿ ð•  
œ« *  ¢  õ : 6  6` Âe ¶  †2œ  *  È°Š 
÷	  €B: `ð€‡ ñÕ 
 Â ÷	    Ã«Kq(œ«w*  î‡ u-: 6 &@@ ö	  ðµ  ö  €*  ¶m  ¶m  ¶  ¶
 ‡ € 
Éµ *  :C’ÃÅüÿÃe Ãe C`
ÂÔÂ ÂÔÂ 6  ví:  *  `‚m Ãå “Â “Â l B‚m ° 0à ƒ*  † ÷	  ‚ Âå ‘ Â aƒ Ã
÷	  ‡   È«Lq&Ìªa	*  ¬ƒ u-: 6 	ö  ¶m  ¶m  Á Á`B*  Ò‚m æ ³ óà ƒCí: ¶-  ÷	  ƒ   $È«Lq*        øu-: 6 Ñ• Ñœ &@@ ðµ  ñ• þÿ*  Ñ• ŠŠŠ€Ñ• Ñœ ³Š ‚ ‚m ‚
‘*  DÂ ‘÷	  ‚ Âå ‘ Â aƒ Ã
÷	    
Þª¡E(Ìªa	  j‡        M   OÀEÂ*  ±uãƒ    OÀEÂ   ¯”L  Éª°h@  Ìªa	@  *  Þª¡E@  «êv@      (  ±uãƒ(Ü=ªxh  
  ¯”   
   ±uãƒ  *    6
 ô‹   œ ÁEðÿW  ö  ö*  &   ö  6
 @ Àe  Aœ ÁÅðÿW  *  L Àe 6 @@ õ5   œ Á Áv*  r   ÷	  †ÀÐû÷	  6 6

 6
 6
 6
  Éª°h«êv*  ˜  6
 6  6` C: `ôµ        $õµ  9  *  ¾ õµ 9 Ëµ Ãe  ‚œ ÂEðÿ—  
*  ä ÂÔÂ ÂÔÂ  ‚ Â`àµ: ƒ Ãe € *  
v:  6 6l  ö  ‡‡ ö  Ëµ Ëµ*  0 Ëµ ö  ƒm ¶m  Û  œ*  V ÂÅðÿ—   Â‚m 
Ü Á Òöe *  | € @m: €í @àfæÀ ‚ A m *  ¢f> õ> µm > ÷	  µ> ƒv` Ëµ rËµ  Þª¡E*  È@ oÁÁe   œ ÂÅðÿËÕ@ @@ ðµ  %*  î—  !œ œ l Â‚m v öà æ€ *   `ƒà÷	  ‚ € r ²à €ì 19æ  Ìªa	*  :—  
CÔÃ CÔÃ Ãe  Ã Ãe       uœ*  ` , BÂ`€ æ `ƒà÷	  Ñ• Q, 5Š,   Ìªa	*  †€6
 ‚ r ²à ƒÂ‚í µ : †5à: ‚*  ¬ €@m: À ‡ò¬  ò¬  öe  ¶m   Ò
 ƒm w *þ       M   OÀEÂ*  ±uéƒ    OÀEÂ   ¯”L  #© s@  Ìªa	@  *  È«Lq@      (  ±uéƒ(=ªhh  ¯”   
   ±uéƒ  *    € ö 9—-  	 Am: Áe w ,*  &  Am: uœ - 
CÜ Ã CÜ õ  Áe Áe *  L w è Ãe Ãe € BÂ`öà
  `ƒà÷	  p  &Ìªa	*  r  0à v 6,  ‚ƒ ì ö  ‚w ´ 0¬*  ˜   ‚ð‹ ÷	  †w è ƒ ‚       ‚m €   #© s*  ¾ ° 0à 
 m Á ƒ
 ƒm ÷	  A  &È«Lq*  ä : `Ñ• ô‹ Âe Q-  
œ œ *  
°Š  Âe Ã ÷	   ‚œ ÂÅðÿ—    Ìªa	*  0Q Q B C ÷	   ‡ õµ  9   Ìªa	*  V m m m v  †õ• 8 õ•$ , 4õ5 *  | õµ  9 õ• 8 õ• , %
 m Áe *  ¢‚
 ‚m Âå Âõ• 8 õ• , v  †õ•*  È 8 õ• , õ• 8 õ• , ôµ  õµ  9 $  îõÕ , 
õµ  , õ• 8 õÕ , ‡        ôM   ŸÀ…á*  ±uòƒ    ŸÀ…á   ¯”L  ô¨8^@  ©`T@  *  ©       @  "©ðs@  #©àe@  Ý©[}@  =ªx@  *  =ªh@  ÉªØh@  Ìªa	@  œ«ZX@  œ«w@  *  «êv@  È«Lq@  ¬ðs@  5¬ ™@      (  "  ±uòƒ(d©òƒhü=ªÐh  ¯”   
   ±uòƒ  *    Æå 5Š, Ã  ÃÁÁe  û	V Ã  ÃÁÁe  û	(  5¬ ™=ªx 
5¬ ™&=ªh  
*  & V € õ‹, w RÃ  ÃÁÁe  û	V €  œ  5¬ ™ô¨8^> 
 *  L  f, 5Š- ÷	  †–
w Dµ, ÷	~W­8    © *  r W­8  õµ , 	@4 A2 Ã ÷	  @0   "Ý©[}*  ˜ A. Ã ÷	  †w ü úÿt ÷	  †ÀÐû÷	  Ý©[} ÉªØh*  ¾   6 €        œ ÀÅ ÿf, 5Š- ÷	  µ, Ã    «êv ©`T(5¬ ™*  ä ÃÁÁe  û	V Z‡ 4
 ñÕ 
 Â ÷	  N‡  
#©àeè 
&œ«w *  
õŠ8 õ‹8 ¨Ã  ÃÁÁe  û	V †>€ õµ  5¬ ™"©ðs
Š*  0 , p.  p0 
 p2  p4 
 õµ  , *  V `B‚m  Cí: °m  ÷	  @   "È«Lq*  |Âe ÷	rƒ ƒm
 Ãe € , õÅ , õ*  ¢ L 5Š- € W-L  " fL fN Á4
*  È ÷	   Á÷	  4
 ° ˆ5
6 Æe õ•  œ«wœ«ZX*  î , fL V‡ ô‹ &õµ  , œ Â
´ *   t  t  õµ , t4        t2  *  :t0  t.  ô•   4
 u6 ñÕ 
 Â*  ` ÷	  §‡t6  Ã  ÃÁÁe  û	V †õ    œ«w5¬ ™¬ðsv
Š*  †%ô‹ Bm: ´œ  Âe Á aÃ ÷	    (Ìªa	*  ¬õ• ,  4
 ñÕ 
 u6 Â ÷	  †w äþ  "œ«w*  ÒÆe 4
 õ L 5Š- ¡ ‡ B@ ‚œ Â Â‡ ÷	*  ø ‡ Ñ• ô‹ Âe Q-  õµ  , *  Ñ• Ñ• € œ œ °Š Ã ÷	  C   $Ìªa	$  DÃe ö  Q Q C B ÷	  ‡    Ìªa	        M   NÀ…È*  ³uNq    NÀ…È   ¯”L      (  ³uNq($   Šª0 h  ¯”         
   ³uNq  (    &    °£ 5@ ¡ ±   õ–
‡        °M   yÀ¼*  ³uLy    yÀ¼   ¯”L  @ªW@  @ªY@  *  @ª—`@  Ìªa	@  È«Lq@      (  ³uLy(  ‹ªàeh  ¯”   
   ³uLy  *    
A: õµ , B‚
‚m ‚m ¶  ,†õµ *  & , 
õµ , B‚
‚m ‚m ¶  †B‚
‚m*  L  ‚m ¶  †õÕ@ , õÅÀ , 	õÕÀ *  r , õÕ€ , v €
  Cí: B: `õµ@ *  ˜ , 
‚
‚m ‚m Ã
ƒí ƒí  Áe ° 0à*  ¾  ÷	  ‚ r ²à õµ€ , <õµ@ , 8ƒ
   Ìªa	*  ä s:  € 
õµ , ƒ
ƒm ƒm       õµ , 	*  
õµ , ƒ
ƒm ƒm  Â``Áà Ãå *  0° 0à ÷	  € ÷	  ÷	  ÷	  w lõµ@ ,   È«Lq@ª—`@ªY@ªW*  V6õµ€ , 2€
  `õµ , ‚
‚m ‚m *  |õµ , 	õµ , ‚
‚m ‚m  Cí:  *  ¢`° 0à ¶ ÷	  ÷	  ÷	  ÷	  w ø €
   È«Lq@ª—`@ªY @ªW*  ÈA: `‚ Âe õµ , ÷	  €
 p 0à   @ª—`*  î€ Áe ƒ ƒí ÃB‚
‚m m 
*   Ãå ƒí Ã
÷	  p 0à l B‚m  Ìªa	*  : ‚í  Ãå ° 0à ÷	   Áe ÷	    È«Lq(@ªW*  `õµ@ ,       õµ€ , 
 Al ÷	  €
 p 0à  @ªY*  † Ã ƒm ƒm € l BÂ` Ãå *  ¬° 0à ÷	  ÷	  €
 ðµ  € ƒ   È«Lq@ªY*  Ò `Âà A m ÷	  u6 . u8 0 5  Ìªa	"  ø 6 õ• , €
 ‡ B@ ‚œ  Â Â‡        Ô M   RÀEÂ*  µu;;    RÀEÂ   ¯”L  Ìªa	@      (  "  µu;;(H Þª¡Eh È«Lqh  ¯”   
   µu;;  *    Ã‡ b˜Ã
ý‡ @@ &
°£
 †Ãe$ ƒcÃ’ÃE&  &  ÿÃ
Âe ‚c‚c‚Bm> ÷	  Ž
è–
‡   Ìªa	       xM   RÀEÂ*  µu,F    RÀEÂ   ¯”L  ô¨8^@  ©`T@        *  © @  Ý©[}@  ã©,#@  ÉªØh@  Ìªa	@  *  Óªz@  œ« @  œ«ZX@  œ«w@  «êv@  *  5¬ ™@      (  µu,F(6Óªø8h  ¯”   
   µu,F  *    C@ óµ  Àðþ÷	  f4 4
 4
 Ã ÷	  «êv*  &   †w ˜t &¦òµ  µ 2 µ 4 w   ã©,#*  L NC@ 5Š- ó¬  Ã  ÃÁÁe  û	V C@   5¬ ™ ô¨8^f 
q*  r Àœ ÀE ÿõ• 8 õ• - ÷	  K‡u6 . u8 0   © *  ˜ Ã  ÃÁÁe  û	V C@ Àœ ÀE ÿõ• 8 µŠ-   5¬ ™ô¨8^  
	*  ¾ ÷	  /‡C@ ó¬  	÷	T &‡u. 6 u0 8 Ã  © *  ä   ÃÁ      Áe  û	V C@ Àœ ÀE ÿf8 õ• 8 5Š  5¬ ™ô¨8^ê 
 *  
- ÷	  µ8 ‡õ• - ÷	 †w ²tC@ Âœ    © *  0Â Â@8 A6 Ã ÷	  d‡÷	Ô& 
÷	  €p  Ý©[}$©`T*  V-  C@ ó¬  W­-  ðœ  ðÕ  u*  |6 2 u8 4 ðœ  ðÕ  p6  p8 
 Ã*  ¢ õ‹1 Ã
õ‹0 Ã
Áe ÂÂå ‘Â. Ba*  È÷	  BÑ•ÿ C@ Ãœ ÃE ÿÃ
÷	  C@ ó‹	 
  Ìªa	Ìªa	*  î×¬	  †óµ 	 ÊÅ€ p °å ÷	è ‡ C@ *  Âœ Â Â@0 A. Ã ÷	  U‡÷	ì &C@ Àœ  Ý©[}*  : ÷	  €0Š ðÕ  p.  p0 
 ð  ÷	  ©      `T*  `” :‡‚r. T r0 V ò• 	 r2  r4  òÅ*  †  € ÷	   ñÕ 
 Â ÷	  †÷	`   Óªz œ« *  ¬C@ s2  s4  óÅ  ¡ –5µ4 ô   ô*  Ò   ‡  fL fN 
÷	  µN µL ± ç  œ« *  ø ñÕ 
 Â ÷	  ‡ && ÷	  ° ˆ± ‡   œ«wœ«ZX  úÿt ÷	  †ÀÐû÷	  ‡   ÉªØh«êv       Þ M   NÀ…á*  ¶uL    NÀ…á   ¯”L  Ý©[}@  ÉªØh@  *  «êv@      (  ¶uL(: òªàGh  ¯”   
   ¶uL  *    ðµ   
 ‚   
 ÷	  t †  "Ý©[}  & ± ‡ ÷	  †ÀÐû÷	        ‡   
ÉªØh«êv       M   QÀ¼*  ·uüd    QÀ¼   ¯”L   «_M@  ¤«@  *  ¤«V@  Î«a(@  5¬ ™@      (  ·uüd(J   («m$h  ¯”   
   ·uüd  *    ÷	  4
 ¡ ÁÁe  û	V † 
´  Á0   Î«a( «_M 
 (  & ÷	   õ   ÷	  Ã  Ãf V‡   ¤«¤«V5¬ ™       âM   NÀÅç*  ¸u<    NÀÅç   ¯”L  E©¶H@  l©,x@  *  Â©ðs@  Šª0 @  Éª°h@  Ìªa	@  œ«w@  *  «êv@  Ã«Kq@      (  ¸u<(¾ I«„–h  
  ¯”   
   ¸u<  *     4
 
÷	  u@ . õ•       2 &
Ž
€÷	    œ«w(Šª0 *  & ‡5 . p-<  ‡÷	  õµ 9 ÷	  ë–
A  E©¶H"l©,x*  L 4 Á
1-  1-  5
4  
÷	  Ã ÷	  "Šª0 *  r   #‡ ÷	  †ÀÐû÷	  u 4 5
4 ÷	  A  Â©ðsÉª°h«êv&Ã«Kq*  ˜ 6 `B:  ƒà`÷	  àp  ñÕ 
 ‡   Ìªa	       M   NÀ…È*  ¸u½`    NÀ…È   ¯”L  Šª0 @  O«•y@  *  «êv@      (  ¸u½`(X O«™wh  ¯”   
   ¸u½`  *    ôµ    
4  4  4  	  *  &  A 4Š 4 ÷	  †Àðþ÷	  5œ 3   Šª0 "«êv  L m u4       w     O«•y       úM   RÀEÂ*  ¸uÊ`    RÀEÂ   ¯”L  9©ë3@  E©ÆH@  *  ¾©Ó@  Â©¨%@  Â©,`@  Â©ðs@  Éª°h@  *  œ«w@  «êv@  ¼«8@  Ã«Kq@  5¬ ™@  *  Y¬T}@  Z¬àG@      (  ¸uÊ`(VO«•yh  
  ¯”   
   ¸uÊ`  *    õ L õ• 9 5Š- ô‹ 
ôµ@  Àðþ÷	    («êv*  & w ô‹ m 1-  1-
  5
< 5*  L  > 5
: ÷	  †ÀÐû÷	  ÷	   4
 
÷	    Éª°h«êv¼«8(œ«w*  r ‡  
  ÷	  ÷	  †È%`ú
C@ ó‹   9©ë3Â©¨%*  ˜ AÁ÷	  ®w C@ 5
< u3 < u4 >       õµ  Y¬T}*  ¾  9 #B: `”‚
ó‹ Áµ ÷	êmf*  ä ÁEüÿÁe Öµ B`Âe &€÷	  €õµ 9 X  E©ÆH*  
 4
 
÷	  L‡C@ ó‹ ÷	  ÷	  E†  œ«w"9©ë3&Â©ðs*  0È%`úÈ%Pþ<ôµ@  8õ• 8  4
 
*  V÷	  ,‡
÷	  "‡5
: 
÷	 ÷	 #÷	  5Š8   œ«wÂ©,`$9©ë3*  |5
< u3 < u4 > ÃU €÷	  B@ †–
õ‹-   ¾©Ó*  ¢ò‹ "`ú÷	  È†w ‡ 5
< Ãpùõ‹- J  Z¬àG*  ÈA@ B: `Ã°ýõµ 9 ?Ã@úô‹ ôµ@  *  îñµ  õµ 9 .ñ‹ 2ô‹ õµ 9 *  ”‚
÷	¬#ôµ@  ÷	  ÷	      Fÿ5
< Ã°ýõµ   Ã«Kq*  :9 B: `Êµ î
ÃPþB: `Êµ w P*  `w 8÷	  ‚7†ô‹ õµ 9 Ž †µ6 ”  
Ã«Kq*  †÷	>t-<  µ
< òôµ@  ]ô‹ õÿÿ< *  ¬Ž &†µ
< ÷	t ¦4  ÷	  f< ÷	  µ<   9©ë3$Â©ðs*  Ò ‚O†4
 t È%Pþ–%j÷	  †ÀÐû÷	   Éª°h*  ø  Ø‚€àµ: ÷	  5Š8 5
< u3 < u4 >   «êv9©ë3*  ÃU €÷	  †"`úI ÷	   ÷	  âÃ  
¾©ÓY¬T}$Éª°h*  D°ýõµ 9 17¢ õÿÿ< ©B6 ÷	Ê & ÷	    (9©ë3*  jf< ÷	  µ< 4
 –%u . u 0 fL 
  
Â©      ðs*  ÷	  ƒõL  ÷	  †ÀÐû÷	  À     œ«wÉª°h «êv&5¬ ™*  ¶   È0
 fL V‡ ÁEüÿÁe ¦”&
&
ƒ“”Á
*  Üýƒ´¥ ô  t  ‡ A@ B: ‚cƒ”µ”*  2 Ãµ ÃEüÿÂ`Âe 
ƒÔÃ ƒÔÃ ¦Î`&
Nœ *  (‚eH ƒ”æ´” &
&
ÃEüÿÃe ‘”Ã
ý´ ´  N Öµ$ ‡        ÎM   OÀEÛ*  ¸uœw    OÀEÛ   ¯”L  E©ÈH@  Šª0 @  *  Þª¡E@      (  ¸uœw(S«`"h  ¯”   
   ¸uœw  *    ôµ@  ôÅ  ôÅD    Ãpýðµ  nÃ*  & üôµ   hu > u < Ãàùœ ÂÅðÿ—  *  L * A-< S‚ A-< MôÕ         
÷	    (Šª0 *  r 
Ü Á ÁÁå Â¥ Áå A-< 8‚p-<  4‡*  ˜ õ¥   ôµ  
  ÷	  ÃÀùõµ 9 "ôÕ  E©ÈH*  ¾    ÷	  ôÅ  5Š9 5
4 4
 4
 4
  Þª¡E(  ä  ôµ  4
 4Š  4
 ‡ õ ± ‡        ÈM   RÀÅç*  ¸u`†    RÀÅç   ¯”L  E©¶H@  ¾©Ó@  *  À©h	@  ;ªà8@  =ªÐ@  Šª0 @  Óªø8@  *  I«„–@  S«`"@  œ« @  œ«w@  « w@  *  Ã«Kq@  ¬À@  5¬ ™@      (  ¸u`†(\  U«-‚h  ¯”   
   ¸u`†  *    5
4 ÷	  †w ²Á
÷	  "‡Ã  ÃÁÁe  !  
S«`"œ«w 5¬       ™(À©h	" 
(*  & û	V †, Ðü	Ã  ÃÁÁe  û	V ê†÷	¤  5¬ ™Óªø8< 
 *  L Ã  ÃÁÁe  û	V †w Ff6 5
6 õµ ,   5¬ ™=ªÐT 
 *  r Ã  ÃÁÁe  û	V †5 ôÕ@  µ4 @@  œ  5¬ ™¬Àz 
 *  ˜  €Š÷	  ?‡p-<  :‡÷	  õµ 9 4Ã  ÃÁ  
Šª0 E©¶H$5¬ ™*  ¾ Áe  û	V †, Ðü	Ã  ÃÁÁe  û	V ê†R"  À©h	¾ 
5¬ ™ Óªø8Ø 
*  ä ÷	Ã  ÃÁÁe  û	V G‡õµ , Ã  ÃÁ  
5¬ ™;ªà8ð 
$5¬ ™ *  
Áe  û	V †5 ôÕ@  ¹5 
 5  5   ¬À

"*  0 ôµ        4 
 4  4  4  4 *  V 4  õ õ  ôµ  õ  ôµ@ *  | õ  !Ã  ÃÀ  5 5  ÁÁe    5¬ ™(I«„–ž
*  ¢û	V uL  uN  5

 5
 5
 ôÅ  4Š*  È  
÷	  4
 A4 
÷	  ôÅ@  w   œ«w œ« *  î  u: 6 õµ 9 .õµ 9 *A@ ñµ  C  « w*  : `Ëµ Ã  ÃÀ  Èàý–
A@ ñ‹ ¸§  5¬ ™&  :ôÕ  Ã ÷	  Ã ÷	  í‡õµ 9 ó‡   Ã«Kq¾©Ó       ÆM   OÀÕ*  ºu,`    OÀÕ   ¯”L  ã©,#@  Ìªa	@  *  Óªz@  œ« @  œ«ZX@  œ«w      @   «x@  "      (  ºu,`(~Ÿ«à`h  ¯”   
   ºu,`  *    € °Š ðÕ  p6  p8 
 Áe  Âe*  &  ÷	  Ãå Ñ÷	  ‚
 C@ Ãœ ÃE ÿæ   «xÌªa	*  L ‚l Âà÷	  BÂe. ÷	  Ãå Ñ÷	  ƒ  Ìªa	 «x$Ìªa	*  r  ‚ ‚m ÷	  € p 0à  4
 Â  Ìªa	*  ˜  &œ ÷	Ð †
w ˜ õ• , Ã ÷	  †
  "ã©,#*  ¾ r6  r8  ²•	 ÷	  AF ñÕ 
 Â ÷	    Óªz(œ« *  ä †"`ú&& ÷	  ° ˆ 4
 Â f  œ«ZX*  
L fN ÷	^ µN µL 5
6 ± ‡ C@ s6  s*  08  €      
 ðÅ  ¡ ‡ 5
6  4
 fL fN *  VÁ
÷	  µN µL õ• , ± ‡ ñÕ 
 ÷	    œ«w(œ«w  |‡        >M   NÀÅÎ*  ºuãe    NÀÅÎ   ¯”L  Šª0 @  Éª°h@  *  Ã«Kq@      (  ºuãe(Ž  «ƒKh  ¯”   
   ºuãe  *    5
 ô‹ = 7ñµ 
 3 
÷	  ÷	  -‡õ   Šª0 $Éª°h*  &  : p-:  &†÷	  B6 `”ÁEüÿÁe ‚
¦”&
  Ã«Kq*  L &
ƒ“”Á
ýƒ´¥ ô  t  u6 :    r u6 . ¡ ‡ Öõ0ú õ€þ ± ‡        ŠM   RÀÅÎ*  ºuçe    RÀÅÎ   ¯”L  ô¨@  9© @  *  C©z@  Éª°h@  œ« @        œ«ZX@  «êv@  "      (  ºuçe(n «_Mh  ¯”   
   ºuçe  *    Á ÷	]‡´œf  ´œg  õµ   ÷	Ú P‡¡ *  & ‡ —,t  õ0ù F÷	t C‡  f÷	´ <‡*  L ÷	º 8‡÷	X 5‡  ‚ Bm< õëõµ  *  r ô•    õµ  ðµ  ´Š 4¬ *  ˜  ƒ4œ    ëô ¡ ‡ ¦Á0 ÷	  †õ  $ô¨*  ¾ pû ‚± ‡ 0  4 58 ‚°œ
   °œ  *  ä Âe Àe Á Á
ý‚¡ ‡ A> 
÷	  †  $œ« *  
‡  
Â Ã f÷	  ƒúÿ†È%`úÁï5  9© *  0 Á÷	  õú ÷	  †ÀÐû÷	  u> 5  œ«ZXÉª°h"      «êv  V< ÷	  †õ û ± ‡ ¡ ‡   C©z       ÖM   wÀÅç*  »u[    wÀÅç   ¯”L  E©ÆH@  E©ÇH@  *  E©ÈH@  E©ÉH@  «êv@      (  »u[(Ì  ¼«8h  ¯”   
   »u[  *    5Š9 &&
&l õ: €õU €, Ã õ: `*  & Î ‡õÕ 9 w ˆCm: € Î ‡õÕ" 9 w *  L nõ: 5à: õ< ð‹ Àðþ÷	  s­>     «êv*  r 5Š9 w BõÕ 9 ö  Âœ  ÂEüÿð‹ ‚
*  ˜ Âe ¶` ð‹ DËµ Ëµ Ëµ Ãe *  ¾ ƒm õ< ¸»B@ ò‹ , œ ÁÅøÿ*  ä W   Â‚m 
Ü Á Òöe  Â‚m*        
 v` õ< Nôµ  €÷	  €÷	  8  E©ÉH&E©ÇH*  0A@ Aœ ÁE ÿð‹ Â‚m v` 
Ëµ *  VÂ’ÂÅüÿÂe ¶ öe  Â`Âe f
ÔÁ ÔÁ *  |v` õ< ôµ  €÷	  €÷	  õµ  E©ÈH&E©ÆH*  ¢ 9 	õ5 €, ƒm w €þ€ Æe õE €  È, ‡        
M   NÀ…á*  »ulE    NÀ…á   ¯”L  E©¶H@  l©,x@  *  Ý©[}@  Šª0 @  Éª°h@  Þª¡E@  œ«w@  *  «êv@      (  »ulE(ê Ã«ôh  ¯”   
   »ulE  *     ÷	  †ÀÐû÷	  C. `Ãe  ¦œ ÎE  
Éª°h«êv*  & ðÿ—¥ µ < õ”      < õ”= õ> A@ q-<  *  L L‡÷	  õµ 9 F¡ Þ	 A m f÷	    E©¶H(Þª¡E*  r µ> 5
< 5œ < ôÅ   4
 u4 Â ÷	*  ˜   †5
4 "÷	   
÷	  œ Â ÂC4 5
4 À  œ«wl©,xŠª0 *  ¾  Á Ã ÷	  ‡úÿt ÷	  †ÀÐû÷	    Ý©[}Éª°h(«êv
  ä ‡ ± ‡        M   NÀÕ*  »u•G    NÀÕ   ¯”L      (  »u•G(ˆ   Ã«Kqh  ¯”   
   »u•G  *    æC: õ6 `Â”ƒ
A@ Âµ ÂEüÿÂe ñ‹ *  & Î ñÕ 
 A@ Â
Î“ŠËŠ×¤ÿÿ*  L Âôƒ`ñ‹  ¦œ ÎEðÿ—¥ ƒl   r 
ÂÔ      Â ÂÔÂ ƒ`àõ: –
‡        Œ M   PÀ…á*  »ufs    PÀ…á   ¯”L  ¹«WŒ@      (    »ufs( Ê«ðsh  ¯”   
   »ufs      w	  õÕ 9 ± ‡   ¹«WŒ       .M   vÀ¼*  »uLy    vÀ¼   ¯”L  ©Š@  ©G@  *  ÉªØh@  Ìªa	@  •«Ò@  «êv@      (    »uLy( Ë«àeh  ¯”   
   »uLy  *    tF   ÷	  †ÀÐû÷	  6 ÷	  € ƒ  ÉªØh«êv"•«Ò*  &  ðµ  ðÅ  óÕ  3  3
 
 õµ  *  L , B: ‚m Á Á`6 
 ví: 
 p:  ƒ*  r 
 ÷	  € p 0à õµ  , 1ÁÁe ¶          Ìªa	*  ˜ ÷	  € B: ` Cí: p:  Ã€   ©G*  ¾ Âe &@@ ðµ  Êµ õÕ , €÷	  €  &Ìªa	*  ä  p 0à õµ  , u-6 : 
 Am: ¶   
 ÷	   Am6 ÷	  ‡   ©G©Š       ¦M   NÀ…á*  ½uø8    NÀ…á   ¯”L  ¾©Ó@  Â©,`@  *  3ª(#@  œ« @  œ«w@  5¬ ™@  Z¬àG@  "      (  ½uø8(ž ¬Àh  ¯”   
   ½uø8  *    æ Ã ÷	  	‡µ“8 5
: Ã ÷	  †"`ú  Â©,` ¾©Ó*  & ÷	  ì†Ã  Ãõµ 9 õpùL 5
N ÁÁe  Z¬àG5¬ ™*  L   û	V ‡õµ , Ž
Ò      –
Ã  ÃÀ  & &  3ª(#J 
5¬ ™ *  r A6 
÷	  5
6  
÷	  4
 ˆ°   œ« œ«w
  ˜ &V‡        RM   UÀ¼*  ½u¡d    UÀ¼   ¯”L  E©¶H@  E©ÉH@  *  ¾©Ó@  À©h	@  ;ªà8@  =ªÐ@  Šª0 @  *  Éª°h@  Óªø8@  I«„–@  œ« @  œ«w@  *  «êv@  « w@  Ã«ô@  Ã«Kq@  ¬À@  *  ¬"@  5¬ ™@      (  ½u¡d(|¬-h  
  ¯”   
   ½u¡d  *    ÷	  †w à÷	  †ÀÐû÷	  u4 t @m: Àe  ¬"Éª°h«êv*  &  ÷	ò&@@ ðµ  u-,  õàù  €*  L ÷	  õµ 9       5
4 w b
&
÷	<†–
w RÁ  E©ÉH*  r  
÷	*	†–
uL  uN  w Z–
5
,  
÷	*  ˜   5Š9 Ã  ÃÁÁe  û	V †w f6 5
6 õµ  Šª0 5¬ ™=ªÐ¦ 
*  ¾  , Ã  ÃÁÁe  û	V †5 ôÕ@  µ4   5¬ ™¬ÀÌ 
*  ä u < u >   ‚ `f 
@ÔfÀ*  
E÷	  \‡ôÕ  p-<  :‡÷	  õµ 9 4Ã    Šª0 E©¶H(5¬ ™*  0ÃÁÁe  û	V †, Ðü	Ã  ÃÁÁe  û	V "  
À©h	4
5¬ ™$Óªø8N
*  Vê†8÷	ä Ã  ÃÁÁe  û	V -‡õµ , Ã    5¬ ™;ªà8f
(5¬ ™*  |ÃÁÁe  û	V †5 ôÕ      @  µõ õ    
¬À€
H*  ¢ôµ  õ  ôµ@  õ  –
õÐþ *  È–
uL  uN  Ã  ÃÁÁe  û	V –
A4   5¬ ™I«„–à
*  î
t  4
 5
4 
÷	   4
 
÷	    œ« (œ«w*  ôÅ@  w    fœ ÎEðÿ—¥ 5”, 5”-   « w*  :u , ‡ u: 6 õµ 9 )õµ 9 %A@ ñµ *  ` Ã  ÃÀ  Èàý–
A@ ñ‹ ¦–
³ôÕ   
5¬ ™*  † Ã ÷	  Ã ÷	  ì‡õµ 9 ó‡ fõ•  2   Ã«Kq¾©Ó*  ¬  l fu < u > A4 ¶
 € *  Ò÷	  †–%¡ ‡ ôÕ  p-,  †p-<  †Bp-        Šª0 *  ø<  ‡€ ÷	  õµ 9 6A@ ñµ  õÐþ  E©ÉH*  L –%± ‡ )ö @@ œ Nt4  u*  D: . Ã  ÃÁÁe  û	V ‡Þ	5 4 Þ‡u. :   
5¬ ™Ã«ôP

  j@m: Àe ÷	¨þ6 Ÿ        M   TÀ¼*  ½ufs    TÀ¼   ¯”L  Â©¨%@  ³ª4}@  *  Éª°h@  ÉªØh@  œ«w@  «êv@  ¼«8@  *  Y¬T}@      (  ½ufs(\¬ðsh  ¯”   
   ½ufs  *     Á‡ ÷	  †ÀÐû÷	  &4
 , |†  ÉªØh«êv*  &  `ƒ

ÂÔÁÀÃ ÷	  8†"`ú1Á)B   Â©¨%*  L òµ   ñµ 
 Àðþ÷	  1       ÷	  ± t  «êv"Éª°h*  r  5
: ÷	   4
 õµ 9 ñÕ 
 ÷	    ¼«8(Y¬T}*  ˜ ÷	  €4
 ¿
÷	  -õµ 9  õ‚  ³ª4}œ«w*  ¾ ‚l A: `Áe ‘”ô‹ õµ , Â2 Ba*  ä Â. BaÃ ‘”Ã
ý ñÕ 
 
÷	  †õU  $œ«w*  
 €, 4
 €ðe  –
 
÷	  4
 õ5 €   œ«w*  0, õE €, õ úL õ L u < u > f
  VL V‡        vM   PÀEÂ*  ½uœw    PÀEÂ   ¯”L  Šª0 @   «ƒK@  "      (  ½uœw(È ¬"h  ¯”   
   ½uœw  *    5
4 ôÅ\  ÷	  †‡   Ãpýðµ        O    «ƒK*  & l œ ÃÅ ÿBŠÃ
Ã‘”Ã
ýÃüôµ   *  L 9u > u < Ãàùœ ÂÅðÿÂ¥ * *  r A-< $‚ A-< ôÕ   
÷	  
Ü Á    Šª0 *  ˜ ÁÁå Â¥ Áå A-< 	‚p-<  ‡ 4
   ¾ ‡ õ ± ‡        @M   NÀEÛ*  ¿uL    NÀEÛ   ¯”L  Ý©[}@  ³ª4}@  *  œ«w@  Y¬T}@      (  ¿uL(t Z¬àGh  
  ¯”   
   ¿uL  *     f f f  4
 
÷	  	†ô  $œ«w*  &  Æe 4
 ± ‡ ô ÷	  ô €‚  ³ª4}*  L Ã ÷	  úÿ‡÷	  "`úÁ÷	  4
         
Ý©[}œ«w$Y¬T}  r ‡        	M   zÀEÛ*  ¿uçe    zÀEÛ   ¯”L  ô¨"@  ô¨@  *  9© @   © }@  Éª°h@  Óªz@  œ« @  *  œ«ZX@  «êv@  ¹«WŒ@  5¬ ™@      (    ¿uçe(¤h¬_Mh  ¯”   
   ¿uçe  *    5
: 5
< 5
> ÷	  †õ þ o@ È¥    ô¨"*  &  ú¢ 
÷	¾a‡÷	Ö^‡  ó2
  2
 *  L õµ  ô•    õµ  ðµ  ´Š*  r  4¬  ƒ4œ    ëô ÷	b3‡t:  *  ˜ @ ¢   ùÀ5ô•  €Á  
Á
*  ¾ ý2(  @: 2 ²
 2 2   2à 2 *  ä  ²       õðþ õ ÿ ± ‡ A> €÷	  ñÕ   $Óªz*  

 Â ÷	  R‡4u< 8 õe 8 f< ¢ '&  œ« *  0u-< 8 ‡÷	¶†–5Ûu< 8 õe 8 v<  €*  VB< ÷	d †uL  uN  èõe@ < €  Ö*  |‚¾Á 
÷	¶†‡ ò t 2 f 2 g €*  ¢÷	  A> ñÕ 
 Â ÷	  †w f¡ ‡ &¦2œ  Óªzœ« *  È  2œ  2  2œ  2œ	  2 $ 2 *  î, 2 . 2 0 ð‹ 1p
 
 p  2  *  2
  2
 ò   Ã
ƒƒƒƒ
2  *  :ò` ²  ò
 Ã  Ãóµ ( 2 ( 2   5¬ ™*  `* Dæ  æ  æ  æ  &
 & ð%         ð%*  †  
 Ã  Ãóµ ( 6  6 
 6    5¬ ™*  ¬6  ÷	  †Æe ± ‡ ‚ € ² ² ²   © }*  Ò ² ²* ²( ²  ²  –5¡ ‡ &Á0 *  ø÷	  †õpû €± ‡ 0  4 €÷	†  ô¨*  ‡ ±  w	  &
&
&
&fÂe CÃe Àe" Áe  ¹«WŒ*  D$ ”Ä…S‘av! ƒv 6a ¶
 ”ï*  j€1œ  ± ±• ±•
 „ … ñ‹ õ*  0ü 
ô* 	t, * ƒõû ± ‡ 1œ
  1œ*  ¶  1œ  1œ  1œ  ñÕ  
BÜ  Â ƒ*  ÜÂ1  ± C, †ñ 
BÜ Â ƒÂ*  1  ± C, †ñ       ¡ ‡ fæ  æ  *  (æ  A É¥ A ùÁ( Â Ý( Æe*  N \
4¬  ‡Ãàü4¬  ‡Ã ü4¬  ‡*  tÃ`þÃ5 õ –5–5± ‡ AÉ¥ 1¬ *  š vœ  1¬  vœ  1¬  vœ   *  ÀA äð‹ 
¶-  0œ  ¶  ö 
*  æ¶-  Ã0ÿu Ä
‚•Â ‚U‚Uõ  *  ¡ ‡ &fA: 
u: 
÷	†õÿÿ< €*  2Ã 
Ã
ý
B< ÷	ª †€± ‡ € 2œ*  X  2œ  2œ  €2œ  
 2œ  Àe Áe*  ~ ¦Â Â
ý€  €Àe4 Â  P”Â
*  ¤ý‚A: 2
 €Àef 5 8 ‚W-< ÿÿ	r  ²
*  Ê  2
       5
< 
r  5< @í8 Àe˜2 €¡ *  ð‡ A> ÷	  †ÀÐû÷	  ÷	  ñU 
 Â W,   Éª°h«êvÓªz*   Â ÷	  †5 ÷	  µ
: A: Ã ÷	  œ« œ«ZX*  < ‡  
Â ÃU æ÷	  ƒúÿ†5 Á÷	  9© *  b  õ ù ± ‡ ÷	  †ÀÐû÷	  u> 5< 58   œ«ZXÉª°h«êv   ˆõe˜8 Ã5 Ã 
Ã
ý¡ ‡   õÿÿ< €*  2Ã 
Ã
ý
B< ÷	ª †€± ‡ € 2œ*  X  2œ  2œ  €2œ  
 2œ  Àe Áe*  ~ ¦Â Â
ý€  €Àe4 Â  P”Â
*  ¤ý‚A: 2
 €Àef 5 8 ‚W-< ÿÿ	r  ²
*  Ê  2
           #jL¢_› 8$         ÁXÀM    3 1   @+   @ ?       f	 š                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ¸     T	Ô   T	#   T	Lq   T	¤’   ¡
ày   ¢
`Ÿ   £
`   ¤
Jm   ©
8^   «
³y   ¬
è.   ­
Œd   ®
Ðf   °
   °
   °
èq   °
ˆr   ³
<}   ´
   ´
   ×È   !øu   !ày   #ðy   $ày   %°'   ,è.   ,8Y   -Lr   2`m   2(x   3   3øp   3x   3ƒ   3LŸ   3kŸ   4   4H:   5¸8   ŒD   Œ%   Œz   Œw*   ŒH;   Œ„S   ŒU   ŒÈ`   Œýf   ŒKq   Œiw   Œly   Œdz   Œ9€   ŒL…   d@y   l8Y   mxx   nH   p   u   u   uüX         vö   vy:   va   vžg   Ô/   Ôs   Ôy:   ÔYM   ÔÅS   ÔZ   Ôªg   Ô|…   ¡#ˆ   £#e^   ¦#ð   ©#8^   ¬#è.   ¬#Ì`   ®#M   ¯#xd   ¯#øf   °#	   °#ˆr   ²#   ²#k    ²#é   ³#è!   ³#U<   ´#C	   ´#M:   µ#   µ#¸8   ¶#ò   ·#è5   d&ô   d&    d&æ   d&#   d&#   d&#   d&N   d&˜T   d&U   d&gY   d&Ìe   d&áe   (Ô   (#   (¼p   (6q   (¦’   c6×3   c6Ø3   c6ÅG   c6@y   c6«„   d6(   d6Xz   d6«„   d6¹Œ   e6m'   e6Ž(   f6   f6¸         f6 9   f6ÞK   f6€Q   f6ÕZ   f6¤`   f6fa   f6ßf   f6ùf   f6qg   f6™w   g6	   h6î   i6b   i6’   i6^   i6&X   i6.X   i6/X   i6xd   i6øf   i6@y   l6Ës   l6p…   m6^f   n6VN   n6 S   o6q   o6|   o6y‹   p6ñ(   p6ßr   p6âr   r61   r6ñs   s6   s6   s6Ùf   t61H   t6<H   u6   u6¼%   v6   v6<   v6#   v6ÞK   v6µW   v6fa   v6ßf   w6R;   w6 X   ¡<ày   ¡<,€   £<4q   £<©s   ¤<R	   ¥<°'   ¥<´–   ¦<ð   ¦<µW   ¦<ø€   ¦<ZŠ   ©<º`   ¬<è.   ¬<8Y         ¬<€\   °<èq   °<ˆr   ²<4Š   ²<¿‹   ²<©Œ   ´<   ´<R;   µ<   sE.	   sEî   ;F.	   ;F3	   ;F4	   ;F5	   ;Fî   ;Fô   ;Fõ   aOØw   lOè.   lO8Y   nOH   tOÅž   uO   uOüX   ÁS€p   ÃSy   èS     ¢Uø(   ¢Uü(   £U€   ¥UÅ'   ¥U‰(   ¥Uþs   ¥Uvy   ¬U’   ¬Uè.   ¬U8Y   ­U 
   ²Uæ   µUT   µUT   µU¸T   µU¼T   µUˆw   ze@j   fÈ   îf     ïf     òf     óf     ôf     õf     øf     gÒ   g   gˆ   gŠ   g%   gÔ   gæ   gD)   gwL   g~Z         ga   gÚd   gke   g»z   bhËL   bhQ†   ih8^   lh8Y   mh¶   nhH   ohð‘   phèq   rh !   shU<   sh<}   shƒ   shÒ’   th   wh¼   8w     Tw¬   TwìQ   ;xî   \y¸    \yr!   \y_M   ®y     ±y     jz     "{CT   "{NT   #{Ÿ   #{L	   #{   #{–   #{\!   #{t'   #{):   #{¬:   #{ÖM   #{ì]   #{ð_   #{Þw   #{y   #{Ìy   #{   #{à   &{8r   ({D   ){D   ){Ï_   ){   ,{ 2   -{De   0{àG   0{èq   0{¹s   2{   2{¶^   3{ø   6{à   “     €k   €ˆ         €Š   €#   €?T   €`Z   €a   €.q   €Ös   aì   aìy   a €   czd   dÙf   eg'   i8^   l°   lp   l8Y   m™   nH   n•   n^   n   nB   ný   n®K   nXN   op&   p   pèq   r<   r|q   sq   s<}   s ‚   s(‚   t   u   ‚Ÿ   ‚L	   ‚ˆ   ‚î   ‚   ‚|   ‚   ‚D)   ‚ô3   ‚Ny   ‚ðy   ‚w~   ‚Â   D‚È   D‚ô   D‚©   D‚ÊQ   D‚\X   D‚|Z   D‚f   D‚æf   D‚Uq   D‚îr   D‚Œs   D‚¶x   ƒÐf   Ôƒ'         Ôƒt	   Ôƒ&   Ôƒë   Ôƒ4F   Ôƒ L   ÔƒZ   Ôƒžg   Ôƒm   óƒ.	   óƒî   »„.	   »„2	   »„3	   »„4	   »„5	   »„î   »„ò   »„ó   »„ô   »„õ   T†Ÿ   T†ˆ   T†‘   T†§   T†ú   T†À   T†ê'   T†[(   T†*K   T†åQ   T†íQ   T†„S   T†¼^   T†a   T†Jg   T†žg   T†Lq   T†x   T†Uy   T†L…   T†C   ¡‡@   ¡‡ €   ¢‡0„   £‡p   £‡ Z   £‡à~   £‡˜”   £‡À”   £‡è”   £‡•   ¤‡   ¬‡«„   ¯‡ð‘   ²‡à   ³‡   ³‡ø   ³‡ ‚   µ‡¸8   µ‡üX   ¶‡   \ˆ|	   \ˆ¤   \ˆ_         \ˆ¯   \ˆ/   \ˆ;"   \ˆä3   \ˆ_M   \ˆ›N   \ˆ;P   \ˆQ   \ˆKX   \ˆæf   \ˆœr   \ˆRu   \ˆ¶x   \ˆÃŒ   \ˆÀç   ”ŒÃ   ”Œç   ”Œì   ”Œ<   ”Œ{   ”Œö&   ”ŒÔS   ”Œ³W   ”Œü_   ”Œdf   ”ŒXq   ”Œ²s   ”Œ”w   ”Œëy   ”Œòy   ”Œ¶z   ”ŒÞ   ã&   ãû   ãS   ã{   ãå   ãl8   ãÌ8   ãÖK   ãM   ãM   ãVN   ã“Q   ãÌQ   ãÌS   ãÎS   ã	U   ãU   ãÄX   ãìX   ãZ   ãBa   ãäf   ãÜp   ãIq   ãLq   ãXq   ã‰r   ãs   ãs   ãŒs   ã­s   ãìv         ãLw   ãñy   ãóy   ãÿy   ã\}   ã¨}   ã´}   ã	   ãºƒ   ã†   îD—   "”t	   "”(   "”‚5   "” L   "”„M   "”‚N   "”Z   "”¶^   "”zd   "”Bx   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      #ð   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ          šM   XÀ  *  #ð    XÀ     ¯”L  ¸  HÂþT	ÔH *  T	#H T	LqH T	¤’H ¡
àyH ¢
`ŸH *  £
`H ¤
JmHþÿ©
8^H «
³yHüÿ¬
è.H *  ­
ŒdH	 ®
ÐfH °
H
 °
H  °
èqH *  °
ˆrH
 ³
<}H ´
H ´
H ×ÈH À*  !øuH !àyH
 #ðyH
 $àyH %°'H *  ,è.H ,8YH  -LrH  2`mH 2(xH
 *  3H 3øpH 3xH 3ƒH
 3LŸH *  3kŸH 4H 4H:H 5¸8H ŒDH *  Œ%H  ŒzH Œw*H @ŒH;H Œ„SH €*  ŒUH@ ŒÈ`H ŒýfH ŒKqH ŒiwH *  ŒlyH        ŒdzH Œ9€H ŒL…H€ d@yH
 *  l8YH  mxxH nHH pH uH *  uH uüXH vöH vy:H  vaH *  vžgH Ô/H` ÔsH Ôy:H  ÔYMH *  ÔÅSH ÔZHa ÔªgH" Ô|…H ¡#ˆH *  £#e^H ¦#ðH ©#8^H ¬#è.H. ¬#Ì`H *  ®#MH ¯#xdH ¯#øfH °#	H °#ˆrH *  ²#H, ²#k H. ²#éH ³#è!H
 ³#U<H  *  ´#C	H ´#M:H µ#H µ#¸8H ¶#òH *  ·#è5H d&ôH  d& H  d&æH d&#H€ *  d&#H d&#H d&NH d&˜TH d&UH @*  d&gYH €d&ÌeH@ d&áeH (ÔH (      #H *  (¼pH (6qH (¦’H c6×3H: c6Ø3Hþ*  c6ÅGHþc6@yH  c6«„H d6(H$ d6XzH& *  d6«„H
 d6¹ŒH
 e6m'H e6Ž(H  f6H *  f6¸H( f6 9H- f6ÞKH f6€QH f6ÕZH *  f6¤`H* f6faH f6ßfH$ f6ùfH" f6qgH *  f6™wH g6	H: h6îH i6bH i6’H  *  i6^H  i6&XHði6.XHØi6/XHäi6xdH *  i6øfH i6@yH l6ËsH. l6p…H> m6^fH *  n6VNH< n6 SH1 o6qH o6|H o6y‹H, *  p6ñ(H p6ßrH p6ârH	 r61H r6ñsH2 *  s6H s6H s6ÙfH0 t61HH t6<HH *  u6H u6¼%H v6      H" v6<H< v6#H. *  v6ÞKH v6µWH v6faH v6ßfH  w6R;H, *  w6 XH$ ¡<àyH ¡<,€H$ £<4qH £<©sH  *  ¤<R	H ¥<°'H ¥<´–H& ¦<ðH
 ¦<µWH  *  ¦<ø€H ¦<ZŠH ©<º`H ¬<è.H$ ¬<8YH  *  ¬<€\H °<èqH °<ˆrH ²<4ŠH ²<¿‹H
 *  ²<©ŒH ´<H ´<R;H µ<H sE.	Hðô*  sEîHÐô;F.	Hàô;F3	Hêô;F4	Hìô;F5	Hîô*  ;FîHÀô;FôHÌô;FõHÎôaOØwH lOè.H
 *  lO8YH  nOHH tOÅžH uOH uOüXH *  ÁS€pH@ôÃSyHæÿèS  HÄþ¢Uø(H	 ¢Uü(H
 *  £U€H ¥UÅ'H ¥U‰(H ¥UþsH ¥UvyH  *  ¬U      ’H ¬Uè.H ¬U8YH  ­U 
H	 ²UæH
 *  µUTH µUTH µU¸TH µU¼TH µUˆwH *  ze@jHúÿfÈH 0îf  H  ïf  H  òf  H€ *  óf  H  ôf  HÀ õf  Hà øf  HþÿgÒH *  gH gˆH @gŠH  g%H€ gÔH *  gæH gD)H gwLH g~ZH gaH €*  gÚdH gkeH@ g»zH  bhËLH bhQ†H *  ih8^H lh8YH  mh¶H
 nhHH ohð‘H *  phèqH rh !H shU<H sh<}H shƒH *  shÒ’H thH wh¼H 8w  HÈþTw¬H@ *  TwìQH€ ;xîH€ô\y¸ H \yr!H \y_MH *  ®y  Hzÿ±y  HNõjz  Hxÿ"{CTH      þÿ"{NTHüÿ*  #{ŸH #{L	H #{H #{–H #{\!H
 *  #{t'H #{):H #{¬:H #{ÖMH #{ì]H  *  #{ð_H #{ÞwH #{yH
 #{ÌyH #{H *  #{àH &{8rH ({DH. ){DH. ){Ï_H *  ){H ,{ 2H  -{DeH
 0{àGH 0{èqH *  0{¹sH 2{Húÿ2{¶^Hûÿ3{øH	 6{àH *  “  Htÿ€kHÀñ€ˆH€ €ŠH@ €#H €*  €?TH  €`ZH €aH €.qH @€ÖsH *  aìH* aìyH a €H, czdH dÙfH  *  eg'H i8^H l°H! lpH$ l8YH  *  m™H( nHH n•H n^H nH *  nBH  nýH       n®KH nXNH op&H0 *  pH& pèqH r<H
 r|qH4 sqH3 *  s<}H s ‚H s(‚H tH uH *  ‚ŸH@ ‚L	H €‚ˆH ‚îH ‚H  *  ‚|H ‚H @‚D)H ‚ô3H€ ‚NyH *  ‚ðyH ‚w~H ‚ÂH D‚ÈH €D‚ôH@ *  D‚©H D‚ÊQH D‚\XH D‚|ZH€ D‚fH @*  D‚æfH D‚UqH  D‚îrH  D‚ŒsH D‚¶xH *  ƒÐfH€ðÔƒ'H€ Ôƒt	H Ôƒ&H€ ÔƒëH@ *  Ôƒ4FH Ôƒ LH ÔƒZH@ ÔƒžgH ÔƒmH  *  óƒ.	H°ÿóƒîHÿ»„.	H ÿ»„2	H¨ÿ»„3	Hªÿ*  »„4	H¬ÿ»„5	H®ÿ»„îH€ÿ»„òHˆÿ»„óHŠÿ*        »„ôHŒÿ»„õHŽÿT†ŸH T†ˆH T†‘H€ *  T†§H T†úH T†ÀH T†ê'H  T†[(H *  T†*KH T†åQH T†íQH T†„SH@ T†¼^H *  T†aH T†JgH T†žgH T†LqH T†xH *  T†UyH T†L…H T†CH ¡‡@H ¡‡ €H *  ¢‡0„H £‡pH £‡ ZH £‡à~H £‡˜”H *  £‡À”H
 £‡è”H £‡•H ¤‡H  ¬‡«„Hüÿ*  ¯‡ð‘Hþÿ²‡àH ³‡H ³‡øH ³‡ ‚H *  µ‡¸8H* µ‡üXH ¶‡H \ˆ|	H \ˆ¤H *  \ˆ_H €\ˆ¯H @\ˆ/H@ \ˆ;"H \ˆä3H  *  \ˆ_MH \ˆ›NH \ˆ;PH \ˆQH \ˆKXH *  \ˆæfH \ˆœrH  \ˆRuH €\ˆ      ¶xH€ \ˆÃŒH *  \ˆÀçH ”ŒÃH ”ŒçH ”ŒìH@ ”Œ<H  *  ”Œ{H€ ”Œö&H @”ŒÔSH€ ”Œ³WH ”Œü_H *  ”ŒdfH ”ŒXqH  ”Œ²sH ”Œ”wH €”ŒëyH *  ”ŒòyH ”Œ¶zH ”ŒÞH ã&HL ãûH@ *  ãSH ã{HB ãåHF ãl8H ãÌ8H  *  ãÖKHP ãMH4 ãMH2 ãVNH ã“QH *  ãÌQH6 ãÌSH ãÎSH ã	UH& ãUH( *  ãÄXH ãìXH	 ãZH ãBaHH ãäfH *  ãÜpH ãIqHN ãLqH ãXqH> ã‰rH5 *  ãsH: ãsH; ãŒsHJ ã­sH< ãìvH" *  ãLwH$ ãñyH. ãóyH ãÿyH ã\}H *  ã¨}H* ã      ´}H, ã	H3 ãºƒH
 ã†HD *  îD—H "”t	H "”(H "”‚5H "” LH *  "”„MH "”‚NH "”ZH "”¶^H
 "”zdH    "”BxH     (  ¯”     H ”Œ¶zH ”ŒÞH ã&HL ãûH@ *  ãSH ã{HB ãåHF ãl8H ãÌ8H  *  ãÖKHP ãMH4 ãMH2 ãVNH ã“QH *  ãÌQH6 ãÌSH ãÎSH ã	UH& ãUH( *  ãÄXH ãìXH	 ãZH ãBaHH ãäfH *  ãÜpH ãIqHN ãLqH ãXqH> ã‰rH5 *  ãsH: ãsH; ãŒsHJ ã­sH< ãìvH" *  ãLwH$ ãñyH. ãóyH ãÿyH ã\}H *  ã¨}H* ã          _XÌT› 8$ }   P   ;MERGED ODL FILE CREATED ON 11-APR-79 AT 14:59:51                               P          ãWjL¢_› 8$         ÁXÀO     ;    È 
  å       Î#! 2                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ¯ˆw   a'¸.   ›,0À   L;è€   ;d;d   9h6} € ;h¸` € =h€˜  >h,d ð>h\g   @h""   Dh€W ¢Khp: € Kh$m êÂ©l èý¬D Ì þ¬D Î ­œ, Ê­o Î 
­œ, è­ð- 2­}d ¦ ­NÀ   ­OÀ   ­RÀ   ­TÀ   ­UÀ   ­|À   ­}À   ­žÀ   ­ŸÀ   ­ À   ­¡À   ­¢À   ­£À   ­¥À J­§À – ­ÆÀ   ­ÇÀ æ ­ÊÀ b­ËÀ †­ÌÀ  ­ÍÀ & ­ÏÀ d ­ïÀ 0­ñÀ Ø­òÀ  †­óÀ <­ôÀ  ü ­Æ ê­Æ ¢­‘Æ  ­’Æ € ­“Æ € ­”Æ € E°Ü   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ;djL   Ëd Œ Ì ×d0M  ü ód Œ Î  eà ðel èoe`" ÊÔf¤!  †Ôf
a  Ùf§Z   âft bÿf€W 2gˆ ¦ šg$` – œg
a & g®_ <g€˜ 0g„˜ Ø¡g§Z æ §gì d ªgt †«g× J9h6} € =h€˜  Dh€W ¢Khs: € Kh$m êÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           <O   Oí¼Æ*  ;djL    Oí¼Æ   ¯”L  <&@  a'¸.H *  ô' q@  ô'¤’@  $9ž!@  ´:òs@  ´:2“@  *  L;è€H T;@  >h,d@  öt	@  :©@  *  s©À@  „¯½`@  ù¯üX@  °úp@  ° }@  *  h±p!@  •± }@      (*¯ˆwhÄ›,0Àhž*  >h\gh"@h""hZ­NÀh  ­OÀhà ­RÀhî *  ­TÀh$­UÀhb­|Àh|­}Àh ­žÀhÄ*  ­ŸÀhô­ Àh­¡Àht­¢Àhä­£Àh*  ­­lŠ E°Üh ;d;dl ;d;dh  þ¬¯yìP

  ¯”   
   ­­        @     8 
         *    „æ¶ÿˆÀ  .Á¸‚Âå  
Rƒ
† W¤          ¶s©À¸*  & À
ûÉ•  † Rüñ•  ÿÿÀ
W¢  É•  À
*  L ñ
÷Rƒ
ãÆå  æƒæÂå  ¦&
&
&
&
*  r &
…÷	  Á fæ?ÿˆB Âå Âå w  ‘   
ù¯üX­­ "­­ &­­  *  ˜ IÑe 
Âå ‘Â4 
‚~Ã ËÓe
 ÓÓ
  ;d;d *  ¾  Ó 
ÃËÓe
 Ó Ó Ó 
L À   ;d;d(;d;d *  ä ÷	âæ3ÿˆ€ €
ÀE Á  1  ‚1à 
  ­­  *  
v  1` ‡ 6
 æ ÷	8‡ ¦æÁ  C
  $­­  *  0À   Â ƒ‹Óe SËå ‰æ*  V	 ÷	þƒ‚‡ À  H ‡ æ
 ÷	à‡ 
        ­­  *  | ¶ @HÐe
 Ð 


‡    €*  ¢ ¶ ÁAš·Jæƒ ¶ ð‹ ÷	  š*  Èp 7
N7
N7
NÁ×¢: 
w<ÂBà‚
·0*  îÁ
×¢] 
w&ÂBà‚
·Á

ó‹ *  wÂBà‚
·ƒ
Ë‹Ùð Ãã× 
   (*  :ûË‹
Ãe
 Ãð æ ÷	3 3 *  `ðµ  ó’ &Àð•  # ÷	  €†0Š ðÅ  ô'¤’h±p!*  †  æ ÷	È&Àð•  # ÷	  €†ð•    ô' qh±p!*  ¬ë0Š ðµ  ÷	ˆ ƒ‚‡ € Žð‹ ÷	*  Ò¦ðµ  &  ÷	  €‡ 0Š 0
 ú€   „¯½`*        ø¶ ¦æð‹ H`pà 0,  Áe
 *  H 
‘”Â~ ÷	 æ ÷	ƒ‚*  D‡ 
ðµ  -ðµ  1Á`æÂ Âà &*  jÀp ° ÷	  €‡ð  òóµ   l   ° } <&*  Ñ•
 °
 ƒl ð ð•  ‡ ó¥  * Â0
  "$9ž!*  ¶ ï÷  > 7œ : 7> 7 : æüÿˆ÷%  8   
´:òs ü&$9ž!*  Üã÷%  0 ð,  ø•   ð  ‡      T;&´:òs*                   € ¶ ð‹ !
  
*  (fðµ   ñµ   ø¥
   ÷	0   <&*  NH`l p l W  ÷	 ‡ æ       ÷	è ‡ *  t€ Žðµ  ð ðµ  &f 1*  š  Áe
   p ÷	  €Èe
 0
 ‡   •± }*  À÷  8ÿ7œ 4ÿ&Îe
 ·2ÿ7 .ÿæüÿˆè€  ´:2“"ü*  æ ¶ ðµ  ž  &æ ÷	òý&æ ÷	*  æýž  ‡ € ¶ —­ 
 ðµ  ø•   *  2Á ÷	èþ¸   Á ÷	ÚþŽÂ  Á
÷	  ‚  &>h,d*  X‡  ŽÀ°¦
÷	  ‚Àå7”þ÷Œþ÷  °:©$*  ~ ~þ÷  vþæüÿˆ‡ 
PASCAL RUN-TIME ER  
´:2“ü  ¤ROR NUMBER:       )               |Ü<œ    |Ü<      œ‚öt	 .  .ü
  ü ,  ,    >  >   @  @     ?  ?    ‚ô'¤’ D  D     H  H    |  |    ‚öt	 Ž  Žü
  ü Œ  Œ    ž  ž             Ÿ  Ÿ    ‚ô'¤’ ¤  ¤     ¨  ¨	   Ü  Ü    ‚öt	 î  îü
  ü ì  ì    þ  þ            ÿ  ÿ N  ‚ô'¤’         R   <  <    ‚öt	 N  Nü
  ü L  L    ^        ^t   `  `     _  _   ‚ô'¤’ d  d    h  h   œ  œ    ‚öt	 ®  ®ü
  ü ¬  ¬    ¾  ¾t   À  À     ¿  ¿   ‚ô'¤’ Ä  Ä    È  È   ü  ü         ;dô       SY                     Ì O   NíOò*  g®_    NíOò   ¯”L  a'¸.@  L;è€@  "  >h\g@      (* ­óÀh  ¯”   
         *    € Žðµ    ø•   Á ÷	  ø•
   Á   L;è€a'¸.>h\g  & w           >h\g       Ž O   Níì*  Ôf
a    Níì   ¯”L  Â©l@      (   ­ÌÀh  ¯”   
             € ¶ ¦ð÷	  >ø VðÖ‡   Â©l       ´ O   Níì*  šg$`    Níì   ¯”L  ­¥À@      (0   ­§Àh  ¯”   
         *    ¦¶  ö  ö ö&  ö+  w     & "+ (­¥À  & TRUE FALSE       Ö O   Níì*  «g×    Níì   ¯”L  >h,d@  >h\g@        (L ­¥Àh  ¯”   
         *    € ¶ ÎŽ Ží ¶c  æC¸Ÿ*  &    ¶
 Á ÷	  Ê~ƒ–%¦      Â  ÷	  ‚‡   >h\g$>h,d       Æ O   Níì*  Ùf§Z    Níì   ¯”L  ­œ,@  ­ð-@  "  ­}d@      (. ­ÆÀh  ¯”   
         *    € ¶ ¦æB÷	  ÷	  f
÷	  Ö  ­}d­ð-"­œ,  & Êƒ‚‡        O   Níì*  ¡g§Z    Níì   ¯”L  >h,d@  >h\g@        (r ­ÇÀh  ¯”   
         *    € ¶ ¦æÆå ‚ ƒ
—r
 Ãe0 *  & áÂ÷ö á•- ƒ
 ‚Âe Bàf¦ƒàÂ•*  L   Á÷	  ƒ‚¸”  Á ÷	  Ç~Æe ƒ‚–%‡   
>h,d>h\g       žO   Níì*  e      l    Níì   ¯”L  ­œ,@  ­ð-@  *  ­}d@  ­ŸÀ@      (¼ Â©lh  
­œ,hŒ 
  ¯”   
         *    Wð€ æ¦÷	  ÷	  f ñ÷	t 
ø¥.   &æ  ­}d­ð-*  &  ÷	  ÷	\ ÖÀñ
ø¥E   ø¥e   &æ  ­ŸÀ*  L  ÷	  ÷	  f÷	  Ö—õ€@×õ BÂ`  ­ŸÀ­ð-­œ,*  r ÷õ> Â5 ƒòÃò‚ùò‚ƒ‡ ž  Áå0 Á¥(  ˜ 	 Aþò BôÂ
&æ ÷	  í‡ Ì>ÌÌÌÌÍÌ  ­ŸÀ         O       *  ªgt    ¯”L  þ¬D@      (, ­ËÀh  
  ¯”   
         *    €
 ¶
 ¦æ&¦ðWð€ 6ÿ       ÷	  Vð„ƒ‚   þ¬D
  & Æe
 ‡        ¨ O   Níì*  œg
a    Níì   ¯”L  þ¬D@      (,   ­ÍÀh  ¯”   
         *    € ¶ ¦æ&¦ðWð€ 6õ ÷	  Vð„ƒ‚   þ¬D
  & Æe ‡        ØO   Níì*  ód Œ    Níì   ¯”L  >h,d@  >h\g@  "      (þ¬Dh  ­ohò ¯”   
         *    ƒÆå( €7
ö  ð Àñ·
ê ó€@Añ ð
ø*  & @ø7óÚ ø@ø—ôL>—ó BÁûÁe0 c‚
@ñ ððÐ”*  L B~õ‚
Ð•0 „4 
„
7  ó BAûÁe0 P*  r ÷Ž „á’Áe J—¢9 Ê•0 ¢Š„á*  ˜ €2 6 á      ÷\ Á
Â  ÷	  ƒ÷J ø•-   >h,d*  ¾   Á ÷	  Äí8 ÷	  ø•.   Á ÷	  Ä    >h\g$>h\g*  ä Ä
÷	 Æe( ‡ ø”  Á ÷	  ‡     Ì>ÌÌ  >h\g  
ÌÌÍÌ       Œ O   Níì*  gˆ    Níì   ¯”L  ­ŸÀ@      (   ­}dh  ¯”   
             ø¥    ‡&æ ÷	  ö‡   ­ŸÀ       ˜ O   Níì*  ÿf€W    Níì   ¯”L  ­ŸÀ@      ("   ­ð-h  ¯”   
         &    &
ø¥+   ø¥-   Ž
&æ ÷	  ‡    ­ŸÀ       š O   Níì*  oe`"    Níì   ¯”L  ­ŸÀ@            ($   ­œ,h  ¯”   
         (    ž  Áå0 Á%	 	×p
 C`&æ ÷	  ï‡   "­ŸÀ       þ O   Níì*  §gì    Níì   ¯”L  >h,d@  >h\g@        (` ­ÏÀh  ¯”   
         *    € ¶ ¦æ& Áå 
Â* ÷	    (>h,d*  & Â  ÷	  Ä ƒ 
—v Âe0 ¸  Á ÷	  >h,d  L   
—v „ƒ‚–%‡   >h\g       Ž O   Níì*  âft    Níì   ¯”L  Â©l@      (   ­ÊÀh  ¯”   
             € ¶ ¦ð÷	  >ü VðÖ‡   Â©l        O   Ní      ì*   eà    Níì   ¯”L  >h\g@      (   >h,dh  ¯”   
             Á
æC¸  Á ÷	  Ç~ƒ‡   >h\g       jO   Níì*  Khs:    Níì   ¯”L      (È ;h¸`h  "  Khp:h ­’Æh ­“Æh  ¯”   
         *    &ø6õ
 7ôf &ø6õ
 fø¦ø&ðÀx 
 ð„
   x *  & €ñùó€@ ðó€AAû†Àñô€@†Àñ€õ‚ò*  L Á PõBòÁ
PôüòÄÀñ6ø „–õVõõ‡ É@*  r Ú!¢ÂhÉAÚ!¢ÂhÎ-Ã¿JòÌ7±»¼,†k¦t4¯y¬NâÙ*  ˜ q·¦ƒŽî¸(:<ŒBY†™¼fisª£>ã5­;oS%Àç]-1  ¾ ’òÉ@Ú!¢Âh       â O   Níûå*        Kh$m    Níûå   ¯”L  @h""@      (X   Kh$mh  ­Æh  ¯”   
         *    ¦&øfø¦ø ‚ Áe@ &
&
¦fÀ*  &  õ¶õ @õõùôÀ
ù Aøæe ÷	   ñ6ø  $@h""  L  –õVõõ‚‡        dO   Níßø*  Ëd Œ    Níßø   ¯”L  >h\g@      (t  ý¬Dh  ¯”   
         *    ƒÆå( €
7
X ðÀñ·
LøWö€@Añ ð*  & ‚
7ò@öøWò BWö€@Añ ðÂ
ò Bô· „*  L 4 Äå Ä „
7
ó BAûÁe0 PÂ
Ä*  r ô Ä
’Áe J—¢9 Ê•0 ¢Š—¢9 Ê•1 ·
*  ˜ Ð ÄÊ €2 ø•    Á ÷	  ÷²       ø•-     >h\g*  ¾ ø•    Á ÷	  ƒø”  Á ÷	  Ä
ø•.   Á  >h\g>h\g*  ä  ÷	  Ä
Äø”  Á ÷	  ø•E   Á ÷	  >h\g>h\g*  
  ÄZ Ä
ø•+   ø•-   Á ÷	  
  >h\g$>h\g*  0—r
 Âe0 ¸  Á ÷	  Âå0 ƒ×p
 ÄàÄe0 8‘  >h\g"  V  Á ÷	  Æe( ‡       Ì>ÌÌÌÌÏÌ  >h\g       ¨ O   Ní>ì*  g€˜    Ní>ì   ¯”L  ý¬D@      (,   ­ïÀh  ¯”   
         *    € ¶ ¦æ&¦ðWð€ 6ÿ ÷	  Vð„ƒ‚   ý¬D
  & Æe ‡        ¨ O   Ní>ì*  g„˜    Ní>ì   ¯      ”L  ý¬D@      (,   ­ñÀh  ¯”   
         *    € ¶ ¦æ&¦ðWð€ 6õ ÷	  Vð„ƒ‚   ý¬D
  & Æe ‡        ˆO   NíVò*  9h6}    NíVò   ¯”L      (ð 9h6}h    ­”Æh  ¯”   
         *    &&øfø¦øæø6õ$ 
 ðñ€ñ„
Wõ€@@÷ ðÄ
*  & @ùõ÷õZ Äøñ7÷Z  ð
÷õZ @õ7ò\ ö€@wôT *  L ù€õ òÀ¨ Á Põ@òÁ
PôüBòCôDöÄÁñvø  ¨ *  r $ Öõ–õVõõ„‡ IAÚ!¢ÁhÉ@Ú!¢Áh‰?¢0öô±j*  ˜ @‘
kÁ,›Ý@×³ÂBTe5>ÇÑÀäæ„¾›Æ>Fl.*  ¾ &Åº¾¹+
˜kã>'Ž•'+¿$IÝriœL?ÌÌ”Ì¨ëª¿ªª  ä ªª‚—€@                   šO   NíÞø*  =h€˜    NíÞø   ¯”L  @h""@      (ð   =h€˜h  ­‘Æh  ¯”   
         *    æ&&øfø¦øæø€&  °Ã>‚ °C7‚À  f*  & 0‡À° ¶õ& óÄûBñ ð—ô€@Ä
—ó€BÃû—ù€BÂõ  ° *  L ÃòCõPôÐòÐôÂòõôCöùƒ†òüÀe ø6ø*  r & €& Ä Š„ a6& õ€@æf æg *  ˜ ÷	   ñ6ø& Öõ–õVõõ„ƒ‡ ¸@;ª\)ñ¦Bš‚y  @h""*  ¾ "òl>ð–	ÖÃ×æAÕåã6…@ÃªÌg{H‹@Á•êã×‹˜@ð7  ä Q©¸µ@óù3eÞ       ZO   NíVò*  Dh€W    NíVò   ¯”L  @h""@      (¼   Dh€Wh  ­Æh  ¯”         
         *    &&øfø¦øæø
Àd ¶õ$  ðúÁþÐò—ý  Bõˆö  d *  & PôùBõAòÁ õòÁ
ôüòôôÄòæ*  L h ÷	   ñ6ø$ Öõ–õVõõ„‡ 1@rÑ÷zÏ5@óù3  @h""*  r eÞ-?¸ŒvÞøù9?ÙuÎ¿Mžc?k’A`5»’?IÆ2fÌ?ÌÌ(  ˜ (×ûë*@ªª§ª£	 A    / ±¿rÑ÷zÏÞ?Ø[7©r(       Š O   Nívò*  ×d0M    Nívò   ¯”L      (& ­ôÀh  
  ¯”   
         *    € ö  ð‹ 
ø¥
   ø¥   6
 ‡        ¬ O   Nívò*  Ôf¤!    Nívò   ¯”L  ­ŸÀ@      (0   ­òÀh  ¯”   
         *    € ¦
ø¥
   ø¥         ‚
Â&æ ÷	  &   î‚Ž‡   ­ŸÀ    Bõˆö  d *  & PôùBõAòÁ õòÁ
ôüòôôÄòæ*  L h ÷	   ñ6ø$ Öõ–õVõõ„‡ 1@rÑ÷zÏ5@óù3  @h""*  r eÞ-?¸ŒvÞøù9?ÙuÎ¿Mžc?k’A`5»’?IÆ2fÌ?ÌÌ(  ˜ (×ûë*@ªª§ª£	 A    / ±¿rÑ÷zÏÞ?Ø[7©r(       Š O   Nívò*  ×d0M    Nívò   ¯”L      (& ­ôÀh  
  ¯”   
         *    € ö  ð‹ 
ø¥
   ø¥   6
 ‡                Nívò*  Ôf¤!    Nívò   ¯”L  ­ŸÀ@      (0   ­òÀh  ¯”   
         *    € ¦
ø¥
   ø¥          ”‹8¢_› 8$         ÁXÀM   	 #          @ -       œ d                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        "¸L   3Ð‰ â 6 s ÚB K nBÀv ð #xx ’ ´'e ã.` h ã.¸` V y:	 º y:ˆ‹	 ¬y:xŒ
 nTe `0qX | 0q8	 ¢ >s Œ‹8	 à Œ‹`	 Â‹à~ " ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           â M   ¨À  *  "¸L    ¨À     ¯”L  Š#€Ô@  { È@  *  š©?T@  Â© 2@  ì©*@      (* ô¨kh  
  ¯”   
         *    f÷	  †Â  Á  ÷	  Áe ÁE 
Á
   ì©*Â© 2‚Š#€Ô‚{ Èš©?T  & ý‡        ø M   XÀ  *  3Ð‰    XÀ     ¯”L  ¼[ L@  ô¨dŒ@  *  N©`r@  j¬ÇS@      (F ô¨2zh ¯”   
        *   
ÂòÿB`—   ‚·æÿÀäÿw`àÿ÷	  ÷	  ¼[ L 
&N©`r   *   wÎÿÁ  ÷	  wÄÿ÷m¾ÿ¾ÿ‡   j¬ÇS¼[ Lô¨dŒ       ”M   ÐÀ  *  6 s    ÐÀ           ¯”L  Š#àì@  ?hk@  *  ?hT[@  ?hBx@  { È@  ô¨k@  N©`r@  *  š©?T@  A«-@  A«³-@  ¡«ú‰@  ¹«WŒ@  "  j¬ÇS@      (N ô¨dŒh  ¯”   
         *    w	  ÷	  ‡EÅ Á‹Á  ÷	  Â  
AÑÁ   ¹«WŒ
¡«ú‰?hBxô¨k A«³-$  & B`
ð    7  p‘  AÁ ÷	  w   Á&  
A«-?hT[A«-?hkN©`r j¬ÇS  F   
÷	    { È Š#àì

š©?T       ‚M   €À  *  B K    €À     ¯”L  ?hk@  ?h 2@  *  ?hT[@  ?hBx@  ?hu~@  ô¨k@  ¾©‡@  *  A«-@  A«³-@  ”«/d@  ¹«WŒ@  é«R      @        (P N©`rh  ¯”   
         *    w	  EÅ ÷	  †Á  ÷	  Ä  
BÑÂ„`   ¹«WŒ¾©‡?hBxô¨kA«³-  & p‘  ÷	  ð    7  ð  &  ?hk
”«/dA«-?hT[A«-é«R  <   AÁ ŠÅ Å@aÀe  ‡   ?hu~?h 2       ¢M   €À  *  BÀv    €À     ¯”L  ?hk@  ?h 2@  *  ?hT[@  ?hBx@  ?hu~@  ô¨k@  ¾©‡@  *  A«-@  A«³-@  ”«/d@  ¹«WŒ@  é«R@  "  j¬ëD@      (Z N©`rh  ¯”   
         *    w	  EÅ ÷	  †Á  ÷	  Ä  
BÑÂ„`   ¹«WŒ¾©‡?hBxô¨      kA«³-  & p‘  ÷	  ð    7  ð  &  ?hk
”«/dA«-?hT[A«-é«R"  <   AÁ ŠÅ Å@aÀe  ·
 ·
  ‡   ?hu~?h 2j¬ëD j¬ëD       † M   XÀ  *  #xx    XÀ     ¯”L      ("  ©€h  
  ¯”   
         &    Áe? ÁE? ‡&
fŽŽŽŽŽŽæYÿˆ‡        PM   €À  *  ´'e    €À     ¯”L  ?hk@  ?hT[@  *  ?hu~@  A«-@  A«³-@  é«R@      (N   ¾©‡h  ¯”   
         &    ·
  
·
  À     0
  úBŠÂ À(  é«Ré«RA«-?hT[
?hT[?hu~*  "         Â€`±  ¡ 	À  ±    ¬  ùð"  A«³-A«-?hT[
?hT[$?hk
  H     ‡   é«R?hu~       îM   €À  *  ã.`    €À     ¯”L  3e¤’@  ?hk@  *  ?hcM@  ?hT[@  ?hBx@  ?hóy@  ?hu~@  *  Â© 2@  A«-@  A«³-@  œ«@  ¡«@  *  ¹«WŒ@  j¬/d@      (| ì©*h  ¯”   
         *    w	  fÀ  ÷	  4†Ä  
Ãÿÿ&
D  -(  ¹«WŒÂ© 2¡«A«-?hT[
$?hT[*  &   ù‚ô‹  ö  NñÂ± òµ    ÷	  &  ?hu~
?hcM?hu~ 3e¤’"?hóy(j¬/d(  L Ã   
€Ü  À`
ƒ³          Á  À  ÷	&  A«³-?hk?hT[?hT[ ?hBx$Â© 2  p   Ç–
–
‡   œ«       dM   €À  *  ã.¸`    €À     ¯”L  3e¤’@  ?hk@  *  ?hcM@  ?hT[@  ?hBx@  ?hóy@  ?hu~@  *  Cs:@  C€Q@   ©€@  Â© 2@  Â©Bx@  *  A«-@  A«³-@  œ«@  ¡«@  ¹«WŒ@  *  ð«ò@  j¬/d@      (ž ì©*h  ¯”   
         &    w	  fÀ  ÷	  E†Ã  Â—   	†Á  ÷	&  ¹«WŒÂ© 2¡«ð«òC€Q"Cs:*  "   ‡w`  K`/ËÿÿÄ  
Ãÿÿ&
D  -"   ©€
Â©BxA«-?hT[
$?hT[*  H   ù‚ô‹        ö  NñÂ± òµ    ÷	  &  ?hu~
?hcM?hu~ 3e¤’"?hóy(j¬/d(  n Ã   
€Ü  À`
ƒ³    Á  À  ÷	&  A«³-?hk?hT[?hT[ ?hBx$Â© 2  ’   ¶–
–
‡   œ«       ò M   0À  *  y:    0À     ¯”L  s©À@   ©€@        (h 6ªí8h0 ¯”   
                 A     ?   	   0 *  0 ÂÎÿÂe ÂE ˆ
÷	  æ ÿˆÀ  æ ÿˆ¦   ©€  s©À$   V 
ÊÎÿàbŠå‚‡        ÂM   øÀ  *  y:ˆ‹    øÀ     ¯”L  Å[/d@  ?hBx@  *  ô¨k@  Â© 2@  ª      ¬‰@  A«-@  A«³-@  *  ¹«WŒ@  é«R@  j¬TG@  ±lE@  h±²'@        (l 6ª½;h  ¯”   
         &    w	  ÷   7
  7
  7
  À  
W, &  ¹«WŒª¬‰A«-A«³-é«RÂ© 2  "   ‡Á ÷	  7  Á  ÷	  7(  Å[/d?hBx
ô¨kA«³-?hBxô¨k*  <   Á  	À  0
  æþÿð• # ÷	  ‡Ž
÷	  A«-A«³-j¬TG"h±²'  b   ‡Ž
€‡   ±lE       òM   øÀ  *  y:xŒ    øÀ     ¯”L  Å[/d@  ?hBx@  *  ô¨k@  Â© 2@  ª¬‰@  A«-@  A«³-@  *  ¹«WŒ@  é«R@  ð«ò@  j¬ëD@  j¬TG      @  *  ±lE@  h±²'@      (€ 6ª½;h  ¯”   
         *    w	  w  À  





÷   7
  7
  &  ¹«WŒ
ð«òj¬ëD ª¬‰$A«-(A«³-&  & 7
  À  
W,   ‡Á ÷	  7  Á(  é«R
Â© 2Å[/d?hBx
ô¨k"A«³-*  H   ÷	  7  Á  	À  0
  æþÿð• # ÷	   ?hBxô¨kA«-A«³-j¬TG  n   ‡Ž
÷	  ‡Ž
€‡   h±²'±lE       M   0À  *  Te    0À     ¯”L  3e¤’@  ?hcM@  *  ?hóy@  ¾©‡@  ¹«@      (2 £ªGGh    ¬‡Mh j¬ÇSh  ¯”   
         &    ·        ÷	  ‡°Š  ‡ ·  ÷	  ‡ðŠ  ‡ ·&  ¹«
¾©‡?hcM¹«¾©‡ ?hcM  "   ÷	  ‡ðÕ    ‡   ¹«¾©‡3e¤’?hóy       &M   ¨À  *  0qX    ¨À     ¯”L  Š#hì@  ?hk@  *  ?h 2@  { È@  ”#@  š©?T@  ¹«@  *  j¬TG@  Õ±à@  ª²e;@      (Ì ”«/dh
   j¬/dhF ¯”   
                   *     ·  ÷	v p ð  æ  °  4 Îe °6   ”#¹«  *  . ð• ( ð  ÷	  ÷	d >‡‡ ·  ÷	> p ð   Õ±à¹«*  T   æ  °  4 Îe °6 ð• ( ð  ÷	    
  " (      ª²e;*  z ÷	( ð†ÿ  ä‡‡ 7
pÿwœ  jÿ·
fÿÁe    ?hk(?h 2*    À  ‡ ‡æ æ)ÿˆwŒNÿ	†7Lÿ± 
Á    j¬TG({ È Š#hì

  Æ ÷	  ‡   š©?T       fM   ¨À  *  0q8	    ¨À     ¯”L  Š#hì@  ?hk@  *  ?h 2@  { È@  ”#@  š©?T@  ¹«@  *  j¬TG@  j¬”G@  j¬jH@  Õ±à@  ª²e;@  "      (à ”«/dh
 j¬/dhP ¯”   
                   *     ·  ÷	Š p ð  æ  °  4 Îe °6   ”#¹«  *  . ð• ( ð  ÷	  ÷	x H‡·
 ·
  ‡ ·      Õ±àj¬”G "      j¬”G(¹«*  T ÷	H p ð  æ  °  4 Îe °6 ð• (     *  z ð  ÷	  ÷	2 ð|ÿ  ä‡·
 ·
  ‡    ª²e;j¬jH "j¬jH*    7
\ÿwœ  Vÿ·
RÿÁe  À  ‡ ‡æ æ)ÿˆ  ?hk?h 2j¬TG  Æ wŒ:ÿ	†78ÿ± 
Á  ÷	  ‡   { È Š#hì
š©?T       º M   0À  *  >s    0À     ¯”L  ª¬‰@      (4   ¡«ú‰h  ¯”   
         *    BÁ  ¡ B—  ‚Â
@€`‡ Š ƒ‚
  ª¬‰  & B`·  ¡ ± ‡   ª¬‰       M   ¨À  *  Œ‹`	    ¨À     ¯”L  3e¤’H ”VN@        *      (j ª¬‰h  A«-h A«³-h é«Rh *  j¬TGh ­æQ  ?hkH ?h 2H ?hcMH *  ?hT[H  ?hBxH?hóyH ?hu~H ¯”   
           
 e
  
              2   ,   ,  ÿ  ‚”VN       BM   ¨À  *  Œ‹8	    ¨À     ¯”L  3e¤’H ”VN@  *      (x ª¬‰h  A«-h A«³-h é«Rh *  ð«òh j¬ëDh
 j¬TGh j¬”Gh j¬jHh *  ­æQ  ?hkH ?h 2H ?hcMH ?hT[H  "  ?hBxH?hóyH ?hu~H ¯”   
             
            &         &     :   :     ‚”VN       BM   ¨À  *  ‹à~    ¨À     ¯”L  N©`r@  £ªGG@  *  ¹«@  j¬ÇS@      (\ N©cMh  æ©èŠhB   ®ª=Hh ¯”   
         *    ¦÷	  ÷	  ‚‡ ·  €
÷	  ÷	  ˆ v    N©`r£ªGG¹«N©`r j¬ÇS*  &    ÷	  ÷	  €m ˆ ‡ ¡ `÷	    N©`rj¬ÇS(N©`r  L ± @÷	  ¡ ‡   N©`r   j¬”Gh j¬jHh *  ­æQ  ?hkH ?h 2H ?hcMH ?hT[H  "  ?hBxH?hóyH ?hu~H ¯”   
             
            &             Ì  z› 8$        DIRECTORY MT0:
30-JUN-79 14:47

AUTOSK.BPP          0.         22-JUN-79 00:00
DCL.CMD             1.         22-JUN-79 00:00
DELFRMQUE.CMD       1.         22-JUN-79 00:00
WILDDIR.BAT         1.         22-JUN-79 00:00
WILDDIR.BP2         1.         22-JUN-79 00:00
WILDDIR.B2S         40.        22-JUN-79 00:00
DIALOG.B2S          21.        22-JUN-79 00:00
SBREED.B2S          12.        22-JUN-79 00:00
WILDDIR.ODL         1.         22-JUN-79 00:00
WILDDIR.CMD         1.         22-JUN-79 00:      00
WILDDIR.OBJ         55.        22-JUN-79 00:00
GOTHIC.B2S          11.        22-JUN-79 00:00
GOTHIC.OBJ          22.        22-JUN-79 00:00
GOTHIC.CMD          1.         22-JUN-79 00:00
GOTHIC.ODL          1.         22-JUN-79 00:00
COPYTAPE.B2S        71.        22-JUN-79 00:00
COMGEN.B2S          31.        22-JUN-79 00:00
CPBLP2.B2S          80.        22-JUN-79 00:00
EDBLDCTL.B2S        3.         22-JUN-79 00:00
SYSGEN.B2S          62.        22-JUN-79 00:00
TEMP.B2S            6.               22-JUN-79 00:00
ATSGN1.B2S          45.        22-JUN-79 00:00
COPYFILES.B2S       47.        22-JUN-79 00:00
ATSSUP.B2S          57.        22-JUN-79 00:00
KERGN1.B2S          28.        22-JUN-79 00:00
ATSGN3.B2S          38.        22-JUN-79 00:00
KERZAPMAP.B2S       3.         22-JUN-79 00:00
AUTOZAP.B2S         50.        22-JUN-79 00:00
CHGMAKER.B2S        101.       22-JUN-79 00:00
SGNDEBREG.B2S       2.         22-JUN-79 00:00
CHEKIT.B2S          19.        22-JUN-79 00:00
CPBLP3.B2S                50.        22-JUN-79 00:00
KERGN4.B2S          28.        22-JUN-79 00:00
T27SUP.B2S          22.        22-JUN-79 00:00
RESCOM.B2S          29.        22-JUN-79 00:00
TIMSUP.B2S          22.        22-JUN-79 00:00
SYSCHANGE.B2S       29.        22-JUN-79 00:00
CPBLFILES.B2S       39.        22-JUN-79 00:00
PHSCTLMAP.B2S       3.         22-JUN-79 00:00
SCHMAP.B2S          1.         22-JUN-79 00:00
CPBLP1.B2S          43.        22-JUN-79 00:00
AUTOCM.B2S          12.        22-JUN-79 00:      00
COMSUP.B2S          25.        22-JUN-79 00:00
ATSGEN.B2S          18.        22-JUN-79 00:00
SAVCTLMAP.B2S       1.         22-JUN-79 00:00
DATGEN.B2S          20.        22-JUN-79 00:00
LANSUP.B2S          18.        22-JUN-79 00:00
DLGTXT.B2S          30.        22-JUN-79 00:00
GENLST.B2S          32.        22-JUN-79 00:00
CPBLCOM.B2S         4.         22-JUN-79 00:00
CPBLVIRT.B2S        1.         22-JUN-79 00:00
CPBLDLG.B2S         24.        22-JUN-79 00:00
CHGCTLMAP.B2S       3.               22-JUN-79 00:00
REFER.B2S           23.        22-JUN-79 00:00
SAVEBUILD.B2S       52.        22-JUN-79 00:00
AUTOFF.B2S          32.        22-JUN-79 00:00
CPYCTLMAP.B2S       3.         22-JUN-79 00:00
OCTALF.B2S          7.         22-JUN-79 00:00
KERGN5.B2S          23.        22-JUN-79 00:00
KUTGEN.B2S          23.        22-JUN-79 00:00
TPEGEN.B2S          20.        22-JUN-79 00:00
READMAP.B2S         3.         22-JUN-79 00:00
SGNSET.B2S          29.        22-JUN-79 00:00
ATZCOM.B2S                2.         22-JUN-79 00:00
KERXTR.B2S          22.        22-JUN-79 00:00
SAVTAP.B2S          24.        22-JUN-79 00:00
KERGN2.B2S          36.        22-JUN-79 00:00
KERGN3.B2S          36.        22-JUN-79 00:00
ATSGN2.B2S          30.        22-JUN-79 00:00
KERGN7.B2S          22.        22-JUN-79 00:00
KERGN6.B2S          27.        22-JUN-79 00:00
CHGTAPBLD.B2S       55.        22-JUN-79 00:00
IBMSUP.B2S          26.        22-JUN-79 00:00
KERGEN.B2S          18.        22-JUN-79 00:      00
CPBLMAPS.B2S        2.         22-JUN-79 00:00
CHGPREPBL.B2S       51.        22-JUN-79 00:00
CPBLFLOPN.B2S       3.         22-JUN-79 00:00
RECOVR.B2S          61.        22-JUN-79 00:00
AUTOPS.B2S          3.         22-JUN-79 00:00
AUTOTAB.B2S         17.        22-JUN-79 00:00
GETRECORD.B2S       18.        22-JUN-79 00:00
PUTRECORD.B2S       11.        22-JUN-79 00:00
AUTDEF.B2S          62.        22-JUN-79 00:00
TPTRAC.B2S          96.        22-JUN-79 00:00

TOTAL OF 2103./2103. BLOCK      S IN 84. FILES
          ›r«Æl^› 8$        ;+;			RMS11S.ODL ;		RSX/IAS: NON-INDEXED RMS;;;	THIS ODL FILE BUILDS A 9KB FULLY OVERLAYED RMS PACKAGE. TO;	CONSERVE TASK ADDRESS SPACE, EVERY RMS FUNCTION CALL (E.G. $GET,;	$PUT, $UPDATE, ETC.) FOR EACH FILE ORGANIZATION IS CONTAINED IN;	A SEPARATE OVERLAY. THE INITIAL OVERLAY LOADED FOR A PARTICULAR;	OPERATION MAY, IN TURN, CAUSE THE LOADING OF ONE OR MORE ADDI-;	TIONAL OVERLAYS. THE MORE OVERLAYS LOADED, THE SLOWER THE OVERALL;	PERFORMANCE OF THE TASK. THUS, THE INTENT OF THIS ODL FILE AS;	IT APPEARS HER      E IS SOLELY TO OPTIMIZE FOR SPACE USAGE WITHOUT;	REGARD TO PERFORMANCE.;;	YOU CAN TOTALLY AVOID THE I/O OVERHEAD AND PERFORMANCE PENALTY;	OF AN OVERLAYED TASK STRUCTURE BY TASK-BUILDING WITHOUT AN ODL;	FILE AND THEREBY RUN COMPLETELY UNOVERLAYED. IN THIS INSTANCE,;	THE SPACE WITHIN YOUR TASK REQUIRED BY RMS DEPENDS ENTIRELY;	UPON THE COMBINATION OF FILE ORGANIZATIONS AND FEATURES USED.;	THOSE RMS MODULES REQUIRED BY YOUR PROGRAM WILL BE SELECTIVELY;	LINKED INTO YOUR TASK IMAGE. THE RESULTANT SPACE REQUIRED       BY RMS;	(EXCLUSIVE OF I/O BUFFERS AND CONTROL STRUCTURE STORAGE) WILL RANGE ;	FROM 9KB TO 44KB. THE HIGH FIGURE RESULTS ONLY IN THE UNLIKELY;	CASE OF A PROGRAM WRITTEN TO ACCESS ALL FEATURES AND ALL FILE;	ORGANIZATIONS.;;	TO BUILD YOUR RMS ODL FILE, FOLLOW THE STEPS IN THE INSTRUCTIONS.;	TO ACTIVATE A PARTICULAR INDIVIDUAL FACTOR STATEMENT, SIMPLY;	REMOVE THE SEMI-COLON FROM THE FIRST CHARACTER OF THAT SPECIFIC;	LINE.;;-;****************************************************************************; STEP 0 *	      COMMON: AUTOLOAD VECTORS,TASK IMPURE AREA;*********;RMSCM1:	.FCTR	LB:[1,1]RMSLIB/LB:R0AUTO:R0IMPA;;	GOTO STEP 1;****************************************************************************; STEP 1 *	SELECT RMS-11 ROOT MODULES;*********;;	IF TASK BUILDING WITHOUT THE RMS11 RESIDENT LIBRARY (RSX) OR;	RUN TIME SYSTEM (RSTS/E), GOTO STEP #2. ;;	ELSE, SELECT ONE OF THE FOLLOWING FACTORS, AND REPLACE;	THE TERM RMXXXX(STEP #3) WITH THE NAME OF THE FACTOR CHOSEN.;;	NO INDEX FILE SUPPORT REQUIRED;;RMS11X:	.FCTR	RMSC      M1-RMSREX;;	INDEX FILE SUPPORT REQUIRED;;RMS11X:	.FCTR	RMSCM1-RMSREX-RMSIX0;; 	GOTO STEP 3;****************************************************************************; STEP 2 *	SELECT RMS-11 ROOT MODULES;*********;;	SELECT ONE OF THE FOLLOWING FACTORS, AND REPLACE THE;	TERM RMXXXX(STEP #3) WITH THE NAME OF THE FACTOR CHOSEN.;;	NO INDEX FILE SUPPORT REQUIRED;RM0X0X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC;;	INDEX FILE SUPPORT REQUIRED;;RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0;;	GOTO STEP 3;***      *************************************************************************; STEP 3 *	DECLARE RMS-11 ROOT;*********;;	THE FACTOR  RMSROT  IS REFERENCED IN THE USERS ODL COMMAND;	FILE FOR INCLUSION INTO THE ROOT OF THE USERS TASK.;;	REPLACE THE RMXXXX FACTOR BELOW WITH THE FACTOR SELECTED;	IN STEP 1 OR STEP 2.;RMSROT:	.FCTR	LB:[1,1]RMSLIB/LB:RMSSYM-RM0X0X;;	GOTO STEP 4;****************************************************************************; STEP 4 *	SELECT THE RMS-11 EXECUTIVE;*********;;	IF NOT USING THE       RMS11 RESIDENT LIBRARY(RSX), OR THE RMS11;	RUN-TIME SYSTEM(RSTS/E), GOTO STEP 5.;;	ELSE, SELECT ONE OF THE FOLLOWING TWO FACTORS.;; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.;;RMSREX:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXSY:R0RSES;; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY);;RMSREX:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXEC:R0RSET;;	GOTO STEP 6.;****************************************************************************; STEP 5 *	SELECT THE RMS-11 EXECUTIVE AND COMMON ROOT MODULES;*********;;	THE FOLLOWING FACTORS ARE NEEDED       WHEN TASK BUILDING WITHOUT;	THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME SYSTEM (RSTS/E).;	SELECT ALL THREE.;RMSIO:	.FCTR	LB:[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLKRMSCBL:	.FCTR	LB:[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDATRMSCOM:	.FCTR	LB:[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB;; SELECT ONE OF THE FOLLOWING TWO FACTORS.;; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.;;RMSEXC:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS:R0RMSA;; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY); THESE FACTORS HAVE BEEN CHANGED      (VIS-A-VIS THE ORIGINAL RMS11.ODL); IN ORDER TO CORRECT AN ASYNCHRONOUS I/O PROBLEM.;;RMSEXC:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB:R0RMSA-RMSEX1;RMSEX1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RSEI:R0FSET:R0FSEI:R0IFLF;;	GOTO STEP 6;****************************************************************************; STEP 6 *	SELECT INDEXED BUCKET WRITE/READ MODULES;*********;;	THE FOLLOWING FACTOR IS NEEDED ONLY WHEN INDEXED ORGANIZATION IS;	TO BE SUPPORTED.;;RMSIX0:	.FCTR	LB:[1,1]RMSLIB/LB:R0RLSB:R0GETB;;	GOTO STEP 7;*      ***************************************************************************	.NAME	RMS11	.NAME	RMSFAB	.NAME	RMSRAB	.NAME	RMSCRE	.NAME	RMSCD	.NAME	RMOPIN	.NAME	RMSSEQ	.NAME	RMSREL	.NAME	R2GUPD	.NAME	RMSIDX	.NAME	RMSBMC	.NAME	RMSMIS	.NAME	RMDEXT	.NAME	RMDRLB	.NAME	RMDWTL;****************************************************************************; STEP 7 *	SELECT FILE FUNCTION ROOT MODULES;*********;; IF USING THE ASYNCHRONOUS EXEC, SELECT THE FIRST  RMSFIL  FACTOR-;;RMSFIL:	.FCTR	RMSFAB-RMSFL;;	ELSE SELECT TH      E FOLLOWING  RMSFIL  FACTOR-;RMSFIL:	.FCTR	RMSFAB-LB:[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFL;;	GOTO STEP 8;****************************************************************************;	COMMON MODULES: $CREATE,$OPEN,$DISPLAY,$EXTEND,$CLOSE;;	THE FOLLOWING GROUP OF FACTORS SUPPORT NON-OPTIONAL;	MODULES FOR THE FILE ORIENTED FUNCTIONS. NOTE, THE MODULE  R0INIT;	HAS BEEN MOVED INTO THE  RMSFNM  FACTOR BELOW, FROM THE  RM0XY0;	FACTOR IN STEP 16 FOR PERFORMANCE REASONS.;RMSFL:	.FCTR	LB:[1,1]RMSLIB/LB:R0CLCM-RMF      ILE-RMSFL0RMSFNM:	.FCTR	LB:[1,1]RMSLIB/LB:R0PRFN:R0XPFN:R0MKWA:R0ASLN:R0INIT-RMSFL1RMSDPC:	.FCTR	LB:[1,1]RMSLIB/LB:R0DPYC:R0CKSM-RMSFL1RMSFL1:	.FCTR	LB:[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIORMSCLS:	.FCTR	LB:[1,1]RMSLIB/LB:R1CLOS:R2CLOS-RMSCL0;;****************************************************************************; STEP 8 *	SELECT SOME $OPEN,$CLOSE MODULES;*********;;	SELECT ONE OF THE FOLLOWING TWO RMSCL0 FACTORS-;;	NO INDEX FILE SUPPORT IS REQUIRED;RMSCL0:	.FCTR	LB:[1,1]RMSLIB/LB:R0CKSM-RMEXTD-RMR1RL;;	      INDEX FILE SUPPORT IS REQUIRED;;RMSCL0:	.FCTR	LB:[1,1]RMSLIB/LB:R3CLOS:R0CKSM-RMEXTD-RMR1RL;RMSOPN:	.FCTR	LB:[1,1]RMSLIB/LB:R0OPFL-RMSOP0-RM0XY0;;	GOTO STEP 9;****************************************************************************; STEP 9 *	SELECT SOME $CREATE MODULES;*********;;	SELECT ONE OF THE FOLLOWING TWO RMCRCK FACTORS-;;	NO INDEX FILE SUPPORT REQUIRED;RMCRCK:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRCK:R2CRCK;;	INDEX FILE SUPPORT REQUIRED;;RMCRCK:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCK;RMCREA:	.FCTR	L      B:[1,1]RMSLIB/LB:R0CRFL:R0MFNB:R0RD50-RMSCR2;RMSCR0:	.FCTR	RMSCRE-LB:[1,1]RMSLIB/LB:R0CRXI-RMSCR1;;	GOTO STEP 10;****************************************************************************; STEP 10 *	SELECT COMMON $OPEN,$CREATE, AND DIRECTORY ACCESS MODULES;*********;;	IF RSTS/E, GOTO STEP 11.;; 	ELSE, SELECT THE FOLLOWING 4 FACTORS FOR THE RSX/IAS ENVIRONMENT;RMFILE:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXACRMSOP0:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50RMSCR2:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXCR:R0RXMD:R0RXDIRMSER1      :	.FCTR	LB:[1,1]RMSLIB/LB:R0RXMD-RMSOP0;;	GOTO STEP 12;****************************************************************************; STEP 11 *	SELECT COMMON $OPEN,$CREATE, AND DIRECTORY ACCESS MODULES;**********;; 	IF RSTS/E, SELECT ALL 4 OF THE FOLLOWING FACTORS.;;RMFILE:	.FCTR	LB:[1,1]RMSLIB/LB:R0REOP;RMSOP0:	.FCTR	LB:[1,1]RMSLIB/LB:R0MFNB:R0RD50;RMSCR2:	.FCTR	LB:[1,1]RMSLIB/LB:R0RECR;RMSER1:	.FCTR	RMSOP0;;	GOTO STEP 12;****************************************************************************; STEP 12       *	SELECT IMPLICIT FILE EXTENSION MODULES;**********;;	IF TASK BUILDING WITH THE RMS11 RESIDENT LIBRARY (RSX);	OR RUN TIME SYSTEM (RSTS/E), GOTO STEP 13.;;	ELSE,  THE FOLLOWING THREE FACTORS MUST BE SELECTED.;RMEXTD:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXTDRMR1RL:	.FCTR	LB:[1,1]RMSLIB/LB:R1RLBK:R1NXBKRMR1WL:	.FCTR	LB:[1,1]RMSLIB/LB:R1WTLS;;	GOTO STEP 14;****************************************************************************; STEP 13 *	SELECT IMPLICIT FILE EXTENSION MODULES;**********;;	IF TASK BUILDING WITH THE R      MS11 RESIDENT LIBRARY (RSX) OR;	RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS MUST;	BE SELECTED.;;RMEXTD:	.FCTR	RMDEXT;RMR1RL:	.FCTR	RMDRLB;RMR1WL:	.FCTR	RMDWTL;;	GOTO STEP 14;****************************************************************************; STEP 14 *	DECLARE RMS-11 CO-TREE;**********;;	THE FOLLOWING IS THE STARTING FACTOR FOR DEFINING THE RMS11 CO-TREE.;	THE FACTOR NAME RMSALL IS REFERENCED IN THE USERS ODL.;RMSALL:	.FCTR	RMS11-*(RMSFIL,RMSREC);;	GOTO STEP 15;****************************      ************************************************;	FILE (FAB) FUNCTION OVERLAY STRUCTURE;RMSFL0:	.FCTR	(RMSFNM,RMSDPC,RMSCLS,RMSOPN,RMSCR0,RMSMIC);;****************************************************************************; STEP 15 *	SELECT $EXTEND(EXPLICIT),$ERASE MODULES;**********;	IF THE $EXTEND OR $ERASE FUNCTIONS ARE TO BE SUPPORTED, SELECT;	THE FOLLOWING THREE FACTORS AND ADD RMSMIC AFTER RMSCR0 IN THE;	RMSFL0 FACTOR ABOVE(STEP #14).;RMSMIC:	.FCTR	(RMSERA,RMSEXT);; $ERASE;RMSERA:	.FCTR	LB:[1,1]RMSLI      B/LB:R0ERFL-RMSER1;; $EXTEND;RMSEXT:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXT0:R0CKSM:R2BFMT-RMEXTD-RMSFL1;;	GOTO STEP 16;****************************************************************************; STEP 16 *	SELECT FILE ORGANIZATION DEPENDENT $OPEN MODULES;**********;;	THE FOLLOWING FACTOR (RM0XY0) SELECTS ORGANIZATION DEPENDENT MODULES;	FOR THE $OPEN FUNCTION. AS IS, IT SELECTS THE MODULES FOR ALL;	THREE FILE ORGANIZATIONS. THEY ARE:;	;	R1OPFL			(SEQUENTIAL ORGANIZATION;	R2OPFL			(RELATIVE ORGANIZATION);	R3OPFL AND       R3RPLG	(INDEXED ORGANIZATION);;	IF A PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE;	CORRESPONDING MODULE NAMES MAY BE REMOVED TO SAVE SPACE.;	NOTE- THE MODULE  R0INIT  HAS BEEN REMOVED FROM THE FOLLOWING;	FACTOR AN PUT INTO THE RMSFNM FACTOR AFTER STEP 7.;RM0XY0:	.FCTR	RMOPIN-LB:[1,1]RMSLIB/LB:R0CKSM:R1OPFL:R2OPFL;RM0X30:	.FCTR	LB:[1,1]RMSLIB/LB:R3OPFL:R3RPLG;;	GOTO STEP 17;****************************************************************************; STEP 17 *	SELECT FILE ORGANIZATION DEPENDENT $CREA      TE MODULES;**********;;	THE FOLLOWING FACTOR (RMSCR1) SELECTS THE ORGANIZATION DEPENDENT;	MODULES FOR FILE CREATION, ALONG WITH APPROPRIATE SUPPORTING MODULES.;	AS IS, IT SELECTS THE MODULES FOR ALL THREE ORGANIZATIONS. IF A;	PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE CORRESPONDING;	MODULES MAY BE REMOVED TO SAVE SPACE.;	THE CORRESPONDENCE IS:;;	R1CRFL			(SEQUENTIAL ORGANIZATION);	R2CRFL			(RELATIVE ORGANIZATION);	R3CRFL			(INDEXED ORGANIZATION);;; THE FACTORS FOR THE SUPPORTING MODULES ARE:;;	RMCR      XX			(RELATIVE OR INDEXED);	RM0X21			(RELATIVE ORGANIZATION);	RM0X31			(INDEXED ORGANIZATION);RMSCR1:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRFL:R2CRFL-(RMCRCK,RMCREA,RM0X21);;;RMCRXX:	.FCTR	(RM0X21,RM0X31)RM0X21:	.FCTR	LB:[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM-RMSFL1;RM0X31:	.FCTR	LB:[1,1]RMSLIB/LB:R3WPLG:R0CKSM:R0ALBD-RMEXTD;;	GOTO STEP 18;****************************************************************************; STEP 18 *	SELECT $CONNECT,$DISCONNECT MODULES;**********;RMSCDX:	.FCTR	RMSCD-LB:[1,1]RMSLIB/LB:R1CONP:R2C      ONP-RMSCD0;;	SELECT ONE OF THE FOLLOWING TWO RMSCD0 FACTORS-;;	NO INDEX FILE SUPPORT REQUIRED;RMSCD0:	.FCTR	LB:[1,1]RMSLIB/LB:R1DISC:R2DISC-RMSCD1;;	INDEX FILE SUPPORT REQUIRED;;RMSCD0:	.FCTR	LB:[1,1]RMSLIB/LB:R3CONP:R1DISC:R2DISC:R3DISC-RMSCD1;;	IF THE ASYNCH EXEC WAS CHOSEN IN STEP 5, DELETE  :R0RSEI  FROM;	THE FOLLOWING FACTOR.;RMSCD1:	.FCTR	LB:[1,1]RMSLIB/LB:R0CCLN:R0RSEI:R0ALBS-RMSFL1-RMSCD2RMSCD2:	.FCTR	RMR1RL-RMR1WL-RMEXTD;;	GOTO STEP 19;***************************************************************      *************; STEP 19 *	RMS RECORD (RAB) FUNCTION OVERLAY STRUCTURE;**********;;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) SEPARATED BY;	ODL OVERLAY/CONCATENATION OPERATORS WHICH;	WILL PROVIDE THE REQUIRED FUNCTIONALITY;	RM0X26 ---- RELATIVE FILE RECORD OPERATIONS;	RM0X36 ---- INDEXED FILE RECORD OPERATIONS;	RMSBLK ---- BLOCK IO AND MISC. RECORD OPERATIONS $REWIND,$FREE;			$FLUSH, AND $TRUNCATE;	RMSSQ0 ---- SEQUENTIAL FILE RECORD OPERATIONS;RMSREC:	.FCTR	RMSRAB-(RMSCDX,RMSSQ0,RMSBLK,RM0X26);;	GOTO S      TEP 20;****************************************************************************; STEP 20 * 	RMS RELATIVE FILE RECORD OPERATIONS;**********;;	IF THE RELATIVE FILE SUPPORT IS NOT REQUIRED, GOTO STEP 21,;	ELSE SELECT THE APPROPRIATE FACTORS IN THIS STEP.;; REL: ROOT,$FIND;RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2ARMIO2C:	.FCTR	LB:[1,1]RMSLIB/LB:R2IOCK:R2CALC:R0CKSMRMIO2A:	.FCTR	LB:[1,1]RMSLIB/LB:R2FIND:R2GSET-(RMIO2G,RMIO2P);;	NOTE: TO CONCATENATE ALL RELATIVE FILE RECORD OPERATIONS INTO ONE;	      OVERLAY, CHANGE       THE ABOVE FCTR FROM  -(RMIO2G,RMIO2P)  ;					     TO    -RMIO2G-RMIO2P;; REL: $GET-$UPDATE-$DELETE CONCATENATED INTO ONE OVERLAY;RMIO2G:	.FCTR	R2GUPD-LB:[1,1]RMSLIB/LB:R2GET-RMIO2U-RMIO2D;; REL: $PUT;RMIO2P:	.FCTR	LB:[1,1]RMSLIB/LB:R2PUT:R2PSET-RMIO2HRMIO2H:	.FCTR	LB:[1,1]RMSLIB/LB:R2BFMT:R2EXTD-RMEXTD;; REL: $UPDATE;	IF $PUT AND $UPDATE ARE CONCATENATED INTO ONE OVERLAY, THEN;	DELETE THE  :R2PSET  NAME FROM THE FACTOR BELOW.;RMIO2U:	.FCTR	LB:[1,1]RMSLIB/LB:R2UPDA:R2PSET;; REL: $DELETE;RMIO2D:	.FCTR	LB:[1,      1]RMSLIB/LB:R2DELE;;	GOTO STEP 21;****************************************************************************; STEP 21 * 	RMS INDEXED FILE RECORD OPERATIONS;**********;;	IF INDEXED FILE SUPPORT IS NOT REQUIRED, GOTO STEP 22,;	ELSE SELECT THE APPROPRIATE FACTORS IN THIS STEP.;;	NOTE-THE FOLLOWING FACTORS FROM RMS11.ODL HAVE BEEN REMOVED;	BOTH FOR CLARITY AND FOR PERFORMANCE REASONS:;		RMIO3X,RMOU3J,RMOU3K,RMOU3L,RMOU3N,RMOU3O;; IDX: ROOT;;RM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31;RMIO30:	.FCTR	RMOU3C-RMOU3D-RMOU3E      ;; IDX: $GET-$FIND,$PUT,$UPDATE-$DELETE OVERLAYED WITH EACH OTHER;;RMIO31:	.FCTR	(RMIO3G,RMIO3P,RMIO3U);; IDX: $GET,$FIND;;RMIO3G:	.FCTR	LB:[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3K;RMIN3K:	.FCTR	LB:[1,1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKE;RMIN3S:	.FCTR	LB:[1,1]RMSLIB/LB:R3FRSE:R3POSE:R3POSR:R3FRRV;; IDX: $PUT;;RMIO3P:	.FCTR	LB:[1,1]RMSLIB/LB:R3PUT:R3PSET-(RMOU3Q,RMOU33);RMOU3Q:	.FCTR	(RMOU34,RMOU35,RMOU36,RMOU3P);; IDX: $UPDATE;;RMIO3U:	.FCTR	LB:[1,1]RMSLIB/LB:R3UPDA:R3USET-(RMOU3Q,RMIO3D);; IDX:       $DELETE;;RMIO3D:	.FCTR	LB:[1,1]RMSLIB/LB:R3DELE:R3DSET:R3RPLC:R3SKDL-RMOU33;RMOU33:	.FCTR	LB:[1,1]RMSLIB/LB:R3PIXC:R3FRRV:R3DLSI;; IDX: INSERT USER-DATA RECORD INTO PRIMARY INDEX DATA BUCKET;;RMOU34:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDR-(RMOU3F,RMOU3G,RMOU3A);; IDX: INSERT RECORD POINTER INTO DATA LEVEL OF ALTERNATE KEY;;RMOU35:	.FCTR	LB:[1,1]RMSLIB/LB:R3ISID-(RMOU3H,RMOU3A);; IDX: UPDATE ANY INDEX BUCKET WITH POINTER TO OLD AND SPLIT BUCKETS;;RMOU36:	.FCTR	LB:[1,1]RMSLIB/LB:R3UIDX:R3IKEY-(RMOU3M,RMOU3A);; IDX: A      LLOCATE AND FORMAT NEW BUCKETS;;RMOU3A:	.FCTR	LB:[1,1]RMSLIB/LB:R3ALOC:R3BFMT-RMEXTD;; IDX: ROOT MODULES;;RMOU3C:	.FCTR	LB:[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKT;RMOU3D:	.FCTR	LB:[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KREF;RMOU3E:	.FCTR	LB:[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTR;; IDX: INSERT USER-RECORD INTO DATA BUCKET;;RMOU3F:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDI:R3BSRT:R3IUDC;; IDX: SPLIT USER-DATA BUCKETS, AND UPDATE RRVS;;RMOU3G:	.FCTR	LB:[1,1]RMSLIB/LB:R3BSPL:R3BRRV:R3URRV;; IDX: INSERT       POINTER INTO ALTERNATE KEY DATA BUCKET, SPLIT IF NECESSARY;;RMOU3H:	.FCTR	LB:[1,1]RMSLIB/LB:R3ISDI:R3BSRT:R3SSPL;; IDX: INSERT POINTER INTO INDEX LEVEL BUCKET, SPLIT IF NECESSARY;;RMOU3M:	.FCTR	LB:[1,1]RMSLIB/LB:R3IKYI:R3KSPL:R3ROOT;; IDX: CREATE INITIAL INDEX FOR EACH KEY WHEN REQUIRED;;RMOU3P:	.FCTR	LB:[1,1]RMSLIB/LB:R3MKID-RMOU3A;; 	GOTO STEP 22;****************************************************************************; STEP 22 *	MISC.  FUNCTIONS: $READ,$WRITE,$FREE,$FLUSH,$REWIND,$TRUNCATE;**********      ;; 	IF RMS BLOCK IO OPERATIONS AND MISC RMS11 RECORD OPERATIONS;	ARE NOT REQUIRED, THEN GOTO STEP 23.;;	ELSE, SELECT THE APPROPRIATE FACTORS LISTED BELOW.;	NOTE: THE RMMISC AND LB:[1,1]RMSLIB/LB:R0RWBI TERM ARE INDEPENDENT;	AND IF BLOCK IO IS NOT DESIRED THEN THE...../LB:R0RWBI TERM;	MAY BE DELETED AND IF THE MISC. RECORD OPERATIONS ARE NOT;	DESIRED THEN THE RMMISC TERM MAY BE DELETED;;; BLOCK I/O: $READ,$WRITE;RMSBLK:	.FCTR	RMSBMC-LB:[1,1]RMSLIB/LB:R0RWBI-RMMISC;RMMISC:	.FCTR	RMSMIS-RMMIS0;; MISC: $FREE,$T      RUNCATE;RMMIS0:	.FCTR	LB:[1,1]RMSLIB/LB:R0FREE:R1TRUN-RMMIS1;; MISC: $REWIND;RMMIS1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGTRMWATR:	.FCTR	LB:[1,1]RMSLIB/LB:R0WATR-RMR1WL-RMR1RL-RMEXTD;; MISC: MAG TAPE SUPPORT;RMMAGT:	.FCTR	LB:[1,1]RMSLIB/LB:R0MAGT;;	GOTO STEP 23;****************************************************************************; STEP 23 *	RMS SEQUENTIAL FILE RECORD OPERATIONS;**********;;	IF SEQUENTIAL FILE SUPPORT IS NOT REQUIRED, GOTO STEP 25;;	IF USING RMS11 RESIDENT LIBRARY(RSX), O      R RMS11 RUN-TIME;	SYSTEM(RSTS/E), GOTO STEP 24.;	ELSE SELECT THE APPROPRIATE MODULES IN THIS STEP.;; SEQ: ROOT;RMSSQ0:	.FCTR	RMSSEQ-RMR1RL-RMEXTD-RMSQOP;;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) ETC.;	FOR PERFORMANCE REASONS, CONCATENATE ALL FACTORS WHEN POSSIBLE.;	RMIN10 ---- $GET/$FIND OPERATIONS FOR SEQUENTIAL FILE;	RMOU1P ---- $PUT OPERATION FOR THE SEQUENTIAL FILE;	RMOU1U ----$UPDATE/$DELETE OPERATION FOR THE SEQENTIAL FILE;RMSQOP:	.FCTR	LB:[1,1]RMSLIB/LB:R1WTLS:R1CKEF-(RMIN10,RMOU1P,RMOU1U);;       SEQ: $GET,$FIND;RMIN10:	.FCTR	LB:[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLD;; SEQ: $PUT;RMOU1P:	.FCTR	LB:[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLD;; SEQ: $UPDATE,$DELETE;RMOU1U:	.FCTR	LB:[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE:R1PSET;; NOTE: IF RMOU1U IS CONCATENATED WITH RMOU1P THEN REMOVE ; THE  :R1PSET  NAME FROM THE ABOVE RMOU1U FACTOR.;;	GOTO STEP 25;****************************************************************************; STEP 24 *	RMS SEQUENTIAL FILE RECORD OPERATIONS;**********;;	SEQUENTIAL RECORD OPERATIO   ¶  NS IF LINKING TO RMS11 RESIDENT LIBRARY;	OR RUN-TIME SYSTEM (IE, UPDATE AND DELETE ONLY);;RMSSQ0:	.FCTR	RMSSEQ-LB:[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE;;	GOTO STEP 25;****************************************************************************; STEP 25 *	THE END;**********;;	HAVE YOU DELETED ALL THE SEMICOLONS (;) THAT APPLY TO THE;	FACTORS YOU HAVE SELECTED ?;**************************************************************************** ¶         ›r°Æl^› 8$        ;+;			RMS11X.ODL;		RSX/IAS: ALL RMS ORGANIZATIONS;;;	THIS ODL FILE BUILDS A 9KB FULLY OVERLAYED RMS PACKAGE. TO;	CONSERVE TASK ADDRESS SPACE, EVERY RMS FUNCTION CALL (E.G. $GET,;	$PUT, $UPDATE, ETC.) FOR EACH FILE ORGANIZATION IS CONTAINED IN;	A SEPARATE OVERLAY. THE INITIAL OVERLAY LOADED FOR A PARTICULAR;	OPERATION MAY, IN TURN, CAUSE THE LOADING OF ONE OR MORE ADDI-;	TIONAL OVERLAYS. THE MORE OVERLAYS LOADED, THE SLOWER THE OVERALL;	PERFORMANCE OF THE TASK. THUS, THE INTENT OF THIS ODL FILE AS;	IT APPEAR      S HERE IS SOLELY TO OPTIMIZE FOR SPACE USAGE WITHOUT;	REGARD TO PERFORMANCE.;;	YOU CAN TOTALLY AVOID THE I/O OVERHEAD AND PERFORMANCE PENALTY;	OF AN OVERLAYED TASK STRUCTURE BY TASK-BUILDING WITHOUT AN ODL;	FILE AND THEREBY RUN COMPLETELY UNOVERLAYED. IN THIS INSTANCE,;	THE SPACE WITHIN YOUR TASK REQUIRED BY RMS DEPENDS ENTIRELY;	UPON THE COMBINATION OF FILE ORGANIZATIONS AND FEATURES USED.;	THOSE RMS MODULES REQUIRED BY YOUR PROGRAM WILL BE SELECTIVELY;	LINKED INTO YOUR TASK IMAGE. THE RESULTANT SPACE REQU      IRED BY RMS;	(EXCLUSIVE OF /O BUFFERS AND CONTROL STRUCTURE STORAGE) WILL RANGE ;	FROM 9KB TO 44KB. THE HIGH FIGURE RESULTS ONLY IN THE UNLIKELY;	CASE OF A PROGRAM WRITTEN TO ACCESS ALL FEATURES AND ALL FILE;	ORGANIZATIONS.;;	TO BUILD YOUR RMS ODL FILE, FOLLOW THE STEPS IN THE INSTRUCTIONS.;	TO ACTIVATE A PARTICULAR INDIVIDUAL FACTOR STATEMENT, SIMPLY;	REMOVE THE SEMI-COLON FROM THE FIRST CHARACTER OF THAT SPECIFIC;	LINE.;;-;****************************************************************************; STEP       0 *	COMMON: AUTOLOAD VECTORS,TASK IMPURE AREA;*********;RMSCM1:	.FCTR	LB:[1,1]RMSLIB/LB:R0AUTO:R0IMPA;;	GOTO STEP 1;****************************************************************************; STEP 1 *	SELECT RMS-11 ROOT MODULES;*********;;	IF TASK BUILDING WITHOUT THE RMS11 RESIDENT LIBRARY (RSX) OR;	RUN TIME SYSTEM (RSTS/E), GOTO STEP #2. ;;	ELSE, SELECT ONE OF THE FOLLOWING FACTORS, AND REPLACE;	THE TERM RMXXXX(STEP #3) WITH THE NAME OF THE FACTOR CHOSEN.;;	NO INDEX FILE SUPPORT REQUIRED;;RMS11X:	.FCTR	      RMSCM1-RMSREX;;	INDEX FILE SUPPORT REQUIRED;;RMS11X:	.FCTR	RMSCM1-RMSREX-RMSIX0;; 	GOTO STEP 3;****************************************************************************; STEP 2 *	SELECT RMS-11 ROOT MODULES;*********;;	SELECT ONE OF THE FOLLOWING FACTORS, AND REPLACE THE;	TERM RMXXXX(STEP #3) WITH THE NAME OF THE FACTOR CHOSEN.;;	NO INDEX FILE SUPPORT REQUIRED;;RM0X0X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC;;	INDEX FILE SUPPORT REQUIRED;RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0;;	GOTO STEP 3      ;****************************************************************************; STEP 3 *	DECLARE RMS-11 ROOT;*********;;	THE FACTOR  RMSROT  IS REFERENCED IN THE USERS ODL COMMAND;	FILE FOR INCLUSION INTO THE ROOT OF THE USERS TASK.;;	REPLACE THE RMXXXX FACTOR BELOW WITH THE FACTOR SELECTED;	IN STEP 1 OR STEP 2.;RMSROT:	.FCTR	LB:[1,1]RMSLIB/LB:RMSSYM-RM0X3X;;	GOTO STEP 4;****************************************************************************; STEP 4 *	SELECT THE RMS-11 EXECUTIVE;*********;;	IF NOT USING       THE RMS11 RESIDENT LIBRARY(RSX), OR THE RMS11;	RUN-TIME SYSTEM(RSTS/E), GOTO STEP 5.;;	ELSE, SELECT ONE OF THE FOLLOWING TWO FACTORS.;; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.;;RMSREX:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXSY:R0RSES;; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY);;RMSREX:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXEC:R0RSET;;	GOTO STEP 6.;****************************************************************************; STEP 5 *	SELECT THE RMS-11 EXECUTIVE AND COMMON ROOT MODULES;*********;;	THE FOLLOWING FACTORS ARE NE      EDED WHEN TASK BUILDING WITHOUT;	THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME SYSTEM (RSTS/E).;	SELECT ALL THREE.;RMSIO:	.FCTR	LB:[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLKRMSCBL:	.FCTR	LB:[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDATRMSCOM:	.FCTR	LB:[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB;; SELECT ONE OF THE FOLLOWING TWO FACTORS.;; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.;;RMSEXC:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS:R0RMSA;; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY); THESE FACTORS HAVE BEEN CHA      NGED(VIS-A-VIS THE ORIGINAL RMS11.ODL); IN ORDER TO CORRECT AN ASYNCHRONOUS I/O PROBLEM.;;RMSEXC:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB:R0RMSA-RMSEX1;RMSEX1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RSEI:R0FSET:R0FSEI:R0IFLF;;	GOTO STEP 6;****************************************************************************; STEP 6 *	SELECT INDEXED BUCKET WRITE/READ MODULES;*********;;	THE FOLLOWING FACTOR IS NEEDED ONLY WHEN INDEXED ORGANIZATION IS;	TO BE SUPPORTED.;RMSIX0:	.FCTR	LB:[1,1]RMSLIB/LB:R0RLSB:R0GETB;;	GOTO STEP       7;****************************************************************************	.NAME	RMS11	.NAME	RMSFAB	.NAME	RMSRAB	.NAME	RMSCRE	.NAME	RMSCD	.NAME	RMOPIN	.NAME	RMSSEQ	.NAME	RMSREL	.NAME	R2GUPD	.NAME	RMSIDX	.NAME	RMSBMC	.NAME	RMSMIS	.NAME	RMDEXT	.NAME	RMDRLB	.NAME	RMDWTL;****************************************************************************; STEP 7 *	SELECT FILE FUNCTION ROOT MODULES;*********;; IF USING THE ASYNCHRONOUS EXEC, SELECT THE FIRST  RMSFIL  FACTOR-;;RMSFIL:	.FCTR	RMSFAB-RMSFL;;	ELSE SELECT       THE FOLLOWING  RMSFIL  FACTOR-;RMSFIL:	.FCTR	RMSFAB-LB:[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFL;;	GOTO STEP 8;****************************************************************************;	COMMON MODULES: $CREATE,$OPEN,$DISPLAY,$EXTEND,$CLOSE;;	THE FOLLOWING GROUP OF FACTORS SUPPORT NON-OPTIONAL;	MODULES FOR THE FILE ORIENTED FUNCTIONS. NOTE, THE MODULE  R0INIT;	HAS BEEN MOVED INTO THE  RMSFNM  FACTOR BELOW, FROM THE  RM0XY0;	FACTOR IN STEP 16 FOR PERFORMANCE REASONS.;RMSFL:	.FCTR	LB:[1,1]RMSLIB/LB:R0CLCM-      RMFILE-RMSFL0RMSFNM:	.FCTR	LB:[1,1]RMSLIB/LB:R0PRFN:R0XPFN:R0MKWA:R0ASLN:R0INIT-RMSFL1RMSDPC:	.FCTR	LB:[1,1]RMSLIB/LB:R0DPYC:R0CKSM-RMSFL1RMSFL1:	.FCTR	LB:[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIORMSCLS:	.FCTR	LB:[1,1]RMSLIB/LB:R1CLOS:R2CLOS-RMSCL0;;****************************************************************************; STEP 8 *	SELECT SOME $OPEN,$CLOSE MODULES;*********;;	SELECT ONE OF THE FOLLOWING TWO RMSCL0 FACTORS-;;	NO INDEX FILE SUPPORT IS REQUIRED;;RMSCL0:	.FCTR	LB:[1,1]RMSLIB/LB:R0CKSM-RMEXTD-RMR1R      L;;	INDEX FILE SUPPORT IS REQUIRED;RMSCL0:	.FCTR	LB:[1,1]RMSLIB/LB:R3CLOS:R0CKSM-RMEXTD-RMR1RL;RMSOPN:	.FCTR	LB:[1,1]RMSLIB/LB:R0OPFL-RMSOP0-RM0XY0;;	GOTO STEP 9;****************************************************************************; STEP 9 *	SELECT SOME $CREATE MODULES;*********;;	SELECT ONE OF THE FOLLOWING TWO RMCRCK FACTORS-;;	NO INDEX FILE SUPPORT REQUIRED;;RMCRCK:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRCK:R2CRCK;;	INDEX FILE SUPPORT REQUIRED;RMCRCK:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCK;RMCREA:	.FCT      R	LB:[1,1]RMSLIB/LB:R0CRFL:R0MFNB:R0RD50-RMSCR2;RMSCR0:	.FCTR	RMSCRE-LB:[1,1]RMSLIB/LB:R0CRXI-RMSCR1;;	GOTO STEP 10;****************************************************************************; STEP 10 *	SELECT COMMON $OPEN,$CREATE, AND DIRECTORY ACCESS MODULES;*********;;	IF RSTS/E, GOTO STEP 11.;; 	ELSE, SELECT THE FOLLOWING 4 FACTORS FOR THE RSX/IAS ENVIRONMENT;RMFILE:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXACRMSOP0:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50RMSCR2:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXCR:R0RXMD:R0RXDIRMS      ER1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RXMD-RMSOP0;;	GOTO STEP 12;****************************************************************************; STEP 11 *	SELECT COMMON $OPEN,$CREATE, AND DIRECTORY ACCESS MODULES;**********;; 	IF RSTS/E, SELECT ALL 4 OF THE FOLLOWING FACTORS.;;RMFILE:	.FCTR	LB:[1,1]RMSLIB/LB:R0REOP;RMSOP0:	.FCTR	LB:[1,1]RMSLIB/LB:R0MFNB:R0RD50;RMSCR2:	.FCTR	LB:[1,1]RMSLIB/LB:R0RECR;RMSER1:	.FCTR	RMSOP0;;	GOTO STEP 12;****************************************************************************; STEP       12 *	SELECT IMPLICIT FILE EXTENSION MODULES;**********;;	IF TASK BUILDING WITH THE RMS11 RESIDENT LIBRARY (RSX);	OR RUN TIME SYSTEM (RSTS/E), GOTO STEP 13.;;	ELSE,  THE FOLLOWING THREE FACTORS MUST BE SELECTED.;RMEXTD:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXTDRMR1RL:	.FCTR	LB:[1,1]RMSLIB/LB:R1RLBK:R1NXBKRMR1WL:	.FCTR	LB:[1,1]RMSLIB/LB:R1WTLS;;	GOTO STEP 14;****************************************************************************; STEP 13 *	SELECT IMPLICIT FILE EXTENSION MODULES;**********;;	IF TASK BUILDING WITH TH      E RMS11 RESIDENT LIBRARY (RSX) OR;	RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS MUST;	BE SELECTED.;;RMEXTD:	.FCTR	RMDEXT;RMR1RL:	.FCTR	RMDRLB;RMR1WL:	.FCTR	RMDWTL;;	GOTO STEP 14;****************************************************************************; STEP 14 *	DECLARE RMS-11 CO-TREE;**********;;	THE FOLLOWING IS THE STARTING FACTOR FOR DEFINING THE RMS11 CO-TREE.;	THE FACTOR NAME RMSALL IS REFERENCED IN THE USERS ODL.;RMSALL:	.FCTR	RMS11-*(RMSFIL,RMSREC);;	GOTO STEP 15;*************************      ***************************************************;	FILE (FAB) FUNCTION OVERLAY STRUCTURE;RMSFL0:	.FCTR	(RMSFNM,RMSDPC,RMSCLS,RMSOPN,RMSCR0,RMSMIC);;****************************************************************************; STEP 15 *	SELECT $EXTEND(EXPLICIT),$ERASE MODULES;**********;	IF THE $EXTEND OR $ERASE FUNCTIONS ARE TO BE SUPPORTED, SELECT;	THE FOLLOWING THREE FACTORS AND ADD RMSMIC AFTER RMSCR0 IN THE;	RMSFL0 FACTOR ABOVE(STEP #14).;RMSMIC:	.FCTR	(RMSERA,RMSEXT);; $ERASE;RMSERA:	.FCTR	LB:[1,1]RM      SLIB/LB:R0ERFL-RMSER1;; $EXTEND;RMSEXT:	.FCTR	LB:[1,1]RMSLIB/LB:R0EXT0:R0CKSM:R2BFMT-RMEXTD-RMSFL1;;	GOTO STEP 16;****************************************************************************; STEP 16 *	SELECT FILE ORGANIZATION DEPENDENT $OPEN MODULES;**********;;	THE FOLLOWING FACTOR (RM0XY0) SELECTS ORGANIZATION DEPENDENT MODULES;	FOR THE $OPEN FUNCTION. AS IS, IT SELECTS THE MODULES FOR ALL;	THREE FILE ORGANIZATIONS. THEY ARE:;	;	R1OPFL			(SEQUENTIAL ORGANIZATION;	R2OPFL			(RELATIVE ORGANIZATION);	R3OPFL       AND R3RPLG	(INDEXED ORGANIZATION);;	IF A PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE;	CORRESPONDING MODULE NAMES MAY BE REMOVED TO SAVE SPACE.;	NOTE- THE MODULE  R0INIT  HAS BEEN REMOVED FROM THE FOLLOWING;	FACTOR AN PUT INTO THE RMSFNM FACTOR AFTER STEP 7.;RM0XY0:	.FCTR	RMOPIN-LB:[1,1]RMSLIB/LB:R0CKSM:R1OPFL:R2OPFL-RM0X30RM0X30:	.FCTR	LB:[1,1]RMSLIB/LB:R3OPFL:R3RPLG;;	GOTO STEP 17;****************************************************************************; STEP 17 *	SELECT FILE ORGANIZATION DEPEND      ENT $CREATE MODULES;**********;;	THE FOLLOWING FACTOR (RMSCR1) SELECTS THE ORGANIZATION DEPENDENT;	MODULES FOR FILE CREATION, ALONG WITH APPROPRIATE SUPPORTING MODULES.;	AS IS, IT SELECTS THE MODULES FOR ALL THREE ORGANIZATIONS. IF A;	PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE CORRESPONDING;	MODULES MAY BE REMOVED TO SAVE SPACE.;	THE CORRESPONDENCE IS:;;	R1CRFL			(SEQUENTIAL ORGANIZATION);	R2CRFL			(RELATIVE ORGANIZATION);	R3CRFL			(INDEXED ORGANIZATION);;; THE FACTORS FOR THE SUPPORTING MODULES AR      E:;;	RMCRXX			(RELATIVE OR INDEXED);	RM0X21			(RELATIVE ORGANIZATION);	RM0X31			(INDEXED ORGANIZATION);RMSCR1:	.FCTR	LB:[1,1]RMSLIB/LB:R1CRFL:R2CRFL:R3CRFL-(RMCRCK,RMCREA,RMCRXX);;RMCRXX:	.FCTR	(RM0X21,RM0X31)RM0X21:	.FCTR	LB:[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM-RMSFL1RM0X31:	.FCTR	LB:[1,1]RMSLIB/LB:R3WPLG:R0CKSM:R0ALBD-RMEXTD;;	GOTO STEP 18;****************************************************************************; STEP 18 *	SELECT $CONNECT,$DISCONNECT MODULES;**********;RMSCDX:	.FCTR	RMSCD-LB:[1,1]RMSLIB      /LB:R1CONP:R2CONP-RMSCD0;;	SELECT ONE OF THE FOLLOWING TWO RMSCD0 FACTORS-;;	NO INDEX FILE SUPPORT REQUIRED;;RMSCD0:	.FCTR	LB:[1,1]RMSLIB/LB:R1DISC:R2DISC-RMSCD1;;	INDEX FILE SUPPORT REQUIRED;RMSCD0:	.FCTR	LB:[1,1]RMSLIB/LB:R3CONP:R1DISC:R2DISC:R3DISC-RMSCD1;;	IF THE ASYNCH EXEC WAS CHOSEN IN STEP 5, DELETE  :R0RSEI  FROM;	THE FOLLOWING FACTOR.;RMSCD1:	.FCTR	LB:[1,1]RMSLIB/LB:R0CCLN:R0RSEI:R0ALBS-RMSFL1-RMSCD2RMSCD2:	.FCTR	RMR1RL-RMR1WL-RMEXTD;;	GOTO STEP 19;*************************************************      ***************************; STEP 19 *	RMS RECORD (RAB) FUNCTION OVERLAY STRUCTURE;**********;;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) SEPARATED BY;	ODL OVERLAY/CONCATENATION OPERATORS WHICH;	WILL PROVIDE THE REQUIRED FUNCTIONALITY;	RM0X26 ---- RELATIVE FILE RECORD OPERATIONS;	RM0X36 ---- INDEXED FILE RECORD OPERATIONS;	RMSBLK ---- BLOCK IO AND MISC. RECORD OPERATIONS $REWIND,$FREE;			$FLUSH, AND $TRUNCATE;	RMSSQ0 ---- SEQUENTIAL FILE RECORD OPERATIONS;RMSREC:	.FCTR	RMSRAB-(RMSCDX,RMSSQ0,RMSBLK,RM      0X26,RM0X36);;	GOTO STEP 20;****************************************************************************; STEP 20 * 	RMS RELATIVE FILE RECORD OPERATIONS;**********;;	IF THE RELATIVE FILE SUPPORT IS NOT REQUIRED, GOTO STEP 21,;	ELSE SELECT THE APPROPRIATE FACTORS IN THIS STEP.;; REL: ROOT,$FIND;RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2ARMIO2C:	.FCTR	LB:[1,1]RMSLIB/LB:R2IOCK:R2CALC:R0CKSMRMIO2A:	.FCTR	LB:[1,1]RMSLIB/LB:R2FIND:R2GSET-RMIO2G-RMIO2P;;	NOTE: TO CONCATENATE ALL RELATIVE FILE RECORD OPERATIONS INTO ONE;	            OVERLAY, CHANGE THE ABOVE FCTR FROM  -(RMIO2G,RMIO2P)  ;					     TO    -RMIO2G-RMIO2P;; REL: $GET-$UPDATE-$DELETE CONCATENATED INTO ONE OVERLAY;RMIO2G:	.FCTR	R2GUPD-LB:[1,1]RMSLIB/LB:R2GET-RMIO2U-RMIO2D;; REL: $PUT;RMIO2P:	.FCTR	LB:[1,1]RMSLIB/LB:R2PUT:R2PSET-RMIO2HRMIO2H:	.FCTR	LB:[1,1]RMSLIB/LB:R2BFMT:R2EXTD-RMEXTD;; REL: $UPDATE;	IF $PUT AND $UPDATE ARE CONCATENATED INTO ONE OVERLAY, THEN;	DELETE THE  :R2PSET  NAME FROM THE FACTOR BELOW.;RMIO2U:	.FCTR	LB:[1,1]RMSLIB/LB:R2UPDA;; REL: $DELETE;RMIO2D:	      .FCTR	LB:[1,1]RMSLIB/LB:R2DELE;;	GOTO STEP 21;****************************************************************************; STEP 21 * 	RMS INDEXED FILE RECORD OPERATIONS;**********;;	IF INDEXED FILE SUPPORT IS NOT REQUIRED, GOTO STEP 22,;	ELSE SELECT THE APPROPRIATE FACTORS IN THIS STEP.;;	NOTE-THE FOLLOWING FACTORS FROM RMS11.ODL HAVE BEEN REMOVED;	BOTH FOR CLARITY AND FOR PERFORMANCE REASONS:;		RMIO3X,RMOU3J,RMOU3K,RMOU3L,RMOU3N,RMOU3O;; IDX: ROOT;RM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31RMIO30:	.FCTR	RMOU3C-RMO      U3D-RMOU3E;; IDX: $GET-$FIND,$PUT,$UPDATE-$DELETE OVERLAYED WITH EACH OTHER;RMIO31:	.FCTR	(RMIO3G,RMIO3P,RMIO3U);; IDX: $GET,$FIND;RMIO3G:	.FCTR	LB:[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3KRMIN3K:	.FCTR	LB:[1,1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKERMIN3S:	.FCTR	LB:[1,1]RMSLIB/LB:R3FRSE:R3POSE:R3POSR:R3FRRV;; IDX: $PUT;RMIO3P:	.FCTR	LB:[1,1]RMSLIB/LB:R3PUT:R3PSET-(RMOU3Q,RMOU33)RMOU3Q:	.FCTR	(RMOU34,RMOU35,RMOU36,RMOU3P);; IDX: $UPDATE;RMIO3U:	.FCTR	LB:[1,1]RMSLIB/LB:R3UPDA:R3USET-(RMOU3Q,RMIO3D);; ID      X: $DELETE;RMIO3D:	.FCTR	LB:[1,1]RMSLIB/LB:R3DELE:R3DSET:R3RPLC:R3SKDL-RMOU33RMOU33:	.FCTR	LB:[1,1]RMSLIB/LB:R3PIXC:R3FRRV:R3DLSI;; IDX: INSERT USER-DATA RECORD INTO PRIMARY INDEX DATA BUCKET;RMOU34:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDR-(RMOU3F,RMOU3G,RMOU3A);; IDX: INSERT RECORD POINTER INTO DATA LEVEL OF ALTERNATE KEY;RMOU35:	.FCTR	LB:[1,1]RMSLIB/LB:R3ISID-(RMOU3H,RMOU3A);; IDX: UPDATE ANY INDEX BUCKET WITH POINTER TO OLD AND SPLIT BUCKETS;RMOU36:	.FCTR	LB:[1,1]RMSLIB/LB:R3UIDX:R3IKEY-(RMOU3M,RMOU3A);; IDX: ALL      OCATE AND FORMAT NEW BUCKETS;RMOU3A:	.FCTR	LB:[1,1]RMSLIB/LB:R3ALOC:R3BFMT-RMEXTD;; IDX: ROOT MODULES;RMOU3C:	.FCTR	LB:[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKTRMOU3D:	.FCTR	LB:[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KREFRMOU3E:	.FCTR	LB:[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTR;; IDX: INSERT USER-RECORD INTO DATA BUCKET;RMOU3F:	.FCTR	LB:[1,1]RMSLIB/LB:R3IUDI:R3BSRT:R3IUDC;; IDX: SPLIT USER-DATA BUCKETS, AND UPDATE RRVS;RMOU3G:	.FCTR	LB:[1,1]RMSLIB/LB:R3BSPL:R3BRRV:R3URRV;; IDX: INSERT POINTER       INTO ALTERNATE KEY DATA BUCKET, SPLIT IF NECESSARY;RMOU3H:	.FCTR	LB:[1,1]RMSLIB/LB:R3ISDI:R3BSRT:R3SSPL;; IDX: INSERT POINTER INTO INDEX LEVEL BUCKET, SPLIT IF NECESSARY;RMOU3M:	.FCTR	LB:[1,1]RMSLIB/LB:R3IKYI:R3KSPL:R3ROOT;; IDX: CREATE INITIAL INDEX FOR EACH KEY WHEN REQUIRED;RMOU3P:	.FCTR	LB:[1,1]RMSLIB/LB:R3MKID-RMOU3A;; 	GOTO STEP 22;****************************************************************************; STEP 22 *	MISC.  FUNCTIONS: $READ,$WRITE,$FREE,$FLUSH,$REWIND,$TRUNCATE;**********;; 	IF RMS       BLOCK IO OPERATIONS AND MISC RMS11 RECORD OPERATIONS;	ARE NOT REQUIRED, THEN GOTO STEP 23.;;	ELSE, SELECT THE APPROPRIATE FACTORS LISTED BELOW.;	NOTE: THE RMMISC AND LB:[1,1]RMSLIB/LB:R0RWBI TERM ARE INDEPENDENT;	AND IF BLOCK IO IS NOT DESIRED THEN THE...../LB:R0RWBI TERM;	MAY BE DELETED AND IF THE MISC. RECORD OPERATIONS ARE NOT;	DESIRED THEN THE RMMISC TERM MAY BE DELETED;;; BLOCK I/O: $READ,$WRITE;RMSBLK:	.FCTR	RMSBMC-LB:[1,1]RMSLIB/LB:R0RWBI-RMMISC;RMMISC:	.FCTR	RMSMIS-RMMIS0;; MISC: $FREE,$TRUNCATE;RMM      IS0:	.FCTR	LB:[1,1]RMSLIB/LB:R0FREE:R1TRUN-RMMIS1;; MISC: $REWIND;RMMIS1:	.FCTR	LB:[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGTRMWATR:	.FCTR	LB:[1,1]RMSLIB/LB:R0WATR-RMR1WL-RMR1RL-RMEXTD;; MISC: MAG TAPE SUPPORT;RMMAGT:	.FCTR	LB:[1,1]RMSLIB/LB:R0MAGT;;	GOTO STEP 23;****************************************************************************; STEP 23 *	RMS SEQUENTIAL FILE RECORD OPERATIONS;**********;;	IF SEQUENTIAL FILE SUPPORT IS NOT REQUIRED, GOTO STEP 25;;	IF USING RMS11 RESIDENT LIBRARY(RSX), OR RMS11 RUN      -TIME;	SYSTEM(RSTS/E), GOTO STEP 24.;	ELSE SELECT THE APPROPRIATE MODULES IN THIS STEP.;; SEQ: ROOT;RMSSQ0:	.FCTR	RMSSEQ-RMR1RL-RMEXTD-RMSQOP;;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) ETC.;	FOR PERFORMANCE REASONS, CONCATENATE ALL FACTORS WHEN POSSIBLE.;	RMIN10 ---- $GET/$FIND OPERATIONS FOR SEQUENTIAL FILE;	RMOU1P ---- $PUT OPERATION FOR THE SEQUENTIAL FILE;	RMOU1U ----$UPDATE/$DELETE OPERATION FOR THE SEQENTIAL FILE;RMSQOP:	.FCTR	LB:[1,1]RMSLIB/LB:R1WTLS:R1CKEF-RMIN10-RMOU1P-RMOU1U;; SEQ: $GET,$F      IND;RMIN10:	.FCTR	LB:[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLD;; SEQ: $PUT;RMOU1P:	.FCTR	LB:[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLD;; SEQ: $UPDATE,$DELETE;RMOU1U:	.FCTR	LB:[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE;; NOTE: IF RMOU1U IS CONCATENATED WITH RMOU1P THEN REMOVE ; THE  :R1PSET  NAME FROM THE ABOVE RMOU1U FACTOR.;;	GOTO STEP 25;****************************************************************************; STEP 24 *	RMS SEQUENTIAL FILE RECORD OPERATIONS;**********;;	SEQUENTIAL RECORD OPERATIONS IF LINKING TO RMS   ¢  11 RESIDENT LIBRARY;	OR RUN-TIME SYSTEM (IE, UPDATE AND DELETE ONLY);;RMSSQ0:	.FCTR	RMSSEQ-LB:[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE;;	GOTO STEP 25;****************************************************************************; STEP 25 *	THE END;**********;;	HAVE YOU DELETED ALL THE SEMICOLONS (;) THAT APPLY TO THE;	FACTORS YOU HAVE SELECTED ?;**************************************************************************** ¢         ãWjL (› 8$         ÁXÀO    -     Á 
  ä   `%  \9 ¤                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ¯ˆw! 2 a'¸.! 2 t'=†3 Ð›,0À! 2 L;è€! 2 ;d;d! 2 9h6} € ;h¸` € =h€˜  >h,d ð>h\g! 2 @h""! 2 Dh€W ¢Khp: € Kh$m êë¨€»3 Ðë¨ÀÁ3 Ðë¨ È3 Ðë¨@Î3 ÐÀ©y3 ÐÀ©Ñ3 ÐÂ©l èý¬D Ì þ¬D Î ­œ, Ê­o Î 
­œ, è­ð- 2­}d ¦ ­NÀ! 2 ­OÀ! 2 ­RÀ! 2 ­TÀ! 2 ­UÀ! 2 ­|À! 2 ­}À! 2 ­žÀ! 2 ­ŸÀ! 2 ­ À! 2 ­¡À! 2 ­¢À! 2 ­£À! 2 ­¥À J­§À – ­ÆÀ   ­ÇÀ æ ­ÊÀ b­ËÀ †­ÌÀ  ­ÍÀ & ­ÏÀ d ­ïÀ 0­ñÀ Ø­òÀ  †­óÀ <­ôÀ  ü ­Æ ê­Æ ¢­‘Æ  ­’Æ € ­“Æ € ­”Æ € E°Ü! 2 ÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ³%@3 Ð;djL! 2 Ëd Œ Ì ×d0M  ü ód Œ Î  eà ðel èoe`" ÊÔf¤!  †Ôf
a  Ùf§Z   âft bÿf€W 2gˆ ¦ šg$` – œg
a & g®_ <g€˜ 0g„˜ Ø¡g§Z æ §gì d ªgt †«g× J9h6} € =h€˜  Dh€W ¢Khs: € Kh$m êÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ          <O   Oí¼Æ*  ;djL    Oí¼Æ   ¯”L  <&@  a'¸.H *  ô' q@  ô'¤’@  $9ž!@  ´:òs@  ´:2“@  *  L;è€H T;@  >h,d@  öt	@  :©@  *  s©À@  „¯½`@  ù¯üX@  °úp@  ° }@  *  h±p!@  •± }@      (*¯ˆwhÄ›,0Àhž*  >h\gh"@h""hZ­NÀh  ­OÀhà ­RÀhî *  ­TÀh$­UÀhb­|Àh|­}Àh ­žÀhÄ*  ­ŸÀhô­ Àh­¡Àht­¢Àhä­£Àh*  ­­lŠ E°Üh ;d;dl ;d;dh  þ¬¯yìP

  ¯”   
   ­­        @     8 
         *    „æ¶ÿˆÀ  .Á¸‚Âå  
Rƒ
† W¤          ¶s©À¸*  & À
ûÉ•  † Rüñ•  ÿÿÀ
W¢  É•  À
*  L ñ
÷Rƒ
ãÆå  æƒæÂå  ¦&
&
&
&
*  r &
…÷	  Á fæ?ÿˆB Âå Âå w  ‘   
ù¯üX­­ "­­ &­­  *  ˜ IÑe 
Âå ‘Â4 
‚~Ã ËÓe
 ÓÓ
  ;d;d *  ¾  Ó 
ÃËÓe
 Ó Ó Ó 
L À   ;d;d(;d;d *  ä ÷	âæ3ÿˆ€ €
ÀE Á  1  ‚1à 
  ­­  *  
v  1` ‡ 6
 æ ÷	8‡ ¦æÁ  C
  $­­  *  0À   Â ƒ‹Óe SËå ‰æ*  V	 ÷	þƒ‚‡ À  H ‡ æ
 ÷	à‡ 
        ­­  *  | ¶ @HÐe
 Ð 


‡    €*  ¢ ¶ ÁAš·Jæƒ ¶ ð‹ ÷	  š*  Èp 7
N7
N7
NÁ×¢: 
w<ÂBà‚
·0*  îÁ
×¢] 
w&ÂBà‚
·Á

ó‹ *  wÂBà‚
·ƒ
Ë‹Ùð Ãã× 
   (*  :ûË‹
Ãe
 Ãð æ ÷	3 3 *  `ðµ  ó’ &Àð•  # ÷	  €†0Š ðÅ  ô'¤’h±p!*  †  æ ÷	È&Àð•  # ÷	  €†ð•    ô' qh±p!*  ¬ë0Š ðµ  ÷	ˆ ƒ‚‡ € Žð‹ ÷	*  Ò¦ðµ  &  ÷	  €‡ 0Š 0
 ú€   „¯½`*        ø¶ ¦æð‹ H`pà 0,  Áe
 *  H 
‘”Â~ ÷	 æ ÷	ƒ‚*  D‡ 
ðµ  -ðµ  1Á`æÂ Âà &*  jÀp ° ÷	  €‡ð  òóµ   l   ° } <&*  Ñ•
 °
 ƒl ð ð•  ‡ ó¥  * Â0
  "$9ž!*  ¶ ï÷  > 7œ : 7> 7 : æüÿˆ÷%  8   
´:òs ü&$9ž!*  Üã÷%  0 ð,  ø•   ð  ‡      T;&´:òs*                   € ¶ ð‹ !
  
*  (fðµ   ñµ   ø¥
   ÷	0   <&*  NH`l p l W  ÷	 ‡ æ       ÷	è ‡ *  t€ Žðµ  ð ðµ  &f 1*  š  Áe
   p ÷	  €Èe
 0
 ‡   •± }*  À÷  8ÿ7œ 4ÿ&Îe
 ·2ÿ7 .ÿæüÿˆè€  ´:2“"ü*  æ ¶ ðµ  ž  &æ ÷	òý&æ ÷	*  æýž  ‡ € ¶ —­ 
 ðµ  ø•   *  2Á ÷	èþ¸   Á ÷	ÚþŽÂ  Á
÷	  ‚  &>h,d*  X‡  ŽÀ°¦
÷	  ‚Àå7”þ÷Œþ÷  °:©$*  ~ ~þ÷  vþæüÿˆ‡ 
PASCAL RUN-TIME ER  
´:2“ü  ¤ROR NUMBER:       )               |Ü<œ    |Ü<      œ‚öt	 .  .ü
  ü ,  ,    >  >   @  @     ?  ?    ‚ô'¤’ D  D     H  H    |  |    ‚öt	 Ž  Žü
  ü Œ  Œ    ž  ž             Ÿ  Ÿ    ‚ô'¤’ ¤  ¤     ¨  ¨	   Ü  Ü    ‚öt	 î  îü
  ü ì  ì    þ  þ            ÿ  ÿ N  ‚ô'¤’         R   <  <    ‚öt	 N  Nü
  ü L  L    ^        ^t   `  `     _  _   ‚ô'¤’ d  d    h  h   œ  œ    ‚öt	 ®  ®ü
  ü ¬  ¬    ¾  ¾t   À  À     ¿  ¿   ‚ô'¤’ Ä  Ä    È  È   ü  ü         ;dô       SY                     Ì O   NíOò*  g®_    NíOò   ¯”L  a'¸.@  L;è€@  "  >h\g@      (* ­óÀh  ¯”   
         *    € Žðµ    ø•   Á ÷	  ø•
   Á   L;è€a'¸.>h\g  & w           >h\g       Ž O   Níì*  Ôf
a    Níì   ¯”L  Â©l@      (   ­ÌÀh  ¯”   
             € ¶ ¦ð÷	  >ø VðÖ‡   Â©l       ´ O   Níì*  šg$`    Níì   ¯”L  ­¥À@      (0   ­§Àh  ¯”   
         *    ¦¶  ö  ö ö&  ö+  w     & "+ (­¥À  & TRUE FALSE       Ö O   Níì*  «g×    Níì   ¯”L  >h,d@  >h\g@        (L ­¥Àh  ¯”   
         *    € ¶ ÎŽ Ží ¶c  æC¸Ÿ*  &    ¶
 Á ÷	  Ê~ƒ–%¦      Â  ÷	  ‚‡   >h\g$>h,d       Æ O   Níì*  Ùf§Z    Níì   ¯”L  ­œ,@  ­ð-@  "  ­}d@      (. ­ÆÀh  ¯”   
         *    € ¶ ¦æB÷	  ÷	  f
÷	  Ö  ­}d­ð-"­œ,  & Êƒ‚‡        O   Níì*  ¡g§Z    Níì   ¯”L  >h,d@  >h\g@        (r ­ÇÀh  ¯”   
         *    € ¶ ¦æÆå ‚ ƒ
—r
 Ãe0 *  & áÂ÷ö á•- ƒ
 ‚Âe Bàf¦ƒàÂ•*  L   Á÷	  ƒ‚¸”  Á ÷	  Ç~Æe ƒ‚–%‡   
>h,d>h\g       žO   Níì*  e      l    Níì   ¯”L  ­œ,@  ­ð-@  *  ­}d@  ­ŸÀ@      (¼ Â©lh  
­œ,hŒ 
  ¯”   
         *    Wð€ æ¦÷	  ÷	  f ñ÷	t 
ø¥.   &æ  ­}d­ð-*  &  ÷	  ÷	\ ÖÀñ
ø¥E   ø¥e   &æ  ­ŸÀ*  L  ÷	  ÷	  f÷	  Ö—õ€@×õ BÂ`  ­ŸÀ­ð-­œ,*  r ÷õ> Â5 ƒòÃò‚ùò‚ƒ‡ ž  Áå0 Á¥(  ˜ 	 Aþò BôÂ
&æ ÷	  í‡ Ì>ÌÌÌÌÍÌ  ­ŸÀ         O       *  ªgt    ¯”L  þ¬D@      (, ­ËÀh  
  ¯”   
         *    €
 ¶
 ¦æ&¦ðWð€ 6ÿ       ÷	  Vð„ƒ‚   þ¬D
  & Æe
 ‡        ¨ O   Níì*  œg
a    Níì   ¯”L  þ¬D@      (,   ­ÍÀh  ¯”   
         *    € ¶ ¦æ&¦ðWð€ 6õ ÷	  Vð„ƒ‚   þ¬D
  & Æe ‡        ØO   Níì*  ód Œ    Níì   ¯”L  >h,d@  >h\g@  "      (þ¬Dh  ­ohò ¯”   
         *    ƒÆå( €7
ö  ð Àñ·
ê ó€@Añ ð
ø*  & @ø7óÚ ø@ø—ôL>—ó BÁûÁe0 c‚
@ñ ððÐ”*  L B~õ‚
Ð•0 „4 
„
7  ó BAûÁe0 P*  r ÷Ž „á’Áe J—¢9 Ê•0 ¢Š„á*  ˜ €2 6 á      ÷\ Á
Â  ÷	  ƒ÷J ø•-   >h,d*  ¾   Á ÷	  Äí8 ÷	  ø•.   Á ÷	  Ä    >h\g$>h\g*  ä Ä
÷	 Æe( ‡ ø”  Á ÷	  ‡     Ì>ÌÌ  >h\g  
ÌÌÍÌ       Œ O   Níì*  gˆ    Níì   ¯”L  ­ŸÀ@      (   ­}dh  ¯”   
             ø¥    ‡&æ ÷	  ö‡   ­ŸÀ       ˜ O   Níì*  ÿf€W    Níì   ¯”L  ­ŸÀ@      ("   ­ð-h  ¯”   
         &    &
ø¥+   ø¥-   Ž
&æ ÷	  ‡    ­ŸÀ       š O   Níì*  oe`"    Níì   ¯”L  ­ŸÀ@            ($   ­œ,h  ¯”   
         (    ž  Áå0 Á%	 	×p
 C`&æ ÷	  ï‡   "­ŸÀ       þ O   Níì*  §gì    Níì   ¯”L  >h,d@  >h\g@        (` ­ÏÀh  ¯”   
         *    € ¶ ¦æ& Áå 
Â* ÷	    (>h,d*  & Â  ÷	  Ä ƒ 
—v Âe0 ¸  Á ÷	  >h,d  L   
—v „ƒ‚–%‡   >h\g       Ž O   Níì*  âft    Níì   ¯”L  Â©l@      (   ­ÊÀh  ¯”   
             € ¶ ¦ð÷	  >ü VðÖ‡   Â©l        O   Ní      ì*   eà    Níì   ¯”L  >h\g@      (   >h,dh  ¯”   
             Á
æC¸  Á ÷	  Ç~ƒ‡   >h\g       jO   Níì*  Khs:    Níì   ¯”L      (È ;h¸`h  "  Khp:h ­’Æh ­“Æh  ¯”   
         *    &ø6õ
 7ôf &ø6õ
 fø¦ø&ðÀx 
 ð„
   x *  & €ñùó€@ ðó€AAû†Àñô€@†Àñ€õ‚ò*  L Á PõBòÁ
PôüòÄÀñ6ø „–õVõõ‡ É@*  r Ú!¢ÂhÉAÚ!¢ÂhÎ-Ã¿JòÌ7±»¼,†k¦t4¯y¬NâÙ*  ˜ q·¦ƒŽî¸(:<ŒBY†™¼fisª£>ã5­;oS%Àç]-1  ¾ ’òÉ@Ú!¢Âh       â O   Níûå*        Kh$m    Níûå   ¯”L  @h""@      (X   Kh$mh  ­Æh  ¯”   
         *    ¦&øfø¦ø ‚ Áe@ &
&
¦fÀ*  &  õ¶õ @õõùôÀ
ù Aøæe ÷	   ñ6ø  $@h""  L  –õVõõ‚‡        dO   Níßø*  Ëd Œ    Níßø   ¯”L  >h\g@      (t  ý¬Dh  ¯”   
         *    ƒÆå( €
7
X ðÀñ·
LøWö€@Añ ð*  & ‚
7ò@öøWò BWö€@Añ ðÂ
ò Bô· „*  L 4 Äå Ä „
7
ó BAûÁe0 PÂ
Ä*  r ô Ä
’Áe J—¢9 Ê•0 ¢Š—¢9 Ê•1 ·
*  ˜ Ð ÄÊ €2 ø•    Á ÷	  ÷²       ø•-     >h\g*  ¾ ø•    Á ÷	  ƒø”  Á ÷	  Ä
ø•.   Á  >h\g>h\g*  ä  ÷	  Ä
Äø”  Á ÷	  ø•E   Á ÷	  >h\g>h\g*  
  ÄZ Ä
ø•+   ø•-   Á ÷	  
  >h\g$>h\g*  0—r
 Âe0 ¸  Á ÷	  Âå0 ƒ×p
 ÄàÄe0 8‘  >h\g"  V  Á ÷	  Æe( ‡       Ì>ÌÌÌÌÏÌ  >h\g       ¨ O   Ní>ì*  g€˜    Ní>ì   ¯”L  ý¬D@      (,   ­ïÀh  ¯”   
         *    € ¶ ¦æ&¦ðWð€ 6ÿ ÷	  Vð„ƒ‚   ý¬D
  & Æe ‡        ¨ O   Ní>ì*  g„˜    Ní>ì   ¯      ”L  ý¬D@      (,   ­ñÀh  ¯”   
         *    € ¶ ¦æ&¦ðWð€ 6õ ÷	  Vð„ƒ‚   ý¬D
  & Æe ‡        ˆO   NíVò*  9h6}    NíVò   ¯”L      (ð 9h6}h    ­”Æh  ¯”   
         *    &&øfø¦øæø6õ$ 
 ðñ€ñ„
Wõ€@@÷ ðÄ
*  & @ùõ÷õZ Äøñ7÷Z  ð
÷õZ @õ7ò\ ö€@wôT *  L ù€õ òÀ¨ Á Põ@òÁ
PôüBòCôDöÄÁñvø  ¨ *  r $ Öõ–õVõõ„‡ IAÚ!¢ÁhÉ@Ú!¢Áh‰?¢0öô±j*  ˜ @‘
kÁ,›Ý@×³ÂBTe5>ÇÑÀäæ„¾›Æ>Fl.*  ¾ &Åº¾¹+
˜kã>'Ž•'+¿$IÝriœL?ÌÌ”Ì¨ëª¿ªª  ä ªª‚—€@                   šO   NíÞø*  =h€˜    NíÞø   ¯”L  @h""@      (ð   =h€˜h  ­‘Æh  ¯”   
         *    æ&&øfø¦øæø€&  °Ã>‚ °C7‚À  f*  & 0‡À° ¶õ& óÄûBñ ð—ô€@Ä
—ó€BÃû—ù€BÂõ  ° *  L ÃòCõPôÐòÐôÂòõôCöùƒ†òüÀe ø6ø*  r & €& Ä Š„ a6& õ€@æf æg *  ˜ ÷	   ñ6ø& Öõ–õVõõ„ƒ‡ ¸@;ª\)ñ¦Bš‚y  @h""*  ¾ "òl>ð–	ÖÃ×æAÕåã6…@ÃªÌg{H‹@Á•êã×‹˜@ð7  ä Q©¸µ@óù3eÞ       ZO   NíVò*  Dh€W    NíVò   ¯”L  @h""@      (¼   Dh€Wh  ­Æh  ¯”         
         *    &&øfø¦øæø
Àd ¶õ$  ðúÁþÐò—ý  Bõˆö  d *  & PôùBõAòÁ õòÁ
ôüòôôÄòæ*  L h ÷	   ñ6ø$ Öõ–õVõõ„‡ 1@rÑ÷zÏ5@óù3  @h""*  r eÞ-?¸ŒvÞøù9?ÙuÎ¿Mžc?k’A`5»’?IÆ2fÌ?ÌÌ(  ˜ (×ûë*@ªª§ª£	 A    / ±¿rÑ÷zÏÞ?Ø[7©r(       Š O   Nívò*  ×d0M    Nívò   ¯”L      (& ­ôÀh  
  ¯”   
         *    € ö  ð‹ 
ø¥
   ø¥   6
 ‡        ¬ O   Nívò*  Ôf¤!    Nívò   ¯”L  ­ŸÀ@      (0   ­òÀh  ¯”   
         *    € ¦
ø¥
   ø¥         ‚
Â&æ ÷	  &   î‚Ž‡   ­ŸÀ       zO   víbÓ*  ;djL    víbÓ   ¯”L  <&@  a'¸.H *  ô' q@  ô'¤’@  $9ž!@  ´:òs@  ´:2“@  *  L;è€H T;@  >h,d@  öt	@  :©@  *  s©À@  À©Ñ@  „¯½`@  ù¯üX@  °úp@  *  ° }@  h±p!@  •± }@      (L¯ˆwhæ*  ›,0ÀhÀ>h\ghD@h""h|­NÀh  ­OÀh*  ­RÀh­TÀhF­UÀh„­|Àhž­}ÀhÂ*  ­žÀhæ­ŸÀh­ Àh:­¡Àh–­¢Àh*  ­£Àh6­­lŠ E°Üh ;d;dl ;d;dh    þ¬¯yìP
¯”   
   ­­        @           8 
         *    „æØÿˆÀ  .ÁÚ‚Âå  
Rƒ
† W¤    Øs©ÀÚ*  & À
ûÉ•  † Rüñ•  ÿÿÀ
W¢  É•  À
*  L ñ
÷Rƒ
ãÆå  æƒæÂå  ¦&
&
&
&
*  r &
…÷	  Á fæ?ÿˆB Âå Âå w  ‘   
ù¯üX­­ "­­ &­­  *  ˜ IÑe 
Âå ‘Â4 
‚~Ã ËÓe
 ÓÓ
  ;d;d *  ¾  Ó 
ÃËÓe
 Ó Ó Ó 
æ æ
  ;d;d*  ä ò æiÿˆ	ððL                 À ÷	â  ò À©Ñ$;d;d *  
æ3ÿˆ€ €
ÀE Á  1  ‚1à v 
  ­­  *  0 1` ‡ 6
 æ ÷	8‡ ¦æÁ        CÀ 
   ­­  *  V  Â ƒ‹Óe SËå ‰æ	 ÷	*  |þƒ‚‡ À  H ‡ æ
 ÷	à‡  
  ­­  *  ¢¶ @HÐe
 Ð 


‡    € ¶*  È ÁA¼·Jæƒ ¶ ð‹ ÷	p   ¼*  î7
N7
N7
NÁ×¢: 
w<ÂBà‚
·0Á
*  ×¢] 
w&ÂBà‚
·Á

ó‹ w*  :ÂBà‚
·ƒ
Ë‹Ùð Ã4ã× *ûË
  4$**  `‹
Ãe
 Ãð æ ÷	3 3 ðµ *  † ó’ &Àð•  # ÷	  €†0Š ðÅ    ô'¤’h±p!*  ¬æ ÷	È&Àð•  # ÷	  €†ð•  ë0Š        ô' qh±p!*  Ò ðµ  ÷	ˆ ƒ‚‡ € Žð‹ ÷	¦ðµ*  ø  &  ÷	  €‡ 0Š 0
 ú€ ¶   „¯½`*  ¦æð‹ H`pà 0,  Áe
 H*  D 
‘”Â~ ÷	 æ ÷	ƒ‚‡ 
*  jðµ  -ðµ  1Á`æÂ Âà &Àp*   ° ÷	  €‡ð  òóµ   l Ñ•
   ° }<&*  ¶°
 ƒl ð ð•  ‡ ó¥  * Â0
 ï  $9ž!*  Ü÷  > 7œ : 7> 7 : æÿˆ÷%  8 ã÷%  ´:òs"$9ž!*    0 ð,  ø•   ð  ‡      6  T;"´:òs(6*  (  6             €       ¶ ð‹ !fðµ  6*  N   ñµ   ø¥
   ÷	0 H`  <&*  tl p l W  ÷	 ‡ æ ÷	è ‡ € *  šŽðµ  ð ðµ  &f 1  *  ÀÁe
   p ÷	  €Èe
 0
 ‡ ÷    •± }(´:2“*  æ8ÿ7œ 4ÿ&Îe
 ·2ÿ7 .ÿæÿˆè€ ¶  *   ðµ  ž  &æ ÷	òý&æ ÷	æýž*  2  ‡ € ¶ —­ 
 ðµ  ø•   Á *  X÷	èþ¸   Á ÷	ÚþŽÂ  Á
÷	  ‚‡   ">h,d*  ~ ŽÀÒ¦
÷	  ‚Àå²7”þ÷²Œþ÷ ~þ  
Ò:©² ²*  ¤÷  vþæÿˆ‡ 
PA      SCAL RUN-TIME ERROR   ´:2“  ÊNUMBER:       )   *  *          >žþ^¾    >žþ^¾‚öt	 P  P
   N  N    `  `    b  b@"  @" a  a    ‚ô'¤’ f  f    j  j   ž  ž   ‚öt	 °  °
   ®  ®    À  Àž   Â  Â@"  @" Á  Á   ‚ô'¤’ Æ  Æ     Ê  Ê	   þ  þ h  ‚öt	   
             ©   "  "@"  @" !        ! N  ‚ô'¤’ &  & “   *  *R   ^  ^    ‚öt	 p  p
   n  n    €  €t   ‚  ‚@"  @"      ‚ô'¤’ †  †    Š  Š   ¾  ¾    ‚öt	 Ð  Ð
   Î  Î    à  àt   â  â@"  @" á  á   ‚ô'¤’ æ  æ    ê  ê            (  (;dô     <  <SY                    O       *  ³%@    ¯”L  t'=†H ÿ«€»@  c¯Àv@  *  `³  @      (  ±©      ÀEh2ë¨€»hèë¨ÀÁhð*  ë¨ Èhøë¨@Îh À©yhäÀ©Ñh  ¯”   
   ±©ÀE  *    ÷
Ä ‰··7ÀPÐPÆå  *  &  7
¸EDÄEÿ! ðw  ÷E €žÅE ðD*  L Ä5 4Ä5À!
 ƒw þ Ä| h 2@P``  h  2"@$P&`(`*  r ````HXW! w4H
w*$æÅ*  ```
`HXH
$$&æ*  ˜ ÄÄŠÄ Äü	ª w ¼ `Úâ`’´®¤W! 
&  ª `Úâ`’ ´"®$¤*  ¾ BŠ—  Âå —  
wä H
—  
  H 
*  ä wÔ :	wÊ $øwÀ $æ      ÷	¦ …ŠÄ   :
$ø$æ  
Äü	*`` &êhð¶€*  `` &êhð¶€*  $œÈL´ôÀ®ÀEðÿ7Pê÷E€ ž÷U  œÈL
´ô*  J€ –÷E@ Ž÷U@ †·
‚ÀäÈE Í  "ä*  p€ÈU ÈU ÀÀ†æ’  *  –æŒ·
*÷D _  BÂE?ÿ‚‚‚Âeè‡   ÿ«€» &è*  ¼CÃEøÿÃÃe@ÀEÇÿ€€x Ö"LVv‚’"  Ö" L"V$v&‚(’*  â¢²À ÷5€ ôÀe ‡ À ÷5€ âÀå 
  ¢²*  ‡ À ‡ À ÷5@       ÊÀe ‡ Y Ãå×  H†  "*  .ÃÃÃeèÑ ÷5@ ¤>× $;†Ñ × &6Ã  
è$$&*  T6æù	 × &À ÷  ¾Î*`ƒ&æ  
  &**  zËe ƒ × &ù	 àÃ× &Ëå Ã  
  &&*   æ€÷e zÎbƒwìÿ    Ãw žþÃ5   `³  `³  *  ÆûQ$ ÀÌ÷	 ÂÀØ
f	
Ð
ÁE
  ÌØ*  ì€ÿÁU€ 
P÷5€ ä

ÁŠ*  Á Áå€ P‡ ÀÎfŽPÎPQ7
–‡   Î*  8Á5 ÿ¡ ˆ
öÁ5€ ÄCBAÈ
÷*  ^ à `‡ ÒÒ÷5€ rÒÒ‡ 

‡ ““*  „÷5€       Z““‡ 

÷5€ H

‡ ËËe*  ª €‡ ËE €‡ ‡ ÅÎÊË‹"“$“$  Î*  Ð÷5€ “$“$‚Í ‡ Íÿÿ‡ 
‡ Ò*  öÒ÷5€ æÒÒ‡ 

‡ ““÷5€ Î

*  ‡ ÀÌÐ Ð÷5@ ¶Ð

Ð w L

  Ì*  B
È w >ÅÀÌ÷	„þÀÎÀr ( 
  ÌÎ*  h¡ €
÷Á÷5@ b÷DB*  Ž‡õ ‡ Â÷*Í‡ ÷U 4w Êü*  ´ÀÌ÷	þ÷÷	ü w žüÀÌ÷	
þËÅw Œü
  ÌÌ*  Ú÷w œüËþw ”ü÷	Þý÷	Øý7à÷Üa÷*   ÊUÁÎÁíÖW 8 UÀÚW 8 E      À  Ú*  &Îfˆc¡ Î
ù à `Ö  Î*  LÁÖÂâÀ ÷-pz¡ a‡‰hÀ
û‰h± 
  Ö
â*  rú¡ ¡‡‰èÀ
û‰è± úÁÎÉÁÖÀ
  Î&Ö*  ˜ ¡ a‡	À
û!÷	pý	ÁØÂÌÀ RÀ

  Ø Ì*  ¾ýBÀÌÈÁW  !W ÿÁe€ Á ¡   
Ì*  äÐÁU €ÈE€ÿTR÷5€ è‡ 

÷5*  
€ Ö

‡ ÷U Èw ^û÷	²÷	÷	îüÀ*  0ÌÁØÂ Â
ý 
Á€ 
7 Šr@Îr@  ÌØ$Î*  VÚ€
¡ ôÁ €Âe —  í÷	ªü÷	JÿW!ð
  Ú&ð*  |W! ÷5€ R7
JÅe       ÷	ÿÅå ‡ ÷	,ü÷   *  ¢4¸÷í8*÷	 fÀÎ



Å  Î*  ÈÎæ ÀÚ$	$‡‚$‡‚$‚ÀÚä  ÎÚ&Ú*  î&
äN&
äNäƒN‚åNåSÄCBA¡ *  ÜÎ €Åe W!ÖÕ‡Ö…w ^þ÷	œû÷m®   ÷
œ   Ö*  :÷	r fÅÞ÷5€ š Åe  




À€
  Þ*  `å  W!Ú‚ÀÎPÐ…‡ ¡ 
  ÚÎ*  †0ç&ÀÎd&
dN&
dNdCN‚eNe  Î$  ¬€Õ÷- " ÷ÿÿ ‡ ÷  ‡      "c¯Àv      O       *  ³%@    ¯”L  t'=†H ÿ«€»@  c¯Àv@  *        `³  @      (  ±©ÀEh2ë¨€»hèë¨ÀÁhð*  ë¨ Èhøë¨@Îh À©yhäÀ©Ñh  ¯”   
   ±©ÀE  *    ÷
Ä ‰··7ÀPÐPÆå  *  &  7
¸EDÄEÿ! ðw  ÷E €žÅE ðD*  L Ä5 4Ä5À!
 ƒw þ Ä| h 2@P``  h  2"@$P&`(`*  r ````HXW! w4H
w*$æÅ*  ```
`HXH
$$&æ*  ˜ ÄÄŠÄ Äü	ª w ¼ `Úâ`’´®¤W! 
&  ª `Úâ`’ ´"®$¤*  ¾ BŠ—  Âå —  
wä H
—  
  H 
*  ä wÔ :	      wÊ $øwÀ $æ÷	¦ …ŠÄ   :
$ø$æ  
Äü	*`` &êhð¶€*  `` &êhð¶€*  $œÈL´ôÀ®ÀEðÿ7Pê÷E€ ž÷U  œÈL
´ô*  J€ –÷E@ Ž÷U@ †·
‚ÀäÈE Í  "ä*  p€ÈU ÈU ÀÀ†æ’  *  –æŒ·
*÷D _  BÂE?ÿ‚‚‚Âeè‡   ÿ«€» &è*  ¼CÃEøÿÃÃe@ÀEÇÿ€€x Ö"LVv‚’"  Ö" L"V$v&‚(’*  â¢²À ÷5€ ôÀe ‡ À ÷5€ âÀå 
  ¢²*        ‡ À ‡ À ÷5@ ÊÀe ‡ Y Ãå×  H†  "*  .ÃÃÃeèÑ ÷5@ ¤>× $;†Ñ × &6Ã  
è$$&*  T6æù	 × &À ÷  ¾Î*`ƒ&æ  
  &**  zËe ƒ × &ù	 àÃ× &Ëå Ã  
  &&*   æ€÷e zÎbƒwìÿ    Ãw žþÃ5   `³  `³  *  ÆûQ$ ÀÌ÷	 ÂÀØ
f	
Ð
ÁE
  ÌØ*  ì€ÿÁU€ 
P÷5€ ä

ÁŠ*  Á Áå€ P‡ ÀÎfŽPÎPQ7
–‡   Î*  8Á5 ÿ¡ ˆ
öÁ5€ ÄCBAÈ
÷*  ^ à `‡ ÒÒ÷5€ rÒÒ‡ 
      
‡ ““*  „÷5€ Z““‡ 

÷5€ H

‡ ËËe*  ª €‡ ËE €‡ ‡ ÅÎÊË‹"“$“$  Î*  Ð÷5€ “$“$‚Í ‡ Íÿÿ‡ 
‡ Ò*  öÒ÷5€ æÒÒ‡ 

‡ ““÷5€ Î

*  ‡ ÀÌÐ Ð÷5@ ¶Ð

Ð w L

  Ì*  B
È w >ÅÀÌ÷	„þÀÎÀr ( 
  ÌÎ*  h¡ €
÷Á÷5@ b÷DB*  Ž‡õ ‡ Â÷*Í‡ ÷U 4w Êü*  ´ÀÌ÷	þ÷÷	ü w žüÀÌ÷	
þËÅw Œü
  ÌÌ*  Ú÷w œüËþw ”ü÷	Þý÷	Øý7à÷Üa÷*   ÊUÁÎÁíÖW       8 UÀÚW 8 EÀ  Ú*  &Îfˆc¡ Î
ù à `Ö  Î*  LÁÖÂâÀ ÷-pz¡ a‡‰hÀ
û‰h± 
  Ö
â*  rú¡ ¡‡‰èÀ
û‰è± úÁÎÉÁÖÀ
  Î&Ö*  ˜ ¡ a‡	À
û!÷	pý	ÁØÂÌÀ RÀ

  Ø Ì*  ¾ýBÀÌÈÁW  !W ÿÁe€ Á ¡   
Ì*  äÐÁU €ÈE€ÿTR÷5€ è‡ 

÷5*  
€ Ö

‡ ÷U Èw ^û÷	²÷	÷	îüÀ*  0ÌÁØÂ Â
ý 
Á€ 
7 Šr@Îr@  ÌØ$Î*  VÚ€
¡ ôÁ €Âe —  í÷	ªü÷	JÿW!ð
  Ú&ð*  |W!       ÷5€ R7
JÅe ÷	ÿÅå ‡ ÷	,ü÷   *  ¢4¸÷í8*÷	 fÀÎ



Å  Î*  ÈÎæ ÀÚ$	$‡‚$‡‚$‚ÀÚä  ÎÚ&Ú*  î&
äN&
äNäƒN‚åNåSÄCBA¡ *  ÜÎ €Åe W!ÖÕ‡Ö…w ^þ÷	œû÷m®   ÷
œ   Ö*  :÷	r fÅÞ÷5€ š Åe  




À€
  Þ*  `å  W!Ú‚ÀÎPÐ…‡ ¡ 
  ÚÎ*  †0ç&ÀÎd&
dN&
dNdCN‚eNe  Î$  ¬€Õ÷- " ÷ÿÿ ‡ ÷  ‡      "c¯Àv       ÔO       *  ³%@    ¯”L  t'=†H           (  ±©ÀEh.*  ë¨€»häë¨ÀÁhìë¨ Èhôë¨@ÎhüÀ©yhà  À©Ñh  ¯”   
   ±©ÀE  *    ÷
Â ‰··7 ÀPÐPÆå  *  &  7
´EDÄEÿ! ðw  ÷E €šÅE ðD*  L Ä5 4Ä5À!
 ƒw þ Ä| h 2@P``  h  2"@$P&`(`*  r ````HXW! w2Fw("äÅ*  ```
`HXF$"&ä*  ˜ ÄÄŠÄ Äü	ª w ¼ `Øà`²¬¢W! 
&  ª `Øà` ²"¬$¢*  ¾ BŠ—  Âå —  
wâ F—  
  F *  ä wÒ 8	wÈ "      öw¾ "ä÷	¤ …ŠÄ   8
"ö"ä  
Äü	*``$èfî´~*  ``$èfî´~*  $šÆJ
²òÀªÀEðÿ7Pæ÷E€ š÷U  šÆJ

²ò*  J€ ’÷E@ Š÷U@ ‚·
~ÀàÈE Í  "à*  p€ÈU ÈU ÀÀ‚æŽ  *  –æˆ·
(÷@  ‰BÂE?ÿ‚‚‚Âeä‡ C  $ä*  ¼ÃEøÿÃÃe@ÀEÇÿ€€x Ô JTt€ &  Ô J T"t$€&( *  â°À ÷5€ òÀe ‡ À ÷5€ àÀå ‡   °*  À ‡ À ÷5      @ ÈÀe ‡ Y Ãå×  H†Ã   *  .ÃÃeäÑ ÷5@ ¢>×  ;†Ñ × "6Ã6  ä ""*  Tæù	 × "À ÷  ¼Î&`ƒ&æ  Ëe
  "&*  z ƒ × "ù	 àÃ× "Ëå Ã  
  ""*   æ~÷e xÎbƒwìÿ    Ãw  þÃ5 û*  ÆQ$ ÀÈ÷	 ÂÀÔ
f	
Ð
ÁE€ÿ
  
ÈÔ*  ìÁU€ 
P÷5€ â

ÁŠÁ *  Áå€ P‡ ÀÊfŽPÎPQ7
”‡ Á5  Ê*  8 ÿ¡ ˆ
öÁ5€ ÄCBAÈ
÷ *  ^à `‡ ÒÒ÷5€ pÒÒ‡ 

‡ ““÷5*  „€ X““‡ 

      ÷5€ F

‡ ËËe €*  ª‡ ËE €‡ ‡ ÅÊÊË‹"“$“$  Ê*  Ð÷5€ 
“$“$‚Í ‡ Íÿÿ‡ 
‡ ÒÒ*  ö÷5€ äÒÒ‡ 

‡ ““÷5€ Ì

‡ *  ÀÈÐ Ð÷5@ ´Ð

Ð w L


  È*  BÈ w >ÅÀÈ÷	„þÀÊÀp ( 
  ÈÊ*  h¡ €
÷Á÷5@ `÷BB‡*  Žõ ‡ Â÷(Í‡ ÷U 2w ÌüÀ*  ´È÷	þ÷÷	ü w  üÀÈ÷	
þË Åw Žü÷
  ÈÈ*  Úw žüËüw –ü÷	Þý÷	Øý7Þ÷Úa÷È*   UÁÌÁíÔW 8 UÀÖW 8 EÀÊ
  Ö(      Ê*  &fˆc¡ Î
ù à `ÖÁ*  LÒÂÞÀ ÷-nx¡ a‡‰hÀ
û‰h± ú
  ÒÞ*  r¡ ¡‡‰èÀ
û‰è± úÁÊÉÁÒÀ 
  Ê$Ò*  ˜¡ a‡	À
û!÷	pý	ÁÔÂÈÀ RÀ
ý
  ÔÈ*  ¾BÀÈÈÁW  !W ÿÁe€ Á ¡ Ð  È*  äÁU €ÈE€ÿTR÷5€ æ‡ 

÷5€ *  
Ô

‡ ÷U Æw `û÷	²÷	÷	îüÀÈ  (È*  0ÁÔÂ Â
ý 
Á€ 
7 ˆr@Êr@Ö  Ô"Ê(Ö*  V€
¡ ôÁ €Âe —  í÷	ªü÷	JÿW!ìW!  $ì*  |ü÷5€ P7
HÅe ÷	ÿÅå ‡ ÷	      ,ü÷2  ü*  ¢¸÷í6(÷	 fÀÊ



ÅÊ
  Ê(Ê*  Èæ ÀÖ$	$‡‚$‡‚$‚ÀÖä&

  
Ö$Ö*  îäN&
äNäƒN‚åNåSÄCBA¡ Ü*  Î €Åe W!ÒÕ‡Ö…w ^þ÷	œû÷m¬ ž ÷
š ÷	  Ò*  :r fÅÚ÷5€ ˜ Åe  




À€
å  
Ú*  `  W!Ö‚ÀÊPÐ…‡ ¡ 
  ÖÊ*  †0ç&ÀÊd&
dN&
dNdCN‚eNe€  Ê   ¬Õ÷-   ÷ÿÿ ‡ ÷  ‡    Ö*  V€
¡ ôÁ €Âe —  í÷	ªü÷	JÿW!ìW!  $ì*  |ü÷5€ P7
HÅe ÷	ÿÅå ‡ ÷	          ;djL¢_› 8$         ÁXÀO      #    q 
  »   º  ]6 â                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         t	À0 l¯Žw, ’ ÜÀ0 lE, K+ œ,|0 lœ,i0 lœ,s0 l;d>(3 ô œw|0 lœw`0 lì¨Ð ¾ "©ÀD(  "©®F(  D©ºp ªD©Œs ªa©È}. Ò e©i Bi©Ð* À i©<- þ i©èŠ6 : i©PŒ ¾ u©ÀS/ v™©@ƒ ô ™©H… ´ ™©h… >™©†   ™©Z†   ©p;, ’  ©Df ¾  ©g * ©g * ©/g ¾ ¼©À] ¾ ¼© } ¾ ¿©²s2   Ý©@j ŒÝ©Hl Ø Ý©hl bÝ©m   Ý©Wm x Ý©Zm ô Ý© }(  Ý©î~(  Ý©Ý1 ¾ Ý©Ø(  ê© }  ê© âê©( †ê©Ð   6ªa;$ ¤6ªs; <6ª€W B 6ªP‚ @ @ª€ ª¥ª@j œ ¥ªHl Ä ¥ªhl N¥ªm   ¥ªWm l¥ªZm è¥ªÀv ¥ªÈx Î¥ªèx X ¥ªy         °ª€ ªÉªHr ×ªh6 : ×ªƒŠ+ Æ×ªˆ‹+ Æ×ªš‹+ Æ×ª¨‹+ Æ×ª³Œ+ ÆÝªhL5 ¶ÝªÐM ¾ õª@j | õªHl ¼õªhl F õªm   õªZm „ÿªˆr ¾ ÿª”r B.«c'$ ^ A«ˆ,(  R«ÿ BU« }(  U«î~(  U«Ý1 ¾ U« ‚(  \«Þ2 Ø \«a(3 X \«”w2 Ø \«Ó2 B\«y…2 Ø \«KŠ/ v“«¸`# 2 ”«À(  ”«@8 Ü”«€p  ”«Kq(  ”«/x þ ”«òy(  •« ¢ •« ¢ •«ÉK •«œw% Ö•«™’% Ö•«€˜  vœ«Ø^! `ž«  ¾ £«p:# 2 £«$m" *¥«­Z. Ò »«% ¾ ¿«6x ¶Á«. ¾ Ã«g þ È«Ü  î É«@85 ¶É«Ps ¾ Ì«t:$ ^ Ì«Pd ªÌ« q$ ^ Í«P ¾ Í«S$ ^ é«R. Ò ò«´ Bò«À ¾ ô«:d(        ÷«of  l ¬= Ä¬6x þ j¬€/ ² j¬ˆ/ ² j¬À(  j¬(  j¬""-  j¬ ' Bj¬@8  j¬L^(  j¬€p Bj¬Kq(  j¬Àv(  s³[d/ vÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      £;d0 l<m". Ò n€Ô À ~@86 : ý!   ô ý!@Q ´ ý!@V >ý!|  #œw *ê'Ð2   E, K+ ™,   Œ™,@Q Ø ™,@V b™,˜{ x ™,| ô ¤.    ¤.@Q â¤.@V †y:ø <~:   B „:€Ô @ ÙK   œ ÙK@Q Ä ÙK@V NÙK˜{ lÙK| èÛK   ÛK@Q ÎÛK@V X zQ@G ®S@Q+ Æ”T@85 ¶YX   | YX@Q ¼YX@V F YX| „;d>(3 ô _d _ ª÷hÚ   ÷hñ2 Ø ÷h/ v÷h	#, ’ ÷hŠ(/ P ÷hœ,(  ÷hy:$ ¤÷h¶p1 ¾ ÷hºp ¾ ÷h[q% Ö(q€M þ )q   Ü2q    Lqœw ¢ `q d  vorÀ+! `‰s s" *Ös$ ^ ëwp: ¶6x+# 2 LyÜ  î ¨€Xa  l y…€Ô Ä’’$`/ ² •’_s-        ™’    Ÿ’à(  ¢’t B\«a(3 X \«Ó2 Bÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           BO   ;dŽß*  ÷hÚ    ;dŽß   ¯”L      (  ;dÖs(˜ *  ™©†h  Ý©mhV ê©ÐhD ¥ªmh2 ¥ªyh    õªmh ¯”   
   ;dÖs  *    7	d Í
„ 
„ 7	T ÍÍ „ „ 7	D Í*  & 
„ Í „ 7	2 Í
„ Í „ 7	  Í*  L 
„ Í „ 7	 Í
„ Í „  
U- *  r õ €M- ‚‡M- ‚‡U%„ €
ûÀ
ù       ÆO   ;dŽß*  ¢’t    ;dŽß   ¯”L  i©PŒ@  ¼© }@  *  ÝªÐM@  U«î~@  »«%@  ò«À@  j¬À@  *      (  ;dÖs(ðe©ih®ÿª”rhœ R«ÿhú"  ò«´hj¬ 'h$j¬€ph  ¯”         
   ;dÖs  *    B r# ¥7	  f€Àå e å  7	èÎå  U«î~*  &  Î —# Î @ 7	ºõE € å. 7	*  L   Õ¶“ 7	B ¦&ÁE ÿ7	HU%åE 7	  €  j¬À&j¬À*  r 7	„å0 ‚— 
 Âå
 
ù¦7	  ¥Íe0 7	   j¬À*  ˜   „ &
f7	ú €ö
 ¥7	  å› åš?7	  j¬À¼© }*  ¾   7	  B¦€ 7	  À€7	Ä €W#Ì>  ÝªÐMò«À»«%*  ä W- ÌÌ†%
å BÂÎ
7	  Ž
7	  7	”   ÝªÐM$i©PŒ*  
Í5Š ÍU€ Í M 5Š õ   cÁE ÿW *  0	  
ÁÁulx M@Mlv@Í™õÀ™ 
  xv*        VŽ
‚
¡ 5 ù‚€€Â 
„ Ì*  |ÍÌG®  œÄ ÜF  ãS  c  ×       B*  ¢BŠÂ Âå€ „ f" 
õ M@&ff õ *  ÈM@õ M@µe M@e@€eÀe0 e %7	*  î  ÕÎ
ÞÖ„ å+ À€Í- 7	  „ f&Î  j¬Àj¬À*  ¥ 7	  Î
ø–%„ B r-  ¥7	  B)  
j¬À$U«î~*  :àÍå %µ Af fÍE €7	Fþf¦À€*  `e € å  7	œÿ€ 7	‚ÿ€ €ã
–%*  †µ %
Í 7	lý„ e å  7	jÿ€ 7	PÿÕ*  ¬7	üþe å. 7	   Î€¶£ Ž   j¬À"  Ò€å0 7	0ÿ ãÕ7	ÆþU%Æe       „        ÔO   &íxò*  2q      &íxò   ¯”L  Ý© }@  ÿªˆr@  *  ”«@8@  ”«/x@  »«%@  Ã«g@  ¬6x@  *  j¬""@      (  ;dÖs(¼ ”«€ph  ¯”   
   ;dÖs  *    f7	  f&
%
%
7	  … E  . A ñ  ”«/x¬6x*  & –ÿüÿ7	  ,–%6µ
  . 	e 7	  @ž    
j¬""$Ý© }*  L 7	  Nà E %
Be ¥e 7	  7	  ÕNe  ¬6x Ý© }$”«@8*  r Íõ Â 
 
7	  Àÿÿ‚€€
7	    ÿªˆr(»«%(  ˜ €€ÍU €€PPAñüÿó5  7	  „   $Ã«g       "O   'íxÀ*  )q      'íxÀ         ¯”L  ”«/x@  Ã«g@  *  ¬6x@  j¬""@      (  ;dÖs(\ ”«@8h  
  ¯”   
   ;dÖs  *    f7	  f%
%
7	  …A ñ˜ÿüÿ7	  (Õ
  ”«/x¬6x"j¬""*  & ÍÿA ñ—ÿüÿ7	  )ÍôÖ^Añüÿ  j¬""  L ó5  7	  „   Ã«g       ÀO   ;dŽß*  (q€M    ;dŽß   ¯”L  Ý© }@  j¬""@  *      (  ;dÖs(Ü i©<-hT ”«/xh$ Ã«gh    ¬6xhj ¯”   
   ;dÖs  *    A@ž     ñøÿñ5  þÿe7	  ï„ 7	  "Ý© }*  & Øÿ   e7	  ÷&
 +  - Î
e7	    Ý© }(Ý© }*        L @ž  „  : ² „  0 ûÀå0 „ 
7	äÿ„*  r ¢ „ 7	Úÿ/…õ M!‡ff õ M‡õ M*  ˜ ‡µe M…e…5` M…
fe 7	  @ž    $Ý© }"  ¾ ÚÖÖfA ñ™ÿüÿ7	  *„   j¬""       ÈO   ;dŽß*  ÷hºp    ;dŽß   ¯”L  j¬""@      (  *  ;dÖs(:ì¨ÐhÊ i©PŒhî ©Dfhz ©/gh\*  ¼©À]h²¼© }h–ÝªÐMhbÿªˆrhÀž« hj *  »«%h  Á«.hÎÉ«Psh¼ Í«Phäò«Àh† 
  ¯”   
   ;dÖs  *    Â—  	€Â
ÂÂ
ÁaÁe0 Âå
 ÁÁeH *  & ee¦&€7	.7	´€‚à„  B  ÈC  zE*  L   G @      ÃH PtJ $L€–¾M ¼nO(kQù%
å @õ5*  r  € ÍU €7	J 7	 „ 7	Ò
ÁW  7	*  ˜   !õ MBÁ
úÍ BÀU%¥„ e  j¬""*  ¾  e 7	š „ ÍÅe Fõ u u >*  ä 7	t7	Ž M- u-  †ffe *  
e µ µ ¦BÀ &
à
W  €5*  0 Á
úÀ 5 Mum  u uc*  V U%7	`„ õ ÍU%
5
 „ 7	â 7	*  |ü B`Âe &æ  

ÀAu u õ5  *  ¢@m Au u Acu u Î
èÖ5Š €U%*  È7	 „ ÀÀ À 7	Þ „ Íe €7	Þþ„ *  îõ Í7	  "U%5
 „       7	R 7	l &BàA  j¬""*   @ 5
 5
 æ M 
‡‚5  ‡@í Aã*  :µ
 ÀAõ u Î
ìÖU%€
7	tÿ„  
A*  `Á À ÀŠÁ Áå€ 5Š ÍU€ „ B Â@ŠÂ *  †Âå€ 5Š õU€  „  
e	€
Â 5
 
*  ¬7	 „ ff7	Üÿ¥¥„ Âe€ Íõ 5W# *  Ò	€W#€ €Áu MÂ
÷5 ‚
îÁ†u*  ø M
ç— ÿ 
7	  Íÿÿu €„ Â€  j¬""   7	  
5
 „ ÍÅ€ Â €P„   j¬""       € O   ;dŽß*  ¤.@V    ;dŽß   ¯”L      (  ;dÖs(   ê©(h  ¯”   
   ;dÖs      ¤Á
ü%
„ ýå       „        O   ;dŽß*  ™’      ;dŽß   ¯”L  i©èŠ@  j¬Àv@  "      (  ;dÖs(r j¬@8h  ¯”   
   ;dÖs  *    f&
AÎ- „@%ÖÀÀe Â e *  & -32768f@Åå &eå
 7	  BÁe0 €`  i©èŠ*  L ó‚`¥¥à%¥ ¥7	  E „   "j¬Àv       – O   ;dŽß*  zQ@G    ;dŽß   ¯”L      (  ;dÖs("   ÉªHrh  •«ÉKh ¯”   
   ;dÖs  &    û  ó  óe  „ ó  ó  „        ø O   ;dŽß*  _d _    ;dŽß   ¯”L      (  ;dÖs(\ *  D©ºphD D©ŒshR @ª€      h  °ª€h4 Ì«Pdh" 
  ¯”   
   ;dÖs  *    @ÀEøÿBB`Àa œ „  @€f7	*  & ØÿÖ
Ð„ 
À„ 7	Èÿ

°
e„ Â 
  L Á
ý„ %
Á
ý„        ˆ O   ;dŽß*  Lqœw    ;dŽß   ¯”L      (  ;dÖs(   •«h •«h  ¯”   
   ;dÖs      MMM„ u u Õ„        š O   ;dŽß*  #œw    ;dŽß   ¯”L      (  ;dÖs(&    ©gh  ©gh  ¯”   
   ;dÖs  *    @
%
%
%„ @Åå B
 
 
„        | O   ;dŽß*  y…€Ô    ;dŽß   ¯”L      (  ;dÖs(         ¬=h  ¯”   
   ;dÖs      BÂe RURURURU„        € O   ;dŽß*  „:€Ô    ;dŽß   ¯”L      (  ;dÖs(   6ªP‚h  ¯”   
   ;dÖs      BÂe Á M
REÁ
ü„        | O   ;dŽß*  n€Ô    ;dŽß   ¯”L      (  ;dÖs(   i©Ð*h  ¯”   
   ;dÖs      BÂe RERERERE„        z O   ;dŽß*  y:ø    ;dŽß   ¯”L      (  ;dÖs(   6ªs;h  ¯”   
   ;dÖs      @
%
%
%
%„        Œ O   ;dŽß*  ëwp:    ;dŽß   ¯”L      (  ;dÖs(    ¿«6xh        ¯”   
   ;dÖs  $    A@ÀEøÿAaÀa	Ü „  @€         O   ;dŽß*  ~:      ;dŽß   ¯”L      (  ;dÖs(.   6ª€Wh  ¯”   
   ;dÖs  *    @ e 

ÀEøÿAaÀa	¼ Š
…„   &  @€      Â O   ;dŽß*  ”T@8    ;dŽß   ¯”L  j¬""@      (  "  ;dÖs(6 ÝªhLh É«@8h  ¯”   
   ;dÖs  *    e7	 „ 
A@ „7	  
	À5   j¬""  & €ÁúB`À
ú¥„       ø O   ;dŽß*  ~@8    ;dŽß   ¯”L  j¬""@      (  "  ;dÖs(` i©èŠh  ×ªhhX ¯      ”   
   ;dÖs  *    B
7	  „ ¦€„7	  f€À   j¬""j¬""*  & õ‹ €Í 
ÍAB à
À
øÖÖ€  L „ Ö„ 7	¤ÿM„        x O   ;dŽß*  ÙK      ;dŽß   ¯”L      (  ;dÖs(   ¥ª@jh  ¯”   
   ;dÖs      
M%
M„        x O   ;dŽß*  ÛK      ;dŽß   ¯”L      (  ;dÖs(   ¥ªÀvh  ¯”   
   ;dÖs      
M%
M„        x O   ;dŽß*  ™,      ;dŽß   ¯”L      (  ;dÖs(   Ý©@jh  ¯”   
   ;dÖs      
M%
M„              x O   ;dŽß*  ¤.      ;dŽß   ¯”L      (  ;dÖs(   ê© }h  ¯”   
   ;dÖs      
M%
M„        x O   ;dŽß*  YX      ;dŽß   ¯”L      (  ;dÖs(   õª@jh  ¯”   
   ;dÖs      
M%
M„        x O   ;dŽß*  ý!      ;dŽß   ¯”L      (  ;dÖs(   ™©@ƒh  ¯”   
   ;dÖs      
M%
M„        | O   ;dŽß*  ÙK˜{    ;dŽß   ¯”L      (  ;dÖs(   ¥ªWmh  ¯”   
   ;dÖs      
@P@#
M„         O   ;dŽß*  ÙK      |    ;dŽß   ¯”L      (  ;dÖs($   ¥ªZmh  ¯”   
   ;dÖs  (    @BÂe %
Á 
R$Á
û
u Åe „        | O   ;dŽß*  ™,˜{    ;dŽß   ¯”L      (  ;dÖs(   Ý©Wmh  ¯”   
   ;dÖs      
@@S@#
M„         O   ;dŽß*  ™,|    ;dŽß   ¯”L      (  ;dÖs($   Ý©Zmh  ¯”   
   ;dÖs  (    @BÂe %
Á ˆR$Á
û
u Åe „        ˜ O   ;dŽß*  YX|    ;dŽß   ¯”L  õªhl@      (    ;dÖs( õªZmh  ¯”   
   ;dÖs      @BÂe Á       7	  u Åe „   õªhl       ˜ O   ;dŽß*  ý!|    ;dŽß   ¯”L  ™©h…@      (    ;dÖs( ™©Z†h  ¯”   
   ;dÖs      @BÂe Á 7	  u Åe „   ™©h…       Š O   ;dŽß*  ý!@Q    ;dŽß   ¯”L  ™©h…@      (    ;dÖs( ™©H…h  ¯”   
   ;dÖs      @B7	  „   ™©h…       ~ O   ;dŽß*  ý!@V    ;dŽß   ¯”L      (  ;dÖs(   ™©h…h  ¯”   
   ;dÖs      $Á
üå „ %
„        Š O   ;dŽß*  YX@Q    ;dŽß   ¯”L  õªhl@      (    ;d      Ös( õªHlh  ¯”   
   ;dÖs      @B7	  „   õªhl       ~ O   ;dŽß*  YX@V    ;dŽß   ¯”L      (  ;dÖs(   õªhlh  ¯”   
   ;dÖs      $Á
ü%
„ å „        Š O   ;dŽß*  ÙK@Q    ;dŽß   ¯”L  ¥ªhl@      (    ;dÖs( ¥ªHlh  ¯”   
   ;dÖs      @B7	  „   ¥ªhl       € O   ;dŽß*  ÙK@V    ;dŽß   ¯”L      (  ;dÖs(   ¥ªhlh  ¯”   
   ;dÖs      ¤Á
üå „ ü%
„        Š O   ;dŽß*  ÛK@Q    ;dŽß   ¯”L  ¥ªèx      @      (    ;dÖs( ¥ªÈxh  ¯”   
   ;dÖs      @B7	  „   ¥ªèx       € O   ;dŽß*  ÛK@V    ;dŽß   ¯”L      (  ;dÖs(   ¥ªèxh  ¯”   
   ;dÖs      ¤Á
ü%
„ ýå „        Š O   ;dŽß*  ™,@Q    ;dŽß   ¯”L  Ý©hl@      (    ;dÖs( Ý©Hlh  ¯”   
   ;dÖs      @B7	  „   Ý©hl       € O   ;dŽß*  ™,@V    ;dŽß   ¯”L      (  ;dÖs(   Ý©hlh  ¯”   
   ;dÖs      ¤Á
üå „ ü%
„        Š O   ;dŽß*  ¤.@Q          ;dŽß   ¯”L  ê©(@      (    ;dÖs( ê©h  ¯”   
   ;dÖs      @B7	  „   ê©(       ‚ O   ;dŽß*  ¨€Xa    ;dŽß   ¯”L      (  ;dÖs(   ÷«ofh  ¯”   
   ;dÖs      AÁe %
%
u ÍE €„        ˆ O   ;dŽß*  LyÜ    ;dŽß   ¯”L      (  ;dÖs(   È«Üh  ¯”   
   ;dÖs       ABÂÂ ÂE ÿÂå€ ‰ÍE€ÍU @„        êO   ;dŽß*  `q d    ;dŽß   ¯”L  ì¨Ð@  i©PŒ@  *  ¼© }@  ÝªÐM@  É«Ps@  Í«P@  ò«À@  *  j¬""@      (  ;dÖs(´ •«€˜      h  ¯”   
   ;dÖs  *    å;ªå¸@7	  e e 7	  f7	  7	  å;ª  ÝªÐMò«À ¼© }$Í«P*  & å8A7	  Í5
 Í€@,e e åysåE  
i©PŒ*  L e e 7	  å[\åpC7	  7	  å‚=å@Â7	  É«Psì¨Ði©PŒ*  r   7	  7	  %
å Á7	  %
å€@7	  7	  €À &  ì¨Ðì¨Ði©PŒÝªÐM ì¨Ð$É«Ps   ˜  Š€`„ 7	  2õÿÿ Íÿ„   j¬""       ÊO   ;dŽß*  orÀ+    ;dŽß   ¯”L  ì¨Ð@  i©PŒ@  *  ¼© }@  ÝªÐM@  É«Ps@  Í«P@      (    ;dÖs(¼ œ«Ø^h  ¯”   
   ;dÖs  *    &Ä      Äe¸ eMŠÍ Íå€ 7	  %%7	  ffÍ  ¼© }"ÝªÐM*  & fõ•€  –ff %%7	  ¥¥% %7	  Í«P*  L   7	  e e 7	  e e e e æ   ì¨Ði©PŒÉ«Ps*  r %%7	  %%7	  Î
øÖ7	  %%7	  ¥¥  
ÝªÐMì¨ÐÝªÐM$ì¨Ð(  ˜ 7	  „„ ±¿r A  *@«ªÌ? š?U5@ó1@r  ì¨Ð       O   ;dŽß*  ‰s s    ;dŽß   ¯”L  ì¨Ð@  i©PŒ@  *  j¬""@      (  ;dÖs(X £«$mh  ¯”   
   ;dÖs  *    Í)7	  35
 
„ e e Íe@ æ   j¬""*  & e e e e 7	  7	  %
å A7	        Î
í  i©PŒì¨Ð$i©PŒ  L Öu u „        ,O   ;dŽß*  6x+    ;dŽß   ¯”L  ì¨Ð@  i©PŒ@  *  ¼© }@  ÝªÐM@  É«Ps@  Í«P@  ò«À@  *      (  ;dÖs(æ “«¸`hÔ £«p:h  ¯”   
   ;dÖs  *    &ÄÄeÐ &
Í€ÍE €Î
%%7	  %
å€?7	    i©PŒ(ÝªÐM*  & e e 7	  7	  7	  Í9%
å€A7	  e   ò«À¼© }Í«P$ÝªÐM*  L e 7	  f7	  7	  †Íe €%
å€@7	    
ò«À¼© }Í«P&ì¨Ð*  r †Íe €e e 7	  æ ff%%¥¥ 7	  É«Ps*  ˜   %%7	  ö
 ôÆe 7	  ÖÍe €      „„ É@  ÝªÐMì¨ÐÝªÐM*  ¾ Û%Àá]£>X4™¼m&:šÖÉ@ÛåÛåÉ@7	  7	ÿ  $ì¨Ð  ä „        FO   ;dŽß*  Ös    ;dŽß   ¯”L  j¬""@      (  *  ;dÖs(v .«c'h6 Ì«t:h$ Ì« qh  Í«Sh\ 
  ¯”   
   ;dÖs  *    u-  U%u% u% Õ7	  <„ M-  "j¬""*  &  Í7	  =„ À ÀeP @!‚7	  
À   j¬"""j¬""( *  L Àe
 €!‚7	  „ T#	T#eå 7	  €„   j¬""$j¬""  r Ô÷       2O   ;dŽß*  ÷hy:    ;dŽß   ¯”L  \«”w@  •«œw@  *  •«™’@   ­x@  ù¯üX@            (  ;dÖs(  6ªa;h  ¯”   
   ;dÖs  *    ÷	  Å  fæ?ÿˆE Åå     B€Àå  €  ù¯üX
 ­x& ­x*  & "
À
ýÒÅåð ÒÅåð ÒÅå ÒÅå*  L  À %
À
ýÍ
õ

 å  eå  %
åMCæ   ­x\«”w*  r þÿÎe %Í`åÿÿe² å %
%
%
%
%
9	  ² *  ˜ ª Õ—# èÖÎ„     Æ Æ À º À º INPU*  ª •«™’•«œwÆ Æ À  º "À $º *  ¾ T OUTPUTÅe A1
úÿñ üÿIÉåŒ 1
 ù•  *  ä   —-  	s
 ñ øÿñ àþÿ„ s 1
øÿñ  
 `þÿñ„  „        >O   ;dŽß*  ÷h[q    ;dŽß   ¯”      L  Ä%x@  Ä%@  *  <&k@  <&@  <&ƒ:@  <&ãe@  <&¶p@  *  ô'Ä@  ô' q@  ô'Ä…@  ô'¤’@  æt <@  *  öt	@  Ý©Ø@  \«Þ@  \«y…@  „¯½`@  *  ¥¯ÜK@  h±p!@      (  ;dÖs(.•«œwh    •«™’h ¯”   
   ;dÖs  *    ÍE æ  ÍU €æ  ÍE €Í5  A Â&
r   
ô' qô'¤’*  & 
 ÒŽ
—# øÖÁ
ñA ñe üÿñ *  L úÿ1
úÿÅe Ö„ Á&@Àåh ñ5 þÿ¦*  r ÂeB Á ¥Á
ý÷	  Á bÁ
ý‚ÍU ð  „¯½`*  ˜  ñüÿ÷	  ÷	  A r
 @Àåh ‚°  ¥¯ÜK„¯½`*  ¾ " p ðe        p  ð•    ð•   æ  æ    æt <<&ãe$\«y…(\«Þ*  ä ¦æÿˆp  ðåî  ð„  0
 ð•      &öt	*  
ÍU @ð•   Í5 ðÕ   ðÕ   ÍE Í5 	  
<&<&k<&¶p*  0Í5 ðÕ   Î  Í5 Î  Í5  ÎU    <&ƒ:ô'Ä…ô'Ä(Ä%x*  VÍ5 ÎU  fÎe ‚  Îå Â‚o  —¨    Ä%*  |þ
  ú—¤: þ
  ¦  Î
—¨_ ûÊÅ  øÖ*  ¢Îå …#ÞÖB õ Ê•[ Bm Â
Ê•] ‚1
*  Èúÿqþÿp$ °# ÷	  œ* ±üÿ±
úÿ0Š" Åe  h±p!*  î ñ5€þÿñúÿw   ñU úÿ1
øÿ	 	  Ý©Ø   ñ5 @þÿ      1  1  „        O   ;dŽß*  Ÿ’à    ;dŽß   ¯”L  U«î~@  j¬À@  "      (  ;dÖs(f j¬L^h  ¯”   
   ;dÖs  *    B r# ¥7	  @f&Àå 	à&å  7	  U«î~*  &   Î
úÖæ %
ö Mö Mö M¶#   j¬À  L Íe0 7	  å
Î
ìÕÆe „   j¬À       äO   ;dŽß*  ÷hœ,    ;dŽß   ¯”L  $9ž!@  ´:òs@  *  ´:2“@  j¬""@  °úp@  ° }@  •± }@  *      (  ;dÖs(È"©ÀDhÜ "©®FhÜ Ý© }hd*  Ý©î~h`Ý©Øh¦A«ˆ,hpU« }h> U«î~hŒ *  U« ‚hb ”«Àh”«Kqh$”«      òyhŒô«:dh|*  j¬Àhdj¬h\j¬Kqh  j¬Àvh„þ¬¯yìP

  ¯”   
   ;dÖs  *    BA@ñ5  þÿÀåh ð‹" ñ úÿñšÿüÿ„ *  & A% 
‘Í
ýÕAeA@ñ5  þÿÀå*  L h ð‹" ñ úÿñšÿüÿ„ ñ5 @þÿ	÷	  	   $•± }*  r œ* ±üÿ„ ‰
ñ
 ñ üÿ„ A@ñ5  þÿ*  ˜ Àåh ð‹" ñ úÿñšÿüÿ„ ñ5  þÿ+Â„ Bì*  ¾  ° ÷	  ñ„  	 œ* ±üÿ„ A@ñ5    •± }*  ä þÿÀåh ð‹" ñ úÿñšÿüÿ„ ñ5  þÿÔÀ*  
$ À  BÂåŒ ‰àe)&
&
&
&f¦&
f&
Î•*  0 æ æ  æÿˆæ æ)ÿˆ‰ñ„  B“U%  ´:2“      *  V±üÿ„ 
å ABZew Îþe7	ÿå 7	*  |æÿ7	
ÿ„ ÂA @ñ5  þÿÀåh ð‹" 	ñ *  ¢úÿñšÿüÿÅe „ ¦u# M fq# e *  È7	äþÕ@B1à @l 1
 €ãÒ•  À
ü€e*  î
ÖAR”À
ýR•Õ‹ÖÕA‰ñ e*  7	tþ„ B ’e BA@ñ5  þÿÀåh ð‹" *  :ñ úÿñšÿüÿ„ A% 
RÍ
ýÕA#*  `Â
A@ñ5  þÿÀåh ð‹" 	ñ úÿñšÿ*  †üÿ„ Á
 ñúÿBÂñøÿñ5 @þÿ1
øÿñ5*  ¬  þÿ7÷	  œ* ±üÿ†±
úÿ±
øÿ	 	   ° }*  Òñ5 @þÿ1  „ ñ
 ñ5  þÿ	 ±
*  øøÿù•    ñúÿ      ù•   „ ‰
ñ üÿ„ 7	  B  &j¬""*  „ BÀ 0
øÿe)ÂåŒ &
&
&
&
æ„ ¦&
f&
*  DÎ• æ æ  æÿˆæ æ)ÿˆ‰B“±üÿ—   ´:òs*  j  ±
úÿÕq ¸„ Añ5  þÿÍ
 „ @B  $9ž!*  A1à @l e	`AÀ
R”üA@ 
 1
  ¶ ñ øÿÒ•  À
ü„        Â O   ;dŽß*  E, K    ;dŽß   ¯”L  s©À@      (    ;dÖs(x E, KhR ¯”   
   ;dÖs      )   R *  R æ  ÿˆý   B Ò‹Á  À ”Á
ýÅe ‡     s©Às©À        Ì O   ;dŽß*  ®S@Q    ;dŽß   ¯”L      (  ;dÖs      (6 *  ×ªƒŠh, ×ªˆ‹h  ×ªš‹h ×ª¨‹h ×ª³Œh" 
  ¯”   
   ;dÖs  *    @BÁ
ý„ Á
ý„ "Á
ý„ ¥  & Á
ý„ RÁ
ý„        nO   'íyÀ*  ÷h	#    'íyÀ   ¯”L  <&Kq@  $9Ì@  *  s©À@  U«î~@  „¯½`@  ¥¯ÜK@  ±lE@  *      (  ;dÖs(J¯Žwh ©p;h$¯”   
   ;dÖs  *    A@ñ5  þÿÀåh ð‹" ñ úÿñšÿüÿ„ ¥*  & ñ5 @þÿbñ5 €þÿW, „ e7	  ñ5  þÿf   U«î~*  L ñ5@ þÿOð8 Kf¦æ|³æäfÂeB ¦ *  r ¦ ¦ ¦ ¦ ¦  ¦ ¦ ¦ ¦ ¦*  ˜ 
 ¦ ¦       ‚÷	  ‡ðµ   &
¦f fæ  „¯½`<&Kq*  ¾ Gÿˆ‡&
&
&
&
f fæÿˆ†ß%    ±   "$9Ì$s©À*  ä Æe A‚ð ÷	  ñ5 þÿ÷	    ¥¯ÜK(±lE*  
÷	  B0Š" 2

 B„ Õ7	Þþ‡ Â Â`æ ¥  „¯½`  0
 ²

 7	ÂþâÎ
õæ3ÿˆ       ÒO   ;dŽß*  •’_s    ;dŽß   ¯”L  ´:2“@   ©p;@  "      (  ;dÖs(
j¬""h  ¯”   
   ;dÖs  *    Ì%
eõ  
Ì5 Ì5 ó5  *  & ó5  ÍEcÕ=Áþ BÀ* b˜À
ý¦Âe   þ *  L “ÀÀþ Ê•0 âŠŠüÒ‹dÈöÍ
A
        þ *  r  MÒ‹í‚ã&
&
&
æ  ¦f&
&
&
Î• æ*  ˜  æ  æÿˆæ æ)ÿˆÕó5  
Á5   ´:2“*  ¾ Á5 ó5  „ w   PASRUN -- ERROR    ©p;*  ä 00 00000 00000 00000 00000'èd 
           ~O   ;dŽß*  <m"    ;dŽß   ¯”L      (  ;dÖs(ä "  a©È}hŠ ¥«­ZhÀ é«Rh8 ¯”   
   ;dÖs  *    Á0 Àå
 
ûÀe: R‡ ÂÂÂÂÂÂ*  & Bà‡ Åå fæ=ÿˆ‡ B÷	ìÿ‚
@ ÷	¸ÿÒ•: *  L @ ÷	¬ÿÒ•: @
 ÷	 ÿÒ•. õ @ ÀÀ@m*  r  Á0 @í 
ûRÅe „ B÷	šÿ‚
À ÷	*  ˜ fÿ@        ÷	^ÿÒ•- @ ÷	RÿÒ•- @ ÷	FÿÅe *  ¾ „ ÷	fÿB ÂEøÿ÷	HÿBm ÷	@ÿBm
 Åe ¥„        b O   ;dŽß*  ÷hŠ(    ;dŽß   ¯”L  °úp@      (    ;dÖs(  þ¬¯yìP
¯”          Ä O   ;dŽß*  ’’$`    ;dŽß   ¯”L  j¬Àv@      (  "  ;dÖs(0 j¬€h  j¬ˆh ¯”   
   ;dÖs  *    å  õ õ$  õ*  å 7	  „ TR  $ * $j¬Àv  & UE  FALSE        öO   ;dŽß*  ÷h    ;dŽß   ¯”L  $9Ì@  s©À@  *   ©p;@   ­x@      (  ;dÖs(â u©ÀShN   \«KŠhÒ s³[dh  ¯”         
   ;dÖs  *    ? SY                     f|³æ æ*  &  æ æ æ 
æ æ æ *  L &
÷þÿ´ÿ÷ °ÿw®ÿ÷þÿªÿæœÿæÿˆ.‡
  
 ­xþÿ*  r &
æ  æ ¦  öe  ¶  æGÿˆ‡&
&

     *  ˜ &
&
æ ¦  öe  ¶  æÿˆ†ß%      
 &$9Ì(s©À(  ¾ ± æ>ÿæ)ÿˆ7	   $ * 0 6 < B H (   ©p; $ * 0  6 "< $B &H        RO   ;dŽß*  £;d    ;dŽß   ¯”L  ´:t	@  ´:Ü@  *      (  ;dÖs(€ t	Àh0 ÜÀh6 œ,|h$ *  œ,ih œ,sh œw|h œw`h  ¯”         
   ;dÖs  *    }  Åe ‡ u  Åe ‡ }  Åe ‡ uŸ*  &   Åe ‡ À  À  A ñ5  þÿÂ   ´:t	´:Ü*  L BœŠ &
&
&
&
&
&
&
f&
Ž¦&æÿˆ¦æ  r )ÿˆB“±üÿU%‡        bO   ;dŽß*  ÷h¶p    ;dŽß   ¯”L  ´:òs@  ´:2“@  *  Ý©Ø@  U« ‚@      (  ;dÖs(˜ Ý©Ýh   U«Ýh  ¯”   
   ;dÖs  *    
ÂA @ñ5  þÿÀåh ð‹" 	ñ úÿñ*  & šÿüÿÅe „ ñ5€ þÿp 0
 ÕÂw   w   &Ý©Ø*  L   å  ÂÍ  œ" e)&
f &
&
& f&
  U« ‚´:òs´:2“*  r f&
Ž¦f       æÿˆ¦æ)ÿˆB“±üÿÅe
 „        ¸ O   ;dŽß*  ê'Ð    ;dŽß   ¯”L  ,«0z@      (    ;dÖs(4 ¿©²sh  ¯”   
   ;dÖs  *    @À
B¥Á
ý%a&fæ÷   Ê	ƒ  $,«0z  & …„BÂÂ…`„        j O   ;dŽß*  ÷hñ    ;dŽß   ¯”L  \«ÞHSY\«”wH "  \«y…H      (  ;dÖs(  ¯”          O   ;dŽß*  \«Ó    ;dŽß   ¯”L  ´:2“@  :©@  "      (  ;dÖs(t \«Óh  ¯”   
   ;dÖs  *     @à  à  à  
÷	  
@Àå ³Š ×¬  :©*  &   	×¬ 
 3Š       Á+ Á$ &
&
&
fæ*  L  &&
&
&
Î• æ æ  æÿˆæ æ)ÿˆ  ´:2“  r „        œ O   ;dŽß*  \«a(    ;dŽß   ¯”L  ;d>(@      (    ;dÖs( \«a(h  ¯”   
   ;dÖs  "    å 	À %À
ýå÷	  „ Äe „   ;d>(       ÂO   	±Œ:  ;d>(    	±Œ:   
   ;d>(  *    B%„Åå  %
tøÿ%Íeôÿ.FQVåÍå 7	  
  (×ªˆ‹  *  &  %Íeàÿ
                    åÍå 7	*  L   
 %øÿå	 7	  %Íe %øÿMeB%
’å.   ×ªˆ‹  ¥ª@j  *  r 7	  M
MEÕw   %Íeàÿ%øÿMe%Íe %øÿ
  õª@j           ˜ MeB%
’A]%øÿå MetøÿÎ   €   € 2    ´ *  ´ %
túÿå tÞÿ4-úÿÞÿw   %Íeàÿ%øÿ%&  Ú úÿMeMe%Íeôÿ%úÿMeB%
’A]´
úÿã   Ì   Ì .    ü *  ü % åÿÿ%Íeàÿå %
%
%
%
%
7	  % 7	
  "•«™’  *  ×ªˆ‹@  ¥ª@j@  õª@j@  •«™’@  ô«:d@  *  "  B¥üÿ%
7	  Õw   % STATISTICS  ô«:d  Ý©@j  *  H FROM EXECUTION OF  åÍå  å e7	  %
  &j¬Àv  *  nÍe %øÿå
 7	  7	  % ============  j¬Àv  U«î~  *  ”==============================åÍå, %*  ºøÿå Meå      * 7	  7	  % 7	  % SOUR  j¬Àv  U«î~  U«î~  *  àCE CODE LINE NUMBER / NUMBER OF TIMES *  EXECUTEDåÍå4 å2 e7	  7	  % %
7	    j¬Àv  U«î~  (õª@j  *  ,Õw   % tÞÿ% %ÞÿB¥ å 7	  
  (j¬@8  *  R%ÞÿB¥ å 7	  7	  %ÞÿB¥ t Õ  j¬@8  U«î~   2  2D    x   6  6@   x  xÅe2 ‡             €*  Ý©@j@  j¬Àv@  U«î~@  j¬@8@  ;d>((€
  ;d>(h           „ O   ;dŽß*  ”T@8    ;dŽß   ¯”L      (  ;dÖs(   ÝªhLh       É«@8h  ¯”   
   ;dÖs      AMpM„ AUpe„        ¨ O   ;dŽß*  ~@8    ;dŽß   ¯”L  j¬""@      (  "  ;dÖs(" i©èŠh  ×ªhh ¯”   
   ;dÖs  &    B7	  

AÀr%„ 7	âÿM„   
j¬""    *  R%ÞÿB¥ å 7	  7	  %ÞÿB¥ t Õ  j¬@8  U«î~   2  2D    x   6  6@   x  xÅe2 ‡             €*  Ý©@j@  j¬Àv@  U«î~@  j¬@8@  ;d>((€
  ;d>(h                       *  ”T@8    ;dŽß   ¯”L      (  ;dÖs(   ÝªhLh           Ba¢_› 8$         ÁXÀO    7 2    “  € 4   ¼  T¬ ¬                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         0"3 T0£,3 T0;N3 T0cX3 T2"4 Ô2£,4 Ô2;N4 Ô2cX4 Ôt!Àv“ FRˆ,“ FTq8"“ F\q°r“ F‡s s“ Fé¨—(2 ~é¨˜(3 Té¨š(4 Ôé¨ç(2 ~é¨è(3 Té¨ê(4 Ôé¨„*   é¨¬*   é¨˜06 ¶ é¨À08  é¨Ä0 Ôé¨ì0 Ôé¨1§ Æ ì¨ ú ì¨—(© Š ì¨˜(© Š ì¨š(© Š ì¨ç(© Š ì¨è(© Š ì¨ê(© Š ì¨˜0© Š ì¨À0© Š ì¨1© Š õ¨—( 8 õ¨˜( 8 õ¨š( 8 õ¨ç( 8 õ¨è( 8 õ¨ê( 8 õ¨˜0 8 õ¨À0 8 õ¨1 8 û¨—(2 ~û¨˜(3 Tû¨š(4 Ôû¨ç(2 ~û¨è(3 Tû¨ê(4 Ôû¨„*   û¨¬*   û¨˜06 ¶ û¨À08  û¨Ä0 Ôû¨ì0 Ôû¨1§ Æ û¨6 ú ü¨P ©ª%f Ì©ªpf Ì2©ä4 Ô2©
z4 Ô      9©t!h >:©lzc þ :©€c þ :©™Â2 ~:©ÝÂ2 ~:©ìÂ2 ~:©¥Ã2 ~:©´Ã2 ~:©õÃ2 ~:©ÙÈ3 T:©É3 T:©,É3 T:©åÉ3 T:©ôÉ3 T:©5Ê3 T:©YÕ4 Ô:©Õ4 Ô:©¬Õ4 Ô:©eÖ4 Ô:©tÖ4 Ô:©µÖ4 Ô;©¿'h >;©†:h >;©hL„ ä;©zLh >;©hMh >;©jMh >;©ÐMw  ;©øMo ”;©™Â ,;©ÝÂ ,;©ìÂ ,;©¥Ã ,;©´Ã ,;©õÃ ,<©º ‹ X <©» Š p <©"" ´ <©#"~ Ä >©¨h >>©¹.[ Z >©Ì. ,>©cMh >>©èYh >>©™w ,>©Ýw ,>©ìw ,>©¥x ,>©´x ,>©õx ,?©Y ,?© ,?©¬ ,?©e ,?©t ,?©µ ,?©y[ Z ?©Y£ Ô?©£ Ô?©¬£ Ô?©e¤ Ô?©t¤ Ô?©µ¤ Ô?©™Â6 ¶       ?©ÝÂ6 ¶ ?©ìÂ6 ¶ ?©¥Ã6 ¶ ?©´Ã6 ¶ ?©õÃ6 ¶ ?©ÙÈ8  ?©É8  ?©,É8  ?©åÉ8  ?©ôÉ8  ?©5Ê8  ?©YÕ§ Æ ?©Õ§ Æ ?©¬Õ§ Æ ?©eÖ§ Æ ?©tÖ§ Æ ?©µÖ§ Æ ?©y×[ Z A©öZh >A©ÿZh >C©B âE©e ,E©2e ÔE©òy ,F©ªNh >F©@`h >G©#? P G©Õd â G©le žG©ze žG©{e žG©Ôft TG©âft TG©ãft TG©øfm Æ J©º † ‚J©» … NJ©""x ÄJ©#"w ‚J©K"p J©r‘ J©s € J©:‘ &J©;‘Œ ê J©¢’} ` J©£’| Z J©Ë’s nK©Ù} ,K©~ ,K©,~ ,K©{~  K©å~ ,K©ô~ ,K©5 ,K©Ð€ K©=Ÿh >O©5q’ JO©úq‰ > O©ûqˆ  O©bs{ H O©csz 6 O©‹sq  R©Ù   R©         R©,   R©å   R©ô   R©5   e©„dR "e©ûfR "t©P †©Š© Š Ã©’B âÐ©/£ ÔÜ©;"F .Ü©X"F .Ý©w~P Ý©Ñ~W  ø©ß§ Æ ø©/£ Ô4ªu:k P6ªÏ}B â©ªXk P¶ª·„P Ëªà   ËªŒ( ,ËªÂ2 ~ËªPÈ3 TËªÐÔ4 ÔÍª¨¢ rÍªÂž žÍªPÈž žÍªÐÔž žÎªí+T ¶ ÏªT ¶ Ïª˜!T ¶ Ïªð- ,Ïª(K ,ÏªHXT ¶ Ïª˜X ,ÐªÂ2 ~ÐªPÈ3 TÐªÐÔ4 ÔÒªD† ,ÒªJ† ,Öªà ÔÖªÂ6 ¶ ÖªPÈ8  ÖªÐÔ§ Æ Úªà   ÚªÂ= Ü ÚªPÈ= Ü ÚªÐÔ= Ü Ûªà ÔÛªÂ6 ¶ Ûª8Â ,ÛªPÈ8  ÛªÐÔ§ Æ êªP› 8 («LwB âU«Yfd â U«w~P U«Ñ~W Ú W«®sW ž‘«[K™  ’«,™  “«kM™  •«Ã^™        •«Ë`™  –«;™  «VK™  «™q™   «1™  ¢«€™  ¢«l™  ¢«á"™  ¢«[}™  £«1™  £«¶™  £«ç™  £«1™  £«C™  §«À™  §«üq™  ¨«q™  ¹«Ùd â ¹«Ìd â º«<R "º« <R "º«!<R "»«oKW ž»«pKW ž»«rKW ž»«vKW ž¼«´;“ F½«Ö%“ FÀ«""B âÃ«)#d â Ã«1#d â Ã«;#d â Ã«,:“ FÅ«4…“ FÇ«6f“ FÌ«ßg“ FÍ« ú Ï«	F“ Fá«ø$ î«“$ î«ÕZ$ î«Xz$ î«H…$ ó«À$ B¬òyd â C¬µ	d â ¬dE ~ ¬KV Ä ¬ NE ~ ¬<NA úƒ¬,% ìƒ¬4Kh >ƒ¬kMh >ƒ¬
Nh >„¬©% ì„¬%!h >…¬»G ¼ …¬{H ä …¬0XB â…¬PsE ~ …¬|—% ì‡¬À]B â‡¬`^E ~ ‡¬aE ~       ‡¬$aA ú‡¬ bA ú‰¬÷Xh >‰¬üXB â‰¬TZ  b‰¬WZ  b‰¬XZ  b‰¬€Z  b‰¬¤Z  b‰¬§Z  b‰¬¼^h >‰¬ò`h >‰¬ˆ–R "¬5a ,¬Ödh >¬"@ j ¬,"A ú¬…q@ j ¬q@ j ¬šY ’¬lh >’¬îh >’¬ê"h >“¬,[ Z “¬;	[ Z “¬Ë[ Z “¬šw[ Z “¬:}h >“¬hE ~ “¬’B â“¬â  b“¬ã  b“¬ä  b“¬›ƒ% ì”¬¸pP •¬4Kh >•¬kYh >•¬ŠZ  b•¬‹Z  b•¬ŒZ  b—¬üqh >µ¬5a ,Ó¬Ø_   ­“$ ­ÕZ$ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      »Ô!G ¼ 0(2 ,ö´r= Ü öšwž ž³€$ &ZŠ' ¤ Ë»%   Ë–, ÔË´r   Ëšw r{ùeH ä ~  © Š ]!ôT ¶ ]!<K ú »%o}2 ~»%p}3 T»%r}4 Ôe,8wF .–,X6 ¶ –,€8  –,Ð§ Æ œ,´V Ä œ,¡EW  Ä8@8„ äå8;‹ X å88;Š p ›:à~h >¨:@8 ž;;† ‚;8;… N';à8 € ';; &';8;Œ ê ';ˆ;‘ L;@8  ê;H’ Jê;;‰ > ê;8;ˆ  £K ŒR ¼ KTl†d â ”T } 8 S`l†f Ìó`""A úäfìk P\g¡EW Ú q€pw  %qPs ´ %qxs~ Ä èr€pt TUsPsx ÄUsxsw ‚gsPs} ` gsxs| Z Œs€p€ *tPs{ H *txsz 6 w<R "9wÈKW žDwÀvo ”šw [ Z 7x›r™  (yÀvm Æ *yø“ F•y¸yp       §y¸ys nòyw:  bjz¸yq  ;}ÀDc þ ·„[qP J†7xI H *’úD? P y–àL% ì˜8wE ~ …˜pq@ j —˜"Y å˜€WB âÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           ÔN  
 ÂpÁ*  Ë»%    ÂpÁ   ¯”L  ì¨@  G©#@  *  N©T
@  N©@  N©!£@  Í«@  ‡¬À]@  *      (  e©±|æé¨„*h  é¨¬*hB û¨„*h† *  û¨¬*hŒ R©Ùhþ R©hR©,hR©åhô *  R©ôhê R©5hËªàh’ Ó¬Ø_hR¯”   
   e©±  *    Â  NÎe CÀœ ø	  C Áœ ù	  f¦C  ì¨N©T
"N©*  & ÀÁD„ÅÞ	—¥ åÅ@ ‡ Â  NÎe   "ì¨*  L CÀœ ø	  C Àœ ø	  AC@&¦@  N©T
N©T
*  r AÂÃÞ	ƒÀœ ø	  ‡ Â  ¼Â  ÚNÎe   N©!£Í« Í«*  ˜ Ä C      Àœ ø	  ÀÁD€àÄ•0 `   G©# N©T
*  ¾ ‘~Ä0 ¡æ  ÎeÈ ÞÕ 	~S”‚~CÀœ   G©#*  ä ø	  ‡ ß	4Â… ß	4Â… ß	4Â… ß	  N©!£44 4*  
4Â… ß	4Â… ß	4Â… åÖm å  444*  0_   CÀœ ø	  ÁCÀœ ø	  @AÂÃÅe   ‡¬À]N©T
N©T
*  VD`&™ÎE¿ÿ„Ä`™ÄE¿ÿ!"ÖÄ€D*  |Á€à` Ä0 ¡
~Ä0 D¤~S¤*  ¢ƒ~Â‡ Â ‡ &Ä0 À
D¤~Â
Ä¤"  Èƒ~D’ÄEðÿÄ’ÄEðÿ–%
‡ –%à       LN  
 Â Í*  Ë–,    Â Í   ¯”L        ì¨@  û¨6@  *  G©#@  N©T
@  N©@  N©!£@  Í«@  *  ‡¬À]@  Ó¬Ø_@      (  e©Ý| é¨Ä0h  *  é¨ì0hÔ û¨Ä0hfû¨ì0hx?©Y£h8?©£hL*  ?©¬£hV?©e¤h.?©t¤h$?©µ¤hBE©2eh`*  Ð©/£hhø©/£hŒÖªàhÄÛªàhŠ¯”   
   e©Ý  *    NÎe Ÿhæ  åfED­ W­  JW­   hì¨*  & & Ff DEþ	 —¥ –%‡ åÅ@ –%‡ &‘f*  L  „Åb &þ	 €—¥ õÅ@ ÿÿAà„•ƒ  
  
G©#b *  r Âœ á×¬  ×¬ & Ä  Å ß	  –%‡   $û¨6*  ˜ „`Åv ß	  Ã „  ø	  Ö‡ Å „  &        
G©#v û¨6G©# N©!£$G©# *  ¾   5  E þ	 Ã êNÎe ŸŒæ  f  G©# "Œ&ì¨*  ä ED­ W­  áW­ & ÝDEþ	 ƒÀœ *  
ø	  Ö‡ &‘ „„
Åb &þ	 €Aà  N©!£G©#b *  0„•ƒ  Âœ á×¬  ª×¬ & ¦Ä  Å ß	*  V  ƒÀœ ø	  Ö‡ NÎe Ÿhæ  _  NÎe  û¨6N©!£h Í«$ *  | ŸŒæ  _ â NÎe Ä CÁœ Àœ ø	    ŒÍ«â G©# (N©T
*  ¢EfB BàÀÁDEß	  ƒÀœ ø	  ‡ NÎe  û¨6"N©!£*  È Ä CÁœ Àœ ø	  EfB BàÀÁDE        G©# N©T
*  îß	  ƒÁ Ál  áµ@ ÉÕ@ ÉÅ@ Àœ ø	    û¨6(N©!£*  ‡ åÖm å_   ß	`Âõ… ß	`Âð… ß	  ‡¬À]` `*  :`Âë… ß	`Âæ… ß	`Âá… ß	`ÂÜ…   ```"`*  `ŸŒ_   ÖCÀœ Ä ø	  ÁCÀœ Ä ø	"  Œ
Ó¬Ø_G©# N©T
&G©# *  †  _ ¬ÖCÀœ Ä ø	  ÁCÀœ Ä ø	  (  N©¬G©# N©T
$G©# (N©T
*  ¬¦s¬  "æf@œ Âœ àCß	€Á…  "*  ÒƒÄœ ffBœ Àœ àß	…Dœ @A  *  ø‡ Dœ @AÂÃ‡ ÀÁÅN „`&ß	  ‚      C  G©#N $û¨6  ‡        RN  
 ÂpÆ*  Ë´r    ÂpÆ   ¯”L  û¨6@  G©#@  *  N©T
@  N©!£@      (  e©ž|€ Úªàh  
  ¯”   
   e©ž  *    NÎe Ä CÁœ Àœ ø	  EfB BàÀÁ  G©# N©T
*  & DEß	  ƒ 5 ÄÅ ß	J Àœ ø	  ‡ a  
û¨6J $N©!£*  L õµ@ ÿÿW©y Í•p Ä
W©9 
Í•0 æ    (G©#  r ÎeÈ ÞÕ ‡ Š‡        ˆN  
 Â˜Á*  Ëšw    Â˜Á   ¯”L  û¨6@  G©#@  *  N©!£@      (  e©½|ž Íª¨¢h  ¯”   
   e©½  *    NÎe æ  ÎeÈ       Þ5 8CÁœ ÀEDB Bà  G©#*  & ÁW¤0 ~€
Á
f`D Ö_ „ fW­    „ *  L  W­ & 
E ß	  ƒÀœ ø	  ‡ Å& ß	  û¨6 N©!£&G©#& *  r   Ã „  ø	  ‡ æ  ÎeÈ ÞÕ æ  ÎeÈ "  û¨6G©# N©!£G©#$G©#
  ˜ ÞÅ ‡        2N  
 ÂHÁ*  ]!<K    ÂHÁ   ¯”L  G©#@      (  *  •©!…|Àì¨h  û¨6hPÍ«hv ¯”   
   •©!…  *    &Ä•0 D¤~€
á‹Ä¤ƒ~‚
ã‹„`ƒ`afñµ*  & @ ÿÿóµ@ ÿÿß	˜ …‡ ß	¢óµ@ ÿÿß	
  ˜ ¢*  L ¢À5 ÀU ß	˜ ÀU …À5 õÕ@       ÿÿ‡ 
  ¢˜ *  r …‡ `fß	† àß	  áµ@ ÑÕ@ ‡ ÑÅ@ ‡ 
  †   *  ˜   Dàà¦&
„ =€à„à&&€ÂC*  ¾ 
B˜ÂÅðÿ„`Â˜ÂÅðÿ„`%zŽ~‚ Ž 8Â
  zŽ*  ä 	À˜ÀÅðÿ`%zŽ‰~€‚€à	Äæ  Îe  zŽ&G©#*  
È ÞÕ ‡ Äå•1 À
Ã•0 å~‡  
B˜ÂÅðÿ*  0€`Â˜ÂÅðÿ€`%œz œŽæ  ÎeÈ ÞÕ ‡ ‚Ö  zŽG©#*  VÂ	À˜ÀEðÿ`%zŽ‰~æ  ÎeÈ ÞÕ ‡ 01  zŽG©#*  |234567890123456789          *  ¢ (àƒàÀ
S¤~æ”ÎÅ@ f”ÎÅ@ –¥*  Èå•0  
‡ c¨€
      `ƒ`¦BÁƒ€æ *  îc¨€
`ƒ`&
&¦
D˜ÄEðÿaÎ
Ä˜ÄEðÿá*  „œ„ö
 ¡0 %‘ÂÂ~Ö„å•0   „*  :€‡ –%€æ  ÎeÈ ÞÕ ‡ æÃ0 `ae¨ff  G©#*  `f’ÑÅ@ …
&
Â#åÄ
„~àe˜~Äå*  †€^ÁE¿ÿ^Ðƒ‡ ` áe˜C¨~ðæ    (G©#  ¬ÎeÈ ÞÕ é`€`äN’Ü       N  
 Â˜Á*  0(2    Â˜Á   ¯”L  Ü©;"@  ‡¬À]@  *      (  ô¨Ae<R;©™Âh;©ÝÂh";©ìÂh0*  ;©¥Ãhø;©´Ãhê;©õÃh>©Ì.hz>©™whZ*  >©Ýwhj>©ìwhr>©¥xhR>©´xhJ>©õxhb*  ?©Yh¶?©h      Æ?©¬hÎ?©eh®?©th¦*  ?©µh¾E©ehÖE©òyhþ K©Ù}hÐ K©~hà *  K©,~hè K©å~hÈ K©ô~hÀ K©5hØ ËªŒ(h@ *  Ïªð-ht Ïª(Kh‚ Ïª˜Xht ÒªD†h  ÒªJ†h" "  Ûª8Âh¦ ¬5ah µ¬5ah& ¯”   
   ô¨Ae  *    ß	² €àS”‚~… `S”‚~ Ä  ‘~… ß	² 
  ² (² *  & €à`í` Ä  ‘~Âå… ß	² à€`Á5   ² *  L  S”À
„SÀ5 S”ÂÀ  ‚~*  r … ß	  €Áß	  Áß	² À% 	S”Â
… ~  Ü©;"Ü©;"² *  ˜  àøA’S‚~… @A9ž  … A@ACÂÃ*  ¾ ‡ ß	þ ‡… ß	þ ƒ… ß	þ … ß	þ 	… ß	      þ   þ þ þ  þ (þ *  ä †… ß	þ ‚… åÖm å_   ACÅe {®   
þ ‡¬À]*  
 ‡ @AÂÃà€`ÀS¤~Â‡ *  0À   úƒ~‡ À  @¤óƒ~‡ ß	zÐ‡… ß	z
   z(z*  VÌƒ… ß	zÈ… ß	zÄ… ß	zÀ†… ß	z¼‚… ß	  
zzz"z*  |² Åe À% 
S¤Â
~á ø‡ A’S ü  ² *  ¢ƒ~‡ ß	Ö¢‡… ß	Öžƒ… ß	Öš… ß	Ö–… ß	  
ÖÖÖ"Ö*  ÈÖ’†… ß	ÖŽ‚… ß	  €Áß	  Åe _ @A  ÖÖÜ©;"Ü©;"$*  î9®  $‡*@A9®  ƒ#@A9®  *  @A9®  @A9®  †      @A9®    :‚õ Ö] _   Åe …   ‡¬À]       :N  
 Â Á*  ”T }    Â Á   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  »«oK@  »«pK@  »«rK@  »«vK@  *      (  Ýª N<šõ¨—(h  õ¨˜(hÂ õ¨š(h~*  õ¨ç(h õ¨è(hú õ¨ê(h¾õ¨˜0h õ¨À0h  õ¨1hÒêªP›hâ¯”   
   Ýª N  *    ß	 ]… @¡ pn‡‡ ß	 ]… ŸB   .     $B &N©¯(. *  &   8   …  	pR
‡ ÒÀ€"V‡ CÄ Àœ   »«pK8 N©Y$G©# *  L €bô   Ø	ÁDœ &CÄ Àœ       €dô   Ø	
  G©# *  r Äœ a@ Á ƒ¦ÂN Ë	Ä CÂœ ‚å  G©#N  G©# *  ˜  ù	   Ñæ&Ù	ƒ„ó     @dB*  ¾ Ø	‚ ß	Î @ˆ… @AÂb ß	€ÐÐÃÐ   
Î G©#b *  ä È ‡ æ  ÎeÈ ÞÕ ‡ ß	Î ò áJ
  G©#Î *  
âÜŸB     Ú   … f& Ž
	qR
   
B N©°»«rKÚ N©*  0ò DqJaD2a @á€
 qRaD
aò *  VpR`@
`Âå …‡ ÃqÄ`‡ &qÄ`„e*  |‡ ß	Ž@ˆ… @AÂb ß	â€Àe Ð  ŽG©#b  â*  ¢ÄÃ $Ã~‡ æ  ÎeÈ       ÞÕ ‡ ß	Žò Ý  G©#"Ž$  ÈDN…_ €ŸB   â  š  … f&
Ä$  €B N©²â»«vKšN©Ñ*  èv ð  ß	€N
ñ Eß	€N
ß	2  G©#v €"€(2*  ÖÁe À a
~À Ñe †Q~…‡ Ã*  4 Âe "
Â~ß	Tß	Tß	Tß	TÂå ‡ &À  TTTT*  Z Dß	fRaDaRRJÂå ~Âå €Áå ‡   
f  €Ã LT
Ã~Äå Ôe TTT‡       N  
 Â¨À*  ~      Â¨À   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  »«oK@  »«pK@  »«rK@        »«vK@  *      (  i©€‰<lì¨—(h  ì¨˜(hÐ ì¨š(hž*  ì¨ç(h ì¨è(hö ì¨ê(hÊì¨˜0h. ì¨À0h  ì¨1hÜ†©Šhð¯”   
   i©€‰  *    BAÀr…… æ  ÎeÈ ÞÕ ‡ BAÀrô…  G©#*  &  … ŸJ      >   … ‰rä… ‡ C  J N©¯»«pK> N©Y*  L Ä Àœ €bô   Ø	ÁCÄ Àœ €dô     G©# G©# *  r Ø	æœ Ã Ä: €Ô~€ãÔ~€•ƒBœ à
  G©#: *  ˜ @ œ `Ä  Û	A   ÂæÊ	€Ã D  G©# &G©# *  ¾ ó    dÙ	‚ ß	Ü BJ… @Cf  Ü *  ä       ÀÁÂÃß	6…‡ ß	Ü Áë AçŸJ   6Ü (J *  
       … f&DEÀÁÂÃß	6‚  N©°»«rK
N©$6*  0J…‡ &
Ã
@
A
B
C
Àe ABCN
Å*  VEN
æ  ÀABCáƒCáaCCa*  |€
Î
ïÁæ  ÎeÈ ÞÕ –% A‡ ß	®  G©#(®*  ¢A	… ACÀb Â Ð0
 „~Â €à
  G©#b *  Èß	®ð çß	  ãŸJ      ì  … Â&  ®õª1J N©² »«vK"ì$N©Ñ*  î f&
ƒ`ã„`ƒƒÅd
Â~Å
Ôe TB*  N
ñ Ä~ Áe ddddß	  N
æ@ E  G©#~        õª1*  :Ä aå‹)ƒ`ã‹ƒ~ ! É_*  `„àÄe K£ƒ„
ÄÂ €`ááà˜*  †‚~ ŠWq Ná
–%…‡ æ  ÎeÈ ÞÕ öÅe  G©#*  ¬ BCDEÐPPHEDCBÀå Eä„ƒ*  Ò‚Däƒ‚Cä‚BâÁå Î
æÀå EdDCB*  øDdCBCdBBbîÁå ˆ
Î
Ó–%ß	  …‡   $õª1*  ‚
‚€`€`C—  
,þÿ‡æ  ÎeÈ ÞÕ 
  G©#*  Dw Ä ÄàwÿÿsÄe €wÿÿsD’~
  jÒ       \N  
 ÂøÀ*  ³€    ÂøÀ   ¯”L  G©#@  ‡¬À]@  *      (  D©€(á«øh° î«“h¸ î«ÕZh *  î«      Xzhú î«H…h  ó«Àhò ­“hÀ ­ÕZh 
  ¯”   
   D©€  *    ß	 o… ß	 k… DÅe   —   ;— 
    *  & & 8ÀE ÿz  : B | ‚ À
B`À
B
Ã#    : B | ‚ *  L ÄX ”¢#Ã~‡ ABCDEFGHIJKLMNOPQR01234567  X   r 89[]?!:{}å   | *  | B`BÂ
—¢+ —¢- —¢  ‡ ÀW¢0 *  ¢ W¤9 ~´ ‡ ß	À … ß	À … DÅe  
  À À *  È W¢  W¢A W¢Z 
~´ ‡ åÖm å*  î _   ß	ö… ß	ò… Ä  @ @Åe  =  ‡¬À]
G©#    ‡        ¸N  
 ÂèÆ*        y–àL    ÂèÆ   ¯”L  C©@  G©#@  *  6ªÏ}@  Ûªl†@  («Lw@  “¬’@      (  *  ƒ¬,|V ƒ¬,h  “¬›ƒ|| “¬›ƒh  …¬|—| "  …¬|—h  „¬©| „¬©h  ¯”   
   ƒ¬,  *    Ä  t2 &ft4   PAB Á
û  G©#*  & €t(  &ü	4 ß	  Ä  Œß	  ô&   («LwG©#"6ªÏ}  L ü	& _     C© “¬›ƒ  *    Ä  ô 
´
 44 8 4¯  !… æ  Îe  G©#&G©#*  & ª Þ  æ ß	   8 Ä  L4 æ  ß	    Ûªl†8 G©#(Ûªl†*  L  P æ  Îeª Þ _   æ ß	   l æ  Îe"        P 
G©#“¬’Ûªl†"l &G©#  r ª Þ, _     “¬’ …¬|—      Ä  4
& 4
 4
8 Ö‡   G©# „¬©  "    @•ÀÄ   m A•B2 re F~…   
G©#       ÚN  
 ÂðÒ*  &ZŠ    ÂðÒ   ¯”L  G©#@  ‡¬À]@  *      (  F©dŒ|zN©¯h–N©°h
N©²h~*  N©T
h²N©YhÐN©hDN©Ñh¸N©hz*  N©/wh‚N©!£hê´©øhõª0,h õª2,h> *  õª1h<¼«/hÓ¬ÐMhTä¬àyh\¯”   
   F©dŒ  *    û €; ‡ È€0þÿˆ‡ È€ ‡ *  & È€P
P
H
Èe ``‡ È	€H
`
`
`
Ðe P*  L       PH‡ È	€P
P
P
H
Èe ```‡ ‡ ß	v ß	  &v *  r R ‡   Àe Ã Èààà‡ ôœ  Ã   R *  ˜ Ãe   ÐÐÐÈ‡ ß	¼ ß	: ‡ ôœ  Ã
  ¼ : *  ¾    ÐÐÐÈ‡ ôœ  Ã   Ãe Ð*  ä ÐÐÈ‡ ß	ø ß	R ‡   Àe È ààà
  ø R *  
‡ ß	ß	R ‡   Àe Ã Èààà‡ 
  
R *  0ß	:ß	& ‡   Àe Ã Èàà‡ ß	`ß	  :
& &`*  V  ‡ ôœ  ü  ‡ ß	zß	: ‡ ôœ       z: *  | Ð ÐÐÈ‡ ß	œß	: ‡ ôœ  Ã  
  œ: *  ¢ ÐÐÐÈ‡ ôœ        Ã   Ð ÐÐÈ*  È‡ ß	Öß	 ‡   ð  È‡ ß	ðß	   
Ö $ð( *  î‡   Ã ð È‡ ß	ß	& ‡   Àe 
  & *  È àà‡ ß	*ß	& ‡   Àe Ã Èà
  *& *  :à‡ ß	Pß	 ‡ ôœ    Ð È‡ ß	
  P *  `nß	 ‡ ôœ  Ã   ÐÈ‡ ôœ  Ã
  n *  †   Ð È‡ j j             j j j   j j $j &j (j   ¬j j j ¸¸¸¸¸¸â*  j j j 
¸¸¸¸¸¸â  Àj ¸¸¸¸¸¸¸P`*  j ¸¸
¸¸¸¸¸P      `  ÔÌÖî ø P`@P*  ÌÖ
î ø P`@P  èjzLþLLLLT`*  jzL
þLLLLT`  üLLLLLLLJJ~*  LLL
LLLLJJ~   ~        JJj j j j ØØØ*  ~JJj j j j ØØØ  ,ØØØúJØØØØØ*  ØØØ
úJØØØØØ  @ØØP`æð **  ØØP
`æð *  TP`^nŒœXZXX*  P`^
nŒœXZXX  hXXj      `XXXXXX*  XXj
`XXXXXX  |Xtt°°Ž Ž Ð Ð t*  Xtt
°°Ž Ž Ð Ð t  t––j j øøøøø*  t––
j j øøøøø  ¤øtøøøøøøø*  øt
øøøøøøø  ¸P`æð0:l v P`*  P`æ
ð0:l v P`  Ì^n¬ ¼ dÀdddd*  ^n¬ 
¼ dÀdddd*  à€`dddddddôœ    ôœ  ŸBÃ *  €`d
dddddd$B*  æ`f      Ã	
—r
 Ãe0 áƒ
~Ä0 !‘*  ,~„ÖäÕ@ …ƒ‚‡ f&f J ôœ  *  R  ô  ŸBÄ ¦B`fÂÌ  B*  x…
s
 DÅ! w Äå
 wÿÿs
 Äe*  ž €s
 Åe0 a‘~_ .ôœ    ôœ  ŸB
  .(B*  ÄÅ Åe f`ff„fffÌÄå ß	<ä  &<*  êä%ôþÿ
ôúÿÄå Æe µÅ 
*  —  —v Âå
 —vÿÿ—r
 Âe €—r
 ŒÂ*  6TÂe0 ¡Äe ,~Æe _ .ß	þÀœ x êß	Z  .þ$ê(Z*  \Àœ x êß	ÀÀœ x ê&Ä  Ìß	~„_ N  
êÀêG©#  "~(N*  ‚&      Ä  Ìß	Ž „_ ´&Ä  Ìß	Ð „_ ´¦"  G©#  Ž ´G©#   Ð &´*  ¨ß	\ü ‚‡ ¦ß	\  Ðˆõ¦&ff
  \\*  Î ÀÁ ` “àW¤0 ~

á‹&f*  ô 	 À	 ß	x€Õ•ÕÕÀå	 Áe	 Åå  x*   D”ÄEðÿæ B—p
 Âe
 aBÕ„Î
ôÖ*  @~áµ@ DÄå ß	<…ƒ‚‡ f&ÀÁ   <*  f` “àß	x„‡ D

£0 „
~Â  x*  ŒWp
 —p
 Âe
 `•ÂEðÿƒ`A~©p A*  ²B‡ ôœ  fß	È‡ Àœ ø	²D_ ¦  È"²(¦*  Øôœ  fß	è‡ Àœ ø	²D_       ¶ôœ    è²"¶*  þfß	‡ Àœ ø	²D_ Æß	¶Ä_ ð&  ²Æ ¶&ð*  $Ä  ß	Æ„_ :ß	ÆÄ_ v T
T
T
L
Äå Ôe  G©#  
Æ:Æv *  J TTT‡ &Ä  Œ  ß	þ„ß	–‡ &Ä    G©#  þ –(G©#  *  pŒ  ß	Z„ß	–‡ &Ä  Œ  ß	À„ß	–‡   
Z–G©#   À&–*  –f¦fÅ  Âµ  
A•ÁÅ0 @ÐÂ
@•*  ¼ÀEp t Œ~W¹@ ÀÕ ÀÕ …‚‡ *  â&Ä  ß	*„ôœ  ß	¦‡ &Ä  ß	*„ôœ  G©#  *¦ G©#  $**    ß	¶‡ &Ä  ß	*„ôœ  ß	Æ‡       f¦  
¶G©#  *"Æ*  .fÌôœ  ÂÅ Âµ A•ÁÕ0 SÂ

AÕ*  T 
r ÀÕ0 ~†Á% ãÕ@ …‚‡   zòòpp‚‚””òò*  òòp
p‚‚””òò  ŽNN´´&	$	F	š	ô	N
*  NN´
´&	$	F	š	ô	N
  ¢*ò„
„
„
„
„
„
òò*  *ò„

„
„
„
„
„
òò  ¶pp‚‚””òòNN*  pp‚
‚””òòNN  Ê´´&	$	(	b	Î	&
*ò*  ´´&	
$	(	b	Î	&
*ò  Þ„
„
„
„
„
„
¦¦*  „
„
„

„
      „
„
¦¦  ò""22¦¦¶¶ÆÆ*  ""2
2¦¦¶¶ÆÆ  	ž
$	¬
º
Ú
ø
–¦ž
ž
*  ž
$	¬

º
Ú
ø
–¦ž
ž
*  	ž
ž
ž
ž
ž
‡ ‡ À’Àl ˜¦6‘ ö
„Ì	  ž
ž
ž

ž
ž
"ö
*  @	€ˆ•‡ À’Àl ˜ö
„Ì	€’ì
‡ ÀÀb
  ö
"ì
*  f	Ä–Æå Ž 6‘ 6˜ +ö
Ä–ÄÅ¿ÿ+ÁÑ„æ  ö
*  Œ	ãÌ	€„Œ•ˆ•‡ ÀÀbÄ–+ö
Ä–ÄÅ¿ÿ+Á Ñ„  ö
*  ²	æãÌ	€„Ÿ  ÄÅ¿ÿÁÑ’ì
‡ Ä’Äl Ì¥-   ì
*  Ø	€™&ÌÕ@ €™&È	€ˆ•‡ Ä’Äl Ì¥- *  þ	ôÕ@ ÿÿ€È	      €ðµ@ ÿÿÈ•+ ‡ È•- àÅ@ *  $
‡ À’Ä  aä¥- „˜&ÈÕ@ „˜&Ì	€*  J
ˆ•‡ Ä’À `à¥- äÕ@ „ÎÌ	€ `äµ*  p
@ à•+ ‡ ÌÅ@ à•- ‡ ×" ‡ ÄÄbÄå Ã*  –
ú 3 ‡ Àœ  Àl àÅ@ ‡ À’Àl ˜ì
‡ À’  G©#ú $ì
*  ¼
Ä  aÀ
Èµ@ ÈÅ@ ÌÕ@  “œì
‡ À’Àl   ì
*  â
àµ@ ÈÅ@ Ì•- ‡ Ì•+ ‡ À’Ä  aàµ@ ä•*  + ‡ ÈÅ@ ä•- ‡  p    {ABCDEFGHI01234567*  .89p    0@123456789qrstuvwxy        0 p*  T        }JKLMNOPQR           0 p}JKLMN   zOPQR 0 p¬¬ÖÖèèøø¬¬*  ¬¬ÖÖèèø      ø¬¬  –²²ÀÀ*  ²²À
À*  ªÃ ‡ Ä À #G‡ Ä À %@ %>  *  Ð #<‡ Ä ô À 4‡ Ä ô À +*  öôÄ ô À %#õCNÄ Àœ ø	²fÀ  G©# $²*  Ä
•W¡0 ~×p
 ‡•ÅEðÿCa…	~¹@ *  B…‡ …Ãÿÿ² ‡ ÀÈ Š… ÀÈ Èµ Åe  G©#È  G©#È   h … õ Ö] _     ‡¬À]       ÖN  
 Â¨À*  »%o}    Â¨À   ¯”L  G©#@  N©¯@  *  N©Y@  ‡¬À]@      (  Ã©o}|¢ é¨—(h  *  é¨ç(h û¨—(h( û¨ç(      h4 :©™Âhv :©ÝÂh‚ *  :©ìÂhˆ :©¥Ãhp :©´Ãhj :©õÃh| ËªÂhH   ÐªÂhD ¯”   
   Ã©o}  *    DDg…… æ  ÎeÈ ÞÕ Õ… DDgõ…€  G©#*  & … ADDâí…… ADDâç…€… ]… CÄ*  L  Àœ B´    ø	  „  ø	  … ]']'  G©# N©¯N©Y*  r ]'
]']'
]'õ Ö]   ˜ _   Åe …   ‡¬À]       €N  
 Â€À*  »%p}    Â€À   ¯”L  G©#@  N©°@  *  N©@  ‡¬À]@      (  Ã©p}|0"hÎ *  0£,hê 0;Nh¶ 0cXhÜ é¨˜(h  é¨è(h( *  û¨˜(hJ û¨è(hd :©      ÙÈhÊ :©Éhæ :©,ÉhÄ *  :©åÉhø :©ôÉh² :©5ÊhØ ËªPÈh ÐªPÈh† 
  ¯”   
   Ã©p}  *    @ABCdD…Db…Ò
… æ  ÎeÈ ÞÕ    G©#*  & … @ABCdDñ…Dbï…€„Ò
… @*  L ABCDä„à…âÞ…Ò
… @ABCDä„*  r Ó…âÑ…€„Ò
… @A	… CÄ Àœ
  &G©# *  ˜  B´    ø	  „  ø	  … @A$	"!'  N©°N©*  ¾ !(‡$A@ö@A$	"@A$	"*  ä @A$	"!(†
A@öõ Ö] _   
  Åe …   ‡¬À]       âN  
 ÂÐÀ*  »%r}    ÂÐÀ   ¯”L        G©#@  N©²@  *  N©Ñ@  ‡¬À]@      (  Ã©r}|F2"hò *  2£,h2;NhÎ 2cXhé¨š(h  é¨ê(hJ *  û¨š(hf û¨ê(h˜ 2©äh 2©
zhp :©YÕhî *  :©Õh:©¬Õhè :©eÖh,:©tÖhÊ :©µÖhþ   ËªÐÔh¬ ÐªÐÔhž ¯”   
   Ã©r}  *    ß	 @PÐ… D@d†BCD   *  & 
…dCD…dD…b…‡ æ  ÎeÈ ÞÕ ‡ ß	  G©#*  L  Ú€A
B
C
D
Áe Ó†BCDÏß	l Ì@D
    l *  r ä†‚ƒ„Ü…äƒ„Ø…ä„Õ…âÓ…‡ *  ˜ ß	l Ø@A	… CÄ Àœ BŒø	    l G©# (N©²*        ¾ „  ø	  … @AÂ €``	",2‚!(ƒ~  N©Ñ*  ä &‡,A@ð@AÂ $#ƒ~@AÂ $*  
ƒ~@AÂ €``	"
‚!(ƒ~†
A@  0ðõ Ö] _   Åe …   ‡¬À]       PN  
 ÂøÀ*  –,X    ÂøÀ   ¯”L  G©#@  N©¯@  *  N©Y@  »«oK@  ‡¬À]@      (  Ý©ïW|n*  é¨˜0h  û¨˜0h" ?©™Âh2?©ÝÂhF?©ìÂhP*  ?©¥Ãh(?©´Ãh?©õÃh<ÖªÂh~ ÛªÂh< 
  ¯”   
   Ý©ïW  *    ß	® Cb…Ä ü ACœ Âà%  ß	®   ® G©# (® *  & Câï„æ  ÎeÈ ÞÕ Õ… CÀœ ABœ Äœ         G©#*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©¯G©# »«oK*  r ø	  … <
 ôCÄ Àœ Ì ø	  Ä ôœ   N©YG©#  N©¯$G©# *  ˜  ü  < DË àCÄ Àœ Ì ø	
  G©# *  ¾   ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©¯G©# N©¯ G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ   
»«oK »«oK*  
Á ‡ Bœ @ Á ‡ ß	® 	" ß	® 	"
  ® $® *  0ß	® 	"ß	® 	"ß	® 	"ß	® 	"  ® ® ® &®   Võ Ö] _   Åe …   ‡¬      À]       ˜N  
 ÂÐÀ*  –,€    ÂÐÀ   ¯”L  0"@  0£,@  *  0;N@  0cX@  G©#@  N©°@  N©@  *  õª0,@  »«pK@      (  Ý©ðW|lé¨À0h  *  û¨À0h. ?©ÙÈhF?©Éhd?©,ÉhV?©åÉh8*  ?©ôÉh0?©5ÊhNÖªPÈh– ÛªPÈhP ¯”   
   Ý©ðW  *    ß	À CdD…Db…À  Ñ	ACœ   À G©# *  & Âà($ß	À CDä„…âé„æ  ÎeÈ ÞÕ   À  G©#*  L Õ… CÀœ ABœ Äœ áÄ LŒàø	  À  G©# &N©°*  r Ä ß	  DË	   ø	  …  

òC  G©# 
»«pKN©*        ˜ Ä Àœ Ì	 ø	  Ä À• Ì	 ø	  ß	  D$  G©# N©°G©# "N©&õª0,*  ¾ áCÄ Àœ Ì	 ø	  ÁBœ CÄ Àœ Ì  
G©# N©°"G©# *  ä 	 ø	  Ä Àœ à
Àß	  @ Bœ    N©°G©# »«pK*  
‡ @ß	    Âœ Á ‡ Bœ @ Á ‡   »«pK*  0ß	À _   ß	À @_   ß	À _   ß	À _   *  À 
0;NÀ 0£,À  0"$À (0cX  Vß	À @_   ß	À _     À 0;NÀ 0£,      ²N  
 Â Á*  –,Ð    Â Á   ¯”L  2"@  2£,@  *  2;N@  2cX@  2©ä@  2©
z@        G©#@  *  N©²@  N©Ñ@  õª2,@  »«rK@      (  *  Ý©òW|\é¨1h  û¨1h. ?©YÕh6?©ÕhT*  ?©¬ÕhF?©eÖh(?©tÖh ?©µÖh>ø©ßh°   ÖªÐÔh† ÛªÐÔh< ¯”   
   Ý©òW  *    ß	° ¦Dß	  Àb PÐÄ A‚Cœ Âà  ° 2©äG©#b G©# *  &  ß	° ¦Dß	  èCÀœ ABœ Äœ   ° 2©
z*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©²G©# »«rK*  r ø	  …  



ðCÄ Àœ Ì ø	    N©ÑG©# (N©²*  ˜ Ä À• Ì ø	  ß	  DßCÄ Àœ Ì   G©      # N©Ñõª2, G©# *  ¾ ø	  ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©²G©# N©²"G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ  »«rK"»«rK*  
 Á ‡ Bœ @ Á ‡ ß	° _   ß	° @  °  2;N$° *  0_   ß	° _   ß	° _   ß	° @_   ß	&  2£,° 2"° 2cX° &2;N
  V° _     ° 2£,      ŒN  
 ÂøÀ*  öšw    ÂøÀ   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  W«®s@  »«oK@  »«pK@  »«rK@  *      (ˆÍªÂh4 ÍªPÈh      ’ ÍªÐÔh ¯”   
         *    CAæ  ÎeÈ Þ5 Bœ  @œ àÀœ `  
G©#*  & 
àÀœ ‡ ± ‡ ß	  %‡&Ä ø	  Â% 	À    G©#  N©¯*  L   —t 2   À‚Ä ß	  D  ø	  W«®sG©# »«oK*  r   … æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  -‡  N©Y
G©#G©#&  *  ˜ &Ä ø	  Â%
 Ä   D—t Âe  G©# N©°*  ¾  "!" ‚À‚Ä ß	  D  ø	  …   W«®s G©# »«pK&N©*  ä æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  :‡&Ä  G©#G©#"  *  
 ø	  Â%       À Àe Ð	ÄB $$$$ß	  G©# N©²G©#B *  0   —t Âe "(	"(‡‚"(‡‚"(†À‚  õª1W«®s *  VÄ ß	  D  ø	  … æ  ÎeÈ ÞÕ Öæ  G©# 
»«rKN©ÑG©#  |  ÎeÈ ÞÅ …   G©#       tN  
 Â¨À*  ö´r    Â¨À   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  »«oK@  »«pK@  »«rK@      (  ©^Z|¸"  ÚªÂh  ÚªPÈhn ÚªÐÔh ¯”   
   ©^Z  *    CÄ Àœ ô   ø	  AÂœ Dœ áÀ ø  G©# N©¯&G©# *  &   Â
€

      ß	  û €< ün  T…Bœ  »«oK*  L  Ãœ Âà ß	  Dó     ø	  … CÄ  »«oK"N©Y*  r  Àœ ô	   ø	  AÂœ Dœ áÀ  Ì  G©# N©°"G©# *  ˜  4
 Â
€

ß	  À  ð €2   »«pK*  ¾ 
² dJ…
b…Bœ Ãœ Âà ß	  Dó  "»«pK*  ä 	     ø	  … æ  ÎeÈ ÞÕ … CÄ Àœ   N©G©#$G©# *  
ô   ø	  AÂœ Dœ áÀ  Ì 4
   N©²G©# *  04
 4
 Â
€

ß	  À  ð €J
  »«rK*  Vr
 r
 r
 Êe r r r dJr r*  | ¹…d      Jr ´…dJ±…
b¯…Bœ Ãœ Âà ß	  ¢  Dó     ø	  …   »«rKN©Ñ       N  
 Â`Ç*  *’úD    Â`Ç   ¯”L      (  j¬úDì´  G©#h  ¯”   
   j¬úD  *        &     :     N     b     v     Š     & : N b  v &Š  ª   ª  ¬      ¶   ¬ ¶  º *  º  ¾  
Ä       D                  ¾ Ä D*  à                               4                             D*  DCL @  –CO    œAL   ¢CH   ¨WI @    
–œ¢"¨*  j–EX   ®WR           SH €    MA     LO€ 
  –®(        Ô   Ð   Ð   É   Ö     Ô Ð Ð É $Ö        N  
 ÂˆÇ*  …˜pq    ÂˆÇ   ¯”L  G©#@  N©/w@  *  Ã©’@  Ûªl†@  ‡¬À]@  “¬’@      (  *  ¬"|Ì¬"h  ¬…qh¬qh¯”   
   ¬"  *    
Ä  4-  ‡f t2 æ ß	  
 $ æ  G©#"Ûªl†&$ *  &   Îeª Þ4 _      À
q-  f   G©#“¬’*  L t2 æ ß	  
 \ æ  Îeª ÞD _   Áe å  Ûªl†\ G©#"“¬’*  r  Wp m ´
 æq   &CÀœ ø	          (N©/w*  ˜ „€1
  f æ- ß	  
 ° æ  Îeª Þl_   Ûªl†° G©#*  ¾   €ñ  €1
  q q q q Ä  1  “¬’$G©#*  ä $ 
 ƒÅq EÅe ñ  Åe ô
 Ã*  
Æe
 _   ƒ…Õ_  Ä  4-  ‡f t  
‡¬À] G©#*  02 æ ß	  
 >æ  Îeª Þ4 _        Ûªl†>G©# “¬’*  VÀ
q-  f t2 æ ß	  
 væ  Îe  Ûªl†"v&G©#*  |ª ÞD _   Áe å Wp m ´
 ñ     “¬’*  ¢q q q q Ä  1$ 
 q EÅe   G©#  È_     ‡¬À]             èN  
 ÂHÁ*  ó`""    ÂHÁ   ¯”L  G©#@  Ã©’@  *  Ûªl†@  ¬ N@  ‡¬À]@  ¬"@  “¬’@  *      (  ,«šw|¢ ¬<Nh8 ‡¬$ahv ‡¬ bh    ¬,"h ¯”   
   ,«šw  *    Ä  t2 fŽ#‡Ö_   Ä  t2 f Ž  G©#‡¬À]G©#*  & ‡N Ö_   Ä  t2 fŽ‡N   ¬"G©#*  L Ž‡Ö_   ¦ æ ß	  
 f æ  Îeª Þô   ¬ NÛªl†f  G©#*  r _   Ä  t2 EÍÂæ	 ß	   ’ æ  Îe  “¬’
G©#Ûªl†"’ &G©#  ˜ ª ÞL _     “¬’       œN  
 Â˜Á*  å˜€W          Â˜Á   ¯”L  G©#@  7ªl†@  *  ¤ªD@  Ûªl†@  ”¬¸p@      (  ’¬p…|p*  C©h„Ã©’h.6ªÏ}h> («LwhŠÀ«""h<*  …¬0XhŒ‡¬À]hD‰¬üXh  “¬’h¯”   
   ’¬p…  *    ß	  ß	L Á  	 @ ð p
 æ æ  æ  ¤ªD
L G©#&”¬¸p*  & iÿˆ: óV {	V ß	ˆ … &ß	L ß	^ €‡   ˆ  L $^ *  L À¬  ‡ À_ .À   &Îe  ,  Ö  G©#¬ .G©#*  r ‡ æ# ß	   € À_ .@ û  Xæ$ ß	  Ûªl†€ .*  ˜    ž Ä  À& m¸ 	Š  Ã@ 3
  À
€
  Ûªl†ž G©#G©#& *        ¾ È‹@È¥  úÈ¥, ÷È¥	 ôÈ¥* ¢0 $‡¢9 *  ä !‚”Áå0 ¢0 ‡¢9 ‚Wp
 ”Âå0 `óóÿÿ*  
  ×Á
Áå Â t³P  à‹Êæ  Îeª   $G©#*  0Þ(æ% ß	   @®‡ Ä  t$ t ( f  Ûªl†@G©#*  VÎe Ž  ý  	t/  & t  & ü	& t *  |t  t" …| ( ‡ Ä  ô &f    G©#*  ¢ Á
Wp m q# Áå À
ù€Õ… 4  *  Èt2 f æ ß	  
 Þæ  Îeª Þ< _   Ûªl†ÞG©#(*  îñ
  Å ô
 Å
 E`€_ Dß	> ß	<   D$> (<*  Ä  : óX {	X Äª  &æ      ÿˆæ3  G©#G©#ª *  :ÿˆ&Äô „‡ æ&&&æ  Îeª Þ  
G©#"G©#  `  ß	   jƒ„‡   7ªl†j       °N  
 ÂXÀ*  ˜8w    ÂXÀ   ¯”L  G©#@  N©/w@  *  Ûªl†@  ‡¬À]@  “¬’@      (  ‡¬a|0 *  ‡¬ah  ¬ N| ¬ Nh  ‡¬`^|* ‡¬`^h  *  “¬h| “¬hh  ¬d|( ¬dh  …¬Ps|&   …¬Psh  ¯”   
   ‡¬a  *    Ä  t2 EÍ_   æ	 ß	     æ  Îe  G©#‡¬À]Ûªl†"  &G©#  & ª ÞL _     “¬’ ¬ N      &@PP€… 
   ‡¬`^  *    CÀœ ø	        À	 ‚ÕÀ
ÀÀ`_   @ÀÀ  N©/w"‡¬À]  & `… 
   “¬h      æ  Îeª Þè æ ß	    …   G©#Ûªl†  ¬d  *    Ä  t2 fæ" ß	  
  æ  Îeª Þ_   G©#Ûªl† G©#  &     “¬’ …¬Ps  *    Ä  t2 æ# ß	    æ  Îeª Þ_     G©#Ûªl† G©#(“¬’       ŽN  
 Â@Î*  e,8w    Â@Î   ¯”L      (  Ü©;"8„   Ü©;"h  Ü©X"h ¯”   
   Ü©;"  (    &D {  &ùL L R R X X ^ ^ L *   L L R R X  X "^ $^ &L   $ L R R ^ ^ z       z z z d *  L R R 
^ ^ z z z z d *  8 h v R ~ ~ ~ ~ ~ ~ ~ Â Â Â *  h v R 
~ ~ ~ ~ ~ ~ ~ *  ^ Â ‚
	‚
Ã
„ÂEàÿ‡ ‚‚
ÂEàÿ„‡        (N  
 ÂÐÀ*  »Ô!    ÂÐÀ   ¯”L  ü¨@  G©#@  *  t©@  Ü©;"@  Ý©w~@  Ûªl†@  “¬’@  "      (  ë¨Ô!|À …¬»h  ¯”   
   ë¨Ô!  *    Ä  BCß	  T ß	  — „ _ v Àß	  V &  G©#ü¨T Ü©;"v &Ý©w~(V *  & J > €`àÐ•  C~ß	  V … Ã& 
Â„ ëß	  J > t©V G©#& *  L         \ _   Õß	  \ æ  Îeª Þø æ ß	   (  t©\ 
“¬’t©\ G©#&Ûªl†*  r t … ¦æÂ„ Ã& ß	  ¸ ° ® 
€ÂÐ”   t G©#& Ý©w~¸ ° ® *  ˜ Á
„~Ð•  C~ ÄÅÈïÖÖ_ J ÖÖ_   "J   ¾ V   V        dN  
 ÂXÀ*  {ùe    ÂXÀ   ¯”L  ü¨@  G©#@  *  t©@  Ü©;"@  Ûªl†@  U«w~@      (    i©Yy|h …¬{h  ¯”   
   i©Yy  *    Ä  BC@€
À@aÁ D&@ß	  H @à4Š  G©# ü¨"H *  & º ß	  ß	  H ~@
4º õß	  N …… ß	  "  Ü©;"U«w~H t©       N (t©   L N æ  Îeª Þ æ  ß	   f î  N G©#Ûªl†f        ¾N  
 ÂˆÇ*  J†7x    ÂˆÇ   ¯”L  ü¨@  G©#@  *  t©@  Ý©w~@  ¶ª·„@  U«w~@  “¬’@  *      (  ¬÷q|è	ô¨Aeh7ªl†h  Ûªl†h 
  ¯”   
   ¬÷q  *    6 6 ¦¦¶  ö  ö  ¦¦¦æ*  & ƒÓf&¦f&³ Á  s s KæÄ    (G©#*  L ÂTI
ß	  ¤ ƒÅå …ì r2 À Àˆ	  ü¨¤ (ˆ	*  r ß	¸ æ&¸ ß	  ‚ ´¸ ƒÅÃl K€‚„  ¸ t©‚ *  ˜ …£Æƒ_   ôª ƒÆ Ë _ v Â      & 4Š  ¶ª·„"v &G©#& "  ¾ º R•þ€˜x ä Z6x fú Š~„*  ä Z6x fú Š~ „*  Ü rZ>æ ø @•fˆ	ß	À …_ À ‡ ôÕ º À"  rZ>
æ ø ˆ	À À *  & àæôÕ º ß	  ¤ 4Šº ƒ_ À ß	    G©#& U«w~¤ "À (Ý©w~*  (¤   "ƒó%  ÅÒ	_ ¸ À& æÂO ß	  &  ¤ “¬’"Ò	¸ G©#& (Ý©w~*  N¤   "ƒ_ À @•À` Ë_ À @• c Å_ À @•  ¤ “¬’"À À &À *  tÀ` @•À`$@• c!@•À`1@• c? ABCDEFGHI*  šJKLMNOPQRSTUVWXYZ$. 0123456789  ”*        ÀB~_ À Ê—®Š”Š”Š”Š”’”¦ 
r bœ®ù  À ®$®*  æ‚_ À æƒ 
r
 fœ®ùƒáƒ’•Â~ƒ_ 
  À ®*  À f… 
r( Rœ 
r( RœR“œ…  À  &*  2_ À &@•fˆ	L8 fß	À …÷…Œ_   À ˆ	À *  XÀ @•fˆ	æ     3  Àe &f
  À ˆ	*  ~fß	À …€N~³ …_ À @•ˆ	_ À þì þ  À À  ˆ	$À *  ¤äSUBSCRIPT TOO SMALL OR TOO LARGEðþü þ*  ÊäINDEX TOO SMALL OR TOO LARGEðþü þäDEP*  ðENDING ON ITEM TOO LARGE OR TOO SMALLð*  þü þäILLEGAL PROGR      AM REENTRYðþú þäINCO*  <RRECT NUMBER OF ARGUMENTSðþúèì þäPERFO*  bRM STACK OVERFLOW þêðæî þäPERFORM END *  ˆOF RANGE VIOLATION þêðæî þäILLEGAL NES*  ®TED PERFORM þêðæî þäNULL ALTERABLE GO *  ÔTOðþü þäSAME AREA ALREADY BUSY WHEN OP*  úENING þöðþü þäþö ALREADY OPENðþü þäþö *   NOT OPENðþü þäINVALID OPERATION ATTEMP*  FTED ON þöðþü þäREAD MUST PRECEED REWRI*  lTE OR DELETE ON þöðþü þäþö PREVIOUSLY *  ’LOCKEDðþü þäCLOSING UNIT OR REEL UNSUC*  ¸CESSFUL ON þöðþðþü þäOPEN ERROR USING *  Þþö      ðþðþü þäCLOSE ERROR USING þöðþðþü þä*  þö NOT OPEN FOR OPERATIONþöðþü þäINVAL*  *ID LINAGE VALUE USING þöðþü þäNO END O*  PF FILE PROCESSING ON þöðþü þäREAD ERRO*  vR ON þöðþðþü þäWRITE ERROR ON þöðþðþü *  œþäREWRITE ERROR ON þöðþðþü þäDELETE ER*  ÂROR ON þöðþðþü þäSTART ERROR ON þöðþðþ*  èü þäUNLOCK ERROR ON þöðþðþü þäBAD NAME*   USING þöðþü þäSTOPìü þäUNKNOWN PROCED*  4URE ðþü þäACCEPT ERRORð þäDISPLAY ERRO*  ZRð þäUNABLE TO COMMUNICATE WITH USERð *  €þäFATAL SOURCE ERROR ENCOUNTER      EDðþü þä*  ¦ENVIRONMENTAL INTEGRITY FAULTð þäSPECI*  ÌFY ALL "ON" SWITCHES:ðü þäINVALID INPU*  òT, TRY AGAINðü þäODD ADDRESS FAULTðþè *  þäMEMORY PROTECTION VIOLATIONðþè þäBPT*  > INSTRUCTIONðþè þäIOT INSTRUCTIONðþè þ*  däRESERVED INSTRUCTIONðþè þäINVALID EMT*  Š INSTRUCTIONðþè þäFLOATING POINT EXCEP*  °TIONðþè þäPERFORM COUNT TOO LARGEþêðþü*  Ö þäEXPONENT TOO LARGE OR TOO SMALLðþü *  üþäSTART OPTION NOT SUPPORTED: þöðþü CB*  "L -- ö:          þúOCCURRING IN ò ò" *  HAT OFFSET ô2ð       þþPROGRAM òò (òò
)   *  n           öð FILEþôþò ú
 ø
 ú (ø) *  ”úþþASSOCIATED RECORD SERVICES ERROR: *  º-öþæð îþþNESTED PERFORM SOURCE LINE *  àNUMBERS:ðæø î8þþLISTING OF NESTED ENVI*  	RONMENTS:ðèü ú
 AT SOURCE LINE NUMBER *  ,	ö
  þþR0, ..., R5, SP, PC:ðþþê
 ê ê   R	ê ê ê ê êð ú (-ö)     l	  l	 b	0		ìÁ”Œ†}*   b	0	
	ìÁ”Œ†}  €	mV4, £Éë6*  mV4
, £Éë6  ”	[z¡ÀÚ,S‚*  [z¡
      ÀÚ,S‚  ¨	œËæ#Fkƒœ·*  œËæ
#Fkƒœ·  ¼	Ñê$<L]€¤*  Ñê
$<L]€¤  Ð	Åä9Nc}š¸*  Åä
9Nc}š¸  ä	×ü
  ×ü       ¶N  
 ÂXÀ*  ·„[q    ÂXÀ   ¯”L  G©#@  ¤ªD@  *  Ûªl†@  “¬’@      (Dü¨h  t©hR *  Ý©w~h€ ¶ª·„h>U«w~hà ”¬¸ph.¯”   
         *    ´ ® ô ° ´® ô° æ¦æ æÿˆY‡&
*  & &
&
&
&
&
&
&´ &
Î• æ æ æ      ÿˆE‡*  L Îe ‡ &
&
&
&
&
&
&
&´ &
Î• æ æ *  r æÿˆ.‡Îe ‡ &
&
&
&
¦æ&
&´ &
Î• *  ˜ æ æ æÿˆ¸ ôU º ô‹¶ 	ô‹· Îe*  ¾  ‡ Îe 	­¶ öÿÎe ¶ Ž  ‡ ô5*  ä º  æ¦¼ Â&
&
&
&
¦æ&
&´ &
Î• *  
æ æ æÿˆ‚ƒô‹¶ ÚôE º &
&
&
&
*  0¦æ&
&´ &
Î• æ æ æÿˆô‹¶ Áô5*  Vº ôU º ôE º Â Â&
&
&
&
¦æ&
*  |&´ &
Î• æ æ æÿˆô‹¶ žÎe ‡ ß	*  ¢À4æ& )ß	À<æ' "ß	ÀDæ(    *  Èß	ÀLæ) ß	ÀTæ* ß	À\        $*  îæ+ ß	Àdæ, ß	   Å  5ª _     Ûªl† G©#(“¬’*  ¶òÿŽÎe f&æ¦f&æ‡  ®¼ÊØæ    ®"¼$Ê&Ø(æ  :  ôß	  ‡   ô
¤ªD       f N  
 Â°Ì*  £K Œ    Â°Ì   ¯”L      ( ¤ªDh  
  ¯”   
             ‡        ”N  
 ÂÐÀ*  w<    ÂÐÀ   ¯”L  G©#@  N©/w@  *  Ûªl†@  ¼«/@  “¬’@      (  º«<|˜*  e©„dh2e©ûfhxº«<h  º« <h º«!<hH   ‰¬ˆ–h&¯”   
   º«<  *    B Âe CÀœ ø	ú Á`Cs …       B Âe  ú *  &  CÀœ ø	ú Á`CÀœ ø	ú Á`Cs … B
  ú ú *  L  Âe CÀœ ø	ú Á`CÀœ ø	ú Á`CÀœ ø	
  ú ú *  r ú Á`Cs … À $CeÒ ‡ æ ß	    ú (Ûªl†*  ˜  œ æ  Îeª Þ _   Ã Ã
Òp	‡Ò ‡   œ 
G©#“¬’*  ¾ À Ðôæ ß	   Ö æ  Îeª Þ _   Ûªl†Ö G©#$  ä   ß	  Ãâíø	  ÃÝè¬ ¬ ð ð ð (  “¬’¼«/N©/w¬ ¬ ð  ð "ð   ð ð ð ¬ ¬ ¾ ¾ ð ð æ *  ð ð ð 
¬ ¬ ¾ ¾ ð ð æ *  æ æ æ æ æ æ ~ @Ã
ÕpÈ… ABCÀœ ø	        æ æ æ 
æ æ æ ~ *  >  Õ Õ 
„ Dì òp  añ  … æ ß	    N©/w(Ûªl†*  d hæ  Îeª Þ _   ACÀœ ø	  Õ êÕ   h
G©#“¬’"N©/w  ŠèÃ
ñp ñ …        N  
 ÂpÆ*  ]!ô    ÂpÆ   ¯”L  û¨6@  G©#@  *  N©T
@      (  Œ©`;8:Îªí+h  Ïªh   Ïª˜!hv ÏªHXhX ¯”   
   Œ©`;  *    ÀH À8 B‚CÃ ÕD Nf„
•
  H 8 *  & Ö‡ •ùÅEðÿH Á
“”Ó•  GîÁ
*  L BàÁ
“”GæNÎe Ä CÁœ Àœ ø	  ß	  G©# &N©T
*  r ² 5NÎe Ä       CÁœ Àœ ø	  ß	² æ  Îe  ² G©# N©T
"² &G©#*  ˜ È Þ5 ß	à æ  ÎeÈ ÞÅ ‡ f@œ BàD  à G©#*  ¾ Å: ÀÁß	  …CDÃ @  Å: ‡ æ•    G©#: û¨6"G©#: *  ä Ba˜ÁE¿ÿÊÅ@ Î•- Áe f7 &6<0    "&$6&<(0  
BHNX`’¨ÄÒÚ*  BHN
X`’¨ÄÒÚ*  úÆe ‡ Î5 !ÎU “ ÎE ÎU 6”  ú*  D 6” Î5@ úÐ‹Î5@ õú”Î5 ‚*  j “”ÁW € y  y Š BÂEðÿWtüÿÁy 
   Š *  *”Î5 êÂE ÿƒà“ ƒ~ã”Î5       ßÎ5@ Ü  **  ¶ÂE ÿÂàŠ Õ”DàÒß	Î“ ƒ~Êß	  *  ÜÎ5 W 0  ÎU S~ºß	Î5 
  $*  
W 0 ÎU “  S‘~¨ÄA•W 0   (öE  ‡ Á0 „
‡        XN  
 Â€À*  œ,´    Â€À   ¯”L  G©#@      (    ¬K|  ¬Kh  ¯”   
   ¬K  *    Ä& &æ=ÿˆ@  AÁ
&Ã
CCÂ5
  G©#& *  &  ÓÃ` c
—r
 ðœ  ¤„Cœš Ä`Aœ   `  "š ( *  L 
—r
 œ Ðœ I~…       ; < Z [ x 
    *  r y — ˜ µ ¶ Ô Õ ó ô 01N      O01234567  ˜ 89         ¾ N  
 Â¨À*  œ,¡E    Â¨À   ¯”L  G©#@  N©°@  "      (  œ,¡E|* Ý©Ñ~h  ¯”   
   œ,¡E  *    æ&&Ã Àœ Ä ô	   ø	  €ð  „  G©# N©°  & ƒ‡        Ä N  
 Â€À*  \g¡E    Â€À   ¯”L  G©#@  N©@  "      (  \g¡E|0 U«Ñ~h  ¯”   
   \g¡E  *    &¦æ&Ä Ã Â & (   ø	    G©# (N©  & „ƒ‚€‡        rN  
 Â¨À*  9wÈK    Â¨À   ¯”L      (  »«%|D*  W«®sh  »«oKh˜ »«pKhÐ »«rKhÂ       »«vKh´ 
  ¯”   
   »«%  *           
       d       è      '    *  &    †     @B     €–˜      áõ     Êš;*  L      äT    èvH    ¥Ôè     rN	   @*  r zóZ   €Æ¤~   Áoò†#   Š]xEc  d§³¶à*  ˜ ÂSTf —t rp  | ‡ ÂEZfÁ    *  ¾  Â>WfÁ Â7TfÁ f& *  ä æ fÅ  —  €…Wu À5p  @m  T
     &  *  
¦ÀL5p  @m  T`@Î
ôÖ„ã„ãÄå 
      *  0Âå ÝÖƒ„…‡ ‡ f&
 €N
 
*  V—t 2r  Ö€ < ‡ fÁ fÁ           *  |fÁ æ & f&
fEÅÅå Å`*  ¢Õ€ß	Å  ÁC`D`—  €…Wu ¦ 
Áv  
*  È 5   	@í  vÿÿ5r  Àe €vÿÿ5r  $@        $  *  îÎ
éÖ„c„cÂå ÚÖ€fd
B~± TB~*  …„ƒ‡ Á&D`dL
C~ ± TB~„  :v
  ‡        JN  
 Â¨À*  —˜"    Â¨À   ¯”L  G©#@  N©²@  *  N©Ñ@  †©Š@  Ûªl†@  êªP›@  W«®s@  *  »«vK@  “¬’@      (  ¬š|ˆ¬šh  
  ¯”   
   ¬š  *    CÄ Àœ ô    ø	  ÁCÄ Àœ ô      G©# N©²      G©# *  & ø	  fÄ  Ã%x%v%tƒ  Âœ Å    N©²(G©#*  L µ &%€D &Cœ µ —t ”  ” ”  "W«®s&W«®s *  r  ” 



À Âß	  €A Â ß	   W«®s W«®s G©# »«vK*  ˜   Á D ß	t5Š fœ f À C B   †©ŠG©# t G©# *  ¾ Ä ÂàJß	  õ@ ÃC-B 7C-D 4C-F 1C-  G©# »«vK*  ä H .ö
 €A
 B ß	  ƒ A C`õ   êªP›*  
ÓÆe …DÃ   ó   ø	  … æ. ß	    G©# N©Ñ(Ûªl†*  0 4æ  Îeª Þt_   Æe æ  ÎeÈ ÞÕ …        4
G©#“¬’G©#*  VÕ…    
«Ô 

  |




‡        DN  
 ÂpÆ*  šw     ÂpÆ   ¯”L  >©Ì.@  E©e@  *  G©#@  ø©ß@  ‡¬À]@      (  ½« q|Ä*  >©¹.hº?©yh°?©y×hl“¬,hZ “¬;	hê   “¬Ëhð “¬šwh( ¯”   
   ½« q  *    Ã AÁ
Wt @`ð,     0. * 00 , *  & ‡ Ä  @C  Âe* RRRJß	  Âå ò   G©#   *  L Öz   …_   Ä  4
æ 4
è 4
ê Ctä   ‡¬À]G©#*  r   Âe* RRRJAÁ
Wt C`ô â Á  
3r*  ˜  €
4æ Â @‡      ƒ~Á Bttè ä ß	Ö   &Ö *  ¾   Âe* ò Öz   …_   { Á
tpâ À   ‡¬À]*  ä p ‡ Á ÁÿÿÄ    tpê B¦	‚  G©#*  
ä è Bp@;à è 	  ². * ²0 , *  0tè Bpä À `{ t æ Ýß	Ö Ö    "Ö *  VÂe* ò Öz   …_   ß	  Åe Àe Áe   ‡¬À]ø©ß*  |	"
Â !(‚‡„~… À ÀÿÿÄ  4ê   $G©#&  ¢åÖm å_   ß	  í‚ï‡… ß	  è‚ê‡…   ‡¬À]E©e>©Ì.      `N  
 ÂÀÆ*  òyw:    ÂÀÆ   ¯”L  û¨6@  G©#@  *  N©¯@  N©²@  N©T
@  N©Y@        N©Ñ@  *  N©/w@  N©!£@  Ü©;"@  Ü©X"@  W«®s@  *  ‡¬À]@  ¬5a@  µ¬5a@      (  Ì«·r|â*  ‰¬TZhš‰¬WZhÆ‰¬XZh¶‰¬€Zh¶‰¬¤Zh¤*  ‰¬§ZhÐ“¬âh  “¬ãhl “¬ähV•¬ŠZh6  •¬‹ZhÀ•¬ŒZhP¯”   
   Ì«·r  *    Ä  tò ß	* Ä  t. t0 … õ Ö]   G©#* G©#*  & _   tÃ ô & ô  ô•  4Š 4  ‡¬À]*  L ôe Àœ ø	  ÃÎe ‡ À  p  N©/w&G©#*  r ì ß	  ° ðfÅ  CÄ Àœ ô     Ü©;"G©#G©# *  ˜ ø	  õ & Aò Dß	´Á õì @      ì 
ß	  N©¯´G©# *  ¾ žBò r-&   „"}ž ö µ
& ±
 ñ
    ž*  ä Þ
B @Cô ëAö ƒ ƒß	d
  $d*  
Âß	d„õ`& Ã õ &D  ø	  „  dG©# &N©Y*  0…À  Ä… Àe  ð0 Öx . Åe. _     G©#(‡¬À]*  Võ Ö] _   &æ— 
 ‡À5 Á5   ‡¬À]*  |Á5 	”Â
ƒƒÂ~ÂEþÿ”‚~ƒ„‡ &*  ¢ß	  „æ¦
€ B  Âà‚#‚fA Á`¤  Ü©X"*  Èƒ~ƒcÄíÖÖÄ‡ Á>W¬ , *  îW¬ 0 B  C     _	  ‡ B  C   ¬5a*            _	  ‡ ð  À ð   ø•0  f  µ¬5aG©# *  :fE D  Bœ     ß	  ƒ…Àœ ø	    û¨6(N©!£*  `‡ ƒÄ Àœ ô   ø	  Àœ t Ä l    
G©# N©²(W«®s*  †Lt t l Lt l Ll ƒ „   W«®s W«®s  W«®s *  ¬ ø	  ‡ æ&Dß	  „f Áô ‰	í& ‘
É  N©ÑÜ©X"G©#ô *  Ò	m& Ñ
‰ƒ‡ Á Ä  ß	´Áô 
ß	ž‡ ×¬   G©# G©#´G©#ô $ž*  ø " 8
×¬   3Áœ  Ál Á
Á B’³ *  — { — [ — ? — } 	— ] — ! — *  D: 
— A       — 0 ø— 9 õ— R ñÂå@ *  j‰œp‡ 0,1,2,3,4,5,6,7,8.,9.1,2,3,4,5,6  p*  ,7,8.,9.×¬ " 
×¬   
Áœ  Ál Á
*  ¶Á Éœ ‡ Ä  At ttß	* Ä    G©#"* (G©#*  Üô  t
´ÖÍB¦fÂ5 @úf*    t. t0 &
… ÕÍ5 €Í5 @Åe úÕÕ*  (õ Ö] _   Ä  tî tð tò fÅ    ‡¬À]G©#&G©#*  NÄ Àœ ô   ø	  õ & Á Dß	´õ  G©# N©¯ G©# &´*  tô j&
&
v þ 
þ5   D
€  *  šÁô ß	žþ5 @ öå  êŽ
µ
ö õ
ô Þ  G©#ô       
ž*  À
Dî ß	  µ ô ŽNô 
µãö µô   Ü©X"*  æÀô Aî &ß	à„µcö 5ô Àô Að ß	àµ  G©#ô àG©#ô &à*  N Ã Dò   ø	  umô & µc& Ã D  G©# N©Y$G©# *  2Ä   ø	  ÖÖB
ß	b…… Ä    N©Yb$G©#*  XÁ ß	´ôô Åe … õ Ö] _   D
  G©# 
´$‡¬À]*  ~æß	  ƒ“  ‡ 


‡ Ã  ³  Ü©X""G©#*  ¤Ã  3
&
fó & ÅÍhå³
& ó,&   G©#*  Ê `óÍ5€ Í5 Tõ,& èÿPÍE€ ÍE õ,& *  ðêÿBÍ5  Ä @      óÀå Àå Í5 *  õ,& èÿ,ß	Þ)ß	Þ+Ã  &ó@  ÞÞG©#*  <òÿÁÁl& Á
ß	dBÂå ß	bÃ  ³e&   d b$G©#*  bõ& èÿÍ5 @¬ÍU€ û
§Ã  ÍU€ û
Ã    G©#(G©#*  ˆÅå ˜Ä  Ã ß	˜ãÃå ôß	  G©#G©# ˜*  ®˜Ãå ß	˜Ãå ð…… À  °À    ˜˜G©#(G©#*  Ô0
ÖfÆå ƒß	zðƒß	öÆå ƒß	
  z ö*  úzƒß	öö5   ö   Æå ƒß	zƒË  z
ö"z*   Ó  ‹
‹í ‹
€)ó"þÿ&9ß	öð &   "ö*  F      0,&  	€ß	ÞÀ  °
& óÀ  ƒß	˜ö5  ÞG©# G©#&˜*  l  öU€  0a& & ð$ ÏƒÃe ß	˜ð  &˜*  ’Ãe ß	˜Æe Ó & ¾¸
&
… Ö  ˜*  ¸Dß	  Ã ³  3  3  ß	ö&
Àˆ  Ü©X"G©#  ö&G©#  Þ&
…        äN  
 ÂøÀ*  ;}ÀD    ÂøÀ   ¯”L      (  :©€l" *  :©€h  :©Æ%l  :©F–l  :©H–l  :©N9l  *  :©P9l  :©.;l  :©0;l  :©~El  :©€El  *  :©>l  :©@l  :©.El  :©0El  :©>&l  "  :©@&l :©lzl  :©lzh  ¯”   
   :©€                      &  :©>&  :©N9  
    
:©~E    
         *    
  
:©.;  	    

:©>             *      
:©.E      

:©Æ%             &  :©F–      

:©lz   :©@&               êN  
 ÂpÁ*  KTl†    ÂpÁ   ¯”L  G©#@  7ªl†@  *  ¬…q@  “¬’@      (  Ûªl†|ÎG©Õhä *  U«Yfh  ¹«Ùhv ¹«Ìhœ Ã«)#h¸Ã«1#h˜"  Ã«;#h\B¬òyhÆ C¬µ	h¨ ¯”   
   Ûªl†  *    Áœ" Wp  l> @ÁÁe @
Öß	   &   $7ªl†(& *  & ô ª _   Â’ ’       ’ ÒŽŽŽæ&  “¬’G©#*  L f&
f f &æ ß	  …„ƒÂ


  ¬…q"G©#*  r 

‡ Á ñ r  ±
 ¡ ‡ ß	˜96
   $˜*  ˜ ± ‡ Á 1
 ‡ &f¦À Á Â
 ”‚~*  ¾ ‚€‡ &f¦À Á Â
 P”‚~‚€‡ *  ä ”Ál 	”¢ÿÿù‡ 0002102122232430349091*  
929596979892                0    hprz~€†Ž”˜*  hprz~€†Ž”˜  Lœ¦°¶¼ÂÊÖÚä*  œ¦°
¶¼ÂÊÖÚä*  `ìøþðü ý@ý    °ý`ú   ðü          @ú`ú    ìøþ
*  †°ý`ú   ðü`ú  `ú  `ú  @úPü`ú   ðüPüú*  ¬`ú  @ú`ú  @ú`ú  @ú`ú  °ý`ú    Àùàýðü*  Ò`ú  `ú   Ðþàý`ú  @ú`ú    àýúðü`ú  *  ø@ú`ú   àý@ú`ú     
 *  

 


   D
 

0   \*  \&A  @8È- ûàÀç8€œ
À   88$
*  ‚Pœô Hœõ €AeN‡ €Á ”	’€Ð  ô õ *  ¨&
&
fß	  ‡ Á ¦  ‘“Î ‰•Îe ‡            rN  
 Â¨À*  S`l†    Â¨À   ¯”L  G©#@        Ã«1#@  *  ‹¯=@  ‹¯@=@      (  («l†|H©ª%h    ©ªph„¯”   
   («l†      P                                     
 
  
          &   &                  P %  P P                                  r   r              *    &fÀ  ÁP ¦”B~‚Å& 4
Ê Á ß	êW‡  
  G©#& &ê*  Æ r* 2- Á ß	êM‡r( 2, 3Ú " ô5 @  ê*  ì Ê 2Ô  ô5 €Ê ò•  ô5 Ê ò   *  ô5 Ê ÁeÖ r ò  ô5 0Ê ÁeÐ *  8r
 r ô5  Ê òU€  ò&  ò$ .       ò( *  ^ ò*  òœ 3 ¡ …€‡ …€ß	  30 ± ‡    Ã«1#*  „&f&ÅP ÄP P•Å$ 
s €0‘  …„  P *  ªð•   ðœ#  °$ ð  ð&  ð  ô5 *  ÐÊ ð  ô5€ Ê ðW  ‡ æ Ì CAð*  ö p U”Â~ß	  ‡È• 0Î  ß	  ‡ðµ8    ‹¯= ‹¯@=*  4\ Ê    EW¥/ Ä~Ààƒ¡ ‡ 
  Bƒ± ‡        N  
 ÂøÀ*  ›:à~    ÂøÀ   ¯”L  G©#@  Ûªl†@  *  U«Yf@  «¯@  «U(@  «v:@  «T[@  *  «Tq@  «)x@  ¤«ªH@  ¤«úW@  Ã«)#@  *  Ã«1#@  Ã«;#@  ‡¬À]@  “¬’@      (        *  A©D^|š9©t!h¢ ;©¿'hŒ ;©†:hR;©zLhê *  ;©hMh>;©jMhê >©¨h\>©cMh.>©èYh€ *  A©öZhFA©ÿZhÜ F©ªNh– F©@`hè K©=Ÿhj *  ƒ¬4KhXƒ¬kMhX ƒ¬
Nh^ „¬%!hL ‰¬÷XhÐ*  ‰¬¼^h¾ ‰¬ò`hº ¬Ödh. ’¬lh4 ’¬îh: *  ’¬ê"hR “¬:}hF •¬4Khf•¬kYhd —¬üqh@ 
  ¯”   
   A©D^  *    fÅe Ä  CtÚ  @ ‚ Ál A’l: À  G©#*  &   AI Á  éÁ ãÁ àÁ ÝÁ Ú*  L Á ×Á ÔÁ ÔÁ ÑÁ	 Îæ# ß	    (Ûªl†*  r  v ôª _   ß	  94 _ ¾ ß	  94 … ß	  v “¬’Ã«1#¾        Ã«1#*  ˜   93 _ ¾ ß	  10ô5 Ú Á ñ•  Îe   Ã«1#¾ Ã«)#*  ¾ …NÍ‡ å_   &
&
æ ß	  ñß	  94   ‡¬À]U«Yf$Ã«1#*  ä _ ¾ … ß	  00f&æ …ß	  Æe …,    ¾ Ã«)#«T[*  
& ß	   ,& & æ ß	  … 3  Ã«;#,$U«Yf*  0Ú " ß	  94 … ß	  00… ß	  94 _ ¾ ß	    
Ã«1#Ã«)#Ã«1#$¾ (Ã«1#*  V94 … ß	  94 … ß	  00ô5 Ú f&æ   Ã«1#Ã«)#*  |…ß	  Æe …,  & ß	  . °  &  «TqÃ«;#"°$ & *  ¢ & æ ß	  … f&æ …      ß	  Æe …,  U«Yf «U(*  È  ñàß	  @ Á Â À0 ß	  Á
   «v:$¤«úW*  îÂ À0 ß	  Á Â À  ß	  Á   ¤«úW"¤«úW*  Â À ß	  Á Â ß	  À 

³  ¤«úW¤«ªH*  : ƒËƒ#‚
r Âô…  @  *  `B‚ò ù ³  ³  3
 fæ  †æ …ß	  Æe …ä…   «¯       vN  
 Â€À*  äfì    Â€À   ¯”L  D©b@  G©]\@  *  N©/w@  i©{@  7ªl†@  («$@  U«Yf@  *  U«Ý@  «\g@  «)x@  Ã«;#@      (  *  
­WTì2 H©Är|ˆ4ªu:h      ô ©ªXhš ¯”   
   
­WT          («$         D©b         G©]\           i©{ 0   0     U«Ý H©Är  *    































Á,&*  &  ð   Â  Â,& Â& fŽàp f&    *  L æ …ß	  Æe …,  & ß	   t €   «\g"Ã«;#&t (€ *  r t â° ¡ ‡ & & æ ß	  ° ±   t "U«Yf*  ˜ ‡ ó5   Á
ô5 Ú º‡ Â. ô5 Ú r` *  ¾ ²,  	Á
², 
 ¨ôU Ú ¤rà  ì *  ä l ß	  ß‡ôU Ú fÅ. BÂe õ  Á   
  *        
ÍR&æ&CÀœ ø	  Ê„ƒ€Ò"
  N©/w*  0Òô  ª æ  æ ß	   H`~…Â. ò   7ªl†H*  Vò  ª æ  æ ß	   l¡ ‡ ò ² 
   7ªl†l  |²

  _              ÎN  
 Â€À*  (yÀv    Â€À   ¯”L  ©ª%@  ©ªp@  *  D©b@  G©Õ@  G©]\@  J©$@  i©{@  *  4ªu:@  («$@  U«Yf@  «¯@  «&@  *  «•@  «E`@  «)x@  ¹«Ù@  ¹«Ì@  *  Ã«)#@  Ã«1#@  Ã«;#@  C¬µ	@      (  "  
­WTì" K©@`|òG©øfhL ¯”   
   
­WT          («$               D©b         G©]\           i©{         J©$ K©@`  *        $ÿ$6ÿ
8ÿ
8ÿ     
 *  & 	ÿ 	Zÿ""@*  L ó‹ ß	  ‡ß	  ‡ß	  òU  ô5 Ú òE  ©ª%¹«Ù©ªp*  r   Áœ" rœD  AœH q v ß	  30 … ðU    D H v Ã«1#*  ˜ f¦æ …ß	  Æe …—,  t5ò•  òÕ  «E`*  ¾   ó5   ò•  ó5	    
Á$ 3r& À*  ä 2`. À  òe  ò•  òÅ  ò•   f¦æ*  
 …ß	  Æe …—,  >¦ ß	    œ      80  
«• Ã«;#$œ&8(0*  0ó5   (ß	  ¦ ¦ æ ß	  … & ß	    ¹«ÌU«Yf(Ã«;#*  V  ^^^f¦æ …ß	  Æe …ß	  & &  ^^
^«¯"¹«Ì*  | æ ß	  … ß	  00ß	  À ß	  … f&æ  U«YfÃ«)#C¬µ	  G©Õ*  ¢ …ß	  Æe …,  Ëß	  00³  ³   
«&Ã«)#*  È ó5   ß	  ß	  À1 ß	  Âœ" Â€  ß	  4ªu:C¬µ	1 G©Õ&    î  …   G©Õ       ~N  
 ÂXÀ*  DwÀv    ÂXÀ   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "            (  K© |ˆ ;©øMh  ¯”   
   K©   *    ß	  00ß	  ò  ò  2
 òW  ô5 Ú   Ã«)#¹«Ì*  & òG  f¦æ …ß	  Æe …—,  ¦  «¯*  L  ß	   l Z Z ¦ ¦ æ ß	  ß	  3
   Ã«;#l Z Z  U«Yf&B¬òy  r  ô5 Ú Á ñ•:   …        N  
 ÂXÀ*  •y¸y    ÂXÀ   ¯”L  D©b@  G©]\@  *  i©{@  Ý©Ý@  («$@  U«Yf@  «œ,@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì* J©K"|r J©K"h  ¯”   
   
­WT          («$               D©b         G©]\           i©{ (   (     Ý©Ý J©K"  *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«œ,*  & ß	   2 ^ H ×¬"  Á ñ•  _   Á   Ã«;#
2 ^ H $‰¬¼^*  L ñ•  =Ú  _   & & æ ß	  _     ‰¬ò`$U«Yf(‰¬¼^       NN  
 Â€À*  jz¸y    Â€À   ¯”L  D©b@  G©]\@  *  N©/w@  i©{@  ©ªX@  («$@  U«Yf@  *  U«Ý@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTì2 O©‹s|ð  O©‹sh  ¯”   
         
­WT          («$         D©b         G©]\           i©{ 0   0     U«Ý O©‹s  *    ß	  00ó5	   )p f&æ …ß	  Æe …  Ã«)#"«\g*  & ,  & ß	   > H> _   &&æCÀœ  Ã«;#> H> ‰¬¼^*  L  ø	  Áƒ„€Á[fÁ ô5 Ú ô5   N©/w*  r Ú {ô5  Ú âAJô5 Ú *ß	   â•
   ©ªX*  ˜ Ž
° ‚cÊ• Ž
° f&æ …ß	  Æe …  "«\g*  ¾ ,  ?p ô5 Ú Kô5 Ú G_    ‚c  "‰¬ò`*  ä Ò• Ž
Ê•
 Ž
° f&æ …ß	  Æe …,         «\g*  
  ß	  Ú ‚cÊ• Ž
° f&æ …  ©ªX*  0ß	  Æe …,  p & ß	   XX  «\g"Ã«;#&X(X*  VX& & æ ß	  _   ó5   ‡ô5 Ú    XU«Yf‰¬¼^*  | â• Ž
° ‚cÊ• Ž
° f&æ …*  ¢ß	  Æe …,  Èp _    ‚cÒ• Ž
  «\g‰¬¼^*  ÈÊ• Ž
° f&æ …ß	  Æe …,  ½  «\g  î¬       æN  
 ÂXÀ*  §y¸y    ÂXÀ   ¯”L  D©b@  G©]\@  *  i©{@  («$@  U«Yf@  «)x@  «Ä…@  *  Ã«)#@  Ã«;#@  ¬Ý@  ‰¬¼^@            (  "  
­WTì: J©Ë’|X J©Ë’h  ¯”   
   
­WT          («$         D©b         G©]\           i©{ 8   8     ¬Ý J©Ë’  *    ß	  00p f&æ …ß	  Æe …,    Ã«)#«Ä…*  & & ß	   6 D 6 Á ñ•6  _   & &   
Ã«;#6 D 6  ‰¬¼^  L æ ß	  _     
U«Yf‰¬¼^       ÄN  
 ÂXÀ*  èr€p    ÂXÀ   ¯”L  ©ª%@  ©ªp@  *  D©Åb@  G©Õ@  G©…\@  J©E$@  i©Å{@  *  («E$@  U«Yf@  «¯@  «&@  «•@  *  «E`@  «)x@  ¹«      Ù@  ¹«Ì@  Ã«)#@  *  Ã«1#@  Ã«;#@  C¬µ	@      (  
­WTì$ *  J©@`|ÒG©Ôfh† G©âfht G©ãfhb ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 
   
     J©E$ J©@`  *        # & / 2 9 F ,4ÿ,466ÿ0ÿ.ÿ&      
# & / 2 9 F *  & .2"ÿ2ÿ.,4ÿ.,24"ÿ2ÿ *  L 	Zÿ<ß	˜ ‡Â€  ß	    ˜ $  (G©Õ*  r … ß	˜ ‡Â€ ß	  … ß	˜ ‡Â€ ß	  …   ˜  G©Õ˜ " &G©Õ*  ˜       ó‹ ß	  ‡ß	  ‡ß	  Áœ" rœ\  Aœ_ q   ©ª%¹«Ù©ªp \ &_ *  ¾ ® ß	  30 ± ‡ f¦æ …ß	  Æe …—,   ® Ã«1#«E`*  ä  Qò•  ò•  ó5   ò•  òœ, 1 *  
f¦æ …ß	  Æe …—,  2¦ ß	      «•&Ã«;#*  0Š66ß	  ¦ ¦ æ ß	  ± ‡ & ß	     Š66¹«ÌU«Yf(Ã«;#*  V  ^^^f¦æ …ß	  Æe …ß	  & &  ^^
^«¯"¹«Ì*  | æ ß	  ± ‡ f&æ …ß	  Æe …,   U«Yf«&*  ¢ Ôð•  ³  ³  ß	  ÀI ß	  ß	    C¬µ	 I $G©Õ(      Ã«)#  È00Âœ" ¡ ‡        jN  
 ÂXÀ*  q€p    ÂXÀ   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "      (  J© |t ;©ÐMh  ¯”   
   J©   *    ß	  00ß	  ò  ò  2
 f¦æ …ß	  Ã«)#¹«Ì*  &   Æe …—,  ¦ ß	   F b F ß	  3
   «¯Ã«;#F  b "F &B¬òy*  L  ô5 Ú Á ñ•:   … ¦ ¦ æ ß	    (U«Yf  r …        BN  
 ÂXÀ*  Usxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  Ý©‚@  («E$@  U«Yf@  U«Ñ~@  *  «œ,@  «)x@        Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì, J©#"|Š J©#"h  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ *   *     Ý©‚ J©#"  *    ß	  00ð•   f&æ …ß	  Æe …,    Ã«)#«œ,*  & & ß	   8 v ` ß	  ×¬"  ×<      Ã«;#8 v ` U«Ñ~*  L Á ñ•  ñ•   _   Á ñ•  =Ú    ‰¬¼^  r _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       rN  
 ÂXÀ*  UsPs    ÂXÀ   ¯”L  D©Åb@  G©…\@        *  i©Å{@  ¹©…\@  Ý©Ñ~@  Ý©‚@  («E$@  *  U«Yf@  «ö&@  «œ,@  «)x@  Ã«)#@  *  Ã«;#@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   J©""|Ž J©""h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ *   *     Ý©‚ J©""  *    ß	  00ð•  ß	  f&æ …ß	  Æe …,  Ã«)#Ý©Ñ~ «ö&*  &   f&æ …ß	  Æe …,  ×<    «œ,*  L   Á ñ•,  _   & ß	   H z n =Ú   ‰¬¼^Ã«;# H "z $n    r        _   & & æ ß	  _     
‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  *txs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  («E$@  U«Yf@  U«Ñ~@  U«‚@  *  «\g@  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì4 O©cs|d O©csh  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 2   2     U«‚ O©cs  *    ß	  00ð•   p f&æ …ß	  Æe …,  Ã«)# «\g*  &   & ß	   < P D ß	  _   =Ú     Ã«;#< P       D U«Ñ~ ‰¬¼^  L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  *tPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  Ý©Ñ~@  («E$@  U«Yf@  U«‚@  *  «\g@  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì4 O©bs|d O©bsh  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 2   2     U«‚ O©bs  *    ß	  00p ð•  ß	  f&æ …ß	  Æe   Ã«)#Ý©Ñ~$«\g*  & …,  & ß	   @ P D _   =      Ú    Ã«;#@ P D  ‰¬¼^  L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  gsxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  («E$@  U«Yf@  «)x@  «Ä…@  *  Ã«)#@  Ã«;#@  ¬@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì< J©£’|j J©£’h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ :   :     ¬ J©£’  *    ß	  00p f&æ …ß	  Æe …,    Ã«)#«Ä…*  & & ß	   6 V J Á ñ•6  ñ•6        _   =  
Ã«;#6 V J &‰¬¼^"  L Ú  _   & & æ ß	  _     ‰¬ò`U«Yf ‰¬¼^       dN  
 ÂXÀ*  gsPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  ¹©…\@  Ý©Ñ~@  («E$@  U«Yf@  *  «ö&@  «)x@  «Ä…@  Ã«)#@  Ã«;#@  *  ¬@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   J©¢’|€ J©¢’h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ :   :     ¬ J©¢’  *    ß	  00p ð•  ß	  f&æ …ß	  Æe         Ã«)#Ý©Ñ~$«ö&*  & …,  f&æ …ß	  Æe …,    «Ä…*  L _   & ß	   ` l ` =Ú  _   & &   ‰¬¼^Ã«;#` l ` "‰¬ò`  r  æ ß	  _     U«Yf‰¬¼^       ðN  
 ÂXÀ*  %qxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  e©P@  i©Å{@  («E$@  U«Yf@  «Ô@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTìD <©#"|Z <©#"h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ B   B     e©P       <©#"  *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«Ô*  & ß	   2 F F Á ñ•6  ñ•6  _   & &  Ã«;#
2 F F "‰¬¼^  L  æ ß	  _     U«Yf‰¬¼^       `N  
 ÂXÀ*  %qPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  e©P@  i©Å{@  ¹©…\@  Ý©Ñ~@  («E$@  *  U«Yf@  «Ô@  «ö&@  «)x@  Ã«)#@  *  Ã«;#@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   <©""|| <©""h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J           ¹©…\ B   B     e©P <©""  *    ß	  00ð•  ß	  f&æ …ß	  Æe …,  Ã«)#Ý©Ñ~ «ö&*  &   f&æ …ß	  Æe …,  _     «Ô(‰¬¼^*  L & ß	   \ h \ =Ú  _   & & æ  
Ã«;#\ h \ ‰¬ò`  r  ß	  _     U«Yf‰¬¼^       ŠN  
 Â¨À*  Œs€p    Â¨À   ¯”L  D©Åb@  G©…\@  *  i©Å{@  ¹©…\@  Ý©Ñ~@  7ªl†@  («E$@  *  U«Yf@  «ö&@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@  “¬’@      (  
­WTìL   K©Ð|¨ K©Ðh  ¯”   
   
­WT              («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ K©Ð  *    ß	  00ð•  ô5 Ú æ/ ß	     ô|ª   Ã«)#7ªl†"  *  & _   ß	  f&æ …ß	  Æe …0
 ,    “¬’
Ý©Ñ~«ö&*  L & ß	  
 ^ ” ˆ Á ñ•,  ×¬"  
×<  Ã«;#^ ” ˆ *  r    `ñ•6  ñ•6  _   =Ú  _   &   ‰¬¼^$‰¬ò`  ˜ & æ ß	  _     U«Yf‰¬¼^       FN  
 Â€À*  ¨:@8    Â€À   ¯”L  ©ª%@  ©ªp@  *  D©íb@  G©Õ@  G©­\@  J©m$@        i©í{@  *  («m$@  U«Yf@  «¯@  «&@  «•@  *  «E`@  «)x@  ¹«Ù@  ¹«Ì@  Ã«)#@  *  Ã«1#@  Ã«;#@  C¬µ	@      (  
­WTì& *  A©@`|ªG©lehÀ G©zeh® G©{ehœ ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{         J©m$ A©@`  *        # & / 2 9 F BJÿBJ66ÿFÿDÿ&      
# & / 2 9 F *  & DHNRÿHÿDBJÿDBHJNRÿHÿ   L T	Zÿ    ` *  ` 8                                            †        e   e     ’   ’      –   –      •   •  «   ”   ”      Š   Š            ˜   ˜ <   œ *  œ ß	Ò ‡Â€  ß	  … ß	Ò ‡Â€ ß	  … ß	  Ò   G©ÕÒ   $G©Õ*  Â Ò ‡Â€ ß	  … ó‹ ó‹- ß	  ‡ß	    Ò  G©Õ"©ª%(¹«Ù*  è ‡ß	  Áœ" rœ\  Aœ˜ q î ß	  30 ± ‡ f  ©ªp\ ˜ î Ã«1#*  ¦æ …ß	  Æe …—,  S ß	*ò•     «E`"**  4òœ, 1 ò•  ó5   ò•  f¦æ …ß	*  Z  Æe …—,  2¦ ß	    Îzzß	        ¦   «•Ã«;#Î z"z&¹«Ì*  € ¦ æ ß	  ± ‡ & ß	    ¢¢¢f¦  U«YfÃ«;# ¢"¢$¢*  ¦æ …ß	  Æe …ß	  & & æ ß	  ±   «¯¹«Ì&U«Yf*  Ì‡ f&æ …ß	  Æe …,  ÔÁ pœ   «&*  ò 0Š A  Ál p ³  ³  ß	  ÀI   $C¬µ	(I *  ß	  ß	  00Âœ" ¡ ‡ &f&f
 
@ A  G©Õ
Ã«)#*  > Ä &f¦À8 Â` ‘”~‚€År   ` *  dp É• 1   1 " ñ•   ÅñÕ  $  Šq‘ @…
Áe8 Äe s¡- Ò‡…„€‡        jN  
 Â€À*  Ä8@8          Â€À   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "      (  A© |t ;©hLh  ¯”   
   A©   *    ß	  00ß	  ò  ò  2
 f¦æ …ß	  Ã«)#¹«Ì*  &   Æe …—,  ¦ ß	   F b b ß	  3
   «¯Ã«;#F  b "b &B¬òy*  L  ô5 Ú Á ñ•:   … ¦ ¦ æ ß	    (U«Yf  r …        4N  
 Â€À*  ;8;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  Ý©-‚@  («m$@  U«Yf@  «œ,@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì. J©» |Ž       J©» h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ ,   ,     Ý©-‚ J©»   *    ß	  00ð•   f&æ …ß	  Æe …ÁÁe.   Ã«)#«œ,*  & 
   ,  & ß	   J z n ×¬  Ã«;#"J $z &n *  L "  ×<    Á ñ•L  ñ•P  _   =Ú   $‰¬¼^   r  _   & & æ ß	  _     
‰¬ò`U«Yf‰¬¼^       ŠN  
 Â€À*  ;;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  Ý©-‚@  («m$@  U«Yf@  *  «ö&@  «œ,@        «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN J©º |ª   J©º h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ ,   ,     Ý©-‚ J©º   *    ß	  00ð•  Ap Wp Ál pœ  A  Ál  Ã«)#*  &  p f&æ …ß	  Æe …,  f&  «ö&*  L æ …ß	  Æe …,  ×<    Á ñ•  «œ,*  r B  _   & ß	  & d – Š =Ú  _   &   
‰¬¼^Ã«;#d – Š &‰¬ò`  ˜  & æ ß	  _     U«      Yf‰¬¼^       2N  
 Â€À*  ê;8;    Â€À   ¯”L  D©íb@  G©­\@  *  O©5q@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  U«-‚@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN O©ûq|f   O©ûqh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ 4   4     U«-‚ L   L     ¹©­\ O©ûq  *    ß	  00ß	  ‡ð•   p f&æ …ß	  Æe  Ã«)#O©5q&«\g*  &  …,  _   & ß	    2 R F =Ú    ‰¬¼^Ã«;#2  R       "F   L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       2N  
 Â€À*  ê;;    Â€À   ¯”L  D©íb@  G©­\@  *  O©5q@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  U«-‚@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN O©úq|f   O©úqh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ 4   4     U«-‚ L   L     ¹©­\ O©úq  *    ß	  00ß	  ‡ð•  p f&æ …ß	  Æe  Ã«)#O©5q&«\g*  &  …,        _   & ß	  ( 2 R F =Ú    ‰¬¼^Ã«;#2  R "F   L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       èN  
 Â€À*  å88;    Â€À   ¯”L  D©íb@  G©­\@  *  e©-P@  i©í{@  («m$@  U«Yf@  «Ô@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@      (  "  
­WTìF <©» |Z <©» h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ D   D     e©-P <©»   *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«Ô*  & ß	  " 2 F F Á ñ•      6  ñ•6  _   & &  Ã«;#
2 F F "‰¬¼^  L  æ ß	  _     U«Yf‰¬¼^       ’N  
 Â€À*  å8;    Â€À   ¯”L  D©íb@  G©­\@  *  e©-P@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «Ô@  «ö&@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN <©º |¶   <©º h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ D   D     e©-P <©º   *    ß	  004 Þ 4œ á 4œ à Á  Bl  °  Ã«)#*        &  pœ  0Š ð•  f&æ …ß	  Æe …  "«ö&*  L 0Þ  0á  0à  ,  f&æ …ß	*  r   Æe …,  _   & ß	  * ‚ ¢ – =   «Ô‰¬¼^Ã«;#"‚ $¢ &– "  ˜ Ú  _   & & æ ß	  _     ‰¬ò`U«Yf ‰¬¼^       <N  
 Â¨À*  ';8;    Â¨À   ¯”L  D©íb@  G©­\@  *  J©s@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «)x@  «Ä…@  Ã«)#@  Ã«;#@  ¬-@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN J©;‘|p   J©;‘h  ¯”   
   
­WT        («m$         D©íb               G©­\ $   $     i©í{ <   <     ¬- L   L     ¹©­\ J©;‘  *    ß	  00ß	  ‡p f&æ …ß	  Æe …,  Ã«)#J©s «Ä…*  &   
Á ñ•6  ñ•6  _   & ß	  $ ,   ‰¬¼^$Ã«;#(, (  L \ P =Ú  _   & & æ ß	  _     \ P ‰¬ò`"U«Yf&‰¬¼^       ÜN  
 Â€À*  ';;    Â€À   ¯”L  D©íb@  G©­\@  *  J©r@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «ö&@  «)x@  «Ä…@  Ã«)#@  Ã«;#@  *  ¬-@  ‰¬¼^@  ‰¬ò`@      (  
­WTìN   J©:‘|ä J©:‘h  ¯”         
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ <   <     ¬- J©:‘  *    ß	  004 Þ 4œ á 4œ à ð•  Á    Ã«)#*  & Bl  ° pœ  0Š f&æ …ß	  Æe …  "«ö&*  L ,  !0Þ  0á  0à  & ß	  , à   $Ã«;#(à *  r ‚ v =Ú  _   & & æ ß	  _   Á  ‚ v ‰¬ò`"U«Yf&‰¬¼^*  ˜ Áe. 
   ß	  0Þ  0á  0à    J©r*  ¾ Ó‡p f&æ …ß	  Æe …,  Ã_     «Ä…(‰¬¼^             ~N  
 Â¨À*  L;@8    Â¨À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  U«Yf@  «ö&@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTìN K©{~|È K©{~h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ K©{~  *    ß	  00ð•  ô5 Ú 
ð  ô5 Ú ð   Ã«)#*  &  Ap B° Wp Ál  Bl  ° f&*  L æ …ß	  Æe …0
 pœ  ,  &   «ö&*  r ß	   ~ ´ ¨ Á ñ•B  ×¬"        
×<   `  Ã«;#
~ ´ ¨ *  ˜ ñ•6  ñ•6  _   =Ú  _   & & æ  ‰¬¼^‰¬ò`  ¾  ß	  _     U«Yf‰¬¼^       ’N  
 Â€À*  ';à8    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN J©s|&J©sh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ J©s  *    Á ñµ  j4 Þ 4œ á 4œ à ô Ü Áe*  &  ð•  ñµ  & Bl  ° pœ  Ü *  L ° f&æ       …ß	  Æe …,  ß	  «ö&&*  r ðàý <ð%@ú 8´
Ü Áe 3­Ü - Î‡Á *  ˜  Bl  ° pœ  0Š f&æ …ß	  Æe   $«ö&*  ¾ …,  ß	0Þ  0á  0à  ¡ ‡   *  ä ð%@ú ðÐþ 0Þ  0á  0à  ± ‡ &   
æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡        8N  
 Â€À*  ';ˆ;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN J©r|Ü J©rh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $           i©í{ L   L     ¹©­\ J©r  *    Á ñµ  Uô Ü Áe ð•  ñµ  &*  &  Bl  ° pœ  Ü ° f&æ …ß	    («ö&*  L Æe …,  ß	¾ ðàý )ð%@ú %´
  ¾ *  r Ü Áe 3­Ü - Î‡Á  Bl  ° pœ  0Š*  ˜  f&æ …ß	  Æe …,  ¡ ‡ ± ‡   «ö&"  ¾ &æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡        üN  
 Â€À*  ê;H    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN O©5q|¸ O©5qh  ¯”   
   
­WT        («      m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ O©5q  *    Á ñµ  I4 Þ 4œ á 4œ à ô Ü Áe*  &  ð•  ñµ  # Bl  ° pœ  Ü *  L ° f&æ …ß	  Æe …,  ðàý   «ö&*  r ð%@ú ´
Ü Áe 3­Ü - Ñ‡0Þ  0á  $  ˜ 0à  ¡ ‡ 0Þ  0á  0à  ± ‡        Î
N  
 PŽn´*  *yø    PŽn´   ¯”L  ‘«[K@  ’«,@  *  “«kM@  •«Ã^@  •«Ë`@  –«;@  «™q@  *   «1@  ¢«€@  ¢«l@  ¢«á"@  ¢«[}@  *  £«¶@  §«À@  §«üq@      (        *yø,ð*  t!Àvh^Rˆ,hTq8"h€\q°rhš‡s sh  *  ¼«´;hš½«Ö%h¾Ã«,:hlÅ«4…h¶Ç«6fh¸  Ì«ßghªÏ«	Fhœ¯”   
   *yø  *    ÃŒS“Á U%À	 Ó/€
D„
„Ä  Œ*  & '€
K‹
K@"Äd€
BB0Ò“B‚
B@AÁE *  L `fSÐÄe …!ÿ?€
K×" €
×"*  r 
 z×¯  @÷  7  ×¯þ @÷  ’«,’«,*  ˜   7  ×¯ê	 @÷  7  ×¯Ö
 w  £«¶
£«¶ «1 «1*  ¾    Àe ·ð`÷	  ÀÀ
À
ÀËÓÐ  –«;‘«[K*  ä €ÅÆÕ À
ü
W!îüÓ$Ó$
“      ‹Å
  
Æî*  
 SaDa€€àŽæ
÷	zƒ‚ÀE €æ*  0÷	‚ƒAa‹S`á…`@aB`Î5 a a¦¢b*  V""
Î
ó



·
( 
Æ ÅÄ= *  |€‡ ÂŒR’U% 
D	7!fÀ Î5   
Œ*  ¢Àe áæ&„
„6 Ê% ØÂîÃò	·
*  Èè÷	:ÄÔ÷	  ‘ÀºÅ°Å
ý…€  §«üq*  îÅ
ý÷	D÷	V·®÷²w bÿÁŒQ‘ 
   Œ*  É% 7
ÐÂŒÃ÷ŽÃ
Ãÿÿ÷	Ã*  :ú÷v·j·
Jw ÿw z÷	´ÄN÷	  Ã  &§«üq*  `ÿÿ÷	ìÃ%ÿÿò÷	`·
Ä,÷	  Äå û÷	    •«Ã^(«™q*        †ÄÅ  ÷	  Äå ù&
Ä4mÆÚmÚÄå   
¢«€¢«á"Æ Ú$Ú*  ¬øÄø7òÅ  ÷	  ÃæÓÃå óÚú  §«À¢«á"&Ú*  ÒæÄÐ÷	  Å  ÷	  „7¾Å  ÷	  Ä´7
   •«Ã^¢«€¢«á"§«À"¢«á"*  øÂ7!ªôÆô
Æô
ÚÎ
·
¨÷	ªÉ5 À  ÆÆÚ*  Äå ê÷-’tÄv´
Ú´
ÆÛÀ ÉE
  ÚÆ*  DÀ B·#T·
>7
Z·
Vw 
þ÷	à&Ä>*  j÷	  „÷	PÉ5 ÀóÉã€Î
ô
Ú·
4÷-0è  §«üqÚ*  ÷	<Ž
w &ÿÁŒQ‘ 
÷% æU%ffõ¥  Œ*  ¶ øÿwÎ5 À Àe w       šý÷â÷Ú*  Ü6ÂÌ¦Ãÿÿ÷	f·¼÷À÷¶Ä¦*  ÷	¾É5 ÀÉš€·
¨÷-¤†÷	$7„7
Š*  (ƒ@ÁmdÃˆSÀå ü7
j‰À *  N÷œ½Àÿÿ÷
’¸ÂŒÀ R’Ê¯

÷  Œ*  tB÷	  ÷ ÷	  w àü$Å$Å
ü‡   
“«kM¢«[}*  šæ  
ÀCB ‡Bà€
Î
÷Ö‡ &
 
†*  À€cCÁÎøÖ‡ ¦æÁÀÄÌ÷	  ´
Ú÷%  À"§«üq&Ú*  æ ¨)ô
Æ÷	  × ÿÿ"Á¤CÄå Ä	!ú  Æ•«Ë`¤*  7˜ôÆÉå ÉBÀ„Ú 0ÆÀå   
ÆÚ$Æ*  2ùÂå Â‰ƒ‚‡ Ã$       ÓÂ
À  7 *  X‹
„‡ À w ü°nÿÿ  ÿÿÿÿ  ÿÿÿÿ  
  °n*  ~ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿ&  ¤ÿÿ  ÿÿÿÿ  ÿÿtz€†Œ’˜ž¤ª÷	*  tz€†Œ’˜ž ¤"ª*  Æ  É5 ÀffÃ–ÿÓËÂ€÷	¤þ‚ƒõ  ¢«l*  ìÀzÿ7tÿò ‹J2 …‡ ÷ ¨ 
Ã¢ *  ƒ
÷œ ÷	²þ÷’ ÷Œ 	Åh …
Áˆ €Å
*  8ý‡ ÷r Át €÷	>þ†ƒ
‡ „úÿ-øÿ‚‡*  ^þÿ€÷	"þ
ƒ&þÿ´þÿ‚øÿôøÿƒ7!. *  „üÿæ‡                                  ª                     @ €Ä  
        Ä î  î         ŠN  
 PŽ%´*  7x›r    PŽ%´   ¯”L  ô¨úW@  D©b@  *  G©]\@  J©$@  i©{@  («$@  «¯@  *  «&@  «•@  «#@  «v:@  «Iq@  *  «)x@  «™’@  ¢«€H@¤«úW@  §«ÀH *  ¼«´;@  ½«Ö%@  Ã«,:@  Å«4…@  Ç«6f@  *  Ì«ßg@      (  7x›r,˜‘«[Khf’«,hˆ*  “«kMh² •«Ã^hT•«Ë`h"–«;h†«VKh„*  «™qhF «1hŽ¢«lhb ¢«á"hÔ ¢«[}h¼*  £«1h’£«¶hŠ£«çhŒ£«1h*£«Ch-"  §«üqh  ¨«qh–
­WTì" ¯”   
   7x›r  *    ¦æ÷  ÷	šô@      ÷	Â@,BÂm  
Ç«6f@ $,*  & Bƒ 
‚B ý‡ƒ ‡÷	ÊC ý‡÷	ºÁí  *  L Âíƒ õ‚ê´ƒ‚‡ ¦æ,C    $,*  r ÷	þBÂmêƒ ƒ ÈPC ý‡÷	âÁíÄÂí
  
È*  ˜ Àƒ õ‚PB ý‡È´ƒ‚‡ Ä  À Åp  È Ì«ßg$ (p*  ¾ 0  ÷	  Äå ø7
  ‡ Äô Ü4
Þ„W!   «¯Ç«6f Ü$Þ*  ä  æÃnÅ3tt,ô,,"  ",&,(,*  
s,sƒ4,7<‡ íw!<‡  ,
,"*  0ÅEÿ      táÅe ÷	ÈÄôå Ü´Þ„´
@‡ Á  
ÜÞ$@*  V  ÷	¤þ÷	Âÿ4
@‡ ÷	  w(Ëi&7ò&f  ½«Ö%@«v:*  |Àd ÁàÁEÿÁ wÀw¸Á Áw*  ¢¶w®B`€e…
à ‚„
!ù! À*  È w   æÂí„¦À0 ÷	  `wzÀ0   Ã«,:Å«4…*  î÷	  À  ÷	  ‚`w`À  ÷	  À   ¤«úWÅ«4…"¤«úW*  ÷	  ‚·@`wBÀ ÷	  ‚·,·àÂm  Å«4…¤«úW*  :·ìƒ„‡ Â  „&ÁÂå €ƒtÈÁ`  Ì«ßg&È*  `Äå ú@àDÁAn
÷	  7ÚÀÀ 7Ô  n¼«´;*        †„t`t,Äå øwzwôEàÅEÿwª
  
,*  ¬Aawz…Å wš‡ À0 Á ÷	  À  Á–÷	  ô¨úW*  Ò  À ÁŒ÷	  7 z&À Áx÷	  À   ô¨úWô¨úW$ô¨úW*  øÁl‚÷	  ‡ ÅN&f¦ÀPð  0´   ¤«úWP&´*  p Â°Ü& °Þ( …Å raÜrÞ0   ÜÞÜ"Þ&*  Dð   ±,Þ ‚±,Ü  ƒÀ Åpð(    ÞÜ  $p*  j
 ð$ p ÷	  ð ÀPÅl÷	  ð   «#P l$«™’*  ‚€‡    w   f¦&÷•0 F÷  Ã«,:*  ¶Î¨Ä  V      ÂTÁdÀ ÷¼ðU€  °   
Ì«ßg *  Üðz ð  ðž ðœ
 ð˜ À Åp
  $ (p*  ð\3 ÷	  ð Ä4  ·
  ÀPÅl÷	     «• Ç«6f P$l(«&*  (ð w hÿ4 ´´´t,Äô Ü4
  ´,&Ü*  NÞ„4
@·
·Šœ Äå Ë„‚‡ À w     Þ
@(Ã«,:*  tÅâ&ÀP0´ p Ä0Ü& 0Þ( …Å   P´Ü"Þ*  štaÜtÞ„ð  ð  0 Ål÷	  ð  Ü
Þ "l&«Iq*  À 	ð%°ý ð w Äþ€‡ Å ÷	–ÿÄôå(  æ Ü´Þ„4
@‡ SO      RT0D.TMPP          Ü
Þ@   #@                      

  
         &  &  ö  
       
  ö P%  PP                                  r  r       
    T*  T                        P  Ôw	 
  P" "  zyæK¨             @     
   
­WT          («$         D©b         G©]\           i©{         J©$       ÄO   Â Áz  öšw    Â Á   ¯”L  G©#@  N©¯@  N©°@  N©²@  N©Y@  N©@  N©Ñ      @  õª1@  W«®s@  »«oK@  »«pK@  »«rK@  2      (ˆÍªÂh4 ÍªPÈh’ ÍªÐÔh <d ( ¯”   
         *    CAæ  ÎeÈ Þ5 Bœ  @œ àÀœ `  
G©#*  & 
àÀœ ‡ ± ‡ ß	  %‡&Ä ø	  Â% 	À    G©#  N©¯*  L   —t 2   À‚Ä ß	  D  ø	  W«®sG©# »«oK*  r   … æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  -‡  N©Y
G©#G©#&  *  ˜ &Ä ø	  Â%
 Ä   D—t Âe  G©# N©°*  ¾  "!" ‚À‚Ä ß	  D  ø	  …   W«®s G©# »«pK&N©*        ä æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  :‡&Ä  G©#G©#"  *  
 ø	  Â% À Àe Ð	ÄB $$$$ß	  G©# N©²G©#B *  0   —t Âe "(	"(‡‚"(‡‚"(†À‚  õª1W«®s *  VÄ ß	  D  ø	  … æ  ÎeÈ ÞÕ Öæ  G©# 
»«rKN©ÑG©#  |  ÎeÈ ÞÅ …   G©#
       *   * ÷	    <d    <d       Àœ ¡ ‡        dO   ÂèÆz  òyw:    ÂèÆ   ¯”L  û¨6@  G©#@  N©¯@  N©²@  N©T
@  N©Y@  N©Ñ@  N©/w@  N©!£@  Ü©;"@  Ü©X"@  W«®s@  z  ‡¬À]@  ¬5a      @  µ¬5a@      (  Ì«·r|â‰¬TZhš‰¬WZhÆ‰¬XZh¶‰¬€Zh¶‰¬¤Zh¤‰¬§ZhÐ“¬âh  “¬ãhl “¬ähV•¬ŠZh6  •¬‹ZhÀ•¬ŒZhP¯”   
   Ì«·r  *    Ä  tò ß	* Ä  t. t0 … õ Ö]   G©#* G©#*  & _   tÃ ô & ô  ô•  4Š 4  ‡¬À]*  L ôe Àœ ø	  ÃÎe ‡ À  p  N©/w&G©#*  r ì ß	  ° ðfÅ  CÄ Àœ ô     Ü©;"G©#G©# *  ˜ ø	  õ & Aò Dß	´Á õì @ì 
ß	  N©¯´G©# *  ¾ žBò r-&   „"}ž ö µ
& ±
 ñ
          ž*  ä Þ
B @Cô ëAö ƒ ƒß	d
  $d*  
Âß	d„õ`& Ã õ &D  ø	  „  dG©# &N©Y*  0…À  Ä… Àe  ð0 Öx . Åe. _     G©#(‡¬À]*  Võ Ö] _   &æ— 
 ‡À5 Á5   ‡¬À]*  |Á5 	”Â
ƒƒÂ~ÂEþÿ”‚~ƒ„‡ &*  ¢ß	  „æ¦
€ B  Âà‚#‚fA Á`¤  Ü©X"*  Èƒ~ƒcÄíÖÖÄ‡ Á>W¬ , *  îW¬ 0 B  C     _	  ‡ B  C   ¬5a*      _	  ‡ ð  À ð   ø•0  f  µ¬5aG©# *  :fE D  Bœ           ß	  ƒ…Àœ ø	    û¨6(N©!£*  `‡ ƒÄ Àœ ô   ø	  Àœ t Ä l    
G©# N©²(W«®s*  †Lt t l Lt l Ll ƒ „   W«®s W«®s  W«®s *  ¬ ø	  ‡ æ&Dß	  „f Áô ‰	í& ‘
É  N©ÑÜ©X"G©#ô *  Ò	m& Ñ
‰ƒ‡ Á Ä  ß	´Áô 
ß	ž‡ ×¬   G©# G©#´G©#ô $ž*  ø " 8
×¬   3Áœ  Ál Á
Á B’³ *  — { — [ — ? — } 	— ] — ! — *  D: 
— A — 0 ø— 9 õ— R ñÂå@ *  j‰œp‡ 0,1,2,3,4,5,6,7,8.,9.1,2,3,4,5,6  p      *  ,7,8.,9.×¬ " 
×¬   
Áœ  Ál Á
*  ¶Á Éœ ‡ Ä  At ttß	* Ä    G©#"* (G©#*  Üô  t
´ÖÍB¦fÂ5 @úf*    t. t0 &
… ÕÍ5 €Í5 @Åe úÕÕ*  (õ Ö] _   Ä  tî tð tò fÅ    ‡¬À]G©#&G©#*  NÄ Àœ ô   ø	  õ & Á Dß	´õ  G©# N©¯ G©# &´*  tô j&
&
v þ 
þ5   D
€  *  šÁô ß	žþ5 @ öå  êŽ
µ
ö õ
ô Þ  G©#ô 
ž*  À
Dî ß	  µ ô ŽNô 
µãö µô   Ü©X"*  æÀô Aî &ß	      à„µcö 5ô Àô Að ß	àµ  G©#ô àG©#ô &à*  N Ã Dò   ø	  umô & µc& Ã D  G©# N©Y$G©# *  2Ä   ø	  ÖÖB
ß	b…… Ä    N©Yb$G©#*  XÁ ß	´ôô Åe … õ Ö] _   D
  G©# 
´$‡¬À]*  ~æß	  ƒ“  ‡ 


‡ Ã  ³  Ü©X""G©#*  ¤Ã  3
&
fó & ÅÍhå³
& ó,&   G©#*  Ê `óÍ5€ Í5 Tõ,& èÿPÍE€ ÍE õ,& *  ðêÿBÍ5  Ä @óÀå Àå Í5 *  õ,& èÿ,ß	Þ)ß	Þ+Ã  &ó@  ÞÞ      G©#*  <òÿÁÁl& Á
ß	dBÂå ß	bÃ  ³e&   d b$G©#*  bõ& èÿÍ5 @¬ÍU€ û
§Ã  ÍU€ û
Ã    G©#(G©#*  ˆÅå ˜Ä  Ã ß	˜ãÃå ôß	  G©#G©# ˜*  ®˜Ãå ß	˜Ãå ð…… À  °À    ˜˜G©#(G©#*  Ô0
ÖfÆå ƒß	zðƒß	öÆå ƒß	
  z ö*  úzƒß	öö5   ö   Æå ƒß	zƒË  z
ö"z*   Ó  ‹
‹í ‹
€)ó"þÿ&9ß	öð &   "ö*  F0,&  	€ß	ÞÀ  °
& óÀ  ƒß	˜ö5  ÞG©# G©#&˜*  l  öU      €  0a& & ð$ ÏƒÃe ß	˜ð  &˜*  ’Ãe ß	˜Æe Ó & ¾¸
&
… Ö  ˜*  ¸Dß	  Ã ³  3  3  ß	ö&
Àˆ  Ü©X"G©#  ö&G©#  Þ&
… 
   Ì«·r.   .        ÄO   ÂHÁz  –,Ð    ÂHÁ   ¯”L  2"@  2£,@  2;N@  2cX@  2©ä@  2©
z@  G©#@  N©²@  N©Ñ@  õª2,@  »«rK@      (  j  Ý©òW|\é¨1h  û¨1h. ?©YÕh6?©ÕhT?©¬ÕhF?©eÖh(?©tÖh ?©µÖh>ø©ßh° ÖªÐÔh† ÛªÐÔh< ¯”   
   Ý©òW  *    ß	° ¦Dß	  Àb PÐÄ A‚Cœ Âà        ° 2©äG©#b G©# *  &  ß	° ¦Dß	  èCÀœ ABœ Äœ   ° 2©
z*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©²G©# »«rK*  r ø	  …  



ðCÄ Àœ Ì ø	    N©ÑG©# (N©²*  ˜ Ä À• Ì ø	  ß	  DßCÄ Àœ Ì   G©# N©Ñõª2, G©# *  ¾ ø	  ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©²G©# N©²"G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ  »«rK"»«rK*  
 Á ‡ Bœ @ Á ‡ ß	° _   ß	° @  °  2;N$° *  0_         ß	° _   ß	° _   ß	° @_   ß	&  2£,° 2"° 2cX° &2;N
  V° _     ° 2£,
   Ý©òWN   N Ä 
  G©#        "O   Â©Àz  ~      Â©À   ¯”L  G©#@  N©¯@  N©°@  N©²@  N©Y@  N©@  N©Ñ@  õª1@  »«oK@  »«pK@  »«rK@  »«vK@  j      (  i©€‰<lì¨—(h  ì¨˜(hÐ ì¨š(hžì¨ç(h ì¨è(hö ì¨ê(hÊì¨˜0h. ì¨À0hì¨1hÜ†©Šhð¯”   
   i©€‰  *    BAÀr…… æ  ÎeÈ ÞÕ ‡ BAÀrô…  G©#*  &  … ŸJ      >   … ‰rä… ‡ C  J       N©¯»«pK> N©Y*  L Ä Àœ €bô   Ø	ÁCÄ Àœ €dô     G©# G©# *  r Ø	æœ Ã Ä: €Ô~€ãÔ~€•ƒBœ à
  G©#: *  ˜ @ œ `Ä  Û	A   ÂæÊ	€Ã D  G©# &G©# *  ¾ ó    dÙ	‚ ß	Ü BJ… @Cf  Ü *  ä ÀÁÂÃß	6…‡ ß	Ü Áë AçŸJ   6Ü (J *  
       … f&DEÀÁÂÃß	6‚  N©°»«rK
N©$6*  0J…‡ &
Ã
@
A
B
C
Àe ABCN
Å*  VEN
æ  ÀABCáƒCáaCCa*  |€
Î
ïÁæ  ÎeÈ ÞÕ –%       A‡ ß	®  G©#(®*  ¢A	… ACÀb Â Ð0
 „~Â €à
  G©#b *  Èß	®ð çß	  ãŸJ      ì  … Â&  ®õª1J N©² »«vK"ì$N©Ñ*  î f&
ƒ`ã„`ƒƒÅd
Â~Å
Ôe TB*  N
ñ Ä~ Áe ddddß	  N
æ@ E  G©#~  õª1*  :Ä aå‹)ƒ`ã‹ƒ~ ! É_*  `„àÄe K£ƒ„
ÄÂ €`ááà˜*  †‚~ ŠWq Ná
–%…‡ æ  ÎeÈ ÞÕ öÅe  G©#*  ¬ BCDEÐPPHEDCBÀå Eä„ƒ*  Ò‚Däƒ‚Cä‚BâÁå Î
æÀå EdDCB*  øDdCB      CdBBbîÁå ˆ
Î
Ó–%ß	  …‡   $õª1*  ‚
‚€`€`C—  
,þÿ‡æ  ÎeÈ ÞÕ 
  G©#*  Dw Ä ÄàwÿÿsÄe €wÿÿsD’~
  jÒ
   i©€‰L  L‚  f&
ƒ`ã„`ƒƒÅd
Â~Å
Ôe TB*  N
ñ Ä~ Áe ddddß	  N
æ@ E  G©#~  õª1*  :Ä aå‹)ƒ`ã‹ƒ~ ! É_*  `„àÄe K£ƒ„
ÄÂ €`ááà˜*  †‚~ ŠWq Ná
–%…‡ æ  ÎeÈ ÞÕ öÅe  G©#*  ¬ BCDEÐPPHEDCBÀå Eä„ƒ*  Ò‚Däƒ‚Cä‚BâÁå Î
æÀå EdDCB*  øDdCB          ,  ^› 8$         å˜€W    ÂpÆ   ¯”L  ü¨@  G©#@  N©T
@  Ý©w~@  7ªl†@  ¤ªD@  Ûªl†@  ÛªÐÔ@  U«w~@  ”¬¸p@      (  G© (ü («Lwh¼ ’¬p…|€C©hŒÃ©’h:6ªÏ}h> …¬0Xhš‡¬À]hD‰¬üXh  “¬’h¯”    G©                     
 EDSGXCCID>?                                              F                                        l                                        ’                                        ¸     ß	ºß	„‡ ß	ºß	Pß‹ 
æ æêæ 
º„ºP &ê Þ gÿˆŠ  ‡ ß0      îðÂTI
ß	  JŸ   
 0îð"ü¨$J(   Àþÿ_	’AT: Ä  ôÅ þ _	>  ÂP Ã¢  þÿ
’G©#>   *aß	  JJôÕ þ ß	,À p¡ ~hß	 Ý©w~
JJ,   Púýß	0Àø	^Øl2ÊJòß	$W * ; ú
0^l2ÊJò"$ vÃÈW  ß• ÈÄe ù	  Â¢ ÀÁÄ’ƒŠ ÈÈN©T
G©#¢  œW¤0 ~€
Á
 R”~	Ò•. àÒ•0 R” Â~òÅ@ ÿÿ„
Ò•0 ûáµ@ Ë•- Ä  Âàß	   "G©#(U«w~ èJ‡ ÁÈÀÊÃ¢ ÂÅP AáE`
”—¤  ò• J
ÈÊG©#¢  ? ÿÿH      ß	âÁî‡ Ä  _	>  Æ  _ ß	 âG©#> "  & 4$W¡= ñß	,W * 2ëÀ¢ Ð•+ 
ß	öW¡ $,G©#¢ $ö Z- p‘ÿÿß	ú€P‘ûW¡. öÂ£ æ &Á ú"G©#£  €`Nà¦€àÉ&Ÿ–_	    ÈÆe Á—ÍÄ   –ÛªÐÔÈ$Í(G©# ¦_ vW¡" ·ÀÈÁÊÂ
Ñ”~•Ñ•  ~‘Ö vÈÊ ÌÅß	ÖÁ5 ¢Ág
 v W" _ <ßúî 
Ö
 "<&ú(î òöU  
öE  ðß0îß	P…„ƒ‚ ð0îP € ß	JÁ" À
 ÅQÑÁe ~tß	\à 
J" &\ > _	’SET ‡ W!B hß	úý      ß	0‡ À fÑ ’ú0$  d	ß	öÀ àQ‘ß	ú~NÑ•  ~ öú ŠW¡: HW¡: É00ß	ú€É q‘ ùW"009W¡ ú °, 6ß	úß	ÖW  /Á5 ,€H‡ É	&f 
úÖ Ö@_	’BP: €Áe ~Æ  _ ô ß	JÁ° _ ’  ô "J&°  üß	\ß	h" ‡¸  È  _	’CAN ‡ _  \h ’ "æ W!/ 
ß	,W!L ôß	úýÎ ß	Öe  ,ú" &Ö HÁ5 éÀÈPPPß	0W¡( Dß	,ß	ÎÁ
 È0",&Î nØTpT Õ_`Êß	0W¡, ðÄ  W¡) Éß	,Á— Ê0G©#&, ”ÍÄW 8 Á      Á5 ¾W * ßÈ¸×§È ´W  ÍÈ"È º ß5 Ê­‡       ß
  ß  
ß	 Ê $  à0ž€_p Åå0 Aaß	úø‡ ‚
Ã
Â
Å”W¡$  0
 ú Å•[ W¡Z W¡@ 	W!0 W!: E!‡ 
‡  ,ß	úW!  ûW!	 øÜBCß	  J… æ3ÿˆÀ úU«w~J R
 Á" B—$ ß	¨C Ãg
 ×" ÊË " ¨
  x ÉÁe ~‡ À
 Á" B—$ ‡ß	¨™á " "¨ ž Áe ~‡ ÒÃ Å “$C‡ Ä   Á   "G©#(  Ä Å ß	ð ß	ð" Å
ß	ð B  ðð ð êD ‡ fAa
—r( áœƒG…Aa‡        ABCDEFG  HIJKLMNOPQRSTUVWXYZ$. 0123456789Îå  6ðß	ºŸ   ßç
   ß  ß	h¾ È  ðº  
     h \ßÿÿ  _ ô Á
 À" ÒÃÅ “$ 
  ô "   ‚CÀe N~Á‡   ÁÔQQÐÑ Ô ¨
À Â —v Â —v ‘~ôÕ þ _	> (> Î Ô…  Ô Þ Þ:   â â   ê ê    ê f¦æ&fH  ê  ’¬p…     ß	  ß	L Á  	 @ ð p
 æ æ  æ ¤ªD
L G©#&”¬¸p & iÿˆ: óV {	V ß	ˆ … &ß	L ß	^ €‡  ˆ  L $^  L À   ‡ À_ :À         &Îe  ,  Ö G©#  :G©# r ‡ æ# ß	   € À_ :@ û  Xæ$ ß	 Ûªl†€ : ˜    ž Ä  À¢ mü 	Š  Ã@ 3
  À
€
 Ûªl†ž G©#G©#¢  ¾ È‹@È¥  úÈ¥, ÷È¥	 ôÈ¥* ¢0 $‡¢9  ä !‚”Áå0 ¢0 ‡¢9 ‚Wp
 ”Âå0 `óóÿÿ 
  ×Á
Áå Â t³P  à‹Êæ  Îež  $G©# 0Þ(æ% ß	   @®‡ fß	¼ …Ä  t$  Ûªl†@G© ¼ "G©# Vt ( fÎe Ž  ý  	t/  & t  & ü	 |& t t  t" &ß	Æ „…| ( Ä  ô G© Æ $G©# ¢ &f   Á
Wp m q# Áå À
 È      ù€Õ… 4  t2 f æ ß	  
 ìæ "Ûªl†&ì î  Îež Þ< _ ñ
  Å ô
 Å
 E` G©# €_ Dß	>  Ä  : óX {	X Äž   D> G©#&G©#ž  :&æÿˆæ3ÿˆ  G©  ôÅ º   & &Ã&   6 6ôÕ º   † †Äe   Ž ŽÂ&  G©#&  ô ôÃ&  G©#&  H HÀ&  G©#&  v vÂ'  G©#'  Ä ÄôÕ º   ’¬p…L  L À¬  G©#¬  ¢  ¢ À&  G©#&  ¨  ¨ m¸    ÷	*   4 4Äª  G©#ª  H H÷	òý&Äô „‡ æ&&&æ  Îeª  G©#   *   $G©# nÞ  ÷	   zƒ„‡  
7ªl†z *          jL¢_› 8$         ÁXÀO    7     ~  € 4   ¼  T¬ ¬                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         0"3 T0£,3 T0;N3 T0cX3 T2"4 Ô2£,4 Ô2;N4 Ô2cX4 Ôt!Àv“ FRˆ,“ FTq8"“ F\q°r“ F‡s s“ Fé¨—(2 ~é¨˜(3 Té¨š(4 Ôé¨ç(2 ~é¨è(3 Té¨ê(4 Ôé¨„*   é¨¬*   é¨˜06 ¶ é¨À08  é¨Ä0 Ôé¨ì0 Ôé¨1§ Æ ì¨ ú ì¨—(© Š ì¨˜(© Š ì¨š(© Š ì¨ç(© Š ì¨è(© Š ì¨ê(© Š ì¨˜0© Š ì¨À0© Š ì¨1© Š ô¨AeI H õ¨—( 8 õ¨˜( 8 õ¨š( 8 õ¨ç( 8 õ¨è( 8 õ¨ê( 8 õ¨˜0 8 õ¨À0 8 õ¨1 8 û¨—(2 ~û¨˜(3 Tû¨š(4 Ôû¨ç(2 ~û¨è(3 Tû¨ê(4 Ôû¨„*   û¨¬*   û¨˜06 ¶ û¨À08  û¨Ä0 Ôû¨ì0 Ôû¨1§ Æ û¨6 ú ü¨P ©ª%f Ì©ªpf Ì2©ä4 Ô      2©
z4 Ô9©t!h >:©lzc þ :©€c þ :©™Â2 ~:©ÝÂ2 ~:©ìÂ2 ~:©¥Ã2 ~:©´Ã2 ~:©õÃ2 ~:©ÙÈ3 T:©É3 T:©,É3 T:©åÉ3 T:©ôÉ3 T:©5Ê3 T:©YÕ4 Ô:©Õ4 Ô:©¬Õ4 Ô:©eÖ4 Ô:©tÖ4 Ô:©µÖ4 Ô;©¿'h >;©†:h >;©hL„ ä;©zLh >;©hMh >;©jMh >;©ÐMw  ;©øMo ”;©™Â ,;©ÝÂ ,;©ìÂ ,;©¥Ã ,;©´Ã ,;©õÃ ,<©º ‹ X <©» Š p <©"" ´ <©#"~ Ä >©¨h >>©¹.[ Z >©Ì. ,>©cMh >>©èYh >>©™w ,>©Ýw ,>©ìw ,>©¥x ,>©´x ,>©õx ,?©Y ,?© ,?©¬ ,?©e ,?©t ,?©µ ,?©y[ Z ?©Y£ Ô?©£ Ô?©¬£ Ô?©e¤ Ô?©t¤ Ô?©µ¤ Ô      ?©™Â6 ¶ ?©ÝÂ6 ¶ ?©ìÂ6 ¶ ?©¥Ã6 ¶ ?©´Ã6 ¶ ?©õÃ6 ¶ ?©ÙÈ8  ?©É8  ?©,É8  ?©åÉ8  ?©ôÉ8  ?©5Ê8  ?©YÕ§ Æ ?©Õ§ Æ ?©¬Õ§ Æ ?©eÖ§ Æ ?©tÖ§ Æ ?©µÖ§ Æ ?©y×[ Z A©öZh >A©ÿZh >C©B âE©e ,E©2e ÔE©òy ,F©ªNh >F©@`h >G©#? P G©Õd â G©le žG©ze žG©{e žG©Ôft TG©âft TG©ãft TG©øfm Æ J©º † ‚J©» … NJ©""x ÄJ©#"w ‚J©K"p J©r‘ J©s € J©:‘ &J©;‘Œ ê J©¢’} ` J©£’| Z J©Ë’s nK©Ù} ,K©~ ,K©,~ ,K©{~  K©å~ ,K©ô~ ,K©5 ,K©Ð€ K©=Ÿh >N©¯' ¤ N©°' ¤ N©²' ¤ N©T
' ¤ N©Y' ¤ N©' ¤ N©Ñ' ¤       N©' ¤ N©/w' ¤ N©!£' ¤ O©5q’ JO©úq‰ > O©ûqˆ  O©bs{ H O©csz 6 O©‹sq  R©Ù   R©   R©,   R©å   R©ô   R©5   e©„dR "e©ûfR "t©P †©Š© Š ´©ø' ¤ Ã©’B âÐ©/£ ÔÜ©;"F .Ü©X"F .Ý©w~P Ý©Ñ~W  ø©ß§ Æ ø©/£ Ô4ªu:k P6ªÏ}B â7ªl†I H ¤ªDR ¼ ©ªXk P¶ª·„P Ëªà   ËªŒ( ,ËªÂ2 ~ËªPÈ3 TËªÐÔ4 ÔÍª¨¢ rÍªÂž žÍªPÈž žÍªÐÔž žÎªí+T ¶ ÏªT ¶ Ïª˜!T ¶ Ïªð- ,Ïª(K ,ÏªHXT ¶ Ïª˜X ,ÐªÂ2 ~ÐªPÈ3 TÐªÐÔ4 ÔÒªD† ,ÒªJ† ,Öªà ÔÖªÂ6 ¶ ÖªPÈ8  ÖªÐÔ§ Æ Úªà   ÚªÂ= Ü ÚªPÈ= Ü ÚªÐÔ= Ü Ûªà Ô      Ûªl†I H ÛªÂ6 ¶ Ûª8Â ,ÛªPÈ8  ÛªÐÔ§ Æ êªP› 8 õª0,' ¤ õª2,' ¤ õª1' ¤ («LwB âU«Yfd â U«w~P U«Ñ~W Ú W«®sW ž‘«[K™  ’«,™  “«kM™  •«Ã^™  •«Ë`™  –«;™  «VK™  «™q™   «1™  ¢«€™  ¢«l™  ¢«á"™  ¢«[}™  £«1™  £«¶™  £«ç™  £«1™  £«C™  §«À™  §«üq™  ¨«q™  ¹«Ùd â ¹«Ìd â º«<R "º« <R "º«!<R "»«oKW ž»«pKW ž»«rKW ž»«vKW ž¼«/' ¤ ¼«´;“ F½«Ö%“ FÀ«""B âÃ«)#d â Ã«1#d â Ã«;#d â Ã«,:“ FÅ«4…“ FÇ«6f“ FÌ«ßg“ FÍ« ú Ï«	F“ Fá«ø$ î«“$ î«ÕZ$ î«Xz$ î«H…$ ó«À$ B¬òyd â       C¬µ	d â ¬dE ~ ¬KV Ä ¬ NE ~ ¬<NA úƒ¬,% ìƒ¬4Kh >ƒ¬kMh >ƒ¬
Nh >„¬©% ì„¬%!h >…¬»G ¼ …¬{H ä …¬0XB â…¬PsE ~ …¬|—% ì‡¬À]B â‡¬`^E ~ ‡¬aE ~ ‡¬$aA ú‡¬ bA ú‰¬÷Xh >‰¬üXB â‰¬TZ  b‰¬WZ  b‰¬XZ  b‰¬€Z  b‰¬¤Z  b‰¬§Z  b‰¬¼^h >‰¬ò`h >‰¬ˆ–R "¬5a ,¬Ödh >¬"@ j ¬,"A ú¬…q@ j ¬q@ j ¬šY ’¬lh >’¬îh >’¬ê"h >“¬,[ Z “¬;	[ Z “¬Ë[ Z “¬šw[ Z “¬:}h >“¬hE ~ “¬’B â“¬â  b“¬ã  b“¬ä  b“¬›ƒ% ì”¬¸pP •¬4Kh >•¬kYh >•¬ŠZ  b•¬‹Z  b•¬ŒZ  b—¬üqh >µ¬5a ,Ó¬ÐM' ¤ Ó¬Ø_   ä¬ày' ¤       ­“$ ­ÕZ$ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      »Ô!G ¼ 0(2 ,ö´r= Ü öšwž ž³€$ &ZŠ' ¤ Ë»%   Ë–, ÔË´r   Ëšw r{ùeH ä ~  © Š ]!ôT ¶ ]!<K ú »%o}2 ~»%p}3 T»%r}4 Ôe,8wF .–,X6 ¶ –,€8  –,Ð§ Æ œ,´V Ä œ,¡EW  Ä8@8„ äå8;‹ X å88;Š p ›:à~h >¨:@8 ž;;† ‚;8;… N';à8 € ';; &';8;Œ ê ';ˆ;‘ L;@8  ê;H’ Jê;;‰ > ê;8;ˆ  £K ŒR ¼ KTl†d â ”T } 8 S`l†f Ìó`""A úäfìk P\g¡EW Ú q€pw  %qPs ´ %qxs~ Ä èr€pt TUsPsx ÄUsxsw ‚gsPs} ` gsxs| Z Œs€p€ *tPs{ H *txsz 6 w<R "9wÈKW žDwÀvo ”šw [ Z 7x›r™  (yÀvm Æ *yø“ F•y¸yp       §y¸ys nòyw:  bjz¸yq  ;}ÀDc þ ·„[qP J†7xI H *’úD? P y–àL% ì˜8wE ~ …˜pq@ j —˜"Y å˜€WB âÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           ÔN  
 ÂpÁ*  Ë»%    ÂpÁ   ¯”L  ì¨@  G©#@  *  N©T
@  N©@  N©!£@  Í«@  ‡¬À]@  *      (  e©±|æé¨„*h  é¨¬*hB û¨„*h† *  û¨¬*hŒ R©Ùhþ R©hR©,hR©åhô *  R©ôhê R©5hËªàh’ Ó¬Ø_hR¯”   
   e©±  *    Â  NÎe CÀœ ø	  C Áœ ù	  f¦C  ì¨N©T
"N©*  & ÀÁD„ÅÞ	—¥ åÅ@ ‡ Â  NÎe   "ì¨*  L CÀœ ø	  C Àœ ø	  AC@&¦@  N©T
N©T
*  r AÂÃÞ	ƒÀœ ø	  ‡ Â  ¼Â  ÚNÎe   N©!£Í« Í«*  ˜ Ä C      Àœ ø	  ÀÁD€àÄ•0 `   G©# N©T
*  ¾ ‘~Ä0 ¡æ  ÎeÈ ÞÕ 	~S”‚~CÀœ   G©#*  ä ø	  ‡ ß	4Â… ß	4Â… ß	4Â… ß	  N©!£44 4*  
4Â… ß	4Â… ß	4Â… åÖm å  444*  0_   CÀœ ø	  ÁCÀœ ø	  @AÂÃÅe   ‡¬À]N©T
N©T
*  VD`&™ÎE¿ÿ„Ä`™ÄE¿ÿ!"ÖÄ€D*  |Á€à` Ä0 ¡
~Ä0 D¤~S¤*  ¢ƒ~Â‡ Â ‡ &Ä0 À
D¤~Â
Ä¤"  Èƒ~D’ÄEðÿÄ’ÄEðÿ–%
‡ –%à       LN  
 Â Í*  Ë–,    Â Í   ¯”L        ì¨@  û¨6@  *  G©#@  N©T
@  N©@  N©!£@  Í«@  *  ‡¬À]@  Ó¬Ø_@      (  e©Ý| é¨Ä0h  *  é¨ì0hÔ û¨Ä0hfû¨ì0hx?©Y£h8?©£hL*  ?©¬£hV?©e¤h.?©t¤h$?©µ¤hBE©2eh`*  Ð©/£hhø©/£hŒÖªàhÄÛªàhŠ¯”   
   e©Ý  *    NÎe Ÿhæ  åfED­ W­  JW­   hì¨*  & & Ff DEþ	 —¥ –%‡ åÅ@ –%‡ &‘f*  L  „Åb &þ	 €—¥ õÅ@ ÿÿAà„•ƒ  
  
G©#b *  r Âœ á×¬  ×¬ & Ä  Å ß	  –%‡   $û¨6*  ˜ „`Åv ß	  Ã „  ø	  Ö‡ Å „  &        
G©#v û¨6G©# N©!£$G©# *  ¾   5  E þ	 Ã êNÎe ŸŒæ  f  G©# "Œ&ì¨*  ä ED­ W­  áW­ & ÝDEþ	 ƒÀœ *  
ø	  Ö‡ &‘ „„
Åb &þ	 €Aà  N©!£G©#b *  0„•ƒ  Âœ á×¬  ª×¬ & ¦Ä  Å ß	*  V  ƒÀœ ø	  Ö‡ NÎe Ÿhæ  _  NÎe  û¨6N©!£h Í«$ *  | ŸŒæ  _ â NÎe Ä CÁœ Àœ ø	    ŒÍ«â G©# (N©T
*  ¢EfB BàÀÁDEß	  ƒÀœ ø	  ‡ NÎe  û¨6"N©!£*  È Ä CÁœ Àœ ø	  EfB BàÀÁDE        G©# N©T
*  îß	  ƒÁ Ál  áµ@ ÉÕ@ ÉÅ@ Àœ ø	    û¨6(N©!£*  ‡ åÖm å_   ß	`Âõ… ß	`Âð… ß	  ‡¬À]` `*  :`Âë… ß	`Âæ… ß	`Âá… ß	`ÂÜ…   ```"`*  `ŸŒ_   ÖCÀœ Ä ø	  ÁCÀœ Ä ø	"  Œ
Ó¬Ø_G©# N©T
&G©# *  †  _ ¬ÖCÀœ Ä ø	  ÁCÀœ Ä ø	  (  N©¬G©# N©T
$G©# (N©T
*  ¬¦s¬  "æf@œ Âœ àCß	€Á…  "*  ÒƒÄœ ffBœ Àœ àß	…Dœ @A  *  ø‡ Dœ @AÂÃ‡ ÀÁÅN „`&ß	  ‚      C  G©#N $û¨6  ‡        RN  
 ÂpÆ*  Ë´r    ÂpÆ   ¯”L  û¨6@  G©#@  *  N©T
@  N©!£@      (  e©ž|€ Úªàh  
  ¯”   
   e©ž  *    NÎe Ä CÁœ Àœ ø	  EfB BàÀÁ  G©# N©T
*  & DEß	  ƒ 5 ÄÅ ß	J Àœ ø	  ‡ a  
û¨6J $N©!£*  L õµ@ ÿÿW©y Í•p Ä
W©9 
Í•0 æ    (G©#  r ÎeÈ ÞÕ ‡ Š‡        ˆN  
 Â˜Á*  Ëšw    Â˜Á   ¯”L  û¨6@  G©#@  *  N©!£@      (  e©½|ž Íª¨¢h  ¯”   
   e©½  *    NÎe æ  ÎeÈ       Þ5 8CÁœ ÀEDB Bà  G©#*  & ÁW¤0 ~€
Á
f`D Ö_ „ fW­    „ *  L  W­ & 
E ß	  ƒÀœ ø	  ‡ Å& ß	  û¨6 N©!£&G©#& *  r   Ã „  ø	  ‡ æ  ÎeÈ ÞÕ æ  ÎeÈ "  û¨6G©# N©!£G©#$G©#
  ˜ ÞÅ ‡        2N  
 ÂHÁ*  ]!<K    ÂHÁ   ¯”L  G©#@      (  *  •©!…|Àì¨h  û¨6hPÍ«hv ¯”   
   •©!…  *    &Ä•0 D¤~€
á‹Ä¤ƒ~‚
ã‹„`ƒ`afñµ*  & @ ÿÿóµ@ ÿÿß	˜ …‡ ß	¢óµ@ ÿÿß	
  ˜ ¢*  L ¢À5 ÀU ß	˜ ÀU …À5 õÕ@       ÿÿ‡ 
  ¢˜ *  r …‡ `fß	† àß	  áµ@ ÑÕ@ ‡ ÑÅ@ ‡ 
  †   *  ˜   Dàà¦&
„ =€à„à&&€ÂC*  ¾ 
B˜ÂÅðÿ„`Â˜ÂÅðÿ„`%zŽ~‚ Ž 8Â
  zŽ*  ä 	À˜ÀÅðÿ`%zŽ‰~€‚€à	Äæ  Îe  zŽ&G©#*  
È ÞÕ ‡ Äå•1 À
Ã•0 å~‡  
B˜ÂÅðÿ*  0€`Â˜ÂÅðÿ€`%œz œŽæ  ÎeÈ ÞÕ ‡ ‚Ö  zŽG©#*  VÂ	À˜ÀEðÿ`%zŽ‰~æ  ÎeÈ ÞÕ ‡ 01  zŽG©#*  |234567890123456789          *  ¢ (àƒàÀ
S¤~æ”ÎÅ@ f”ÎÅ@ –¥*  Èå•0  
‡ c¨€
      `ƒ`¦BÁƒ€æ *  îc¨€
`ƒ`&
&¦
D˜ÄEðÿaÎ
Ä˜ÄEðÿá*  „œ„ö
 ¡0 %‘ÂÂ~Ö„å•0   „*  :€‡ –%€æ  ÎeÈ ÞÕ ‡ æÃ0 `ae¨ff  G©#*  `f’ÑÅ@ …
&
Â#åÄ
„~àe˜~Äå*  †€^ÁE¿ÿ^Ðƒ‡ ` áe˜C¨~ðæ    (G©#  ¬ÎeÈ ÞÕ é`€`äN’Ü       N  
 Â˜Á*  0(2    Â˜Á   ¯”L  Ü©;"@  ‡¬À]@  *      (  ô¨Ae<R;©™Âh;©ÝÂh";©ìÂh0*  ;©¥Ãhø;©´Ãhê;©õÃh>©Ì.hz>©™whZ*  >©Ýwhj>©ìwhr>©¥xhR>©´xhJ>©õxhb*  ?©Yh¶?©h      Æ?©¬hÎ?©eh®?©th¦*  ?©µh¾E©ehÖE©òyhþ K©Ù}hÐ K©~hà *  K©,~hè K©å~hÈ K©ô~hÀ K©5hØ ËªŒ(h@ *  Ïªð-ht Ïª(Kh‚ Ïª˜Xht ÒªD†h  ÒªJ†h" "  Ûª8Âh¦ ¬5ah µ¬5ah& ¯”   
   ô¨Ae  *    ß	² €àS”‚~… `S”‚~ Ä  ‘~… ß	² 
  ² (² *  & €à`í` Ä  ‘~Âå… ß	² à€`Á5   ² *  L  S”À
„SÀ5 S”ÂÀ  ‚~*  r … ß	  €Áß	  Áß	² À% 	S”Â
… ~  Ü©;"Ü©;"² *  ˜  àøA’S‚~… @A9ž  … A@ACÂÃ*  ¾ ‡ ß	þ ‡… ß	þ ƒ… ß	þ … ß	þ 	… ß	      þ   þ þ þ  þ (þ *  ä †… ß	þ ‚… åÖm å_   ACÅe {®   
þ ‡¬À]*  
 ‡ @AÂÃà€`ÀS¤~Â‡ *  0À   úƒ~‡ À  @¤óƒ~‡ ß	zÐ‡… ß	z
   z(z*  VÌƒ… ß	zÈ… ß	zÄ… ß	zÀ†… ß	z¼‚… ß	  
zzz"z*  |² Åe À% 
S¤Â
~á ø‡ A’S ü  ² *  ¢ƒ~‡ ß	Ö¢‡… ß	Öžƒ… ß	Öš… ß	Ö–… ß	  
ÖÖÖ"Ö*  ÈÖ’†… ß	ÖŽ‚… ß	  €Áß	  Åe _ @A  ÖÖÜ©;"Ü©;"$*  î9®  $‡*@A9®  ƒ#@A9®  *  @A9®  @A9®  †      @A9®    :‚õ Ö] _   Åe …   ‡¬À]       :N  
 Â Á*  ”T }    Â Á   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  »«oK@  »«pK@  »«rK@  »«vK@  *      (  Ýª N<šõ¨—(h  õ¨˜(hÂ õ¨š(h~*  õ¨ç(h õ¨è(hú õ¨ê(h¾õ¨˜0h õ¨À0h  õ¨1hÒêªP›hâ¯”   
   Ýª N  *    ß	 ]… @¡ pn‡‡ ß	 ]… ŸB   .     $B &N©¯(. *  &   8   …  	pR
‡ ÒÀ€"V‡ CÄ Àœ   »«pK8 N©Y$G©# *  L €bô   Ø	ÁDœ &CÄ Àœ       €dô   Ø	
  G©# *  r Äœ a@ Á ƒ¦ÂN Ë	Ä CÂœ ‚å  G©#N  G©# *  ˜  ù	   Ñæ&Ù	ƒ„ó     @dB*  ¾ Ø	‚ ß	Î @ˆ… @AÂb ß	€ÐÐÃÐ   
Î G©#b *  ä È ‡ æ  ÎeÈ ÞÕ ‡ ß	Î ò áJ
  G©#Î *  
âÜŸB     Ú   … f& Ž
	qR
   
B N©°»«rKÚ N©*  0ò DqJaD2a @á€
 qRaD
aò *  VpR`@
`Âå …‡ ÃqÄ`‡ &qÄ`„e*  |‡ ß	Ž@ˆ… @AÂb ß	â€Àe Ð  ŽG©#b  â*  ¢ÄÃ $Ã~‡ æ  ÎeÈ       ÞÕ ‡ ß	Žò Ý  G©#"Ž$  ÈDN…_ €ŸB   â  š  … f&
Ä$  €B N©²â»«vKšN©Ñ*  èv ð  ß	€N
ñ Eß	€N
ß	2  G©#v €"€(2*  ÖÁe À a
~À Ñe †Q~…‡ Ã*  4 Âe "
Â~ß	Tß	Tß	Tß	TÂå ‡ &À  TTTT*  Z Dß	fRaDaRRJÂå ~Âå €Áå ‡   
f  €Ã LT
Ã~Äå Ôe TTT‡       N  
 Â¨À*  ~      Â¨À   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  »«oK@  »«pK@  »«rK@        »«vK@  *      (  i©€‰<lì¨—(h  ì¨˜(hÐ ì¨š(hž*  ì¨ç(h ì¨è(hö ì¨ê(hÊì¨˜0h. ì¨À0h  ì¨1hÜ†©Šhð¯”   
   i©€‰  *    BAÀr…… æ  ÎeÈ ÞÕ ‡ BAÀrô…  G©#*  &  … ŸJ      >   … ‰rä… ‡ C  J N©¯»«pK> N©Y*  L Ä Àœ €bô   Ø	ÁCÄ Àœ €dô     G©# G©# *  r Ø	æœ Ã Ä: €Ô~€ãÔ~€•ƒBœ à
  G©#: *  ˜ @ œ `Ä  Û	A   ÂæÊ	€Ã D  G©# &G©# *  ¾ ó    dÙ	‚ ß	Ü BJ… @Cf  Ü *  ä       ÀÁÂÃß	6…‡ ß	Ü Áë AçŸJ   6Ü (J *  
       … f&DEÀÁÂÃß	6‚  N©°»«rK
N©$6*  0J…‡ &
Ã
@
A
B
C
Àe ABCN
Å*  VEN
æ  ÀABCáƒCáaCCa*  |€
Î
ïÁæ  ÎeÈ ÞÕ –% A‡ ß	®  G©#(®*  ¢A	… ACÀb Â Ð0
 „~Â €à
  G©#b *  Èß	®ð çß	  ãŸJ      ì  … Â&  ®õª1J N©² »«vK"ì$N©Ñ*  î f&
ƒ`ã„`ƒƒÅd
Â~Å
Ôe TB*  N
ñ Ä~ Áe ddddß	  N
æ@ E  G©#~        õª1*  :Ä aå‹)ƒ`ã‹ƒ~ ! É_*  `„àÄe K£ƒ„
ÄÂ €`ááà˜*  †‚~ ŠWq Ná
–%…‡ æ  ÎeÈ ÞÕ öÅe  G©#*  ¬ BCDEÐPPHEDCBÀå Eä„ƒ*  Ò‚Däƒ‚Cä‚BâÁå Î
æÀå EdDCB*  øDdCBCdBBbîÁå ˆ
Î
Ó–%ß	  …‡   $õª1*  ‚
‚€`€`C—  
,þÿ‡æ  ÎeÈ ÞÕ 
  G©#*  Dw Ä ÄàwÿÿsÄe €wÿÿsD’~
  jÒ       \N  
 ÂøÀ*  ³€    ÂøÀ   ¯”L  G©#@  ‡¬À]@  *      (  D©€(á«øh° î«“h¸ î«ÕZh *  î«      Xzhú î«H…h  ó«Àhò ­“hÀ ­ÕZh 
  ¯”   
   D©€  *    ß	 o… ß	 k… DÅe   —   ;— 
    *  & & 8ÀE ÿz  : B | ‚ À
B`À
B
Ã#    : B | ‚ *  L ÄX ”¢#Ã~‡ ABCDEFGHIJKLMNOPQR01234567  X   r 89[]?!:{}å   | *  | B`BÂ
—¢+ —¢- —¢  ‡ ÀW¢0 *  ¢ W¤9 ~´ ‡ ß	À … ß	À … DÅe  
  À À *  È W¢  W¢A W¢Z 
~´ ‡ åÖm å*  î _   ß	ö… ß	ò… Ä  @ @Åe  =  ‡¬À]
G©#    ‡        ¸N  
 ÂèÆ*        y–àL    ÂèÆ   ¯”L  C©@  G©#@  *  6ªÏ}@  Ûªl†@  («Lw@  “¬’@      (  *  ƒ¬,|V ƒ¬,h  “¬›ƒ|| “¬›ƒh  …¬|—| "  …¬|—h  „¬©| „¬©h  ¯”   
   ƒ¬,  *    Ä  t2 &ft4   PAB Á
û  G©#*  & €t(  &ü	4 ß	  Ä  Œß	  ô&   («LwG©#"6ªÏ}  L ü	& _     C© “¬›ƒ  *    Ä  ô 
´
 44 8 4¯  !… æ  Îe  G©#&G©#*  & ª Þ  æ ß	   8 Ä  L4 æ  ß	    Ûªl†8 G©#(Ûªl†*  L  P æ  Îeª Þ _   æ ß	   l æ  Îe"        P 
G©#“¬’Ûªl†"l &G©#  r ª Þ, _     “¬’ …¬|—      Ä  4
& 4
 4
8 Ö‡   G©# „¬©  "    @•ÀÄ   m A•B2 re F~…   
G©#       ÚN  
 ÂðÒ*  &ZŠ    ÂðÒ   ¯”L  G©#@  ‡¬À]@  *      (  F©dŒ|zN©¯h–N©°h
N©²h~*  N©T
h²N©YhÐN©hDN©Ñh¸N©hz*  N©/wh‚N©!£hê´©øhõª0,h õª2,h> *  õª1h<¼«/hÓ¬ÐMhTä¬àyh\¯”   
   F©dŒ  *    û €; ‡ È€0þÿˆ‡ È€ ‡ *  & È€P
P
H
Èe ``‡ È	€H
`
`
`
Ðe P*  L       PH‡ È	€P
P
P
H
Èe ```‡ ‡ ß	v ß	  &v *  r R ‡   Àe Ã Èààà‡ ôœ  Ã   R *  ˜ Ãe   ÐÐÐÈ‡ ß	¼ ß	: ‡ ôœ  Ã
  ¼ : *  ¾    ÐÐÐÈ‡ ôœ  Ã   Ãe Ð*  ä ÐÐÈ‡ ß	ø ß	R ‡   Àe È ààà
  ø R *  
‡ ß	ß	R ‡   Àe Ã Èààà‡ 
  
R *  0ß	:ß	& ‡   Àe Ã Èàà‡ ß	`ß	  :
& &`*  V  ‡ ôœ  ü  ‡ ß	zß	: ‡ ôœ       z: *  | Ð ÐÐÈ‡ ß	œß	: ‡ ôœ  Ã  
  œ: *  ¢ ÐÐÐÈ‡ ôœ        Ã   Ð ÐÐÈ*  È‡ ß	Öß	 ‡   ð  È‡ ß	ðß	   
Ö $ð( *  î‡   Ã ð È‡ ß	ß	& ‡   Àe 
  & *  È àà‡ ß	*ß	& ‡   Àe Ã Èà
  *& *  :à‡ ß	Pß	 ‡ ôœ    Ð È‡ ß	
  P *  `nß	 ‡ ôœ  Ã   ÐÈ‡ ôœ  Ã
  n *  †   Ð È‡ j j             j j j   j j $j &j (j   ¬j j j ¸¸¸¸¸¸â*  j j j 
¸¸¸¸¸¸â  Àj ¸¸¸¸¸¸¸P`*  j ¸¸
¸¸¸¸¸P      `  ÔÌÖî ø P`@P*  ÌÖ
î ø P`@P  èjzLþLLLLT`*  jzL
þLLLLT`  üLLLLLLLJJ~*  LLL
LLLLJJ~   ~        JJj j j j ØØØ*  ~JJj j j j ØØØ  ,ØØØúJØØØØØ*  ØØØ
úJØØØØØ  @ØØP`æð **  ØØP
`æð *  TP`^nŒœXZXX*  P`^
nŒœXZXX  hXXj      `XXXXXX*  XXj
`XXXXXX  |Xtt°°Ž Ž Ð Ð t*  Xtt
°°Ž Ž Ð Ð t  t––j j øøøøø*  t––
j j øøøøø  ¤øtøøøøøøø*  øt
øøøøøøø  ¸P`æð0:l v P`*  P`æ
ð0:l v P`  Ì^n¬ ¼ dÀdddd*  ^n¬ 
¼ dÀdddd*  à€`dddddddôœ    ôœ  ŸBÃ *  €`d
dddddd$B*  æ`f      Ã	
—r
 Ãe0 áƒ
~Ä0 !‘*  ,~„ÖäÕ@ …ƒ‚‡ f&f J ôœ  *  R  ô  ŸBÄ ¦B`fÂÌ  B*  x…
s
 DÅ! w Äå
 wÿÿs
 Äe*  ž €s
 Åe0 a‘~_ .ôœ    ôœ  ŸB
  .(B*  ÄÅ Åe f`ff„fffÌÄå ß	<ä  &<*  êä%ôþÿ
ôúÿÄå Æe µÅ 
*  —  —v Âå
 —vÿÿ—r
 Âe €—r
 ŒÂ*  6TÂe0 ¡Äe ,~Æe _ .ß	þÀœ x êß	Z  .þ$ê(Z*  \Àœ x êß	ÀÀœ x ê&Ä  Ìß	~„_ N  
êÀêG©#  "~(N*  ‚&      Ä  Ìß	Ž „_ ´&Ä  Ìß	Ð „_ ´¦"  G©#  Ž ´G©#   Ð &´*  ¨ß	\ü ‚‡ ¦ß	\  Ðˆõ¦&ff
  \\*  Î ÀÁ ` “àW¤0 ~

á‹&f*  ô 	 À	 ß	x€Õ•ÕÕÀå	 Áe	 Åå  x*   D”ÄEðÿæ B—p
 Âe
 aBÕ„Î
ôÖ*  @~áµ@ DÄå ß	<…ƒ‚‡ f&ÀÁ   <*  f` “àß	x„‡ D

£0 „
~Â  x*  ŒWp
 —p
 Âe
 `•ÂEðÿƒ`A~©p A*  ²B‡ ôœ  fß	È‡ Àœ ø	²D_ ¦  È"²(¦*  Øôœ  fß	è‡ Àœ ø	²D_       ¶ôœ    è²"¶*  þfß	‡ Àœ ø	²D_ Æß	¶Ä_ ð&  ²Æ ¶&ð*  $Ä  ß	Æ„_ :ß	ÆÄ_ v T
T
T
L
Äå Ôe  G©#  
Æ:Æv *  J TTT‡ &Ä  Œ  ß	þ„ß	–‡ &Ä    G©#  þ –(G©#  *  pŒ  ß	Z„ß	–‡ &Ä  Œ  ß	À„ß	–‡   
Z–G©#   À&–*  –f¦fÅ  Âµ  
A•ÁÅ0 @ÐÂ
@•*  ¼ÀEp t Œ~W¹@ ÀÕ ÀÕ …‚‡ *  â&Ä  ß	*„ôœ  ß	¦‡ &Ä  ß	*„ôœ  G©#  *¦ G©#  $**    ß	¶‡ &Ä  ß	*„ôœ  ß	Æ‡       f¦  
¶G©#  *"Æ*  .fÌôœ  ÂÅ Âµ A•ÁÕ0 SÂ

AÕ*  T 
r ÀÕ0 ~†Á% ãÕ@ …‚‡   zòòpp‚‚””òò*  òòp
p‚‚””òò  ŽNN´´&	$	F	š	ô	N
*  NN´
´&	$	F	š	ô	N
  ¢*ò„
„
„
„
„
„
òò*  *ò„

„
„
„
„
„
òò  ¶pp‚‚””òòNN*  pp‚
‚””òòNN  Ê´´&	$	(	b	Î	&
*ò*  ´´&	
$	(	b	Î	&
*ò  Þ„
„
„
„
„
„
¦¦*  „
„
„

„
      „
„
¦¦  ò""22¦¦¶¶ÆÆ*  ""2
2¦¦¶¶ÆÆ  	ž
$	¬
º
Ú
ø
–¦ž
ž
*  ž
$	¬

º
Ú
ø
–¦ž
ž
*  	ž
ž
ž
ž
ž
‡ ‡ À’Àl ˜¦6‘ ö
„Ì	  ž
ž
ž

ž
ž
"ö
*  @	€ˆ•‡ À’Àl ˜ö
„Ì	€’ì
‡ ÀÀb
  ö
"ì
*  f	Ä–Æå Ž 6‘ 6˜ +ö
Ä–ÄÅ¿ÿ+ÁÑ„æ  ö
*  Œ	ãÌ	€„Œ•ˆ•‡ ÀÀbÄ–+ö
Ä–ÄÅ¿ÿ+Á Ñ„  ö
*  ²	æãÌ	€„Ÿ  ÄÅ¿ÿÁÑ’ì
‡ Ä’Äl Ì¥-   ì
*  Ø	€™&ÌÕ@ €™&È	€ˆ•‡ Ä’Äl Ì¥- *  þ	ôÕ@ ÿÿ€È	      €ðµ@ ÿÿÈ•+ ‡ È•- àÅ@ *  $
‡ À’Ä  aä¥- „˜&ÈÕ@ „˜&Ì	€*  J
ˆ•‡ Ä’À `à¥- äÕ@ „ÎÌ	€ `äµ*  p
@ à•+ ‡ ÌÅ@ à•- ‡ ×" ‡ ÄÄbÄå Ã*  –
ú 3 ‡ Àœ  Àl àÅ@ ‡ À’Àl ˜ì
‡ À’  G©#ú $ì
*  ¼
Ä  aÀ
Èµ@ ÈÅ@ ÌÕ@  “œì
‡ À’Àl   ì
*  â
àµ@ ÈÅ@ Ì•- ‡ Ì•+ ‡ À’Ä  aàµ@ ä•*  + ‡ ÈÅ@ ä•- ‡  p    {ABCDEFGHI01234567*  .89p    0@123456789qrstuvwxy        0 p*  T        }JKLMNOPQR           0 p}JKLMN   zOPQR 0 p¬¬ÖÖèèøø¬¬*  ¬¬ÖÖèèø      ø¬¬  –²²ÀÀ*  ²²À
À*  ªÃ ‡ Ä À #G‡ Ä À %@ %>  *  Ð #<‡ Ä ô À 4‡ Ä ô À +*  öôÄ ô À %#õCNÄ Àœ ø	²fÀ  G©# $²*  Ä
•W¡0 ~×p
 ‡•ÅEðÿCa…	~¹@ *  B…‡ …Ãÿÿ² ‡ ÀÈ Š… ÀÈ Èµ Åe  G©#È  G©#È   h … õ Ö] _     ‡¬À]       ÖN  
 Â¨À*  »%o}    Â¨À   ¯”L  G©#@  N©¯@  *  N©Y@  ‡¬À]@      (  Ã©o}|¢ é¨—(h  *  é¨ç(h û¨—(h( û¨ç(      h4 :©™Âhv :©ÝÂh‚ *  :©ìÂhˆ :©¥Ãhp :©´Ãhj :©õÃh| ËªÂhH   ÐªÂhD ¯”   
   Ã©o}  *    DDg…… æ  ÎeÈ ÞÕ Õ… DDgõ…€  G©#*  & … ADDâí…… ADDâç…€… ]… CÄ*  L  Àœ B´    ø	  „  ø	  … ]']'  G©# N©¯N©Y*  r ]'
]']'
]'õ Ö]   ˜ _   Åe …   ‡¬À]       €N  
 Â€À*  »%p}    Â€À   ¯”L  G©#@  N©°@  *  N©@  ‡¬À]@      (  Ã©p}|0"hÎ *  0£,hê 0;Nh¶ 0cXhÜ é¨˜(h  é¨è(h( *  û¨˜(hJ û¨è(hd :©      ÙÈhÊ :©Éhæ :©,ÉhÄ *  :©åÉhø :©ôÉh² :©5ÊhØ ËªPÈh ÐªPÈh† 
  ¯”   
   Ã©p}  *    @ABCdD…Db…Ò
… æ  ÎeÈ ÞÕ    G©#*  & … @ABCdDñ…Dbï…€„Ò
… @*  L ABCDä„à…âÞ…Ò
… @ABCDä„*  r Ó…âÑ…€„Ò
… @A	… CÄ Àœ
  &G©# *  ˜  B´    ø	  „  ø	  … @A$	"!'  N©°N©*  ¾ !(‡$A@ö@A$	"@A$	"*  ä @A$	"!(†
A@öõ Ö] _   
  Åe …   ‡¬À]       âN  
 ÂÐÀ*  »%r}    ÂÐÀ   ¯”L        G©#@  N©²@  *  N©Ñ@  ‡¬À]@      (  Ã©r}|F2"hò *  2£,h2;NhÎ 2cXhé¨š(h  é¨ê(hJ *  û¨š(hf û¨ê(h˜ 2©äh 2©
zhp :©YÕhî *  :©Õh:©¬Õhè :©eÖh,:©tÖhÊ :©µÖhþ   ËªÐÔh¬ ÐªÐÔhž ¯”   
   Ã©r}  *    ß	 @PÐ… D@d†BCD   *  & 
…dCD…dD…b…‡ æ  ÎeÈ ÞÕ ‡ ß	  G©#*  L  Ú€A
B
C
D
Áe Ó†BCDÏß	l Ì@D
    l *  r ä†‚ƒ„Ü…äƒ„Ø…ä„Õ…âÓ…‡ *  ˜ ß	l Ø@A	… CÄ Àœ BŒø	    l G©# (N©²*        ¾ „  ø	  … @AÂ €``	",2‚!(ƒ~  N©Ñ*  ä &‡,A@ð@AÂ $#ƒ~@AÂ $*  
ƒ~@AÂ €``	"
‚!(ƒ~†
A@  0ðõ Ö] _   Åe …   ‡¬À]       PN  
 ÂøÀ*  –,X    ÂøÀ   ¯”L  G©#@  N©¯@  *  N©Y@  »«oK@  ‡¬À]@      (  Ý©ïW|n*  é¨˜0h  û¨˜0h" ?©™Âh2?©ÝÂhF?©ìÂhP*  ?©¥Ãh(?©´Ãh?©õÃh<ÖªÂh~ ÛªÂh< 
  ¯”   
   Ý©ïW  *    ß	® Cb…Ä ü ACœ Âà%  ß	®   ® G©# (® *  & Câï„æ  ÎeÈ ÞÕ Õ… CÀœ ABœ Äœ         G©#*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©¯G©# »«oK*  r ø	  … <
 ôCÄ Àœ Ì ø	  Ä ôœ   N©YG©#  N©¯$G©# *  ˜  ü  < DË àCÄ Àœ Ì ø	
  G©# *  ¾   ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©¯G©# N©¯ G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ   
»«oK »«oK*  
Á ‡ Bœ @ Á ‡ ß	® 	" ß	® 	"
  ® $® *  0ß	® 	"ß	® 	"ß	® 	"ß	® 	"  ® ® ® &®   Võ Ö] _   Åe …   ‡¬      À]       ˜N  
 ÂÐÀ*  –,€    ÂÐÀ   ¯”L  0"@  0£,@  *  0;N@  0cX@  G©#@  N©°@  N©@  *  õª0,@  »«pK@      (  Ý©ðW|lé¨À0h  *  û¨À0h. ?©ÙÈhF?©Éhd?©,ÉhV?©åÉh8*  ?©ôÉh0?©5ÊhNÖªPÈh– ÛªPÈhP ¯”   
   Ý©ðW  *    ß	À CdD…Db…À  Ñ	ACœ   À G©# *  & Âà($ß	À CDä„…âé„æ  ÎeÈ ÞÕ   À  G©#*  L Õ… CÀœ ABœ Äœ áÄ LŒàø	  À  G©# &N©°*  r Ä ß	  DË	   ø	  …  

òC  G©# 
»«pKN©*        ˜ Ä Àœ Ì	 ø	  Ä À• Ì	 ø	  ß	  D$  G©# N©°G©# "N©&õª0,*  ¾ áCÄ Àœ Ì	 ø	  ÁBœ CÄ Àœ Ì  
G©# N©°"G©# *  ä 	 ø	  Ä Àœ à
Àß	  @ Bœ    N©°G©# »«pK*  
‡ @ß	    Âœ Á ‡ Bœ @ Á ‡   »«pK*  0ß	À _   ß	À @_   ß	À _   ß	À _   *  À 
0;NÀ 0£,À  0"$À (0cX  Vß	À @_   ß	À _     À 0;NÀ 0£,      ²N  
 Â Á*  –,Ð    Â Á   ¯”L  2"@  2£,@  *  2;N@  2cX@  2©ä@  2©
z@        G©#@  *  N©²@  N©Ñ@  õª2,@  »«rK@      (  *  Ý©òW|\é¨1h  û¨1h. ?©YÕh6?©ÕhT*  ?©¬ÕhF?©eÖh(?©tÖh ?©µÖh>ø©ßh°   ÖªÐÔh† ÛªÐÔh< ¯”   
   Ý©òW  *    ß	° ¦Dß	  Àb PÐÄ A‚Cœ Âà  ° 2©äG©#b G©# *  &  ß	° ¦Dß	  èCÀœ ABœ Äœ   ° 2©
z*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©²G©# »«rK*  r ø	  …  



ðCÄ Àœ Ì ø	    N©ÑG©# (N©²*  ˜ Ä À• Ì ø	  ß	  DßCÄ Àœ Ì   G©      # N©Ñõª2, G©# *  ¾ ø	  ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©²G©# N©²"G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ  »«rK"»«rK*  
 Á ‡ Bœ @ Á ‡ ß	° _   ß	° @  °  2;N$° *  0_   ß	° _   ß	° _   ß	° @_   ß	&  2£,° 2"° 2cX° &2;N
  V° _     ° 2£,      ŒN  
 ÂøÀ*  öšw    ÂøÀ   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  õª1@  W«®s@  »«oK@  »«pK@  »«rK@  *      (ˆÍªÂh4 ÍªPÈh      ’ ÍªÐÔh ¯”   
         *    CAæ  ÎeÈ Þ5 Bœ  @œ àÀœ `  
G©#*  & 
àÀœ ‡ ± ‡ ß	  %‡&Ä ø	  Â% 	À    G©#  N©¯*  L   —t 2   À‚Ä ß	  D  ø	  W«®sG©# »«oK*  r   … æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  -‡  N©Y
G©#G©#&  *  ˜ &Ä ø	  Â%
 Ä   D—t Âe  G©# N©°*  ¾  "!" ‚À‚Ä ß	  D  ø	  …   W«®s G©# »«pK&N©*  ä æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  :‡&Ä  G©#G©#"  *  
 ø	  Â%       À Àe Ð	ÄB $$$$ß	  G©# N©²G©#B *  0   —t Âe "(	"(‡‚"(‡‚"(†À‚  õª1W«®s *  VÄ ß	  D  ø	  … æ  ÎeÈ ÞÕ Öæ  G©# 
»«rKN©ÑG©#  |  ÎeÈ ÞÅ …   G©#       tN  
 Â¨À*  ö´r    Â¨À   ¯”L  G©#@  N©¯@  *  N©°@  N©²@  N©Y@  N©@  N©Ñ@  *  »«oK@  »«pK@  »«rK@      (  ©^Z|¸"  ÚªÂh  ÚªPÈhn ÚªÐÔh ¯”   
   ©^Z  *    CÄ Àœ ô   ø	  AÂœ Dœ áÀ ø  G©# N©¯&G©# *  &   Â
€

      ß	  û €< ün  T…Bœ  »«oK*  L  Ãœ Âà ß	  Dó     ø	  … CÄ  »«oK"N©Y*  r  Àœ ô	   ø	  AÂœ Dœ áÀ  Ì  G©# N©°"G©# *  ˜  4
 Â
€

ß	  À  ð €2   »«pK*  ¾ 
² dJ…
b…Bœ Ãœ Âà ß	  Dó  "»«pK*  ä 	     ø	  … æ  ÎeÈ ÞÕ … CÄ Àœ   N©G©#$G©# *  
ô   ø	  AÂœ Dœ áÀ  Ì 4
   N©²G©# *  04
 4
 Â
€

ß	  À  ð €J
  »«rK*  Vr
 r
 r
 Êe r r r dJr r*  | ¹…d      Jr ´…dJ±…
b¯…Bœ Ãœ Âà ß	  ¢  Dó     ø	  …   »«rKN©Ñ       N  
 Â`Ç*  *’úD    Â`Ç   ¯”L      (  j¬úDì´  G©#h  ¯”   
   j¬úD  *        &     :     N     b     v     Š     & : N b  v &Š  ª   ª  ¬      ¶   ¬ ¶  º *  º  ¾  
Ä       D                  ¾ Ä D*  à                               4                             D*  DCL @  –CO    œAL   ¢CH   ¨WI @    
–œ¢"¨*  j–EX   ®WR           SH €    MA     LO€ 
  –®(        Ô   Ð   Ð   É   Ö     Ô Ð Ð É $Ö        N  
 ÂˆÇ*  …˜pq    ÂˆÇ   ¯”L  G©#@  N©/w@  *  Ã©’@  Ûªl†@  ‡¬À]@  “¬’@      (  *  ¬"|Ì¬"h  ¬…qh¬qh¯”   
   ¬"  *    
Ä  4-  ‡f t2 æ ß	  
 $ æ  G©#"Ûªl†&$ *  &   Îeª Þ4 _      À
q-  f   G©#“¬’*  L t2 æ ß	  
 \ æ  Îeª ÞD _   Áe å  Ûªl†\ G©#"“¬’*  r  Wp m ´
 æq   &CÀœ ø	          (N©/w*  ˜ „€1
  f æ- ß	  
 ° æ  Îeª Þl_   Ûªl†° G©#*  ¾   €ñ  €1
  q q q q Ä  1  “¬’$G©#*  ä $ 
 ƒÅq EÅe ñ  Åe ô
 Ã*  
Æe
 _   ƒ…Õ_  Ä  4-  ‡f t  
‡¬À] G©#*  02 æ ß	  
 >æ  Îeª Þ4 _        Ûªl†>G©# “¬’*  VÀ
q-  f t2 æ ß	  
 væ  Îe  Ûªl†"v&G©#*  |ª ÞD _   Áe å Wp m ´
 ñ     “¬’*  ¢q q q q Ä  1$ 
 q EÅe   G©#  È_     ‡¬À]             èN  
 ÂHÁ*  ó`""    ÂHÁ   ¯”L  G©#@  Ã©’@  *  Ûªl†@  ¬ N@  ‡¬À]@  ¬"@  “¬’@  *      (  ,«šw|¢ ¬<Nh8 ‡¬$ahv ‡¬ bh    ¬,"h ¯”   
   ,«šw  *    Ä  t2 fŽ#‡Ö_   Ä  t2 f Ž  G©#‡¬À]G©#*  & ‡N Ö_   Ä  t2 fŽ‡N   ¬"G©#*  L Ž‡Ö_   ¦ æ ß	  
 f æ  Îeª Þô   ¬ NÛªl†f  G©#*  r _   Ä  t2 EÍÂæ	 ß	   ’ æ  Îe  “¬’
G©#Ûªl†"’ &G©#  ˜ ª ÞL _     “¬’       œN  
 Â˜Á*  å˜€W          Â˜Á   ¯”L  G©#@  7ªl†@  *  ¤ªD@  Ûªl†@  ”¬¸p@      (  ’¬p…|p*  C©h„Ã©’h.6ªÏ}h> («LwhŠÀ«""h<*  …¬0XhŒ‡¬À]hD‰¬üXh  “¬’h¯”   
   ’¬p…  *    ß	  ß	L Á  	 @ ð p
 æ æ  æ  ¤ªD
L G©#&”¬¸p*  & iÿˆ: óV {	V ß	ˆ … &ß	L ß	^ €‡   ˆ  L $^ *  L À¬  ‡ À_ .À   &Îe  ,  Ö  G©#¬ .G©#*  r ‡ æ# ß	   € À_ .@ û  Xæ$ ß	  Ûªl†€ .*  ˜    ž Ä  À& m¸ 	Š  Ã@ 3
  À
€
  Ûªl†ž G©#G©#& *        ¾ È‹@È¥  úÈ¥, ÷È¥	 ôÈ¥* ¢0 $‡¢9 *  ä !‚”Áå0 ¢0 ‡¢9 ‚Wp
 ”Âå0 `óóÿÿ*  
  ×Á
Áå Â t³P  à‹Êæ  Îeª   $G©#*  0Þ(æ% ß	   @®‡ Ä  t$ t ( f  Ûªl†@G©#*  VÎe Ž  ý  	t/  & t  & ü	& t *  |t  t" …| ( ‡ Ä  ô &f    G©#*  ¢ Á
Wp m q# Áå À
ù€Õ… 4  *  Èt2 f æ ß	  
 Þæ  Îeª Þ< _   Ûªl†ÞG©#(*  îñ
  Å ô
 Å
 E`€_ Dß	> ß	<   D$> (<*  Ä  : óX {	X Äª  &æ      ÿˆæ3  G©#G©#ª *  :ÿˆ&Äô „‡ æ&&&æ  Îeª Þ  
G©#"G©#  `  ß	   jƒ„‡   7ªl†j       °N  
 ÂXÀ*  ˜8w    ÂXÀ   ¯”L  G©#@  N©/w@  *  Ûªl†@  ‡¬À]@  “¬’@      (  ‡¬a|0 *  ‡¬ah  ¬ N| ¬ Nh  ‡¬`^|* ‡¬`^h  *  “¬h| “¬hh  ¬d|( ¬dh  …¬Ps|&   …¬Psh  ¯”   
   ‡¬a  *    Ä  t2 EÍ_   æ	 ß	     æ  Îe  G©#‡¬À]Ûªl†"  &G©#  & ª ÞL _     “¬’ ¬ N      &@PP€… 
   ‡¬`^  *    CÀœ ø	        À	 ‚ÕÀ
ÀÀ`_   @ÀÀ  N©/w"‡¬À]  & `… 
   “¬h      æ  Îeª Þè æ ß	    …   G©#Ûªl†  ¬d  *    Ä  t2 fæ" ß	  
  æ  Îeª Þ_   G©#Ûªl† G©#  &     “¬’ …¬Ps  *    Ä  t2 æ# ß	    æ  Îeª Þ_     G©#Ûªl† G©#(“¬’       ŽN  
 Â@Î*  e,8w    Â@Î   ¯”L      (  Ü©;"8„   Ü©;"h  Ü©X"h ¯”   
   Ü©;"  (    &D {  &ùL L R R X X ^ ^ L *   L L R R X  X "^ $^ &L   $ L R R ^ ^ z       z z z d *  L R R 
^ ^ z z z z d *  8 h v R ~ ~ ~ ~ ~ ~ ~ Â Â Â *  h v R 
~ ~ ~ ~ ~ ~ ~ *  ^ Â ‚
	‚
Ã
„ÂEàÿ‡ ‚‚
ÂEàÿ„‡        (N  
 ÂÐÀ*  »Ô!    ÂÐÀ   ¯”L  ü¨@  G©#@  *  t©@  Ü©;"@  Ý©w~@  Ûªl†@  “¬’@  "      (  ë¨Ô!|À …¬»h  ¯”   
   ë¨Ô!  *    Ä  BCß	  T ß	  — „ _ v Àß	  V &  G©#ü¨T Ü©;"v &Ý©w~(V *  & J > €`àÐ•  C~ß	  V … Ã& 
Â„ ëß	  J > t©V G©#& *  L         \ _   Õß	  \ æ  Îeª Þø æ ß	   (  t©\ 
“¬’t©\ G©#&Ûªl†*  r t … ¦æÂ„ Ã& ß	  ¸ ° ® 
€ÂÐ”   t G©#& Ý©w~¸ ° ® *  ˜ Á
„~Ð•  C~ ÄÅÈïÖÖ_ J ÖÖ_   "J   ¾ V   V        dN  
 ÂXÀ*  {ùe    ÂXÀ   ¯”L  ü¨@  G©#@  *  t©@  Ü©;"@  Ûªl†@  U«w~@      (    i©Yy|h …¬{h  ¯”   
   i©Yy  *    Ä  BC@€
À@aÁ D&@ß	  H @à4Š  G©# ü¨"H *  & º ß	  ß	  H ~@
4º õß	  N …… ß	  "  Ü©;"U«w~H t©       N (t©   L N æ  Îeª Þ æ  ß	   f î  N G©#Ûªl†f        ¾N  
 ÂˆÇ*  J†7x    ÂˆÇ   ¯”L  ü¨@  G©#@  *  t©@  Ý©w~@  ¶ª·„@  U«w~@  “¬’@  *      (  ¬÷q|è	ô¨Aeh7ªl†h  Ûªl†h 
  ¯”   
   ¬÷q  *    6 6 ¦¦¶  ö  ö  ¦¦¦æ*  & ƒÓf&¦f&³ Á  s s KæÄ    (G©#*  L ÂTI
ß	  ¤ ƒÅå …ì r2 À Àˆ	  ü¨¤ (ˆ	*  r ß	¸ æ&¸ ß	  ‚ ´¸ ƒÅÃl K€‚„  ¸ t©‚ *  ˜ …£Æƒ_   ôª ƒÆ Ë _ v Â      & 4Š  ¶ª·„"v &G©#& "  ¾ º R•þ€˜x ä Z6x fú Š~„*  ä Z6x fú Š~ „*  Ü rZ>æ ø @•fˆ	ß	À …_ À ‡ ôÕ º À"  rZ>
æ ø ˆ	À À *  & àæôÕ º ß	  ¤ 4Šº ƒ_ À ß	    G©#& U«w~¤ "À (Ý©w~*  (¤   "ƒó%  ÅÒ	_ ¸ À& æÂO ß	  &  ¤ “¬’"Ò	¸ G©#& (Ý©w~*  N¤   "ƒ_ À @•À` Ë_ À @• c Å_ À @•  ¤ “¬’"À À &À *  tÀ` @•À`$@• c!@•À`1@• c? ABCDEFGHI*  šJKLMNOPQRSTUVWXYZ$. 0123456789  ”*        ÀB~_ À Ê—®Š”Š”Š”Š”’”¦ 
r bœ®ù  À ®$®*  æ‚_ À æƒ 
r
 fœ®ùƒáƒ’•Â~ƒ_ 
  À ®*  À f… 
r( Rœ 
r( RœR“œ…  À  &*  2_ À &@•fˆ	L8 fß	À …÷…Œ_   À ˆ	À *  XÀ @•fˆ	æ     3  Àe &f
  À ˆ	*  ~fß	À …€N~³ …_ À @•ˆ	_ À þì þ  À À  ˆ	$À *  ¤äSUBSCRIPT TOO SMALL OR TOO LARGEðþü þ*  ÊäINDEX TOO SMALL OR TOO LARGEðþü þäDEP*  ðENDING ON ITEM TOO LARGE OR TOO SMALLð*  þü þäILLEGAL PROGR      AM REENTRYðþú þäINCO*  <RRECT NUMBER OF ARGUMENTSðþúèì þäPERFO*  bRM STACK OVERFLOW þêðæî þäPERFORM END *  ˆOF RANGE VIOLATION þêðæî þäILLEGAL NES*  ®TED PERFORM þêðæî þäNULL ALTERABLE GO *  ÔTOðþü þäSAME AREA ALREADY BUSY WHEN OP*  úENING þöðþü þäþö ALREADY OPENðþü þäþö *   NOT OPENðþü þäINVALID OPERATION ATTEMP*  FTED ON þöðþü þäREAD MUST PRECEED REWRI*  lTE OR DELETE ON þöðþü þäþö PREVIOUSLY *  ’LOCKEDðþü þäCLOSING UNIT OR REEL UNSUC*  ¸CESSFUL ON þöðþðþü þäOPEN ERROR USING *  Þþö      ðþðþü þäCLOSE ERROR USING þöðþðþü þä*  þö NOT OPEN FOR OPERATIONþöðþü þäINVAL*  *ID LINAGE VALUE USING þöðþü þäNO END O*  PF FILE PROCESSING ON þöðþü þäREAD ERRO*  vR ON þöðþðþü þäWRITE ERROR ON þöðþðþü *  œþäREWRITE ERROR ON þöðþðþü þäDELETE ER*  ÂROR ON þöðþðþü þäSTART ERROR ON þöðþðþ*  èü þäUNLOCK ERROR ON þöðþðþü þäBAD NAME*   USING þöðþü þäSTOPìü þäUNKNOWN PROCED*  4URE ðþü þäACCEPT ERRORð þäDISPLAY ERRO*  ZRð þäUNABLE TO COMMUNICATE WITH USERð *  €þäFATAL SOURCE ERROR ENCOUNTER      EDðþü þä*  ¦ENVIRONMENTAL INTEGRITY FAULTð þäSPECI*  ÌFY ALL "ON" SWITCHES:ðü þäINVALID INPU*  òT, TRY AGAINðü þäODD ADDRESS FAULTðþè *  þäMEMORY PROTECTION VIOLATIONðþè þäBPT*  > INSTRUCTIONðþè þäIOT INSTRUCTIONðþè þ*  däRESERVED INSTRUCTIONðþè þäINVALID EMT*  Š INSTRUCTIONðþè þäFLOATING POINT EXCEP*  °TIONðþè þäPERFORM COUNT TOO LARGEþêðþü*  Ö þäEXPONENT TOO LARGE OR TOO SMALLðþü *  üþäSTART OPTION NOT SUPPORTED: þöðþü CB*  "L -- ö:          þúOCCURRING IN ò ò" *  HAT OFFSET ô2ð       þþPROGRAM òò (òò
)   *  n           öð FILEþôþò ú
 ø
 ú (ø) *  ”úþþASSOCIATED RECORD SERVICES ERROR: *  º-öþæð îþþNESTED PERFORM SOURCE LINE *  àNUMBERS:ðæø î8þþLISTING OF NESTED ENVI*  	RONMENTS:ðèü ú
 AT SOURCE LINE NUMBER *  ,	ö
  þþR0, ..., R5, SP, PC:ðþþê
 ê ê   R	ê ê ê ê êð ú (-ö)     l	  l	 b	0		ìÁ”Œ†}*   b	0	
	ìÁ”Œ†}  €	mV4, £Éë6*  mV4
, £Éë6  ”	[z¡ÀÚ,S‚*  [z¡
      ÀÚ,S‚  ¨	œËæ#Fkƒœ·*  œËæ
#Fkƒœ·  ¼	Ñê$<L]€¤*  Ñê
$<L]€¤  Ð	Åä9Nc}š¸*  Åä
9Nc}š¸  ä	×ü
  ×ü       ¶N  
 ÂXÀ*  ·„[q    ÂXÀ   ¯”L  G©#@  ¤ªD@  *  Ûªl†@  “¬’@      (Dü¨h  t©hR *  Ý©w~h€ ¶ª·„h>U«w~hà ”¬¸ph.¯”   
         *    ´ ® ô ° ´® ô° æ¦æ æÿˆY‡&
*  & &
&
&
&
&
&
&´ &
Î• æ æ æ      ÿˆE‡*  L Îe ‡ &
&
&
&
&
&
&
&´ &
Î• æ æ *  r æÿˆ.‡Îe ‡ &
&
&
&
¦æ&
&´ &
Î• *  ˜ æ æ æÿˆ¸ ôU º ô‹¶ 	ô‹· Îe*  ¾  ‡ Îe 	­¶ öÿÎe ¶ Ž  ‡ ô5*  ä º  æ¦¼ Â&
&
&
&
¦æ&
&´ &
Î• *  
æ æ æÿˆ‚ƒô‹¶ ÚôE º &
&
&
&
*  0¦æ&
&´ &
Î• æ æ æÿˆô‹¶ Áô5*  Vº ôU º ôE º Â Â&
&
&
&
¦æ&
*  |&´ &
Î• æ æ æÿˆô‹¶ žÎe ‡ ß	*  ¢À4æ& )ß	À<æ' "ß	ÀDæ(    *  Èß	ÀLæ) ß	ÀTæ* ß	À\        $*  îæ+ ß	Àdæ, ß	   Å  5ª _     Ûªl† G©#(“¬’*  ¶òÿŽÎe f&æ¦f&æ‡  ®¼ÊØæ    ®"¼$Ê&Ø(æ  :  ôß	  ‡   ô
¤ªD       f N  
 Â°Ì*  £K Œ    Â°Ì   ¯”L      ( ¤ªDh  
  ¯”   
             ‡        ”N  
 ÂÐÀ*  w<    ÂÐÀ   ¯”L  G©#@  N©/w@  *  Ûªl†@  ¼«/@  “¬’@      (  º«<|˜*  e©„dh2e©ûfhxº«<h  º« <h º«!<hH   ‰¬ˆ–h&¯”   
   º«<  *    B Âe CÀœ ø	ú Á`Cs …       B Âe  ú *  &  CÀœ ø	ú Á`CÀœ ø	ú Á`Cs … B
  ú ú *  L  Âe CÀœ ø	ú Á`CÀœ ø	ú Á`CÀœ ø	
  ú ú *  r ú Á`Cs … À $CeÒ ‡ æ ß	    ú (Ûªl†*  ˜  œ æ  Îeª Þ _   Ã Ã
Òp	‡Ò ‡   œ 
G©#“¬’*  ¾ À Ðôæ ß	   Ö æ  Îeª Þ _   Ûªl†Ö G©#$  ä   ß	  Ãâíø	  ÃÝè¬ ¬ ð ð ð (  “¬’¼«/N©/w¬ ¬ ð  ð "ð   ð ð ð ¬ ¬ ¾ ¾ ð ð æ *  ð ð ð 
¬ ¬ ¾ ¾ ð ð æ *  æ æ æ æ æ æ ~ @Ã
ÕpÈ… ABCÀœ ø	        æ æ æ 
æ æ æ ~ *  >  Õ Õ 
„ Dì òp  añ  … æ ß	    N©/w(Ûªl†*  d hæ  Îeª Þ _   ACÀœ ø	  Õ êÕ   h
G©#“¬’"N©/w  ŠèÃ
ñp ñ …        N  
 ÂpÆ*  ]!ô    ÂpÆ   ¯”L  û¨6@  G©#@  *  N©T
@      (  Œ©`;8:Îªí+h  Ïªh   Ïª˜!hv ÏªHXhX ¯”   
   Œ©`;  *    ÀH À8 B‚CÃ ÕD Nf„
•
  H 8 *  & Ö‡ •ùÅEðÿH Á
“”Ó•  GîÁ
*  L BàÁ
“”GæNÎe Ä CÁœ Àœ ø	  ß	  G©# &N©T
*  r ² 5NÎe Ä       CÁœ Àœ ø	  ß	² æ  Îe  ² G©# N©T
"² &G©#*  ˜ È Þ5 ß	à æ  ÎeÈ ÞÅ ‡ f@œ BàD  à G©#*  ¾ Å: ÀÁß	  …CDÃ @  Å: ‡ æ•    G©#: û¨6"G©#: *  ä Ba˜ÁE¿ÿÊÅ@ Î•- Áe f7 &6<0    "&$6&<(0  
BHNX`’¨ÄÒÚ*  BHN
X`’¨ÄÒÚ*  úÆe ‡ Î5 !ÎU “ ÎE ÎU 6”  ú*  D 6” Î5@ úÐ‹Î5@ õú”Î5 ‚*  j “”ÁW € y  y Š BÂEðÿWtüÿÁy 
   Š *  *”Î5 êÂE ÿƒà“ ƒ~ã”Î5       ßÎ5@ Ü  **  ¶ÂE ÿÂàŠ Õ”DàÒß	Î“ ƒ~Êß	  *  ÜÎ5 W 0  ÎU S~ºß	Î5 
  $*  
W 0 ÎU “  S‘~¨ÄA•W 0   (öE  ‡ Á0 „
‡        XN  
 Â€À*  œ,´    Â€À   ¯”L  G©#@      (    ¬K|  ¬Kh  ¯”   
   ¬K  *    Ä& &æ=ÿˆ@  AÁ
&Ã
CCÂ5
  G©#& *  &  ÓÃ` c
—r
 ðœ  ¤„Cœš Ä`Aœ   `  "š ( *  L 
—r
 œ Ðœ I~…       ; < Z [ x 
    *  r y — ˜ µ ¶ Ô Õ ó ô 01N      O01234567  ˜ 89         ¾ N  
 Â¨À*  œ,¡E    Â¨À   ¯”L  G©#@  N©°@  "      (  œ,¡E|* Ý©Ñ~h  ¯”   
   œ,¡E  *    æ&&Ã Àœ Ä ô	   ø	  €ð  „  G©# N©°  & ƒ‡        Ä N  
 Â€À*  \g¡E    Â€À   ¯”L  G©#@  N©@  "      (  \g¡E|0 U«Ñ~h  ¯”   
   \g¡E  *    &¦æ&Ä Ã Â & (   ø	    G©# (N©  & „ƒ‚€‡        rN  
 Â¨À*  9wÈK    Â¨À   ¯”L      (  »«%|D*  W«®sh  »«oKh˜ »«pKhÐ »«rKhÂ       »«vKh´ 
  ¯”   
   »«%  *           
       d       è      '    *  &    †     @B     €–˜      áõ     Êš;*  L      äT    èvH    ¥Ôè     rN	   @*  r zóZ   €Æ¤~   Áoò†#   Š]xEc  d§³¶à*  ˜ ÂSTf —t rp  | ‡ ÂEZfÁ    *  ¾  Â>WfÁ Â7TfÁ f& *  ä æ fÅ  —  €…Wu À5p  @m  T
     &  *  
¦ÀL5p  @m  T`@Î
ôÖ„ã„ãÄå 
      *  0Âå ÝÖƒ„…‡ ‡ f&
 €N
 
*  V—t 2r  Ö€ < ‡ fÁ fÁ           *  |fÁ æ & f&
fEÅÅå Å`*  ¢Õ€ß	Å  ÁC`D`—  €…Wu ¦ 
Áv  
*  È 5   	@í  vÿÿ5r  Àe €vÿÿ5r  $@        $  *  îÎ
éÖ„c„cÂå ÚÖ€fd
B~± TB~*  …„ƒ‡ Á&D`dL
C~ ± TB~„  :v
  ‡        JN  
 Â¨À*  —˜"    Â¨À   ¯”L  G©#@  N©²@  *  N©Ñ@  †©Š@  Ûªl†@  êªP›@  W«®s@  *  »«vK@  “¬’@      (  ¬š|ˆ¬šh  
  ¯”   
   ¬š  *    CÄ Àœ ô    ø	  ÁCÄ Àœ ô      G©# N©²      G©# *  & ø	  fÄ  Ã%x%v%tƒ  Âœ Å    N©²(G©#*  L µ &%€D &Cœ µ —t ”  ” ”  "W«®s&W«®s *  r  ” 



À Âß	  €A Â ß	   W«®s W«®s G©# »«vK*  ˜   Á D ß	t5Š fœ f À C B   †©ŠG©# t G©# *  ¾ Ä ÂàJß	  õ@ ÃC-B 7C-D 4C-F 1C-  G©# »«vK*  ä H .ö
 €A
 B ß	  ƒ A C`õ   êªP›*  
ÓÆe …DÃ   ó   ø	  … æ. ß	    G©# N©Ñ(Ûªl†*  0 4æ  Îeª Þt_   Æe æ  ÎeÈ ÞÕ …        4
G©#“¬’G©#*  VÕ…    
«Ô 

  |




‡        DN  
 ÂpÆ*  šw     ÂpÆ   ¯”L  >©Ì.@  E©e@  *  G©#@  ø©ß@  ‡¬À]@      (  ½« q|Ä*  >©¹.hº?©yh°?©y×hl“¬,hZ “¬;	hê   “¬Ëhð “¬šwh( ¯”   
   ½« q  *    Ã AÁ
Wt @`ð,     0. * 00 , *  & ‡ Ä  @C  Âe* RRRJß	  Âå ò   G©#   *  L Öz   …_   Ä  4
æ 4
è 4
ê Ctä   ‡¬À]G©#*  r   Âe* RRRJAÁ
Wt C`ô â Á  
3r*  ˜  €
4æ Â @‡      ƒ~Á Bttè ä ß	Ö   &Ö *  ¾   Âe* ò Öz   …_   { Á
tpâ À   ‡¬À]*  ä p ‡ Á ÁÿÿÄ    tpê B¦	‚  G©#*  
ä è Bp@;à è 	  ². * ²0 , *  0tè Bpä À `{ t æ Ýß	Ö Ö    "Ö *  VÂe* ò Öz   …_   ß	  Åe Àe Áe   ‡¬À]ø©ß*  |	"
Â !(‚‡„~… À ÀÿÿÄ  4ê   $G©#&  ¢åÖm å_   ß	  í‚ï‡… ß	  è‚ê‡…   ‡¬À]E©e>©Ì.      `N  
 ÂÀÆ*  òyw:    ÂÀÆ   ¯”L  û¨6@  G©#@  *  N©¯@  N©²@  N©T
@  N©Y@        N©Ñ@  *  N©/w@  N©!£@  Ü©;"@  Ü©X"@  W«®s@  *  ‡¬À]@  ¬5a@  µ¬5a@      (  Ì«·r|â*  ‰¬TZhš‰¬WZhÆ‰¬XZh¶‰¬€Zh¶‰¬¤Zh¤*  ‰¬§ZhÐ“¬âh  “¬ãhl “¬ähV•¬ŠZh6  •¬‹ZhÀ•¬ŒZhP¯”   
   Ì«·r  *    Ä  tò ß	* Ä  t. t0 … õ Ö]   G©#* G©#*  & _   tÃ ô & ô  ô•  4Š 4  ‡¬À]*  L ôe Àœ ø	  ÃÎe ‡ À  p  N©/w&G©#*  r ì ß	  ° ðfÅ  CÄ Àœ ô     Ü©;"G©#G©# *  ˜ ø	  õ & Aò Dß	´Á õì @      ì 
ß	  N©¯´G©# *  ¾ žBò r-&   „"}ž ö µ
& ±
 ñ
    ž*  ä Þ
B @Cô ëAö ƒ ƒß	d
  $d*  
Âß	d„õ`& Ã õ &D  ø	  „  dG©# &N©Y*  0…À  Ä… Àe  ð0 Öx . Åe. _     G©#(‡¬À]*  Võ Ö] _   &æ— 
 ‡À5 Á5   ‡¬À]*  |Á5 	”Â
ƒƒÂ~ÂEþÿ”‚~ƒ„‡ &*  ¢ß	  „æ¦
€ B  Âà‚#‚fA Á`¤  Ü©X"*  Èƒ~ƒcÄíÖÖÄ‡ Á>W¬ , *  îW¬ 0 B  C     _	  ‡ B  C   ¬5a*            _	  ‡ ð  À ð   ø•0  f  µ¬5aG©# *  :fE D  Bœ     ß	  ƒ…Àœ ø	    û¨6(N©!£*  `‡ ƒÄ Àœ ô   ø	  Àœ t Ä l    
G©# N©²(W«®s*  †Lt t l Lt l Ll ƒ „   W«®s W«®s  W«®s *  ¬ ø	  ‡ æ&Dß	  „f Áô ‰	í& ‘
É  N©ÑÜ©X"G©#ô *  Ò	m& Ñ
‰ƒ‡ Á Ä  ß	´Áô 
ß	ž‡ ×¬   G©# G©#´G©#ô $ž*  ø " 8
×¬   3Áœ  Ál Á
Á B’³ *  — { — [ — ? — } 	— ] — ! — *  D: 
— A       — 0 ø— 9 õ— R ñÂå@ *  j‰œp‡ 0,1,2,3,4,5,6,7,8.,9.1,2,3,4,5,6  p*  ,7,8.,9.×¬ " 
×¬   
Áœ  Ál Á
*  ¶Á Éœ ‡ Ä  At ttß	* Ä    G©#"* (G©#*  Üô  t
´ÖÍB¦fÂ5 @úf*    t. t0 &
… ÕÍ5 €Í5 @Åe úÕÕ*  (õ Ö] _   Ä  tî tð tò fÅ    ‡¬À]G©#&G©#*  NÄ Àœ ô   ø	  õ & Á Dß	´õ  G©# N©¯ G©# &´*  tô j&
&
v þ 
þ5   D
€  *  šÁô ß	žþ5 @ öå  êŽ
µ
ö õ
ô Þ  G©#ô       
ž*  À
Dî ß	  µ ô ŽNô 
µãö µô   Ü©X"*  æÀô Aî &ß	à„µcö 5ô Àô Að ß	àµ  G©#ô àG©#ô &à*  N Ã Dò   ø	  umô & µc& Ã D  G©# N©Y$G©# *  2Ä   ø	  ÖÖB
ß	b…… Ä    N©Yb$G©#*  XÁ ß	´ôô Åe … õ Ö] _   D
  G©# 
´$‡¬À]*  ~æß	  ƒ“  ‡ 


‡ Ã  ³  Ü©X""G©#*  ¤Ã  3
&
fó & ÅÍhå³
& ó,&   G©#*  Ê `óÍ5€ Í5 Tõ,& èÿPÍE€ ÍE õ,& *  ðêÿBÍ5  Ä @      óÀå Àå Í5 *  õ,& èÿ,ß	Þ)ß	Þ+Ã  &ó@  ÞÞG©#*  <òÿÁÁl& Á
ß	dBÂå ß	bÃ  ³e&   d b$G©#*  bõ& èÿÍ5 @¬ÍU€ û
§Ã  ÍU€ û
Ã    G©#(G©#*  ˆÅå ˜Ä  Ã ß	˜ãÃå ôß	  G©#G©# ˜*  ®˜Ãå ß	˜Ãå ð…… À  °À    ˜˜G©#(G©#*  Ô0
ÖfÆå ƒß	zðƒß	öÆå ƒß	
  z ö*  úzƒß	öö5   ö   Æå ƒß	zƒË  z
ö"z*   Ó  ‹
‹í ‹
€)ó"þÿ&9ß	öð &   "ö*  F      0,&  	€ß	ÞÀ  °
& óÀ  ƒß	˜ö5  ÞG©# G©#&˜*  l  öU€  0a& & ð$ ÏƒÃe ß	˜ð  &˜*  ’Ãe ß	˜Æe Ó & ¾¸
&
… Ö  ˜*  ¸Dß	  Ã ³  3  3  ß	ö&
Àˆ  Ü©X"G©#  ö&G©#  Þ&
…        äN  
 ÂøÀ*  ;}ÀD    ÂøÀ   ¯”L      (  :©€l" *  :©€h  :©Æ%l  :©F–l  :©H–l  :©N9l  *  :©P9l  :©.;l  :©0;l  :©~El  :©€El  *  :©>l  :©@l  :©.El  :©0El  :©>&l  "  :©@&l :©lzl  :©lzh  ¯”   
   :©€                      &  :©>&  :©N9  
    
:©~E    
         *    
  
:©.;  	    

:©>             *      
:©.E      

:©Æ%             &  :©F–      

:©lz   :©@&               êN  
 ÂpÁ*  KTl†    ÂpÁ   ¯”L  G©#@  7ªl†@  *  ¬…q@  “¬’@      (  Ûªl†|ÎG©Õhä *  U«Yfh  ¹«Ùhv ¹«Ìhœ Ã«)#h¸Ã«1#h˜"  Ã«;#h\B¬òyhÆ C¬µ	h¨ ¯”   
   Ûªl†  *    Áœ" Wp  l> @ÁÁe @
Öß	   &   $7ªl†(& *  & ô ª _   Â’ ’       ’ ÒŽŽŽæ&  “¬’G©#*  L f&
f f &æ ß	  …„ƒÂ


  ¬…q"G©#*  r 

‡ Á ñ r  ±
 ¡ ‡ ß	˜96
   $˜*  ˜ ± ‡ Á 1
 ‡ &f¦À Á Â
 ”‚~*  ¾ ‚€‡ &f¦À Á Â
 P”‚~‚€‡ *  ä ”Ál 	”¢ÿÿù‡ 0002102122232430349091*  
929596979892                0    hprz~€†Ž”˜*  hprz~€†Ž”˜  Lœ¦°¶¼ÂÊÖÚä*  œ¦°
¶¼ÂÊÖÚä*  `ìøþðü ý@ý    °ý`ú   ðü          @ú`ú    ìøþ
*  †°ý`ú   ðü`ú  `ú  `ú  @úPü`ú   ðüPüú*  ¬`ú  @ú`ú  @ú`ú  @ú`ú  °ý`ú    Àùàýðü*  Ò`ú  `ú   Ðþàý`ú  @ú`ú    àýúðü`ú  *  ø@ú`ú   àý@ú`ú     
 *  

 


   D
 

0   \*  \&A  @8È- ûàÀç8€œ
À   88$
*  ‚Pœô Hœõ €AeN‡ €Á ”	’€Ð  ô õ *  ¨&
&
fß	  ‡ Á ¦  ‘“Î ‰•Îe ‡            rN  
 Â¨À*  S`l†    Â¨À   ¯”L  G©#@        Ã«1#@  *  ‹¯=@  ‹¯@=@      (  («l†|H©ª%h    ©ªph„¯”   
   («l†      P                                     
 
  
          &   &                  P %  P P                                  r   r              *    &fÀ  ÁP ¦”B~‚Å& 4
Ê Á ß	êW‡  
  G©#& &ê*  Æ r* 2- Á ß	êM‡r( 2, 3Ú " ô5 @  ê*  ì Ê 2Ô  ô5 €Ê ò•  ô5 Ê ò   *  ô5 Ê ÁeÖ r ò  ô5 0Ê ÁeÐ *  8r
 r ô5  Ê òU€  ò&  ò$ .       ò( *  ^ ò*  òœ 3 ¡ …€‡ …€ß	  30 ± ‡    Ã«1#*  „&f&ÅP ÄP P•Å$ 
s €0‘  …„  P *  ªð•   ðœ#  °$ ð  ð&  ð  ô5 *  ÐÊ ð  ô5€ Ê ðW  ‡ æ Ì CAð*  ö p U”Â~ß	  ‡È• 0Î  ß	  ‡ðµ8    ‹¯= ‹¯@=*  4\ Ê    EW¥/ Ä~Ààƒ¡ ‡ 
  Bƒ± ‡        N  
 ÂøÀ*  ›:à~    ÂøÀ   ¯”L  G©#@  Ûªl†@  *  U«Yf@  «¯@  «U(@  «v:@  «T[@  *  «Tq@  «)x@  ¤«ªH@  ¤«úW@  Ã«)#@  *  Ã«1#@  Ã«;#@  ‡¬À]@  “¬’@      (        *  A©D^|š9©t!h¢ ;©¿'hŒ ;©†:hR;©zLhê *  ;©hMh>;©jMhê >©¨h\>©cMh.>©èYh€ *  A©öZhFA©ÿZhÜ F©ªNh– F©@`hè K©=Ÿhj *  ƒ¬4KhXƒ¬kMhX ƒ¬
Nh^ „¬%!hL ‰¬÷XhÐ*  ‰¬¼^h¾ ‰¬ò`hº ¬Ödh. ’¬lh4 ’¬îh: *  ’¬ê"hR “¬:}hF •¬4Khf•¬kYhd —¬üqh@ 
  ¯”   
   A©D^  *    fÅe Ä  CtÚ  @ ‚ Ál A’l: À  G©#*  &   AI Á  éÁ ãÁ àÁ ÝÁ Ú*  L Á ×Á ÔÁ ÔÁ ÑÁ	 Îæ# ß	    (Ûªl†*  r  v ôª _   ß	  94 _ ¾ ß	  94 … ß	  v “¬’Ã«1#¾        Ã«1#*  ˜   93 _ ¾ ß	  10ô5 Ú Á ñ•  Îe   Ã«1#¾ Ã«)#*  ¾ …NÍ‡ å_   &
&
æ ß	  ñß	  94   ‡¬À]U«Yf$Ã«1#*  ä _ ¾ … ß	  00f&æ …ß	  Æe …,    ¾ Ã«)#«T[*  
& ß	   ,& & æ ß	  … 3  Ã«;#,$U«Yf*  0Ú " ß	  94 … ß	  00… ß	  94 _ ¾ ß	    
Ã«1#Ã«)#Ã«1#$¾ (Ã«1#*  V94 … ß	  94 … ß	  00ô5 Ú f&æ   Ã«1#Ã«)#*  |…ß	  Æe …,  & ß	  . °  &  «TqÃ«;#"°$ & *  ¢ & æ ß	  … f&æ …      ß	  Æe …,  U«Yf «U(*  È  ñàß	  @ Á Â À0 ß	  Á
   «v:$¤«úW*  îÂ À0 ß	  Á Â À  ß	  Á   ¤«úW"¤«úW*  Â À ß	  Á Â ß	  À 

³  ¤«úW¤«ªH*  : ƒËƒ#‚
r Âô…  @  *  `B‚ò ù ³  ³  3
 fæ  †æ …ß	  Æe …ä…   «¯       vN  
 Â€À*  äfì    Â€À   ¯”L  D©b@  G©]\@  *  N©/w@  i©{@  7ªl†@  («$@  U«Yf@  *  U«Ý@  «\g@  «)x@  Ã«;#@      (  *  
­WTì2 H©Är|ˆ4ªu:h      ô ©ªXhš ¯”   
   
­WT          («$         D©b         G©]\           i©{ 0   0     U«Ý H©Är  *    































Á,&*  &  ð   Â  Â,& Â& fŽàp f&    *  L æ …ß	  Æe …,  & ß	   t €   «\g"Ã«;#&t (€ *  r t â° ¡ ‡ & & æ ß	  ° ±   t "U«Yf*  ˜ ‡ ó5   Á
ô5 Ú º‡ Â. ô5 Ú r` *  ¾ ²,  	Á
², 
 ¨ôU Ú ¤rà  ì *  ä l ß	  ß‡ôU Ú fÅ. BÂe õ  Á   
  *        
ÍR&æ&CÀœ ø	  Ê„ƒ€Ò"
  N©/w*  0Òô  ª æ  æ ß	   H`~…Â. ò   7ªl†H*  Vò  ª æ  æ ß	   l¡ ‡ ò ² 
   7ªl†l  |²

  _              ÎN  
 Â€À*  (yÀv    Â€À   ¯”L  ©ª%@  ©ªp@  *  D©b@  G©Õ@  G©]\@  J©$@  i©{@  *  4ªu:@  («$@  U«Yf@  «¯@  «&@  *  «•@  «E`@  «)x@  ¹«Ù@  ¹«Ì@  *  Ã«)#@  Ã«1#@  Ã«;#@  C¬µ	@      (  "  
­WTì" K©@`|òG©øfhL ¯”   
   
­WT          («$               D©b         G©]\           i©{         J©$ K©@`  *        $ÿ$6ÿ
8ÿ
8ÿ     
 *  & 	ÿ 	Zÿ""@*  L ó‹ ß	  ‡ß	  ‡ß	  òU  ô5 Ú òE  ©ª%¹«Ù©ªp*  r   Áœ" rœD  AœH q v ß	  30 … ðU    D H v Ã«1#*  ˜ f¦æ …ß	  Æe …—,  t5ò•  òÕ  «E`*  ¾   ó5   ò•  ó5	    
Á$ 3r& À*  ä 2`. À  òe  ò•  òÅ  ò•   f¦æ*  
 …ß	  Æe …—,  >¦ ß	    œ      80  
«• Ã«;#$œ&8(0*  0ó5   (ß	  ¦ ¦ æ ß	  … & ß	    ¹«ÌU«Yf(Ã«;#*  V  ^^^f¦æ …ß	  Æe …ß	  & &  ^^
^«¯"¹«Ì*  | æ ß	  … ß	  00ß	  À ß	  … f&æ  U«YfÃ«)#C¬µ	  G©Õ*  ¢ …ß	  Æe …,  Ëß	  00³  ³   
«&Ã«)#*  È ó5   ß	  ß	  À1 ß	  Âœ" Â€  ß	  4ªu:C¬µ	1 G©Õ&    î  …   G©Õ       ~N  
 ÂXÀ*  DwÀv    ÂXÀ   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "            (  K© |ˆ ;©øMh  ¯”   
   K©   *    ß	  00ß	  ò  ò  2
 òW  ô5 Ú   Ã«)#¹«Ì*  & òG  f¦æ …ß	  Æe …—,  ¦  «¯*  L  ß	   l Z Z ¦ ¦ æ ß	  ß	  3
   Ã«;#l Z Z  U«Yf&B¬òy  r  ô5 Ú Á ñ•:   …        N  
 ÂXÀ*  •y¸y    ÂXÀ   ¯”L  D©b@  G©]\@  *  i©{@  Ý©Ý@  («$@  U«Yf@  «œ,@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì* J©K"|r J©K"h  ¯”   
   
­WT          («$               D©b         G©]\           i©{ (   (     Ý©Ý J©K"  *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«œ,*  & ß	   2 ^ H ×¬"  Á ñ•  _   Á   Ã«;#
2 ^ H $‰¬¼^*  L ñ•  =Ú  _   & & æ ß	  _     ‰¬ò`$U«Yf(‰¬¼^       NN  
 Â€À*  jz¸y    Â€À   ¯”L  D©b@  G©]\@  *  N©/w@  i©{@  ©ªX@  («$@  U«Yf@  *  U«Ý@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTì2 O©‹s|ð  O©‹sh  ¯”   
         
­WT          («$         D©b         G©]\           i©{ 0   0     U«Ý O©‹s  *    ß	  00ó5	   )p f&æ …ß	  Æe …  Ã«)#"«\g*  & ,  & ß	   > H> _   &&æCÀœ  Ã«;#> H> ‰¬¼^*  L  ø	  Áƒ„€Á[fÁ ô5 Ú ô5   N©/w*  r Ú {ô5  Ú âAJô5 Ú *ß	   â•
   ©ªX*  ˜ Ž
° ‚cÊ• Ž
° f&æ …ß	  Æe …  "«\g*  ¾ ,  ?p ô5 Ú Kô5 Ú G_    ‚c  "‰¬ò`*  ä Ò• Ž
Ê•
 Ž
° f&æ …ß	  Æe …,         «\g*  
  ß	  Ú ‚cÊ• Ž
° f&æ …  ©ªX*  0ß	  Æe …,  p & ß	   XX  «\g"Ã«;#&X(X*  VX& & æ ß	  _   ó5   ‡ô5 Ú    XU«Yf‰¬¼^*  | â• Ž
° ‚cÊ• Ž
° f&æ …*  ¢ß	  Æe …,  Èp _    ‚cÒ• Ž
  «\g‰¬¼^*  ÈÊ• Ž
° f&æ …ß	  Æe …,  ½  «\g  î¬       æN  
 ÂXÀ*  §y¸y    ÂXÀ   ¯”L  D©b@  G©]\@  *  i©{@  («$@  U«Yf@  «)x@  «Ä…@  *  Ã«)#@  Ã«;#@  ¬Ý@  ‰¬¼^@            (  "  
­WTì: J©Ë’|X J©Ë’h  ¯”   
   
­WT          («$         D©b         G©]\           i©{ 8   8     ¬Ý J©Ë’  *    ß	  00p f&æ …ß	  Æe …,    Ã«)#«Ä…*  & & ß	   6 D 6 Á ñ•6  _   & &   
Ã«;#6 D 6  ‰¬¼^  L æ ß	  _     
U«Yf‰¬¼^       ÄN  
 ÂXÀ*  èr€p    ÂXÀ   ¯”L  ©ª%@  ©ªp@  *  D©Åb@  G©Õ@  G©…\@  J©E$@  i©Å{@  *  («E$@  U«Yf@  «¯@  «&@  «•@  *  «E`@  «)x@  ¹«      Ù@  ¹«Ì@  Ã«)#@  *  Ã«1#@  Ã«;#@  C¬µ	@      (  
­WTì$ *  J©@`|ÒG©Ôfh† G©âfht G©ãfhb ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 
   
     J©E$ J©@`  *        # & / 2 9 F ,4ÿ,466ÿ0ÿ.ÿ&      
# & / 2 9 F *  & .2"ÿ2ÿ.,4ÿ.,24"ÿ2ÿ *  L 	Zÿ<ß	˜ ‡Â€  ß	    ˜ $  (G©Õ*  r … ß	˜ ‡Â€ ß	  … ß	˜ ‡Â€ ß	  …   ˜  G©Õ˜ " &G©Õ*  ˜       ó‹ ß	  ‡ß	  ‡ß	  Áœ" rœ\  Aœ_ q   ©ª%¹«Ù©ªp \ &_ *  ¾ ® ß	  30 ± ‡ f¦æ …ß	  Æe …—,   ® Ã«1#«E`*  ä  Qò•  ò•  ó5   ò•  òœ, 1 *  
f¦æ …ß	  Æe …—,  2¦ ß	      «•&Ã«;#*  0Š66ß	  ¦ ¦ æ ß	  ± ‡ & ß	     Š66¹«ÌU«Yf(Ã«;#*  V  ^^^f¦æ …ß	  Æe …ß	  & &  ^^
^«¯"¹«Ì*  | æ ß	  ± ‡ f&æ …ß	  Æe …,   U«Yf«&*  ¢ Ôð•  ³  ³  ß	  ÀI ß	  ß	    C¬µ	 I $G©Õ(      Ã«)#  È00Âœ" ¡ ‡        jN  
 ÂXÀ*  q€p    ÂXÀ   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "      (  J© |t ;©ÐMh  ¯”   
   J©   *    ß	  00ß	  ò  ò  2
 f¦æ …ß	  Ã«)#¹«Ì*  &   Æe …—,  ¦ ß	   F b F ß	  3
   «¯Ã«;#F  b "F &B¬òy*  L  ô5 Ú Á ñ•:   … ¦ ¦ æ ß	    (U«Yf  r …        BN  
 ÂXÀ*  Usxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  Ý©‚@  («E$@  U«Yf@  U«Ñ~@  *  «œ,@  «)x@        Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì, J©#"|Š J©#"h  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ *   *     Ý©‚ J©#"  *    ß	  00ð•   f&æ …ß	  Æe …,    Ã«)#«œ,*  & & ß	   8 v ` ß	  ×¬"  ×<      Ã«;#8 v ` U«Ñ~*  L Á ñ•  ñ•   _   Á ñ•  =Ú    ‰¬¼^  r _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       rN  
 ÂXÀ*  UsPs    ÂXÀ   ¯”L  D©Åb@  G©…\@        *  i©Å{@  ¹©…\@  Ý©Ñ~@  Ý©‚@  («E$@  *  U«Yf@  «ö&@  «œ,@  «)x@  Ã«)#@  *  Ã«;#@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   J©""|Ž J©""h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ *   *     Ý©‚ J©""  *    ß	  00ð•  ß	  f&æ …ß	  Æe …,  Ã«)#Ý©Ñ~ «ö&*  &   f&æ …ß	  Æe …,  ×<    «œ,*  L   Á ñ•,  _   & ß	   H z n =Ú   ‰¬¼^Ã«;# H "z $n    r        _   & & æ ß	  _     
‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  *txs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  («E$@  U«Yf@  U«Ñ~@  U«‚@  *  «\g@  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì4 O©cs|d O©csh  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 2   2     U«‚ O©cs  *    ß	  00ð•   p f&æ …ß	  Æe …,  Ã«)# «\g*  &   & ß	   < P D ß	  _   =Ú     Ã«;#< P       D U«Ñ~ ‰¬¼^  L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  *tPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  Ý©Ñ~@  («E$@  U«Yf@  U«‚@  *  «\g@  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  *  ‰¬ò`@      (  
­WTì4 O©bs|d O©bsh  
  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ 2   2     U«‚ O©bs  *    ß	  00p ð•  ß	  f&æ …ß	  Æe   Ã«)#Ý©Ñ~$«\g*  & …,  & ß	   @ P D _   =      Ú    Ã«;#@ P D  ‰¬¼^  L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       N  
 ÂXÀ*  gsxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  («E$@  U«Yf@  «)x@  «Ä…@  *  Ã«)#@  Ã«;#@  ¬@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì< J©£’|j J©£’h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ :   :     ¬ J©£’  *    ß	  00p f&æ …ß	  Æe …,    Ã«)#«Ä…*  & & ß	   6 V J Á ñ•6  ñ•6        _   =  
Ã«;#6 V J &‰¬¼^"  L Ú  _   & & æ ß	  _     ‰¬ò`U«Yf ‰¬¼^       dN  
 ÂXÀ*  gsPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  i©Å{@  ¹©…\@  Ý©Ñ~@  («E$@  U«Yf@  *  «ö&@  «)x@  «Ä…@  Ã«)#@  Ã«;#@  *  ¬@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   J©¢’|€ J©¢’h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ :   :     ¬ J©¢’  *    ß	  00p ð•  ß	  f&æ …ß	  Æe         Ã«)#Ý©Ñ~$«ö&*  & …,  f&æ …ß	  Æe …,    «Ä…*  L _   & ß	   ` l ` =Ú  _   & &   ‰¬¼^Ã«;#` l ` "‰¬ò`  r  æ ß	  _     U«Yf‰¬¼^       ðN  
 ÂXÀ*  %qxs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  e©P@  i©Å{@  («E$@  U«Yf@  «Ô@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTìD <©#"|Z <©#"h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ B   B     e©P       <©#"  *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«Ô*  & ß	   2 F F Á ñ•6  ñ•6  _   & &  Ã«;#
2 F F "‰¬¼^  L  æ ß	  _     U«Yf‰¬¼^       `N  
 ÂXÀ*  %qPs    ÂXÀ   ¯”L  D©Åb@  G©…\@  *  e©P@  i©Å{@  ¹©…\@  Ý©Ñ~@  («E$@  *  U«Yf@  «Ô@  «ö&@  «)x@  Ã«)#@  *  Ã«;#@  ‰¬¼^@  ‰¬ò`@      (  
­WTìL   <©""|| <©""h  ¯”   
   
­WT        («E$         D©Åb         G©…\ "   "     i©Å{ J   J           ¹©…\ B   B     e©P <©""  *    ß	  00ð•  ß	  f&æ …ß	  Æe …,  Ã«)#Ý©Ñ~ «ö&*  &   f&æ …ß	  Æe …,  _     «Ô(‰¬¼^*  L & ß	   \ h \ =Ú  _   & & æ  
Ã«;#\ h \ ‰¬ò`  r  ß	  _     U«Yf‰¬¼^       ŠN  
 Â¨À*  Œs€p    Â¨À   ¯”L  D©Åb@  G©…\@  *  i©Å{@  ¹©…\@  Ý©Ñ~@  7ªl†@  («E$@  *  U«Yf@  «ö&@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@  “¬’@      (  
­WTìL   K©Ð|¨ K©Ðh  ¯”   
   
­WT              («E$         D©Åb         G©…\ "   "     i©Å{ J   J     ¹©…\ K©Ð  *    ß	  00ð•  ô5 Ú æ/ ß	     ô|ª   Ã«)#7ªl†"  *  & _   ß	  f&æ …ß	  Æe …0
 ,    “¬’
Ý©Ñ~«ö&*  L & ß	  
 ^ ” ˆ Á ñ•,  ×¬"  
×<  Ã«;#^ ” ˆ *  r    `ñ•6  ñ•6  _   =Ú  _   &   ‰¬¼^$‰¬ò`  ˜ & æ ß	  _     U«Yf‰¬¼^       FN  
 Â€À*  ¨:@8    Â€À   ¯”L  ©ª%@  ©ªp@  *  D©íb@  G©Õ@  G©­\@  J©m$@        i©í{@  *  («m$@  U«Yf@  «¯@  «&@  «•@  *  «E`@  «)x@  ¹«Ù@  ¹«Ì@  Ã«)#@  *  Ã«1#@  Ã«;#@  C¬µ	@      (  
­WTì& *  A©@`|ªG©lehÀ G©zeh® G©{ehœ ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{         J©m$ A©@`  *        # & / 2 9 F BJÿBJ66ÿFÿDÿ&      
# & / 2 9 F *  & DHNRÿHÿDBJÿDBHJNRÿHÿ   L T	Zÿ    ` *  ` 8                                            †        e   e     ’   ’      –   –      •   •  «   ”   ”      Š   Š            ˜   ˜ <   œ *  œ ß	Ò ‡Â€  ß	  … ß	Ò ‡Â€ ß	  … ß	  Ò   G©ÕÒ   $G©Õ*  Â Ò ‡Â€ ß	  … ó‹ ó‹- ß	  ‡ß	    Ò  G©Õ"©ª%(¹«Ù*  è ‡ß	  Áœ" rœ\  Aœ˜ q î ß	  30 ± ‡ f  ©ªp\ ˜ î Ã«1#*  ¦æ …ß	  Æe …—,  S ß	*ò•     «E`"**  4òœ, 1 ò•  ó5   ò•  f¦æ …ß	*  Z  Æe …—,  2¦ ß	    Îzzß	        ¦   «•Ã«;#Î z"z&¹«Ì*  € ¦ æ ß	  ± ‡ & ß	    ¢¢¢f¦  U«YfÃ«;# ¢"¢$¢*  ¦æ …ß	  Æe …ß	  & & æ ß	  ±   «¯¹«Ì&U«Yf*  Ì‡ f&æ …ß	  Æe …,  ÔÁ pœ   «&*  ò 0Š A  Ál p ³  ³  ß	  ÀI   $C¬µ	(I *  ß	  ß	  00Âœ" ¡ ‡ &f&f
 
@ A  G©Õ
Ã«)#*  > Ä &f¦À8 Â` ‘”~‚€År   ` *  dp É• 1   1 " ñ•   ÅñÕ  $  Šq‘ @…
Áe8 Äe s¡- Ò‡…„€‡        jN  
 Â€À*  Ä8@8          Â€À   ¯”L  U«Yf@  «¯@  *  «)x@  ¹«Ì@  Ã«)#@  Ã«;#@  B¬òy@  "      (  A© |t ;©hLh  ¯”   
   A©   *    ß	  00ß	  ò  ò  2
 f¦æ …ß	  Ã«)#¹«Ì*  &   Æe …—,  ¦ ß	   F b b ß	  3
   «¯Ã«;#F  b "b &B¬òy*  L  ô5 Ú Á ñ•:   … ¦ ¦ æ ß	    (U«Yf  r …        4N  
 Â€À*  ;8;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  Ý©-‚@  («m$@  U«Yf@  «œ,@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTì. J©» |Ž       J©» h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ ,   ,     Ý©-‚ J©»   *    ß	  00ð•   f&æ …ß	  Æe …ÁÁe.   Ã«)#«œ,*  & 
   ,  & ß	   J z n ×¬  Ã«;#"J $z &n *  L "  ×<    Á ñ•L  ñ•P  _   =Ú   $‰¬¼^   r  _   & & æ ß	  _     
‰¬ò`U«Yf‰¬¼^       ŠN  
 Â€À*  ;;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  Ý©-‚@  («m$@  U«Yf@  *  «ö&@  «œ,@        «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN J©º |ª   J©º h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ ,   ,     Ý©-‚ J©º   *    ß	  00ð•  Ap Wp Ál pœ  A  Ál  Ã«)#*  &  p f&æ …ß	  Æe …,  f&  «ö&*  L æ …ß	  Æe …,  ×<    Á ñ•  «œ,*  r B  _   & ß	  & d – Š =Ú  _   &   
‰¬¼^Ã«;#d – Š &‰¬ò`  ˜  & æ ß	  _     U«      Yf‰¬¼^       2N  
 Â€À*  ê;8;    Â€À   ¯”L  D©íb@  G©­\@  *  O©5q@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  U«-‚@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN O©ûq|f   O©ûqh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ 4   4     U«-‚ L   L     ¹©­\ O©ûq  *    ß	  00ß	  ‡ð•   p f&æ …ß	  Æe  Ã«)#O©5q&«\g*  &  …,  _   & ß	    2 R F =Ú    ‰¬¼^Ã«;#2  R       "F   L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       2N  
 Â€À*  ê;;    Â€À   ¯”L  D©íb@  G©­\@  *  O©5q@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  U«-‚@  «\g@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN O©úq|f   O©úqh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ 4   4     U«-‚ L   L     ¹©­\ O©úq  *    ß	  00ß	  ‡ð•  p f&æ …ß	  Æe  Ã«)#O©5q&«\g*  &  …,        _   & ß	  ( 2 R F =Ú    ‰¬¼^Ã«;#2  R "F   L _   & & æ ß	  _     ‰¬ò`U«Yf‰¬¼^       èN  
 Â€À*  å88;    Â€À   ¯”L  D©íb@  G©­\@  *  e©-P@  i©í{@  («m$@  U«Yf@  «Ô@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@      (  "  
­WTìF <©» |Z <©» h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ D   D     e©-P <©»   *    ß	  00f&æ …ß	  Æe …,  &   Ã«)#«Ô*  & ß	  " 2 F F Á ñ•      6  ñ•6  _   & &  Ã«;#
2 F F "‰¬¼^  L  æ ß	  _     U«Yf‰¬¼^       ’N  
 Â€À*  å8;    Â€À   ¯”L  D©íb@  G©­\@  *  e©-P@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «Ô@  «ö&@  «)x@  Ã«)#@  Ã«;#@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN <©º |¶   <©º h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ D   D     e©-P <©º   *    ß	  004 Þ 4œ á 4œ à Á  Bl  °  Ã«)#*        &  pœ  0Š ð•  f&æ …ß	  Æe …  "«ö&*  L 0Þ  0á  0à  ,  f&æ …ß	*  r   Æe …,  _   & ß	  * ‚ ¢ – =   «Ô‰¬¼^Ã«;#"‚ $¢ &– "  ˜ Ú  _   & & æ ß	  _     ‰¬ò`U«Yf ‰¬¼^       <N  
 Â¨À*  ';8;    Â¨À   ¯”L  D©íb@  G©­\@  *  J©s@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «)x@  «Ä…@  Ã«)#@  Ã«;#@  ¬-@  *  ‰¬¼^@  ‰¬ò`@      (  
­WTìN J©;‘|p   J©;‘h  ¯”   
   
­WT        («m$         D©íb               G©­\ $   $     i©í{ <   <     ¬- L   L     ¹©­\ J©;‘  *    ß	  00ß	  ‡p f&æ …ß	  Æe …,  Ã«)#J©s «Ä…*  &   
Á ñ•6  ñ•6  _   & ß	  $ ,   ‰¬¼^$Ã«;#(, (  L \ P =Ú  _   & & æ ß	  _     \ P ‰¬ò`"U«Yf&‰¬¼^       ÜN  
 Â€À*  ';;    Â€À   ¯”L  D©íb@  G©­\@  *  J©r@  i©í{@  ¹©­\@  («m$@  U«Yf@  *  «ö&@  «)x@  «Ä…@  Ã«)#@  Ã«;#@  *  ¬-@  ‰¬¼^@  ‰¬ò`@      (  
­WTìN   J©:‘|ä J©:‘h  ¯”         
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ <   <     ¬- J©:‘  *    ß	  004 Þ 4œ á 4œ à ð•  Á    Ã«)#*  & Bl  ° pœ  0Š f&æ …ß	  Æe …  "«ö&*  L ,  !0Þ  0á  0à  & ß	  , à   $Ã«;#(à *  r ‚ v =Ú  _   & & æ ß	  _   Á  ‚ v ‰¬ò`"U«Yf&‰¬¼^*  ˜ Áe. 
   ß	  0Þ  0á  0à    J©r*  ¾ Ó‡p f&æ …ß	  Æe …,  Ã_     «Ä…(‰¬¼^             ~N  
 Â¨À*  L;@8    Â¨À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  U«Yf@  «ö&@  *  «)x@  Ã«)#@  Ã«;#@  ‰¬¼^@  ‰¬ò`@  *      (  
­WTìN K©{~|È K©{~h  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ K©{~  *    ß	  00ð•  ô5 Ú 
ð  ô5 Ú ð   Ã«)#*  &  Ap B° Wp Ál  Bl  ° f&*  L æ …ß	  Æe …0
 pœ  ,  &   «ö&*  r ß	   ~ ´ ¨ Á ñ•B  ×¬"        
×<   `  Ã«;#
~ ´ ¨ *  ˜ ñ•6  ñ•6  _   =Ú  _   & & æ  ‰¬¼^‰¬ò`  ¾  ß	  _     U«Yf‰¬¼^       ’N  
 Â€À*  ';à8    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN J©s|&J©sh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ J©s  *    Á ñµ  j4 Þ 4œ á 4œ à ô Ü Áe*  &  ð•  ñµ  & Bl  ° pœ  Ü *  L ° f&æ       …ß	  Æe …,  ß	  «ö&&*  r ðàý <ð%@ú 8´
Ü Áe 3­Ü - Î‡Á *  ˜  Bl  ° pœ  0Š f&æ …ß	  Æe   $«ö&*  ¾ …,  ß	0Þ  0á  0à  ¡ ‡   *  ä ð%@ú ðÐþ 0Þ  0á  0à  ± ‡ &   
æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡        8N  
 Â€À*  ';ˆ;    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN J©r|Ü J©rh  ¯”   
   
­WT        («m$         D©íb         G©­\ $   $           i©í{ L   L     ¹©­\ J©r  *    Á ñµ  Uô Ü Áe ð•  ñµ  &*  &  Bl  ° pœ  Ü ° f&æ …ß	    («ö&*  L Æe …,  ß	¾ ðàý )ð%@ú %´
  ¾ *  r Ü Áe 3­Ü - Î‡Á  Bl  ° pœ  0Š*  ˜  f&æ …ß	  Æe …,  ¡ ‡ ± ‡   «ö&"  ¾ &æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡        üN  
 Â€À*  ê;H    Â€À   ¯”L  D©íb@  G©­\@  *  i©í{@  ¹©­\@  («m$@  «ö&@  «)x@  *      (  
­WTìN O©5q|¸ O©5qh  ¯”   
   
­WT        («      m$         D©íb         G©­\ $   $     i©í{ L   L     ¹©­\ O©5q  *    Á ñµ  I4 Þ 4œ á 4œ à ô Ü Áe*  &  ð•  ñµ  # Bl  ° pœ  Ü *  L ° f&æ …ß	  Æe …,  ðàý   «ö&*  r ð%@ú ´
Ü Áe 3­Ü - Ñ‡0Þ  0á  $  ˜ 0à  ¡ ‡ 0Þ  0á  0à  ± ‡        Î
N  
 PŽn´*  *yø    PŽn´   ¯”L  ‘«[K@  ’«,@  *  “«kM@  •«Ã^@  •«Ë`@  –«;@  «™q@  *   «1@  ¢«€@  ¢«l@  ¢«á"@  ¢«[}@  *  £«¶@  §«À@  §«üq@      (        *yø,ð*  t!Àvh^Rˆ,hTq8"h€\q°rhš‡s sh  *  ¼«´;hš½«Ö%h¾Ã«,:hlÅ«4…h¶Ç«6fh¸  Ì«ßghªÏ«	Fhœ¯”   
   *yø  *    ÃŒS“Á U%À	 Ó/€
D„
„Ä  Œ*  & '€
K‹
K@"Äd€
BB0Ò“B‚
B@AÁE *  L `fSÐÄe …!ÿ?€
K×" €
×"*  r 
 z×¯  @÷  7  ×¯þ @÷  ’«,’«,*  ˜   7  ×¯ê	 @÷  7  ×¯Ö
 w  £«¶
£«¶ «1 «1*  ¾    Àe ·ð`÷	  ÀÀ
À
ÀËÓÐ  –«;‘«[K*  ä €ÅÆÕ À
ü
W!îüÓ$Ó$
“      ‹Å
  
Æî*  
 SaDa€€àŽæ
÷	zƒ‚ÀE €æ*  0÷	‚ƒAa‹S`á…`@aB`Î5 a a¦¢b*  V""
Î
ó



·
( 
Æ ÅÄ= *  |€‡ ÂŒR’U% 
D	7!fÀ Î5   
Œ*  ¢Àe áæ&„
„6 Ê% ØÂîÃò	·
*  Èè÷	:ÄÔ÷	  ‘ÀºÅ°Å
ý…€  §«üq*  îÅ
ý÷	D÷	V·®÷²w bÿÁŒQ‘ 
   Œ*  É% 7
ÐÂŒÃ÷ŽÃ
Ãÿÿ÷	Ã*  :ú÷v·j·
Jw ÿw z÷	´ÄN÷	  Ã  &§«üq*  `ÿÿ÷	ìÃ%ÿÿò÷	`·
Ä,÷	  Äå û÷	    •«Ã^(«™q*        †ÄÅ  ÷	  Äå ù&
Ä4mÆÚmÚÄå   
¢«€¢«á"Æ Ú$Ú*  ¬øÄø7òÅ  ÷	  ÃæÓÃå óÚú  §«À¢«á"&Ú*  ÒæÄÐ÷	  Å  ÷	  „7¾Å  ÷	  Ä´7
   •«Ã^¢«€¢«á"§«À"¢«á"*  øÂ7!ªôÆô
Æô
ÚÎ
·
¨÷	ªÉ5 À  ÆÆÚ*  Äå ê÷-’tÄv´
Ú´
ÆÛÀ ÉE
  ÚÆ*  DÀ B·#T·
>7
Z·
Vw 
þ÷	à&Ä>*  j÷	  „÷	PÉ5 ÀóÉã€Î
ô
Ú·
4÷-0è  §«üqÚ*  ÷	<Ž
w &ÿÁŒQ‘ 
÷% æU%ffõ¥  Œ*  ¶ øÿwÎ5 À Àe w       šý÷â÷Ú*  Ü6ÂÌ¦Ãÿÿ÷	f·¼÷À÷¶Ä¦*  ÷	¾É5 ÀÉš€·
¨÷-¤†÷	$7„7
Š*  (ƒ@ÁmdÃˆSÀå ü7
j‰À *  N÷œ½Àÿÿ÷
’¸ÂŒÀ R’Ê¯

÷  Œ*  tB÷	  ÷ ÷	  w àü$Å$Å
ü‡   
“«kM¢«[}*  šæ  
ÀCB ‡Bà€
Î
÷Ö‡ &
 
†*  À€cCÁÎøÖ‡ ¦æÁÀÄÌ÷	  ´
Ú÷%  À"§«üq&Ú*  æ ¨)ô
Æ÷	  × ÿÿ"Á¤CÄå Ä	!ú  Æ•«Ë`¤*  7˜ôÆÉå ÉBÀ„Ú 0ÆÀå   
ÆÚ$Æ*  2ùÂå Â‰ƒ‚‡ Ã$       ÓÂ
À  7 *  X‹
„‡ À w ü°nÿÿ  ÿÿÿÿ  ÿÿÿÿ  
  °n*  ~ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿÿÿ  ÿÿ&  ¤ÿÿ  ÿÿÿÿ  ÿÿtz€†Œ’˜ž¤ª÷	*  tz€†Œ’˜ž ¤"ª*  Æ  É5 ÀffÃ–ÿÓËÂ€÷	¤þ‚ƒõ  ¢«l*  ìÀzÿ7tÿò ‹J2 …‡ ÷ ¨ 
Ã¢ *  ƒ
÷œ ÷	²þ÷’ ÷Œ 	Åh …
Áˆ €Å
*  8ý‡ ÷r Át €÷	>þ†ƒ
‡ „úÿ-øÿ‚‡*  ^þÿ€÷	"þ
ƒ&þÿ´þÿ‚øÿôøÿƒ7!. *  „üÿæ‡                                  ª                     @ €Ä  
        Ä î  î         ŠN  
 PŽ%´*  7x›r    PŽ%´   ¯”L  ô¨úW@  D©b@  *  G©]\@  J©$@  i©{@  («$@  «¯@  *  «&@  «•@  «#@  «v:@  «Iq@  *  «)x@  «™’@  ¢«€H@¤«úW@  §«ÀH *  ¼«´;@  ½«Ö%@  Ã«,:@  Å«4…@  Ç«6f@  *  Ì«ßg@      (  7x›r,˜‘«[Khf’«,hˆ*  “«kMh² •«Ã^hT•«Ë`h"–«;h†«VKh„*  «™qhF «1hŽ¢«lhb ¢«á"hÔ ¢«[}h¼*  £«1h’£«¶hŠ£«çhŒ£«1h*£«Ch-"  §«üqh  ¨«qh–
­WTì" ¯”   
   7x›r  *    ¦æ÷  ÷	šô@      ÷	Â@,BÂm  
Ç«6f@ $,*  & Bƒ 
‚B ý‡ƒ ‡÷	ÊC ý‡÷	ºÁí  *  L Âíƒ õ‚ê´ƒ‚‡ ¦æ,C    $,*  r ÷	þBÂmêƒ ƒ ÈPC ý‡÷	âÁíÄÂí
  
È*  ˜ Àƒ õ‚PB ý‡È´ƒ‚‡ Ä  À Åp  È Ì«ßg$ (p*  ¾ 0  ÷	  Äå ø7
  ‡ Äô Ü4
Þ„W!   «¯Ç«6f Ü$Þ*  ä  æÃnÅ3tt,ô,,"  ",&,(,*  
s,sƒ4,7<‡ íw!<‡  ,
,"*  0ÅEÿ      táÅe ÷	ÈÄôå Ü´Þ„´
@‡ Á  
ÜÞ$@*  V  ÷	¤þ÷	Âÿ4
@‡ ÷	  w(Ëi&7ò&f  ½«Ö%@«v:*  |Àd ÁàÁEÿÁ wÀw¸Á Áw*  ¢¶w®B`€e…
à ‚„
!ù! À*  È w   æÂí„¦À0 ÷	  `wzÀ0   Ã«,:Å«4…*  î÷	  À  ÷	  ‚`w`À  ÷	  À   ¤«úWÅ«4…"¤«úW*  ÷	  ‚·@`wBÀ ÷	  ‚·,·àÂm  Å«4…¤«úW*  :·ìƒ„‡ Â  „&ÁÂå €ƒtÈÁ`  Ì«ßg&È*  `Äå ú@àDÁAn
÷	  7ÚÀÀ 7Ô  n¼«´;*        †„t`t,Äå øwzwôEàÅEÿwª
  
,*  ¬Aawz…Å wš‡ À0 Á ÷	  À  Á–÷	  ô¨úW*  Ò  À ÁŒ÷	  7 z&À Áx÷	  À   ô¨úWô¨úW$ô¨úW*  øÁl‚÷	  ‡ ÅN&f¦ÀPð  0´   ¤«úWP&´*  p Â°Ü& °Þ( …Å raÜrÞ0   ÜÞÜ"Þ&*  Dð   ±,Þ ‚±,Ü  ƒÀ Åpð(    ÞÜ  $p*  j
 ð$ p ÷	  ð ÀPÅl÷	  ð   «#P l$«™’*  ‚€‡    w   f¦&÷•0 F÷  Ã«,:*  ¶Î¨Ä  V      ÂTÁdÀ ÷¼ðU€  °   
Ì«ßg *  Üðz ð  ðž ðœ
 ð˜ À Åp
  $ (p*  ð\3 ÷	  ð Ä4  ·
  ÀPÅl÷	     «• Ç«6f P$l(«&*  (ð w hÿ4 ´´´t,Äô Ü4
  ´,&Ü*  NÞ„4
@·
·Šœ Äå Ë„‚‡ À w     Þ
@(Ã«,:*  tÅâ&ÀP0´ p Ä0Ü& 0Þ( …Å   P´Ü"Þ*  štaÜtÞ„ð  ð  0 Ål÷	  ð  Ü
Þ "l&«Iq*  À 	ð%°ý ð w Äþ€‡ Å ÷	–ÿÄôå(  æ Ü´Þ„4
@‡ SO      RT0D.TMPP          Ü
Þ@   #@                      

  
         &  &  ö  
       
  ö P%  PP                                  r  r       
    T*  T                        P  Ôw	 
  P" "  zyæK¨             @     
   
­WT          («$         D©b         G©]\           i©{         J©$       ÄO   Â Áz  öšw    Â Á   ¯”L  G©#@  N©¯@  N©°@  N©²@  N©Y@  N©@  N©Ñ      @  õª1@  W«®s@  »«oK@  »«pK@  »«rK@  2      (ˆÍªÂh4 ÍªPÈh’ ÍªÐÔh <d ( ¯”   
         *    CAæ  ÎeÈ Þ5 Bœ  @œ àÀœ `  
G©#*  & 
àÀœ ‡ ± ‡ ß	  %‡&Ä ø	  Â% 	À    G©#  N©¯*  L   —t 2   À‚Ä ß	  D  ø	  W«®sG©# »«oK*  r   … æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  -‡  N©Y
G©#G©#&  *  ˜ &Ä ø	  Â%
 Ä   D—t Âe  G©# N©°*  ¾  "!" ‚À‚Ä ß	  D  ø	  …   W«®s G©# »«pK&N©*        ä æ  ÎeÈ ÞÕ Öæ  ÎeÈ ÞÅ … ß	  :‡&Ä  G©#G©#"  *  
 ø	  Â% À Àe Ð	ÄB $$$$ß	  G©# N©²G©#B *  0   —t Âe "(	"(‡‚"(‡‚"(†À‚  õª1W«®s *  VÄ ß	  D  ø	  … æ  ÎeÈ ÞÕ Öæ  G©# 
»«rKN©ÑG©#  |  ÎeÈ ÞÅ …   G©#
       *   * ÷	    <d    <d       Àœ ¡ ‡        dO   ÂèÆz  òyw:    ÂèÆ   ¯”L  û¨6@  G©#@  N©¯@  N©²@  N©T
@  N©Y@  N©Ñ@  N©/w@  N©!£@  Ü©;"@  Ü©X"@  W«®s@  z  ‡¬À]@  ¬5a      @  µ¬5a@      (  Ì«·r|â‰¬TZhš‰¬WZhÆ‰¬XZh¶‰¬€Zh¶‰¬¤Zh¤‰¬§ZhÐ“¬âh  “¬ãhl “¬ähV•¬ŠZh6  •¬‹ZhÀ•¬ŒZhP¯”   
   Ì«·r  *    Ä  tò ß	* Ä  t. t0 … õ Ö]   G©#* G©#*  & _   tÃ ô & ô  ô•  4Š 4  ‡¬À]*  L ôe Àœ ø	  ÃÎe ‡ À  p  N©/w&G©#*  r ì ß	  ° ðfÅ  CÄ Àœ ô     Ü©;"G©#G©# *  ˜ ø	  õ & Aò Dß	´Á õì @ì 
ß	  N©¯´G©# *  ¾ žBò r-&   „"}ž ö µ
& ±
 ñ
          ž*  ä Þ
B @Cô ëAö ƒ ƒß	d
  $d*  
Âß	d„õ`& Ã õ &D  ø	  „  dG©# &N©Y*  0…À  Ä… Àe  ð0 Öx . Åe. _     G©#(‡¬À]*  Võ Ö] _   &æ— 
 ‡À5 Á5   ‡¬À]*  |Á5 	”Â
ƒƒÂ~ÂEþÿ”‚~ƒ„‡ &*  ¢ß	  „æ¦
€ B  Âà‚#‚fA Á`¤  Ü©X"*  Èƒ~ƒcÄíÖÖÄ‡ Á>W¬ , *  îW¬ 0 B  C     _	  ‡ B  C   ¬5a*      _	  ‡ ð  À ð   ø•0  f  µ¬5aG©# *  :fE D  Bœ           ß	  ƒ…Àœ ø	    û¨6(N©!£*  `‡ ƒÄ Àœ ô   ø	  Àœ t Ä l    
G©# N©²(W«®s*  †Lt t l Lt l Ll ƒ „   W«®s W«®s  W«®s *  ¬ ø	  ‡ æ&Dß	  „f Áô ‰	í& ‘
É  N©ÑÜ©X"G©#ô *  Ò	m& Ñ
‰ƒ‡ Á Ä  ß	´Áô 
ß	ž‡ ×¬   G©# G©#´G©#ô $ž*  ø " 8
×¬   3Áœ  Ál Á
Á B’³ *  — { — [ — ? — } 	— ] — ! — *  D: 
— A — 0 ø— 9 õ— R ñÂå@ *  j‰œp‡ 0,1,2,3,4,5,6,7,8.,9.1,2,3,4,5,6  p      *  ,7,8.,9.×¬ " 
×¬   
Áœ  Ál Á
*  ¶Á Éœ ‡ Ä  At ttß	* Ä    G©#"* (G©#*  Üô  t
´ÖÍB¦fÂ5 @úf*    t. t0 &
… ÕÍ5 €Í5 @Åe úÕÕ*  (õ Ö] _   Ä  tî tð tò fÅ    ‡¬À]G©#&G©#*  NÄ Àœ ô   ø	  õ & Á Dß	´õ  G©# N©¯ G©# &´*  tô j&
&
v þ 
þ5   D
€  *  šÁô ß	žþ5 @ öå  êŽ
µ
ö õ
ô Þ  G©#ô 
ž*  À
Dî ß	  µ ô ŽNô 
µãö µô   Ü©X"*  æÀô Aî &ß	      à„µcö 5ô Àô Að ß	àµ  G©#ô àG©#ô &à*  N Ã Dò   ø	  umô & µc& Ã D  G©# N©Y$G©# *  2Ä   ø	  ÖÖB
ß	b…… Ä    N©Yb$G©#*  XÁ ß	´ôô Åe … õ Ö] _   D
  G©# 
´$‡¬À]*  ~æß	  ƒ“  ‡ 


‡ Ã  ³  Ü©X""G©#*  ¤Ã  3
&
fó & ÅÍhå³
& ó,&   G©#*  Ê `óÍ5€ Í5 Tõ,& èÿPÍE€ ÍE õ,& *  ðêÿBÍ5  Ä @óÀå Àå Í5 *  õ,& èÿ,ß	Þ)ß	Þ+Ã  &ó@  ÞÞ      G©#*  <òÿÁÁl& Á
ß	dBÂå ß	bÃ  ³e&   d b$G©#*  bõ& èÿÍ5 @¬ÍU€ û
§Ã  ÍU€ û
Ã    G©#(G©#*  ˆÅå ˜Ä  Ã ß	˜ãÃå ôß	  G©#G©# ˜*  ®˜Ãå ß	˜Ãå ð…… À  °À    ˜˜G©#(G©#*  Ô0
ÖfÆå ƒß	zðƒß	öÆå ƒß	
  z ö*  úzƒß	öö5   ö   Æå ƒß	zƒË  z
ö"z*   Ó  ‹
‹í ‹
€)ó"þÿ&9ß	öð &   "ö*  F0,&  	€ß	ÞÀ  °
& óÀ  ƒß	˜ö5  ÞG©# G©#&˜*  l  öU      €  0a& & ð$ ÏƒÃe ß	˜ð  &˜*  ’Ãe ß	˜Æe Ó & ¾¸
&
… Ö  ˜*  ¸Dß	  Ã ³  3  3  ß	ö&
Àˆ  Ü©X"G©#  ö&G©#  Þ&
… 
   Ì«·r.   .        ÄO   ÂHÁz  –,Ð    ÂHÁ   ¯”L  2"@  2£,@  2;N@  2cX@  2©ä@  2©
z@  G©#@  N©²@  N©Ñ@  õª2,@  »«rK@      (  j  Ý©òW|\é¨1h  û¨1h. ?©YÕh6?©ÕhT?©¬ÕhF?©eÖh(?©tÖh ?©µÖh>ø©ßh° ÖªÐÔh† ÛªÐÔh< ¯”   
   Ý©òW  *    ß	° ¦Dß	  Àb PÐÄ A‚Cœ Âà        ° 2©äG©#b G©# *  &  ß	° ¦Dß	  èCÀœ ABœ Äœ   ° 2©
z*  L áÄ LŒàø	  ÀÄ ß	  DË     G©# N©²G©# »«rK*  r ø	  …  



ðCÄ Àœ Ì ø	    N©ÑG©# (N©²*  ˜ Ä À• Ì ø	  ß	  DßCÄ Àœ Ì   G©# N©Ñõª2, G©# *  ¾ ø	  ÁBœ CÄ Àœ Ì ø	  Ä Àœ à  N©²G©# N©²"G©# *  ä 
Àß	  @ Bœ  ‡ @ß	    Âœ  »«rK"»«rK*  
 Á ‡ Bœ @ Á ‡ ß	° _   ß	° @  °  2;N$° *  0_         ß	° _   ß	° _   ß	° @_   ß	&  2£,° 2"° 2cX° &2;N
  V° _     ° 2£,
   Ý©òWN   N Ä 
  G©#        "O   Â©Àz  ~      Â©À   ¯”L  G©#@  N©¯@  N©°@  N©²@  N©Y@  N©@  N©Ñ@  õª1@  »«oK@  »«pK@  »«rK@  »«vK@  j      (  i©€‰<lì¨—(h  ì¨˜(hÐ ì¨š(hžì¨ç(h ì¨è(hö ì¨ê(hÊì¨˜0h. ì¨À0hì¨1hÜ†©Šhð¯”   
   i©€‰  *    BAÀr…… æ  ÎeÈ ÞÕ ‡ BAÀrô…  G©#*  &  … ŸJ      >   … ‰rä… ‡ C  J       N©¯»«pK> N©Y*  L Ä Àœ €bô   Ø	ÁCÄ Àœ €dô     G©# G©# *  r Ø	æœ Ã Ä: €Ô~€ãÔ~€•ƒBœ à
  G©#: *  ˜ @ œ `Ä  Û	A   ÂæÊ	€Ã D  G©# &G©# *  ¾ ó    dÙ	‚ ß	Ü BJ… @Cf  Ü *  ä ÀÁÂÃß	6…‡ ß	Ü Áë AçŸJ   6Ü (J *  
       … f&DEÀÁÂÃß	6‚  N©°»«rK
N©$6*  0J…‡ &
Ã
@
A
B
C
Àe ABCN
Å*  VEN
æ  ÀABCáƒCáaCCa*  |€
Î
ïÁæ  ÎeÈ ÞÕ –%       A‡ ß	®  G©#(®*  ¢A	… ACÀb Â Ð0
 „~Â €à
  G©#b *  Èß	®ð çß	  ãŸJ      ì  … Â&  ®õª1J N©² »«vK"ì$N©Ñ*  î f&
ƒ`ã„`ƒƒÅd
Â~Å
Ôe TB*  N
ñ Ä~ Áe ddddß	  N
æ@ E  G©#~  õª1*  :Ä aå‹)ƒ`ã‹ƒ~ ! É_*  `„àÄe K£ƒ„
ÄÂ €`ááà˜*  †‚~ ŠWq Ná
–%…‡ æ  ÎeÈ ÞÕ öÅe  G©#*  ¬ BCDEÐPPHEDCBÀå Eä„ƒ*  Ò‚Däƒ‚Cä‚BâÁå Î
æÀå EdDCB*  øDdCB      CdBBbîÁå ˆ
Î
Ó–%ß	  …‡   $õª1*  ‚
‚€`€`C—  
,þÿ‡æ  ÎeÈ ÞÕ 
  G©#*  Dw Ä ÄàwÿÿsÄe €wÿÿsD’~
  jÒ
   i©€‰L  L‚  f&
ƒ`ã„`ƒƒÅd
Â~Å
Ôe TB*  N
ñ Ä~ Áe ddddß	  N
æ@ E  G©#~  õª1*  :Ä aå‹)ƒ`ã‹ƒ~ ! É_*  `„àÄe K£ƒ„
ÄÂ €`ááà˜*  †‚~ ŠWq Ná
–%…‡ æ  ÎeÈ ÞÕ öÅe  G©#*  ¬ BCDEÐPPHEDCBÀå Eä„ƒ*  Ò‚Däƒ‚Cä‚BâÁå Î
æÀå EdDCB*  øDdCB          ƒjL¢_› 8$         ÁXÀO    #     D  "  g  †L  ¢]^                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         Ÿ sq à £  Ø Ü ã;ª¸ ãÛª¸ ãS«¸ ãË«¸ äÀ¨!P ä;ª
& äÛª
& äS«
& äË«
& æ)ªÊæ5ª"æ8ª æ;ª!P æÉªÊæÕª"æØª æÛª!P æA«ÊæM«"æP« æS«!P æ¹«ÊæÅ«"æÈ« æË«!P é)ªí  é5ªí  é8ªî é;ªí  éÉªí  éÕªí  éØªî éÛªí  éA«î éM«î éP«î éS«î é¹«í  éÅ«í  éÈ«î éË«í  ®À¨É $µXØ V¶ }D /À+~ /¶0~ 3àq ^4Ùfr j I°šÙ IØšØ ÎQ0\Ù QX\Ø ÎW Ù ÞtÀ¨ê ÂF	VNr K	f9² ¬ a	€Wÿ 8a	€\ÿ 8r	À+r ¤¢
Š(I T ¢
.€‚ Ö¤
Ó%I T       ¤
2&I T ¤
Ñ(I T ¤
PdI T ¥
Š(I T ¦
Ò:I T ©
Ì`I T ¬
5…‚ Ö¬
q…‚ Ö¬
……‚ Ö¯
“I T ´
Ñp‚ Ö°À¨± „ YÀ¨Á ¼À¨Á ¼¬À¨Á ¼KÀ¨Å \eÀ¨Á ¼tÀ¨Á ¼µÀ¨Á ¼QÀ¨Á ¼âƒI T âŒ(I T îT–I T ö°I T êÀvÚ Ô ñÀ¨³ H ôÀ¨³ H ö,s ~ö`Ts ü<À¨å Æ>À¨È AÀ¨ŠDÀ¨å Ö GÀvÜ œcÀ¨å ÆfÀ¨È iÀ¨ŠlÀ¨å Ö   dÛ R ³À¨å Æ´À¨#j ¹À¨Š¼À¨å Ö tI T +À¨8,À¨8.À¨84À¨8£À¨8¤À¨8¦À¨8©À¨8¯À+Û ž¯ˆw° d²0 u 
 Ì1ªè èÌ5ªè èÌ8ªè èÌ;ªè èÌÑªè èÌÕªè èÌØªè èÌÛªè èÌI«è è      ÌM«è èÌP«è èÌS«è èÌÁ«è èÌÅ«è èÌÈ«è èÌË«è èÎ1ªë ^ Î5ªë ^ Î8ªë ^ Î;ªë ^ ÎÑªë ^ ÎÕªë ^ ÎØªë ^ ÎÛªë ^ ÎI«ë ^ ÎM«ë ^ ÎP«ë ^ ÎS«ë ^ ÎÁ«ë ^ ÎÅ«ë ^ ÎÈ«ë ^ ÎË«ë ^ Ñ1ªí æ Ñ5ªí æ Ñ8ªî ÖÑ;ªí æ ÑÑªí æ ÑÕªí æ ÑØªî ÖÑÛªí æ ÑI«î ÖÑM«î ÖÑP«î ÖÑS«î ÖÑÁ«í æ ÑÅ«í æ ÑÈ«î ÖÑË«í æ Ô5ªð 6 Ô8ªê ,Ô;ªð 6 ÔÑªê ° ÔÕªð 6 ÔØªê ,ÔÛªð 6 ÔI«ð è ÔM«ð è ÔP«ê ,ÔS«ð è ÔÁ«ê ° ÔÅ«ð 6 ÔÈ«ê ,ÔË«ð 6 ØÀNÜ ž !è¨Ñ :!ÈªÑ :!@«Ñ :!¸«Ñ :$è¨Ñ :$ÈªÑ :$@«Ñ :$¸«Ñ :&˜?Ü       +  –DÅ«Ô ÌFÅ«Ô ÌIÅ«Ô ÌLÅ«Ô Ì  X œ ‘Àr ¤¢À+r ¤Á€WÜ œÉ sÝ î, ‚ Ö2‘‚ Ö2Ñp‚ Ö3^s‚ Ö3®s‚ Ö*ÀvÞ Z<p^<^<@¥ ð \@Þ Øè¨í ºÈªí º@«í º¸«í º‡Àv ‡À¨ˆË:Ku 
 ËÀ¨¹ ÎÀ¨³ Ú ×À¨¿ tà dâ k;ªx kÛªx kS«x kË«x l;ªðlÛªðlS«ðlË«ðn;ª:nÛª:nS«:nË«:q;ª#ÈqÛª#ÈqS«#ÈqË«#Èu  ß R {ˆt  ïÀ+ï¶0	Øšß X\ß  ß ôùòyx lð-à ö €W 	 sp 2À+r ¤d6&I T dì&I T dÖ(I T tÑp‚ ÖÇÀ¨ˆ      !!Àr ¤q!ˆt Œq!òyt s!À¨¹ t!À¨» . !À¨¿ tž!À¨§  ¤!À¨Á ¶ þ!À¨ê Â""œwÿ  ""y´ Î""€Ç ""À¨» . 	# }±  	#n~u 
 	#8± „ #  V #Oqu #€u ¨#""‚ Ö#žw‚ Ö#z‚ Ö#ú‚ Ö¬#‘‚ Ö¸#N&‚ Ö¸#óy‚ Ö¸#v~‚ ÖÄ%ÄI T Ä%•I T Ä%ëI T Ä%r!I T Ä%#I T Ä%#I T Ä%ˆZI T Ä%kfI T Ä% qI T Ä%tI T Ä%™wI T Ä%xI T Ä%I T Ä%CI T Ä%¤’I T &À¨ˆ"&œw¢ „ <&kI T <&DI T <&%I T <&I T <&zI T <&®(I T <&w*I T <&ƒ:I T <&H;I T <&„SI T <&È`I T <&ãeI T <&ÞfI T <&ýfI T <&°pI T <&¶pI T <&KqI T <&%tI T <&iwI T <&lyI T       <&9€I T <&I T p&  X œ Œ&I T Œ&ðZI T Œ&]fI T Œ&tI T Œ&tI T Œ&CyI T o'`	à ø´'À¨¸ œç'À¨± „ ô'ÄI T ô'IRI T ô' qI T ô'Ä…I T ô'¤’I T Ì(À¨Ó H á)ìI T á)à~ š á)[MI T â)ƒI T â)PI T â)Ä&¬ ¦ â),I T â)nEI T â)sEI T â)ŽEI T â)_GI T â)ÌGI T â)2HI T ã)Ð4I T ã)§ZI T ä)p~ š ä)²'I T ä)TyI T ä)½‹I T å)Û%I T å)°'I T å)^I T å)PsI T æ)»I T æ)P¬ ¦ æ)é%I T æ)µWI T æ)ÐWI T æ)ø€I T æ)ZŠI T è)›8I T é) x~ š ì)`	~ š ì)p…I T í)I T í)I T í)wI T î)ÔpI T î)KqI T ï)ã‰I T ð)€%~ š ð)û5~ š ò)»I T ò)t	I T ò)ýI T ò)ìI T       ò)BxI T ò)ø€I T ó)ö!I T ó)¶dI T ó)VgI T ó)[}I T ô)p~ š ô)–œ~ š õ)à~ š õ)üXI T õ)ÔpI T ö)°I T ö)’I T t*ÊK ºt*·K ºt*ÎK ºt*GK ºt*I"K ºt*ä3K ºt*›NK ºt*µrK ºt*sK ºt*ŒsK ºt*ÊsK ºt*¶zK ºt*çK ºt*©„K ºt*b†K ºt*Ö‰K ºœ*4K ºœ*€K ºœ*ÄK ºœ*@,K ºœ*@wK ºœ*¶wK ºG,À¨ˆœ,òw ` œ,VNw à œ,ÊQw tœ,:dx 2 œ,Oqv 4œ,€x Ú Ë- –v Î,0‘ƒ‚ Ö,0œƒ‚ Ö,0Ïƒ‚ Ö,02„‚ Ö,05…‚ Ö,0q…‚ Ö,0……‚ Ö-0’‚ Ö-01‚ Ö00Ñp‚ Ö00‡q‚ Ö00s‚ Ö00s‚ Ö00s‚ Ö40‘8‚ Ö40È8‚ Ö40Ì8‚ Ö40á8‚ Ö40’9‚ Ö40Q:‚ Ö40W:‚ Ö      40;;‚ Ö40:<‚ Ö40w‚ Ö40Çw‚ Ö40Ûw‚ Ö40Üx‚ Ö40üx‚ Ö40Cy‚ Ö40Ny‚ Ö40Ry‚ Ö40žy‚ Ö40Ñy‚ Ö40îy‚ Ö40óy‚ Ö401z‚ Ö40<z‚ Ö 5  X œ j8Àvá ˜ v8 s ˜ ¢8À¨» §8À¨¼ Š Á8À¨zÁ8è¨í ºÁ8Èªí ºÁ8@«í ºÁ8¸«í ºÇ8À¨zá8È}À ¢ é8@Qá é8 Zâ , 9€ps ˜ $9ŸK º$9ÌK º$9ðK º$9#K º$9'K º$9.K º$9L	K º$9¬K º$9ÕK º$9ûK º$9)K º$92K º$96K º$9ÄK º$9bK º$9kK º$9½K º$9¦K º$9°K º$9K º$9|K º$9ˆK º$9‹K º$9¯K º$9K º$9&K º$9)K º$97K º$9K º$91K º$9BK º$9VK º$9XK º      $9ž!K º$9¬!K º$9®!K º$9#K º$9`&K º$9Å&K º$9 'K º$9n'K º$9è'K º$93K º$9ª5K º$9£8K º$9õ8K º$99K º$99K º$939K º$9E9K º$9,:K º$95:K º$96:K º$9ƒ:K º$9¨:K º$9Ò:K º$9I;K º$9i;K º$9p;K º$9s;K º$9‘;K º$9ƒKK º$9<MK º$9xQK º$9œSK º$9ÖWK º$9ÛWK º$92XK º$9yXK º$9‡XK º$9kYK º$9nYK º$9³YK º$9¼YK º$9¾YK º$9ÜYK º$9~ZK º$9ŒZK º$9ZK º$9[K º$9[K º$9¼^K º$9 `K º$9BaK º$9ÛdK º$9CfK º$9ÙfK º$93gK º$9«pK º$9¼pK º$9×pK º$9ãpK º$9qK º$9ZqK º$9½rK º$9sK º$9pwK º      $9óxK º$9CyK º$9kyK º$9•yK º$9ëyK º$9€}K º$9K º$9K º$9+…K º$9.…K º$9ƒ…K º$9Î…K º$9ZŠK º$9ëK º$9üK º$9CK º$9šK º$9«‘K º$9.’K º$9¶ÈK º99 –á ”B9À¨· G9À¨Æ Æ G9ø¬Æ Æ 2:À¨ó F7:À¨ñ ¼q:òyx l„:  â , ª:  s ˜ ª:À¨ê Â´:½K º´:ÊK º´:ÏK º´:óK º´:ÃK º´:ÖK º´:a	K º´:t	K º´:sK º´:ûK º´:K º´:AK º´:GK º´:6K º´:«K º´:®K º´:K º´:&K º´:RK º´:WK º´:“K º´:•K º´:šK º´:ÁK º´:ÅK º´:éK º´:ìK º´:òK º´:ùK º´:+K º´:K º´:ÔK º´:ÜK º´:{K º      ´:âK º´:K º´:)K º´:9K º´:q!K º´:ž!K º´:#"K º´:#K º´:8&K º´:n'K º´:±'K º´:£-K º´:©-K º´:ù-K º´:“.K º´:™.K º´:ž.K º´:ó.K º´:¸2K º´:{3K º´:4K º´:74K º´:y:K º´:|:K º´:i;K º´:4FK º´:©KK º´:ÌKK º´:ÑKK º´:½LK º´:\MK º´:nMK º´:ƒMK º´:NK º´:)NK º´:+NK º´:9NK º´:wQK º´:ËQK º´:áQK º´:éQK º´:ïQK º´:/SK º´:œSK º´:GTK º´:bYK º´:kYK º´:¶^K º´:ü_K º´:¬pK º´:´pK º´:¼pK º´:ÓpK º´:qK º´:qK º´:"qK º´:$qK º´:(qK º´:.qK º´:TqK º´:ÄqK º´:brK º´:vrK º´:œrK º      ´:±rK º´:³rK º´:µrK º´:¶rK º´:ÂrK º´:ÃrK º´:sK º´:sK º´:ŒsK º´:£sK º´:©sK º´:«sK º´:­sK º´:òsK º´:tK º´:-tK º´:[uK º´:÷vK º´:KwK º´:iwK º´:owK º´:‹wK º´:œwK º´:¯xK º´:×xK º´:ByK º´:FyK º´:WyK º´:ÇyK º´:áyK º´:ãyK º´:ðyK º´:¶zK º´:ÝK º´:éƒK º´:„K º´:„K º´:+…K º´:|…K º´:A†K º´:i†K º´:y†K º´:ôK º´:üK º´:$K º´:CK º´:dK º´:hK º´:¢‘K º´:£‘K º´:³‘K º´:´‘K º´:¶‘K º´:Û‘K º´:’K º´:B’K º´:2“K º´:˜K º´:1˜K ºÌ:›‚a Œ ;@jK º;ÀvK º;L…K º; –K º      ;–£ *";À¨¶ 2';À¨µ |@; (s ˜ A;ð-â Ì F;À¨¹ ~ T;ðK ºT;8K ºT;²K ºT;K ºT;¬!K ºT;;"K ºT;I"K ºT;ÛdK ºT;4fK ºT;$qK ºT;œwK ºT;DyK ºT;zK ºT;*}K ºT;K ºš;À¨§ ÞŸ;À¨­ $‹@À¨Ô 0‘@ÈªÔ 0‘@@«Ô 0KÀ¨ä Ö‡KÀ¨ä ÖÙKÀ¨Î  ðK  X œ LÀ¨Î  ,LÀ¨Î  åLÀ¨Î  ôLÀ¨Î  5MÀ¨Î  NÀ¨¹ ~ lOp…~ š xQ  r ¤zQÀDx ò€Q€»â P€QÀÁØ Î¶R€»â Ð¶RÀÁØ Î|Sì]y  œS  ã P œS)ªÏ T œS5ªÏ T œS8ªÏ T œS;ªÎ hœSÉªÐ * œSÕªÐ * œSØªÐ * œSÛªÏ ŽœSA«Ð * œSM«Ð * œSP«Ð * œSS«Ï ŽœS‘«Î Ä œS«Î Ä œS «Î Ä œS£«Î Ä œS¹«Ï œSÅ«Ð è œSÈ«Ð è       œSË«Ï ŽœSC¬Ï ŽœSq­Ï T œS}­Ï T œS€­Ï T œSƒ­Î ÞžS)ªÌ VžS5ªÍ J žS8ªÍ J žS;ªË ÜžSÉªÍ ZžSÕªÍ ZžSØªÍ ZžSÛªÌ \ žSA«Í ZžSM«Í ZžSP«Í ZžSS«Ì \ žS‘«Ë Ì žS«Ë Ì žS «Ë Ì žS£«Ë Ì žS¹«Ì Þ žSÅ«Ì ÊžSÈ«Ì ÊžSË«Ë fžSq­Í Î žS}­Í Î žS€­Í Î žSƒ­Ë Ü¡S)ªÓ Ä ¡S5ªÓ Ä ¡S8ªµ ’ ¡S;ªÓ Ä ¡SÉªÓ Ä ¡SÕªÓ Ä ¡SØªµ ’ ¡SÛªÓ Ä ¡SA«µ ’ ¡SM«µ ’ ¡SP«µ ’ ¡SS«µ ’ ¡S‘«Ô  ¡S«Ô  ¡S «Ô  ¡S£«Ô  ¡S¹«Ó Ä ¡SÅ«Ó Ä ¡SÈ«µ ’ ¡SË«Ó Ä ¡Sq­Ó Ä ¡S}­Ó Ä ¡S€­µ ’ ¡Sƒ­Ó Ä ¡S™­Ó Ä ¡S¥­Ó Ä ¡S¨­µ ’ ¡S«­Ó Ä ¤S)ªÐ l¤S5ªÐ l¤S8ªÐ l¤S;ªÓ Ä ¤SÉªÐ l¤SÕªÐ l      ¤SØªÐ l¤SÛªÐ l¤SA«Ð l¤SM«Ð l¤SP«Ð l¤SS«Ð l¤S‘«Ô ª ¤S«Ô ª ¤S «Ô ª ¤S£«Ô  ¤S¹«Ð l¤SÅ«Ð l¤SÈ«Ð l¤SË«Ó Ä ‹T;ª¶ ‹TÛª¶ ‹TS«¶ ‹TË«¶ ŒT;ªà ŒTÛªà ŒTS«à ŒTË«à ŽT;ªnŽTÛªnŽTS«nŽTË«n‘T;ª#‘TÛª#‘TS«#‘TË«#¡UQd‚ Ö«U-}‚ Ö«UÎ}‚ Ö«U‚ Ö«UV€‚ ÖìWÞI T ìWzI T ìWµWI T ìWwI T ìW€wI T ìWýxI T ìWðyI T ìWBzI T ìWø€I T ìWZŠI T ›Xè¨ì ¨ ›XÈªì ¨ ›X@«ì ¨ ›X¸«ì ¨ œXè¨ì LœXÈªì LœX@«ì LœX¸«ì LžXè¨ì LžXÈªì LžX@«ì LžX¸«ì L¡Xè¨î ~ ¡XÈªî ~ ¡X@«î ~ ¡X¸«î ~ ‘Y1ªÂ x‘Y5ªÃ Ø‘Y8ªÄ X      ‘YÑªÂ x‘YÕªÃ Ø‘YØªÄ X‘YI«Â x‘YM«Ã Ø‘YP«Ä X‘Y¡­Á ¼‘Y¥­Á ¼‘Y¨­É D ìY  s ˜ 	Z1ªÂ x	Z5ªÃ Ø	Z8ªÄ X	ZÑªÂ x	ZÕªÃ Ø	ZØªÄ X	ZI«Â x	ZM«Ã Ø	ZP«Ä X	Z¡­É D 	Z¥­É D 	Z¨­É D á[ÚKo n ä[´"I T ä[à8I T ä[;I T ä[½‹I T æ[à8I T æ[µWI T æ[ŒYI T æ[ø€I T æ[ZŠI T é[Ì`o n í[Kro n î[#I T ï[y‹o n ï[Œp Äò[ÿo n ó[°	~ š ó[<}I T ó[\}o n ó[¥o n õ[üXI T A^À¨zG^À¨zïe›‚a Œ ïf  X œ ðf  X œ ñf  X œ òf  X œ óf  X œ ôf  X œ õf  X œ øf  X œ ýfÀ¨± „ \gÊQ{ ü ªgÀ…{ ·k  v B ÄkZŠK º©ní]‚ Ö©nŽ^‚ Ö©n¾^‚ Ö©nµ_‚ Ö©nL`‚ Ö      ©nR`‚ Ö©nº`‚ Ö¬ppß£ Æ¶p  ã þ ¶pHã ŠqÀ¨ˆIqÎ| ¢ Iq~ èIq Kä Ü Kq¾ | zKq ^| zTqÀ¨Ó Ä Yq„} è [qM…~  \qÀ¨¨ \q`©§ ,\q°©¨ \q(ª¨ \q ª¨ srà} B Us€%} ~”st	‚ Ö”s¢‚ Ö”sÔ‚ Ö”s#‚ Ö”sìQ‚ Ö”s,X‚ Ö”s`X‚ Ö”sLq‚ Ö”s}…‚ Ö”s¤’‚ ÖÖs   vtÀ¨Å R [t{8‚ Ö[tœÆ‚ Ö[t¥Æ‚ Ö[t«Æ‚ Öät‘‚ Öæt <I T çtà8‚ Öçt L‚ ÖçtµW‚ Öçt:d‚ Öçtßf‚ ÖçtBx‚ Öçtóy‚ ÖñtÛw‚ ÖñtCy‚ ÖñtNy‚ ÖñtRy‚ Öñtîy‚ Öòt‘‚ Öótè!I T ótn†‚ Öõt›X‚ ÖõtZ‚ ÖõtZ‚ ÖõtZ‚ Öõt]Z‚ ÖõteZ‚ Öõt…Z‚ ÖõtZ‚ Öõt®Z‚ Ööt	I T       ötQ‚ Ööt.‚ ÖötQ–‚ Ööt.™‚ Öv;	Ä Î ìv5ªÊ ìv8ªÖ p ìvÕªÊ ìvØªÖ p ìvM«Ê æìvP«Ê æìvÅ«Ê ìvÈ«Ö p îv5ªÉ œîv8ªÖ >îvÕªÉ œîvØªÖ >îvM«Ê X îvP«Ê X îvÅ«É œîvÈ«Ö >ñv5ª¸ ê ñv8ªº ¬ ñvÕª¸ ê ñvØªº ¬ ñvM«Á   ñvP«Á   ñvÅ«¸ ê ñvÈ«º ¬ ôv5ªÕ l ôv8ªÕ ôvÕªÕ l ôvØªÕ ôvM«Õ ÈôvP«Õ ÈôvÅ«Õ l ôvÈ«Õ þv³qñ  þvëuñ ‹w3X¦ J –w ~ Dœw0 u 
 ¤wöK º¤w 'K º¤wÆ8K º¤w’MK º¤wðXK º¤w{ZK º¤w:dK º¤wDyK º¤wLyK º¤wÚ}K º¤wÎ…K º¤w´‰K ºÌwÎK ºÌwë+K ºÌwË-K ºÌw».K ºÌw&qK ºÌwëvK ºÌwËxK ºÌw»yK ºÌwóyK ºÌwôyK º      /x€Wä R6x  –÷x KØ T zy }À •y€% ¼ Ïy€}~ èáy sz ž ëy`©© Ôëy°©Ò ªëy(ªÒ ªëy ªÒ ªðyÀ¨± „ z;ª¸ zÛª¸ zS«¸ zË«¸ z;ª
& zÛª
& zS«
& zË«
& z)ªÊz5ª"z8ª z;ª!P zÉªÊzÕª"zØª zÛª!P zA«ÊzM«"zP« zS«!P z¹«ÊzÅ«"zÈ« zË«!P z)ªï bz5ªï bz8ªï œ z;ªï bzÉªï bzÕªï bzØªï œ zÛªï bzA«ï œ zM«ï œ zP«ï œ zS«ï œ z¹«ï bzÅ«ï bzÈ«ï œ zË«ï bz4f€ 2 4z5ªÊ 4z8ªÖ p 4zÕªÊ 4zØªÖ p 4zM«Ê æ4zP«Ê æ4zÅ«Ê 4zÈ«Ö p 6z5ªÉ œ6z8ªÖ >6zÕªÉ œ      6zØªÖ >6zM«Ê X 6zP«Ê X 6zÅ«É œ6zÈ«Ö >9z5ª¸ ê 9z8ªº ¬ 9zÕª¸ ê 9zØªº ¬ 9zM«Á   9zP«Á   9zÅ«¸ ê 9zÈ«º ¬ <z5ªÕ l <z8ªÕ <zÕªÕ l <zØªÕ <zM«Õ È<zP«Õ È<zÅ«Õ l <zÈ«Õ Az5ªÒ  Az8ªÒ Ž AzÕªÒ  AzØªÒ Ž AzM«Ò AzP«Ò AzÅ«Ò  AzÈ«Ò Ž jz  X œ "{Ä&I T ${‘‚ Ö${‚ Ö${n	‚ Ö%{Î}‚ Ö%{!™K º%{"™K º&{t	I T &{PI T &{ó8I T &{µWI T &{ÐWI T &{çWI T &{¹ZI T &{-d‚ Ö&{°yI T &{ø€I T .{V&I T 0{­p‚ Ö2{-‚ Ö2{‘‚ Ö2{ ‚ Ö2{n"‚ Ö2{­p‚ Ö6{!‚ Ö6{,‚ Ö6{!€‚ Ö6{,€‚ Ö>{  K º?{0ÀK º?{pÆK º?{ÎÌK º?{ÓK º?{pßK º      ?{NòK º@{0ÀK º@{NÀK º@{NÙK ºA{0ÀK ºA{ÎåK ºB{NòK ºC{€»K ºD{0ÀK ºE{ÎÌK ºE{ÀÚK ºG{ÎåK º+}À¨ª b,}À¨« \ .}À¨« \ 1}À¨« \ 4}À¨« \ 6} 2Ö ú8}À¨« \ 9}À¨« \ ”}ÊK º”}4K º”}kK º”}ˆK º”}>K º”}™K º”}õK º”}Á!K º”}I"K º”}](K º”}ö2K º”}ü2K º”}T3K º”}ä3K º”}O:K º”}D;K º”}ˆKK º”}MK º”}vNK º”}€QK º”}KXK º”}:YK º”}`YK º”}ZK º”}ŒZK º”}:dK º”}ÙfK º”}¼pK º”}ˆsK º”}HwK º”}JwK º”}¶wK º”}¶xK º”}×xK º”}ØxK º”}ÚxK º”}âyK º”}8}K º”}0€K º”}ÖƒK º”}×ƒK º”}ØƒK º”}ÙƒK º”}ÚƒK º      ”}ÛƒK º”}ÜƒK º”}ÝƒK º”}ÞƒK º”}ßƒK º”}|ŠK º”},‘K º”}™K º~L	K º~öK º~GK º~I"K º~´pK º~³rK º~µrK º~ŒsK º~¶zK º~K º~ôK º~$K º~Û‘K º~^˜K ºR~8ñ  u~@¥ ð û(ªì  ûÈªì  û@«ì  û¸«ì  ü(ª· ª üÈª· ª ü@«· ª ü¸«· ª þ(ª· ª þÈª· ª þ@«· ª þ¸«· ª €(ª· ª €Èª· ª €@«· ª €¸«· ª €(ªÑ ¢ €ÈªÑ ¢ €@«Ñ ¢ €¸«Ñ ¢ s€À¨ª l t€À¨© j v€À¨© j y€À¨© j |€À¨© j €€À¨© j €À¨© j ƒ€À¨ñ ¼Ã€À¨ü :Ä€À¨û 6 Æ€À¨ü :É€À¨ý ø Ì€À¨û ¾Ð€À¨þ p Ñ€À¨þ p a	|K ºa|K ºk	|K ºlŒK ºlÎÇK º      l ÓK ºlÓK ºs®K ºuVYK ºu®yK ºu¯yK ºu°yK ºu±yK ºu²yK ºvÓK ºv–‚K ºv˜‚K ºv›‚K ºv¿‚K º}…Àr ¤=†`q¬  ­‡‘‚ ÖœŠ5ª-
œŠ8ª-
œŠÕª-
œŠØª-
œŠÅ«-
œŠÈ«-
žŠ5ª+žŠ8ª+žŠÕª+žŠØª+žŠÅ«+žŠÈ«+¡Š5ª,¡Š8ª,¡ŠÕª,¡ŠØª,¡ŠÅ«,¡ŠÈ«,¤Š5ª/X¤Š8ª/X¤ŠÕª/X¤ŠØª/X¤ŠÅ«/X¤ŠÈ«/X©Š5ª.^©Š8ª.^©ŠÕª.^©ŠØª.^©ŠÅ«.^©ŠÈ«.^|Œ5ª-
|Œ8ª-
|ŒÕª-
|ŒØª-
|ŒM«-
|ŒP«-
|ŒÅ«-
|ŒÈ«-
~Œ5ª+~Œ8ª+~ŒÕª+~ŒØª+~ŒM«+~ŒP«+~ŒÅ«+~ŒÈ«+Œ5ª,      Œ8ª,ŒÕª,ŒØª,ŒM«,ŒP«,ŒÅ«,ŒÈ«,„Œ5ª/X„Œ8ª/X„ŒÕª/X„ŒØª/X„ŒM«/X„ŒP«/X„ŒÅ«/X„ŒÈ«/X‰Œ5ª.^‰Œ8ª.^‰ŒÕª.^‰ŒØª.^‰ŒM«.^‰ŒP«.^‰ŒÅ«.^‰ŒÈ«.^ Œ  X œ ¼›¡ Ê8T¡ NŽhçºñ }{   ñ~u 
 ¼`€ ° ÃHX€ šÔ’§‚ ÖÔ’Ô‚ ÖÔ’7!‚ ÖÔ’#‚ ÖÔ’xQ‚ ÖÔ’q‚ ÖÔ’Lq‚ ÖÔ’Vs‚ ÖÔ’}…‚ ÖÔ’¤’‚ ÖÔ’Ræ‚ Öñ’˜:v B .”Ò‚ Ö.”»‚ Ö.”à8‚ Ö.”ÖK‚ Ö.” L‚ Ö.”¶^‚ Ö.”ìq‚ Ö.”Bx‚ Ö.”’y‚ Ö.”óy‚ Ö4”Žw‚ Ö–À¨æ À ¤–À¨ç Â ¦–À¨ç Â ©–À¨Ð ô–À¨ç Â ö–À¨è œ ù–À¨"Ò q—À¨~ j˜À¨ê Âì¨À¸       ì¨ 
& ì¨x¸ ì¨ 
& ì¨ð!P ì¨€p!P ô¨d ôô¨ d ôô¨""d bü¨ }Ç Êý¨Xd ô©»W$v ©ÀvÅ \9©x‚f   9©z‚f (:©<g P :©g P :©ÿg P :©Ï_g P :©¿`g P :©(}g P :©g P :©ZŠg P <©h x <©P}e .D©½`Ç B E© è èE© dè èE©ðdë ^ E©€pë ^ G©P}e .K©ú Ú K©ú Ú N©S}å Ö N©T}å Ö N©V}å Ö N©z}8N©|}å ÆN©~}å ÆN©}8N©¢}8N©£}å ÆN©¦}#j N©©}8N©ò}8N©ó}È N©ô}È N©ù}8N©k~ŠN©l~ŠN©n~ŠN©K€h p[©(}g ´a© }h ìd©°;W âe©À¹ e©€%³ Ú e©À]¿ te© }Ç Êi©  8i© Z i©€‰S <i©ø‰x i© Šði©pŠ:      m© …W âr©  #j s©<d ús©Àp Äv©Àx v© ðv©@8#Èv©€p:‹©@8zŒ©?Ti Z–©À¹ –© » . –©À]¿ t—©€%§  —© KÁ ¶ š©€p» . š©¨p¤ 8š©©p$v š©Ðp¤ 8š©êrÓ H š©¢s$v š©¥s$v š©,tÇ Êš©‘t$v š©Ô€'6š©|—$v  ©`;± „  ©{;$v  ©àyX ^³©,à ~³©<4² ¾¹©àL$v ¹©À]¼ ´¼©wö h ¼©xö h ¼©Î³ â¾©Œ¢ º¾© ¸ œÝ©ù}Ã n Ý©Õº ^*ª€p» *ªÀ¼ Š +ª  Š,ª  Š.ª€p· .ªÀÆ Æ 4ª€pó F4ªÀñ ¼6ªi;Â ž 6ªÐD 7ª	#Á ¶ :ª  Š:ª€p¶ 2:ªÀµ |=ª€p§ Þ=ªÀ­ $®ªi Z¯ªàk êÉªJrm ¦ ÉªKrl 2ÔªÀ¶ Ôª à Ôª@8#Ôª€pn      Ýª KS <ÝªxK¶ Ýª Kà ÝªðKnñª¸Q¬ ¦ «}?® ð («p!³ â+«÷ +«÷ ,«@8º,«8;é Â,«0zp Ä,«1z¬ ¦ .«D,] ÖO«ñfð xO«òfð xO«ófð xS«@± „ S«8"± „ U«ÕÀ `W«hÐ W«¨9~ W«èq"Ò ‘«€Wä  “«  È ”«  È ™«  8œ«o ü «¯† ²«&‡ b «•† Ž «Ô‰ „ «{‡ «Š ¾«"Š  «#Š «ö&ˆ $«u'  «U(  «œ,‡ Ä«v:‹ € «T[  «E`… 4«\gˆ t «Iq‰ 4«Tq  «!tŒ 8«6x‹ € «Ay  «åŒ ä«Ä…ˆ Ô«ñŒ & «™’‰ 4¡«o ü ¦«D,] Ö§« Å R ³«€»Ã ³«¿¤ ` ¹«´‰p F ¹«ø‰È ,¹«WŒp Ì ¹«p L¹«@È ,¹«0ŽÈ ,      ¹«XŽÈ ,¹«€ŽÈ ,¹«¨ŽÈ ,¹«ÐŽÈ ,¹«øŽÈ ,º«À¸ º« 
& º«€p!P ½«¸j¬ ¦ Ë« }¬ ¦ Ë«°$v Ë«Ø$v Ë« ‚$v Ë«(‚$v Ë«P‚$v Ë«x‚$v Ë« ‚$v Ë«È‚$v Ì« d± „ Ì«øf± „ Í«ø¸ Í« 
& Í«p!P Î«Ó~$v á«Àª bá« « \ á«€%« \ á«@8« \ á« K« \ á« d« \ á«@j« \ é«@Qh ìó«@G0Fö«Àª l ö« © j ö«€%© j ö«@8© j ö« K© j ö« d© j ö«@j© j ö«Àvñ ¼ø«Àü :ø« û 6 ø«€%ü :ø«@8ý ø ø« Kû ¾ø« dþ p ø«@jþ p 5¬ ™p Ä5¬!™q 6 7¬d"-
7¬f"+7¬i",7¬l"/X7¬q".^9¬öq1Z B¬„:0FC¬\-
C¬^+C¬a,C¬d/XC¬i.^ƒ¬@8æ À „¬ ç Â       „¬€%ç Â „¬@8Ð †¬ ç Â †¬€%è œ †¬@8"Ò ‰¬@8~ ù¬=ö h ù¬Çyö h ú¬ËLö h ú¬6„ö h û¬"	ö h ü¬H;ö h ý¬Psö h ý¬%™ö h þ¬˜:¼ ´þ¬`ö h ­P(· ­)Æ Æ ­üXö h ­
ö h ­Mö h ­È`ö h ­„dö h ­h~º­{~é Â
­lö h 
­Ëö h ­:2ö h ­Åžö h ­üXö h ­;0F­{ö h ­""ö h ;¯PF@;¯VN1<„¯½`2È ‹¯=S ì‹¯@=U èŒ¯`r0 t£¯D\ Œ¤¯ŒÈ] ¸ ¥¯ÜK1 î ¬¯²'3 ˆ Ö¯Ú}D ôà¯44 f ñ¯4}0 ô ù¯ XD ôù¯üX5 0 °úp4 `°sp Ä°\qy Ö°Pwy Ö°ôxy Ö°zy Ö°ƒ…y Ö°?SX Ð°@SX Ð°ASX Ð° }GZ °	€Iú ,°l5 ú,°z6 ª 4°u~z X	±8r< ~       
±&4 `±VN¬ ¦ ±lE7 † 1±ÚKn (9±Ì`n (<±ƒ…¬ ¦ =±Krn (?±y‹n (?±Œn (B±ÿn (C±\}n (C±¥n (\±D\ Œ\±ŒÈ] ¸ h±p!Kp h±ì&Nâh±²'R ±}s9 Êƒ±:2_ º †±/K_ º Ž±J…_ º Ž±P…_ º ±„:< ~ ±<x< `±“y= ±;	> 4 ±v> &’±„:^ ø ’±iw8 ,’±vw9 Ž ’±¾w: Ú “±†}_ º “±”_ º •± }Uˆ•±	€XlÔ±2&[>Ô±€&[>Ô±Ñ([>Õ±à@ ¼ Õ±®SD ôÕ±µW@ œÖ±fa[>ù±oŒC ü0²#	_ º 2²XD „ y²€p0F‚²D\ Œ™²`;F F œ²2&[>œ²€&[>œ²Ñ([>ž²fa[>ª²e;G  ´²§*  Ñ²˜:H œÜ²"" ’ Ü²# DÜ²# DÜ²ó` ÐÜ²)d‚ j Ü²@w‚ .a³—K/ Ta³[M/ Ta³VN1<      a³ˆZ1´ b³Ó. âb³—G/ Ø c³Iq3À c³Ü0 td³?!1 4 d³à82 ” d³æ81 ìd³ÿ82 ” d³;2 ˆe³&3 re³&3 re³²Z44 e³$™/ Te³?™/ Tf³Ð0 ô f³t:44 f³y:5 0 g³©}Hæi³‚H š m³lE6 Zm³oŒ6 ôp³#	9 Êp³h7 Tp³l8 Ž p³J,; &p³K,; Òp³¿Z@Ôp³iw8 ,p³vw9 Ž p³¾w: Ú p³<x< `p³“y= p³—y= p³¯y= q³¯:E r³kB 8 r³Þ> Ìr³"&A \r³®S44 r³,}Fl r³ë? € r³ü? € r³C? –r³§‘C Z s³2 3 rs³³.. ì s³k; Òs³þ}9 Êw³E w³¼E w³tF ò w³L	F pw³kB 8 w³Ô? –w³™€\Ô w³œ€\Ô w³·€\Ô x³·kH š x³ÇkH š ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      %Psd b3àq ^4Ùfr j ƒ,d1´ 	@~S <;	ŽfF@;	v. ì K	VN1<r	À+r ¤œ	À]d ô"Kq. âïÎ/ † JÀ+/ Ø ü€e .üÀÚf   üÛf ($@g P dXRh x y[M/ T¯ˆw2È ¯íyú Ú %¦S0 ô &Ü0 t•e	3À D¸ƒh pL@g ´:h;W âÎ  X œ Ô  1 4 Ôe"1 î l´'1 ìn X2 ” zÌ44 z´'2 ˆzµz‚ ÖæÐW3 ˆ `	 úä`	h ìôXRi Zž!3 r# }X ^#t!4 f #Oqu #€u ¨&Š(4 `&,I T ö&`;5 0 œ,  GZ œ,hHæœ,l5 úœ,z6 ª œ,Oqv 4œ,hyIú Ë- –v ÎYM k êüR K6 Z®SKq6 ôTà7 † €^à] ¸ E`€WKp F`à8NâF`ÐWR N`¯ö h N`íy÷       3aà~l 23aÐm ¦ 4a`	n (7a ] ÖBa8"o n :dh7 T:dl8 Ž :diw8 ,:dvw9 Ž :dˆw9 Ê:d¾w: Ú e€p; &eÀv; Òïe›‚a Œ DfT< ~ af Z@Ôkf`;< `kfKq= Žf;	> 4 Žfv> &\g  Uˆ\gÊQ{ ü \ghyXl·kµzK º2q€W> Ì7q¼? € 7qüq? –Iq @ ¼ VqM@ œ\qòFl srà} B 4so ü Us€%} ~Œs"&A \t¸LB 8 t°y[>$t÷_C Z 3ukM† ²3uþ_‡ b 3uIq† Ž 4u%!‰ „ 4u;;‡ 4uH;Š ¾5u»pŠ  5u%™Š 6u"  6ut:ˆ $7u`"‡ Ä9uüX‹ € ?uÖd… 4@u`†ˆ t Buá"Œ 8Bu‰ 4DuÖsŒ äEu¡dˆ ÔGu¼Œ & þv p F þv˜qp Ì þvXuC üþvPŒp L•y€% ¼ Þ³D „ éƒKqD ôŠðp Ä      `Š }¡ `Š(}q 6 ñh~E ñH€F F üÜYF ò üœwF p™’È}G  ÷’¼\Ô ±˜(_H š ±˜aH œê¨ÀvØ Ü ì¨(Êì¨"ì¨€ ñ¨€%É $ñ¨oQØ Vñ¨ ZD ô¨Ø^~ õ¨
Ø Îõ¨Ž:Ù õ¨`^Ù Þû¨U(Ò ªû¨/x² ¬ ü¨pÿ 8©‹Å \©©}ê Â"©8	Á ¼9©xÚ Ô 9© ¸ 9©àL³ H <©°;x =©€˜Û R D©Ø^Û žD©½`Ç B D©Àv° dE© dè èE©ðdë ^ E©øeÜ ž E© …¶ F©X ì ¨ G©YÜ G©öZˆG©ùZzG©üZä ÖG©[È G©[8G©[ŠG©[#j G©[å Ö G©[å ÆG©ègÔ ÌK©p:Ü œK©$mÝ îa©xÞ Za© 
& a©6}^a©u~¥ ð b©ÈKÞ Ød©°;ðe©ö&³ Ú e©€˜â i©@Qß R i© Z l©Ø^      m©:ß m©`^ß ôm©BaÎ Ä m©OaÎ hm©PaÎ Þm©QaÏ T m©RaÏ m©SaÏ Žm©TaÐ * m©UaÐ è m© …à p©KŠÊ æs©f9à ö s©p: s©$mp v©¸Ê v©ÈÖ p –©¹ –©Ú» . —©€%§  —© KÁ ¶ š©¨S¤ 8š©·kÇ Êš©s$v š©}sÿ  š©†s´ Îš©³sÇ š©Ô€'6 ©`;±   © dV ±© !P ³©,à ~³©<4² ¾´©}¢ „ ´©°;:¹© X¸ œ¹©À]¼ ´¼©ü]à ø½©BaË Ì ½©OaË f½©PaË Ü½©QaÌ \ ½©RaÌ Þ ½©SaÌ V½©TaÌ Ê½©UaÍ J ½©VaÍ Î ½©WaÍ Z½©3…n¾©Œ¢ º¾©X ì LÀ©KŠÊ X Å© Ó H Æ©¸É œÆ©ÈÖ >Ý©ù}Ã n Ý©Õº ^ç©XÔ 0)ªxá ˜ )ª³í  *ª€p» *ªÀ¼ Š +ªÓSí æ ,ªe	À ¢       ,ªH:á ,ªÃ;#È.ª <á ”.ª€p· .ªÀÆ Æ 5ªBaÔ  5ªCaÓ Ä 5ª …#6ªí º6ªX î ~ 6ªi;Â ž 6ª }â , 8ªäî 8ªØî Ö8ª®Sµ ’ 8ª
zï œ 8ªKŠÁ   :ª£ *:ª€p¶ 2:ªÀµ |;ªf9â Ì ;ªsY¹ ~ ;ª£ƒï b=ª€p§ Þ=ªÀ­ $>ª¸¸ ê >ªÈº ¬ £ªÉSê ° £ªÐSê ,£ªÓSð 6 ©ªéyó F©ªïyñ ¼­ªBaÔ ª ­ªCaÐ l®ªó`Ñ :¯ªóÎ  °ªØð è °ªKŠÕ È´ªL"Ñ ¢ ¶ª¸Õ l ¶ªÈÕ Éª°šâ PÑª0\â Ð×ª ã P «y:1Z «ØÂ x« ‚Ã Ø«(‚Ä X«P‚É D «V?¿ t«}?® ð («p!³ â,«@8º,«€‰¬ ¦ O«Ðfð xR«„:^ ø U«ÕÀ `x«KŠÒ ~«¸Ò  ~«ÈÒ Ž ‘«–£ Æ‘«€Wã þ ‘«/Xä  ‘«5Xã Š      •« ä Ü •« }§ ,•«³}© Ô•«ø¨ •«6‘Å R ³«€»Ã ³«»»Ä Î ³«¿¤ ` ¹«UŒñ  ¹«WŒÈ ,¹«âŽñ ½«ô¦ J À«¤`¡ xÁ«ð-ä RÁ«€W–Æ« -Ø T É« sÀ Ì«f± „ Í«Pé Âá«ÀXÖ úã«ÌSª bå«ãyì  å«óy· ª ò«)	« \ ö«;û 6 ö«;ü :ö«;ý ø ö«;û ¾ö«!;þ p ¬"¬  3¬Ñª l 9¬üX0F9¬0q-
9¬€q+9¬øq,9¬pr/X9¬8s.^D¬¶p© j ƒ¬@8æ À „¬ ç Â „¬@8Ð †¬€%è œ †¬@8"Ò ‰¬@8~ *¯¤`q à ;¯VNr y¯Xs ~†¯Ts ü‹¯=S ì‹¯@=U è³¯ˆt  Ö¯L	t Ö¯ˆt ŒÞ¯g'u 
 °Pwy Ö° SX Ð,°òw ` ,°H:z X,°VNw à ,°ÄQw t,°:dx 2 ,°€x Ú v°L	x l±u~x ò      ±\My  \±D\ Œ“±äz ž —±¼{   —±Øs{ Õ±æ| ¢ Õ±ž| zÕ±z~  á±#} è ä±Èx~ š ý± X~ D²Ïy~ è
²z v²4f€ 2 0²#	_ º ž²jM€ ° ž²õx€ š´²§*  Ü²"" ’ Ü² # DÜ²ó` ÐÜ²)d‚ j Ü²@w‚ .b³s;s ˜ q³˜:v B ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ          ì M   vÀ›Ö*  ;	Žf    vÀ›Ö   ¯”L  \±D@  ù±oŒ@  "      (  
­D"(P ;¯Ph  ¯”   
   
­D"  *    w	  ‚ Á
Ò¥[ Ä, ÷	 ‡æÄ] ÷	  ù±oŒ*  &  …
‡Ás‘ ‡ …¡Á
ü± ‡ Á
„DáÄ
  L w     \±D       ö M   vÀ›Ö*  ;	v    vÀ›Ö   ¯”L      (  
­D"(x   s³³.h  ¯”   
   
­D"  *    &ÀÀeH æ …”÷	@ ‡Ð÷	 ÷	 LaÎ
*  & Àå ÔÎ Ã
ë–
€‡ ÅÅÅfÅÅ…e‡ *  L ÿÿ   W!Z ‚W!A †W!9 ‚W!0 ‡ÅåÒÿÅå@ 
  r ‡ ± ‡        ¤ M   vÀ›½*  "Kq          vÀ›½   ¯”L      (  
­D"(2   b³Óh  ¯”   
   
­D"  *    14  16  12  Áe p ðµ  l2   & l0 p ‡        R M   vÀ›½*  ïÎ    vÀ›½   ¯”L      (  
­D"(  
  ¯”          | M   vÀ›½*  JÀ+    vÀ›½   ¯”L      (  
­D"(   b³—Gh  ¯”   
   
­D"      8 Áe 2 
‡         M   vÀ›Ö*  y[M    vÀ›Ö   ¯”L  ù±oŒ@  i³‚@  *  q³¯:@      (  
­D"(Ä a³—Kh( a³[Mh    e³$™h@ e³?™hl ¯”   
   
­D"  *    0,  0,
  ƒ      f¦ 
 ÷	  ‚í†*  & ‡ p  °  ƒ÷	 ÷†‡ ¡ ‡ w	    Á   ù±oŒ*  L  

ì ì +Â% 
÷	    &i³‚*  r ÕeB 
Á ÁÁU €Á5 ÁU UÁ‹åÕ*  ˜  Ä ÷	  
‡pl  p &
Nœ °e ‡ ð•×ÿ  q³¯:
  ¾ * ± ‡        € M   vÀÛÃ*  %¦S    vÀÛÃ   ¯”L      (  
­D"(   ñ¯4}h
 f³Ðh  ¯”   
   
­D"      ð‹* ± ‡         À M   ŽÆ8T*  &Ü    ŽÆ8T   ¯”L  ù±oŒ@  i³‚@  *  q³¯:@      (  
­D"( Œ¯`rh  c³Üh 
  ¯”   
   
­D"            w	  ÷	  
ÕUÄ ÷	  ‡   ù±oŒ
i³‚q³¯:       º M   vÀ›½*  Ô      vÀ›½   ¯”L  e³²Z@  m³lE@  *  r³®S@      (  
­D"(  d³?!h  ¯”   
   
­D"  $    ÷	  ‡f÷	  †&œ* ÷	  °•* ± ‡   r³®Sm³lEe³²Z       þ M   vÀÛÃ*  Ôe"    vÀÛÃ   ¯”L  „¯½`@  ù±oŒ@  *  d³?!@  f³Ð@  s³þ}@      (  
­D"(:   ¥¯ÜKh  ¯”   
   
­D"  *    w	  ð * ð8 B ÷	  ‡pB ÷	  ‡ðµ  ù±oŒ„¯½`$s³þ}  &   ÷	  0
B ÷	  ‡   d³?!f³Ð       ¨ M   vÀ[é*        l´'    vÀ[é   ¯”L  ±v@  d³à8@  "      (  
­D"( d³æ8h  ¯”   
   
­D"       æ¦f‚ ± Áe ÷	  w     ±vd³à8       ô M   vÀ[é*  n X    vÀ[é   ¯”L  f³t:@      (  "  
­D"(b d³à8h d³ÿ8h  ¯”   
   
­D"  *    æ¦1

 ñ  ñz ñ  ñ  ÷	  ‡  &f³t:*  & q   q  q  1
  1
 1
 1
 1
   L 1

 1
 1
 1
 ‚ƒ‡         M   vÀÛÜ*  z´'    vÀÛÜ   ¯”L  ;¯P@  ±;	@  *  d³à8@  s³³.@      (  
­D"(J d³;h  
  ¯”         
   
­D"  *    æ¦CÃe ÷	  ‡Ä BÂe
 Ã¦÷	  ‚Ã  ;¯P$±;	(  &  DÄe 
4
 ÷	  ‡w   ð•Ìÿ* ‚ƒ‡   s³³.d³à8       ê M   NÀÛÃ*  æÐW    NÀÛÃ   ¯”L  „¯½`@  ù±oŒ@  *  a³VN@  d³?!@      (  
­D"(4 ¬¯²'h  
  ¯”   
   
­D"  *    w	  ð * ÁeB ð8 ÷	  ‡÷	  ‡ðµ   ù±oŒa³VN"„¯½`  &  ÷	  É  ‡   
d³?!       ô M   vÀ›½*  ž!    vÀ›½   ¯”L      (  
­D"(l "  e³&h  e³&h s³2 h. ¯”   
   
­D"  *    ÷	* ‡ðµ ) 	 l0       ì , ¡ ‡ ð•*  & öÿ* ± ‡ ðÅ ) ÷	$ ‡‚ð ðÕ ) ¡ ‡ $  L ð•öÿ* ðÕ ) ± ‡ 0,4  0,6 
 ‡        ú M   vÀÛÃ*  #t!    vÀÛÃ   ¯”L  ù±oŒ@  e³?™@  *  f³t:@  s³þ}@      (  
­D"(D à¯4h  
  ¯”   
   
­D"  *    w	  ð * f¦÷	  f‡÷	  ‡ðµ  
  ù±oŒs³þ}f³t:"  & ðµ    ‚ ÷	  °B ‚‡   e³?™       Ð M   ÆÀ[Ð*  &Š(    ÆÀ[Ð   ¯”L  °s@      (  *  
­D"(  þ¬¯yì  þ¬°yèD °úph  
±&h@ 
  ¯”   
   þ¬°y      ÿÿ  þ¬¯y  ÿÿ       (   ( ÿÿ   
   
 ÿÿ   @   @         Þ M   vÀÊ*  ö&`;    vÀÊ   ¯”L  °s@  ù±oŒ@  *      (  
­D"(D ù¯üXh  f³y:h ¯”   
   
­D"  *    w	  Á  B ‰

C ƒàƒ
ò ñ€€B BÂe  ù±oŒ
°s"  &  ¦æ?ÿˆ‡± B ñÿÿ( 1
< ‡       ì M   vÀ[Ð*  œ,h    vÀ[Ð   ¯”L  a³VN@      (    
­D"(b g³©}h  ¯”   
   
­D"  *    ð * ¦÷	  ‚'‡ðµ  ðµ  f f  a³VN*  &  f
 f f þ	
 ± ± ±
 ± ±   L ñÿÿ ñÿÿ 1
 –
‡              ° M   vÀÛÃ*  œ,l    vÀÛÃ   ¯”L  ù±oŒ@  g³©}@  *  p³l@      (  
­D"( ,°lh  ¯”   
   
­D"      w	  æÎe  w     ù±oŒp³l 
g³©}­       ° M   vÀÛÃ*  œ,z    vÀÛÃ   ¯”L  ù±oŒ@  d³;@  *  g³©}@      (  
­D"( ,°zh  ¯”   
   
­D"      w	  æÎe  w     ù±oŒd³; 
g³©}       š M   vÀ›½*  üR K    vÀ›½   ¯”L  i³‚@  q³¯:@  "      (  
­D"( m³lEh  ¯”   
   
­D"      ÷	  MÄ w     i³‚q³¯:       ’ M         vÀÛÃ*  ®SKq    vÀÛÃ   ¯”L      (  
­D"(&   m³oŒh  ¯”   
   
­D"  *    ƒ	
D„PÄ5 RÃ
ý†R”‡ R”R”Ã
üø       Î M   vÀÛÃ*  Tà    vÀÛÃ   ¯”L  ù±oŒ@  a³VN@  *  m³lE@      (  
­D"(* ±lEh  ¯”   
   
­D"  *    w	  ð * ÁeB ð8 ÷	  ‡ðµ  ÷	  ù±oŒa³VN  &   ‡   m³lE       :M   vÀ[Ð*  :dh    vÀ[Ð   ¯”L  °s@  ±;	@  "      (  
­D"(˜ p³hh  ¯”   
   
­D"  *    Ä  Äe( Ì	ñ  ñ  1
 :¦æ&  °s*        & Âe ´  
÷	  „Œí ƒ‚1-    ±;	*  L 1-  
1  1  1  ¦þ	 *  r ‡r  r  r  r  r  ‚–
‡        ž M   vÀÊ*  :dl    vÀÊ   ¯”L  d³æ8@  p³h@  "      (  
­D"(
 p³lh  ¯”   
   
­D"      æÎe  w     d³æ8 
p³h        bM   vÀÛÜ*  :diw    vÀÛÜ   ¯”L  ù±oŒ@  d³;@  *  p³h@      (  
­D"(” ’±iwh  p³iwh
 
  ¯”   
   
­D"  *    w	  ð * ðµ  w l ðµ  úðµ # ö  ù±oŒ*  & Âò 
ñU@  ¦      Âe ÷	  ‚‡ ÃÄ   d³;*  L Ä% ñ,  ñ,  
ñ  ñ  ñ&  r   ‡ æÎe  w   ñ  ñ  1
 ‡   d³;z 
p³h        <M   vÀ[Ð*  :dvw    vÀ[Ð   ¯”L  \±D@  ù±oŒ@  *  a³VN@      (  
­D"(€ ’±vwh  p³vwh
 
  ¯”   
   
­D"  *    w	  ð * DÅ 
Å
ýæ¦!… ‚    ù±oŒ*  & ñU€  q• q• Âå C
Ó¥: „
Â
ú*  L ÄCÃe ÷	  ‡Ãñ  ñ  ÷	    \±D(a³VN  r ð•Éÿ* ‚ƒ‡        M   vÀ[Ð*  :dˆw    vÀ[Ð   ¯”L  ù±oŒ@        a³VN@  *  p³iw@  p³vw@  p³¾w@      (  
­D"(< "  ±}sh  p³#	h* s³þ}h  ¯”   
   
­D"  *    ÁeB Éð8 ÷	  ‡ $ & w	  ð  a³VN&ù±oŒ  &  * ÷	  ‡÷	  ‡÷	  ‡   
p³vwp³iwp³¾w       LM   vÀ›Ö*  :d¾w    vÀ›Ö   ¯”L  \±D@  ù±oŒ@  *  s³³.@      (  
­D"(h’±¾wh  p³¾wh
 
  ¯”   
   
­D"  *    w	  ð * æÂƒ
 ‚ æ¦yÄ”Ä%. &  ù±oŒ*  & Ä%; @Â
÷ƒ
ñ5À %ñ5@ <… ÄDáÄ
*  L Í¥* CÃe ÷	  ‡XÄ% w ð ñU  O  \±D*  r ñ5       @ ƒ
âñU € Ä„í Ä

ñU  þ¥* *  ˜  ñU   Ä Å	 ñU@ ñ5€ åÄ„í*  ¾  Ä

ñU  þ¥*  ñU  Ä Å ‚ *  ä ö ƒàÎàÃ
Ê¥* Ã% C!-D`÷	  )‡ƒ  $s³³.*  
 ‚†Æe C Ã5 €ñU  ‚Ã5 	±*  0  ±  ±
 
 Ã5€±  Ã5@±   V ‡ Æe ð•Êÿ* ± ‡        ¬ M   vÀÛÃ*  e€p    vÀÛÃ   ¯”L      (  
­D"(:   p³J,h  ¯”   
   
­D"  *    ð8 ðµ  ðµ  ðµ   	ð * ‡   & ðÖ * ± ‡ ðÃ * ± ‡        ¬ M   vÀÛÃ*  eÀv    vÀÛÃ   ¯”L            (  
­D"(2   p³K,h  s³kh( ¯”   
   
­D"  *    ð8 ðµ  ðµ  	ð * ‡ ðÖ * ±   & ‡ ðÃ * ± ‡        â M   vÀ›½*  DfT    vÀ›½   ¯”L  ù±oŒ@  p³¿Z@  *  r³,}@      (  
­D"(6 	±8rh  ±„:h  
  ¯”   
   
­D"  *    w	  ð * ðµ  ÷	  ‡÷	  ¡ ‡ 4   ù±oŒp³¿Zr³,}  & 6  l0 ì ‡        ¦M   vÀ[Ð*  kf`;    vÀ[Ð   ¯”L  d©°;@  m© …@  *      (  
­D"(Ê ±<xh  p³<xh ¯”   
   
­D"  *    ð * &f÷	 …„‡ D „
ÄE        õµ *  &  /f C Ãå ŽA
÷	  ƒB
  m© …*  L f&
 ÷	  B‚eA@0 ÷	  Á(„‚  m© …d©°;*  r @0 ÷	  a@Âe A‡ 
B0 ÷	  €A   
d©°;"d©°;*  ˜ B Âå ÷	  ¦f
÷	  C‚áÖ  d©°;m© …  ¾ @ð•Òÿ* ± ‡        .M   vÀÛÃ*  kfKq    vÀÛÃ   ¯”L  ù±oŒ@  f³Ð@  *  p³¿Z@  p³<x@  r³,}@      (  
­D"(L *  ±“yh  p³“yh p³—yh* p³¯yh ¯”   
   
­D"  *    w	  ð * ðµ  ÷	 ÷	  w   ÷	  ‡÷	  ù±oŒr³,} f³Ð$p³<x*  &   ‡ ÷	        ü‡, ,
 ð ñ‚ð•öÿ* ± î  p³¿Z
p³<x       ò M   vÀ›Ö*  Žf;	    vÀ›Ö   ¯”L      (  
­D"(t   ±;	h  ¯”   
   
­D"  *    f&æÄ5 Ò•[ Ã ÷	" Ä5 Ò•, ƒ“÷	 *  & Ä5 Ò•] ƒ„…‡ ÃE ÿÃÃÅ Ä5 	Ã5*  L  ÿÃÃÃÅ
ø…
Ã Ãe0 ÒŠÃ ÃÃÃÅ
õ  r ‡        ¦ M   vÀ›Ö*  Žfv    vÀ›Ö   ¯”L      (  
­D"(4   ±vh  ¯”   
   
­D"  *    ÷	 Ñ	

÷	 Ï	fÉÉ‰eÉÉÉ
ÂCÂ  & CÂCÃe É`‡        ´ M   vÀÛÃ*  2q€W    vÀÛÃ   ¯”L  r³ë@        r³ü@  *  w³™€@      (  
­D"( r³Þh  ¯”   
   
­D"      ðµ ) ÷	  ‡÷	  ‡ ÷	  ‡   w³™€r³ër³ü       M   vÀøÊ*  7q¼    vÀøÊ   ¯”L  b³Ó@  b³—G@  *  r³k@  s³2 @  w³t@  w³L	@      (  "  
­D"(< r³ëh r³üh  ¯”   
   
­D"  *    ðµ  ðe 6 p4 ÷	  †8 ÷	  ± ‡ ÷	  s³2 "b³Ó  &   ÷	  ÷	  ‡‡ ÷	  õ†‡   b³—Gr³kw³L	w³t       &M   vÀ›Ö*  7qüq    vÀ›Ö   ¯”L  s©À@  i³‚@  *  x³Çk@      (  
­D"(p r³Ch  w³Ôh*       
  ¯”   
   
­D"  *    ð8 ðµ  	ðµ  ð ¡ ‡ ð•Öÿ* *  & ± ‡ ð * ÷	    
4 6 Åå   i³‚(  L   Ã÷	  ‡ðe 6 p4 ‡ ð  * ‡   x³Çk"s©À       à M   vÀÊ*  Iq     vÀÊ   ¯”L  ù±oŒ@  r³C@  *  r³§‘@  s³2 @  w³Ô@      (  
­D"(&   Õ±àh  ¯”   
   
­D"  *    w	  ÷	  ‡Ä 0,0  w   ÷	  ‡÷	  ‡    ù±oŒ
r³Cr³§‘ s³2 &w³Ô       ÀM   vÀ›½*  VqM    vÀ›½   ¯”L  „¯½`@  ù±oŒ@  *  e³²Z@  f³Ð@  f³t:@  r³®S@  s³      þ}@  "      (  
­D"(º Õ±µWh  ¯”   
   
­D"  *    w	  ð * &fB ÷	  I‡°B ÷	  D‡É  ù±oŒ„¯½`"s³þ}*  & ÷	  ?‡€÷	  5‡ñ 
÷	  ,†ð¥æÿ* +ð   f³t:s³þ}f³t:*  L *  1,\ \ 1,^ ^ pB B pD D pF *  r F ÁeB ÷	  ‡€ ÁeB ÷	  ð•Ðÿ*   e³²Zr³®S&  ˜ ð•Ïÿ* €pœ* * €0
B 1
B w     $f³Ð       Ü M   vÀøÊ*  Œs"&    vÀøÊ   ¯”L  œ«@  °s@  "      (  
­D"(J r³"&h  ¯”   
   
­D"  *    ðµ  8 2 Áe &À  ÷	  €0
         °s"œ«(  & 0
 0
8 0
B 0
 0
 0
 0Š) ðÅ # ‡        ¸ M   vÀ¸Ä*  t¸L    vÀ¸Ä   ¯”L  i³‚@  q³¯:@  *      (  
­D"($ r³kh  w³kh ¯”   
   
­D"  (    Ä Ä ÷	  U•Õ4 6 Åå w     i³‚&q³¯:      jM   vÀÊ*  t°y    vÀÊ   ¯”L  °s@      (  *  
­D"(r Ô±2&h  Ô±€&h, Ô±Ñ(h\ Ö±fahD *  œ²2&h œ²€&h6 œ²Ñ(hf ž²fahN ¯”   
   
­D"  *    Á  Áe( B A
‡ &À  Àe( H° 0
  °s°s*  &  €‡ Á  A
 ‡ fÁ  ±
 ‡ Á  A         °s°s$°s*  L ‡ fÁ  ± ‡ Á  AB ‡ &À  pB Ù  
°s°s"°s       ¢M   NÀ[Ð*  $t÷_    NÀ[Ð   ¯”L  a³—K@  s³2 @  *  w³Ô@      (  
­D"(Ø r³§‘h  ¯”   
   
­D"  *    &4 &6 ðµ   ÷	š ÷	  ‡°6 °4 ÷	    s³2 *  & w z Ä% !°6 °4 ðµ   5÷	  2‡
 ì   s³2 *  L 6 
ð 
l0 Á
ü& ° ÷	Z ° *  r 4 6 ÷	  °6 °4 ‡÷	: ðµ ) 04   a³—K*  ˜  06 
 0
 ð* ± ‡  ì0 ðe 6   ¾ p4 ÷‡ ÷	  ðµ   ÷	Øÿ‡   w³Ô             ˆ M   vÀÀÁ*  þvXu    vÀÀÁ   ¯”L      (  
­D"(   ù±oŒh  ¯”   
   
­D"       &æ¦ff…
 Þ	‚ƒ„…‡        pM   vÀ›½*  Þ³    vÀ›½   ¯”L  „¯½`@  ù±oŒ@  *  f³Ð@  i³‚@  q³¯:@  w³¼@      (    
­D"(„ 2²Xh  ¯”   
   
­D"  *    w	  &
8 6÷	  œ* ÷	  ÕeB Õ& &  ù±oŒw³¼i³‚*  & 
 ð Îå ¶  ÕU €Ä ÷	  ‰   $q³¯:*  L 
†Æe œ* ÷	  ‡°“* Nl v ° °   „¯½`  r ÷	  ð•Öÿ* Öw     „¯½`f³Ð       M         vÀ›½*  éƒKq    vÀ›½   ¯”L  ù±oŒ@  a³VN@  *  e³²Z@  f³t:@  r³®S@      (  
­D"(: "  Ö¯Ú}h  ù¯ Xh  Õ±®Sh ¯”   
   
­D"  *    w	  ÷	( ‡÷	  ‡ w	  ÷	 ‡÷	  ‡ w	  ÷	   ù±oŒe³²Zù±oŒ r³®S&ù±oŒ  &  ‡÷	  ‡ ð * w     
f³t:a³VN       8M   vÀÊ*  ñh~    vÀÊ   ¯”L  s©À@  ñ¯4}@  *  °s@  f³Ð@  x³·k@      (  
­D"(Z "  q³¯:h
 w³h2 w³¼h" ¯”   
   
­D"  *    0Š+ æ1ÿˆÅ  Åe Ã÷	  ß%ÿÿ  ïp’*   °sx³·k"s©À*  & w   ÷	 ø      fœ( Á  fæ)ÿˆ‡fæ  f³Ð  L ÿˆ‡‡ ÷	    ñ¯4}       ¬ M   vÀ›½*  ñH€    vÀ›½   ¯”L  ù±oŒ@  w³@  *  w³¼@      (  
­D"( ™²`;h  ¯”   
   
­D"      w	   w   w     ù±oŒw³w³¼       ~ M   vÀ›½*  üÜY    vÀ›½   ¯”L      (  
­D"(   w³th  ¯”   
   
­D"      É¥ÿÿ± ‡ æ1ÿˆ‡        ª M   vÀÛÃ*  üœw    vÀÛÃ   ¯”L  f³Ð@  w³¼@  "      (  
­D"( w³L	h  ¯”   
   
­D"  "    ÷	  B fÁe p `p       w     w³¼ f³Ð       ,M   vÀ[Ð*  ™’È}    vÀ[Ð   ¯”L  ù±oŒ@  a³—K@  *  r³C@  r³§‘@  s³2 @  w³Ô@      (    
­D"(T ª²e;h  ¯”   
   
­D"  *    w	  ÷	  $‡Ä 0,0  w   ÷	  †4   ù±oŒ
r³Cr³§‘ s³2 *  & 6 ÷	  ‡÷	  ðµ ) 04  06 
 0
 ð‹  a³—Kw³Ô  L * ± ‡       TM   vÀx¾*  ÷’¼    vÀx¾   ¯”L  a³[M@  b³Ó@  *  b³—G@  f³Ð@  w³¼@  w³t@  w³k@  *      (  
­D"(V w³™€h  w³œ€h  w³·€h 
  ¯”   
   
­D"  *    ÷	        ðµ ) ÷	  !‡f¦æ÷	  †ƒ‚„÷	  b³—Ga³[Mw³k*  &   	‡òÆe ðÅ ) ÷	  ðe 6 p4 ÷	  0ž  w³tw³¼&b³Ó  L 8 * ÷	  ‡   
f³Ð       M   vÀÊ*  ±˜(_    vÀÊ   ¯”L  s©À@  °s@  *      (  
­D"(V i³‚h> x³·kh  x³Çkh 
  ¯”   
   
­D"  *    8 AÁe 
fÕœ" Šœ( Ã  Õ*  & Uÿˆ†CÉ—  ð•ÿÿ+ ‡ Å  Åe$ &Ä   s©À°s  L %
Ä
ý„‡        ¸ M   vÀ›½*  ±˜a    vÀ›½   ¯”L  ù±oŒ@  i³‚@  *  q³¯:@      (  
­D"( Ñ²˜:h  ¯      ”   
   
­D"  "    w	  ð * D÷	  ÂÕÂ
ýw     ù±oŒi³‚ q³¯:      fM   iÁ á*  &,    iÁ á   ¯”L  ¢
Š(H ¤
Ó%H@ *  ¤
2&H( ¤
Ñ(HB ¤
PdH ¥
Š(H ¦
Ò:H
 *  ©
Ì`H$ ¯
“H âƒH âŒ(H îT–H
 *  ö°H tH d6&H dì&H dÖ(H *  Ä%ÄH@ Ä%•H Ä%ëH Ä%r!H €Ä%#H *  Ä%#H Ä%ˆZH@ Ä%kfH Ä% qH Ä%tH *  Ä%™wH @Ä%xH  Ä%H Ä%CH  Ä%¤’H *  <&kH <&DH <&%H  <&H <&zH *  <&®(H <&w*H @<&ƒ:H <&H;H <&„SH €*  <&È`H <&      ãeH <&ÞfH <&ýfH <&°pH *  <&¶pH <&KqH <&%tH <&iwH <&lyH  *  <&9€H <&H Œ&H Œ&ðZH Œ&]fH *  Œ&tH Œ&tH Œ&CyH ô'ÄHF ô'IRH *  ô' qH ô'Ä…H ô'¤’H á)ìH> á)[MH  *  â)ƒH2 â)PH8 â),H/ â)nEH â)sEH *  â)ŽEH( â)_GH) â)ÌGH â)2HH4 ã)Ð4H= *  ã)§ZH ä)²'H& ä)TyH$ ä)½‹H\ å)Û%H *  å)°'H( å)^H å)PsH* æ)»H# æ)é%H *  æ)µWHH æ)ÐWHB æ)ø€HN æ)ZŠHP è)›8H *  ì)p…H" í)H, í)H- í)wH. î)ÔpH *  î)KqH ï)ã‰H ò)»H ò)t	H ò)ýH       *  ò)ìH ò)BxH ò)ø€H  ó)ö!H@ ó)¶dH: *  ó)VgH< ó)[}H õ)üXH^ õ)ÔpH ö)°H4 *  ö)’H0 ìWÞH€ ìWzH@ ìWµWH ìWwH *  ìW€wH ìWýxH  ìWðyH ìWBzH ìWø€H *  ìWZŠH ä[´"H  ä[à8H ä[;H ä[½‹H *  æ[à8H  æ[µWH æ[ŒYH æ[ø€H æ[ZŠH *  î[#H ó[<}H õ[üXH æt <H ótè!H *  öt	H "{Ä&H &{t	H &{PH` &{ó8H *  &{µWH &{ÐWH &{çWH &{¹ZH &{°yHD "  &{ø€H .{V&H     (  ¯”         ‚M   ÉÀÀÁ*  ·kµz    ÉÀÀÁ   ¯”L  t*ÊH t*·H *  t*Î      H t*GH t*I"H  t*ä3H@ t*›NH€ *  t*µrH t*sH t*ŒsH t*ÊsH t*¶zH *  t*çH  t*©„H t*b†H @t*Ö‰H €œ*4H *  œ*€H œ*ÄH œ*@,H œ*@wH œ*¶wH  *  $9ŸHñÿ$9ÌHùÿ$9ðHžÿ$9#H¬ÿ$9'H¬ÿ*  $9.HÞÿ$9L	H°ÿ$9¬Hÿÿ$9ÕHÈÿ$9ûH¾ÿ*  $9)HÌÿ$92HÎÿ$96HÉÿ$9ÄHÀÿ$9bHºÿ*  $9kHìÿ$9½HÊÿ$9¦H´ÿ$9°HÕÿ$9HÁÿ*  $9|Híÿ$9ˆHöÿ$9‹Hâÿ$9¯HÚÿ$9H·ÿ*  $9&Hêÿ$9)Høÿ$97Hóÿ$9Hèÿ$91Hùÿ*  $9BHýÿ$9VH÷ÿ$9XHÇÿ$9ž!Höÿ$9¬!HÂÿ*  $9®!Hõÿ$9#Hµÿ$9`&HÏÿ$9Å&HÅÿ      $9 'H÷ÿ*  $9n'H¯ÿ$9è'HËÿ$93Häÿ$9ª5Húÿ$9£8H§ÿ*  $9õ8H¤ÿ$99HŸÿ$99H®ÿ$939Hþÿ$9E9Hçÿ*  $9,:HÖÿ$95:H ÿ$96:Híÿ$9ƒ:Hþÿ$9¨:H­ÿ*  $9Ò:H¡ÿ$9I;HÃÿ$9i;H£ÿ$9p;H¨ÿ$9s;Høÿ*  $9‘;H¥ÿ$9ƒKHåÿ$9<MH¦ÿ$9xQH¯ÿ$9œSHëÿ*  $9ÖWHÙÿ$9ÛWH×ÿ$92XH¸ÿ$9yXHÄÿ$9‡XH»ÿ*  $9kYH±ÿ$9nYHÛÿ$9³YH³ÿ$9¼YH²ÿ$9¾YH¼ÿ*  $9ÜYHéÿ$9~ZHæÿ$9ŒZH°ÿ$9ZHîÿ$9[Hªÿ*  $9[H©ÿ$9¼^H¿ÿ$9 `Hûÿ$9BaHîÿ$9ÛdH­ÿ*  $9CfH¢ÿ$9ÙfHðÿ$93gHýÿ$9«pHÔÿ$9¼pHÓÿ*  $9×pHØÿ$9ãpHñÿ$9qHÒÿ$9ZqHàÿ$9½rHÍÿ*  $9sHïÿ$9pwHÿ      $9óxHÝÿ$9CyHúÿ$9kyHÜÿ*  $9•yHòÿ$9ëyHÆÿ$9€}Hõÿ$9H¹ÿ$9H¶ÿ*  $9+…H«ÿ$9.…Hûÿ$9ƒ…Hüÿ$9Î…Hÿÿ$9ZŠHüÿ*  $9ëHãÿ$9üHáÿ$9CHªÿ$9šHßÿ$9«‘Hôÿ*  $9.’H«ÿ$9¶ÈHÐÿ´:½H ´:ÊH ´:ÏH *  ´:óH ´:ÃH ´:ÖH´:a	H´:t	H *  ´:sH´:ûH´:HH´:AH ´:GH *  ´:6H@´:«H ´:®H ´:H ´:&H *  ´:RH´:WHP´:“H ´:•H ´:šH *  ´:ÁH ´:ÅH8´:éH ´:ìH ´:òHˆ*  ´:ùH ´:+H ´:H ´:ÔH ´:ÜH *  ´:{H ´:âH`´:H ´:)H ´:9H *        ´:q!H ´:ž!H ´:#"HH´:#H ´:8&H*  ´:n'H ´:±'H 	´:£-H´:©-H´:ù-H*  ´:“.H(´:™.H ´:ž.H0´:ó.H ´:¸2H*  ´:{3H ´:4H ´:74H ´:y:H ´:|:H *  ´:i;H ´:4FH
 ´:©KH ´:ÌKH ´:ÑKH*  ´:½LH ´:\MH ´:nMH´:ƒMH@´:NH *  ´:)NH ´:+NH( ´:9NH ´:wQH´:ËQH *  ´:áQH ´:éQH ´:ïQH ´:/SH ´:œSH *  ´:GTH 
´:bYHX´:kYH ´:¶^H´:ü_H *  ´:¬pH ´:´pH´:¼pH ´:ÓpH ´:qH *  ´:qH ´:"qH€´:$qH´:(qH´:.qH *  ´:TqH ´:ÄqH´:brH ´:vr      H@´:œrH*  ´:±rH ´:³rH ´:µrH´:¶rH0´:ÂrH8*  ´:ÃrH´:sH ´:sH 	´:ŒsH´:£sH *  ´:©sH ´:«sH0 ´:­sH€´:òsH ´:tH *  ´:-tH`´:[uH ´:÷vH ´:KwH ´:iwH *  ´:owH ´:‹wHP´:œwH ´:¯xH ´:×xHp*  ´:ByH´:FyH ´:WyHH´:ÇyH 	´:áyH *  ´:ãyH@´:ðyH ´:¶zH ´:ÝH´:éƒH*  ´:„H(´:„H ´:+…H 
´:|…H" ´:A†H0*  ´:i†H´:y†H´:ôH´:üH ´:$H@*  ´:CH(´:dH$´:hH ´:¢‘H ´:£‘H*  ´:³‘H´:´‘H´:¶‘H@´:Û‘H´:’H*  ´:B’H ´:2“      H ´:˜H ´:1˜H;@jH *  ;ÀvH ;L…H ; –H T;ðH T;8H*  T;²H  T;HT;¬!HT;;"HT;I"H›*  T;ÛdH€T;4fH  T;$qH T;œwH T;DyH *  T;zH T;*}H	T;H ÄkZŠHÙ ¤wöH *  ¤w 'H ¤wÆ8H ¤w’MH	 ¤wðXH ¤w{ZH
 *  ¤w:dH ¤wDyH ¤wLyH ¤wÚ}H ¤wÎ…H *  ¤w´‰H ÌwÎH Ìwë+H€ÌwË-HpÌw».H`*  Ìw&qH0ÌwëvHÌwËxH Ìw»yHÌwóyHP*  ÌwôyH@%{!™H %{"™H >{  H ?{0ÀH *  ?{pÆH ?{ÎÌH ?{ÓH ?{pßH ?{NòH *  @{0ÀH @{NÀH @{NÙH A{0ÀH	 A{ÎåH       *  B{NòH C{€»H D{0ÀH
 E{ÎÌH E{ÀÚH *  G{ÎåH ”}ÊH ”}4H ”}kH" ”}ˆH *  ”}>H ”}™H& ”}õH! ”}Á!H  ”}I"H *  ”}](H# ”}ö2H ”}ü2H ”}T3H ”}ä3H$ *  ”}O:H ”}D;H ”}ˆKH ”}MH ”}vNH *  ”}€QH4 ”}KXH' ”}:YH ”}`YH ”}ZH *  ”}ŒZH ”}:dH ”}ÙfH) ”}¼pH ”}ˆsH *  ”}HwH
 ”}JwH	 ”}¶wH ”}¶xH( ”}×xH *  ”}ØxH ”}ÚxH ”}âyH ”}8}H% ”}0€H *  ”}ÖƒH* ”}×ƒH+ ”}ØƒH, ”}ÙƒH- ”}ÚƒH. *  ”}ÛƒH/ ”}ÜƒH0 ”}ÝƒH1 ”}ÞƒH2 ”}ßƒH3 *  ”}|ŠH ”},‘H ”}™H       ~L	H ~öH *  ~GH  ~I"H ~´pH ~³rH  ~µrH *  ~ŒsH ~¶zH€ ~H€ ~ôH ~$H@ *  ~Û‘H ~^˜H@ a	|H a|H k	|H *  lŒH lÎÇH l ÓH lÓH s®H *  uVYH  u®yH u¯yH u°yH u±yH *  u²yH vÓH v–‚H v˜‚H	 v›‚H
   v¿‚H     (  ¯”          ° M   ÄÀXÀ*  	@~    ÄÀXÀ   ¯”L      (  
­D"(6   i©€‰h Ýª Kh  ¯”   
   
­D"  *    &æ  
 †€m Î
ùæ f
ÀAN   & ‡ã€
ö
 ÷–%‡        üM    Á  *        ‹¯=     Á     ¯”L  £¯D@  \±D@  "  ù±oŒ@      (¾‹¯=h  ¯”   
         *    w	    Ä 
Ä
ýp p* CÄe  ù±oŒ*  & ( ÂL‡ Ë‹Ë¥	 Ë¥ Ë¥  Ñ’Ë¥= *  L Ìð ° ± ‡ LðÕ   ƒ
Â
âÌL*  r  àp & 
`„!÷	Z CÃeµ À
Ãe  "µ *  ˜  ûÃ’{ ¨ €¡ ‡ ^|¬f$        ¨ ^|¬f$  ¾       



   Ø *  Ø =ÿ]/;[:, „ÅØ !…
£E“‡ Õ‹  Ø *  þ ú„
òÃ  +†¢z (‚¢a ‡ÈÅ  ¢Z  ‚¢*  $A ‡Ã       ¢9 ‚¢0 ‡Ã  ¢* Ã *  J¢. Ã ¢$ Ã €
‡ €° !†*  p„
„à0 ± ‡ €÷	‚ÿÃ% ï÷	xÿÃ% ê *  –÷	jÿÃ%  ùâ@‚
w Øþ„ Û‚
÷	0ÿÅÖ…*  ¼&„à&
ƒ÷	  ƒ†÷	" × ÿ ‚„—¤]   \±D*  â÷	 ÿW! ç¼À ÚÄ
Ê¥* Ö„±‡ @*  &…&
„àƒ÷	  ƒ†÷	Ôÿ„À€¢- €
  £¯D*  . ÷	Îþ×  ùƒ”Å% ¯‚
÷	šþCÃå ‰*  TÃ
‡Ã
…ð„  &
€÷	šþŽ
Ãå úÃ
Ö%*  z
 ßÀ
 ÜŽÖ
ÙÐ¥. ÖÖ%
 ÒàóÃ%"    Ì‡Ã
È¥* ë÷	RþÃå û ä‚¿       úM    Á  *  ‹¯      @=     Á     ¯”L  £¯D@  \±D@  "  ù±oŒ@      (Ò‹¯@=h  ¯”   
         *    w	  ðÅßÿ 0
 0
 
( È¥ È¥ ±   ù±oŒ*  & ‡ 
* ÷	 ÃD ÷	 ÃL ÷	 3:   :
  D L *  L  ] 
]&¦fÅ”`ÁU%Î¤Äd„àðÔ *  r Ãe DB Å”`Ó‹Ä„`÷	Ö…*  ˜ ‚„Å¢‚
÷	Š‡ ° ƒàð ðÕ  *  ¾ ÷	ª
Å¥/ ÷	  Å¥= ðÕ  ‚
Á°*  ä ( °* ‡ ‚
÷	<&f&
ƒàRÊ¥- × *  
 Ê¥N ò¥O  ‚
‚
Ž
ƒà¦÷	T‚‡*  0ô5  â¥- 4
Â
ƒ ƒà÷	4,‡0S Î*        V0S ô5  !0C  ¡ ‡EÎS*  |¡ EÎúCÖ…‚ ÄE W¡/ ªW¡: *  ¢
‡ Ö…‚W¡= W¡, ‚
÷	t öÄ ‡ *  ÈñËï‚
÷	^ &fÅ ×¤ „àÄ¢†Ä’&*  î•”Ä
ýÄ’„åŠÄ
ýÃe …‚ÄÅææ  ã¥  &\±D*   Î  C
„à…Þ	¾‡Öƒç& l   
£¯D*  :„Åd!£„
£ý£Õ‹ü„
ðU¥E“  d  `Ö‡ []=:/,     l*  lÒ¥* „ û‡ ðÕ  ‡ ¦æ !Å‹*  ’€ÃÅE€€Ã
&
Ž”Ã
Ì5€ÿ¶”   ¸…%èÔþÄe ƒ‚ ç± –5‡        º M   NÀ€Ô*  :h;          NÀ€Ô   ¯”L      (  
­D"(@   d©°;h m© …h  ¯”   
   
­D"  *    & 

Î†Á`@€`ÃBöÖ‡ æÃ  &  &  
ÂA@ ‡€ã‚
Ã
÷Öƒ‡        Â M   XÀ  *  Î      XÀ     ¯”L    H p&  H *   5  H	 ðK  H
 ïf  H  ðf  H@ ñf  H` *  òf  H€ óf  H  ôf  HÀ õf  Hà øf  Hþÿ"  jz  Hxÿ Œ  H     (  ¯”          r M   tÀ0À*  # }    tÀ0À   ¯”L      (  ©àyh  
  ¯”   
             &æÿˆæ3ÿˆ       ¼M   ;VÓ³*  ° S    ;VÓ³   ¯”L  ¤
      Ñ(@  <&D@  *  <&Kq@  <&9€@  ô' q@  â)P@  ä)²'@  *  ä)Ty@  å)Ps@  æ)»@  æ)ÐW@  î)Ôp@  *  ò)ì@  õ)Ôp@  $9ž!@  $9×p@  ´:t	@  *  ´:Ü@  ´:2“@  s©À@  „¯½`@  ‹¯=@  *  ‹¯@=@  ù¯üX@  °s@  °	€@  	±8r@  *  h±²'@  ±}s@  ±„:@  ù±oŒ@  Ñ²˜:@  *      (Ò°?Sh  °@ShÈ°ASh¯”   
         *    w	  5
f un h õ‹j ÷	`‡uh bB  ù±oŒ*  &   ÷	$†w €õµ€ a w ,õ  ÷	fý¥    ä)Tyâ)P($9ž!*  L   w ü &
õµ    Á  
÷	  œ  Ad B&  â)P      <&9€ò)ì´:t	Ñ²˜:"å)Ps*  r b AÁep Â &
¦fƒÂ Á  ÷	  –
–   ´:2“$Ñ²˜:*  ˜ ‡ÁP õµ  a A” Aíf @pn  p  ÷	     õ)Ôp $õ)Ôp(°	€(  ¾ C    Ö‹Á  
÷	  8  ð  Ã‹/A&  å)Ps
â)P´:ÜÑ²˜:â)P å)Ps*  â  B  µ`f ÂNõµ a ¦`W¨a W¢z   î)Ôp î)Ôp*  ÉÅ  Â
ö‚õµ€ a õ‹j fu-n h w FÉ¥*  .; ]õµ a )w Èþ×   æØÿ"Ã¥  .@j   $9×p"$9ž!*  T
À
õµ€ a ÷	Bw Ôþ@÷	  õÅ€ a õŠj   „¯½`*  zõTI õ•    æöÿ&
õµ a f  ÷	vµ"  <      &9€<&Kq<&D
ò)ì"å)Ps*     µ“` V@‡ æÿÿîæþÿëÆe, æýÿææüÿ  å)Ps*  Æãw	  õ‹j ÜõŠj õå l ùµŠj ÷	¾ Ð  ù±oŒ*  ìÉ¥@ @õµ a Éu­j k àÆå, b¤€p ° *  ÷	  5 f µ
f Ë‡ðµ   ÇÈ• ÷	  Â‡ðµ   ‹¯="‹¯@=*  8 ¾ðµ  º÷	Ò ‚Âe õSY ÷	ø 	‡Æe, *  ^5
f un h w ÒýÆe,  õµ a õ‹j õµ€ *  „a `W¨- Â
õ
f µ`n w rýuh n w äþ@*  ª÷	  Dl õå l õŠj õµ€ a !CÃe ##  „¯½`$æ)ÐW *  Ð#3 3™ @ð•    ÷	  ‡&™÷	  ½•  ô' qæ)»h±²'&±„:*  ö        	†õ¥    Î²Î†‡ w	  õ  µŠ(  â)P
$9ž!å)Ps²†ù±oŒ$â)P*  j Dl @÷	  T”ÔÀe  TŸ  œ    	±8ræ)ÐWâ)P*  B5l @÷	  ‡ @Á  ñ  ÷	  Áe     „¯½`°s¤
Ñ( ù¯üX&æ)ÐW*  h  ÷	  ‡ð•    ÷	  ‡ An 5Šj É)fÿˆ‡   ä)²'±}sô' qæ)»h±²'*  ŽÑÂ  ÷	2 ‡ /  	    ô÷	 ‡   s©À"  ´	 ú   ÷R¨õÕ€ a ¡ ‡ Âå @”‡        ,M   ìÀXÀ*  \±D    ìÀXÀ   ¯”L  ù±oŒ@      (  *  
­D"(Œ £¯Dh \±Dh  ‚²Dh  ¯”   
         
­D"  *    
Ë w	  &Ba
—¢+ —¢- 
‚
Ä
  ù±oŒ*  & Ê¥# ‚
Ë
å¥. ‹
Ä
Å æU¥
Ä*  L €”Àå0  ‚Ë‡ÎÀb‡Ë‡Ë‡`‡€  r Î	Ä
éÁ¡ €€‡ ± û       M   NŽ€À*  €^à    NŽ€À   ¯”L  ù±oŒ@      (ˆ   ¤¯ŒÈh  \±ŒÈh
 ¯”   
         *    w	  Á
 w	  Á Ba—¨. Á
 Ä
&
W£  ù±oŒù±oŒ*  & + W£- Ž
…
Ä


B•Âå0  ‡ †Ëcæ*  L æËcó SW 
 –%‹ec“e‹`sþÿÄ
ä  r Ö#3 ‹¯ ‡ Ö± ‡        "M   XÀ  *  7a     XÀ     ¯”      L  °?S@  °@S@  *  ù±oŒ@      (N .«D,h  ¦«D,h
 Û©"Sì  
  ¯”   
         *    w	  Ã  w	  Ã  &Àe` Á` Â Â
ý"  ù±oŒ
°?Sù±oŒ°@SÛ©"S` *  & À  ðÕ a Ë	Á` €Àe` Â PÂ
ý€D  Û©"S  Û©"S`   L ‡        ÂM   XÀ  *  R«„:    XÀ     ¯”L  <&È`@  <&Kq@  *  â)P@  å)Ps@  æ)ÐW@  ì)p…@  ä[à8@  *  æ[à8@  æ[ZŠ@  s©<d@  „¯½`@      (z   ’±„:h  ¯”   
         *    ð  9f¦æÆå ‚œ  ¦ææÿˆƒ   â)Pì)p…  & Âe  ¡¡¡      Âe  ¡¡¡!ŠÂe&  æ)ÐWä[à8 
æ[à8 ä[à8
&  @   ¦¦¦¦¦÷	  ‡Ã5  Àäf÷	(  æ[ZŠ æ[à8
„¯½`<&Kq<&È`
  b   2  €Æe Aƒ‚‡   s©<då)Ps       ÒM   OŽØÌ*  0²#	    OŽØÌ   ¯”L  ¤¯ŒÈ@  \±ŒÈ@  *      (î0²#	h  X:†¨ ƒ±:2h †±/Kh  *  Ž±J…h
 Ž±P…h “±†}h “±”h ¯”   
         *    &f¦w  ÷‹  ÷	¾7
 7 @•,€ÀåÀÿq"  X:†  X:†  X:† X:† *  &   `-KacJE[Ã!Ãm*  L  Äí @•Á  †ÕÁ
ûÒ± )      ÷	L÷	  X:† X:† *  r R†é çÃå÷  7• Ã
f@• †Õ   X:† X:† *  ˜ †&Ý	€…Ò€ÖÀ5 ]U ª†E¨¯ ‚*  ¾ …€Á  ‡ 
 :Á  ‚æ&@E ÷	ÿA  
X:†  X:†  *  ä · Îà· Ì†ª 
÷	Š ÷	Ð Â¢ÂÀE  X:† X:† *  
 ÿ÷	v œÀEÀÿÀ€c Á Â ¤‘Á
ü¢ÿ   X:† X:† *  0­÷‹ ‰÷­  ¦†„÷	@ Á	Ã£.   X:† X:† X:† *  V„
Ã
·
 æ&fÅ Ä Ã Á÷	  ÷	(  
X:† X:† X:† X:† $¤¯ŒÈ*  |  …„ƒ¶Ã÷	8 †      À÷	" †À£.   \±ŒÈ*  ¢£$ ·
 „
Ã
ë÷ ‡ Ì¥Z ‡£A ‡ Ì¥  X:† X:† *  È9 ‡£0	‡ 
Ã
£  £	 ‚
„
Ã
ö‡        ÖM   OŽØÌ*  ïe›‚    ¯”L  ´:t	@  ´:Ü@  ´:¢‘@  "      ( Ì:›‚h  ïe›‚h  ¯”   
         *    Ä W£ W£ xÄ D !ÿÿø@  
    *  & ÿÿk i  f†Àx : †ö
LêBr†*  : †ö
L ê"$B&r(†*  L ` °ÀîA W ÿÿAÁE ü‡ 
‡ B —   ` °
Àî*  r ÿÿ‚ÂE þ‡ 
‡ &-  ‡÷	    aÀe*        ˜  ˆ“´
 €‡ ô $Ãe ô  ô &
*  ¾ &
&
&
& æ&
&
&
 &  æ  æÿˆ‡   ´:¢‘*  ä & æ)ÿˆ4
 ‡ ÷	^ ÷	¨ÿ 
‡ ÷	R ÷	œÿÀ*  
ÿÿ‡ &ÀE @ÀÀÀÀ ÀU  ÁU  ‡ @÷	*  0Pÿ€÷	Jÿ‡ ô‹ ÷	. À1 ÷	6ÿ´Š ÷	( ‡ *  Vô‹ 
÷	 À2 ÷	ÿ÷	 4Š ‡ À ÷	ÿ‡ *  |À ÷	þþ‡ ÷	ÌþÁ	t  ÷	ÔþÂ´ ô*  ¢  %&
&
&
&
&
&
&
&
&
&  æ  æÿˆ   ´:t	*  È&
&
&
&
&
&
&
&
&
&  æ  æÿˆt   
  ´:Ü*  î‡ Àÿÿ‡ ÷	\þ4Š Áô•  ‡ ÷	^þ´@ ÷	*  @þtP ÷	ÿÀ•A ÷	\þ  ÷	àþ@÷	NþÀI ÷	      *  :Fþ€÷	@þôE  w ¨þA W ÿÿHAf *  `W  ƒÁ ÷	ÌþÀH ÷	þ@÷	’þ÷	¬þ  Àe*  †B ÷	öý	÷	Øý€÷	tþ÷	Žþw RþB — ÿÿ*  ¬æ f€¦ ì ƒÀì ÷	Hþ÷	bþ‚ö
 *  Ò÷	¦þö  Î
ê–%w þw þ÷	~ý÷	dýf÷	Bþ*  øÀD ÷	‚ý€÷	þÖÂU ÷	þw Þý÷	<ý÷	Ný*  ÷	þ¦ÀL ÷	Vý@÷	ÜýÖÂU ÷	îýw ²ý÷	*  Dý÷	"ý÷	ìý  ÀeC ÷	(ý¦@÷	¬ýÖÂU *  j÷	¾ýw ‚ý÷	àüt ÷	îü´ w ný÷	Ìü÷	Þü÷	*  ¨ýt  
†@ 4 € 4 í Ut *  ¶æ æ í €Ã  
B †Bà€
ûƒ*  ÜÂÀö4
 4
 ÀH ÷	ü        ÷	ý÷	.ýÀB *   Ý ÷	xü4m
  -  ‡´c ôå  ö  *  (÷	âü÷	üüö
 ÷	Býö  ô
 â€÷	üt *  N÷	ü´ –%w ˜üw ìý÷	ýÀH ÷	ü÷	üûÀ
 *  tÂ
÷	üû÷	Ôû÷	öüæC Á
÷	àü€÷	êûø*  šÖw Tü÷	ÎüÀJ ÷	Öûw Dü÷	¾üÀK ÷	Æûw 4ü*  À÷	’ûB — ÿÿÁ€”÷	ªûÁ
ûw ü€”ü÷	*  æšûûw ü÷	€ü÷	`û@÷	†ûw ôû                                         ’ M   0À  *  %Ps    0À     ¯”L  s©À@      (    ù¬ÚK( ô¨""h  ¯”   
   ù¬ÚK      ×'  ÿÿæ1ÿˆ ‡   s©À       :M         pÁ  *  œ	À]    pÁ     ¯”L  á[ÚK@  ï[Œ@  *  ¹«WŒ@      (  ù¬o†(X ô¨h ô¨ hL "  ý¨Xh  ­Kr<  
­ÿ<  ¯”   
   ù¬o†  *    ¦  Þ5 Îe ‡w	  ¦…
 Bv
 ÷	  
  ¹«WŒ&­Kr  *  & 

ò ÊE ÷	  	‡‚ Ê5 îù‚
  
­ÿ    L ‡ Ã  û	  æ  ï[Œá[ÚK       Ò M   ¨À  *  ü€    ¨À     ¯”L  Ýª K@  ¹«WŒ@  "      (< <©P}h  G©P}h ¯”   
         *    Â
 Â w	  
”Å¥  üÅ¥	 ùÅå0 B¡†  ¹«WŒ  & €÷	   Aa”ôœÿÿ‡   
Ýª K             (M   €À  *  üÀÚ    €À     ¯”L  Ýª K@  ¹«WŒ@        (z 9©x‚h ¯”   
             ZA90$ .    *   @(  w	  f
Ã ”Ä  ¥&‡¥ƒ¥"‡¥  ¹«WŒ   *  . ƒ¥	¥Î¥Åå Åå÷ÿÅåÒÿÅå@ &*  T ÀfA÷	  E€Aa×  ×‡ÖÖ± œÿÿ‡   Ýª K        (M   €À  *  üÛ    €À     ¯”L  Ýª K@  ¹«WŒ@        (z 9©z‚h ¯”   
             ZA90$ .     *   @(  w	  f
Ã ”Ä  ¥&‡¥ƒ¥"‡¥  ¹«WŒ   *  . ƒ¥	¥Î¥      Åå Åå÷ÿÅåÒÿÅå@ &*  T ÀfA÷	  E€Aa×  ×‡ÖÖ± œÿÿ‡   Ýª K        dM   ìÀ È*  $@    ìÀ È   ¯”L  i©€‰@  ¹«WŒ@  *      (Ž :©<h  :©h :©ÿh :©Ï_h *  :©¿`h :©(}h0 :©h :©ZŠh ¯”   
         *    æ
æ
*æ
+
æ2æ3ÁE ÿæ*  & ÂÎE ‚w	  …ŠÂ ‚†Á€Ð•-   ¹«WŒ*  L ŠƒÐŠÂÕ0 @A÷	  W 	 ƒÁe `fÃŠ  i©€‰   r 
ÀÂ€Ã€ÂE ÷	Ôÿ”• ‡        Ä M   €À  *  L@    €À     ¯”L  i©€‰@      (H   [©(}h  ¯      ”   
         *    ÷	 &÷	 &÷	
 ’•’•€‡ @Á( ÷	    (i©€‰&  & f€
  Àe	 ÀeÉÿÀe  Àe  ‡        ø M   0À  *  dXR    0À     ¯”L  :©(}@  d©°;@  "  ¹«WŒ@      (V <©h  ¯”   
         *    w	  Ä'Å
 ÂÅU D$†BA ÷	  &  ¹«WŒ&d©°;*  & Â (÷	 ÅU Â  ÀBQ÷	  Â   ":©(}  L Ð•* Â
ü‡        | M   0À  *  D¸ƒ    0À     ¯”L      ( N©K€h  
  ¯”   
             ¢a ‡¢z ‚ÈÅ  ”Â
õ‡        nM   €À  *        ä`	    €À     ¯”L  :©<@  i©€‰@  *  ¹«WŒ@      (¦ a© }h$ é«@QhR ¯”   
         *    JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECw	*  &   D…&&÷	` Ð•- ÎeÁeýÿP”P”P”Ð•  ¹«WŒ ýÿ*  L - $w	  DÅ … ƒ÷	& Ð•.  ÀÀÀ  ¹«WŒ*  r  c e÷	  À
…Ð•: ÷	
 Å
ù
  i©€‰  ˜ Â÷	  B‡   
:©<       M   pÆ  *  ôXR    pÆ     ¯”L  :©@  :©ÿ@  *  :©Ï_@  :©¿`@  :©@  <©@  <©P}@  *  [©(}@  a© }@  ¹«WŒ@  é«@Q@      (ð"  Œ©?Th8 3M`©      è ®ªh  ¯”   
         "    ABDEFMNOPRSTUXYZ<>  ¶ Â Ö î   (  ¤  
¶ Â Ö î   
   Ü   DJp  (  Ü 2 
D
Jpz 
  * è â ŠÖâ  !  è â Š
Öâ 
 *  6   w	  &D…•Â¥% “ùŠÀåB  & 
¹«WŒ *  \ ‡ & Ð¥V A ÷	  À
ÀCƒ
Â   <©P}*  ‚ 2£ÿÿÂ
û„
Â¦ Ž‡AÎÞ	ÖÐÐ•% 
  ÿÿ *  ¨ „ Ì¥V å‡ P”Ã
ý‡ Ð•  B”f‚÷	    (:©  Î Ã
õ‡ æ  =æ  :æ"  :©ÿ ÿ
:©       ÿ
*  ä   7æ  4H”ÈÅ€ ¢  ¢ È•  €
Ã
ò"  :©  €

<© ÿ
*  
‡ ÷	h Š€‡ Ð• Ã
ü7
  ‡ Ð‹Ã
üÀ

  3M`©  *  0‡ Ð• Ð•
 ·
  Ã
ø‡ æ  æ  Ð•	 A*  3M`©  :©¿` ÿ
 :©Ï_  €
*  V¦
NÞ	Ã
ö–
‡ æ  ôA÷	  Ã
û‡ Ð•  :© ÿ
 [©(}*  |  Ã
ü‡ Ð•	 Aæ ÷	  AÎ
ûÖÂ	 ÷	$   [©(}*  ¢Ð•. ÷	  Â ÷	 AÐ•; 
÷	  Ã
à‡ Â
  
[©(} :©Ï_*  Èýð¥  ÿÿùÀ
øAá÷	  E‡ AáÂ÷	  E  a© }&é«@Q  î‡        HM   pÁ  *        YM     pÁ     ¯”L  ï[Œ@  ò[ÿ@  *  ó[\}@  ó[¥@  ¹«WŒ@      (  ­ì](x   ¯ªàh  ¯”   
   ­ì]  *    ¢ 8‡w	  ¦Â  „  ƒ‚  Ê± *°,    ¹«WŒï[Œó[¥ó[\}*  & °,  aóÊE  ! ‡„ ôE € 
*  L 
¢ ‡ ¢ ‡ Ãe  ææ
Ü Þ	  ò[ÿ
  r Þ	‚‡        tM   ÜÆXÀ*  3aà~    ÜÆXÀ   ¯”L  é[Ì`@  ï[y‹@  *  ï[Œ@      (  ­Kr<> ÉªKrh  
­ÿ<h 
  ¯”   
   ­Kr  *    ¦Ê5 ‚ ú‚‡ ò û¦¦‚
 Ž 
Ê5  &  ùÊU Ž ‚öÖ‚      å
   
­ÿ  *    ÊE ¡ Ê5 @-&
¦ÎE ð&
&
¦ ¦ fÅ    (ï[Œ*  & &Ã‹DÄe  æÎ f  ææÿˆ  é[Ì`ï[y‹   L 	‡Ã‹
æ æ)ÿˆÌ‹€ÊU ± ‡        ‚M   ÜÆXÀ*  3aÐ    ÜÆXÀ   ¯”L  é[Ì`@  ï[y‹@  *  ï[Œ@  ó[¥@  ¹«WŒ@      (  ­Kr<v   ÉªJrh  
­ÿ<Ú ¯”   
   ­Kr  *    w	  Å  W-   ‡„ ¦Ê5 ‚ ú‚‡   ¹«WŒ
ï[Œó[¥*  & ò û¦¦‚
 Ž ÊU W-   ‡ƒ Ä   ó[¥*  L ó5 € îóE € Ê5  çÊE  Ž ‚äÖ  r ‚Ó
   
­ÿ  *    ÊE       w	  Ã  ×,   )‡ƒ &ó5 € "Ä   
¹«WŒï[Œó[¥*  & ô5 € &æ9ÿˆL‡ôU € 3   ææu*  L ÿˆ†óE  ææuÿˆ9‡óU € ¡ Ê5 `5ÊU  *  r ƒ „ &
¦ÎE ð&
&
¦ ¦ fÅ  &  $ï[Œ*  ˜ Ã‹DÄe  æÎ f  ææÿˆ	‡Ã‹  é[Ì`ï[y‹   ¾ æ æ)ÿˆÌ‹€ÊE  ÊU ± ‡        FM   HÁ  *  4a`	    HÁ     ¯”L  ô¨""@  ?±ŒH" *      (  ­4Š¬ 1±ÚKh 9±Ì`h =±Krh *  ?±y‹h  B±ÿh C±\}h C±¥h
 ­Kr<  *  
­ÿ<  ­~,¬  ­€,¬ 
­øl ¯”   
   ­4Š              ­~,           ô¨""           
­ÿ  ­Kr   ­€,        
   
­ø      ‡        Ž M   HÁ  *  Ba8"    HÁ     ¯”L      (  ­cŒ  *  á[ÚKH é[Ì`H í[KrH ï[y‹H  ò[ÿH   ó[\}H ó[¥H
 ¯”          JM   ¨À  *  4s    ¨À     ¯”L  ¹«WŒ@      (  "  
­D"(¢ œ«h  ¡«hB ¯”   
   
­D"  *    w	  Áe ÁE ƒ ‡ÀúÊ„D`Ä Ê  ¹«WŒ*  & Ábˆl „ ˆl r ‡ w	  

B  "¹«WŒ*  L €Áe ÁE "s  ‚ÂÅ      s- *  r  ƒÅÀîÂÅ Csà Ãl È  ˜ À¡ ± ‡        † M   0À  *  þv     0À     ¯”L      (" ¹«´‰h  
  ¯”   
         &    &æ¦f&¦
 v Þ	€‚ƒ„…‡        € M   ¨À  *  þv˜q    ¨À     ¯”L      (  
­D"(   ¹«WŒh  ¯”   
   
­D"      &æf… Þ	ƒ„…‡        x M   €À  *  þvPŒ    €À     ¯”L      ( ¹«h  
  ¯”   
             f&¦‚ Þ	€‚‡        r M   0À  *  Šð    0À     ¯”L  ï[ŒH, s©ÀH      & *  ,«0zH* 5¬ ™H. °sH(     (  ¯”          ª M   tÀXÀ*  `Š(}    tÀXÀ   ¯”L      (  ­#ì *  
­ZTì  ü¬›ì  ­#ì  5¬!™h  ¯”   
   ­#        
­ZT           
  ü¬›         ~ M   ¨À  *  *¯¤`    ¨À     ¯”L  Ü²ó`@      (   Ÿ sh  ¯”   
             ÀSw     
Ü²ó`       M   0À  *  3à    0À     ¯”L  Ü²)d@      („   3àh  ¯”   
         *    ÷	    ‚C …Æå‚ €&æqÿˆ   Ü²)d*  & ñ       F¦ r   Áeüÿ
@ÅA E 2*  L  „cD!†ÁD ï²  2 ° r Á  r  Á8ÿ–
€H‡        ¢ M   0À  *  4Ùf    0À     ¯”L  Ü²#@  Ü²)d@        ( 4Ùfh  ¯”   
         "    ÷	     &
CÎÊCÉ÷	  	  Ü²)dÜ²#       ˜ M   ¨À  *  ;¯VN    ¨À     ¯”L  Ü²#@  Ü²)d@        ( F	VNh  ¯”   
             ÷	    RRR÷	    Ü²)dÜ²#       ô M   0À  *  r	À+    0À     ¯”L  Ü²#@      (D *  r	À+h  ‘Àh ¢À+h 2      À+h !!Àh   xQ  h }…Àh$ ¯”   
         *    À9À7À;ÀuÀwÀyÀ"  & {D&
f¡ ‡W#ÿÿv &w      Ü²#       æ M   ÐÀ  *  b³s;    ÐÀ     ¯”L      (V v8 h *  9€phB ª:  h  @; (h ìY  h ¯”   
         *    ÷	L @W‡ ÷	 @@@‡ ÷	8 @
‡ ÕA 
B€*  & Âe —  †Â
Á@ûí@‡ ÷	
 A@@K  L @P‡ Õ@‡        ~ M   ¨À  *  y¯X    ¨À     ¯”L  Ü²ó`@      (   ö,h  ¯”   
             Àw     
Ü²ó`             ” M   ÐÀ  *  †¯T    ÐÀ     ¯”L  Ü²#@  Ü²)d@        ( ö`Th  ¯”   
             ÷	     Îw     Ü²)dÜ²#       ~ M   QÀ  *  ³¯ˆ    QÀ     ¯”L  Ü²#@      (   {ˆh  ¯”   
             &
÷	  _  Ü²#       ~ M   ¨À  *  Ö¯L	    ¨À     ¯”L  Ü²#@      (   q!òyh  ¯”   
             &
÷	  e  Ü²#       ~ M   ¨À  *  Ö¯ˆ    ¨À     ¯”L  Ü²#@      (   q!ˆh  ¯”   
             &
÷	  a        Ü²#       ü M   ¨À  *  Þ¯g'    ¨À     ¯”L  Ü²#@  Ü²)d@  *      (> ²0 h  Ë:Kh 	#n~h& œw0 h   ñ~h  ¯”   
         *    ÀÀ!À#÷	     Î#w   À)  Ü²)d"Ü²#  & À5÷	    CÒ&w     
Ü²)dÜ²#       ¢ M   0À  *  #Oq    0À     ¯”L  Ü²#@  Ü²)d@        ( #Oqh  ¯”   
         "    ÷	     Ä CÃÒÄ
ú÷	  Y  Ü²)dÜ²#       š M   0À  *  #€    0À     ¯”L  Ü²#@  Ü²)d@        ( #€h  ¯”         
             ÷	     f¦

÷	  Y  Ü²)dÜ²#       ò M   ÐÀ  *  q³˜:    ÐÀ     ¯”L  Ü²#@  Ü²)d@  "      (V ·k  h ñ’˜:h  ¯”   
         *    ÀÀ&
&
&
&
÷	   ` ¶  fRC  Ü²)d*  & ÃÒCÃÒRC



	
ÃÒÒÒÒ  L ÒÒ&w     Ü²#       š M   0À  *  œ,Oq    0À     ¯”L  Ü²#@  Ü²)d@        ( œ,Oqh  ¯”   
             ÷	    &
B‰÷	  A  Ü²)dÜ²#       ’ M   0À  *  Ë- –    0À     ¯”L  Ü²#      @  Ü²)d@        ( Ë- –h  ¯”   
             ÷	    ÷	  q  Ü²)dÜ²#       € M   ¨À  *  ,°ò    ¨À     ¯”L      ( œ,òh  
  ¯”   
              CÃ‹
@ÃŠAW ÿÿHÐ÷‡        ” M   ¨À  *  ,°VN    ¨À     ¯”L  Ü²#@  Ü²)d@        ( œ,VNh  ¯”   
             ÷	    R÷	    Ü²)dÜ²#       ¾ M   ÐÀ  *  ,°ÄQ    ÐÀ     ¯”L  s©À@  Ü²)d@        (4 œ,ÊQh  ¯”   
         *    ÷	    ‚ÆåP æ)€&ÿˆÂ      Ê  À(   Ü²)d$s©À  & Ö‘“Î ‘•À
û‡        ¨ M   ¨À  *  ,°:d    ¨À     ¯”L  Ü²#@  Ü²)d@        ($ œ,:dh  ¯”   
         (    ÀA÷	     „&
&
& &&w     
Ü²)d&Ü²#       ’ M   ¨À  *  ,°€    ¨À     ¯”L  Ü²#@  Ü²)d@        ( œ,€h  ¯”   
             ÷	    ÷	  ?  Ü²)dÜ²#       † M   ¨À  *  v°L	    ¨À     ¯”L  Ü²#@      (   ùòyh  q:òyh  ¯”   
             &
÷	  c  Ü²#       ž M         ¨À  *  ±u~    ¨À     ¯”L  Ü²#@  Ü²)d@        ( zQÀDh  ¯”   
             æ÷	    RRRI!
÷	    Ü²)dÜ²#       FM   ¨À  *  ±\M    ¨À     ¯”L  ì)`	@  ¯ªà@  *  ,«0z@  Ü²)d@      (€ |Sì]h  ¯”   
         *    ÷	    ƒ ÃæÎ Î• ƒÒÒÒ€Ä  Ü²)d*  &   4  ÄÄe  
€÷	  À † Æe
 	  ,«0zì)`	¯ªà*  L ‡ æ f…Õ&æ¦f&Ä  ü	  €‚ƒ  ,«0z ì)`	  r „…–%æsÿˆ         È M   ¨À  *  °Pw    ¨À     ¯”      L  s©À@      (( *  °\qh °Pwh  °ôxh °zh °ƒ…h  
  ¯”   
         *    &
&
&
&
Af f&ÿˆÀ  ‡Þ  €
  s©À  & ‡        º M   ¨À  *  “±ä    ¨À     ¯”L  °Pw@  4°u~@        (, áy sh  ¯”   
         *    Õf B 
Á A ÷	  À&
&
f  4°u~
  & ¦w     °Pw       È M   ÐÀ  *  ,°H:    ÐÀ     ¯”L  d©°;@  Ýª K@        (: 4°u~h  ¯”   
         *    W  Æå „&æ=ÿˆÆe €÷	  Áeô  $Ýª K  & @      BÀè÷	  

‡   d©°;       Ü M   ÐÀ  *  —±¼    ÐÀ     ¯”L  °\q@  °z@  *  4°u~@  ´²§*@      (2 ñ }h  ¯”   
         *    f ÕBw   A÷	  &
f¦æ æÿˆ†  °z4°u~  & w   Þ w     °\q´²§*       ” M   0À  *  \gÊQ    0À     ¯”L  Ü²#@  Ü²)d@        ( \gÊQh  ¯”   
             ÷	    R÷	    Ü²)dÜ²#       M   ¨À  *  —±Øs    ¨À     ¯”L  ð)€%@  ,«0z@  *  Ü²#@  Ü²)d@      (V ªgÀ…h  ¯”   
               *    &
÷	     Ä  ‚&
´  æÎe
 ÷	  m  Ü²)d,«0zð)€%&Ü²#*  & &f¦æ&fÅÅe  Ä  ü	  …„ƒ‚€  ,«0zð)€%  L æsÿˆ           Ø M   0À  *  Õ±æ    0À     ¯”L  Ü²)d@      (V   IqÎh  ¯”   
         *    ÷	    ÄŸÿ€À
 ? ‚Æå fæ'ÿˆ  Ü²)d*  & ÁEðÿ@@€€€€a
± BÁ
ýÄ  ˆ0Ä Æe  L  €‡        È M   ¨À  *  Õ±ž    ¨À     ¯”L  s©À@  Ü²)d@  "      (2 Kq¾ h  Kq ^h ¯”   
         *    ÀKÀM÷	          „&
&
& &&ÿˆ  Ü²)d  & Ö€È  ‡   s©À       ¦ M   0À  *  srà    0À     ¯”L  Ü²)d@      (*   sràh  ¯”   
         *    ÷	    ‚Áeüÿ@A B ú°  ²ì   Ü²)d  &  ‡        – M   ¨À  *  á±#    ¨À     ¯”L  Ü²)d@  Ü²@w@        ( Yq„h  ¯”   
             À ÷	    w     Ü²)dÜ²@w       ž M   0À  *  Us€%    0À     ¯”L  Ü²#@  Ü²)d@        ( Us€%h  ¯”   
             ÷	    €‚°       ÷	  Q  Ü²)dÜ²#       ~ M   ¨À  *  Õ±z    ¨À     ¯”L  Ü²ó`@      (   [qM…h  ¯”   
             À/w     
Ü²ó`       ª M   øÀ  *  ä±Èx    øÀ     ¯”L  á)àHúÿä)pHðÿ*  é) xHèÿì)`	Hìÿð)€%Hþÿð)û5Hòÿô)pHîÿ*  ô)–œHôÿõ)àHøÿlOp…Hêÿó[°	Höÿ    (  
  ¯”          ¤ M   ¨À  *  ý± X    ¨À     ¯”L  Ü²#@  Ü²)d@        (  –w h  ¯”   
         $    ÷	    ƒ ö ƒæ æ÷	  G  Ü²)d Ü²#       Ô M   ÐÀ  *  ²      Ïy    ÐÀ     ¯”L  s©À@  Ü²#@  "      (> Iqh0 Ïy€}h  ¯”   
         *    Õ 
Á B÷	( W/   	‚D  Ä
ÁüÁ7    (s©À  & ‚
½ ‡ f &
÷	  }  Ü²#       º M   0À  *  •y€%    0À     ¯”L  Ü²#@  Ü²)d@        (, •y€%h  ¯”   
         *    ÷	    @ƒ€ÃÃÒƒÃð   Ü²)d
  & ÷	  E  Ü²#       ¼ M   ¨À  *  
²z    ¨À     ¯”L  Ü²)d@  Ü²@w@        (. Ös  h  ¯”   
         *    À÷	   X ƒÃe ÄÔÔ       ÅETÅ  
Ü²)d  & ETw     
Ü²@w       ~ M   ¨À  *  ²4f    ¨À     ¯”L  Ü²#@      (   z4fh  ¯”   
             &
÷	  -  Ü²#       ê M   ¨À  *  ž²jM    ¨À     ¯”L  Ü²""@  Ü²#@        (V ¼`h  ¯”   
         *    @À‹#A  Á
ÁE &
&
BÂ
— ? ‚ƒÃEðÿÂ@*  &  
± DÃ
ýQÀŠí‚‚‚‚¦÷	  +–%  $Ü²#  L À ÷	  ‡   
Ü²""       ~ M   ¨À  *  ž²õx    ¨À     ¯”L  Ü²#@      (   ÃHXh  ¯”   
                   &
÷	  1  Ü²#       z M   ¨À  *  ´²§*    ¨À     ¯”L      ( ´²§*h  
  ¯”   
             æ æ)ÿˆæ æÿˆ‡        ² M   ÐÀ  *  Ü²""    ÐÀ     ¯”L   ©`;@  ¹«´‰@        (( Ü²""h  ¯”   
         *    ÷	  ÀÀa  ÀaÈ	ö ‡ ÷	    ä‰å‰  ¹«´‰ ©`;  & ‡        Œ M   ¨À  *  Ü² #    ¨À     ¯”L  s©À@      (   Ü²#h  Ü²#h ¯”   
             ¦ÿˆ€È  ‡   s©À       š M   ¨À  *  Ü²ó`    ¨À     ¯”L  Ü²      #@  Ü²)d@        ( Ü²ó`h  ¯”   
             ÷	    ƒæ æ&w     Ü²)dÜ²#       Ä M   ¨À  *  Ü²)d    ¨À     ¯”L  Ü²""@      (H   Ü²)dh  ¯”   
         *    „C“Âà‡&
Â
ûÂ`‚
‚`Ba¦—#&  & ÿÿ‡
Ã
õ‚L À €÷	      "Ü²""       ¨ M   ÐÀ  *  Ü²@w    ÐÀ     ¯”L  Ü²#@      (,   Ü²@wh  ¯”   
         *    Æå ‚CÒÒCÃÃe ÒÒÒÒ&w       &Ü²#
  &             ^M   ¨À  *  zµz    ¨À     ¯”      L  ¢
.€H ¬
5…H *  ¬
q…H ¬
……H ´
ÑpH , H 2‘H *  2ÑpH 3^sH 3®sH tÑpH #""H *  #žwH #zH #úH  ¬#‘H ¸#N&H *  ¸#óyH ¸#v~H ,0‘ƒH ,0œƒH ,0ÏƒH *  ,02„H ,05…H ,0q…H  ,0……H -0’H *  -01H 00ÑpH 00‡qH 00sH  00sH *  00sH 40‘8H 40È8H 40Ì8H 40á8H *  40’9H 40Q:H 40W:H 40;;H
 40:<H  *  40wH 40ÇwH 40ÛwH 40ÜxH 40üxH *  40CyH 40NyH 40RyH 40žyH 40ÑyH *  40îyH  40óyH 401zH 40<zH ¡UQdH *  «U-}      H «UÎ}H «UH «UV€H ©ní]H
 *  ©nŽ^H ©n¾^H ©nµ_H ©nL`H ©nR`H *  ©nº`H ”st	H  ”s¢H €”sÔH ”s#H *  ”sìQH€ ”s,XH@ ”s`XH ”sLqH ”s}…H @*  ”s¤’H [t{8H [tœÆH  [t¥ÆH [t«ÆH *  ät‘H çtà8H  çt LH çtµWH çt:dH *  çtßfH çtBxH çtóyH ñtÛwH ñtCyH *  ñtNyH ñtRyH
 ñtîyH òt‘H ótn†H *  õt›XH õtZH õtZH õtZH
 õt]ZH *  õteZH õt…ZH õtZH õt®ZH ötQH *  öt.H ötQ–H öt.™H ${‘H ${H *  ${n	H %{Î}H &{-dH 0{­pH       2{-H *  2{‘H 2{ H 2{n"H 2{­pH 6{!H *  6{,H 6{!€H 6{,€H ­‡‘H Ô’§H €*  Ô’ÔH Ô’7!H  Ô’#H Ô’xQH€ Ô’qH@ *  Ô’LqH Ô’VsH Ô’}…H @Ô’¤’H Ô’RæH *  .”ÒH .”»H .”à8H  .”ÖKH
 .” LH *  .”¶^H .”ìqH .”BxH .”’yH .”óyH   4”ŽwH     (  ¯”          ZM   OÀÅÎ*  ?uÖd    OÀÅÎ   ¯”L  p©Åœ@  Ã©i"@  *  .ªK@  .ªþK@  («v"@  («X@  R«°'@  *  « w@  ¹«]Œ@      (T «E`h ¯”   
         *          ÷	  ÷	  †‡ ÂÂeìÿ
û	J ‡      ÂÂeàÿ   R«°'(«Xp©Åœ¹«]ŒÃ©i"*  & 
û	J ‡ÂÂe  ÷	  	‡ÂÂeÈÿ
5
> û	J †  («v"0 
.ªþK   L w   w     .ªK
« w       $M   OÀ…È*  3uIq    OÀ…È   ¯”L  J©v"@  Ã©i"@  *  .ªK@  .ªþK@  R«³'@  « w@  ¹«]Œ@        (D «•h ¯”   
         *      ÷	  ÷	  †‡ õ¥@  †õ0û fÂÂeÞÿ  R«³'¹«]ŒÃ©i""  & 
û	J ‡ÂÂe  ÷	  †w   w   !  J©v"2 
.ªþK.ªK « wŒ       ° M   NÀEÛ*  3ukM    NÀEÛ   ¯”L  D©ö`@  Ã©`"@  "  ¹«]Œ@            ( «¯h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
Ã©`"D©ö` 
v       ° M   NÀÅÎ*  3uþ_    NÀÅÎ   ¯”L  G©¶Z@  £«i"@  "  ¹«]Œ@      ( «&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«i"G©¶Z 
¯       ² M   NÀEÛ*  4u;;    NÀEÛ   ¯”L  i©öy@  £«`"@  "  ¹«]Œ@      ( «{h  ¯”   
             ÷	  ÷	  †‡ æÎe  ‚{ J   ¹«]Œ
£«`"i©öy 
        ° M   OÀ¼*  7u`"    OÀ¼   ¯”L  Ý©6€@  £«`"@        "  ¹«]Œ@      ( «œ,h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"Ý©6€ 
        ° M   NÀÕ*  @u`†    NÀÕ   ¯”L  U«6€@  £«`"@  "  ¹«]Œ@      ( «\gh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"U«6€ 
        ° M   NÀÕ*  6ut:    NÀÕ   ¯”L  ¹©¶Z@  £«`"@  "  ¹«]Œ@      ( «ö&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¹©¶Z 
        ° M   NÀÕ*  Eu¡d    NÀÕ   ¯”L        £«`"@  ¹«]Œ@  "  ¬6@      ( «Ä…h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¬6 
        ° M   NÀÕ*  4u%!    NÀÕ   ¯”L  e©6N@  £«`"@  "  ¹«]Œ@      ( «Ôh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"e©6N 
        â M   NÀ…á*  Bu    NÀ…á   ¯”L  •«õ
@  £«`"@  *  ¹«]Œ@  j¬õ<@      (* «Iqh «™’h 
  ¯”   
         *        ÷	  &
÷	  æ ÷	  †–
‡ ÂÂeàÿ   •«õ
j¬õ<
¹«]Œ¹«      ]Œ£«`"  & { J        ü M   NÀ…È*  5u»p    NÀ…È   ¯”L  š©õ
@  Ã©i"@  *  .ªK@  .ªþK@  R«°'@  ¹«]Œ@      (2   «"h ¯”   
         *        ÷	  ÷	  †‡ æÂÂeìÿ
û	J ƒ‡ÂÂe  R«°'š©õ

¹«]ŒÃ©i"  & Þÿ
÷	  w     
.ªþK.ªK       ¬ M   NÀEÂ*  5u%™    NÀEÂ   ¯”L   ©µ@  Ã©`"@  "  ¹«]Œ@      ( «#h ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J    ©µ¹«]ŒÃ©`"       Â M   NÀÕ*  4uH;    NÀÕ   ¯”L  p©Åœ@  Ã©`"@  *        « w@  ¹«]Œ@      (" «h ¯”   
         &      ÷	  ÷	  †‡ ÂÂeðÿ
µ> û	J w     p©Åœ¹«]ŒÃ©`"$« w       ¦M   OÀEÂ*  9uüX    OÀEÂ   ¯”L  «)x@  «¶{@  *  «¸{@  «º{@  «¼{@  «¾{@  ¹«´‰@  *  5¬ ™@  
­XT@      (Š «v:h  «6xh 
  ¯”   
         *    ÷	  Ã  Ãóµ ( ¡ ‡ ÷	  Ã  ÃÄó*   ¹«´‰
5¬ ™¹«´‰ 5¬ ™*  & ± ‡ À  Á  ÷	< Á  ÷	4 Á  ÷	, Á     «¶{«¸{«º{ «¼{(«¾{*  L ÷	$ À  Á  ÷	 3
$ ó& óe" & ó ( ¡   

­XT      «)x  r ‡ 
Bà4þÿ
ˆ
@‡        M   NÀèã*  Gu¼    NÀèã   ¯”L  «êv@  ¹«]Œ@  "  5¬ ™@      (f «ñh  ¯”   
         *    ÷	  E …)‡Å'Í¥ $Ã  Ãó5 ( À  ¹«]Œ5¬ ™*  & pÿ÷	  D „‡Ä£	 ôµ  æ  æ  «êv  L )ÿˆæ  æÿˆè‡ Ààú÷	    «êv       ¬ M   NÀÅÎ*  Buá"    NÀÅÎ   ¯”L  £«`"@  §«õ<@  "  ¹«]Œ@      ( «!th ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   §«õ<¹«]Œ£«`"       ¬ M   NÀEÂ*  DuÖs          NÀEÂ   ¯”L  £«`"@  ¹«]Œ@  "  ò«ˆ@      ( «åh ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   ò«ˆ¹«]Œ£«`"       jM   NÀÅç*  6u"    NÀÅç   ¯”L  ¼©õ‡@  Â©õ#@  *  «µ@  •«µO@  £«`"@  ¹«]Œ@  È«õ
@  *      (L «u'h «U(h «T[h0 «Tqh
   «Ayh& ¯”   
                       ÷	  &
÷	&  •«µOÂ©õ#¼©õ‡
È«õ
«µ¹«]Œ*     æ ÷	  æ 	÷	  æ ÷	  æ ÷	  ¹«]Œ¹«]Œ¹«]Œ"¹«]Œ  :   †‡ ÂÂe¼ÿ{ J   £«`"             ä M   XÀ  *  `	    XÀ     ¯”L  #z@  $9Ì@  "  s©À@      (F s©<dh  ¯”   
         *    æ|³&€&
f& &æGÿˆ‡&
&
&
&
& $  & &æÿˆÀ  †×'    ± À  –‡   #zs©À$9Ìs©À      R M   vÀ›½*  ƒ,d    vÀ›½   ¯”L      (  
­D"(  
  ¯”         DM   wÀ[Ð*  K	VN    wÀ[Ð   ¯”L  s©À@  °s@  *  ù±oŒ@      (  
­D"(„ ;¯VNh  a³VNh 
  ¯”   
   
­D"  *    w	  fB C 	œ" ¦æ&æÿˆ	‡÷	8   ù±oŒ*  & †Â  ÃSYî      ð  * ‡ Å° p0 p2   s©À*  L q 1 ð• * ‡ Á  Áe œ" f¦æ  °s  r ÿˆ‡DC’B A ‡       ÄM   wÀøÊ*  ¯ˆw    wÀøÊ   ¯”L  °s@  ù±oŒ@  *  b³—G@  f³Ð@  i³‚@  q³¯:@  r³"&@  *  w³·€@      (  
­D"(¸ „¯½`h  ¯”   
   
­D"  *    w	  ð * 8 w œ ðµ  ðµ ) ÷	  ù±oŒ*  &   ðµ   ð¥   øÿÿ  Bà÷	  &œ  b³—G&w³·€*  L * ÷	  
„&
ðµ # ðµ!  ðµ ) &  i³‚*  r ÎeP æÂ  Âe Ê¦æðµ # &æ  °s$  ˜       •&Ä ÷	  †•p* ÷	  w     q³¯:r³"&"f³Ð      @M   wÀ›½*  •e	    wÀ›½   ¯”L  °s@  f³Ð@  *  i³‚@  q³¯:@      (  
­D"(v c³Iqh  
  ¯”   
   
­D"  *    ðµ  0fÂ  &
Âe
 Ê%ÿÿ¦æ&æ  °s*  & &ÎeH æ
÷	  U•
 Â …Ã  i³‚*  L ÂE •ÕfÄ ÷	  p  †ñ  ±
    q³¯:  r w     f³Ð      Ü M   vÀÊ*  zÌ    vÀÊ   ¯”L  i³‚@  q³¯:@  *      (  
­D"(6 e³²Zh  f³t:h r³®Sh 
  ¯”   
   
­D"  *          Ä Ä Ä 	ðµ  	f÷	  u
 ÷	     i³‚(q³¯:  & ‡ ñ  ±
  ‡       ²M   wÀÊ*  œ,      wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³J,@  p³—y@  r³Þ@  *  r³ü@      (  
­D"(‚° }h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³J, r³ü*  &  ÷	Â ð¥öÿ* 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* úðµ  ÷	  ó‡÷	  ï‡ðe  p  p³—ye³&*  r   p  ‡÷	Â â‡ ð¥   Cƒ
ó*  ˜ Ãðµ  ÷	Ð ð¥   ð 0 ã      ð•Øÿ* *  ¾ Äð¥   æÂe@ Ã Îà÷	x ƒµ‡÷	 ²‡*  ä 
ÁE p ¬ðµ  ÷	| ð p *  
 °  æÄ ð Îà÷	, ƒƒ÷	J *  0á÷	 ù†ð•Øÿ* Á`‡ æ÷	  ƒ ‡ æ  r³Þ*  V Càƒ#ƒÎà÷	  Î¦÷	Ôÿ‚ð†–
‡    m³oŒ
  |DàÄ ‡       ¦M   wÀÊ*  œ,hy    wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³K,@  r³ü@  s³k@  "      (  
­D"(~°	€h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³K, r³ü*  &  ÷	² ð¥öÿ* 	ð       ð * ðÕ ) w     (f³Ð*  L ð•öÿ* ú÷	  ÷‡ðe  p  p  ‡÷	Â   e³&*  r ê‡ ð¥   Cƒ
óÃðµ  ÷	Ü *  ˜ ð¥   ð 0 ãð•Øÿ* Ìð¥   æÂe*  ¾ @ Ã Îà÷	„ ƒ½‡÷	 º‡
ÁE p ´ðµ *  ä  ÷	ˆ ð p  °  æÄ *  
ð Îà÷	8 ƒƒ÷	V á÷	 ù†ð•Øÿ* *  0Á`‡ ðµ ) w   æ÷	  ƒ ‡ æ Cà  s³kr³ü*  Vƒ#ƒÎà÷	  Î¦÷	Èÿ‚ð†–
‡  DàÄ   m³oŒ  |‡       JM   xÀ¸Ý*  E`€W    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  b³Ó@  c³      Iq@  d³?!@  e³²Z@  *  f³Ð@  f³t:@  f³y:@  i³‚@  m³lE@  *  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@  *  s³þ}@      (  
­D"(àh±p!h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w úðµðÿ  ù±oŒ
°sf³y:*  &  w ,ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w øÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÷	  ‡÷	*ñ   s³þ}*  ˜   Tðµ # ÷	  ‡Lðµ   ð¥     f³t:*  ¾  ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0 *  ä p2 ÷	  ï‡ðµ # 'ðP ðÕ )       ÷	  †ðµ  
c³Iq$e³²Z*  
@ # ð¥Çÿ* ð * ff f ÷	  ±   $d³?!*  0± ‰‡÷	  †
w ò ðµ  ð  8 ðe$   e³²Z"°s*  V8 2 &À  Áe ÷	  €Z‡p8 q
 ÷	  °s¡«*  |ì V‡0
 ð  ðµ  #0  0  œ  *  ¢Ä¥ ‚‡œA Ä¥ ÄŠð ð•   *  È00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ* 0
@   r³,}*  î÷	  „ðµ # &
&æµ &Ä ÷	  †  i³‚&q³¯:*  ‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ*   r³"&*  :ÁeB Â÷	  ÷	  °•* âð•Õÿ* äð•Ôÿ*   r³®Sm³      lE*  `àð•Óÿ* Üðµ  w ÷	  ÕeB Æå
 •  i³‚*  †Åe > Ä €…
ðµ  # ÍÕ Ä ðµ *  ¬# Ä DÃÍÅ ÑÄ ðµ # Ä …& *  Ò0
 ðµ # Õü Õ÷
 
÷	    (q³¯:*  ø‡0 @ ° Æe
 EX‡°
6 ðµ   ðÿ*   ðµ # ð 
 ðµ@ # ðÿ? ðµ@ # *  D0 4 0
 6 ðµ  1ðµ # )÷	  †æ   "r³ë*  jð¥öÿ* * ÷	pþ°* ðµ@ # 0l  *  ðµ # 	ð•   ð•  02  ðµ  8 *  ¶÷	  ÷	  ‡  ðµ!  ðµ   p0 p  b³Ó
f³Ð  Ü2 ‡       M         xÀ¸Ý*  F`à8    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  f³Ð@  f³y:@  *  i³‚@  q³¯:@  r³"&@  r³,}@  r³ë@  "      (  
­D"(4h±ì&h  ¯”   
   
­D"  *    w	  Á  w zñB ÷	  ð8 w rðµðÿ  ù±oŒ
°sf³y:*  &  w €ðµ # ðµ  ðµôÿ w lœ*  L   Ä¥ †w LÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  †  &a³VN*  ˜ w ò ÷	tñ  ðµ  w ì ±
  ðµ  *  ¾ ð  8 ðe$ 8 2 &À  Áe ÷	  €R‡  °s°s"¡«*        ä p8 q
 ÷	Î N‡0
 ð  ðµ  #0  *  
0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð*  0 ð•   00  0  ÷	  0
@ ‡ ÷	 ð•  r³,}*  VÕÿ* 0
@ ÷	  „ðµ # &
&æµ &  i³‚*  |Ä ÷	  †‡ ð•Ùÿ* ÷	  ð•Ëÿ* ± ‡ ð•Äÿ  
q³¯:r³"&*  ¢* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ  w *  È÷	  ÕeB Æå
 •Åe > Ä €…
ðµ  i³‚*  î  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ *  ðµ # Ä …& 0
 ðµ # Õü*  : Õ÷
 
÷	  ‡0 @ ° Æe
 E  q³¯:*  `X‡°
6 ðµ         ðÿ ðµ # ð 
 ðµ@ *  †# ðÿ? ðµ@ # 0 4 0
 6 ðµ  1*  ¬ðµ # )÷	  †æ ð¥öÿ* * ÷	Žþ°*   r³ë*  Òðµ@ # 0l  ðµ # 	ð•   ð•  *  ø02  ðµ  8 ÷	  ÷	  ‡  ðµ!   b³Óf³Ð   ðµ   p0 p2 ‡       PM   xÀ¸Ý*  F`ÐW    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  c³Iq@  d³?!@  *  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  *  m³lE@  q³¯:@  r³"&@  r³®S@  r³,}@  *  r³ë@      (  
­D"(æh±²'h  ¯”   
   
­D"        *    w	  Á  w ñB ÷	  ð8 w  ðµðÿ  ù±oŒ
°sf³y:*  &  w 2ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w þÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  ‡  &a³VN*  ˜ ÷	*ñ  Tðµ # ÷	  ‡Lðµ   ð¥   f³t:*  ¾    ×  †ð•Øÿ* w F
Å`p!2 ü‡Åà*  ä Åp0 p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  c³Iq*  
  †ðµ@ # ð¥Çÿ* ð * ff f ÷	  e³²Z*  0  ± ± ‰‡÷	  †
w ò ðµ  ð    d³?!e³²Z(°s*  V8 ðe$ 8 2 &À  Áe       ÷	  €Z‡p8   °s¡«*  |q
 ÷	ì V‡0
 ð  ðµ  #0  0 *  ¢ œ  Ä¥ ‚‡œA Ä¥ ÄŠð *  Èð•   00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ*   r³,}*  î0
@ ÷	  „ðµ # &
&æµ &Ä   i³‚*  ÷	  †‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñ  q³¯:r³"&*  :Â&œ* ÁeB Â÷	  ÷	  °•* âð•Õÿ* ä  r³®Sm³lE*  `ð•Ôÿ* àð•Óÿ* Üðµ  w ÷	  ÕeB   "i³‚*  †Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä*  ¬ ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä *  Ò…& 0
 ðµ #       Õü Õ÷
 *  ø
÷	  ‡0 @ ° Æe
 EX‡°
6 ðµ     q³¯:*  ðÿ ðµ # ð 
 ðµ@ # ðÿ? ðµ*  D@ # 0 4 0
 6 ðµ  1ðµ # )÷	    (r³ë*  j†æ ð¥öÿ* * ÷	pþ°* ðµ@ # 0l*    ðµ # 	ð•   ð•  02  ðµ  *  ¶8 ÷	  ÷	  ‡  ðµ!  ðµ     b³Óf³Ð  Üp0 p2 ‡       *M   vÀÊ*  af Z    vÀÊ   ¯”L  a³—K@  e³&@  *  e³&@  r³ë@  w³œ€@      (  
­D"(\   p³¿Zh  ¯”   
   
­D"  *    ° 6 p 4 
 ì0 Á`p       ÷	  ‡ ÷	  ü‡   e³&&a³—K*  & æf¦ðµ ) ÷	  ‡°6 °4 ÷	  °e ð‹  w³œ€"r³ë  L * w   Æe ± ‡   
e³&      M   wÀ›½*  \g      wÀ›½   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³J,@  p³“y@  r³Þ@  *  r³,}@  r³ë@  w³™€@  w³·€@      (    
­D"(r•± }h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³J,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ        ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðµ   r³,}$f³Ð*  ¾  ÷	  †ð¥öÿ* ò0,  ÷	  ÷	Vé‡  
p³“y"r³Þ*  ä ðµ  
÷	  ‡ðÅ ) ð * ðÕ ) ðµ   e³&*  
 
ð¥   Óð¥   Ól ð 0 Ál*  0 ð  
ƒð¥   øÿÿ ÷	ª µ‡  ð¥*  V   ð  ð Òð¥   òe þÿÁe@ *  |Ã ÷	‚ 6‡  ÷	t /‡‚
ÂE ° ÷	¨ *  ¢ðe  p ðÕ )  ì ‡ðµ  ð¥*  È   , 	ðµ  ÷	 ÷	T ‡÷	  w Èþ  $r³,}*  îw ¾þ‡ ÷	  ‡÷	L †÷	  ‡ B æ ƒàƒ#        w³™€r³ë*  ƒÎà÷	  Îf÷	Ìÿ î†–
‡ Â`‡ ð¥  m³oŒ*  :öÿ* ð * w   ± ðµ ) 04  06 
   f³Ð  ` l0 ì ° ‡       ¼M   wÀ›½*  \ghy    wÀ›½   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³K,@  r³,}@  s³k@  *  w³™€@  w³·€@      (  
­D"(>•±	€h  
  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³K,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Š      f÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   0,   r³,}$f³Ð*  ¾  w   ðµ  
÷	  ‡ðÅ ) ð * ðÕ  
s³ke³&*  ä  ) ðµ  
ð¥   Óð¥   Ól *  
ð 0 Ðl ð  
ƒð¥   øÿÿ ÷	¦ Ä‡*  0  ð¥   ð  ð Òð¥   òe *  VþÿÁe@ Ã ÷	~ 4‡  ÷	p -‡‚
ÂE *  |° ÷	’ ðe  p ðÕ )  ì ‡ðµ*  ¢  ð¥   
, ðµ  ÷	 ‡÷	    (r³,}*  Èw êþw àþ‡ ÷	  ‡÷	: †w   ‡ B æ   w³™€s³k*  îƒàƒ#ƒÎà÷	  Îf÷	      Ìÿ î†–
‡ Â`  m³oŒ*  ‡ ± ðµ ) 04  06 
  l0 ì °  : ‡       Ê M   vÀÊ*  \qò    vÀÊ   ¯”L      (  
­D"(R   r³,}h  ¯”   
   
­D"  *    ðµ  $ ðµ  
ð¥   ’¤ð¥   *  & ’¤° 0  ð¥   0  l °  ƒ0
  L   ‡        Z M   tÀXÀ*  `Š }    tÀXÀ   ¯”L  ¼›HüÿÊ8THþÿ      (  ¯”          O   î*OÀ*  À«¤`    î*OÀ   ¯”L      (  ó`(ª(Ž   š©Ô€h  ¯”   
   ó`(ª  *            	 
                *  &          ! " % & ' ( ) * + , - *  L . < = > ? @ A B C E F G H I J K P Q R   r S T U V Z [ _ ` a d e o p         6O   î*OÀ*  ´©}    î*OÀ   ¯”L  Ý©ù}@      (    ó`(ª(œ "&œwh  ¯”   
   ó`(ª  *    DB÷	  €¢‰2÷	j ÁŒ J¤Ñ‹ü+p’/   
Ý©ù}Œ *  & ÈU  É¥F ðU   á¥U ðU  ÷	6 Ê¥S *  L ðÕ  / ÷	$ °’8 ÷	 °( ÷	 °, *  r 3
 ‡ Ñ‰ûÄŠBÂ%ÿÿ‡ ÖóNORAFMIN  ˜ U         pO   î*OÀ*  ¾©Œ    î*OÀ   ¯”L  ¼©Î@  ,«0z@  *  ‹¯=      @  ‹¯@=@  ±}s@  ù±oŒ@      (    ó`(ª(„ ¾©Œh  ¯”   
   ó`(ª  *    w	  €€
ÀE …àƒ€S”À
ýÃ &
Ã
ý  ù±oŒ*  & €p ° ÷	  %‡È• ÷	   ‡± öµ  Ã  ‹¯=‹¯@=*  L   À Àe ÁeB ‚Âe 
÷	  ‡öµ    ,«0z±}s  r Ã  Ä ÷	  ¡ F‡   ,«0z¼©Î       œ O   î*OÀ*  :ª    î*OÀ   ¯”L  ³«¿@      (    ó`(ª( ;–h  ¯”   
   ó`(ª  "    Õ@DB
¦÷	  ‚RÅùÀ‡   ³«¿       š O   î*OÀ*  ‘«–    î*OÀ   ¯”L  ³«¿@            (    ó`(ª( ¬ppßh  ¯”   
   ó`(ª      ÕDÅ ÷	  f÷	  €‡   ³«¿³«¿       Ø O   î*PÀ*  ³«¿    î*PÀ   ¯”L      (  ó`(ª(X   ³«¿h  ¯”   
   ó`(ª  *    æ 
 
Å
ÂB  Õ€¤‡€¤‡Â
Âe Ê÷  B *  &  
C€bÁÁÁ@`ÁÁ`Î
ä€Ö‡ Z@Àÿ9/îÿ   L àÿ$#÷ÿ.-îÿ         ¸O   î*PÀ*  š©¨S    î*PÀ   ¯”L  &v~@  ü¨ }@  *  ©»W@  e© }@  š©,t@  š©‘t@  ¹©àL@  *  ,«0z@  ù±oŒ@      (  ó`(ª(Œ š©¨ph    š©Ðphr ¯”   
   ó`(ª  *    w	  &€“      ŠÎ &÷	  ÷	  Áx ÷	  ÷	  Á$  ù±oŒü¨ }š©‘tx  ¹©àL&©»W*  & ‚ ÷	   ÷	  ÷	  ÷	  €  Îä‰  ‚ ¹©àL©»Wš©,te© }*  L Î
å‰ð‹  Öá‰‡ Ã  Àt ðÅ a á‰@   &v~,«0z  r ÷	Šÿ… FTN ERROR , NUMBER        ZO   î*OÀ*  a©u~    î*OÀ   ¯”L  ,«0z@      (  "  ó`(ª(¸ <@h, u~@h  ¯”   
   ó`(ª  *    Í¥ Ð‰0÷	^ -‡@ Ã Áe B÷	\ Ã
"*  & Ð•: øÍ¥ Ð‰÷	2 ‡@ B ÷	6 Ð•- *  L B ÂBl Âe‘ ”””Ð•- B÷	 ‡ Á  Áe  ‘ &,«0z*  r $ fæ      =ÿˆ‡ Âeö Â‹ü€Âe:/Â Â ‡ JANF$  ˜ EBMARAPRMAYJUNJULAUGSEPOCTNOVDEC       ÊO   î*PÀ*  ½«ô    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  :ª  @  Ôª€p@  º«€p@      (  ó`(ª(˜   ‹w3Xh  ¯”   
   ó`(ª  *    fÆå €&æ=ÿˆ‡Æe 7	* V   \     b    V  :ª  "\ $:ª  &v©€p(b   &   l   z     l &  :ª  l Ôª€p
z :ª  ì¨€pl   4   z       ˆ   (  Ôª€pz :ª  
ì¨€pì¨€pˆ º«€p*  B N Ö\ Æe €…‡ ¦ \ ¦ \ ¶ ¶  N *  h  \ æ æ \ pC  €‚f&¦\ €          Ž  & &\        O   î*OÀ*  —©€%    î*OÀ   ¯”L  þvëu@  Ý©ù}@  *  («p!@  U«Õ@      (  ó`(ª(P ž!À¨h    —©€%h ¯”   
   ó`(ª  *    æJ ¦)¦ ÷	  Æe ‚÷	  €È0 " È5  J þvëuÝ©ù}*  &  ÈU €È‹÷	  ø• " Á ÷	  3
 ‡ \   («p! U«Õ  L ¡‰ú       ² O   î*PÀ*  •« }    î*PÀ   ¯”L  ðyÀ¨@  ,«0z@  "      (  ó`(ª(& \q`©h  ¯”   
   ó`(ª  *    Ã  ó –%‹³ ³•‚ ÀÁÂÃ‡ w     ,«0z(ðyÀ¨       ²O   î*OÀ*  =ª€p    î*OÀ         ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ³©<4@  ¼©Î@  Ý©Õ@  *  6ªi;@  7ª	#@  («p!@  ,«0z@      (  "  ó`(ª(š š;À¨h  =ª€ph ¯”   
   ó`(ª  *    æ  &
÷  ÷	  ÈU ÈE €È5Ÿ‰Þ	Ü	Ã    R~8þv³q6ªi;(,«0z*  & ÷	@ ÂœU ÁH ó‹N ö‡ ó‹N Ã‰¦f÷	 *  L ‚ó
Z óÑž ³
 Â
÷Þ	Ã  à÷	     ,«0z$Ý©Õ*  r óÿÿN Ñµ 3ŠN ð
øÿ
s  Áå sZ   ˜ ‡        Ú O   î*PÀ*  •«ø    î*PÀ   ¯”L  ðyÀ¨@  ,«0z@  *      (  ó`(ª(( \qÀ¨h \q°©h \q(ªh
   \q       ªh  ¯”   
   ó`(ª  *     —Á  Ã  ó –%‹³ ³•‚ ‡ w   ,«0z  &     ðyÀ¨       jO   î*PÀ*  D¬¶p    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(z t€À¨h v€À¨h y€À¨h |€À¨h  *  €€À¨h €À¨h ö« h ö«€%h ö«@8h "  ö« Kh  ö« dh ö«@jh ¯”   
   ó`(ª  *    æææææææÃ*  &   &
Ž —£ —£ Îe ¶­  N³¦ ó‹  ,«0z*  L ‚ Ö³T ³H Þ	\ ³ T ³ H ƒÖ¶   r  ¶ ^        ˜ O   î*PÀ*  •«³}    î*PÀ   ¯”L        ,«0z@      (    ó`(ª( ëy`©h  ¯”   
   ó`(ª      €‚ƒ–%Ä  Œ´ ´•‚ ‡   ,«0z       ö O   î*PÀ*  3¬Ñ    î*PÀ   ¯”L  ,«0z@      (  "  ó`(ª(P s€À¨h  ö«Àh ¯”   
   ó`(ª  *    æN æÃ  óT ó ¦ ³ H ³ Œ ƒ–%  N ,«0z*  & Þ	æÃ  ó ¦ óe H ƒÞ	ææÃ  öŒ  ƒ  
,«0z ,«0z  L ^ \        ú O   î*PÀ*  ã«ÌS    î*PÀ   ¯”L  ,«0z@      (  "  ó`(ª(Z +}À¨h  á«Àh ¯”   
   ó`(ª  *    æX æÃ  ³ Œ ³ H ³ X óX ó ¦         X ,«0z*  & óT ¶ –%ƒÞ	æÃ  ó ¦ óe H ó
X ó  ,«0z  L ¦öŒ  ƒ^ \        ¸O   î*PÀ*  ò«)	    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(° ,}À¨h .}À¨h 1}À¨h  4}À¨h *  8}À¨h 9}À¨h á« h á«€%h á«@8h  "  á« Kh á« dh á«@jh ¯”   
   ó`(ª  *    æææææææÃ*  &   &
Ž —£ —£ Îe ¶­  N³¦ ó‹  ,«0z*  L ‚ Ö³T ³H ³X ó® Œ &€$3T 3  ® *  r Œ 3H 3X €¶ Æe ƒÞ	æ&Ã  ÀœU 3`  ",«0z  ˜ H €ó
X       ò¦öŒ  ƒ^ \        ’ O   î*PÀ*  ¬"    î*PÀ   ¯”L  ,«0z@      (    ó`(ª( =†`qh  ¯”   
   ó`(ª      Í¥ Ð‰ÕÃ  s` ‡   ,«0z       ~O   î*OÀ*  ,«€‰    î*OÀ   ¯”L  â)Ä&H æ)PHl *  Ë«°@  Ë« ‚@  Ë«(‚@  Ë«P‚@  Ë«x‚@  *  Ë« ‚@  Ë«È‚@  °úp@      (  ó`(ª(  *  ù¬ó`¨Äñª¸Qh* ,«1zh( ½«¸jh( Ë« }h´*  ±VNh. <±ƒ…h, ü¬Ä"¬  þ¬¯yì  ­/^¬„ "  ­0^¬  ­¨H ­(  ¯”   
   ù¬ó`( *  (           „                          "  ­/^        ­0^   ü¬Ä"   n *  n                                       (  ”   0:    ´                    *  0
:´­  ­   Æ   Æ      Ì   Ì              þ   þ      ´  ´              &  Ë«°Ë« ‚
Ë«(‚Ë«P‚Ë«x‚Ë« ‚  Â    Ë«È‚       ÌO   î*OÀ*  =ªÀ    î*OÀ   ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ³©<4@  ¼©Î@  6ªi;@  *  7ª	#@  («p!@  ,«0z@  U«Õ@      (  "  ó`(ª(¬ Ÿ;À¨h  =ªÀh ¯”   
   ó`(ª  *    æ  &
÷  ÷	        €È0 " ÈU ˆÈ5Ÿ‰  R~8þv³q6ªi;*  & Þ	Ü	Ã  ÷	B ¸Š" ÂœU ÁH )ó
Z 3
Z ¦  
,«0z*  L f÷	J ð
øÿ÷	 ‚ð{” ³
 Â
êÞ	Ã    (,«0z*  r áÀ " 3  Z ŠŠóå Z s ‡ À øÕ  ˜  " À   ÁìZ w     U«Õ       tO   î*PÀ*  «}?    î*PÀ   ¯”L  ‡À¨@  Á8À¨@  *  Ç8À¨@  KÀ¨@  ‡KÀ¨@  qÀ¨@  ,«0z@  "      (  ó`(ª(¦«}?h  ¯”   
   ó`(ª  *    f&Ã  ó|  Õ¥  ýW­ÿÿ( c3
$ 3
&   ,«0z*  & 3
* 3
( 

÷	 ù@•À¥  ü Z  @ *  L  0 À¥9       Àå0 Â€`ÂÂ`„P³
( åó* *  r 8À rÀE€ÿŠÁ q ô3
* Á€	 S!   
rô €*  ˜ ! !! #! +! 9! L!  ! oóU €( ¾ó
*  ¾ $ ó( eÄ c€9`3
$ ó( [‡ ó
$ ï€*  ä V÷	˜ À• y÷	Ž À•
 tó& À•  ÷	Ú ³
*  
& ×,&  ?‚À• R÷	d ó
& À• \ÖÀ• *  0÷	® „…‡ ÷	D À• O÷	: f
‚
I¥ýI¥û*  V…Â
„À• ÷	d ÷	x @•	 û ùÅ
‡ -$')	  |(/.,:   ‚*  ‚ó( ÷	0ÿó$ ò¾‰ó( üW¥  ýW©0 ‡*  ¨W£9 ƒÀe  ( Àå ó( æ‚
ó$ â*  ÎÄ àÂ
ÝÀU€ ÷	 €; ³
 ó, ~ Â‡Á‰*  ô ž       ž ž ž ž ž ž ž ž ž ž ž ž ž ž ž ž ž ž   ž ž ž ž ž ž ž   
  
:   ô  ô:     :     :   ú  úddddn      ~"˜     $¢   "  "&4   (*  (3
* È÷	jÿ³
$ À 3* Áå( ™3
$ 3
* W *  N È÷	ŒÿÅ÷	@ÿ³
$ è÷	.ÿ@•÷	vÿÂ
û€‡ ó*  t$ Ä5€ÿŠÂ	ó( ¨€¦÷	òþÀ" ¦÷	èþ  šÀ•¤ ÷	>ÿÆ       ž O   î*OÀ*  D©Àv    î*OÀ   ¯”L  D©½`@  Ý©ù}@  *  («p!@      (  ó`(ª( ¯ˆwh  ¯”   
   ó`(ª      Õ¥ Ð‰…
Bw     D©½`             ‚ O   î*OÀ*   ©`;    î*OÀ   ¯”L   ©`;@      (    ó`(ª( 	# }h  ¯”   
   ó`(ª      w      ©`;       (O   î*OÀ*  Ì«f    î*OÀ   ¯”L  ü¨ }@  D©½`@  *  e© }@  š©,t@  š©‘t@   ©{;@  ¹©àL@  *  ,«0z@      (  ó`(ª(¤ °À¨h< 	#8hn *  ç'À¨hf ýfÀ¨h& ðyÀ¨hb  ©`;hn S«@h* "  S«8"hD Ì« dhb Ì«øfh\ ¯”   
   ó`(ª  (    Ã  ÷	  &&÷	  ÷	  „÷	  ÷	  w &  ,«0z
ü¨ }š©‘t¹©àL ¹©àL$š©,t*  $   æZ &Ä” Àœ ÷	Èÿ„
ææZ „ÔÀ  e©       }Z ” œ  Z *  J œ ÷	°ÿæ-ÿˆŽ‡ \ Ö„Ä” À– ÷	’ÿÃ  œ ” "– *  p   Å Åe. Ä B“÷	  Åel Ä
øw   ›   ,«0zD©½`& ©{;(›   – STOP  PAUSE         O   î*OÀ*  û¨/x    î*OÀ   ¯”L  ¾©Œ@  Ý©ù}@  *  ,«0z@      (  ó`(ª(h K	f9h  ¯”   
   ó`(ª  *    DBÃ  ÷	  €¢‰ ÈE ÷	> &
ÄŠ÷	  
,«0zÝ©ù}*  & 4 ŽBŽ
Ê‹Ò¥  úÎ
‚÷	  †«‰  "¾©Œ   L ûU  3
 ‡ ÄŠBÂ%ÿÿ‡ Öõ       Š O   î*OÀ*  ³©<4    î*OÀ   ¯”L      (  ó`(ª(         ³©<4h  ¯”   
   ó`(ª  "    À Â,  ‰Àel Á
ü°. ‡        ’ O   î*PÀ*  9©àL    î*PÀ   ¯”L      (  ó`(ª(   ñÀ¨h  ôÀ¨h ¯”   
   ó`(ª  "    & & A…f&È	„…Î†e\        O   î*PÀ*  e©ö&    î*PÀ   ¯”L  þvëu@  R~8@  *  Ý©ù}@      (  ó`(ª(V ÎÀ¨h  e©€%h 
  ¯”   
   ó`(ª  *    æ  ÷	  ‚ ÷	  €¢‰È5 •‰° °  R~8
þvëuÝ©ù}*  &  ÈU Àe Á„¬‰p s 
 ƒW  ÷‚B@  L óÖ3
 ‡        ìO   î*PÀ*  («p!          î*PÀ   ¯”L  ,°l@  h±²'@  *  ù±oŒ@      (  ó`(ª(¼©ÎhÔ («p!h  
  ¯”   
   ó`(ª  *    w	  &Àe Ä ð•   ð5 öÿð•  É5  ù±oŒ*  &  ð•   ÄE 0‘ ð  ð
  É5  ðÕ*  L  # É€ðÕ # É5 D÷	n ÁeB p& ÷	*  r   †ž‰+  ÷	  †* Â¥æÿðÕ   ,°lh±²'*  ˜ # p ð5 öÿî‰Â¥Ùÿã©‰Â¥úÿÞª‰	*  ¾ ðU€ ôÿÄ0! ¥‰€‡ w	  . 
Âå
   ù±oŒ*  ä 
ûEÁÁAaÁÁÁÁeXÀ`tV ôê'T ô<  
Z ‡        Ä O   î*OÀ*  š©†s    î*OÀ   ¯”L  ,«0z      @      (    ó`(ª(< ""yh  ¯”   
   ó`(ª  *    Ã  Á6 @•…
B”ÂE ÿÂ`Í%ÿÿ

À
ô  ,«0z
6   & B”ÂE ÿÂ`

ù‡ hvx€ •       ê O   î*PÀ*  8ª®S    î*PÀ   ¯”L      (  ó`(ª(4 *  ¡S8ªh  ¡SØªh ¡SA«h  ¡SM«h ¡SP«h *  ¡SS«h ¡SÈ«h ¡S€­h& ¡S¨­h, ¯”   
   ó`(ª  *    & ˆ\   	\  &\  \  \   &  
\  È \        ¶O   î*OÀ*  :ªÀ    î*OÀ   ¯”L  þv³q@  R~8@  *  ³©<4@  ¼©Î@  6ªi;@  («p!@  ,«0z@  *  ±“y@  •± }@      (        ó`(ª(  ';À¨h    :ªÀh ¯”   
   ó`(ª  *    æ  ÷  ÷	  ÈU €È5 š‰Þ	Þ	Ã  À Â  R~8
þv³q6ªi;",«0z*  &  °  ƒ™‰Àe ° ‚
¸üÿ÷	  †,* ö   ±“y*  L ¦‰3 Z 3  ÂœU ÁH ó
Z ;Š ³
 *  r øÀ Àe ÷	  å‡‡ {” ³
 ó
Z Â‰Â
ö  •± }  ˜ Þ	Ã  Ý  ,«0z       xO   î*OÀ*  :ª€p    î*OÀ   ¯”L  þv³q@  R~8@  *  ³©<4@  ¼©Î@  6ªi;@  («p!@  ,«0z@  *  ° }@      (  ó`(ª(z ";À¨h  :ª€ph 
  ¯”   
   ó`(ª  *    æ  ÷  ÷	  ÈE €È5       š‰Þ	Þ	Ã  À Â  R~8
þv³q6ªi;",«0z*  &  °  ƒ™‰Àe ° ÷	  †§‰‚
¸üÿ3 Z   ° }*  L 3  ÂœU ÁH ‡ Ñž ³
 ó
Z Ã‰Â
ö  r Þ	Ã  ì  ,«0z       æ O   î*PÀ*  å«óy    î*PÀ   ¯”L      (  ó`(ª( *  ü(ªh üÈªh ü@«h ü¸«h þ(ªh *  þÈªh þ@«h þ¸«h €(ªh €Èªh   €@«h €¸«h  ¯”   
   ó`(ª      Ö\ ŽŽ–\ Ü\ Ô\  È\        ZO   î*PÀ*  .ª€p    î*PÀ   ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ³©<4@  ¹©À]@  ¼©Î@  *  Ý©      Õ@  6ªi;@  7ª	#@  («p!@  þ¬˜:@  *      (  ó`(ª(B B9À¨h  .ª€ph ­P(h 
  ¯”   
   ó`(ª  *    æ  ÷  ÷	  ÈU ÈE €Þ	ó(  È5Ÿ‰w   R~8
þv³q6ªi;(    &   ÷	   s s l s ‡   ¹©À]Ý©Õ       ² O   î*PÀ*  >ª¸    î*PÀ   ¯”L      (  ó`(ª( *  ñv5ªh  ñvÕªh ñvÅ«h 9z5ªh 9zÕªh   9zÅ«h
 ¯”   
   ó`(ª      &Îe\ &Îe¦\ &ö&ø       â O   î*OÀ*  ¹© X    î*OÀ   ¯”L  þv³q@  þvëu@  *  R~8@  6ªi;@      (  ó`(ª(0 ´'      À¨h    ¾© h ¯”   
   ó`(ª  *    æ. æ¦ ÷	  –%÷	  ÈE €È5 š‰Þ	ø   . þvëu6ªi;  &  3
 ‡ \        ˜ O   î*OÀ*  ;ªsY    î*OÀ   ¯”L  ,«0z@      (  "  ó`(ª( F;À¨h  NÀ¨h ¯”   
   ó`(ª      ¿
  \ ?  \   ,«0z,«0z       –O   î*PÀ*  –©    î*PÀ   ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ¹©À]@  7ª	#@  ,«0z@  *  þ¬˜:@      (  ó`(ª(| ËÀ¨h
 s!À¨h    e©Àh –©Àh ¯”   
   ó`(ª  *    æ  æz æ  æx æƒÃe æÃ  ³       ó  R~8
z R~8x ",«0z*  &  ¨‰³  ³  ƒÖŽ÷  Ã  ó    þv³q",«0z*  L ó  ³ ³g óV ón  ó \ w   ó
\   n $¹©À]  r ‡ ›‰  ‚       ² O   î*PÀ*  >ªÈ    î*PÀ   ¯”L      (  ó`(ª( *  ñv8ªh  ñvØªh ñvÈ«h 9z8ªh 9zØªh   9zÈ«h
 ¯”   
   ó`(ª      &Îg\ &Îg¦\ &ö&ø       Ð O   î*OÀ*  Ý©Õ    î*OÀ   ¯”L  7ª	#@  °	€@  "      (  ó`(ª(> Ý©Õh  ¯”   
   ó`(ª  *    À Àe ÷	  †* 	Á¥öÿÄb ˜‰w           °	€(7ª	#  & §‰°
øÿð%  ø¥  ï‡        ê O   î*PÀ*  –©Ú    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(4 t!À¨h  ""À¨h
 –© h š©€ph" 
  ¯”   
   ó`(ª  *    Ã  3b \ Ã  3d \ æÃ  ³ b æÃ  ,«0z,«0z,«0z  &   ³ d ƒŽ‡   ,«0z       rO   î*OÀ*  *ª€p    î*OÀ   ¯”L  ‡À¨@  ÇÀ¨@  *  ¤!À¨@  &À¨@  G,À¨@  Á8À¨@  Ç8À¨@  *  B9À¨@  KÀ¨@  ‡KÀ¨@  A^À¨@  G^À¨@  *  qÀ¨@  þv³q@  R~8@  —© K@  ³©<4@  *  ¹©À]@  Ý©Õ@  6ªi;@  «}?@  («      p!@  *  ­P(@      (  ó`(ª( ¢8À¨h  *ª€ph 
  ¯”   
   ó`(ª      æ  ÷  €÷	  Î| w     R~8
þv³q«}?­P(       *O   î*OÀ*  *ªÀ    î*OÀ   ¯”L  G9À¨@  þv³q@  *  R~8@  ‹©@8@  —© K@  ³©<4@  ¹©À]@  *  ¼©Î@  6ªi;@  7ª	#@  «}?@  («p!@  *  U«Õ@  þ¬˜:@  ­)@      (  ó`(ª(   §8À¨h  *ªÀh ¯”   
   ó`(ª      æ  ÷  €÷	  Î| w     R~8
þv³q«}?­)       ÀO   î*PÀ*  ¹©À]    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(¼¹©      À]h^þ¬˜:hbó`@«ì ¯”   
   ó`(ª  *    
ÁÞ ³
 ‡ ó,  ‡À•  ‡ Àž 
À•  ó,*  &   ‡Â‰‡ ; ³
 ‡ ó, J †óJ  3
J *  L óV û¥   û•$  û¥+  ;Š û	 3
*  r V ‡ Ál Á
ó, J ƒó J BóJ  ÁìJ *  ˜ ³ xÂ" RÒ ³" pÂ" €â
ø3 h*  ¾ As  d÷	BÿÁ
`û ù€÷	Hÿøû €÷	Vÿ*  ä Tû	 QóH MB÷	ÿ; ³
 Â
Cû*  
 õ€÷	îþ@÷	ÿõóF  û €÷	ÿóH ¢*  0óZ ¼‰³V (óH îû Â Âì »H *  VÞ	Ã  3
V 3
  Þ	Ã  3
J û û	 ó  ,«0z,«0z*  |" óe      $ " ó F 3
Z 
÷	lþ@
÷	`þÀE*  ¢€ÿx „‚
‚
‚
‚
‚
‚
‚
Â³L 3M ³
Z sN   „*  È÷	4þsP Â% ÷	&þsR óH žÀP ×¬M ( *  îÂÀœT Â% À ó¥ T À ó*   R À ó R æ Á ãû € Â‰*  :@3` ( @!û5 @ õÂóû¥,  *  `û¥	  ³
 Á
ôÞ	Ã  ó
N ˆÂœL ­³
  ,«0z*  † @àÎ" €
&Ž
Â% æR æ  ÁT Â  " *  ¬
W  —  ½‰—  üû €ÃH Â8Á¥*  Ò Á¥ &
&
ÁE ÿFà€ÐÁ
ýú	þÿ¾†¿‰
  $ó`@«þÿ*  ø¼Á’føú	 Ã  †À‰ÀH ÁœT Á% Á%         ó`@« ,«0z*  	‚’$J’ŠJNí…ì‡Á
ý›ˆ•™‚€*  DŠÁ  Ð•  Â
úƒ`CàBÐ”Â
ýˆÖÁœU ‚*  jÀH ƒ ð@`àà•  Á
ü€àëzž ® Ú 8  z ž "® $&Ú (8  ì ´¶°²¨¬®ªô *  ì ´¶
°²¨¬®ªô   ¤¾ >v Î ´¶°²¨¬*  ¾ >v 
Î ´¶°²¨¬  ¸®ª  ®ª ó`@«    b
  ó`(ªb       .O   î*PÀ*  «V?    î*PÀ   ¯”L  ËÀ¨@  s!À¨@  *  KÀ¨@  A^À¨@  qÀ¨@  R~8@  e©À@  *  –©À@  «}?@      (  ó`(ª(      2 ×À¨h
 "  !À¨h  e©À]h –©À]h ¯”   
   ó`(ª  *    æ  æ  æ  æ  &f¦æ€ ÷	  ö|    R~8
–©ÀR~8e©À$«}?  &  ƒ‚€‡        ¾ O   î*OÀ*  ,ªe	    î*OÀ   ¯”L  ,«0z@      (    ó`(ª(: á8È}h  ¯”   
   ó`(ª  *    Í¥ Ð‰Ã  ÁÁe$ fæ=ÿˆ†1
 1
   ,«0z  & 1
  @%] ] ]  ‡          O   î*OÀ*  U«Õ    î*OÀ   ¯”L  7ª	#@  •±	€@  "      (  ó`(ª( U«Õh  ¯”   
   ó`(ª      À Àe p ÷	  †¦‰°
øÿ‡   •±	€             ¶ O   î*PÀ*  8ªKŠ    î*PÀ   ¯”L      (  ó`(ª(, *  ñvM«h  ñvP«h 9zM«h
 9zP«h  ¯”   
   ó`(ª  *     &Îe\   À e&\  &Îg\   À
  &  g&\        O   î*PÀ*  —© K    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(Z ¤!À¨h —© Kh 7ª	#h  ¯”   
   ó`(ª  *    Æ æX æó‹‚ 6 æÃ  3
H ó‹‚   
X ,«0z*  & ³ Œ ƒÖÞ	æX æÃ  ó‹‚ öŒ  3
d   X ,«0z  L 3
b 3
 ƒ‡ \        â O   î*PÀ*  "©8	    î*PÀ   ¯”L      (  ó`(ª(, *  Y      À¨h À¨h ¬À¨h eÀ¨h tÀ¨h$ *  µÀ¨h" QÀ¨h ‘Y¡­h
 ‘Y¥­h  ¯”   
   ó`(ª  *    ¼
  …'¼
  …'Ô\ ýü\ ýü
  & ÷%õ       Ú O   î*PÀ*  6ªi;    î*PÀ   ¯”L  ³©<4@  («p!@  *  ,«0z@      (  ó`(ª(6 6ªi;h  ¯”   
   ó`(ª  *    Ã  €Àe 3 ó ¨‰€³ ‚&÷	  3  ,«0z&³©<4  &  È‹Þ	È‹÷	  ‡   («p!       ö O   î*PÀ*  «Ø    î*PÀ   ¯”L  À¨@  eÀ¨@  *      (  ó`(ª(8 ‘Y1ªh  ‘YÑªh ‘YI«h$ "  	Z1ªh, 	ZÑªh0 	ZI«h4 ¯      ”   
   ó`(ª  *     H`…"w   H`…"w   %\  ð   eÀ¨À¨  & Aì é ö ÷       ¤ O   î*PÀ*  Ý©ù}    î*PÀ   ¯”L  ³©<4@  ,«0z@  "      (  ó`(ª( Ý©ù}h  ¯”   
   ó`(ª      Ã  ó ¨‰÷	  3 È‹‡   ,«0z³©<4       Æ O   î*OÀ*  ³«€»    î*OÀ   ¯”L      (  ó`(ª(L   ³«€»h  ¯”   
   ó`(ª  *    æÃL ãûÀÿÿÂ%ÿù
‡€
Ââý†ÂbÀÀ%   L *  & ‡Àe  Àe Àe	 Àe	 Á
äƒ‡    ( @       ö O   î*PÀ*  « ‚    î*PÀ   ¯      ”L  À¨@  eÀ¨@  *      (  ó`(ª(8 ‘Y5ªh  ‘YÕªh ‘YM«h$ "  	Z5ªh, 	ZÕªh0 	ZM«h4 ¯”   
   ó`(ª  *     H`…"w   H`…"w   %\  ð   eÀ¨À¨  & Aì é ö ÷       Š O   î*OÀ*  ³«»»    î*OÀ   ¯”L  ³«€»@      (    ó`(ª( v;	h  ¯”   
   ó`(ª      ÕADEw     ³«€»       ú O   î*PÀ*  «(‚    î*PÀ   ¯”L  À¨@  eÀ¨@  *      (  ó`(ª(< ‘Y8ªh  ‘YØªh" ‘YP«h( "  	Z8ªh0 	ZØªh4 	ZP«h8 ¯”   
   ó`(ª  *           H`
…	"w   H`…	"w   %\    eÀ¨ À¨  & î Aê ç ö ÷       
O   î*OÀ*  •«6‘    î*OÀ   ¯”L  þvëu@  Ý©ù}@  *  ,«0z@  ±„:@      (  ó`(ª(H tÀ¨h    §« h ¯”   
   ó`(ª  *    æF ¦)¦ ÷	  Æe ‚÷	  €È5 ÈE €0
  F þvëuÝ©ù}&  &  Àe 
Â 
÷	  †”‰Ã  3
 ‡ \   ±„:,«0z       jO   î*OÀ*  ©‹    î*OÀ   ¯”L  þvëu@  Ý©ù}@  *  Ý©Õ@  ,«0z@  ±„:@      (  ó`(ª(‚   KÀ¨h  ©Àvh ¯”   
   ó`(ª  *    æ€ ¦)¦       ÷	  Æe ‚&÷	  .€È5 
&Àe  € þvëuÝ©ù}*  &  
Â 
÷	  †—‰Ã  øÿ0
øÿÂ
ól   ±„:,«0z(l *  L b ³ ÷	  û5  óøµ  ïð
øÿîn ³   Ý©Õ$n   r èÞE €3
 „‡ \        |O   î*PÀ*  .ªÀ    î*PÀ   ¯”L  ¤!À¨@  þv³q@  *  R~8@  —© K@  ³©<4@  ¹©À]@  ¼©Î@  *  6ªi;@  7ª	#@  («p!@  U«Õ@  þ¬˜:@  *      (  ó`(ª(V G9À¨h  G9ø¬h$ .ªÀh   ­)h ¯”   
   ó`(ª  *    æ  ÷  ÷	  €È0 " ÈU „Þ	ó0  æ  R~8
þv³q6ªi;$0 *  &   È5	      Ÿ‰Á Áì ÷	  À " s s   ¹©À]U«Õ  L Ál
 s ‡        Ø O   î*OÀ*  D©½`    î*OÀ   ¯”L  ³©<4@  ,«0z@  *  „¯½`@      (  ó`(ª(8 D©½`h  ¯”   
   ó`(ª  *    Ã  ÷	  3 Àe É‹	€É5  ÉU  ÷	  †  ,«0z
³©<4&„¯½`  & œ‰À6 
À
ý3
 ‡        ° O   î*QÀ*  š©³s    î*QÀ   ¯”L  ,«0z@      (    ó`(ª(, ""€h  ¯”   
   ó`(ª  *    Ã  À A W x 
‚Ált É‹€À
= ÉÅ€   ,«0z
  & ‡ Ñ‰‡        bO   î*OÀ*  š©·k    î*OÀ   ¯”L   ©{;@            (  *  ó`(ª(¼ ü¨ }h  e© }hD š©,thx ¯”   
   ó`(ª  *    &
æTIæ æÿˆ&
&
&
&
&
&
&
æ &
Î•*  &  æ æ æÿˆ‡æ æ)ÿˆ‡ &
&
&
&
*  L &
&
&
æ &
Î• æ æ æÿˆ‡æ æ*  r )ÿˆ‡ Åìn &
&
&
æ  fæn &
æ &
Î• (  ˜ æ æ æÿˆ‡æ æ)ÿˆÅn ‡ w     & ©{;       O   î*OÀ*  ¹«WŒ    î*OÀ   ¯”L      (  ó`(ª(d *  ¹«ø‰h\ ¹«@hV ¹«0Žh  ¹«XŽh ¹«€Žh "  ¹«¨Žh ¹«ÐŽh ¹«øŽh ¯”   
   ó`(ª  *    æ æ æ æ
 æ æ &€*  & Àe       f¦æ&¦ v Þ	„ƒ‚€……c  L  … †c‡ 6 ‡ À6` ‡        à O   î*PÀ*  «P‚    î*PÀ   ¯”L  eÀ¨@      (  *  ó`(ª(0 ‘Y¨­h  	Z¡­h 	Z¥­h 	Z¨­h 
  ¯”   
   ó`(ª  *     ˆ
…	"w    ø ˆ

…"w    ˆ
…"  eÀ¨ eÀ¨  & w   ÔÔ\   eÀ¨       x O   î*PÀ*  ñ¨€%    î*PÀ   ¯”L      (  ó`(ª(   ®À¨h  ¯”   
   ó`(ª      ÔÔ\        ¼ O   î*PÀ*  Æ©¸    î*PÀ   ¯”L      (  ó`(ª($ *  îv5ªh  îvÕªh îvÅ«h 6z5ªh
 6z      Õªh    6zÅ«h ¯”   
   ó`(ª  (    &ÎÎe\ &€ÀÀ e& &\ &ñ õ       À O   î*PÀ*  À©KŠ    î*PÀ   ¯”L      (  ó`(ª(6 *  îvM«h  îvP«h 6zM«h 6zP«h* ¯”   
   ó`(ª  *     &ÎÎe\   ÀÀ e& &\  &ÎÎ  & g\   ÀÀ gð       Î O   î*PÀ*  v©¸    î*PÀ   ¯”L  œSC¬@      (  *  ó`(ª($ ìv5ªh  ìvÕªh ìvÅ«h 4z5ªh   4zÕªh  4zÅ«h ¯”   
   ó`(ª  (    &ÎÎÎe\ &€ÀÀÀ ew   &ñ ö  œSC¬       æ O   î*PÀ*  p©KŠ          î*PÀ   ¯”L  œSC¬@      (  *  ó`(ª(< ìvM«h  ìvP«h 4zM«h 4zP«h, 
  ¯”   
   ó`(ª  *     &ÎÎÎe\   ÀÀÀ ew    &ÎÎ   œSC¬  & Îg\   ÀÀÀ gw     œSC¬       š O   î*PÀ*  ½©Ba    î*PÀ   ¯”L      (  ó`(ª( *  žS‘«h žS«h žS «h žS£«h  ¯”   
   ó`(ª      f&\ J\ ‚ûù       v O   î*PÀ*  ½©Oa    î*PÀ   ¯”L      (  ó`(ª(
   žSË«h  ¯”   
   ó`(ª      ¦ ¦ \        € O   î*PÀ*  ½©Pa    î*PÀ         ¯”L      (  ó`(ª(   žS;ªh  žSƒ­h ¯”   
   ó`(ª      &
&\ &
&
\        ‚ O   î*PÀ*  ½©Qa    î*PÀ   ¯”L      (  ó`(ª(   žSÛªh  žSS«h
 ¯”   
   ó`(ª       & &\  ú       x O   î*PÀ*  ½©Ra    î*PÀ   ¯”L      (  ó`(ª(   žS¹«h  ¯”   
   ó`(ª      € ˆÖ\        t O   î*PÀ*  ½©Sa    î*PÀ   ¯”L      (  ó`(ª(   žS)ªh  ¯”   
   ó`(ª      €
\        € O   î*PÀ*  ½©Ta    î*PÀ   ¯”L      (        ó`(ª(   žSÅ«h  žSÈ«h ¯”   
   ó`(ª       ˆ\  û       „ O   î*PÀ*  ½©Ua    î*PÀ   ¯”L      (  ó`(ª(   žS5ªh  žS8ªh
 ¯”   
   ó`(ª       	
\  ú       Œ O   î*PÀ*  ½©Va    î*PÀ   ¯”L      (  ó`(ª( "  žSq­h žS}­h  žS€­h ¯”   
   ó`(ª       

\ €û ù       º O   î*PÀ*  ½©Wa    î*PÀ   ¯”L      (  ó`(ª(" *  žSÉªh
 žSÕªh  žSØªh žSA«h žSM«h   žSP«h ¯”   
   ó`(ª  &     	\  ú       ÷ ô ÷ ø       ° O   î*PÀ*  ¯ªó    î*PÀ   ¯”L      (  ó`(ª( *  ÙKÀ¨h LÀ¨h
 ,LÀ¨h åLÀ¨h  ôLÀ¨h   5MÀ¨h ¯”   
   ó`(ª      &
\ ýüæÿÿ\ üûö       ¤ O   î*PÀ*  m©Ba    î*PÀ   ¯”L      (  ó`(ª(  *  œS‘«h œS«h
 œS «h œS£«h  ¯”   
   ó`(ª  $    æ¦f&\ &¦€ÐPÈ\ &ö       v O   î*PÀ*  m©Oa    î*PÀ   ¯”L      (  ó`(ª(
   œS;ªh  ¯”   
   ó`(ª      &
&
&
&\        v O   î*PÀ*  m©Pa    î*PÀ         ¯”L      (  ó`(ª(
   œSƒ­h  ¯”   
   ó`(ª      &
&
&
&
\        ¾ O   î*PÀ*  m©Qa    î*PÀ   ¯”L      (  ó`(ª(& *  œS)ªh œS5ªh œS8ªh œSq­h œS}­h    œS€­h ¯”   
   ó`(ª  *     &€
	  P€


\        | O   î*PÀ*  m©Ra    î*PÀ   ¯”L      (  ó`(ª(   œS¹«h  ¯”   
   ó`(ª      € ˆ€%\        œ O   î*PÀ*  m©Sa    î*PÀ   ¯”L      (  ó`(ª( *  œSÛªh œSS«h œSË«h  œSC¬h
 ¯”   
         ó`(ª      €  Àe &&&&\        ¾ O   î*PÀ*  m©Ta    î*PÀ   ¯”L      (  ó`(ª(& *  œSÉªh œSÕªh œSØªh œSA«h œSM«h
   œSP«h  ¯”   
   ó`(ª  *      	    	\        „ O   î*PÀ*  m©Ua    î*PÀ   ¯”L      (  ó`(ª(   œSÅ«h œSÈ«h  ¯”   
   ó`(ª        ˆ\        6O   î*PÀ*  ­ªCa    î*PÀ   ¯”L      (  ó`(ª(N *  ¤S)ªh@ ¤S5ªh: ¤S8ªhF ¤SÉªh ¤SÕªh *  ¤SØªh" ¤SÛªh ¤SA«h4 ¤SM«h* ¤SP«h       *  ¤SS«h0 ¤S¹«h ¤SÅ«h  ¤SÈ«h ¯”   
   ó`(ª  *    œ•\ ž•\   ’&\ —\ —\  ˆ•\   *  & 	’\  ’\  ë ’\  \  \  	  L \        ˜ O   î*PÀ*  ´ªL"    î*PÀ   ¯”L      (  ó`(ª( *  €(ªh €Èªh €@«h €¸«h  ¯”   
   ó`(ª      Ö‹\ Ü‹\  À‹\  È‹\        È O   î*PÀ*  ®ªó`    î*PÀ   ¯”L      (  ó`(ª(  *  !è¨h !Èªh !@«h !¸«h  $è¨h "  $Èªh $@«h $¸«h  ¯”   
   ó`(ª  $    N
\ \Š\ ^Š\  HŠ\ \
\ ^
\  H
\              Œ O   î*PÀ*  ~«¸    î*PÀ   ¯”L      (  ó`(ª( "  Az5ªh  AzÕªh AzÅ«h ¯”   
   ó`(ª      &ÎÎe¦\ &ù       Œ O   î*PÀ*  ~«È    î*PÀ   ¯”L      (  ó`(ª( "  Az8ªh  AzØªh AzÈ«h ¯”   
   ó`(ª      &ÎÎg¦\ &ù        O   î*PÀ*  x«KŠ    î*PÀ   ¯”L      (  ó`(ª(   AzM«h  AzP«h ¯”   
   ó`(ª         ÀÀ e&\   ÀÀ g&\        ž O   î*PÀ*  û¨U(    î*PÀ   ¯”L  \qÀ¨@      (  *  ó`(ª( ëy°©h ëy(ª      h ëy ªh  ¯”   
   ó`(ª      €•€€w     \qÀ¨       | O   î*OÀ*  Å©     î*OÀ   ¯”L      (  ó`(ª(   Ì(À¨h š©êrh  ¯”   
   ó`(ª      Ú‰‡ Ú‰\        HO   î*PÀ*  5ªCa    î*PÀ   ¯”L      (  ó`(ª(B *  ¡S)ªh ¡S5ªh ¡S;ªh ¡SÉªh  ¡SÕªh *  ¡SÛªh ¡S¹«h ¡SÅ«h ¡SË«h  ¡Sq­h, *  ¡S}­h( ¡Sƒ­h$ ¡S™­h< ¡S¥­h6 ¡S«­h0 "  ¤S;ªh ¤SË«h  TqÀ¨h ¯”   
   ó`(ª  *    ¦\ œ\ ž\ &\ \ \ &\ \ \ &
   & \ 
\ 
\ æ \ Ü       \ Þ \        ž O   î*PÀ*  5ªBa    î*PÀ   ¯”L      (  ó`(ª( *  ¡S‘«h
 ¡S«h ¡S «h ¡S£«h  ¤S£«h  
  ¯”   
   ó`(ª      &\ \ &\        † O   î*PÀ*  ­ªBa    î*PÀ   ¯”L      (  ó`(ª(
 "  ¤S‘«h ¤S«h  ¤S «h ¯”   
   ó`(ª      \ &\        œ O   î*PÀ*  ç©X    î*PÀ   ¯”L      (  ó`(ª(  "  ‹@À¨h ‘@Èªh ‘@@«h  ¯”   
   ó`(ª  $    \ € À`\ Û‰ À`\          O   î*PÀ*  G©èg    î*PÀ   ¯”L      (        ó`(ª( *  DÅ«h FÅ«h IÅ«h LÅ«h  ¯”   
   ó`(ª       œ“\ œ\  PH\  PPø       ® O   î*PÀ*  ¶ª¸    î*PÀ   ¯”L      (  ó`(ª( *  ôv5ªh  ôvÕªh ôvÅ«h <z5ªh <zÕªh   <zÅ«h ¯”   
   ó`(ª      &e\ &e¦—\ &ø&ù       ® O   î*PÀ*  ¶ªÈ    î*PÀ   ¯”L      (  ó`(ª( *  ôv8ªh  ôvØªh ôvÈ«h <z8ªh <zØªh   <zÈ«h ¯”   
   ó`(ª      &g\ &g¦—\ &ø&ù       ¨ O   î*PÀ*  °ªKŠ    î*PÀ   ¯”L      (  ó`      (ª($ *  ôvM«h  ôvP«h <zM«h <zP«h ¯”   
   ó`(ª  (     &e\    e&’\  &g\    g&’\        Î O   î*PÀ*  v©È    î*PÀ   ¯”L  œSC¬@      (  *  ó`(ª($ ìv8ªh  ìvØªh ìvÈ«h 4z8ªh   4zØªh  4zÈ«h ¯”   
   ó`(ª  (    &ÎÎÎg\ &€ÀÀÀ gw   &ñ ö  œSC¬       ¼ O   î*PÀ*  Æ©È    î*PÀ   ¯”L      (  ó`(ª($ *  îv8ªh  îvØªh îvÈ«h 6z8ªh
 6zØªh    6zÈ«h ¯”   
   ó`(ª  (    &ÎÎg\ &€ÀÀ g& &\ &ñ õ             ZO   î*PÀ*  á«ÀX    î*PÀ   ¯”L  #  @  žS£«@  *  ì¨€p@  v©€p@  ³©,@  Ôª€p@  º«€p@  "      (  ó`(ª(ò 6} 2h  ¯”   
   ó`(ª  *    fE @lÀ ŠÀ  … À€@
Í*Àe €'*  &    t #A @f fÎe€ …Ä  ÷	  &#  *  L   f&&
æ€@f&&
æ€@„	  è     p €"  ³©,º«€p è "ì¨€p$v©€p&p *  r …‡ A @„	        Œ ¦ ¦ „	  žS£«žS£«žS£«Ôª€pŒ   ˜ Ø   ²   Æ     &  Ø ì¨€p² 
žS£«Æ žS£«v©€p*  ¦           p €  6
 ö€@ \ æŸ¼æ$        ì¨€pì¨€pv©€p
º«€pÔª€pp *  Ì 4CæÇëæÒC\ æ/æC\  

Æ¶
 ¶
 \        ˆ O   î*PÀ*  Æ« -    î*PÀ   ¯”L      (  ó`(ª(   ÷x Kh  ¯”   
   ó`(ª       D  DA@‡„È‰ 

‡        z O   î*PÀ*  ê¨Àv    î*PÀ   ¯”L      (  ó`(ª(   £  h  ¯”   
   ó`(ª      A @ÀE €A‡        x O   î*PÀ*  ñ¨oQ    î*PÀ   ¯”L      (  ó`(ª(   µXh  ¯”   
   ó`(ª      A Q$@A‡        >O   î*PÀ*  õ¨
    î*PÀ   ¯”L  E©€p      @  ™«  @  *      (  ó`(ª(x IØšh QX\h  €QÀÁh   ¶RÀÁh ¯”   
   ó`(ª  *    ææ&
f6Š &
fÎU €æNöŠ €*  & & &@& &„	  < ö ëö è  E©€p< *  L ÕöŠ èÖ@A Ö	f f„	  r   &™«  (r 
  r €Ö‡        Ò O   î*PÀ*  õ¨Ž:    î*PÀ   ¯”L  :ª  @  O«ñf@  *      (  ó`(ª(0 I°šh Q0\h  ¯”   
   ó`(ª  *    Â
D@@/  ÂùÕÄŠø&„	      &:ª  (O«ñf  & ( ‡ Âôì  (        ö O   î*OÀ*  õ¨`^    î*OÀ         ¯”L  v©€p@  6ªÐ@  *  Ôª€p@  O«ñf@  º«€p@      (  ó`(ª(.   W h  ¯”   
   ó`(ª  *    @ A Â & &f fÂ
ø„	        $v©€p&6ªÐ(Ôª€p  &     , ‡   º«€pO«ñf,        ~O   î*PÀ*  9©x    î*PÀ   ¯”L  zy }@  ì¨€p@  *  v©€p@  ³©,@  Ôª€p@      (  ó`(ª(”   êÀvh  ¯”   
   ó`(ª  *    fD   ÀÁ †& & & && *  & & À/& && & & &„	  T   &v©€p(T *  L   ^   f ¦ ¦ \ &
æ€@\ …Ä  ÷	  "  Ôª€p      ^ ì¨€p
f "zy }&³©,&  r v „	  ~ €ÀE €…

‡  

ù  Ôª€p~        LO   î*PÀ*  =©€˜    î*PÀ   ¯”L  +  @  #  @  *  žS£«@  6x  @  ³©,@  ÔªÀ@  Ôª€p@  *  O«òf@  º«€p@      (  ó`(ª(H   dh  
  ¯”   
   ó`(ª  *    fE U%fÄ  ÷	  …f&Ä  ÷	  f&…  6x  ³©,+  "³©,&  &  E Ä  ÷	  &
&
„	      D …‡ $  #  ³©,žS£«ÔªÀO«òf D         O   î*PÀ*  D©Ø^    î*PÀ   ¯”L  /À+@  a	€\@  *  êÀv@  ³©,@      (  ó`(ª(D       ¯À+h  
  ¯”   
   ó`(ª  *    f@ &$&æ …÷	  Æe …f&E Ä  a	€\"  &   ÷	  f&…Ä  ÷	  –%‚ƒ…‡   êÀv³©,/À+³©,       ~ O   î*PÀ*  E©øe    î*PÀ   ¯”L      (  ó`(ª(   ØÀNh  ¯”   
   ó`(ª      C ÀÁC ÂÃ‡        € O   î*PÀ*  G©Y    î*PÀ   ¯”L      (  ó`(ª(   &˜?h  ¯”   
   ó`(ª      C ÀÁÂÂe €Ã‡        RO   î*PÀ*  K©p:    î*PÀ   ¯”L  +  @  #  @  *  6x  @  ì¨€p@  v©€p@  ³©,@  Ôª      €p@  *  º«€p@      (  ó`(ª(ð GÀvh Á€Wh  
  ¯”   
   ó`(ª  *    &
æfE fÄ  ÷	  …f&Ä  ÷	  f  6x  ³©,"+  &³©,*  & &¦)… E U%Ä  ÷	  f&&
æ€@f&„  #  ³©,*  L 	  Z   l   v ¦ ¦ ¦ ¦ \ ¶
 ¶   v©€pZ 
ì¨€pl º«€pv *  r 
 \ Îå€ 6‡5…öå€  ö ¦
 ¦
 „	    (Ôª€p*  ˜ ž   Ô ¶ ¶ ¦
 ¦
 \ ¦ ¦ Îe €„  ž Ôª€pÔ *  ¾ 	  È   Ò ¶
 ¶
 \ 
€‚ƒÄ–%…  Ôª€pÈ 
Ôª€pÒ   ä Ö‡ 
6
 Ç       lO   î*PÀ      *  K©$m    î*PÀ   ¯”L  êÀv@  zy }@  *  ì¨€p@  v©€p@  ³©,@      (  ó`(ª(Š   É sh  ¯”   
   ó`(ª  *    fE f fÎE €Ä  ÷	  f&„	  $ Îå  êÀv³©,$ì¨€p&$ *  & € ,‡…Ä  ÷	  –%…D f&& & f&  zy }³©,*  L Îe€ „	  X D Ì‚ƒ€‡ €‚ƒ  v©€pX   r ô Âe €Àe €‡ Ê‰–%…û       ~ O   î*PÀ*  a©x    î*PÀ   ¯”L      (  ó`(ª(   *Àvh  ¯”   
   ó`(ª      C ÀÀE €ÁÂÃ‡        z O   î*PÀ*  b©ÈK    î*PÀ   ¯      ”L      (  ó`(ª(   \@h  ¯”   
   ó`(ª      B €

‡        ° O   î*PÀ*  i©@Q    î*PÀ   ¯”L  º«€p@      (    ó`(ª(( u  h  ¯”   
   ó`(ª  *    @ & &@ & &„	   € 

  º«€p   & ‡        ò O   î*PÀ*  m©:    î*PÀ   ¯”L  E© @      (  "  ó`(ª(\ 	Øšh X\h  ¯”   
   ó`(ª  *    æ&
fæNÎe öŠ €&&&&@Àe *  & &&&&„	  6 ö åö âÕöŠ   E© 6   L ä€ –%‡        O         î*PÀ*  m©`^    î*PÀ   ¯”L  i© Z@  v© @  *  Ôª @  O«òf@  º« @      (  ó`(ª(>    h  ¯”   
   ó`(ª  *    C Ãe D Äe Â À&&&&fff  & fÂ
ô„	          < ‡ $  v© i© ZÔª º« O«òf<        ˆ O   î*PÀ*  s©f9    î*PÀ   ¯”L      (  ó`(ª(   ð-h  ¯”   
   ó`(ª       C ÀÁÂÃD ¡ @D ‡        z O   î*PÀ*  ³©,    î*PÀ   ¯”L      (  ó`(ª(   ³©,h  ¯”   
   ó`(ª      fæ …Ì	–%‡                O   î*PÀ*  ¼©ü]    î*PÀ   ¯”L  :ª  @  O«ñf@  "      (  ó`(ª( o'`	h  ¯”   
   ó`(ª      f „	     ‡   :ª  O«ñf        | O   î*PÀ*  )ªx    î*PÀ   ¯”L      (  ó`(ª(   j8Àvh  ¯”   
   ó`(ª      @  „Æ‰ 
‡        € O   î*PÀ*  ,ªH:    î*PÀ   ¯”L      (  ó`(ª(   é8@Qh  ¯”   
   ó`(ª      @ @ï … 
‡ Æ‰ü       ˜ O   î*PÀ*  .ª <    î*PÀ   ¯”L  ™«  @      (    ó`(ª( 99 –h  ¯”   
   ó`(ª            D & &„	   €‡   ™«            O   î*PÀ*  6ª }    î*PÀ   ¯”L  ™«  @      (  "  ó`(ª( é8 Zh  „:  h  ¯”   
   ó`(ª      D & &„	   €‡   ™«          „ O   î*PÀ*  ;ªf9    î*PÀ   ¯”L      (  ó`(ª(   A;ð-h  ¯”   
   ó`(ª      @  ý  „Æ‰ 
‡        € O   î*PÀ*  Éª°š    î*PÀ   ¯”L      (  ó`(ª(   €Q€»h  ¯”   
   ó`(ª      D@@/  ûÕÄŠú‡        € O   î*PÀ*  Ñª0\    î*PÀ   ¯”L            (  ó`(ª(   ¶R€»h  ¯”   
   ó`(ª      D@@/  ûÕÄŠú‡        ® O   î*PÀ*  ×ª     î*PÀ   ¯”L  v©@8@  Ôª@8@  "      (  ó`(ª( œS  h  ¯”   
   ó`(ª  "    f f f D 	     Žå€‡   v©@8Ôª@8        Œ O   î*QÀ*  ‘«€W    î*QÀ   ¯”L  ‘«€W@      (    ó`(ª( ¶p  h  ¯”   
   ó`(ª      W£ w   Ð‰‡   ‘«€W       ” O   î*QÀ*  ‘«5X    î*QÀ   ¯”L  ‘«€W@      (    ó`(ª( ¶pHh  ¯”   
   ó`(ª      W£       ÷	  BJÐ‰‡   ‘«€W       ¾ O   î*PÀ*  ‘«/X    î*PÀ   ¯”L      (  ó`(ª(L   ‘«€Wh  ¯”   
   ó`(ª  *    ÕBC€ÁÁ@€bÁb@Àb€Àe €
KÂ *  & Á@‡Â
ûŠÐÁ  Š€ÐÀ  Á €
ê‡        v O   î*PÀ*  •«     î*PÀ   ¯”L      (  ó`(ª(
   Iq Kh  ¯”   
   ó`(ª      A @A‡        „ O   î*PÀ*  Á«ð-    î*PÀ   ¯”L      (  ó`(ª(   /x€Wh  ¯”   
   ó`(ª      @   D @D ‡         O   î*PÀ*  G©üZ    î*PÀ   ¯”      L      (  ó`(ª(F "  KÀ¨h  ‡KÀ¨h& ó`@«ì ¯”   
   ó`(ª  *    ƒ‚
Â
É¥F É¥T Î
K Ñ¥  ó± K $  & ƒ‚€Á
Ð•  ûÈ•T Â‹È•F K 
   ó`@«      &   ó`(ª&        
  ó`(ª         ð O   î*PÀ*  G©[    î*PÀ   ¯”L  ,ª  @  :ª  @  *  ,«0z@      (  ó`(ª($ DÀ¨h
 lÀ¨h
 *  ¼À¨h N©S}h  N©T}h  N©V}h ¯”   
   ó`(ª  (    Ä  Äe, Œ€“w   Ä  Äe, Œ€“w     ,«0z,ª  ,«0z&:ª         ú O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@            (  *  ó`(ª(> <À¨h* cÀ¨h4 ³À¨h
 N©|}h   N©~}h  N©£}h  ¯”   
   ó`(ª  *    Ä  Äe, Œ¶ ¶ \ Ä  Äe, Œ
Ä  Äe  ,«0z,«0z&,«0z  & , Œv v N6
 6
 \        O   î*PÀ*  ƒ¬@8    î*PÀ   ¯”L  v©À@  ÔªÀ@  *  ,«0z@      (  ó`(ª(–À¨h
 ƒ¬@8h  
  ¯”   
   ó`(ª  *    Ä  Äe, Œ¦&¶ †¦ ¦ ¦ ¦  ,«0z*  &  ö
 H&
&
&
æ€@ö
 ö <ö 9*  L a¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ „	*  r   v ¶ ñ†¦ ¦ ¦ ¦ ¦ ¦ ¦         ÔªÀv *  ˜ ¦ „	  ¤ ¶ ¶ ¶ ¶ ö ÒÆe   ÔªÀ¤ *  ¾ ö ¦ ¦ ¦ ¦ ö 6
 6
 *  ä 6

 ö€@ „	  ö ¶ ¶ ¶ ¶ „–%  v©Àö   
\ Æe Ò‰ñ       ÚO   î*PÀ*  „¬     î*PÀ   ¯”L  à d@  ïÀ+@  *  ³©,@  Ôª @  ,«0z@      (  ó`(ª(¾ *  ¤–À¨hB ¦–À¨h. ô–À¨h
 „¬ h8 „¬€%h$   †¬ h  ¯”   
   ó`(ª  *    Ä  Äe, Œ€‚ƒ¦ ¦ 6
 6
 Ä  ,«0z*  &   Äe, Œ€

	Ä  Äe, Œ€‚ƒ&  ,«0z,«0z*  L f…U%æ¦f      &Í)(Í$ Í" *  r Ä  ÷	  æ¦f&„	  Š …Ä  ÷	  Æe $  ïÀ+
³©,Ôª Š  à d$³©,*  ˜ …„v ¶ ö \ À€@Ò‰ 



ë       LO   î*PÀ*  †¬€%    î*PÀ   ¯”L  /À+@  #  @  *  ³©,@  Ôª€p@  ,«0z@      (  ó`(ª(l   ö–À¨h
 †¬€%h  ¯”   
   ó`(ª  *    Ä  Äe, Œ€‚&ff&Ê#"Ê  ,«0z*  & ÊÄ  …÷	  f&„	  F …Ä    /À+³©, Ôª€p"F (#  $  L ÷	  –%…„v \ À€@Ò‰ 

ò  ³©,       ÚO   î*PÀ*  E©       d    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(° Ì1ªh@ Ì5ªhf Ì8ªhZ Ì;ªh *  ÌÑªh8 ÌÕªh† ÌØªh| ÌÛªh ÌI«h4 *  ÌM«h‚ ÌP«hx ÌS«h  ÌÁ«hH ÌÅ«hn *  ÌÈ«hb ÌË«h& E© h& E© dh ¯”   
   ó`(ª  *      Â ?&
&
&
&€	Ä  Äe, Œ  ",«0z*  & €Àe Â ,  Â &
&
&
&Â *  L €&
&
&
&&
&
&
&&
&
&
&Â*  r  €
    
CR$	$  ˜ $	"†`
\ †`C¬ \        î O   î*PÀ*  Í«P    î*PÀ   ¯”L  ,«0z@      (        "  ó`(ª(R ,«8;h  ­{~h ¯”   
   ó`(ª  *    Á
€% Ã  æœ‚ æ æ&&
³ fA  ,«0z*  &  PÁ
Â
û³•‚ \ Ì	–%Ä  Œ´   ",«0z
  L ´•‚ ‡        | O   î*PÀ*  £ªÉS    î*PÀ   ¯”L      (  ó`(ª(   ÔÑªh  ÔÁ«h ¯”   
   ó`(ª      &— €¥\        – O   î*PÀ*  £ªÐS    î*PÀ   ¯”L      (  ó`(ª( *  Ô8ªh
 ÔØªh ÔP«h  ÔÈ«h ¯”   
   ó`(ª       &’&—& ˆ¥\        œ O   î*PÀ*  ©©}    î*PÀ   ¯”L      (  ó`(ª(       *  tÀ¨h þ!À¨h
 ª:À¨h  j˜À¨h ¯”   
   ó`(ª      ŽU\ N
ŽE\ N
€€M ŽEP\        ªO   î*PÀ*  E©ðd    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(† Î1ªh6 Î5ªhh Î8ªhP Î;ªh *  ÎÑªh. ÎÕªh` ÎØªhH ÎÛªh ÎI«h* *  ÎM«h\ ÎP«hD ÎS«h  ÎÁ«h: ÎÅ«hl *  ÎÈ«hT ÎË«h  E©ðdh E©€ph  ¯”   
   ó`(ª  *    @A‚ƒ3 
úÄ  Äe, Œ‚ƒ€  ,«0z*  & &@A&
&€
@*  L A&
&€@A&
&€  r ÂÃ C €P†       \          O   î*PÀ*  å«ãy    î*PÀ   ¯”L      (  ó`(ª( *  û(ªh ûÈªh û@«h û¸«h  ¯”   
   ó`(ª       ŽŽU–\  ÐÐÈ\ Ô\  ÷       ¤ O   î*PÀ*  F©X     î*PÀ   ¯”L      (  ó`(ª(  *  ›Xè¨h
 ›XÈªh ›X@«h ›X¸«h  ¯”   
   ó`(ª  $    € &€ÈÈe €$ÈÈe €\        Æ O   î*PÀ*  ¾©X     î*PÀ   ¯”L      (  ó`(ª( *  œXè¨h œXÈªh
 œX@«h œX¸«h  žXè¨h "  žXÈªh
 žX@«h žX¸«h  ¯”   
   ó`(ª  "    ÎÎe €\  È      Èe €\  ù€÷       Ô O   î*PÀ*  )ª³    î*PÀ   ¯”L      (  ó`(ª($ *  é)ªh é5ªh é;ªh éÉªh éÕªh  *  éÛªh é¹«h éÅ«h éË«h  ¯”   
   ó`(ª  (    Že\ že\ œe\ e\ e\ e\ g\ g\ g\        Ô O   î*PÀ*  +ªÓS    î*PÀ   ¯”L      (  ó`(ª($ *  Ñ1ªh Ñ5ªh Ñ;ªh ÑÑªh ÑÕªh  *  ÑÛªh ÑÁ«h ÑÅ«h ÑË«h  ¯”   
   ó`(ª  (    –å\ ”%\ œ%\ %\ %\ %\ '\ '\ '\        Ä O   î*PÀ*  6ª    î*PÀ   ¯”L      (  ó`(ª( *  è¨      h Èªh @«h ¸«h Á8è¨h
 "  Á8Èªh Á8@«h Á8¸«h  ¯”   
   ó`(ª       Ž
\ œ
\ &ž
\ Î
\ Ü
\ &Þ
\        ’ O   î*PÀ*  6ªX     î*PÀ   ¯”L      (  ó`(ª( *  ¡Xè¨h
 ¡XÈªh ¡X@«h ¡X¸«h  ¯”   
   ó`(ª      \ \ &\        Æ O   î*PÀ*  8ªä    î*PÀ   ¯”L      (  ó`(ª(& *  é8ªh  éØªh éA«h  éM«h éP«h   éS«h éÈ«h ¯”   
   ó`(ª  *    & ˆe\   	b\  b\  b\  b\        Æ O   î*PÀ*  8ªØ    î*PÀ   ¯”      L      (  ó`(ª(& *  Ñ8ªh  ÑØªh ÑI«h ÑM«h  ÑP«h   ÑS«h ÑÈ«h ¯”   
   ó`(ª  *    & ˆ%\  	"\  û "\  "\  "\        Æ O   î*PÀ*  8ª
z    î*PÀ   ¯”L      (  ó`(ª(& *  z8ªh  zØªh zA«h  zM«h zP«h   zS«h zÈ«h ¯”   
   ó`(ª  *    & ˆå\   	â\  â\  â\  â\        Ô O   î*PÀ*  ;ª£ƒ    î*PÀ   ¯”L      (  ó`(ª($ *  z)ªh z5ªh z;ªh zÉªh zÕªh  *  zÛªh z¹«h zÅ«h zË«h  ¯”   
         ó`(ª  (    Žå\ žå\ œå\ å\ å\ å\ ç\ ç\ ç\        ² O   î*PÀ*  £ªÓS    î*PÀ   ¯”L      (  ó`(ª( *  Ô5ªh Ô;ªh  ÔÕªh ÔÛªh ÔÅ«h   ÔË«h ¯”   
   ó`(ª        \ €€¥\ &œ¥\ §\ §\         O   î*PÀ*  °ªØ    î*PÀ   ¯”L      (  ó`(ª( "  ÔI«h ÔM«h ÔS«h  ¯”   
   ó`(ª       ¢\  ¢\  ¢\        Œ O   î*PÀ*  O«Ðf    î*PÀ   ¯”L      (  ó`(ª( "  O«ñfh
 O«òfh  O«ófh  ¯”   
   ó`(ª      €‚ƒ\ €\              
O   î*PÀ*  ¹«UŒ    î*PÀ   ¯”L  ,«0z@      (  "  ó`(ª(p þv³qh  R~8hn ¯”   
   ó`(ª  *    ¦‚f&æ ’$€Ò¦
¦J"K …€‚   *  & ƒ„¦ v … ŽÞ	¦ ¶  v …&(  L æ¦f&Í	Ã  óH ß€‚ƒ„…‡ \   ,«0z       ® O   î*PÀ*  ¹«âŽ    î*PÀ   ¯”L      (  ó`(ª(4   þvëuh  ¯”   
   ó`(ª  *    &€Àe
 &&&à&Ð* &ÐPöÿ0ôÿ  *   & ˆ‡ ƒ‚€‡        ŠO   î*PÀ*  ©ªïy    î*PÀ   ¯”L  ¤!À¨@  þv³q@  *  R~      8@  ³©<4@  ¼©Î@  6ªi;@  7ª	#@  *  («p!@  ,«0z@  U«Õ@      (  ó`(ª(Ö*  7:À¨h  ƒ€À¨hR 4ªÀh ö«ÀvhT ó`@«ì 
  ¯”   
   ó`(ª  *    æ  ¦÷  ÷	  €È0 " ÈU „Þ	æ” È5  R~8þv³q6ªi;&” *  & 	Ÿ‰Á Áì ÷	  À " s s Ál
   U«Õ*  L s ‡ ææ¦Ã  ‚ ³H óÿT ³ŠU Ò‹ü  ,«0z*  r ‚3
¦ ó‹‚ Æe Þ	\ ƒ¶  ¶ ^ Þ	Ã*  ˜   ÂH ÆÀœ¦ Á   Á sR œÉ  ,«0z&É*  ¾ $ÁœU 
sP Ál s  ‡&¦÷	Pÿ‚€æ *  ä   ó P æP À
&ÀE x       Â¦’¦ól   Â*  
P  € œÒø	  ½†¿‰»PÑ•  ‡Ñ•( s   Òó`@«  *  0÷	b Þ	Ã  ÂH û•,  ³
 ÷	J û•)  ³
   ,«0z*  Vžs  ‡¦÷	Èþ‚Á ‘”Ê‹ôs æR æ*  | ‡&
&
¦ ¦ Ò¦¦¹æ æP ³c *  ¢æR æ &
&
¦ ¦ÿ	
 Ã  †¿‰‡   ó`@«
 ,«0z$&(  Èv    
  v       "O   î*PÀ*  ©ªéy    î*PÀ   ¯”L  Á8À¨@  KÀ¨@  *  qÀ¨@  þv³q@  R~8@  N©©}@  N©l~@  *  —© K@  ³©<4@  ¼©Î@  Ý©Õ@  6ªi;@  *  7ª	#@  :ª  @  («p!@  ,«0z@        ™«  @  *      (  ó`(ª(Ë2:À¨h  4ª€ph ó`@«ì 
  ¯”   
   ó`(ª  *    æ  ¦÷  ÷	  ÈU ÈE €Þ	È5Ÿ‰³
  
  R~8þv³q6ªi;*  & ó,  †Àž ‡ Þ	Ã  ÷	@óH ÷3
N ÷	^  ,«0z*  L ÷	Ôÿ * ³
 ×,.  ó0 N Å‰3
N ÷	*  r 6ÄH ÅÅe. A_s ¦ OÁ
s ¦ KAœºÂ  &º*  ˜  u Â
üÀœ¦ À
€ œºy ² º À à î B“  º² º  À "à $î *  ¾ Ñ ƒ&ff÷	  •••€Åå Ñ ƒ  N©l~*  ä 5
 5
 Ñy ò ú  5
 5
 á   ò ú *  
	U(U%ffff÷	        Ã  ÄH ÀœT ×¬¦    N©©},«0z*  0€†L“TÀ
ýÞ	Ã  óH ×¬§  öó
  ,«0z*  VN æH &
÷	2 À¥, N
³
 ö‡ ÷	¤þ  
H *  |‡÷	   s s l s ÷	Šþñ†À¥  ë  Ý©Õ*  ¢À¥	 è‡ ÅÅe. ÷	pþ†Á¾@¤%@¤	@¤÷	  ¾*  È¸ Î–%
‡ ÷	ª Í B—  &
&
ú	 Ã
  &ó`@« *  î  †À‰
A•W  •••‡ æ0 &
³
 ÷	  ,«0z*  4 ÷	Dÿ‡Ž
öe  ÷	" ÷	2ÿ ) Ž
³
 *  :Á –
s. ‡ ÷	4 &
&
ÿ	 †¶
 ‚’$
  ó`@« *  `J’ŠJN‡„¶
 Ã  Å…m ••‡ ‚Î  ,«      0z*  † Í ÷	”ý	†ÁÁ 
É‹ü÷	~ý÷‡¦Îì   Á#  ¬J W ÇøƒÍ î (TF 	,/*).DE z  Ç       ¤O   î*PÀ*  N`¯    ¯”L  Ý©ù}@  ,«0z@      (  *  ó`(ª(Ž ­„dh  ­{hR ­""h@ ó``©¨
 *  ó`¸«(( ¼©wh ¼©xh  ù¬=h ù¬Çyh *  ú¬ËLh
 ú¬6„h û¬"	h ü¬H;h ý¬Psh *  ý¬%™h þ¬`h ­üXh ­
h ­Mh *  ­È`h 
­lh  
­Ëh" ­:2h$ ­Åžh&   ­üXh ¯”   
   ó`(ª  *    Ã  3 À  Á Â
 •)ƒaNú¡    ,«0zó``©  ó`¸« ó``©
 *  & †Ä5       KÓÎôÖÃ  ‡ ÷5€  ó   ,«0z"ó`¸« (ó`¸« *  L d X ®‰÷5@  ÌE ôE  Á W  Ì5   ó`¸« ó`¸«    r îW  ÌU Ì5 åW   X 
   ó``©      ÿŸ   $    
ó`¸«$ ó`¸«  ó`¸«  *                                            &          ÎO   î*PÀ*  N`íy    ¯”L  D©½`@  ¼©w@  ¼©x@  *  ¾©Œ@  Ý©ù}@  («p!@  ù¬=@  ù¬Çy@  *  ú¬ËL@  ú¬6„@  û¬"	@  ü¬H;@  ý¬Ps@  *  ý¬%™@  þ¬`@  ­üX@  ­
@  ­M@  *  ­È`@  ­„d@  
­l@  
­Ë@  ­:2@  *  ­      Åž@  ­üX@  ­{@  ­""@      (  *  ó`(ª($+«h +«h  ó``©¨& ¯”   
   ó`(ª  *    €@@c@cÐ÷	  ÆåN À  X  ÆeN ÈU €÷	  ­„dó``©  *  &   È5 ÈE €3
d 3
 ‡ &÷5    ‰Â    («p! ¼©w(­üX*  L ÷	  ¢‰€X ÷5 @  ôU  X ÷5     Ý©ù}¼©w&¼©w*  r Á  &ÀN BÊ‹·¤	 ûÀ
ù	Bà÷	  ‡  ­M	 &¾©Œ*  ˜ €ÌU X «‰X ÷5   Ì5 ô   X Á   ¼©w ù¬Çy*  ¾ ÷5   Á  W  ÌU Ì5 FW  ÌU  ¼©x­Åž*  ä  ôU  	ô5   9W  ÌU X       Ì5 ÷5*  
 €  ,ô   ô †÷	  ¬‰X ÷5   Â     ¼©w
­ËD©½`"¼©w(ù¬=*  0—  ô5  ôU   ­‰—  ÌU X ÷5 *  V  ×/   	Ì5 ®‰Ì5 ÌU X ÷5      ¼©w
þ¬`(¼©w*  |Â  —  ôÕ  X —  ôÕ  X Ì5   û¬"	*  ¢ü­‰÷5   ôŸ   X ÷5   ô  ( X ÷5  ¼©wú¬6„¼©w"­üX*  È   ô  , X Ì5 
÷5   Â  ´ 4
  ¼©wý¬%™¼©w"­
*  î X ÷5   ôÕ  / X ÷5   Â  ´$ X   ¼©x¼©w"ú¬ËL  ÷5    ôÕ  X   ¼©w ó``©        < Z       $º (  ­""ó`(ª< ó`(ªZ 
ó`(ª$ó`(ªº   
   Rv¦(  ­{ó`(ªRó`(ª
ó`(ªvó`(ª¦   ¶Æòj *  ó`(ª¶ó`(ªÆó`(ª
ó`(ªòó`(ªj    Ö¤  "  ó`(ªÖó`(ª¤ ó`(ª
ó`(ª        \O   î*PÀ*  ¯íy    ¯”L  D©½`@  ¼©w@  Ý©ù}@  *  ­„d@  ­üX@  ­{@  ­""@      (  *  ó`(ª(B K©h K©h  ó``©¨ ¯”   
   ó`(ª  *    €@@c@cÐ÷	  À  X ÷	  3
d 3
 ‡ &  ­„dó``©  D©½`   & ÷5    ‰Â  ÷	   ‰€X   ¼©w­üXÝ©ù} ó`      `©        $      ­""ó`(ª$ ­{
ó`(ª        ˆO   î*PÀ*  ö«;    î*PÀ   ¯”L  ,«0z@  7¬d"@  *  C¬\@      (  ó`(ª(¬ Ä€À¨h  ø« h 
  ¯”   
   ó`(ª  *    æª &€æÃ  Ðó ¦ óT 3Œ 3ª 3  ª ,«0z*  & X   `¦
 3
¬ ÀÀe¨ 3H û €æ¬ æ*  L ª ÷	  Ã  Ãe¨ “““‹Þ	Ã  û æ¬   7¬d",«0z,«0z*  r Ãe® æææææ ÷	  Ã  ³
¬ ó
X Ö¶
   C¬\,«0z  ˜ €‚¦öŒ  ƒ^ \        |O   î*PÀ*  ö«;    î*PÀ   ¯”L  ,«0z@  7¬l"@  *        C¬d@      (  ó`(ª(œ Ì€À¨h  ø« Kh 
  ¯”   
   ó`(ª  *    æš &€æÃ  Ðó ¦ óT 3Œ 3ª 3  š ,«0z*  & X   `¦
 3
¬ ÀÀe¨ 3H û 
€æ¬ æ*  L ª ÷	  Ã  ³¨ Þ	Ã  û 
æ¬ æ¨ æª   7¬l",«0z,«0z*  r ÷	  Ã  ³
¬ ó
X Þ¶
 €‚¦öŒ  ƒ  C¬d
,«0z  ˜ ^ \        ¾O   î*PÀ*  ö«;    î*PÀ   ¯”L  ,«0z@  7¬f"@  *  C¬^@      (  ó`(ª(À Ã€À¨h  Æ€À¨h
   ø«Àh ø«€%h ¯”   
   ó`(ª  *    æ¾ æ æ¾ æ&€æÃ  Ð3¦ ó        ¾ ¾ ,«0z(*  & T 3Œ 3ª  ó‹§ È3X ˆ ` Ž 3
*  L ¬ ÀÀe¨ 3H û €æ¬ æª ÷	  Ã  ³¨    7¬f"$,«0z*  r ³ª Þ	Ã  û æ¬ æª æ¨ æª ÷	  Ã  ,«0z&C¬^*  ˜   ³
¬ ó ¦ ó
X Ø¶
 €‚¦öŒ  ƒ^   ,«0z  ¾ \        xO   î*PÀ*  ö«;    î*PÀ   ¯”L  ,«0z@  7¬i"@  *  C¬a@      (  ó`(ª(œ É€À¨h  ø«@8h 
  ¯”   
   ó`(ª  *    æš &€æÃ  Ðó ¦ óT 3Œ 3ª 3  š ,«0z*  & X   `¦
 3
¬ ÀÀe¨ 3H û 
€æ¬ æ*  L ª ÷	  Ã  ³¨ Þ	Ã  û       
æ¬ æ¨ æª   7¬i",«0z,«0z*  r ÷	  Ã  ³
¬ ó
X Þ¶
 €‚¦öŒ  ƒ  C¬a
,«0z  ˜ ^ \         O   î*PÀ*  ö«!;    î*PÀ   ¯”L  ,«0z@  7¬q"@  *  C¬i@      (  ó`(ª(° Ð€À¨h Ñ€À¨h    ø« dh ø«@jh ¯”   
   ó`(ª  *    æ® ææ æ® ææ &€æÃ  Ð  ® ® &,«0z*  & 3¦ 3T 3Œ 3ª 3X   ` Ž 3
¬ Î*  L Îe¨ ³H û 
€æ¬ æª ÷	  Ã  ³¨ Þ	Ã  7¬q" ,«0z*  r   û 
æ¬ æ¨ æª ÷	  Ã  ³
¬ ó
X Þ  ,«0zC¬i,«0z  ˜ ¶
 €‚¦      öŒ  ƒ^ \        (O   î*OÀ*  š©}s    î*OÀ   ¯”L  ,«0z@      (    ó`(ª(˜ ""œwh  ¯”   
   ó`(ª  *    Ã  @•F…
ACW x @‚Ált É‹<Â À

÷	  ,«0z*  & V ‡‰ÀÌ‹Éµ` /‰Ð÷	@ ‡‰ÀÌ‹‰Ð÷	2 ‡*  L Ì‹Éµ@ ‰ÐÉµ  ‰À÷	 ‡‰ÀÌ‹‰Ð÷	*  r  ‡3f ‡ ÂÀ
DÄ%ÿÿ¡ ‡ Ö± ‡ Ñ‰‡        FO   î*PÀ*  ü¨p    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  Ôª€p@  O«ñf@  º«€p@      (  ó`(ª(®  a	€Whz a	€\h  ¯”   
   ó`(ª  *    &
&
&
&
&
D & &€D & &À*  &        ŠÀ ÁŠÁ @àÀ% „	  @ ý öIA   v©€p@ *  L öÛ
 ý öe € ÎÆe ÀÉ@ÁÛý *  r Àe €‡ &
&
&
&
&
D & &Îe €¶
 *  ˜ —#€@‡ö öÉÀ öÛ ö
 ¦ ¦ *  ¾ ö€@ 6
 „	  Ð ¦ ¦ 6
 6
 —#‰?  v©€pÐ *  ä %‡‚—- £0 ƒö@ ö’
 € æ×³æÝÀ*  
f&&
æ€@æ×³æÝ@f&„	    h    0"  Ôª€p º«€p"h$º«€p&v©€p(0$  0€ f&f&„	  r          *  Ôª€prÔª€pì¨€pÔª€p ì¨€p"Ôª€p  P            Ž*  ì¨€pÔª€pì¨€p
Ôª€pì¨€pì¨€pŽ      *  ^    dÖ‡ ¶
 ¶
 \ €Â®Ã f&  ì¨€pO«ñfd®*  „¦¦Ã
ú\ ö Îe €\ Å>Â:¿L]L?ÛÆª¿¤ª  ª€@         ü O   î*PÀ*  ‰¬@8    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(b q—À¨h
 W«¨9h
 ‰¬@8h  ¯”   
   ó`(ª  *    Ä  Äe, Œ€Á ƒ€†ÁÀÃp‡€ü†  ,«0z*  & Cp‡Àøf\ Æ‰üÎÎ \ ÎÎ
ø  L 
\ Îe û€†\ Ò‰\        O   î*PÀ*  G©ùZ    î*PÀ   ¯”L      (  ó`(ª(*  Á8À¨h Ç8À¨hˆ A^À¨h  G^À¨h‚ ‹©@8h   ó`@«ì ¯”   
         ó`(ª  *    Â Â	€€ƒf¦
÷	B ýÎ€Â% *  & Â% Îe @÷	( Âå Ž ‚Á	‡Î€B`Á‡*  L Á‡`î†Ö± A@^À
€ÖÖ†¡ €Aò…*  r ¡ ^Â”ÂE€ÿÂå  ‡ À À€Áe B‰C*  ˜ IE	Â`æÁ- À†ÅÁ Š
D
Eþ†*  ¾ AŒ@ ‡àDÅùD
Ã
Áe0 bëÁ bÁ&  ä   Ã
úŠÁ% -Ö„…‡ Ò•* Î
üV
÷
   ó`@«    ‚ ˆ   ó`(ª‚ ó`(ªˆ           ó`(ª  ó`(ª        °O   î*PÀ*  G©öZ    î*PÀ   ¯”L  ‹©@8@      (  *  ó`(ª(î‡À¨hÇÀ¨h&À¨hG,À¨h  qÀ¨h  ó`      @«ì ¯”   
   ó`(ª  *    €&f$&Ð
÷	h ÷	¤ ýÂ% Â% *  & ÎU @÷	Ž Âå — 	 ‚ Ëƒ¶
 ÷	<÷	*  L .…`DA@Îè€Ž
æ— þÿÂå ‚‚
Âe*  r  ÃXæ 



‡ Îe €õ‡ŠÍÃ
¶
 &  
X*  ˜ f€ Â	€÷	  ‚€ä‡Â”ÂE€ÿÂå  ‡ ö
  ‹©@8*  ¾  ÷€Ö‚ CPQCQBƒ“æ¾ Âà‚m — *  ä Æÿ†ÖÅ‚
 ÷	Ð ÷	v Ž
 ˜ú‚÷	€ — & *  
î‚Â
õ€

À5 @éÃ% P‚Ãe °E÷	T ÃÎ
ò*  0÷	< À5 þûÎ Õ€eš‡NN÷	( EDA@‘‡…*  V
‚Âe b"Ö…„b"‡ ¡  ‡ *  |ÅDA@‡ &f&f      ÷	êÿ÷	æÿ…eDA@„eA*  ¢@e@€e‡ &f&f
À Â
ì÷	 ûC*  È 
r
 &@Ár &@r( &DsP A 
*  îr
 „CÅw A`€×t ‡ ÂE
*  ÂEÂDƒÓÀÁ&fÄÅ£££Ž&
*  :@Ž&
‚Œ†öå  À¶ 6±  Œ&Š€C*  `Î ÷	‚Âå€ ÷	ÿ÷	Î
‚
ù÷	DÿŽ
÷	ô *  †Âù÷	àþ‚
ü‚ 6Œ ‡‚c6Œ †‚#ƒ‚m*  ¬ Â÷	öþ  ‡÷	ÿŽ
‚ ¶Œ †¶# ‚*  Ò¶ã 
6
 öÞ  Žà¶Œ ‡Â‚cƒÃ ƒí*  ø ¦‚ ƒm ƒí d€÷	` ö €Ò•- Î9÷	*  fþ÷	XþÃEÿÀ@Ã ƒƒƒƒÃe0 ÒÎ
î(ö
*  D       ê€Ö…ÖƒƒŒ†ƒŒ)†÷	 €„…Æe CH *  jÒ•  ƒŠü‡ ÷	þÂ
À% ú‚À% ö‚÷	æý‚
ùÒ•*  0 Ò•. ÎÀÒ•0 Ž
ö
 ø€ÏÃ ÒÃ+-Å€*  ¶Ã ÒÊ•/ ŠŠÅå
 ü€Åe: r‘ ÅC
Æe Ö  Üöe 
 Ò•* ö

 û·
   ó`@«    &  ó`(ªó`(ªó`(ª
ó`(ª             "  ó`(ª  ó`(ª  ó`(ª  
ó`(ª         ~O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(j +À¨h ,À¨h .À¨h 4À¨hd *  £À¨h ¤À¨h ¦À¨h ©À¨hh N©z}h *  N©}h N©¢}h N©©}h N©ò}h  N©ù}h    i©        h ™«  h ¯”   
   ó`(ª  *    Ä  Äe, Œ	Ä  Äe, Œ¶ ¶ 
‚
N  ,«0z,«0z*  & AfCŠÁ Áå Á% Ã ŠƒÝ v…"  L ‡Ž\ ü‡æÆ‰
õ€“\        ÂO   î*PÀ*  E© …    î*PÀ   ¯”L  ì¨€p@  Ôª€p@  *  ,«0z@  º«€p@      (  ó`(ª(¤ ‹T;ªh *  ‹TÛªh ‹TS«h  ‹TË«h( ÔªÀh( ÝªxKh 
  ¯”   
   ó`(ª  *    Áe ffff
&
&
&
&Ä  Äe,   $,«0z*  & Œ&¦ ¦ ¦ ¦ „	  B ¦ ¦ ¦  Ôª€pB *  L  ¦ „	    \ ¦ ¦ ¦ ¦ „      	    Ôª€pì¨€p\ (Ôª€p*  r t ¦ ¦ ¦ ¦ „	    Ž €Àe   t Ôª€pº«€pŽ   ˜ „Æe \        hO   î*PÀ*  <©°;    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  Ôª€p@  ,«0z@  º«€p@      (  ó`(ª(*  k;ªh kÛªh kS«h  kË«h( i©ø‰h   v©Àh( ¯”   
   ó`(ª  *    Áe ffff
&
&
&
&Ä  Äe,   $,«0z*  & Œ€À Š ÁŠ †@ÀÉ‰\&¦ ¦   L  ¦ ¦ „	  €     ’   ¦ &  Ôª€p€ Ôª€pì¨€p’ Ôª€p¦   h     ¸   Ê     (  Ôª€pº«      €p¸ 
Ôª€pÊ Ôª€pì¨€p*  v Ü   è   ò ¦ ¦ ¦ ¦ \ ¦)¦ ¦   Ü v©€pè 
v©€pò *  œ ¦ ¦ \ ¦ ¦ ¦ ¦ \ ¦ ¦ ¦*  Â  ¦ \ ¦ ¦ ¦ ¦ \ ¶ ¶ 
 \   è ¶ ¶ \ ¶ ¶ „Æe \        FO   î*PÀ*  m© …    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(BŒT;ªh ŒTÛªh ŒTS«h  ŒTË«h(   Ôª h( Ýª Kh ¯”   
   ó`(ª  *    Áe ffff
&
&
&
&Ä  Äe,   $,«0z*  & Œ&fö f&
Ž	 ¶ 	 ± 6 ¶  *  L ö 
 ¶ 
 ö  ¶  ö  6Š ö v       ö‹*  r  –%w ˆ 


„Ý aö•  6 ö  ¶*  ˜   ö  ¶  ö  ¶  ö  6Š ¦ „*  ¾  ÷	JC¦
 „ ÷	:aACaBA¦ „*  ä  ÷	$aACaBA¦ „ ÷	aACaBA*  
ƒB
¦ „ ÷	ò aACaBA¦
 „ ÷	*  0Ü aACaBA¦ „ ÷	Æ aACaBA¦ *  V„ ÷	° a@BaA@¦
 „ ÷	š a@BaA*  |@¦ „ ÷	„  aAa@„ÃBA@‡ÃBA*  ¢@Ä
Äå€ *Ä%ÿ %ŠƒÐÃ ŠBÐÂ ŠÐÁ  Š Ñ*  ÈÀ  CBA@‡…6 v ¶ ö*  î …„Æe \ æÈ‰Ê‰Ö 



é&
Ä*  ö ö       aaŽm 6q „eŽ  :‡ 

ú       ÊO   î*PÀ*  a©     î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(†ä;ªh( äÛªh äS«h äË«hV *  z;ªh2 zÛªh zS«h  zË«hR ì¨ hV "  ì¨ h< º« hR Í« hH ¯”   
   ó`(ª  *    Áe ffffÁe ffff*  & &
&
&
&&
&
&
&Ä  Äe, ŒÄ    ,«0z(,«0z*  L Äe, ŒÎe €&f&


ö v
 v v „Ý*  r  !NŒö v v v …Ý Œ6 6 *  ˜ 6
 6 ¶  ¶  ¶
  ¶  Öw 8*  ¾ vŒ ö•  ö•  á	€  ‚       ƒ *  ä Da€  ‚
 ƒ ¶  ¶  ¶ 
 ¶*  
  Î Ž­ 
BA@A@@ Å4*  0Å%Çÿ	€  ‚
 ƒ AÅ%øÿÀæÅ%ðÿ*  V	ƒB€Åe öÖÅ%ýÿfDv…w*  |„BÅwC„Ö€…
úƒm BA@*  ¢‚m
 A@m @€m Ž­ 00 €*  È„
Ä ÐCBAD…‡6 v *  î¶ ö …„Æe \ ÖÈ‰øÄàÊ‰ 



*  

ÚÀBA@A@@Î  	0*  : äÄ
ÃBA@÷Äå ÁÄå 
Äå Ã*  `ÙÁÐÁ Ã ÀÐ
åÂ
Á @ÐŠÂ ÐŠÃ ÂÐŠÙ       àO   î*      PÀ*  d©°;    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(îl;ªh lÛªh lS«h  lË«h(   i© Šh v© h( ¯”   
   ó`(ª  *    Áe ffff
&
&
&
&Ä  Äe,   $,«0z*  & Œ&f 



&
ö N&
ö QŽÝ R€Ý*  L  À ±  €Ý Ý Á Ý ‚Ý Â ‚Ý ƒÝ Ã *  r ö v 
„Ý	 áö  ± 6 ¶  ¶
  *  ˜ ¶ 
 ¶  ¶  ¶  6Š 6
 6
 6
*  ¾  6  ‚"‡v 
 ‚‡¶  ‚‡ö  ‚Ž

*  ä 1É‰Ê‰æ–%6
 6
 6
 6
 ? *  
Ž
Å	 ÷	| 6‘ ÅÅ ÷	l 6 ÅÅ *  0÷	\ 6 Å      Å ÷	L 
…Åe€ ÍÅ%ÿ *  Vv‘ 6 6 6 Dv v v 6 *  |‡……„Æe \ æÈ‰®ÄÃBA@‡€-
 ‚*  ¢‡- ‚‡‚- ‚‡ƒ- ‚ƒí ‚€‚í*  È €í €€í
 „
Å
Ù‡ „
ÄÅ
ý…
‡        øO   î*PÀ*  „¬@8    î*PÀ   ¯”L  v© @  Ôª @  *  ,«0z@      (  ó`(ª(©–À¨h
 W«hh
   „¬@8h  ¯”   
   ó`(ª  *    Ä  Äe, Œ¦&¶ †¦ ¦ ¦ ¦  ,«0z*  &  ö
 E&
&
&
æ€@ö
 ö 9^¦ *  L ¦ ¦ ¦ ¦ ¦ ¦ ¦ „	  p ¶  $Ôª &p *  r        ñ†¦ ¦ ¦ ¦ ¦ ¦ ¦ ¦ „*  ˜ 	  ž ¶ ¶ ¶ ¶ ö ÒÆe ö   Ôª ž *  ¾ ¦ ¦ ¦ ¦ 6
 6
 6

 ö€@ „(  ä 	  ê ¶ ¶ ¶ ¶ „–%\ Æe Ò‰ñ  v© ê        Â O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª( >À¨h
 fÀ¨h
 N©ó}h  N©ô}h    “«  h
 ”«  h
 ¯”   
   ó`(ª      Ä  Äe, Œ€& &

\   ,«0z       .O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(V AÀ¨h iÀ¨h ¹À¨h" N©k~h *  N©l~h       N©n~h  +ª  h ,ª  h :ª  h" 
  ¯”   
   ó`(ª  *    Ä  Äe, ŒÄ  Äe, Œ¦¦6
 6
 &
  ,«0z,«0z*  &  fÂ 6Š A‡Â
üv ŠÐÁ   L 6Œ N\        ÆO   î*PÀ*  9©     î*PÀ   ¯”L  ì¨€p@  ,«0z@  *      (  ó`(ª(¦ ã;ªh( ãÛªh ãS«h *  ãË«h\ z;ªh2 zÛªh zS«h  zË«hR *  ì¨Àh\ ì¨xh< º«ÀhR Í«øhH ¯”   
   ó`(ª  *    Áe ffffÁe ffff*  & &
&
&
&&
&
&
&Ä  Äe, Œ
Ä    ,«0z(,«0z*  L Äe, ŒÎe       €öe € ¦ ¦ ¦
 ¦
 6 „*  r 	  x ¶ ¶ ¶  ¶  ¶
  „	    ì¨€px (ì¨€p  ˜ š €„N&\   š        dO   î*PÀ*  ô¨Ø^    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  :ª  @  Ôª€p@  º«€p@      (  ó`(ª(ð   /À+h /¶0h  ¯”   
   ó`(ª  *    æ&
D æræ±¿¦)& &\Î¶  ö•*  & €  æóæ5@¦ ¦ æóæ5@„	  ’   &º«€p(’   L     ¨ ¨   ~ ˆ ˆ (  ì¨€pv©€p¨ 
¨ Ôª€p~ ˆ ˆ   \ ˆ             *  ˆ Ôª€pì¨€p
Ôª€pì¨€pÔª€pì¨€p  j           œ   ²     (  Ôª€pì¨€pœ 
:ª  ² Ôª€pì¨€p*  x ¼   ¼ €Âð f&¦¦\ ¶
 ¶
 \ &
  ¼ Ôª€p¼ ð *  ž ŽÝ Îå€ \ ¦ ¦ \ æræ1@\ öŠ æ*  Ä Ù[æÞ?\ €Ö‡ Æe Ó‰ 

ùš?UÌ? *@
  ê Úª A         tO   î*PÀ*  e©€˜    î*PÀ   ¯”L  ì¨ @  i©  @  *  v© @  ,ª  @  Ôª @  O«òf@  º« @  "      (  ó`(ª(Äà dh  ¯”   
   ó`(ª  *    fD   °Ã@‚ °C:‚À  f#‡Æå Äe*  &  &&&&æñæ\)æ;ªÄ¸@	  „  .     Ôª "„$i©  &.(,ª    L   <      „  L    B*  º« <„
i©  L,ª  º« B*  \ „„    œ &
&
&
æ€@Äe &&&	  ‚ $  „„Ôª 
O«òfœ &ì¨ (‚ *  ‚ €‚ƒOÈ‰Ê‰ 



Gæã6æåæÕ*  ¨ ææAæ¦f&æÃ×æ	Öæð–æl>æ¦f&æ"  Î "òæyæš‚Ä¦B	  `      –  (  ì¨ `Ôª ì¨ Ôª – ì¨ *  ì r    ô ÅÄ¶ †fffD	  ø Åå $  rº« v© 
ô Ä Ôª "ø *  ò€‚ƒÖ„Ä Š„ a±…‡ ý Î
¶*  8 \ Îe \ Îå €
\ ¶ Î% 6
 ¶
 *  ^\ ¶& ¶& ¶& ¶& \ ¶ ¶ ¶       ¶ \ *  „¦ ¦ ¦ ¦ \ À ¦ À
ü\ µ@óù3  ªeÞ˜@ð7Q©¸‹@Á•êã×‹…@ÃªÌg{H       O   î*PÀ*   © d    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  :ª  @  Ôª€p@  ™«  @  º«€p@      (    ó`(ª(à #  h  ¯”   
   ó`(ª  *    D   °Ãe‚ °C_‚À  fW‡æ&
æ€@"  & & && &„	n     x   n   &  n Ôª€p™«  x :ª  n  v©€p  D   ~           *  º«€p~ Ôª€p
ì¨€pv©€pì¨€pì¨€p*  R   ^   d   º Îe€€\ ¦ ¦ \ æ;ªæ¸@\    v©€p^ ì¨€p
d Ôª€pº *  x ¶
 \ N      @Îå ƒ € æ‚=æ@Âf&*  ž æysæEæ[\æpCf&f&\ –%€„Ä Š   Ä „ a‡ 
À€@È‰Ê‰ 

‡        &O   î*PÀ*  s©$m    î*PÀ   ¯”L  ì¨ @  v© @  "      (  ó`(ª(„ 	 sh  ¯”   
   ó`(ª  *    fE A77B æ Áe@ &
&
¦f&
*  & &
f f&
&
¦f„	    @ Îå€ ö
 f  v© ì¨ @ *  L  f f f¦ ¦ ¦ ¦ æ€‚ƒ  r Ö…‡ Ô‰ 



ø       lO   î*PÀ*  Á«€W    î*PÀ   ¯”L  ì¨€p@  v©€p@  *  6ªÐ@  Ôª€p@  º«€p@      (  ó`(ª(ì         +  h  6x  h ¯”   
   ó`(ª  *    D &
& &æÛæÉ@„	  ( D &
&   ì¨€p( *  & &Î6 æÛæÉA„	  z     „ z   Ž *  v©€pz 6ªÐ º«€p"„ $z &6ªÐ(Ž   L   ” z z   ¼     *  º«€p” z 
z Ôª€p¼ Ôª€pì¨€p  \             &  Ôª€pì¨€pÔª€p
ì¨€pÔª€pì¨€p*  h   l €ÖÀe €‡ ¦ ¦ \ Îò¶Š \   Ôª€pl *  Ž ¶S \ ö‹ Îe €&
æ€@„	  ¬ ÄP ¶Œ   ì¨€p ¬ $P *  ´ †Îe €\ €Âì Ã f&¦¦Ã
ú\ :  ì   Ú º×™¼c&£>X4%Àá]É@Û             \O   î*PÀ*  s©p:    î*PÀ   ¯”L  ì¨ @  i© Z@  *  v© @  Ôª @  O«òf@  º« @      (  "  ó`(ª(p‡Àvh  €Wh. ¯”   
   ó`(ª  *    fD &
& & & &æÂhæ!¢æÚæÉ@*  & „	  D fD &
& & & &Î6   ì¨ 
D (  L æÂhæ!¢æÚæÉA„	  °     Â °   Ò *  v© ° i© Zº«  Â "° $i© Z&Ò   p   Ø ° °       *  º« Ø ° 
° Ôª O«òfÔª   €             &  ì¨ Ôª ì¨ 
Ôª ì¨ Ôª   Œ             &  ì¨ Ôª ì¨       
Ôª ì¨ Ôª *  ˜           ¤ ÖÀe €…‡ ¦ ¦ ¦ ¦$  ì¨ Ôª ì¨ 
Ôª O«òf¤ *  ¾  \ Î¶Š \ Ä  \ ¶S \ ö‹ Îe €&
    *  ä &
&
æ€@„	  ô Ät ¶Œ	 †Îe €\ ÄpÅ  ì¨ ô t &p*  
	 æ¦f&&&&&Å
öÄ~ \ Î-Ã¿JòÌ  ~ *  07±»¼,†k¦t4¯y¬NâÙq·¦ƒŽî¸(:<ŒBY†™¼fis  Vª£>ã5­;oS%Àç]-1’òÉ@Ú!¢Âh       æO   î*PÀ*  a©6}    î*PÀ   ¯”L  ì¨ @  v© @  *  Ôª @  O«òf@  º« @      (  ó`(ª(Ò  <ph¨ <h  ¯”   
   ó`(ª  *    f&
&
      &
&
&
&
&
&
&
D & & & &*  & €D & & & &%À ŠÀ ÁŠÁ @à*  L À%: „	  Z ý öIA öÚ ö!¢   v© Z *  r öÁh ý öe € Î#Æe$ ÀÉ@ÁÚÂ!¢*  ˜ ÃÁhý Àe €‡ f&
&
&
&
&
&
&
&
&
D*  ¾  & & & &Îe €¶
 —#€@-‡	ö *  ä ö ö #öÉÀ öÚ
 ö!¢ öÁh *  
ö
 ¦ ¦ ¦ ¦ ö€@ 6

 6
 6
 *  0„	  8¦ ¦ ¦ ¦ 6
 6

 6
 6
  v© 
8*  V —#‰?G‡‚—- ¢0
‚A‡—- öô‚<‡—- ±j8ƒ*  |ö@ ö‘

 ökÁ ö,› € ‚ ƒ *  ¢æTeæ      ÂBæ×³æÝÀæ¦f&&
&
&
æ€@æTe*  ÈæÂBæ×³æÝ@æ¦f&„	    H    ì€"  Ôª º«  H"º« $v© &ì*  î ‚ ƒ æ¦f&æ¦f&„	    Z  $Ôª &O«òf(Z              &  Ôª ì¨ Ôª 
ì¨ Ôª ì¨                &  Ôª ì¨ Ôª 
ì¨ Ôª ì¨   ,            &  Ôª ì¨ Ôª 
ì¨ Ôª ì¨ *  8  ~    BÖ…‡ ¶ ¶ ¶ ¶ \ ÄÒ   ì¨ ~ì¨ 
O«òfB(Ò*  ^Å	 æ¦f&&&&&Å
öÄ\ ö    *  „Îe €\ 5>ÇÑÀäæ„¾›Æ>F      l.&Åº¾¹+
˜k*  ªã>'Ž•'+¿$IÝriœL?ÌÌ”Ì¨ëª¿ªªªª‚—€@      Ð         ¼ O   î*PÀ*  ñ¨ Z    î*PÀ   ¯”L      (  ó`(ª(B   ¶ }h  6ªÐh ¯”   
   ó`(ª  *    D   Â
€CŠÃ Ãå˜ 
Ã%èÿ   &  

ævvÂ‡ f&\        Ê O   î*PÀ*  i© Z    î*PÀ   ¯”L      (  ó`(ª(R   i© Zh  ¯”   
   ó`(ª  *    €‚ƒ&fDŠÄ Äå¸ Ä%Èÿ 


*  & 
Ä%àÿùÄe  vvó„v„v…„æ¦
  L f&\        ö O   î*PÀ*  ì¨(    î*PÀ   ¯”L  äÀ¨@            (  *  ó`(ª(6 æ)ªh  æÉªh æA«h æ¹«h( *  z)ªh  zÉªh zA«h
 z¹«h$ ¯”   
   ó`(ª  *     
@Àe €@A&
&Îe  &  €€ƒÂÃw     äÀ¨       ú O   î*PÀ*  É« s    î*PÀ   ¯”L      (  ó`(ª(|   zy }h  ¯”   
   ó`(ª  *    fE @Ô‰ 

2À
Ð± ŒC¡  À‹*  & ÃBÀe€@&Ä€ 
 

Aa a C ‚Cà‚*  L àAa@ aAá áÃB„ì† C A€   r A@…‡        ´O   î*PÀ*  ,«@8    î*PÀ   ¯”L  ðyÀ¨@  NŽhçH  *  š©¢s      @  š©¥s@   ©{;@  ,«0z@  9¬öq@  *  ù¯üX@      (  ó`(ª(š ,«@8h  ­h~h 
  ¯”   
   ó`(ª  *    Á
Ã  ó f s‚ æ æz æiÿˆ9‡À   
,«0z*  & Á Â6 
‚~E~Àt Á  Â  Bà‚P‚~À  š©¢sš©¥s*  L  Àì 3
 Àh ”ÁE ÿÁ`	
ùbdh€vx^`  h   r      t *  t ÷	  ÷	   3Š 3ˆ ó‹‚ Ì	w   \ ‚‰w     ù¯üX
9¬öq ðyÀ¨( ©{;       ÌO   î*PÀ*  ½©3…    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(þ ŽT;ªh ŽTÛªh ŽTS«h  ŽTË«h   Ôª€ph ÝªðKh ¯”   
   ó`      (ª  *    f f&
&Ä  Äe, Œ&f…
   ,«0z*  & „ fw f&ŠÎ w fÄU €&ƒ ‚ *  L M—v v € ŠÀ 6` —v ÂU € 

Ãq*  r Ä`Ã€„c„ 	q„m ö €„`a@„€`*  ˜ q€eAa@ aÖ„A@‡A@Ä
Äå€ Ä%ÿ *  ¾ ŠÐÁ  Š ÑÀ  A@‡…6 v
 …„  ä –%\ –%–%ÖÈ‰Ê‰Ö 

í       èO   î*PÀ*  ´©°;    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(n;ªh nÛªh nS«h  nË«h   i©pŠh v©€ph ¯”   
   ó`(ª  *    f f&
&Ä  Äe, Œ&f 

        ,«0z*  & &
ö
 N&
ö +ŽÝ &€Ý À ±  €Ý Ý*  L  Á 

ö v ‚Ý	 Žà
‚Ý Â ± ‚Ý *  r ƒÝ
 Ã ¡   ‡†–%ÖÉ‰æÈ‰*  ˜ Ê‰Ö6
 6

 3 Ž
¡  EsA *  ¾ qDàwÿÿswòÿ`w Î
ûwùÿ6 *  ä „Äe€ ÖÄ%ÿ Ñ6‘ 6 Ev v
 Ä‡  
Ã……„–%\        ø O   î*PÀ*  ì¨    î*PÀ   ¯”L  äÀ¨@      (  *  ó`(ª(8 æ5ªh  æÕªh æM«h æÅ«h( *  z5ªh  zÕªh zM«h
 zÅ«h$ ¯”   
   ó`(ª  *     
@Àe €@A&
&Îe  &  €€      æÂÃw     äÀ¨       ø O   î*PÀ*  ì¨€    î*PÀ   ¯”L  äÀ¨@      (  *  ó`(ª(8 æ8ªh  æØªh æP«h æÈ«h( *  z8ªh  zØªh zP«h
 zÈ«h$ ¯”   
   ó`(ª  *     
@Àe €@A&
&Îe  &  €€æÂÃw     äÀ¨       >O   î*PÀ*  l©Ø^    î*PÀ   ¯”L  ì¨ @  v© @  *  ,ª  @  Ôª @  O«òf@  º« @      (  "  ó`(ª(„ïÀ+h ï¶0h  ¯”   
   ó`(ª  *    æ&
fD Äe æzÏæÑ÷æræ±¿Æå &*  & &&&AÎ¶  ö•€  æeÞæ      ù3æóæ*  L 5@¦ ¦ ¦ ¦ æeÞæù3æóæ5@„	  r   ä       &  º« ä ì¨ 
v© Ôª   €   À           *  O«òfÀ Ôª 
ì¨ Ôª ì¨ Ôª   Ž             &  ì¨ Ôª ì¨ 
Ôª ì¨ Ôª   š       ö     (  ì¨ Ôª ì¨ 
ö ,ª  Ôª *  ¨   &  &Æe Ó‰ 



CÄ„Å æ¦  ì¨ &Ôª 
&„*  Î f&&&&&Å
öÄ„ \ ¶ ¶ ¶ ¶   „ *  ô \ &
ŽÝ Îå€ \ ¦ ¦ ¦ ¦ \ æzÏæ*  Ñ÷æræ1@\ öŠ 	ær(æ7©æØ[æÞ?\ €*        @‚ƒ…Ö‡ -?¸ŒvÞøù9?ÙuÎ¿Mžc?k’A`5»’?"  fIÆ2fÌ?ÌÌ(×ûë*@ªª§ª£	 A    /        ‚O   î*PÀ*  ±©     î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(`äÀ¨hL æ;ªh  æÛªh æS«h *  æË«h@ z;ªh  zÛªh zS«h
 zË«h< *  ì¨ðh& ì¨€ph@ º«€ph< Í«ph2 ¯”   
   ó`(ª  *     
@Àe €@A&
&*  & Ä  Äe, ŒÄ  Äe, ŒÎe €€ƒæÂÃ  ,«0z,«0z*  L &fÅ À.Â1Œf ŒŠ AÄ ± Œ…*  r ŠBAÅ Dá5	aÎ ¦ÂC€Ä%÷ÿ!Äe*  ˜  
Äe ÃBÅ …ÐVŒ      B…„€È*  ¾ \ E CõŠÁ À P 
Äå €„
üDa*  ä @Ž­ C`B`Â%ÿ Ö†…Š„CÓ†B‹E‹Ð†È‰*  


€%ÑCà‚àÂ‹ÃÅ

„CBÂ‹»Ã*  0BÅ
úÊ‰èÎ ‚óÂãÃ 
ÂÐŠÅå   Vî
Åå ê       ˜O   î*PÀ*  †¬@8    î*PÀ   ¯”L  v©€p@  Ôª€p@  *  ,«0z@      (  ó`(ª(¸ ù–À¨h
 W«èqh
   †¬@8h  ¯”   
   ó`(ª  *    Ä  Äe, Œ¦&¶ †¦ ¦ ö .  ,«0z*  & 
&
æ€@ö ö
 $<¦ ¦ ¦ ¦ *  L „	  T ¶
 õ†¦ ¦ ¦ ¦ „	  r   Ôª€p
T &Ôª      €p(r *  r ¶ ¶ ö
 â–%ö ¦ ¦ 6
 ö$  ˜ €@ „	  ¤ ¶ ¶ „–%\ –%Ò‰ö  v©€p¤        ² O   î*PÀ*  G©[    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª($ ´À¨h
 N©¦}h  r©  h
 ¯”   
   ó`(ª  (    Ä  Äe, Œ€$HˆH`‡„

È‰\   ,«0z       ¬ O   î*PÀ*  5ª …    î*PÀ   ¯”L      (  ó`(ª( *  ‘T;ªh
 ‘TÛªh ‘TS«h  ‘TË«h Ôª@8h 
  ¯”   
   ó`(ª          &€pf‡\ 
Æ‰\        ® O   î*PÀ*  ,ªÃ;    î*PÀ   ¯”L      (  ó`      (ª( *  q;ªh
 qÛªh qS«h  qË«h v©@8h 
  ¯”   
   ó`(ª  "     &&& Àr†Ç‰
\        ÀO   î*OÀ*  š©s    î*OÀ   ¯”L  ü¨ }@  e© }@  *  š©,t@  š©Ô€@   ©`;@  7ª	#@  ,«0z@  *  ³«€»@  ù±oŒ@      (  ó`(ª(À©»Whz*  š©©phv š©¢shHš©¥shÀš©‘thXš©|—h*   ©{;hD ¹©àLh¦Ë«°h  Ë«Øh Ë« ‚h *  Ë«(‚h Ë«P‚h Ë«x‚h" Ë« ‚hV Ë«È‚h*   Î«Ó~hB¯”   
   ó`(ª  *    Àƒ Æe À„ À… À† 	À‡ Àˆ *  & ÖÀŠ Àå€ Ã  ³^ æBÿˆ      ÷	2 Ã  À`   ,«0zB$,«0z*  L È	æ3ÿˆ&€ €Àå€ À‰ ÖÝ÷	 €*  r Ö w	  Ã  Âlt Ê‹À 3h 3
v 3
x   
ù±oŒ,«0z*  ˜ 3
€ ÷	V œ6 €2Š6 sv œ7 sx œ. s*  ¾ € Âlt ÊÕ€ ’††ó
f †Äd *  ä † 
÷	$ A	†w   Â ¦N
Ö5 ‡ Àÿÿ  7ª	#*  
÷	 w   w	  Ã  &÷	  ÷	4ÖÁ÷	v  
 ©`;ù±oŒ,«0zü¨ }$*  0Áí÷	nÁh ÷	:÷	  Á  B”ÂE ÿ³ h   íš©,tš©Ô€*  VÑ‹þö÷	F÷	  Ä^ Á5÷	4÷	T÷	    š©,t5(š©,t*  |3
^ óf Á÷	÷	  ÷	      `ÿ!€Áv €Á  š©,t*  ¢ó÷	þ Áv ÷	Ê Õ•, œ7 ÷	¾ ÄeT Á	 ÷	  ó*  Èê À œ. ÷	¤ ÷	  Æå ö   ö  €Á  š©,t*  î÷ð 	 ÷	"   Á ôÄ>÷	 Æe   ÷  >*  Õ•  ÷	  w   &÷	€ &&„Á ÷	  –%€Á  
š©,te© }"³«€»*  :	÷	f  Õ•  Õ•? ÷	& w   ær æ?  	 š©,t*  `ÿˆÅn Är Á ÷	F Áæw , Õ•  Á€Õ•-   æ*  †
Áå
 ‚
ûÁe: f÷	æÿ••‡ s!p ‚*  ¬U”ûÅ
‡ Õ•  f÷	  å¥  D~…
‡ Í• ±   ³«€»*  ÒAUŒÍ•† ÁMŒü‡÷‡   --   ERROR FCS        *  ø IN   "   FROM " " AT EXITING DUE TO  *  (ERROR COUNT EXCEEDED) AT PC =  Œ:	±i  D       I  I   \  \_____________9_    m  m_____;___   „  „__q___   
  _;;;;1   ˜  ˜;;;;;;;    ¢  ¢1   §  §;   ¬  ¬   ·  ·;;       ÖO   î*RÀ*  š©Ô€    î*RÀ   ¯”L      (  ó`(ª(h  š©Ô€h  ¯”   
   ó`(ª  *    INVALID ERROR CALL TASK INITIALIZATI*  & ON FAILURE ODD ADDRESS TRAP (SST0) S*  L EGMENT FAU      LT (SST1) T-BIT OR BPT TRAP*  r  (SST2) IOT TRAP (SST3) RESERVED INS*  ˜ TRUCTION TRAP (SST4) NON-RSX EMT TRAP*  ¾  (SST5) 	TRAP INSTRUCTION TRAP (SST6) *  ä 
PDP-11/40 FIS TRAP (SST7) REWIND ERR*  
OR DEFINEFILE ALREADY DONE RECORD TO*  0O LONG BACKSPACE ERROR END-OF-FILE D*  VURING READ INVALID RECORD NUMBER DEF*  |INEFILE NOT DONE MORE THAN ONE RECORD*  ¢ CLOSE ERROR NO SUCH FILE OPEN FAIL*  ÈURE MIXED ACCESS MODES  INVALID LOGIC*  îAL UNIT NUMBER !ENDFILE TO DIRECT ACCE      *  SS FILE "UNIT ALREADY OPEN %INCONSISTE*  :NT RECORD LENGTH &ERROR DURING WRITE '*  `ERROR DURING READ (RECURSIVE I/O ATTEM*  †PT )NO FCS BUFFER ROOM *DEVICE HANDLER*  ¬ NOT RESIDENT +FILE NAME SPECIFICATION*  Ò ERROR ,DIRECT ACCESS RECORD SIZE ERRO*  øR -UNSUPPORTED OPEN KEYWORD .INCONSIST*  ENT OPEN STATEMENT SPECIFICATIONS <INF*  DINITE FORMAT LOOP =FORMAT/VARIABLE-TYP*  jE MISMATCH >SYNTAX ERROR IN FORMAT ?OU*  TPUT CONVERSION ERROR @INPUT CONVERSIO*  ¶N ERROR AFORMAT TOO BI      G FOR 'FMTBUF' B*  ÜRECORD TOO BIG CRECORD TOO SMALL FOR I*  /O LIST ELIST DIRECTED I/O SYNTAX ERRO*  (R FINTEGER OVERFLOW GINTEGER ZERO DIVI*  NDE HFLOATING OVERFLOW IFLOATING ZERO D*  tIVIDE JFLOATING UNDERFLOW PWRONG NUMBE*  šR OF ARGUMENTS QINVALID ARGUMENT RUNDE*  ÀFINED EXPONENTIATION SLOGARITHM OF NEG*  æATIVE VALUE TSQUARE ROOT OF NEGATIVE V*  ALUE UINVALID ARGUMENT TO LIBRARY FUNC*  2TION VINVALID ERROR NUMBER ZCOMPILER D*  XETECTED ERROR [COMPUTED GOTO OUT OF RA*  ~NGE _I      NCOMPATIBLE FORTRAN OBJECT MODUL*  ¤E IN TASK `MISSING FORMAT CONVERSION R*  ÊOUTINE aFTN FORTRAN ERROR CALL dDIRECT*  ðIVE: MISSING ARGUMENTS eDIRECTIVE: INV*  ALID EVENT FLAG NUMBER oVIRTUAL INITIA*  <LIZE FAILURE pVIRTUAL ARRAY MAPPING ER	  bROR  I       O   î*PÀ*  9¬€q    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(Ô žŠ5ªh  žŠ8ªh žŠÕªh žŠØªh *  žŠÅ«h
 žŠÈ«h ~Œ5ªh^ ~Œ8ªhd ~ŒÕªhj *  ~ŒØªhv ~ŒM«hÌ ~ŒP«hÐ ~ŒÅ«hr ~ŒÈ«h~   7¬f"h C¬^h„ ¯”   
   ó`(ª  *          &&&&&&æZ ‚€p c@r   Z *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ‡  ,«0z*  L ÁÁNàf àJ \ ð‰&
&&
&
 & &*  r & & &&æZ ‚€p m @r   Z *  ˜ ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆÐ‡Á  
,«0z  ¾ Á± à±àÖJ  Î Ò       ðO   î*PÀ*  9¬øq    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(¼ ¡Š5ªh  ¡Š8ªh ¡ŠÕªh ¡ŠØªh *  ¡ŠÅ«h
 ¡ŠÈ«h Œ5ªhX Œ8ªh\ ŒÕªh` *  ŒØªhf ŒM«h° ŒP«h¶ ŒÅ«hb ŒÈ«hh   7¬i"h C¬ahn ¯”   
         ó`(ª  *    &&&&&&æT ‚€p  c@r   T *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ‡  ,«0z*  L ÁN àJ \ ð‰&&&&&&æT ‚€  $T *  r p  m @r ×p€ À  ð – ð– 0
˜   ,«0z(  ˜  ¤ &æyÿˆØ‡Á± àÖJ  &Ö &Ö       TO   î*PÀ*  9¬0q    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(ô œŠ5ªh  œŠ8ªh œŠÕªh œŠØªh *  œŠÅ«h
 œŠÈ«h |Œ5ªhb |Œ8ªhh |ŒÕªhv *  |ŒØªh€ |ŒM«hæ |ŒP«hî |ŒÅ«h| |ŒÈ«h”   7¬d"h C¬\hš ¯”   
   ó`(ª  *    &      &&&&&æ^ ‚€p c@r   ^ *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ
‡  ,«0z*  L ÁeWp NfffJ \ ð‰Á| Á” &
&
&

  | "” *  r &I Á| &Á”  Àe &&&&I &æ
  
| ” *  ˜ ^ ‚€p m @r ×p€ À  ð – ð  ^  ,«0z*  ¾ – 0
˜  ¤ &æyÿˆÇ‡Áe Wp ‘‘‘‘Ö  ä J Á|  ÌÁ” û
  | ”        úO   î*PÀ*  9¬8s    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(À ©Š5ªh  ©Š8ªh ©ŠÕªh ©ŠØªh *  ©ŠÅ«h
 ©ŠÈ«h ‰Œ5ªhZ ‰Œ8ªh^ ‰ŒÕªhb *  ‰ŒØªhh       ‰ŒM«h´ ‰ŒP«hº ‰ŒÅ«hd ‰ŒÈ«hj   7¬q"h C¬ihp ¯”   
   ó`(ª  *    &&&&&&æV ‚€p c@r   V *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ‡  ,«0z*  L ÁÁN àJ \ ð‰&&&&&&æV ‚  &V *  r €p m @r ×p€ À  ð – ð– 0
  ,«0z*  ˜ ˜  ¤ &æyÿˆØ‡ÁÁ± àÖJ  &Õ &  ¾ Õ       îO   î*PÀ*  9¬pr    î*PÀ   ¯”L  ,«0z@      (  *  ó`(ª(º ¤Š5ªh  ¤Š8ªh ¤ŠÕªh ¤ŠØªh *  ¤ŠÅ«h
 ¤ŠÈ«h „Œ5ªhX „Œ8ªh\ „ŒÕªh` *  „ŒØªhf „ŒM«h      ® „ŒP«h´ „ŒÅ«hb „ŒÈ«hh   7¬l"h C¬dhn ¯”   
   ó`(ª  *    &&&&&&æT ‚€p@ c@r    T *  & ×p€ À  ð – ð– 0
˜  ¤ &æyÿˆ‡  ,«0z*  L 
Nœ àJ \ ð‰&&&—&&—&æT ‚€  $T *  r p@ m @r  ×p€ À  ð – ð– 0
˜   ,«0z&  ˜  ¤ &æyÿˆØ‡±• àÖJ  &’× &’×       O   î*PÀ*  9¬üX    î*PÀ   ¯”L  ,«0z@  y²€pH *      (  ó`(ª(V 9¬öqh  B¬„:h  ­;h    ­ˆx(  ó«@Gh  ¯”   
   ó`(ª  *    Ã  ÀÀeŽ 3¤ 
Ð 



      Ð# 
f  ,«0z­ˆx *  & æ7ÿˆ†ï‰@Ð 
Ð€ 

Ð‚ 
f  L æuÿˆí‡‡        Z O       *  «y:    ¯”L      ( 9¬öqh  ¯”   
             ‡        ˆ O   vÀ›½*  ƒ,d    vÀ›½   ¯”L      (  
­D"(   a³ˆZh  ¯”   
   
­D"       ± ðµ =  p! †Õ•^ ú‡        ŒO   wÀ[Ð*  K	VN    wÀ[Ð   ¯”L  s©À@  °s@  *  ù±oŒ@  c³Ü@      (  
­D"(¸ ;¯VNh    a³VNh ¯”   
   
­D"  *    w	  fB C 	œ" ¦æ&æÿˆ	‡÷	l   ù±oŒ      *  & †Â  ÃSYîð  * ‡ Å° p0 p2   s©À*  L q 1 0Š= ðµ   f&
&Îe< ð < æ*  r ƒ
Á ÷	  Æe ð < ð• * ‡ Á  Áe  c³Ü&°s$  ˜  œ" f¦æÿˆ‡DC’B A ‡        øO   wÀøÊ*  ¯ˆw    wÀøÊ   ¯”L  °s@  ù±oŒ@  *  a³ˆZ@  b³—G@  f³Ð@  i³‚@  q³¯:@  *  r³"&@  w³·€@      (  
­D"(Ð „¯½`h  
  ¯”   
   
­D"  *    w	  ð * 8 w ´ ðµ  ðµ ) ÷	  ù±oŒ*  &   ðµ   ð¥   ÷	  †øÿÿ  Bà  b³—Ga³ˆZ*  L ÷	  &œ* ÷	  
      „&
ðµ # ðµ!  ðµ   w³·€i³‚*  r ) &ÎeP æÂ  Âe Ê¦æðµ #   °s*  ˜ &æ•&Ä ð> €Åe > ÍE €÷	    (q³¯:  ¾ †•p* ÷	  w     r³"&f³Ð       tO   wÀ›½*  •e	    wÀ›½   ¯”L  °s@  f³Ð@  *  i³‚@  q³¯:@      (  
­D"(¤ c³Iqh  
  ¯”   
   
­D"  *    ðµ  Gðµ = ðÕ  fÂ  &
Âe
 Ê%   °s*  & ÿÿ¦æ&æ&ÎeH æ
ðµ   &Îe*  L 0 æ÷	  U•
 Â …ÃÂE •  i³‚*  r Õð> €> ÍE €fÄ ÷	  p        †ñ  q³¯:  ˜   ±
  w     f³Ð       ò O   vÀÊ*  zÌ    vÀÊ   ¯”L  i³‚@  q³¯:@  *      (  
­D"(H e³²Zh  f³t:h r³®Sh 
  ¯”   
   
­D"  *    Ä Ä Ä 	ðµ  f÷	  ð> €5   i³‚&  & >  õE € u
 ÷	  ‡ ñ  ±
  ‡   q³¯:      2O   wÀÊ*  œ,      wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³J,@  p³—y@  r³Þ@  *  r³ü@      (  
­D"(ð° }h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±      oŒ
p³J, r³ü*  &  ÷	ð¥öÿ* 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* úðµ  ÷	  ó‡÷	j÷	d÷	  ë‡  p³—y&e³&*  r ðe  p  p  ‡÷	Þ‡ ð¥   #*  ˜ ðµ = Ä 
E”W¡9 ƒÅ¥^ éð•³ÿ* ÆÅå*  ¾ 0 ùÃÅ`ÃÃCaÄ
ëÃå Cƒ
ÔÃðµ*  ä   ÷	Ø ð¥   ð 0 Äð•Øÿ* ¡ð¥ *  
  æÂe@ Ã Îà÷	€ ƒ’‡÷	 ‡ðµ = *  0
ÁE p …ðµ  ÷	| ð p *  V °  æÄ ð Îà÷	, ƒƒ÷	J *  |á÷	 ù†ð•Øÿ* Á`‡ æ÷	  ƒ ‡ æ  r³Þ*  ¢ Càƒ#ƒÎà÷	        Î¦÷	Ôÿ‚ð†–
‡   m³oŒ*  È DàÄ ‡ ðµ@ ) ð
6 ðÿ? 0  ðÅD )   î‡       O   wÀÊ*  œ,hy    wÀÊ   ¯”L  ù±oŒ@  e³&@  *  f³Ð@  m³oŒ@  p³K,@  r³ü@  s³k@  "      (  
­D"(è°	€h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³K, r³ü*  &  ÷	ü ð¥öÿ* 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* ú÷	p÷	  õ‡ðe  p  p  ‡  e³&*  r ÷	è‡ ð¥   #ðµ = Ä 
E”W¡9 *  ˜ ƒÅ¥^ éð•³ÿ* ÐÅå0 ùÃÅ`ÃÃCaÄ
ëÃå*        ¾  Cƒ
ÔÃðµ  ÷	ä ð¥   *  ä ð 0 Äð•Øÿ* «ð¥   æÂe@ Ã Îà÷	*  
Œ ƒœ‡÷	 ™‡ðµ = 
ÁE p ðµ  *  0÷	ˆ ð p  °  æÄ *  Vð Îà÷	8 ƒƒ÷	V á÷	 ù†ð•Øÿ* Á`*  |‡ ðµ ) w   æ÷	  ƒ ‡ æ Càƒ#  s³kr³ü*  ¢ƒÎà÷	  Î¦÷	Èÿ‚ð†–
‡  DàÄ ‡   m³oŒ$  Èðµ@ ) ð
6 ðÿ? 0  ðÅD ) ‡       †O   xÀ¸Ý*  E`€W    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  b³Ó@  c³Iq@  d³?!@  e³²Z@  *  f³Ð@  f³t:@  f³y:@  i³‚@        m³lE@  *  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@  *  s³þ}@      (  
­D"(h±p!h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w úðµðÿ  ù±oŒ
°sf³y:*  &  w ,ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w øÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÷	  ‡÷	`ñ   s³þ}*  ˜   Tðµ # ÷	  ‡Lðµ   ð¥     f³t:*  ¾  ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0 *  ä p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  †ðµ  
c³Iq$e³²Z*  
@ # ð¥Çÿ* ð * ff       f ÷	  ±   $d³?!*  0± ‰‡÷	  †
w ò ðµ  ð  8 ðe$   e³²Z"°s*  V8 2 &À  Áe ÷	  €Z‡p8 q
 ÷	  °s¡«*  |ì V‡0
 ð  ðµ  #0  0  œ  *  ¢Ä¥ ‚‡œA Ä¥ ÄŠð ð•   *  È00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ* 0
@   r³,}*  î÷	  „ðµ # &
&æµ &Ä ÷	  †  i³‚&q³¯:*  ‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ*   r³"&*  :ÁeB Â÷	  ÷	  °•* âð•Õÿ* äð•Ôÿ*   r³®Sm³lE*  `àð•Óÿ* Üðµ  w P÷	  ÕeB Æå
 •  i³‚      *  †Åe > Ä €…
ðµ  # ÍÕ Ä ðµ *  ¬# Ä DÃÍÅ ÑÄ ðµ # Ä ðµ   *  ÒðµH # ÍÕ@ …& 0
 ðµ # Õü*  ø Õ÷
 
÷	  ‡0 @ ° Æe
   q³¯:*  Ei‡°
6 ðµ   ðÿ ðµ # ð 
 ðµ*  D@ # ðÿ? ðµ@ # 0 4 0
 6 ðµ  *  jBðµ # :ðµ   ðµA # 	ðÕ@ ) 0
 ð*   
 )÷	  †æ ð¥öÿ* * ÷	:þ°*   r³ë*  ¶ðµ@ # 0l  ðµ # 	ð•   ð•  0*  Ü2  ðµ  8 ÷	  ÷	  ‡  ðµ!    b³Óf³Ð  ðµ   p0 p2 ‡             NO   xÀ¸Ý*  F`à8    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  f³Ð@  f³y:@  *  i³‚@  q³¯:@  r³"&@  r³,}@  r³ë@  "      (  
­D"(jh±ì&h  ¯”   
   
­D"  *    w	  Á  w zñB ÷	  ð8 w rðµðÿ  ù±oŒ
°sf³y:*  &  w €ðµ # ðµ  ðµôÿ w lœ*  L   Ä¥ †w LÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  †  &a³VN*  ˜ w ò ÷	ªñ  ðµ  w ì ±
  ðµ  *  ¾ ð  8 ðe$ 8 2 &À  Áe ÷	  €R‡  °s°s"¡«      *  ä p8 q
 ÷	Î N‡0
 ð  ðµ  #0  *  
0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð*  0 ð•   00  0  ÷	  0
@ ‡ ÷	 ð•  r³,}*  VÕÿ* 0
@ ÷	  „ðµ # &
&æµ &  i³‚*  |Ä ÷	  †‡ ð•Ùÿ* ÷	  ð•Ëÿ* ± ‡ ð•Äÿ  
q³¯:r³"&*  ¢* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ  w *  ÈP÷	  ÕeB Æå
 •Åe > Ä €…
ðµ  i³‚*  î  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ *  ðµ # Ä ðµ   ðµH # ÍÕ@ …& *  :0
 ðµ # Õü Õ÷
 
÷	    (q³¯:*  `‡0 @       ° Æe
 Ei‡°
6 ðµ   ðÿ*  † ðµ # ð 
 ðµ@ # ðÿ? ðµ@ # *  ¬0 4 0
 6 ðµ  Bðµ # :ðµ   ðµ*  ÒA # 	ðÕ@ ) 0
 ð 
 )÷	  †æ ð¥öÿ  r³ë*  ø* * ÷	Xþ°* ðµ@ # 0l  ðµ *  # 	ð•   ð•  02  ðµ  8 ÷	    (b³Ó*  D÷	  ‡  ðµ!  ðµ   p0 p2 ‡   f³Ð      ŒO   xÀ¸Ý*  F`ÐW    xÀ¸Ý   ¯”L  ¡«@  °s@  *  ù±oŒ@  a³VN@  b³Ó@  c³Iq@  d³?!@  *  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  *  m³lE@  q³¯:@  r³"&@  r³®S@        r³,}@  *  r³ë@      (  
­D"(h±²'h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w  ðµðÿ  ù±oŒ
°sf³y:*  &  w 2ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w þÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  ‡  &a³VN*  ˜ ÷	`ñ  Tðµ # ÷	  ‡Lðµ   ð¥   f³t:*  ¾    ×  †ð•Øÿ* w F
Å`p!2 ü‡Åà*  ä Åp0 p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  c³Iq*  
  †ðµ@ # ð¥Çÿ* ð * ff f ÷	  e³²Z*  0  ± ± ‰‡÷	  †
      w ò ðµ  ð    d³?!e³²Z(°s*  V8 ðe$ 8 2 &À  Áe ÷	  €Z‡p8   °s¡«*  |q
 ÷	ì V‡0
 ð  ðµ  #0  0 *  ¢ œ  Ä¥ ‚‡œA Ä¥ ÄŠð *  Èð•   00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ*   r³,}*  î0
@ ÷	  „ðµ # &
&æµ &Ä   i³‚*  ÷	  †‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñ  q³¯:r³"&*  :Â&œ* ÁeB Â÷	  ÷	  °•* âð•Õÿ* ä  r³®Sm³lE*  `ð•Ôÿ* àð•Óÿ* Üðµ  w P÷	  ÕeB   "i³‚*  †Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä      *  ¬ ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä *  Òðµ   ðµH # ÍÕ@ …& 0
 ðµ # *  øÕü Õ÷
 
÷	  ‡0 @ °   q³¯:*  Æe
 Ei‡°
6 ðµ   ðÿ ðµ # ð*  D 
 ðµ@ # ðÿ? ðµ@ # 0 4 0
 6 *  jðµ  Bðµ # :ðµ   ðµA # 	ðÕ@ ) *  0
 ð 
 )÷	  †æ ð¥öÿ* * ÷	:þ  r³ë*  ¶°* ðµ@ # 0l  ðµ # 	ð•   ð•*  Ü  02  ðµ  8 ÷	  ÷	  ‡    b³Ó f³Ð  ðµ!  ðµ   p0 p2 ‡        –O   vÀÊ*  af Z    vÀÊ   ¯”L        a³—K@  b³Ó@  *  c³Ü@  e³&@  e³&@  r³ë@  w³œ€@  "      (  
­D"(œ p³¿Zh  ¯”   
   
­D"  *    ðµ   ° 6 p 4 
 ì0 Á`p ÷	    (e³&*  & ‡ ÷	  ü‡æf¦ðµ ) ÷	  )‡ðµ   Á  a³—Kw³œ€*  L  

÷	  °6 °4 ðÕ@ ) ð 
 0
 8   c³Ü*  r ÷	  Ö‡ °6 °4 ÷	  °e ð‹* w   Æe   b³Ór³ë$e³&  ˜ ± ‡       °O   wÀ›½*  \g      wÀ›½   ¯”L  i©€‰@  ù±oŒ@  *  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³J,@  *  p³“y@  r³Þ@  r³,}@  r³ë@  w³™€@        *  w³·€@      (  
­D"(Ò•± }h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³J,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@   r³,}$f³Ð*  ¾ ) ðµ  ÷	  †ð¥öÿ* ï0,  ÷	    p³“y(r³Þ*  ä ÷	°æ‡ðµ  
÷	  ‡ðÅ ) ð * ðÕ   e³&*  
) ðµ  '
ð¥   Óðµ = Óð¥   *  0Ól ð 0 ¹l       ð  ƒð¥   ÷	  †  &a³ˆZ*  Vøÿÿ ÷	ô ª‡  ð¥   /ð  ð *  |ð¥   Ãe &ðµ = Å BaÀ@aÁ
 ÷	*  ¢  Áe0 bÅ
÷Âe Ò€ð¥   Áe@ Ã  i©€‰*  È ÷	˜ A‡  ÷	Š :‡ðµ = ‚
ÂE °*  î ÷	¶ ðe  p ðÕ )  ì  ‡ðµ *   ð¥   Ã% ÷	  †, 	ðµ    a³ˆZ*  :÷	 ÷	T ‡÷	  w hþw ^þ‡ ÷	  ‡÷	L †  r³,} w³™€*  `÷	  ‡ B æ ƒàƒ#ƒÎà÷	  Îf÷	  r³ë m³oŒ*  †Ìÿ î†–
‡ Â`‡ ð¥öÿ* ð * w   ±   &f³Ð*  ¬ðµ ) 04  0      6 
  l0 ì ° ‡       RO   wÀ›½*  \ghy    wÀ›½   ¯”L  i©€‰@  ù±oŒ@  *  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³K,@  *  r³,}@  s³k@  w³™€@  w³·€@      (    
­D"(ž•±	€h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³K,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@   r³,}$f³Ð*  ¾ ) 0,  w         ðµ  
÷	  ‡ðÅ ) ð  s³ke³&*  ä  * ðÕ ) ðµ  '
ð¥   Óðµ = *  
Óð¥   Ól ð 0 Èl ð  ƒð¥   *  0÷	  †øÿÿ ÷	ð ¹‡  ð¥   /ð   a³ˆZ*  V ð ð¥   Ãe &ðµ = Å BaÀ*  |@aÁ
 ÷	  Áe0 bÅ
÷Âe Ò€ð¥     i©€‰*  ¢Áe@ Ã ÷	” ?‡  ÷	† 8‡ðµ = *  È‚
ÂE ° ÷	  ðe  p ðÕ )  ì *  î‡ðµ  ð¥   Ã% ÷	  †
,    a³ˆZ*  ðµ  ÷	 ‡÷	  w Šþw €þ‡ ÷	  ‡÷	  r³,}$w³™€*  :: †w   ‡ B æ ƒàƒ#      ƒÎà÷	  Î  
s³k$m³oŒ*  `f÷	Ìÿ î†–
‡ Â`‡ ± ðµ ) 04    †06 
  l0 ì ° ‡        Ô O   vÀÊ*  \qò    vÀÊ   ¯”L      (  
­D"(\   r³,}h  ¯”   
   
­D"  *    ðµ  ) ðµ  ð¥   ’¤ð¥   *  & ’¤ðµ = ’¤° 0  ð¥   0  l  L  °  ƒ0  ‡        O   vÀáØJ  ;	Žf    vÀáØ   ¯”L  \±D@  ù±oŒ@      (  
­D"(` ;¯Ph  ¯”   
   
­D"  *    w	  ‚ Á
Ò¥[ Ä, ÷	 ‡æÄ] ÷	  ù±oŒ*  &  …
‡Ás‘ ‡ …¡      Á
ü± ‡ Á
„DáÄ
  L w     \±D
   
­D".   .    P   P ÷Å5 ÿôó‹ ñè       ŒO   wÀbÌz  œ,      wÀbÌ   ¯”L  â)_G@  å)Ps@  î)Ôp@  ù±oŒ@  e³&@  f³Ð@  m³oŒ@  p³J,@  p³—y@  r³Þ@  r³ü@      (    
­D"(ð° }h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³J, r³ü*  &  ÷	ð¥öÿ* 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* úðµ  ÷	  ó‡÷	j÷	d÷	  ë‡  p³—y&e³&*  r ðe  p  p  ‡÷	Þ‡ ð¥   #*  ˜ ðµ =       Ä 
E”W¡9 ƒÅ¥^ éð•³ÿ* ÆÅå*  ¾ 0 ùÃÅ`ÃÃCaÄ
ëÃå Cƒ
ÔÃðµ*  ä   ÷	Ø ð¥   ð 0 Äð•Øÿ* ¡ð¥ *  
  æÂe@ Ã Îà÷	€ ƒ’‡÷	 ‡ðµ = *  0
ÁE p …ðµ  ÷	| ð p *  V °  æÄ ð Îà÷	, ƒƒ÷	J *  |á÷	 ù†ð•Øÿ* Á`‡ æ÷	  ƒ ‡ æ  r³Þ*  ¢ Càƒ#ƒÎà÷	  Î¦÷	Ôÿ‚ð†–
‡   m³oŒ*  È DàÄ ‡ ðµ@ ) ð
6 ðÿ? 0  ðÅD )   î‡ 
   
­D"6   6 ðÕ   ð  ð     â)_Gî)Ôpå)Ps   ƒ       O   vÀáØB  œ,h          vÀáØ   ¯”L  a³VN@      (  
­D"(j g³©}h  ¯”   
   
­D"  *    ð * ¦÷	  ‚'‡ðµ  ðµ  f f  a³VN*  &  f
 f f þ	
 ± ± ±
 ± ±   L ñÿÿ ñÿÿ 1
 –
‡ 
   
­D"4   4 ÷	*    b   b 1
 ~         vO   wÀbÌz  œ,hy    wÀbÌ   ¯”L  â)_G@  å)Ps@  î)Ôp@  ù±oŒ@  e³&@  f³Ð@  m³oŒ@  p³K,@  r³ü@  s³k@      (  
­D"(è  °	€h  ¯”   
   
­D"  *    w	  ÷	  ‡ðµ ) ðµ  ÷	  8 C   ù±oŒ
p³K, r³ü*  &  ÷	ü ð¥öÿ      * 	ð ð * ðÕ ) w     (f³Ð*  L ð•öÿ* ú÷	p÷	  õ‡ðe  p  p  ‡  e³&*  r ÷	è‡ ð¥   #ðµ = Ä 
E”W¡9 *  ˜ ƒÅ¥^ éð•³ÿ* ÐÅå0 ùÃÅ`ÃÃCaÄ
ëÃå*  ¾  Cƒ
ÔÃðµ  ÷	ä ð¥   *  ä ð 0 Äð•Øÿ* «ð¥   æÂe@ Ã Îà÷	*  
Œ ƒœ‡÷	 ™‡ðµ = 
ÁE p ðµ  *  0÷	ˆ ð p  °  æÄ *  Vð Îà÷	8 ƒƒ÷	V á÷	 ù†ð•Øÿ* Á`*  |‡ ðµ ) w   æ÷	  ƒ ‡ æ Càƒ#  s³kr³ü*  ¢ƒÎà÷	  Î¦÷	Èÿ‚ð†–
‡  DàÄ ‡   m³oŒ      $  Èðµ@ ) ð
6 ðÿ? 0  ðÅD ) ‡ 
   
­D"6   6 ðÕ   ð  ð     â)_Gî)Ôpå)Ps   ƒ       rO   xÀ#ßz  E`€W    xÀ#ß   ¯”L  ¡«@  °s@  ù±oŒ@  b³Ó@  c³Iq@  d³?!@  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  m³lE@  R  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@  s³þ}@      (  
­D"(vh±p!h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w úðµðÿ  ù±oŒ
°sf³y:*  &  w ,ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w øÄ
0
 ð * 0
 0
 0
*        r  ð 
 0
 0
4 0
6 ðÅÿ) ÷	  ‡÷	`ñ   s³þ}*  ˜   Tðµ # ÷	  ‡Lðµ   ð¥     f³t:*  ¾  ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0 *  ä p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  †ðµ  
c³Iq$e³²Z*  
@ # ð¥Çÿ* ð * ff f ÷	  ±   $d³?!*  0± ‰‡÷	  †
w ò ðµ  ð  8 ðe$   e³²Z"°s*  V8 2 &À  Áe ÷	  €Z‡p8 q
 ÷	  °s¡«*  |ì V‡0
 ð  ðµ  #0  0  œ  *  ¢Ä¥ ‚‡œA Ä¥ ÄŠð ð•   *  È00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ* 0
      @   r³,}*  î÷	  „ðµ # &
&æµ &Ä ÷	  †  i³‚&q³¯:*  ‡ ÷	  ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ*   r³"&*  :ÁeB Â÷	  ÷	  °•* âð•Õÿ* äð•Ôÿ*   r³®Sm³lE*  `àð•Óÿ* Üðµ  w P÷	  ÕeB Æå
 •  i³‚*  †Åe > Ä €…
ðµ  # ÍÕ Ä ðµ *  ¬# Ä DÃÍÅ ÑÄ ðµ # Ä ðµ   *  ÒðµH # ÍÕ@ …& 0
 ðµ # Õü*  ø Õ÷
 
÷	  ‡0 @ ° Æe
   q³¯:*  Ei‡°
6 ðµ   ðÿ ðµ # ð 
 ðµ*  D@ # ðÿ? ðµ@ # 0 4 0
 6 ðµ        *  jBðµ # :ðµ   ðµA # 	ðÕ@ ) 0
 ð*   
 )÷	  †æ ð¥öÿ* * ÷	:þ°*   r³ë*  ¶ðµ@ # 0l  ðµ # 	ð•   ð•  0*  Ü2  ðµ  8 ÷	  ÷	  ‡  ðµ!    b³Óf³Ð  ðµ   p0 p2 ‡ 
   
­D"> 
  > ÷	Ô     † 
  † ÷	¤     Ø   Ø üƒ   Z  Z÷	â   œ  œ&* Î¥öÿw ®    Ô
  Ô÷	Ž      *  ðµôÿ ðµ  ðµ  ‡ ðÅÿ) ðÕ ) 0
*  <@ ‡ 2 Á5 ‡ Öð•íÿ* w ¾ýÎ ðÕ )   bw Jÿðµ  ðÕ  ‡        .O   xÀ#ßz  F`à8          xÀ#ß   ¯”L  ¡«@  °s@  ù±oŒ@  a³VN@  b³Ó@  f³Ð@  f³y:@  i³‚@  q³¯:@  r³"&@  r³,}@  r³ë@  "      (  
­D"(Êh±ì&h  ¯”   
   
­D"  *    w	  Á  w zñB ÷	  ð8 w rðµðÿ  ù±oŒ
°sf³y:*  &  w €ðµ # ðµ  ðµôÿ w lœ*  L   Ä¥ †w LÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  †  &a³VN*  ˜ w ò ÷	ªñ  ðµ  w ì ±
  ðµ  *  ¾ ð  8 ðe$ 8 2 &À  Áe ÷	  €R‡  °s°s"¡«*  ä p8 q
 ÷	Î N‡0
 ð        ðµ  #0  *  
0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð*  0 ð•   00  0  ÷	  0
@ ‡ ÷	 ð•  r³,}*  VÕÿ* 0
@ ÷	  „ðµ # &
&æµ &  i³‚*  |Ä ÷	  †‡ ð•Ùÿ* ÷	  ð•Ëÿ* ± ‡ ð•Äÿ  
q³¯:r³"&*  ¢* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ  w *  ÈP÷	  ÕeB Æå
 •Åe > Ä €…
ðµ  i³‚*  î  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ *  ðµ # Ä ðµ   ðµH # ÍÕ@ …& *  :0
 ðµ # Õü Õ÷
 
÷	    (q³¯:*  `‡0 @ ° Æe
 Ei‡°
6 ðµ   ðÿ*        † ðµ # ð 
 ðµ@ # ðÿ? ðµ@ # *  ¬0 4 0
 6 ðµ  Bðµ # :ðµ   ðµ*  ÒA # 	ðÕ@ ) 0
 ð 
 )÷	  †æ ð¥öÿ  r³ë*  ø* * ÷	Xþ°* ðµ@ # 0l  ðµ *  # 	ð•   ð•  02  ðµ  8 ÷	    (b³Ó*  D÷	  ‡  ðµ!  ðµ   p0 p2 ‡   f³Ð
   
­D"> 
  > ÷	(     † 
  † ÷	ø     Ì   Ì ÷	Ä   ð  ð&* Î¥öÿw ®    (
  (÷	Ž      j*  jðµôÿ ðµ  ðµ  ‡ ðÅÿ) ðÕ ) 0
*  @ ‡ 2 Á5 ‡ Öð•íÿ* w âýÎ ðÕ )   ¶w Jÿðµ        ðÕ  ‡        xO   xÀ#ßz  F`ÐW    xÀ#ß   ¯”L  ¡«@  °s@  ù±oŒ@  a³VN@  b³Ó@  c³Iq@  d³?!@  e³²Z@  f³Ð@  f³t:@  f³y:@  i³‚@  R  m³lE@  q³¯:@  r³"&@  r³®S@  r³,}@  r³ë@      (  
­D"(|h±²'h  ¯”   
   
­D"  *    w	  Á  w ñB ÷	  ð8 w  ðµðÿ  ù±oŒ
°sf³y:*  &  w 2ðµ # ðµ  ðµôÿ w œ*  L   Ä¥ †w þÄ
0
 ð * 0
 0
 0
*  r  ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	  ‡  &a³VN*  ˜ ÷	`ñ  Tðµ # ÷	  ‡Lðµ   ð¥         f³t:*  ¾    ×  †ð•Øÿ* w F
Å`p!2 ü‡Åà*  ä Åp0 p2 ÷	  ï‡ðµ # 'ðP ðÕ ) ÷	  c³Iq*  
  †ðµ@ # ð¥Çÿ* ð * ff f ÷	  e³²Z*  0  ± ± ‰‡÷	  †
w ò ðµ  ð    d³?!e³²Z(°s*  V8 ðe$ 8 2 &À  Áe ÷	  €Z‡p8   °s¡«*  |q
 ÷	ì V‡0
 ð  ðµ  #0  0 *  ¢ œ  Ä¥ ‚‡œA Ä¥ ÄŠð *  Èð•   00  0  ÷	  0
@ ‡ ÷	 ð•Õÿ*   r³,}*  î0
@ ÷	  „ðµ # &
&æµ &Ä   i³‚*  ÷	  †‡ ÷	  ð•Ëÿ* ± ‡       ð•Ùÿ* ðµ # ñ  q³¯:r³"&*  :Â&œ* ÁeB Â÷	  ÷	  °•* âð•Õÿ* ä  r³®Sm³lE*  `ð•Ôÿ* àð•Óÿ* Üðµ  w P÷	  ÕeB   "i³‚*  †Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä*  ¬ ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä *  Òðµ   ðµH # ÍÕ@ …& 0
 ðµ # *  øÕü Õ÷
 
÷	  ‡0 @ °   q³¯:*  Æe
 Ei‡°
6 ðµ   ðÿ ðµ # ð*  D 
 ðµ@ # ðÿ? ðµ@ # 0 4 0
 6 *  jðµ  Bðµ # :ðµ   ðµA # 	ðÕ@ ) *  0
 ð 
 )÷	  †æ ð¥öÿ* * ÷	:þ        r³ë*  ¶°* ðµ@ # 0l  ðµ # 	ð•   ð•*  Ü  02  ðµ  8 ÷	  ÷	  ‡    b³Ó f³Ð  ðµ!  ðµ   p0 p2 ‡ 
   
­D"> 
  > ÷	Ú     † 
  † ÷	ª     Þ   Þ üƒ   `  `÷	â   ¢  ¢&* Î¥öÿw ®    Ú
  Ú÷	Ž      *  ðµôÿ ðµ  ðµ  ‡ ðÅÿ) ðÕ ) 0
*  B@ ‡ 2 Á5 ‡ Öð•íÿ* w ¾ýÎ ðÕ )   hw Jÿðµ  ðÕ  ‡        äO   wÀâ¿z  \g      wÀâ¿   ¯”L  i©€‰@  ù±oŒ@  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³J,@  p³“y@  r³Þ@  r³      ,}@  r³ë@  w³™€@  *  w³·€@      (  
­D"(B•± }h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³J,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@   r³,}$f³Ð*  ¾ ) ðµ  ÷	  †ð¥öÿ* ï0,  ÷	    p³“y(r³Þ*  ä ÷	°æ‡ðµ  
÷	  ‡ðÅ ) ð * ðÕ   e³&*  
) ðµ  '
ð¥   Óðµ = Óð¥         *  0Ól ð 0 ¹l ð  ƒð¥   ÷	  †  &a³ˆZ*  Vøÿÿ ÷	ô ª‡  ð¥   /ð  ð *  |ð¥   Ãe &ðµ = Å BaÀ@aÁ
 ÷	*  ¢  Áe0 bÅ
÷Âe Ò€ð¥   Áe@ Ã  i©€‰*  È ÷	˜ A‡  ÷	Š :‡ðµ = ‚
ÂE °*  î ÷	¶ ðe  p ðÕ )  ì  ‡ðµ *   ð¥   Ã% ÷	  †, 	ðµ    a³ˆZ*  :÷	 ÷	T ‡÷	  w hþw ^þ‡ ÷	  ‡÷	L †  r³,} w³™€*  `÷	  ‡ B æ ƒàƒ#ƒÎà÷	  Îf÷	  r³ë m³oŒ*  †Ìÿ î†–
‡ Â`‡ ð¥öÿ* ð * w   ±   &f³Ð      *  ¬ðµ ) 04  06 
  l0 ì ° ‡ 
   
­D"    w ¶   , 
  , w ¬     B   B ÷	¨   R   R ÷	¦   b   b ÷	²   p   p v    €   € ÷	¬   Ž   Ž     š   š ÷	ž   Ò*  Ò&
&
&
w @ýð 2 w LýÆe w Âýö•   ¶ *  ø ‡ v” Ã
ö¥$  ¶  ö•   ‡ Åà‚ö¥(     ¶  ö ‡ ƒ ö•   ‡ Žw     &r³,}       ÒO   wÀâ¿z  \ghy    wÀâ¿   ¯”L  i©€‰@  ù±oŒ@  a³ˆZ@  e³&@  f³Ð@  m³oŒ@  p³K,@  r³,}@  r³ü@  s³k@  w³™€@  w³·€@  "            (  
­D"(*•±	€h  ¯”   
   
­D"  *    w	  ÷	  V‡ Pðµ  Q&
&
  B   ù±oŒ
p³K,*  & öŠ ð 2 >ðµ  ðµ  
Î•  ðµ  *  L ÃN”Ã
Åð 2 ƒ2 ÅàÎæ÷	  ƒv  $m³oŒ*  r   Â	Š‚
ƒ“Šf÷	  ƒ  ß  w³·€*  ˜ –5÷	  ð¥óÿ* ð * –5ð•Øÿ* w   ðÅ@   r³,}$f³Ð*  ¾ ) 0,  w   ðµ  
÷	  ‡ðÅ ) ð  s³ke³&*  ä  * ðÕ ) ðµ  '
ð¥   Óðµ = *  
Óð¥   Ól ð 0 Èl ð  ƒð¥   *  0÷	  †øÿÿ ÷	ð ¹‡  ð¥   /ð         a³ˆZ*  V ð ð¥   Ãe &ðµ = Å BaÀ*  |@aÁ
 ÷	  Áe0 bÅ
÷Âe Ò€ð¥     i©€‰*  ¢Áe@ Ã ÷	” ?‡  ÷	† 8‡ðµ = *  È‚
ÂE ° ÷	  ðe  p ðÕ )  ì *  î‡ðµ  ð¥   Ã% ÷	  †
,    a³ˆZ*  ðµ  ÷	 ‡÷	  w Šþw €þ‡ ÷	  ‡÷	  r³,}$w³™€*  :: †w   ‡ B æ ƒàƒ#ƒÎà÷	  Î  
s³k$m³oŒ*  `f÷	Ìÿ î†–
‡ Â`‡ ± ðµ ) 04    †06 
  l0 ì ° ‡ 
   
­D"    w ‚   , 
  , w x     B   B ÷	t   R         R ÷	r   b   b ÷	~   p   p v    €   € ÷	x   Ž   Ž     š   š ÷	j   È   È w B   ž*  ž&
&
&
w týð 2 w €ýÆe w öýö•   ¶ *  Ä ‡ v” Ã
ö¥$  ¶  ö•   ‡ Åà‚ö¥*  ê   ¶  ö ‡ ƒ ö•   ‡ Žw   ÷	  &r³,}    †¬* öÿð * w ¦ýw     r³üf³Ð       –O   vÀaÌz  t°y    vÀaÌ   ¯”L  °s@      (  
­D"(~ Ô±2&h  Ô±€&h, Ô±Ñ(h\ Ö±fahD œ²2&h œ²€&h6 œ²Ñ(hf ž²fahN ¯”   
   
­D"  *    Á  Áe( B A
‡ &À  Àe(       H° 0
  °s°s*  &  €‡ Á  A
 ‡ fÁ  ±
 ‡ Á  A   °s°s$°s*  L ‡ fÁ  ± ‡ Á  AB ‡ &À  pB Ù  
°s°s"°s
   
­D"f   f &À  pB 0
< ðÿÿ( €‡   °s       ŠO   vÀá¿z  ÷’¼    vÀá¿   ¯”L  a³[M@  b³Ó@  b³—G@  f³Ð@  w³¼@  w³t@  w³k@      (  
­D"(f w³™€h  w³œ€h  w³·€h 
  ¯”   
   
­D"  *    ÷	  ðµ ) ÷	  !‡f¦æ÷	  †ƒ‚„÷	  b³—Ga³[Mw³k*  &   	‡òÆe ðÅ ) ÷	  ðe 6 p4 ÷	  0ž  w³tw³¼&b³      Ó  L 8 * ÷	  ‡   
f³Ð
   
­D"    ÷	F    V   V ðµ  w   ÖÖ  a³[M  L ‡ fÁ  ± ‡ Á  AB ‡ &À  pB Ù  
°s°s"°s
   
­D"f   f &À  pB 0
< ðÿÿ( €‡   °s               vÀÊz  ÷’¼    vÀá¿   ¯”L  a³[M@  b³Ó@  b³—G@  f³Ð@  w³¼@  w³t@  w³k@      (  
­D"(f w³™€h  w³œ€h  w³·€h 
  ¯”   
   
­D"  *    ÷	  ðµ ) ÷	  !‡f¦æ÷	  †ƒ‚„÷	  b³—Ga³[Mw³k*  &   	‡òÆe ðÅ ) ÷	  ðe 6 p4 ÷	  0ž  w³tw³¼&b³          skQÔx› 8$        ÁXÀO   
             ¶   þ  @	° À                                                                                                                                                                                                                                                                                                                                                                                                                                                                                         ¢8* b ¢;) ¢K) Ú48h+ Ž 4;h* "4Kh* ò5¸[, Ô 5»[+ n5Ë[, 6 L	8š- hL	;š- & L	Kš- Þ r	ø/“ z r	û/“ "r	0“ Þ/‹&$ ¦ô K) ` ôÐM) Ü )ã} ðE8OŠ ° 68. ^6;- Â6K. ¬ ¥¸)/ ì¥»)/ ª ¥Ë)/ f¯£w ð Ó80 æÓ;0 ¦ ÓK0 n×º ² ×Ï  ×Ø Nó8¦ ó;§   óK§ ú %Ž ¸‘ø“™ ¬ ‘û“™ V‘”š  ¢ø/” d ¢û/” ¢0” È¦8¢ & ¦;¢ >¦K£  ÁÀ¨† ¸Áôª… ä ÁÎ«… ÁÏ«ƒ Ž Á˜­‚  ÁÀ­‚ Êxn1 ŒÊ{n1 F Ê‹n1 g;q z Ë8O2 Ë;O2 \ ËKO2 Î‹:" – ÎØ©' ®Î(ª( v Î ª( ¼ Îðª(         Ô{" ö zÀ¨[ : Õksd Dù¸t3 ù»t2 ìùËt3 ¤ û8h4 ” û;h3 lûKh4 $ 2ø/• N 2û/• ö 20• ²!!ø“š š !!û“š D!!”›   6!8£ Ö 6!;£ ‚6!K¤ @ [!8§ ¼[!;¨ – [!K¨ dq!¸t5  q!»t4 ì q!Ët4 ¤s!8h5 ˜s!;h5 p s!Kh5 (""À¨[ Þ 	#¸)6 2	#»)5 ð	#Ë)6 ¬ 	#87 *	#;6 ì	#K7 ¤ #88 .#;7 ‚#K8 > #øH9 Š#ûH9 < #I9 ø &» &ÓQ
   !&9 ò!&J t "& Œ"&¹)  "&Ê) þ "&ùH b"&
I Ê"&ëz Ø /&‹&" ü /&Ä) V/&9h ž/&Jh  2&ù ä 2&
 ^3&Ë^' ¦ Ä&Ë^} ò Ä&³b~  ô&³:f fö&{; 
 Š(Ë^& Þ Š(ëz \ E,kK‡ Ò      E,»KŠ  E,8O‰ E,<OŠ Àœ,À¨ Ìœ,« ’ œ,¸« ’µ-¸[; 0 µ-»[: N µ-Ë[: Ë-¸t< D Ë-»t; Ë-8š› ˆ Ë-;š› 4Ë-Kš› òR.8= Ø R.;<  R.K< Ä•.ø/– 8 •.û/– €•.0— D Ë.ø“> DË.û“>  Ë.”> Ò é.xU? ²é.{U> žé.‹U? \ ó.øHA âó.ûH@ &ó.I¯ Â 
4Ë^€ 0 
4³b€ @9¸tC ° 9»tB þ9ËtC \ :ks_ ÌL;{	s @ ¦Kk ”²K¸¿† <xQÀ¨œ | xQ8©œ $xQ¸«œ Ü®SÀ¨^ ´T8D ^ T;C ø TKC ÆrT‹v v ²TÀ¨\  ßW‹&% Ä ßWÄ) BŠYÓL ¨¶^À¨\ 
¹^8 F ¹^9 ²¹^E Š ¹^J d¹^M ¹^O ö¾^¸  ¾^¹ x¾^Å P ¾^Ê *¾^Í ä ¾^Ï ¼E`¸[ €       E`¹[ ¢E`Å[ z E`Ê[
 TE`Í[ E`Ï[
 æN`ùz ž N`{ jN`
{ 6 N`{  N`{ Ð N`< 8N`O æÙf»Z‹ Ü\gÀ¨ \ \g« $\g¸« ( ðj¸G &ðjËF °·kÃz_ B ·kø“F $·kû“E ·k”F Œ ·kÀ¨E ·k8©D x·k¸«E p ¬p‹ß( Jq8OŠ > q8® † q;® ZqK¯ " q8J – q;I @qKJ   q8šK Ô q;šJ ~qKšK > !q¸)I † !q»)H H!qË)I  "qS’ Î"q‘ ¬Iq8 z\q†)   qqÀ¨\ ú;s8L 6;s;K ¼;sKL „ Us¸) b Us») 
UsË) ÆsxUM žs{UM ` s‹UM ÖsÀ¨O  Ös8©N Z Ös¸«N @ tÀ¨] vÀ¨^ Â aw8P 6aw;O ÊawKP ’ rwø¬ žrwû­ Ò rw­ ´      œw¸)Q |œw»)Q : œwË)Q ö Àwx
R zÀw{
R 6 Àw‹
R ò ñx8hq ð ySq T  yp ¶ Cy³:h 0Ny8S ^Ny;S 6 NyKS î Ryx
T ú Ry{
S ¶Ry‹
T r Wy¸[¤ Ê Wy»[¥ ¬ WyË[¥ Ä”yx
U ú ”y{
T ¶”y‹
U r •y¸)ž L •y»)ž B•yË)Ÿ  ¢yx
Ÿ À ¢y{
Ÿ z¢y‹
  6 áyã}t V ìyøa© 
 ìyûa© Ô ìyb© ˜ïy8h«  ïy;h« x ïyKh« ,óyx#ª 0 óy{#ª Ú óy‹#ª –4z¸V 4z»U ¶4zËV v DzøHW DDzûHV èDzIW ¬ Ñ¸[t ô åX €3€cžv îI…8h  ¼ I…;h  fI…Kh¡ " L…³:n ü L†8h« žL†;h¬ R L†Kh¬ ñ8 bS˜ äb— ^™’ã} > Á’ø/X RÁ’û/X * Á’0X â ì’øaY €ì’ûaX ªì’bY r       ó’x#Z €ó’{#Z B ó’‹#Z ü \¯,E¡ ª \¯tH¡ J\¯ I¡ îw°,"o ° w°tRo Ð±±¤^o <§²<qp ` ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           TM        	.MACRO	FCSMC$1 	.MCALL	OPEN$R,OPEN$W,OPEN$M,OPEN$U,OPEN$A,CLOSE$ÿ* 	.MCALL	OPNS$R,OPNS$W,OPNS$M,OPNS$U,OPNS$A2 	.MCALL	READ$,WRITE$,WAIT$,GET$,PUT$,DELET$,FINIT$8 	.MCALL	FSRSZ$,FDBDF$,FDAT$A,FDRC$A,FDOP$A,FDBF$A,FDBK$A1 	.MCALL	FDAT$R,FDRC$R,FDOP$R,FDBF$R,FDBK$R,NMBLK$ÿ 	.MACRO	FCSMC$ 	.ENDM	FCSMC$ÿ 	.ENDM	FCSMC$ÿ     ’ M       . 	.MACRO	OPEN$R FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$ÿ. 	OPEN$	FDB,#FO.RD,LUN,FNPT,,RACC,URBA,URBS,ERR 	.ENDM	OPEN$Rÿ     ” M       . 	.MACR      O	OPEN$W FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$$/ 	OPEN$	FDB,#FO.WRT,LUN,FNPT,,RACC,URBA,URBS,ERRN 	.ENDM	OPEN$W$     ” M       . 	.MACRO	OPEN$M FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$F/ 	OPEN$	FDB,#FO.MFY,LUN,FNPT,,RACC,URBA,URBS,ERRT 	.ENDM	OPEN$MR     ” M       . 	.MACRO	OPEN$U FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$ / 	OPEN$	FDB,#FO.UPD,LUN,FNPT,,RACC,URBA,URBS,ERRS 	.ENDM	OPEN$UP     ” M       . 	.MACRO	OPEN$A FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$ / 	OPEN$	FDB      ,#FO.APD,LUN,FNPT,,RACC,URBA,URBS,ERRE 	.ENDM	OPEN$AN     š M       . 	.MACRO	OPNS$R FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$ 5 	OPEN$	FDB,#FA.SHR!FO.RD,LUN,FNPT,,RACC,URBA,URBS,ERR. 	.ENDM	OPNS$RO     š M       . 	.MACRO	OPNS$W FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$ 6 	OPEN$	FDB,#FA.SHR!FO.WRT,LUN,FNPT,,RACC,URBA,URBS,ERR 	.ENDM	OPNS$WF     š M       . 	.MACRO	OPNS$M FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$R6 	OPEN$	FDB,#FA.SHR!FO.MFY,LUN,FNPT,,RACC,URBA,URBS,ERR 	.ENDM	OPN      S$MO     š M       . 	.MACRO	OPNS$U FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$S6 	OPEN$	FDB,#FA.SHR!FO.UPD,LUN,FNPT,,RACC,URBA,URBS,ERR 	.ENDM	OPNS$UF     š M       . 	.MACRO	OPNS$A FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$S6 	OPEN$	FDB,#FA.SHR!FO.APD,LUN,FNPT,,RACC,URBA,URBS,ERR 	.ENDM	OPNS$AF     ® M       . 	.MACRO	OPNT$D	FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPNT$W# 	OPNT$W	FDB,LUN,FNPT,RACC,URBA,URBS. 	BCS	.+6 	JSR	PC,.MRKDL	 	ERR$	ERRF 	.ENDM	OPNT$DC     š M       . 	.MACR      O	OPNT$W FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OPEN$C6 	OPEN$	FDB,#FA.TMP!FO.WRT,LUN,FNPT,,RACC,URBA,URBS,ERR 	.ENDM	OPNT$WC     ä M       7 	.MACRO	OPEN$ FDB,FACC,LUN,FNPT,DFNB,RACC,URBA,URBS,ERRP! 	.MCALL	FDOP$R,FDRC$R,ERR$,CMOV$BS 	FDOP$R	FDB,LUN,FNPT,DFNB,FACC 	FDRC$R	,RACC,URBA,URBS  	.GLOBL	.OPEN  	JSR	PC,.OPEN 	 	ERR$	ERRP 	.ENDM	OPEN$     ’ M       . 	.MACRO	OFID$R FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OFID$S. 	OFID$	FDB,#FO.RD,LUN,FNPT,,RACC,URBA,URBS,ERR 	.ENDM	OFID$R      ” M             . 	.MACRO	OFID$W FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OFID$A/ 	OFID$	FDB,#FO.WRT,LUN,FNPT,,RACC,URBA,URBS,ERRO 	.ENDM	OFID$W      ” M       . 	.MACRO	OFID$M FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OFID$R/ 	OFID$	FDB,#FO.MFY,LUN,FNPT,,RACC,URBA,URBS,ERRA 	.ENDM	OFID$MC     ” M       . 	.MACRO	OFID$U FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OFID$ / 	OFID$	FDB,#FO.UPD,LUN,FNPT,,RACC,URBA,URBS,ERRS 	.ENDM	OFID$UF     ” M       . 	.MACRO	OFID$A FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OF      ID$ / 	OFID$	FDB,#FO.APD,LUN,FNPT,,RACC,URBA,URBS,ERRE 	.ENDM	OFID$AD     ä M       7 	.MACRO	OFID$ FDB,FACC,LUN,FNPT,DFNB,RACC,URBA,URBS,ERR ! 	.MCALL	FDOP$R,FDRC$R,ERR$,CMOV$BF 	FDOP$R	FDB,LUN,FNPT,DFNB,FACC 	FDRC$R	,RACC,URBA,URBSY 	.GLOBL	.OPFID 	JSR	PC,.OPFID	 	ERR$	ERR$ 	.ENDM	OFID$     ’ M       . 	.MACRO	OFNB$R FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OFNB$B. 	OFNB$	FDB,#FO.RD,LUN,FNPT,,RACC,URBA,URBS,ERR 	.ENDM	OFNB$R      ” M       . 	.MACRO	OFNB$W FDB,LUN,FNPT,RACC,URBA,URBS,ERR       	.MCALL	OFNB$F/ 	OFNB$	FDB,#FO.WRT,LUN,FNPT,,RACC,URBA,URBS,ERRO 	.ENDM	OFNB$W      ” M       . 	.MACRO	OFNB$M FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OFNB$R/ 	OFNB$	FDB,#FO.MFY,LUN,FNPT,,RACC,URBA,URBS,ERRA 	.ENDM	OFNB$MC     ” M       . 	.MACRO	OFNB$U FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OFNB$ / 	OFNB$	FDB,#FO.UPD,LUN,FNPT,,RACC,URBA,URBS,ERRS 	.ENDM	OFNB$UF     ” M       . 	.MACRO	OFNB$A FDB,LUN,FNPT,RACC,URBA,URBS,ERR 	.MCALL	OFNB$ / 	OFNB$	FDB,#FO.APD,LUN,FNPT,,RACC,URBA,URBS,ERRE 	.      ENDM	OFNB$AB     ä M       7 	.MACRO	OFNB$ FDB,FACC,LUN,FNPT,DFNB,RACC,URBA,URBS,ERR ! 	.MCALL	FDOP$R,FDRC$R,ERR$,CMOV$BF 	FDOP$R	FDB,LUN,FNPT,DFNB,FACC 	FDRC$R	,RACC,URBA,URBSY 	.GLOBL	.OPFNB 	JSR	PC,.OPFNB	 	ERR$	ERR$ 	.ENDM	OFNB$     Š M        	.MACRO	CLOSE$ FDB,ERR 	.MCALL	LDFDB$,ERR$	 	LDFDB$	FDB$ 	.GLOBL	.CLOSE 	JSR	PC,.CLOSE	 	ERR$	ERR  	.ENDM	CLOSE$      Ä M       3 	.MACRO	READ$ FDB,BKAD,BKSZ,BKVB,BKEF,BKST,BKDN,ERRL 	.MCALL	FDBK$R,ERR$#) 	FDBK$R	FDB,BKAD,BKSZ,BKVB,BKEF,BKST,B      KDNM 	.GLOBL	.READ  	JSR	PC,.READA	 	ERR$	ERRD 	.ENDM	READ$     Æ M       4 	.MACRO	WRITE$ FDB,BKAD,BKSZ,BKVB,BKEF,BKST,BKDN,ERR 	.MCALL	FDBK$R,ERR$C) 	FDBK$R	FDB,BKAD,BKSZ,BKVB,BKEF,BKST,BKDN  	.GLOBL	.WRITE 	JSR	PC,.WRITE	 	ERR$	ERR  	.ENDM	WRITE$      È M        	.MACRO	WAIT$	FDB,EFN,BKST,ERR! 	.MCALL	LDFDB$,CMOV$W,CMOV$B,ERR$C 	LDFDB$	FDBR 	CMOV$B	EFN,F.EFN  	CMOV$W	BKST,F.BKSTA 	.GLOBL	.WAITK 	JSR	PC,.WAITE	 	ERR$	ERR, 	.ENDM	WAIT$     Æ M       ! 	.MACRO	GET$ FDB,INADR,MAXCNT,ER      RD 	.MCALL	LDFDB$,CMOV$W,ERR$ 	LDFDB$	FDB	 	CMOV$W	INADR,F.URBD+2 	CMOV$W	MAXCNT,F.URBDR 	.GLOBL	.GET 	JSR	PC,.GET	 	ERR$	ERRE 	.ENDM	GET$D      M       . 	.MACRO	GET$R FDB,INADR,MAXCNT,LRCNM,HRCNM,ERR 	.MCALL	LDFDB$,CMOV$W,ERR$ 	LDFDB$	FDBW 	CMOV$W	INADR,F.URBD+2 	CMOV$W	MAXCNT,F.URBD, 	CMOV$W	LRCNM,F.RCNM+2 	CMOV$W	HRCNM,F.RCNM 	.GLOBL	.GET 	JSR	PC,.GET	 	ERR$	ERR$ 	.ENDM	GET$R     Ê M       " 	.MACRO	GET$S FDB,INADR,MAXCNT,ERR 	.MCALL	LDFDB$,CMOV$W,ERR$ 	LDFDB$	FDBI 	CMOV$W	INAD      R,F.URBD+2 	CMOV$W	MAXCNT,F.URBDL 	.GLOBL	.GETSQ 	JSR	PC,.GETSQ	 	ERR$	ERR	 	.ENDM	GET$S     È M       " 	.MACRO	PUT$ FDB,OUTADR,OUTCNT,ERR 	.MCALL	LDFDB$,CMOV$W,ERR$ 	LDFDB$	FDBD 	CMOV$W	OUTADR,F.NRBD+2  	CMOV$W	OUTCNT,F.NRBDR 	.GLOBL	.PUT 	JSR	PC,.PUT	 	ERR$	ERR2 	.ENDM	PUT$C     M       / 	.MACRO	PUT$R FDB,OUTADR,OUTCNT,LRCNM,HRCNM,ERRG 	.MCALL	LDFDB$,CMOV$W,ERR$ 	LDFDB$	FDBR 	CMOV$W	OUTADR,F.NRBD+2R 	CMOV$W	OUTCNT,F.NRBDT 	CMOV$W	LRCNM,F.RCNM+2 	CMOV$W	HRCNM,F.RCNM 	.GLOBL	.PUT       	JSR	PC,.PUT	 	ERR$	ERRT 	.ENDM	PUT$R     Î M       # 	.MACRO	PUT$S FDB,OUTADR,OUTCNT,ERR  	.MCALL	LDFDB$,CMOV$W,ERR$ 	LDFDB$	FDBU 	CMOV$W	OUTADR,F.NRBD+2C 	CMOV$W	OUTCNT,F.NRBDD 	.GLOBL	.PUTSQ 	JSR	PC,.PUTSQ	 	ERR$	ERRF 	.ENDM	PUT$S     Š M        	.MACRO	DELET$	FDB,ERR 	.MCALL	LDFDB$,ERR$  	LDFDB$	FDB$ 	.GLOBL	.DELET 	JSR	PC,.DELET	 	ERR$	ERRL 	.ENDM	DELET$,     Š M        	.MACRO	TRUNC$	FDB,ERR 	.MCALL	LDFDB$,ERR$N 	LDFDB$	FDB	 	.GLOBL	.TRUNC 	JSR	PC,.TRUNC	 	ERR$	ERRB 	.EN      DM	TRUNC$,     R M        	.MACRO	FINIT$ 	.GLOBL	.FINIT 	JSR	PC,.FINIT 	.ENDM	FINIT$,     0M       " 	.MACRO	FSRSZ$ NFILES,BFSPAC,PSECT 	.MCALL	BDOFF$,DEF$L 	.IF	NDF,S.BFHDB 	BDOFF$	DEF$NT 	DEF$L	S.BFHDT 	.ENDC 	.GLOBL	.FSRCB 	.PSECT	$$FSR1,GBL,OVR,D 	.IF	NB,<BFSPAC> 	.BLKB	NFILES*S.BFHD+<BFSPAC>B 	.IFF  	.BLKB	NFILES*<S.BFHD+512.>T 	.ENDC 	.PSECT	PSECTL 	.ENDM	FSRSZ$      f M        	.MACRO	FDBDF$ 	.MCALL	FDBSZ$ 	FDBSZ$B	 	...PC1=.L 	.BLKB	S.FDB 	.ENDM	FDBDF$E     ò M             ' 	.MACRO	FDAT$A RTYP,RATT,RSIZ,CNTG,ALOC  	.MCALL	FDOFF$,CBYTE$,CWORD$ 	FDOFF$	DEF$L, 	CBYTE$	<RTYP>,F.RTYPA 	CBYTE$	<RATT>,F.RATTC 	CWORD$	<RSIZ>,F.RSIZD 	CWORD$	<CNTG>,F.CNTG  	CWORD$	<ALOC>,F.ALOCS 	.ENDM	FDAT$A      º M        	.MACRO	FDRC$A RACC,URBA,URBS, 	.MCALL	FDOFF$,CBYTE$,CWORD$ 	FDOFF$	DEF$LF 	CBYTE$	<RACC>,F.RACCH 	CWORD$	<URBA>,F.URBD+2	 	CWORD$	<URBS>,F.URBD  	.ENDM	FDRC$A      ò M       ( 	.MACRO	FDOP$A LUN,FNPT,DFNB,FACC,FACTRL 	.MCALL	FDOFF$,CBYTE$,CWORD$ 	FDOFF      $	DEF$L. 	CBYTE$	<LUN>,F.LUNT 	CWORD$	<FNPT>,F.DSPTL 	CWORD$	<DFNB>,F.DFNB  	CBYTE$	<FACC>,F.FACC	 	CWORD$	<FACTRL>,F.ACTLR 	.ENDM	FDOP$AC     Ò M       ! 	.MACRO	FDBF$A EFN,OVBS,MBCT,MBFG	 	.MCALL	FDOFF$,CBYTE$,CWORD$ 	FDOFF$	DEF$L  	CBYTE$	<EFN>,F.EFNC 	CWORD$	<OVBS>,F.OVBSD 	CBYTE$	<MBCT>,F.MBCTO 	CBYTE$	<MBFG>,F.MBFGC 	.ENDM	FDBF$AO     M       , 	.MACRO	FDBK$A BKAD,BKSZ,BKVB,BKEF,BKST,BKDN 	.MCALL	FDOFF$,CBYTE$,CWORD$ 	FDOFF$	DEF$LF 	CWORD$	<BKAD>,F.BKDS+2$ 	CWORD$	<BKSZ>,F.BKD      S	 	CWORD$	<BKVB>,F.BKVB+2U 	CBYTE$	<BKEF>,F.BKEFP 	CWORD$	<BKST>,F.BKSTN 	CWORD$	<BKDN>,F.BKDNC 	.ENDM	FDBK$AC     ê M       + 	.MACRO	FDAT$R FDB,RTYP,RATT,RSIZ,CNTG,ALOCE 	.MCALL	LDFDB$,CMOV$W,CMOV$B 	LDFDB$	FDBW 	CMOV$B	RTYP,F.RTYP  	CMOV$B	RATT,F.RATT  	CMOV$W	RSIZ,F.RSIZD 	CMOV$W	CNTG,F.CNTGC 	CMOV$W	ALOC,F.ALOCM 	.ENDM	FDAT$RB     ¶ M       ! 	.MACRO	FDRC$R FDB,RACC,URBA,URBS, 	.MCALL	LDFDB$,CMOV$W,CMOV$B 	LDFDB$	FDB$ 	CMOV$B	RACC,F.RACCO 	CMOV$W	URBA,F.URBD+2C 	CMOV$W	URBS,F.U      RBD  	.ENDM	FDRC$RF     ê M       , 	.MACRO	FDOP$R FDB,LUN,FNPT,DFNB,FACC,FACTRL 	.MCALL	LDFDB$,CMOV$W,CMOV$B 	LDFDB$	FDB  	CMOV$B	LUN,F.LUNT 	CMOV$W	FNPT,F.DSPT, 	CMOV$W	DFNB,F.DFNBD 	CMOV$B	FACC,F.FACCL 	CMOV$W	FACTRL,F.ACTLP 	.ENDM	FDOP$R$     Ì M       % 	.MACRO	FDBF$R FDB,EFN,OVBS,MBCT,MBFGC 	.MCALL	LDFDB$,CMOV$W,CMOV$B 	LDFDB$	FDB  	CMOV$B	EFN,F.EFNR 	CMOV$W	OVBS,F.OVBSA 	CMOV$B	MBCT,F.MBCT$ 	CMOV$B	MBFG,F.MBFGB 	.ENDM	FDBF$R	     M       0 	.MACRO	FDBK$R FDB,BKAD,BKSZ,BKVB,      BKEF,BKST,BKDN# 	.MCALL	LDFDB$,CMOV$B,CMOV$W,CMOV$2P 	LDFDB$	FDBP 	CMOV$W	BKAD,F.BKDS+2C 	CMOV$W	BKSZ,F.BKDSV 	CMOV$2	BKVB,F.BKVBO 	CMOV$B	BKEF,F.BKEF$ 	CMOV$W	BKST,F.BKST$ 	CMOV$W	BKDN,F.BKDN$ 	.ENDM	FDBK$R      ~ M        	.MACRO	FDBSZ$ 	.IIF	DF,S.FDB,.MEXIT  	.MCALL	FDOFF$,DEF$L 	FDOFF$	DEF$NC 	DEF$L	S.FDB 	.ENDM	FDBSZ$B     R M        	.MACRO	FDOF$L 	.MCALL	FDOFF$ 	FDOFF$	DEF$L	 	.ENDM	FDOF$LC     šM       + 	.MACRO	NMBLK$	FNAME,FTYPE,VERS,DEVNAM,UNITD 	.MCALL	RAD50$,CWORD$,      NBOFF$ 	NBOFF$	DEF$LL 	.IIF	NDF,...PC1,...PC1=0$ 	...PC3=...PC1	 	...PC1=.K 	.=...PC1+N.FNAM 	RAD50$	<FNAME>,S.FNAM/2 	.=...PC1+N.FTYP 	RAD50$	<FTYPE>,S.FTYP/2 	CWORD$	<VERS>,N.FVERK 	.IF	NB,DEVNAM 	.=...PC1+N.DVNM 	.WORD	"DEVNAM 	.ENDC 	CWORD$	<UNIT>,N.UNITI 	.=...PC1+S.FNB$ 	...PC1=...PC3 	.ENDM	NMBLK$S     R M        	.MACRO	NBOF$L 	.MCALL	NBOFF$ 	NBOFF$	DEF$LD 	.ENDM	NBOF$LE     „ M        	.MACRO	LDFDB$ FDB 	.IIF	B,FDB,.MEXIT 	.NTYPE	PAR$$$,FDB 	.IIF	EQ,PAR$$$,.MEXIT 	MOV      	FDB,R0  	.ENDM	LDFDB$      š M        	.MACRO	CMOV$W VAR,OFFSET. 	.IF	IDN,<#0>,<VAR>. 	CLR	OFFSET(R0)A 	.MEXITM 	.ENDC  	.IIF	NB,VAR,	MOV	VAR,OFFSET(R0) 	.ENDM	CMOV$WV     œ M        	.MACRO	CMOV$B VAR,OFFSETM 	.IF	IDN,<#0>,<VAR>N 	CLRB	OFFSET(R0) 	.MEXIT  	.ENDC! 	.IIF	NB,VAR,	MOVB VAR,OFFSET(R0)B 	.ENDM	CMOV$B      ¢ M        	.MACRO	CMOV$2 VAR,OFFSETF 	.IIF	B,VAR,.MEXIT 	MOV	VAR,-(SP) 	MOV	@(SP),OFFSET(R0)F 	ADD	#2,(SP) 	MOV	@(SP)+,OFFSET+2(R0) 	.ENDM	CMOV$2R     Š M              	.MACRO	CBYTE$ VAR,OFFSET  	.IF	NB,VAR 	 	...PC2=.V 	.=...PC1+OFFSET
 	.BYTE	VAR	 	.=...PC2R 	.ENDC 	.ENDM	CBYTE$      Š M        	.MACRO	CWORD$ VAR,OFFSETN 	.IF NB,VAR 	 	...PC2=.  	.=...PC1+OFFSET
 	.WORD	VAR	 	.=...PC2< 	.ENDC 	.ENDM	CWORD$T     ’M        	.MACRO	FCSBT$	GLOBL 	.MCALL	DEFIN$	 	...GBL=0C" 	.IIF	IDN,<GLOBL>,<DEF$G>,...GBL=1 	DEFIN$	FD.FTN,1 	DEFIN$	FD.CR,2T 	DEFIN$	FD.PRN,4 	DEFIN$	FD.BLK,100 	DEFIN$	FD.RWM,1 	DEFIN$	FD.RAN,2 	DEFIN$	FD.PLC,4 	DEFIN$	FD.INS,10        	DEFIN$	FD.REC,1 	DEFIN$	FD.CCL,2 	DEFIN$	FD.TTY,4 	DEFIN$	FD.DIR,10T 	DEFIN$	FD.SDI,20. 	DEFIN$	FD.SQD,40M 	DEFIN$	FD.ISP,2000  	DEFIN$	FD.OSP,4000V 	DEFIN$	FD.PSE,10000 	DEFIN$	FD.COM,20000 	DEFIN$	FD.F11,40000 	DEFIN$	FD.MNT,100000. 	DEFIN$	NB.VER,1 	DEFIN$	NB.TYP,2 	DEFIN$	NB.NAM,4 	DEFIN$	NB.SVR,10. 	DEFIN$	NB.STP,20G 	DEFIN$	NB.SNM,40L 	DEFIN$	NB.DIR,100 	DEFIN$	NB.DEV,200 	DEFIN$	NB.SD1,400 	DEFIN$	NB.SD2,1000F 	DEFIN$	R.FIX,1F 	DEFIN$	R.VAR,2F 	DEFIN$	R.SEQ,3F 	DEFIN$	FA.R      D,1D 	DEFIN$	FA.WRT,2 	DEFIN$	FA.EXT,4 	DEFIN$	FA.CRE,10F 	DEFIN$	FA.TMP,20F 	DEFIN$	FA.SHR,40F 	DEFIN$	FA.APD,100 	DEFIN$	FA.NSP,100 	DEFIN$	FO.RD,FA.RDD# 	DEFIN$	FO.WRT,FA.WRT!FA.EXT!FA.CRE0# 	DEFIN$	FO.APD,FA.WRT!FA.EXT!FA.APDM 	DEFIN$	FO.MFY,FA.WRTV 	DEFIN$	FO.UPD,FA.WRT!FA.EXT 	DEFIN$	FA.ENB,100000S 	DEFIN$	FA.WCK,20000 	DEFIN$	FA.SEQ,40000 	DEFIN$	FA.DLK,10000 	DEFIN$	FA.RWD,4000  	DEFIN$	FA.POS,10000 	DEFIN$	FA.EXC,2000D 	DEFIN$	CH.AND,1 	DEFIN$	FD.RAH,1 	DEFIN$	FD.WBH,2 	DEFIN$	      FF.RWD,1 	DEFIN$	FF.POE,2 	DEFIN$	FF.NV,3D 	DEFIN$	FF.SPC,4 	DEFIN$	FF.CHR,5 	DEFIN$	FF.RWF,6 	.MACRO	FCSBT$	ARG 	.ENDM	FCSBT$N 	.ENDM	FCSBT$	     f M        	.MACRO	DEFIN$	SYM,VAL 	.IIF	EQ,...GBL-1,.GLOBL SYM 	SYM=^O<VAL> 	.ENDM	DEFIN$M     ªM        	.MACRO	FDOFF$ OFFSET  	.MCALL	OFFSET,DEF$I,NBOFF$N 	NBOFF$	OFFSET 	DEF$I	0 	OFFSET	F.RTYP,1 	OFFSET	F.RATT,1 	OFFSET	F.RSIZ,2 	OFFSET	F.HIBK,4 	OFFSET	F.EFBK,4 	OFFSET	F.FFBY,2 	OFFSET	S.FATT 	OFFSET	F.RACC,1 	OFFSET	F.RCTL,1       	OFFSET	F.BKDS 	OFFSET	F.URBD,4 	OFFSET	F.BKST 	OFFSET	F.NRBD,2 	OFFSET	F.BKDN
 	OFFSET	,2 	OFFSET	F.OVBS 	OFFSET	F.NREC,2 	OFFSET	F.EOBB,2 	OFFSET	F.CNTG 	OFFSET	F.RCNM,2 	OFFSET	F.STBK
 	OFFSET	,2 	OFFSET	F.ALOC,2 	OFFSET	F.LUN,1M 	OFFSET	F.FACC,1 	OFFSET	F.DSPT,2 	OFFSET	F.DFNB,2 	OFFSET	F.BKEF 	OFFSET	F.EFN,1F 	OFFSET	F.BKP1,1 	OFFSET	F.ERR,21 	OFFSET	F.MBCT,1 	OFFSET	F.MBC1,1 	OFFSET	F.MBFG,1 	OFFSET	F.BGBC,1 	OFFSET	F.VBSZ,2 	OFFSET	F.BBFS,2 	OFFSET	F.BKVB 	OFFSET	F.VBN,41       	OFFSET	F.BDB,2  	OFFSET	F.SPDV,2 	OFFSET	F.SPUN,1 	OFFSET	F.CHR,1O 	OFFSET	F.ACTL,2 	OFFSET	F.SEQN,2 	OFFSET	F.FNB,S.FNB2! 	.IIF	IDN,<OFFSET>,<DEF$N>,.MEXIT  	.IF	IDN,<OFFSET>,<DEF$G>.* 	.GLOBL	F.FNAM,F.FTYP,F.FVER,F.DVNM,F.UNIT 	.ENDC 	F.FNAM=N.FNAM+F.FNB 	F.FTYP=N.FTYP+F.FNB 	F.FVER=N.FVER+F.FNB 	F.DVNM=N.DVNM+F.FNB 	F.UNIT=N.UNIT+F.FNB 	OFFSET	S.FDB  	.MACRO	FDOFF$	ARG 	.ENDM	FDOFF$  	.ENDM	FDOFF$1     M        	.MACRO	BDOFF$ OFFSETF 	.MCALL	OFFSET,DEF$I 	DEF$I	0
 	OFFSET	,4 	O      FFSET	B.VBN,4, 	OFFSET	B.BBFS,2 	OFFSET	B.NXBD,2
 	OFFSET	,1 	OFFSET	B.BFST,1
 	OFFSET	,2 	OFFSET	S.BFHD! 	.IIF	IDN,<DEF$N>,<OFFSET>,.MEXITF 	.MACRO	BDOFF$	ARG 	.ENDM	BDOFF$S 	.ENDM	BDOFF$.     M        	.MACRO	NBOFF$	OFFSET  	.MCALL	OFFSET,DEF$I,DEF$L 	DEF$I	0 	OFFSET	S.FNAM 	OFFSET	S.FTYP 	OFFSET	S.FNTY 	OFFSET	S.FNBW	 	S.FNAM=6F	 	S.FTYP=2	 	S.FNTY=<S.FNAM+S.FTYP>/2  	OFFSET	N.FID,6. 	OFFSET	N.FNAM,S.FNAM  	OFFSET	N.FTYP,S.FTYPO 	OFFSET	N.FVER,2 	OFFSET	S.NFEN 	DEF$L	S.NFEN4 	O      FFSET	N.STAT,2 	OFFSET	N.NEXT,2 	OFFSET	N.DID,62 	OFFSET	N.DVNM,2 	OFFSET	N.UNIT,2 	OFFSET	S.FNB	 	DEF$L	S.FNB 	S.FNBW=S.FNB/2E! 	.IIF	IDN,<DEF$N>,<OFFSET>,.MEXITN 	.MACRO	NBOFF$	ARG 	.ENDM	NBOFF$  	.ENDM	NBOFF$R     ÈM        	.MACRO	FSROF$	OFFSETF 	.MCALL	OFFSET,DEF$I,DEF$L 	DEF$I	0
 	OFFSET	,4 	OFFSET	A.BFSR,2 	OFFSET	A.EFSR,2 	OFFSET	A.OWUI,2 	OFFSET	A.FIPR,2 	OFFSET	A.DPB,24.I 	OFFSET	A.IOST,4 	OFFSET	A.DFDR,24. 	OFFSET	A.DFBC,2 	OFFSET	A.DFUI,2 	OFFSET	S.FSR2 	DEF$L	S.FSR2O       	DEF$I	0 	OFFSET	,14. 	OFFSET	D.DFID,6 	OFFSET	D.DFDV,2 	OFFSET	D.DFUN,2! 	.IIF	IDN,<DEF$N>,<OFFSET>,.MEXITF 	.MACRO	FSROF$	ARG 	.ENDM	FSROF$F 	.ENDM	FSROF$E     M        	.MACRO	FDSOF$	OFFSET  	.MCALL	OFFSET,DEF$I,DEF$L 	DEF$I	0 	OFFSET	N.DEVD,4 	OFFSET	N.DIRD,4 	OFFSET	N.FNMD,4 	OFFSET	S.FIDS 	.IF	IDN,<DEF$N>,<OFFSET>. 	DEF$L	S.FIDS	 	.MEXIT  	.ENDC 	.MACRO	FDSOF$	ARG 	.ENDM	FDSOF$E 	.ENDM	FDSOF$F     r M        	.MACRO	DEF$G VAR,SIZ	 	.MCALL	DEF$LE 	.IIF	NB,VAR,.GLOBL VA      R  	DEF$L	VAR,SIZ 	.ENDM	DEF$G     V M        	.MACRO	DEF$N VAR,SIZF 	.MCALL	DEF$L, 	DEF$L	,SIZE 	.ENDM	DEF$N     F M        	.MACRO	DEF$I IVAL 	...TPC=^O<IVAL> 	.ENDM	DEF$I     Ž M        	.MACRO	DEF$L SYM,SIZI 	.IF NB,SYMI 	SYM=^O<...TPC>D 	.ENDC 	.IF NB,SIZ  	...TPC=^O<...TPC+SIZ> 	.ENDC 	.ENDM	DEF$L     M        	.MACRO	RAD50$	STRING,MAXWRD	 	...PC2=.D 	.RAD50	/STRING/ 	.IF	GT,<.-...PC2>-^O<2*MAXWRD> 3 	.ERROR	;STRING		RAD50 - STRING TOO LONG, TRUNCATED	 	.=^O<...PC2+<      2*MAXWRD>> 	.MEXIT  	.ENDC  	.REPT	^O<MAXWRD-<<.-...PC2>/2>> 	.WORD	0 	.ENDR 	.ENDM	RAD50$F     @ M        	.MACRO	CALL	ADR 	JSR	PC,ADR	 	.ENDM	CALL.     < M        	.MACRO	RETURN 	RTS	PC  	.ENDM	RETURN$     > M        	.MACRO	CALLR	ADRT 	JMP	ADR 	.ENDM	CALLR     À M        	.MACRO	ABRT$C	TSK,PSCT,ERRL 	.MCALL	ABRT$,DIR$ 	.IF NDF	$$$GLBR 	.PSECT	$DPB$$ $$$=.  	.IFTF
 	ABRT$	TSK 	.IFT. 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	ABRT$CN     ˆ M        	.MACRO	ABRT$S	NAD      R,ERRW 	.MCALL	RFA$,DIR$N
 	RFA$	NADR 	MOV	(PC)+,-(SP) 	.BYTE	83.,3
 	DIR$	,ERR 	.ENDM	ABRT$S      À M        	.MACRO	ABRT$	TSKJ 	.MCALL	R50$,OFF$C 	.IF NDF	$$$GLB  	.BYTE	83.,3	 	R50$	TSKS 	.ENDC 	.IF NDF	A.BTTN  	.NLIST  	OFF$A 	OFF$	A.BTTN,4 	.LIST 	.ENDC 	.ENDM	ABRT$     Ð M       # 	.MACRO	ALTP$C	TTASK,NPRIO,PSCT,ERR, 	.MCALL	ALTP$,DIR$ 	.IF NDF	$$$GLB$ 	.PSECT	$DPB$$ $$$=.$ 	.IFTF 	ALTP$	TTASK,NPRIO 	.IFT$ 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	ALTP$CA     œ M              	.MACRO	ALTP$S	NAME,PRI,ERR	 	.MCALL	MOV$,RFA$,DIR$	 	MOV$	PRI3
 	RFA$	NAME 	MOV	(PC)+,-(SP) 	.BYTE	9.,4 
 	DIR$	,ERR 	.ENDM	ALTP$SC     à M        	.MACRO	ALTP$	NAME,PRI 	.MCALL	R50$,OFF$. 	.IF NDF	$$$GLBB 	.BYTE	9.,4 
 	R50$	NAME
 	.WORD	PRI 	.ENDC 	.IF NDF	A.LTTNA 	.NLIST  	OFF$  	OFF$	A.LTTN,4 	OFF$	A.LTPR,2 	.LIST 	.ENDC 	.ENDM	ALTP$     È M        	.MACRO	ALUN$C	LUN,DA,DU,CS,ERR  	.MCALL	ALUN$,DIR$ 	.IF NDF	$$$GLBS 	.PSECT	$DPB$$ $$$=.N 	.IFTF 	ALUN$	LUN,DA,DU 	.IF      T 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	ALUN$C,     ž M        	.MACRO	ALUN$S	LUN,DA,DU,ERR 	.MCALL	MOV$,DIR$	 	MOV$	DU 	MOV$	DA	 	MOV$	LUN  	MOV	(PC)+,-(SP)
 	.BYTE	7,4
 	DIR$	,ERR 	.ENDM	ALUN$SN     RM        	.MACRO	ALUN$	LUN,DA,DUD 	.MCALL	OFF$ 	.IF NDF	$$$GLB 
 	.BYTE	7,4
 	.WORD	LUN 	.IF B	<DA>F 	.WORD	0 	.IFFT 	.NCHR	$$$T1,<DA>T $$$T2=.  	.ASCII	/DA/	 .=$$$T2+2C 	.ENDC	 	.WORD	DU  	.ENDC 	.IF NDF	A.LULUN 	.NLISTS+ 	.IRP	X,<,<A.LULU,2>,<A.LUNA,2>,<A.LUNU,2>>D 	OFF$	XF       	.ENDM 	.LIST 	.ENDC 	.ENDM	ALUN$     ¸ M        	.MACRO	ASTX$C	PSCT,ERR	 	.MCALL	ASTX$,DIR$ 	.IF NDF $$$GLBR 	.PSECT	$DPB$$ $$$=.  	.IFTF 	ASTX$ 	.IFT- 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	ASTX$C      Š M        	.MACRO	ASTX$S	ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	115.,1D 	DIR$. 	.IIF NB	<ERR>,	JSR	PC,ERR 	.ENDM	ASTX$S<     Z M        	.MACRO	ASTX$$ 	.IF NDF $$$GLB. 	.BYTE	115.,1C 	.ENDC 	.ENDM	ASTX$     ê M       0 	.MACRO	CINT$C	VEC,BASE,ISR,DSI,PSW,AST,PS      CT,ERR 	.MCALL	CINT$,DIR$ 	.IF NDF	$$$GLB  	.PSECT	$DPB$$ $$$=.S 	.IFTF 	CINT$	VEC,BASE,ISR,DSI,PSW,ASTN 	.IFTL 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	CINT$C.     ² M       + 	.MACRO	CINT$S	VEC,BASE,ISR,DSI,PSW,AST,ERR  	.MCALL	RVP$,DIR$S 	RVP$	VEC,BASE,ISR,DSI,PSW,AST 	MOV	(PC)+,-(SP) 	.BYTE	129.,7I
 	DIR$	,ERR 	.ENDM	CINT$SN     LM       & 	.MACRO	CINT$	VEC,BASE,ISR,DSI,PSW,AST 	.MCALL	OFF$ 	.IF NDF	$$$GLB. 	.BYTE	129.,7 
 	.WORD	VEC 	.WORD	BASET
 	.WORD	ISR
 	.WORD	DSI
 	.WO      RD	PSW
 	.WORD	AST 	.ENDC 	.IF NDF	C.INVE  	OFF$C 	OFF$	C.INVE,2 	OFF$	C.INBA,2 	OFF$	C.INIS,2 	OFF$	C.INDI,2 	OFF$	C.INPS,2 	OFF$	C.INAS,2 	.ENDC 	.ENDM	CINT$     ¼ M        	.MACRO	CLEF$C	EFN,CS,ERR, 	.MCALL	CLEF$,DIR$ 	.IF NDF	$$$GLBR 	.PSECT	$DPB$$ $$$=.D 	.IFTF
 	CLEF$	EFN 	.IFT)
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	CLEF$C      † M        	.MACRO	CLEF$S	EFN,ERR 	.MCALL	MOV$,DIR$F	 	MOV$	EFNF 	MOV	(PC)+,-(SP) 	.BYTE	31.,2
 	DIR$	,ERR 	.ENDM	CLEF$SI     º M              	.MACRO	CLEF$	EFNT 	.MCALL	OFF$ 	.IF NDF	$$$GLBF 	.BYTE	31.,2
 	.WORD	EFN 	.ENDC 	.IF NDF	C.LEEF  	.NLISTN 	OFF$O 	OFF$	C.LEEF,2 	.LIST 	.ENDC 	.ENDM	CLEF$     È M        	.MACRO	CMKT$C	EFN,AST,PSCT,ERR  	.MCALL	CMKT$,DIR$ 	.IF NDF $$$GLB  	.PSECT	$DPB$$ $$$=.  	.IFTF 	CMKT$	EFN,AST 	.IFTS 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	CMKT$C      x M        	.MACRO	CMKT$S	EFN,AST,ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	27.,1
 	DIR$	,ERR 	.ENDM	CMKT$SC     ` M        	.MACR      O	CMKT$	EFN,ASTF 	.IF NDF $$$GLB  	.BYTE	27.,1 	.ENDC 	.ENDM	CMKT$     À M        	.MACRO	CSRQ$C	TT,RT,CS,ERRF 	.MCALL	CSRQ$,DIR$ 	.IF NDF	$$$GLB. 	.PSECT	$DPB$$ $$$=.  	.IFTF 	CSRQ$	TT,RT 	.IFTP
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	CSRQ$CS     † M        	.MACRO	CSRQ$S	TN,RN,ERR 	.MCALL	RFA$,DIR$T 	RFA$	TN 	MOV	(PC)+,-(SP) 	.BYTE	25.,3
 	DIR$	,ERR 	.ENDM	CSRQ$SM     Ð M        	.MACRO	CSRQ$	TT,RTC 	.MCALL	R50$,OFF$. 	.IF NDF	$$$GLB. 	.BYTE	25.,3 	R50$	TT 	.ENDC 	.IF       NDF	C.SRTN, 	.NLISTF 	OFF$$ 	OFF$	C.SRTN,4 	OFF$	C.SRRN,4 	.LIST 	.ENDC 	.ENDM	CSRQ$     À M        	.MACRO	DECL$C	EFN,PSCT,ERR  	.MCALL	DECL$,DIR$ 	.IF NDF $$$GLB= 	.PSECT	$DPB$$ $$$=.T 	.IFTF
 	DECL$	EFN 	.IFT	 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	DECL$C.     t M        	.MACRO	DECL$S	EFN,ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	35.,1
 	DIR$	,ERR 	.ENDM	DECL$S      \ M        	.MACRO	DECL$	EFN  	.IF NDF $$$GLB. 	.BYTE	35.,1 	.ENDC 	.ENDM	DECL$     ¸ M              	.MACRO	DSAR$C	PSCT,ERR  	.MCALL	DSAR$,DIR$ 	.IF NDF $$$GLB4 	.PSECT	$DPB$$ $$$=.M 	.IFTF 	DSAR$ 	.IFT  	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	DSAR$C.     p M        	.MACRO	DSAR$S	ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	99.,1
 	DIR$	,ERR 	.ENDM	DSAR$SM     X M        	.MACRO	DSAR$R 	.IF NDF $$$GLB  	.BYTE	99.,1 	.ENDC 	.ENDM	DSAR$     ¸ M        	.MACRO	DSCP$C	PSCT,ERR  	.MCALL	DSCP$,DIR$ 	.IF NDF $$$GLBN 	.PSECT	$DPB$$ $$$=.1 	.IFTF 	DSCP$ 	.IFT  	.PSECT	PSCT 	D      IR$	#$$$,ERR 	.ENDC 	.ENDM	DSCP$CS     p M        	.MACRO	DSCP$S	ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	95.,1
 	DIR$	,ERR 	.ENDM	DSCP$SC     X M        	.MACRO	DSCP$  	.IF NDF $$$GLBE 	.BYTE	95.,1 	.ENDC 	.ENDM	DSCP$     ¸ M        	.MACRO	ENAR$C	PSCT,ERR  	.MCALL	ENAR$,DIR$ 	.IF NDF $$$GLBN 	.PSECT	$DPB$$ $$$=.1 	.IFTF 	ENAR$ 	.IFT  	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	ENAR$CS     r M        	.MACRO	ENAR$S	ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	101.,1S
 	DIR      $	,ERR 	.ENDM	ENAR$S      Z M        	.MACRO	ENAR$  	.IF NDF $$$GLBR 	.BYTE	101.,1  	.ENDC 	.ENDM	ENAR$     ¸ M        	.MACRO	ENCP$C	PSCT,ERR  	.MCALL	ENCP$,DIR$ 	.IF NDF $$$GLB$ 	.PSECT	$DPB$$ $$$=.. 	.IFTF 	ENCP$ 	.IFT  	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	ENCP$C,     p M        	.MACRO	ENCP$S	ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	97.,1
 	DIR$	,ERR 	.ENDM	ENCP$S.     X M        	.MACRO	ENCP$. 	.IF NDF $$$GLB  	.BYTE	97.,1 	.ENDC 	.ENDM	ENCP$     ¼ M              	.MACRO	EXIF$C	EFN,CS,ERR  	.MCALL	EXIF$,DIR$ 	.IF NDF	$$$GLB$ 	.PSECT	$DPB$$ $$$=.  	.IFTF
 	EXIF$	EFN 	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	EXIF$C,     † M        	.MACRO	EXIF$S	EFN,ERR 	.MCALL	MOV$,DIR$$	 	MOV$	EFN. 	MOV	(PC)+,-(SP) 	.BYTE	53.,2
 	DIR$	,ERR 	.ENDM	EXIF$S      º M        	.MACRO	EXIF$	EFN	 	.MCALL	OFF$ 	.IF NDF	$$$GLB9 	.BYTE	53.,2
 	.WORD	EFN 	.ENDC 	.IF NDF	E.XFEF  	.NLISTN 	OFF$. 	OFF$	E.XFEF,2 	.LIST 	.ENDC 	.ENDM	EXIF$     ¸ M              	.MACRO	EXIT$C	PSCT,ERRC 	.MCALL	EXIT$,DIR$ 	.IF NDF $$$GLB$ 	.PSECT	$DPB$$ $$$=.  	.IFTF 	EXIT$ 	.IFTE 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	EXIT$CM     † M        	.MACRO	EXIT$S ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	51.,1 	DIR$C 	.IIF NB	<ERR>,	CALL	ERR 	.ENDM	EXIT$SM     X M        	.MACRO	EXIT$R 	.IF NDF $$$GLBC 	.BYTE	51.,1 	.ENDC 	.ENDM	EXIT$     ¼ M        	.MACRO	EXST$C	STS,CS,ERR. 	.MCALL	EXST$,DIR$ 	.IF NDF	$$$GLBT 	.PSECT	$DPB$$ $$$=.  	.IFTF
 	EXST$	S      TS 	.IFTX
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	EXST$C$     ð M        	.MACRO	EXST$S	STS,ERR 	.MCALL	MOV$,DIR$,OFF$	 	MOV$	STSR 	MOV	(PC)+,-(SP) 	.BYTE	29.,2
 	DIR$	,ERR 	.NLISTX $$$OST=05 	.IRP	X,<<EX$WAR,1>,<EX$SUC,1>,<EX$ERR,2>,<EX$SEV,1>>. 	OFF$	XR 	.ENDM 	.LIST 	.ENDM	EXST$S      M        	.MACRO	EXST$	STSN 	.MCALL	OFF$ 	.IF NDF	$$$GLBC 	.BYTE	29.,2
 	.WORD	STS 	.ENDC 	.IF NDF	E.XSTSS 	.NLIST  	OFF$	 	OFF$	E.XSTS,2 $$$OST=05 	.IRP	X,<<EX$WAR,1>,<EX$SUC,1>,<EX$ERR,2>,      <EX$SEV,1>>  	OFF$	XS 	.ENDM 	.LIST 	.ENDC 	.ENDM	EXST$     ¼ M        	.MACRO	EXTK$C	INC,CS,ERR  	.MCALL	EXTK$,DIR$ 	.IF NDF	$$$GLBM 	.PSECT	$DPB$$ $$$=.2 	.IFTF
 	EXTK$	INC 	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	EXTK$C,     ’ M        	.MACRO	EXTK$S	INC,ERR 	.MCALL	MOV$,DIR$ 
 	CLR	-(SP)	 	MOV$	INCT 	MOV	(PC)+,-(SP) 	.BYTE	89.,3
 	DIR$	,ERR 	.ENDM	EXTK$SD     Ä M        	.MACRO	EXTK$	INCS 	.MCALL	OFF$ 	.IF NDF	$$$GLBO 	.BYTE	89.,3
 	.WORD	INC 	.WORD	0 	.ENDC 	.      IF NDF	E.XTIN  	.NLIST  	OFF$  	OFF$	E.XTIN,2 	.LIST 	.ENDC 	.ENDM	EXTK$     È M        	.MACRO 	GLUN$C	LUN,BUFA,CS,ERR. 	.MCALL	GLUN$,DIR$ 	.IF NDF	$$$GLB2 	.PSECT	$DPB$$ $$$=.. 	.IFTF 	GLUN$	LUN,BUFA$ 	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	GLUN$CX     M        	.MACRO	GLUN$S	LUN,BUFA,ERRM 	.MCALL	MOV$,DIR$,OFF$
 	MOV$	BUFA	 	MOV$	LUN	 	MOV	(PC)+,-(SP)
 	.BYTE	5,3
 	DIR$	,ERR 	.IF NDF	G.LUNA  	.NLISTF $$$OST=06 	.IRP	X,<<G.LUNA,2>,<G.LUNU,1>,<G.LUFB,1>,<G.LUCW,8.>>       	OFF$	XE 	.ENDM 	.LIST 	.ENDC 	.ENDM	GLUN$S2     `M        	.MACRO	GLUN$	LUN,BUFA 	.MCALL	OFF$ 	.IF NDF	$$$GLBA
 	.BYTE	5,3
 	.WORD	LUN 	.WORD	BUFAF 	.ENDC 	.IF NDF	G.LULU  	.NLIST.+ 	.IRP	X,<,<G.LULU,2>,<G.LUBA,2>,<G.LUBL,2>>D 	OFF$	XE 	.ENDM 	.IF NDF	G.LUNAX $$$OST=06 	.IRP	X,<<G.LUNA,2>,<G.LUNU,1>,<G.LUFB,1>,<G.LUCW,8.>> 	OFF$	XM 	.ENDM 	.ENDC 	.LIST 	.ENDC 	.ENDM	GLUN$     ´ M        	.MACRO	GMCR$C	CS,ERRS 	.MCALL	GMCR$,DIR$ 	.IF NDF	$$$GLBL 	.PSECT	$DPB$$ $$$=.C 	.IFTF       	GMCR$ 	.IFTM
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	GMCR$C      ¼ M        	.MACRO	GMCR$F 	.MCALL	OFF$ 	.IF NDF	$$$GLB3 	.BYTE	127.,41.O
 	.BLKW	40. 	.ENDC 	.IF NDF	G.MCRB. 	.NLIST. 	OFF$, 	OFF$	G.MCRB,80. 	.LIST 	.ENDC 	.ENDM	GMCR$     Ä M        	.MACRO	GPRT$C	PRT,BUF,CS,ERRA 	.MCALL	GPRT$,DIR$ 	.IF NDF	$$$GLB> 	.PSECT	$DPB$$ $$$=.N 	.IFTF 	GPRT$	PRT,BUF 	.IFT$
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	GPRT$C	     M        	.MACRO	GPRT$S	PRT,BUF,ERR 	.MCALL	MOV$      ,RFA$,DIR$,OFF$M	 	MOV$	BUFS	 	RFA$	PRT$ 	MOV	(PC)+,-(SP) 	.BYTE	65.,4
 	DIR$	,ERR 	.IF NDF	G.PRPBF 	.NLIST	 $$$OST=0* 	.IRP	X,<<G.PRPB,2>,<G.PRPS,2>,<G.PRFW,2>> 	OFF$	X. 	.ENDM 	.LIST 	.ENDC 	.ENDM	GPRT$S	     BM        	.MACRO	GPRT$	PRT,BUF  	.MCALL	OFF$,R50$. 	.IF NDF	$$$GLBB 	.BYTE	65.,4	 	R50$	PRT,
 	.WORD	BUF 	.ENDC 	.IF NDF	G.PRPN$ 	.NLIST  	OFF$  	OFF$	G.PRPN,4 	OFF$	G.PRBA,2 	.IF NDF	G.PRPBR $$$OST=0* 	.IRP	X,<<G.PRPB,2>,<G.PRPS,2>,<G.PRFW,2>> 	OFF$	XB 	.ENDM 	.ENDC 	.      LIST 	.ENDC 	.ENDM	GPRT$     ¸ M        	.MACRO	GSSW$C	PSCT,ERR. 	.MCALL	GSSW$,DIR$ 	.IF NDF $$$GLBL 	.PSECT	$DPB$$ $$$=., 	.IFTF 	GSSW$ 	.IFT< 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	GSSW$CG     r M        	.MACRO	GSSW$S	ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	125.,1B
 	DIR$	,ERR 	.ENDM	GSSW$S      Z M        	.MACRO	GSSW$P 	.IF NDF $$$GLBF 	.BYTE	125.,1N 	.ENDC 	.ENDM	GSSW$     ¾ M        	.MACRO	GTIM$C	BUFA,CS ERR 	.MCALL	GTIM$,DIR$ 	.IF NDF	$$$GLBN 	.PSECT	$DPB      $$ $$$=.N 	.IFTF 	GTIM$	BUFA  	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	GTIM$C      VM        	.MACRO	GTIM$S	BUFA,ERR. 	.MCALL	MOV$,DIR$,OFF$
 	MOV$	BUFA 	MOV	(PC)+,-(SP) 	.BYTE	61.,2
 	DIR$	,ERR 	.IF NDF	G.TIYRA 	.NLISTS $$$OST=05 	.IRP	X,<<G.TIYR,2>,<G.TIMO,2>,<G.TIDA,2>,<G.TIHR,2>>  	OFF$	XS 	.ENDM5 	.IRP	X,<<G.TIMI,2>,<G.TISC,2>,<G.TICT,2>,<G.TICP,2>>E 	OFF$	X  	.ENDM 	.LIST 	.ENDC 	.ENDM	GTIM$S      tM        	.MACRO	GTIM$	BUFA 	.MCALL	OFF$ 	.IF NDF	$$$GLBS 	.BYTE      	61.,2 	.WORD	BUFA  	.ENDC 	.IF NDF	G.TIBAS 	.NLISTD 	OFF$$ 	OFF$	G.TIBA,2 	.IF NDF	G.TIYR  $$$OST=05 	.IRP	X,<<G.TIYR,2>,<G.TIMO,2>,<G.TIDA,2>,<G.TIHR,2>>M 	OFF$	X  	.ENDM5 	.IRP	X,<<G.TIMI,2>,<G.TISC,2>,<G.TICT,2>,<G.TICP,2>>. 	OFF$	X$ 	.ENDM 	.ENDC 	.LIST 	.ENDC 	.ENDM	GTIM$     ¾ M        	.MACRO	GTSK$C	BUFA,CS,ERR 	.MCALL	GTSK$,DIR$ 	.IF NDF	$$$GLBC 	.PSECT	$DPB$$ $$$=.M 	.IFTT 	GTSK$	BUFAN 	.IFT$
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	GTSK$CF    þM        	.MACRO	      GTSK$S	BUFA,ERRB 	.MCALL	MOV$,DIR$,OFF$
 	MOV$	BUFA 	MOV	(PC)+,-(SP) 	.BYTE	63.,2
 	DIR$	,ERR 	.IF NDF	G.TSTNR 	.NLISTI $$$OST=0@ 	.IRP	X,<<G.TSTN,4>,<G.TSPN,4>,<G.TSRN,4>,<G.TSPR,2>,<G.TSPC,1>> 	OFF$	XS 	.ENDM@ 	.IRP	X,<<G.TSGC,1>,<G.TSNL,2>,<G.TSMT,2>,<G.TSFW,2>,<G.TSVA,2>> 	OFF$	X$ 	.ENDM 	OFF$	G.TSVL,2 	OFF$	G.TSTS,2 	OFF$	G.TSSY,2 	OFF$	G.TSDU,2 $$$0ST=05 	.IRP	X,<<RX$11D,1>,<RX$11M,1>,<RX$11S,1>,<RX$IAS,1>>$ 	OFF$	X	 	.ENDM 	.LIST 	.ENDC 	.ENDM	GTSK$S$     M        	.MACRO	GT      SK$	BUFA 	.MCALL	OFF$ 	.IF NDF	$$$GLB$ 	.BYTE	63.,2 	.WORD	BUFAS 	.ENDC 	.IF NDF	G.TSBAE 	.NLISTN 	OFF$T 	OFF$	G.TSBA,2 	.IF NDF	G.TSTN< $$$OST=0@ 	.IRP	X,<<G.TSTN,4>,<G.TSPN,4>,<G.TSRN,4>,<G.TSPR,2>,<G.TSPC,1>> 	OFF$	X. 	.ENDM@ 	.IRP	X,<<G.TSGC,1>,<G.TSNL,2>,<G.TSMT,2>,<G.TSFW,2>,<G.TSVA,2>> 	OFF$	XL 	.ENDM 	OFF$	G.TSVL,2 	OFF$	G.TSTS,2 	OFF$	G.TSSY,2 	OFF$	G.TSDU,2 $$$OST=05 	.IRP	X,<<RX$11D,1>,<RX$11M,1>,<RX$11S,1>,<RX$IAS,1>>. 	OFF$	XN 	.ENDM 	.ENDC 	.LIST 	.ENDC 	.ENDM	GTSK$           ^ M        	.MACRO	IHAR$C	PSCT,ERR  	.MCALL	DSAR$C 	DSAR$C	PSCT,ERR 	.ENDM	IHAR$CB     T M        	.MACRO	IHAR$S	ERR 	.MCALL	DSAR$S 	DSAR$S	ERR. 	.ENDM	IHAR$S4     H M        	.MACRO	IHAR$> 	.MCALL	DSAR$O 	DSAR$ 	.ENDM	IHAR$     Î M       " 	.MACRO	MRKT$C	EF,TM,TU,AST,CS,ERR 	.MCALL	MRKT$,DIR$ 	.IF NDF	$$$GLB2 	.PSECT	$DPB$$ $$$=.	 	.IFTF 	MRKT$	EF,TM,TU,ASTO 	.IFT.
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	MRKT$C.     ˜ M        	.MACRO	MRKT$S	EF,TM,TU,AST,ERRG 	.MC      ALL	RVP$,DIR$  	RVP$	EF,TM,TU,AST 	MOV	(PC)+,-(SP) 	.BYTE	23.,5
 	DIR$	,ERR 	.ENDM	MRKT$S      M        	.MACRO	MRKT$	EFN,TM,TU,ASTS 	.MCALL	OFF$ 	.IF NDF	$$$GLB$ 	.BYTE	23.,5
 	.WORD	EFN	 	.WORD	TM 	 	.WORD	TUR
 	.WORD	AST 	.ENDC 	.IF NDF	M.KTEF  	.NLISTA6 	.IRP	X,<,<M.KTEF,2>,<M.KTMG,2>,<M.KTUN,2>,<M.KTAE,2>> 	OFF$	XL 	.ENDM 	.LIST 	.ENDC 	.ENDM	MRKT$     ø M       6 	.MACRO	QIO$C	FNC,LUN,EFN,PRI,IOST,AST,PRMLST,PSCT,ERR 	.MCALL	QDPB$,DIR$ 	.IF NDF	$$$GLBS 	.PSECT	$DPB$$ $$$=.C       	.IFTF* 	QDPB$	1,FNC,LUN,EFN,PRI,IOST,AST,<PRMLST> 	.IFTE 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	QIO$C     – M       1 	.MACRO	QIO$S	FNC,LUN,EFN,PRI,IOST,AST,PRMLST,ERRE 	.MCALL	QDPB$S/ 	QDPB$S	1,FNC,LUN,EFN,PRI,IOST,AST,<PRMLST>,ERR. 	.ENDM	QIO$S     Š M       , 	.MACRO	QIO$	FNC,LUN,EFN,PRI,IOST,AST,PRMLST 	.MCALL	QDPB$.* 	QDPB$	1,FNC,LUN,EFN,PRI,IOST,AST,<PRMLST> 	.ENDM	QIO$A     ü M       7 	.MACRO	QIOW$C	FNC,LUN,EFN,PRI,IOST,AST,PRMLST,PSCT,ERRF 	.MCALL	QDPB$,DIR$ 	.IF NDF	$$$GL      B  	.PSECT	$DPB$$ $$$=.N 	.IFTF* 	QDPB$	3,FNC,LUN,EFN,PRI,IOST,AST,<PRMLST> 	.IFT$ 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	QIOW$C	     ˜ M       2 	.MACRO	QIOW$S	FNC,LUN,EFN,PRI,IOST,AST,PRMLST,ERR 	.MCALL	QDPB$S/ 	QDPB$S	3,FNC,LUN,EFN,PRI,IOST,AST,<PRMLST>,ERR  	.ENDM	QIOW$SI     Œ M       - 	.MACRO	QIOW$	FNC,LUN,EFN,PRI,IOST,AST,PRMLSTL 	.MCALL	QDPB$,* 	QDPB$	3,FNC,LUN,EFN,PRI,IOST,AST,<PRMLST> 	.ENDM	QIOW$     vM       6 	.MACRO	QDPB$S	DIC,FNC,LUN,EFN,PRI,IOST,AST,PRMLST,ERR 	.MC      ALL	RVP$,MVB$,DIR$ 	.NLIST  $$$ARG=0 	.IRP	X,<PRMLST> $$$ARG=$$$ARG+1M 	.ENDM 	.LIST 	.IF GT	6-$$$ARG 	.REPT	<6-$$$ARG>.
 	CLR	-(SP) 	.ENDR 	.ENDC 	.IIF NB	<PRMLST>,	RVP$	PRMLST 	RVP$	IOST,AST
 	MVB$	EFN, 	RVP$	FNC,LUNP 	MOV	(PC)+,-(SP) 	.BYTE	DIC,12.
 	DIR$	,ERR 	.ENDM	QDPB$S      "M       1 	.MACRO	QDPB$	DIC,FNC,LUN,EFN,PRI,IOST,AST,PRMLSTC 	.MCALL	OFF$ 	.IF NDF	$$$GLBN 	.BYTE	DIC,12.
 	.WORD	FNC
 	.WORD	LUN 	.BYTE	EFN,0 	.WORD	IOSTB
 	.WORD	AST 	.NLISTI $$$ARG=0 	.LIST 	.IRP	      X,<PRMLST> 	.WORD	X 	.NLIST  $$$ARG=$$$ARG+1, 	.LIST 	.ENDM 	.IF GT	6-$$$ARG 	.REPT	<6-$$$ARG>- 	.WORD	0 	.ENDR 	.ENDC 	.ENDC 	.IF NDF	Q.IOFNN 	.NLIST 6 	.IRP	X,<,<Q.IOFN,2>,<Q.IOLU,2>,<Q.IOEF,1>,<Q.IOPR,1>> 	OFF$	XU 	.ENDM( 	.IRP	X,<<Q.IOSB,2>,<Q.IOAE,2>,<Q.IOPL>> 	OFF$	XP 	.ENDM 	.LIST 	.ENDC 	.ENDM	QDPB$     º M        	.MACRO	RDAF$C	BA,CS,ERR 	.MCALL	RDAF$,DIR$ 	.IF NDF	$$$GLB1 	.PSECT	$DPB$$ $$$=.L 	.IFTF	 	RDAF$	BA. 	.IFTS
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	RDAF$      C,     „ M        	.MACRO	RDAF$S	BA,ERRR 	.MCALL	MOV$,DIR$M 	MOV$	BA 	MOV	(PC)+,-(SP) 	.BYTE	39.,2
 	DIR$	,ERR 	.ENDM	RDAF$SN     º M        	.MACRO	RDAF$	BA 	.MCALL	OFF$ 	.IF NDF	$$$GLBI 	.BYTE	39.,2	 	.WORD	BA	 	.ENDC 	.IF NDF	R.DABAO 	.NLISTI 	OFF$< 	OFF$	R.DABA,2.P 	.LIST 	.ENDC 	.ENDM	RDAF$     À M        	.MACRO	RCVD$C	TN,BA,CS,ERRS 	.MCALL	RCVD$,DIR$ 	.IF NDF	$$$GLB$ 	.PSECT	$DPB$$ $$$=.$ 	.IFTF 	RCVD$	TN,BA 	.IFTF
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	RCVD$C$           – M        	.MACRO	RCVD$S	TN,BA,ERR 	.MCALL	MOV$,DIR$, RFA$V 	MOV$	BA 	RFA$	TN 	MOV	(PC)+,-(SP) 	.BYTE	75.,4
 	DIR$	,ERR 	.ENDM	RCVD$S      è M        	.MACRO	RCVD$	TN,BAF 	.MCALL	OFF$, R50$ 	.IF NDF	$$$GLB	 	.BYTE	75.,4 	R50$	TN	 	.WORD	BAI 	.ENDC 	.IF NDF	R.VDTNP 	.NLIST   	.IRP	X,<,<R.VDTN,4>,<R.VDBA,2>> 	OFF$	XA 	.ENDM 	.LIST 	.ENDC 	.ENDM	RCVD$     À M        	.MACRO	RCVX$C	TN,BA,CS,ERR$ 	.MCALL	RCVX$,DIR$ 	.IF NDF	$$$GLBC 	.PSECT	$DPB$$ $$$=.. 	.IFTF 	RCVX$	TN,      BA 	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	RCVX$CR     – M        	.MACRO	RCVX$S	TN,BA,ERR 	.MCALL	MOV$,DIR$, RFA$E 	MOV$	BA 	RFA$	TN 	MOV	(PC)+,-(SP) 	.BYTE	77.,4
 	DIR$	,ERR 	.ENDM	RCVX$S      è M        	.MACRO	RCVX$	TN,BAN 	.MCALL	OFF$, R50$ 	.IF NDF	$$$GLBP 	.BYTE	77.,4 	R50$	TN	 	.WORD	BA. 	.ENDC 	.IF NDF	R.VXTNM 	.NLIST   	.IRP	X,<,<R.VXTN,4>,<R.VXBA,2>> 	OFF$	XA 	.ENDM 	.LIST 	.ENDC 	.ENDM	RCVX$     È M       # 	.MACRO	RQST$C	TN,PN,PR,GC,P,CS,ERRF 	.MCALL	RQ      ST$,DIR$ 	.IF NDF	$$$GLBD 	.PSECT	$DPB$$ $$$=.. 	.IFTF 	RQST$	TN,PN,PR,GC,P 	.IFTR
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM     ² M         	.MACRO	RQST$S	TN,PN,PR,GC,P,ERR 	.MCALL	MVB$,RFA$,DIR$
 	MVB$	P,GC
 	CLR	-(SP) 	RFA$	 	RFA$	TN 	MOV	(PC)+,-(SP) 	.BYTE	11.,7
 	DIR$	,ERR 	.ENDM	RQST$S0     *M        	.MACRO	RQST$	TN,PN,PR,GC,PL 	.MCALL	R50$,OFF$V 	.IF NDF	$$$GLB> 	.BYTE	11.,7 	R50$	TN
 	.WORD	0,0 	.WORD	0 	.BYTE	P,GC  	.ENDC 	.IF NDF	R.QSTN, 	.NLISTPA 	.IRP	X,<,<R.QSTN,      4>,<R.QSPN,4>,<R.QSPR,2>,<R.QSPC,1>,<R.QSGC,1>>= 	OFF$	XF 	.ENDM 	.LIST 	.ENDC 	.ENDM	RQST$     º M        	.MACRO	RSUM$C	TN,CS,ERR 	.MCALL	RSUM$,DIR$ 	.IF NDF	$$$GLBC 	.PSECT	$DPB$$ $$$=.A 	.IFTF	 	RSUM$	TN  	.IFTS
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	RSUM$C7     „ M        	.MACRO	RSUM$S	TN,ERR  	.MCALL	RFA$,DIR$	 	RFA$	TN 	MOV	(PC)+,-(SP) 	.BYTE	47.,3
 	DIR$	,ERR 	.ENDM	RSUM$SR     ¼ M        	.MACRO	RSUM$	TN 	.MCALL	R50$,OFF$F 	.IF NDF	$$$GLBL 	.BYTE	47.,3 	R50$	TN       	.ENDC 	.IF NDF	R.SUTN< 	.NLIST, 	OFF$, 	OFF$	R.SUTN,4 	.LIST 	.ENDC 	.ENDM	RSUM$     æ M       / 	.MACRO	RUN$C	TN,PN,PR,UG,UP,SM,SU,RM,RU,CS,ERRI 	.MCALL	RUN$,DIR$C 	.IF NDF	$$$GLB  	.PSECT	$DPB$$ $$$=.T 	.IFTF  	RUN$	TN,PN,PR,UG,UP,SM,SU,RM,RU 	.IFT.
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	RUN$C     Ú M       , 	.MACRO	RUN$S	TN,PN,PR,UG,UP,SM,SU,RM,RU,ERR 	.MCALL	RVP$,MVB$,RFA$,DIR$R 	RVP$	SM,SU,RM,RU  	MVB$	UP,UG	
 	CLR	-(SP) 	RFA$F 	RFA$	TN 	MOV	(PC)+,-(SP) 	.BYTE	17.,11.      
 	DIR$	,ERR 	.ENDM	RUN$S     °M       & 	.MACRO	RUN$	TN,PN,PR,GC,P,SM,SU,RM,RU 	.MCALL	R50$,OFF$  	.IF NDF	$$$GLB$ 	.BYTE	17.,11. 	R50$	TN
 	.WORD	0,0 	.WORD	0 	.BYTE	P,GCF	 	.WORD	SM 	 	.WORD	SUD	 	.WORD	RMT	 	.WORD	RUR 	.ENDC 	.IF NDF	R.UNTNR 	.NLISTFA 	.IRP	X,<,<R.UNTN,4>,<R.UNPN,4>,<R.UNPR,2>,<R.UNPC,1>,<R.UNGC,1>>  	OFF$	XR 	.ENDM5 	.IRP	X,<<R.UNSM,2>,<R.UNSU,2>,<R.UNRM,2>,<R.UNRU,2>>D 	OFF$	XP 	.ENDM 	.LIST 	.ENDC 	.ENDM	RUN$S     È M        	.MACRO	SDAT$C	TN,BA,EFN,CS,ERR1       	.MCALL	SDAT$,DIR$ 	.IF NDF	$$$GLB  	.PSECT	$DPB$$ $$$=.T 	.IFTF 	SDAT$	TN,BA,EFN 	.IFT	
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SDAT$C	     ¤ M        	.MACRO	SDAT$S	TN,BA,EFN,ERR 	.MCALL	MOV$,RFA$,DIR$	 	MOV$	EFNR 	MOV$	BA 	RFA$	TN 	MOV	(PC)+,-(SP) 	.BYTE	71.,5
 	DIR$	,ERR 	.ENDM	SDAT$S,     M        	.MACRO	SDAT$	TN,BA,EFNM 	.MCALL	R50$,OFF$2 	.IF NDF	$$$GLBN 	.BYTE	71.,5 	R50$	TN	 	.WORD	BAM
 	.WORD	EFN 	.ENDC 	.IF NDF	S.DATN  	.NLIST + 	.IRP	X,<,<S.DATN,4>,<S.DABA,2>,<S      .DAEF,2>>D 	OFF$	X  	.ENDM 	.LIST 	.ENDC 	.ENDM	SDAT$     ¼ M        	.MACRO	SETF$C	EFN,CS,ERR	 	.MCALL	SETF$,DIR$ 	.IF NDF	$$$GLBA 	.PSECT	$DPB$$ $$$=.  	.IFTF
 	SETF$	EFN 	.IFTR
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SETF$CA     † M        	.MACRO	SETF$S	EFN,ERR 	.MCALL	MOV$,DIR$$	 	MOV$	EFN  	MOV	(PC)+,-(SP) 	.BYTE	33.,2
 	DIR$	,ERR 	.ENDM	SETF$SF     º M        	.MACRO	SETF$	EFN  	.MCALL	OFF$ 	.IF NDF	$$$GLB  	.BYTE	33.,2
 	.WORD	EFN 	.ENDC 	.IF NDF	S.ETEF. 	.NLISTS       	OFF$> 	OFF$	S.ETEF,2 	.LIST 	.ENDC 	.ENDM	SETF$     ¼ M        	.MACRO	SFPA$C	AST,CS,ERR, 	.MCALL	SFPA$,DIR$ 	.IF NDF	$$$GLB$ 	.PSECT	$DPB$$ $$$=.$ 	.IFTF
 	SFPA$	AST 	.IFT.
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SFPA$CT     ˆ M        	.MACRO	SFPA$S	AST,ERR 	.MCALL	MOV$,DIR$D	 	MOV$	AST	 	MOV	(PC)+,-(SP) 	.BYTE	111.,2.
 	DIR$	,ERR 	.ENDM	SFPA$S$     ¼ M        	.MACRO	SFPA$	ASTF 	.MCALL	OFF$ 	.IF NDF	$$$GLBL 	.BYTE	111.,22
 	.WORD	AST 	.ENDC 	.IF NDF	S.FPAE. 	.NLISTS       	OFF$> 	OFF$	S.FPAE,2 	.LIST 	.ENDC 	.ENDM	SFPA$     ¸ M        	.MACRO	SPND$C	PSCT,ERRR 	.MCALL	SPND$,DIR$ 	.IF NDF $$$GLBL 	.PSECT	$DPB$$ $$$=.= 	.IFTF 	SPND$ 	.IFT  	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SPND$CP     p M        	.MACRO	SPND$S	ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	45.,1
 	DIR$	,ERR 	.ENDM	SPND$S.     X M        	.MACRO	SPND$  	.IF NDF $$$GLBA 	.BYTE	45.,1 	.ENDC 	.ENDM	SPND$     ¼ M        	.MACRO	SPRA$C	AST,CS,ERRC 	.MCALL	SPRA$,DIR$ 	.IF N      DF	$$$GLB  	.PSECT	$DPB$$ $$$=.  	.IFTF
 	SPRA$	AST 	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SPRA$C,     ˆ M        	.MACRO	SPRA$S	AST,ERR 	.MCALL	MOV$,DIR$$	 	MOV$	AST. 	MOV	(PC)+,-(SP) 	.BYTE	109.,2C
 	DIR$	,ERR 	.ENDM	SPRA$S      ¼ M        	.MACRO	SPRA$	ASTI 	.MCALL	OFF$ 	.IF NDF	$$$GLB. 	.BYTE	109.,2 
 	.WORD	AST 	.ENDC 	.IF NDF	S.PRAEA 	.NLIST  	OFF$N 	OFF$	S.PRAE,2 	.LIST 	.ENDC 	.ENDM	SPRA$     ¼ M        	.MACRO	SRDA$C	AST,CS,ERRC 	.MCALL	SRDA$,DIR$ 	.IF N      DF	$$$GLB  	.PSECT	$DPB$$ $$$=.  	.IFTF
 	SRDA$	AST 	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SRDA$C,     ˆ M        	.MACRO	SRDA$S	AST,ERR 	.MCALL	MOV$,DIR$$	 	MOV$	AST. 	MOV	(PC)+,-(SP) 	.BYTE	107.,2C
 	DIR$	,ERR 	.ENDM	SRDA$S      ¼ M        	.MACRO	SRDA$	ASTI 	.MCALL	OFF$ 	.IF NDF	$$$GLB. 	.BYTE	107.,2 
 	.WORD	AST 	.ENDC 	.IF NDF	S.RDAEA 	.NLIST  	OFF$N 	OFF$	S.RDAE,2 	.LIST 	.ENDC 	.ENDM	SRDA$     À M        	.MACRO	SVDB$C	AD,LN,CS,ERR  	.MCALL	SVDB$,DIR$ 	.IF       NDF	$$$GLB  	.PSECT	$DPB$$ $$$=.  	.IFTF 	SVDB$	AD,LN 	.IFT.
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SVDB$C      ’ M        	.MACRO	SVDB$S	AD,LN,ERR 	.MCALL	MOV$,DIR$V 	MOV$	LN 	MOV$	AD 	MOV	(PC)+,-(SP) 	.BYTE	103.,3 
 	DIR$	,ERR 	.ENDM	SVDB$S      à M        	.MACRO	SVDB$	A,L$ 	.MCALL	OFF$ 	.IF NDF	$$$GLB, 	.BYTE	103.,3  	.WORD	A 	.WORD	L 	.ENDC 	.IF NDF	S.VDTAO 	.NLISTE  	.IRP	X,<,<S.VDTA,2>,<S.VDTL,2>> 	OFF$	X  	.ENDM 	.LIST 	.ENDC 	.ENDM	SVDB$     Ä M        	.MA      CRO	SVTK$C	ADR,LEN,CS,ERRB 	.MCALL	SVTK$,DIR$ 	.IF NDF	$$$GLBF 	.PSECT	$DPB$$ $$$=.$ 	.IFTF 	SVTK$	ADR,LEN 	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SVTK$C	     ˜ M        	.MACRO	SVTK$S	ADR,LEN,ERR 	.MCALL	MOV$,DIR$ 	 	MOV$	LEN 	 	MOV$	ADR$ 	MOV	(PC)+,-(SP) 	.BYTE	105.,3B
 	DIR$	,ERR 	.ENDM	SVTK$SN     æ M        	.MACRO	SVTK$	TA,TL. 	.MCALL	OFF$ 	.IF NDF	$$$GLBO 	.BYTE	105.,3R	 	.WORD	TAT	 	.WORD	TLL 	.ENDC 	.IF NDF	S.VTTA. 	.NLISTN  	.IRP	X,<,<S.VTTA,2>,<S.VTTL,2>> 	OFF      $	X	 	.ENDM 	.LIST 	.ENDC 	.ENDM	SVTK$     ¸ M        	.MACRO	WSIG$C	PSCT,ERR= 	.MCALL	WSIG$,DIR$ 	.IF NDF $$$GLB. 	.PSECT	$DPB$$ $$$=.R 	.IFTF 	WSIG$ 	.IFT	 	.PSECT	PSCT 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	WSIG$CL     p M        	.MACRO	WSIG$S	ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	49.,1
 	DIR$	,ERR 	.ENDM	WSIG$S      X M        	.MACRO	WSIG$L 	.IF NDF $$$GLB$ 	.BYTE	49.,1 	.ENDC 	.ENDM	WSIG$     È M        	.MACRO	WTLO$C	SET,MASK,CS,ERR 	.MCALL	WTLO$,DIR$ 	.IF NDF	$$$GL      B	 	.PSECT	$DPB$$ $$$=.N 	.IFTF 	WTLO$	SET,<MASK>  	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	WTLO$CN     M        	.MACRO	WTLO$S	SET,MSK,ERR 	.MCALL	MOV$,DIR$C 	.IF EQ	SET-4$% 	.ERROR	SET	;UNSUPPORTED MACRO OPTION  	.IFF 	 	MOV$	MSKS 	.IF NE	SETC 	MOV	#SET,-(SP)C 	.IFF)
 	CLR	-(SP) 	.ENDC 	MOV	(PC)+,-(SP) 	.BYTE	43.,3 	.ENDC
 	DIR$	,ERR 	.ENDM	WTLO$S$     Â M        	.MACRO	WTLO$	SET,MASK 	.IF NDF	$$$GLB  	.IF EQ	SET-4C% 	.ERROR	SET	;UNSUPPORTED MACRO OPTION. 	.IFF$ 	.      BYTE	43.,3
 	.WORD	SET 	.WORD	MASK  	.ENDC 	.ENDC 	.ENDM	WTLO$     º M        	.MACRO	WTSE$C	EF,CS,ERR 	.MCALL	WTSE$,DIR$ 	.IF NDF	$$$GLBS 	.PSECT	$DPB$$ $$$=.O 	.IFTF	 	WTSE$	EFE 	.IFT.
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	WTSE$C	     „ M        	.MACRO	WTSE$S	EF,ERRF 	.MCALL	MOV$,DIR$N 	MOV$	EF 	MOV	(PC)+,-(SP) 	.BYTE	41.,2
 	DIR$	,ERR 	.ENDM	WTSE$S$     º M        	.MACRO	WTSE$	EFN, 	.MCALL	OFF$ 	.IF NDF	$$$GLB	 	.BYTE	41.,2
 	.WORD	EFN 	.ENDC 	.IF NDF	W.TSEFF 	.NL      ISTE 	OFF$  	OFF$	W.TSEF,2 	.LIST 	.ENDC 	.ENDM	WTSE$     ¤ M        	.MACRO	DIR$	ADR,ERR 	.IF NB	<ADR>. 	MOV	ADR,-(SP) 	.ENDC 	EMT	^O<377> 	.IIF NB	<ERR>,	.MCALL	ERR$  	.IIF NB	<ERR>,	ERR$	ERR 	.ENDM	DIR$$     *M        	.MACRO	ERR$	ERR 	.IF NB	<ERR>. 	.NLISTE 	.NTYPE	$$$T1,ERR	 	.LIST 	.IIF EQ	^O<$$$T1-27>,	BCC	.+6 	.IIF EQ	^O<$$$T1-37>,	BCC	.+6 	.IF GE	^O<$$$T1-60> 	BCC	.+6 	.IFFE 	.IF NE	^O<$$$T1-27> 	.IIF NE	^O<$$$T1-37>,	BCC	.+4 	.ENDC 	.ENDC	 	CALL	ERRF 	.ENDC 	.EN      DM	ERR$O     M        	.MACRO	MVB$	LOW,HIGHN 	.IF B	<LOW> 	.IF B	<HIGH>.
 	CLR	-(SP) 	.IFF  	CLRB	-(SP). 	MOVB	HIGH,1(SP) 	.ENDC 	.IFF< 	.IF B	<HIGH><
 	CLR	-(SP) 	MOVB	LOW,(SP) 	.IFF	 	MOVB	LOW,-(SP)D 	MOVB	HIGH,1(SP) 	.ENDC 	.ENDC 	.ENDM	MVB$N     ð M        	.MACRO	OFF$	SYMB,LEN. 	.IF B	<'SYMB'LEN> $$$OST=2 	.MEXIT. 	.ENDC 	.IF NB	<SYMB> 	.IF NDF	$$$GLB$ SYMB=$$$OSTC 	.IFF. SYMB==$$$OST 	.ENDC 	.ENDC 	.IF NB	<LEN>- $$$OST = ^O<$$$OST+LEN>N 	.ENDC 	.ENDM	OFF$C           M        	.MACRO	RFA$	ADR 	.IF NB	<ADR>H 	.NLISTF 	.NTYPE	$$$T2,ADRI 	.LIST 	.IF LT	$$$T2-6  	MOV	2(ADR),-(SP)	 	MOV	(ADR),-(SP) 	.IFF< 	MOV	ADR,-(SP) 	MOV	@(SP),-(SP) 	ADD	#2,2(SP)F 	MOV	@2(SP),2(SP)D 	.ENDC 	.IFFS
 	CLR	-(SP)
 	CLR	-(SP) 	.ENDC 	.ENDM	RFA$      ªM       * 	.MACRO	RVP$	P0,P1,P2,P3,P4,P5,P6,P7,P8,P9 	.MCALL	MOV$ 	.NLIST	 	.NARG	$$$ARGF 	.LIST 	.IIF GT	$$$ARG-9.,	MOV$	<P9>$ 	.IIF GT	$$$ARG-8.,	MOV$	<P8>L 	.IIF GT	$$$ARG-7,	MOV$	<P7> 	.IIF GT	$$$ARG-6,	MOV$	<P      6> 	.IIF GT	$$$ARG-5,	MOV$	<P5> 	.IIF GT	$$$ARG-4,	MOV$	<P4> 	.IIF GT	$$$ARG-3,	MOV$	<P3> 	.IIF GT	$$$ARG-2,	MOV$	<P2> 	.IIF GT	$$$ARG-1,	MOV$	<P1> 	.IIF GT	$$$ARG,	MOV$	<P0> 	.ENDM	RVP$(     ò M        	.MACRO	R50$	NAMEF 	.NLIST- 	.NCHR	$$$T1,NAME. 	.LIST 	.IF EQ	$$$T1 
 	.WORD	0,0 	.IFFR 	.IF GT	$$$T1-63	 $$$T4=.+47 	.IFTF 	.RAD50	/NAME/ 	.IFT  .=$$$T4$ 	.ENDC 	.IIF LT	$$$T1-4,	.WORD	0O 	.ENDC 	.ENDM	R50$$     Ž M        	.MACRO	MOV$	ARG 	.IF NB	<ARG>. 	.IF DIF	<ARG>,<#0>	       	MOV	ARG,-(SP) 	.MEXITM 	.ENDC 	.ENDC
 	CLR	-(SP) 	.ENDM	MOV$.     ŠM        	.MACRO	QIOSY$	$$$GBL,$$$MSG) 	.IIF	IDN,<$$$GBL>,<DEF$G>,	.GLOBL	QI.VERI 	.IF	IDN,<$$$MSG>,<DEF$S>N	 	$$$MAX=0  	$$MSG=1 	.IFF. 	$$MSG=0 	.ENDC 	.MCALL	IOERR$ 	IOERR$	$$$GBL 	.MCALL	DRERR$ 	DRERR$	$$$GBL 	.IF	DIF,<$$$MSG>,<DEF$S>  	.MCALL	FILIO$ 	FILIO$	$$$GBL 	.MCALL	SPCIO$ 	SPCIO$	$$$GBL 	.MACRO	QIOSY$	ARG,ARG1,ARG2 	.ENDM	QIOSY$$ 	.ENDC 	.ENDM	QIOSY$A     x	M        	.MACRO	IOERR$	$$$GBLR 	.MCALL	      .IOER.,DEFIN$) 	.IF	IDN,<$$$GBL>,<DEF$G> 	 	...GBL=1  	.IFFM	 	...GBL=0 	.ENDC 	.IIF	NDF,$$MSG,$$MSG=0, 	.IOER.	IE.BAD,-01.$ 	.IOER.	IE.IFC,-02.Q 	.IOER.	IE.DNR,-03.M 	.IOER.	IE.VER,-04.= 	.IOER.	IE.ONP,-05.  	.IOER.	IE.SPC,-06.C 	.IOER.	IE.DNA,-07.$ 	.IOER.	IE.DAA,-08.  	.IOER.	IE.DUN,-09.D 	.IOER.	IE.EOF,-10.  	.IOER.	IE.EOV,-11.O 	.IOER.	IE.WLK,-12.I 	.IOER.	IE.DAO,-13.. 	.IOER.	IE.SRE,-14., 	.IOER.	IE.ABO,-15.  	.IOER.	IE.PRI,-16.A 	.IOER.	IE.RSU,-17.. 	.IOER.	IE.OVR,-18.  	.IOER      .	IE.BYT,-19.) 	.IOER.	IE.BLK,-20.D 	.IOER.	IE.MOD,-21.. 	.IOER.	IE.CON,-22.N 	.IOER.	IE.BBE,-56.$ 	.IOER.	IE.STK,-58.D 	.IOER.	IE.FHE,-59.C 	.IOER.	IE.EOT,-62.R 	.IOER.	IE.OFL,-65.R 	.IOER.	IE.BCC,-66.P 	.IOER.	IE.NOD,-23.C 	.IOER.	IE.DFU,-24.A 	.IOER.	IE.IFU,-25.A 	.IOER.	IE.NSF,-26.N 	.IOER.	IE.LCK,-27.F 	.IOER.	IE.HFU,-28.V 	.IOER.	IE.WAC,-29.K 	.IOER.	IE.CKS,-30.O 	.IOER.	IE.WAT,-31.E 	.IOER.	IE.RER,-32.O 	.IOER.	IE.WER,-33.I 	.IOER.	IE.ALN,-34.U 	.IOER.	IE.SNC,-35.R 	.IOER.	IE.S      QC,-36.T 	.IOER.	IE.NLN,-37.K 	.IOER.	IE.CLO,-38.D 	.IOER.	IE.DUP,-57.N 	.IOER.	IE.BVR,-63.E 	.IOER.	IE.BHD,-64.K 	.IOER.	IE.EXP,-75.E 	.IOER.	IE.BTF,-76.T 	.IOER.	IE.ALC,-84.L 	.IOER.	IE.ULK,-85.C 	.IOER.	IE.WCK,-86.D 	.IOER.	IE.NBF,-39.U 	.IOER.	IE.RBG,-40.U 	.IOER.	IE.NBK,-41.F 	.IOER.	IE.ILL,-42.K 	.IOER.	IE.BTP,-43.U 	.IOER.	IE.RAC,-44.C 	.IOER.	IE.RAT,-45.S 	.IOER.	IE.RCN,-46.T 	.IOER.	IE.2DV,-48.R 	.IOER.	IE.FEX,-49.R 	.IOER.	IE.BDR,-50.N 	.IOER.	IE.RNM,-51.C 	.IOER.	IE.BDI,-52      .C 	.IOER.	IE.FOP,-53.N 	.IOER.	IE.BNM,-54.O 	.IOER.	IE.BDV,-55.P 	.IOER.	IE.NFI,-60.R 	.IOER.	IE.ISQ,-61.D 	.IOER.	IE.NNC,-77.P 	.IOER.	IE.AST,-80.F 	.IOER.	IE.NNN,-68.C+ 	.IOER.	IE.NFW,-69.	;<PATH LOST TO PARTNER>- 	.IOER.	IE.BLB,-70.- 	.IOER.	IE.TMM,-71.- 	.IOER.	IE.NDR,-72.- 	.IOER.	IE.CNR,-73.- 	.IOER.	IE.TMO,-74.- 	.IOER.	IE.NNL,-78.- 	.IOER.	IE.NLK,-79.- 	.IOER.	IE.NST,-80.- 	.IOER.	IE.FLN,-81.- 	.IOER.	IE.IES,-82.- 	.IOER.	IE.PES,-83.- 	DEFIN$	IS.PND,+00.- 	DEFIN$	IS.SUC,+01.-       	DEFIN$	IS.RDD,+02.- 	DEFIN$	IS.BV,+05. 	DEFIN$	IS.CR,<15*400+1> 	DEFIN$	IS.ESC,<33*400+1>. 	DEFIN$	IS.CC,<3*400+1>R 	DEFIN$	IS.ESQ,<233*400+1> 	DEFIN$	IS.PES,<200*400+1> 	DEFIN$	IS.EOT,<4*400+1> 	DEFIN$	IS.TAB,<11*400+1>O 	DEFIN$	IS.TMO,+2. 	.IF	EQ,$$MSG1 	.MACRO	IOERR$	A 	.ENDM	IOERR$	 	.ENDC 	.ENDM	IOERR$E     "M        	.MACRO	DRERR$	$$$GBL	 	.MCALL	.QIOE.,DEFIN$E 	.IF	IDN,<$$$GBL>,<DEF$G>-	 	...GBL=1R 	.IFFS	 	...GBL=0O 	.ENDC 	.IIF	NDF,$$MSG,$$MSG=0+ 	.QIOE.	IE.UPN,-01.+ 	.QI      OE.	IE.INS,-02.+ 	.QIOE.	IE.PTS,-03.0 	.QIOE.	IE.UNS,-04.* 	.QIOE.	IE.ULN,-05.C 	.QIOE.	IE.HWR,-06.	 	.QIOE.	IE.ACT,-07.F 	.QIOE.	IE.ITS,-08.> 	.QIOE.	IE.FIX,-09.* 	.QIOE.	IE.CKP,-10.T 	.QIOE.	IE.TCH,-11.S 	.QIOE.	IE.RBS,-15.F 	.QIOE.	IE.PRI,-16.E 	.QIOE.	IE.RSU,-17.R 	.QIOE.	IE.NSW,-18.  	.QIOE.	IE.ILV,-19.E 	.QIOE.	IE.AST,-80.. 	.QIOE.	IE.MAP,-81.  	.QIOE.	IE.IOP,-83.E 	.QIOE.	IE.ALG,-84.D 	.QIOE.	IE.WOV,-85.. 	.QIOE.	IE.NVR,-86.N 	.QIOE.	IE.NVW,-87.$ 	.QIOE.	IE.ITP,-88.N 	.QIOE.	IE      .IBS,-89.S 	.QIOE.	IE.LNL,-90.S 	.QIOE.	IE.IUI,-91.S 	.QIOE.	IE.IDU,-92.N 	.QIOE.	IE.ITI,-93.R 	.QIOE.	IE.PNS,-94.T 	.QIOE.	IE.IPR,-95.S 	.QIOE.	IE.ILU,-96.X 	.QIOE.	IE.IEF,-97.P 	.QIOE.	IE.ADP,-98.H 	.QIOE.	IE.SDP,-99.S 	DEFIN$	IS.CLR,0 	DEFIN$	IS.SET,2 	DEFIN$	IS.SPD,2 	.IF	EQ,$$MSG8 	.MACRO	DRERR$	A 	.ENDM	DRERR$	 	.ENDC 	.ENDM	DRERR$E     ÊM        	.MACRO	FILIO$	$$$GBL	 	.MCALL	.WORD.,DEFIN$E 	.IF	IDN,<$$$GBL>,<DEF$G>-	 	...GBL=1E 	.IFFW	 	...GBL=0I 	.ENDC 	.WORD.	IQ.X,001,0      00 	.WORD.	IQ.Q,002,000 	.WORD.	IQ.S,004,000 	.WORD.	IQ.UMD,004,000 	.WORD.	IO.KIL,012,000 	.WORD.	IO.RDN,022,000 	.WORD.	IO.UNL,042,000 	.WORD.	IO.LTK,050,000 	.WORD.	IO.RTK,060,000 	.WORD.	IO.SET,030,000 	.WORD.	IO.WLB,000,001 	.WORD.	IO.RLB,000,002 	.WORD.	IO.LOV,010,002 	.WORD.	IO.ATT,000,003 	.WORD.	IO.DET,000,004 	.WORD.	IO.FNA,000,011 	.WORD.	IO.RNA,000,013 	.WORD.	IO.ENA,000,014 	.WORD.	IO.CLN,000,007 	.WORD.	IO.ULK,000,012 	.WORD.	IO.ACR,000,015 	.WORD.	IO.ACW,000,016 	.WORD.	      IO.ACE,000,017 	.WORD.	IO.DAC,000,020 	.WORD.	IO.RVB,000,021 	.WORD.	IO.WVB,000,022 	.WORD.	IO.EXT,000,023 	.WORD.	IO.CRE,000,024 	.WORD.	IO.DEL,000,025 	.WORD.	IO.RAT,000,026 	.WORD.	IO.WAT,000,027 	.WORD.	IO.APV,010,030 	.WORD.	IO.APC,000,030 	.MACRO	FILIO$	A 	.ENDM	FILIO$  	.ENDM	FILIO$0     ÌM        	.MACRO	SPCIO$	$$$GBLO 	.MCALL	.WORD.,DEFIN$O 	.IF	IDN,<$$$GBL>,<DEF$G>A	 	...GBL=1. 	.IFFO	 	...GBL=07 	.ENDC 	.WORD.	IO.WLV,100,001 	.WORD.	IO.WLS,010,001 	.WORD.	IO.WNS,020,001       	.WORD.	IO.WAL,010,001 	.WORD.	IO.WMS,020,001 	.WORD.	IO.CCO,040,001 	.WORD.	IO.WBT,100,001 	.WORD.	IO.WLT,010,001 	.WORD.	IO.WLC,020,001 	.WORD.	IO.WPB,040,001 	.WORD.	IO.WDD,044,001 	.WORD.	IO.RLV,100,002 	.WORD.	IO.RST,001,002 	.WORD.	IO.RAL,010,002 	.WORD.	IO.RNE,020,002 	.WORD.	IO.RNC,040,002 	.WORD.	IO.RTM,200,002 	.WORD.	IO.RDB,200,002 	.WORD.	IO.RHD,010,002 	.WORD.	IO.RNS,020,002 	.WORD.	IO.CRC,040,002 	.WORD.	IO.RPB,040,002 	.WORD.	IO.ATA,010,003 	.WORD.	IO.GTS,000,005 	.WORD.	      IO.R1C,000,005 	.WORD.	IO.INL,000,005 	.WORD.	IO.TRM,010,005 	.WORD.	IO.RWD,000,005 	.WORD.	IO.SPB,020,005 	.WORD.	IO.SPF,040,005 	.WORD.	IO.STC,100,005 	.WORD.	IO.SEC,120,005 	.WORD.	IO.RWU,140,005 	.WORD.	IO.SMO,160,005 	.WORD.	IO.HNG,000,006 	.WORD.	IO.RBC,000,006 	.WORD.	IO.MOD,000,006 	.WORD.	IO.HDX,010,006 	.WORD.	IO.FDX,020,006 	.WORD.	IO.SYN,040,006 	.WORD.	IO.EOF,000,006 	.WORD.	IO.RTC,000,007 	.WORD.	IO.SAO,000,010 	.WORD.	IO.SSO,000,011 	.WORD.	IO.RPR,000,011 	.WORD.	IO.MSO,0      00,012 	.WORD.	IO.SLO,000,013 	.WORD.	IO.MLO,000,014 	.WORD.	IO.LED,000,024 	.WORD.	IO.SDO,000,025 	.WORD.	IO.SDI,000,026 	.WORD.	IO.SCS,000,026 	.WORD.	IO.REL,000,027 	.WORD.	IO.MCS,000,027 	.WORD.	IO.ADS,000,030 	.WORD.	IO.CCI,000,030 	.WORD.	IO.LOD,000,030 	.WORD.	IO.MDI,000,031 	.WORD.	IO.DCI,000,031 	.WORD.	IO.XMT,000,031 	.WORD.	IO.XNA,010,031 	.WORD.	IO.INI,000,031 	.WORD.	IO.HIS,000,032 	.WORD.	IO.RCI,000,032 	.WORD.	IO.RCV,000,032 	.WORD.	IO.CLK,000,032 	.WORD.	IO.MDO,000,033       	.WORD.	IO.CTI,000,033 	.WORD.	IO.CON,000,033 	.WORD.	IO.CPR,010,033 	.WORD.	IO.CAS,020,033 	.WORD.	IO.CRJ,040,033 	.WORD.	IO.CBO,110,033 	.WORD.	IO.CTR,210,033 	.WORD.	IO.GNI,010,035 	.WORD.	IO.GLI,020,035 	.WORD.	IO.GLC,030,035 	.WORD.	IO.GRI,040,035 	.WORD.	IO.GRC,050,035 	.WORD.	IO.GRN,060,035 	.WORD.	IO.CSM,070,035 	.WORD.	IO.CIN,100,035 	.WORD.	IO.SPW,110,035 	.WORD.	IO.CPW,120,035 	.WORD.	IO.NLB,130,035 	.WORD.	IO.DLB,140,035 	.WORD.	IO.STA,000,033 	.WORD.	IO.DTI,000,034 	.WORD.	      IO.DIS,000,034 	.WORD.	IO.MDA,000,034 	.WORD.	IO.RTI,000,035 	.WORD.	IO.CTL,000,035 	.WORD.	IO.STP,000,035 	.WORD.	IO.CNT,000,036 	.WORD.	IO.ITI,000,036 0 	.WORD.	IO.CTY,000,007 	.WORD.	IO.DTY,000,015 	.WORD.	IO.LDI,000,016 	.WORD.	IO.UDI,010,023 	.WORD.	IO.LTI,000,017 	.WORD.	IO.UTI,020,023 	.WORD.	IO.LTY,000,020 	.WORD.	IO.UTY,030,023 	.WORD.	IO.LKE,000,024 	.WORD.	IO.UER,040,023 	.WORD.	IO.NLK,000,023 	.WORD.	IO.ONL,000,037 	.WORD.	IO.FLN,000,025 	.WORD.	IO.RAD,000,021 	.WORD.	IO.M      AO,010,007 	.WORD.	IO.LEI,010,017 	.WORD.	IO.RDD,010,020 	.WORD.	IO.RMT,020,020 	.WORD.	IO.LSI,000,022 	.WORD.	IO.UEI,050,023 	.WORD.	IO.USI,060,023 	.WORD.	IO.CSI,000,026 	.WORD.	IO.DSI,000,027 	.MACRO	SPCIO$	A 	.ENDM	SPCIO$  	.ENDM	SPCIO$0     ´M        	.MACRO	UMDIO$	$$$GBLO 	.MCALL	.WORD.,DEFIN$O 	.IF IDN	<$$$GBL>,<DEF$G>Y ...GBL=1 	.IFF	 ...GBL=0 	.ENDC 	.WORD.	IQ.UMD,004,000 	.WORD.	IO.HMS,000,010 	.WORD.	IO.BLS,010,010 	.WORD.	IO.OFF,020,010 	.WORD.	IO.RDH,030,010 	.WORD.	      IO.WDH,040,010 	.WORD.	IO.WCK,050,010 	.WORD.	IO.RNF,060,010 	.WORD.	IO.RNR,070,010 	.WORD.	IO.LPC,100,010 	.WORD.	IO.ERS,110,010 	.MACRO	UMDIO$	A 	.ENDM 	.ENDM	UMDIO$0     Œ M        	.MACRO	.IOER.	SYM,LO,MSG  	DEFIN$	SYM,LO 	.IF	GT,$$MSG  	.MCALL	.IOMG. 	.IOMG.	SYM,LO,<MSG> 	.ENDC 	.ENDM	.IOER.N     ” M        	.MACRO	.QIOE.	SYM,LO,MSGF 	DEFIN$	SYM,LO 	.IF	GT,$$MSGQ 	.MCALL	.IOMG. 	.IOMG.	SYM,<LO-128.>,<MSG>	 	.ENDC 	.ENDM	.QIOE.	      M        	.MACRO	.IOMG.	SYM,LO,MSGD       	.WORD	-^O<LO> 	.ASCIZ	^MSG^K 	.EVEN' 	.IIF	LT,^O<$$$MAX+<LO>>,$$$MAX=-^O<LO>0 	.ENDM	.IOMG.	     V M        	.MACRO	.WORD.	SYM,LO,HI 	DEFIN$	SYM,<HI*400+LO>N 	.ENDM	.WORD.      žM        	.MACRO	SNPDF$	GBL 	.IF IDN	<GBL>,<DEF$G>7 	.GLOBL	SB.CTL,SB.DEV,SB.UNT,SB.EFN,SB.ID,SB.LM1,SB.PMD 1 	.GLOBL	SC.HDR,SC.LUN,SC.OVL,SC.STK,SC.WRD,SC.BYTM 	.ENDC
 SB.CTL = 0
 SB.DEV = 2
 SB.UNT = 4
 SB.EFN = 6 SB.ID  = ^O<10>- SB.LM1 = ^O<12>N SB.PMD = ^O<32>	
 SC.HDR = 1
 SC.LUN = 2
 SC.OVL = 4 SC.STK = ^      O<10>D SC.WRD = ^O<20>	 SC.BYT = ^O<40>. 	.MACRO	SNPDF$	X 	.ENDM 	.ENDM	SNPDF$.     œM       : 	.MACRO	SNPBK$	DEV,UNIT,CTL,EFN,ID,L1,H1,L2,H2,L3,H3,L4,H4 	.IF DF	..SPBK 	.IIF NE	<..SPBK-.>,	.MEXITR 	.ENDC 	.MCALL	SNPDF$ 	SNPDF$$ ..SPBK::.WORD	CTLS 	.ASCII	/DEV/. 	.IF NE	.-<..SPBK+SB.DEV+2>L% 	.ERROR		;INVALID DEVICE NAME ''DEV''S 	.MEXIT. 	.ENDC 	.BYTE	UNIT,0V
 	.WORD	EFN	 	.WORD	IDN 	.WORD	L1,H1 	.WORD	L2,H2 	.WORD	L3,H3 	.WORD	L4,H4 	.RAD50	/PMD.../ 	.ENDM	SNPBK$L     PM             < 	.MACRO	SNAP$	CTL,EFN,ID,L1,H1,L2,H2,L3,H3,L4,H4,?LBL1,?LBL2* 	.MCALL	SNPDF$,WTSE$S,SDAT$S,RQST$S,CLEF$S 	SNPDF$$% 	.IIF NB	<CTL>,	MOV	CTL,..SPBK+SB.CTLL% 	.IIF NB	<EFN>,	MOV	EFN,..SPBK+SB.EFN." 	.IIF NB	<ID>,	MOV	ID,..SPBK+SB.ID ...SNP = SB.LM1:! 	.IRP	X,<L1,H1,L2,H2,L3,H3,L4,H4>	 	.IF NB	<X>D 	MOV	X,..SPBK+...SNP 	.ENDC ...SNP = ...SNP+2. 	.ENDM 	CLEF$S	..SPBK+SB.EFN 	 	BCS	LBL2  	SDAT$S	#..SPBK+SB.PMD,#..SPBK	 	BCS	LBL2O 	RQST$S	#..SPBK+SB.PMD	 	BCC	LBL1D 	CMP	#IE.ACT,@#$DSW 	 	BEQ	LBL1        	SEC 	BR	LBL2 LBL1:	WTSE$S	..SPBK+SB.EFN LBL2:, 	.ENDM	SNAP$     M        .MACRO	ISTAT$	STTBL,KEYTBL 	.MCALL	MTRAN$ 	.IF	DF	$RONLY 	.PSECT	$STATE,D,ROI 	.IFFF 	.PSECT	$STATE,D 	.ENDC STTBL::B 	.IF	DF	$RONLY 	.PSECT	$KTAB,D,RO 	.IFF: 	.PSECT	$KTAB,DL 	.ENDC KEYTBL:: 	.IF	DF	$RONLY 	.PSECT	$KSTR,D,RO 	.IFFC 	.PSECT	$KSTR,D+ 	.ENDC 	$$$KEY = -1 	$$$FLG = -1
 	$EXIT = 0 	$LAMDA = 300+ 	$NUMBR = 302  	$STRNG = 304S 	$BLANK = 306P 	$SUBXP = 310  	$EOS   = 312$ 	$DNUMB = 314        	$RAD50 = 3162 	$ANY   = 320. 	$ALPHA = 322B 	$DIGIT = 324A 	.PSECT  .ENDM	ISTAT$     ž M        .MACRO	STATE$	LABEL$ 	.PSECT	$STATE 	$$$FLG = $$$FLG!200 	MTRAN$  	.IF	NB	LABELD LABEL: 	.ENDC 	$$$FLG = -1 	.PSECTS .ENDM	STATE$     ‚M       ( .MACRO	TRAN$	TYPE,LABEL,ACTION,MASK,ADDR 	.PSECT	$STATE 	MTRAN$F 	.IF	NB	ACTION 	$$$FLG = $$$FLG!2 	.MACRO	$$$ACT 	.WORD	ACTION0 	.ENDM	$$$ACT+ 	.ENDC 	.IF	NB	MASK 	$$$FLG = $$$FLG!30  	.IF	B	ADDR " 	.ERROR	"MASK ADDRESS NOT PRESENT" 	.      ENDC 	.MACRO	$$$BIT 	.WORD	MASK,ADDR 	.ENDM	$$$BITI 	.ENDC 	.IF	NB	LABELD 	$$$FLG = $$$FLG!4 	$$$STA = LABELA 	.ENDC 	.IRPC	X,<TYPE>E 	.IF	IDN	<X>,<"> 	.PSECT	$KSTR  	$$$TMP = .D 	.ASCII	TYPE<377>$ 	.PSECT	$KTABS 	.WORD	$$$TMPT 	.MACRO	$$$TYP 	.BYTE	$$$KEY!200T 	.ENDM	$$$TYPN 	$$$KEY = $$$KEY+1 	.IF	GT	$$$KEY-63. 	.ERROR	"TOO MANY KEYWORDS"G 	.ENDC 	.MEXITT 	.ENDC 	.IF	IDN	<X>,<!> 	$$$FLG = $$$FLG!1 	.MACRO	$$$EXT 	.WORD	0'TYPE  	.ENDM	$$$EXT. 	.MACRO	$$$TYP 	.BYTE	$SUBXP" 	.      ENDM	$$$TYPR 	.MEXIT  	.ENDC 	.MACRO	$$$TYP 	.BYTE	TYPEN 	.ENDM	$$$TYPE 	.MEXITL 	.ENDM 	.PSECT$ .ENDM	TRAN$      xM        .MACRO	MTRAN$N 	.PSECT	$STATE 	.IF	EQ	$$$FLG+1 	$$$FLG = 0	 	.MEXIT$ 	.ENDC 	$$$TYP  	.BYTE	$$$FLG  	.IF	NE	$$$FLG&1 	$$$EXTE 	.ENDC 	.IF	NE	$$$FLG&2 	$$$ACT$ 	.ENDC 	.IF	NE	$$$FLG&10  	$$$BITT 	.ENDC 	.IF	NE	$$$FLG&4 	.WORD	$$$STAN 	.IFFF 	.IF	EQ	$$$FLG&200  	.ERROR	"BAD DEFAULT TRANSITION" 	.ENDC 	.ENDC 	$$$FLG = 0. .ENDM	MTRAN$     M              	.MACRO	TTSYM$	$$$GBL  	.MCALL	DEFIN$	 	...GBL=0Y 	.IF	IDN,<$$$GBL>,<DEF$G>.	 	...GBL=1N 	.ENDC 	DEFIN$	TC.WID,1.  	DEFIN$	TC.LPP,2.M 	DEFIN$	TC.RSP,3.C 	DEFIN$	TC.XSP,4.$ 	DEFIN$	TC.STB,5.	 	DEFIN$	TC.ISL,6.  	DEFIN$	TC.RAT,7.$ 	DEFIN$	TC.TTP,8.G 	DEFIN$	TC.SCR,9.C 	DEFIN$	TC.SCP,10. 	DEFIN$	TC.HFL,11. 	DEFIN$	TC.VFL,12. 	DEFIN$	TC.NL ,13. 	DEFIN$	TC.SFF,14. 	DEFIN$	TC.HFF,15. 	DEFIN$	TC.LVF,16. 	DEFIN$	TC.HHT,17. 	DEFIN$	TC.NST,18. 	DEFIN$	TC.BSP,19. 	DEFIN$	TC.ACR,20. 	DEFIN$	TC      .SMR,21. 	DEFIN$	TC.SMP,22. 	DEFIN$	TC.SMO,23. 	DEFIN$	TC.CCF,24. 	DEFIN$	TC.ALT,25. 	DEFIN$	TC.IMG,26. 	DEFIN$	TC.NKB,27. 	DEFIN$	TC.NPR,28. 	DEFIN$	TC.ESQ,29. 	DEFIN$	TC.LCP,30. 	DEFIN$	TC.PAR,31. 	DEFIN$	TC.EPA,32. 	DEFIN$	TC.DLU,33. 	DEFIN$	TC.BLK,34. 	DEFIN$	TC.FRM,35. 	DEFIN$	TC.HLD,36. 	DEFIN$	TC.TAP,37. 	DEFIN$	TC.CEQ,38. 	DEFIN$	TC.NEC,39. 	DEFIN$	TC.SLV,40. 	DEFIN$	TC.PRI,41. 	DEFIN$	TC.UC0,42. 	DEFIN$	TC.UC1,43. 	DEFIN$	TC.UC2,44. 	DEFIN$	TC.UC3,45. 	DEFIN$	TC.UC4,46. 	D      EFIN$	TC.UC5,47. 	DEFIN$	TC.UC6,48. 	DEFIN$	TC.UC7,49. 	DEFIN$	TC.UC8,50. 	DEFIN$	TC.UC9,51. 	DEFIN$	TC.MAX,52. 	DEFIN$	SE.ICN,1.N 	DEFIN$	SE.FIX,2.N 	DEFIN$	SE.BIN,3.N 	DEFIN$	SE.VAL,4.N 	DEFIN$	SE.TER,5.N 	DEFIN$	SE.SPD,6.N 	DEFIN$	SE.SPL,7.N 	DEFIN$	SE.PAR,8.N 	DEFIN$	SE.LPR,9.N 	DEFIN$	SE.NSC,10. 	DEFIN$	SE.UPN,11. 	DEFIN$	SE.NIH,12. 	DEFIN$	SF.SSC, 2400!020 	DEFIN$	SF.SMC, 2400!040 	DEFIN$	SF.RDF, 2400!060 	DEFIN$	SF.STT, 2400!100 	DEFIN$	SF.STS, 2400!120 	DEFIN$	SF.GSC, 2400!140       	DEFIN$	SF.GMC, 2400!160 	DEFIN$	SF.GAC, 2400!200 	DEFIN$	SF.SAC, 2400!220 	DEFIN$	SF.DEF, 010D 	DEFIN$	S.0   ,1.D 	DEFIN$	S.50  ,2.D 	DEFIN$	S.75  ,3.D 	DEFIN$	S.100 ,4.D 	DEFIN$	S.110 ,5.D 	DEFIN$	S.134 ,6.D 	DEFIN$	S.150 ,7.D 	DEFIN$	S.200 ,8.D 	DEFIN$	S.300 ,9.D 	DEFIN$	S.600 ,10. 	DEFIN$	S.1200,11. 	DEFIN$	S.1800,12. 	DEFIN$	S.2000,13. 	DEFIN$	S.2400,14. 	DEFIN$	S.3600,15. 	DEFIN$	S.4800,16. 	DEFIN$	S.7200,17. 	DEFIN$	S.9600,18. 	DEFIN$	S.EXTA,19. 	DEFIN$	S.EXTB,20. 	DEFIN$	T.      UNK0,0.N 	DEFIN$	T.AS33,1.  	DEFIN$	T.KS33,2.0 	DEFIN$	T.AS35,3.C 	DEFIN$	T.L30S,4.	 	DEFIN$	T.L30P,5.N 	DEFIN$	T.LA36,6.N 	DEFIN$	T.VT05,7.N 	DEFIN$	T.VT50,8.N 	DEFIN$	T.VT52,9.N 	DEFIN$	T.VT55,10. 	DEFIN$	T.VT61,11. 	DEFIN$	T.L180,12. 	DEFIN$	T.SCR0,13. 	DEFIN$	T.USR0,14. 	DEFIN$	T.USR1,T.USR0+12 	DEFIN$	T.USR2,T.USR1+1. 	DEFIN$	T.USR3,T.USR2+1F 	DEFIN$	T.USR4,T.USR3+1. 	DEFIN$	F1.ACR,0000010 	DEFIN$	F1.BTW,000002. 	DEFIN$	F1.BUF,000004D 	DEFIN$	F1.UIA,000010N 	DEFIN$	F1.CCO,000020.       	DEFIN$	F1.ESQ,0000403 	DEFIN$	F1.HLD,0001000 	DEFIN$	F1.LWC,000200D 	DEFIN$	F1.RNE,000400N 	DEFIN$	F1.RPR,001000. 	DEFIN$	F1.RST,0020005 	DEFIN$	F1.RUB,004000N 	DEFIN$	F1.SYN,010000D 	DEFIN$	F1.TRW,020000N 	DEFIN$	F1.UTB,040000. 	DEFIN$	F1.VBF,1000000 	DEFIN$	F2.SCH,000001. 	DEFIN$	F2.GCH,000002+ 	DEFIN$	F2.DCH,000004R 	DEFIN$	F2.DKL,000010U 	DEFIN$	F2.ALT,000020T 	DEFIN$	F2.SFF,000040R 	DEFIN$	TF.RST,001 	DEFIN$	TF.BIN,002 	DEFIN$	TF.RAL,010 	DEFIN$	TF.RNE,020 	DEFIN$	TF.RNC,040 	D      EFIN$	TF.XOF,100 	DEFIN$	TF.TMO,200 	DEFIN$	TF.WAL,010 	DEFIN$	TF.WMS,020 	DEFIN$	TF.CCO,040 	DEFIN$	TF.WBT,100) 	DEFIN$	TF.SYN,200	;	   SYNCHRONOUS WRITEB 	DEFIN$	TF.AST,010 	DEFIN$	TF.ESQ,020 	.MACRO	TTSYM$	A 	.ENDM 	.ENDM	TTSYM$      M        	.MACRO	FHDOF$	GLOBAL0 	.MCALL	FHDO1$	 	...GBL=0+ 	.IF	B,GLOBALH 	FHDO1$	DEF$LN 	.IFFL 	.IF	IDN,<GLOBAL>,<DEF$G>0	 	...GBL=1N 	.ENDC 	FHDO1$	GLOBAL 	.ENDC 	.IF	DIF,<GLOBAL>,<DEF$N>D 	.MACRO	FHDOF$	ARG1F 	.ENDM	FHDOF$  	.ENDC 	.ENDM	FHDOF      $F     .M        	.MACRO	FHDO1$	OFFSETN 	.MCALL	DEF$I,OFFSET,DEFIN$0 	.IF	DF,H.FPRO 	.ERRORD 	.ENDC 	DEF$I	0 	OFFSET	H.IDOF,1 	OFFSET	H.MPOF,1 	OFFSET	H.FNUM,2 	OFFSET	H.FSEQ,2 	OFFSET	H.FLEV,2 	OFFSET	H.FOWN 	OFFSET	H.PROG,1 	OFFSET	H.PROJ,1 	OFFSET	H.FPRO,2 	DEFIN$	FP.RDV,1 	DEFIN$	FP.WRV,2 	DEFIN$	FP.EXT,4 	DEFIN$	FP.DEL,10L 	DEFIN$	FP.RAT,1 	OFFSET	H.FCHA 	OFFSET	H.UCHA,1 	DEFIN$	UC.CON,200 	DEFIN$	UC.DLK,100 	OFFSET	H.SCHA,1 	DEFIN$	SC.MDL,200 	DEFIN$	SC.BAD,100 	OFFSET	      H.UFAT,32. 	OFFSET	S.HDHD 	DEF$I	0 	OFFSET	I.FNAM,6 	OFFSET	I.FTYP,2 	OFFSET	I.FVER,2 	OFFSET	I.RVNO,2 	OFFSET	I.RVDT,7 	OFFSET	I.RVTI,6 	OFFSET	I.CRDT,7 	OFFSET	I.CRTI,6 	OFFSET	I.EXDT,7
 	OFFSET	,1 	OFFSET	S.IDHD 	DEFIN$	I.DASZ,7 	DEFIN$	I.TISZ,6 	DEF$I	0 	OFFSET	M.ESQN,1 	OFFSET	M.ERVN,1 	OFFSET	M.EFNU,2 	OFFSET	M.EFSQ,2 	OFFSET	M.CTSZ,1 	OFFSET	M.LBSZ,1 	OFFSET	M.USE,1. 	OFFSET	M.MAX,1C 	OFFSET	M.RTRV 	OFFSET	S.MPHD 	DEFIN$	H.CKSM,510.N 	.IF	DIF,<OFFSET>,<DEF$N>D 	.MACRO	FHDO      1$	ARG13 	.ENDM	FHDO1$D 	.ENDC 	.ENDM	FHDO1$.     M        	.MACRO	HMBOF$	GLOBAL2 	.MCALL	HMBO1$	 	...GBL=0	 	.IF	B,GLOBALE 	HMBO1$	DEF$LF 	.IFFR 	.IF	IDN,<GLOBAL>,<DEF$G>F	 	...GBL=17 	.ENDC 	HMBO1$	GLOBAL 	.ENDC 	.IF	DIF,<GLOBAL>,<DEF$N>I 	.MACRO	HMBOF$	ARG1E 	.ENDM	HMBOF$F 	.ENDC 	.ENDM	HMBOF$.     ÒM        	.MACRO	HMBO1$	OFFSET1 	.MCALL	DEF$I,OFFSET,DEFIN$. 	DEF$I	0 	OFFSET	H.IBSZ,2 	OFFSET	H.IBLB,4 	OFFSET	H.FMAX,2 	OFFSET	H.SBCL,2 	OFFSET	H.DVTY,2 	OFFSET	H.VLEV,2       	OFFSET	H.VNAM,12.
 	OFFSET	,4 	OFFSET	H.VOWN,2 	OFFSET	H.VPRO,2 	OFFSET	H.VCHA,2 	OFFSET	H.DFPR,2 	.IF	DF,H.FPRO 	.ERRORG 	.ENDC 	H.FPRO = H.DFPR 	.IF	DF,R$$11M 	OFFSET	H.VFSQ,2 	.IFF=
 	OFFSET	,2 	.ENDC
 	OFFSET	,4 	OFFSET	H.WISZ,1 	OFFSET	H.FIEX,1 	OFFSET	H.LRUC,1 	OFFSET	,11. 	OFFSET	H.CHK1,2 	OFFSET	H.VDAT,14. 	OFFSET	,398.M 	OFFSET	H.INDN,12. 	OFFSET	H.INDO,12. 	OFFSET	H.INDF,12.
 	OFFSET	,2 	OFFSET	H.CHK2,2 	.IF	DIF,<OFFSET>,<DEF$N>. 	.MACRO	HMBO1$	ARG1Y 	.ENDM	HMBO1$L 	.EN      DC 	.ENDM	HMBO1$.     ú M        	.MACRO	CSI$1 CSBLK,BUFF,LEN 	.GLOBL	.CSI1A 	.MCALL	CSI$,LDR0$ 	.IF NDF C.SIZE  	CSI$G 	.ENDC 	LDR0$	CSBLK 	.IF NB	<BUFF> 	MOV	BUFF,C.CMLD+2(R0) 	.ENDC 	.IF NB	<LEN>N 	MOV	LEN,C.CMLD(R0)E 	.ENDC 	JSR	PC,.CSI1I 	.ENDM     ‚M        	.MACRO	CSI$2 CSBLK,IO,SWTAB 	.GLOBL	.CSI21 	.MCALL	CSI$,LDR0$ 	.IF NDF C.SIZE. 	CSI$E 	.ENDC 	LDR0$	CSBLK 	.IF NB	<IO> 	.IF IDN	<INPUT>,<IO>2 	MOVB	#CS.INP,(R0) 	.IFFN 	.IF IDN	<OUTPUT>,<IO> 	MOVB	#CS.OUT,(R0)       	.IFF.# 	.ERROR	;INCORRECT REQUEST TO .CSI2R 	.ENDC 	.ENDC 	.ENDC 	.IF NB	<SWTAB>. 	MOV	SWTAB,C.SWAD(R0)N 	.ENDC 	JSR	PC,.CSI2N 	.ENDM     VM       , 	.MACRO	CSI$SW	SW,MK,MKW,CLR,NEGS,VALTAB,LNG	 	.IF	B,SWM 	.ERROR	;MISSING SWITCH NAME 	.IFFC 	.EVEN 	.NCHR	SIZ$$,SW  	.IF	GT,SIZ$$-2$
 	.IF	B,LNG 	SIZ$$=2 	.ENDC 	.ENDC 	CNT$$=0 	.IRPC	CHR$$$,SW 	CHR$$=''CHR$$$N 	CNT$$=CNT$$+1 	.IF	GE,<CHR$$-<'A+^O40>>N 	.IF	LE,<CHR$$-<'Z+^O40>>R 	CHR$$=CHR$$-^O40N 	.ENDC 	.ENDC 	.IF	LE,CNT$$-SIZ$      $. 	$$=0. 	.IF	NB,LNGE 	.IF	IDN,<LNG>,<EXACT> 	.IF	GT,CNT$$&1N 	.IF	GE,CNT$$+1-SIZ$$M	 	$$=^O200S 	.ENDC 	.IFFC 	.IF	LT,CNT$$-SIZ$$N	 	$$=^O200  	.ENDC 	.ENDC 	.IFFW 	.IF	IDN,<LNG>,<LONG>T 	.IF	EQ,CNT$$&1M 	.IF	LT,CNT$$-SIZ$$I	 	$$=^O200. 	.ENDC 	.ENDC 	.IFFZ- 	.ERROR		;ILLEGAL "LONG" OR "EXACT" SPECIFIER  	.ENDC 	.ENDC 	.ENDC 	.BYTE	CHR$$!$$W 	.ENDC 	.ENDM 	.EVEN 	.ENDC
 	.IF	NB	MK	 	.WORD	MK^ 	.IFF  	.WORD	0 	.ENDC $$=0 	.IF	NB	CLRR 	.IF	IDN	<CLEAR>,<CLR> $$=1 	.IFF$ 	.IF      	IDN	<SET>,<CLR> 	.IFFE 	.ERROR	;INVALID SET/CLEAR SPEC, 	.ENDC 	.ENDC 	.ENDC 	.WORD	MKW+$$O $$=0 	.IF	NB	NEGS 	.IF	IDN	<NEG>,<NEGS>  $$=1 	.IFF. 	.ERROR	;INVALID NEGATE SPEC 	.ENDC 	.ENDC 	.WORD	VALTAB+$$ 	.ENDM     4 M        	.MACRO	CSI$ND 	.WORD	0 	.ENDM     $M       # 	.MACRO	CSI$SV	TYPE,ADDR,LEN,VALTAB. 	.IF	NB	VALTAB VALTAB:$ 	.ENDC 	.IF	NB	TYPE 	.IF	IDN	<ASCII>,<TYPE>K 	.BYTE	1 	.IFFF 	.IF	IDN	<NUMERIC>,<TYPE>  	.BYTE	2 	.IFFF 	.IF	IDN	<OCTAL>,<TYPE>  	.BYTE	2       	.IFF< 	.IF	IDN	<DECIMAL>,<TYPE>	 	.BYTE	3 	.IFFR  	.ERROR	;INVALID CONVERSION TYPE 	.ENDC 	.ENDC 	.ENDC 	.ENDC 	.IFFI 	.BYTE	1 	.ENDC 	.IF	NB	LEN 
 	.BYTE	LEN 	.IFFG 	.ERROR	;LENGTH MISSING  	.BYTE	0 	.ENDC 	.IF	NB	ADDR 	.WORD	ADDR. 	.IFFS 	.ERROR	;VALUE ADDRESS MISSING 	.WORD	0 	.ENDC 	.ENDM     | M        	.MACRO	LDR0$	ARG  	.IIF	B,ARG,.MEXIT 	.NTYPE	PAR$$$,ARG 	.IIF	EQ,PAR$$$,.MEXIT 	MOV	ARG,R0. 	.ENDM     M        	.MACRO	CSI$	GBL 	.IF IDN <GBL>,<DEF$G>E .GLOBL	C.T      YPR,C.STAT,C.CMLD,C.DEVD,C.DIRD,C.FILD,C.SWAD,C.MKW1,C.MKW2O" .GLOBL	C.SIZE,C.DSDS,CS.INP,CS.OUT0 .GLOBL	CS.NMF,CS.DIF,CS.DVF,CS.WLD,CS.MOR,CS.EQU 	.ENDC	 C.TYPR	=0E	 C.STAT	=1G	 C.CMLD	=2L	 C.DEVD	=6N C.DIRD	=^O<12> C.FILD	=^O<16> C.SWAD	=^O<22> C.MKW1	=^O<24> C.MKW2	=^O<26> C.SIZE	=^O<54> C.DSDS	=C.DEVD	 CS.INP	=1 	 CS.OUT	=2.	 CS.NMF	=1		 CS.DIF	=2		 CS.DVF	=4T CS.WLD	=^O<10> CS.MOR	=^O<20> CS.EQU	=^O<40> 	.MACRO	CSI$	X 	.ENDM	CSI$  	.ENDM	CSI$R     LM       @ 	.MACRO	GCMLB$	MAXD,PRMPT,      UBUF,LUN,PDL,SIZE=80.,?PDL1,?DFNB,?BUF1 	.MCALL	FDBDF$,FDAT$A,FDOP$A,NMBLK$,FDBF$A,CBYTE$, 	FDBDF$G	 	FDAT$A	2, 	.IF NB	<LUN>S 	FDOP$A	LUN,,DFNB  	.IFF  	FDOP$A	1,,DFNBT 	.ENDC 	FDBF$A	,,1E% 	CBYTE$	<FD.TTY!FD.REC!FD.CCL>,F.RCTL  	.MCALL	GCMLD$ 	GCMLD$O 	.BYTE	0 	.IF LE	<SIZE-80.>" 	.BYTE	GE.COM!GE.IND!GE.CLO!GE.SIZ 	.IFF=) 	.BYTE	GE.COM!GE.IND!GE.CLO!GE.CON!GE.SIZW 	.ENDC 	.BLKW	4 	.BYTE	-1,MAXD 	.IF B	<PDL> 	.WORD	PDL1. 	.IFFI
 	.WORD	PDL 	.ENDC 	.IF NB <UBUF> 	.WORD	UBUF$ 	.IFFR
 	.      WORD	BUF 	.ENDC $$$=.P 	.ASCII	<15><12> 	.IF NB	<PRMPT>$ 	.ASCII	/PRMPT>/ 	.IFFY 	.ASCII	/   >/ 	.ENDC .=$$$+6N DFNB:	NMBLK$	CMI,CMD 	.WORD	SIZE  G.LPDL=<MAXD+1>*<6+<5*2>>  	.IF B	<PDL> PDL1:	.BLKB	G.LPDL 	.ENDC 	.IF B	<UBUF>C BUF:	.BLKB	SIZE+2. 	.ENDC 	.ENDM	GCMLB$Z      M        	.MACRO	GCML$	NAME,ADPR,LNPR 	.MCALL	GCMLD$,LDR0$ 	GCMLD$	DEF$LN 	LDR0$	NAMEN 	.IF NB	<LNPR> 	MOV	LNPR,G.PSDS(R0) 	.IIF B	<ADPR>, .ERROR& 	.IIF NB	<ADPR>,	MOV	ADPR,G.PSDS+2(R0) 	.ENDC 	.IIF B	<LNPR>      ,	CLR	G.PSDS(R0) 	.GLOBL	.GCML1 	JSR	PC,.GCML1 	.ENDM	GCML$     r M        	.MACRO	RCML$	NAME 	.MCALL	LDR0$$ 	LDR0$	NAMEM 	.GLOBL	.GCML2 	JSR	PC,.GCML2 	.ENDM	RCML$     p M        	.MACRO	CCML$	BLK. 	.MCALL	LDR0$.
 	LDR0$	BLK 	.GLOBL	.GCML3 	JSR	PC,.GCML3 	.ENDM	CCML$       M        	.MACRO	GCMLD$	GBL 	.IF NDF	S.FDB 	.MCALL	FDBSZ$ 	FDBSZ$E 	.ENDC 	.MCALL	GCML$D 	GCML$D	GBLM 	.MACRO	GCMLD$	X 	.ENDM 	.ENDM	GCMLD$R     M        	.MACRO	GCML$D	GBL 	.IF IDN	<GBL>,<DEF$G>"       	.GLOBL	G.ERR,G.MODE,G.PSDS,G.CMLD0 	.GLOBL	GE.COM,GE.IND,GE.CLO,GE.LC,GE.CON,GE.SIZ* 	.GLOBL	GE.IOR,GE.OPR,GE.BIF,GE.MDE,GE.EOF 	.ENDC G.ERR	= S.FDBR G.MODE	= G.ERR+1 G.PSDS	= G.ERR+2 G.CMLD	= G.ERR+6 G.ISIZ	= 16. G.DPRM	= G.ERR+G.ISIZ  G.SIZE	= G.DPRM+6+S.FNBG
 GE.COM	= 1
 GE.IND	= 2
 GE.CLO	= 4
 GE.LC	= 10 GE.CON	= 20F GE.SIZ	= 40. GE.IOR	= -1  GE.OPR	= -2N GE.BIF	= -3C GE.MDE	= -4	 GE.EOF	= -10.C GE.RBG	= -40.  	.MACRO	GCML$D	X 	.ENDM 	.ENDM	GCML$D	     ÜM       . 	.MACRO	PRINT$ F      DB,ERR,?LBL,A,B,C,D,E,F,?LBL2  	.MCALL	CALL,CLOSE$,LDR0$,GLUN$S% 	LDR0$	FDB		;LOAD FDB ADDRESS INTO R0. 	TST	F.BDB(R0) 	BEQ	LBL 	MOV	R1,-(SP)  	MOV	R2,-(SP)= 	MOV	R3,-(SP)S/ 	MOV	SP,R1		;SAVE POINTER TO END OF SEND BUFFERM/ 	SUB	#<8.*2>,SP	;ALLOCATE A GET LUN INFO BUFFERM
 	MOV	SP,R2 	MOVB	F.LUN(R0),R3 	GLUN$S	R3,R2N% 	MOV	G.LUCW(R2),R3	;SAVE CHAR. WORD 1O 	MOV	R0,R2		;COPY FDB ADDRESS=4 	ADD	#F.FNB+N.DID+6,R2 ;POINT TO END OF DIRECTORY ID$ 	MOV	-(R2),-(R1)	; PUSH DIRECTORY ID 	MOV	-(R2),-(R1)	;       	MOV	-(R2),-(R1)	;/ 	ADD	#N.FID+6-N.DID,R2 ;POINT TO END OF FILE IDL 	MOV	-(R2),-(R1)	;PUSH FILE ID 	MOV	-(R2),-(R1)	; 	MOV	-(R2),-(R1)	;' 	CLRB	-(R1)		;CLEAR LUN INFO FLAGS BYTEM@ 	ADD	#N.FVER+2-N.FID,R2 ;POINT TO END OF FILENAME, TYPE, VERSION* 	MOV	-(R2),-(SP)	;PUSH FILE VERSION NUMBER  	MOV	-(R2),-(SP)	;PUSH FILE TYPE 	MOV	-(R2),-(SP)	;PUSH FILENAMEW 	MOV	-(R2),-(SP)	; 	MOV	-(R2),-(SP)	;' 	MOV	SP,R1		;SET POINTER TO SEND BUFFERI 	CLOSE$	R0		;CLOSE FILER	 	BCS	LBL2I: 	BIT	#FD.REC!FD.OSP,R3 ;RECORD       ORIENTED OR SPOOLED DEVICE? 	BNE	LBL2		;IF NE YESO 	MOV	R0,R2		;SAVE FDB ADDRESSR# 	MOV	#^RPRT,R0	;GET "PRT" IN RAD-50 , 	CALL	$DSPAT		;SEND DATA TO ...PRT OR PRT...$ 	MOV	R0,F.ERR(R2)	;GET RETURN STATUS  	MOV	R2,R0		;RESTORE FDB ADDRESS LBL2:	ROR	R1		;SAVE CARRY; 	ADD	#<13.*2>,SP	;CLEAN STACK- 	ROL	R1		;RESTORE CARRYE 	MOV	(SP)+,R3S 	MOV	(SP)+,R2M 	MOV	(SP)+,R1- 	.IF NB	ERR- 	BCC	LBL	 	CALL	ERR, 	.ENDC LBL: 	.ENDM	PRINT$E     ôM        	.MACRO	COMDF$	DEF 	.NLIST# 	.IF	IDN	<DEF>,<DEF$G>      8 .GLOBL	B.OT,B.UN,B.RC,B.RN,B.RP,B.RU,B.NA,B.UA,B.MN,B.MX .GLOBL	CT.IN,CT.CN,LB.N,LB.E .GLOBL	NT.IN,NT.NS .GLOBL	CR.UR,CR.NR,CR.MXD .GLOBL	CR.N0,CR.N1,CR.N2,CR.N3,CR.N4,CR.N5,CR.N6,CR.N9,CR.N10,CR.N11 .GLOBL	CR.N7,CR.N8 .GLOBL	CR.DI,CR.DT,CR.DA" .GLOBL	IA.ISM,IA.ABO,IA.DIS,IA.NFW .GLOBL	CN.IN,CN.OU,CN.UT,CN.NTB .GLOBL	OB.TA,OB.FS,OB.SQ,OB.BO,OB.TC,OB.RD,OB.RA,OB.ND,OB.DD,OB.BM< .GLOBL	OB.TH,OB.TB,OB.TI,OB.CR,OB.LP,OB.PR,OB.PP,OB.PL,OB.MT* .GLOBL	OB.DT,OB.CS,OB.CP,OB.FH,OB.MH,OB.FL 	.ENDC	 	B.OT	=	0>      	 	B.UN	=	1O 	B.RC	=	B.OT+2 	B.RN	=	B.RC+2 	B.RP	=	B.RN+4 	B.RU	=	B.RP+4 	B.NA	=	B.RU+4 	B.UA	=	B.NA+2 	B.MN	=	B.UA 	B.MX	=	B.MN+10O 	NT.IN	=	101
 	NT.NS	=	1
 	CR.UR	=	2
 	CR.NR	=	3
 	CR.MX	=	6 		CR.N0	=	0. 		CR.N1	=	1O 		CR.N2	=	2T 		CR.N3	=	3L 		CR.N4	=	4O 		CR.N5	=	5W 		CR.N6	=	6N 		CR.N7	=	7C 		CR.N8	=	8. 		CR.N9	=	11 		CR.N10	=	12O 		CR.N11	=	13D
 	CR.DI	=	4
 	CR.DT	=	5
 	CR.DA	=	6 	LB.N=0O 	LB.E=2R
 	CT.IN	=	0
 	CT.CN	=	1 	IA.ABO	=	-5 	IA.DIS	=	-7 	IA.NFW	=	177673 	IA.ISM	=	      1 
 	CN.IN	=	1
 	CN.OU	=	2
 	CN.UT	=	4 	CN.NT	=	10	
 	OB.TA	=	0
 	OB.FS	=	1
 	OB.SQ	=	2
 	OB.BO	=	3
 	OB.TC	=	4
 	OB.RD	=	5
 	OB.RA	=	6
 	OB.ND	=	7 	OB.DD	=	10S 	OB.BM	=	11= 	OB.TH	=	203 	OB.TB	=	21  	OB.TI	=	22  	OB.CR	=	23  	OB.LP	=	24  	OB.PR	=	25  	OB.PP	=	26  	OB.PL	=	27  	OB.MT	=	30  	OB.DT	=	31  	OB.CS	=	32  	OB.CP	=	33  	OB.FH	=	34O 	OB.MH	=	351 	OB.FL	=	364 	.MACRO	COMDF$	A 	.ENDM 	.LIST 	.ENDM     "M        	.MACRO	RDBDF$	GBL 	.MCALL	.BLKW.,.BLK. 	.BLK. 	.BLKW.	1,R.GI      D,GBLC 	.BLKW.	1,R.GSIZ,GBL 	.BLKW.	2,R.GNAM,GBL 	.BLKW.	2,R.GPAR,GBL 	.BLKW.	1,R.GSTS,GBL 	.BLKW.	1,R.GPRO,GBL 	.BLKW.	0,R.GLGH,GBL 	.IF IDN	<DEF$G>,<GBL>1 	.GLOBL	RS.CRR,RS.UNM,RS.MDL,RS.NDL,RS.ATT,RS.NEX=# 	.GLOBL	RS.DEL,RS.EXT,RS.WRT,RS.RED. 	.ENDC RS.CRR=^O<100000>. RS.UNM=^O<40000> RS.MDL=^O<200> RS.NDL=^O<100> RS.ATT=^O<40>  RS.NEX=^O<20>O RS.DEL=^O<10>. RS.EXT=^O<4> RS.WRT=^O<2> RS.RED=^O<1> 	.MACRO	RDBDF$	X 	.ENDM 	.ENDM	RDBDF$$     ¬ M       " 	.MACRO	RDBBK$	SIZ,NAM,PAR,STS      ,PRO 	.MCALL	RDBDF$,R50$G 	RDBDF$W 	.WORD	0
 	.WORD	SIZ	 	R50$	NAMG	 	R50$	PAR	
 	.WORD	STS
 	.WORD	PRO 	.ENDM	RDBBK$L     ¨ M        	.MACRO	ATRG$	RDBB 	.MCALL	OFF$ 	.IF NDF	$$$GLBL 	.BYTE	57.,2
 	.WORD	RDB 	.ENDC 	.IF NDF	A.TRBAT 	OFF$. 	OFF$	A.TRBA,2 	.ENDC 	.ENDM	ATRG$     ¼ M        	.MACRO	ATRG$C	RDB,CS,ERRA 	.MCALL	ATRG$,DIR$ 	.IF NDF	$$$GLB< 	.PSECT	$DPB$$ $$$=.W 	.IFTF
 	ATRG$	RDB 	.IFTA
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	ATRG$C      † M        	.MACRO	ATRG$S      	RDB,ERR 	.MCALL	DIR$,MOV$ 	 	MOV$	RDB. 	MOV	(PC)+,-(SP) 	.BYTE	57.,2
 	DIR$	,ERR 	.ENDM	ATRG$SO     ¨ M        	.MACRO	CRRG$	RDB  	.MCALL	OFF$ 	.IF NDF	$$$GLB	 	.BYTE	55.,2
 	.WORD	RDB 	.ENDC 	.IF NDF	C.RRBA. 	OFF$. 	OFF$	C.RRBA,2 	.ENDC 	.ENDM	CRRG$     ¼ M        	.MACRO	CRRG$C	RDB,CS,ERRA 	.MCALL	CRRG$,DIR$ 	.IF NDF	$$$GLB, 	.PSECT	$DPB$$ $$$=.  	.IFTF
 	CRRG$	RDB 	.IFTF
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	CRRG$C      † M        	.MACRO	CRRG$S	RDB,ERR 	.MCALL	DIR$      ,MOV$E	 	MOV$	RDB	 	MOV	(PC)+,-(SP) 	.BYTE	55.,2
 	DIR$	,ERR 	.ENDM	CRRG$SR     ¨ M        	.MACRO	DTRG$	RDB  	.MCALL	OFF$ 	.IF NDF	$$$GLB	 	.BYTE	59.,2
 	.WORD	RDB 	.ENDC 	.IF NDF	D.TRBA. 	OFF$. 	OFF$	D.TRBA,2 	.ENDC 	.ENDM	DTRG$     ¼ M        	.MACRO	DTRG$C	RDB,CS,ERRA 	.MCALL	DTRG$,DIR$ 	.IF NDF	$$$GLB, 	.PSECT	$DPB$$ $$$=.  	.IFTF
 	DTRG$	RDB 	.IFTF
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	DTRG$C      † M        	.MACRO	DTRG$S	RDB,ERR 	.MCALL	DIR$,MOV$E	 	MOV$	RDB	 	M      OV	(PC)+,-(SP) 	.BYTE	59.,2
 	DIR$	,ERR 	.ENDM	DTRG$SR     HM        	.MACRO	GREG$	RID,BUF  	.MCALL	OFF$ 	.IF NDF	$$$GLB$ 	.BYTE	65.,4 	.WORD	0,RID
 	.WORD	BUF 	.ENDC 	.IF NDF	G.RGIDT 	.NLISTF 	OFF$F 	OFF$	,2 	OFF$	G.RGID,2 	OFF$	G.RGBA,2 	.IF NDF	G.RGRB	 $$$OST=0* 	.IRP	X,<<G.RGRB,2>,<G.RGRS,2>,<G.RGFW,2>> 	OFF$	XC 	.ENDM 	.ENDC 	.LIST 	.ENDC 	.ENDM	GREG$     Ä M        	.MACRO	GREG$C	RID,BUF,CS,ERR  	.MCALL	GREG$,DIR$ 	.IF NDF	$$$GLBB 	.PSECT	$DPB$$ $$$=.E 	.IFTF 	GREG$      	RID,BUF 	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	GREG$C      M        	.MACRO	GREG$S	RID,BUF,ERR 	.MCALL	MOV$,DIR$,OFF$	 	MOV$	BUFO	 	MOV$	RID.
 	CLR	-(SP) 	MOV	(PC)+,-(SP) 	.BYTE	65.,4
 	DIR$	,ERR 	.IF NDF	G.RGRBG 	.NLISTF $$$OST=0* 	.IRP	X,<<G.RGRB,2>,<G.RGRS,2>,<G.RGFW,2>> 	OFF$	XR 	.ENDM 	.LIST 	.ENDC 	.ENDM	GREG$S.     †M        	.MACRO	WDBDF$	GBL 	.MCALL	.BLKW.,.BLKB.,.BLK.C 	.BLK. 	.BLKB.	1,W.NID,GBLG 	.BLKB.	1,W.NAPR,GBL 	.BLKW.	1,W.NBAS,GBL 	.BLKW.	1,W.NSIZ,G      BL 	.BLKW.	1,W.NRID,GBL 	.BLKW.	1,W.NOFF,GBL 	.BLKW.	1,W.NLEN,GBL 	.BLKW.	1,W.NSTS,GBL 	.BLKW.	1,W.NSRB,GBL 	.BLKW.	0,W.NLGH,GBL 	.IF IDN	<DEF$G>,<GBL>* 	.GLOBL	WS.CRW,WS.UNM,WS.ELW,WS.RRF,WS.64B1 	.GLOBL	WS.MAP,WS.RCX,WS.DEL,WS.EXT,WS.WRT,WS.REDT 	.ENDC WS.CRW=^O<100000>R WS.UNM=^O<40000> WS.ELW=^O<20000> WS.RRF=^O<10000> WS.64B=^O<400> WS.MAP=^O<200> WS.RCX=^O<100> WS.DEL=^O<10>B WS.EXT=^O<4> WS.WRT=^O<2> WS.RED=^O<1> 	.MACRO	WDBDF$	X 	.ENDM 	.ENDM	WDBDF$.     È M       * 	.MACRO	      WDBBK$	APR,SIZ,RID,OFF,LEN,STS,SRB 	.MCALL	WDBDF$ 	WDBDF$. 	.BYTE	0,APR 	.WORD	0
 	.WORD	SIZ
 	.WORD	RID
 	.WORD	OFF
 	.WORD	LEN
 	.WORD	STS
 	.WORD	SRB 	.ENDM	WDBBK$C     ª M        	.MACRO	CRAW$	WDBB 	.MCALL	OFF$ 	.IF NDF	$$$GLBS 	.BYTE	117.,2.
 	.WORD	WDB 	.ENDC 	.IF NDF	C.RABA0 	OFF$S 	OFF$	C.RABA,2 	.ENDC 	.ENDM	CRAW$     ¼ M        	.MACRO	CRAW$C	WDB,CS,ERRS 	.MCALL	CRAW$,DIR$ 	.IF NDF	$$$GLB< 	.PSECT	$DPB$$ $$$=.R 	.IFTF
 	CRAW$	WDB 	.IFTW
 	.PSECT	CS 	DIR$	#$$$,ERR 	.EN      DC 	.ENDM	CRAW$CD     ˆ M        	.MACRO	CRAW$S	WDB,ERR 	.MCALL	DIR$,MOV$O	 	MOV$	WDBD 	MOV	(PC)+,-(SP) 	.BYTE	117.,2O
 	DIR$	,ERR 	.ENDM	CRAW$SS     ª M        	.MACRO	ELAW$	WDB  	.MCALL	OFF$ 	.IF NDF	$$$GLB$ 	.BYTE	119.,2L
 	.WORD	WDB 	.ENDC 	.IF NDF	E.LABAC 	OFF$N 	OFF$	E.LABA,2 	.ENDC 	.ENDM	ELAW$     ¼ M        	.MACRO	ELAW$C	WDB,CS,ERR	 	.MCALL	ELAW$,DIR$ 	.IF NDF	$$$GLB$ 	.PSECT	$DPB$$ $$$=.S 	.IFTF
 	ELAW$	WDB 	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	ELAW$CN           ˆ M        	.MACRO	ELAW$S	WDB,ERR 	.MCALL	DIR$,MOV$ 	 	MOV$	WDB$ 	MOV	(PC)+,-(SP) 	.BYTE	119.,2S
 	DIR$	,ERR 	.ENDM	ELAW$SE     ¬ M        	.MACRO	GMCX$	WVEC 	.MCALL	OFF$ 	.IF NDF	$$$GLB$ 	.BYTE	113.,2L 	.WORD	WVEC9 	.ENDC 	.IF NDF	G.MCVA  	OFF$F 	OFF$	G.MCVA,2 	.ENDC 	.ENDM	GMCX$     ¾ M        	.MACRO	GMCX$C	WVEC,CS,ERR 	.MCALL	GMCX$,DIR$ 	.IF NDF	$$$GLB  	.PSECT	$DPB$$ $$$=.C 	.IFTF 	GMCX$	WVECF 	.IFTA
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	GMCX$C      Š M              	.MACRO	GMCX$S	WVEC,ERRL 	.MCALL	DIR$,MOV$L
 	MOV$	WVEC 	MOV	(PC)+,-(SP) 	.BYTE	113.,2.
 	DIR$	,ERR 	.ENDM	GMCX$S.     ¨ M        	.MACRO	MAP$	WDB 	.MCALL	OFF$ 	.IF NDF	$$$GLB. 	.BYTE	121.,2 
 	.WORD	WDB 	.ENDC 	.IF NDF	M.APBA  	OFF$F 	OFF$	M.APBA,2 	.ENDC 	.ENDM	MAP$N     ¸ M        	.MACRO	MAP$C	WDB,CS,ERR 	.MCALL	MAP$,DIR$  	.IF NDF	$$$GLB$ 	.PSECT	$DPB$$ $$$=.S 	.IFTF	 	MAP$	WDB  	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	MAP$C     † M        	.MACRO	MAP$S	WD      B,ERR  	.MCALL	DIR$,MOV$,	 	MOV$	WDBL 	MOV	(PC)+,-(SP) 	.BYTE	121.,2C
 	DIR$	,ERR 	.ENDM	MAP$S     ¨ M        	.MACRO	RREF$	WDB  	.MCALL	OFF$ 	.IF NDF	$$$GLBL 	.BYTE	81.,2
 	.WORD	WDB 	.ENDC 	.IF NDF	R.REBAB 	OFF$C 	OFF$	R.REBA,2 	.ENDC 	.ENDM	RREF$     ¼ M        	.MACRO	RREF$C	WDB,CS,ERR  	.MCALL	RREF$,DIR$ 	.IF NDF	$$$GLB$ 	.PSECT	$DPB$$ $$$=.$ 	.IFTF
 	RREF$	WDB 	.IFT.
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	RREF$CR     † M        	.MACRO	RREF$S	WDB,ERR 	.MCALL	DIR$,M      OV$R	 	MOV$	WDB	 	MOV	(PC)+,-(SP) 	.BYTE	81.,2
 	DIR$	,ERR 	.ENDM	RREF$SD     ö M        	.MACRO	SREF$	TASK,WDB,EFN 	.MCALL	R50$,OFF$C 	.IF NDF	$$$GLBF 	.BYTE	69.,5
 	R50$	TASK
 	.WORD	EFN
 	.WORD	WDB 	.ENDC 	.IF NDF	S.RETN	+ 	.IRP	X,<,<S.RETN,4>,<S.REEF,2>,<S.REBA,2>>  	OFF$	XR 	.ENDM 	.ENDC 	.ENDM	SREF$     Î M       " 	.MACRO	SREF$C	TASK,WDB,EFN,CS,ERR 	.MCALL	SREF$,DIR$ 	.IF NDF	$$$GLBS 	.PSECT	$DPB$$ $$$=.C 	.IFTF 	SREF$	TASK,WDB,EFN  	.IFT.
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC       	.ENDM	SREF$C	     ° M       ! 	.MACRO	SREF$S	TSKADR,WDB,EFN,ERRR 	.MCALL	DIR$,MOV$,RFA$	 	MOV$	WDBR	 	MOV$	EFNB 	RFA$	TSKADR 	MOV	(PC)+,-(SP) 	.BYTE	69.,5
 	DIR$	,ERR 	.ENDM	SREF$SO     º M        	.MACRO	SRRA$	ASTS 	.MCALL	OFF$ 	.IF NDF	$$$GLB. 	.BYTE	21.,2
 	.WORD	AST 	.ENDC 	.IF NDF	S.RRAEN 	.NLIST  	OFF$  	OFF$	S.RRAE,2 	.LIST 	.ENDC 	.ENDM	SRRA$     ¼ M        	.MACRO	SRRA$C	AST,CS,ERR	 	.MCALL	SRRA$,DIR$ 	.IF NDF	$$$GLBD 	.PSECT	$DPB$$ $$$=.	 	.IFTF
 	SRRA$	AST 	.IF      T 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SRRA$CK     † M        	.MACRO	SRRA$S	AST,ERR 	.MCALL	MOV$,DIR$F	 	MOV$	ASTS 	MOV	(PC)+,-(SP) 	.BYTE	21.,2
 	DIR$	,ERR 	.ENDM	SRRA$SE     ª M        	.MACRO	UMAP$	WDB	 	.MCALL	OFF$ 	.IF NDF	$$$GLB$ 	.BYTE	123.,2.
 	.WORD	WDB 	.ENDC 	.IF NDF	U.MABAA 	OFF$L 	OFF$	U.MABA,2 	.ENDC 	.ENDM	UMAP$     ¼ M        	.MACRO	UMAP$C	WDB,CS,ERRR 	.MCALL	UMAP$,DIR$ 	.IF NDF	$$$GLBI 	.PSECT	$DPB$$ $$$=.. 	.IFTF
 	UMAP$	WDB 	.IFTF
 	.PSECT	CS 	DIR      $	#$$$,ERR 	.ENDC 	.ENDM	UMAP$C.     ˆ M        	.MACRO	UMAP$S	WDB,ERR 	.MCALL	DIR$,MOV$R	 	MOV$	WDBO 	MOV	(PC)+,-(SP) 	.BYTE	123.,2-
 	DIR$	,ERR 	.ENDM	UMAP$SE       M        	.MACRO	.BLKB.	NUM,SYM,GBL 	.IF NB	<SYM>C 	.IF IDN	<DEF$G>,<GBL> SYM==$$$ 	.IFF. SYM=$$$W 	.ENDC 	.ENDC $$$=$$$+NUM  	.ENDM	.BLKB..     ¤ M        	.MACRO	.BLKW.	NUM,SYM,GBL 	.IF NB	<SYM>C 	.IF IDN	<DEF$G>,<GBL> SYM==$$$ 	.IFFF SYM=$$$  	.ENDC 	.ENDC $$$=$$$+<2*NUM>U 	.ENDM	.BLKW.F     8 M              	.MACRO	.BLK.N $$$=0N 	.ENDM	.BLK.     M       ! 	.MACRO	CRVT$	IAST,OAST,AAST,MLENM 	.MCALL	OFF$ 	.IF	NDF	$$$GLBS 	.BYTE	149.,5, 	.WORD	IASTR 	.WORD	OAST$ 	.WORD	AAST  	.WORD	MLENR 	.ENDC 	.IF	NDF	C.RVIAF6 	.IRP X,<,<C.RVIA,2>,<C.RVOA,2>,<C.RVAA,2>,<C.RVML,2>> 	OFF$	X. 	.ENDM 	.ENDC 	.ENDM	CRVT$     Ü M       ) 	.MACRO	CRVT$C	IAST,OAST,AAST,MLEN,CS,ERR. 	.MCALL	CRVT$,DIR$ 	.IF	NDF	$$$GLB  	.PSECT	$DPB$$ $$$=.$ 	.IFTF 	CRVT$	IAST,OAST,AAST,MLEN 	.IFTM
 	.PSECT	CS 	DIR$	#$$$,E      RR 	.ENDC 	.ENDM	CRVT$C      ¼ M       & 	.MACRO	CRVT$S	IAST,OAST,AAST,MLEN,ERR 	.MCALL	DIR$,MOV$F
 	MOV$	MLEN
 	MOV$	AAST
 	MOV$	OAST
 	MOV$	IAST 	MOV	(PC)+,-(SP) 	.BYTE	149.,5.
 	DIR$	,ERR 	.ENDM	CRVT$SF     ¬ M        	.MACRO	ELVT$	UNUM 	.MCALL	OFF$ 	.IF	NDF	$$$GLBF 	.BYTE	151.,2. 	.WORD	UNUMC 	.ENDC 	.IF	NDF	E.LVNM. 	OFF$R 	OFF$	E.LVNM,2 	.ENDC 	.ENDM	ELVT$     ¾ M        	.MACRO	ELVT$C	UNUM,CS,ERR 	.MCALL	ELVT$,DIR$ 	.IF	NDF	$$$GLBA 	.PSECT	$DPB$$ $$$=.C 	.IFTF 	ELVT$	U      NUM  	.IFT 
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	ELVT$CS     Š M        	.MACRO	ELVT$S	UNUM,ERRM 	.MCALL	DIR$,MOV$T
 	MOV$	UNUM 	MOV	(PC)+,-(SP) 	.BYTE	151.,2.
 	DIR$	,ERR 	.ENDM	ELVT$S.     âM       A 	.MACRO	SPWN$ TNAME,PN,PR,UGC,UMC,EFN,EAST,ESB,CMDLIN,CMDLEN,VTUN. 	.MCALL	OFF$,R50$D 	.IF	NDF	$$$GLB. 	.BYTE	11.,13. 	R50$	TNAME	 	.BLKW	3 	.BYTE	UMC,UGC
 	.WORD	EFN 	.WORD	EAST.
 	.WORD	ESB 	.WORD	CMDLIN. 	.WORD	CMDLEN$ 	.WORD	VTUN$ 	.ENDC 	.IF	NDF	S.PWTN=A 	.IRP X,<,<S.PWTN,      4>,<S.PWXX,6>,<S.PWUM,1>,<S.PWUG,1>,<S.PWEF,2>>C 	OFF$	XE 	.ENDM@ 	.IRP X,<<S.PWEA,2>,<S.PWES,2>,<S.PWCA,2>,<S.PWCL,2>,<S.PWVT,2>> 	OFF$	X  	.ENDM 	.ENDC 	.ENDM	SPWN$     M       I 	.MACRO	SPWN$C TNAME,PN,PR,UGC,UMC,EFN,EAST,ESB,CMDLIN,CMDLEN,VTUN,CS,ERRE 	.MCALL	SPWN$,DIR$ 	.IF	NDF	$$$GLBR 	.PSECT	$DPB$$ $$$=.  	.IFTF6 	SPWN$	TNAME,,,UGC,UMC,EFN,EAST,ESB,CMDLIN,CMDLEN,VTUN 	.IFTO
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SPWN$C$     DM       F 	.MACRO	SPWN$S TNAME,PN,PR,UGC,UMC,EFN,E      AST,ESB,CMDLIN,CMDLEN,VTUN,ERR 	.MCALL	DIR$,MOV$,MVB$,RFA$ 
 	MOV$	VTUN 	MOV$	CMDLEN 	MOV$	CMDLIN	 	MOV$	ESBS
 	MOV$	EAST	 	MOV$	EFNO 	MVB$	UMC,UGC 
 	CLR	-(SP)
 	CLR	-(SP)
 	CLR	-(SP) 	RFA$	TNAMEP 	MOV	(PC)+,-(SP) 	.BYTE	11.,13.
 	DIR$	,ERR 	.ENDM	SPWN$SR     M         	.MACRO	CNCT$	TNAME,EFN,EAST,ESB 	.MCALL 	OFF$,R50$ 	.IF	NDF	$$$GLBU 	.BYTE	143.,6, 	R50$	TNAMED
 	.WORD	EFN 	.WORD	EAST	
 	.WORD	ESB 	.ENDC 	.IF	NDF	C.NCTNW6 	.IRP	X,<,<C.NCTN,4>,<C.NCEF,2>,<C.NCEA,2>,<C.NCES,2>> 	OFF$	      XS 	.ENDM 	.ENDC 	.ENDM	CNCT$     Ú M       ( 	.MACRO	CNCT$C	TNAME,EFN,EAST,ESB,CS,ERR 	.MCALL	CNCT$,DIR$ 	.IF	NDF	$$$GLBV 	.PSECT	$DPB$$ $$$=.  	.IFTF 	CNCT$	TNAME,EFN,EAST,ESB  	.IFTN
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	CNCT$C      Â M       % 	.MACRO	CNCT$S	TNAME,EFN,EAST,ESB,ERR, 	.MCALL	DIR$,MOV$,RFA$	 	MOV$	ESBN
 	MOV$	EAST	 	MOV$	EFN, 	RFA$	TNAMEM 	MOV	(PC)+,-(SP) 	.BYTE	143.,6O
 	DIR$	,ERR 	.ENDM	CNCT$SN     Ú M        	.MACRO	EMST$	TNAME,STATUS 	.MCALL	OFF$,R50$F       	.IF	NDF	$$$GLBN 	.BYTE	147.,4$ 	R50$	TNAME  	.WORD	STATUSN 	.ENDC 	.IF	NDF	E.MSTNS 	OFF$. 	OFF$	E.MSTN,4 	OFF$	E.MSST,2 	.ENDC 	.ENDM	EMST$     Î M       " 	.MACRO	EMST$C	TNAME,STATUS,CS,ERR 	.MCALL	EMST$,DIR$ 	.IF	NDF	$$$GLBM 	.PSECT	$DPB$$ $$$=.  	.IFTF 	EMST$	TNAME,STATUSE 	.IFT,
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	EMST$CT     ¦ M        	.MACRO	EMST$S	TNAME,STATUS,ERRE 	.MCALL	DIR$,MOV$,RFA$ 	MOV$	STATUS 	RFA$	TNAME  	MOV	(PC)+,-(SP) 	.BYTE	147.,4.
 	DIR$	,ERR 	.EN      DM	EMST$S$     Ê M        	.MACRO	STLO$	GRP,MSKO 	.MCALL	OFF$ 	.IF	NDF	$$$GLBM 	.BYTE	137.,3O
 	.WORD	GRP
 	.WORD	MSK 	.ENDC 	.IF	NDF	S.TLGR$ 	OFF$  	OFF$	S.TLGR,2 	OFF$	S.TLMS,2 	.ENDC 	.ENDM	STLO$     Ä M        	.MACRO	STLO$C	GRP,MSK,CS,ERR$ 	.MCALL	STLO$,DIR$ 	.IF	NDF	$$$GLB. 	.PSECT	$DPB$$ $$$=.	 	.IFTF 	STLO$	GRP,MSK 	.IFTT
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	STLO$CE     ˜ M        	.MACRO	STLO$S	GRP,MSK,ERR 	.MCALL	DIR$,MOV$-	 	MOV$	MSKE	 	MOV$	GRPD 	MOV	(PC)+,-      (SP) 	.BYTE	137.,3 
 	DIR$	,ERR 	.ENDM	STLO$S,     ª M        	.MACRO	STSE$	EFN  	.MCALL	OFF$ 	.IF	NDF	$$$GLBO 	.BYTE	135.,2 
 	.WORD	EFN 	.ENDC 	.IF	NDF	S.TSEFR 	OFF$F 	OFF$	S.TSEF,2 	.ENDC 	.ENDM	STSE$     ¼ M        	.MACRO	STSE$C	EFN,CS,ERR  	.MCALL	STSE$,DIR$ 	.IF	NDF	$$$GLB  	.PSECT	$DPB$$ $$$=.  	.IFTF
 	STSE$	EFN 	.IFTF
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	STSE$C$     ˆ M        	.MACRO	STSE$S	EFN,ERR 	.MCALL	DIR$,MOV$$	 	MOV$	EFNV 	MOV	(PC)+,-(SP) 	.BYTE	135.,      2S
 	DIR$	,ERR 	.ENDM	STSE$SE     Z M        	.MACRO	STOP$  	.IF	NDF	$$$GLB	 	.BYTE	131.,1F 	.ENDC 	.ENDM	STOP$     ´ M        	.MACRO	STOP$C	CS,ERRN 	.MCALL	STOP$,DIR$ 	.IF	NDF	$$$GLB. 	.PSECT	$DPB$$ $$$=.  	.IFTF 	STOP$ 	.IFTT
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	STOP$CL     r M        	.MACRO	STOP$S	ERR 	.MCALL	DIR$ 	MOV	(PC)+,-(SP) 	.BYTE	131.,1.
 	DIR$	,ERR 	.ENDM	STOP$S      ´ M        	.MACRO	USTP$	TNAMEC 	.MCALL	OFF$,R50$V 	.IF	NDF	$$$GLB+ 	.BYTE	133.,31 	R      50$	TNAME	 	.ENDC 	.IF	NDF	U.STTN  	OFF$  	OFF$	U.STTN,2 	.ENDC 	.ENDM	USTP$     À M        	.MACRO	USTP$C	TNAME,CS,ERR  	.MCALL	USTP$,DIR$ 	.IF	NDF	$$$GLBC 	.PSECT	$DPB$$ $$$=.F 	.IFTF 	USTP$	TNAME 	.IFT=
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	USTP$CE     Œ M        	.MACRO	USTP$S	TNAME,ERR 	.MCALL	DIR$,RFA$R 	RFA$	TNAME$ 	MOV	(PC)+,-(SP) 	.BYTE	133.,3.
 	DIR$	,ERR 	.ENDM	USTP$S      4M       $ 	.MACRO	SDRC$	TNAME,BUF,EFN,EAST,ESB 	.MCALL	OFF$,R50$L 	.IF	NDF	$$$GLB1 	.      BYTE	141.,7  	R50$	TNAMEN
 	.WORD	BUF
 	.WORD	EFN 	.WORD	EAST.
 	.WORD	ESB 	.ENDC 	.IF	NDF	S.DRTN A 	.IRP	X,<,<S.DRTN,4>,<S.DRBF,2>,<S.DREF,2>,<S.DREA,2>,<S.DRES,2>>  	OFF$	XD 	.ENDM 	.ENDC 	.ENDM	SDRC$     â M       , 	.MACRO	SDRC$C	TNAME,BUF,EFN,EAST,ESB,CS,ERR 	.MCALL	SDRC$,DIR$ 	.IF	NDF	$$$GLBA 	.PSECT	$DPB$$ $$$=.A 	.IFTF 	SDRC$	TNAME,BUF,EFN,EAST,ESBY 	.IFT,
 	.PSECT	CS 	DIR$	#$$$,ERR 	.ENDC 	.ENDM	SDRC$C.     Ò M       ) 	.MACRO	SDRC$S	TNAME,BUF,EFN,EAST,ESB,ERRN 	.MCALL	DIR$      ,MOV$,RFA$	 	MOV$	ESBN
 	MOV$	EAST	 	MOV$	EFND	 	MOV$	BUFD 	RFA$	TNAMED 	MOV	(PC)+,-(SP) 	.BYTE	141.,7.
 	DIR$	,ERR 	.ENDM	SDRC$S2     Ô M        	.MACRO	RCST$	TNAME,BUF	 	.MCALL	OFF$,R50$  	.IF	NDF	$$$GLB  	.BYTE	139.,4. 	R50$	TNAMET
 	.WORD	BUF 	.ENDC 	.IF	NDF	R.CSTN	 	OFF$I 	OFF$	R.CSTN,4 	OFF$	R.CSBF,2 	.ENDC 	.ENDM	RCST$     È M        	.MACRO	RCST$C	TNAME,BUF,CS,ERR  	.MCALL	RCST$,DIR$ 	.IF	NDF	$$$GLB. 	.PSECT	$DPB$$ $$$=.A 	.IFTF 	RCST$	TNAME,BUF 	.IFT,
 	.PSECT	CS 	DIR      $	#$$$,ERR 	.ENDC 	.ENDM	RCST$CT       M        	.MACRO	RCST$S	TNAME,BUF,ERR 	.MCALL	DIR$,MOV$,RFA$	 	MOV$	BUFR 	RFA$	TNAME$ 	MOV	(PC)+,-(SP) 	.BYTE	139.,4T
 	DIR$	,ERR 	.ENDM	RCST$SR     þO        	.MACRO	GTSK$S	BUFA,ERR0 	.MCALL	MOV$,DIR$,OFF$
 	MOV$	BUFA 	MOV	(PC)+,-(SP) 	.BYTE	63.,2
 	DIR$	,ERR 	.IF NDF	G.TSTN. 	.NLIST$ $$$OST=0@ 	.IRP	X,<<G.TSTN,4>,<G.TSPN,4>,<G.TSRN,4>,<G.TSPR,2>,<G.TSPC,1>> 	OFF$	X$ 	.ENDM@ 	.IRP	X,<<G.TSGC,1>,<G.TSNL,2>,<G.TSMT,2>,<G.TSFW,2>,<G.TSVA,2>> 	OFF      $	X$ 	.ENDM 	OFF$	G.TSVL,2 	OFF$	G.TSTS,2 	OFF$	G.TSSY,2 	OFF$	G.TSDU,2 $$$OST=05 	.IRP	X,<<RX$11D,1>,<RX$11M,1>,<RX$11S,1>,<RX$IAS,1>>C 	OFF$	X  	.ENDM 	.LIST 	.ENDC 	.ENDM	GTSK$S$SR                  	.MACRO	GTSK$S	BUFA,ERR0 	.MCALL	MOV$,DIR$,OFF$
 	MOV$	BUFA 	MOV	(PC)+,-(SP) 	.BYTE	63.,2
 	DIR$	,ERR 	.IF NDF	G.TSTN. 	.NLIST$ $$$OST=0@ 	.IRP	X,<<G.TSTN,4>,<G.TSPN,4>,<G.TSRN,4>,<G.TSPR,2>,<G.TSPC,1>> 	OFF$	X$ 	.ENDM@ 	.IRP	X,<<G.TSGC,1>,<G.TSNL,2>,<G.TSMT,2>,<G.TSFW,2>,<G.TSVA,2>> 	OFF          ó.¸GkQ› 8$     °  	.MACRO	GTSK$S	BUFA,ERR	.MCALL	MOV$,DIR$,OFF$	MOV$	BUFA	MOV	(PC)+,-(SP)	.BYTE	63.,2	DIR$	,ERR	.IF NDF	G.TSTN	.NLIST$$$OST=0	.IRP	X,<<G.TSTN,4>,<G.TSPN,4>,<G.TSRN,4>,<G.TSPR,2>,<G.TSPC,1>>	OFF$	X	.ENDM	.IRP	X,<<G.TSGC,1>,<G.TSNL,2>,<G.TSMT,2>,<G.TSFW,2>,<G.TSVA,2>>	OFF$	X	.ENDM	OFF$	G.TSVL,2	OFF$	G.TSTS,2	OFF$	G.TSSY,2	OFF$	G.TSDU,2$$$OST=0	.IRP	X,<<RX$11D,1>,<RX$11M,1>,<RX$11S,1>,<RX$IAS,1>>	OFF$	X	.ENDM	.LIST	.ENDC	.ENDM	GTSK$S°         ›r[ql^› 8$     ä  ;; STANDARD SYSLIB.OLB MODULES;A00:	.FCTR	LB:[1,1]SYSLIB/LB:AUTO;; STANDARD RMSLIB.OLB MODULES;A01:	.FCTR	LB:[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLKA02:	.FCTR	LB:[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDATA03:	.FCTR	LB:[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB:R0RMSA:R0WTBSA04:	.FCTR	LB:[1,1]RMSLIB/LB:R1NXBK:R1RLBK:R0EXTD:R1WTLS:R1CKEFA05:	.FCTR	LB:[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLDA06:	.FCTR	LB:[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLD;;	.ROOT	A00-A01-A02-A03-A04-A05-A06	.ENDä         ›r˜Æl^› 8$        ;+;; RMS11 ODL NAMING CONVENTIONS;;;;	RM	=	CONSTANT--IDENTIFIES AS RMS-11.;	N	=	TYPE OF OVERLAY ENVIRONMENT;			0 -- NO RESIDENT LIBRARY OR RUN-TIME SYSTEM;			1 -- RESIDENT LIBRARY OR RUN-TIME SYSTEM;;	A	=	SYSTEM ENVIRONMENT ;			0 -- SYNCHRONOUS;			1 -- ASYNCHRONOUS;;	B	=	FILE ORGANIZATION;			1 -- SEQUENTIAL;			2 -- RELATIVE;			3 -- INDEXED;;	C	=	OPERATION SUPPORT;			0 -- FILE OPEN;			1 -- FILE CREATION;			2 -- INPUT ($GET,$FIND);			4 -- OUTPUT ($PUT);			6 -- I/O ($GET,$FIND,$PUT,$UPDATE,$DELETE);;	ODL FILE       CONVENTIONS;;	WHENEVER AN A, B, OR C DOES NOT APPLY, THEN AN "X" IS USED;	EXAMPLE:;	RM013X.ODL = SELECTS THE ASYNC ENVIRONMENT WITH INDEX SUPPORT;	BUT CONTAINS NO OPERATION SUPPORT ODL INFORMATION;;	NOTE:	ALL MODULE REFERENCES ARE TO [1,1]RMSLIB.OLB;;	NOTE:	IN THE FOLLOWING TEXT, WHEREEVER A CHOICE IS INDICATED;		AMONG ALTERNATIVE FACTORS, THE CHOICE IS EFFECTED BY;		REMOVING THE LEADING SEMICOLON FROM THE FACTOR TO BE SELTED;-;;;;;;; **************************************************; COMMON FACTORS;RMSCM1      :	.FCTR	[1,1]RMSLIB/LB:R0AUTO:R0IMPA;; **************************************************;;	IF TASK BUILDING WITH THE RMS11 RESIDENT LIBRARY (RSX) OR;	RUN TIME SYSTEM (RSTS/E), REPLACE THE TERM RMXXXX IN THE;	FACTOR RMSROT (BELOW) WITH RMS11X. ALSO, SELECT ONE OF;	THE FOLLOWING FACTORS BELOW.;;;	NO INDEX FILE SUPPORT REQUIRED;;RMS11X:	.FCTR	RMSCM1-RMSREX;;;	INDEX FILE SUPPORT REQUIRED, ALSO SELECT THE RMSIX0;	FACTOR BELOW.;;RMS11X:	.FCTR	RMSCM1-RMSREX-RMSIX0;; ***********************************************      ***;;	IF TASK BUILDING WITHOUT THE RMS11 RESIDENT LIBRARY (RSX);	OR RUN TIME SYSTEM (RSTS/E), REPLACE THE TERM RMXXXX IN ;	THE FACTOR RMSROT (BELOW) WITH ONE OF THE FOLLOWING:;;		RM0X3X	(INDEXED ORGANIZATION SUPPORTED);		RM0X0X	(INDEXED ORGANIZATION NOT SUPPORTED);;	ALSO, SELECT THE CORRESPONDING FACTOR FROM THE TWO BELOW.;;RM0X0X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC;RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0;RMSROT:	.FCTR	[1,1]RMSLIB/LB:RMSSYM-RMXXXX;; **************************************      ************; THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITH; THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME SYSTEM (RSTS/E).; SELECT ONE OF THE TWO.;;; RSTS/E OR SYNCRONOUS RSX ENVIRONMENTS.;;RMSREX:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES;; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY);;RMSREX:	.FCTR	[1,1]RMSLIB/LB:R0EXEC:R0RSET;; **************************************************; THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITHOUT; THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME SYSTEM (RSTS/E).      ; SELECT ALL THREE.;;RMSIO:	.FCTR	[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLK;RMSCBL:	.FCTR	[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDAT;RMSCOM:	.FCTR	[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB;; **************************************************; THE FOLLOWING FACTORS ARE NEEDED WHEN TASK BUILDING WITHOUT; THE RMS11 RESIDENT LIBRARY (RSX) OR RUN TIME SYSTEM (RSTS/E); SELECT ONE OF THE TWO.;; SYNC SYSTEMS;;RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS:R0RMSA;; ASYNCHRONOUS SYSTEMS (RSX BASED SYSTEMS ONLY);      ;RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB:R0RMSA;; **************************************************;; THE FOLLOWING FACTOR IS NEEDED WHEN INDEXED ORGANIZATION IS; TO BE SUPPORTED.;;RMSIX0:	.FCTR	[1,1]RMSLIB/LB:R0RLSB:R0GETB;;;;;;	.NAME	RMS11	.NAME	RMSFAB	.NAME	RMSRAB	.NAME	RMSCRE	.NAME	RMSCD	.NAME	RMOPIN	.NAME	RMSSEQ	.NAME	RMSREL	.NAME	R2GUPD	.NAME	RMSIDX	.NAME	RMSBMC	.NAME	RMSMIS	.NAME	RMDEXT	.NAME	RMDRLB	.NAME	RMDWTL;;;;;;; **************************************************; THE FOLLOWING GROUP       OF FACTORS SELECT NON OPTIONAL; MODULES FOR THE FILE ORIENTED FUNCTIONS.;RMSFIL:	.FCTR	RMSFAB-[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFLRMSFL:	.FCTR	[1,1]RMSLIB/LB:R0CLCM-RMFILE-RMSFL0RMSFNM:	.FCTR	[1,1]RMSLIB/LB:R0PRFN:R0XPFN:R0MKWA:R0ASLN-RMSFL1RMSDPC:	.FCTR	[1,1]RMSLIB/LB:R0DPYC:R0CKSM-RMSFL1RMSFL1:	.FCTR	[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIORMSCLS:	.FCTR	[1,1]RMSLIB/LB:R1CLOS:R2CLOS-RMSCL0;; SELECT THE FIRST OF THE FOLLOWING TWO FACTORS IF INDEX SUPPORT IS; NOT REQUIRED.  SELECT THE SECOND IF INDEX SUPPOR      T IS REQUIRED.;;RMSCL0:	.FCTR	[1,1]RMSLIB/LB:R0CKSM-RMEXTD-RMR1RL;RMSCL0:	.FCTR	[1,1]RMSLIB/LB:R3CLOS:R0CKSM-RMEXTD-RMR1RL;RMSOPN:	.FCTR	([1,1]RMSLIB/LB:R0OPFL-RMSOP0,RM0XY0);; SELECT THE FIRST OF THE FOLLOWING TWO FACTORS IF INDEX SUPPORT IS; NOT REQUIRED.  SELECT THE SECOND IF INDEX SUPPORT IS REQUIRED.;;RMCRCK:	.FCTR	[1,1]RMSLIB/LB:R1CRCK:R2CRCK;RMCRCK:	.FCTR	[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCK;RMCREA:	.FCTR	[1,1]RMSLIB/LB:R0CRFL:R0MFNB:R0RD50-RMSCR2;RMSCR0:	.FCTR	RMSCRE-[1,1]RMSLIB/LB:R0CRXI-RMSCR1; ***      ***********************************************; SELECT THE FOLLOWING FOUR FACTORS FOR THE RSX ENVIRONMENT.;;RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0RXAC;RMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50;RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RXCR:R0RXMD:R0RXDI;RMSER1:	.FCTR	[1,1]RMSLIB/LB:R0RXMD-RMSOP0;; SELECT THE FOLLOWING FOUR FACTORS FOR THE RSTS/E ENVIRONMENT.;;RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0REOP;RMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0MFNB:R0RD50;RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RECR;RMSER1:	.FCTR	RMSOP0;;	*********************      *************************************;; IF TASK BUILDING WITHOUT THE RMS11 RESIDENT LIBRARY (RSX); OR RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS MUST; BE SELECTED.;;RMEXTD:	.FCTR	[1,1]RMSLIB/LB:R0EXTD;RMR1RL:	.FCTR	[1,1]RMSLIB/LB:R1RLBK:R1NXBK;RMR1WL:	.FCTR	[1,1]RMSLIB/LB:R1WTLS;; IF TASK BUILDING WITH THE RMS11 RESIDENT LIBRARY (RSX) OR; RUN TIME SYSTEM (RSTS/E) THE FOLLOWING THREE FACTORS MUST; BE SELECTED.;;RMEXTD:	.FCTR	RMDEXT;RMR1RL:	.FCTR	RMDRLB;RMR1WL:	.FCTR	RMDWTL;;;;;;; ******************      ********************************; THE FOLLOWING IS THE STARTING FACTOR FOR DEFINING THE RMS11 CO-TREE.; THE FACTOR NAME RMSALL IS REFERENCED IN THE USERS ODL.RMSALL:	.FCTR	RMS11-*(RMSFIL,RMSREC);;	FILE (FAB) FUNCTION OVERLAY STRUCTURE;RMSFL0:	.FCTR	(RMSFNM,RMSDPC,RMSCLS,RMSOPN,RMSCR0);; IF THE $EXTEND OR $ERASE FUNCTIONS ARE TO BE SUPPORTED, SELECT; THE FOLLOWING THREE FACTORS AND ADD RMSMIC AFTER RMSCR0 IN THE; RMSFL0 FACTOR ABOVE.;;RMSMIC:	.FCTR	(RMSERA,RMSEXT);RMSERA:	.FCTR	[1,1]RMSLIB/LB:R0ERFL-RMSER1;R      MSEXT:	.FCTR	[1,1]RMSLIB/LB:R0EXT0:R0CKSM:R2BFMT-RMEXTD-RMSFL1;; **************************************************; THE FOLLOWING FACTOR (RM0XY0) SELECTS THE ORGANIZATION DEPENDENT MODULES; FOR THE $OPEN FUNCTION. AS IS, IT SELECTS THE MODULES FOR ALL; THREE FILE ORGANIZATIONS. THEY ARE:;	;	R1OPFL			(SEQUENTIAL ORGANIZATION;	R2OPFL			(RELATIVE ORGANIZATION);	R3OPFL AND R3RPLG	(INDEXED ORGANIZATION);; IF A PARTICULAR ORGANIZATION IS NOT TO BE SUPPORTED, THE; CORRESPONDING MODULE NAMES MAY BE REMOVED TO SAVE       SPACE.;; NOTE: THE FACTOR RM0X30 IS USED TO AVOID A "LINE TOO LONG" ERROR,;	IT IS EQUIVALENT TO "R3OPFL:R3RPLG" .;RM0XY0:	.FCTR	RMOPIN-[1,1]RMSLIB/LB:R0INIT:R0CKSM:R1OPFL:R2OPFL-RM0X30;RM0X30:	.FCTR	[1,1]RMSLIB/LB:R3OPFL:R3RPLG;;;;;;; **************************************************; THE FOLLOWING FACTOR (RMSCR1) SELECTS THE ORGANIZATION DEPENDENT; MODULES FOR FILE CREATION, ALONG WITH APPROPRIATE SUPPORTING MODULES.; AS IS, IT SELECTS THE MODULES FOR ALL THREE ORGANIZATIONS.; IF A PARTICULAR ORGANIZATIO      N IS NOT TO BE SUPPORTED, THE CORRESPONDING; MODULES MAY BE REMOVED TO SAVE SPACE.; THE CORRESPONDENCE IS:;;	R1CRFL			(SEQUENTIAL ORGANIZATION);	R2CRFL			(RELATIVE ORGANIZATION);	R3CRFL			(INDEXED ORGANIZATION);;; THE FACTORS FOR THE SUPPORTING MODULES ARE:;;	RMCRXX			(RELATIVE OR INDEXED);	RM0X21			(RELATIVE ORGANIZATION);	RM0X31			(INDEXED ORGANIZATION);RMSCR1:	.FCTR	[1,1]RMSLIB/LB:R1CRFL:R2CRFL:R3CRFL-(RMCRCK,RMCREA,RMCRXX);;;RMCRXX:	.FCTR	(RM0X21,RM0X31);RM0X21:	.FCTR	[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM      -RMSFL1;RM0X31:	.FCTR	[1,1]RMSLIB/LB:R3WPLG:R0CKSM:R0ALBD-RMEXTD;;;;;;;; **************************************************;; RMS RECORD (RAB) OPERATIONS - COMMON FACTORS;RMSCDX:	.FCTR	RMSCD-[1,1]RMSLIB/LB:R1CONP:R2CONP-RMSCD0;; SELECT THE FIRST OF THE FOLLOWING TWO FACTORS IF INDEX SUPPORT IS; NOT REQURIED.  SELECT THE SECOND IF INDEX SUPPORT IS REQUIRED.;;RMSCD0:	.FCTR	[1,1]RMSLIB/LB:R1DISC:R2DISC-RMSCD1;RMSCD0:	.FCTR	[1,1]RMSLIB/LB:R3CONP:R1DISC:R2DISC:R3DISC-RMSCD1;RMSCD1:	.FCTR	[1,1]RMSLIB/LB:R0CCLN:R0      RSEI:R0ALBS-RMSFL1-RMSCD2RMSCD2:	.FCTR	RMR1RL-RMR1WL-RMEXTD;; **************************************************;	RMS RECORD (RAB) FUNCTION OVERLAY STRUCTURE;;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) SEPERATED BY;	ODL OVERLAY/CONCATENATION OPERATORS WHICH;	WILL PROVIDE THE REQUIRED FUNCTIONALITY;	RM0X26 ---- RELATIVE FILE RECORD OPERATIONS;	RM0X36 ---- INDEXED FILE RECORD OPERATIONS;	RMSBLK ---- BLOCK IO AND MISC. RECORD OPERATIONS $REWIND,$FREE;			$FLUSH, AND $TRUNCATE;	RMSSQ0 ---- SEQUENTIAL FILE       RECORD OPERATIONS;RMSREC:	.FCTR	RMSRAB-(RMSCDX,XXXX);; **************************************************;; RMS RELATIVE FILE RECORD OPERATIONS;;RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2A;RMIO2C:	.FCTR	[1,1]RMSLIB/LB:R2IOCK:R2CALC:R0CKSM;RMIO2A:	.FCTR	[1,1]RMSLIB/LB:R2FIND:R2GSET-(RMIO2G,RMIO2P);RMIO2G:	.FCTR	R2GUPD-[1,1]RMSLIB/LB:R2GET-RMIO2U-RMIO2D;RMIO2P:	.FCTR	[1,1]RMSLIB/LB:R2PUT:R2PSET-RMIO2H;RMIO2H:	.FCTR	[1,1]RMSLIB/LB:R2BFMT:R2EXTD-RMEXTD;RMIO2U:	.FCTR	[1,1]RMSLIB/LB:R2UPDA:R2PSET;RMIO2D:	.FCTR	[1,1]RMSLI      B/LB:R2DELE;;;;;;; **************************************************; RMS INDEXED FILE RECORD OPERATIONS;;RM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31;RMIO30:	.FCTR	RMOU3C-RMOU3D-RMOU3E;RMIO31:	.FCTR	(RMIO3G,RMIO3P,RMIO3U);RMIO3G:	.FCTR	[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3K;RMIN3K:	.FCTR	[1,1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKE;RMIN3S:	.FCTR	[1,1]RMSLIB/LB:R3FRSE:R3POSE:R3POSR:R3FRRV;RMIO3P:	.FCTR	[1,1]RMSLIB/LB:R3PUT:R3PSET-(RMOU3Q);RMOU3Q:	.FCTR	(RMOU33,RMOU34,RMOU35,RMOU36,RMOU3P);RMIO3U:	.FCTR	[1,1]      RMSLIB/LB:R3UPDA:R3USET-(RMIO3D,RMOU34,RMIO3X);RMIO3X:	.FCTR	(RMOU35,RMOU36,RMOU3P);RMIO3D:	.FCTR	[1,1]RMSLIB/LB:R3DELE:R3DSET:R3RPLC:R3SKDL-RMOU33;RMOU33:	.FCTR	[1,1]RMSLIB/LB:R3PIXC:R3FRRV:R3DLSI;RMOU34:	.FCTR	[1,1]RMSLIB/LB:R3IUDR-(RMOU3J-RMOU3F,RMOU3K,RMOU3G,RMOU3A);RMOU35:	.FCTR	[1,1]RMSLIB/LB:R3ISID-(RMOU3A,RMOU3H);RMOU36:	.FCTR	[1,1]RMSLIB/LB:R3UIDX:R3IKEY-(RMOU3M,RMOU3O,RMOU3A);RMOU3A:	.FCTR	[1,1]RMSLIB/LB:R3ALOC:R3BFMT-RMEXTD;RMOU3C:	.FCTR	[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKT;RMOU3D:	.      FCTR	[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KREF;RMOU3E:	.FCTR	[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTR;RMOU3F:	.FCTR	[1,1]RMSLIB/LB:R3IUDI:R3BSRT;RMOU3G:	.FCTR	[1,1]RMSLIB/LB:R3BRRV:R3URRV;RMOU3H:	.FCTR	[1,1]RMSLIB/LB:R3ISDI:R3BSRT-RMOU3L;RMOU3J:	.FCTR	[1,1]RMSLIB/LB:R3IUDC;RMOU3K:	.FCTR	[1,1]RMSLIB/LB:R3BSPL;RMOU3L:	.FCTR	[1,1]RMSLIB/LB:R3SSPL;RMOU3M:	.FCTR	[1,1]RMSLIB/LB:R3IKYI-RMOU3N;RMOU3N:	.FCTR	[1,1]RMSLIB/LB:R3KSPL;RMOU3O:	.FCTR	[1,1]RMSLIB/LB:R3ROOT;RMOU3P:	.FCTR	[1,1]RMSLIB/LB:R3MKID-RMOU3      A;;;;;;; **************************************************; RMS BLOCK IO OPERATIONS AND; MISC RMS11 RECORD OPERATION ($FREE,$FLUSH,$REWIND,$TRUNCATE);;	NOTE: THE RMMISC AND [1,1]RMSLIB/LB:R0RWBI TERM ARE INDEPENDENT;	AND IF BLOCK IO IS NOT DESIRED THEN THE...../LB:R0RWBI TERM;	MAY BE DELETED AND IF THE MISC. RECORD OPERATIONS ARE NOT;	DESIRED THEN THE RMMISC TERM MAY BE DELETED;;RMSBLK:	.FCTR	RMSBMC-[1,1]RMSLIB/LB:R0RWBI-RMMISC;;RMMISC:	.FCTR	RMSMIS-RMMIS0;RMMIS0:	.FCTR	[1,1]RMSLIB/LB:R0FREE:R1TRUN-RMMIS1;      RMMIS1:	.FCTR	[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGT;RMWATR:	.FCTR	[1,1]RMSLIB/LB:R0WATR-RMR1WL-RMR1RL-RMEXTD;RMMAGT:	.FCTR	[1,1]RMSLIB/LB:R0MAGT;;;;;;;; **************************************************; SEQUENTIAL RECORD OPERATIONS - NO RESIDENT LIBRARY OR RUN-TIME SYSTEM;;RMSSQ0:	.FCTR	RMSSEQ-RMR1RL-RMEXTD-RMSQOP;; SEQUENTIAL RECORD OPERATIONS EITHER CONCATENATED OR OVERLAY; THOSE DESIRED OR ANY COMBINATION OF THE ABOVE;;	REPLACE THE XXXX WITH THE DESIRED FACTOR NAME(S) ETC.;	RMIN10 ---- $GET/$FIND       OPERATIONS FOR SEQUENTIAL FILE;	RMOU1P ---- $PUT OPERATION FOR THE SEQUENTIAL FILE;	RMOU1U ----$UPDATE/$DELETE OPERATION FOR THE SEQENTIAL FILE;;RMSQOP:	.FCTR	[1,1]RMSLIB/LB:R1WTLS:R1CKEF-(XXXX);RMIN10:	.FCTR	[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLD;RMOU1P:	.FCTR	[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLD;RMOU1U:	.FCTR	[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE:R1PSET;; NOTE: IF RMOU1U IS CONCATENATED WITH RMOU1P THEN REMOVE ; ONE OF THE R1PSET MODULES FROM THE ABOVE FACTORS;; ********************************************   N  ******; SEQUENTIAL RECORD OPERATIONS IF LINKING TO THE RMS11 RESIDENT LIBRARY; OR RUN-TIME SYSTEM (IE, UPDATE AND DELETE ONLY);;RMSSQ0:	.FCTR	RMSSEQ-[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE;;	**********************************************************;;	HAVE YOU DELETED ALL THE SEMICOLONS (;) THAT APPLY TO THE;	FACTORS YOU HAVE SELECTED ?N         ›r[ql^› 8$     Ð  ;; STANDARD SYSLIB.OLB MODULES;A00:	.FCTR	[1,1]SYSLIB/LB:AUTO;; STANDARD RMSLIB.OLB MODULES;A01:	.FCTR	[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLKA02:	.FCTR	[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDATA03:	.FCTR	[1,1]RMSLIB/LB:R0RMSE:R0SAVR:R0IDPB:R0RMSA:R0WTBSA04:	.FCTR	[1,1]RMSLIB/LB:R1NXBK:R1RLBK:R0EXTD:R1WTLS:R1CKEFA05:	.FCTR	[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLDA06:	.FCTR	[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLD;;	.ROOT	A00-A01-A02-A03-A04-A05-A06	.END Ð         ›rkQ"S› 8$        øÀ  M                ¤        ©                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          	Ë^ < "Ë^œ & "$© ø LË^š ¾L$©š š E8O§ ¢ øË^= NÎÒ« € ù¿[ æùÄ[ : “Ìq ø ª%/ ª%Ë^9 žª%©2  ª%$©0  ª%ˆ©8 í&»K ø ¹)¨M6 4 º)¸G8 ¸ º)øM6 ì º)(d4 ôº)øf5 V º)Ðz5 Ô»)À€7 ô¼)è!6 Œ ¼)¨W7 2¼)xZ7 ”¾)¸3 Â ¾)¨W7 p ¾)xZ7 Ò ¾)@`4 ,¾)Ðz7  Â)°'3 Â)`Y5 Ä) 8 V Å)°r5 xÅ)xs5 ¶ Æ)H6 LÇ)˜q4 d Ê)`	4 Æ Ê)ˆ'6 ®Ê)p€4   Ë)Ð43 *Ð)4 ’E,kK¤ r E,»K§ E,8O¦ ª E,<O§ €ø8Ë^˜ ’ ø8$©˜ 0 19Ë^Ž :19$©‘ ,I:Ë^ ÜI:$©¢ Ì ;Ë^’ 2 ;$©” ° xEË^• 8 xE$©” ÆzKh @ zKË^j D zK©h (zKˆ©i J9O;i ê :O;i Š       ;OÀ€i ( µWa êµWË^d bµW©b à µWˆ©c â½[èvc ½[¸yc €Ê[ðKb øÊ[èvc Z Ê[¸yc ¼ —`À¨q 0gf:Os Zgf=Ov $:hPu Ð:h0„v † >ht  AhÀu Jht Ì Jh¨t ‚ªp  L ªpË^' <ªp©"  ªp$©  –ªpˆ©& ê q8O§ 0 ›rØ© f›r ª š ºtàG% 6 »tÀ€&  ¾t% ô Ãtp$ Ãtpq$ ÔÃtÐz$ tÄtðx& € Åtø% ºÅtp% VÊt¸# ¾ Êtp$ L ÊtP2% ’ Êt@`#  ÊtÐz$ ® Ítp# †ÍtÐz# èòyz‡ (òy}‡ è æË^£ >*–D Æ *–Ë^S V *–©F N*–$©E  *–ˆ©I ÈQ–Ë^W àT–Ë^U j[–Ë^S ´`–Ë^W D c–Ë^Y N9šà8P l 9š0MP ü9š¨MQ Ì 9š@`Q d :šÐHP Ô <špO Ì <šè!Q $<š`'N Â       <š€L ¦>šLL :@š N ’AšpN üAš`'N Z CšˆYM  DšpO d Dš8^P ¤Fš …N *Fš ™I hHš¸`M v Hš˜qO 4HšrO œHšØrP  Jš0 M KšP<M nNš _P <ñ¨8_ Fñ¨¸tk Ò ô¨¸[` N ô¨xnA Ð ÷¨8h`  ©8B d©¸tk  ©øzB \ ©8. €©¸¦_ ˆ©øHk ˜©¸[B ¦©øzA T ©x
@ † ©øz@ È%©u&p Œ %©¸)k 9©ûL P<©8^ ´@©ÞF ÐD©½`w ŠG©8Z G©ÁSn |G©µYw êJ©|v ”L©8šB èa©¸[[  b©øza   e©ÜKz Ê e©xnA e©¸C :f©8O[ Ú i©8g ´ i©Gwx Z i©Lyw &n©x
D   n©øzD B s©Àlz št©8h[ X v©¸a ¨v©x<g 0 Œ©8_ < •©çy ¦–©Àlz 8–©é
 r š©=	w Â ›©x
g 8      ›©8Og ¼›©øzg z ©Ö}w \ ±©¸/ Ê ±©ø? ¸²©ôp À²©kC ² µ©€}l @ ¹©8g r ¹© Xy ò¹©Ó`C ö ¼©ø/[  ¼©@†{ b ¾©x
C |¾©¸g ö ¾©øzC ¾¿©8h@ < ¿©{‹C n À©+	C * Â© x @Ã©¸¦B  Ä©¸¿? n Ä©øÅ? ° Ä©8Ì? ò Ä©xÒ? 4Ä©¸Ø? vÝ© }y "Ý©€ – æ©ôq @ ª8O[ â)ª¸[[ *ªøza â .ªx<B ".ª8O[ š 6ª`;o œ6ªi;p  7ª+"Œ H;ªx</  ^ª8OA Ž zª¸). x †ªxU\ $ Šª¸). >‹ª¸¦. º ¡ª¸[[ ^£ª86D „ ¯ªàk Ú¯ªô¢ \¯ªø`  ³ª¸¦k V¶ª8Oa $Êªø/ ˆ Êª¸)/ F Úª8Oa fÚª¸[A L ÚªøzA 
 ñªxUA –ÿªx
` VÿªøH` ÿª¸t` ˜«ø/` Ú«8OZ ’«€{ ®«8Z P«€%m Š       («p!v ú*«ø/@ À O«BxQ ŠO«øz\ f O«‹{\ ¬ O«³{\ ð O«Û{\ 4O«|\ xO«+|\ ¼O«S|]   O«{|] D O«£|] ˆ R«ø/_ € R«¸B_ Â R«øa_ U« }y ŠV«¸[a  }«9z ü‘«ø- ì ‘«8@ ’«ôp þ ’«k- d ’«¸)- ô”«8^ ø•«ày T •«¸)Z Ô•«ÉKx Ð •«Z€x ª•«6‘{ Î –«x
. Â–«x<` Ò –«xUA Ø˜«¸. ü ™«Ó`- ¨ œ«¸)f («twq È «áy| € Ÿ«8h- .Ÿ«{‹-    «+	, Ü£«x
f j£«8Of î£«øzf ¬£«¸¦. 6 ¤«¸@ ~ ¤«¸¿+ ¤«øÅ+ F¤«‹Æ, ˜¤«8Ì+ ˆ¤«xÒ+ Ê¤«¸Ø,  ¤«øÞ, N ¤«8å,  ¤«xë, Ò ¤«¸ñ, ¤«ø÷, V¦«¸^ 0¦«¸[^ r½«Ãj ð½« }l À«¸t? úÁ«¸¦] Ì Á«K§] Á«s§] T      Á«›§] ˜Á«Ã§] ÜÁ«ë§^   Á«¨^ d Á«;¨^ ¨ Á«c¨^ ì È«½|  Ì«p,  Ì«•`l ¨ Ì«øq æ Ì«øzB ž Ì«¸B à å«âym üë«øza ^ ò«s…{ <ó«”
 Ð
¬¸)- p¬»K 6 ¬<z \ ¬¸¦- ²?¬8O_ ÊY¬`;x þ[¬øg þj¬ø Ì j¬e;y º ¬¸@ D­ÕZ Ve³¼R
   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           r M        .MACRO	..EMIT	VALÿ 	.IIF	DF	LST$$	.LIST MEB 								VALÿ 	.IIF	DF	LST$$	.NLIST MEBÿ .ENDMÿ     ^M        	.MACRO	$ENTRY	P1,P2 	.LIST P1:: 	.NLISTÿ 	.IF 	GT,R$$TSTÿ 	.NCHR	$X$..,<P1>ÿ 	.IF	GT,$X$..-6ÿ" 	.ERROR			;P1 IS MORE THAN 6 CHAR. 	.MEXITÿ 	.ENDC 	.PSECT	$ENTY1,D,GBL 	$X$..=. 	.RAD50	/P1/ 	.IIF	EQ,.-$X$..-2,.WORD 0 	.WORD	SY.ADRÿ	 	.WORD	P1ÿ
 	.IF	NB	P2
 	.PSECT	P2 	.IFFÿ 	DPSECTÿ 	.ENDC 	.ENDC 	.ENDM	$ENTRYÿ     2M        	.MACRO	$TSTPT		P1,P2,P3,P4,      ?P5  	.IF	GT,R$$TST 	.NCHR	$X$..,<P1>  	.IF	GT,$X$..-6I" 	.ERROR			;P1 IS MORE THAN 6 CHAR. 	.MEXITE 	.ENDC 	.IF	IDN,<CALL>,<P2> 	BIT	#TP.ENB,P1+42 	BEQ	P5  	MOV	@#P1+6,-(SP)F 	JSR	PC,@(SP)+ 	P5: 	.IFF1
 	INC 	P1+6 	.ENDC 	.PSECT	$TSPT1,D,GBL 	$X$..=. P1::	.RAD50	/P1/ 	.IIF	EQ,.-$X$..-2,.WORD 0 	.IF	IDN,<CALL>,<P2> 	.WORD	SY.ADR$ 	.IIF	B,P3,.WORD $TST$$D 	.IIF	NB,P3,.WORD P3 	.IFF. 	.WORD	SY.VALÿ 	.WORD	0 	.ENDC
 	.IF	NB	P4
 	.PSECT	P4 	.IFF  	DPSECT  	.ENDC 	.ENDC 	.ENDM	$TSTP      TP     ” M        	.MACRO	$STGDPLY	STGDESC 	.IF	NB,<STGDESC>O' 	.IIF	DIF	<STGDESC>,<R2>	MOV STGDESC,R2. 	.ENDC 	JSR	PC,$DSTGP 	.ENDM	$STGDPLYP     ’ M        	.MACRO	$GETSTG	STGDESC, 	.IF	NB,<STGDESC>1' 	.IIF	DIF	<STGDESC>,<R2>	MOV STGDESC,R2L 	.ENDC 	JSR	PC,$GTSTG 	.ENDM	$GETSTG     ÀM        .MACRO STRU$B NAME .IF DF R$$TST$ 	.IF GT R$$TST-1 	.NCHR $X$..,NAMEP 	.IF GT $X$..-6.3 	.ERROR ;***** NAME IS MORE THAN 6-CHARACTERS *****C 	.MEXITF 	.ENDC 	.PSECT $STRU3,D,GBL .IIF EQ R$      $TST-2 .LIST	 	...CSG=.. 	.ASCII ?%N?<^O73>?    'NAME'? 	.PSECT $STRU1,D,GBL 	$X$..=. 	.RAD50 /NAME/ 	.IIF EQ .-$X$..-2  .WORD 0  	.WORD 	SY.ADR 	.WORD	...CSG  .IIF EQ R$$TST-2 .NLISTS 	.PSECTN 	.ENDC 	.ENDC .ENDM STRU$B     ¾ M        .MACRO STRU$E  .IF DF R$$TST  .IF GT R$$TST-1  	.PSECT $STRU3,D,GBL .IIF EQ R$$TST-2 .LIST 	.BYTE	0 .IIF EQ R$$TST-2 .NLIST. 	.PSECT. 	.ENDC 	.ENDC .ENDM STRU$E     ô M        .MACRO $EMSTG STRING .IF DF R$$TSTC .IF NB <STRING>D .IF GT R$$TST-      1T 	.PSECT $STRU3,D,GBL 	.IIF	EQ,R$$TST-2,.LIST' 	.ASCII ?%N?<^O73>?'STRING'? 	.IIF	EQ,R$$TST-2,.NLIST 	.PSECT. 	.ENDC 	.ENDC 	.ENDC .ENDM $EMSTG     Ì M        .MACRO RMS$L SYM,SIZE,STRING .MCALL $EMSTGC
 .IF NB SYM SYM=^O<...TPC> 	.ENDC .IF NB SIZE  	...TPC=^O<...TPC+SIZE>$ 	.ENDC .IIF B <STRING> .MEXIT $EMSTG <STRING>I .ENDM RMS$L      € M        .MACRO RMS$G SYM,SIZE,STRING .MCALL RMS$L .IIF NB SYM   .GLOBL	SYM RMS$L SYM,SIZE,<STRING>R .ENDM RMS$GB     T M        .MACRO       DFIN$G SYM,VALR 	.GLOBL	SYMI SYM=^O<VAL>, .ENDM DFIN$G     F M        .MACRO DFIN$L SYM,VAL, SYM=^O<VAL>C .ENDM DFIN$L     f M        .MACRO DEF$SZ SYM,SIZE,STRINGC# .IIF NB SIZE ...TPC=^O<...TPC+SIZE>T .ENDM DEF$SZ     
M       . .MACRO $STRIP FIELD,P0,P1,P2,P3,P4,P5,P6,P7,P8 .IRP NN,\...ARGT .IIF IDN P0 <EEEE> .MEXITG .IIF B P0 .MEXIT $'FIELD''NN'=^D'P0 ...SIZ=...SIZ+$'FIELD''NN  ...ARG=...ARG+1F$ $STRIP FIELD,P1,P2,P3,P4,P5,P6,P7,P8 ...ARG=0 .ENDMM .ENDM $STRIP     FM              .MACRO $SEQCK TAB1,TAB2,TYPE,BB= .IF NDF ...SEQ ...SEQ=1 ...TBL=0 ...RAB=0 ...FAB=0 ...XAB=0 ...NAM=0 ...LCB=0	 ...POOL=0  ...ARG=0 ...SIZ=0 ...RMS=0 .ENDCS ...ERR=0 .IF NB <BB>. .IF GT <...TBL>E3 	.ERROR ;***** MORE THAN ONE TABLE BEING INIT *****L	 	...ERR=1P 	.MEXIT6 	.ENDC .ENDC, .IIF B <TAB2> .MEXIT .IF EQ ...'TAB2I* 	.ERROR ;***** MISSING TAB2'$B MACRO *****	 	...ERR=1L 	.MEXIT. 	.ENDC .IIF  B <TYPE> .MEXIT, .IF NE <$COD-'TYPE> 5 	.ERROR ;***** XAB$B SPECIFIED CONFLICTING T      YPE *****O	 	...ERR=11 	.MEXITE 	.ENDC .ENDM $SEQCK     Â M       & .MACRO $UFLD$ FIELD,TAB1,TAB2,NAME,ARG .MCALL $SEQCK,..EMIT $SEQCK TAB1,TAB2,NAME. .IIF EQ ...ERR-1 .MEXIT  .IIF B <ARG> .MEXIT< ..EMIT <$'FIELD'=^D<ARG>>R .ENDM $UFLD$     Ø M        .MACRO FIELD$ NAME,LENGTH. .MCALL ..EMITI ...PC1=.  .=...TAB+O$'NAME. .IF EQ LENGTH-1* ..EMIT <.BYTE	$'NAME>C 	.ENDC .IF EQ LENGTH-2E ..EMIT <.WORD	$'NAME>T 	.ENDC .=...PC1 .ENDM FIELD$     üM         .MACRO $CHKMV SRC,FIELD,PTR,      TYPE .MCALL $'FIELD'$,..EMITI .NTYPE ...TYP,PTRS ..TMP0=...TYP&^O070  .IF NE ..TMP0 3 	.ERROR ;***** TABLE-POINTER MUST BE REGISTER *****K 	.MEXIT2 	.ENDC ..TMP0=...TYP&^O07 .IF GT ..TMP0-5>5 	.ERROR ;***** TABLE-POINTER MUST BE R0-R5 ONLY *****  	.MEXIT  	.ENDC .NTYPE ...TYP,SRCT ...ERR=1	 $'FIELD'$. .IF EQ ...ERR-1+) 	.ERROR ;***** INVALID NAME - FIELD *****' 	.MEXIT. .ENDCI .IF EQ ...TYP-^O27 	.IF IDN <TYPE> <S>. 	  .IF GT ...LEN-2 	    .IF DIF <SRC> <#0> < 	      .ERROR ;***** FIELD T      OO LONG FOR IMMEDIATE MODE ***** 	      .MEXITT
 	    .ENDC 	  .ENDC 	.ENDC 	.IF IDN <TYPE> <L>*6 	.ERROR ;***** IMMEDIATE MODE INVALID FOR SOURCE ***** 	.MEXITM 	.ENDC 	.ENDC ...TMP=...TYP&^O70 .IF EQ ...TMPB 	...TMP=...TYP&^O07- 	.IF EQ ...TMP-7& 	.ERROR ;***** CANNOT DESTROY PC ***** 	.MEXITI 	.ENDC 	.ENDC .IF EQ ...LEN-1  ...XXX=0 .IIF IDN <FIELD> <COD> ...XXX=1. .IIF IDN <FIELD> <BID> ...XXX=1F 	.IF IDN <TYPE> <L>. 	...TMP=...TYP&^O70. 	.IF EQ ...TMP 	.IF IDN <PTR>,<SRC>2 	.IIF EQ       ...XXX ..EMIT <MOVB	O$'FIELD'('PTR'),SRC>+ 	.IIF EQ ...XXX-1 ..EMIT <MOVB	('PTR'),SRC>N 	..EMIT <BIC	#^C377,SRC> 	.IFFD 	..EMIT <CLR	SRC>O2 	.IIF EQ ...XXX ..EMIT <BISB	O$'FIELD'('PTR'),SRC>+ 	.IIF EQ ...XXX-1 ..EMIT <BISB	('PTR'),SRC>- 	.ENDC 	.IFFP2 	.IIF EQ ...XXX ..EMIT <MOVB	O$'FIELD'('PTR'),SRC>+ 	.IIF EQ ...XXX-1 ..EMIT <MOVB	('PTR'),SRC>  	.ENDC 	.MEXIT< 	.ENDC 	.IF IDN <TYPE> <S>L 		.IF IDN <SRC> <#0>/ 		.IIF EQ ...XXX ..EMIT <CLRB	O$'FIELD'('PTR')> ( 		.IIF EQ ...XXX-1 ..EMIT <CLRB	('PT      R')> 		.IFF3 		.IIF EQ ...XXX ..EMIT <MOVB	SRC,O$'FIELD'('PTR')>M, 		.IIF EQ ...XXX-1 ..EMIT <MOVB	SRC,('PTR')> 		.ENDCD 	.MEXIT  	.ENDC 	.ENDC .IF EQ ...LEN-2T6 	.IIF IDN <TYPE> <L> ..EMIT <MOV	O$'FIELD'('PTR'),SRC> 	.IF IDN <TYPE> <S>. 		.IF IDN <SRC> <#0> 		..EMIT <CLR	O$'FIELD'('PTR')>T 		.IFF# 		..EMIT <MOV	SRC,O$'FIELD'('PTR')>R 		.ENDC  	.ENDC 	.MEXIT  	.ENDC .IF IDN <SRC> <#0> .IF IDN <TYPE> <S> ..EMIT <CLR	O$'FIELD'('PTR')>R0 .IIF GE ...LEN-4 ..EMIT <CLR	2+O$'FIELD'('PTR')>0 .IIF G      E ...LEN-6 ..EMIT <CLR	4+O$'FIELD'('PTR')>1 .IIF GE ...LEN-10 ..EMIT <CLR	6+O$'FIELD'('PTR')> 2 .IIF GE ...LEN-12 ..EMIT <CLR	10+O$'FIELD'('PTR')>2 .IIF GE ...LEN-14 ..EMIT <CLR	12+O$'FIELD'('PTR')>2 .IIF GE ...LEN-16 ..EMIT <CLR	14+O$'FIELD'('PTR')>2 .IIF GE ...LEN-20 ..EMIT <CLR	16+O$'FIELD'('PTR')> .MEXIT .ENDCT .ENDCR ...TMP=...TYP&^O70 .IF EQ ...TMPN 	.IF GT ...LEN-12.6 	.ERROR ;***** FIELD SIZE TOO LONG FOR REGISTERS ***** 	.MEXITP 	.ENDC 	...TMP=...TYP&^O07I 	.IF GT ...TMP-..TMP0' 	...TMP=      <^O6-...TMP>*2 	.IF LT ...TMP-...LENT1 	.ERROR ;***** FIELD TOO LONG FOR SRC -> R5 *****R 	.MEXITF 	.ENDC 	.IFF. 	...TMP=<..TMP0-...TMP>*2' 	.IF LT 2+...TMP-...LENM4 	.ERROR ;***** FIELD TOO LONG FOR SRC -> PTR-1 ***** 	.MEXITO 	.ENDC 	.ENDC .IF IDN <TYPE> <L>  ..EMIT <MOV	O$'FIELD'(PTR'),SRC>7 .IIF GE ...LEN-4 ..EMIT <MOV	2+O$'FIELD'('PTR'),SRC'+1>N7 .IIF GE ...LEN-6 ..EMIT <MOV	4+O$'FIELD'('PTR'),SRC'+2>F8 .IIF GE ...LEN-10 ..EMIT <MOV	6+O$'FIELD'('PTR'),SRC'+3>9 .IIF GE ...LEN-12 ..EMIT <MOV	10      +O$'FIELD'('PTR'),SRC'+4>.9 .IIF GE ...LEN-14 ..EMIT <MOV	12+O$'FIELD'('PTR'),SRC'+5>*9 .IIF GE ...LEN-16 ..EMIT <MOV	14+O$'FIELD'('PTR'),SRC'+6> 9 .IIF GE ...LEN-20 ..EMIT <MOV	16+O$'FIELD'('PTR'),SRC'+7>  .IFF! ..EMIT <MOV	SRC,O$'FIELD'('PTR')>N7 .IIF GE ...LEN-4 ..EMIT <MOV	SRC'+1,2+O$'FIELD'('PTR')> 7 .IIF GE ...LEN-6 ..EMIT <MOV	SRC'+2,4+O$'FIELD'('PTR')> 8 .IIF GE ...LEN-10 ..EMIT <MOV	SRC'+3,6+O$'FIELD'('PTR')>9 .IIF GE ...LEN-12 ..EMIT <MOV	SRC'+4,10+O$'FIELD'('PTR')>I9 .IIF GE ...LEN-14 ..EMIT <MO      V	SRC'+5,12+O$'FIELD'('PTR')>I9 .IIF GE ...LEN-16 ..EMIT <MOV	SRC'+6,14+O$'FIELD'('PTR')>I9 .IIF GE ...LEN-20 ..EMIT <MOV	SRC'+7,16+O$'FIELD'('PTR')>I .IFTF. .MEXIT .ENDC< .ENDCO ...ATO=0 ...TMP=...TYP&^O70 .IIF EQ ...TMP-^O20 ...ATO=1 .IIF EQ ...TMP-^O40 ...ATO=1 .IF EQ ...ATO-1$ .IF IDN <TYPE> <L>! ..EMIT <MOV	O$'FIELD'('PTR'),SRC>+4 .IIF GE ...LEN-4 ..EMIT <MOV	2+O$'FIELD'('PTR'),SRC>4 .IIF GE ...LEN-6 ..EMIT <MOV	4+O$'FIELD'('PTR'),SRC>5 .IIF GE ...LEN-10 ..EMIT <MOV	6+O$'FIELD'('PTR'),SRC><6       .IIF GE ...LEN-12 ..EMIT <MOV	10+O$'FIELD'('PTR'),SRC>6 .IIF GE ...LEN-14 ..EMIT <MOV	12+O$'FIELD'('PTR'),SRC>6 .IIF GE ...LEN-16 ..EMIT <MOV	14+O$'FIELD'('PTR'),SRC>6 .IIF GE ...LEN-20 ..EMIT <MOV	16+O$'FIELD'('PTR'),SRC> .IFF! ..EMIT <MOV	SRC,O$'FIELD'('PTR')> 4 .IIF GE ...LEN-4 ..EMIT <MOV	SRC,2+O$'FIELD'('PTR')>4 .IIF GE ...LEN-6 ..EMIT <MOV	SRC,4+O$'FIELD'('PTR')>5 .IIF GE ...LEN-10 ..EMIT <MOV	SRC,6+O$'FIELD'('PTR')>M6 .IIF GE ...LEN-12 ..EMIT <MOV	SRC,10+O$'FIELD'('PTR')>6 .IIF GE ...LEN-14 ..EMIT <      MOV	SRC,12+O$'FIELD'('PTR')>6 .IIF GE ...LEN-16 ..EMIT <MOV	SRC,14+O$'FIELD'('PTR')>6 .IIF GE ...LEN-20 ..EMIT <MOV	SRC,16+O$'FIELD'('PTR')> .IFTF' .MEXIT .ENDCR .ENDCF .IF EQ ...TMP-^O60 .IF IDN <TYPE> <L>! ..EMIT <MOV	O$'FIELD'('PTR'),SRC>$8 .IIF GE  ...LEN-4 ..EMIT <MOV	2+O$'FIELD'('PTR'),2+'SRC>7 .IIF GE ...LEN-6 ..EMIT <MOV	4+O$'FIELD'('PTR'),4+'SRC>'8 .IIF GE ...LEN-10 ..EMIT <MOV	6+O$'FIELD'('PTR'),6+'SRC>; .IIF  GE ...LEN-12 ..EMIT <MOV	10+O$'FIELD'('PTR'),10+'SRC>>; .IIF GE ...LEN-14 ..EMIT        <MOV	12+O$'FIELD'('PTR'),12+'SRC>F: .IIF GE ...LEN-16 ..EMIT <MOV	14+O$'FIELD'('PTR'),14+'SRC>: .IIF GE ...LEN-20 ..EMIT <MOV	16+O$'FIELD'('PTR'),16+'SRC> .IFF! ..EMIT <MOV	SRC,O$'FIELD'('PTR')>I7 .IIF GE ...LEN-4 ..EMIT <MOV	2+'SRC,2+O$'FIELD'('PTR')>F7 .IIF GE ...LEN-6 ..EMIT <MOV	4+'SRC,4+O$'FIELD'('PTR')>F8 .IIF GE ...LEN-10 ..EMIT <MOV	6+'SRC,6+O$'FIELD'('PTR')>: .IIF GE ...LEN-12 ..EMIT <MOV	10+'SRC,10+O$'FIELD'('PTR')>: .IIF GE ...LEN-14 ..EMIT <MOV	12+'SRC,12+O$'FIELD'('PTR')>: .IIF GE ...LEN-16 ..      EMIT <MOV	14+'SRC,14+O$'FIELD'('PTR')>: .IIF GE ...LEN-20 ..EMIT <MOV	16+'SRC,16+O$'FIELD'('PTR')> .IFTF. .MEXIT .ENDC< .ENDCO9 .ERROR ;***** SRC =INVALID/UNSUPPORTED ADDRESS MODE *****P .ENDM $CHKMV     Š M        .MACRO $WRDS TAB,FIELD,X .MCALL $SEQCK,$$LNUM $SEQCK TAB,TAB .IIF EQ ...ERR-1 .MEXITF $$LNUM FIELD,X .ENDM $WRDSO     úM        	.MACRO	$$LNUM	FIELD,WORD1 .MCALL ..EMIT0 	$$$B1=0 	$$$B2=0 	$$$B3=0 	$$$B4=0 	.IRPC	D,WORDO 	.IIF IDN <D> <.> .MEXIT 	$$$B1=$$$B1*10.+D'. 	$      $$C=$$$B1/256. 	$$$B1=$$$B1&377 	$$$B2=$$$B2*10.+$$$C2 	$$$C=$$$B2/256. 	$$$B2=$$$B2&377 	$$$B3=$$$B3*10.+$$$C  	$$$C=$$$B3/256. 	$$$B3=$$$B3&377 	$$$B4=$$$B4*10.+$$$CE 	$$$C=$$$B4/256. 	$$$B4=$$$B4&377 	.ENDM 	$$$H=$$$B4*256.+$$$B3 	$$$L=$$$B2*256.+$$$B1 ..EMIT <$'FIELD'0=$$$L>E ..EMIT <$'FIELD'1=$$$H>M 	.ENDM	$$LNUM      üM        .MACRO $CALL$ PROC,TAB,ERR,SUC .MCALL ..EMITI 	.GLOBL $RMSIA 	.GLOBL PROC ...NUM=0 .IIF NB <TAB> ...NUM=...NUM+1D .IIF NB <ERR> ...NUM=...NUM+1D .IIF       NB <SUC> ...NUM=...NUM+1$ .IF NE ...NUM$ ...NUM=0 .IF NB <TAB> 	..EMIT <MOV	R5,-(SP)> 	.IF NB <SUC>3 	...NUM=...NUM+1 	..EMIT <MOV	SUC,-(SP)>3 	.ENDC 	.IF B <ERR> 	.IF NB <SUC>B 	...NUM=...NUM+1 	..EMIT <MOV	#-1,-(SP)>B 	.ENDC 	.IFF$ 	...NUM=...NUM+1 	..EMIT <MOV	ERR,-(SP)>L .ENDCM ..EMIT <MOV	TAB,-(SP)> ...NUM=...NUM+1  ..EMIT <MOV	#...NUM,-(SP)> ..EMIT <MOV	SP,R5> .IFF- 		.ERROR ;***** MISSING TABLE PARAMETER *****  		.MEXIT 		.ENDCM .ENDC+ ..EMIT	<JSR	PC,'PROC>M .IIF EQ ...NUM       .MEXITC ..EMIT 	<ADD	#...NUM*2+2,SP> 	..EMIT <MOV	(SP)+,R5> .ENDM $CALL$     JM        .MACRO RABDF$ P1 .MCALL RABOF$,..EMIT RABOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** RAB MUST BE WORD ALIGNED *****F	 	...ERR=1= 	.MEXIT  	.ENDC ...TAB=. ..RBLN=0! .IIF B <P1> ..EMIT <.BLKB	RB$BLN>M" .IIF NB <P1> ..EMIT <.BLKB	RB$BLL> .IIF NB <P1> ..RBLN=1  .ENDM RABDF$     ~M        .MACRO RAB$BT DEF 
 .MCALL DEF 	DEF   	RB$BID,1 	DEF     RB$SEQ,0C 	DEF     RB$KEY,      1. 	DEF     RB$RFA,2D 	DEF     RB$EOF,1. 	DEF	RB$MAS,2+ 	DEF     RB$WAT,4  	DEF	RB$RLK,RB$WAT 	DEF     RB$HSH,10 	DEF     RB$LOA,20 	DEF     RB$ULK,40 	DEF	RB$LOK,RB$ULK 	DEF     RB$LOC,100  	DEF     RB$ASY,200S 	DEF     RB$RAH,400* 	DEF     RB$WBH,1000 	DEF   	RB$KGE,2000  	DEF   	RB$KGT,4000  	DEF  	RB$FDL,10000M 	DEF	RB$UIF,20000I 	DEF	RB$NKC,1> 	DEF	RB$NK3,2. 	DEF	RB$ORG,4  	DEF	RB$BK1,10 	DEF	RB$BK3,20 	DEF	RB$NW1,40 	DEF	RB$X1A,100	 	DEF	RB$X2A,200  .MACRO RAB$BT DEF  .ENDM       RAB$BT .ENDM RAB$BT     ªM        .MACRO RAB$B P1, .MCALL $SEQCK,RABDF$,RAB$BTR6 .MCALL R$RAC,R$ROP,R$UBF,R$USZ,R$RBF,R$RSZ,R$KBF,R$KSZ< .MCALL R$KRF,R$BKT,R$RHB,R$FAB,R$MBF,R$MBC,RAB$E,R$CTX,R$LSN RAB$BT DFIN$L0 $SEQCK RAB,,,BBA .IIF EQ ...ERR-1 .MEXIT0 .IF NB <P1>B .IF DIF <P1> <ASYN>B .IF DIF <P1> <SYN>5 .ERROR	;***** BAD PARAMETER SPELLING (SYN/ASYN) *****R .MEXIT .ENDCR RABDF$ .IFF	 RABDF$	BB  .ENDC$ .IFF RABDF$ .ENDC0 .IIF EQ ...ERR-1 .MEXITR ...TBL=1 ...RAB=1 $RAC=0 $ROP=0       $UBF=0 $USZ=0 $RBF=0 $RSZ=0 $KBF=0 $KSZ=0 $KRF=0 $BKT0=0L $BKT1=0A $RHB=0 $FAB=0 $MBF=0 $MBC=0 $LSN=0 $DUP=0 $STS=0 $STV=0 $ISI=0 $RFA=0 $CTX=0 $BID=RB$BIDR .ENDM RAB$BB     b M        .MACRO R$RAC VALUE .MCALL $UFLD$F $UFLD$ RAC,RAB,RAB,,<VALUE>< .ENDM R$RAC      f M        .MACRO R$ROP OPTIONS .MCALL $UFLD$A $UFLD$ ROP,RAB,RAB,,<OPTIONS>R .ENDM R$ROPD     b M        .MACRO R$UBF LABEL .MCALL $UFLD$E $UFLD$ UBF,RAB,RAB,,<LABEL>R .ENDM R$UBF.     d M        .MAC      RO R$USZ NUMBER  .MCALL $UFLD$  $UFLD$ USZ,RAB,RAB,,<NUMBER> .ENDM R$USZ      b M        .MACRO R$RBF LABEL .MCALL $UFLD$0 $UFLD$ RBF,RAB,RAB,,<LABEL>X .ENDM R$RBFI     d M        .MACRO R$RSZ NUMBERC .MCALL $UFLD$  $UFLD$ RSZ,RAB,RAB,,<NUMBER> .ENDM R$RSZ<     b M        .MACRO R$KBF LABEL .MCALL $UFLD$S $UFLD$ KBF,RAB,RAB,,<LABEL>R .ENDM R$KBFO     ` M        .MACRO R$KSZ SIZE  .MCALL $UFLD$B $UFLD$ KSZ,RAB,RAB,,<SIZE> .ENDM R$KSZL     b M        .MACRO R$KRF VALUE .MCA      LL $UFLD$N $UFLD$ KRF,RAB,RAB,,<VALUE>$ .ENDM R$KRF,     \ M        .MACRO R$BKT NUMBER  .MCALL $WRDS $WRDS RAB,BKT,<NUMBER> .ENDM R$BKTB     b M        .MACRO R$RHB LABEL .MCALL $UFLD$O $UFLD$ RHB,RAB,RAB,,<LABEL>  .ENDM R$RHBR     b M        .MACRO R$FAB LABEL .MCALL $UFLD$C $UFLD$ FAB,RAB,RAB,,<LABEL>S .ENDM R$FABR     d M        .MACRO R$MBF NUMBER  .MCALL $UFLD$O $UFLD$ MBF,RAB,RAB,,<NUMBER> .ENDM R$MBFB     d M        .MACRO R$MBC NUMBER  .MCALL $UFLD$K $UFLD$ MBC,R      AB,RAB,,<NUMBER> .ENDM R$MBCB     b M        .MACRO R$CTX VALUE .MCALL $UFLD$B $UFLD$ CTX,RAB,RAB,,<VALUE>D .ENDM R$CTXM     j M        .MACRO R$LSN NUMBERM2 .PRINT ;***** R$LSN NOT SUPPORTED BY RMS-11  ***** .ENDM R$LSNE     RM        .MACRO RAB$E .MCALL $SEQCK,FIELD$,..EMITD $SEQCK RAB,RAB .IIF EQ ...ERR-1 .MEXIT$ FIELD$ BID,1 ...PC1=. .=...TAB+O$BLN$ .IIF EQ ..RBLN ..EMIT <.BYTE	RB$BLN>& .IIF EQ ..RBLN-1 ..EMIT <.BYTE	RB$BLL> .=...PC1 FIELD$ CTX,2 FIELD$ ISI,2 FIELD$ STS,2 FI      ELD$ STV,2 ...PC1=. .=...TAB+O$RFA ..EMIT <.WORD	0,0,0> .=...PC1 FIELD$ RAC,1 FIELD$ KSZ,1 FIELD$ ROP,2 FIELD$ USZ,2 FIELD$ UBF,2 FIELD$ RSZ,2 FIELD$ RBF,2 FIELD$ KBF,2 FIELD$ KRF,1 FIELD$ MBF,1 FIELD$ MBC,1 FIELD$ RHB,2 FIELD$ FAB,2 FIELD$ BKT0,2E FIELD$ BKT1,2, ...TBL=0 ...RAB=0 .ENDM RAB$EI     ÈM        .MACRO RABOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF DIF <OFFSET> <DEF$SZ> STRU$B RABE! 	OFFSET	O$BID,1,<BID AND BLN= %P>I 	OFFSET	O$BLN,1$! 	OFFSET	      O$CTX,2,<CTX        = %P>.! 	OFFSET	O$ISI,2,<ISI        = %P>=! 	OFFSET	O$STS,2,<STS        = %P> ! 	OFFSET	O$STV,2,<STV        = %P>U! 	OFFSET	O$RFA,6,<RFA        = %P>I! 	$EMSTG         <           = %P>F! 	$EMSTG         <           = %P>L! 	OFFSET	O$RAC,1,<RAC & KSZ  = %P>T 	OFFSET	O$KSZ,1.! 	OFFSET	O$ROP,2,<ROP        = %P> ! 	OFFSET	O$USZ,2,<USZ        = %P>S! 	OFFSET	O$UBF,2,<UBF        = %P>T! 	OFFSET	O$RSZ,2,<RSZ        = %P>R! 	OFFSET	O$RBF,2,<RBF        = %P>B! 	OFFSET	O$KBF,2,<KBF        = %P>	      ! 	OFFSET	O$KRF,1,<KRF AND MBF= %P>	 	OFFSET	O$MBF,1 ! 	OFFSET	O$MBC,1,<MBC & SPARE= %P> 
 	OFFSET	,1! 	OFFSET	O$RHB,2,<RHB        = %P>O! 	OFFSET	O$FAB,2,<FAB        = %P>$! 	OFFSET	O$BKT,0,<BKT        = %P>$ 	OFFSET	O$BKT0,2 	OFFSET	O$BKT1,2! 	$EMSTG         <           = %P>O! 	OFFSET	     ,2,<SPARES     = %P>P! 	OFFSET	O$RT0,2,<RT0        = %P>Z! 	OFFSET	O$RT1,2,<RT1        = %P>F! 	OFFSET	O$RT2,2,<RT2        = %P>Z! 	OFFSET	O$RT3,2,<RT3        = %P>F! 	OFFSET	O$RT4,2,<RT4        = %P>F! 	OFFSET	O$RT      5,2,<RT5        = %P>F! 	OFFSET	O$RT6,2,<RT6        = %P>O! 	OFFSET	O$RT7,2,<RT7        = %P>O! 	OFFSET	O$RT8,2,<RT8        = %P> ! 	OFFSET	O$RT9,2,<RT9        = %P> " 	OFFSET	O$RT10,2,<RT10       = %P>" 	OFFSET	O$RBD0,2,<RBD0       = %P>" 	OFFSET	O$RBD1,2,<RBD1       = %P>" 	OFFSET	O$RBDB,2,<RBDB       = %P>" 	OFFSET	O$ROVL,2,<ROVL       = %P>" 	OFFSET	O$RPAR,2,<RPAR       = %P>" 	OFFSET	O$RIOS,2,<RIOS       = %P>" 	OFFSET	O$RIO2,2,<           = %P> .IF IDN <OFFSET> <DEF$SZ>R 	RMS$L	RB$BLNF 	.IFFE 	OFF      SET	RB$BLN 	.ENDC! .IIF DIF <OFFSET> <DEF$SZ> STRU$E  	OFFSET	O$RASY,80. .IF IDN <OFFSET> <DEF$SZ>E 	RMS$L	RB$BLL  	.MEXITP 	.IFFF 	OFFSET	RB$BLL 	.ENDC .IF DF R$$TST	 .IIF GT R$$TST-1 .MEXIT> .ENDCE .MACRO RABOF$ OFFSET .ENDM RABOF$ .ENDM RABOF$     B M        .MACRO $RT0$ ...ERR=0 ...LEN=2 .ENDM $RT0$L     B M        .MACRO $RT1$ ...ERR=0 ...LEN=2 .ENDM $RT1$	     B M        .MACRO $RT2$ ...ERR=0 ...LEN=2 .ENDM $RT2$I     B M        .MACRO $RT3$ ...ERR=0 ...LEN=2       .ENDM $RT3$      B M        .MACRO $RT4$ ...ERR=0 ...LEN=2 .ENDM $RT4$I     B M        .MACRO $RT5$ ...ERR=0 ...LEN=2 .ENDM $RT5$E     B M        .MACRO $RT6$ ...ERR=0 ...LEN=2 .ENDM $RT6$E     B M        .MACRO $RT7$ ...ERR=0 ...LEN=2 .ENDM $RT7$      B M        .MACRO $RT8$ ...ERR=0 ...LEN=2 .ENDM $RT8$      B M        .MACRO $RT9$ ...ERR=0 ...LEN=2 .ENDM $RT9$      D M        .MACRO $RT10$N ...ERR=0 ...LEN=2 .ENDM $RT10$     D M        .MACRO $RPAR$2       ...ERR=0 ...LEN=2 .ENDM $RPAR$     D M        .MACRO $ROVL$  ...ERR=0 ...LEN=2 .ENDM $ROVL$     D M        .MACRO $RBDB$E ...ERR=0 ...LEN=2 .ENDM $RBDB$     D M        .MACRO $RIOS$D ...ERR=0 ...LEN=2 .ENDM $RIOS$     B M        .MACRO $RAC$ ...ERR=0 ...LEN=1 .ENDM $RAC$O     B M        .MACRO $ROP$ ...ERR=0 ...LEN=2 .ENDM $ROP$O     B M        .MACRO $UBF$ ...ERR=0 ...LEN=2 .ENDM $UBF$O     B M        .MACRO $USZ$ ...ERR=0 ...LEN=2 .ENDM $USZ$C     B M              .MACRO $RBF$ ...ERR=0 ...LEN=2 .ENDM $RBF$M     B M        .MACRO $RSZ$ ...ERR=0 ...LEN=2 .ENDM $RSZ$      B M        .MACRO $KBF$ ...ERR=0 ...LEN=2 .ENDM $KBF$      B M        .MACRO $KSZ$ ...ERR=0 ...LEN=1 .ENDM $KSZ$      B M        .MACRO $RHB$ ...ERR=0 ...LEN=2 .ENDM $RHB$      B M        .MACRO $KRF$ ...ERR=0 ...LEN=1 .ENDM $KRF$      B M        .MACRO $BKT$ ...ERR=0 ...LEN=4 .ENDM $BKT$      B M        .MACRO $RFA$ ...ERR=0 ...LEN=6 .ENDM $R      FA$      B M        .MACRO $ISI$ ...ERR=0 ...LEN=2 .ENDM $ISI$      B M        .MACRO $MBF$ ...ERR=0 ...LEN=1 .ENDM $MBF$      B M        .MACRO $MBC$ ...ERR=0 ...LEN=1 .ENDM $MBC$      B M        .MACRO $FAB$ ...ERR=0 ...LEN=2 .ENDM $FAB$      ö M        .MACRO FABDF$N .MCALL FABOF$,..EMIT FABOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** FAB MUST BE WORD ALIGNED *****4	 	...ERR=1T 	.MEXIT  	.ENDC ...TAB=. ..EMIT <.BLKB	FB$BLN>N .ENDM FABD      F$     M        .MACRO FAB$BT DEF.
 .MCALL DEF 	DEF    FB$BID,3 	DEF    FB$PUT,1 	DEF    FB$GET,2 	DEF    FB$DEL,4 	DEF    FB$UPD,10  	DEF    FB$TRN,20$ 	DEF    FB$BIO,40L 	DEF    FB$REA,FB$BIO!FB$GET 	DEF    FB$WRT,FB$BIO!FB$PUT# 	DEF    FB$WRI,FB$PUT!FB$UPD!FB$DEL  	DEF    FB$NIL,100 	DEF    FB$SEQ,0 	DEF    FB$REL,20  	DEF    FB$IDX,40. 	DEF    FB$DIR,60B 	DEF    FB$DBM,100 	DEF    FB$FMX,100 	DEF    FB$FTN,1 	DEF    FB$CR,2I 	DEF    FB$PRN,4 	DEF    FB$BLK,10B 	DEF    FB$RWO,1       	DEF    FB$RWC,2 	DEF    FB$WAT,4 	DEF    FB$POS,10D 	DEF    FB$DLK,20F 	DEF    FB$JNL,40  	DEF    FB$ACK,100 	DEF    FB$CTG,200 	DEF    FB$SUP,400 	DEF    FB$NEF,1000B 	DEF    FB$TMP,2000A 	DEF    FB$MKD,4000  	DEF    FB$TMD,FB$TMP!FB$MKD 	DEF    FB$FID,10000 	DEF    FB$UDF,0 	DEF    FB$FIX,1 	DEF    FB$VAR,2 	DEF    FB$VFC,3 	DEF    FB$STM,4 	DEF    FB$REC,1 	DEF    FB$CCL,2 	DEF    FB$TRM,4 	DEF    FB$MDI,101 	DEF    FB$SDI,20  	DEF    FB$SQD,40D .MACRO FAB$BT DEFD .ENDM FAB$BT       .ENDM FAB$BT     ´M        .MACRO FAB$B .MCALL $SEQCK,FABDF$,FAB$BTF6 .MCALL F$FAC,F$SHR,F$JFN,F$RTV,F$ORG,F$RAT,F$FOP,F$XAB6 .MCALL F$MRS,F$JNL,F$MRN,F$BSZ,F$ALQ,F$BLS,F$NAM,F$RFM6 .MCALL F$FSZ,F$FNA,F$FNS,F$DNA,F$DNS,F$LCH,F$BKS,FAB$E .MCALL F$CTX,F$BPA,F$BPS,F$DEQ FAB$BT DFIN$L0 $SEQCK FAB,,,BB1 .IIF EQ ...ERR-1 .MEXIT  FABDF$ .IIF EQ ...ERR-1 .MEXITF ...TBL=1 ...FAB=1 $FAC=FB$GETD $SHR=FB$GET4 $FOP=0 $JFN=0 $RTV=0 $ORG=FB$SEQ2 $RAT=0 $XAB=0 $MRS=0 $MRN0=0B $MRN1=0  $BPA=0 $B      PS=0 $JNL=0 $ALQ0=0  $ALQ1=0  $DEQ=0 $BLS=0 $NAM=0 $RFM=FB$VARF $FSZ=0 $BKS=0 $LCH=0 $FNA=0 $FNS=0 $DNA=0 $DNS=0 $STS=0 $STV=0 $IFI=0 $CTX=0 $DEV=0 $BID=FB$BIDN .ENDM FAB$BA     h M        .MACRO F$FAC  OPTIONSB .MCALL $UFLD$L $UFLD$ FAC,FAB,FAB,,<OPTIONS>T .ENDM F$FACQ     f M        .MACRO F$SHR OPTIONS .MCALL $UFLD$  $UFLD$ SHR,FAB,FAB,,<OPTIONS>F .ENDM F$SHR$     p M        .MACRO F$JFN NUMBERV8 .PRINT ;***** JFN FIELD IS NOT SUPPORTED BY RMS-11 ***** .ENDM F$JFNB           d M        .MACRO F$RTV NUMBER0 .MCALL $UFLD$0 $UFLD$ RTV,FAB,FAB,,<NUMBER> .ENDM F$RTVA     b M        .MACRO F$ORG VALUE .MCALL $UFLD$C $UFLD$ ORG,FAB,FAB,,<VALUE>E .ENDM F$ORG      f M        .MACRO F$RAT OPTIONS .MCALL $UFLD$  $UFLD$ RAT,FAB,FAB,,<OPTIONS>  .ENDM F$RAT      f M        .MACRO F$FOP OPTIONS .MCALL $UFLD$  $UFLD$ FOP,FAB,FAB,,<OPTIONS>  .ENDM F$FOP      b M        .MACRO F$XAB LABEL .MCALL $UFLD$  $UFLD$ XAB,FAB,FAB,,<LABEL>  .ENDM F$XAB      b M              .MACRO F$BPA LABEL .MCALL $UFLD$  $UFLD$ BPA,FAB,FAB,,<LABEL>B .ENDM F$BPA>     ` M        .MACRO F$BPS SIZEC .MCALL $UFLD$  $UFLD$ BPS,FAB,FAB,,<SIZE> .ENDM F$BPSE     ` M        .MACRO F$MRS SIZEM .MCALL $UFLD$O $UFLD$ MRS,FAB,FAB,,<SIZE> .ENDM F$MRSO     b M        .MACRO F$JNL LABEL .MCALL $UFLD$P $UFLD$ JNL,FAB,FAB,,<LABEL>L .ENDM F$JNLB     \ M        .MACRO F$MRN NUMBER  .MCALL $WRDS $WRDS FAB,MRN,<NUMBER> .ENDM F$MRNB     ` M        .MACRO F$BSZ SIZE * .PRI      NT ;***** FIELD UNUSED BY RMS-11 ***** .ENDM F$BSZB     X M        .MACRO F$ALQ SIZE  .MCALL $WRDS $WRDS FAB,ALQ,<SIZE> .ENDM F$ALQ      ` M        .MACRO F$DEQ SIZE$ .MCALL $UFLD$  $UFLD$ DEQ,FAB,FAB,,<SIZE> .ENDM F$DEQO     ` M        .MACRO F$BLS SIZE$ .MCALL $UFLD$  $UFLD$ BLS,FAB,FAB,,<SIZE> .ENDM F$BLSP     b M        .MACRO F$NAM LABEL .MCALL $UFLD$  $UFLD$ NAM,FAB,FAB,,<LABEL>  .ENDM F$NAMS     b M        .MACRO F$RFM VALUE .MCALL $UFLD$  $UFLD$ RFM,FAB,FAB,,<VALUE      >T .ENDM F$RFM      ` M        .MACRO F$FSZ SIZE  .MCALL $UFLD$  $UFLD$ FSZ,FAB,FAB,,<SIZE> .ENDM F$FSZ      b M        .MACRO F$FNA LABEL .MCALL $UFLD$O $UFLD$ FNA,FAB,FAB,,<LABEL>  .ENDM F$FNAB     ` M        .MACRO F$FNS SIZE  .MCALL $UFLD$F $UFLD$ FNS,FAB,FAB,,<SIZE> .ENDM F$FNSB     b M        .MACRO F$DNA LABEL .MCALL $UFLD$F $UFLD$ DNA,FAB,FAB,,<LABEL>U .ENDM F$DNAF     ` M        .MACRO F$DNS SIZE  .MCALL $UFLD$F $UFLD$ DNS,FAB,FAB,,<SIZE> .ENDM F$DNSB     b M              .MACRO F$CTX VALUE .MCALL $UFLD$O $UFLD$ CTX,FAB,FAB,,<VALUE>  .ENDM F$CTXB     b M        .MACRO F$LCH VALUE .MCALL $UFLD$F $UFLD$ LCH,FAB,FAB,,<VALUE>U .ENDM F$LCHF     ` M        .MACRO F$BKS SIZE  .MCALL $UFLD$F $UFLD$ BKS,FAB,FAB,,<SIZE> .ENDM F$BKSB     †M        .MACRO FAB$E .MCALL FIELD$,$SEQCK $SEQCK FAB,FAB .IIF EQ ...ERR-1 .MEXITB FIELD$ BID,1 ...PC1=. .=...TAB+O$BLN ..EMIT <.BYTE	FB$BLN>Z .=...PC1 FIELD$ CTX,2 FIELD$ IFI,2 FIELD$ STS,2 FIELD$ STV,2 FIEL      D$ FAC,1 FIELD$ SHR,1 FIELD$ FOP,2 FIELD$ RTV,1 FIELD$ ORG,1 FIELD$ RAT,1 FIELD$ RFM,1 FIELD$ XAB,2 FIELD$ BPA,2 FIELD$ BPS,2 FIELD$ MRS,2 FIELD$ MRN0,2V FIELD$ MRN1,2$ FIELD$ JNL,2 FIELD$ ALQ0,2O FIELD$ ALQ1,2M FIELD$ DEQ,2 FIELD$ NAM,2 FIELD$ FNA,2 FIELD$ DNA,2 FIELD$ FNS,1 FIELD$ DNS,1 FIELD$ BLS,2 FIELD$ FSZ,1 FIELD$ BKS,1 FIELD$ DEV,1 FIELD$ LCH,1 ...TBL=0 ...FAB=0 .ENDM FAB$EB     °M        .MACRO FABOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF       DIF <OFFSET> <DEF$SZ> STRU$B FABP! 	OFFSET	O$BID,1,<BID AND BLN= %P>L 	OFFSET 	O$BLN,1" 	OFFSET 	O$CTX,2,<CTX        = %P> 	OFFSET	O$ISID,0" 	OFFSET 	O$IFI,2,<IFI        = %P>" 	OFFSET 	O$STS,2,<STS        = %P>! 	OFFSET	O$STV,2,<STV        = %P>N! 	OFFSET	O$ALQ,0,<ALQ        = %P>I 	OFFSET	O$ALQ0,2 	OFFSET  O$ALQ1,22" 	$EMSTG          <           = %P> 	OFFSET	O$DEQ,2,<DEQ	    = %P>! 	OFFSET	O$FAC,1,<FAC AND SHR= %P>  	OFFSET	O$SHR,1F" 	OFFSET 	O$FOP,2,<FOP        = %P>! 	OFFSET	O$RTV,1,<RTV AND ORG      = %P>< 	OFFSET	O$ORG,1S! 	OFFSET	O$RAT,1,<RAT AND RFM= %P>D 	OFFSET	O$RFM,1E! 	OFFSET	O$XAB,2,<XAB        = %P>  	OFFSET	O$BPA,2,<BPA	    = %P>! 	OFFSET	O$BPS,2,<BPS        = %P>O! 	OFFSET	O$MRS,2,<MRS        = %P>O! 	OFFSET	O$MRN,0,<MRN        = %P>O 	OFFSET	O$MRN0,2 	OFFSET  O$MRN1,2F" 	$EMSTG          <           = %P>! 	OFFSET	O$JNL,2,<JNL        = %P>O! 	OFFSET	O$NAM,2,<NAM        = %P>E! 	OFFSET	O$FNA,2,<FNA        = %P>E! 	OFFSET	O$DNA,2,<DNA        = %P> ! 	OFFSET	O$FNS,1,<FNS AND DNS= %P>D 	O      FFSET	O$DNS,1E! 	OFFSET	O$BLS,2,<BLS        = %P>D! 	OFFSET	O$FSZ,1,<FSZ AND BKS= %P>E 	OFFSET	O$BKS,1 ! 	OFFSET	O$DEV,1,<DEV & LCH  = %P>  	OFFSET	O$LCH,1$ 	OFFSET	,4,<SPARE      = %P> 	$EMSTG     <           = %P> ! 	OFFSET	O$FT0,2,<FT0        = %P> ! 	OFFSET	O$FT1,2,<FT1        = %P>F! 	OFFSET	O$FT2,2,<FT2        = %P>>! 	OFFSET	O$FT3,2,<FT3        = %P>O! 	OFFSET	O$FT4,2,<FT4        = %P>E" 	OFFSET	O$FBD0,2,<FBD0       = %P>" 	OFFSET	O$FBD1,2,<FBD1       = %P>" 	OFFSET	O$FBDB,2,<FBDB       = %P>" 	O      FFSET	O$FOVL,2,<FOVL       = %P>" 	OFFSET	O$FPAR,2,<FPAR       = %P>" 	OFFSET	O$FIOS,2,<FIOS       = %P>" 	OFFSET	O$FIO2,2,<           = %P> .IF IDN <OFFSET> <DEF$SZ>	 	RMS$L	FB$BLN= 	.MEXITM 	.IFF  	OFFSET	FB$BLN 	.ENDC STRU$E .IF DF R$$TST  .IIF GT R$$TST-1 .MEXITF .ENDC  .MACRO FABOF$ OFFSET .ENDM FABOF$ .ENDM FABOF$      M        .MACRO CTXOF$ DEFE
 .MCALL DEF ...TPC=0 .IIF IDN <DEF> <RMS$L> ...TPC=1  .IIF IDN <DEF> <RMS$G> ...TPC=1  .IF EQ ...TPCF 	DEF	X$BDB0,-10. 	DEF	X$BDB1,-8      .F 	DEF	X$BDB,-6. 	DEF	X$OVLY,-4.O 	DEF	X$PARM,-2.P 	DEF	X$IOS,0 	DEF	X$IOS2,2S 	DEF	X$STKS,4= 	DEF	X$STKB,6. 	DEF	X$STKE,28.  	DEF	X$ARGS,28.O 	DEF	X$STRU,30.  	DEF	X$ERR,32. 	DEF	X$SUC,34. 	DEF	P$CNT,0 	DEF	P$STRU,2U 	DEF	P$ERR,4 	DEF	P$SUC,6 .IFF ...TPC=0 	DEF	P$CNT,2 	DEF	P$STRU,2T 	DEF	P$ERR,2 	DEF	P$SUC,2 ...TPC=-10.  	DEF	X$BDB0,2X 	DEF	X$BDB1,2L 	DEF	X$BDB,2 	DEF	X$OVLY,2> 	DEF	X$PARM,2= 	DEF	X$IOS,2 	DEF	X$IOS2,2. 	DEF	X$STKS,2. 	DEF	X$STKB,22.B 	DEF	X$STKE,0B 	DEF      	X$ARGS,2X 	DEF	X$STRU,2X 	DEF	X$ERR,2 	DEF	X$SUC,2 .ENDCX .MACRO CTXOF$ DEF, .ENDM CTXOF$ .ENDM CTXOF$     B M        .MACRO $FT0$ ...ERR=0 ...LEN=2 .ENDM $FT0$F     B M        .MACRO $FT1$ ...ERR=0 ...LEN=2 .ENDM $FT1$E     B M        .MACRO $FT2$ ...ERR=0 ...LEN=2 .ENDM $FT2$      B M        .MACRO $FT3$ ...ERR=0 ...LEN=2 .ENDM $FT3$B     B M        .MACRO $FT4$ ...ERR=0 ...LEN=2 .ENDM $FT4$2     B M        .MACRO $FAC$ ...ERR=0 ...LEN=1 .ENDM $FAC$B           B M        .MACRO $SHR$ ...ERR=0 ...LEN=1 .ENDM $SHR$D     B M        .MACRO $FOP$ ...ERR=0 ...LEN=2 .ENDM $FOP$      B M        .MACRO $RTV$ ...ERR=0 ...LEN=1 .ENDM $RTV$      B M        .MACRO $ORG$ ...ERR=0 ...LEN=1 .ENDM $ORG$      B M        .MACRO $RAT$ ...ERR=0 ...LEN=1 .ENDM $RAT$      B M        .MACRO $XAB$ ...ERR=0 ...LEN=2 .ENDM $XAB$      B M        .MACRO $BPA$ ...ERR=0 ...LEN=2 .ENDM $BPA$      B M        .MACRO $BPS$ ...ERR=0 ...LEN=2 .E      NDM $BPS$      B M        .MACRO $MRS$ ...ERR=0 ...LEN=2 .ENDM $MRS$      B M        .MACRO $MRN$ ...ERR=0 ...LEN=4 .ENDM $MRN$      B M        .MACRO $JNL$ ...ERR=0 ...LEN=2 .ENDM $JNL$      B M        .MACRO $ALQ$ ...ERR=0 ...LEN=4 .ENDM $ALQ$      B M        .MACRO $DEQ$ ...ERR=0 ...LEN=2 .ENDM $DEQ$      B M        .MACRO $BLS$ ...ERR=0 ...LEN=2 .ENDM $BLS$      B M        .MACRO $NAM$ ...ERR=0 ...LEN=2 .ENDM $NAM$      B M        .MACRO $RFM$ ...ERR      =0 ...LEN=1 .ENDM $RFM$      B M        .MACRO $FSZ$ ...ERR=0 ...LEN=1 .ENDM $FSZ$      B M        .MACRO $BKS$ ...ERR=0 ...LEN=1 .ENDM $BKS$      B M        .MACRO $STS$ ...ERR=0 ...LEN=2 .ENDM $STS$      B M        .MACRO $STV$ ...ERR=0 ...LEN=2 .ENDM $STV$      B M        .MACRO $IFI$ ...ERR=0 ...LEN=2 .ENDM $IFI$      B M        .MACRO $BID$ ...ERR=0 ...LEN=1 .ENDM $BID$      B M        .MACRO $BLN$ ...ERR=0 ...LEN=1 .ENDM $BLN$      B M        .MAC      RO $CTX$ ...ERR=0 ...LEN=2 .ENDM $CTX$      D M        .MACRO $FPAR$N ...ERR=0 ...LEN=2 .ENDM $FPAR$     D M        .MACRO $FOVL$1 ...ERR=0 ...LEN=2 .ENDM $FOVL$     D M        .MACRO $FBDB$  ...ERR=0 ...LEN=2 .ENDM $FBDB$     D M        .MACRO $FIOS$E ...ERR=0 ...LEN=2 .ENDM $FIOS$     B M        .MACRO $DEV$ ...ERR=0 ...LEN=1 .ENDM $DEV$C     B M        .MACRO $FNA$ ...ERR=0 ...LEN=2 .ENDM $FNA$C     B M        .MACRO $FNS$ ...ERR=0 ...LEN=1 .ENDM $FNS$C           B M        .MACRO $DNA$ ...ERR=0 ...LEN=2 .ENDM $DNA$C     B M        .MACRO $DNS$ ...ERR=0 ...LEN=1 .ENDM $DNS$M     B M        .MACRO $LCH$ ...ERR=0 ...LEN=1 .ENDM $LCH$      :M        .MACRO XABDF$2 .MCALL XABOF$,..EMIT XABOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** XAB MUST BE WORD ALIGNED *****1	 	...ERR=1V 	.MEXIT  	.ENDC ...TAB=. .IF EQ <$COD-1>  ..EMIT <.BLKB	XB$KYL>  .MEXIT .ENDC  .IF EQ <$COD-2>. ..EMIT <.BLKB	XB$DTL>  .MEX      IT .ENDC  .IF EQ  <$COD-3> ..EMIT <.BLKB	XB$PRL>2 .MEXIT .ENDC  .IF EQ <$COD-4>  ..EMIT <.BLKB	XB$LAL>  .MEXIT .ENDC  .IF EQ <$COD-5>  ..EMIT <.BLKB	XB$SML>. .MEXIT .ENDC17 .ERROR ;***** XAB$B VALUE=INVALID, OR UNSUPPORTED *****X .ENDM XABDF$     NM        .MACRO XAB$BT DEF2
 .MCALL DEF 	DEF     XB$KEY,1O 	DEF   	XB$DAT,2 	DEF   	XB$PRO,3 	DEF   	XB$ALL,4 	DEF   	XB$SUM,5 	DEF   	XB$ULB,6 	DEF   	XB$FCB,7 	DEF   	XB$HDR,10X 	DEF   	XB$USR,11< 	DEF   	XB$NAM,12B 	DEF	XB$ACC,13       	DEF     XB$STG,0Q 	DEF     XB$IN2,1< 	DEF     XB$BN2,2X 	DEF     XB$IN4,3< 	DEF     XB$BN4,4B 	DEF     XB$PAC,5T 	DEF	XB$CYL,1Q 	DEF	XB$LBN,2M 	DEF	XB$VBN,4L 	DEF	XB$RFI,10 	DEF	XB$HRD,1* 	DEF	XB$CTG,2N 	DEF     XB$DUP,1E 	DEF     XB$CHG,2D 	DEF	XB$NUL,4  	DEF	XB$INI,20 .MACRO XAB$BT DEFF .ENDM XAB$BT .ENDM XAB$BT     M        .MACRO XAB$B TYPE	 .MCALL $SEQCK,XABDF$,XAB$BTD$ .MCALL X$NXT,XAB$E,X$IAN,X$LAN,X$DAN0 .MCALL X$NUL,X$FLG,X$KNM,X$POS,X$REF,X$SIZ,X$HAL .MCALL X$IFL,X$DFL       .MCALL X$PRG,X$PRJ,X$PRO$ .MCALL X$AID,X$BKZ,X$VOL,X$ALQ,X$DEQ .MCALL X$LOC,X$ALN,X$AOP,X$DTP XAB$BT DFIN$LX $SEQCK XAB,,,BB$ .IIF EQ ...ERR-1 .MEXITD ...TMP=0! .IIF IDN <TYPE> <XB$KEY> ...TMP=1 ! .IIF IDN <TYPE> <XB$DAT> ...TMP=1 ! .IIF IDN <TYPE> <XB$PRO> ...TMP=1 ! .IIF IDN <TYPE> <XB$ALL> ...TMP=1 ! .IIF IDN <TYPE> <XB$SUM> ...TMP=1 " .IIF IDN <TYPE>  <XB$ACC> ...TMP=1" .IIF IDN <TYPE>  <XB$ULB> ...TMP=1" .IIF IDN <TYPE>  <XB$FCB> ...TMP=1! .IIF IDN <TYPE> <XB$HDR> ...TMP=1H! .IIF IDN <TYPE> <XB$US      R> ...TMP=1G! .IIF IDN <TYPE> <XB$NAM> ...TMP=1V .IF EQ ...TMP  $COD=XB$'TYPEA .IFF
 $COD='TYPE .ENDCI ...COD=0 XABDF$ .IIF EQ ...ERR-1 .MEXITE ...TBL=1 ...XAB=1 $NXT=0 .IF EQ <$COD-1>M $BLN=XB$KYLN $HAL=0 $NUL=0 $DTP=0 $FLG=0 $IFL=0 $DFL=0 $KNM=0 $POS0=0I $POS1=0Y $POS2=0L $POS3=0= $POS4=0I $POS5=0  $POS6=0. $POS7=0  $REF=0 $SIZ0=0< $SIZ1=0. $SIZ2=0I $SIZ3=0Y $SIZ4=0U $SIZ5=0P $SIZ6=0I $SIZ7=0  $IAN=0 $LAN=0 $DAN=0 $LVL=0 $MRL=0 $NSG=0 $TKS=0 $IBS=0 $DBS=0 .MEX      IT .ENDC= .IF EQ <$COD-2>E $BLN=XB$DTL. .MEXIT .ENDC. .IF EQ <$COD-3>T $BLN=XB$PRLC $PRO=0 $PRG=0 $PRJ=0 .MEXIT .ENDCF .IF EQ <$COD-4>I $BLN=XB$LAL  $ALQ0=0  $ALQ1=0I $DEQ=0 $AID=0 $BKZ=0 $VOL=0 $LOC0=0L $LOC1=00 $ALN=0 $AOP=0 .MEXIT .ENDC0 .IF EQ <$COD-5>= $BLN=XB$SML  $NOK=0 $NOA=0 $NOR=0 $PVN=0 .MEXIT .ENDC  .ENDM XAB$BZ     ` M        .MACRO X$NXT LABEL .MCALL $UFLD$P $UFLD$ NXT,XAB,XAB,,LABEL0 .ENDM X$NXTN     rM        .MACRO XAB$E .MCALL $SEQCK,FIELD$,.      .EMITE $SEQCK XAB,XAB .IIF EQ ...ERR-1 .MEXITX .IF EQ $COD-1      .IF NE ...COD-2$ 	.IF NE $REF 	$FLG=XB$DUP!XB$CHGT 	.ENDC	     .ENDCC .ENDC  FIELD$ COD,1 FIELD$ BLN,1 FIELD$ NXT,2 .IF EQ <$COD-1>V 	FIELD$ REF,1  	FIELD$ HAL,10 	FIELD$ IFL,2T 	FIELD$ DFL,2Q 	FIELD$ NUL,1N 	FIELD$ IAN,10 	FIELD$ LAN,10 	FIELD$ DAN,1T 	FIELD$ FLG,1  	FIELD$ DTP,1  	FIELD$ KNM,2O 	FIELD$ POS0,2 	FIELD$ POS1,2 	FIELD$ POS2,2 	FIELD$ POS3,2 	FIELD$ POS4,2 	FIELD$ POS5,2 	FIELD$ POS6,2 	FIELD$ POS7      ,2 	FIELD$ SIZ0,1 	FIELD$ SIZ1,1 	FIELD$ SIZ2,1 	FIELD$ SIZ3,1 	FIELD$ SIZ4,1 	FIELD$ SIZ5,1 	FIELD$ SIZ6,1 	FIELD$ SIZ7,1 	FIELD$ LVL,1E 	FIELD$ IBS,1D 	FIELD$ DBS,11 	FIELD$ MRL,2  	FIELD$ TKS,1V 	FIELD$ NSG,1  ...PC1=. .=...TAB+O$RVB ..EMIT <.WORD	0,0,0,0> .=...PC1 	.ENDC .IF EQ <$COD-2>E ...PC1=.
 .=...TAB+4 	..EMIT <.WORD	0,0,0,0>E 	..EMIT <.WORD	0,0,0,0>O 	..EMIT <.WORD	0,0,0,0> 	 	.=...PC1E .ENDC2 .IF EQ <$COD-3>2 	FIELD$ PRG,22 	FIELD$ PRJ,22 	FIELD$ PRO,22 	.ENDC .IF       EQ <$COD-4>  	FIELD$	AID,1  	FIELD$	BKZ,1  	FIELD$	VOL,2  	FIELD$	LOC0,2 	FIELD$	LOC1,2 	FIELD$	ALN,1  	FIELD$	AOP,1  	FIELD$	ALQ0,2 	FIELD$	ALQ1,2 	FIELD$	DEQ,2  	.ENDC .IF EQ <$COD-5>F 	FIELD$	PVN,2F 	FIELD$	NOK,1. 	FIELD$	NOA,1B 	FIELD$	NOR,1< .ENDC, ...TBL=0 ...COD=0 ...XAB=0 .ENDM XAB$E      l M        .MACRO X$FLG P1D .MCALL $UFLD$E $UFLD$ FLG,XAB,XAB,XB$KEY,<P1> ...COD=2 .ENDM X$FLGC     h M        .MACRO X$DTP VALUE .MCALL $UFLD$ ! $UFLD$ DTP,XAB,XAB,XB$KEY,<VALUE>        .ENDM X$DTP      h M        .MACRO X$KNM LABEL .MCALL $UFLD$D! $UFLD$ KNM,XAB,XAB,XB$KEY,<LABEL>L .ENDM X$KNM	     Ž M        .MACRO X$POS OFFSET  .MCALL $SEQCK,$STRIP $SEQCK XAB,XAB .IIF EQ ...ERR-1 .MEXITD $STRIP POS,OFFSET,EEEE .ENDM X$POS,     j M        .MACRO X$REF NUMBER0 .MCALL $UFLD$ " $UFLD$ REF,XAB,XAB,XB$KEY,<NUMBER> .ENDM X$REFE     ì M        .MACRO X$SIZ SIZEC .MCALL $SEQCK,$STRIP $SEQCK XAB,XAB .IIF EQ ...ERR-1 .MEXITL ...SIZ=0 $STRIP SIZ,SIZE,EEEE .IF GT ...      SIZ-255.9 .ERROR ;***** TOTAL SIZES OF ALL KEYS GT MAX OF 255 *****D .ENDC$ .ENDM X$SIZX     h M        .MACRO X$IFL VALUE .MCALL $UFLD$O! $UFLD$ IFL,XAB,XAB,XB$KEY,<VALUE>P .ENDM X$IFLX     h M        .MACRO X$DFL VALUE .MCALL $UFLD$ ! $UFLD$ DFL,XAB,XAB,XB$KEY,<VALUE>C .ENDM X$DFLE     h M        .MACRO X$NUL VALUE .MCALL $UFLD$>! $UFLD$ NUL,XAB,XAB,XB$KEY,<VALUE>M .ENDM X$NULZ     j M        .MACRO X$HAL OFFSETB .MCALL $UFLD$R" $UFLD$ HAL,XAB,XAB,XB$KEY,<OFFSET> .ENDM X$HALT           h M        .MACRO X$IAN VALUE .MCALL $UFLD$T! $UFLD$ IAN,XAB,XAB,XB$KEY,<VALUE>$ .ENDM X$IAN      h M        .MACRO X$LAN VALUE .MCALL $UFLD$I! $UFLD$ LAN,XAB,XAB,XB$KEY,<VALUE>$ .ENDM X$LAN      h M        .MACRO X$DAN VALUE .MCALL $UFLD$D! $UFLD$ DAN,XAB,XAB,XB$KEY,<VALUE>$ .ENDM X$DAN      h M        .MACRO X$PRG VALUE .MCALL $UFLD$N! $UFLD$ PRG,XAB,XAB,XB$PRO,<VALUE>$ .ENDM X$PRG      h M        .MACRO X$PRJ VALUE .MCALL $UFLD$$! $UFLD$ PRJ,XAB,XAB,XB$PRO,<VALUE>  .ENDM X$      PRJ      h M        .MACRO X$PRO VALUE .MCALL $UFLD$$! $UFLD$ PRO,XAB,XAB,XB$PRO,<VALUE>  .ENDM X$PRO      h M        .MACRO X$AID VALUE .MCALL $UFLD$$! $UFLD$ AID,XAB,XAB,XB$ALL,<VALUE>  .ENDM X$AID      h M        .MACRO X$BKZ VALUE .MCALL $UFLD$$! $UFLD$ BKZ,XAB,XAB,XB$ALL,<VALUE>  .ENDM X$BKZ      h M        .MACRO X$VOL VALUE .MCALL $UFLD$$! $UFLD$ VOL,XAB,XAB,XB$ALL,<VALUE>  .ENDM X$VOL      X M        .MACRO X$LOC VAL1L .MCALL $WRDS $WRDS XAB,LOC,<VAL1> .ENDM X$LOCD           h M        .MACRO X$ALN VALUE .MCALL $UFLD$L! $UFLD$ ALN,XAB,XAB,XB$ALL,<VALUE>, .ENDM X$ALND     h M        .MACRO X$AOP VALUE .MCALL $UFLD$L! $UFLD$ AOP,XAB,XAB,XB$ALL,<VALUE>, .ENDM X$AOPD     X M        .MACRO X$ALQ SIZEB .MCALL $WRDS $WRDS XAB,ALQ,<SIZE> .ENDM X$ALQL     f M        .MACRO X$DEQ SIZE  .MCALL $UFLD$V  $UFLD$ DEQ,XAB,XAB,XB$ALL,<SIZE> .ENDM X$DEQ$     ÌM        .MACRO $POSIZ OFFSET,L .MCALL OFFSETC 	OFFSET	L'$POS,2 ...TPC=...TPC-2,# 	OFFSET	L'$POS0,2,<POS      0       = %P> # 	OFFSET	L'$POS1,2,<POS1       = %P> # 	OFFSET	L'$POS2,2,<POS2       = %P>E# 	OFFSET	L'$POS3,2,<POS3       = %P>X# 	OFFSET	L'$POS4,2,<POS4       = %P>P# 	OFFSET	L'$POS5,2,<POS5       = %P>D# 	OFFSET	L'$POS6,2,<POS6       = %P>B# 	OFFSET	L'$POS7,2,<POS7       = %P>  	OFFSET	L'$SIZ,1 ...TPC=...TPC-1C# 	OFFSET	L'$SIZ0,1,<SIZ0/1     = %P>$ 	OFFSET	L'$SIZ1,1,# 	OFFSET	L'$SIZ2,1,<SIZ2/3     = %P>  	OFFSET	L'$SIZ3,1S# 	OFFSET	L'$SIZ4,1,<SIZ4/5     = %P>2 	OFFSET	L'$SIZ5,1 # 	OFFSET	L'$SIZ6,1,<S      IZ6/7     = %P>  	OFFSET	L'$SIZ7,1P! .IIF IDN <OFFSET> <DEF$SZ> .MEXIT, .ENDM $POSIZ     ^M        .MACRO XABOF$ OFFSET/ .MCALL $POSIZ,RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG	) .MCALL XBKOF$,XBDOF$,XBPOF$,XBAOF$,XBSOF$S XBKOF$ OFFSET  XBDOF$ OFFSET	 XBPOF$ OFFSET  XBAOF$ OFFSETO XBSOF$ OFFSET ! .IIF IDN <OFFSET> <DEF$SZ> .MEXIT, .IF DF R$$TSTP .IIF GT R$$TST-1 .MEXITO .ENDC' .MACRO XABOF$ OFFSET .ENDM XABOF$ .ENDM XABOF$     ¶M        .MACRO XBKOF$ OFFSET( .IIF DIF <OFFSET> <DEF$SZ> STRU$B       KEYXAB ...TPC=0! 	OFFSET	O$COD,1,<COD/BLN    = %P>S 	OFFSET	O$BLN,1I! 	OFFSET	O$NXT,2,<NXT        = %P> ! 	OFFSET	O$REF,1,<REF AND LVL= %P>, 	OFFSET	O$HAL,1$ ...TPC=...TPC-1  	OFFSET	O$LVL,1O 	OFFSET	O$IFL,2,<IFL	    = %P> 	OFFSET	O$DFL,2,<DFL	    = %P>! 	OFFSET	O$NUL,1,<NUL AND IAN= %P>F 	OFFSET	O$IAN,1F! 	OFFSET	O$LAN,1,<LAN AND DAN= %P>S 	OFFSET	O$DAN,1T! 	OFFSET	O$FLG,1,<FLG & DTP  = %P>F 	OFFSET	O$DTP,1$! 	OFFSET	O$KNM,2,<KNM        = %P>M 	$POSIZ  OFFSET,O ! 	OFFSET	O$RVB,4,<RVB        = %P      >E" 	$EMSTG          <           = %P> 	OFFSET	O$DVB,4,<DVB	    = %P> 	$EMSTG	<	    = %P>T! 	OFFSET	O$IBS,1,<IBS/DBS    = %P>F 	OFFSET	O$DBS,1O! 	OFFSET	O$NSG,1,<NSG/TKS    = %P>O 	OFFSET	O$TKS,1O! 	OFFSET	O$MRL,2,<MRL/TKS    = %P>E! .IIF DIF <OFFSET> <DEF$SZ> STRU$E$ .IF IDN <OFFSET> <DEF$SZ>O 	RMS$L	XB$KYL  	.IFF	 	OFFSET	XB$KYL 	.ENDC .ENDM XBKOF$     ÚM        .MACRO XBDOF$ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B DATXAB 	OFFSET	O$COD,1,<COD/BLN= %P>E 	OFFSET	O$BLN,1  	OFFSE      T	O$NXT,2,<NXT    = %P>  	OFFSET	O$RVN,2,<RVN	= %P> 	OFFSET	O$RDT,10,<RDT    = %P> 	$EMSTG           <       = %P>S 	$EMSTG           <       = %P>F 	$EMSTG           <       = %P>O 	OFFSET	O$CDT,10,<CDT    = %P> 	$EMSTG           <       = %P>S 	$EMSTG           <       = %P>F 	$EMSTG           <       = %P>. 	OFFSET	O$EDT,10,<EDT    = %P> 	$EMSTG           <       = %P>C 	$EMSTG           <       = %P>D 	$EMSTG           <       = %P>B! .IIF DIF <OFFSET> <DEF$SZ> STRU$EO .IF IDN <OFFSET> <DE      F$SZ>X 	RMS$L	XB$DTLP 	.IFFF 	OFFSET	XB$DTL 	.ENDC .ENDM XBDOF$     œM        .MACRO XBPOF$ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B PROXAB! 	OFFSET	O$COD,1,<COD/BLN    = %P>	 	OFFSET	O$BLN,1=! 	OFFSET	O$NXT,2,<NXT        = %P>P! 	OFFSET	O$PRG,2,<PRG        = %P>F! 	OFFSET	O$PRJ,2,<PRJ        = %P>  	OFFSET	O$PRO,2,<PRO	    = %P>! .IIF DIF <OFFSET> <DEF$SZ> STRU$E$ .IF IDN <OFFSET> <DEF$SZ>P 	RMS$L	XB$PRL  	.IFF  	OFFSET	XB$PRL 	.ENDC .ENDM XBPOF$     nM        .MACRO XBAOF      $ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B ALLXAB! 	OFFSET	O$COD,1,<COD/BLN    = %P>X 	OFFSET	O$BLN,1T! 	OFFSET	O$NXT,2,<NXT        = %P>R! 	OFFSET	O$AID,1,<AID AND BKZ= %P>N 	OFFSET	O$BKZ,1E! 	OFFSET	O$VOL,2,<VOL        = %P> ! 	OFFSET	O$ALN,1,<ALN & AOP  = %P>  	OFFSET	O$AOP,1E 	OFFSET	O$ALQ,0,<ALQ	    = %P>! 	$EMSTG	        <           = %P>D 	OFFSET	O$ALQ0,2 	OFFSET	O$ALQ1,2 	OFFSET	O$DEQ,2,<DEQ	    = %P>  	OFFSET	     ,2,<SPARE	    = %P>! 	OFFSET	O$LOC,0,<LOC        = %P>  	OFFSET	O$      LOC0,2 	OFFSET  O$LOC1,2D! 	$EMSTG	        <           = %P> ! 	OFFSET	O$RFI,0,<RFI        = %P>  	$EMSTG		<           = %P> 	$EMSTG		<           = %P> 	OFFSET	O$RFI0,2 	OFFSET	O$RFI1,2 	OFFSET	O$RFI2,2! .IIF DIF <OFFSET> <DEF$SZ> STRU$EO .IF IDN <OFFSET> <DEF$SZ>  	RMS$L	XB$LAL$ 	.IFF  	OFFSET	XB$LAL 	.ENDC .ENDM XBAOF$     ÀM        .MACRO XBSOF$ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B SUMXAB 	OFFSET	O$COD,1,<COD/BLN	 =%P> 	OFFSET	O$BLN,1$" 	OFFSET	O$NXT,2,<NXT	         =%P>        	OFFSET	O$NOK,1,<NOK & NOA	 =%P> 	OFFSET	O$NOA,1 % 	OFFSET	O$NOR,1,<NOR & SPARE     =%P> 
 	OFFSET	,1% 	OFFSET	O$PVN,2,<PROLOGUE NUMBER =%P> ! .IIF DIF <OFFSET> <DEF$SZ> STRU$EE .IF IDN <OFFSET> <DEF$SZ>2 	RMS$L	XB$SMLS 	.IFFF 	OFFSET	XB$SML .ENDCO .ENDM XBSOF$     B M        .MACRO $COD$ ...ERR=0 ...LEN=1 .ENDM $COD$      B M        .MACRO $NXT$ ...ERR=0 ...LEN=2 .ENDM $NXT$T     B M        .MACRO $NUL$ ...ERR=0 ...LEN=1 .ENDM $NUL$	     B M        .MACRO $REF$ ...ERR=0       ...LEN=1 .ENDM $REF$K     B M        .MACRO $FLG$ ...ERR=0 ...LEN=1 .ENDM $FLG$=     B M        .MACRO $DTP$ ...ERR=0 ...LEN=1 .ENDM $DTP$F     @ M        .MACRO $IFL$ ...ERR=0 ...LEN=2
 .ENDM $IFL     B M        .MACRO $DFL$ ...ERR=0 ...LEN=2 .ENDM $DFL$      B M        .MACRO $IAN$ ...ERR=0 ...LEN=1 .ENDM $IAN$      B M        .MACRO $LAN$ ...ERR=0 ...LEN=1 .ENDM $LAN$      B M        .MACRO $DAN$ ...ERR=0 ...LEN=1 .ENDM $DAN$      B M        .MACRO $HA      L$ ...ERR=0 ...LEN=1 .ENDM $HAL$      B M        .MACRO $KNM$ ...ERR=0 ...LEN=2 .ENDM $KNM$      F M        .MACRO $POS$ ...ERR=0 ...LEN=^D16  .ENDM $POS$      D M        .MACRO $POS0$2 ...ERR=0 ...LEN=2 .ENDM $POS0$     D M        .MACRO $POS1$E ...ERR=0 ...LEN=2 .ENDM $POS1$     D M        .MACRO $POS2$D ...ERR=0 ...LEN=2 .ENDM $POS2$     D M        .MACRO $POS3$  ...ERR=0 ...LEN=2 .ENDM $POS3$     D M        .MACRO $POS4$D ...ERR=0 ...LEN=2 .ENDM $POS4$           D M        .MACRO $POS5$L ...ERR=0 ...LEN=2 .ENDM $POS5$     D M        .MACRO $POS6$  ...ERR=0 ...LEN=2 .ENDM $POS6$     D M        .MACRO $POS7$S ...ERR=0 ...LEN=2 .ENDM $POS7$     D M        .MACRO $SIZ$ ...ERR=0
 ...LEN=^D8 .ENDM $SIZ$1     D M        .MACRO $SIZ0$S ...ERR=0 ...LEN=1 .ENDM $SIZ0$     D M        .MACRO $SIZ1$S ...ERR=0 ...LEN=1 .ENDM $SIZ1$     D M        .MACRO $SIZ2$S ...ERR=0 ...LEN=1 .ENDM $SIZ2$     D M        .MACRO $SIZ3$S       ...ERR=0 ...LEN=1 .ENDM $SIZ3$     D M        .MACRO $SIZ4$S ...ERR=0 ...LEN=1 .ENDM $SIZ4$     D M        .MACRO $SIZ5$S ...ERR=0 ...LEN=1 .ENDM $SIZ5$     D M        .MACRO $SIZ6$S ...ERR=0 ...LEN=1 .ENDM $SIZ6$     D M        .MACRO $SIZ7$Z ...ERR=0 ...LEN=1 .ENDM $SIZ7$     B M        .MACRO $RVB$ ...ERR=0 ...LEN=4 .ENDM $RVB$I     B M        .MACRO $RVN$ ...ERR=0 ...LEN=2 .ENDM $RVN$$     D M        .MACRO $CDT$ ...ERR=0
 ...LEN=^D8 .ENDM $CDT$$     D       M        .MACRO $RDT$ ...ERR=0
 ...LEN=^D8 .ENDM $RDT$$     D M        .MACRO $EDT$ ...ERR=0
 ...LEN=^D8 .ENDM $EDT$$     B M        .MACRO $PRG$ ...ERR=0 ...LEN=2 .ENDM $PRG$O     B M        .MACRO $PRJ$ ...ERR=0 ...LEN=2 .ENDM $PRJ$C     B M        .MACRO $PRO$ ...ERR=0 ...LEN=2 .ENDM $PRO$M     B M        .MACRO $AID$ ...ERR=0 ...LEN=1 .ENDM $AID$M     B M        .MACRO $BKZ$ ...ERR=0 ...LEN=1 .ENDM $BKZ$M     B M        .MACRO $VOL$ ...ERR=0 ...LEN=2       .ENDM $VOL$      B M        .MACRO $LOC$ ...ERR=0 ...LEN=4 .ENDM $LOC$      B M        .MACRO $ALN$ ...ERR=0 ...LEN=1 .ENDM $ALN$      B M        .MACRO $AOP$ ...ERR=0 ...LEN=1 .ENDM $AOP$      B M        .MACRO $RFI$ ...ERR=0 ...LEN=6 .ENDM $RFI$      B M        .MACRO $NOK$ ...ERR=0 ...LEN=1 .ENDM $NOK$      B M        .MACRO $NOA$ ...ERR=0 ...LEN=1 .ENDM $NOA$      B M        .MACRO $NOR$ ...ERR=0 ...LEN=1 .ENDM $NOR$      B M        .MACRO $NSG$ ...E      RR=0 ...LEN=1 .ENDM $NSG$      B M        .MACRO $PVN$ ...ERR=0 ...LEN=2 .ENDM $PVN$      B M        .MACRO $TKS$ ...ERR=0 ...LEN=1 .ENDM $TKS$      B M        .MACRO $DBS$ ...ERR=0 ...LEN=1 .ENDM $DBS$      B M        .MACRO $IBS$ ...ERR=0 ...LEN=1 .ENDM $IBS$      B M        .MACRO $LVL$ ...ERR=0 ...LEN=1 .ENDM $LVL$      B M        .MACRO $MRL$ ...ERR=0 ...LEN=2 .ENDM $MRL$      B M        .MACRO $DVB$ ...ERR=0 ...LEN=4 .ENDM $DVB$      ö M        .M      ACRO NAMDF$N .MCALL NAMOF$,..EMIT NAMOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** NAM MUST BE WORD ALIGNED *****1	 	...ERR=1S 	.MEXIT  	.ENDC ...TAB=. ..EMIT <.BLKB	NB$BLN>N .ENDM NAMDF$     M        .MACRO NAM$B .MCALL $SEQCK,NAMDF$* .MCALL N$RSA,N$RLF,N$RSS,N$ESA,N$ESS,NAM$E $SEQCK NAM,,,B .IIF EQ ...ERR-1 .MEXIT  NAMDF$ .IIF EQ ...ERR-1 .MEXITR ...TBL=1 ...NAM=1 $RLF=0 $RSA=0 $RSS=0 $RSL=0 $FNB=0 $ESA=0 $ESS=0 $ESL=0 $WCC=0 .ENDM NAM$B      b       M        .MACRO N$RLF LABEL .MCALL $UFLD$S $UFLD$ RLF,NAM,NAM,,<LABEL>. .ENDM N$RLFB     b M        .MACRO N$RSA LABEL .MCALL $UFLD$* $UFLD$ RSA,NAM,NAM,,<LABEL>N .ENDM N$RSA      b M        .MACRO N$RSS VALUE .MCALL $UFLD$  $UFLD$ RSS,NAM,NAM,,<VALUE>, .ENDM N$RSSL     b M        .MACRO N$ESA LABEL .MCALL $UFLD$  $UFLD$ ESA,NAM,NAM,,<LABEL>D .ENDM N$ESA.     b M        .MACRO N$ESS VALUE .MCALL $UFLD$R $UFLD$ ESS,NAM,NAM,,<VALUE>  .ENDM N$ESS0     €M        .MACRO NAM      $E .MCALL $SEQCK,FIELD$,..EMIT  $SEQCK NAM,NAM .IIF EQ ...ERR-1 .MEXITL 	FIELD$	RLF,2B 	FIELD$	RSA,2  	FIELD$	RSS,1A 	FIELD$	RSL,1$ ...PC1=. .=...TAB+O$DVI ..EMIT <.WORD	0,0,0> ..EMIT <.WORD	0,0,0> ..EMIT <.WORD	0,0,0> .=...PC1 	FIELD$	FNB,2N 	FIELD$	ESA,2, 	FIELD$	ESS,1  	FIELD$	ESL,1  	FIELD$	WCC,2L ...TBL=0 ...NAM=0 .ENDM NAM$EN     ÆM        .MACRO NAMOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF DIF <OFFSET> <DEF$SZ> STRU$B NAM ! 	OFFSET	O$RLF,2,<RLF              = %P>L! 	OFFSET	O$RSA,2,<RSA        = %P>N! 	OFFSET	O$RSS,1,<RSS AND RSL= %P>D 	OFFSET	O$RSL,1	! 	OFFSET	O$DVI,6,<DVI        = %P>,! 	$EMSTG	        <           = %P>T" 	$EMSTG 	        <           = %P>! 	OFFSET	O$FID,6,<FID        = %P>F" 	$EMSTG          <           = %P>" 	$EMSTG          <           = %P>! 	OFFSET	O$DID,6,<DID        = %P>$! 	$EMSTG	        <           = %P> " 	$EMSTG          <           = %P>! 	OFFSET	O$FNB,2,<FNB        = %P>F! 	OFFSET	O$ESA,2,<ESA        = %P>	! 	OFFSET	O$ESS,      1,<ESS AND ESL= %P>	 	OFFSET	O$ESL,1 ! 	OFFSET	O$WCC,2,<WCC        = %P>R .IF IDN <OFFSET> <DEF$SZ>  	RMS$L	NB$BLN, 	.MEXIT  	.IFF, 	OFFSET	NB$BLN 	.ENDC! .IIF DIF <OFFSET> <DEF$SZ> STRU$E  .IF DF R$$TSTO .IIF GT R$$TST-1 .MEXIT  .ENDC  .MACRO NAMOF$ OFFSET .ENDM NAMOF$ .ENDM NAMOF$     B M        .MACRO $RLF$ ...ERR=0 ...LEN=2 .ENDM $RLF$	     B M        .MACRO $RSA$ ...ERR=0 ...LEN=2 .ENDM $RSA$O     B M        .MACRO $RSS$ ...ERR=0 ...LEN=1 .ENDM $RSS$P     B M              .MACRO $RSL$ ...ERR=0 ...LEN=1 .ENDM $RSL$	     B M        .MACRO $DVI$ ...ERR=0 ...LEN=6 .ENDM $DVI$$     B M        .MACRO $FID$ ...ERR=0 ...LEN=6 .ENDM $FID$      B M        .MACRO $DID$ ...ERR=0 ...LEN=6 .ENDM $DID$      B M        .MACRO $FNB$ ...ERR=0 ...LEN=2 .ENDM $FNB$      B M        .MACRO $ESA$ ...ERR=0 ...LEN=2 .ENDM $ESA$      B M        .MACRO $ESS$ ...ERR=0 ...LEN=1 .ENDM $ESS$      B M        .MACRO $ESL$ ...ERR=0 ...LEN=1 .ENDM $ESL$            B M        .MACRO $WCC$ ...ERR=0 ...LEN=2 .ENDM $WCC$      è M        .MACRO LCBDF$N .MCALL LCBOF$$ LCBOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** LCB MUST BE WORD ALIGNED *****.	 	...ERR=1D 	.MEXIT  	.ENDC ...TAB=. 	.BLKB	LB$BLN. .ENDM LCBDF$      M        .MACRO LCB$B .MCALL LCB$E,L$CTX,L$BIR,L$AIR .MCALL $SEQCK,LCBDF$ $SEQCK LCB,,,B .IIF EQ ...ERR-1 .MEXIT. LCBDF$ .IIF EQ ...ERR-1 .MEXIT  ...TBL=1 ...LCB=1 $CTX=0 $BIR=0 $AIR=0 $BLK0=0        $BLK1=0  $BUF=0 $LSZ=0 .ENDM LCB$B0     b M        .MACRO L$CTX VALUE .MCALL $UFLD$B $UFLD$ CTX,LCB,LCB,,<VALUE>R .ENDM L$CTX.     ` M        .MACRO L$BIR ADDRA .MCALL $UFLD$* $UFLD$ BIR,LCB,LCB,,<ADDR> .ENDM L$BIRR     ` M        .MACRO L$AIR ADDRL .MCALL $UFLD$D $UFLD$ AIR,LCB,LCB,,<ADDR> .ENDM L$AIR      ú M        .MACRO LCB$E .MCALL $SEQCK,FIELD$,..EMITL $SEQCK LCB,LCB .IIF EQ ...ERR-1 .MEXIT  	FIELD$	BIR,21 	FIELD$	CTX,2L 	FIELD$	AIR,2C 	FIELD$	BUF,2A 	FIELD$	LSZ,      2  	FIELD$	BLK0,2 	FIELD$	BLK1,2 ...TBL=0 ...LCB=0 .ENDM LCB$EL     LM        .MACRO LCBOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF DIF <OFFSET> <DEF$SZ> STRU$B LCB$ 	OFFSET	O$BIR,2,<BIR= %P>  	OFFSET	O$CTX,2,<CTX= %P>M 	OFFSET	O$AIR,2,<AIR= %P>F 	OFFSET	O$BUF,2,<BUF= %P>A 	OFFSET	O$LSZ,2,<LSZ= %P>  	OFFSET	O$BLK,0,<BLK= %P>A 	OFFSET	O$BLK0,2 	OFFSET  O$BLK1,2L 	$EMSTG	        <   = %P>  .IF IDN <OFFSET> <DEF$SZ>T 	RMS$L	LB$BLNI 	.MEXITE 	.IFF, 	OFFSET	LB$BLN       	.ENDC! .IIF DIF <OFFSET> <DEF$SZ> STRU$E0 .IF DF R$$TSTD .IIF GT R$$TST-1 .MEXIT  .ENDCO .MACRO LCBOF$ OFFSET .ENDM LCBOF$ .ENDM LCBOF$     B M        .MACRO $BIR$ ...ERR=0 ...LEN=2 .ENDM $BIR$	     B M        .MACRO $AIR$ ...ERR=0 ...LEN=2 .ENDM $AIR$A     B M        .MACRO $BUF$ ...ERR=0 ...LEN=2 .ENDM $BUF$      B M        .MACRO $LSZ$ ...ERR=0 ...LEN=2 .ENDM $LSZ$      B M        .MACRO $BLK$ ...ERR=0 ...LEN=4 .ENDM $BLK$$     f M        .MACRO $LOAD DEST,      FIELD,PTR  .MCALL $FETCHT $FETCH DEST,FIELD,PTR  .ENDM $LOADI     h M        .MACRO $FETCH DEST,FIELD,PTR .MCALL $CHKMVO $CHKMV DEST,FIELD,PTR,L  .ENDM $FETCH     l M        .MACRO $STORE SOURCE,FIELD,PTR .MCALL $CHKMVC $CHKMV SOURCE,FIELD,PTR,S2 .ENDM $STORE     vM        .MACRO $SET VALUE,FIELD,PTRL .MCALL $'FIELD'$,..EMIT  ...ERR=1	 $'FIELD'$S .IF EQ ...ERR-1L) 	.ERROR ;***** INVALID NAME - FIELD *****O 	.MEXIT. .ENDC 6 .IIF EQ ...LEN-1 ..EMIT <BISB	VALUE',O$'FIELD'('PTR')>5 .I      IF EQ ...LEN-2 ..EMIT <BIS	VALUE',O$'FIELD'('PTR')>  .IF GT ...LEN-2 . 	.ERROR ;***** FIELD LONGER THAN 2-BYTES ***** .ENDCM
 .ENDM $SET     rM        .MACRO $OFF VALUE,FIELD,PTR  .MCALL $'FIELD'$,..EMITE ...ERR=1	 $'FIELD'$C .IF EQ ...ERR-1I) 	.ERROR ;***** INVALID NAME - FIELD *****  	.MEXITE .ENDC,7 .IIF EQ ...LEN-1 ..EMIT  <BICB	VALUE',O$'FIELD'('PTR')>S5 .IIF EQ ...LEN-2 ..EMIT <BIC	VALUE',O$'FIELD'('PTR')>  .IF GT ...LEN-2 ( 	.ERROR ;***** FIELD LONGER THAN 2-BYTES .ENDCI
 .ENDM $OFF           €M         .MACRO $TESTBITS VALUE,FIELD,PTR .MCALL $'FIELD'$,..EMIT. ...ERR=1	 $'FIELD'$N .IF EQ ...ERR-1*) 	.ERROR ;***** INVALID NAME - FIELD *****  	.MEXITF .ENDC,6 .IIF EQ ...LEN-1 ..EMIT <BITB	VALUE',O$'FIELD'('PTR')>5 .IIF EQ ...LEN-2 ..EMIT <BIT	VALUE',O$'FIELD'('PTR')>L .IF GT ...LEN-2E. 	.ERROR ;***** FIELD LONGER THAN 2-BYTES ***** .ENDCD .ENDM $TESTBITSE      M         .MACRO  $COMPARE INPUT,FIELD,PTR .MCALL $'FIELD'$,..EMIT* ...ERR=1	 $'FIELD'$N .IF EQ ...ERR-1 ) 	.ERROR ;***      ** INVALID NAME - FIELD *****I 	.MEXITF .ENDCR .IF GT ...LEN-2$. 	.ERROR ;***** FIELD LONGER THAN 2-BYTES *****	 	...ERR=1* 	.MEXITL 	.ENDC .IF IDN <INPUT> <#0>0 	.IIF EQ ...LEN-1 ..EMIT <TSTB	O$'FIELD'('PTR')>/ 	.IIF EQ ...LEN-2 ..EMIT <TST	O$'FIELD'('PTR')>L 	.MEXITE 	.ENDC6 .IIF EQ ...LEN-1 ..EMIT <CMPB	INPUT',O$'FIELD'('PTR')>5 .IIF EQ ...LEN-2 ..EMIT <CMP	INPUT',O$'FIELD'('PTR')>  .ENDM $COMPARE     v M        .MACRO $INIT .MCALL ..EMIT  	.GLOBL	$RMSIA 	.GLOBL	$RMSIN ..EMIT <JSR	PC,$RM      SIN> .ENDM $INIT      z M        .MACRO $INITIF .MCALL ..EMIT  	.GLOBL	$RMSIA 	.GLOBL	$RMINF ..EMIT <JSR	PC,$RMINF> .ENDM $INITIF.     r M        .MACRO $BUFFER VALUE .MCALL ..EMITS ..EMIT <.EVEN> ..EMIT <.BLKB	^D<VALUE>> .ENDM $BUFFERE     Â M        .MACRO $RBCALI4 .MCALL $CONNECT,$DISCONNECT,$RELEASE,$FREE,$GET,$PUT5 .MCALL $FIND,$UPDATE,$DELETE,$FLUSH,$REWIND,$TRUNCATE " .MCALL $READ,$WRITE,$NXTVOL,$SPACE .ENDM $RBCAL     € M        .MACRO $FBCALL* .MCALL $CREATE,$OPEN,$CLOSE,      $EXTEND,$ERASE" .MCALL $DISPLAY,$ENQP,$DSQP,$QUIET .ENDM $FBCAL     ˆ M        .MACRO $GNCALI7 .MCALL $LOAD,$FETCH,$STORE,$SET,$OFF,$TESTBITS,$COMPARE  .MCALL $WAIT,$RETURN,$BUFFER .ENDM $GNCAL     0 M        .MACRO $RMSDTL .ENDM $RMSDT     8 M        .MACRO DPSECT$ .PSECT .ENDM DPSECT     *M        .MACRO ORG$ ORGTYP,OPTYPSL .MCALL DPSECT,TRVOF$ TRVOF$	RMS$L .PSECT	$$RMS1,D,OVR,GBL,REL,RW .IIF NDF ..$$01,..$$01=. .GLOBL	$RMSIA  .MACRO $PLUG$ OP,ORGNUMM .=..$$01+TV$'OP'+<2*'ORG      NUM'-2>, .GLOBL	$'OP''ORGNUM'E, .WORD	$'OP''ORGNUM'E .ENDM $PLUG$ .IF B ORGTYP2 .ERROR ;***** ORGANIZATION MUST BE SPECIFIED ***** DPSECT .MEXIT .ENDC  $ORG$=0A .IIF IDN ORGTYP,SEQ $ORG$=1C .IIF IDN ORGTYP,REL $ORG$=2$ .IIF IDN ORGTYP,IDX $ORG$=3  .IIF IDN ORGTYP,DIR $ORG$=4E .IF EQ $ORG$4 .ERROR ;***** ILLEGAL/UNSUPPORTED ORGANIZATION ***** DPSECT .MEXIT .ENDC$ .PSECT $$RMS1,D,OVR,GBL,REL,RW $PLUG$ OPE,\$ORG$$ $PLUG$ CLO,\$ORG$L $PLUG$ CON,\$ORG$L $PLUG$ DIS,\$ORG$. .IF B <OPTYPS> DP      SECT .MEXIT .ENDCO .IRP A,<OPTYPS>R .IF NB A $TYP$=0E .IIF IDN A,GET $TYP$=1 .IIF IDN A,PUT $TYP$=1 .IIF IDN A,FIN $TYP$=1 .IIF IDN A,UPD $TYP$=1 .IIF IDN A,DEL $TYP$=1 .IIF IDN A,CRE $TYP$=1 .IF EQ $TYP$1 .ERROR ;***** ILLEGAL/UNSUPPORTED OPERATION *****N DPSECT .MEXIT .ENDCI $PLUG$ A,\$ORG$R .ENDC  .ENDM/ DPSECT
 .ENDM ORG$     ¼ M        .MACRO POOL$B$ .MCALL $SEQCK,DPSECT2 .MCALL P$FAB,P$RAB,P$RABX,P$IDX,P$BDB,P$BUF,POOL$E $SEQCK POOL,,,BB .IIF EQ ...ERR-1 .MEXIT  ...TBL=1	 ..      .POOL=1M .ENDM POOL$B     ¶ M        .MACRO P$FAB VALUE .MCALL IFAOF$,$UFLD$ $FAB=0 $UFLD$ FAB,POOL,POOL,,VALUEF IFAOF$ DEF$SZF .PSECT	$RMS15,D,CON,GBL,REL,RW .BLKB	<$FAB*IF$BLN>A .ENDM P$FAB      ¶ M        .MACRO P$RAB VALUE .MCALL IRAOF$,$UFLD$ $RAB=0 $UFLD$ RAB,POOL,POOL,,VALUEA IRAOF$ DEF$SZ  .PSECT	$RMS13,D,CON,GBL,REL,RW .BLKB	<$RAB*IR$BLN>O .ENDM P$RABA     –M        .MACRO P$RABX VAL1,VAL2,VAL3 .MCALL IRAOF$,$UFLD$ $RBX1=0O $RBX2=0I $RBX3=0E $UFLD$ RBX1,POOL,POOL,,V      AL1O $UFLD$ RBX2,POOL,POOL,,VAL2  $UFLD$ RBX3,POOL,POOL,,VAL3M IRAOF$ DEF$SZL .PSECT	$RMS13,D,CON,GBL,REL,RW .BLKB	<$RBX1*IR$BLN> .PSECT	$RMS17,D,CON,GBL,REL,RW .IF NB VAL3A% .BLKB	<<$RBX2*2+$RBX3+1+3>&^C3>*$RBX1  .IFF .BLKB	<<$RBX2*2+3>&^C3>*$RBX1, .ENDC  .ENDM P$RABX     ¸ M        .MACRO P$IDX VAL1  .MCALL IDXOF$,$UFLD$ $IDX1=0W $UFLD$ IDX1,POOL,POOL,,VAL1  IDXOF$ DEF$SZ  .PSECT	$RMS15,D,CON,GBL,REL,RW .BLKB	<$IDX1*ID$BLN> .ENDM P$IDX=     ¶ M        .MACRO P$BDB VALUE .MCALL B      DBOF$,$UFLD$ $BDB=0 $UFLD$ BDB,POOL,POOL,,VALUEO BDBOF$ DEF$SZ  .PSECT	$RMS11,D,CON,GBL,REL,RW .BLKB	<$BDB*BD$BLN>	 .ENDM P$BDB>     ž M        .MACRO P$BUF VALUE .MCALL $UFLD$	 $BUF=0 $UFLD$ BUF,POOL,POOL,,VALUEF .PSECT	$$RMS3,D,CON,GBL,REL,RW .BLKB	<$BUF+3>&^C3 .ENDM P$BUF      p M        .MACRO POOL$EL .MCALL $SEQCK  $SEQCK POOL,POOL DPSECT ...TBL=0	 ...POOL=0D .ENDM POOL$E     f M        .MACRO $CREATE FAB,ERROR .MCALL $CALL$= $CALL$ $RMCRE,FAB,ERRORO .ENDM $CREATEM           b M        .MACRO $OPEN FAB,ERROR .MCALL $CALL$  $CALL$ $RMOPE,FAB,ERRORM .ENDM $OPEN,     f M        .MACRO $EXTEND FAB,ERROR .MCALL $CALL$  $CALL$ $RMEXT,FAB,ERRORA .ENDM $EXTENDF     d M        .MACRO $ERASE FAB,ERRORR .MCALL $CALL$E $CALL$ $RMERA,FAB,ERROR  .ENDM $ERASE     d M        .MACRO $DISPLAY FAB,ERRE .MCALL $CALL$O $CALL$ $RMDSP,FAB,ERR0 .ENDM $DISPLAY     ` M        .MACRO $CLOSE FAB,ERRA .MCALL $CALL$M $CALL$ $RMCLO,FAB,ERRM .ENDM $CLOSE     p M        .M      ACRO $CONNECT RAB,ERROR,SUCF .MCALL $CALL$L $CALL$ $RMCON,RAB,ERROR,SUCR .ENDM $CONNECT     v M         .MACRO $DISCONNECT RAB,ERROR,SUC .MCALL $CALL$L $CALL$ $RMDIS,RAB,ERROR,SUCE .ENDM $DISCONNECT      p M        .MACRO $RELEASE RAB,ERROR,SUCC .MCALL $CALL$, $CALL$ $RMREL,RAB,ERROR,SUC  .ENDM $RELEASE     j M        .MACRO $FREE RAB,ERROR,SUC .MCALL $CALL$E $CALL$ $RMFRE,RAB,ERROR,SUC  .ENDM $FREES     T M        .MACRO $RETURN .MCALL ..EMITM ..EMIT <RTS	PC>  .ENDM $RETURN            V M        .MACRO $WAIT RAB .MCALL $CALL$L $CALL$ $RMWAI,RAB, .ENDM  $WAIT     f M        .MACRO $READ RAB,ERR,SUC .MCALL $CALL$  $CALL$ $RMREA,RAB,ERR,SUCI .ENDM $READU     h M        .MACRO $WRITE RAB,ERR,SUCC .MCALL $CALL$, $CALL$ $RMWRI,RAB,ERR,SUC  .ENDM $WRITE     h M        .MACRO $GET RAB,ERROR,SUC  .MCALL $CALL$E $CALL$ $RMGET,RAB,ERROR,SUCE
 .ENDM $GET     h M        .MACRO $PUT RAB,ERROR,SUC  .MCALL $CALL$E $CALL$ $RMPUT,RAB,ERROR,SUC<
 .ENDM $PUT     j M              .MACRO $FIND RAB,ERROR,SUC .MCALL $CALL$L $CALL$ $RMFIN,RAB,ERROR,SUC  .ENDM $FIND      n M        .MACRO $UPDATE RAB,ERROR,SUC .MCALL $CALL$M $CALL$ $RMUPD,RAB,ERROR,SUCU .ENDM $UPDATE      n M        .MACRO $DELETE RAB,ERROR,SUC .MCALL $CALL$A $CALL$ $RMDEL,RAB,ERROR,SUC  .ENDM $DELETEM     b M        .MACRO $ENQP FAB,ERROR .MCALL $CALL$A $CALL$ $RMENQ,FAB,ERROR  .ENDM $ENQP      b M        .MACRO $DSQP FAB,ERROR .MCALL $CALL$M $CALL$ $RMDSQ,FAB,ERROR  .ENDM $DSQP            f M        .MACRO $QUIET FAB,ERRORL .MCALL $CALL$$ $CALL$ $RMQUI,FAB,ERRORE .ENDM  $QUIET      l M        .MACRO $FLUSH RAB,ERROR,SUCA .MCALL $CALL$L $CALL$ $RMFLU,RAB,ERROR,SUCD .ENDM $FLUSH     n M        .MACRO $REWIND RAB,ERROR,SUC .MCALL $CALL$C $CALL$ $RMRWI,RAB,ERROR,SUCE .ENDM $REWIND      r M        .MACRO $TRUNCATE RAB,ERROR,SUC .MCALL $CALL$M $CALL$ $RMTRU,RAB,ERROR,SUC  .ENDM $TRUNCATE      j M        .MACRO $NXTVOL RAB,ERR,SUC .MCALL $CALL$O $CALL$ $RMNXT,RAB,      ERR,SUC  .ENDM $NXTVOL$     h M        .MACRO $SPACE RAB,ERR,SUCU .MCALL $CALL$E $CALL$ $RMSPA,RAB,ERR,SUC  .ENDM $SPACE     È M        .MACRO $RMSTAT VALUE 	.IIF	NDF,$$ERR,$$ERR=0  .IF B <VALUE>  	$RMSTAT DFIN$LM 	.MEXITI .ENDCE .MCALL DFIN$L,DFIN$G,$IOER$L 	VALUE	SU$SUC,1. 	VALUE	SU$DUP,2. 	VALUE	SU$IDX,3. 	VALUE	SU$RRV,4. ;	VALUE	SU$BOF,5.  	VALUE	SU$RLK,20.L ...VAL=1 .IF IDN <VALUE> <DFIN$G>	 	...VAL=0  .ENDC > 	$IOER$	ER$ABO,177760,-16.,<OPERATION ABORTED(STV=ER$STK/MAP)>K 	$      IOER$	ER$ACC,177740,-32.,<F11ACP COULD NOT ACCESS FILE(STV=SYS ERR CODE)>M@ 	$IOER$	ER$ACT,177720,-48.,<"FILE" ACTIVITY PRECLUDES OPERATION>2 	$IOER$	ER$AID,177700,-64.,<BAD AREA ID(STV=@XAB)>> 	$IOER$	ER$ALN,177660,-80.,<ALIGNMENT OPTIONS ERROR(STV=@XAB)>: 	$IOER$	ER$ALQ,177640,-96.,<ALLOCATION QUANTITY TOO LARGE>1 	$IOER$	ER$ANI,177620,-112.,<NOT ANSI "D" FORMAT> @ 	$IOER$	ER$AOP,177600,-128.,<ALLOCATION OPTIONS ERROR(STV=@XAB)>H 	$IOER$	ER$AST,177560,-144.,<INVALID(I.E. SYNCH) OPERATION AT AST LEVEL>D 	$      IOER$	ER$ATR,177540,-160.,<ATTRIBUTE READ ERROR(STV=SYS ERR CODE)>E 	$IOER$	ER$ATW,177520,-176.,<ATTRIBUTE WRITE ERROR(STV=SYS ERR CODE)>O8 	$IOER$	ER$BKS,177500,-192.,<BUCKET SIZE TOO LARGE(FAB)>= 	$IOER$	ER$BKZ,177460,-208.,<BUCKET SIZE TOO LARGE(STV=@XAB)>$9 	$IOER$	ER$BLN,177440,-224.,<"BLN" LENGTH ERROR(RAB/FAB)>$@ 	$IOER$	ER$BOF,177430,-232.,<BEGINNING OF FILE DETECTED($SPACE)>F 	$IOER$	ER$BPA,177420,-240.,<PRIVATE POOL ADDRESS NOT MULTIPLE OF "4">C 	$IOER$	ER$BPS,177400,-256.,<PRIVATE POOL SIZE NOT M      ULTIPLE OF "4">7C 	$IOER$	ER$BUG,177360,-272.,<INTERNAL RMS ERROR CONDITION DETECTED>7/ 	$IOER$	ER$CCR,177340,-288.,<CAN'T CONNECT RAB>)W 	$IOER$	ER$CHG,177320,-304.,<$UPDATE-KEY CHANGE WITHOUT HAVING ATTRIBUTE OF XB$CHG SET>,> 	$IOER$	ER$CHK,177300,-320.,<BUCKET FORMAT CHECK-BYTE FAILURE>L 	$IOER$	ER$CLS,177260,-336.,<RSTS/E CLOSE FUNCTION FAILED(STV=SYS ERR CODE)>J 	$IOER$	ER$COD,177240,-352.,<INVALID OR UNSUPPORTED "COD" FIELD(STV=@XAB)>E 	$IOER$	ER$CRE,177220,-368.,<COULD NOT CREATE FILE(STV=SYS ERR COD      E)>IS 	$IOER$	ER$CUR,177200,-384.,<NO CURRENT RECORD(OPERATION NOT PRECEDED BY GET/FIND)>$U 	$IOER$	ER$DAC,177160,-400.,<F11-ACP DEACCESS ERROR DURING "CLOSE"(STV=SYS ERR CODE)>YB 	$IOER$	ER$DAN,177140,-416.,<DATA "AREA" NUMBER INVALID(STV=@XAB)>= 	$IOER$	ER$DEL,177120,-432.,<RFA-ACCESSED RECORD WAS DELETED>7F 	$IOER$	ER$DEV,177100,-448.,<BAD DEVICE, OR INAPPROPRIATE DEVICE TYPE>5 	$IOER$	ER$DIR,177060,-464.,<ERROR IN DIRECTORY NAME>=6 	$IOER$	ER$DME,177040,-480.,<DYNAMIC MEMORY EXHAUSTED>1 	$IOER$	ER$DNF,1      77020,-496.,<DIRECTORY NOT FOUND>,. 	$IOER$	ER$DNR,177000,-512.,<DEVICE NOT READY>H 	$IOER$	ER$DPE,176770,-520.,<DEVICE POSITIONING ERROR(STV=SYS ERR CODE)>; 	$IOER$	ER$DTP,176760,-528.,<"DTP" FIELD INVALID(STV=@XAB)>EN 	$IOER$	ER$DUP,176740,-544.,<DUPLICATE KEY DETECTED, XB$DUP ATTRIBUTE NOT SET>P 	$IOER$	ER$ENT,176720,-560.,<RSX-F11ACP ENTER FUNCTION FAILED(STV=SYS ERR CODE)>D 	$IOER$	ER$ENV,176700,-576.,<OPERATION NOT SELECTED IN "ORG$" MACRO>) 	$IOER$	ER$EOF,176660,-592.,<END-OF-FILE>>< 	$IOER$	ER$ESS,1      76640,-608.,<EXPANDED STRING AREA TOO SHORT>B 	$IOER$	ER$EXP,176630,-616.,<FILE EXPIRATION DATE NOT YET REACHED>C 	$IOER$	ER$EXT,176620,-624.,<FILE EXTEND FAILURE(STV=SYS ERR CODE)>5? 	$IOER$	ER$FAB,176600,-640.,<NOT A VALID FAB("BID" NOT=FB$BID)>,V 	$IOER$	ER$FAC,176560,-656.,<ILLEGAL FAC FOR REC-OP,0, OR FB$PUT NOT SET FOR "CREATE">3 	$IOER$	ER$FEX,176540,-672.,<FILE ALREADY  EXISTS >	- 	$IOER$	ER$FID,177530,-680.,<INVALID FILE-ID>"E 	$IOER$	ER$FLG,176520,-688.,<INVALID FLAG-BITS COMBINATION(STV=@XAB)>S:       	$IOER$	ER$FLK,176500,-704.,<FILE IS LOCKED BY OTHER USER>Q 	$IOER$	ER$FND,176460,-720.,<RSX-F11ACP "FIND" FUNCTION FAILED(STV=SYS ERR CODE)>,, 	$IOER$	ER$FNF,176440,-736.,<FILE NOT FOUND>0 	$IOER$	ER$FNM,176420,-752.,<ERROR IN FILE NAME>2 	$IOER$	ER$FOP,176400,-768.,<INVALID FILE OPTIONS>. 	$IOER$	ER$FUL,176360,-784.,<DEVICE/FILE FULL>C 	$IOER$	ER$IAN,176340,-800.,<INDEX "AREA" NUMBER INVALID(STV=@XAB)>1H 	$IOER$	ER$IDX,176320,-816.,<INDEX NOT INITIALIZED(STV ONLY,STS=ER$RNF)>@ 	$IOER$	ER$IFI,176300,-832.,      <INVALID IFI VALUE,OR UNOPENED FILE>L 	$IOER$	ER$IMX,176260,-848.,<MAX NUM(254) AREAS/KEY XABS EXCEEDED(STV=@XAB)>6 	$IOER$	ER$INI,176240,-864.,<$INIT MACRO NEVER ISSUED>H 	$IOER$	ER$IOP,176220,-880.,<OPERATION ILLEGAL,OR INVALID FOR FILE ORG.>I 	$IOER$	ER$IRC,176200,-896.,<ILLEGAL RECORD ENCOUNTERED(SEQ. FILES ONLY)>,C 	$IOER$	ER$ISI,176160,-912.,<INVALID ISI VALUE, OR UNCONNECTED RAB>I; 	$IOER$	ER$KBF,176140,-928.,<BAD KEY BUFFER ADDRESS(KBF=0)>I: 	$IOER$	ER$KEY,176120,-944.,<INVALID KEY FIELD(KEY=0/NEG)>      B 	$IOER$	ER$KRF,176100,-960.,<INVALID KEY-OF-REFERENCE($GET/$FIND)>E 	$IOER$	ER$KSZ,176060,-976.,<KEY SIZE=0,OR TOO LARGE(IDX)/NOT=4(REL)>8P 	$IOER$	ER$LAN,176040,-992.,<LOWEST-LEVEL-INDEX "AREA" NUMBER INVALID(STV=@XAB)>4 	$IOER$	ER$LBL,176020,-1008.,<NOT ANSI LABELED TAPE>3 	$IOER$	ER$LBY,176000,-1024.,<LOGICAL CHANNEL BUSY>	? 	$IOER$	ER$LCH,175760,-1040.,<LOGICAL CHANNEL NUMBER TOO LARGE>OV 	$IOER$	ER$LEX,175750,-1048.,<LOGICAL EXTEND ERROR,PRIOR EXTEND STILL VALID(STV=@XAB)>< 	$IOER$	ER$LOC,175740,-105      6.,<"LOC" FIELD INVALID(STV=@XAB)>3 	$IOER$	ER$MAP,175720,-1072.,<BUFFER MAPPING ERROR>6X 	$IOER$	ER$MKD,175700,-1088.,<F11ACP COULD NOT MARK FILE FOR DELETION(STV=SYS ERR CODE)>8 	$IOER$	ER$MRN,175660,-1104.,<MRN VALUE=NEG/REL.KEY>MRN>R 	$IOER$	ER$MRS,175640,-1120.,<MRS VALUE=0 FOR FIXED LENGTH RECS/=0 FOR REL. FILES>T 	$IOER$	ER$NAM,175620,-1136.,<"NAM" BLOCK ADDRESS INVALID(NAM=0, OR NOT ACCESSIBLE)>E 	$IOER$	ER$NEF,175600,-1152.,<NOT POSITIONED TO EOF(SEQ. FILES ONLY)>=G 	$IOER$	ER$NID,175560,-1168.,<CA      N'T ALLOCATE INTERNAL INDEX DESCRIPTOR>OB 	$IOER$	ER$NPK,175540,-1184.,<INDEXED FILE-NO PRIMARY KEY DEFINED>L 	$IOER$	ER$OPN,175520,-1200.,<RSTS/E OPEN FUNCTION FAILED(STV=SYS ERR CODE)>C 	$IOER$	ER$ORD,175500,-1216.,<XAB'S NOT IN CORRECT ORDER(STV=@XAB)>5> 	$IOER$	ER$ORG,175460,-1232.,<INVALID FILE ORGANIZATION VALUE>I 	$IOER$	ER$PLG,175440,-1248.,<ERROR IN FILE'S PROLOGUE(RECONSTRUCT FILE)>CD 	$IOER$	ER$POS,175420,-1264.,<"POS" FIELD INVALID(POS>MRS,STV=@XAB)>F 	$IOER$	ER$PRM,175400,-1280.,<BAD FILE DATE       FIELD RETRIEVED(STV=@XAB)>C 	$IOER$	ER$PRV,175360,-1296.,<PRIVILEGE VIOLATION(OS DENYS ACCESS)> @ 	$IOER$	ER$RAB,175340,-1312.,<NOT A VALID RAB("BID" NOT=RB$BID)>0 	$IOER$	ER$RAC,175320,-1328.,<ILLEGAL RAC VALUE>8 	$IOER$	ER$RAT,175300,-1344.,<ILLEGAL RECORD ATTRIBUTES>U 	$IOER$	ER$RBF,175260,-1360.,<INVALID RECORD BUFFER ADDR(NOT WORD-ALIGNED IF BLK-IO)> @ 	$IOER$	ER$RER,175240,-1376.,<FILE READ ERROR(STV=SYS ERR CODE)>4 	$IOER$	ER$REX,175220,-1392.,<RECORD ALREADY EXISTS>3 	$IOER$	ER$RFA,175200,-1408.,<BA      D RFA VALUE(RFA=0)>=4 	$IOER$	ER$RFM,175160,-1424.,<INVALID RECORD FORMAT>E 	$IOER$	ER$RLK,175140,-1440.,<TARGET BUCKET LOCKED BY ANOTHER STREAM>BR 	$IOER$	ER$RMV,175120,-1456.,<RSX-F11ACP REMOVE FUNCTION FAILED(STV=SYS ERR CODE)>= 	$IOER$	ER$RNF,175100,-1472.,<RECORD NOT FOUND(STV=0/ER$IDX)>,0 	$IOER$	ER$RNL,175060,-1488.,<RECORD NOT LOCKED>5 	$IOER$	ER$ROP,175040,-1504.,<INVALID RECORD OPTIONS> M 	$IOER$	ER$RPL,175020,-1520.,<ERROR WHILE READING PROLOGUE(STV=SYS ERR CODE)> = 	$IOER$	ER$RRV,175000,-1536.,<      INVALID RRV RECORD ENCOUNTERED>R: 	$IOER$	ER$RSA,174760,-1552.,<RAB STREAM CURRENTLY ACTIVE>W 	$IOER$	ER$RSZ,174740,-1568.,<BAD RECORD SIZE(RSZ>MRS, OR NOT=MRS IF FIXED LENGTH RECS>-T 	$IOER$	ER$RTB,174720,-1584.,<RECORD TOO BIG FOR USER'S BUFFER(STV=ACTUAL REC SIZE)>O 	$IOER$	ER$SEQ,174700,-1600.,<PRIMARY KEY OUT OF SEQUENCE(RAC=RB$SEQ FOR $PUT)>OR 	$IOER$	ER$SHR,174660,-1616.,<"SHR" FIELD INVALID FOR FILE(CAN'T SHARE SEQ FILES)>< 	$IOER$	ER$SIZ,174640,-1632.,<"SIZ" FIELD INVALID(STV=@XAB)>: 	$IOER$	ER$STK      ,174620,-1648.,<STACK TOO BIG FOR SAVE AREA>G 	$IOER$	ER$SYS,174600,-1664.,<SYSTEM DIRECTIVE ERROR(STV=SYS ERR CODE)>1/ 	$IOER$	ER$TRE,174560,-1680.,<INDEX TREE ERROR>DG 	$IOER$	ER$TYP,174540,-1696.,<ERROR IN FILE TYPE EXTENSION/FNS TOO BIG>UU 	$IOER$	ER$UBF,174520,-1712.,<INVALID USER BUFFER ADDR(0,OR BLK-IO NOT WORD ALIGNED)>A> 	$IOER$	ER$USZ,174500,-1728.,<INVALID USER BUFFER SIZE(USZ=0)>6 	$IOER$	ER$VER,174460,-1744.,<ERROR IN VERSION NUMBER>> 	$IOER$	ER$VOL,174440,-1760.,<INVALID VOLUME NUMBER(STV=@XAB      )>A 	$IOER$	ER$WER,174420,-1776.,<FILE WRITE ERROR(STV=SYS ERR CODE)>15 	$IOER$	ER$WLK,174410,-1784.,<DEVICE IS WRITE-LOCKED>RM 	$IOER$	ER$WPL,174400,-1792.,<ERROR WHILE WRITING PROLOGUE(STV=SYS ERR CODE)> A 	$IOER$	ER$XAB,174360,-1808.,<NOT A VALID XAB(@XAB=ODD,STV=@XAB)>< .MACRO $RMSTAT VALUE .ENDM $RMSTATN .ENDM $RMSTAT)     ô M        .MACRO $IOER$ SYM,VAL,DEC,MSGF .IF EQ ...VAL> .MCALL DFIN$GR DFIN$G SYM,VAL .IFF .MCALL DFIN$LE DFIN$L SYM,VAL .ENDC4 .IIF B <MSG> .MEXITU .IF GT $$ERR 	.      WORD	-^O<VAL>R 	.ASCIZ	^MSG^7 	.EVEN .ENDCE .ENDM $IOER$     þM        .MACRO ARDOF$ OFFSET .MCALL OFFSET,RMS$LK ...TPC=0 	OFFSET	A$FILL,1 	OFFSET	A$FLG,1L 	OFFSET	A$AID,1E 	OFFSET	A$BKZ,1) 	OFFSET	A$VOL,2B 	OFFSET	A$ALN,1O 	OFFSET	A$AOP,1B 	OFFSET	A$AVL,2  	OFFSET	A$AVL2,2 	OFFSET	A$CVB,2N 	OFFSET	A$CVB2,2 	OFFSET	A$CNB,2  	OFFSET	A$CNB2,2 	OFFSET	A$NUS,2  	OFFSET	A$NUS2,2 	OFFSET	A$NVB,2S 	OFFSET	A$NVB2,2 	OFFSET	A$NXT,2L 	OFFSET	A$NXT2,2 	OFFSET	A$XBY,2I 	OFFSET	A$XBY2,2       	OFFSET	A$DEQ,2 
 	OFFSET	,2 	OFFSET	A$LOC,2E 	OFFSET	A$LOC2,2 	OFFSET	A$RFI,0M 	OFFSET	A$RFI0,2 	OFFSET	A$RFI1,2 	OFFSET	A$RFI2,2 	OFFSET	A$FILL2,12.E 	OFFSET	A$CRC,2E .IF IDN <OFFSET> <DEF$SZ>) 	RMS$L	AD$BLN,0B 	.MEXIT	 .IFF 	OFFSET	AD$BLN,0 .ENDCF .MACRO ARDOF$ OFFSET .ENDM ARDOF$ .ENDM ARDOF$     òM        	.MACRO	IFAOF$	OFFSETE) 	.MCALL	RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG2' 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IFABO ...TPC=0# 	OFFSET	C$BID,1,<BID - BKP1	  = %P>, 	OFFSET	C$BKP1,1" 	O      FFSET	C$NIRB,2,<NXT IRAB	  = %P>% 	OFFSET	F$UBSZ,1,<UBSZ - LCHN	  = %P>E 	OFFSET	F$LCHN,1% 	OFFSET	F$DVCH,1,<DVCH - FACC	  = %P>$ 	OFFSET	F$FACC,1& 	OFFSET	      ,4,<SPARE	      	  = %P> 	$EMSTG		 <            	  = %P>B! 	OFFSET	F$BDBP,2,<BDB PTR	  = %P> & 	OFFSET	F$IFAB,2,<NXT IFAB    	  = %P>( 	OFFSET	F$POOL,4,<PRIVATE BUF POOL = %P> 	$EMSTG		 <            	  = %P>F 	OFFSET	F$LMRN,2 	OFFSET	F$HMRN,2 ...TPC=...TPC-4Z( 	OFFSET	F$IDXP,2,<IDX DESC/BLK-SZ  = %P> ...TPC=...TPC-2P 	OFFSET	F$BLSZ,2( 	OFF      SET	F$KBSZ,2,<KEY BUFFER SIZE  = %P>% 	OFFSET	F$AVBN,1,<AVBN - AMAX	  = %P>O 	OFFSET	F$AMAX,1 ...TPC=...TPC-2V 	OFFSET	F$DVBN,2% 	OFFSET	F$FORG,1,<FORG - RATT	  = %P>P 	OFFSET	F$RATT,1& 	OFFSET	F$RSIZ,2,<RECORD SIZE 	  = %P>$ 	OFFSET	F$HVBN,2,<HI VBN    	  = %P> 	$EMSTG		 <            	  = %P>  	OFFSET	F$LVBN,2$ 	OFFSET	F$HEOF,2,<HI EOF BLK	  = %P>$ 	OFFSET	F$LEOF,2,<LO EOF BLK	  = %P>' 	OFFSET	F$FFBY,2,<1ST FREE BYTE	  = %P>E% 	OFFSET	F$BKSZ,1,<BKSZ - HDSZ	  = %P>T 	OFFSET	F$HDSZ,1 	OFFSET	F$MRS,2,      <MRS		  = %P><" 	OFFSET	F$DEQ,2,<DEQ	     	  = %P>& 	OFFSET	F$RTDE,2,<RTDE        	  = %P>" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	IF$BLNP 	.IFFE 	OFFSET	IF$BLN 	.ENDC .IF DF R$$TSTZ .IIF GT R$$TST-1 .MEXITN .ENDCV 	.MACRO	IFAOF$	OFFSET	 	.ENDM 	.ENDM	IFAOF$      M        	.MACRO	IFA$BT	DEF 	.MCALL	DEF= 	DEF	IF$BID,13 	DEF	BK$BUS,1B 	DEF	BK$IOP,2F 	DEF	BK$EOF,10 	DEF	BK$PRV,4  	DEF	BK$RWC,20 	DEF	BK$PAR,40 	DEF	BK$ACC,100F 	DEF	BK$ANI,200F 	DEF	FB$SH      R,200	 	.MACRO	IFA$BT	DEF 	.ENDM 	.ENDM	IFA$BT>     ~M        	.MACRO	IRAOF$	OFFSET ) 	.MCALL	RMS$L,OFFSET,STRU$B,STRU$E,$EMSTGN ...TPC=0' 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IRAB	" 	OFFSET	C$BID,1,<BID - BKP1	 = %P> 	OFFSET	C$BKP1,1! 	OFFSET	C$NIRB,2,<NXT IRAB	 = %P> $ 	OFFSET	R$IFAB,2,<PTR TO IFAB	 = %P>$ 	OFFSET	R$CBDB,2,<CURRENT BDB	 = %P>! 	OFFSET	R$NBDB,2,<NEXT BDB	 = %P>F  	OFFSET	R$LNRP,2,<LOW NRP	 = %P>! 	OFFSET	R$HNRP,2,<HIGH NRP	 = %P>A' 	OFFSET	R$INRP,1,<ID KEY REF/BNRP = %P>  	OFFSET	      R$KNRP,1 ...TPC=...TPC-2F 	OFFSET	R$BNRP,2# 	OFFSET	R$LRP,2,<LOW RP	    	 = %P>O 	OFFSET	R$HRP,2,<HIGH RP	 = %P>S" 	OFFSET	R$IRP,1,<ID KEY REF	 = %P> 	OFFSET	R$KRP,1E ...TPC=...TPC-2	 	OFFSET	R$BRP,2," 	OFFSET	R$IRRV,1,<ID - BCNT	 = %P> ...TPC=...TPC-12 	OFFSET	R$MBC,1  	OFFSET	R$BCNT,1  	OFFSET	R$LRRV,2,<LOW RRV	 = %P> ...TPC=...TPC-2	 	OFFSET	R$CSIZ,2! 	OFFSET	R$HRRV,2,<HIGH RRV	 = %P>$% 	OFFSET	R$NKAD,2,<KEY STG ADDR	 = %P>2! 	OFFSET	R$SPOS,2,<SIDR-POS	 = %P>1" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU      $E 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	IR$BLN  	.IFF	 	OFFSET	IR$BLN 	.ENDC .IF DF R$$TST$ .IIF GT R$$TST-1 .MEXITO .ENDC$ 	.MACRO	IRAOF$	OFFSET> 	.ENDM 	.ENDM	IRAOF$T     M        	.MACRO	IRA$BT	DEF 	.MCALL	DEFD 	DEF	IR$BID,11 	DEF	BK$BUS,12 	DEF	BK$IOP,2, 	DEF	BK$EOF,10 	DEF	BK$ASY,200R 	DEF	BK$FND,100% 	DEF	BK$IDX,100- 	DEF	BK$BLK,40 	DEF	BK$SEQ,20 	DEF	BK$SSK,10 	DEF	BK$DUP,4E 	.MACRO	IRA$BT	DEF 	.ENDM 	.ENDM	IRA$BT$     r M        .MACRO KDX$BT DEFO
 .MCALL DEF 	DEF	P      R$NEX,1F .MACRO KDX$BT DEFS .ENDM KDX$BT .ENDM KDX$BT     øM        	.MACRO	KDXOF$	OFFSETI0 	.MCALL	$POSIZ,RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0) 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	PDXDSCR* 	OFFSET  K$NLVB,2,<LOW VBN OF NXT DESC %P>+ 	OFFSET  K$NHVB,2,<HIGH VBN OF NXT DESC %P>0+ 	OFFSET  K$NBYT,2,<BYTE POS OF NXT DESC %P>$ 	OFFSET	K$IAN,1,< AREA #'S	%2P>$ 	OFFSET	K$LAN,1S 	OFFSET	K$DAN,1, 	OFFSET	K$LVL,1T) 	OFFSET  K$IBKS,1,<IDX/DATA BKT SIZE  %P>  	OFFSET  K$DBKS,1E ...TPC=...TPC-1D 	O      FFSET	P$DBKS,1# 	OFFSET	K$LVBN,2,< LOW ROOT VBN	%P>D" 	OFFSET	K$HVBN,2,< HI ROOT VBN	%P>( 	OFFSET	K$FLGS,1,< INDEX FLAGS-FILL  %P> ...TPC=...TPC-1G 	OFFSET	P$FLGS,1 	OFFSET	K$DTP,1$" 	OFFSET	K$NSEG,1,< #SEG - NULL	%P> 	OFFSET	K$NULL,1( 	OFFSET	K$KYSZ,1,<TOTAL KEY SIZE/KRF %P> 	OFFSET	K$KEY,1F( 	OFFSET	K$MINL,2,<MIN LENGTH RECORD  %P>% 	OFFSET	K$IFIL,2,< IDX FILL BYTES	%P>E& 	OFFSET	K$DFIL,2,< DATA FILL BYTES	%P> 	$POSIZ OFFSET,K! 	OFFSET  K$KNM,32.,< KEY NAME %P>O 	OFFSET	K$LDVB,2 	OFFSET	K$HDVB,2       	OFFSET	,14. 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	KD$BLNO 	.IFF$ 	OFFSET	KD$BLN 	.ENDC4 	OFFSET  P$AVBN,1,<VBN OF AREA DESC/# AREA DESCS %P> 	OFFSET  P$AMAX,1L- 	OFFSET	P$DVBN,2,<DVBN=FIRST DATA BKT VBN=%P>  	OFFSET	P$DVB2,2% 	OFFSET	P$LMRN,2,<MAX REC NUMBER =%P> * 	OFFSET	P$HMRN,2,<HIGH-MAX REC NUMBER =%P>" 	OFFSET	P$LEOF,2,<LOW-EOF VBN =%P># 	OFFSET	P$HEOF,2,<HIGH-EOF VBN =%P>F% 	OFFSET	P$VERN,2,<VERSION NUMBER =%P>O" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E .IF DF R$$TSTO .IIF GT R$$TST-1 .MEXIT$ .ENDC        	.MACRO	KDXOF$	OFFSET< 	.ENDM 	.ENDM	KDXOF$L     b M        .MACRO IDX$BT DEFN
 .MCALL DEF .MACRO IDX$BT DEFR .ENDM IDX$BT .ENDM IDX$BT     M        	.MACRO	IDXOF$	OFFSETF0 	.MCALL	$POSIZ,RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0) 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IDXDSCH* 	OFFSET	I$IBKS,1,<IDX/DATA BKT SIZE  = %P> 	OFFSET	I$DBKS,1% 	OFFSET	I$NXT,2,<NXT IDXDSC	    = %P>E( 	OFFSET	I$LVBN,2,<LOW ROOT VBN	    = %P>' 	OFFSET	I$HVBN,2,<HI ROOT VBN	    = %P>O ...TPC=...TPC-41 	OFFSET	I$UDAR      ,1 	OFFSET	I$IDAR,1 	OFFSET	I$LDAR,1
 	OFFSET	,1* 	OFFSET	I$FLGS,1,<INDEX FLAGS-FILL   = %P> 	OFFSET	I$DTP,1B' 	OFFSET	I$NSEG,1,<#SEG - NULL	    = %P>  	OFFSET	I$NULL,1* 	OFFSET	I$KYSZ,1,<TOTAL KEY SIZE/KRF = %P> 	OFFSET	I$KEY,1E* 	OFFSET	I$MINL,2,<MIN LENGTH RECORD  = %P>$ 	OFFSET	I$IFIL,2,<IDX FILL	    = %P>% 	OFFSET	I$DFIL,2,<DATA FILL	    = %P>  	$POSIZ OFFSET,I* 	OFFSET	      ,4,<                   = %P># 	$EMSTG		 <                   = %P>< 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	ID$BLNO 	.IFF$ 	O      FFSET	ID$BLN 	.ENDC" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E .IF DF R$$TSTN .IIF GT R$$TST-1 .MEXITO .ENDC$ 	.MACRO	IDXOF$	OFFSET1 	.ENDM 	.ENDM	IDXOF$      $M        .MACRO BKT$BT DEF<
 .MCALL DEF 	DEF	BC$LBK,1O 	DEF	BC$ROT,2  	DEF	IC$KCP,42 	DEF	IC$EMP,10 	DEF	IC$NUL,20 	DEF	DC$DEL,4D 	DEF	DC$RRV,10 	DEF	DC$NPS,20 	DEF	DC$KDL,40 	DEF	DC$NCP,100  ;	DEF	DC$DEL,4 	DEF	DC$REC,10 .MACRO BKT$BT DEF> .ENDM BKT$BT .ENDM BKT$BT     hM        .MACRO BKTOF$ OFFSET .MCALL OFFSET  ...TPC=0       	OFFSET	B$CHK,1N 	OFFSET	B$TAA,1F 	OFFSET	B$ADR,2U 	OFFSET	B$NBY,2N 	OFFSET	B$NID,11 	OFFSET	B$LID,1  	OFFSET	B$NBK,4F 	OFFSET	B$LEV,1N 	OFFSET	B$BCB,1 	OFFSET	B$REC,0O 	OFFSET	S$BHD,0A ...TPC=0 	OFFSET	B$PS,0 	OFFSET	B$IRCB,1 	OFFSET	B$BPTR,0 	OFFSET	S$IDXR ...TPC=0 	OFFSET	B$PS,0 	OFFSET	B$DRCB,1 	OFFSET	B$ID,1 	OFFSET	B$RPTR,5 	OFFSET	B$RHDR,0 	OFFSET	S$UDRF ...TPC=0 	OFFSET	B$PS,0 	OFFSET	B$DRCB,1 	OFFSET	B$ID,1 	OFFSET	B$SIZ,2  	OFFSET	B$KEY,0S 	OFFSET	S$SIDR .MACRO BKT      OF$ OFFSET .ENDM BKTOF$ .ENDM BKTOF$     ÒM        	.MACRO	BDBOF$	OFFSETE) 	.MCALL	RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG, ...TPC=0& 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	BDB  	OFFSET	B$WK1,2,<WORK AREA	= %P> 	OFFSET	B$NXT,2,<NEXT BDB	= %P>1 	OFFSET	B$OWN,2,<OWNER		= %P>D# 	OFFSET	B$NUMB,2,<#BYTES USED	= %P>	# 	OFFSET	B$WAIT,2,<WAIT THREAD	= %P>P# 	OFFSET	B$FLGS,1,<FLAGS - USE	= %P>F 	OFFSET	B$USE,1E 	OFFSET	B$LVBN,2,<LOW VBN	= %P>E  	OFFSET	B$HVBN,2,<HIGH VBN	= %P># 	OFFSET	B$SIZE,2,<SIZE OF BUF	= %P>T      # 	OFFSET	B$ADDR,2,<ADDR OF BUF	= %P>$" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	BD$BLN$ 	.IFF  	OFFSET	BD$BLN 	.ENDC .IF DF R$$TSTT .IIF GT R$$TST-1 .MEXIT, .ENDCR 	.MACRO	BDBOF$	OFFSET, 	.ENDM 	.ENDM	BDBOF$F     ä M        	.MACRO	BDB$BT	DEF 	.MCALL	DEFS 	DEF	BD$VAL,1O 	DEF	BD$DRT,2< 	DEF	BD$IOP,4P 	DEF	BD$LCK,10 	DEF	BD$DYM,20 	DEF	BD$PRM,40 	DEF	BD$WFO,100E 	DEF	BD$ELK,200B 	.MACRO	BDB$BT	DEF 	.ENDM 	.ENDM	BDB$BT      ðM        	.MACRO	IMAOF$	O      FFSETF# 	.MCALL	OFFSET,STRU$B,STRU$E,$EMSTGI ...TPC=0) 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IMAREAF, 	OFFSET	Y$BDBH,4,<BDB BLOCK POOL       = %P>% 	$EMSTG		 <                     = %P>1, 	OFFSET	Y$IRAH,4,<IRAB BLOCK POOL      = %P>% 	$EMSTG		 <                     = %P>., 	OFFSET	Y$IFAH,4,<IFAB/IDX BLOCK POOL  = %P>% 	$EMSTG		 <                     = %P>B, 	OFFSET	Y$KEYH,4,<KEY STRING BUF POOL  = %P>% 	$EMSTG		 <                     = %P>	) 	OFFSET	Y$BFLH,4,<BUFFER POOL	      = %P> % 	$EMSTG		 <                           = %P>L, 	OFFSET	Y$WIN0,1,<MAPPING WINDOW-0-1   = %P> 	OFFSET	Y$WIN1,1, 	OFFSET	Y$DREG,2,<DYNAMIC REGION NUMBER= %P>, 	OFFSET	Y$DYLH,4,<DYNAMIC MAPPED POOL  = %P>% 	$EMSTG		 <                     = %P>B, 	OFFSET	Y$FATL,2,<@FATAL ERROR ROUTINE = %P>, 	OFFSET	Y$ENSP,2,<UNADJ ENTRY SP       = %P>) 	OFFSET	Y$CTXP,2,<CONTEXT PTR	      = %P> ) 	OFFSET	Y$STKR,2,<STACK RESET	      = %P>F, 	OFFSET	Y$WKQH,2,<WORK QUEUE HEAD      = %P>, 	OFFSET	Y$WKQT,2,<WORK QUEUE TAIL      = %P>+ 	OFFSET	Y$SYSV,2,<SYSTEM STA      TUS	      = %P> , 	OFFSET	Y$IFAB,2,<IFAB LIST            = %P>, 	OFFSET	Y$RECN,2,<@REC-NUM TO RFA SUBR.= %P>- 	OFFSET  Y$AUTO,4,<AUTO LOAD CALL       = %P>P% 	$EMSTG		 <                     = %P> ( 	OFFSET	Y$QIO,24.,<QIO DPB SCRATCH AREA> ...TPC=Y$QIO 	OFFSET	Y$DIC,2N 	OFFSET	Y$IOFC,2 	OFFSET	Y$LCHN,2 	OFFSET	Y$EFPI,2 	OFFSET	Y$IOST,2 	OFFSET	Y$AST,2T 	OFFSET	Y$PARM,12.% 	$EMSTG		 <DIC/DPB SIZE         = %P>E 	$EMSTG		 <IO FUNC	      = %P># 	$EMSTG		 <LUN/NOT USED	      = %P>E 	$EMSTG		 <EFN/PRI	            = %P> 	$EMSTG		 <IO STAT	      = %P> 	$EMSTG		 <AST ADDR	      = %P>E 	$EMSTG		 <P0		      = %P> 	$EMSTG		 <P1		      = %P> 	$EMSTG		 <P2		      = %P> 	$EMSTG		 <P3		      = %P> 	$EMSTG		 <P4		      = %P> 	$EMSTG		 <P5		      = %P>$ 	$EMSTG		 <IO EXEC TRANSFER VECTORS>* 	OFFSET	Y$TSTA,2,<START THREAD	      = %P>' 	OFFSET	Y$READ,2,<READ FUNC	      = %P>E) 	OFFSET	Y$WRITE,2,<WRITE FUNC	      = %P> * 	OFFSET	Y$SPFN,2,<SPECIAL FUNC	      = %P>' 	OFFSET	Y$FILE,2,<FILE FUNC	      = %P>T% 	OFFSET	Y$WA      IT,2,<IO WAIT	      = %P> * 	OFFSET  Y$GETS,2,<GET SEGMENT	      = %P>" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E .IF DF R$$TST  .IIF GT R$$TST-1 .MEXIT	 .ENDC= 	.MACRO	IMAOF$	OFFSET  	.ENDM 	.ENDM	IMAOF$	      M        	.MACRO	IMA$BT	DEF 	.MCALL	DEF  	DEF	SY$AST,1E 	DEF	SY$INI,2F 	DEF	SY$ELK,4T 	.MACRO	IMA$BT	DF% 	.ENDM 	.ENDM	IMA$BTE     âM        	.MACRO  $LOCALS
 	HA.BLS=13 	HA.UI=1 	HA.FP=2	 	HA.CHU=3N	 	HA.UAT=4 	 	HA.NAM=5=	 	HA.TYP=6E	 	HA.VER=7< 	HA.NAW=10.  	HA.EXT=14.F
 	EX.AL      L=20	 	AL.VBN=1 	 	AL.APX=2 	 	AL.LBN=4G
 	S$PTRS=8. 	S$BDB=0 	S$NAM=2 	S$FNB=4 	S.$SDC=3*4$ 	S$ATR=6
 	S$ESS=64. 	FA.ENB=100000 	FA.WCK=20000  	FA.SEQ=40000	 	FA.LCK=400  	FA.XLK=4000 	FA.DLK=1000 	FA.RWD=4000 	FA.POS=10000T 	FA.FLL=2000 	FA.NEF=40000S 	.MACRO $LOCALS, 	.ENDM $LOCALS 	.ENDM $LOCALS     4M        .MACRO TRVOF$ OFFSET .MCALL OFFSETR ...TPC=0 	OFFSET  TV$OPE,8. 	OFFSET  TV$CRE,8. 	OFFSET  TV$CLO,8. 	OFFSET  TV$CON,8. 	OFFSET  TV$DIS,8. 	OFFSET  TV$GET,8. 	OFFSE      T  TV$PUT,8. 	OFFSET  TV$UPD,8. 	OFFSET  TV$DEL,8. 	OFFSET  TV$FINM .MACRO TRVOF$ OFFSET .ENDMS .ENDM TRVOF$     8M       6 	.MACRO	GCMLB$	MAXD,PRMPT,UBUF,LUN,PDL,SIZE,?PDL1,?BUF 	.MCALL	FAB$B,RAB$B,NAM$BW $$$CMB:	.WORD	1,$$$RAB 	.WORD	1,$$$FAB. $$$RAB:	RAB$BA 	R$FAB	$$$FAB. 	R$RAC	RB$SEQ. 	RAB$E $$$FAB:	FAB$B  	F$DNA	$$$DNA+3V 	F$DNS	7 	F$FNA	$$$FNAR 	F$FNS	3 	F$FAC	FB$GETP 	.IF	NB	<LUN>T
 	F$LCH	LUN 	.IFFT 	F$LCH	1 	.ENDC 	F$NAM	$$$NAMF 	F$ORG	FB$SEQ  	F$RAT	0 	F$RFM	FB$VARE       	FAB$E $$$NAM:	NAM$BT
 	N$ESS	34. 	NAM$E $$$DNA:	.ASCII	/SY:CMI.CMD/M $$$FNA:	.ASCII	/CMI/
 	.BLKB	29. 	.MCALL	GCMLD$ 	GCMLD$ $ 	.BYTE	0,GE.COM!GE.IND!GE.CLO!GE.CON 	.BLKW	4 	.BYTE	-1,MAXD 	.IF B	<PDL> 	.WORD	PDL1	 	.IFF,
 	.WORD	PDL 	.ENDC 	.IF NB <UBUF> 	.WORD	UBUF$ 	.IFF 
 	.WORD	BUF 	.ENDC 	.IF	NB,<SIZE> 	.WORD	SIZE,0N 	.IFFF 	.WORD	80.,0 	.ENDC $$$=.S 	.ASCII	<^O 15> <^O 12>N 	.IF NB	<PRMPT>L 	.ASCII	/PRMPT>/ 	.IFFN 	.ASCII	/   >/ 	.ENDC .=$$$+6  G.LPDL=<MAXD+1>*<10+<5*2      >> 	.IF B	<PDL> PDL1:	.BLKB	G.LPDL 	.ENDC 	.IF B	<UBUF>I 	.IF	NB,<SIZE> BUF:	.BLKB	SIZE+2/ 	.IFFB BUF:	.BLKB	82. 	.ENDC 	.ENDC GE.LEN=.-$$$CMBE 	.ENDM	GCMLB$C     †M       & 	.MACRO	GCML$	NAME,ADPR,LNPR,UBUF,SIZE 	.MCALL	GCMLD$,LDR0$ 	GCMLD$	DEF$LU 	LDR0$	NAMEU 	.IF NB	<LNPR> 	MOV	LNPR,G.PSDS(R0) 	.IIF B	<ADPR>, .ERROR& 	.IIF NB	<ADPR>,	MOV	ADPR,G.PSDS+2(R0) 	.ENDC 	.IIF B	<LNPR>,	CLR	G.PSDS(R0) 	.IF NB	<UBUF> 	MOV	UBUF,G.RBUF(R0) 	.ENDC 	.IF NB	<SIZE> 	MOV	SIZE,G.BFSZ(R0) 	.EN      DC 	.GLOBL	$RGCM1 	JSR	PC,$RGCM1 	.ENDM	GCML$     r M        	.MACRO	RCML$	NAME 	.MCALL	LDR0$F 	LDR0$	NAMEB 	.GLOBL	$RGCM2 	JSR	PC,$RGCM2 	.ENDM	RCML$     p M        	.MACRO	CCML$	BLKC 	.MCALL	LDR0$N
 	LDR0$	BLK 	.GLOBL	$RGCM3 	JSR	PC,$RGCM3 	.ENDM	CCML$     n M        	.MACRO	GCMLD$	GBL 	.MCALL	GCML$D 	GCML$D	GBLR 	.MACRO	GCMLD$	X 	.ENDM 	.ENDM	GCMLD$      €M        	.MACRO	GCML$D	GBL 	.IF IDN	<GBL>,<DEF$G>" 	.GLOBL	G.FAB,G.DSTR,G.FSTR,G.PPTR" 	.GLOBL	G.ERR,G.MODE,G.PSDS,      G.CMLD# 	.GLOBL	G.RSTS,G.FSTS,G.BFSZ,G.RBUFG) 	.GLOBL	GE.COM,GE.IND,GE.CLO,GE.LC,GE.LEN 1 	.GLOBL	GE.IOR,GE.OPR,GE.BIF,GE.MDE,GE.BFS,GE.EOFP 	.ENDC 	.MCALL	FABOF$,RABOF$,NAMOF$ 	FABOF$	RMS$LL 	RABOF$	RMS$L	 	NAMOF$	RMS$LB
 G.RAB	= 10 G.RSTS	= G.RAB+O$STS G.RSTV	= G.RAB+O$STV G.FAB	= G.RAB+RB$BLN G.FSTS	= G.FAB+O$STS G.DSTR	= G.FAB+FB$BLN+NB$BLN G.FSTR	= G.DSTR+10.G G.ERR	= G.FSTR+32. G.MODE	= G.ERR+1 G.PSDS	= G.ERR+2 G.CMLD	= G.ERR+6 G.PPTR	= G.CMLD+6F G.RBUF	= G.PPTR+2	 G.BFSZ	= G.RBUF+2,       G.ISIZ	= 20. G.DPRM	= G.ERR+G.ISIZG GE.LEN	= 414
 GE.COM	= 1
 GE.IND	= 2
 GE.CLO	= 4
 GE.LC	= 10 GE.CON	= 20E GE.MCC	= 40E GE.IOR	= -1  GE.OPR	= -2L GE.BIF	= -3F GE.MDE	= -4B GE.BFS	= -5R GE.EOF	= -10.N 	.MACRO	GCML$D	X 	.ENDM 	.ENDM	GCML$DO$STS G.RSTV	= G.RAB+O$STV G.FAB	= G.RAB+RB$BLN G.FSTS	= G.FAB+O$STS G.DSTR	= G.FAB+FB$BLN+NB$BLN G.FSTR	= G.DSTR+10.G G.ERR	= G.FSTR+32. G.MODE	= G.ERR+1 G.PSDS	= G.ERR+2 G.CMLD	= G.ERR+6 G.PPTR	= G.CMLD+6F G.RBUF	= G.PPTR+2	 G.BFSZ	= G.RBUF+2,          ›rjL¢_› 8$         øÀ  M    6 %    V   C       Ä à <                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        k˜:R "+"Ÿ   +"»   +"Ì   +"¬   +".   +"1   +"y   +"¨   +"L	   +"r	   +"w	   +"K   +"R   +"n   +"Þ   +"   +"   +"Ï   +"J   +"   +"   +"³   +"   +"•   +"   +"+   +"6   +"Ô   +"Þ   +"z   +"   +"6   +"B   +"…   +"0   +"X   +"„!   +"†!   +"ž!   +"K"   +"#   +"#   +"ª%   +"«%   +"`&   +"ì&   +"g'   +"k'   +"´'   +"¶'   +"½'   +"è'   +"Ô(   +"v8   +"ø8   +"99   +"`:   +"y:   +"¨:   +";   +"A;   +"E   +"¡E         +"–G   +"ÒG   +"6K   +"\K   +"iK   +"€K   +"àK   +"[M   +"xQ   +"üR   +"T   +"#T   +"µW   +"NX   +"ìX   +"Z   +"N`   +"”`   +"—`   +"çe   +"kf   +"Ýf   +"æf   +"ªp   +"«p   +"¼p   +"Öp   +"Zq   +"`q   +"qq   +"}q   +"kr   +"žr   +"¶r   +"¼r   +"èr   +"s   +"fs   +"ys   +"’s   +"¢s   +"™w   +"x   +"Bx   +"ëy   +"»z   +"Õ   +"ø€   +"–ƒ   +"R†   +"ZŠ   +"ä‹   +"š   +"«‘   +"L’   +"*–   ë%Ã   ë%ì   ë%÷   ë%k   ë%n   ë%D   ë%   ë%ç         ë%]   ë%Ô   ë%z   ë%ë   ë%ì&   ë% '   ë% '   ë%®(   ë%œ,   ë%ø8   ë%¼@   ë%éQ   ë%üR   ë%NX   ë%ôX   ë%kf   ë%Þf   ë%\g   ë%Iq   ë%Kq   ë%Tq   ë%t   ë%'t   ë%iw   ë%™w   ë%ly   ë%íy   ë%z   ë%   ë%   ë%Ý   ë%Þ   ë%æƒ   ë%Ä…   ë%º‰   ë%sŠ   ë%ü   ë%™’   ë%¤’   kKn   ëWn   ùaà8   ùa;   ùa0M   ùa¨M   ùaÆM   ùaÇM   ùa@`   úaà8   úa;   úa¸G   úaàG   úaþG   úaÿG   úaÐH   úa¸L   úaÖL   úa×L   úa0M   úaøM   úa(d   úaøf   úa0„   ûa          ûa`^   ûaÀ€   üap   üax   üaè!   üa°"   üa`'   üaà8   üa¨W   üaxZ   üa€   üaÐ‰   üaèŠ   ýa    ýaèv   ýa x   ýa¸y   þa   þa¸   þa"   þa>   þa?   þaà8   þa«:   þa¸:   þaL   þa¨W   þaÐW   þaxZ   þa@`   þa<a   þa:d   þaÐz   þa°   þaØ   þa ‚   þa(‚   þaP‚    b    bp   bx   bè&   b`'   b(x   b,x   b`Y   bp   bˆY   bpq   bÐz   bp   b    b8^   bV^   bW^   bÐz   b`‹   bø   bp   b`r   b°r   bÎr   bÏr   bxs         bH   bè]   bx_   b`   bØw   b …   b ™   b˜q   b¸`   bÖ`   b×`   bØ`   bÙ`   bÚ`   bÛ`   bÜ`   bÝ`   b˜q   br   bØr   b°‹   
b¸   
bQ	   
b`	   
b"   
b>   
b?   
bp   
b    
b0    
b¨%   
bè&   
b'   
b'   
b'   
bˆ'   
bP2   
b«:   
b¸:   
bðK   
b@`   
b<a   
b:d   
bèv   
b x   
b¸y   
bÐz   
bp€   
b°   
bØ   
bö   
b ‚   
b(‚   
bP‚   
bx‚   
b ‚   
bÈ‚   
bð‚   
bƒ   
bÐ‰   
b°‹   bÐ4   bP<   bn<         bo<   bp<   bq<   br<   bs<   bt<   bu<   bø   bp€   b¸G   bp   bÐz   b _   b8   b   ëpQ	   ëpì   ëpW   ëpY   ëpl   ëpn   ëpž!   ëp,&   ëp 5   ëp¡E   ëpÝE   ëpìE   ëpYM   ëp[M   ëpcM   ëp{Q   ëp;Y   ëpYY   ëp7[   ëp—`   ëp°p   ëpqq   ëpkr   ëp™w   ëp®„   ëp+…   ëpü   ëp   ëpÙš   ëp›   #zX   #zø8   #zkr   #zfs   #zz   k–»   k–,   k–Ð   k–Ò   k–   k–ç   k–´   k–<   k–,   k–X   k–ú%   k–²2   k–Ô4   k–y:         k–:   k–’:   k–¡E   k–´H   k–4K   k–^K   k–µW   k–ÔZ   k–+d   k–Üf   k–ßf   k–yq   k–Ôx   k–çy   k–z   k–"…   k–J†   k–Þ‰   ô¨"  ô ô¨Œ! à ô¨Î  ô¨  ô¨V! xô¨š:# d ô¨ªH  ô¨úW  ô¨8^• Ðû¨OM$ *û¨VN$ *©`T˜ f©€Tw © • Ð©€° Z ©¤’µ Æ ©Šµ Æ ©Gµ Æ ©òƒ» º"©ðs™ 8 #©àeš ¼#© sœ Z 9© & ¸9©ë3& ¸9©˜Kx 9©àM´ B ;©EM( ô ;©OM( ô ;©PM( ô ;©æ_  @©ôD) bC©O b D C©z) ´ D©ö`C Ö D©bb ä D©Åby  D©íbœ Î D©cœ Î D©Mw) bD©þ}>   E©¶H* äE©ÆH* äE©ÇH* äE©ÈH* äE©ÉH* äG©¶ZC Ö       G©]\c ° G©…\y æG©­\  H©$`  J©—d œ J©˜z ¢J©™ž ( J©Å, ¾J©v"C Ö J©$f jJ©E${ ¨J©m$Ÿ œ J©|—. €c©%( ô c©È_( ô e©6NC Ö e©ÝOg f e©P| È e©-PŸ øe©€‰G L i©öyC Ö i©{h r i©Å{}  i©í{¡ P i©|¡ P l©,x¡ zp©Åœ0 T s©`"£ ª š©õ
4 X  ©ô&e ä  ©¿.e ä  ©Iqe ä  ©Fye ä  © }5   ©À}} ¨  ©S~e ä  ©µ7 l  ©ñe ä  ©™’e ä ´©œw¯ 2 ¹©@X~ ô ¹©¶ZC Ö ¹©]\k (¹©…\~ ô ¹©­\£ r¼©õ‡; Ô ¼©ù‡; Ô ¾©HG L ¾©Ó¤ NÀ©h	¥ `Â©õ#; Ô Â©ù#; Ô Â©¨%¦ 4Â©¡E§ 0 Â©,`¨ þÂ©qq© ¼Â©ðsª Â©™w« PÃ©`"= ¶ Ã©i"< ^Ã©"l |Ã©€"  Ã©Ú}= ¶ Ú©ðGB °       Ú©¶Kh @Ý©[}A LÝ©6€C Ö Ý©Ýk (Ý©‚€ ” Ý©-‚¬ @ Þ© ¬ @ ã©,#­ ¸ ê©ÈB ° ê©2g® Ž ë©`"¯ 2 ë©"l |ë©€"  ì©Wm b ì©Kq¯ ô í©SZh @,ªPdB ”.ªKC 0 .ªþKC 0 3ª(#° Z 3ª¨³ Z ;ªh´ B ;ªà8µ Æ =ªx¸ œ =ªhº ¨ =ªÐ» º@ªW° Z @ªY° Z @ª—`° Z Šª0 ¾ ®‹ªàe¿ > ³ª4}P îÉª°hF ¢ ÉªØhF ¢ Ìªa	F xÎªÐWG L Óªø8Á ÂÓªz) ´ ÓªèH  ØªWm b Þª¡EÁ î òªàGÄ :«Wm b «µE Â («v"C Ö («$n | («E$ («m$Å  («XI \ B«¶Ko  I«„–Å .O«™wÆ O«•yÇ  R«°'J ò R«³'J ò S«`"Ê S«"q V S«€"  –U«SZq ÎU«6€C Ö U«Ýr ðU«‚" * U«-‚Ë Ú ”«€P î      ”«‡P î”«X @•«õ
R "•«Òµ Æ •«µO; Ô —«ç>   —«è>   —«é>   œ«Ws @œ«X @œ« L &œ«ZXL &œ«wM Ö«¯* 4«&+ ê«•, š «Ô/ 0 «{/ à «/ ’«"3 \«#6 À«ö&; $ «u': º «U(: º «œ,A œ «v:D «T[: º «E`H «\gK Ð «IqT  «Tq: º «!tL z «êvN « wN ª«)xC Ö «6xD «Ay: º «ŸzN ª«¶{C Ö «¸{C Ö «º{C Ö «¼{C Ö «¾{C Ö «å\ F «Ä…] < «ñ] ì «™’T  Ÿ«à`Í ¢ «x° Z  «ƒKÏ h  «_MÏ ¦£«`"g ø £«i"O h £«Ú}g ø ¤«P   ¤«ÎP   ¤«P   ¤«VP ú ¤«ªHP   ¤«úWP   §«õ<T  §«`TE Â ¨«»U À ¨«¯U À       ¨«•W š¨«lY „¨«„!Y „¨«´'Y „¨«üR[ ² ¨«žrY „¹«]Œ[ ”¼«8Ñ 0 ¿«vK €Ã«ôÒ Ã«KqÓ È«õ
E Â È«`TE Â È«LqÁ î Ê«ðsÔ  Ë«àeÔ ¢ Î«a(U À ò«ˆt þ 
¬¶Ku ‚ ¬ÀÕ Ð ¬¸L\ ò ¬6C Ö ¬Ýv ¸ ¬# @¬-Ö v ¬ðsÙ È ¬€"  –¬"Ú hY¬T}k ° Y¬±}k ° Y¬Ð] þZ¬àGÛ Þ h¬8L% ² h¬_MÜ  j¬˜ @j¬õ<R "l¬‡P îl¬ÀP îl¬Nv â¬°'^ 

­WTC Ö 
­XTC Ö ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ›rµz   1u  1up;‹ P 1uTK  ô 1ucK! à 1u¢K! x1uwL# d 1u®x$ *1uo†& 63uÀ& ¸3u®( ô 3u05† ü3uÅG) ´ 3u…K) b3ukM* 43uS* ä3uþ_+ ê3uIq, š 3u|q, ¾3uIt. €4u%!/ 0 4u;;/ à 4uH;/ ’4u0g‹ ü 4uëg0 T 5u»p3 \5u|q4 X 5uË– þ 5u™e ä 5u$™5  5u%™6 À5u0™… & 5u>™7 l 6u": º 6ut:; $ 6uMq; Ô 6u‘w< ^6uœw= ¶ 7uÔ>   7u`"A œ 7ub"A L7u2gB ° 9u‚B ”9uf'C 0 9uÁSC Ö 9uüXD =ulE Â =uÃF ¢ =u<F x=u²'G L =uYHH  =u0gŠ P ?uÖdH ?uüdI \ @u~qJ ò @u`†K Ð Bu0Š JBu–K €Buá"L z Bu€KL &BuúMM ÖBu0Nˆ €Bu9TN Bu=TN ª      Bu‘wO h Bu›wg ø Buœwƒ &Buz}P   Bu¢}P ú BuP îBuR "BuT  Bu6‘T  Bu+–U À BuŠ–W šBu©–Y „Bu˜[ ² CuÂ	[ ”DuÖs\ F EukY\ ò Eu¡d] < Gu¼] ì Gub	„ Gur	] þGuc}k ° Gu0€† ò Huþd^ 
[uŽEb D [ukMb ä [u `c ° [uqd œ [u|qf j\u%!g f \u;;h r _udh @_u`"k (_uœwl |fu[–m b guüdn | hudo  huœwq V hu‚…q Îhu`†r ðju[Ks @luÖst þ mudu ‚ mu¡dv ¸ ouó~v â‚uœ'w ƒu#x ƒukMy  ƒu `y æƒuqz ¢ƒu|q{ ¨„u%!| È „u;;}  …u$™} ¨ †ut:~ ô ‡u`"€ ” ‡uœw  ‰uC^ @uüd uœw  –u`†" * •u¡d# @—uçe% ² ©u[M• Ðªuœ'˜ f      ªufs™ 8 ªuLyš ¼ªu¤yœ Z «ukMœ Î «u `  «uqž ( «u|qŸ œ ¬u%!Ÿ ø¬u;;¡ P ¬uN¡ z¬uœw£ ª ®ut:£ r®u2X¤ N®u<d¥ `®uqq¦ 4®u=r§ 0 ®uçr¨ þ®uVs© ¼®ufsª ®u}s« P¯u`"¬ @ ¯u¡E­ ¸ ¯us® Ž ¯uœw¯ 2 ¯uÕ¯ ô ±u¡E° Z ±u±H³ Z ±uiw´ B ±u,xµ Æ ±uãƒ¸ œ ±uéƒº ¨ ±uòƒ» º³uNq¾ ®³uLy¿ > µu;;Á î µu,FÁ Â¶uLÄ :·uüdÅ  ¸u<Å .¸u½`Æ ¸uÊ`Ç  ¸uœwÊ ¸u`†Ë Ú ¸up†  ºu,`Í ¢ºuãeÏ h ºuçeÏ ¦ºu°x• H ºuµx• »u[Ñ 0 »ulEÒ »u•GÓ »ufsÔ  »uLyÔ ¢ ½uø8Õ Ð ½u¡dÖ v ½u0g‘ D½ufsÙ È ½uœwÚ h¿uLÛ Þ ¿uçeÜ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           M   PÀ…á*  ›rµz    PÀ…á   ¯”L  +"ŸHðÿ+"»Hàÿ*  +"ÌHÐÿ+"¬HÀÿ+".H°ÿ+"1H ÿ+"yHÿ*  +"¨H€ÿ+"L	Hpÿ+"r	H`ÿ+"w	HPÿ+"KH@ÿ*  +"RH0ÿ+"nH ÿ+"ÞHÿ+"Hÿ+"H ÿ*  +"ÏHðþ+"JHàþ+"HÐþ+"HÀþ+"³H°þ*  +"H þ+"•Hþ+"H€þ+"+Hpþ+"6H`þ*  +"ÔHPþ+"ÞH@þ+"zH0þ+"H þ+"6Hþ*  +"BH þ+"…Høý+"0Hðý+"XHàý+"„!HÐý*  +"†!HÀý+"ž!H°ý+"K"H ý+"#H˜ý+"#Hý*  +"ª%H€ý+"«%Hpý+"`&H`ý+"ì&HXÿ+"g'HPý*  +"k'H@ý+"´'H0ý+"¶'H ý+"½'Hý+"è'H ý*  +"Ô(H      ðü+"v8Hàü+"ø8HÐü+"99HÀü+"`:H°ü*  +"y:H ü+"¨:Hü+";H€ü+"A;Hpü+"EH`ü*  +"¡EHPü+"–GH@ü+"ÒGH0ü+"6KH ü+"\KHü*  +"iKH ü+"€KHðû+"àKHèû+"[MHàû+"xQHÐû*  +"üRHÀû+"TH°û+"#TH û+"µWHû+"NXH€û*  +"ìXHpû+"ZH`û+"N`HPû+"”`H@û+"—`H0û*  +"çeH û+"kfHû+"ÝfH û+"æfHðú+"ªpHàú*  +"«pHÐú+"¼pHÀú+"ÖpH°ú+"ZqH ú+"`qHú*  +"qqH€ú+"}qHpú+"krH`ú+"žrHPú+"¶rH@ú*  +"¼rH0ú+"èrH ú+"sHú+"fsH ú+"ysHðù*  +"’sHàù+"¢sHÐù+"™wHÀù+"xH°ù+"BxH ù*  +"ëyHù+"»zH€ù+"ÕHpù+"ø€H`ù+"      –ƒHPù*  +"R†H@ù+"ZŠH0ù+"ä‹H ù+"šHù+"«‘Hù*  +"L’H ù+"*–Hðøë%ÃH@ ë%ìH ë%÷H  *  ë%kH ë%nHP ë%DH ë%H ë%çH€ *  ë%]H@ ë%ÔH ë%zH0 ë%ëH ë%ì&H *  ë% 'H ë% 'H@ ë%®(H ë%œ,H ë%ø8H  *  ë%¼@H  ë%éQH ë%üRH ë%NXH ë%ôXH@ *  ë%kfH ë%ÞfH ë%\gH ë%IqH" ë%KqH *  ë%TqH ë%tH ë%'tH ë%iwH ë%™wH  *  ë%lyH  ë%íyH ë%zH ë%H ë%H *  ë%ÝH ë%ÞH ë%æƒH  ë%Ä…H ë%º‰H *  ë%sŠH ë%üH ë%™’H ë%¤’H! kKnH *  ëWnH  ùaà8H ùa      ;H ùa0MH ùa¨MH
 *  ùaÆMH
 ùaÇMH ùa@`H	 úaà8H  úa;H  *  úa¸GH1 úaàGH& úaþGH& úaÿGH( úaÐHH *  úa¸LH
 úaÖLH
 úa×LH úa0MH úaøMH. *  úa(dH úaøfH úa0„H ûa H ûa`^H  *  ûaÀ€H üapH üaxH3 üaè!H üa°"H2 *  üa`'H üaà8H üa¨WH* üaxZH- üa€H *  üaÐ‰H. üaèŠH ýa H ýaèvH ýa xH *  ýa¸yH þaH$ þa¸H þa"HF þa>HB *  þa?HD þaà8H þa«:HL þa¸:HN þaLH *  þa¨WH( þaÐWH þaxZH, þa@`H þa<aHH *  þa:dHJ þaÐzH0 þa°H8 þaØH: þa ‚H< *  þa      (‚H> þaP‚H@  b H bpH bxH2 *  bè&H b`'H b(xH b,xH b`YH$ *  bpH bˆYH bpqH bÐzH bpH *  b H3 b8^H bV^H bW^H bÐzH *  b`‹H bøH  bpH b`rH6 b°rH  *  bÎrH  bÏrH" bxsH bHH& bè]H *  bx_H b`H bØwH4 b …H
 b ™H *  b˜qH b¸`H bÖ`H b×`H bØ`H *  bÙ`H bÚ`H bÛ`H bÜ`H bÝ`H  *  b˜qH brH bØrH b°‹H 
b¸H *  
bQ	HP 
b`	H 
b"HF 
b>HB 
b?HD *  
bpH 
b H 
b0 H 
b¨%H      
 
bè&H *  
b'H 
b'H 
b'H 
bˆ'H 
bP2H" *  
b«:HL 
b¸:HN 
bðKH  
b@`H 
b<aHH *  
b:dHJ 
bèvH 
b xH 
b¸yH 
bÐzH *  
bp€H 
b°H, 
bØH. 
böH@ 
b ‚H0 *  
b(‚H2 
bP‚H4 
bx‚H6 
b ‚H8 
bÈ‚H: *  
bð‚H< 
bƒH> 
bÐ‰H* 
b°‹H bÐ4H *  bP<H" bn<H" bo<H# bp<H$ bq<H% *  br<H& bs<H' bt<H( bu<H) bøH *  bp€H b¸GH5 bpH bÐzH b _H *  b8H bH ëpQ	H€ ëpìH ëpWH *  ëpYH ëplH  ëpnHP ëpž!H ëp,&H *  ëp 5H ëp¡EH       ëpÝEH ëpìEH ëpYMH *  ëp[MH@ ëpcMH  ëp{QH ëp;YH ëpYYH *  ëp7[H  ëp—`H ëp°pH ëpqqH ëpkrH *  ëp™wH  ëp®„H  ëp+…H  ëpüH ëpH *  ëpÙšH@ ëp›H€ #zXH #zø8H #zkrH *  #zfsH #zzH k–»H k–,H k–ÐH *  k–ÒH k–H k–çH k–´H k–<H *  k–,H k–XH k–ú%H k–²2H k–Ô4H *  k–y:H k–:H k–’:H k–¡EH k–´HH8 *  k–4KH k–^KH k–µWH
 k–ÔZH k–+dH *  k–ÜfH
 k–ßfH k–yqH k–ÔxH
 k–çyH  *  k–zH k–"…H k–J†H	 k–Þ‰H     (          ›rµz(  ¯”          &M   PÀEÂ*  ‡uœw    PÀEÂ   ¯”L      (  ‡uœw(š   Ã©€"h ë©€"h  ¯”   
   ‡uœw  *    5
 ÃPùõ ?Ã@ùõ :  Ãpýðµ  *  & 2õµ  Ã0üW­  (Ã`üõ #Ãüôµ*  L    BÂe, 
Ü( Ã ÃÒ* 
 ÊEð ’¤*  r Ò 



R R 
¡ ‡ ôÅ@  õL ±   ˜ ‡        ÈM   SÀ¼*  ‰uC^    SÀ¼   ¯”L  9© @  C©z@  *   ©À}@  Éª°h@  œ« @  œ«ZX@  «êv@  *  5¬ ™@  Y¬T}@      (  ‰uC^(j”«Xh    œ«XhDj¬˜hN¯”   
   ‰uC^        *    &f¦æ 
ƒÜ( Á`@€," ,$ ‡w Ú *  & f& 
Á Â Ã ÷	Ì †õL óXúÿ÷	*  L   †Àðþ÷	  t ÷	  †õ ûL 5 5œ   Éª°h«êvC©z*  r 4 2p $ 2r " Â ÷	   ²#" ²- $   œ« *  ˜ ‚ 4
 ÷	¨ +W-2  õ@úL õ¥   *  ¾ õ°ýL õµ 4 õýL  4
 ÷	l 	*  ä Ã  ÃÁÁe  û	V †Æe ± ‡ –5ƒ‚€÷	  5¬ ™ ©À}ì 
 *  
  úÿ†Á"`úÁ"`úW,     9© *  0W,  ÷	  5
L ± ‡ Â ÷	  †Á
fL   Y¬T}œ«   VfN ÷	  µN µL ± ‡   
      œ«ZX       M   NÀÅç*  1u    NÀÅç   ¯”L  ¡«@  5¬ ™@  *      (  1u(T ô¨Îh" ô¨h ô¨ªHh    ô¨úWh H©$`h2 ¯”   
   1u  *    À @÷	& f÷	 ‡
Á
ý‡ À *  & Â  ‚€`w   &
  	Ž
   Ž
 0 Ž
  5¬ ™¡«  L €ÀÀ‡        ÜM   QÀEÂ*  uüd    QÀEÂ   ¯”L  9© @  C©z@  *  Éª°h@  œ«ZX@  «êv@  ¤«V@  Î«a(@  *  5¬ ™@  Y¬T}@      (  uüd(À («E$h  
  ¯”   
   uüd  *    ÷	   
Á Â 
÷	  úÿ†"`úÁ÷	  Î«a(      9© *  &   íõú 5 5÷	  †Àðþ÷	  ÷	  †õ  Y¬T}Éª°h «êv$C©z*  L  û 5
 %,t  õ0ù õ4r " 4p $ *  r 4h  4n  4l  4
& 5) 0 5   5 *  ˜ " 5( 1 Á÷	    ÷	  Ã  Ãf V  œ«ZX¤«V 5¬ ™  ¾ ‡        ¢ M   NÀEÛ*  1uTK    NÀEÛ   ¯”L  ô¨@      (    1uTK($ ô¨"h  ¯”   
   1uTK  (    Á ÷	  ‡£	  p  1 ¡ ‡   
ô¨       JM   PÀÅÎ*  uœw    PÀÅÎ   ¯”L      (  uœw(¾   S«€"h  ¬€"h* ¯”   
   uœw        *    Ãüõµ  Uõµ  Ã0üW­  KÃ`üõ*  &  FôÅ@    Ãpý°° <AÁe, 
Ü( Ã *  L ÃÑ* 	 ÉEð Q¤‘


—  
Q¤*  r Q Q 
Ãüôµ   Ãàùœ ÂÅðÿ—  *  ˜ * A-< ‚ A-< ¡ ‡ õL ± ‡        ˜ M   NÀÅÎ*  1ucK    NÀÅÎ   ¯”L  ô¨V@      (    1ucK( ô¨Œh  ¯”   
   1ucK      ´­  ƒ ÷	  ‡´Š ô‡   ô¨V       ² M   NÀÅÎ*  1u¢K    NÀÅÎ   ¯”L  ô¨"@  ô¨š:@  *  ¤«V@      (  1u¢K( ô¨Vh  ¯”   
   1u¢K      f÷	        ‡÷	  †÷	  ± ‡   ô¨"ô¨š:¤«V       :M   PÀ…È*  u`†    PÀ…È   ¯”L  ¹©@X@  Éª°h@  *  Ìªa	@  S«€"@  œ«X@  «êv@  « w@  *  j¬˜@      (  u`†(U«‚h  ¯”   
   u`†  *    Â ÷	  †w Ø õ¥   4
  4  ÷	    
S«€"(¹©@X*  & _‡ ÷	  †Àðþ÷	  m Ñ• õ¥ 0   Éª°h«êv*  L Q< Q= õ¥ 0   
Ü) Cm ÑÃ ÑÃ *  r Cí õ" Ã
BŠB" ÷	  C< B> ÷	    Ìªa	(Ìªa	*  ˜  4
 ñÕ 
 ÷	  ‡õ¥   4  4   œ«X*  ¾ 
 ôe 
 t õ L ôÅ      @  uL  uN  w *  ä   4
 4
 5

 5
 5
 5
& 5
(  4
  « w  
 ÷	  ß  j¬˜       Ü M   NÀÅÎ*  1uwL    NÀÅÎ   ¯”L  ô¨Î@  ¡«@  "      (  1uwL(J ô¨š:h  ¯”   
   1uwL  *    &f £	   ðµ  Àe ÷	  ÷	    "¡«(ô¨Î(  & €‡p 0Š
 ‚†ð• 
 Â° ¡ ‡        êM   PÀ…á*  •u¡d    PÀ…á   ¯”L  Éª°h@  Ìªa	@  *  œ«X@  «êv@  « w@  ¬€"@      (    •u¡d(ì ¬h  ¯”   
   •u¡d  *    Ã€þ-   -   c `õ0úN ñµ       
 *  & YÂ ÷	  T‡ ÷	  †Àðþ÷	  m Ñ•  ¬€"Éª°h «êv*  L  W­0  Q< Q= õ¥ 0   
Ü) Cm*  r  ÑÃ ÑÃ Cí õ" Á`B" ÷	  B> C  "Ìªa	*  ˜ < ÷	   ñÕ 
 4
 5 
 5  5    Ìªa	*  ¾ ÷	  ‡õ L uL  uN  w   õL 5

 5
  œ«X« w  ä  5
 ï       ˆM   QÀh×*  1u®x    QÀh×   ¯”L  $9õ8@  $9<M@  *  s©À@      (  1u®x(¾ û¨OMh  û¨VNh 
  ¯”   
   1u®x  *    A@ B A õû ± ‡ A& @ ”*  & Á ÔÁ 
¢: ÂÂÂ&”ÎEðÿ‚eõ       
 Ý ¦*  L f&æÿˆ‡¦B& r ² ‚Æå ‚¦*  r &æÿˆ´
  ‚ ´ µ2 F†õðû õ*  ˜    ×§    õ@þ ×§    õ ü ± ‡ ‡    s©À
s©À$9õ8s©À$9<M       „M   QÀ…È*  —uçe    QÀ…È   ¯”L  ô¨"@  ©€T@  *  9© @  Éª°h@  Óªz@  œ« @  œ«ZX@  *  «êv@      (  —uçe(Lh¬8Lh  ¯”   
   —uçe  *    ÷	  õ þL <‡ 
Á Â Ã ÷	  /‡úÿÂ  ô¨" 9© *  &  ÷	  (‡t
 $ t " ô  ôe $ t" 4
  œ« *  L & 
Ý &
æf
 f @ÀeL —#  —-  *  r ÷	        –5–5†uN  uL  ± ‡ t   t"   ©€T*  ˜  W-"   W-    ôÿÿ ôÿ @" @†*  ¾ õPüL ß 
Á Â Ã ÷	  úÿÐ‡÷	  †  9© &Éª°h*  ä Àðþ÷	  Ã 
Ã
ýð t 0$ p 0" r   
«êv*  
0 h 0 l 0 n ÷	  ñÕ 
 Â
 ÷	  †  Óªz&œ«    0úÿ&& ÷	  ° ˆw 4ÿ‡   œ«ZX       ‚ M   NÀÅÎ*  1uo†    NÀÅÎ   ¯”L  ý¨X@      (    1uo†(  
­ZTì2 ¯”   
   
­ZT.   . ß	    ý¨X       <M   PÀÅç*  3uÀ    PÀÅç   ¯”L  ”«€@  ”«‡@  *  «êv@        5¬ ™@  Y¬T}@      (  3uÀ(  9© h  9©ë3hô¯”   
   3uÀ  *    æCPÎU £	  Ã 	À, *  & Á, Ã ö&À      
0
 0
úÿÃ  5¬ ™*  L –
ó 
Ä, ðúÿÃ`ú3Š ó ³ *  r óÅ 
 ³  ƒÀðþ÷	  fƒ ÷	ú †–%  «êv*  ˜ Ã þ3± ± ± CðúÿÎ5 Î5 ó‹*  ¾  Á÷	  †Ã`ú0
úÿXC»óÕ 
 3 ³Š  Y¬T}*  ä  Î5 !ó æƒ ÷	’ ƒ†Ã þ?s *  
 s  óÅ 
 ñµ 
 óÕ 
 1
 1
 Á*  0Î5 ñµ 
 Î5 ÷	  †"`ú	0
úÿ1
  ”«      ‡*  V 1Š ñÅïÿ
 £	 ÷	  ñµ 
 ÷	  ”«€*  |  ØÃ È–
&V‡ £	  A ñ‹  Y¬T}*  ¢ B, ‡ñµD 
 Ã5 	ñµ 
 Ã5 *  Èñ A ãÁ± 	ñÅïÿ
 1
 1
 (  î1
 ‡ £	  óµ  Ã 
‡        ÀM   OÀ…È*  3u®    OÀ…È   ¯”L  9© @  9©ë3@  *  œ« @  «Ÿz@  ¤«@      (  3u®(¨ *  ;©EMh$ ;©OMh~ ;©PMh„ c©%h  c©È_h 
  ¯”   
   3u®  *    õ  æ 
Â ÷	  †5 5  ƒæ  œ« *  & ô‹  

‚Ã ÷	  	‡úÿÂ       ÷	  ôŠ   9© $œ« *  L ì–
÷	  Ãôµ    


Ã ÷	  ‡  
9©ë3$9© *  r úÿÂ ÷	  õ þ  ƒ‚ „ û3    œ«   ˜ Á  ÷	  5
 w     
¤««Ÿz       ® M   NÀEÂ*  3uÅG    NÀEÂ   ¯”L      (  3uÅG(4   C©zh  Óªzh ¯”   
   3uÅG  *    · ƒ"± ¡ ‡ · Ê‡ æ¦&
Ãÿ Žd  & Ã
ýƒÞ	ƒ‚‡        ÒM   PÀh¾*  3u…K    PÀh¾   ¯”L  œ« @  œ«ZX@  *  «Ÿz@  ¤«@  ¨«¯@  5¬ ™@      (  "  3u…K(Æ @©ôDh  D©Mwh( ¯”   
   3u…K        *    õ  ¡  óµ  õÐÿ ± Ã ó*  & ‡  1 ñ•  Â
 ÷	  †5 5    œ« *  L ÷	   ëôµ   u u  Ã  Ã  œ«ZX&5¬ ™*  r ôµ@  ÁÁe  û	V ôÅ@  Â  ‚Âe ƒ‚  ¨«¯| 
5¬ ™ *  ˜  „ û3  Á0 ÷	  5
 C& 3
 3
   ¤«  ¾ 3
 w     
«Ÿz       ° M   NÀEÛ*  3ukM    NÀEÛ   ¯”L  D©ö`@  Ã©`"@  "  ¹«]Œ@      ( «¯h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
Ã©`"D©ö` 
        M   OÀÕ*  3uS          OÀÕ   ¯”L      (  3uS(F*  E©¶Hhb E©ÆHh  E©ÇHh
 E©ÈHh* E©ÉHhB 
  ¯”   
   3uS  *    ·À B< G·¶ s< þÿ÷	î ‡ÀüÿÀnøÿ÷	r *  & ö†‡ ·– ÷	Ô ‡ÁÁnøÿ÷	Z ÷†‡ ·~ ÷	¼ 
‡*  L ÀüÿÀnøÿÁÁnøÿ÷	: ó†‡ A@ @œ õÅ 9 ñµ*  r   õÕ 9 ‡ ·@ ÷	~ ‡ÁÁnøÿ÷	 ÷†‡ *  ˜ P¤Â
ü¡ ‡ @¤
†õÕ 9 õÕ 9 ± ‡ Â
*  ¾ ò¡ ‡ æf> ƒA@ &
NÜ &&
sœ
 ûÿfÎe*  ä  fÎe# ¦ÁÂþÿõÅ 9 Þ	Æe ƒ‚‡ ³Šúÿ*  
óe øÿ³
öÿó¬úÿûÿ‚óþÿ
ÂÞöÿî³ þÿƒ  0Âþÿ3
þÿ³àþÿ¡ ‡ ± ‡        ° M   NÀÅÎ*        3uþ_    NÀÅÎ   ¯”L  G©¶Z@  £«i"@  "  ¹«]Œ@      ( «&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«i"G©¶Z 
        $M   OÀ…È*  3uIq    OÀ…È   ¯”L  J©v"@  Ã©i"@  *  .ªK@  .ªþK@  R«³'@  « w@  ¹«]Œ@        (D «•h ¯”   
         *      ÷	  ÷	  †‡ õ¥@  †õ0û fÂÂeÞÿ  R«³'¹«]ŒÃ©i""  & 
û	J ‡ÂÂe  ÷	  †w   w   !  J©v"2 
.ªþK.ªK « wÿ       ÂM   RÀ¨Ý*  3u|q    RÀ¨Ý   ¯”L  ´:ü@  ¾©H@  *        ,ªPd@  ¨«»@  ¨«•@  ¨«l@  ¨«„!@  *  ¨«üR@  ¨«žr@  5¬ ™@      (  3u|q(ð  J©Åh* ¯”   
   3u|q  *    @8  @Àe: PPH@8  @Àe: *  & 	‡ õ5  ÁÁe  û	V ‡ÁÁe  û	V ‡Á  ¨«l4 
 ¾©H@ 
*  L Áe  û	V †w ˆõ5  w *ÁÁe  û	V )†  ¨«•L 
"¨«„!h 
*  r W- `ý#õ5  õ  ÷	tÿÁÁe  û	V ‡  "¨«žrŽ 
 *  ˜ ÁÁe  û	V ‡÷	lÿ&ÁÁe  û	V †V†÷	  ¨«üRš 
¨«„!¬ 
*  ¾ Tÿw ‚&
æÎeÄ A& CA  
ÀÜ `W¬ÿÿ*  ä ; Ròþÿ2²
þÿ      ôµ!  ê¦÷	  A8 B A  ,ªPd*  
 HÑ‰Ñe 	
Â  Ã  ÃÀ  û	R †  ´:ü5¬ ™*  0 û	T ’€ÈPÿ†u 5 7‚¾@8 *  V    &ÎEøÿÎe0  €€÷	êÿó¬  ‡*  |õ ý †‘•³Š ‡ †Ã  Ãu : õ•    5¬ ™*  ¢ÁÁe  û	V u:  
†õ5  ÁÁe  û	V   ¨«»¤
"¨«žr¾
*  Èõ5  	f ÁÁe  û	V µ u@ & f V  ¨«üRÖ
  î‡        ° M   NÀÅÎ*  3uIt    NÀÅÎ   ¯”L  œ« @      (    3uIt(, J©|—h  ¯”   
   3uIt  *     1 ñ•        ñÅ# 
 Â ÷	   ðf   œ« 
  &  V‡        ° M   NÀÕ*  4u%!    NÀÕ   ¯”L  e©6N@  £«`"@  "  ¹«]Œ@      ( «Ôh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"e©6N 
        ² M   NÀEÛ*  4u;;    NÀEÛ   ¯”L  i©öy@  £«`"@  "  ¹«]Œ@      ( «{h  ¯”   
             ÷	  ÷	  †‡ æÎe  ‚{ J   ¹«]Œ
£«`"i©öy 
        Â M   NÀÕ*  4uH;    NÀÕ   ¯”L  p©Åœ@  Ã©`"@  *  « w@  ¹«]Œ@      (" «h ¯”         
         &      ÷	  ÷	  †‡ ÂÂeðÿ
µ> û	J w     p©Åœ¹«]ŒÃ©`"$« w       M   RÀh¾*  4uëg    RÀh¾   ¯”L  ´:¼p@  ô¨V@  *  9© @  @©ôD@  C©z@  m© …@  ,ªPd@  *  Éª°h@  œ« @  «êv@  5¬ ™@      (    4uëg( p©Åœh ¯”   
   4uëg       «    *   æ5
8 5
: 5
< ÷	  b‡&
&
&
C@ 6ÁÁe  @©ôD*  . ÔÿÂðø@²N@”‚ÒK¤ÀÉ‹úÂ þBÑ*  T ¦QÔQÔŠ ‡0Â°ü5
ÁÜ "ƒÂ@û-*  z JŠ
PÀ’ÀÀÀaÀe~ È	"‡À ÉC Ë¥ *    æœ ÷	ð‡Ã ôC      < 3Š æÿ ÷	Ö‡*  Æ 3 3
 Â 
Æe µ õ ÷	
 ƒf V*  ì ‡ A8 
5
8 Â ÷	  †õðþ ‡ ¡ ‡ w    œ« *  w ìw w Xf&Àó÷	vƒfæÅÅe 
*  8%
%
%
÷	V ƒÓ$‹ ËËËË÷	@ eƒ†*  ^„…‡ ‚D˜Äå0 Ä%	 A‡%D˜Äå0 Ä%	 :‡Äa*  „ÄÄaÄJ m < <   Ã ÷	ÄÿÃ
üBÄ"*  ªNAJBEFRAMRPAYAMNUJLUJGUAPEST*  ÐCOVONCED  !¥!£!­ 	`Ô •ôÂ*  ö û¯uþÿÍ5 ÃÀ% €
ƒ
Í
*  Ce÷	@ÿÍæ ä‡Í`Õ
%%ß#Ý#Û$)Åå*  B fC
 ÷	  Ae@C÷åt%
å. å        m© …*  hÄÀ  fUUUM…UÃB
†Õe˜ UM…Õe*  Ž€–UUM…À
é‡ µ> ôµ!  
&*  ´†à‚À &
¦&÷	  ° ¦fæÃ  ÃÂ  À  ,ªPd 5¬ ™&´:¼p*  Ú  û	R Â€ùæ`ÿ‡û	T ± ‚’Öƒ†} *   > Àÿ÷	–ÿƒÁQ$‘“Š‰Ñ ‰!Š‡ &
ôµ   *  &$t  !†ŒŒvŒ  
 Ý ` 
÷	8‡*  L€cÁÐQ$Àe Àe Â Â
ý¡ *  r–
‡ õ< ¡ ‡ *+,-
	*  ˜ 
Á &
ôµ0  hB: 	€œ €
Ê_*  ¾€Ž÷	¼ Z‡õ: A< W" 
‡1t  ôµ *  ä IÁ1  €c5: °­  ÔÀÀe      zÿ”*  
”cÂ`ð¥ þÿJ’öóµ  3
* 3
, À *  0RÀ
ýÂ À  R”À
ý×¬ 8 ‡€3œ 5 *  V3 6 3
 2 3œ	  3œ 4 3T . 3V 0 ¡ *  |–
Ž‡ æ&fA8 
Á ÷	  Â þ/‡58   ô¨V*  ¢
÷	  ‡€ Â 
÷	  úÿu8 †È%`ú  œ« 9© *  Èð6 à% þÂðþö þ ± ÷	  †ÀÐû  "Éª°h  î÷	  ÷	  Â û–Uƒ‡   «êv
C©z       ü M   NÀ…È*  5u»p    NÀ…È   ¯”L  š©õ
@  Ã©i"@  *  .ªK@  .ªþK@  R«°'@  ¹«]Œ@      (2   «"h ¯”   
         *        ÷	  ÷	  †‡       æÂÂeìÿ
û	J ƒ‡ÂÂe  R«°'š©õ

¹«]ŒÃ©i"  & Þÿ
÷	  w     
.ªþK.ªK       ¼M   OÀh¾*  5u|q    OÀh¾   ¯”L  ¾©H@  ¨«l@  *  ¨«„!@  ¨«üR@  ¨«žr@      (  5u|q(°   š©õ
h  ¯”   
   5u|q  *    ôµ!  õü Lõ5  'B@ õû A*  & ò õXÿ :A8 A ±   ±  ± *  L  r  r  ÁÁe  û	V !ÁÁe  û	V ‡  ¨«üR\ 
"¨«lh 
*  r ÁÁe  û	V ‡ÁÁe  û	V ‡ÁÁe  û	V 	†f)  ¾©Ht 
¨«žr€ 
 ¨«üRŒ 
   ˜  ÁÁe  û	V µ u@ & ‡         
¨«„!œ 
       ¬M   UÀh¾*  5u$™    UÀh¾   ¯”L  $9@  $9Ùf@  *  $9š@  ´:#@  ´:¼p@  ´:ü@  ,ªPd@  *  5¬ ™@      (  5u$™(> © }h ¯”   
   5u$™  *      ðú  ù  ðü    &Ì¥	  ôµ€   €  $9Ùf$9š$9*  & &
¦æ÷
‚Æå
 ‰&÷	  ° Â  ÷	’‡  ,ªPd"´:¼p*  L ƒ ‚ ††w |´  ô ÷	  ‚ ƒ   ,ªPd*  r  Á æ–PÁU ÁU€ ð ° p Ã    (5¬ ™*  ˜ Ã‚ó5 ( Eò‹ BðÕ  æ  æ  æ°*  ¾  æ  æ  æ  æ  ¦
 ¦ ¦ ÎÕ —- *        ä   —-   ò5  ÎÅ ¶ òµ  ÎÅ*  
 òµ  ÎÅ òµ  ðU  ðE  ¦*  0Â  ÷	¤ AÃ  Ã‚ó5 ( ò‹ ‚ ƒ  ´:#5¬ ™*  V
 †¶ ö 6Š †5‡6 
 6   öe*  |  v
 6œ  6  ´m   t 
‚Ý ´`*  ¢ ôµ€  ‚æ  &Îe æ÷	  ° ¦Â   ,ªPd*  È  ÷	 †È 0
 „‡ Ã  ÃÀ  &D &  ´:ü5¬ ™*  î ô•  û	R †´•  û	T ´• ’„*  æýÂÂeæýR ‚–
Òù‚ˆp ± ‡ „  :¡ ‡        ¬ M   NÀEÂ*  5u%™    NÀEÂ   ¯”L   ©µ@  Ã©`"@  "        ¹«]Œ@      ( «#h ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J    ©µ¹«]ŒÃ©`"       NM   QÀh¾*  5u>™    QÀh¾   ¯”L  ô¨"@  ô¨V@  *  ©€T@  9© @  @©ôD@  C©z@   © }@  *  Éª°h@  Óªz@  œ« @  œ«ZX@  «êv@  *  « w@  ¤«V@  5¬ ™@      (  5u>™(   ©µh  ¯”   
   5u>™  *    5
8 5
: 5
<  ÁEÿôµ   
u@ ÷	    (@©ôD*  & ‡Ãüôµ!  Ãpýôµ  õ‹@ Ã þÁ*  L  ÷	  ‡&÷	  €†÷	  õ F÷	Œ &‡B   ô¨Vô¨"¤«V*  r Ãðø      Â5 µ … Ã þ€’Àå ƒõ *  ˜ €
÷	.‡B … ‚ àBõ< Üõ‹@ *  ¾ ÷	¨ ÷	š Ã 

÷	Ö &‡@÷	  
÷	À ‡   ¤«V*  ä @÷	  õ 5
 w   ÷	” ‡õ¥ @ 	ðµ   ¤«V« w*  
 õý ± ‡ Â ÷	  ú†Àðþ÷	  ÷	t †  œ« "«êv*  0È%`úÈú÷	v ÷	0 
± ‡ f÷	  è‡÷	    "Éª°h(C©z*  V†õ û ‡ A8 5
8 A: 5
: Á
÷	*  |  †È ù÷	. ÷	  ± ‡ Á ÷	’ÿu8 ‡ø‡   œ« œ«ZX*  ¢Â Ã  
÷	  úÿ‡ õ 	5 E- È  9© *  È5 ‡ f@ Æå 6

 ö ÿ  N2
       ¶*  î
  R2

 6
 … õ5€  öÕ  ò5 *   @Ã  Ãó5 ( ò‹ ¶ 
 ¶  ¶  
5¬ ™*  :  ¶  Ü öÀÿ õ¥  @ Áö°ü *  `õ< µ
< Ã  Ãóµ ( ö‹
 	6   6  5¬ ™*  †  öÕ 
 R­ ‚66
 6Œ 6Œ *  ¬vŒ  
 Ý `A-< u< ÷	¦þ"‡A< ÷	Zþu*  Ò: ‡÷	†þ‡÷	þò†5> vm>  µ @ €*  ø öèû ð µ  w æ Ã  Ãóµ (   5¬ ™*  ö‹
 	6  6  öÕ 
 ÷	  †÷	vþZ6Š   © }*  D B ² 
 ö¥  '5  > 5 @ ÷	  †  &©€T*  jB ÷	Dþ5í  >       µ@ 5í @ rí> 
 ² rí@ *   ÷	úý/‡0$ p 0" r ö¥   %@@ ° *  ¶ °  °   °" ° * °
 ( A: ñÕ *  Ü
 @> ÷	  õ €ðÕ  ÷	  ± –U–U–U–3µ  ÓªzÓªz  @ ‡        jM   NÀÅç*  6u"    NÀÅç   ¯”L  ¼©õ‡@  Â©õ#@  *  «µ@  •«µO@  £«`"@  ¹«]Œ@  È«õ
@  *      (L «u'h «U(h «T[h0 «Tqh
   «Ayh& ¯”   
                       ÷	  &
÷	&  •«µOÂ©õ#¼©õ‡
È«õ
«µ¹«]Œ*     æ ÷	  æ 	÷	  æ ÷	  æ ÷	  ¹«]Œ¹«]Œ¹«]Œ"¹«]Œ        :   †‡ ÂÂe¼ÿ{ J   £«`"       ° M   NÀÕ*  6ut:    NÀÕ   ¯”L  ¹©¶Z@  £«`"@  "  ¹«]Œ@      ( «ö&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¹©¶Z 
        ŠM   QÀÅÎ*  6uMq    QÀÅÎ   ¯”L  9©ë3@  œ« @  *  œ«ZX@  « w@  5¬ ™@  Y¬Ð@  l¬‡@  *  l¬N@      (  6uMq(*¼©õ‡h ¼©ù‡h  "  Â©õ#h
 Â©ù#h •«µOh  ¯”   
   6uMq  *    õü w   ÷	 û5
, ÷	T ÷	 óõ ,   « w*  & ÷	  ÃõüL õ L ÷	2 ‡Ã  ÃÁÁe        9©ë3"5¬ ™*  L   û	V ôÅP  uL  uN  f V‡ õ0úL   Y¬ÐJ 
*  r    V1! A ùõ, ñµ 
 öõ*  ˜  L  Âœ ÂEÿÂ¥  óµ   Ã  Ãt  $5¬ ™*  ¾  4
 ÁÁe  û	V ‡  ðµ   ôe 
 t  l¬NÆ 
q*  ä  4
 @ÀeL W-,  ÷	  t  4
   l¬‡$  
Â ÷	  	†&& ÷	  ° ˆ± ¥†‡   
œ« œ«ZX       XM   NÀÅç*  6u‘w    NÀÅç   ¯”L  ô¨@  Ã©`"@  *  Ã©Ú}@  «êv@  5¬ ™@      (  6u‘w(„   Ã©i"h  ¯”   
   6u‘w  *    C ƒ:‡Ã8Ë¥       5ó¥P  ƒó ÿ )Ä    (5¬ ™*  & ô5 ( ó ü ô5 ( ópÿ Á0 *  L ÷	  ‡3 È• ðœ  0*  4* w   ó þ  ô¨$Ã©`"  r  3
 w   À€ý÷	    Ã©Ú}«êv       jM   OÀÅÎ*  6uœw    OÀÅÎ   ¯”L  «êv@  5¬ ™@  *      (  6uœw(º Ã©`"h  Ã©Ú}hœ ¯”   
   6uœw  *    @ €U‡ÀSÈ¥ P0
 0
 ð¥P  ƒð ÿ*  &  9 „2‡Ä0Ã  Ãó5 ( ðpÿ (  5¬ ™*  L Ì¥ "ôµ  ôÕ  pJ  ÁE*  r áÿW  ƒ
5
B 5
D 5
H ¡ ‡ ðÐÿ ð&  ˜ Àü W£ ‡W- ÿÿ      ý	 ± ‡ À€ý÷	    $«êv       |M   QÀÅç*  7uÔ    QÀÅç   ¯”L  s©À@  «¯@  *  «&@  «ö&@  «œ,@  «E`@  «\g@  *  «)x@  «6x@  ‹¯=@  ‹¯@=@  ù±oŒ@  *      (  7uÔ(dD©þ}h4—«çh  —«èhö  —«éh>¯”   
   7uÔ  *    w	  0
ø 0 ú 0 ð‹ü ÷	Â‡p  ù±oŒ*  & ú pY÷	h†w lðµ€ ó w ð\ 
ðµ*  L   ó ÷	Dî‡÷	tð%°ý w Ô ðµ Š  *  r 0ö " 0ô   Áep" ð   0Šn \ *  ˜ 1Š ñÕ  ÷	  ñÅ  ð l ì  «\g*  ¾ p       0 ÷	  ð•   ð ("   °`ø   «œ,*  ä ÂBðµ ó ¦`W¨a W¢z ÉÅ  Â
ö‚*  
0,ú w ¬ É¥; ðµ ó $w Þþð¥Ðù *  0æûÿð%°ý 3œü 
Ä
ðµ€ ó ÷	zw *  Vìþ÷	~ðÅ€ ó ðŠü æöÿ&
ðµ  ó 	ðÅ  ó *  |ðÕ€ ó ð•ÿÿü ðµ ó &^ ÷	ª°^ °“ò V*  ¢‡ æÿÿâæþÿß Æe, æýÿÙæüÿÖðµ ó *  È`W¨- ð‹ó €ðÅ€ ó ðÕ  ó Â
ð
ø °`*  îw $þw vÿw	  ð‹ü µðŠü ðå þ ù°Šü   ù±oŒ*  ÷	¶ ©É¥@ Ñðµ ó ¢0¬ü ý ÆÆå, 
Â
*  :€p ° ÷	  4 ø ´
ø ®‡ðµ   ªÈ•   ‹¯=*  `÷	        ¥‡ðµ  ¡ðµ   ÷	Î ðµ@ ó 	ðÕ  ‹¯@=*  †@ ó ðå ‚ ð•
 … ‚Âe ÷	ì ‡Æe, 0
ø 0*  ¬ 0 ú w ŠýÆe, &^ ÷	 °^ w Üþ÷	*  Òþ ðå þ ðŠü õµ€ ó '0® 0° 0´ 0*  ø¶ 0¸ ðU j ÷	’ ‡0 0 0 ð•   ðµ*   Š ð•  0 ð%°ý ‡ ÖÆw	    &ù±oŒ*  Dð\  °Šü þ ðµ Š ÷	       «ö&*  j ¸ ¶ ´ ° ® 0þ ÷	P ‡ Áe*  Ò ÷	ž °„ U%Æå" °Â ÷	  Æe" e)ðE j ð  «E`*  ¶^ ð% ü^ 
÷	  é÷	  ð ¡ ± ‡ U%  «6x«&*  Ü÷	  e)‡  0Šü É      )fÿˆ‡ÑÂ  ÷	, ‡  «¯"s©À*  × 	 ×   ÷÷	 ‡× 	 ú×   ÷R¨ðÕ€ ó *  (¡ ‡ Âå C”‡ &
÷	 Ñ•: Ž
÷	 ÷	 ‚‡   Nƒ„Ãö` •Ã
ýÃ
‡        ° M   OÀ¼*  7u`"    OÀ¼   ¯”L  Ý©6€@  £«`"@  "  ¹«]Œ@      ( «œ,h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"Ý©6€ 
«       dM   OÀ…È*  7ub"    OÀ…È   ¯”L  9© @  Éª°h@  *  œ«ZX@  «êv@      (  7ub"(Ž Ý©[}h  
  ¯”   
   7ub"  *    ÷	  úÿ†"`ú	& &÷	  ˆ° 
±         9© œ«ZX*  & ‡ ñµ 
 ‡ f&öÿ&÷	  €†ÀÐû÷	    Éª°h(«êv*  L ±,  	A `¡¢òµüÿ ÈÀþ–
Í   r 
&÷	  €†ÀÐû÷	  ¡ ‡   
Éª°hÐû«êv       ä M   OÀEÛ*  7u2g    OÀEÛ   ¯”L      (  7u2g(d   Ú©ðGh  ê©Èh ¯”   
   7u2g  *    ÷	  ¬  ‚œ ‚’‡ ÷	
 Áe ‚œ ‡ *  & Am: C”ÃEüÿÃe B@ Þ	¦&
&
À
CÜÿÿ‚R”  L À
ý€‚Â Â&VP± ‡        œ M   NÀh×*  9u‚    NÀh×   ¯”L  5¬ ™@      (    9u‚( ,ªPdh  ¯”   
   9u‚  "          fÀ   Àe2 Á 
Á
ýÀå ‡   5¬ ™       ¦ M   NÀEÛ*  9uf'    NÀEÛ   ¯”L  D©Mw@      (  "  9uf'(  .ªKh .ªþKh ¯”   
   9uf'  $      @€`È	õÀý ± ‡ ÂÂeêÿ
{ J   D©Mw       FM   OÀÅç*  9uÁS    OÀÅç   ¯”L   ©ô&@   ©¿.@  *   ©Iq@   ©Fy@   ©S~@   ©ñ@   ©™’@  *  5¬!™@      (  9uÁS(  
­WTìP D©ö`h *  G©¶Zh J©v"h e©6Nh@ i©öyh  ¹©¶ZhH *  Ý©6€h( («v"h  U«6€h0 ¬6h8 
­WTh  *  
­XTì  
­XTh  
­YTè  
­ZTìX «)xh  *  «¶{ì  «¶{      h  «·{è  «¸{ì  «¸{h  *  «¹{è  «º{ì  «º{h  «»{è  «¼{ì  *  «¼{h  «½{è  «¾{ì  «¾{h  ¯”   
   
­ZT  $                                       $   $   "     
  "  J   J             &   ©S~ ©Iq ©™’
 ©Fy ©ô& ©ñ  V      ©¿.       ¦M   OÀEÂ*  9uüX    OÀEÂ   ¯”L  «)x@  «¶{@  *  «¸{@  «º{@  «¼{@  «¾{@  ¹«´‰@  *  5¬ ™@  
­XT@      (Š «v:h  «6xh 
  ¯”   
         *    ÷	  Ã  Ãóµ ( ¡ ‡ ÷	  Ã  ÃÄó*         ¹«´‰
5¬ ™¹«´‰ 5¬ ™*  & ± ‡ À  Á  ÷	< Á  ÷	4 Á  ÷	, Á     «¶{«¸{«º{ «¼{(«¾{*  L ÷	$ À  Á  ÷	 3
$ ó& óe" & ó ( ¡   

­XT«)x  r ‡ 
Bà4þÿ
ˆ
@‡        àM   OÀh¾*  =ul    OÀh¾   ¯”L  ´:Ã@  Â©ù#@  *  ,ªPd@  « w@  5¬ ™@      (  =ul(à *  «µh& §«`Th  È«õ
h  È«`Th ¯”   
   =ul  *    Á HÁ ¦÷	ˆ ‚€"°ýÈÿ]5
, *  & õÿÿ, ôÅ@    ðµ   	4
 õ, ôµ  *  L  õüL B& ÷	¦ÿôµ   
ÁÁe  û	  &Â©ù#l 
 *        r V †W-L 0úÁ ÷	 uL  uN  w   
  &« w*  ˜ ÷	  p ° Â  Ã  ÃÀ  û	P ‡û	T ’  ,ªPd´:Ã5¬ ™&  ¾ €W öÿÈ°ýÈøýp È &V‡        Ö M   NÀÅç*  =uÃ    NÀÅç   ¯”L  5¬ ™@      (  "  =uÃ(J Éª°hh  ÉªØhh ¯”   
   =uÃ  *    æöÿæøÿÀ      €cŽJñµ 
 1!  5¬ ™(  &  @ ÀÿÿÀ ÿÿ¡ 

± ‚‡        Ô M   NÀÅÎ*  =u<    NÀÅÎ   ¯”L      (  =u<(\   Ìªa	h  ¯”   
   =u<  *    Ã+æ ‚3‘”Ã
3Ãå †Î@Ã
      Çà‘‘*  & ‘‘‘‘‘‘ð†ÃÃå †Çà‘”‘”‘”‘”‘”‘”  L ‘”‘”ó†Ö‘”
‡        ÄM   UÀ¨Ä*  =u²'    UÀ¨Ä   ¯”L  ¿«v@      (  *  =u²'(e©€‰h" ¾©HhP ÎªÐWh ¯”   
   =u²'  *    @&  A8 A ôµ   Ö‡ æÎe2 ÷	Úÿ*  & @Àe ”ˆ” 
—¢: ÀÀÀ¦”ÎEðÿ€eõ1 *  L ¡ ‡ ÷	¬ÿ&æCÃe 


1
 —¤] üƒ*  r ×¤. üæƒàÃ
DÄe ÷	  †õý –
  ¿«v*  ˜ ‚ƒ×¤; üƒàÃ
DÄe ÷	  †õ`ù ƒ  ¿«v*  ¾ „± ‡ @& &  œ €e1
 &¨; üÐ‹ (  ä †&”ÎEøÿñ ñ ñ ±Õ       ò–
ƒ„¡ ‡        ò M   QÀEÛ*  =uYH    QÀEÛ   ¯”L  ô¨V@  Éª°h@  "      (  =uYH(Z Óªèh  ¯”   
   =uYH  *    Á ÷	  †õ þ ± ‡ ÷	  H58 Áe   
ô¨VÉª°h*  & p õ& u& ñ@  q ñe   Áe` p   L p ðe*  ¡ ‡        ZM   OÀÅÎ*  ?uÖd    OÀÅÎ   ¯”L  p©Åœ@  Ã©i"@  *  .ªK@  .ªþK@  («v"@  («X@  R«°'@  *  « w@  ¹«]Œ@      (T «E`h ¯”   
         *          ÷	  ÷	  †‡ ÂÂeìÿ
û	J ‡ÂÂeàÿ   R«°'(«Xp©Åœ¹«]ŒÃ©i"*  & 
û	      J ‡ÂÂe  ÷	  	‡ÂÂeÈÿ
5
> û	J †  («v"0 
.ªþK  L w   w     .ªK
« w       –M   RÀ¨Ý*  ?uüd    RÀ¨Ý   ¯”L  ¾©H@  ¨«»@  *  ¨«l@  ¨«´'@  5¬ ™@      (  ?uüd(v  («Xh  ¯”   
   ?uüd  *    õE€  õ5  #B@ ò 	ôµ  õXÿ*  &  ± )A8 A ±   ±  ±  ±  *  L ±  FÁÁe  û	V q‡ÁÁe  û	V k‡ÁÁe  )  ¨«lV 
¾©Hb 
(¨«´'n 
 *  r û	V †õ ý a‚æÎe\ A& CA  
ÀÜ *  ˜ `W¬ÿÿ; @8     &ÎEøÿÎe0  €€*  ¾ ÷	êÿó¬        ‡õ ý †± 5‘•³Š ‡ Ã    (5¬ ™*  ä ÃÁÁe  û	V (‡ u õÅðÿ u õÅ    
¨«»è 
 *  
õ¥  4 * 5*  5  5( 1 ô‹) *  0ô• ) A t. ¡ Bu@ &  ÁE W @ $  Vƒõ0û ÂU ÁEáÿÃ  Ã‡   5¬ ™       ÞM   PÀEÂ*  @u~q    PÀEÂ   ¯”L  û¨OM@  û¨VN@  *  Óªè@  5¬ ™@  ¬°'@      (  @u~q(Ò   R«°'h R«³'h  ¯”   
   @u~q  *    µ> 5
> õ  õ5  ôÕ  t  *  & ôµ  ôÕ   
@Ý À5 ôÕ€  t3  *  L @ A €†õÿ 0À      †õ ÿ )*  r ÁôÕ  4 
Hu& @ ÁÁe  û	V ‡õ5   ÓªèŠ 
 *  ˜  ÁÁe  û	V ÁÁe  û	V ‡Ã  ÃÁÁe"  û¨OMž 
¬°'ª 
"5¬ ™  ¾   û	V Ã  Ãf V‡   û¨VN¼ 
5¬ ™        ° M   NÀÕ*  @u`†    NÀÕ   ¯”L  U«6€@  £«`"@  "  ¹«]Œ@      ( «\gh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"U«6€ 
        ú M   NÀÅÎ*  Bu–    NÀÅÎ   ¯”L      (  Bu–(|   ¿«vh  ¯”   
   Bu–  *    &fÀÀeJ æ …”÷	B ‡Ð      ÷	  ÷	 La*  & Î
Àå ÔÎ Ã
ë–
…€‡ ÅÅÅfÅÅ*  L …e‡ ÿÿ   W!Z ‚W!A †W!9 ‚W!0 ‡ÅåÒÿ  r Åå@ ‡ ± ‡        ¬ M   NÀÅÎ*  Buá"    NÀÅÎ   ¯”L  £«`"@  §«õ<@  "  ¹«]Œ@      ( «!th ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   §«õ<¹«]Œ£«`"       °M   PÀÕ*  Bu€K    PÀÕ   ¯”L  «êv@  ¤«V@  *  ¬¸L@  5¬ ™@  l¬‡@  l¬À@      (  "  Bu€K(’œ« h œ«ZXh  ¯”   
   Bu€K  *    ñÅ# 
 
ñ‹ Àðþ÷	  Ã  ÃÀ  0
 ¦  «êv5¬ ™      *  & Âµ 1! È0úqñµ 
 ñÅ 
 Â5 *  L ñµ 
 Â5 Â5	 ÷	  ÷	  W‡Î5   l¬À l¬‡*  r &÷	ª €CñŠ @ñµ 
 	ñ•  ÷	  B‡ñŠ  $l¬‡*  ˜  3÷	  Î5 &@¡ ñµ@ 
 ÷	j ‡÷	    
¬¸L(¤«V*  ¾ € ñµ  
 £	  Âe
 ƒ Á ƒ*  ä r  ÂÃ ûr 1
 Âìp öÿ0
*  
öÿp øÿ0
øÿÈ –
&V‡  £	    *  0  
ð ð‹ ðµ@ 
   ðÀ*  Vp  p  pœ
 
 ðÅïÿ
 0
 0
 0
 ñÅ  | 
 1
 1
 1
 ± ‡        :M   OÀÕ*  BuúM    OÀÕ   ¯”      L  Éª°h@  œ« @  *  œ«ZX@  «êv@  5¬ ™@      (  BuúM(`   œ«wh  ¯”   
   BuúM  *    Ã  ÃÀ  f&öÿ÷	  †ÀÐû÷	  ñµ 
   5¬ ™Éª°h «êv*  & ˆŠA `!’÷	  †ÀÐû÷	  ÷	  †&  Éª°h«êv$œ«   L & ÷	  ° ˆ&V‡   
œ«ZX       š M   NÀÕ*  Bu9T    NÀÕ   ¯”L  5¬ ™@      (    Bu9T( «êvh  ¯”   
   Bu9T       Ã  ÃÁ Áe Bæ Þ	 þ  5¬ ™       ¾ M   NÀEÛ*  Bu=T    NÀEÛ   ¯”L      (  Bu=T(D   « wh  «Ÿzh ¯”         
   Bu=T  *    ôÅ  AEJ É¥ EJ ñ 
W£ ‡W- "  & ÿÿ}  	W£ ‡W- ÿÿ}  ‡        ˜M   OÀ…È*  Bu‘w    OÀ…È   ¯”L  ô¨@  «êv@  *  £«`"@  £«Ú}@  5¬ ™@      (  Bu‘w(¾   £«i"h  ¯”   
   Bu‘w  *    C ƒW‡ÃUË¥ Ró¥P  ƒÁ ÿEÁpÿÂ*  &   ‚ò5 ( 	ó¥   ‚ó5€  3Á€ýÄ$   5¬ ™*  L „-‡Ä+Ì¥ (ÁÀü „"‡Ä £ ôµ*  r   ÁÐÿÁ  ÷	  ‡È•	 0  4 0  ô¨*  ˜  3 w   ó þ s 3
 w   Ààú÷	    £«`" £«Ú}(«êv             ú M   OÀ¼*  Buz}    OÀ¼   ¯”L  H©$`@  œ«@  *  5¬ ™@      (  Buz}(2 ¤«h ¤«Îh "  ¤«h  ¤«ªHh ¤«úWh ¯”   
   Buz}  *    @÷	  À 
ôµ   Àe À &À  H©$`  &    €e

w     5¬ ™œ«       ô M   OÀ¼*  Bu¢}    OÀ¼   ¯”L  ¤«Î@  ¤«@  "      (  Bu¢}(X ¤«Vh  ¯”   
   Bu¢}  *    &&Ì¥	   
 ðµ 
 ÂU ÷	*  &   ‚Áe
 @  1   
  ô  ¤«Î  L Á ÷	  „‡   
¤«       4M   RÀh×      *  Bu    RÀh×   ¯”L  ´:+…@  ,ªPd@  *  Éª°h@  5¬ ™@  Y¬±}@      (  Bu(Ø*  ³ª4}hÄ”«€h  ”«‡h l¬‡h6 l¬Àh6 
  ¯”   
   Bu  *    ‡ ÷	‚P 
P H €fÃ  Ãû	L    5¬ ™*  & ‡÷	~Ã æ ú÷	NP 
P H €*  L fÃ  Ãû	N †w 
÷	FÃ æùÌ¥	   5¬ ™*  r  —# úòµ  5
 È¥öÿð È*  ˜ È‹5œ  È‹>ñÐ
 Ã ñÀ
 È 1  ñµ*  ¾ € 
 /òµ€  +Ã  Ãóµ ( $—# úòµ   5¬ ™*  ä  ñÕ€ 
 && ÷	  p  p  Â    ,ªPd(´:      +…*  
À  fû	P ‡û	T ° ˆ"¢åÿÈ`ú0
*  0 ¢öÿÈ°ýÃ ñÀ
 òµ   0
 ’ð*  V ˆÃ  Ãòµ€  ÄÖ‚&f÷	  €  
5¬ ™$Éª°h*  |0
öÿ&V‡ ƒ&öÿ&÷	  †€ÈÐû°   Éª°h*  ¢ã÷	  K ñÕ 
 fû	T ñÅ 
 ÷	  ‡ &À  ,ªPd"Y¬±}  È æ1ÿˆÀ
û€‡        üM   PÀ¨Ä*  Bu    PÀ¨Ä   ¯”L  9© @  9©ë3@  *  ”«‡@  œ« @  œ«ZX@  « w@  l¬‡@  *      (  Bu(¶k˜:h° •«õ
h  j¬õ<h> 
  ¯”   
   Bu  *    u  5
 @ Â Ã@ùÁPù5
, ÷	Ž ÷	          (”«‡*  & †"°ý5  5  Þ	@ Â	 ÃàùÁ*  L °úõÿÿ, ÷	X ÷	  %‡&f¦B @ A   l¬‡*  r  3 " s $ ‡3" s$ ó & Áe @Âå *  ˜ óµ!  é‚€5  Þ	€|‡ÀzCA *  ¾ u‡ÁsÃpý¦ ²µ kÃüôµ   ef*  ä & õ, q-(  q-&  4
 
÷	*  
  	†&& ÷	  ° ˆ
@( A& 
Ã ÷	  œ« œ«ZX*  0  †–%5  6úÿt t 
 t  t   9© *  V tœ
  ± ± ± ñÅ 
 Þ	1
  1 *  | 1  ñÅÿ
 1Ý 
 ÷	  Ãõ, &4
  9©ë3  ¢ ÷	  ˆ      õ –
w     œ«ZX« w       â M   NÀ…á*  Bu    NÀ…á   ¯”L  •«õ
@  £«`"@  *  ¹«]Œ@  j¬õ<@      (* «Iqh «™’h 
  ¯”   
         *        ÷	  &
÷	  æ ÷	  †–
‡ ÂÂeàÿ   •«õ
j¬õ<
¹«]Œ¹«]Œ£«`"  & { J        ÀM   PÀEÂ*  Bu6‘    PÀEÂ   ¯”L  Â©ù#@  « w@  *  §«`T@  5¬ ™@  Y¬Ð@      (  Bu6‘(Î   §«õ<h  ¯”   
   Bu6‘  *    ôÅßÿ ÷	  †W-L 0ú[  õüL ðµ  L  Â©ù#*  & œ ÁEÿÁ¥  Ã  Ã4
 ðµ   ðÿÿ"   5¬ ™*  L       ðÿÿ$ 0
& ÁÁe  û	V .‡ÁÁe  û	V Á¥  §«`TX 
 Y¬Ðf 
*  r  ô 
 Ã Áe 
Ã
ýÁ¥   *  ˜  ƒ ŠÃ
ý4
 4
 4Š t  õ L   ¾ uL  uN  w     « w       ÚM   xÀh×*  Bu+–    xÀh×   ¯”L  $9.@  $9¦@  *  $9¯@  $939@  $9ƒK@  $9Ùf@  $9Zq@  *  ´:½@  ´:Ê@  ´:+@  ´:¼p@  ´:+…@  *  ,ªPd@  5¬ ™@      (  Bu+–(à¨«»h   ¨«¯h&Î«a(h$¯”   
   Bu+–  *      ðú  @ý  àÿ  àÿ   ú  ü    ôµ  4Š&  $9Ùf$9ƒK$9¯$9.$9Zq$9      ¦*  &  5

 5
 ‡ æÎe" ÷	  A8 P B Áe  ,ªPd*  L 
 HÀe ‡ ôµ!  0ôµ€  ÈU ôµ=  *  r Ñü	Ñe 	
Â  ÷	„ _‡÷	ªÿôµðÿ ôÅ  ´:¼p*  ˜ €  ÈU 
CÝ €ÃÿÿÈÐõ5  ÈU *  ¾ õµ  ÈU @ÈU €Ñü	Ñe ôµ   Ñõ*  ä 	Ñe Ñ÷
‘	
Â  ôµ  Â  ÈU æÎe  ´:Ê ´:½*  
@ Ã  ÃÀ  û	R † û	T ’¡ €æàÿ  5¬ ™*  0ÂÂeÎþR ŽÒú‚± ‡ -‡,  ôÕ€ *  V ôÕ@  ÷	  Â  ð  Ã  Ãóµ ( À  ,ªPd´:+…5¬ ™*  |  û	P ‡û	T ¢  óÕ ( ôµ€  	Â°ù        $939*  ¢u µ ± ‡ A8 A õE€  fV\ õU*  È€  B A u
 µ t  ´ 4, . ô*  î . @& A8 A p   p  p  p *   p  p  ¡ ‡ ôµ  W÷	  ôµ      ,ªPd*  :õ5  ôµ  ðU  &
&
&Îe æ*  `ôµ€  ÎB —¢ ±œ þÿ±œ ÿÿñ*  †þÿfÎeþÿæ‚ ë° fÂ  Ã  ÃÀ   ´:+$5¬ ™*  ¬  û	R † û	T ’€õ u Âpþµ  Ò †± ‡ †¡ ‡        êM   TÀ¨Ý*  BuŠ–    TÀ¨Ý   ¯”L  $9.@  $9¦@  *  $9@  $9#@  $939@  $9š@  $9«‘      @  *  ´:•@  ´:+…@  ,ªPd@  5¬ ™@      (    BuŠ–(0¨«•h ¯”   
   BuŠ–  *      ù  þ  ù  ðü  ü  ˜ý    ôµ  w &  $9š$9.$9«‘$9$9¦$9#*  & Ø÷	  Â  ð  Ã  ÃÀ  û	P ‡û	T ¢  ,ªPd´:+…5¬ ™*  L   óÕ ( @8    &fÃ  Ãó5 (   $939 5¬ ™*  r ÷	’ÃÐÐ  Ð
HÐe ÐÐe *  ˜ B —¢ ÐˆÐe ‚ ôôµ   Ð*  ¾ Ðe 
÷	  ôµ   A
B
 C   ,ªPd*  ä Â	Á …ÁÐõ5€  ÁE Ã  Ãó5 ( &÷	  5¬ ™*  
þ Ã"ÁU       óµ 	 ÁE æ  æ  æ  æ  *  0æ æ æ óµ 	 ÎE C8 Ã ³ P*  V4õ5  ÈU õ5  ÈU Â  Ã    $´:•(5¬ ™*  |ÃÀ  û	R † û	T ’"€Ã  Ãó5 (    5¬ ™*  ¢÷	b ÃÆe Ã  ÃæþÂÂeDþR Ž  5¬ ™*  ÈÒú‚u µ ± ‡ Ã  Ãó5 ( ÷	 Ã  5¬ ™*  î³  ³  Æe Ã  Ã¡ ‡ C ×¬    5¬ ™    Ã ùó‹ ó‹ 
‡        .M   SÀ(Ñ*  Bu©–    SÀ(Ñ   ¯”L  $9¦@  $9X@  *  $9Ùf@  $9Zq@  $9š@  ´:q!@  ´:±'@  *  ´:±r@  ,ªPd@        ¿«v@  5¬ ™@      (  *  Bu©–(®¨«lh¶ ¨«„!h ¨«´'h, ¨«žrh" 
  ¯”   
   Bu©–  (      ðú  `ý  ù   ú  ü    Â  æÐýÂ&  $9Ùf$9X$9š$9Zq$9¦´:q!*  $   æPúC8 Ã 3
 3
 Â  æ0ýôµ    ´:±r´:±'*  J 2÷	  A8 p 
 ôµ   õ5  ðU    ,ªPd*  p Ã  ÃÀ  û	R † û	T ’ÁÂÂenÿ  5¬ ™*  – R ŽÒú‚u µ ± ‡ –
¡ ‡ æ&@*  ¼ &  A8 A ôµ1  	ñ  ñ  1
 *  â aôµ   ]@Àe &

&—¤[ üæÎe *  Ã, Ä0 ƒ¬ ‘ƒ¬ ‘‡       ƒ¤œÿÿûÃ*  .] ÷	Üÿƒ¤œÿÿû‚€„Ã ÷	  †õ0þ    ¿«v*  T
ÐzÈ ñ  ñ  1
 „f÷	´þ*  z†õþ „ƒ± ‡ q   q  q  Â    
Â
ý„ƒ¡ ‡        â M   OÀ¨Ý*  Bu˜    OÀ¨Ý   ¯”L  ´:Ô@  ,ªPd@  *  5¬ ™@      (  Bu˜(B ¨«üRh  ¯”   
   Bu˜  *    ÷	  A8 H Â  Ã  ÃÀ  û	R †5    ,ªPd´:Ô5¬ ™   & û	T È‹5 õÀû ± ‡ ¡ ‡        ² M   NÀ…È*  CuÂ	    NÀ…È   ¯”L  5¬ ™@      (    CuÂ	(. ¹«]Œh  ¯”   
   CuÂ	  *          fÅ  Eµ …&æ¦f¦
 6 Þ	‚ƒ  5¬ ™  & „…€‡        ¬ M   NÀEÂ*  DuÖs    NÀEÂ   ¯”L  £«`"@  ¹«]Œ@  "  ò«ˆ@      ( «åh ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   ò«ˆ¹«]Œ£«`"       JM   OÀèã*  EukY    OÀèã   ¯”L  ´:+…@  ,ªPd@  *  5¬ ™@  Y¬±}@      (  EukY(ˆ ¬¸Lh  
  ¯”   
   EukY  *    ¦Ã  ÃñÅ 
 1
 ÷	  Ì¥	  ñµ@   5¬ ™Y¬±}*  & 
 -òµ€  )ñÅ! 
 1
 ñµ€ 
  ñÅ€ 
 f*  L && ÷	  óµ ( Â  p        p  À    ,ªPd´:+…  r û	P ‡û	T ° ˆ‚‡        ° M   NÀÕ*  Eu¡d    NÀÕ   ¯”L  £«`"@  ¹«]Œ@  "  ¬6@      ( «Ä…h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¬6 
Œ       M   NÀèã*  Gu¼    NÀèã   ¯”L  «êv@  ¹«]Œ@  "  5¬ ™@      (f «ñh  ¯”   
         *    ÷	  E …)‡Å'Í¥ $Ã  Ãó5 ( À  ¹«]Œ5¬ ™*  & pÿ÷	  D „‡Ä£	 ôµ  æ  æ  «êv  L )ÿˆæ  æÿˆè‡ Ààú÷	    «êv             M   NÀèã*  Gur	    NÀèã   ¯”L  ´:ü@  ,ªPd@  *  5¬ ™@      (  Gur	(f Y¬Ðh  ¯”   
   Gur	  *     òµðÿ 'òµ  #òµ€  &
¦Îe æ*  & ÷	  ° Â  Ã  Ã& ô•  À  û	R   ,ªPd´:ü5¬ ™  L ‡û	T ´• Æe õ L 5
N ‡        :M   }Àh¾*  Huþd    }Àh¾   ¯”L  $9)@  $96@  *  $9~Z@  $9pw@  s©À@      (  Huþd(”  ¬°'h ¯”   
   Huþd  *    Áw Ð”Á
µ
> ‡ „± ‡ &„5
: 5
< *  & @& 
Ü   0Š B8 ‚ ƒÃe æS*  L ¦&
æS-       ŠS* æS, ŠK( &
N3 æ *  r æ‘ÿˆ †Ã—  Ã¥  )ÂýÃ¥  	Âþõ>   s©À$9pw$9~Z*  ˜ õ5  Ã¥  Â0þÃ¥  Â@þµ ¬C   $9)$96*  ¾ óÕ   B8 ‚ µ > w ¬5
> C( B, — *  ä  ƒÂ Â(Â
µ
: ×¢: W-:  †w B*  
: C( ÷	ìþÂ
üw ×¢[ ×¢] ×¢, w *  0ð×¢. ×¤; Ö5
: C* B- —  ƒÂ *  VÂ%Â
µ
< ×¢: W-<  S‡B< C* ÷	†þÂ
*  |üT×¢[ ×¢] ×¢, w Œ×¢. ×¤; *  ¢Ù
BÝ3 ƒÆå æƒÃe æ¦æÿˆ‡ÂÃe*  È  æ÷	0þ÷	,þ‚œ ÷	 –
Â: ÷	ä††Â*  î       B ‡Ð•S Ð•Y Ð•0 Ð•: àµ> õ ý *  õ@þ w ôý÷	Þýµ
: ‡ C( 
BÝ, —  ƒÂ*  : Â?Â
×¢[ 9÷	Òÿ
BÝ, Bí: —  c‡Â *  `×¢0 ^‡×¢9 [‚÷	®ÿ×¢, ÷	¤ÿÂ
ðP
BÝ*  †, Bí: —  H‡Â ×¢0 C‡×¢9 @‚÷	xÿ×¢] *  ¬÷	nÿw ÆÂ
ï4ƒ
¿÷	<ýµ
< ‡ C* 
BÝ*  Ò- —  ƒÂ ÂCÂ
×¢[ =÷	Òÿ
BÝ- Bí< *  ø—  ‡Â ×¢0 ‡×¢9 
‚÷	®ÿ×¢, ÷	¤ÿ*  Â
ðõ0þ w æü
BÝ- Bí< —  ó‡Â ×¢0 *  Dî‡×¢9 ë‚÷	pÿ×¢] ÷	fÿw Â
ïßƒ
»ƒ*  jÆå  æƒÃe ææ?ÿˆ†õ€ù õ   w ‚ü  "s©À*  Â[ ÷	2 Â ó%        Â ¦Â ÷	, Â, ÷	*  ¶ ‚÷	 Â] ÷	 †XÁw :þÁ
µ
> ‡ *  ÜÂE ÿÂÂÃ Â5 ÿÂÂÂÃ
øƒ
Â Âe0 ÷	*  ÆÿŠÂ ÂÂÂÃ
ô‡ &ÂÂ
×¢. ×¢; *  (×¢[ ×¤] €ã5à> `€ëÂ
õw Úþ×¢: *  Nƒ
ñ÷	ªûß&Ží —%	 ƒõý w ¤û€%± *  t‡ ¡ ‡ C( B, ÷	Žÿ†C* B- ÷	€ÿ
BÝ, *  šC( æÎeF Â×¢. &×¢; ÷	Fû&Ží *  À—% ƒõ`ù w BûÂ
î–
¡ ‡ ƒ
Â
â± ‡ . *  æ†
BÝ- C* ÷	®ÿ†æÎeêÿƒ÷	üú
BÝ, C*  ( æÎeT Â#Â
×¢; &÷	ÚúÂÂ
×¢0 ‡*  2×¢7 ‚÷	Äú&Ží —% ƒõ0ù w Àúé–
¡ *  X‡       ƒ
Û± ‡ ; †
BÝ- C* ÷	 ÿ†æÎeêÿƒ  ~÷	~ú@& p>  „¡ ‡          M   NÀEÂ*  [uŽE    NÀEÂ   ¯”L      (  [uŽE(.   C©O h  ¯”   
   [uŽE  *    ôµ    0- " 0-
 $ ‡‚0- &   & ôÕ  ‡        ÌM   PÀÕ*  [ukM    PÀÕ   ¯”L  @©ôD@  D©Mw@  *  Éª°h@  œ«W@  «êv@  « w@  ¤«@  "      (  [ukM(Ì D©bh  ¯”   
   [ukM  *    ÷	  †w    \4
 ¦òµ   P M1  @©ôD« w*  &  ÷	  †ÀÐû÷	  C’Ã ÃÀ`òµ  4ñµ 
   Éª°h«êv*  L       058 ul 8 ƒl &
ô¥  ô¥  	ôµ*  r €  ËÿÿÎ^ õ 8 †““ûôµ!  ƒ*  ˜  ôµ   ƒ
ÃE ñ –
÷	  †5 5    œ«W  ¾ Á  ‚÷	  w     ¤«D©Mw       ìM   PÀEÛ*  [u `    PÀEÛ   ¯”L  ô¨"@  ô¨Œ@  *  ;©EM@  ;©OM@  ;©PM@  « w@      (    [u `(ô G©]\h  ¯”   
   [u `  *     ô Ä, õàþ w   óµ   ôÕ    ;©PM*  &  ÷	  W†w   A 
W  ƒÁ óµ!    ô¨";©OM*  L æ  
@Ý  À
4 Î Îæ f÷	  –%  &ô¨Œ*  r ­  6‡        ô 
 ðµ  õ5  	4$ *  ˜ 
 4"  4&  ðµ  0- " 0-
 $ ‡*  ¾ ‚0- & ôÕ  õ5@  u  õ  w   ä   Ã õ þ w     « w;©EM       HM   QÀÅÎ*  [uq    QÀÅÎ   ¯”L      (  [uq(’  J©—h ¯”   
   [uq  	          *   ôµ€  ôµ   Â°ù4õµ  Âpý-ô*  ,  $ 4
" 4
& ôÕ  B ´*  
@Ý Àµ *  R Àµ ÂÀúm
AÝ ôµ   	ôµ!  !ÀÅ*  x  W  ƒÂpúYôµ   ÀÕ C. ×  *  ž Ã ô Á¥ —  ‡ôÕ€  ôe  ôE  *  Ä tÐ 4 Á¥       ´ Àµ ´  ƒÂ û'*  ê Á¥ t0 ) ô• ) 
C@ )ÁÁeöþ@²*  Âðø@”K¤ÀÉ‹ûÂ þ0Â°üõ*  6 µ ± ‡ Ë¥ ó‹ ÂÀÿñPÀ Ö@*  \ ¬     ù	5
 
 5  5    ‚t , t . ¡ ‡        †M   QÀèã*  5u™    QÀèã   ¯”L  $9Î…@  s©À@  *  « w@      (  5uË–(z ©ô&hÎ  ©¿.h4*   ©Iqhj  ©FyhÈ  ©S~h*  ©ñhø  ©™’hÀ 
  ¯”   
   5uË–  *    õÀý õðÿ õù À€
õÐû Æ" *  & w   fÀL W£ ÀL @aB`æcÿˆ¦³" 3  « w*  L         ÷	Þ ÷	¤ÿfæeÿˆ…‡ ó 4 &*  r £	  Îe ó2 ó  8 ³—6 3: 3
< *  ˜ æÎe2 ÿˆÂ—  †—   æ1ÿˆò± È€ù°   s©À$9Î…*  ¾ ‡ ó 4 Ô³4 Ñ³4 &£	  Îe ó*  ä 2 ó  8 ³—6 3: Îæ" æeÿˆÈ‹æ  *  
æ)ÿˆæ  æÿˆóþÿE æcÿˆ3  ³*  0" À  ÷	 ÷	 I s". 	s, 0 p üÿ(  VA ‡ ó. 3üÿ2 æÎe ³4 s . ‡        ü M   PÀÕ*  [u|q    PÀÕ   ¯”L  J©—@  J©Å@  *  J©|—@  5¬ ™@      (  [u|q(8 J©$h  
  ¯”   
   [u|q  *    ÁÁe  û	V       Ã  Ã‡ÁÁe  û	V ‡ôµ   "  J©— 
5¬ ™J©Å 
  & 4
" ô $ 4
& w     J©|—       ’ M   NÀ…È*  \u%!    NÀ…È   ¯”L  « w@      (    \u%!( e©ÝOh  ¯”   
   \u%!      õü ôÅ@  4
 w     « w       zM   PÀEÂ*  Bu›w    PÀEÂ   ¯”L  «êv@  5¬ ™@  *      (  Buœw(Ä £«`"h £«Ú}h® ¯”   
   Buœw  *    Ààú÷	  @ €ø‡ÀöÈ¥ ó0
 0
 
Ü  
«êv*  &  Ã¥P ƒð ÿ < „5‡Ä3£	 0ôµ *  L  ( òµ  ðÐÿ %ôÅ€  Ã  ÃôÕ        $5¬ ™*  r   pJ   œ ÁEáÿ5
B 5
D 5
*  ˜ H ¡ ‡ ððù ðpü W£ ‡W- ÿÿý	
  ¾  ± ‡        Î M   PÀ…È*  \u;;    PÀ…È   ¯”L  c©È_@  l¬N@  "      (  \u;;(8 i©{h  ¯”   
   \u;;  *    õ  ôµ   ÷	  †5 5   óµ!   l¬N  &  óÅ  Ã w     c©È_       pM   RÀÅÎ*  _ud    RÀÅÎ   ¯”L  C©O @  ì©W@  *  Ìªa	@  ØªW@  «W@  œ«W@  œ«ZX@  *      (  _ud(ÊÚ©¶Khd í©SZh  ¯”   
   _ud  *     ôµ@  õ‹3       1
 ÷	  4
 ôµ    œ«ZX*  & 7À  Á B8 Ã ÷	  Q‡õ¥  ôÕ    ì©W*  L õ‹3 ÷	  C ÷	Xw Fôµ@  õ‹3   ØªW*  r 4  4 
 4  ôÅ  ÷	  ôµ  õ  C©O *  ˜ °ý H t,  t, 
 ÷	  ‡    "œ«W*  ¾ 
 Ã ÷	  
‡÷	   m 5 4 ‡÷	¦†w ¼  ì©WØªW*  ä Ò4
  4  4  õ¥ 7 oC< õ¥ 7 *  
)õµ€ 6 Â 
”W 9 ƒW ^ Ùõÿ +*  0Áå0 ùÃÁ`ÃÃC`Â
ëõ : Ãå õ : *  Vƒ
¾Ãõµ 2 ÷	Nõ¥ 7 õ *  |8 ­õ€ü w  õ¥ 7 "        
Ü) Á *  ¢u`: æNàCA" ÷	ÖæÃ &
÷	Æ–
*  È†–5iÎ
ô–
ƒ÷	Þ b‡95
. 5
< A u*  î Ã ÷	Æf÷	„N‡€”À¥
 õ¥ *  . À¥ À¥ ÷	÷	÷	
Ýõ‹3 *  :
õ u<  u<  õ¥ 7 õµ€ 6 *  `‚
ÂE  ÷	  àµ 8 †´ ÷	ô t:    ØªW*  †tm<  5 
 5  5  ‡ 5 5  5
*  ¬
 5
 5
 ‡ õ< õ5@  ÷	ö  ñµ *  Ò
  ñµ  õ‹3 õ µ $A u*  ø @ æ 	õ‹3 õ õÐù Îàõ ÷	*  l ƒ
ƒ÷	– àæ÷	< ƒ‡ö‡Â`‡ õ‹. *  D      õ‹3 u- < Q. õÐù u  µ
< 5*  j. ‡ õ‹3 ôe 
 t 4
 ‡ Ã w   æC  $«W*  4 ƒàƒ#ƒÎàõ‹3 ÷	  Â`Îf÷	ºÿ  Ìªa	  ¶ê†–
‡ @4 €àÀ ¡ ‡        x M   NÀÅç*  Guc}    NÀÅç   ¯”L      (  Gub	(   Y¬T}h  Y¬±}h  ¯”   
   Gub	      ± ‡        TM   PÀ…È*  _u`"    PÀ…È   ¯”L  Ã©"@  Ú©¶K@  *  ë©"@  í©SZ@  « w@  5¬ ™@  l¬N@  *      (  _u`"(,¹©]\h Ý©Ýh  ¯”   
   _u`"  *    ÷	  ÷	  õ•ÿÿ3 A‡Ã  Ãðµ  
õ¥           ë©"Ã©"5¬ ™*  & ÁÁe  û	V ^õ¥   Uõ¥  õ¥  
  
í©SZ* 
 *  L ó, õ¥ 7 û	, ÃÐú  ðµ!  *  r Ãü@
 A B &VPµ 8 ‡Ã€úõ *  ˜ 5Š3 )õ‹3 
õ¥  &
 & & æ¦f*  ¾ &÷	  ´
 ´ ´ ƒôÅH  †5 5    l¬N*  ä ÁÁe  û	V ôÅ@  õ 	õ‹3 ôÕ@  õ  
Ú©¶Kè 
 &  
  õ‹3 
õ¥  ´ ´ ´
 w     $« w       æ M   OÀÅÎ*  _uœw    OÀÅÎ   ¯”L      (  _uœw(f   Ã©"h ë©"h  ¯”   
   _uœw  *    5
 ÃPùõ (Ã@ùõ       #  Ãpýðµ  *  & Ãüôµ   BÂe2 œ Š
œ œ   L  
 


4
 ‡ 4
 ± ‡        M   OÀÅÎ*  fu[–    OÀÅÎ   ¯”L  9© @  Éª°h@  *  œ«W@  œ«ZX@  «êv@      (  fu[–("  ì©Wh€ ØªWhø «Wh  ¯”   
   fu[–  *      
 Áe @4 t
 4
  0f&¶ì*  &   ŽŽì &
Ž’¶e V—#€ ´£ ‚²£ *  L ‡Ã5 
òÅ 
 Š•r 2 EN&æ÷	*  r   ƒ†–5(€æ ‚
Â ÂB8 ÷	    œ«W(9© *  ˜ ƒúÿ†È%`úÈ%°ý1  ôÕ  &*  ¾ & ÷	  ° ˆ      ± ‡ 	
Ã5 ñÕ 
 ±Š qí  
œ«ZX*  ä 8  ú‚qm8  q8  t ÷	  †ÀÐû÷	    Éª°h(«êv  
C’Ã ÃÀ`54 ul 4 ‡        ŠM   QÀEÛ*  guüd    QÀEÛ   ¯”L  9©ë3@  ¤«V@  *  5¬ ™@      (  guüd(Ê («$h  ¯”   
   guüd  *    ôµ€  ôµ   õ°ù Rôe  ôE  5*  &  . 5Š1 5) 0 õ• 0 ôµ  ô•  õ•*  L   ô•  õ•  ôµ   ôÕ€  ôÿÿ$ ô*  r ÿÿ" ÷	  Ãõ5  ôÕ  ô $ 4
" 4
  
9©ë3*  ˜ & W­   ôµ   õpú   ÷	  Ã  &¤«V  ¾   Ãf V‡   5¬       ™       PM   PÀ…È*  hud    PÀ…È   ¯”L  i©€‰@  ì©W@  *  Ìªa	@  ØªW@  «W@  œ«W@      (    hud(òB«¶Kh  ¯”   
   hud  *     t,  t, 
 ÷	  K‡  
 Ã  œ«W*  &  ô Ã ÷	  †È%°ý:  
 Ã ÷	  ì©W*  L   1‡÷	   ƒ`Cm: õ > õ 4 †Cí: Cm  ì©W
ØªW*  r @ õ 4 ƒõàù w Ö´ 4
  4  Bl*  ˜  õµ 2 	B-@ ÷	÷	üÑ†Bm õ: *  ¾ Aõ¥ 7 =õµ€ 6 Ã õ0 BÂ`@@ Á
 *  ä ÷	  Áe0 bÃ
÷Áe õ 0 I@ Ñå õ¥  i©€‰*        
 7 C: Cí0 B" ÷	F&
‚æÃ ÷	*  06ÂŠ†–5w Î
õ–%B> C< ÷	ô‡õ: *  Võ¥ 7 	æ
‚Ã ÷	ü –
p‡õ¥ 7 õµ€ *  |6 
ÁE B ÷	  ñÕ 
 à´ C ƒà  ØªW*  ¢õµ 2 õ¥ 7 õ¥ 7 õµ€ 6 ×  *  È	÷	æ õ < ÷	Ò :‡ 3 " 3
 $ 3*  î & s-<  ƒs<  õ5@  u  õ¥ 7 *  B í Bí: µ  
ñµ 
  m @m: 5*  : 5 
 5  5  ‡ 5 5  5

 5
*  ` 5
 ‡ u 4 B æC4 Càƒ#ƒÎà÷	    (Ìªa	*  †  ðÕ 
 Î¦÷	 ‚ê†–
‡ –
Á`Â`‡ *  ¬Ã       w   m &
õ¥ 7 õ¥ 7 	õµ€ 6   
«W$  ÒËÿÿÎ^ õ 4 †““ûñÕ 
 –
‡        xM   OÀÕ*  huœw    OÀÕ   ¯”L      (  huœw(è   S«"h  ¯”   
   huœw  *    ôÅ@    Ãpý°° fÃüôµ   `u > *  & u < Ãàùœ 5œ 2 5œ 6 µ7 5 8 — *  L  * A-< B‚ A-< <Á Â¥ *  r ðµ€  Áe !Â¥ 
Ü) Â `ðµ€ *  ˜  Áe Â¥ B< 
Bm> Â
—¢
 ‡—¢ *  ¾ ‚
u: Am< ðµ  p  ‚u@ ¡ ‡ õ   ä ± ‡        "M   NÀÅÎ*  hu‚…    NÀÅÎ   ¯”L  ì©W      @  Éª°h@  *  Ìªa	@  ØªW@  «êv@  5¬ ™@  l¬‡@  "      (  hu‚…(U«SZh  ¯”   
   hu‚…  *     	À  Á Ã ÷	  S‡q8  ÷	  5
  ì©W$ØªW*  & : õµ 2 #õµ 2 CŸ> µ
> õ
< × + *  L × $ Ñ•
 × 1 Ñ• × 0 Ñ•
 Ñ•
 *  r µ
: B> f< C4 Càƒ#ƒÎà÷	  Î¦÷	   Ìªa	*  ˜ J ‚ð†–
‡õ: u 4 ‡÷	2 ‡Ñ• ÷	( †*  ¾ 5 5  5

 5
 5
 õ5@  u  ‡ *  ä C àñ À      ÷	  †‡ ÷	  †  5¬ ™l¬‡&Éª°h  
ÀÐû÷	  ‡   
«êv       PM   NÀ      …á*  hu`†    NÀ…á   ¯”L  C©O @  B«¶K@  *  S«"@  U«SZ@  « w@  5¬ ™@      (    hu`†(d U«Ýh  ¯”   
   hu`†  *    Â 4
 ÷	  #‡ÁÐúõ¥   Ã  Ãðµ    S«" 5¬ ™*  & ÁÁe  û	V ÷	  Á€ûôµ  u Á  
U«SZ* 
C©O    L Áe  û	V õ õ  w     B«¶KL 
« w        ¾M   OÀèã*  ju[K    OÀèã   ¯”L   © }@  œ« @  *  œ«ZX@  5¬ ™@      (  ju[K(ê œ«Wh  
  ¯”   
   ju[K  *     Ì¥	 4
   ñµ 
 Tñµ 
 	ÉŠñå *  &  ± ñÕ       
 ðµ!  8p,  p,   0ƒf*  L æ &
&
&
C B ì  ‚ì æ¦,. *  r ƒ6.  Ã  Ãó5 ( 6  6   ÷	    5¬ ™( © }*  ˜ –5–5–5‡ñÕ 
 «B’	±à ± ‚
Â Â±*  ¾  Â ÷	  †&& ÷	  ° ˆ	
1
 1
   œ« œ«ZX
  ä &V‡        „M   NÀ…á*  luÖs    NÀ…á   ¯”L  œ«ZX@  « w@  *  È«`T@      (  luÖs(Ä ò«ˆh  ¯”   
   luÖs  *    ôÅ@   Áüòµðÿ Sòµ  Môµ   I*  & Ápýòµ  CÁ€þô >òµ   
Âÿÿ÷	    (È«`T*  L  †AL 0   4
 ô 4        2$ *  r ò" 2 &  ñÕ 
 ñ  1  ÉŠ*  ˜ ñå  ± ò	
4
 ÷	  Á ôÕ  4
 u  œ«ZX
  ¾  w     « w       6M   NÀEÛ*  mud    NÀEÛ   ¯”L  ì©W@  Ìªa	@  *  ØªW@  «W@  œ«W@      (  mud(@  
¬¶Kh  ¯”   
   mud  *    &
 & & 4 
 4  4   1-*  &   1-
  ÷	  ?‡   
 Ã   œ«W*  L W­7  	ô u-. 8 Ã ÷	  &‡÷	     ì©W&ØªW*  r m õ: Ã I@ Ñàõ0 õà. õ¥ 7 
C*  ˜ : Cí0 B" B÷	8 B> C< ÷	, †      5 5*  ¾   ´ ´ ´
 5 
 5  5  ‡ æ*  ä C4 Càƒ#ƒÎàõà. ÷	    ðÕ 
 Î¦  Ìªa	*  
f÷	 ‚‡B â–
‡ Ã u-. 8   0W­7  Ã w     «W       *M   NÀEÛ*  mu¡d    NÀEÛ   ¯”L  S«"@  « w@  *  
¬¶K@  5¬ ™@      (  mu¡d(b ¬Ýh  
  ¯”   
   mu¡d  *    Â ÷	  "‡Ã€þ5 . Ãàù5- @ Ãpú  
S«"*  & õ¥ 7 Ãüðµ!  
Ã  ÃÁÁe  û	V Ã  5¬ ™"
¬¶KB 
   L  õ õ €4
 w     « w       ,M   NÀÕ*  ouó~          NÀÕ   ¯”L  ØªW@  œ«W@  "      (  ouó~(Š l¬Nh  ¯”   
   ouó~  *    ¡  @÷	  ôµ  8ñµ 
 4 m   ØªW*  & &
ò¥  ò¥  	òµ€  ËÿÿÎ^ õ *  L 4 †““ûòµ!  1  –
òµ   ±
   r ñE  Âe( "
âe b÷	  ‡   œ«W       M   QÀ…á*  ‚uœ'    QÀ…á   ¯”L  9© @  ÉªØh@  *  œ« @  «êv@  l¬‡@      (  ‚uœ'(  ©€Th  ¯”   
   ‚uœ'  *    W­    q " q  $ ñe $ q" f*  & & 

Â Ã ÷	  úÿ†–5± ‡ ÷	  †À  9© $      ÉªØh*  L ðþ÷	  f Ã 
Ã
ý€±
  ±   «êv*  r  ‚ öe 
 v ñ  ¶,"  ¶,$ 
 ‡*  ˜ ñÕ 
 ÷	  ‡±
  ±  ‚ ¶,"  ¶,  l¬‡*  ¾ $ 
 Øþ   € p $ p " $ " Âå*  ä  ƒ°  ð ñÅ 
 
÷	  †Àðþ÷	  €  œ« $«êv
  
&V‡        
M   OÀÕ*  ƒu#    OÀÕ   ¯”L  d©°;@  m© …@  "      (  ƒu#(^ 9©˜Kh  ¯”   
   ƒu#  *    æ  &f
C  6 B, ÷	  €‚Âå   d©°;*  & ÷	  ƒf¦
÷	  @ƒ‚&  
@Ü( 
  d©°;m© …  L ÷	         Ál @‚‡   m© …       ÈM   PÀ¼*  ƒukM    PÀ¼   ¯”L  9© @  @©ôD@  *  C©z@  D©Mw@  Éª°h@  œ« @  œ«ZX@  *  «êv@  « w@  ¤«@  Y¬T}@      (    ƒukM(˜ D©Åbh  ¯”   
   ƒukM  *    ÷	  †w    
Á Â Ã ÷	  úÿ†"  @©ôD« w9© *  & `ú	&& ÷	  ° ˆ	"`úúÿ÷	    œ«ZX(Y¬T}*  L Þ÷	  †Àðþ÷	  ÷	  ‡4p $ 4r " 4
  
Éª°h«êvC©z*  r & 
÷	   ¦ Á  ÷	  ‚÷4
 w     
œ« ¤«(D©Mw       ¼M   PÀEÂ*  ƒu `          PÀEÂ   ¯”L  ô¨"@  ô¨Œ@  *  9©ë3@  ;©EM@  ;©OM@  « w@      (    ƒu `(Ê G©…\h  ¯”   
   ƒu `  *      ÷	  B$ Ãòµ   ÷	  †w   B$   
9©ë3ô¨"$;©OM*  & òµ   ôÕ   ?A 
  
Ü( Ã Ã*  L æf÷	  –
  
œ ÂÅð —  Ü) —    
ô¨Œ*  r Áe 
l* t 5

 5
 5
  
4 4 *  ˜  4 ô 
 4Š ­  ‡–
õ  w     (« w  ¾ ƒõ þ w     ;©EM       M   PÀÕ*  ƒuq    PÀÕ   ¯”L      (  ƒuq(\  J©˜h ¯”   
   ƒu      q  	         *   ôµ!  Â@þõµ  Âpýw @ ¬*  ,      ù5
 
 5  5œ 1 5  *  R f
 V] µ

  
@Ý Àµ Àµ ÂÀú_*  x 4 t , t .  
@Ý   ÂpúM4Ð*  ž  
À¥ 
BÝ0 Â ´) A t* t *  Ä Â û5B`À¥ Âe ‚

AÝ1 
t( Á *  ê Á ‚W  @ƒÂ@ÿ
C@ )ÁÁeøþ@²*  Âðø@”K¤ÀÉ‹ûÂ þ0Â°üõ *  6µ ± ‡ Ë¥ ó‹ ÂÀÿñPÀ Ö¡ ‡         M   RÀEÛ*  ƒu|q    RÀEÛ   ¯”L  J©˜@  J©Å@  *  J©|—@  5¬ ™@  h¬8L@            (  ƒu|q(@   J©E$h  ¯”   
   ƒu|q  *    f
 ÁÁe  û	V Ã  Ã‡ÁÁe  û	V 	‡Ã  (  J©˜ 
5¬ ™J©Å 
(5¬ ™  & ÃÁÁe  û	V †µ
 ƒ5w     
h¬8L* 
J©|—ú       JM   PÀEÂ*  „u%!    PÀEÂ   ¯”L  Éª°h@  œ«X@  *  «êv@  « w@      (  „u%!(„ e©Ph  
  ¯”   
   „u%!  *    ôÅ@  5
N Ãpý òµ  +Ã€þ-   *  & -   ! õ0úN ñµ 
 ÷	  †Àðþ  "Éª°h*  L ÷	   m ÈÕ Â ñÕ 
 4
 ÷	  ‡Ã õ  «êv œ«X  r L uL  uN        w     « w       – M   OÀÅÎ*  „u;;    OÀÅÎ   ¯”L  c©È_@      (    „u;;( i©Å{h  ¯”   
   „u;;       
ƒÜ( Ã Ãõ  w     c©È_       LM   PÀ…á*  …u$™    PÀ…á   ¯”L  ©€T@   © }@  *  Éª°h@  Óªz@  ”«X@  œ«X@  «êv@  *  5¬ ™@  j¬˜@      (  …u$™( ©À}h  
  ¯”   
   …u$™  *     Ì¥	   ƒ ‚ ì$ ‚ì" æ &
&
*  & &
æ¦,. ƒ6.  Ã  Ãó5 ( 6   5¬ ™*  L  6   ÷	  †–556Š @ÀeL  ö$     © }*  r ö"  ÷	        –5–5–5†÷	V õýL ‡ðÕ  ÷	  ©€T*  ˜ 
 ± ‡ ÷	< ‡ °$ p °" r ÷	  ñU 
   "Óªz*  ¾ 4
 ÷	  ‡ Æe  4
 ÷	  ± ‡  
Á   
œ«Xj¬˜*  ä Â Ã ÷	  †õL ó± ‡ úÿ÷	  †Àðþ  ”«X"Éª°h  
÷	  t ‡   «êv        M   SÀÕ*  †ut:    SÀÕ   ¯”L  9©ë3@  9©˜K@  *  Ã©€"@  Éª°h@  ”«X@  œ«X@  «êv@  *  « w@  j¬˜@      (  †ut:(:¹©@Xh:   ¹©…\h  ¯”   
   †ut:  *    5
N ÷	  †÷	5
2 ÷	" õ¥   4    
Ã©€"*  & 4 
 ôe 
 t w   õµ        æ  æ    « w*  L B Ã ‘”Ã
ý€%õµ  @
 A B*  r  õ¥   W-2  	ôµ@     *  ˜  
  ÃÐúw h4 t W      *  ¾ Ã°ûA†ÃPü r  2  ƒÃ°ûw *  ä ,÷	  ´ 5 
 5  5  õ¥   5  9©˜K*  
 & 5 (  2  r   4
 *  0&f÷	  †–%w Ô €B, ÷	  ÷	  †õ  œ«X 9©ë3$”«X*  VL ^w Üþt ÷	  †Àðþ÷	   m W-2    Éª°h«êv*  |õ5   ÃúÈµ Èµ &.õ¥   Èµ *  ¢Èµ ôe  t    Ã°ûw æþÃ      @ú*  ÈÈµ 	Èµ õµ  ÃPþÁæ÷	  ƒ4
  $j¬˜*  î ôÕ@  õ L uL  uN  fL V‡ õ*  L ôÅ@  4
 4
 5

 5
 5
 5
& 5
( â       jM   RÀEÂ*  ‡u`"    RÀEÂ   ¯”L  9©ë3@  ¹©@X@  *  ë©€"@  Éª°h@  Ìªa	@  «êv@  « w@  *  j¬˜@      (  ‡u`"(@Ý©‚h  ¯”   
   ‡u`"  *    ÷	  †w ÷	  †w ú  ÷	  †Àðþ÷	    ë©€"¹©@XÉª°h(«êv*  & m ‚
õ¥ 0 µ” µ” u.  õ¥ 0 *  L   
Ü) õà A" Â`÷	   õ5@    Ìªa	*  r  óµ  ñµ 
 óµ      =ÿ µ u> *  ˜  C 5
 õ  	ƒõÐù õ C õ A *  ¾ ÷	  ÷	  Ã÷	b 4  4 
 ôe 
 t   Ìªa	
9©ë3*  ä W- ÐùÃ 5
N õL uL  uN  ôÅ@  *  
w   4
 4
 5

 5
 5
 5
& 5
( ÷	 ä  « w  0 4
 ÷	  ‡   j¬˜       (M   QÀèã*  5uË–    QÀèã   ¯”L  $9Î…@  s©À@  *  Éª°h@  ÉªØh@  « w@  5¬ ™@      (  *  5uË–(¬ ©ô&h~ ©¿.h( ©Iqh ©Fyhx"   ©S~h*  ©ñh¨ ©™’hp¯”   
   5uË–  *    õÀý õðÿ õù À€
õÐû Æ" *  & w   f      ÀL W£ ÀL @aB`æcÿˆ¦³" 3  « w*  L   ÷	Ò÷	¤ÿff÷	^ æeÿˆ…‡ *  r ³" 3  þÿE D Áe B”	``fÂ
*  ˜ ý÷	 ÷	®‡ öÿ÷	  «‡øÿ÷	  ¥‡  Éª°h&ÉªØh*  ¾ €‡ Ã  ÃÀ$ ÀE 3 $ ó& óe"   
5¬ ™*  ä & È Á5 ÷	~ÿææ  æ!ÿˆ‡ ó 4 &*  
£	  Îe ó2 ó  8 ³—6 3: 3
< *  0£	 	ôµ€  æÎe.³< æÎe2 ÿˆÂ—  †  &s©À*  V—   æ1ÿˆò± È€ù° ‡ ó 4 È³4   $9Î…*  |Å³4 &£	  Îe ó2 ó  8 ³—6 *  ¢3: Â£	 ôµ€        Áe Â" ‚á‚‘ ƒ*  ÈÑ• æÎe:þ‰0
üÿÆ" ‘‘Â
ý‡ æ" æ*  îeÿˆÈ‹æ  æ)ÿˆæ  æÿˆóþÿE *  æcÿˆ3  ³" ÷	~þÀ  ÷	 ÷	 I s". *  :	s, 0 p üÿA ‡ ó. 3üÿ2 æ*  `Îe ³4 s . ‡ &æ¦f&€
 v
 Ã  Ã  &5¬ ™*  †óU ( ÷	âý÷	.þóE ( €‚ƒ„…æsÿˆ       ÞM   PÀEÂ*  Buœw    PÀEÂ   ¯”L  «êv@  5¬ ™@  *      (  Buœw(£«`"h £«Ú}h¯”   
   Buœw  *    Ààú÷	  @ €ø‡ÀöÈ¥ ó0
 0
 
Ü  
«êv*  &  Ã¥P ƒð ÿ h „a‡Ä_£	 \ôµ       *  L  T òµ  ðÐÿ QôÅ€  Á×   ‡*  r ð5€  ôÕ€  ÃåP ÂÂå
 ‚°P B`Âå *  ˜ CÃEüÿÑQÃ
ý…Ã  Ãó5 ( ôµ€    5¬ ™*  ¾ ðpÿ ôÕ  pJ   œ ÁE*  ä áÿ5
B 5
D 5
H ¡ ‡ ððù ðpü W£   
‡W- ÿÿý	 ± ‡        "M   NÀÅç*  Gub	    NÀÅç   ¯”L  5¬ ™@      (  "  Gub	(Š Y¬T}h  Y¬±}h\ ¯”   
   Gub	  *    ñÕ@ 
 BÂe ƒ‚ ÂE ù3 £ ôµ*  & €  ³
 
0
 fÃ  Ãû	T ñµ 
   5¬ ™*  L ÷	 †ñÅ@ 
 ¡ ‡ B f¦ÂE ±        Á  r & ± 2
 ³& Â± ‡        ÌM   QÀ0ä*  5u0™    QÀ0ä   ¯”L  $9Î…@  ›rX:@  *  ›r†@  û¨€@  s©À@  « w@  ó«H†@  *      (  5uË–(h ©ô&hÌ  ©¿.h" ©Iqh^ *   ©FyhÆ  ©S~h*  ©ñhö  ©™’h¾ ¯”   
   5uË–  *    õÀý õðÿ õù À€
õÐû Æ" *  & w   fÀL W£ ÀL @aB`¦³" 3    « w*  L ÷	Ò ÷	ªÿf…‡ ó 4 &£	  Îe*  r  ó2 ó  8 ³—6 3: 3
< æÎe  ³< æ  "û¨€Ž 
 *  ˜ Îe2 ÿˆÂ—  †—   æ1ÿˆò± È€ù° ‡   s©À$9Î…      *  ¾ ó 4 Ï³4 Ì³4 &£	  Îe ó*  ä 2 ó  8 ³—6 3: Éæ" æ  æ  &÷	  Ÿ  ›rX: ›r†&ó«H†*  
  Ÿ  þÿE 3  ³" À  ÷	 ÷	 I   ›r†›rX:*  0s". 	s, 0 p üÿA ‡ ó. 3üÿ2   VæÎe ³4 s . ‡        
M   NÀÅç*  Gu0€    NÀÅç   ¯”L  ò«E"@  5¬ ™@  *      (  Gub	(f Y¬T}h  Y¬±}hJ ¯”   
   Gub	  *    ñÕ@ 
 BÂe ƒ‚ ÂE ù3 
0
 f*  & Ã  Ãû	T ñµ 
 ÷	 †ñÅ@ 
 ¡ ‡ B  5¬ ™  L  ±  &€÷	  Â± ‡   ò«E"             „M   PÀÅç*  3u05    PÀÅç   ¯”L  ì©x@  ”«€@  *  ”«‡@  «êv@  5¬ ™@  Y¬T}@      (  "  3uÀ(@9© h  9©ë3h"¯”   
   3uÀ  *    æCPÎU £	  Ã 	À, *  & Á, Ã ö&À      
0
 0
úÿÃ  5¬ ™*  L –
ó 
Ä, ðúÿÃ`ú3Š ó ³ *  r óÅ 
 ³  ƒÀðþ÷	  fƒ ÷	(†–%  «êv*  ˜ Ã þ3± ± ± CðúÿÎ5 Î5 ó‹*  ¾  Á÷	  †Ã`ú0
úÿoC»óÕ 
 3 ³Š  Y¬T}*  ä  Î5 !ó æƒ ÷	À ƒ†Ã þVs *  
 s  óÅ 
       ñµ 
 óÕ 
 1
 1
 Á*  0Î5 5ñµ 
 1Î5 (¦æ£	  Ãœ*  V ÃE ÿÂ  ÷	  ƒ‚‡ñÕ 
 ÷	  †"`ú  ì©x"”«‡*  |	0
úÿ1
 1Š ñÅïÿ
 £	 ÷	  ñµ  $”«€*  ¢ 
 ÷	  ÁÃ È–
&V‡ £	    Y¬T}*  ÈA ñ‹ B, ‡ñµD 
 Ã5 	ñµ 
 *  îÃ5 ñ A ãÁ± 	ñÅïÿ
 *  1
 1
 1
 ‡ £	  óµ  Ã 
  :
‡        ÐM   PÀÕ*  Bu0N    PÀÕ   ¯”L  œ« w@  «êv@  *  ¤«V@  ¬¸L@  5¬ ™@  l¬‡@  l¬À@  *      (  Bu€K(œœ«       h œ«ZXh  ¯”   
   Bu€K  *    ñÅ# 
 
ñ‹ Àðþ÷	  Ã  ÃÀ  0
 ¦  «êv5¬ ™*  & Âµ 1! È0úTñµ 
 ñÅ 
 Â5 *  L ñµ 
 Â5 Â5	 ÷	  ÷	  :‡Î5   l¬À l¬‡*  r ÷	r &÷	° €$ñŠ !ñµ 
 	ñ•  ÷	    (l¬‡*  ˜ #‡ñŠ ÷	  ÷	@ Î5 &@¡ ñµ@ 
 ÷	  ¬¸L*  ¾ l ‡÷	  €p öÿ0
öÿp øÿ0
øÿÈ –
&  
¤«V*  ä V‡ ¦æ£	  ñµ 
 f f Ãœ*  
 ÃE ÿÂ  ÷	  ± ± ñÅ 
 ƒƒ‡  £  œ« w*  0	      
ð ð‹ ðµ@ 
 *  V        ðÀp  p  pœ
 
 ðÅïÿ
 0
 $  |0
 0
 ñÅ 
 1
 1
 1
 ± ‡        ú M   NÀÅç*  =u0g    NÀÅç   ¯”L  5¬ ™@      (  "  =uÃ(h Éª°hh  ÉªØhh ¯”   
   =uÃ  *    æöÿæøÿÀ      €c¦¶ Jñµ 
   5¬ ™*  & 1! @ ÀÿÿÀ ÿÿ—#öÿ¦ÿ   L À `¨ÿÀ €¡ 

± –
‚‡        M   OÀ¼*  Bu0    OÀ¼   ¯”L  ¤«@  ¤«By@  *  5¬ ™@      (  Bu¢}(X ¤«Vh  ¯”   
   Bu¢}  *    &&Ì¥	   
À      Â  ÷	  5¬ ™*  &         ‚Áe
 @  1   
  ô  ¤«By  L Á ÷	  „‡   
¤«       ¬ M   NÀÅÎ*  1up;    NÀÅÎ   ¯”L  ì©By@  5¬ ™@  "      (  1uwL(  ô¨š:h  ¯”   
   1uwL  $    p 0Š
 À      Â  ÷	  @‡   5¬ ™ì©By       M   RÀ°¾*  4u0g    RÀ°¾   ¯”L  ´:¼p@  ô¨V@  *  9© @  C©z@  m© …@  ,ªPd@  Éª°h@  *  œ« @  «êv@  5¬ ™@      (  4uëg("  p©Åœh ¯”   
   4uëg            *   æ5
8 5
: 5
< õ  ¡  óµ  õ*  . Ðÿ       ± Ã ób‡&
&
&
C@ 6ÁÁe²ÿÂ*  T ðø@²N@”‚ÒK¤ÀÉ‹úÂ þBÑ¦QÔ*  z QÔŠ ‡0Â°ü5
ÁÜ "ƒÂ@û-JŠ
*    PÀ’ÀÀÀaÀe~ È	"‡À ÉC Ë¥ æœ*  Æ  ÷	ð‡Ã ôC< 3Š æÿ ÷	Ö‡3 *  ì 3
 Â 
Æe µ õ ÷	
 ƒf V‡ A*  8 
5
8 Â ÷	  †õðþ ‡ ¡ ‡ w  w ì  œ« *  8w w Xf&Àó÷	vƒfæÅÅe 
%
%
*  ^%
÷	V ƒÓ$‹ ËËËË÷	@ eƒ†„…*  „‡ ‚D˜Äå0 Ä%	 A‡%D˜Äå0 Ä%	 :‡ÄaÄÄ*  ªaÄJ m < <   Ã ÷	ÄÿÃ
üBÄ"NAJ*  ÐBEFRAMRPAYAMNUJ      LUJGUAPESTCOV*  öONCED  !¥!£!­ 	`Ô •ôÂ û*  ¯uþÿÍ5 ÃÀ% €
ƒ
Í
Ce*  B÷	@ÿÍæ ä‡Í`Õ
%%ß#Ý#Û$)Åå f*  hC
 ÷	  Ae@C÷åt%
å. åÄÀ  m© …*  Ž  fUUUM…UÃB
†Õe˜ UM…Õe€–U*  ´UM…À
é‡ µ> ôµ!  
&†à‚*  ÚÀ &
¦&÷	  ° ¦fæÃ  ÃÂ  À  û	  ,ªPd5¬ ™"´:¼p*   R Â€ùæ`ÿ‡û	T ± ‚’Öƒ†} > À*  &ÿ÷	–ÿƒÁQ$‘“Š‰Ñ ‰!Š‡ &
ôµ   $t *  L !†ŒŒvŒ  
 Ý ` 
÷	8‡€cÁ*  rÐQ$Àe       Àe Â Â
ý¡ –
‡ *  ˜õ< ¡ ‡ *+,-
	 
*  ¾Á &
ôµ0  hB: 	€œ €
Ê_€Ž*  ä÷	¼ Z‡õ: A< W" 
‡1t  ôµ  I*  
Á1  €c5: °­  ÔÀÀezÿ””c*  0Â`ð¥ þÿJ’öóµ  3
* 3
, À RÀ
*  VýÂ À  R”À
ý×¬ 8 ‡€3œ 5 3 *  |6 3
 2 3œ	  3œ 4 3T . 3V 0 ¡ –
Ž*  ¢‡ æ&fA8 
Á ÷	  Â þ/‡58 
÷	  ô¨V*  È  ‡€ Â 
÷	  úÿu8 †È%`úð  œ« 9© *  î6 à% þÂðþö þ ± ÷	  †ÀÐû÷	    Éª°h(«êv  ÷	        Â û–Uƒ‡   C©z       *M   RÀÅç*  ¸up†    RÀÅç   ¯”L  E©¶H@  ¾©à@  *  À©h	@  ;ªà8@  =ªÐ@  Šª@ @  ¯ª€@  *  Óªø8@  I«„–@  S«`"@  œ« @  œ«w@  *  « w@  Ã«q@  ¬À@  5¬ ™@      (    ¸u`†(€U«-‚h  ¯”   
   ¸u`†  *    5
4 ÷	  †w ÂÁ
÷	  "‡Ã  ÃÁÁe  !  
S«`"œ«w 5¬ ™(À©h	" 
*  & û	V †, Ðü	Ã  ÃÁÁe  û	V ê†÷	´  5¬ ™Óªø8< 
*  L Ã  ÃÁÁe  û	V †w Vf6 5
6 õµ ,   5¬ ™=ªÐT 
†*  r Ã  ÃÁÁe  û	V †5 ôÕ@        µ4 Ã  Ã  5¬ ™¬Àz 
&5¬ ™À*  ˜ ÁÁe  û	V @@  œ €Š÷	  ?‡p-<  :‡÷	    ¯ª€š 
Šª@ (E©¶H *  ¾ õµ 9 4Ã  ÃÁÁe  û	V †, Ðü	Ã    5¬ ™À©h	Î 
(5¬ ™«*  ä ÃÁÁe  û	V ê†R÷	Ã  ÃÁÁe  û	V G‡"  
Óªø8è 
5¬ ™";ªà8 
*  
õµ , Ã  ÃÁÁe  û	V †5 ôÕ@  ±  5¬ ™¬À
*  05 
 5  5  ôµ  4 
 4  *  V4  4  4  4  õ õ  ôµ*  |  õ  ôµ@  õ  !Ã  ÃÀ    "5¬ ™*  ¢5 5  ÁÁe  û	V uL        uN  5

   I«„–®
*  È5
 5
 ôÅ  4Š  
÷	  4
 A4    œ«w*  î
÷	  ôÅ@  w   u: 6 õµ 9 8õµ 9   
œ« « w*  4A@ ñµ  C: `Ëµ (Ã  ÃÀ  È   5¬ ™*  :àý–
A@ ñ‹ ¸§ôÕ  &Ã  ÃÁÁe  û	  5¬ ™&¯ª€Z
$  `V €Ã ÷	  Ã ÷	  ã‡õµ 9 é‡   Ã«q¾©à       M   UÀ¼*  ½u0g    UÀ¼   ¯”L  E©¶H@  E©ÉH@  *  ¾©è@  À©h	@  ;ªà8@  =ªÐ@  ŠªE @  *  ¯ªH@  Éª°h@  Óªø8@  I«„–@  œ« @  *  œ«w@  «êv@  « w@  Ã«ô@  Ã«      q@  *  ¬À@  ¬"@  5¬ ™@      (  ½u¡d(À  ¬-h  ¯”   
   ½u¡d  *    ÷	  †w  ÷	  †ÀÐû÷	  u4 t @m: Àe  ¬"Éª°h«êv*  &  ÷	&@@ ðµ  u-,  õàù  €*  L ÷	  õµ 9 5
4 w ‚
&
÷	p†–
w rÁ  E©ÉH*  r  
÷	^	†–
uL  uN  w z–
5
, Ã    (5¬ ™*  ˜ ÃÁÁe  û	V  
÷	  5Š9 Ã  ÃÁÁe  û	V (  
¯ªHœ 
ŠªE 5¬ ™$=ªÐ¶ 
*  ¾ †w (f6 5
6 õµ , Ã  ÃÁÁe  û	V   5¬ ™$¬ÀÜ 
 *  ä †5 ôÕ@  µ4 u < u >   ‚*  
 `      fÃ  ÃÁÁe  û	V  
@ÔfÀE÷	    5¬ ™¯ªH
(ŠªE ¯*  0\‡ôÕ  p-<  :‡÷	  õµ 9 4Ã  ÃÁÁe  E©¶H"5¬ ™*  V  û	V †, Ðü	Ã  ÃÁÁe  û	V ê†8÷	"  À©h	T
5¬ ™Óªø8n
*  |ä Ã  ÃÁÁe  û	V -‡õµ , Ã  ÃÁÁe  5¬ ™;ªà8†
"5¬ ™ *  ¢  û	V †5 ôÕ@  ­õ õ  ôµ    ¬À 
*  Èõ  ôµ@  õ  –
õÐþ –
u*  îL  uN  Ã  ÃÁÁe  û	V –
A4 
t    5¬ ™I«„– 
*  4
 5
4 
÷	   4
 
÷	  ôÅ@    œ« "œ«w      *  :w    fœ ÎEðÿ—¥ 5”, 5”- u ,   « w*  `‡ u: 6 õµ 9 3õµ 9 /A@ ñµ  Ã*  †  ÃÀ  Èàý–
A@ ñ‹ ¦–
³ôÕ  &Ã  5¬ ™*  ¬  ÃÁÁe  û	V €Ã ÷	  Ã ÷	  â‡õµ !  5¬ ™¯ªH²
Ã«q"¾©èµ*  Ò9 é‡ fõ•  2   l fu < u *  ø> Ã  ÃÁÁe  û	V A4 ¶
 € ÷	  †–%  5¬ ™¯ªH
$ŠªE *  ¡ ‡ ôÕ  p-,  †p-<  †Bp-<  ‡€*  D ÷	  õµ 9 6A@ ñµ  õÐþL –%± ‡   E©ÉH*  j)ö @@ œ Nt4  u: . Ã    (5¬ ™*  ÃÁ      Áe  û	V ‡Þ	5 4 Þ‡u. : @m: Àe   
Ã«ô”
«  ¶÷	„þ6 —       Ä M   NÀÕ*  ºu°x    NÀÕ   ¯”L  ¾©Ó@  Šª0 @  *  Ã«Kq@      (  ºu°x( ¾©àh Šª@ h
   ¯ª€h  Ã«qh ¯”   
   ºu°x      ‡ w   w   w     Ã«Kq¾©ÓŠª0        Ä M   NÀ…á*  ºuµx    NÀ…á   ¯”L  ¾©Ó@  Šª0 @  *  Ã«Kq@      (  ºuµx( ¾©èh ŠªE h
   ¯ªHh  Ã«qh ¯”   
   ºuµx      ‡ w   w   w     Ã«Kq¾©ÓŠª0        –M   RÀÅÎ*  ©u[M    RÀÅÎ   ¯”L  9©       @  C©z@  *   © }@  ÉªØh@  Óªz@  œ« @  œ«ZX@  *  «êv@  5¬ ™@  Y¬T}@      (  ©u[M(–  ô¨8^h  © h ¯”   
   ©u[M  *    ‡ &
& 2  ‡õÀÿL w ^õ‹8 W­8  *  & Àðþ÷	  
Ü €€€` 
Â Ã ÷	    «êv(9© *  L úÿ†÷	ñµ 
 	Â ÷	  †w 
€Ê  œ« *  r t ÷	  †ÀÐû÷	  ÷	  †õ ûL hÃ   
ÉªØh«êvC©z*  ˜ Ž¬ Âe@ Ã
ùõ ûL ZÃ õ 8 4‚¦ ¦*  ¾  œ N`v ¶,  Ž, j‡×  õ‹- *  ä µ 6 µ 8 µ . µ 0 µ 2 µ *  
4 ƒ
      r` r ² ² É ñÕ 
 ÷	  †  &ÉªØh*  0ÀÐû÷	  ÷	  Â ÷	  †Á"`ú&&   
«êvÓªzœ« *  V÷	  ° ˆfL fN  ÷	  ° ˆ–
  œ«ZXœ«ZX*  |À      && Át  
÷	  4
 °  5¬ ™"œ« *  ¢ ˆ&V‡ —,
   —,    –%—,   *  È—,   ²  ²  ²   ²"  2
 2
*  î ²  ²  2
 2
 w °þö Q ñÅ*   
 Â ÷	  †w  ÿ 
Á Â Ã ÷	    œ« &9© *  :úÿ†÷	 ‡ðv t  +ñÅ 
   fœ
 1œ*  `
 
 ñÅ@ 
 Î5@ ñÕ@ 
 ÎÅ@ ð5@ 
 ÎÕ@ *        †°•
 f 1  ° N 1  ° €ÀE ÿ*  ¬w Výæ¦æ  æ  &
&
ò$   
ƒÜ ð *  Ò. ‡æ&. &
¦$ &
Ã  Ãóµ ( 	¶  5¬ ™*  ø  ¶  ö• 
 ÷	  †Æe w Lþ‚ ƒ    © }*  6Š ²" ²  ² ² ²* ²( –%æ ó*  D  $ ó " óe $ s" 3
& ƒw Vý"`ú
*  j& &
÷	  ˆ° 
"`úúÿ÷	  ¡   œ« &Y¬T}
  ‡ ± ‡        Ò M   SÀ…È*  ªuœ'    SÀ…È   ¯”L  ÉªØh@  «êv@  "      (  ªuœ'(@ ©`Th  ¯”   
   ªuœ'  *    &÷	  †ÀÐû÷	  B ‚
Â
ý°•       p   ÉªØh«êv  &  ð  °Š ð•ÿ  p-  ‡        „M   OÀ¼*  ªufs    OÀ¼   ¯”L  Ý©[}@  ÉªØh@  *  Ìªa	@  «êv@      (  ªufs(B"©ðsh  
  ¯”   
   ªufs  *    ÷	0 

Ã ÷	  úÿ†‡ tF   ÷	    Ý©[}(ÉªØh*  & †ÀÐû÷	  È ð  6 ô‹ E‚ 2­   «êv*  L  '2­  #õµ  , 7l Ñ•
  Ñ• *  r Ã õµ , Â2 BaÂ. Ba÷	  ‚ r    Ìªa	*  ˜ ²à õµ , õµ ,  Áe Ñ•  *  ¾    Ée € Áe ƒ Cm: ö *  ä  õµ  , õµ ,       ö  ‚ ¶  ¶` *  
óµ   ¡ ‡ ö  ‡¡ ‡ ö   œ ÁE*  0ðÿÁ¥  Â‚m 
Ü Á Òöe  v`*  V ‚ ò¬  9ò¬  5æÁÁe Â. BaÃ*  | ÷	  ƒ‚ Æå óÕ   Â²$  Ã ÷	  Ìªa	*  ¢   € B‚m  `ƒà÷	  ‚Ã ÷	    Ìªa	Ìªa	(Ìªa	*  ÈÆe p 0à % AbÂÂe ‘ æÃ ÷	*  î  € Èe ¶í  € B‚m  ƒí Cí  Ìªa	*  : ÷	  °í  ƒ¶
 6  6` w ÖþB@ ‚œ  Ìªa	  : Â Â‡        žM   zÀÅç*  ªuLy    zÀÅç   ¯”L  ©òƒ@  Ìªa	@  "            (  ªuLy(¶#©àeh  ¯”   
   ªuLy  *    ƒ € W­8  õµ , W­8  ðµ*  &   ðÅ  óÕ  3  3
 
 s.  *  L s0 
 € Áe W­8  õµ  , B: ‚m*  r   `ƒ
 ð ðe  ÷	  w Ô W­8  =  Ìªa	*  ˜ õµ , 9Â2 Ba l —-  &Ñ• Ñ• *  ¾      Q Q C B ÷	*  ä   p 0à õµ , õµ0 , 1÷	  €   Ìªa	$©òƒ*  
°m  )õµ ,  õµ0 ,  `Â. Ba—-*  0  »÷	  B: ‚m ƒ
 ÷	  € p 0à  ©òƒÌªa	*  V õðþL ± ‡ ƒ ö       öl  ÁÁe v  *  |†ñœ  ³Š Áe   œ ÂEðÿÂ¥     ¢ 
@ÔÀ @ÔÀ `ã¡ ‡        t M   PÀÕ*  ªu¤y    PÀÕ   ¯”L      (  ªu¤y(   #© sh  ¯”   
   ªu¤y      4
 ± ‡        4M   OÀÅÎ*  «ukM    OÀÅÎ   ¯”L  @©ôD@  D©Mw@  *  « w@  ¤«@  ¤«ªH@      (  «ukM(X   D©íbh  D©ch  ¯”   
   «ukM  *    ÷	  †w    æ Â 
Ý m ÷	  @©ôD« w*  &   Á  Â÷	  ƒì4
  ¦ Á0 ÷	    ¤«ªH¤«(¤«  L ‚÷4
 w     D©Mw             &M   PÀEÂ*  «u `    PÀEÂ   ¯”L  ô¨"@  ô¨Œ@  *  ô¨ªH@  9© @  9©ë3@  ;©EM@  ;©OM@  *  œ« @  « w@  ¤«ªH@      (  «u `(Ü   ;©æ_h G©­\h  ¯”   
   «u `  *    æ   ÷	  Ãðµ   ÷	  †–
w      9©ë3ô¨"&;©OM*  &  ðµ   ôÕ   –
)Ã÷	  <‡  

  ô¨"*  L ÁÜ Ál ÷	  ‡4 Àœ( À ÀA N †  ô¨ªH*  r &f÷	  –
6­  	‡t  –%õ  w   Ž  
ô¨Œ&« w*  ˜ ÷	  Ã 


Ã ÷	  ‡úÿÂ ÷	    9©ë39© &œ« "  ¾  
ÁÜ       Ál ÷	  ƒõ þ w     ¤«ªH ;©EM       tM   QÀÕ*  «uq    QÀÕ   ¯”L      (  «uq(Æ  J©™h ¯”   
   «uq  *     ôµ!  Â@þw Dõµ  Âpýw 4*  & t , t .  
@Ý Àµ Àµ ÂÀúw *  L 4  
@Ý   Âpú{4Ð A t* õ¥*  r   t Â ûk
BÝ1 ‚
´( Â Â— *  ˜  @‚  Âå B ƒÂ@ÿU&
&
&
C@ D*  ¾ ÁÁe@ÿ@²Âðø#@”‚ÒK¤ÀÉ‹úÂ þ*  ä Ñ¦QÔQÔŠ ‡0"Â°ü

ÁÜ Á%ÿ *  
÷"Â@ûõ –
×¬   ó‹ ³Š ô¬*  0 ( ƒôœ ( Š
P      À »Ö5 ôµ   Â*  V`û–%µ ± ‡ @ ¬     ù5
 *  |
 5  À 
‚ÕÂ
€
Âå û4 
‚Õ´(  ¢ Â
‚‚‚€`õ%   5 
 ƒ5
 ¡ ‡        \M   QÀ…È*  «u|q    QÀ…È   ¯”L  J©™@  J©Å@  *  J©|—@  ¤«@  5¬ ™@  h¬_M@      (    «u|q(d J©m$h  ¯”   
   «u|q  *    f
 ÁÁe  û	V &‡Ã  ÃÁÁe  û	V ‡4
 "  J©™ 
5¬ ™J©Å 
*  & õµ   Ã  ÃÁÁe  û	V † 
´    5¬ ™h¬_M6 
  L Á0 ÷	   õ± µ
 w     
¤«J©|—       X      M   OÀEÂ*  ¬u%!    OÀEÂ   ¯”L  s©`"@  Â©¨%@  *  Šª0 @  Éª°h@  œ«w@  «êv@  « w@  *  Ã«ô@  5¬ ™@      (  ¬u%!(e©-Ph  
  ¯”   
   ¬u%!  *    ÷	  t‡&
Ž
€÷	  ‡Ã  ÃÁÁe  û	V ‡õ5!  s©`"Šª0 5¬ ™ Ã«ô 
M*  &   A@ ñµ  õ• , –
Þ	†–
MÞ*  L –
 ÷	  †ÀÐû÷	  C. `Â õ‹, ÂU  Éª°h«êv*  r @ ‹ÐñÕ 
 Â”ÂEüÿÂe ƒ
õ”> &
&
€Ð”Â
ý*  ˜ ‚€1  ±  #µ. 50 4
 Â ÷	  ‡  &œ«w*  ¾ @0 A. B> Ã ÷	  ‡@m: ÈÕ ñÕ 
   Â©¨%*  ä       5 5   4
 Â ÷	  ñ‡õ õ  œ«w  
  4Š w     « w       *M   OÀÕ*  ¬u;;    OÀÕ   ¯”L  9© @  9©ë3@  *  c©%@  œ« @  ¤«ªH@      (  ¬u;;(T   i©í{h  i©|h  ¯”   
   ¬u;;  *      
ÁÜ Ál ÷	  ÷	  Ãôµ     ¤«ªH9©ë3*  &  


Ã ÷	  ‡úÿÂ ÷	   Ãœ(   9©  œ«   L Ã Ãw     
c©%       0M   OÀ…È*  ¬uN    OÀ…È   ¯”L  9©ë3@  ¾©Ó@  *  Â©,`@  Ìªa	@  œ«w@  Ã«Kq@  5¬ ™@  *  Y¬T}@      (  ¬uN(à      l©,xh  ¯”   
   ¬uN  *    5
0 ÷	 6‡÷	: ÷	. 4õ• 8  4
 
*  & ÷	  †‡ 
÷	  †‡ 5
: 
‡ ÷	  5Š8 ÃU €  œ«wÂ©,` 9©ë3*  L ÷	  B@ †–
"`úõ‹- ò‹  ÷	  ¾©Ó*  r   Çw ‡ Ãpùõ‹- xõµ 9 #W-0    Y¬T}*  ˜ õ 0 A@ ñ‹ ñµ  ÷	`ÿ‡÷	Žÿ÷	‚ÿ*  ¾ õµ 9 Ã ÷	  Ã@úQõ 0 Ãÿÿ÷	  A  Ã«Kq&Ã«Kq*  ä @ B6 `ƒ”Âe Ãµ ÃEüÿÂ`Âe &
Nœ ‚e*  
ñµ  ÷	œ Ã@ú,A6 `B:  ƒà`*  0÷	  àp f: `Ž †µ6 ÷	d ø–
w   Ìªa	*  V¶þ–
B6 JÝ      2 Òµ  
Š ñÕ 
 À     &5¬ ™*  |   È0
  4
 fN fL 
÷	  †–%  $œ«w*  ¢ˆ° fL V‡ ”ÁEüÿÁe ¦”&
&
ƒ“”Á
  Èýƒ´¥ ô  t  ‡        È M   NÀEÛ*  ¬uœw    NÀEÛ   ¯”L   «ƒK@      (    ¬uœw(D s©`"h  ¯”   
   ¬uœw  *    5
 5
 5
, õ• 2 5
4 ôÅ\  Ãpý  ðµ"  &   Ãüôµ   w   õ ± ‡    «ƒK       ÜM   OÀEÂ*  ®ut:    OÀEÂ   ¯”L  9©ë3@  ´©œw@  *  Â©¡E@  Â©qq@  Â©™w@  Þ© @  ê©2g@  *  œ«w@  « w@  5¬ ™@      (        ®ut:(š   ¹©­\h  ¯”   
   ®ut:  *    ÷	  :‡Ã  Ãõ¥   	ÁÁe  û	V ôÕ    ´©œw5¬ ™Â©™w 
E*  & õ¥  ÁÁe  û	V õ¥  ÁÁe  û	V   Â©¡E0 
$Â©qqD 
*  L õÐú ôÅ  	‡ôÕ@  ÷	  õ  5  ê©2g*  r  5  w   ÷	  Ã 
÷	  4
 w   Þ© 9©ë3"œ«w  ˜     « w       M   OÀÅÎ*  ®u2X    OÀÅÎ   ¯”L  Ú©ðG@  Ý©[}@  *  Éª°h@  òªàG@  œ«w@  «êv@  ¼«8@  "      (  ®u2X(æ ¾©Óh  ¯”   
   ®u2X  *    5¬ 8 †Àðþ÷	        æ4
 5Š9 5œ - ÷	  õµ  «êv&¼«8*  &  9 $ƒ÷	  †ÀODÎ5 €f9 f: õÿÿ  òªàG*  L : ÷	  õµ 9 µ: µ•9  
÷	  4‡)–%  ¼«8"œ«w*  r 5¬ 8 #÷	  †õÕB 9 õŠ- ƒ÷	  t   Ú©ðG$Ý©[}*  ˜ $‡ 
÷	   t ‡÷	  †ÀÐû÷	  5
  œ«wÉª°h&«êv*  ¾ : ¨ ÷	  †ÀÐû÷	  "`ú4
 ± –
  Éª°h«êv  ä ‡        ÔM   OÀÕ*  ®u<d    OÀÕ   ¯”L  ¾©Ó@  Â©,`@  *  ³ª4}@  Þª¡E@  œ«w@  «êv@  5¬ ™@  *  Z¬àG@      (  ®u<d(Â À©h	h  ¯”   
         ®u<d  *    Ã ÷	  ‡5Š8 5
: Ã ÷	  B@ †õ‹- ‚  
Â©,`¾©Ó*  & ò‹ "`ú÷	  ä†õ‹- ‡ õµP 9 !Ã  Z¬àG*  L   ÃÀ  Èpù0
 & & 4
 
÷	    5¬ ™(œ«w*  r —#`úô ÷	  ˆ° ± ‡ õµ  9 Àðþ  ³ª4}*  ˜ ÷	   ñÕ 
 Am: C”ÃEüÿÁ`Áe &÷	    «êv(Þª¡E  ¾ €¦       ü M   RÀEÛ*  ®uqq    RÀEÛ   ¯”L  Ý©[}@  Éª°h@  *  «êv@  ¼«8@      (  ®uqq(F Â©¨%h  
  ¯”   
   ®uqq  *    4
 5
< µ> B@ ‚œ Â Â÷	  úÿ†‡ t  Ý©[}$  &  ÷	  †À      Ðû÷	  5
: ÷	   ¡ ‡   Éª°h«êv¼«8       ÎM   PÀ¼*  ®u=r    PÀ¼   ¯”L  9©ë3@  ¾©Ó@  *  Â©,`@  Â©ðs@  Šª0 @  Éª°h@  œ«w@  *  «êv@  Ã«Kq@  5¬ ™@  Z¬àG@      (    ®u=r($Â©¡Eh  ¯”   
   ®u=r  *    Ã`üu > cÃ@ü 
@Ý ÷	  [‡Ã0ü
AÝ   Šª0 *  & u< Sp  P‚ð‹	 Lõ• 8  4
 
*  L ÷	  ,‡
÷	  "‡5
: 
÷	 ÷	  5Š8 ÷	   œ«wÂ©,`9©ë3*  r ÃU €
BÝ µ< u > ÷	  B@ †–
õ‹-   ¾©Ó*  ˜ ò‹ "`ú÷	  È†w n‡ Ã@úõ‹- õµ   Z¬      àG*  ¾ 9 õµ 9 õ5  w :õ5  
÷	*  ä   ÷	  ÃU €÷	€ÿÃ@úõµ 9 êõµ 9 íA@   Ã«Kq9©ë3*  
B: `ñ‹ 	Êµ ÷	  ¡5
< j&
&ƒ”µ”  Ã«Kq*  02 Ãµ ÃEüÿÂ`Âe 
ƒÔÃ ƒÔÃ ¦Î`&
Nœ *  V‚eŽ !†ƒ”æ´” &
&
ÃEüÿÃe ‘”Ã
ý´ *  |´ Öµ$ 	 u . u 0 
¶
 Ý‚‚å*  ¢µ: –
w ¸þ¦t ÷	  ÷	   ‚†4
 t  9©ë3Â©ðs*  È È%Pþ
÷	  †ÀÐû÷	  ¶
 ºÆe –%µ  Éª°h«êv*  î< 4
 
÷	  ‡ ÷	  †ÀÐû÷	  À    œ«wÉª°h"«êv(5¬ ™      ÈfL V‡              ¾M   PÀ¼*  ®uçr    PÀ¼   ¯”L  Ý©[}@  ã©,#@  *  Éª°h@  œ« @  œ«ZX@  œ«w@  «êv@  *  5¬ ™@      (  ®uçr(² Â©,`h  ¯”   
   ®uçr  *    4
 4
 æC@ óµ  À      È@úð  5¬ ™*  & Ðü >Á À Â’Â Âƒ÷	  4úÿ 0‡÷	    Ý©[}(Éª°h*  L †ÀÐû÷	  ðµ  ñÕ  
 t 4
 ñÅ    «êv*  r 
 
÷	  ‡
÷	  ‡³  ³  
÷	  ¹†  
œ«wã©,#&œ«   ˜ && ÷	  ° ˆ–
fL V‡   œ«ZX       XM   NÀEÛ*  ®uVs    NÀEÛ   ¯”L  9©ë3@  Â©ðs@  *  Šª      0 @  Éª°h@  œ«w@  «êv@  5¬ ™@  "      (  ®uVs(r Â©qqh  ¯”   
   ®uVs  *    @
 A B 4 t ÂE ÿ´ @P 
÷	*  &    4
 
÷	  ‡÷	  ÷	  ‡ ÷	     Šª0 œ«w9©ë3Â©ðs(Éª°h*  L †ÀÐû÷	  À      È€ú5
< fL V‡   «êv5¬ ™       <M   SÀ…È*  ®ufs    SÀ…È   ¯”L  Â©¨%@  Šª0 @  *  Éª°h@  œ«ZX@  œ«w@  «êv@  5¬ ™@  "      (  ®ufs("Â©ðsh  ¯”   
   ®ufs  *    f@ &
æ æ 
÷	      ÂE ÿƒ÷	  Šª0 *  &   [‡õµ 9 J@m: Èµ       æPþD&
&
‚’ÁE  Â©¨%*  L üÿÁe Ãe Ò”Á
ý‚ƒÈµ 
ö ô  *  r ´  &2 4
 ñµ 
 v æ¦&œ *  ˜ Â ñµ 
 
÷	  ‡‚€—-  ö
   œ«w*  ¾ ¯@ÀeL æ ú 4
 
÷	  ˆ0
 Æe   œ«w*  ä À      && ÷	  ° ˆµ@    
5¬ ™œ«ZX  
÷	  †ÀÐû÷	  fL V‡   Éª°h«êv       ð M   NÀÅÎ*  ®u}s    NÀÅÎ   ¯”L  Šª0 @  O«•y@  *  5¬ ™@      (  ®u}s(L Â©™wh  ¯”   
   ®u}s  *    ôÅ@    4 ÷	  †À      È@ü0
   Šª0       5¬ ™*  & ± ‡ 5œ 3 5 4 4  4  4  w     (O«•y       xM   PÀEÛ*  ¯u`"    PÀEÛ   ¯”L  9©ë3@  Â©¡E@  *  Â©qq@  Â©™w@  ë©`"@  ì©Kq@  ³ª4}@  *  O«™w@  œ«w@  « w@  5¬ ™@      (  "  ¯u`"(ú Ý©-‚h  Þ© h| ¯”   
   ¯u`"  *    ÷	  ;‡Ã  Ãõ‹ ôµ@  ÁÁe  û	V   ë©`"5¬ ™"Â©™w 
 *  & & 4  ÁÁe  û	V ´ õ¥  ÁÁe  O«™w2 
 *  L   û	V õ¥  ÁÁe  û	V õÐú †  Â©¡EJ 
Â©qq^ 
*  r 5 5  4Š 5

 5
 5
 õ%@ú       
õ%Ðü*  ˜  õ‹ õ°ý Ã  ÃÁÁe  û	V ÷	    5¬ ™ ì©Kq² 
(9©ë3Î*  ¾ Ãõ5@   4
 
÷	  W- `úô  œ«w  ä  ÷	  ôÅP  4
 w     
³ª4}« w       ÖM   NÀÕ*  ¯u¡E    NÀÕ   ¯”L  9© @  C©z@  *  Éª°h@  œ« @  œ«ZX@  «êv@  5¬ ™@  *  Y¬T}@      (  ¯u¡E(Ä ã©,#h  ¯”   
   ¯u¡E  *    æ
Â æ¦€ Â ƒ ÷	  úÿ
†"   9© *  & `úÁ÷	  ì–%0–%0
 ÷	  †ÀÐû÷	    Y¬T}Éª°h(«êv*  L ÷	  †Ã  ÃÀ  È ûC@ ò¬  %      ¦  C©z5¬ ™*  r  ¦  ‚ 
÷	  ‚ƒ‡ÂÈ û¸  œ« *  ˜ Á"`ú&& ÷	  ° ˆ–%`×–
f  œ«ZX
  ¾ L V‡        ¤M   NÀEÛ*  ¯us    NÀEÛ   ¯”L  Ìªa	@  Þª¡E@  "      (  ¯us(ê ê©2gh  ¯”   
   ¯us  *    Bm: @@ 4œ  ƒ”ÃEüÿÃe ¦”´” 4
 *  & Áe ÷	   @œ ÀEðÿC À% 
ƒÔÃ ƒÔ  
Ìªa	*  L Ã µ> æ@  t<  ôµ@  
ôµ  *  r €`÷	  ƒ't<  ÷	  ƒ4œ   t  
Þª¡EÞª¡E*  ˜  
 t  ´“ 	t. 
 t0  t2  4 *  ¾  4        4  5 
 5  5   B
  ä > –
‡        Â M   NÀEÛ*  ¯uœw    NÀEÛ   ¯”L      (  ¯uœw(H   ´©œwh ë©`"h  ¯”   
   ¯uœw  *    5
 ÃPùõ Ã@ùõ   Ãpýðµ  &  & Ãüôµ   ôÅ  5Š9 ‡ õ ± ‡        fM   OÀ¼*  ¯uÕ    OÀ¼   ¯”L  ê©2g@  Éª°h@  *  Ìªa	@  œ«w@  «êv@      (  ¯uÕ(’   ì©Kqh  ¯”   
   ¯uÕ  *    ôÅP  õ   ÷	  †ÀÐû÷	  ÷	  õ5@   Éª°h «êv$ê©2g*  &  ñµ  ñµ=ÿ ñµ€  
÷	(  4
*  L  
÷	        ñµ 
 µ õ ÷	 ‡ A   
œ«w$  r @ À ƒõ õÐù u õ w     "Ìªa	        M   {À¼*  ±u¡E    {À¼   ¯”L  ô¨8^@  ©`T@  *  © @  Ý©[}@  3ª¨@  ‹ªàe@  Éª°h@  *  ÉªØh@  Ìªa	@  Þª¡E@  œ« @  œ«w@  *  «êv@  Ÿ«à`@  5¬ ™@      (  ±u¡E(6*  ©€h*3ª(#h  @ªWhª@ªYh@ª—`hZ   «xhD¯”   
   ±u¡E  *    A6 f f 5
6 
÷	  †–%± ‡ &
&
  œ« *  &  ÷	  †ÀÐû÷	  õµ , 	õ L õ• ,   
Éª°h«êv*  L –%¡ ‡ C@ ó‹ B: `ƒ”ÃEüÿ      Ãe &
&
*  r ‘”Ã
ý–- –- Ý–
Ú–%Æå 6 Ã*  ˜   ÃÁÁe  û	V õµ , Â w RÃ  ÃÁ  5¬ ™3ª¨ž 
$5¬ ™ *  ¾ Áe  û	V €  œ ÀE ÿõ• 8 ÷	  ‡÷	H@  ô¨8^¾ 
 ©  *  ä 8 A6 Ã ÷	  †w (úÿt ÷	  †ÀÐû  Ý©[}"ÉªØh*  
÷	  6 €  œ ÀÅ ÿ÷	  € ƒ ðµ    «êv©`T*  0ðÅ  óÕ  3  3
 
 p6  p8 
 *  VÃ  ÃÁÁe  û	V  4
 Â ÷	Â T‡€   5¬ ™‹ªàe^
 *  |ðµ  =Ã  ÃÁÁe  û	V €  œ ÀE ÿõ•  5¬ ™ô¨8^Œ
‹*  ¢ 8 ÷	  :‡      ÷	z @8 A6 Ã ÷	  /‡úÿt  
©  Ý©[}*  È ÷	  †Àðþ÷	  6 €  œ ÀE ÿ÷	  Ã  Éª°h«êv&©`T*  î  ÃÁÁe  û	V ‡5 6 Â  4
 ñÕ   5¬ ™Ÿ«à`ô
*  
 ÷	  †5
6 Æe &V‡ B@ ‚œ  Â Â‡ ñÕ  œ«w*  : 
 ÷	  ‡ À ò‹ À
ò‹ À
‡ õµ ,   
œ«w*  `#ƒ Ãå Ñ¦‚
ƒ ÷	   Ã ƒ   Ìªa	*  †Â`õµ  , ÷	  C@ Ã ÃE ÿ÷	  ‚‡ õµ  Þª¡E"Ìªa	*  ¬ , õµ , ¶-  B‚
‚m f
m
 *  Ò Cí: Ã
ƒí ÷	  p 0à ƒ Ãå Ñ  Ìªa	*  øÃe BÂe      . ÷	  ‡ õµ , õµ , ƒ Ãå  Ìªa	   ÑÃe BÂe2 ÷	  ÷	  ‡   Ìªa	Þª¡E       èM   OÀEÛ*  ±u±H    OÀEÛ   ¯”L  @ªW@  @ªY@  *  @ª—`@   «x@  È«Lq@      (  ±u±H(ø   3ª¨h  ¯”   
   ±u±H  *    B@ œ ÁE ÿv 
Â. Ba÷	  õµ , `   «x*  & 
m 6 Â2 Ba÷	  õµ , õµ , `   «x*  L 
m 6 ‚
 Bm: €”Àe 6 õµ , õµ*  r  ,  í Á
C@ õ5  Â *  ˜ Âœ  Â Â¶ €
 ì 6,  ƒ‡  ƒ *  ¾ Cí: B`l l ° 0à ÷	  €
       ÷	     È«Lq(@ª—`  ä ÷	  ÷	  ‡ õ• , ‡   @ªY
@ªW       „M   OÀ…È*  ±uiw    OÀ…È   ¯”L  ©Š@  ©G@  *  #© s@  Éª°h@  •«Ò@      (  ±uiw(|  9©àMhò ;ªhh  ¯”   
   ±uiw  *    ö  6
 6
 A@ õ5  C Cœ Ã *  & Ãö Aœ ÁE ÿv  ÷	  †õÐûL ± ‡   Éª°h*  L 6 6 6l  6

 v6  6
 6
 6
 u-*  r : 6 5, : ƒõµ 9 õµ  9 5 : u*  ˜ : 6 v6  ôµ  õ , ÷	> ÷	  €   "•«Ò*  ¾  ÷	R †‡  Am6 u-: 6 ÷	  ¶     ©Š*        ä ÷	  õ• , ¡ ‡ ô‹ ö  
ô‹ ö   ©G*  
 ö  ‡ f6,  ‚ ì N ƒ&0¬*  0  ‚ð‹ ÷	  †0Š –%õÕ, , ± ‡ €–
  #© s*  V¡ B: ‚m ¶  †õÕ, , õÕ , –
± ‡        ÖM   |ÀEÂ*  ±u,x    |ÀEÂ   ¯”L  ô¨8^@  ©`T@  *  © @  Ý©[}@  ;ªh@  ÉªØh@  Ìªa	@  *  Þª¡E@  œ« @  œ«w@  «êv@  Ã«Kq@  *  È«Lq@  Ë«àe@  5¬ ™@      (  ±u,x(l*  ©¤’hà©Šh.©Gh¬;ªà8h  •«Òhð
  ¯”   
   ±u,x  *    5Š, Æå" Ã  ÃÁÁe  û	V ‡ ÷	¾5
6         5¬ ™;ªh 
‹*  & w 8Ã  ÃÁÁe  û	V € õ• 8  œ ÷	    
5¬ ™ô¨8^2 
(© *  L ?‡B@ ‚œ Â Â@0 A. Ã ÷	  0‡tF     Ý©[}*  r  ÷	  †ÀÐû÷	  6 €  œ ÀÅ ÿ÷	    
ÉªØh«êv(©`T*  ˜ Ã  ÃÁÁe  û	V € ÷	è € ð‹ ÷	Ú   5¬ ™Ë«àe  
ª*  ¾ & ÷	†–
5 6 õ• , D€õ : *  ä l ¦Bm: Ž $†
Êµ ƒ’ÃEüÿÃe Â`Âe*  
 A@ Cœ ÃE ÿ A m ÷	  
÷	    "Ìªa	(Ã«Kq*  0€ Bm: Ú–
€p.  p0 
  u6 ñÕ*  V 
 Â ÷	  Æe" && õµ , A      6 5
  œ«w*  |6 
÷	  4
 4
 ° ˆ&V‡ &ð•ÿÿ ð•  
œ« *  ¢  õ : 6  6` Âe ¶  †2œ  *  È°Š 
÷	  €B: `ð€‡ ñÕ 
 Â ÷	    Ã«Kq(œ«w*  î‡ u-: 6 &@@ ö	  ðµ  ö  €*  ¶m  ¶m  ¶  ¶
 ‡ € 
Éµ *  :C’ÃÅüÿÃe Ãe C`
ÂÔÂ ÂÔÂ 6  ví:  *  `‚m Ãå “Â “Â l B‚m ° 0à ƒ*  † ÷	  ‚ Âå ‘ Â aƒ Ã
÷	  ‡   È«Lq&Ìªa	*  ¬ƒ u-: 6 	ö  ¶m  ¶m  Á Á`B*  Ò‚m æ ³ óà ƒCí: ¶-  ÷	  ƒ   $È«Lq*        øu-: 6 Ñ• Ñœ &@@ ðµ  ñ• þÿ*  Ñ• ŠŠŠ€Ñ• Ñœ ³Š ‚ ‚m ‚
‘*  DÂ ‘÷	  ‚ Âå ‘ Â aƒ Ã
÷	    
Þª¡E(Ìªa	  j‡        M   OÀEÂ*  ±uãƒ    OÀEÂ   ¯”L  Éª°h@  Ìªa	@  *  Þª¡E@  «êv@      (  ±uãƒ(Ü=ªxh  
  ¯”   
   ±uãƒ  *    6
 ô‹   œ ÁEðÿW  ö  ö*  &   ö  6
 @ Àe  Aœ ÁÅðÿW  *  L Àe 6 @@ õ5   œ Á Áv*  r   ÷	  †ÀÐû÷	  6 6

 6
 6
 6
  Éª°h«êv*  ˜  6
 6  6` C: `ôµ        $õµ  9  *  ¾ õµ 9 Ëµ Ãe  ‚œ ÂEðÿ—  
*  ä ÂÔÂ ÂÔÂ  ‚ Â`àµ: ƒ Ãe € *  
v:  6 6l  ö  ‡‡ ö  Ëµ Ëµ*  0 Ëµ ö  ƒm ¶m  Û  œ*  V ÂÅðÿ—   Â‚m 
Ü Á Òöe *  | € @m: €í @àfæÀ ‚ A m *  ¢f> õ> µm > ÷	  µ> ƒv` Ëµ rËµ  Þª¡E*  È@ oÁÁe   œ ÂÅðÿËÕ@ @@ ðµ  %*  î—  !œ œ l Â‚m v öà æ€ *   `ƒà÷	  ‚ € r ²à €ì 19æ  Ìªa	*  :—  
CÔÃ CÔÃ Ãe  Ã Ãe       uœ*  ` , BÂ`€ æ `ƒà÷	  Ñ• Q, 5Š,   Ìªa	*  †€6
 ‚ r ²à ƒÂ‚í µ : †5à: ‚*  ¬ €@m: À ‡ò¬  ò¬  öe  ¶m   Ò
 ƒm w *þ       M   OÀEÂ*  ±uéƒ    OÀEÂ   ¯”L  #© s@  Ìªa	@  *  È«Lq@      (  ±uéƒ(=ªhh  ¯”   
   ±uéƒ  *    € ö 9—-  	 Am: Áe w ,*  &  Am: uœ - 
CÜ Ã CÜ õ  Áe Áe *  L w è Ãe Ãe € BÂ`öà
  `ƒà÷	  p  &Ìªa	*  r  0à v 6,  ‚ƒ ì ö  ‚w ´ 0¬*  ˜   ‚ð‹ ÷	  †w è ƒ ‚       ‚m €   #© s*  ¾ ° 0à 
 m Á ƒ
 ƒm ÷	  A  &È«Lq*  ä : `Ñ• ô‹ Âe Q-  
œ œ *  
°Š  Âe Ã ÷	   ‚œ ÂÅðÿ—    Ìªa	*  0Q Q B C ÷	   ‡ õµ  9   Ìªa	*  V m m m v  †õ• 8 õ•$ , 4õ5 *  | õµ  9 õ• 8 õ• , %
 m Áe *  ¢‚
 ‚m Âå Âõ• 8 õ• , v  †õ•*  È 8 õ• , õ• 8 õ• , ôµ  õµ  9 $  îõÕ , 
õµ  , õ• 8 õÕ , ‡        ôM   ŸÀ…á*  ±uòƒ    ŸÀ…á   ¯”L  ô¨8^@  ©`T@  *  ©       @  "©ðs@  #©àe@  Ý©[}@  =ªx@  *  =ªh@  ÉªØh@  Ìªa	@  œ«ZX@  œ«w@  *  «êv@  È«Lq@  ¬ðs@  5¬ ™@      (  "  ±uòƒ(d©òƒhü=ªÐh  ¯”   
   ±uòƒ  *    Æå 5Š, Ã  ÃÁÁe  û	V Ã  ÃÁÁe  û	(  5¬ ™=ªx 
5¬ ™&=ªh  
*  & V € õ‹, w RÃ  ÃÁÁe  û	V €  œ  5¬ ™ô¨8^> 
 *  L  f, 5Š- ÷	  †–
w Dµ, ÷	~W­8    © *  r W­8  õµ , 	@4 A2 Ã ÷	  @0   "Ý©[}*  ˜ A. Ã ÷	  †w ü úÿt ÷	  †ÀÐû÷	  Ý©[} ÉªØh*  ¾   6 €        œ ÀÅ ÿf, 5Š- ÷	  µ, Ã    «êv ©`T(5¬ ™*  ä ÃÁÁe  û	V Z‡ 4
 ñÕ 
 Â ÷	  N‡  
#©àeè 
&œ«w *  
õŠ8 õ‹8 ¨Ã  ÃÁÁe  û	V †>€ õµ  5¬ ™"©ðs
Š*  0 , p.  p0 
 p2  p4 
 õµ  , *  V `B‚m  Cí: °m  ÷	  @   "È«Lq*  |Âe ÷	rƒ ƒm
 Ãe € , õÅ , õ*  ¢ L 5Š- € W-L  " fL fN Á4
*  È ÷	   Á÷	  4
 ° ˆ5
6 Æe õ•  œ«wœ«ZX*  î , fL V‡ ô‹ &õµ  , œ Â
´ *   t  t  õµ , t4        t2  *  :t0  t.  ô•   4
 u6 ñÕ 
 Â*  ` ÷	  §‡t6  Ã  ÃÁÁe  û	V †õ    œ«w5¬ ™¬ðsv
Š*  †%ô‹ Bm: ´œ  Âe Á aÃ ÷	    (Ìªa	*  ¬õ• ,  4
 ñÕ 
 u6 Â ÷	  †w äþ  "œ«w*  ÒÆe 4
 õ L 5Š- ¡ ‡ B@ ‚œ Â Â‡ ÷	*  ø ‡ Ñ• ô‹ Âe Q-  õµ  , *  Ñ• Ñ• € œ œ °Š Ã ÷	  C   $Ìªa	$  DÃe ö  Q Q C B ÷	  ‡    Ìªa	        M   NÀ…È*  ³uNq    NÀ…È   ¯”L      (  ³uNq($   Šª0 h  ¯”         
   ³uNq  (    &    °£ 5@ ¡ ±   õ–
‡        °M   yÀ¼*  ³uLy    yÀ¼   ¯”L  @ªW@  @ªY@  *  @ª—`@  Ìªa	@  È«Lq@      (  ³uLy(  ‹ªàeh  ¯”   
   ³uLy  *    
A: õµ , B‚
‚m ‚m ¶  ,†õµ *  & , 
õµ , B‚
‚m ‚m ¶  †B‚
‚m*  L  ‚m ¶  †õÕ@ , õÅÀ , 	õÕÀ *  r , õÕ€ , v €
  Cí: B: `õµ@ *  ˜ , 
‚
‚m ‚m Ã
ƒí ƒí  Áe ° 0à*  ¾  ÷	  ‚ r ²à õµ€ , <õµ@ , 8ƒ
   Ìªa	*  ä s:  € 
õµ , ƒ
ƒm ƒm       õµ , 	*  
õµ , ƒ
ƒm ƒm  Â``Áà Ãå *  0° 0à ÷	  € ÷	  ÷	  ÷	  w lõµ@ ,   È«Lq@ª—`@ªY@ªW*  V6õµ€ , 2€
  `õµ , ‚
‚m ‚m *  |õµ , 	õµ , ‚
‚m ‚m  Cí:  *  ¢`° 0à ¶ ÷	  ÷	  ÷	  ÷	  w ø €
   È«Lq@ª—`@ªY @ªW*  ÈA: `‚ Âe õµ , ÷	  €
 p 0à   @ª—`*  î€ Áe ƒ ƒí ÃB‚
‚m m 
*   Ãå ƒí Ã
÷	  p 0à l B‚m  Ìªa	*  : ‚í  Ãå ° 0à ÷	   Áe ÷	    È«Lq(@ªW*  `õµ@ ,       õµ€ , 
 Al ÷	  €
 p 0à  @ªY*  † Ã ƒm ƒm € l BÂ` Ãå *  ¬° 0à ÷	  ÷	  €
 ðµ  € ƒ   È«Lq@ªY*  Ò `Âà A m ÷	  u6 . u8 0 5  Ìªa	"  ø 6 õ• , €
 ‡ B@ ‚œ  Â Â‡        Ô M   RÀEÂ*  µu;;    RÀEÂ   ¯”L  Ìªa	@      (  "  µu;;(H Þª¡Eh È«Lqh  ¯”   
   µu;;  *    Ã‡ b˜Ã
ý‡ @@ &
°£
 †Ãe$ ƒcÃ’ÃE&  &  ÿÃ
Âe ‚c‚c‚Bm> ÷	  Ž
è–
‡   Ìªa	       xM   RÀEÂ*  µu,F    RÀEÂ   ¯”L  ô¨8^@  ©`T@        *  © @  Ý©[}@  ã©,#@  ÉªØh@  Ìªa	@  *  Óªz@  œ« @  œ«ZX@  œ«w@  «êv@  *  5¬ ™@      (  µu,F(6Óªø8h  ¯”   
   µu,F  *    C@ óµ  Àðþ÷	  f4 4
 4
 Ã ÷	  «êv*  &   †w ˜t &¦òµ  µ 2 µ 4 w   ã©,#*  L NC@ 5Š- ó¬  Ã  ÃÁÁe  û	V C@   5¬ ™ ô¨8^f 
q*  r Àœ ÀE ÿõ• 8 õ• - ÷	  K‡u6 . u8 0   © *  ˜ Ã  ÃÁÁe  û	V C@ Àœ ÀE ÿõ• 8 µŠ-   5¬ ™ô¨8^  
	*  ¾ ÷	  /‡C@ ó¬  	÷	T &‡u. 6 u0 8 Ã  © *  ä   ÃÁ      Áe  û	V C@ Àœ ÀE ÿf8 õ• 8 5Š  5¬ ™ô¨8^ê 
 *  
- ÷	  µ8 ‡õ• - ÷	 †w ²tC@ Âœ    © *  0Â Â@8 A6 Ã ÷	  d‡÷	Ô& 
÷	  €p  Ý©[}$©`T*  V-  C@ ó¬  W­-  ðœ  ðÕ  u*  |6 2 u8 4 ðœ  ðÕ  p6  p8 
 Ã*  ¢ õ‹1 Ã
õ‹0 Ã
Áe ÂÂå ‘Â. Ba*  È÷	  BÑ•ÿ C@ Ãœ ÃE ÿÃ
÷	  C@ ó‹	 
  Ìªa	Ìªa	*  î×¬	  †óµ 	 ÊÅ€ p °å ÷	è ‡ C@ *  Âœ Â Â@0 A. Ã ÷	  U‡÷	ì &C@ Àœ  Ý©[}*  : ÷	  €0Š ðÕ  p.  p0 
 ð  ÷	  ©      `T*  `” :‡‚r. T r0 V ò• 	 r2  r4  òÅ*  †  € ÷	   ñÕ 
 Â ÷	  †÷	`   Óªz œ« *  ¬C@ s2  s4  óÅ  ¡ –5µ4 ô   ô*  Ò   ‡  fL fN 
÷	  µN µL ± ç  œ« *  ø ñÕ 
 Â ÷	  ‡ && ÷	  ° ˆ± ‡   œ«wœ«ZX  úÿt ÷	  †ÀÐû÷	  ‡   ÉªØh«êv       Þ M   NÀ…á*  ¶uL    NÀ…á   ¯”L  Ý©[}@  ÉªØh@  *  «êv@      (  ¶uL(: òªàGh  ¯”   
   ¶uL  *    ðµ   
 ‚   
 ÷	  t †  "Ý©[}  & ± ‡ ÷	  †ÀÐû÷	        ‡   
ÉªØh«êv       M   QÀ¼*  ·uüd    QÀ¼   ¯”L   «_M@  ¤«@  *  ¤«V@  Î«a(@  5¬ ™@      (  ·uüd(J   («m$h  ¯”   
   ·uüd  *    ÷	  4
 ¡ ÁÁe  û	V † 
´  Á0   Î«a( «_M 
 (  & ÷	   õ   ÷	  Ã  Ãf V‡   ¤«¤«V5¬ ™       âM   NÀÅç*  ¸u<    NÀÅç   ¯”L  E©¶H@  l©,x@  *  Â©ðs@  Šª0 @  Éª°h@  Ìªa	@  œ«w@  *  «êv@  Ã«Kq@      (  ¸u<(¾ I«„–h  
  ¯”   
   ¸u<  *     4
 
÷	  u@ . õ•       2 &
Ž
€÷	    œ«w(Šª0 *  & ‡5 . p-<  ‡÷	  õµ 9 ÷	  ë–
A  E©¶H"l©,x*  L 4 Á
1-  1-  5
4  
÷	  Ã ÷	  "Šª0 *  r   #‡ ÷	  †ÀÐû÷	  u 4 5
4 ÷	  A  Â©ðsÉª°h«êv&Ã«Kq*  ˜ 6 `B:  ƒà`÷	  àp  ñÕ 
 ‡   Ìªa	       M   NÀ…È*  ¸u½`    NÀ…È   ¯”L  Šª0 @  O«•y@  *  «êv@      (  ¸u½`(X O«™wh  ¯”   
   ¸u½`  *    ôµ    
4  4  4  	  *  &  A 4Š 4 ÷	  †Àðþ÷	  5œ 3   Šª0 "«êv  L m u4       w     O«•y       úM   RÀEÂ*  ¸uÊ`    RÀEÂ   ¯”L  9©ë3@  E©ÆH@  *  ¾©Ó@  Â©¨%@  Â©,`@  Â©ðs@  Éª°h@  *  œ«w@  «êv@  ¼«8@  Ã«Kq@  5¬ ™@  *  Y¬T}@  Z¬àG@      (  ¸uÊ`(VO«•yh  
  ¯”   
   ¸uÊ`  *    õ L õ• 9 5Š- ô‹ 
ôµ@  Àðþ÷	    («êv*  & w ô‹ m 1-  1-
  5
< 5*  L  > 5
: ÷	  †ÀÐû÷	  ÷	   4
 
÷	    Éª°h«êv¼«8(œ«w*  r ‡  
  ÷	  ÷	  †È%`ú
C@ ó‹   9©ë3Â©¨%*  ˜ AÁ÷	  ®w C@ 5
< u3 < u4 >       õµ  Y¬T}*  ¾  9 #B: `”‚
ó‹ Áµ ÷	êmf*  ä ÁEüÿÁe Öµ B`Âe &€÷	  €õµ 9 X  E©ÆH*  
 4
 
÷	  L‡C@ ó‹ ÷	  ÷	  E†  œ«w"9©ë3&Â©ðs*  0È%`úÈ%Pþ<ôµ@  8õ• 8  4
 
*  V÷	  ,‡
÷	  "‡5
: 
÷	 ÷	 #÷	  5Š8   œ«wÂ©,`$9©ë3*  |5
< u3 < u4 > ÃU €÷	  B@ †–
õ‹-   ¾©Ó*  ¢ò‹ "`ú÷	  È†w ‡ 5
< Ãpùõ‹- J  Z¬àG*  ÈA@ B: `Ã°ýõµ 9 ?Ã@úô‹ ôµ@  *  îñµ  õµ 9 .ñ‹ 2ô‹ õµ 9 *  ”‚
÷	¬#ôµ@  ÷	  ÷	      Fÿ5
< Ã°ýõµ   Ã«Kq*  :9 B: `Êµ î
ÃPþB: `Êµ w P*  `w 8÷	  ‚7†ô‹ õµ 9 Ž †µ6 ”  
Ã«Kq*  †÷	>t-<  µ
< òôµ@  ]ô‹ õÿÿ< *  ¬Ž &†µ
< ÷	t ¦4  ÷	  f< ÷	  µ<   9©ë3$Â©ðs*  Ò ‚O†4
 t È%Pþ–%j÷	  †ÀÐû÷	   Éª°h*  ø  Ø‚€àµ: ÷	  5Š8 5
< u3 < u4 >   «êv9©ë3*  ÃU €÷	  †"`úI ÷	   ÷	  âÃ  
¾©ÓY¬T}$Éª°h*  D°ýõµ 9 17¢ õÿÿ< ©B6 ÷	Ê & ÷	    (9©ë3*  jf< ÷	  µ< 4
 –%u . u 0 fL 
  
Â©      ðs*  ÷	  ƒõL  ÷	  †ÀÐû÷	  À     œ«wÉª°h «êv&5¬ ™*  ¶   È0
 fL V‡ ÁEüÿÁe ¦”&
&
ƒ“”Á
*  Üýƒ´¥ ô  t  ‡ A@ B: ‚cƒ”µ”*  2 Ãµ ÃEüÿÂ`Âe 
ƒÔÃ ƒÔÃ ¦Î`&
Nœ *  (‚eH ƒ”æ´” &
&
ÃEüÿÃe ‘”Ã
ý´ ´  N Öµ$ ‡        ÎM   OÀEÛ*  ¸uœw    OÀEÛ   ¯”L  E©ÈH@  Šª0 @  *  Þª¡E@      (  ¸uœw(S«`"h  ¯”   
   ¸uœw  *    ôµ@  ôÅ  ôÅD    Ãpýðµ  nÃ*  & üôµ   hu > u < Ãàùœ ÂÅðÿ—  *  L * A-< S‚ A-< MôÕ         
÷	    (Šª0 *  r 
Ü Á ÁÁå Â¥ Áå A-< 8‚p-<  4‡*  ˜ õ¥   ôµ  
  ÷	  ÃÀùõµ 9 "ôÕ  E©ÈH*  ¾    ÷	  ôÅ  5Š9 5
4 4
 4
 4
  Þª¡E(  ä  ôµ  4
 4Š  4
 ‡ õ ± ‡        ÈM   RÀÅç*  ¸u`†    RÀÅç   ¯”L  E©¶H@  ¾©Ó@  *  À©h	@  ;ªà8@  =ªÐ@  Šª0 @  Óªø8@  *  I«„–@  S«`"@  œ« @  œ«w@  « w@  *  Ã«Kq@  ¬À@  5¬ ™@      (  ¸u`†(\  U«-‚h  ¯”   
   ¸u`†  *    5
4 ÷	  †w ²Á
÷	  "‡Ã  ÃÁÁe  !  
S«`"œ«w 5¬       ™(À©h	" 
(*  & û	V †, Ðü	Ã  ÃÁÁe  û	V ê†÷	¤  5¬ ™Óªø8< 
 *  L Ã  ÃÁÁe  û	V †w Ff6 5
6 õµ ,   5¬ ™=ªÐT 
 *  r Ã  ÃÁÁe  û	V †5 ôÕ@  µ4 @@  œ  5¬ ™¬Àz 
 *  ˜  €Š÷	  ?‡p-<  :‡÷	  õµ 9 4Ã  ÃÁ  
Šª0 E©¶H$5¬ ™*  ¾ Áe  û	V †, Ðü	Ã  ÃÁÁe  û	V ê†R"  À©h	¾ 
5¬ ™ Óªø8Ø 
*  ä ÷	Ã  ÃÁÁe  û	V G‡õµ , Ã  ÃÁ  
5¬ ™;ªà8ð 
$5¬ ™ *  
Áe  û	V †5 ôÕ@  ¹5 
 5  5   ¬À

"*  0 ôµ        4 
 4  4  4  4 *  V 4  õ õ  ôµ  õ  ôµ@ *  | õ  !Ã  ÃÀ  5 5  ÁÁe    5¬ ™(I«„–ž
*  ¢û	V uL  uN  5

 5
 5
 ôÅ  4Š*  È  
÷	  4
 A4 
÷	  ôÅ@  w   œ«w œ« *  î  u: 6 õµ 9 .õµ 9 *A@ ñµ  C  « w*  : `Ëµ Ã  ÃÀ  Èàý–
A@ ñ‹ ¸§  5¬ ™&  :ôÕ  Ã ÷	  Ã ÷	  í‡õµ 9 ó‡   Ã«Kq¾©Ó       ÆM   OÀÕ*  ºu,`    OÀÕ   ¯”L  ã©,#@  Ìªa	@  *  Óªz@  œ« @  œ«ZX@  œ«w      @   «x@  "      (  ºu,`(~Ÿ«à`h  ¯”   
   ºu,`  *    € °Š ðÕ  p6  p8 
 Áe  Âe*  &  ÷	  Ãå Ñ÷	  ‚
 C@ Ãœ ÃE ÿæ   «xÌªa	*  L ‚l Âà÷	  BÂe. ÷	  Ãå Ñ÷	  ƒ  Ìªa	 «x$Ìªa	*  r  ‚ ‚m ÷	  € p 0à  4
 Â  Ìªa	*  ˜  &œ ÷	Ð †
w ˜ õ• , Ã ÷	  †
  "ã©,#*  ¾ r6  r8  ²•	 ÷	  AF ñÕ 
 Â ÷	    Óªz(œ« *  ä †"`ú&& ÷	  ° ˆ 4
 Â f  œ«ZX*  
L fN ÷	^ µN µL 5
6 ± ‡ C@ s6  s*  08  €      
 ðÅ  ¡ ‡ 5
6  4
 fL fN *  VÁ
÷	  µN µL õ• , ± ‡ ñÕ 
 ÷	    œ«w(œ«w  |‡        >M   NÀÅÎ*  ºuãe    NÀÅÎ   ¯”L  Šª0 @  Éª°h@  *  Ã«Kq@      (  ºuãe(Ž  «ƒKh  ¯”   
   ºuãe  *    5
 ô‹ = 7ñµ 
 3 
÷	  ÷	  -‡õ   Šª0 $Éª°h*  &  : p-:  &†÷	  B6 `”ÁEüÿÁe ‚
¦”&
  Ã«Kq*  L &
ƒ“”Á
ýƒ´¥ ô  t  u6 :    r u6 . ¡ ‡ Öõ0ú õ€þ ± ‡        ŠM   RÀÅÎ*  ºuçe    RÀÅÎ   ¯”L  ô¨@  9© @  *  C©z@  Éª°h@  œ« @        œ«ZX@  «êv@  "      (  ºuçe(n «_Mh  ¯”   
   ºuçe  *    Á ÷	]‡´œf  ´œg  õµ   ÷	Ú P‡¡ *  & ‡ —,t  õ0ù F÷	t C‡  f÷	´ <‡*  L ÷	º 8‡÷	X 5‡  ‚ Bm< õëõµ  *  r ô•    õµ  ðµ  ´Š 4¬ *  ˜  ƒ4œ    ëô ¡ ‡ ¦Á0 ÷	  †õ  $ô¨*  ¾ pû ‚± ‡ 0  4 58 ‚°œ
   °œ  *  ä Âe Àe Á Á
ý‚¡ ‡ A> 
÷	  †  $œ« *  
‡  
Â Ã f÷	  ƒúÿ†È%`úÁï5  9© *  0 Á÷	  õú ÷	  †ÀÐû÷	  u> 5  œ«ZXÉª°h"      «êv  V< ÷	  †õ û ± ‡ ¡ ‡   C©z       ÖM   wÀÅç*  »u[    wÀÅç   ¯”L  E©ÆH@  E©ÇH@  *  E©ÈH@  E©ÉH@  «êv@      (  »u[(Ì  ¼«8h  ¯”   
   »u[  *    5Š9 &&
&l õ: €õU €, Ã õ: `*  & Î ‡õÕ 9 w ˆCm: € Î ‡õÕ" 9 w *  L nõ: 5à: õ< ð‹ Àðþ÷	  s­>     «êv*  r 5Š9 w BõÕ 9 ö  Âœ  ÂEüÿð‹ ‚
*  ˜ Âe ¶` ð‹ DËµ Ëµ Ëµ Ãe *  ¾ ƒm õ< ¸»B@ ò‹ , œ ÁÅøÿ*  ä W   Â‚m 
Ü Á Òöe  Â‚m*        
 v` õ< Nôµ  €÷	  €÷	  8  E©ÉH&E©ÇH*  0A@ Aœ ÁE ÿð‹ Â‚m v` 
Ëµ *  VÂ’ÂÅüÿÂe ¶ öe  Â`Âe f
ÔÁ ÔÁ *  |v` õ< ôµ  €÷	  €÷	  õµ  E©ÈH&E©ÆH*  ¢ 9 	õ5 €, ƒm w €þ€ Æe õE €  È, ‡        
M   NÀ…á*  »ulE    NÀ…á   ¯”L  E©¶H@  l©,x@  *  Ý©[}@  Šª0 @  Éª°h@  Þª¡E@  œ«w@  *  «êv@      (  »ulE(ê Ã«ôh  ¯”   
   »ulE  *     ÷	  †ÀÐû÷	  C. `Ãe  ¦œ ÎE  
Éª°h«êv*  & ðÿ—¥ µ < õ”      < õ”= õ> A@ q-<  *  L L‡÷	  õµ 9 F¡ Þ	 A m f÷	    E©¶H(Þª¡E*  r µ> 5
< 5œ < ôÅ   4
 u4 Â ÷	*  ˜   †5
4 "÷	   
÷	  œ Â ÂC4 5
4 À  œ«wl©,xŠª0 *  ¾  Á Ã ÷	  ‡úÿt ÷	  †ÀÐû÷	    Ý©[}Éª°h(«êv
  ä ‡ ± ‡        M   NÀÕ*  »u•G    NÀÕ   ¯”L      (  »u•G(ˆ   Ã«Kqh  ¯”   
   »u•G  *    æC: õ6 `Â”ƒ
A@ Âµ ÂEüÿÂe ñ‹ *  & Î ñÕ 
 A@ Â
Î“ŠËŠ×¤ÿÿ*  L Âôƒ`ñ‹  ¦œ ÎEðÿ—¥ ƒl   r 
ÂÔ      Â ÂÔÂ ƒ`àõ: –
‡        Œ M   PÀ…á*  »ufs    PÀ…á   ¯”L  ¹«WŒ@      (    »ufs( Ê«ðsh  ¯”   
   »ufs      w	  õÕ 9 ± ‡   ¹«WŒ       .M   vÀ¼*  »uLy    vÀ¼   ¯”L  ©Š@  ©G@  *  ÉªØh@  Ìªa	@  •«Ò@  «êv@      (    »uLy( Ë«àeh  ¯”   
   »uLy  *    tF   ÷	  †ÀÐû÷	  6 ÷	  € ƒ  ÉªØh«êv"•«Ò*  &  ðµ  ðÅ  óÕ  3  3
 
 õµ  *  L , B: ‚m Á Á`6 
 ví: 
 p:  ƒ*  r 
 ÷	  € p 0à õµ  , 1ÁÁe ¶          Ìªa	*  ˜ ÷	  € B: ` Cí: p:  Ã€   ©G*  ¾ Âe &@@ ðµ  Êµ õÕ , €÷	  €  &Ìªa	*  ä  p 0à õµ  , u-6 : 
 Am: ¶   
 ÷	   Am6 ÷	  ‡   ©G©Š       ¦M   NÀ…á*  ½uø8    NÀ…á   ¯”L  ¾©Ó@  Â©,`@  *  3ª(#@  œ« @  œ«w@  5¬ ™@  Z¬àG@  "      (  ½uø8(ž ¬Àh  ¯”   
   ½uø8  *    æ Ã ÷	  	‡µ“8 5
: Ã ÷	  †"`ú  Â©,` ¾©Ó*  & ÷	  ì†Ã  Ãõµ 9 õpùL 5
N ÁÁe  Z¬àG5¬ ™*  L   û	V ‡õµ , Ž
Ò      –
Ã  ÃÀ  & &  3ª(#J 
5¬ ™ *  r A6 
÷	  5
6  
÷	  4
 ˆ°   œ« œ«w
  ˜ &V‡        RM   UÀ¼*  ½u¡d    UÀ¼   ¯”L  E©¶H@  E©ÉH@  *  ¾©Ó@  À©h	@  ;ªà8@  =ªÐ@  Šª0 @  *  Éª°h@  Óªø8@  I«„–@  œ« @  œ«w@  *  «êv@  « w@  Ã«ô@  Ã«Kq@  ¬À@  *  ¬"@  5¬ ™@      (  ½u¡d(|¬-h  
  ¯”   
   ½u¡d  *    ÷	  †w à÷	  †ÀÐû÷	  u4 t @m: Àe  ¬"Éª°h«êv*  &  ÷	ò&@@ ðµ  u-,  õàù  €*  L ÷	  õµ 9       5
4 w b
&
÷	<†–
w RÁ  E©ÉH*  r  
÷	*	†–
uL  uN  w Z–
5
,  
÷	*  ˜   5Š9 Ã  ÃÁÁe  û	V †w f6 5
6 õµ  Šª0 5¬ ™=ªÐ¦ 
*  ¾  , Ã  ÃÁÁe  û	V †5 ôÕ@  µ4   5¬ ™¬ÀÌ 
*  ä u < u >   ‚ `f 
@ÔfÀ*  
E÷	  \‡ôÕ  p-<  :‡÷	  õµ 9 4Ã    Šª0 E©¶H(5¬ ™*  0ÃÁÁe  û	V †, Ðü	Ã  ÃÁÁe  û	V "  
À©h	4
5¬ ™$Óªø8N
*  Vê†8÷	ä Ã  ÃÁÁe  û	V -‡õµ , Ã    5¬ ™;ªà8f
(5¬ ™*  |ÃÁÁe  û	V †5 ôÕ      @  µõ õ    
¬À€
H*  ¢ôµ  õ  ôµ@  õ  –
õÐþ *  È–
uL  uN  Ã  ÃÁÁe  û	V –
A4   5¬ ™I«„–à
*  î
t  4
 5
4 
÷	   4
 
÷	    œ« (œ«w*  ôÅ@  w    fœ ÎEðÿ—¥ 5”, 5”-   « w*  :u , ‡ u: 6 õµ 9 )õµ 9 %A@ ñµ *  ` Ã  ÃÀ  Èàý–
A@ ñ‹ ¦–
³ôÕ   
5¬ ™*  † Ã ÷	  Ã ÷	  ì‡õµ 9 ó‡ fõ•  2   Ã«Kq¾©Ó*  ¬  l fu < u > A4 ¶
 € *  Ò÷	  †–%¡ ‡ ôÕ  p-,  †p-<  †Bp-        Šª0 *  ø<  ‡€ ÷	  õµ 9 6A@ ñµ  õÐþ  E©ÉH*  L –%± ‡ )ö @@ œ Nt4  u*  D: . Ã  ÃÁÁe  û	V ‡Þ	5 4 Þ‡u. :   
5¬ ™Ã«ôP

  j@m: Àe ÷	¨þ6 Ÿ        M   TÀ¼*  ½ufs    TÀ¼   ¯”L  Â©¨%@  ³ª4}@  *  Éª°h@  ÉªØh@  œ«w@  «êv@  ¼«8@  *  Y¬T}@      (  ½ufs(\¬ðsh  ¯”   
   ½ufs  *     Á‡ ÷	  †ÀÐû÷	  &4
 , |†  ÉªØh«êv*  &  `ƒ

ÂÔÁÀÃ ÷	  8†"`ú1Á)B   Â©¨%*  L òµ   ñµ 
 Àðþ÷	  1       ÷	  ± t  «êv"Éª°h*  r  5
: ÷	   4
 õµ 9 ñÕ 
 ÷	    ¼«8(Y¬T}*  ˜ ÷	  €4
 ¿
÷	  -õµ 9  õ‚  ³ª4}œ«w*  ¾ ‚l A: `Áe ‘”ô‹ õµ , Â2 Ba*  ä Â. BaÃ ‘”Ã
ý ñÕ 
 
÷	  †õU  $œ«w*  
 €, 4
 €ðe  –
 
÷	  4
 õ5 €   œ«w*  0, õE €, õ úL õ L u < u > f
  VL V‡        vM   PÀEÂ*  ½uœw    PÀEÂ   ¯”L  Šª0 @   «ƒK@  "      (  ½uœw(È ¬"h  ¯”   
   ½uœw  *    5
4 ôÅ\  ÷	  †‡   Ãpýðµ        O    «ƒK*  & l œ ÃÅ ÿBŠÃ
Ã‘”Ã
ýÃüôµ   *  L 9u > u < Ãàùœ ÂÅðÿÂ¥ * *  r A-< $‚ A-< ôÕ   
÷	  
Ü Á    Šª0 *  ˜ ÁÁå Â¥ Áå A-< 	‚p-<  ‡ 4
   ¾ ‡ õ ± ‡        @M   NÀEÛ*  ¿uL    NÀEÛ   ¯”L  Ý©[}@  ³ª4}@  *  œ«w@  Y¬T}@      (  ¿uL(t Z¬àGh  
  ¯”   
   ¿uL  *     f f f  4
 
÷	  	†ô  $œ«w*  &  Æe 4
 ± ‡ ô ÷	  ô €‚  ³ª4}*  L Ã ÷	  úÿ‡÷	  "`úÁ÷	  4
         
Ý©[}œ«w$Y¬T}  r ‡        	M   zÀEÛ*  ¿uçe    zÀEÛ   ¯”L  ô¨"@  ô¨@  *  9© @   © }@  Éª°h@  Óªz@  œ« @  *  œ«ZX@  «êv@  ¹«WŒ@  5¬ ™@      (    ¿uçe(¤h¬_Mh  ¯”   
   ¿uçe  *    5
: 5
< 5
> ÷	  †õ þ o@ È¥    ô¨"*  &  ú¢ 
÷	¾a‡÷	Ö^‡  ó2
  2
 *  L õµ  ô•    õµ  ðµ  ´Š*  r  4¬  ƒ4œ    ëô ÷	b3‡t:  *  ˜ @ ¢   ùÀ5ô•  €Á  
Á
*  ¾ ý2(  @: 2 ²
 2 2   2à 2 *  ä  ²       õðþ õ ÿ ± ‡ A> €÷	  ñÕ   $Óªz*  

 Â ÷	  R‡4u< 8 õe 8 f< ¢ '&  œ« *  0u-< 8 ‡÷	¶†–5Ûu< 8 õe 8 v<  €*  VB< ÷	d †uL  uN  èõe@ < €  Ö*  |‚¾Á 
÷	¶†‡ ò t 2 f 2 g €*  ¢÷	  A> ñÕ 
 Â ÷	  †w f¡ ‡ &¦2œ  Óªzœ« *  È  2œ  2  2œ  2œ	  2 $ 2 *  î, 2 . 2 0 ð‹ 1p
 
 p  2  *  2
  2
 ò   Ã
ƒƒƒƒ
2  *  :ò` ²  ò
 Ã  Ãóµ ( 2 ( 2   5¬ ™*  `* Dæ  æ  æ  æ  &
 & ð%         ð%*  †  
 Ã  Ãóµ ( 6  6 
 6    5¬ ™*  ¬6  ÷	  †Æe ± ‡ ‚ € ² ² ²   © }*  Ò ² ²* ²( ²  ²  –5¡ ‡ &Á0 *  ø÷	  †õpû €± ‡ 0  4 €÷	†  ô¨*  ‡ ±  w	  &
&
&
&fÂe CÃe Àe" Áe  ¹«WŒ*  D$ ”Ä…S‘av! ƒv 6a ¶
 ”ï*  j€1œ  ± ±• ±•
 „ … ñ‹ õ*  0ü 
ô* 	t, * ƒõû ± ‡ 1œ
  1œ*  ¶  1œ  1œ  1œ  ñÕ  
BÜ  Â ƒ*  ÜÂ1  ± C, †ñ 
BÜ Â ƒÂ*  1  ± C, †ñ       ¡ ‡ fæ  æ  *  (æ  A É¥ A ùÁ( Â Ý( Æe*  N \
4¬  ‡Ãàü4¬  ‡Ã ü4¬  ‡*  tÃ`þÃ5 õ –5–5± ‡ AÉ¥ 1¬ *  š vœ  1¬  vœ  1¬  vœ   *  ÀA äð‹ 
¶-  0œ  ¶  ö 
*  æ¶-  Ã0ÿu Ä
‚•Â ‚U‚Uõ  *  ¡ ‡ &fA: 
u: 
÷	†õÿÿ< €*  2Ã 
Ã
ý
B< ÷	ª †€± ‡ € 2œ*  X  2œ  2œ  €2œ  
 2œ  Àe Áe*  ~ ¦Â Â
ý€  €Àe4 Â  P”Â
*  ¤ý‚A: 2
 €Àef 5 8 ‚W-< ÿÿ	r  ²
*  Ê  2
       5
< 
r  5< @í8 Àe˜2 €¡ *  ð‡ A> ÷	  †ÀÐû÷	  ÷	  ñU 
 Â W,   Éª°h«êvÓªz*   Â ÷	  †5 ÷	  µ
: A: Ã ÷	  œ« œ«ZX*  < ‡  
Â ÃU æ÷	  ƒúÿ†5 Á÷	  9© *  b  õ ù ± ‡ ÷	  †ÀÐû÷	  u> 5< 58   œ«ZXÉª°h«êv   ˆõe˜8 Ã5 Ã 
Ã
ý¡ ‡   õÿÿ< €*  2Ã 
Ã
ý
B< ÷	ª †€± ‡ € 2œ*  X  2œ  2œ  €2œ  
 2œ  Àe Áe*  ~ ¦Â Â
ý€  €Àe4 Â  P”Â
*  ¤ý‚A: 2
 €Àef 5 8 ‚W-< ÿÿ	r  ²
*  Ê  2
           ›rÖ(^› 8$         ?uÖd    OÀÅÎ   ¯”L  p©Åœ@  Ã©i"@   .ªK@  .ªþK@  («v"@  («X@  R«°'@   « w@  ¹«]Œ@      (T «E`h ¯”                   ÷	  ÷	  †‡ ÂÂeìÿ
û	J ‡ÂÂeàÿ R«°'(«Xp©Åœ¹«]ŒÃ©i" & 
û	J ‡ÂÂe  ÷	  	‡ÂÂeÈÿ
5
> û	J † («v"0 
.ªþK L w   w    .ªK
« w  3uIq    OÀ…È   ¯”L  J©v"@  Ã©i"@   .ªK@  .ªþK@  R«³'@  « w@  ¹«]Œ@       (D «•h ¯”               ÷	  ÷	  †‡ õ¥@  †õ0û fÂÂeÞÿ R«³'¹«]ŒÃ©i" & 
û	J ‡ÂÂe  ÷	        †w   w    J©v"2 
.ªþK.ªK « w  3ukM    NÀEÛ   ¯”L  D©ö`@  Ã©`"@   ¹«]Œ@      ( «¯h  ¯”             ÷	  ÷	  †‡ ÂÂe  { J  ¹«]Œ
Ã©`"D©ö` 
  3uþ_    NÀÅÎ   ¯”L  G©¶Z@  £«i"@   ¹«]Œ@      ( «&h  ¯”             ÷	  ÷	  †‡ ÂÂe  { J  ¹«]Œ
£«i"G©¶Z 
  4u;;    NÀEÛ   ¯”L  i©öy@  £«`"@   ¹«]Œ@      ( «{h  ¯”             ÷	  ÷	  †‡ æÎe  ‚{ J  ¹«]Œ
£«`"i©öy 
  7u`"    OÀ¼   ¯”L  Ý©6€@  £«`      "@   ¹«]Œ@      ( «œ,h  ¯”             ÷	  ÷	  †‡ ÂÂe  { J  ¹«]Œ
£«`"Ý©6€ 
  @u`†    NÀÕ   ¯”L  U«6€@  £«`"@   ¹«]Œ@      ( «\gh  ¯”             ÷	  ÷	  †‡ ÂÂe  { J  ¹«]Œ
£«`"U«6€ 
  6ut:    NÀÕ   ¯”L  ¹©¶Z@  £«`"@   ¹«]Œ@      ( «ö&h  ¯”             ÷	  ÷	  †‡ ÂÂe  { J  ¹«]Œ
£«`"¹©¶Z 
  Eu¡d    NÀÕ   ¯”L  £«`"@  ¹«]Œ@   ¬6@      ( «Ä…h  ¯”             ÷	  ÷	  †‡ ÂÂe  { J  ¹«      ]Œ
£«`"¬6 
  4u%!    NÀÕ   ¯”L  e©6N@  £«`"@   ¹«]Œ@      ( «Ôh  ¯”             ÷	  ÷	  †‡ ÂÂe  { J  ¹«]Œ
£«`"e©6N 
  Bu    NÀ…á   ¯”L  •«õ
@  £«`"@   ¹«]Œ@  j¬õ<@      (* «Iqh «™’h  ¯”                 ÷	  &
÷	  æ ÷	  †–
‡ ÂÂeàÿ •«õ
j¬õ<
¹«]Œ¹«]Œ£«`" & { J   5u»p    NÀ…È   ¯”L  š©õ
@  Ã©i"@   .ªK@  .ªþK@  R«°'@  ¹«]Œ@      (2  «"h ¯”                 ÷	  ÷	  †‡ æÂÂeìÿ
û	J ƒ‡ÂÂe       R«°'š©õ

¹«]ŒÃ©i" & Þÿ
÷	  w    
.ªþK.ªK  5u%™    NÀEÂ   ¯”L   ©µ@  Ã©`"@   ¹«]Œ@      ( «#h ¯”               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   ©µ¹«]ŒÃ©`"  4uH;    NÀÕ   ¯”L  p©Åœ@  Ã©`"@   « w@  ¹«]Œ@      (" «h ¯”               ÷	  ÷	  †‡ ÂÂeðÿ
µ> û	J w    p©Åœ¹«]ŒÃ©`"$« w  9uüX    OÀEÂ   ¯”L  «)x@  «¶{@   «¸{@  «º{@  «¼{@  «¾{@  ¹«´‰@   5¬ ™@  
­XT@      (Š «v:h  «6xh  ¯”                   ÷	  Ã  Ãóµ ( ¡ ‡ ÷	  Ã  ÃÄó*  ¹«´‰
5¬ ™¹«´‰ 5¬ ™ & ± ‡ À  Á  ÷	< Á  ÷	4 Á  ÷	, Á   «¶{«¸{«º{ «¼{(«¾{ L ÷	$ À  Á  ÷	 3
$ ó& óe" & ó ( ¡  

­XT«)x r ‡ 
Bà4þÿ
ˆ
@‡   Gu¼    NÀèã   ¯”L  «êv@  ¹«]Œ@   5¬ ™@      (f «ñh  ¯”             ÷	  E …)‡Å'Í¥ $Ã  Ãó5 ( À ¹«]Œ5¬ ™ & pÿ÷	  D „‡Ä£	 ôµ  æ  æ «êv L )ÿˆæ  æÿˆè‡ Ààú÷	   «êv  Buá"    NÀÅÎ   ¯”L  £«`"@  §«õ<@   ¹«]Œ@            ( «!th ¯”               ÷	  ÷	  †‡ ÂÂeðÿ
{ J  §«õ<¹«]Œ£«`"  DuÖs    NÀEÂ   ¯”L  £«`"@  ¹«]Œ@   ò«ˆ@      ( «åh ¯”               ÷	  ÷	  †‡ ÂÂeðÿ
{ J  ò«ˆ¹«]Œ£«`"  6u"    NÀÅç   ¯”L  ¼©õ‡@  Â©õ#@   «µ@  •«µO@  £«`"@  ¹«]Œ@  È«õ
@       (L «u'h «U(h «T[h0 «Tqh
  «Ayh& ¯”                       ÷	  &
÷	 •«µOÂ©õ#¼©õ‡
È«õ
«µ¹«]Œ    æ ÷	  æ 	÷	  æ ÷	  æ ÷	 ¹«]Œ¹«]Œ¹«]Œ"¹«]Œ        :   †‡ ÂÂe¼ÿ{ J  £«`"            dl^› 8$        ; RMS-11 BACKUP BUILD FILE	.ROOT	ROOT-SETBAC-MAIN-RMSROT-CER-*(BRNCHA,BRNCHB),*COTRE1BRNCHA:	.FCTR	UTLDIS-UTLBACSETBAC:	.FCTR	RMSUTL/LB:UTL:UTLBAC:BACORG:DYNTAB-WCROTCER:	.FCTR	RMSUTL/LB:$CER-CER1CER1:	.FCTR	[1,1]RMSLIB/LB:R0PUT:R0WAIT; MUST BE IN ROOT IF WILD CARDS USEDWCROT:	.FCTR	[1,1]SYSLIB/LB:.ODCVT@RMSODL	.NAME	COTREECOTRE1:	.FCTR	COTREE-*(RMSOVR,PARSER,MSG); BACKUP UTILITIES ODL; BACKUP	.NAME	BACUTLBAC:	.FCTR	BAC-BACBAS-BRBASE-*(BACOC,BACIOL,BACCM,BHP)BACBAS:	.FCTR	RMSUTL/LB:BACCTL-SYSLBBACOC:	.FCTR	      RMSUTL/LB:BACOC-BRCRE-BROPN-BROC-SYSLOC-UTLWCBACIOL:	.FCTR	BACIO-*(BCATR,BCIOE,BCSUM)BACIO:	.FCTR	RMSUTL/LB:BACIOC:BACIOL:BRNVBN-BRIOC-SYSLIOBCATR:	.FCTR	RMSUTL/LB:BACATR-BCIORBCIOR:	.FCTR	RMSUTL/LB:BRSWBF:BRNVUC:BRCALNBCIOE:	.FCTR	RMSUTL/LB:BRQTEG:BRFIOE-BRSUSBCSUM:	.FCTR	RMSUTL/LB:BACSUM:BRSUMM:BRCVBNBACCM:	.FCTR	RMSUTL/LB:BACPO-BRCM-SYSLCMBHP:	.FCTR	RMSUTL/LB:BHELP-SYSLOC; BACKUP AND RESTORE COMMON FCTRBROPN:	.FCTR	RMSUTL/LB:BRDCMPBRCRE:	.FCTR	RMSUTL/LB:BRMRG:BRCCREUTLWC:	.FCTR	RMSUTL/LB:UTLWCT:UTLWCA:UT      LWCF:BRWCBROC:	.FCTR	RMSUTL/LB:BRCNCT:BRERFP:BRCSUB:BRCPRM-BROC1BROC1:	.FCTR	RMSUTL/LB:BRATTCH:BRNUICBRCM:	.FCTR	RMSUTL/LB:BRPID:BRCNCT:BROUTP:BRABRT-BRCMABRCMA:	.FCTR	RMSUTL/LB:BRCRSM-BRCMBBRCMB:	.FCTR	RMSUTL/LB:BRFTLE:BRSERH:BRCLAL:BRSTVE:BRERFPBRBASE:	.FCTR	RMSUTL/LB:BRCTL:BRDATA:BRXAB:BRERR:BRBFLS-BRBS1BRBS1:	.FCTR	RMSUTL/LB:BRNTRY:BRFNER:BRERCLBRIOC:	.FCTR	RMSUTL/LB:BRONER:BRIO:BRCRW:BRRWT:BRERFPBRSUS:	.FCTR	RMSUTL/LB:BRSSIN:BRCALN:BRCALV:BRCVBN:BRCALH; PULL RMS TRANSFER ROUTINES EXPLICITLY OUT OF SYSL      IBSYSLB:	.FCTR	[1,1]RMSLIB/LB:R0CLOS:R0OPENSYSLOC:	.FCTR	[1,1]RMSLIB/LB:R0CONN:R0CREASYSLIO:	.FCTR	[1,1]RMSLIB/LB:R0RWBL:R0REWI:R0FBDB:R0EXTESYSLCM:	.FCTR	[1,1]RMSLIB/LB:R0CONN:R0CREA; UTILITY ROOT ODL	.NAME	ROOTMAIN:	.FCTR	RMSUTL/LB:CRSST-MAIN1MAIN1:	.FCTR	RMSUTL/LB:UTLCTL:UTLTAB:SNDCP:LUNCHK:INPBUF; RMS-11 UTILITY DISPATCH ODL	.NAME	DISPATUTLDIS:	.FCTR	DISPAT-UTLDP-$UDYN0-$UDYN1UTLDP:	.FCTR	RMSUTL/LB:DISPAT	.PSECT	$UDYN0,D,GBL	.PSECT	$UDYN1,D,GBL; RMS-11 UTILITIES PARSER BUILD FILE	.NAME	PRSCTLPARSER:	.FC      TR	PRSCTL-RMSUTL/LB:.TPARS-PRSMN	.PSECT	$PRS01,RW,D,GBLPRSMN:	.FCTR	$PRS01-PRS1B-*(PRS1C,PRS1D,PRS1E)PRS1B:	.FCTR	RMSUTL/LB:UPRSVR:UTLUST:UTLPT:SWTABL-PRS1APRS1A:	.FCTR	RMSUTL/LB:UTLMPK:UTLAFP:UTLACL:UTLMIDPRS1C:	.FCTR	RMSUTL/LB:UTLACPRS1D:	.FCTR	RMSUTL/LB:UTLASWPRS1E:	.FCTR	RMSUTL/LB:UTLADT-PRSB1PRSB1:	.FCTR	RMSUTL/LB:$CATDT:$GDTIM:$MULQ:$MONTB:MULUNS-PRSB1APRSB1A:	.FCTR	RMSUTL/LB:$CDTTA:$DIVQ:DIVD; RMS-11 UTILITY GCML ODL	.NAME	GCMLFSBRNCHB:	.FCTR	GCMLFS-RMSGCMRMSGCM:	.FCTR	[1,1]RMSLIB/LB:R0CLOS:R0CONN:R0      FIND:R0GET:R0OPEN:R0GCML; FORCE EDTMG INTO COTREE	.NAME	MESSAGMSG:	.FCTR	MESSAG-RMSUTL/LB:EDTMG-*(CERLOD,CRSOVL)	.NAME	CERMSGCERLOD:	.FCTR	CERMSG-RMSUTL/LB:$CERMG-*(C1,C2,C3,C4,C5,C6,C7)EDMSG:	.FCTR	[1,1]SYSLIB/LB:EDMSG	.NAME	CERLD1,GBLC1:	.FCTR	CERLD1-RMSUTL/LB:$CERM1	.NAME	CERLD2,GBLC2:	.FCTR	CERLD2-RMSUTL/LB:$CERM2	.NAME	CERLD3,GBLC3:	.FCTR	CERLD3-RMSUTL/LB:$CERM3	.NAME	CERLD4,GBLC4:	.FCTR	CERLD4-RMSUTL/LB:$CERM4	.NAME	CERLD5,GBLC5:	.FCTR	CERLD5-RMSUTL/LB:$CERM5	.NAME	CERLD6,GBLC6:	.FCTR	CERLD6-RMSUTL/LB   À   :$CERM6	.NAME	CERLD7,GBLC7:	.FCTR	CERLD7-RMSUTL/LB:$CERM7	.NAME	CRASH		CRSOVL:	.FCTR	CRASH-RMSUTL/LB:$CRASH-*(CR1,CR2)CR1:	.FCTR	RMSUTL/LB:$CRSH2:CDAMS1CR2:	.FCTR	RMSUTL/LB:$CRSH3:CDAMS2	.END À          Œsdl^› 8$        ; RMS-11 UTILITIES BUILD FILE; RESTORE	.ROOT	ROOT-SETRES-MAIN-RMSROT-CER-*(BRNCHA,BRNCHB),*COTRE1BRNCHA:	.FCTR	UTLDIS-UTLRESSETRES:	.FCTR	RMSUTL/LB:UTL:UTLRES:RESORG:DYNTAB-WCROTCER:	.FCTR	RMSUTL/LB:$CER-CER1CER1:	.FCTR	[1,1]RMSLIB/LB:R0PUT:R0WAITWCROT:	.FCTR	[1,1]SYSLIB/LB:.ODCVT@RMSODL	.NAME	COTREECOTRE1:	.FCTR	COTREE-*(RMSOVR,PARSER,MSG);  RESTORE UTILITIES ODL	.NAME	RESUTLRES:	.FCTR	RES-RMSUTL/LB:RESCTL-RBASE-*(RESOC,RESCM,RESIO,RHP)	.PSECT	$RES01,RW,D,GBLRBASE:	.FCTR	BRBASE-RESBAS-SYSLB-$RES01RESBAS:	.      FCTR	RMSUTL/LB:RESCPRRESOC:	.FCTR	RESO-RESC-BROC-SYSOC-RSXWCRESO:	.FCTR	RMSUTL/LB:RESOPE:RESGEN:BRNVBN-BROPN-RESATRRESATR:	.FCTR	RMSUTL/LB:BRSWBFRESC:	.FCTR	RMSUTL/LB:RESCRE-BRCRERHP:	.FCTR	RMSUTL/LB:RHELP-SYSCMRESCM:	.FCTR	RMSUTL/LB:RESPO-BRCM-SYSCMRESIO:	.FCTR	RESIOA-*(P1,RRW,RA,RC,RTER)RESIOA:	.FCTR	RMSUTL/LB:RESCON:RESSUM:RESRWT-BRIOC-SYSIOP1:	.FCTR	RMSUTL/LB:RESP1:RESRDN:RESDSC-*(P11,P12)P11:	.FCTR	RMSUTL/LB:BRSWBF:RESGEN:RESFPL:RESDON-P11AP11A:	.FCTR	RMSUTL/LB:RESTIO:RESWCK:RESIOI:RESHMY:BRNVBN-P11BP1      1B:	.FCTR	RMSUTL/LB:BRCALHP12:	.FCTR	RMSUTL/LB:BRSSIN:BRCALN:BRCALV:BRCVBN:RESLPP1A:	.FCTR	RMSUTL/LB:RESDON:RESIOI:RESWCK:RESTIO:RESHMY:RESLP-P1BP1B:	.FCTR	RMSUTL/LB:BRNVBNRRW:	.FCTR	RMSUTL/LB:RESRTS:RESRWG:RESRRW:RESDSC:BRNVUC:BRNVBN-RRWARRWA:	.FCTR	RMSUTL/LB:RESTIO:RESWCK:RESRSZ:RESLP:BRSWBF-RRWBRRWB:	.FCTR	RMSUTL/LB:RESGEN-BRSUS-RSUMRA:	.FCTR	RMSUTL/LB:RESRA:BRQTEG:BRFIOE-BRSUS-RAARAA:	.FCTR	RMSUTL/LB:RESDON:RESHMY:BRNVBN:RESFPLRC:	.FCTR	RCA-*(RC1,RC2)RCA:	.FCTR	RMSUTL/LB:RESRC:RESRDN:RESDSC:BRQTEG:BRCAL      N:RESRDORC1:	.FCTR	RMSUTL/LB:BRNVBN:RESFPL:RESRRW:BRSWBF-RC1ARC1A:	.FCTR	RMSUTL/LB:RESGEN:RESDON:RESHMY:RESTIO-RC1BRC1B:	.FCTR	RMSUTL/LB:BRCALH:BRNVUC:RESRSZ:RESRWGRC2:	.FCTR	RMSUTL/LB:BRSSIN:BRCALV:BRFIOE:BRCVBN:RESLPRTER:	.FCTR	RMSUTL/LB:RESRWE:RESRWG:RESLP-RTERARTERA:	.FCTR	RMSUTL/LB:RESWCK:RESTIO:RESFPL:BRNVBN:RESRSZ:BRCALHRSUM:	.FCTR	RMSUTL/LB:RESAWT:BRSUMM; RSX WILD CARDSRSXWC:	.FCTR	RMSUTL/LB:UTLWCT:UTLWCA:UTLWCF:BRWC; RESTORE COMMON FCTRBROPN:	.FCTR	RMSUTL/LB:BRDCMPBRCRE:	.FCTR	RMSUTL/LB:BRMRG:BRCCR      EBROC:	.FCTR	RMSUTL/LB:BRCNCT:BRERFP:BRCSUB:BRCPRM-BROC1BROC1:	.FCTR	RMSUTL/LB:BRATTCH:BRNUICBRCM:	.FCTR	RMSUTL/LB:BRPID:BRCNCT:BROUTP:BRABRT-BRCMABRCMA:	.FCTR	RMSUTL/LB:BRCRSM-BRCMBBRCMB:	.FCTR	RMSUTL/LB:BRFTLE:BRSERH:BRERFP:BRCLAL:BRSTVEBRBASE:	.FCTR	RMSUTL/LB:BRCTL:BRDATA:BRXAB:BRERR:BRBFLS-BRBS1BRBS1:	.FCTR	RMSUTL/LB:BRNTRY:BRFNER:BRERCLBRIOC:	.FCTR	RMSUTL/LB:BRONER:BRIO:BRCRW:BRRWT:BRERFPBRSUS:	.FCTR	RMSUTL/LB:BRSSIN:BRCALN:BRCALV:BRCVBN:BRCALH; EXPLICITLY CALL RMS REFERENCES IN SYSLIB TO AVOID UNDEFIN      E PROBLEMSYSLB:	.FCTR	[1,1]RMSLIB/LB:R0CLOSSYSOC:	.FCTR	[1,1]RMSLIB/LB:R0CONN:R0CREA:R0OPEN:R0RWBLSYSCM:	.FCTR	[1,1]RMSLIB/LB:R0CONN:R0CREASYSIO:	.FCTR	[1,1]RMSLIB/LB:R0RWBL:R0REWI:R0FBDB; UTILITY ROOT ODL	.NAME	ROOTMAIN:	.FCTR	RMSUTL/LB:CRSST-MAIN1MAIN1:	.FCTR	RMSUTL/LB:UTLCTL:UTLTAB:SNDCP:LUNCHK:INPBUF; RMS-11 UTILITY DISPATCH ODL	.NAME	DISPATUTLDIS:	.FCTR	DISPAT-UTLDP-$UDYN0-$UDYN1UTLDP:	.FCTR	RMSUTL/LB:DISPAT	.PSECT	$UDYN0,D,GBL	.PSECT	$UDYN1,D,GBL; RMS-11 UTILITIES PARSER BUILD FILE	.NAME	PRSCTLPARSER:      	.FCTR	PRSCTL-RMSUTL/LB:.TPARS-PRSMN	.PSECT	$PRS01,RW,D,GBLPRSMN:	.FCTR	$PRS01-PRS1B-*(PRS1C,PRS1D,PRS1E)PRS1B:	.FCTR	RMSUTL/LB:UPRSVR:UTLUST:UTLPT:SWTABL-PRS1APRS1A:	.FCTR	RMSUTL/LB:UTLMPK:UTLAFP:UTLACL:UTLMIDPRS1C:	.FCTR	RMSUTL/LB:UTLACPRS1D:	.FCTR	RMSUTL/LB:UTLASWPRS1E:	.FCTR	RMSUTL/LB:UTLADT-PRSB1PRSB1:	.FCTR	RMSUTL/LB:$CATDT:$GDTIM:$MULQ:$MONTB:MULUNS-PRSB1APRSB1A:	.FCTR	RMSUTL/LB:$CDTTA:$DIVQ:DIVD; RMS-11 UTILITY GCML ODL	.NAME	GCMLFSBRNCHB:	.FCTR	GCMLFS-RMSGCMRMSGCM:	.FCTR	[1,1]RMSLIB/LB:R0CLOS:R0CON      N:R0FIND:R0GET:R0OPEN:R0GCML; FORCE EDTMG INTO COTREE	.NAME	MESSAGMSG:	.FCTR	MESSAG-RMSUTL/LB:EDTMG-*(CERLOD,CRSOVL)	.NAME	CERMSGCERLOD:	.FCTR	CERMSG-RMSUTL/LB:$CERMG-*(C1,C2,C3,C4,C5,C6,C7)EDMSG:	.FCTR	[1,1]SYSLIB/LB:EDMSG	.NAME	CERLD1,GBLC1:	.FCTR	CERLD1-RMSUTL/LB:$CERM1	.NAME	CERLD2,GBLC2:	.FCTR	CERLD2-RMSUTL/LB:$CERM2	.NAME	CERLD3,GBLC3:	.FCTR	CERLD3-RMSUTL/LB:$CERM3	.NAME	CERLD4,GBLC4:	.FCTR	CERLD4-RMSUTL/LB:$CERM4	.NAME	CERLD5,GBLC5:	.FCTR	CERLD5-RMSUTL/LB:$CERM5	.NAME	CERLD6,GBLC6:	.FCTR	CERLD6-RMSUT   Ä   L/LB:$CERM6	.NAME	CERLD7,GBLC7:	.FCTR	CERLD7-RMSUTL/LB:$CERM7	.NAME	CRASH		CRSOVL:	.FCTR	CRASH-RMSUTL/LB:$CRASH-*(CR1,CR2)CR1:	.FCTR	RMSUTL/LB:$CRSH2:CDAMS1CR2:	.FCTR	RMSUTL/LB:$CRSH3:CDAMS2	.END Ä          þdl^› 8$     ö  ; RMS-11 DEFINE BUILD FILE; VERSION X001	.ROOT	ROOT-SETDEF-MAIN-RMSROT-CER-*(BRNCHA,BRNCHB),*COTRE1BRNCHA:	.FCTR	UTLDIS-UTLDEFSETDEF:	.FCTR	RMSUTL/LB:UTL:DEFUTL:DEFORGCER:	.FCTR	RMSUTL/LB:$CER-CER1CER1:	.FCTR	[1,1]RMSLIB/LB:R0PUT@RMSODL@RMSUTL.ODL	.NAME	COTREECOTRE1:	.FCTR	COTREE-*(RMSOVR,PARSER,MSG); ODL FOR DEFINEUTLDEF:	.FCTR	RMSUTL/LB:DEFINE:DYNTAB-SBR2-RMSFUNSBR2:	.FCTR	RMSUTL/LB:$DEFER:$RMSER; REFER EXPLICITLY TO RMS FUNCTIONS TO AVOID UNDEFINESRMSFUN:	.FCTR	[1,1]RMSLIB/LB:R0CLOS:R0CREA	.ENDö         dl^› 8$        ;; RMS-11 DISPLAY BUILD FILE;	.ROOT	ROOT-SETDIS-MAIN-RMSROT-CER-*(BRNCHA,BRNCHB),*COTRE1BRNCHA:	.FCTR	UTLDIS-UTLDSPSETDIS:	.FCTR	RMSUTL/LB:UTL:DISUTL:DISORG-WCROTCER:	.FCTR	RMSUTL/LB:$CER-CER1-WCRSXCER1:	.FCTR	[1,1]RMSLIB/LB:R0PUTUTLDSP:	.FCTR	RMSUTL/LB:DISPLY:$DSPER:DISBP:$RMSER-MOREMORE:	.FCTR	[1,1]SYSLIB/LB:CDDMG:DARITH-RMSFUN-*(B,F,K,DHP)B:	.FCTR	RMSUTL/LB:DSPBASF:	.FCTR 	RMSUTL/LB:DSPFILK:	.FCTR	RMSUTL/LB:DSPKEYDHP:	.FCTR	RMSUTL/LB:DHELP; RSX11 WILD CARDSWCRSX:	.FCTR	RMSUTL/LB:UTLWCT:UTLWCA:UTLWCF; THI   ,  S MODULES MUST BE IN THE ROOT OF THE UTILITIES WHEN WC IS USEDWCROT:	.FCTR	[1,1]SYSLIB/LB:.ODCVT;; REFER EXPLICITLY TO RMS FUNCTIONS TO AVOID UNDEFINES;RMSFUN:	.FCTR	[1,1]RMSLIB/LB:R0CLOS:R0CREA:R0CONN:R0DISP:R0OPEN:R0RWBL@RMSODL@RMSUTL.ODL	.NAME	COTREECOTRE1:	.FCTR	COTREE-*(RMSOVR,PARSER,MSG)	.END ,         Îdl^› 8$        ; RMS-11 DEFINE BUILD FILE; VERSION X002	.ROOT	RMSROT-BRNCHB-UTLDEF,*COTRE1	.NAME	GCMLFSBRNCHB:	.FCTR	GCMLFS-RMSGCMRMSGCM:	.FCTR	[1,1]RMSLIB/LB:R0CLOS:R0CONN:R0FIND:R0GET:R0OPEN:R0GCML@RMSODL	.NAME	COTREECOTRE1:	.FCTR	COTREE-RMSOVR; ODL FOR DEFINEUTLDEF:	.FCTR RMSUTL/LB:DEFORG:LUNCHK:GETCR:.TPARS-PARSEPARSE:	.FCTR DRIVER-*(SPC,ORG,COM,PLC)DRIVER:	.FCTR RMSUTL/LB:DEFCTL:DEFIO:TABLE-ERRSPC:	.FCTR RMSUTL/LB:SPCMEM:SPCTBL:SPCACT:SPCMSGORG:	.FCTR RMSUTL/LB:ORGMEM:ORGTBL-*(O,K)O:	.FCTR RMSUTL/LB:ORGACT:ORGMSGK:	.   @  FCTR RMSUTL/LB:KEYACT:KEYMSGCOM:	.FCTR RMSUTL/LB:COMMEM:COMTBL:COMACT:COMMSGPLC:	.FCTR RMSUTL/LB:PLCMEM:PLCTBL-*(P,A)P:	.FCTR RMSUTL/LB:PLCACT:PLCMSGA:	.FCTR RMSUTL/LB:ANFACT:ANFMSGERR:	.FCTR RMSUTL/LB:RMSERR:ERRMSG; REFER EXPLICITLY TO RMS FUNCTIONS TO AVOID UNDEFINESRMSFUN:	.FCTR	SY:[1,1]RMSLIB/LB:R0CLOS:R0CREA	.END @         dl^› 8$        ;	*********************************;	*				*;	*	CNVBLD.ODL		*;	*				*;	*********************************;;ODL FILE FOR BIGCNV.;IDX TO IDX CONVERT ON ONE BRANCH;	.ROOT	ROOT-SETCNV-MAIN-RMSCRT-CER-CNVORG-*CONUTL,*COTRE1CNVORG:	.FCTR	RMSUTL/LB:CORGDC:GETCRCONUTL:	.FCTR	(CNVERT,BRNCHB)CNVERT:	.FCTR	UTLDIS-CNVOVLSETCNV:	.FCTR	RMSUTL/LB:UTL:CNVINTCER:	.FCTR	RMSUTL/LB:$CER-CER1CER1:	.FCTR	[1,1]RMSLIB/LB:R0PUT@RMSCNV	.NAME	COTREECOTRE1:	.FCTR	COTREE-*(RMSCOL,PMT-(PARSER,MSG));	*********************************;	*			      	*;	*	CNVOVR.ODL		*;	*				*;	*********************************;;CONVERT OVERLAY DESCRIPTION FILE;	.NAME	CONVRTCNVOVL:	.FCTR	CONVRT-FPMP-*(CM1,CM2,CM3,CM4,CM5,CM6,CM7,CNT,ABT)FPMP:	.FCTR	RMSUTL/LB:CFPDEF:CMPCTLCM1:	.FCTR	RMSUTL/LB:CVIDPR:CPKTCH:CFLDCHCM2:	.FCTR	RMSUTL/LB:CINFCT-SYOPNCM3:	.FCTR	RMSUTL/LB:COTFCT-SYOPNCM4:	.FCTR	RMSUTL/LB:CSLFCR-SYCRECM5:	.FCTR	RMSUTL/LB:CSEQCR-SYCRECM6:	.FCTR	RMSUTL/LB:CHELPR-SYCRECM7:	.FCTR	RMSUTL/LB:CBUFGT:CBUFSD:CRELCHCNT:	.FCTR	(CXX,CXL,CXQ,CLX,CLL,CLQ,CQX,CQL,CQQ)CXX:	.FC      TR	RMSUTL/LB:CCONXX:CRCDXX-SYGETCXL:	.FCTR	RMSUTL/LB:CCONXL:CRCDXL-SYGETCXQ:	.FCTR	RMSUTL/LB:CCONXQ:CRCDXQ-SYGETCLX:	.FCTR	RMSUTL/LB:CCONLX:CRCDLX-SYGETCLL:	.FCTR	RMSUTL/LB:CCONLL:CRCDLL-SYGETCLQ:	.FCTR	RMSUTL/LB:CCONLQ:CRCDLQ-SYGETCQX:	.FCTR	RMSUTL/LB:CCONQX:CRCDQX-SYGETCQL:	.FCTR	RMSUTL/LB:CCONQL:CRCDQL-SYGETCQQ:	.FCTR	RMSUTL/LB:CCONQQ:CRCDQQ-SYGETABT:	.FCTR	RMSUTL/LB:CABORT-SYCLOSYCLO:	.FCTR	[1,1]RMSLIB/LB:R0CLOSSYGET:	.FCTR	[1,1]RMSLIB/LB:R0CONN:R0GETSYCRE:	.FCTR	[1,1]RMSLIB/LB:R0CREA:R0CONN:R0DISC:R0GE      TSYOPN:	.FCTR	[1,1]RMSLIB/LB:R0OPEN;	*********************************;	*				*;	*	CONPMT.ODL		*;	*				*;	*********************************;;CONVERT PRIMITIVE OVERLAY DESCRIPTION FILE;	.NAME	PMTOVLPMT:	.FCTR	PMTOVL-P1-P2-P3-P4-P5-P6-P7-P8-P9-P10-P11P1:	.FCTR	RMSUTL/LB:CHKSTP2:	.FCTR	RMSUTL/LB:GETSVP3:	.FCTR	RMSUTL/LB:FNDPEP4:	.FCTR	RMSUTL/LB:GETLAP5:	.FCTR	RMSUTL/LB:SNDFTP6:	.FCTR	RMSUTL/LB:INSEDP7:	.FCTR	RMSUTL/LB:SNDERP8:	.FCTR	RMSUTL/LB:SNDTDP9:	.FCTR	RMSUTL/LB:STRDRP10:	.FCTR	RMSUTL/LB:DIVIDP11:	.FCTR	RM      SUTL/LB:MULTI; UTILITY ROOT ODL; VERSION X001	.NAME	ROOTMAIN:	.FCTR	RMSUTL/LB:CRSST-MAIN1MAIN1:	.FCTR	RMSUTL/LB:CNVCTL:CFILDA:SNDCP:LUNCHK; RMS-11 UTILITY DISPATCH ODL; VERSION X001	.NAME	DISPATUTLDIS:	.FCTR	DISPAT-UTLDP-$UDYN0-$UDYN1UTLDP:	.FCTR	RMSUTL/LB:DISPAT	.PSECT	$UDYN0,D,GBL	.PSECT	$UDYN1,D,GBL; RMS-11 UTILITIES PARSER BUILD FILE; VERSION X001	.NAME	PRSCTLPARSER:	.FCTR	PRSCTL-RMSUTL/LB:.TPARS-PRSMN	.PSECT	$PRS01,RW,D,GBLPRSMN:	.FCTR	$PRS01-PRS1B-*(PRS1C,PRS1D,PRSB1)PRS1B:	.FCTR	RMSUTL/LB:CPRSVR:CSYN      TB:CSTATR:CSWTTB-PRS1APRS1A:	.FCTR	RMSUTL/LB:CMOVPK:CSAVFP:CCLSPK:CMOVIDPRS1C:	.FCTR	RMSUTL/LB:CFILACPRS1D:	.FCTR	RMSUTL/LB:CSWTACPRSB1:	.FCTR	RMSUTL/LB:$CATDT:$GDTIM:$MULQ:$MONTB:MULUNS-PRSB1APRSB1A:	.FCTR	RMSUTL/LB:$CDTTA:$DIVQ:DIVD; RMS-11 UTILITY GCML ODL; VERSION X001	.NAME	GCMLFSBRNCHB:	.FCTR	GCMLFS-RMSUTL/LB:INPBUF-RMSGCMRMSGCM:	.FCTR	[1,1]RMSLIB/LB:R0CLOS:R0CONN:R0FIND:R0GET:R0OPEN:R0GCML; FORCE EDTMG INTO COTREE	.NAME	MESSAGMSG:	.FCTR	MESSAG-RMSUTL/LB:EDTMG-*(CERLOD,CRSOVL)	.NAME	CERMSGCERLOD:	.FCT      R	CERMSG-RMSUTL/LB:$CERMG-*(C1,C2,C3,C4,C5,C6,C7)EDMSG:	.FCTR	[1,1]SYSLIB/LB:EDMSG	.NAME	CERLD1,GBLC1:	.FCTR	CERLD1-RMSUTL/LB:$CERM1	.NAME	CERLD2,GBLC2:	.FCTR	CERLD2-RMSUTL/LB:$CERM2	.NAME	CERLD3,GBLC3:	.FCTR	CERLD3-RMSUTL/LB:$CERM3	.NAME	CERLD4,GBLC4:	.FCTR	CERLD4-RMSUTL/LB:$CERM4	.NAME	CERLD5,GBLC5:	.FCTR	CERLD5-RMSUTL/LB:$CERM5	.NAME	CERLD6,GBLC6:	.FCTR	CERLD6-RMSUTL/LB:$CERM6	.NAME	CERLD7,GBLC7:	.FCTR	CERLD7-RMSUTL/LB:$CERM7	.NAME	CRASH		CRSOVL:	.FCTR	CRASH-RMSUTL/LB:$CRASH-*(CR1,CR2)CR1:	.FCTR	RMSUTL/L   6   B:$CRSH2:CDAMS1CR2:	.FCTR	RMSUTL/LB:$CRSH3:CDAMS2	.END6          ›rl†l^› 8$        ; UTILITY ROOT ODL; VERSION X001	.NAME	ROOTMAIN:	.FCTR	RMSUTL/LB:CRSST-MAIN1MAIN1:	.FCTR	RMSUTL/LB:UTLCTL:UTLTAB:SNDCP:LUNCHK; RMS-11 UTILITY DISPATCH ODL; VERSION X001	.NAME	DISPATUTLDIS:	.FCTR	DISPAT-UTLDP-$UDYN0-$UDYN1UTLDP:	.FCTR	RMSUTL/LB:DISPAT	.PSECT	$UDYN0,D,GBL	.PSECT	$UDYN1,D,GBL; RMS-11 UTILITIES PARSER BUILD FILE; VERSION X001	.NAME	PRSCTLPARSER:	.FCTR	PRSCTL-RMSUTL/LB:.TPARS-PRSMN	.PSECT	$PRS01,RW,D,GBLPRSMN:	.FCTR	$PRS01-PRS1B-*(PRS1C,PRS1D,PRS1E)PRS1B:	.FCTR	RMSUTL/LB:UPRSVR:UTLUST:UTLPT:SWTA      BL-PRS1APRS1A:	.FCTR	RMSUTL/LB:UTLMPK:UTLAFP:UTLACL:UTLMIDPRS1C:	.FCTR	RMSUTL/LB:UTLACPRS1D:	.FCTR	RMSUTL/LB:UTLASWPRS1E:	.FCTR	RMSUTL/LB:UTLADT-PRSB1PRSB1:	.FCTR	RMSUTL/LB:$CATDT:$GDTIM:$MULQ:$MONTB:MULUNS-PRSB1APRSB1A:	.FCTR	RMSUTL/LB:$CDTTA:$DIVQ:DIVD; RMS-11 UTILITY GCML ODL; VERSION X001	.NAME	GCMLFSBRNCHB:	.FCTR	GCMLFS-RMSUTL/LB:INPBUF-RMSGCMRMSGCM:	.FCTR	[1,1]RMSLIB/LB:R0CLOS:R0CONN:R0FIND:R0GET:R0OPEN:R0GCML; FORCE EDTMG INTO COTREE	.NAME	MESSAGMSG:	.FCTR	MESSAG-RMSUTL/LB:EDTMG-*(CERLOD,CRSOVL)	.NAM      E	CERMSGCERLOD:	.FCTR	CERMSG-RMSUTL/LB:$CERMG-*(C1,C2,C3,C4,C5,C6,C7)EDMSG:	.FCTR	[1,1]SYSLIB/LB:EDMSG	.NAME	CERLD1,GBLC1:	.FCTR	CERLD1-RMSUTL/LB:$CERM1	.NAME	CERLD2,GBLC2:	.FCTR	CERLD2-RMSUTL/LB:$CERM2	.NAME	CERLD3,GBLC3:	.FCTR	CERLD3-RMSUTL/LB:$CERM3	.NAME	CERLD4,GBLC4:	.FCTR	CERLD4-RMSUTL/LB:$CERM4	.NAME	CERLD5,GBLC5:	.FCTR	CERLD5-RMSUTL/LB:$CERM5	.NAME	CERLD6,GBLC6:	.FCTR	CERLD6-RMSUTL/LB:$CERM6	.NAME	CERLD7,GBLC7:	.FCTR	CERLD7-RMSUTL/LB:$CERM7	.NAME	CRASH		CRSOVL:	.FCTR	CRASH-RMSUTL/LB:$CRASH-*(CR1,CR2   F   )CR1:	.FCTR	RMSUTL/LB:$CRSH2:CDAMS1CR2:	.FCTR	RMSUTL/LB:$CRSH3:CDAMS2 F          ›rl^l^› 8$        ;+;; RMS11 ODL NAMING CONVENTIONS;;	ODL NAMES;;	RMNXYZ.ODL	WHERE:;;	N	=	TYPE OF OVERLAY ENVIRONMENT;			0 -- NO RESIDENT LIBRARY OR RUN-TIME SYSTEM;			1 -- RESIDENT LIBRARY OR RUN-TIME SYSTEM;;	A	=	SYSTEM ENVIRONMENT ;			0 -- SYNCHRONOUS;			1 -- ASYNCHRONOUS;;	B	=	FILE ORGANIZATION;			1 -- SEQUENTIAL;			2 -- RELATIVE;			3 -- INDEXED;;	C	=	OPERATION SUPPORT;			0 -- FILE OPEN;			1 -- FILE CREATION;			2 -- INPUT ($GET,$FIND);			4 -- OUTPUT ($PUT);			6 -- I/O ($GET,$FIND,$PUT,$UPDATE,$DELETE);;	ODL FILE CONVENTI      ONS;;	WHENEVER AN A, B, OR C DOES NOT APPLY, THEN AN "X" IS USED;	EXAMPLE:;	RM013X.ODL = SELECTS THE ASYNC ENVIRONMENT WITH INDEX SUPPORT;	BUT CONTAINS NO OPERATION SUPPORT ODL INFORMATION;;	THE INTERNAL ODL FILES CONTAIN DIRECTORY;	SPECIFICATIONS AS FOLLOWS:;			[1,1] FOR RMSLIB.OLB;;	******************************************************;	THIS PROTOTYPE ODL IS TO BE USED IN THE .ROOT;	STATEMENT OF THE USER PROGRAM ODL;	******************************************************;;-;; NOTE: IF ALL RMS SYMBOLS ARE       LOCALLY DEFINED THEN THE;	[1,1]RMSLIB/LB:RMSSYM REFERENCE MAY BE DELETED;	IN THE RMSXXX FACTOR BELOW;; CHANGE THE RMSXXX FACTOR NAME TO THE FACTOR NAMED IN; YOUR TASK'S ODL .ROOT STATEMENT, AND REFERENCE THIS; FILE BY THE NAME YOU GAVE IT BY @FILENAME AT THE; LEFT HAND MARGIN OF YOUR TASK'S ODL FILE;; CHANGE THE RMXXXX TERM TO ONE OF THE FOLLOWING;	RM0X0X, RM0X3X, OR RMS11X AND DELETE ALL;	REQUIRED SEMICOLLONS (;) FROM THE FACTOR;	STATEMENTS BELOW.;RMSROT:	.FCTR	RM0X0X;; NO INDEX-IO REQUIRED;RM0X0X:	.FCTR	      RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-UTLIDX;; INDEX-IO REQUIRED;;RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0;; THE FOLLOWING IS TO BE USED IF LINKING TO A RESIDENT; LIBRARY OR RUN-TIME SYSTEM (RSTS/E ) WHICH CONTAINS NECESSARY; RMS11 ROOT CODE.; NOTE: DELETE THE RMSIX0 TERM IF INDEX-IO NOT REQUIRED;;RMS11X:	.FCTR	RMSCM1-RMSIX0;UTLIDX:	.FCTR	RMSUTL/LB:IDXORGRMSIO:	.FCTR	[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLKRMSCBL:	.FCTR	[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDATRMSCOM:	.FCTR	[1,1]RMSLIB/L      B:R0RMSE:R0SAVR:R0IDPBRMSCM1:	.FCTR	[1,1]RMSLIB/LB:R0AUTO:R0IMPA;; SYNC SYSTEMS;;RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS:R0RMSA;; ASYNC SYSTEMS (RSX BASED SYSTEMS ONLY);RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB:R0RMSA;; INDEX-IO ROUTINES;;RMSIX0:	.FCTR	[1,1]RMSLIB/LB:R0RLSB:R0GETB;+;; RMS11 ODL NAMING CONVENTIONS;;	ODL NAMES;;	RMNXYZ.ODL	WHERE:;;	N	=	TYPE OF OVERLAY ENVIRONMENT;			0 -- NO RESIDENT LIBRARY OR RUN-TIME SYSTEM;			1 -- RESIDENT LIBRARY OR RUN-TIME SYSTEM;;	A	=	SYSTEM ENVIRONME      NT ;			0 -- SYNCHRONOUS;			1 -- ASYNCHRONOUS;;	B	=	FILE ORGANIZATION;			1 -- SEQUENTIAL;			2 -- RELATIVE;			3 -- INDEXED;;	C	=	OPERATION SUPPORT;			0 -- FILE OPEN;			1 -- FILE CREATION;			2 -- INPUT ($GET,$FIND);			4 -- OUTPUT ($PUT);			6 -- I/O ($GET,$FIND,$PUT,$UPDATE,$DELETE);;	ODL FILE CONVENTIONS;;	WHENEVER AN A, B, OR C DOES NOT APPLY, THEN AN "X" IS USED;	EXAMPLE:;	RM013X.ODL = SELECTS THE ASYNC ENVIR WITH INDEX SUPPORT;	BUT CONTAINS NO OPERATION SUPPORT ODL INFORMATION;;	THE INTERNAL ODL FILES CONTA      IN DIRECTORY;	SPECIFICATIONS AS FOLLOWS:;			[1,1] FOR RMSLIB.OLB;;	******************************************************;	THIS PROTOTYPE ODL IS TO BE USED AS AN INDEPENDENT;	OVERLAY OR CO-TREE IN A USER PROGRAM ODL;	******************************************************;;	REMOVE ALL SEMICOLONS (;) THAT APPLY AND REPLACE;	ALL "XXXX" WITH DESIRED FACTOR NAMES;;-;	.NAME	RMS11	.NAME	RMSFAB	.NAME	RMSRAB	.NAME	RMSCRE	.NAME	RMSCD	.NAME	RMOPIN	.NAME	RMSSEQ	.NAME	RMSREL	.NAME	R2GUPD	.NAME	RMSIDX	.NAME	RMSBMC	.NAME	      RMSMIS	.NAME	RMDEXT	.NAME	RMDRLB	.NAME	RMDWTL;;	**********************************************************;; RMSLE (FAB) FUNCTIONS - COMMON FACTORS;RMSFIL:	.FCTR	RMSFAB-[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFLRMSFL:	.FCTR	[1,1]RMSLIB/LB:R0CLCM-RMFILE-RMSFL0RMSFNM:	.FCTR	[1,1]RMSLIB/LB:R0PRFN:R0XPFN:R0MKWA:R0ASLN-RMSFL1RMSDPC:	.FCTR	[1,1]RMSLIB/LB:R0DPYC:R0CKSM-RMSFL1RMSFL1:	.FCTR	[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIORMSCLS:	.FCTR	[1,1]RMSLIB/LB:R1CLOS:R2CLOS:R3CLOS-RMSCL0RMSCL0:	.FCTR	[1,1]RMSLIB/LB:R0CKSM-R      MEXTD-RMR1RLRMSOPN:	.FCTR	([1,1]RMSLIB/LB:R0OPFL-RMSOP0,RM0XY0)RMCRCK:	.FCTR	[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCKRMCREA:	.FCTR	[1,1]RMSLIB/LB:R0CRFL:R0MFNB:R0RD50-RMSCR2RMSCR0:	.FCTR	RMSCRE-[1,1]RMSLIB/LB:R0CRXI-RMSCR1;;	**********************************************************;; RSX SYSTEM DEPENDENT FACTORS;RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0RXACRMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RXCR:R0RXMD:R0RXDIRMSER1:	.FCTR	[1,1]RMSLIB/LB:R0RXMD-RMSOP0;; RSTS/E SYSTEM DEPENDENT       FACTORS;;RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0REOP;RMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0MFNB:R0RD50;RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RECR;RMSER1:	.FCTR	RMSOP0;;	**********************************************************;;	FACTORS TO BE USED IF NOT LINKING TO THE RMS11;	RESIDENT LIBRARY OR RUN-TIME SYSTEM;RMEXTD:	.FCTR	[1,1]RMSLIB/LB:R0EXTDRMR1RL:	.FCTR	[1,1]RMSLIB/LB:R1RLBK:R1NXBKRMR1WL:	.FCTR	[1,1]RMSLIB/LB:R1WTLS;;	FACTORS TO BE USED IF LINKING TO THE RMS11;	RESIDENT LIBRARY OR RUN-TIME SYSTEM;;RMEXTD:	.FCTR	RMDEXT;RMR      1RL:	.FCTR	RMDRLB;RMR1WL:	.FCTR	RMDWTL;;	**********************************************************;;	TOP LEVEL OVERLAY STRUCTURE;;	CHANGE THE RMXXXX: FACTOR NAME TO THE NAME;	USED IN YOUR TASK'S ODL FILE AND REFERENCE THE NAME;	YOU GIVE THIS FILE WITH A @FILENAME AT THE LEFT HAND;	MARGIN IN YOUR TASK'S ODL FILE;RMSOVR:	.FCTR	RMS11-*(RMSFIL,RMSREC);;	FILE (FAB) FUNCTION OVERLAY STRUCTURE;RMSFL0:	.FCTR	(RMSFNM,RMSDPC,RMSCLS,RMSOPN,RMSCR0,RMSMIC);; IN THE ABOVE FACTOR IF AUXILIARY FILE FUNCTIONS ARE DESIRED T      HEN ADD; THE RMSMIC FACTOR AFTER THE RMSCR0 IN THE OVERLAY LIST.;;	**********************************************************;RMSMIC:	.FCTR	(RMSERA,RMSEXT)RMSERA:	.FCTR	[1,1]RMSLIB/LB:R0ERFL-RMSER1RMSEXT:	.FCTR	[1,1]RMSLIB/LB:R0EXT0:R0CKSM:R2BFMT-RMEXTD-RMSFL1;;	**********************************************************;;	RMS FILE OPEN FACTORS;; SELECT THE DESIRED OPEN MODULES HERE RM0X10 RM0X20 AND RM0X30; AND DELETE  ALL OTHERS.;RM0XY0:	.FCTR	RMOPIN-[1,1]RMSLIB/LB:R0INIT:R0CKSM-RM0X10-RM0X20-RM0X30RM0X10:      	.FCTR	[1,1]RMSLIB/LB:R1OPFLRM0X20:	.FCTR	[1,1]RMSLIB/LB:R2OPFLRM0X30:	.FCTR	[1,1]RMSLIB/LB:R3OPFL:R3RPLG;;	**********************************************************;;	RMS FILE CREATION FACTORS;;; DELETE THE CREATE MODULES WHICH ARE NOT TO BE SUPPORTED; ( IE R1CRFL R2CRFL AND R3CRFL FORM FACTOR RMSCR1 ); NOTE: R1CRFL IS IN FACT FREE SINCE IT IS HIDDEN BEHIND THE OTHERS;; IF ONLY SEQUENTIAL IS DESIRED THEN DELETE THE ,RMCRXX TERM BELOW;RMSCR1:	.FCTR	[1,1]RMSLIB/LB:R1CRFL:R2CRFL:R3CRFL-(RMCRCK,RMCREA,RMCRXX)      ;; DELETE THE RM0X21 OR RM0X31 TERMS IN THE RMCRXX FACTOR; IF THAT TERM DOES NOT APPLY;RMCRXX:	.FCTR	(RM0X21,RM0X31)RM0X21:	.FCTR	[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM-RMSFL1RM0X31:	.FCTR	[1,1]RMSLIB/LB:R3WPLG:R0CKSM:R0ALBD-RMEXTD;;	**********************************************************;; RMS RECORD (RAB) OPERATIONS - COMMON FACTORS;RMSCDX:	.FCTR	RMSCD-[1,1]RMSLIB/LB:R1CONP:R2CONP:R3CONP-RMSCD0RMSCD0:	.FCTR	[1,1]RMSLIB/LB:R1DISC:R2DISC:R3DISC-RMSCD1RMSCD1:	.FCTR	[1,1]RMSLIB/LB:R0CCLN:R0RSEI:R0ALBS-RMSFL1-      RMSCD2RMSCD2:	.FCTR	RMR1RL-RMR1WL-RMEXTD;;	**********************************************************;;	RMS RECORD (RAB) FUNCTION OVERLAY STRUCTURE;RMSREC:	.FCTR	RMSRAB-(RMSCDX,RMSBLK,RMSSQ0);;	**********************************************************;; RMS RELATIVE FILE RECORD OPERATIONS;;RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2A;RMIO2C:	.FCTR	[1,1]RMSLIB/LB:R2IOCK:R2CALC:R0CKSM;RMIO2A:	.FCTR	[1,1]RMSLIB/LB:R2FIND:R2GSET-(RMIO2G,RMIO2P);RMIO2G:	.FCTR	R2GUPD-[1,1]RMSLIB/LB:R2GET-RMIO2U-RMIO2D;RMIO2P:	.FCTR	[1,1]R      MSLIB/LB:R2PUT:R2PSET-RMIO2H;RMIO2H:	.FCTR	[1,1]RMSLIB/LB:R2BFMT:R2EXTD-RMEXTD;RMIO2U:	.FCTR	[1,1]RMSLIB/LB:R2UPDA:R2PSET;RMIO2D:	.FCTR	[1,1]RMSLIB/LB:R2DELE;;	**********************************************************;; RMS INDEXED FILE RECORD OPERATIONS;;RM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31;RMIO30:	.FCTR	RMOU3C-RMOU3D-RMOU3E;RMIO31:	.FCTR	(RMIO3G,RMIO3P,RMIO3U);RMIO3G:	.FCTR	[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3K;RMIN3K:	.FCTR	[1,1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKE;RMIN3S:	.FCTR	[1,1]RMSLIB/LB      :R3FRSE:R3POSE:R3POSR:R3FRRV;RMIO3P:	.FCTR	[1,1]RMSLIB/LB:R3PUT:R3PSET-(RMOU3Q);RMOU3Q:	.FCTR	(RMOU33,RMOU34,RMOU35,RMOU36,RMOU3P);RMIO3U:	.FCTR	[1,1]RMSLIB/LB:R3UPDA:R3USET-(RMIO3D,RMOU34,RMIO3X);RMIO3X:	.FCTR	(RMOU35,RMOU36,RMOU3P);RMIO3D:	.FCTR	[1,1]RMSLIB/LB:R3DELE:R3DSET:R3RPLC:R3SKDL-RMOU33;RMOU33:	.FCTR	[1,1]RMSLIB/LB:R3PIXC:R3FRRV:R3DLSI;RMOU34:	.FCTR	[1,1]RMSLIB/LB:R3IUDR-(RMOU3J-RMOU3F,RMOU3K,RMOU3G,RMOU3A);RMOU35:	.FCTR	[1,1]RMSLIB/LB:R3ISID-(RMOU3A,RMOU3H);RMOU36:	.FCTR	[1,1]RMSLIB/LB:R3UIDX:R3I      KEY-(RMOU3M,RMOU3O,RMOU3A);RMOU3A:	.FCTR	[1,1]RMSLIB/LB:R3ALOC:R3BFMT-RMEXTD;RMOU3C:	.FCTR	[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKT;RMOU3D:	.FCTR	[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KREF;RMOU3E:	.FCTR	[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTR;RMOU3F:	.FCTR	[1,1]RMSLIB/LB:R3IUDI:R3BSRT;RMOU3G:	.FCTR	[1,1]RMSLIB/LB:R3BRRV:R3URRV;RMOU3H:	.FCTR	[1,1]RMSLIB/LB:R3ISDI:R3BSRT-RMOU3L;RMOU3J:	.FCTR	[1,1]RMSLIB/LB:R3IUDC;RMOU3K:	.FCTR	[1,1]RMSLIB/LB:R3BSPL;RMOU3L:	.FCTR	[1,1]RMSLIB/LB:R3SSPL;RMOU3M      :	.FCTR	[1,1]RMSLIB/LB:R3IKYI-RMOU3N;RMOU3N:	.FCTR	[1,1]RMSLIB/LB:R3KSPL;RMOU3O:	.FCTR	[1,1]RMSLIB/LB:R3ROOT;RMOU3P:	.FCTR	[1,1]RMSLIB/LB:R3MKID-RMOU3A;;	**********************************************************;; RMS BLOCK IO OPERATIONS AND; MISC RMS11 RECORD OPERATION ($FREE,$FLUSH,$RELEASE,$REWIND,$TRUNCATE);RMSBLK:	.FCTR	RMSBMC-[1,1]RMSLIB/LB:R0RWBI-RMMISC;RMMISC:	.FCTR	RMSMIS-RMMIS0RMMIS0:	.FCTR	[1,1]RMSLIB/LB:R0FREE:R1TRUN-RMMIS1RMMIS1:	.FCTR	[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGTRMWATR:	.FCTR	[1      ,1]RMSLIB/LB:R0WATR-RMR1WL-RMR1RL-RMEXTDRMMAGT:	.FCTR	[1,1]RMSLIB/LB:R0MAGT;;	**********************************************************;; SEQUENTIAL RECORD OPERATIONS - NO RESIDENT LIBRARY ON RUN-TIME SYSTEM;RMSSQ0:.FCTR	RMSSEQ-RMR1RL-RMEXTD-RMSQOP;; SEQUENTIAL RECORD OPERATIONS EITHER CONCATENATED OR OVERLAY; THOSE DESIRED OR ANY COMBINATION OF THE ABOVE;RMSQOP:	.FCTR	[1,1]RMSLIB/LB:R1WTLS:R1CKEF-(RMOU1P,RMIN10)RMIN10:	.FCTR	[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLDRMOU1P:	.FCTR	[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUN      R:R1PBLD;RMOU1U:	.FCTR	[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE:R1PSET;; NOTE: IF RMOU1U IS CONCATENATED WITH RMOU1P THEN REMOVE ; ONE OF THE R1PSET MODULES FROM THE ABOVE FACTORS;;	**********************************************************;; SEQUENTIAL RECORD OPERATIONS IF LINKING TO THE RMS11 RESIDENT LIBRARY; OR RUN-TIME SYSTEM (IE, UPDATE AND DELETE ONLY);;RMSSQ0:	.FCTR	RMSSEQ-[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE;           ›rl^› 8$        ;+;; RMS11 ODL NAMING CONVENTIONS;;	ODL NAMES;;	RMNXYZ.ODL	WHERE:;;	N	=	TYPE OF OVERLAY ENVIRONMENT;			0 -- NO RESIDENT LIBRARY OR RUN-TIME SYSTEM;			1 -- RESIDENT LIBRARY OR RUN-TIME SYSTEM;;	A	=	SYSTEM ENVIRONMENT ;			0 -- SYNCHRONOUS;			1 -- ASYNCHRONOUS;;	B	=	FILE ORGANIZATION;			1 -- SEQUENTIAL;			2 -- RELATIVE;			3 -- INDEXED;;	C	=	OPERATION SUPPORT;			0 -- FILE OPEN;			1 -- FILE CREATION;			2 -- INPUT ($GET,$FIND);			4 -- OUTPUT ($PUT);			6 -- I/O ($GET,$FIND,$PUT,$UPDATE,$DELETE);;	ODL FILE CONVENTI      ONS;;	WHENEVER AN A, B, OR C DOES NOT APPLY, THEN AN "X" IS USED;	EXAMPLE:;	RM013X.ODL = SELECTS THE ASYNC ENVIRONMENT WITH INDEX SUPPORT;	BUT CONTAINS NO OPERATION SUPPORT ODL INFORMATION;;	THE INTERNAL ODL FILES CONTAIN DIRECTORY;	SPECIFICATIONS AS FOLLOWS:;			[1,1] FOR RMSLIB.OLB;;	******************************************************;	THIS PROTOTYPE ODL IS TO BE USED IN THE .ROOT;	STATEMENT OF THE USER PROGRAM ODL;	******************************************************;;-;; NOTE: IF ALL RMS SYMBOLS ARE       LOCALLY DEFINED THEN THE;	[1,1]RMSLIB/LB:RMSSYM REFERENCE MAY BE DELETED;	IN THE RMSXXX FACTOR BELOW;; CHANGE THE RMSXXX FACTOR NAME TO THE FACTOR NAMED IN; YOUR TASK'S ODL .ROOT STATEMENT, AND REFERENCE THIS; FILE BY THE NAME YOU GAVE IT BY @FILENAME AT THE; LEFT HAND MARGIN OF YOUR TASK'S ODL FILE;; CHANGE THE RMXXXX TERM TO ONE OF THE FOLLOWING;	RM0X0X, RM0X3X, OR RMS11X AND DELETE ALL;	REQUIRED SEMICOLLONS (;) FROM THE FACTOR;	STATEMENTS BELOW.;RMSCRT:	.FCTR	RM0X3X;; NO INDEX-IO REQUIRED;;RM0X0X:	.FCTR      	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC;; INDEX-IO REQUIRED;RM0X3X:	.FCTR	RMSIO-RMSCBL-RMSCOM-RMSCM1-RMSEXC-RMSIX0-CNVIDX;; THE FOLLOWING IS TO BE USED IF LINKING TO A RESIDENT; LIBRARY OR RUN-TIME SYSTEM (RSTS/E ) WHICH CONTAINS NECESSARY; RMS11 ROOT CODE.; NOTE: DELETE THE RMSIX0 TERM IF INDEX-IO NOT REQUIRED;;RMS11X:	.FCTR	RMSCM1-RMSIX0;CNVIDX:	.FCTR	RMSUTL/LB:CORGIXRMSIO:	.FCTR	[1,1]RMSLIB/LB:R0CACH:R0RLCH:R0MAPC:R0RWBF:R0UNLKRMSCBL:	.FCTR	[1,1]RMSLIB/LB:R0RTCB:R0ACBB:R0RTDB:R0MDATRMSCOM:	.FCTR	[1,1]RMSLIB/L      B:R0RMSE:R0SAVR:R0RMSA:R0IDPBRMSCM1:	.FCTR	[1,1]RMSLIB/LB:R0AUTO:R0IMPA;; SYNC SYSTEMS;RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXSY:R0RSES:R0WTBS;; ASYNC SYSTEMS (RSX BASED SYSTEMS ONLY);;RMSEXC:	.FCTR	[1,1]RMSLIB/LB:R0EXEC:R0RSET:R0WATB;; INDEX-IO ROUTINES;RMSIX0:	.FCTR	[1,1]RMSLIB/LB:R0RLSB:R0GETB;+;; RMS11 ODL NAMING CONVENTIONS;;	ODL NAMES;;	RMNXYZ.ODL	WHERE:;;	N	=	TYPE OF OVERLAY ENVIRONMENT;			0 -- NO RESIDENT LIBRARY OR RUN-TIME SYSTEM;			1 -- RESIDENT LIBRARY OR RUN-TIME SYSTEM;;	A	=	SYSTEM ENVIRONMENT ;			0       -- SYNCHRONOUS;			1 -- ASYNCHRONOUS;;	B	=	FILE ORGANIZATION;			1 -- SEQUENTIAL;			2 -- RELATIVE;			3 -- INDEXED;;	C	=	OPERATION SUPPORT;			0 -- FILE OPEN;			1 -- FILE CREATION;			2 -- INPUT ($GET,$FIND);			4 -- OUTPUT ($PUT);			6 -- I/O ($GET,$FIND,$PUT,$UPDATE,$DELETE);;	ODL FILE CONVENTIONS;;	WHENEVER AN A, B, OR C DOES NOT APPLY, THEN AN "X" IS USED;	EXAMPLE:;	RM013X.ODL = SELECTS THE ASYNC ENVIR WITH INDEX SUPPORT;	BUT CONTAINS NO OPERATION SUPPORT ODL INFORMATION;;	THE INTERNAL ODL FILES CONTAIN DIREC      TORY;	SPECIFICATIONS AS FOLLOWS:;			[1,1] FOR RMSLIB.OLB;;	******************************************************;	THIS PROTOTYPE ODL IS TO BE USED AS AN INDEPENDENT;	OVERLAY OR CO-TREE IN A USER PROGRAM ODL;	******************************************************;;	REMOVE ALL SEMICOLONS (;) THAT APPLY AND REPLACE;	ALL "XXXX" WITH DESIRED FACTOR NAMES;;-;	.NAME	RMS11	.NAME	RMSFAB	.NAME	RMSRAB	.NAME	RMSCRE	.NAME	RMSCD	.NAME	RMOPIN	.NAME	RMSSEQ	.NAME	RMSREL	.NAME	R2GUPD	.NAME	RMSIDX	.NAME	RMSBMC	.NAME	RMSMIS	.      NAME	RMDEXT	.NAME	RMDRLB	.NAME	RMDWTL;;	**********************************************************;; RMSLE (FAB) FUNCTIONS - COMMON FACTORS;RMSFIL:	.FCTR	RMSFAB-[1,1]RMSLIB/LB:R0IFLF:R0FSET:R0FSEI-RMSFLRMSFL:	.FCTR	[1,1]RMSLIB/LB:R0CLCM-RMFILE-RMSFL0RMSFNM:	.FCTR	[1,1]RMSLIB/LB:R0PRFN:R0XPFN:R0MKWA:R0ASLN-RMSFL1RMSDPC:	.FCTR	[1,1]RMSLIB/LB:R0DPYCRMSFL1:	.FCTR	[1,1]RMSLIB/LB:R0ALDB:R0ALBD:R0ALIORMSCLS:	.FCTR	[1,1]RMSLIB/LB:R1CLOS:R2CLOS:R3CLOS-RMSCL0RMSCL0:	.FCTR	[1,1]RMSLIB/LB:R0CKSM-RMEXTD-RMR1RLRMSOPN:	.F      CTR	[1,1]RMSLIB/LB:R0OPFL-RMSOP0-RM0XY0RMCRCK:	.FCTR	[1,1]RMSLIB/LB:R1CRCK:R2CRCK:R3CRCKRMCREA:	.FCTR	[1,1]RMSLIB/LB:R0CRFL-RMSCR2RMSCR0:	.FCTR	RMSCRE-[1,1]RMSLIB/LB:R0CRXI-RMSCR1;;	**********************************************************;; RSX SYSTEM DEPENDENT FACTORS;RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0RXACRMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0RXDI:R0MFNB:R0RD50RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RXCR:R0RXMD;; RSTS/E SYSTEM DEPENDENT FACTORS;;RMFILE:	.FCTR	[1,1]RMSLIB/LB:R0REOP;RMSOP0:	.FCTR	[1,1]RMSLIB/LB:R0MFNB:R0RD50      ;RMSCR2:	.FCTR	[1,1]RMSLIB/LB:R0RECR;;	**********************************************************;;	FACTORS TO BE USED IF NOT LINKING TO THE RMS11;	RESIDENT LIBRARY OR RUN-TIME SYSTEM;RMEXTD:	.FCTR	[1,1]RMSLIB/LB:R0EXTDRMR1RL:	.FCTR	[1,1]RMSLIB/LB:R1RLBK:R1NXBKRMR1WL:	.FCTR	[1,1]RMSLIB/LB:R1WTLS;;	FACTORS TO BE USED IF LINKING TO THE RMS11;	RESIDENT LIBRARY OR RUN-TIME SYSTEM;;RMEXTD:	.FCTR	RMDEXT;RMR1RL:	.FCTR	RMDRLB;RMR1WL:	.FCTR	RMDWTL;;	**********************************************************;;	TOP LE      VEL OVERLAY STRUCTURE;;	CHANGE THE RMXXXX: FACTOR NAME TO THE NAME;	USED IN YOUR TASK'S ODL FILE AND REFERENCE THE NAME;	YOU GIVE THIS FILE WITH A @FILENAME AT THE LEFT HAND;	MARGIN IN YOUR TASK'S ODL FILE;RMSCOL:	.FCTR	RMS11-*(RMSFIL-RMSCDX,RMSREC);;	FILE (FAB) FUNCTION OVERLAY STRUCTURE;RMSFL0:	.FCTR	RMSFNM-RMSDPC-RMSCLS-RMSOPN-RMSCR0;; IN THE ABOVE FACTOR IF AUXILIARY FILE FUNCTIONS ARE DESIRED THEN ADD; THE RMSMIC FACTOR AFTER THE RMSCR0 IN THE OVERLAY LIST.;;	*******************************************      ***************;;RMSMIC:	.FCTR	(RMSERA,RMSEXT);RMSERA:	.FCTR	[1,1]RMSLIB/LB:;RMSEXT:	.FCTR	[1,1]RMSLIB/LB:;;	**********************************************************;;	RMS FILE OPEN FACTORS;; SELECT THE DESIRED OPEN MODULES HERE RM0X10 RM0X20 AND RM0X30; AND DELETE  ALL OTHERS.;RM0XY0:	.FCTR	RMOPIN-[1,1]RMSLIB/LB:R0INIT-RM0X10-RM0X20-RM0X30RM0X10:	.FCTR	[1,1]RMSLIB/LB:R1OPFLRM0X20:	.FCTR	[1,1]RMSLIB/LB:R2OPFLRM0X30:	.FCTR	[1,1]RMSLIB/LB:R3OPFL:R3RPLG;;	*****************************************************      *****;;	RMS FILE CREATION FACTORS;;; DELETE THE CREATE MODULES WHICH ARE NOT TO BE SUPPORTED; ( IE R1CRFL R2CRFL AND R3CRFL FORM FACTOR RMSCR1 ); NOTE: R1CRFL IS IN FACT FREE SINCE IT IS HIDDEN BEHIND THE OTHERS;; IF ONLY SEQUENTIAL IS DESIRED THEN DELETE THE ,RMCRXX TERM BELOW;RMSCR1:	.FCTR	[1,1]RMSLIB/LB:R1CRFL-RMCRCK-RMCREA;; DELETE THE RM0X21 OR RM0X31 TERMS IN THE RMCRXX FACTOR; IF THAT TERM DOES NOT APPLY;;RMCRXX:	.FCTR	(RM0X21,RM0X31);RM0X21:	.FCTR	[1,1]RMSLIB/LB:R2WPLG:R2BFMT:R0CKSM-RMSFL1;RM0X31:	.      FCTR	[1,1]RMSLIB/LB:R3WPLG:R0CKSM:R0ALBD;;	**********************************************************;; RMS RECORD (RAB) OPERATIONS - COMMON FACTORS;RMSCDX:	.FCTR	RMSCD-[1,1]RMSLIB/LB:R1CONP:R2CONP:R3CONP-RMSCD0RMSCD0:	.FCTR	[1,1]RMSLIB/LB:R1DISC:R2DISC:R3DISC-RMSCD1RMSCD1:	.FCTR	[1,1]RMSLIB/LB:R0CCLN:R0RSEI:R0ALBS-RMR1WLRMSCD2:	.FCTR	RMR1RL-RMR1WL-RMEXTD;;	**********************************************************;;	RMS RECORD (RAB) FUNCTION OVERLAY STRUCTURE;RMSREC:	.FCTR	RMSRAB-RMSSQ0-RM0X26-RM0X36;;	***      *******************************************************;; RMS RELATIVE FILE RECORD OPERATIONS;RM0X26:	.FCTR	RMSREL-RMIO2C-RMIO2ARMIO2C:	.FCTR	[1,1]RMSLIB/LB:R2IOCK:R2CALCRMIO2A:	.FCTR	[1,1]RMSLIB/LB:R2FIND:R2GSET-RMIO2G-RMIO2PRMIO2G:	.FCTR	R2GUPD-[1,1]RMSLIB/LB:R2GETRMIO2P:	.FCTR	[1,1]RMSLIB/LB:R2PUT:R2PSET-RMIO2HRMIO2H:	.FCTR	[1,1]RMSLIB/LB:R2BFMT:R2EXTD;RMIO2U:	.FCTR	[1,1]RMSLIB/LB:R2UPDA:R2PSET;RMIO2D:	.FCTR	[1,1]RMSLIB/LB:R2DELE;;	**********************************************************;; RMS INDEXED       FILE RECORD OPERATIONS;RM0X36:	.FCTR	RMSIDX-RMIO30-RMIO31RMIO30:	.FCTR	RMOU3C-RMOU3D-RMOU3ERMIO31:	.FCTR	RMIO3G-RMIO3PRMIO3G:	.FCTR	[1,1]RMSLIB/LB:R3GET:R3FIND-RMIN3S-RMIN3KRMIN3K:	.FCTR	[1,1]RMSLIB/LB:R3GSET:R3GTRE:R3GRPT:R3FRRF:R3FRKERMIN3S:	.FCTR	[1,1]RMSLIB/LB:R3FRSE:R3POSE:R3POSR:R3FRRVRMIO3P:	.FCTR	[1,1]RMSLIB/LB:R3PUT:R3PSET-RMOU3QRMOU3Q:	.FCTR	RMOU33-RMOU34-RMOU35-RMOU36-RMOU3P;RMIO3U:	.FCTR	[1,1]RMSLIB/LB:R3UPDA:R3USET-(RMIO3D,RMOU34,RMIO3X);RMIO3X:	.FCTR	(RMOU35,RMOU36,RMOU3P);RMIO3D:	.FCTR	[1,1]R      MSLIB/LB:R3DELE:R3DSET:R3RPLC:R3SKDL-RMOU33RMOU33:	.FCTR	[1,1]RMSLIB/LB:R3PIXC:R3DLSIRMOU34:	.FCTR	[1,1]RMSLIB/LB:R3IUDR-RMOU3J-RMOU3F-RMOU3K-RMOU3G-RMOU3ARMOU35:	.FCTR	[1,1]RMSLIB/LB:R3ISID-RMOU3HRMOU36:	.FCTR	[1,1]RMSLIB/LB:R3UIDX:R3IKEY-RMOU3M-RMOU3ORMOU3A:	.FCTR	[1,1]RMSLIB/LB:R3ALOC:R3BFMTRMOU3C:	.FCTR	[1,1]RMSLIB/LB:R3FROO:R3GKEY:R3FPAT:R3MISC:R3WBKTRMOU3D:	.FCTR	[1,1]RMSLIB/LB:R3FRFA:R3FNDR:R3NBKT:R3KREFRMOU3E:	.FCTR	[1,1]RMSLIB/LB:R3SDBK:R3SKRE:R0CMKY:R0CKSM:R0GPTRRMOU3F:	.FCTR	[1,1]RMSLIB/LB:R3IUDI      :R3BSRTRMOU3G:	.FCTR	[1,1]RMSLIB/LB:R3BRRV:R3URRVRMOU3H:	.FCTR	[1,1]RMSLIB/LB:R3ISDI-RMOU3LRMOU3J:	.FCTR	[1,1]RMSLIB/LB:R3IUDCRMOU3K:	.FCTR	[1,1]RMSLIB/LB:R3BSPLRMOU3L:	.FCTR	[1,1]RMSLIB/LB:R3SSPLRMOU3M:	.FCTR	[1,1]RMSLIB/LB:R3IKYI-RMOU3NRMOU3N:	.FCTR	[1,1]RMSLIB/LB:R3KSPLRMOU3O:	.FCTR	[1,1]RMSLIB/LB:R3ROOTRMOU3P:	.FCTR	[1,1]RMSLIB/LB:R3MKID;;	**********************************************************;; RMS BLOCK IO OPERATIONS AND; MISC RMS11 RECORD OPERATION ($FREE,$FLUSH,$RELEASE,$REWIND,$TRUNCATE);;RMSBL      K:	.FCTR	RMSBMC-[1,1]RMSLIB/LB:R0RWBI-RMMISC;;RMMISC:	.FCTR	RMSMIS-RMMIS0;RMMIS0:	.FCTR	[1,1]RMSLIB/LB:R0FREE:R1TRUN-RMMIS1;RMMIS1:	.FCTR	[1,1]RMSLIB/LB:R0RWIN:R2CALC-RMWATR-RMMAGT;RMWATR:	.FCTR	[1,1]RMSLIB/LB:R0WATR-RMR1WL-RMR1RL-RMEXTD;RMMAGT:	.FCTR	[1,1]RMSLIB/LB:R0RWMT;;	**********************************************************;; SEQUENTIAL RECORD OPERATIONS - NO RESIDENT LIBRARY ON RUN-TIME SYSTEM;RMSSQ0:	.FCTR	RMSSEQ-RMR1RL-RMEXTD-RMSQOP;; SEQUENTIAL RECORD OPERATIONS EITHER CONCATENATED OR OVERLAY;       THOSE DESIRED OR ANY COMBINATION OF THE ABOVE;RMSQOP:	.FCTR	[1,1]RMSLIB/LB:R1WTLS:R1CKEF-RMIN10-RMOU1PRMIN10:	.FCTR	[1,1]RMSLIB/LB:R1GET:R1GSET:R1GBLDRMOU1P:	.FCTR	[1,1]RMSLIB/LB:R1PUT:R1PSET:R1PUNR:R1PBLD;RMOU1U:	.FCTR	[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE:R1PSET;; NOTE: IF RMOU1U IS CONCATENATED WITH RMOU1P THEN REMOVE ; ONE OF THE R1PSET MODULES FROM THE ABOVE FACTORS;;	**********************************************************;; SEQUENTIAL RECORD OPERATIONS IF LINKING TO THE RMS11 RESIDENT LIBRARY; OR RUN   d   -TIME SYSTEM (IE, UPDATE AND DELETE ONLY);;RMSSQ0:	.FCTR	RMSSEQ-[1,1]RMSLIB/LB:R1UPDA:R1UBLD:R1DELE;d          ›rl†¢_› 8$         øÀ  M         Þ	 B     [  F"º                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ¢Øù Ž,""³4 , K³4 .  f.ð3³4 .ÖK³4 .0M³4 .Ðf³4 1Ì7 10³4 1ð3³4 1ÖK³4 10M³4 1Ðf³4 vRºüvBxºüƒ  î ˜ƒšî ˜…@Qºü…%Sºü…ÒSºü	Œ³4 	%³4 	.³4 	M7 	Ò³4 ;	ÕZ³4 ¬ð3Êþ¬ KÊþ¬ÖKÊþ¬0MÊþ¬RÊþ¬ÐfÊþ¬Cyfî""Êþî KÊþï"". ï K. KÌ7 K0³4 K""³4 Kð3³4 K K³4 KÖK³4 K0M³4 KÐf³4 kÌ(k"¦¬k""(kð3(k K¦¬sÌÄ ® sð3Ã& sÖKÃ& s0MÃ& sÐfÃ& Å@QºümÖKÊþmRÊþš	œ ŒšÎœ Œš˜:œ Œš«:œ ŒÌ ü      ð3. ÖK. 0M. Ðf. t:T6KF Ö «„T¯ˆwT²Îî ˜²Ä ® ²XÄ ® ²øÄ ® ²˜Ä ® ²X Ä ® ²˜!Ä ® ²8"Ä ® ²Ø"Ä ® ²˜qÄ ® ²ØrÄ ® ²xsÄ ® ²tÄ ® ²ØÄ ® ²’Ä ® ²¸’Ä ® ²X“Ä ® ³ð3¢³ÖK¢³0M¢³Ðf¢Ìüî ˜Ìª%î ˜Ìð3¢ÌÖK¢Ì0M¢ÌÐf¢Ìªpî ˜Î :üÚ Ø	P Ö %XHÇ ¼&€‰—¨‘à(‘È}T•""Êþ•ÖKÊþ˜€M¦¬œp!¦¬œ€W¦¬ €p¦¬£åù Ž£óô b£ù Ž£ô b£'ô b£!ô b£sô b£˜:ô b£?Tô b£ìYô b¤ð3¢¤ÖK¢¤0M¢¤Ðf¢È¥¢ÈR¢      Ìsù ŽÌósô bçÌ7 ç0³4 çð3³4 çÖK³4 ç0M³4 ç.d³4 çÐf³4 ìXH>(6ÌF Ö 6ð3ºü6ÖKºü60Mºü6Ðfºü<8"0 „ÀvT… TÎK7 ÎÞTÎÖKÊþÎRÊþÙÌ7 Ù0³4 Ù""³4 Ùð3³4 Ù K³4 ÙÖK³4 Ù0M³4 ÙÐf³4 ÞÌTÞî ˜Þ""¢Þ K¢üÌF Ö ü""ºüüð3ºüü KºüüÖKºüü0MºüüÐfºü6  f6""Êþ6ÖKÊþB  fB""ÊþBÖKÊþY¨M7 c(# üf@T	&» ô&&¡E #ÀSl rU(UüÚ XÌ üXð3. XÖK. X0M. XÐf. Q! }0 ""ÌT""ÞT      ""zT""VNT""«„T	# }î ˜%&Ì7 %&Œk³4 %&%l³4 %&.l³4 %&Òl³4 ô&kTô&M!7 ô&""¢ô& K¢ö&@;Tú&ày7  'Ì(a'À+0 g'ÖK. g'Ðf. l'Rºül'Bxºü’(Ì(’(ð3¦¬’(ÖK¦¬’(0M¦¬’(Ðf¦¬®(Ì(®(ð3¦¬®(ÖK¦¬®(0M¦¬®(Ðf¦¬Ô(  fÔ(""ÊþÔ(ÖKÊþE, Kî ˜œ,  î ˜'.iüÚ  .ÎÄ ®  .ÖKÃ&  .ÐfÃ&  .œwÄ ® Ô2 dî ˜ð3.7 ð317 ð3	7 ð3K7 ð3sÄ ® ð3 üð3³Tð3ÌTð3(ð3¤Tð3ç7 ð36F Ö ð3Ù7 ð3üF Ö ð3X üð3%&7 ð3’((ð3®((ð3Ô47 ð3v8F Ö ð3<9F Ö ð3;(      ð3¡E üð3ýF üð36KF Ö ð3[M7 ð3T(ð3T(ð3#T(ð3NY üð3ÔZ üð3Ú_(ð3—`(ð3ãe7 ð3kf üð3ßfÄ ® ð3Vs(ð3Bx üð3CyTð3–y(ð3*}Ä”Ô4Ì7 Ô4ð3³4 Ô4ÖK³4 Ô40M³4 Ô4Ðf³4 ï4ð3Êþï4ÖKÊþï40MÊþï4ÐfÊþv8ÌF Ö v8ð3ºüv8ÖKºüv80Mºüv8Ðfºüv8CyF Ö á8àTè8€MÊþì8€WÊþø8Ì(ø8"". ø8ÖK. <9ÌF Ö <9ð3ºü<9ÖKºü<90Mºü<9Ðfºü<9CyF Ö ,:@`î ˜y: }Ty:x}Ty:ð}F Ö €:""0 …:@Qºüª:""Êþª: KÊþ«:<}î ˜;ð3¦¬; K¦¬¡EÎ ü¡E"". ¡Eð3. ¡E K. ¡EÖK. ¡E0M. ¡ER.       ¡E?T. ¡EeYºü¡EZºü¡EÕZ. ¡EÐf. ¡EÀv. ¡EBx. 6F`; ü¥F€W. ýFÌ üýFð3. ýFÖK. ýF0M. ýFÐf. RG  . 6KÌF Ö 6K""ºü6Kð3ºü6K Kºü6KÖKºü6K0Mºü6KÐfºü6KCyF Ö ^KÌ7 ¯K17 vLÎ0 [MÌ7 [M0³4 [Mð3³4 [MÖK³4 [M0M³4 [MÐf³4 gMH0 VN""ÊþVN KÊþåQ""ÊþåQ KÊþRÀ+î ˜R*}Ä”ªS0 F Ö ªS%!³4 ªSÒ!³4 ®S@T®SkT®S0 ®Sö&TTð3¦¬T0M¦¬TÌ(Tð3¦¬TÖK¦¬T0M¦¬TÐf¦¬#TÌ(#T"". #Tð3¦¬#T K. #TÖK¦¬#T0M¦¬#TÐf¦¬#T\g(¶T dTµWk0 NYÌ ü      NYð3. NYÖK. NY0M. NYÐf. ÛYàQTÜY0 î ˜æY@TÔZð3. ÔZÖK. ÔZ0M. ÔZÐf. ÕZ€ üÕZZ7 ÕZÖK³4 ÕZR³4 L^Ì üÚ_ëv(Ú_x¦¬Ú_ x¦¬Ú_®x¦¬Ú_Ry¦¬E`€WTR`""ÊþR` KÊþ—`ð3¦¬—`XH-D —`ÖK¦¬—`0M¦¬—`R¦¬—`Ðf¦¬—`Bx¦¬aª%î ˜aªpî ˜faÎÄ ® faÖKÃ& faÐfÃ& faœwÄ ® ÌeÏÃ˜ HÌeÒÄ˜ HãeÌ7 ãe0³4 ãeð3³4 ãeÖK³4 ãe0M³4 ãeR³4 ãeÐf³4 ãeBx³4 kfÌ ükfð3. kfÖK. kf0M. kfÐf. kfCy üÑf0M7 Ñf¨M7 ÑfÕZF Ö ÑfIq7 Òf¸G7 ÒføMÄ ® Óf3 üÓfÖKÊþÓføMTÓfàQTÓfRÊþ      Óf€p(Óf sTÓfCyTÓf~7 ÔfpF Ö Ôfè!7 Ôf`'F Ö ÔfÀ… üÕf:dî ˜ÖfÙ7 ÖfL üÖfÐz(Öf0(×f sÄ ® Øf q7 ÙfpF Ö Ùf`'F Ö Ùf%SºüÙfÒSºüÛf(# üÛf6#F Ö ÛfˆY üÜfpF Ö Üf8^7 Ýf•`7 Ýf°r(Ýfxs(Þf0H üÞf … üßf  0 ßfÌÄ ® ßfð3Ã& ßf0MÃ& ßfRÃ& ßf#T(ßf˜q(ßfBxÃ& ßfð‘Ä ® àfxK7 àf¸` üàfØrÄ ® âfˆ'(ãfk(ãf%Ç ãfP< üãf—`,˜ãfxdTãfãe>| ãfCynŽ ãf8ŸÄ ® æf  fæf""ÊþæfÖKÊþçf KÄ ® \g%î ˜\gvL0 ·k  î ˜màyî ˜Rq  TTqÌ(}qÖK¦¬}qÐf¦¬›r""fVsð3¦¬      Vs K¦¬.t°P Ö þv (Tw   üwÌ üwØ üw"". wÖK. wBx ü™wÌ(™wÖK¦¬™waT¦¬œw,x¢œwÎx¢œwÙ7 œw{Qx¢œw®STBxÌ üBxð3. Bx,: üBxÖK. Bx0M. BxÐf. BxCy üCy""¢Cyð3¢Cy K¢CyÖK¢Cy0M¢CyR¢CyÐf¢CyBx¢‘yL~¦¬‘yå~¦¬‘yî~¦¬‘y’¦¬–yð3¦¬–y0M¦¬½yÀ+ üáy süÚ íyÌ(óy  Êþöy  Êþz*–0 zð3ÊþzÖKÊþz0MÊþzÐfÊþ¶z@} ü»zÎÄ ® »zÖKÃ& »zÐfÃ& »zœwÄ ® {p!o @}   üg""Êþg KÊþø€ÌTø€""¢ø€ö&Tø€ K¢æƒÌ(æƒ""Êþæƒ KÊþ      «„ÌT«„""¢«„ K¢´‰  Êþ´‰""Êþº‰Ì(Þ‰Ì7 Þ‰""ÊþÞ‰ÖKÊþZŠÕZÊþsŠÌ(=Ps| ®K`"| ®”ð3¢”0M¢¤‘ÎÄ ® ¤‘ÖKÃ& ¤‘ÐfÃ& ¤‘œwÄ ® Ö–¯ äÖ–€¯ ä—M§ P—N§ Pw—O:2 w—R;2 ˜'² z˜’(² zÓ˜O!§ PÓ˜R"§ PÕ˜ª ä Õ˜€ª ä M™rª ä M™’sª ä ›™O!2 ›™R"2 Z£¥_ºüZ£R`ºüê¨¤`~ ( ê¨q_ 2 ê¨ sh   ê¨¡s_ 2 ê¨ÏÃ˜ Hë¨O!¯ äë¨R"¯ äì¨k Ì ì¨«:h   ô¨@jJ² ö¨˜ Hö¨’˜ Hû¨ dh   ü¨,tDü¨€}_ žü¨ÙL < ©ÀN , ©ôk Ì ©7N ¦©†x¢©Šx¢© x¢©|Lk Ì ©  o ¢ ©M­ Â ©N­ Â ©2gk Ì       ©ÀvpÊ©èvpÊ©8wpÊ©ˆwpÊ© xpÊ©Ïxª ä ©ðxpÊ©ypÊ©Òyª ä ©XzpÊ©0!\ z©Ðzk Ì  ©˜ H ©€˜ H"©ìh   #©T\ º #©[ è%©¬&€ ¬%©s'` V %©|(‚ Ô%©€*k Ì %© dr F9©e\9©""fê 9©€K` ì 9©†K` ^9©ŽK` Ô9©´} Z9©O…˜ H9©R†˜ H:©´:<©O!² z<©R"² z<©!€› T =©€pœ Œ>©/Kh   ?©ÀqÒ@©ÌG½ \ C©î!qÒC©""qÒC©ÔZqÒC©õ_P Ö C©ÕfGî C© qZ~C©,tP Ö C©¤’v , C©ÏÃ˜ HC©ÒÄ˜ HD©O!§ PD©"n  D©R"§ PD©½`vúD©È`qÒD©ôvb &D© xx¢D©]zx¢E© †E©qÒE©fª ä E©gª ä F©² zF©² zF©ÜpÊF©€‰À Ø       F©Û‰›ò G©@QÇ ¼G©Xb øG©lYƒ ÜG©qY†  G©xYˆ ~ G©4ZŠ ¼ G©9ZŒ G©@ZŽ ¦G©L[‘  G©Q[’ ¨G©X[” –G©öq– (G©r§ PG©’s§ PH©ÏF˜ HH©ÒG˜ HH©ÏÃ˜ HH©ÒÄ˜ HH©<ÈL < J©œ\J©@	õ üJ©%a | J©O!¯ äJ©"a | J©R"¯ äJ©`'V  J©'² zJ©’(² zJ©0Ÿ :J©Å0Ÿ :J©í0Ÿ :J©1Ÿ :J©=1Ÿ :J©e1Ÿ :J©f­ Â J©g­ Â J©[qH J©xõ üK©O!§ PK©R"§ PK©Ï‘2 K©Ò’2 L©Ï-ª ä L©Ò.ª ä L© K>(N©°m  a©Ðh   a©bŸ'~e©€%ä ve©º% e©& e©
& e©Z& e©ì& e©ô& e©ö&pÊe©]( e©ƒ( e©‹2 e©’Œ2 f©M§ Pf©N§ Pf©pqx¢      h©0!ü |i©r­ Â i©Œs—¨i©’s­ Â i©Àv0 i© wÿ Ti© Š®i©ìŠN i©(ŒØ m©O!² zm©R"² zn©'­ Â n©’(­ Â n©Ý;r Fn©r¯ än©’s¯ äo©M§ Po©N§ Po©HXKh o©Y˜ Ho©’Z˜ Hp©r² zp©’s² zs©Ks© ds©:d"s©†d"s©Šd"s©Úd"s©le"s©te"s©Ýf"s©g"s©"gq`s©%gq`t©Øl ru©f¯ äu©g¯ äv©"h   v©0"h   v©ƒ:x &v©òyh   w©€2h   w©f§ Pw©g§ Py©sYÂ y©N\Â y©P\Â Œ©?TÒ( •©f­ Â •©g­ Â –©¯ ä–©épÊ–©€¯ ä–©‹2 –©’Œ2 —©€%P Ö —©(LÔ ™©`'pÊš©pÊš©?9x¢š©3:x¢š©;x¢š©ÀSx¢      š©ôqx¢š©bsx¢š©Øxx¢š©g…ê›©O­ Â ›©R	­ Â ›©£_h    ©'2  ©’(2  ©P}P Ö  ©+€< ±©˜ H±©’˜ H±©O!§ P±©R"§ P±©2€L < ²©ôk Ì ²©ÏÃ˜ H²©ÒÄ˜ Hµ©Þ‰J² ¶©à8N , ¹© J² ¹©ª%¸ ò ¹©M­ Â ¹©N­ Â ¹©XXn ü ¹©À]p ê ¹©ªp¸ ò ¼©wh   ¼©xh   ¼©€¶ ¾ ¼©¨W¸ ò ¼©Ðz¸ ò ¾©Mq   ¾©O­ Â ¾©L	q   ¾©R	­ Â ¾© h   ¾©Öy ¸ ¾©¯ ä¾©Ht 2¾©… ¾©ça¾©t 2¾©¯ ä¾©'§ P¾©((q   ¾©’(§ P¾©@QqÒ¾©cTq   ¾©@Vq   ¾©˜² z¾©™² z¿©  x¢¿©ª%¸ ò ¿©ªp¸ ò À©Î¸ ò À©M­ Â À©N­ Â Â©ô+k Ì Ã©ª%¸ ò Ã©ªp¸ ò Ã©Ðq   Ã©Þ‰k Ì       Ã©¤µ Â Ã©’¥µ Â Ä© q ´Ä© Kh   Ä©M§ PÄ©N§ PÄ©Ï_­ Â Ä©Ò`­ Â Å©Î¸ ò Å©Bx¸ ò Û©RüÚ Ü©u~:Ý©Š}< Ý©¥}h   Ý©©}›ò Ý©ù}›ò Ý©á~ÎÝ©€f Þ©ºË f ç©p†w  ê©  x¢ë©8ŸË f ì©ˆYq   ªr— ’ ª’s— ’ ªôsJ² ª’Mº 6 ªn8qÒªÏF˜ HªÒG˜ Hª‰SMR )ªÏ² z)ªÒ² z)ªÏx¯ ä)ªÒy¯ ä*ªÏF§ P*ªÒG§ P+ªª ä +ª’ª ä ,ªXR§ P,ªÐz§ P.ªM¯ ä.ªN¯ ä.ªÏ_2 .ªÒ`2 3ªr¯ ä3ª’s¯ ä4ª'ª ä 4ª’(ª ä 4ªNh   4ªÏ_µ Â 4ªÒ`µ Â 4ªrª ä 4ª’sª ä 4ªšwx¢4ªÏx2 4ªÈyx¢4ªÒy2 5ªr² z5ª’s² z6ªpÊ6ª&½ 6ªÊ8< 6ªp;qÒ      6ªVd z 6ª\d z 6ªçeqÒ6ªf2 6ªHfqÒ6ªg2 6ªvwh   6ªŒw Ü 6ª<}L < 6ªÚ}h   6ªü}qÒ6ªÐq ´6ªÔP Ö 6ªýx¢6ª€x¢7ªO:2 7ªƒ:p ê 7ª„:M87ªR;2 7ª€MP Ö 7ªÏ_2 7ªÒ`2 7ªrª ä 7ª’sª ä 7ªÏx­ Â 7ªÒy­ Â 7ª˜ H7ª€˜ H8ªµ Â 8ªµ Â :ª'2 :ª’(2 ;ªf2 ;ªg2 ?ªÏª ä ?ªÒª ä ?ª'µ Â ?ª’(µ Â ?ª Kh   ŠªOl¯ äŠªRm¯ ä‘ª  x¢‘ªpÊ‘ª
zx¢¢ªM¯ ä¢ªN¯ ä¤ª‹2 ¤ª’Œ2 ¥ª¬Wt 2®ªÒ( ¯ªòo ¢ ¯ªMGc ö ¯ªðyMÒ°ªˆrk Ì °ª˜rk Ì ³ªp€k Ì ³ªÏ‘§ P³ªÒ’§ Pµª X'x µªYª ä µª’Zª ä ¶ª°k Ì ¶ªÀk Ì ÉªdÃ Þ      ÉªffÀ Ø Éª€}g ö ÊªéÀ Ø ÊªïÀ Ø Êª$À Ø Êª(À Ø Êª)À Ø Êª4À Ø Êª®À Ø ÊªÀ Ø ÊªÀ Ø ÊªÀ Ø Êª$À Ø ÊªÁGÀ Ø ÊªÇGÀ Ø ÊªìGÀ Ø Êª¡KÀ Ø Êª÷KÀ Ø Êª9MÀ Ø Êª?MÀ Ø ÊªNÀ Ø ÊªNÀ Ø ÊªNÀ Ø Ëª=	À Ø Ëª™`À Ø ËªYqÀ Ø Ëªþ~À Ø ÌªO!ª ä ÌªR"ª ä ÌªÀƒÀ Ø ÍªOS˜ HÍªRT˜ HÍª¹ZÀ Ø Íªqt b Îªa^À Ø Îª·^À Ø ÎªÙzÀ Ø ÎªßzÀ Ø ÏªU}Ÿ :Ïª\}Ÿ :Óª!qÀ Ø ÓªwqÀ Ø ÓªærÀ Ø ÓªOž¯ äÓªRŸ¯ äÔª'² zÔª’(² zÔª–QÀ Ø ×ª¢Z'~×ª¡qÀ Ø ×ª§qÀ Ø ×ªìŠ…Ò ×ª‹­ Â ×ª’Œ­ Â Øª¡À Ø Øª÷À Ø Ùª–QÀ Ø Ùª™QÀ Ø ÙªŸQÀ Ø ÚªlÀ Ø Úª !À Ø Úª‘'À Ø Úª—'À Ø ÚªP2À Ø       ÚªYKÀ Ø Úª_KÀ Ø ÚªY² zÚª’Z² zÚª(xÀ Ø ÚªÏx¯ äÚªyÀ Ø ÚªÒy¯ äÚªÞÀ Ø Ûª'2 Ûª’(2 ÛªfMÀ Ø Ûª¦…À Ø ÝªqÀ Ø ÝªƒÀ Ø Ýª¨MF   Ýª)N(  Ýª[N(š ÞªXx¢Þª€x¢ÞªÐx¢ÞªqÒÞª (qÒÞª¯8x¢Þª°8x¢Þªà8…Ò Þªó8…Ò Þª¸e…êÞª(yx¢àªdÀ Ø àª–QÀ Ø òªÏFª ä òªÒGª ä ôªOS§ PôªRT§ PûªOž¯ äûªRŸ¯ äýªÏ_² zýªÒ`² zÿªƒ:x &ÿªØYu  ÿª*tg L ÿª˜ Hÿª€˜ H «  o ¢  «ÏF² z «ÒG² z «˜rüÚ «Yª ä «’Zª ä «§ P«§ P«°u Æ «Îu Æ «Ïu Æ «¸ƒu r«ö8g ö «OSª ä «RTª ä « }pÊ«È}pÊ«çg L «Ðh   «˜ H      «˜ H«òh   $«p!h   («  x¢(«O!² z(«R"² z(«ì&h   («îXV  («Y¯ ä(«’Z¯ ä(«[qNt («rª ä («’sª ä («[zx¢(«\zx¢+«òh   ,«&Ì Ì-«®}qÒ/«  x¢/«Ïª ä /«Òª ä /« Kh   A«Ð•úA«ZqüÚ C«O!˜ HC«R"˜ HC«®F•úC«à~h   C«þ~•úC«ÿ~•úD«a	•úK«€}Ï øK«˜ HK«€˜ HL«L	E(N«Ï² zN«Ò² zR«®Sx¢R«+dx¢R«l~w R«‹§ PR«’Œ§ PS«P<•úS«˜ HS«€˜ HS«Ï‘2 S«Ò’2 w«˜q-D ‘«˜ H‘«’˜ H‘«O!ª ä ‘«R"ª ä ‘« iP Ö ‘«(iP Ö ’«ÏÃ˜ H“«ìÒ   “«ñÔ “«ø× D “«´Ú  “«¹Ü B“«Àß x “«Ìâ Z “«Ñé x“«Øì ª       “«@w Ð“«¶ w Ð“«O!§ P“«R"§ P“« iP Ö “«(iP Ö “«r§ P“«’s§ P”«"v , ”«T[Z~”«Ty\Ü”«\}\Ü•«ô+k Ì •«Ï-— ’ •«Ò.— ’ •«€Kó ² •«ŠK< •«r¯ ä•«’s¯ ä•«ÀvJ² •«7xE(•«ByqÒ•«GyqÒ•«§y_Ê•«ª ä •«0P Ö •«€ª ä •«¤’P Ö –«  x¢–«M­ Â –«N­ Â –«¦do —«Y— ’ —«’Z— ’ ˜«ÐJ² ˜«0!c– ™«°_Và œ«Ï-¯ äœ«Ò.¯ äœ«ÏF­ Â œ«ÒG­ Â «šwen«âyen«ìyenž«O!² zž«R"² zž«'­ Â ž«’(­ Â  «M¯ ä «N¯ ä «6ÃVà ¢«@WÐ ¢«hWÐ ¢«ÀX ¢«èX £«‹˜ H£«’Œ˜ H£«Àx¢¤«² z¤«’² z¤«ÀvJ² ¤«4zJ² ¥«˜ H¥«€˜ H      §«  o ¢ §«Ï­ Â §«Ò­ Â §«O!§ P§«"v , §«R"§ P§«³s^§«Bx^d §«\}x Ì ¹« Ko ¹« do ¹«4Šw†¹«€Šx¨ ¹« ŒE(¹«ŒqÒº« o º«ÀDo º«ðFx¢º« Ko º«@`x¢º« do º«€po »« o »«À]o ¼«r­ Â ¼«’s­ Â ½«  o ¢ ½«˜x¢½«³x¢½« o ½«t!x¢½«€%x¢½«#Xx¢½«Êj €½« }x¢½«È}x¢½«Ðx¢½«€x¢½«˜€x¢¾«Y­ Â ¾«’Z­ Â ¾«À]o ¾«€po ¾«@ƒo À« do Á« o Ã«`'h   Ã«s'h   Ã«€po Ã«@œo Ä«
&ÔÄ«¯ äÄ«€¯ äÄ«Ï‘2 Ä«Ò’2 Å«@o Å«´%d `Å«Œdb øÅ«´pd `Å«[qb( Æ«ˆfê Æ«ÚgfÆ«h< Æ«$h€      Ç«@o Ç« do Ç«€‰o Ç«‹— ’ Ç«’Œ— ’ È«€po É«@ƒo Ê«@o Ê«Ào Ê« o Ê«€%o Ê«Ào Ê«½— ’ Ê«’¾— ’ Ê«ÏÃ— ’ Ê«Ê— ’ Ë«@o Ë« Ko Ë«Ú}ÿ | Ë«@ƒo Ì«œo Ì«òpÊÌ«O˜ HÌ«R	˜ HÌ«VpÊÌ«P Ö Ì«t!o Ì«ÏF— ’ Ì«ÒG— ’ Ì«ÖKpÊÌ«Y— ’ Ì«’Z— ’ Ì«è]x¢Ì« qr FÌ«2qn:Ì«Ïx— ’ Ì«Ó…d `Ì«ZŠh   Ì«‹h   Ì«ÀP Ö Ì«Ož­ Â Ì«RŸ­ Â Í«  o ¢ Í«Rz Í«<Rz Í«ßfV Í«6xy ¸ Î«/	pÊÎ«0	pÊÎ«1	pÊÎ«r² zÎ«’s² zÎ«@ypÊÎ«Wyh   Î«Xzx¢Ï«êLºÏ«Î| Ï«®pÊÏ«lpÊÏ«0Mo ¢ Ï«ìXpÊÑ«  üÚ Ñ« KüÚ Ñ«¸Zx¨       Ñ«Àvx¢â«çMaÎå«ˆrfê å«rª ä å«’sª ä é«Ï_­ Â é«Ò`­ Â í«f² zí«=fNt í«g² zï«Ï_2 ï«Ò`2 ð«OS¯ äð«RT¯ äò«ybVò«f˜ Hò«g˜ Hò«šv , ó«øo ¢ ó«þo ¢ ô«ÞüÚ ù« dqÒ	¬ßW¸ ò 	¬ïW•ú	¬ðW•ú	¬ñWk Ì 	¬®xg ö 
¬¸—¸ ¬'ª ä ¬’(ª ä ¬ìQüÚ ¬0 —¸ ¬°"qÒ¬8;—¸ ¬rª ä ¬’sª ä ¬÷v¸ ò ¬wk Ì ¬	wk Ì ¬|—üÚ ¬Ÿ¸ ò ¬¯•ú¬°•ú¬±k Ì ¬qÒ¬Ï2 ¬@qÒ¬Ò2 ¬&Šx¢¬— ’ ¬— ’ ¬Ïx˜ H¬Òy˜ H¬š•ú¬®•ú¬ƒd•ú¬îe•ú¬Ÿ¸ ò ¬¯•ú¬°•ú¬±k Ì ¬8"—¸ ¬Ö}q`¬ô b      ¬9"•ú¬¬:ô b¬„K€|¬†K€|¬ŠK€|¬£K€|¬³K€|¬ÚKüÚ ¬,L€|¬ÏL†¬M2 ¬hM€|¬Mq`¬”M€|¬NüÚ ¬N2 ¬Rô b¬d^ô b¬[qô b¬àô b¬*–¡v¬o–¡v¬p–¡v¬q–¡v ¬X¸ ò 1¬´Kw†1¬Nx¢6¬Ïµ Â 6¬Òµ Â 9¬’> Y¬O!§ PY¬R"§ P[¬² z[¬² z[¬@w Ð[¬¶ w Ð[¬O!2 [¬R"2 [¬½'—¨[¬VN—¨[¬àQ [¬ø€—¨[¬ZŠ—¨\¬Ñ(—¨]¬¥Z›ò ]¬§ P]¬€§ P^¬›ò ^¬?:›ò ^¬@:›ò ^¬t:›ò ^¬ÐW›ò _¬€pqÒa¬ KpÊa¬¦Z—¨e¬@QqÒf¬@QqÒg¬  x¢j¬<}L < j¬\}P Ö j¬ƒ}c  j¬«„›ò l¬ÀžqÒm¬—¨      m¬—¨m¬º8—¨m¬¿8—¨m¬Å8—¨m¬üX—¨m¬ë~ n¬"qÒo¬.—¨o¬HS—¨o¬ˆY—¨o¬ø€—¨o¬ZŠ—¨¬ } |¬˜ H¬ } |¬’˜ H‚¬ÏÃ˜ H„¬ZŠx &„¬€Žx &†¬O!² z†¬R"² z‡¬¶}x &‰¬óLx &‰¬N…ê‰¬|Zx &“¬u€z F “¬}€z F ƒ±:2ÐV †±/KÐV Ž±J…ÐV Ž±P…ÐV “±†}ÐV “±”ÐV 0²#	ÐV ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      vÌF Ö v?Tºü«r	L < «ìN , «›:N ¦«¤:P Ö «8^V  «—`Z «Xf[ è«z\ º Å€M\ zQd_ 2 Q#€_ žRs'` V S(` ì S.` ^S6` ÔS•a | S4Kb &SXb øSÝfc ö S…sd `Stg L S
zg ö Sà~h   SÞ‰m  Ta	k Ì TØl rUqn  U€qn ü UPso ¢ V:p ê VZXq   Vå~q ´YÀ]r F]˜qt b ^ét 2^«„u  ^Þ‰u Æ ^ËŒu r_ZXv , _p†w  `à8w aÏ}w Ðbà’x Ì c"x &c6xy ¸ cu€z F cU…z c| gÀ| ®h} |ê¤`~ ( %¬&€ ¬%|(‚ ÔDKyã. GlYƒ ÜGqY†  GxYˆ ~ G4ZŠ ¼ G9ZŒ G@ZŽ ¦GL[‘  GQ[’ ¨      GX[” –Göq– (aWT— ’ aXT˜ H¹+KäÒ ¹¡K×Þ¼€¶ ¾ ÀÎ¸ ò ’Mº 6 ày½ \ 6&½ ×ìŠãº×Œâ ØìÀ Ø ì „ „:Ã Þ%ÌÄ ® %RÇ %?TÃ& %\}Ç ¼*c,Ë f *@-Ì ª ,&Ì ÌK€}Ï øRBzÙœ “ìÒ   “ñÔ “ø× D “´Ú  “¹Ü B“Àß x “Ìâ Z “Ñé x“Øì ª •€Kó ² £àyÿ | ¹€Šâ4½Êj €Ä
&ÔÌr	Ú¶ Ï+}éÔ Ï"€á4 Ñ¢ZÚ2 9’> Îì Îu:ä vÎ˜:î ˜Î—`÷ äÎl†ù Ü E€Mü |{ ÿ T{—`F{<d{ùe0 {l†ü ~ ®~à8N » ô&&¡E ö*}Â ôXRÒ( ""?TÊþ´'Èd       œ,< œ,(KÎœ,0zf ø8—`~€:Î z ƒ:à Ü ¡EÌ ü¡E?T. VN'x ”Th~(  ”Tƒ…(š —`Ì(—`R,˜—`?T¦¬—`\}-D ãeÌ7 ãeR>| ãe?T³4 ãe\}>([qì	D[q&E([qRGî [q•H [qìJ² [qfKh [qûK[q(LÔ [q–,Lº[q!4MR [q¡:M8[q€MMÒ[qE`Nt [q—`T[qXfV [qØhVà [q¨pWÐ [qøpX [q.qZ~[q/q\[qgs\Ü[q’s^d [q³s^[qt_Ê[qta[q,taÎ[qzb( [qw~bV[qCc  Åq€Mc– ›r""fôx@fê ôx"gfôx (h< ôx }h€CyÌTCyRnŽ Cy?T¢Cy\}ñòyÐn:lzœo *}ÈKÄ”Ò…BzpÊl†  q`l†¸qÒ      l†Ävúl†ôw†l†@x¨ l†O	x¢l†«€Ê l†¤€|l†ìüÚ l†{…  l†¬R…Ò l†ËS…êl† g†l†[q•Hl†*}•úl†L†—¸ l†9—¨l†>›ò l†L l†*–¡v9©´} Z<©!€› T =©€pœ Œ=©rŸ :=©§r2 =©¨r§ P=©©rª ä =©ªr­ Â =©«r¯ ä=©¬r² z=©­rµ Â J©@	ô bJ© xõ üJ©!xù Že©Z& i©(ŒØ s©Úd"Ü©u~:×ª¢Z'~Ýª¨MF   «šwen0²#	ÐV ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           Ö M  	 NŽ€À*  Ýª¨M    NŽ€À   ¯”L  ¹«´‰@      (T   Ýª¨Mh  ¯”   
         *    ÷	  æ@ „



Àe 
à± û‡„TT  ¹«´‰*  & TTH1C„ÔdTTL$)ÔdLt ÔdLÔd¡   L Î
æÖ‡        fM  	 NÀEÂ*  vÌ    NÀEÂ   ¯”L  vR@  vBx@  *  ƒ  @  ƒš@  …@Q@  …%S@  …ÒS@  *  	@@  Å@Q@  ²Î@  Ìü@  Ìªp@  *  6ÖK@  6Ðf@  üÖK@  üÐf@  ª%  @  *  l'R@  l'Bx@  E, K@  Ô2 d@  v8ÖK@  *  v8Ðf@  <9ÖK@  <9Ðf@  ,:@`@  …:@Q@  *  ¡EeY@  ¡EZ      @  ¡ENq@  6KÖK@  6KÐf@  *  RÀ+@  Ùf%S@  ÙfÒS@  \g%@  ·k  @  *  mày@  Z£¥_@  Z£R`@   ©@  :©@  *  P©@  ª@  «\g@  «)x@  Ž±J…@  *  Ž±P…@      (  vÌ(66Kh6Ìhî *  üÌhäð36hæ ð3ühÜð3v8h&ð3<9h°*  ð36Kh€v8Ìh.v8CyhL<9Ìh¸<9Cyh*  y:ð}hp6KÌhˆ6KCyh ªS0 h|ÑfÕZh *  ÔfphÔ Ôf`'h¬ÙfphÙf`'hpÛf6#h`   Üfphn¯”   
   vÌ  *        ÷  À  ¬   ÷	  Á  Â  w   &  
	@ª%  ²Î l'R$l'Bx(\g%*  & ‡ ÷	        Á  Â  ÷	  ÷ÿÿÂÿ÷
  ÀX ð5 2 (  ²ÎvRvBx\g%¡ENq"màyX *  L Á  Â  ÷	  Îe ‡ ÷-œÿ  ·
  ‡ ·
Žÿ   …ÒS…%S·k  ¡ENq"¡ENq*  r ÷Šÿ÷    À  7   ÀX ð5 2 Îe"  ªP©P©P©màyX *  ˜  ‡ ÷`ÿÁ  Â  À  ÁLÿ
÷	  Á     ÙfÒSÙf%S…@Q$:©(¡EZ$  ¾ Â  ÷	  7Š  7Š Îe ‡ Á  Â  ÷	(  ¡EeY
·k  …@Q…@Q 6Ðf 6ÖK*  Þ   Îe ‡ Àáÿw   ÷  ÷-    Îe ‡ ÷U   E, KÔ2 dŽ±P…Ž±J…	@*     À  ð   ‡ Á  Â  ÷	  Îe ‡ Ààÿ      &  Ìü
P©Ž±J…v8Ðfv8ÖKE, K(  *w   ÷  ÷-    Îe ‡ À  ð   Â&  Ô2 d
Ž±P…Ž±J…	@P©"Ž±J…&  Nø ÂÁú À  P”Â
ýÁ  ñø  ‡ Á&  màyø màyú ƒšÌªpmàyø *  p  Â  ÷	  Îe ‡ Àßÿw   7
vþ÷  ÷-  &  6KÐf6KÖKE, KÔ2 d"Ž±P…(Ž±J…*  –  ÷ bþÎe ‡ ÷  w p À   œ ÷	~  	@Ž±J… P©*  ¼BÀ  ÷	t Àäÿ÷	  À  0Š 0
 Á    Ž±J…RÀ+P©(ƒš*  âÀ ŠÀ
ýÁ  À ŠÀ
ýÎe ‡ À  ð  $  Ìªp ƒ  Ìªp $P©(Ž±J…*         w  ÷ðý‡ 7
èýÎe ‡ Á  ñ   fæ  Ìªp"ƒš*  .  æ …÷	  Æe …ñ   q  fæ  æ  Ìªp«\gƒ  &Ìªp*  T …÷	  Æe …ñú  ÷U   ‡ ÷ÿÿŠý÷
    
«\gmàyú Ìü(¡ENq*  z‡ ·
€ý÷-|ý  ‡ ÷rýÀ  7   À    ¡ENqª%  "P©(P©*   7   Îe ‡ À   œ ÷	‚ À  
÷	  Á     P©P©Å@Q$:©(üÐf*  ÆÂ  ÷	  7Š  7Š Îe ‡ ÀÞÿw   ÷  ÷	(  üÖK
E, KÅ@QÅ@Q  Ô2 d$Ž±P…*  ì  Îe ‡ À   œ ÷	: À  À‹À € ŠÀ   ,:@`P©Ž±J…*  €€
       Àåÿ÷	  Îe ‡ À  ð   ÷U     RÀ+P© Ž±J…(Ìü*  8‡ &¦÷  À  œ1 
Â  À‚ À
ü   ©ª%   ©*  ^œ ÁÁ ‚€‡ ÷  Á  Â  À    	@Z£R`"Z£¥_(P©(  „ œ ÷	®ÿÀ  
÷	  Á  Â  ÷	  7Š  7Š&  …:@Q:©<9Ðf<9ÖK E, K$…:@Q*  ¨ Îe ‡ ÀÝÿw   ÷  ÷	  Îe ‡ À   œ"  …:@Q Ô2 dŽ±P…,:@`&P©*  Î ÷	fÿÀ  À‹À € ŠÀ €€
 Àåÿ÷	  Ž±J…*  ô  Îe ‡ À  ð   ÷  ÷U   ‡ Âø Â(  RÀ+P©Ž±J…	@ Ìü&màyø    Á      ú À  P”Â
ýÁ  ñø  ‡   màyú ƒ  Ìªpmàyø        ðM  	 PÀ¨Ý*  «r	    PÀ¨Ý   ¯”L  ê¨ s@  ì¨@  *  ©ô@  ©|L@  %©€*@  9©""@  y©N\@  *  ¹©XX@  ¾©M@  Â©ô+@  «°@  «Iq@  *  «)x@  «ñ@  «™’@  ¹«´‰@  ó«ø@  *  ¬±@  ¬ƒd@      (  "© d¸ ­«8N*  ü¨Ùh  H©<ÈhÔ ±©2€h< 6ª<}h,j¬<}h
 
  ¯”   
   "© d      PUKCABù  ãÿ      ê¨ s¹©XX ­«  *    ÷	8 ÷	 ‡ Ã ó  À  3à Àe 3 ÷	  ©ô y©N\ ì¨$  &   Å  ÷	  Â ÷	  ù‡      ‡ ÷	  ÷	è Ä(  «°©ô«™’"© d ó«ø¹«´‰*  F   Ñ Ã Å& @ 
BÝ ‘”Â
ý  ©|LÂ©ô+ *  l Ál É ÑEÿÀ Àe Â
 Â
ýÁŽ Ã   y©N\l $y©N\Ž *  ’ ÀÀe Â Â
ýÀ Àe Â Â
ýÁ
  (y©N\*  ¸ Ä  
Å A!†Beü‰‡ ÷	  ÷	  ÷	  "© d  y©N\ "«°&«Iq*  Þ   ×,  ÷5  ÷	HÿÂ ‚÷5 2 À  «ñ¬ƒd $¬±2 *   Á À  Á  $Â
ü‡ ÄÎÿ÷    w *  y©N\ %©€* y©N\%©€*$ê¨ s&9©""(  *  Á!
W  üÁ  Ñ Ñ 

Á ‡       &  ¾©My©N\y©N\ y©N\$y©N\        zM  	 NÀÅç*  «ì    NÀÅç   ¯”L  ©7@  ©0!@  *  "©ì@  #©@  J©`'@  ²©ô@  Â©ô+@  *  («îX@  ¬ƒd@      (  ©D¸4 ¶©à8h.   ­«8 ©Àh  ¯”   
   ©D      (              	 *  ( #©(«îX
J©`'©7Â©ô+²©ô       RMSBCK - VERSION  1.5       ­«      ÷5  ÷	  ‡ Å  ÷	  ‡   ¬ƒd ©0!©D  "©ì       0M  	 NÀÅç*  «›:    NÀÅç   ¯”L  ü¨Ù@  ©ô@  *  #©T@  %© d@  C©,t@        n©Ý;@  ›©£_@  *  ²©ô@  7ª€M@  °ªˆr@  °ª˜r@  ³ªp€@  *  ¶ª°@  ¶ªÀ@  ÿª*t@  ‘« i@  ‘«(i@  *  “« i@  “«(i@  •«¤’@  §«\}@  ¬ƒd@  *  j¬\}@      (  ­«8Þ ©7h  ¯”   
   ­«      ÷  ÷	  ÷	  w&   w( $  §«\} §«\} ü¨Ù7ª€M¶ª°*    w   @ ÐÁ  Â ”Â
ý÷5  Å  ¶ª° 
³ªp€°ªˆr$¬ƒd "  >   ÷	  ÷5  ÷	  ÷	  Ã  ÷	(  ©ôn©Ý;¬ƒd ‘« i“« i§«\}$  \   Â÷	  ÷5  Å  ÷	  ÷	  Ã(  ÿª*t•«¤’¬ƒd ©ô%© d C©,t*        |   ÷	  C ÷5  ÷	  ÷	  Å@ ÷	  Ã(  §«\}ÿª*t¬ƒd ‘«(i“«(i&j¬\}*  ¢  ÷&   ÷(  À ÐÁ  Â Â
ý÷	  $  ©ô 
¶ªÀ¶ªÀ °ª˜r(#©T  È Å  C ó5  2 ÷	  ‡   ²©ô›©£_       @M  	 PÀEÂ*  «¤:    PÀEÂ   ¯”L  ê¨ s@  ì¨@  *  ©ô@  %©€*@  9©€K@  C©¤’@  H©<È@  *  v©0"@  y©N\@  ²©ô@  ¹©À]@  ¾©M@  *  ¶ª°@  «°@  «Î@  «Ï@  «¸ƒ@  *  «ç@  “«@@  “«¶ @  ”«"@  •«ô+@  *  «#@  «Iq@  «)x@  «ñ@  «™’@  *  §«\}@  ¹«´‰      @  Í«6x@  Ï«Î@  ó«ø@  *  ó«þ@  	¬ðW@  ¬±@  ¬±@  [¬@@  *      (  "© d¸Z ­«8üØ	hÄ.t°h*  C©õ_h†C©,th"—©€%h†  ©P}h<6ªÔh> *  7ª€Mh  ‘« ihÀ ‘«(ihò “« ih6“«(ihP*  •«0hê •«¤’hžÌ«h¤ Ì«ÀhN j¬\}hœ
  ¯”   
   "© d  $     ú    ê °ý    †   °ý    †  ú  îÿ&  ê¨ s
­«ê ­«† ­«†  ê¨ s"    ”   ù  Ýÿ     ú  Öÿ    ðü  çÿ(  ­«” 
ê¨ s¾©Mê¨ s¾©Mê¨ s  >   ðú  éÿ   þ  ¯ÿ  ù  Âÿ&  ¾©Mê¨ s¾©Mê¨ sv©0"ê¨ s  V             ¾©M ­«  "    Á ÷	6 ÷	  ÷	  Å  ÷	  Å  ÷	(  ©ô Ï«Î«Î•«ô+«Iq©ô*     Å  ÷	V 	‡÷	  ÷	  Å  ÷	  æ‡ Å  @&  C©¤’•«ô+«Ï©ô«™’&•«ô+*  D  ð  ‡ Ã    Äà1 ÷5  2 ”  ì¨$¬±2 *  j Ô & ( Â`± ‡ Â w   ó ± ‡   "© d ó«ø*   ¡ ‡ ÷	 ÷	  ÷	  ¡ ‡ ÷5  2 Â Âí  òU  Í«6x¹©À]¬±2 &ì¨*  ¶  € Âÿÿ‡ ÷	  ÷,&   ÷,(  
÷	  ÷	  "  H©<È¶ª°¶ª° $«°(«Iq*  Ü Â  ÷	  ‡î‡ ÷	  ¡ ‡ ÁÃ ÷	  ¦æ÷	$  "© d        
ó«ø“«@§«\} "«ç*    ÷	  ÷	  ƒ†ó•þÿ Ãe ‚Â
ì‡ À÷	    «Ï«Iq”«"(«¸ƒ(  (÷	  Â. ÷	  ‡ ÷	  ÷	n ævæ~æ  Ã*  «Iq
"© d. ó«øH©<Èv ~$[¬@*  L ÷,&   ÷,(  	÷	  ÷	  Ä ÷	 íÆe$  ©ô 
¶ª°¶ª° «°«Î*  r ‡ Âüÿw   C w   ÷	  Å  ÷	  Å  ÷	&  Í«6x“«¶ ¹«´‰©ô"«Iq&•«ô+*  ˜  ÷	Ž Å  ÷	œ ÷	 ‡ ÷	Žþðýÿ& ðÿÿ( ð  «Iq©ô*  ¾  ‡ ÷5  2 Á  ÷	*  ‚À Á P$(  y©N\ ¬±2 %©€*"y©N\ &%©€* *  ä	À Á       1  ~  Â
ó‡ , 1,  •«ô+ ©ô *  
& ,( 
Ñ- Ñ- Ñ- ‡ ÖÝ÷	     	¬ðW 	¬ðW 	¬ðW (”«"*  0†þ	 Å  ÷	  Ö‡ ÷	  †þ	 Ö‡ Á÷	Vÿ  ©ô«ñ”«"*  VÃ æ’æ„æ˜æ÷	  ƒ÷	° Ä ÷	ÿÂ
  §«\} 
’„˜«Ï*  |ôÆe ‡ Âþÿƒ ³ ‡ ÂüÿøÂýÿõ¦æ*  ¢ ÷	” · Å ÷	è ÁÀ Ã ‚÷	  ÷	Z (  ¬± ¬± •«ô+ §«\} $Ï«Î*  È¦æ÷	  Å  ÷	  Å  ÷	¤ ÷	jý÷	  Å  ÷5&  
«Iq©ôC©¤’•«ô+"«Ï&©ô*  î  2 C Ã ó  ÷	        ƒ‚Â
Ù÷	  ‡   ¬±2 «™’&C©¤’*  ÷	  ð& ð( ‡ ¦÷	ìÿÂ”÷	  ° ŠÅ  ‚  «ç9©€K&•«ô+*  :‡ ÷5 2 Â Å w! 
†W­ üÿD a  
¬±2 §«\} §«\} *  `Åe óÅ  C ³
 3
 ÷	  Â8 ÷	  ‡ ÷	  ²©ô«# "© d8 $ó«þ*  †  ÷	  †C ÷	ý÷	  ‡ Ä  L4á Ã À"  ¹«´‰”«"Í«6x§«\}&©ô *  ¬÷	  Â 3 ÷5  2 Äí  3 ”T

Ô  «¸ƒ¬±2 ì¨  Ò Ô
 Ô Âm  ³ Å  ÷	&  %©€* %©€*
 %©€* ì¨©ô  ê  Â$ ÷	  ÷e   ‡ $  «™’"© d$       ó«ø§«\}§«\}        øM  	 NÀhð*  «8^    NÀhð   ¯”L  ê¨ s@  ì¨@  *  ü¨€}@  ©ô@  ©Ðz@  %©€*@  9©""@  *  G©X@  J©%@  J©"@  a©Ð@  t©Ø@  *  v©"@  v©0"@  v©òy@  w©€2@  y©N\@  *  ›©£_@  ²©ô@  ¶©à8@  ¼©w@  ¼©x@  *  ¾©M@  ¾©((@  ¾©cT@  Â©ô+@  Ã©Ð@  *  Ã©Þ‰@  4ªN@  ¶ªÀ@  Íªq@  ÿªØY@  *  («ì&@  /« K@  C«à~@  •«ô+@  «•@  *  «E`@  «)x@  §«  @  Ã«`'@  Ã«s'@  *  Æ«ˆ@  Ì«‹@  Í«  @  ó«þ@  ¬	w@  *  ¬ @      (  ©D¸’ ­«      8âJ©`'h¼   («îXh  ¯”   
   ©D       ý  êÿ  ðú  éÿ  @þ      ý&  Ã«s'
¾©((Ã«`'¾©cTê¨ sv©"     ¾ÿ  `ù  ½ÿ  0þ  ¼ÿ  @ý&  ê¨ sÃ©Ðê¨ sÃ©Ðê¨ sÃ©Ð  2   Ãÿ  þ  ±ÿ  àÿ  °ÿ   þ&  Ã«`'¾©cTê¨ s¾©MÃ«`'Ì«‹  J   ¯ÿ  Pû  ®ÿ  ú  ­ÿ   û&  ê¨ sv©0"Ã«`'Ì«‹Ã«`'¾©cT  b   ¬ÿ  0ý  «ÿ  ü  ©ÿ  `ÿ&  Ã«`'¾©cTÃ«`'Ì«‹ê¨ sv©0"  z   Îÿ  0ù  ÿ   ý  ºÿ    &  ê¨ s¾©Mê¨ s¾©Mê¨ s¾©M
   ­«  *    Å  ×-  ÿC Ä& 3
&       ÷	  ÷	²×-  ÿ  Â©ô+
(«ì&›©£_&(«ì&*  & 3& ó5 2 w   ó•"  ó•	 3 ó•  ó  v©òy*  L    ×-  ÿóU  óE  3Š- 3, s(   ¼©x
(«ì&*  r ÷	  ó  ó  ÷	  Â  ÷	  ÷	@÷  *  ü¨€}
%©€* «E`©D  ó«þ&C«à~   ˜ À  Àe  Á  ÷	  †÷	  w   Å&  w©€2
¬ a©Ðt©Ø›©£_Ã«`'*  ´   ÷	  ‡ Å  C ÷	
ó5( 2 ²×-  ÿ&  •«ô+G©X²©ô"(«ì&*  Ú f¦æ 
 Ý  4  S”À
ýƒ‚€*   ó5 2 <ó +EÃ
W¥: ûÃ÷U *  &  ÷5   u÷5   x÷5   t÷5         	&f   /« K
¼©w/« K/« K"/« K*  LW¤; kÀ
û€7
  ÷   
Ý  Å    ì¨©Ðz(y©N\*  r÷	   A÷	Æ Fó &÷5   X÷	  ÷5     Íªq¼©w"ÿªØY(/« K*  ˜OMEÃ
W¥: ûÃE7
  7
 ÷   ÷  ¶ªÀ ¶ªÀ &ì¨*  ¾  7
  7
 7
 ÷	r Å& B  
 Ý    ©Ðz
¶©à8¶©à8 ¶©à8 *  ä—¤: üÀ
W¤] ûR”À
ýBí µ ÷	¼ ÷	*  
Ž ÷&   ÷(  ‡ Ä  ÷    w   ÄÐÿ
÷(  
Ã©Þ‰Ã©Þ‰ §«  ê¨ s9©"" 4ªN*  0    w   Äåÿ÷Ä  íÅ  C 3, s( Â   ê¨ s      9©""
Æ«ˆÍ«  ²©ô*  V& ò   ò•(  Â ³
 
 ³  óe 
 s  ¬	wÂ©ô+ *  | ÷	  ÷	  ÷	  û‡÷	B Å  ÷	  ‡ À  ÷	
 &  J©%«•J©"©ôG©X$y©N\*  ¢À  ÷	 ‡ Â 
Â
ýÂ  
‡ À    %©€*¶©à8(¶©à8  ÈÐe PP‡ ó5  2 óE 2 ‡        ÚM  	 NÀEÛ*  «—`    NÀEÛ   ¯”L  D©b@  D©Åb@  *  G©]\@  G©…\@  J©$@  i©{@  i©Å{@  *  ¹©]\@  Ý©Ý@  («$@  («E$@  U«Ý@  "  «)x@      (  
­WTìJ ¯”   
   
­WT        («E$         D©Åb               G©…\ "   "     i©Å{           («$         D©b         G©]\           i©{ 0   0     U«Ý           («$         D©b         G©]\           i©{ (   (     Ý©Ý           («$         D©b         G©]\           i©{ H   H     ¹©]\           («$         D©b         G©]\           i©{         J©$       Ò M  	 NÀÅÎ*  «      Xf    NÀÅÎ   ¯”L  ¼©w@  ç©p†@  *  ¥ª¬W@      (  ­«82 #©h  ¯”   
   ­«  *    ÷	  ‡&f€ÀEÿ  @
÷	  W¤+ ÷U     ç©p†¥ª¬W(¼©w  & À
ø€¡ ‡        À M  	 NÀ…È*  «z    NÀ…È   ¯”L  •«ô+@  §«\}@  *  Í«R@  Í«<R@      (  ­«8 #©Th  
  ¯”   
   ­«      Ã À  ÷	  ÷	  ‡   •«ô+ 
§«\}Í«RÍ«<R       ¸M  	 NÀ…È*  Å€M    NÀ…È   ¯”L  %©€*@  «¯@  *  «&@  «•@  «\g@  «)x@  ¬¯@  *  ¬¯@      (  û¬ d¸&      ­¿d¨ û¬ù_8¢   ©0!h  ¯”   
   û¬ d            TI:  ¬¯
¬¯  *   		RMS-11 BACKUP UTILITY
		-----------*  2 -----------
FUNCTION: CREATE BACKUP C*  X OPIES OF FILES
FORMAT:   BCK OUTFILE[*  ~ /OPTIONS]=INFILE[/OPTIONS][,INFILE[/OP*  ¤ TIONS]..]

GLOBAL OPTIONS: 
 ? OR HE*  Ê LP	TYPE HELP MESSAGES
 ID		IDENTIFY C*  ð URRENT VERSION NUMBER
 QU		ENABLE QUE*  RY MODE
 SL:FILESPEC	PROVIDE SUMMARY *  <LISTING FILE

OUTFILE OPTIONS:
 RW		*  bREWIND MAGNETIC TAPE       BEFORE WRITING
 *  ˆSU		SUPERSEDE EXISTING SEQUENTIAL FILE  ®
   °*  °INFILE OPTIONS:
 CD:DD-MMM-YY	BACKUP *  ÖFILES BASED ON CREATION DATE
 RD:DD-M*  üMM-YY	BACKUP FILES BASED ON REVISION D  "ATEL
   ­¿d        %©€* û¬ù_  *    Å  C 3
( 3Š, ó * ó• - ó  ó    û¬ d  û¬ d (%©€**  &  ó• 3 3
 ÷	  ×,  ‡ Å C ó•    «• û¬ d *  L  ó•  ó   ó  ÷	  ×,  ‡ À   ­¿d  «&(û¬ d *  r Á£÷	 À°Áu ÷	 Å  C ÷	  ‡ 3         û¬ d°û¬ d  "«¯  ˜ s ÷	  ‡   
«\g       lM  	 NÀ…á*  Qd    NÀ…á   ¯”L  ì¨«:@  û¨ d@  *  9©""@  >©/K@  Æ«ˆ@  å«ˆr@      (  "  ­P8h ê¨qhd ê¨¡sh  ¯”   
   ­P  *    Â  ‚‚ € ÷5   ð ÷E   ÷5   û¨ d>©/K$>©/K*  &   ÷U   ÷5   & Æå ‚Òœ ŠÒ   >©/K>©/K>©/K   L 

ƒÄÁÿ÷d   ÷d   ÷	  w   "  d å«ˆrd 9©""Æ«ˆì¨«:       ¸ M  	 NÀÕ*  Q#€    NÀÕ   ¯”L  	¬ðW@  ¬w@  *  ¬ @      (  ­P8 ü¨€}h        ¯”   
   ­P  "    Â  ³ Ä  3& ô   ô•(  ‡   ¬ 	¬ðW¬w       – M  	 NÀEÂ*  Rs'    NÀEÂ   ¯”L  %©€*@  y©N\@  "      (  "© d¸ %©s'h  ¯”   
   "© d  
          y©N\ %©€*        r M  	 NÀEÂ*  S(    NÀEÂ   ¯”L      (  ­P8   9©€Kh  ¯”   
   ­P  
    Â Â‡        v M  	 NÀEÂ*  S.    NÀEÂ   ¯”L      (  ­P8
   9©†Kh  ¯”   
   ­P      ÂEÿÂ ‚‡        ¨ M  	 NÀ…È*  S6    NÀ…È   ¯”L            (  ­P86   9©ŽKh  ¯”   
   ­P  *    ¦Ä& Å( Â$ —¬ B ò5 2 Äå …  & Â „ … ‚‡        ªM  	 NÀÅÎ*  S•    NÀÅÎ   ¯”L  ê¨ s@  %©€*@  *  v©"@  v©0"@  ¹©XX@  ¼©w@  ¾©M@  *  ¾©L	@  Ã«`'@  Ã«s'@  Ì«ZŠ@  ó«þ@  *      (  "© d¸z ­P8, J©%h  J©"h$ 
  ¯”   
   "© d      ðü  çÿ  `ý  èÿ  ðú  éÿ  0þ&  Ã«s'
¾©MÃ«`'¾©MÃ«`'¾©M     ¼ÿ  @þ  ñÿ  ý  ¾ÿ  `ù&  ê¨ s¾©L	ê¨ sv©"ê¨ s¾©L	  2   ½ÿ  þ  ±ÿ   þ        ¯ÿ  Ðý&  ê¨ s¾©L	ê¨ s¾©Mê¨ sv©0"  J   ªÿ  þ  žÿ  ü  ©ÿ   ý&  Ã«`'Ì«ZŠê¨ sÌ«ZŠê¨ sv©0"  b   ºÿ  0ù  ÿ  ù        &  ê¨ s¾©Mê¨ s¾©Mê¨ s¹©XX
   ­P  *    ó   ó•#  3Š- ó•@  ó  ó  ‡ Â  ¼©w"%©€* 
  &   w     "© d  ó«þ       Ò M  	 NÀEÂ*  S4K    NÀEÂ   ¯”L  ›©£_@  ²©ô@  *  Â©ô+@  Å«´%@      (  ­P8 D©ôvh  
  ¯”   
   ­P      Å  ÷	  Å  ÷	  Å  ÷	  ‡ &  Â©ô+
›©£_²©ô›©£_Å«´%›©£_       þ       M  	 NÀÅÎ*  SX    NÀÅÎ   ¯”L  ©Ðz@  6ªÚ}@  *  «&@  «)x@      (  ­P8F G©Xh    Å«Œdh ¯”   
   ­P  *    @ ð€  0Š ð$ ÷	  ð ÷	  ó5 2   «&"6ªÚ}$  & 
ðýÿ& ðÿÿ( ð   0
& 0
( ‡   ©Ðz       jM  	 NÀ…È*  SÝf    NÀ…È   ¯”L  a©Ð@  w©€2@  *  ¼©x@  ?ª K@  ¥ª¬W@  «ò@  +«ò@  *  C«à~@      (  "© d¸4 ­P8¦ ¯ªMGh  
  ¯”   
   "© d  *    /€ X 
 '€ X 
 )€ X 
 (€ X 
 *€  ‚ *  ­PX ­PX ­PX  ­PX (­P‚         &     €A €B €
   ­P  *    7
  ÷Eÿ¿  ·  €ÀEÿ  @÷	  ÀƒÃ  "  ¼©xC«à~?ª K ¥ª¬W("© d  *  & s¢  ó  û	 û\  Ál Àì Ãe *  L × ( êåÒ‡ w  ·
  ÷   Ä( L¬	 7]$  "© d( a©Ða©Ðw©€2 "© d( *  r    Äe !4 õ‡ w  ·
  À
W¤] üw  "  C«à~"© d4 +«ò+«ò&«ò  ˜ ÁEÿçÁU  wP  ‡   C«à~       ìM  	 NÀ…È*  S…s    NÀ…È   ¯”L  Î :@  ê¨ s@  *  <©!€@  s©À@  v©"@  v©0"@  ›©£_@  *  ¹©XX@  ¾©M@  ¾©@  Ü©u~@  ¥ª¬W@  *  «•@        «\g@  «)x@  Å«Œd@  Ì«ZŠ@  *  ó«þ@  ô«Þ@  ¬¯@  ¬ƒd@  ¬¯@  *      (  "©t¨@ "© d¸z Å«´%hr Å«´phv   ­P8à Ì«Ó…h  ¯”   
   "© d      ðü  çÿ  `ý  èÿ  ðú  éÿ  0þ&  ê¨ s
¾©Mê¨ s¾©Mê¨ s¾©M     ¼ÿ  ý  ¾ÿ  `ù  ½ÿ  @þ&  ê¨ s¾©Mê¨ s¾©Mê¨ s¾©M  2   ñÿ  þ  ±ÿ   þ  ¯ÿ  Ðý&  ê¨ sv©"ê¨ s¾©Mê¨ sv©0"  J   ªÿ  þ  žÿ  ü  ©ÿ  0ù&  ê¨ sÌ«ZŠê¨ sÌ«ZŠê¨ sv©0"  b   ÿ  ù              &  ê¨ s¾©Mê¨ s¹©XX¬¯      ¬¯
   ­P  *    ÷5 € kÁ `÷	  f‡÷	  År C 3, s(   ¬ƒd ¾©¥ª¬W"© dr *  & ÷	  Â  ÷	  ù‡ó5 2 Ã  ææ æÿˆ  «•
"© d  ó«þ"©t  *  L ÷  	÷$  ÷¢ ÷	  ‡ Åv @ ÷	  Á*  s©Àô«Þô«Þ ›©£_"© dv &Å«Œd  r  ÷	  À, Á 
÷	  Â Á&  "©t Ü©u~"©t, "©t <©!€  Œ  Â
ýÅv ÷  ÷,  ÷	*  "©t "© dv "©t ¬¯ ¬¯    ¦   ÷ú  Áø W „ ÷„  w(  «\gÎ :ú 
¬¯ Î :ø ¬¯   Â  ÷	  Áí ÷m  Áî7
(        ¬¯ «\g¬¯ ¬¯ ¬¯   Ø  ÷	  ‡   ¬¯ «\g       ª M  	 NÀEÂ*  St    NÀEÂ   ¯”L      (  ­P80   ÿª*th  «çh  ¯”   
   ­P  *    
ÁÁe s  †W¬ üÿ‚
Áe õ‡ ×¬ üÿ  & Ãe ù‡        ªM  	 NÀèÊ*  S
z    NÀèÊ   ¯”L  9©""@  ›©£_@  *  Ä© K@  6ªvw@  µª X@  C«à~@  ¹«´‰@  *  Æ«ˆ@      (  "©t¨ ­P8€ Éª€}hf   «ö8h  	¬®xh" ¯”   
   ­P  *    „
 
 C ó5 2 ÷	   ÷	 ‡ ÷	    ›©£_(¹«´‰*  & EÀ       P•P•W£: 
P“Šàå0 ààÿÿ ÷	
  "©t *  L   sœ 2 ‡ ÷	  e©Bw   ÷5 @  ÄËÿ  µª XÄ© K6ªvw"C«à~  r 
÷~   ÷	  ‡   ~ 
9©""Æ«ˆ       ,M  	 QÀèÊ*  Sà~    QÀèÊ   ¯”L  =Ps@  K`"@  *  ê¨¡s@  ©2g@  %©s'@  %©€*@  D©"@  *  D©ôv@  ¾©H@  Ä© @  6ªÐ@  ¥ª¬W@  *  ¯ªMG@  Éª€}@  «ö8@  R«l~@  «¯@  *  «)x@  Ì«Ó…@  å«ˆr@  	¬®x@  ¬ƒd@  *  ^¬?:@  ^¬@:@  „¬ZŠ@  „¬€Ž@  ‡¬¶}@  *  ‰¬óL@  ‰¬|Z@  “¬u€@  “¬}€@      (  *  "©t¨F û¨ dh
 >©/Kh       a©Ðh w©€2h *  ¼©wh ¼©xh ¾© h ?ª Kh «Ðh *  «òh $«p!h  («ì&hD +«òh /« Kh *  C«à~h Î«Wyh ­P8~ê¨ shì¨«:h*  "©ìh  v©"h2v©0"h6v©òyhB›©£_hP*  Ä© Kh.Ý©¥}h:4ªNh>6ªvwhD6ªÚ}h**  Ã«`'h"Ã«s'hÌ«ZŠhHÌ«‹hL¯”   
   "©t                                      D   D   
   ­P      ÷    ÷  ÷  ÷E @ ·(  %©s'©2g"©t å«ˆr"©t *   
 fD ÷	  ÷5 @ …@  ÷	  …ý	 †  "©t
 Ì«Ó…¬ƒd  R«l~*        @ w Ê …C Ã D ÷	  
Á  ÷	  †w ¨   	¬®x"¾©H$  f &¦÷	  ÷	  &f÷	  · 7
D ÷5 $  
¯ªMG¥ª¬W«ö8"©t "©tD *  †  "÷	  ÷	  ÷5  ÷	  ÷	  †W- ÿ*  "©t 
K`"^¬?:"©t K`" ^¬@:*  ¬ W- êÿ%w   ÷ÿD C& Àœ Á …   =Ps"©tD *  Ò ý	 ÷U @ À  Á … ÷U  ý	 … ý	"  "©t "©t  "©t "©t *  ø  ÷E  É–%‚€÷	  ¥÷	  Æ
 ‡ Æ ò&  
"©t Éª€}D©ôv "©t
 &"©t "  w   Æ w jÿw   w   w   w   w (  ê¨¡s
"©t 6ªÐÄ©       „¬ZŠ„¬€Ž(  <  w   Bw   w   w   C ó æ æ(  ‡¬¶}‰¬óL‰¬|Z“¬u€“¬}€$%©€*   ` 7
 ÷  ÷	  · ·(  %©€* %©€* %©€* «¯%©€*   v ÷	  ‡   %©€* D©"       ¦M  	 OÀ(Ñ*  Ta	    OÀ(Ñ   ¯”L  ¬°@  ¬°@  *      (  "© d¸ ©ôh ©|Lh ²©ôh *  Â©ô+h •«ô+h  «»{è «¹{è` «·{èP *  
­YTè "©t¨Œì¨hb©2gh`©Ðzhd*  Ã©Þ‰hf°ªˆrhp°ª˜rh€³ªp€hn¶ª°hj*  ¶ªÀh|	¬ñWhP ¬wh8¬	wh¬±h  "  ¬±hp "©¨%©€*h        ¯”   
   "© d             p    BACKUP&  ¬°
¬°"©tp "©t   "©t      PB              @                     
 
  
          &   & P          
  P  P *  P                           (            v             €                 ’   ’         
     `  `                   |  |           ®M  	 NÀÅç*  TØ    NÀÅç   ¯”L  C«à~@  ¹«´‰@  *      (  "© d¸ "©t¨ ­P8” #ÀShN   t©Øh  ¯”   
   "© d        
     Ài*É 
   "©t              
   ­P  *    ÷	  ÷5   ÷	>    ÷	N € ÷5  ¹«´‰C«à~*  &    ÷	< ÷	   ÷	   ¡ ‡ ±   C«à~*  L ‡ Â €``Ã !¨‚‡Â
ûÃÃÀ‡ Â Ã&  r   S”Â
ýÁ  Â  Ã RdJÃ
üÁ  ‡ "  "©t  "© d  "©t  ""©t         ö M  	 NÀ…È*  SÞ‰    NÀ…È   ¯”L  d©°;@  ¹«´‰@  *      (  "©t¨
 ­P8N N©°h  ¯”   
   ­P  *    ÷	  Ã
 Ä
 f–PÀ
 ÷	  Àe0 #ã•0   ¹«´‰
"©t
 d©°;*  & Ä
üÄ
îÀ
 ×¤0 À
û€
ã‹      A%Ñ”À
ý  L ‡        æ M  	 NÀÅÎ*  Uq    NÀÅÎ   ¯”L  ê¨ s@  Ì«ZŠ@  *  ó«þ@      (  "© d¸ ­P8 D©"h  
  ¯”   
   "© d      °þ  áÿ  pþ  áÿ    "  ê¨ s
Ì«ZŠê¨ sÌ«ZŠ ­P      Â  w     "© d  
ó«þ       ¦M  	 NÀÕ*  U€q    NÀÕ   ¯”L  $9B@  $9¼^@  *  $9Ùf@  $9s@  $9š@  $9«‘@  ê¨ s@  *  9©""@  Ý©¥}@  6ªÚ}@  Æ«ˆ@      (  "  "© d¸ ­P8D ¹©XXh  ¯”   
   "© d        ßÿ  Þÿ  éÿ  Üÿ  Þÿ  ßÿ&  $9B$9š$9Ùf$9s      $9«‘$9¼^
   ­P  *    ×¬   Â$ ÂÀ  3"  ƒ÷	  ÷  "© d  &Ý©¥}"  &     ÷	  ± ‡ Àe   ìÆe w   "  ê¨ s9©""
Æ«ˆ"© d  6ªÚ}       HM  	 OÀ(Ñ*  UPs    OÀ(Ñ   ¯”L  $9.@  $9¬@  *  ê¨ s@  9©""@  v©0"@  6ªÚ}@  «)x@  *  «ñ@  ¹«´‰@  Æ«ˆ@  Ï«0MH     (  *  "© d¸ ©  h  «  h	 §«  h ½«  h *  Í«  h ­P8” ¯ªòhZ ó«øh  ó«þhŽ 
  ¯”   
   "© d        Üÿ  /RW/NP/SU/SE/BD   $9. ­P  *    ÷	  ÷	  C ö ¦Â  ³" ×¬         Ã  ¹«´‰
«ñ"© d  *  & $ „ ÷    w   ’$Êì‚×,  !×,   ê¨ s9©""v©0"*  L   Ê³$ ·  „z   Âe ó×, Àý  $9¬9©""&  r Äÿÿ
÷    w   Æe w   ¡ ‡ ÷	  º   ê¨ s9©""Æ«ˆ6ªÚ}"¹«´‰       6M  	 NÀEÂ*  V:    NÀEÂ   ¯”L  9©†K@  9©ŽK@  *  N©°@  ¾©@V@  ¹«´‰@      (  "©t¨ "  7ªƒ:h  ­P8L ¹©À]h  ¯”   
   ­P  *    ÷	  ÷	  AÅ Æå
 ÷	  ¦Â ÷	  Â
"  ¹«´‰
9©ŽK"©t N©°&9©†K*  & ‚eAU%Æå
 ÷	  5
 Â  „ ÷	  Æe       ‡   N©°"©t  "¾©@V       ”M  	 NÀ…á*  VZX    NÀ…á   ¯”L  ?ª K@  C«à~@  *  Ã«`'@  Æ«ˆ@  Î«Wy@      (  "©t¨ *  ­P8^ ¾©Mh  ¾©L	h ¾©((h, ¾©cTh8 "  ¾©@Vh Ã©Ðh ì©ˆYh@ ¯”   
   "©t  
          
   ­P  *    Â  ÷	8 ƒ÷	  ‡ Â Ã  ÊâõÂ Ê( &  "©t  Æ«ˆ"©t Î«Wy$"©t *  & â, î÷5   w   ÷U @  à×¬   Ã$   ?ª KÃ«`'C«à~  L Ã& Òœ ŠÊ â‡        ’M  	 NÀÕ*  Vå~    NÀÕ   ¯”L  ê¨ s@  9©""@  *  ì©ˆY@  Æ«      ˆ@      (  "© d¸
 "©t¨ "  ­P8< Ä© h. 6ªÐh  ¯”   
   "© d                 "©t   "©t      %*      
   ­P  &    C ÷  ÷  Â ÷	  · ÄäÿÃ(  "©t "©t "© d ì©ˆY"©t   "   ÷    w   7
 7
$  "© d  ê¨ s
9©""Æ«ˆ"©t   4  7
 î  "©t "© d        M  	 NÀî*  YÀ]    NÀî   ¯”L  %©€*@  y©N\@  *  ¯ªò@  °ªˆr@  °ª˜r@  ¶ª°@  ¶ªÀ@  *  «Iq@  «!t@  «)x@  «Ay@  «ñ@  *  §«"@  ¹«´‰@  ò«š@      (        ­P8J"  %© dhn©Ý;h  Ì« qh ¯”   
   ­P  *    ÷	ü ô5 2 
óýÿ& óÿÿ( ó  óå     *  & óe  æ  Ö] 	÷	  ÷	  3
& 3
( Â  "  ¶ªÀ¶ªÀ «!t§«"(¶ªÀ*  L Ä  ÷	 ‡ Â w   Á Â %öÂ
ü‡ ÷	  °ª˜rò«š ¯ªò%©€* *  r   À& Á( ×, °ýó Àe A€ääÁ  ¹«´‰*  ˜ ÀÁ ÿ‚Âÿ³& ÷	  ÷	    $«Ay(§«"*  ¾ ó%ÿ Àì ä‚ ³& ³( ÷	  ÷	  ó  "«Iq&«ñ*  ä  ·÷	rÿÀ  Á  Â ”Â
ý‡ C Ä$ ó  y©N\%©€**  
        ó  ‡ ÷	æÿÂ  ô5 2 ³& ³( ³  
%©€* ¶ª°  0 
óå  óe  Ä  ÷	(ÿ‡   °ªˆr       Ð M  	 NÀEÂ*  ]˜q    NÀEÂ   ¯”L  /« K@      (    ­P8L Íªqh  ¯”   
   ­P  *    fÂ
×¤: üU’À
W¤: û÷5   Õ’Â
×¤] û  /« K*  & W¢[ U’W¤] üÂ
×¤] üÕ”Â
ýD„ã…‡        æ M  	 NÀÕ*  ^é    NÀÕ   ¯”L  ¬ƒd@      (  *  ­P8@ ¾©Hh ¾©h  ¥ª¬Wh* ¯”   
   ­P  *    
ÂÂ  Âm €ÀÀ
ƒÃEÿC ÷± ‡   ¬ƒd¬ƒd   & ¡ ‡ €ÀE ÿÒÁE       ÿ@àÁe  ‡   ¬ƒd       ® M  	 NÀEÛ*  ^«„    NÀEÛ   ¯”L  v©0"@      (    ­P8* ÿªØYh  ¯”   
   ­P  *    &fW¤[ À
û€‡ Â& ² ²  ÄÄÿ  & w     v©0"       ¬ M  	 NÀEÂ*  ^Þ‰    NÀEÂ   ¯”L      (  ­P8* "  «°h «Îh  «Ïh ¯”   
   ­P  *    C¦Â$ ò5 2 Â Â ³`& s(   & ‚‡        º M  	 NÀ…È*  ^ËŒ    NÀ…È   ¯”L  9©†K@  ¹«´‰@  "      (  ­P8( «¸ƒh  ¯”   
   ­P  *    ÷	  $ ò5 2  ÷	        Â °`& p(   ¹«´‰9©†K  & ‡        ÖM  	 NÀÅÎ*  _ZX    NÀÅÎ   ¯”L  ê¨ s@  ¹©XX@  *  ¾©M@  6ªÚ}@  «)x@  «™’@  ó«ø@  *      (  "© d¸6 ò«šh  ­P88 C©¤’h   ”«"h  §«"h0 ¯”   
   "© d  $    øý  àÿ  ÿ     ü  àÿ    ù  Âÿ(  ê¨ s
¾©M­P ê¨ s¾©M ê¨ s         ú     °ý          ¹©XX­P ­P  ­P  *    Â$ w   ± ‡ ó Æe ÷	  ¡ ‡ Â ÷	  $  "© d$ 
ó«ø6ªÚ}$"© d (ó«ø  & †÷	  ø‡‡ Â  w     «™’"© d  ó«ø             M  	 NÀEÂ*  _p†    NÀEÂ   ¯”L  ¼©w@  ¾©@  *  ¥ª¬W@  «Ð@  $«p!@  /« K@  ¬ƒd@  "      (  ­P80 ç©p†h  ¯”   
   ­P  &    Á  ÷	  ‡÷	  7  w  ·  7
  ÷5 &  
¾©¥ª¬W$«p!«Ð/« K ¼©w  "  ÷U   ¡ ‡   ¬ƒd ¼©w       ¶ M  	 NÀEÂ*  `à8    NÀEÂ   ¯”L  Æ«ˆ@      (  "  "©t¨ ­P8 R«l~h  ¯”   
   "©t  
         
   ­P      Ã ãÄ w     "©t Æ«ˆ       ü M  	 NÀEÂ*  aÏ}    NÀEÂ   ¯”L  ê¨       s@  9©""@  *  ¹©À]@  Í«6x@      (  ­P8. “«@h "  “«¶ h  [¬@h [¬¶ h ¯”   
   ­P  *    ÂþÿÂýÿ÷	  ‡ ÷	ìÿÄìÿ÷	èÿÄíÿ÷    Í«6x(ê¨ s  &   ÷	  ‡   9©""¹©À]       Z M  	 NÀ…È*  bà’    NÀ…È   ¯”L      (  "©tè   §«\}h ¯”          ’M  	 NÀ…È*  c"    NÀ…È   ¯”L  ê¨ s@  9©""@  *  Ý©¥}@  Æ«ˆ@  Ï«0M@      (  "©t¨ *  v©ƒ:h  ­P8T ÿªƒ:hL „¬ZŠh  „¬€Žh "  ‡¬¶}h ‰¬óLh: ‰¬|Zh ¯”   
   "©t  
          
         ­P  *    Äñÿ÷	  ÷    w   ÷	 ÄñÿöÃ& Â Ã  
Ý©¥}ê¨ s9©""Æ«ˆ*  &  ‹—¤: ü£Ëì ‡ Ã ã  Äëÿw     "©t "©t  Ï«0M(Æ«ˆ  L 
÷	  ‡   Æ«ˆ       ŽM  	 NÀEÂ*  c6x    NÀEÂ   ¯”L  ê¨ s@  9©""@  *  9©†K@  9©ŽK@  §«\}@  ¹«´‰@  Æ«ˆ@  *      (  ­P8t ¾©ÖhJ Í«6xh  ¯”   
   ­P  *    ÷	  ÷	B ‡ð‹ ° À   P¦  ¹«´‰§«\}  §«\} *  & Â ÷	  •7 ÷    ÄÕÿ
÷	  ‡ ¦"  
9©†K§«\} ê¨ s9©""$Æ«ˆ*  L ÷	  À       7  †!p! Àe õ± ¡ ‚  9©ŽK
§«\} §«\}   r ‡        Î M  	 NÀÕ*  cu€    NÀÕ   ¯”L  ¾©@V@  C«à~@  *      (  ­P80 “¬u€h “¬}€h  ¯”   
   ­P  *    ÷U @  Æå ‚ò  ² òe  2
 ò•*    C«à~  & ò  w     ¾©@V       ðM  	 NÀÅÎ*  cU…    NÀÅÎ   ¯”L  $9ž!@  ´:2“@  *  ê¨ s@  N©°@  «\g@  «)x@  ¹«´‰@  *  Æ«ˆ@  ¬¯@  ¬ƒd@  ¬¯@  ¬M@  *      (  "©t¨^ "© d¸Z ­P8Í«Rh    Í«<Rh| ¯”   
   "©t (         
    -- FILE PROCESSING COMPLETE - 
   "© d  *    READ CHECK ERRORINPUT ERROROUTPUT UNCH*  & ECKABLEWRITE CHECK ERRORþÿ   ÿÿ  üÿ
     &   L   ýÿ -       - ¬¯ ­P  *    ÷	  & Àe  4†ð‹ .Å    Æå
   ¹«´‰"©t *  & ÷	  œ ÃŠÂ`AU%Æå
 ÷	  ÕÂ> ¬   N©°N©°$"© d> *  L Ò‹••
Âe — V óÃ  ÄÓÿ÷	  Æe   "© dV "©t  $Æ«ˆ*  r Àe ÊÖ‡ ÷	  Ã$ Â&   
€Ü  (   ¹«´‰&  ˜ À( Äe" Â2 R”À
ý÷   ÷  ÷(  "©t2 ¬M"©t        ¬M ""©t   º   ÷ 
ÅV 7 ÷*  ¬M "©t 
¬¯ "© dV ¬¯ *  Î   ÷	  ‡ ÷5 € Äe &
&
&
&
&æ &
(  "©t ¬¯ 
«\g¬ƒd &"©t *  ô æZ &
Î• æ æ  æÿˆ×­Z   w   ‡ $  "©tZ ´:2“"©tZ  $9ž!&ê¨ s       ª M  	 NÀEÂ*  c    NÀEÂ   ¯”L  ©2g@  %©s'@  "      (  ­P8 Ï«Îh  ¯”   
   ­P      Å  DÅ  ûw  0 ‡   ©2g%©s'©2g       ÎM  	 NÀ(Ñ*  gÀ    NÀ(Ñ   ¯”L  ê¨ s@  9©""@  *  y©N\@  ¾© @        C«à~@  Ã«s'@  Æ«ˆ@  *  å«ˆr@      (  "©t¨  ­P8Š =Psh    K`"h` ¯”   
   ­P  *    Ã  D !ŽÿÓ Ó “ “
õ 	  ¾© ¾©  *  & Ó Ó 
Ó%*S Ã  !±ÿ÷    ÷U @  
¾©  ¾© "Ã«s'$9©""  L   ÷    ÷    w   Á&  C«à~
ê¨ s9©""ê¨ så«ˆrÆ«ˆ*  b   ƒ „ €
 
 E B& ò   ò•(    ¾©  y©N\  ˆ ‡        ¬ M  	 NÀ…È*  h    NÀ…È   ¯”L      (  X:†¨(   ¬ h  ¬ h ¯”   
   X:†                                      
        
               2M  	 NÀEÂ*  ê¤`    NÀEÂ   ¯”L  9©""@  ¹©ª%@  *  ¿©ª%@  Ã©ª%@  Êªé@  Êªï@  Êª(@  *  Êª)@  Êª4@  Êª@  Êª@  Êª$@  *  Êª9M@  Êª?M@  Ëª™`@  ÚªYK@  Úª_K@  *  ÚªÞ@  Ýªq@  Ýªƒ@  •«ŠK@  «¯@  *  «)x@  Æ«ˆ@      (  û¬ d¸ ­¿d¨   û¬ù_8Â ê¨¤`h  ¯”   
   û¬ d                Ã©ª%¿©ª%¹©ª% ­¿d  
          
   û¬ù_  *    Å  C óµ 2 &
&
&
&
&
&
&
&
&
æ   ¿©ª%*  & æ æÿˆÀ  ÷	        Èû×-   Á  Â  û¬ d  «¯Ëª™`&Ýªƒ$  L   ÷	  -‡×-   Á  Â  ÷	  "‡×-&  Ýªq•«ŠKÚªYKÊª9MÊªé•«ŠK&  l    Á  Â  ÷	  ‡×-   Á  Â&  Úª_KÊª?MÊªï•«ŠKÊª("Êª4&  Ž   ÷	  ‡×-   Á  Â  ÷	  ‡‡ Ã&  Êª)•«ŠKÊªÊª$Êª•«ŠK  °   ÄÙÿ÷    
w     ­¿d  ÚªÞ9©""Æ«ˆ       RM  	 ÎšXÀ*  9©´}    ÎšXÀ   ¯”L  :©´@  <©P}@  *  a©bŸ@  ×ª¢Z@  ¹«WŒ@      (>9©´}h  
  ¯”   
         *    w	  &fæ æ< Á æ  Á
      üö [÷	    ¹«WŒ(<©P}*  & — : ö5  }öå  v ÷	  v — :   <©P}*  L ÷	  v
 :ö5  hö
 — / 
v ÷	  —   <©P}&<©P}*  r / \v — - Vv Å  Ä ¤¤  ×ª¢Z*  ˜ ¤Õ‹U¥@Ä
óö  6á ¤- :÷	    (<©P}*  ¾ W d †ÁelN—   — 	 ¢À
‚ö5  *  ä —"C‡—$âƒÁW  ƒAœÿÿÊ$
  "a©bŸÿÿ*  
ƒÂe —$ 
†—$< †—$< †6 w   Æe  &:©´  0 ÖÂ €± ‡        (M  	 NÀÅÎ*  %¬&    NÀÅÎ   ¯”L   ©+€@  Ý©Š}@  *  Êªé@  Êªï@  Êª      $@  Êª(@  Êª)@  *  Êª4@  Êª@  Êª@  Êª@  Êª$@  *  ÊªÁG@  ÊªÇG@  ÊªìG@  Êª9M@  Êª?M@  *  ÊªN@  ÊªN@  ÊªN@  Ëª™`@  Ùª™Q@  *  ÙªŸQ@  Úªl@  ÚªYK@  Úª_K@  Ýªq@  *  Ýªƒ@  Ýª)N@  Æ«Ú@      (  û¬ù_8<  %©¬&h  ¯”   
   û¬ù_  *    Â  Âí  Â7
  w $ ÷   ÷eÿ  ÷Eÿ   Ýªƒ
ÚªlËª™`Ëª™`$Ýªƒ(  &   Á  Äÿ÷	Î 7  ÷-    	À  Â ÷	&  ÝªƒÝªƒÝªqÊªÁGÊªìG ÊªÁG  J   w  ÷-    ÷    Á&  Ýª)NÊª9MÊªNÊªNÊªNÊª9M*        b   w  Äÿ÷	 7  ÷   ÷-    	À  &  ÊªNÊªéÚªYK ÊªÇG"ÊªìG(ÊªÇG"  ˆ Â ÷	  w  ÷-    ÷    Á&  
Ýª)NÊª?MÊªNÊªNÊªNÊª?M*  ¦   w  Äÿ÷	L 7  ÷   ×-   Á     ÊªNÊªïÚª_K Êª((Êª$&  Ì Ã  ÷	. w  7  ÷  ×-   Á  Ã&  ÊªÊª4Êª)Ùª™QÊª"Êª$*  î   ÷	 w  7  ÷  ‡ f÷	  ‡‡ f÷	   ÊªÊª$ÊªÙªŸQÝ©Š}*    †!ÿ	Áå Ã
ÁéçÄÚÿw    ©+€  :    Æ«Ú       M  	 NÀEÂ*  %|(    NÀEÂ   ¯”L        Êªé@  Êªï@  *  Êª(@  Êª)@  Êª4@  Êª@  Êª@  *  Êª$@  ÊªÁG@  ÊªÇG@  ÊªìG@  Êª9M@  *  Êª?M@  ÊªN@  ÊªN@  ÊªN@  ¤«@  "      (  û¬ù_8b %©|(h  ¯”   
   û¬ù_      ÷-    ÷-    Á  Â  ÷	&  ÊªÇGÊªìGÊªNÊªNÊª?MÊªï     ×-   Á  Â  ÷	  ÷-  &  ¤«ÊªÊª$Êª¤«ÊªÁG  4   ÷-    Á  Â  ÷	  ×-&  ÊªìG
ÊªNÊªNÊª9MÊªé¤«  N    Á  Â  ÷	  ‡   Êª(Êª4Êª)¤«       2M  	 NÀEÂ*  GlY    NÀEÂ         ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  Å©Î@  Å©Bx@  *  6ªŒw@  Éªd@  Ëª™`@  Ëªþ~@  ÎªÙz@  *  Ôª–Q@  Øª÷@  Úª‘'@  ÚªP2@  Ýªq@  *  Ýªƒ@  «&@  «)x@  Æ«Ú@  Æ«@  *      (  û¬ d¸ ­¿d¨ û¬ù_8XG©lYh  
  ¯”   
   û¬ d      @ü  ¥ÿ   þ  “ÿ    &  Éªd
­¿d  Éªd­¿d   ­¿d              
   û¬ù_  *    Ä À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Ëª™`*  & ó   ×-   
À  Àm  3 ÷    ó&  ÝªƒÚª‘'ÝªqÎªÙz"Ýªq$      ÚªP2(  L    ó   ×-   
À  Àm  3 ÷  &  ÝªqÅ©BxÚª‘'Å©ÎÎªÙz&Å©Î*  p   ó   ó•   ó•   ÷	  ×,  w    ÚªP2
Å©ÎÔª–Q«&*  – ÷	z Å  C w x ×-   óE@  ÷5     ¹©ª%Øª÷(Ëªþ~*  ¼ óE@  ÷5   óE@  ÁÁe& Å  C ó•  Ëªþ~"¿©ªp*  â    ó•  s ó•  ÷	  ×,  ‡ ÷	  Ôª–Q«&*   Å  C w 
 Á  ÷	  ‡ ×-   À w   ¿©ª%û¬ d  @©ÌG­¿d  *  .  ×-  À w   —  €w   ×-  $  6ªŒw­¿d 6ªŒw Æ«$­¿d   Tw           Æ«Ú       pM  	 NÀEÂ*  GqY    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  Å©Î@  Å©Bx@  *  6ªŒw@  Éªd@  Éªff@  Êª@  Ëª™`@  *  Ëªþ~@  ÎªÙz@  Ôª–Q@  Øª÷@  Ùª–Q@  *  ÙªŸQ@  Úª‘'@  ÚªP2@  Ýªq@  Ýªƒ@  *  «&@  «)x@  Æ«Ú@  Æ«@      (  *  û¬ d¸ ­¿d¨ û¬ù_8dG©qYh  ¯”   
   û¬ d      @ü  ¥ÿ   þ  “ÿ    &  Éªd
­¿d  Éªd­¿d   ­¿d              
   û¬ù_  *    Ä À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Ëª      ™`*  & ó   ×-   
À  Àm  3 ÷    ó&  ÝªƒÚª‘'ÝªqÎªÙz"Ýªq$ÚªP2(  L    ó   ×-   
À  Àm  3 ÷  &  ÝªqÅ©BxÚª‘'Å©ÎÎªÙz&Å©Î*  p   ó   ó•   ó•   ÷	  ×,  w    ÚªP2
Å©ÎÔª–Q«&*  – ÷	† Å  C w „ ×-   óE@  ÷5     ¹©ª%Øª÷(Ëªþ~*  ¼ óE@  ÷5   óE@  Å  C ó•   ó•  Ëªþ~¿©ªp$Ùª–Q*  â    ×-   óU  ×-   ó    ÷	  ×,  
ÉªffÊª ÙªŸQ&«&*    ‡ ÷	 Å  C w 
 Á  ÷	  ‡ ×-  ¿©ª% û¬ d  $@©ÌG      *  .   À w   ×-  À w   —  €  ­¿d  6ªŒw­¿d  6ªŒw  Tw   ×-  w     Æ«
­¿d Æ«Ú       >M  	 NÀEÂ*  GxY    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  Å©Î@  Å©Bx@  *  6ªŒw@  Éªd@  Ëª™`@  Ëªþ~@  ÎªÙz@  *  Ôª–Q@  Øª÷@  Úª‘'@  ÚªP2@  Ýªq@  *  Ýªƒ@  àª–Q@  «&@  «)x@  Æ«Ú@  *  Æ«@      (  û¬ d¸ ­¿d¨ û¬ù_8V  G©xYh  ¯”   
   û¬ d      @ü  ¥ÿ   þ  “ÿ    &  Éªd
­¿d  Éªd­¿d   ­¿d                    
   û¬ù_  *    Ä À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Ëª™`*  & ó   ×-   
À  Àm  3 ÷    ó&  ÝªƒÚª‘'ÝªqÎªÙz"Ýªq$ÚªP2(  L    ó   ×-   
À  Àm  3 ÷  &  ÝªqÅ©BxÚª‘'Å©ÎÎªÙz&Å©Î*  p   ó   ó•   ó•   ÷	  ×,  w    ÚªP2
Å©ÎÔª–Q«&*  – ÷	x Å  C w v ×-   óE@  ÷5     ¹©ª%Øª÷(Ëªþ~*  ¼ óE@  ÷5   óE@  Å  C ó•   ó•  Ëªþ~¿©ªp$àª–Q*  â   ÷	  ×,  	÷5   óU  ‡ ÷	   
«      &Ëªþ~*  Å  C w 
 Á  ÷	  ‡ ×-   À w   $  ¿©ª%û¬ d  @©ÌG­¿d  (6ªŒw*  .×-  À w   —  €w   ×-  w   ­¿d 6ªŒwÆ«"­¿d   T    Æ«Ú       TM  	 NÀEÂ*  G4Z    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  Å©Î@  Å©Bx@  *  6ªŒw@  Éªd@  Êª(@  Ëª™`@  Ëªþ~@  *  ÎªÙz@  Ôª–Q@  Øª÷@  Ùª–Q@  Ùª™Q@  *  Úª‘'@  ÚªP2@  Ýªq@  Ýªƒ@  «&@  *  «)x@  Æ«Ú@  Æ«@      (  û¬ d¸ "  ­¿d¨ û¬ù_8VG©4Zh  ¯”   
         û¬ d      @ü  ¥ÿ   þ  “ÿ    &  Éªd
­¿d  Éªd­¿d   ­¿d              
   û¬ù_  *    Ä À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Ëª™`*  & ó   ×-   
À  Àm  3 ÷    ó&  ÝªƒÚª‘'ÝªqÎªÙz"Ýªq$ÚªP2(  L    ó   ×-   
À  Àm  3 ÷  &  ÝªqÅ©BxÚª‘'Å©ÎÎªÙz&Å©Î*  p   ó   ó•   ó•   ×-   ó    ÷	   ÚªP2
Å©ÎÙª–QÊª($Ùª™Q*  –   ×,  w  ÷	j Å  C w h ×-     «&¹©ª%&Øª÷*  ¼ óE@  ÷5   óE@  ÷5         óE@  Å  Ëªþ~Ëªþ~*  â   C ó•   ó•   ÷	  ×,  ‡ ÷	   ¿©ªpÔª–Q«&*  Å  C w 
 Á  ÷	  ‡ ×-   À w   $  ¿©ª%û¬ d  @©ÌG­¿d  (6ªŒw*  .×-  À w   —  €w   ×-  w   ­¿d 6ªŒwÆ«"­¿d   T    Æ«Ú       –M  	 NÀ…È*  G9Z    NÀ…È   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  Å©Î@  Å©Bx@  *  6ªŒw@  Éªd@  Éªff@  Êª(@  Êª@  *  Ëª™`@  Ëªþ~@  ÎªÙz@  Øª÷@  Ùª–Q@  *  Ùª™Q@  ÙªŸQ@  Úª‘'@  ÚªP2@  Ýªq@  *        Ýªƒ@  «&@  «)x@  Æ«Ú@  Æ«@  *      (  û¬ d¸ ­¿d¨ û¬ù_8rG©9Zh  
  ¯”   
   û¬ d      @ü  ¥ÿ   þ  “ÿ    &  Éªd
­¿d  Éªd­¿d   ­¿d              
   û¬ù_  *    Ä	 À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Ëª™`*  & ó   ×-   
À  Àm  3 ÷    ó&  ÝªƒÚª‘'ÝªqÎªÙz"Ýªq$ÚªP2(  L    ó   ×-   
À  Àm  3 ÷  &  ÝªqÅ©BxÚª‘'Å©ÎÎªÙz&Å©Î*  p   ó   ó•   ó•   ×-   ó    ÷	   ÚªP2
Å©ÎÙª–QÊª($      Ùª™Q*  –   ×,  w  ÷	† Å  C w „ ×-     «&¹©ª%&Øª÷*  ¼ óE@  ÷5   óE@  ÷5   óE@  Å  Ëªþ~Ëªþ~*  â   C ó•   ó•   ×-   óU  ×-     ¿©ªpÙª–QÉªff&Êª*  ó    ÷	  ×,  ‡ ÷	 Å  C w   ÙªŸQ«&"¿©ª%*  .
 Á  ÷	  ‡ ×-   À w   ×-  À&  û¬ d  @©ÌG­¿d  6ªŒw"­¿d "  T w   —  €w   ×-  w     6ªŒwÆ«­¿d  Æ«Ú       hM  	 NÀEÂ*  G@Z    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@        Å©Î@  Å©Bx@  *  6ªŒw@  Éªd@  Êª(@  Ëª™`@  Ëªþ~@  *  ÎªÙz@  Øª÷@  Ùª–Q@  Ùª™Q@  Úª‘'@  *  ÚªP2@  Ýªq@  Ýªƒ@  àª–Q@  «&@  *  «)x@  Æ«Ú@  Æ«@      (  û¬ d¸ "  ­¿d¨ û¬ù_8dG©@Zh  ¯”   
   û¬ d      @ü  ¥ÿ   þ  “ÿ    &  Éªd
­¿d  Éªd­¿d   ­¿d              
   û¬ù_  *    Ä À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Ëª™`*  & ó   ×-   
À  Àm  3 ÷    ó&  ÝªƒÚª‘'ÝªqÎªÙz"Ýªq$ÚªP2(  L    ó   ×-   
      À  Àm  3 ÷  &  ÝªqÅ©BxÚª‘'Å©ÎÎªÙz&Å©Î*  p   ó   ó•   ó•   ×-   ó    ÷	   ÚªP2
Å©ÎÙª–QÊª($Ùª™Q*  –   ×,  w  ÷	x Å  C w v ×-     «&¹©ª%&Øª÷*  ¼ óE@  ÷5   óE@  ÷5   óE@  Å  Ëªþ~Ëªþ~*  â   C ó•   ó•  ÷	  ×,  	÷5     ¿©ªpàª–Q«&&Ëªþ~*  óU  ‡ ÷	 Å  C w 
 Á  ÷	  ‡ ×-  ¿©ª% û¬ d  $@©ÌG*  .   À w   ×-  À w   —  €  ­¿d  6ªŒw­¿d  6ªŒw  Tw   ×-  w     Æ«
­      ¿d Æ«Ú       šM  	 NÀEÂ*  GL[    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  Å©Î@  Å©Bx@  *  6ªŒw@  Éªd@  Ëª™`@  Ëªþ~@  Óª!q@  *  Ôª–Q@  Øª÷@  Ýªq@  Ýªƒ@  àª–Q@  *  «&@  «)x@  Æ«Ú@  Æ«@      (  *  û¬ d¸ ­¿d¨ û¬ù_8G©L[h  ¯”   
   û¬ d      @ü  ¥ÿ   þ  “ÿ    &  Éªd
­¿d  Éªd­¿d   ­¿d              
   û¬ù_  *    À À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Ëª™`*  & ó   ó   ó   ó   ó   ó•        &  ÝªqÝªƒÅ©ÎÅ©Bx"Óª!q(àª–Q*  L  ó•   ÷	  ×,  w  ÷	j Å  C   «&$¹©ª%*  r w h ×-   óE@  ÷5   óE@  ÷5     
Øª÷Ëªþ~(Ëªþ~*  ˜ óE@  Å  C ó•   ó•   ÷	  ×,    ¿©ªpÔª–Q"«&*  ¾ ‡ ÷	 Å  C w 
 Á  ÷	  ‡ ×-     ¿©ª%û¬ d   @©ÌG&­¿d  *  ä À w   ×-  À w   —  €w     6ªŒw­¿d 6ªŒw(Æ«  
×-  w     ­¿d Æ«Ú       îM  	 NÀEÂ*  GQ[    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@        Å©Î@  Å©Bx@  *  6ªŒw@  Éªd@  Éªff@  Êª@  Ëª™`@  *  Ëªþ~@  Óª!q@  Øª÷@  Ùª–Q@  ÙªŸQ@  *  Ýªq@  Ýªƒ@  àª–Q@  «&@  «)x@  *  Æ«Ú@  Æ«@      (  û¬ d¸ ­¿d¨   û¬ù_82G©Q[h  ¯”   
   û¬ d      @ü  ¥ÿ   þ  “ÿ    &  Éªd
­¿d  Éªd­¿d   ­¿d              
   û¬ù_  *    À À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Ëª™`*  & ó   ó   ó   ó   ó   ó•  &  ÝªqÝªƒÅ©ÎÅ©Bx"Óª!q(àª–Q*  L  ó•   ÷	  ×,  w        ÷	† Å  C   «&$¹©ª%*  r w „ ×-   óE@  ÷5   óE@  ÷5     
Øª÷Ëªþ~(Ëªþ~*  ˜ óE@  Å  C ó•   ó•   ×-   óU  ¿©ªpÙª–Q"Éªff*  ¾   ×-   ó    ÷	  ×,  ‡ ÷	   
ÊªÙªŸQ«&*  ä Å  C w 
 Á  ÷	  ‡ ×-   À w   $  ¿©ª%û¬ d  @©ÌG­¿d  (6ªŒw*  
×-  À w   —  €w   ×-  w   ­¿d 6ªŒwÆ«"­¿d   0    Æ«Ú       ’M  	 NÀEÂ*  GX[    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  Å©Î@  Å©Bx@        *  6ªŒw@  Éªd@  Ëª™`@  Ëªþ~@  Óª!q@  *  Øª÷@  Ýªq@  Ýªƒ@  àª–Q@  «&@  *  «)x@  Æ«Ú@  Æ«@      (  û¬ d¸ "  ­¿d¨ û¬ù_8G©X[h  ¯”   
   û¬ d      @ü  ¥ÿ   þ  “ÿ    &  Éªd
­¿d  Éªd­¿d   ­¿d              
   û¬ù_  *    À À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Ëª™`*  & ó   ó   ó   ó   ó   ó•  &  ÝªqÝªƒÅ©ÎÅ©Bx"Óª!q(àª–Q*  L  ó•   ÷	  ×,  w  ÷	j Å  C   «&$¹©ª%*  r w h ×-   óE@  ÷5         óE@  Å  C  
Øª÷Ëªþ~&¿©ªp*  ˜  ó•   ó•  ÷	  ×,  	÷5   óU   àª–Q«&"Ëªþ~*  ¾  ‡ ÷	 Å  C w 
 Á  ÷	  ‡ ×-     ¿©ª%û¬ d   @©ÌG&­¿d  *  ä À w   ×-  À w   —  €w     6ªŒw­¿d 6ªŒw(Æ«  
×-  w     ­¿d Æ«Ú       jM  	 NÀÅÎ*  Göq    NÀÅÎ   ¯”L  i©ìŠ@   ©+€@  *  Þ©º@  ë©8Ÿ@  6ªÊ8@  «)x@  «6x@  "      (  û¬ù_8h G©öqh  ¯”   
   û¬ù_  *    ÷	  ÷	  7  ×-  ÿ÷	, ‡ —  ÷	 ÷	  «6x
6ª      Ê8ë©8Ÿë©8Ÿ*  &   ÷	 ‡ ÷	 ‡ Á ÷	  †‡ ù€Á ÷	  6ªÊ8 ©+€   L   7  ÷å   ×-  @ ÷@   ‡    i©ìŠÞ©ºÞ©ºÞ©ºÞ©º       ¶M  	 ÏšEÂ*  aWT    ÏšEÂ   ¯”L  ª’sHJ •«Ò.HK *  —«’ZH5 Ç«’ŒH Ê«’¾H Ì«ÒGHM Ì«’ZH *  ¬H     (  a?T¸xªrh˜ •«Ï-h  *  —«Yhâ Ç«‹haÊ«½h,Ê«ÏÃh,Ê«Êh,*  Ì«ÏFhK Ì«YhÌ«Ïxhâ ¬hI¯”   
   a?T  *    
             R0        R1         R2*  &           R3          R4        R5
 *  L 
             @SP           2(SP)      4(SP)*  r        6(SP)       10(SP)    12(SP)
 *  ˜ 
************ RMS-11 UTILITIES DAMAGE*  ¾  ASSESMENT ROUTINE ************

 %N*  ä REGISTERS: %P    %P     %P      %P    *  
  %P    %P%N %NTOP OF STACK: %P%N %N S*  0TATUS REGISTER %M : %P%N %NSTACK UNDER&  VFLOW: %P%N %NSTACK OVERFLOW: %P%N        M  	 ÏšEÂ*  aXT    ÏšEÂ   ¯”L  ÌeÒÄH ö¨’H& *   ©€H 9©R†H C©ÒÄH H©ÒGH H©ÒÄH
 *  o©’ZH2 ±©’H# ²©ÒÄH ªÒGH( 7ª€H *  ÍªRTH ÿª€H «H C«R"H       K«€H *  S«€H ‘«’H% £«’ŒH ¥«€H Ì«R	H *  ò«gH ¬ÒyH  ¬’H*     (  a?T¸w*  ÌeÏÃhªê¨ÏÃhö¨hÐ  ©hV9©O…h2 *  C©ÏÃhH©ÏFh¼H©ÏÃhùo©Yh  ±©h^ *  ²©ÏÃhªÏFhÑ7ªhkÍªOShAÿªhö *  «h2C«O!h%K«hF S«hY‘«h *  ’«ÏÃh£«‹h~¥«hÌ«Oh=ò«fh–"  ¬Ïxh¬h¦ ‚¬ÏÃh¯”   
   a?T  *    
PLEASE DETACH OUTPUT AND SUBMIT WITH*  &  YOUR SPR
 
CAUSE OF ABORT :  
PACK*  L ET DUMP FOLLOWS
 
FILE ACCESS BLOCK *  r DUMP       FOLLOWS
 
RECORD ACCESS BLOCK D*  ˜ UMP FOLLOWS
 
EXTENDED ATTRIBUTE BLO*  ¾ CK DUMP FOLLOWS
 
AUXILIARY NAME BLO*  ä CK DUMP FOLLOWS
 
(RMS FIELD UNAVAIL*  
ABLE)
 
(RMS CENTRAL PACKET UNUSED)*  0
 	ODD ADDRESS
 	MEMORY PROTECTION
 *  V	T-BIT OR BPT TRAP
 	IOT INSTRUCTION*  |
 	RESERVED INSTRUCTION
 	TRAP INSTRU*  ¢CTION
 %N%VR %VP %VA%N%N %N%VR %VP %A*  È %VR %VA %N%2R%N%P%N%P%N%P%N%P%N%P%N%P*  î%N%P%N%P%N %P%N%VR%N %A%N %P%N %NRMS-1*  1 UTILITY: %2R%N %NPROGRAM COUNT      ER: %P*  :%N %NRMS STATUS CODES: %P %P%N %NPROCE  `SSOR STATUS WORD: %P%N         8M  	 ÎšXÀ*  <©!€    ÎšXÀ   ¯”L  :©@  a©bŸ@  *  i©€‰@  i© Š@  i©(Œ@  ×ª¢Z@  Ýª[N@  "  ¹«WŒ@      (®<©!€h ¯”   
         *    €–˜      Ài*É   w	  f¦Æå ƒÃe À  ¹«WŒ*  &  ‚÷	  ö5  xƒ‚ Ãe˜þBÂe À Á   
i©(Œ*  L ±:÷	  ÃÃæÁ@Á@CÀ Á±:÷	  Î`  i© Š&i© Š*  r ÁU CÀ  Áµ÷	  B‚‚‚
Àd ÷	    i© Š(Ýª[N*  ˜ Á`ÁeÝfÄ €Á÷	  Á
€      Ád ÷	  i©€‰*  ¾   Á€Á ÷	  Á
— ; ƒa
@œ  €   i©€‰i©€‰&a©bŸ*  ä ƒà
W  ÷f@Â  ÷	  Ð•- ÁeÁe  :©*  
  P”P”P”Ð•- Â  ÷	  Ð•  ö5  0  ×ª¢Z:©*  0Áe ƒÆå À  ‚÷	  ƒ‚–%À  Á< ÷	      i©(Œ(i© Š*  VfÁ< ÷	  fÁ ÷	  @÷	( Õ•: €÷	 €  i© Ši© Š*  |ö5  Õ•: ÷	 @Æe ‚‡ Á
 ÷	  Àe  &i©€‰  ¢0 Áe0 U‡        ®M  	 SÀ…á*  =©€p    SÀ…á   ¯”L  š¿K@  šÀK@  *  šÁK@  šÂK@  šÃK@  šÄK@  šÅK@  *  $9ž!@        ´:òs@  ´:2“@  T;z@  J©@	@  *  i©€‰@  Œ©?T@  Ïª\}@  «\g@  «)x@  *  ¬|—@  ¬¯@  ¬š@  ¬¯@  ¬ÚK@  *      (  š d¸ šX:¨¦ š	hˆ šÎh  *  š«:h„ =©0u8Bš˜:hÒ=©€ph  ¯”   
   š d                   &  ¬¯š¿K
šÀKšÁKšÂKšÃK         šÄKšÅK =©0u  *    f& w ¶ `äÃ ÿÁ@Å@EàÅå*  &  ÷	ìÂ€Á ÷	  Àø	 ÂÂÃ    i©€‰ š d (Ïª\}*  L ƒ`Âˆ Ä „cÒ W! £% Ô‹&Å

  šX:ˆ *  r ¥* •£% ü      &¥% ýä‹Š² 
á*  ˜ Òá…eß

ÁÂˆ À  ÷	  W „ ÷	\  šX:ˆ šX:  Œ©?T*  ¾ ÷•-  À  ×¢F 
÷   ÷U    ð•?  Á
$  šX: šX:  ¬|—¬ÚK¬|—*  ä Ðœÿÿ œþÿ7 w æ÷ Å  ÷e  ÷å*  ¬¯ ¬¯ ¬¯  š d  &¬¯ *  
  ÷	  ÷å  ÷e  ×-  Ö€ðU  
 (  ¬¯ 
«\g¬¯ ¬¯ ¬¯ *  0J—£I ,Ä Á Â„ Ã  ÷	† ;‡—£Q €   ¬¯ ¬¯ šX:„ ´:2“*  V 7
  ÷U    ð5   ÞÄˆ Ã  Á ÷	X $‡"  ¬|—¬ÚK¬|—šX:ˆ ´:òs*  |£      N ƒ€£Y Ôƒ€× D ÷   ÷U  &¬|—*  ¢    × D × F ðU 
 €¡ ‡ €  ¬ÚK¬|—*  È±  ± ‡ &
&
&
&
f&&
¦&
Î• æ æ*  îæÿˆ—¢  Å  —¢  õU  
 õU 
 ±   T;z¬š$9ž!*  ‡ ¡ ‡ À 
Ð  Ð 

Ð€Ð€Ð   ¬š ¬š¬š   :€÷	    
J©@	       ”
M  	 OÀ…È*  =©r    OÀ…È   ¯”L  ë¨O!@  ©M@  *  ©Ïx@  <©O!@  D©O!@  E©f@  F©@  *  G©r@  J©O!@  J©'@  J©0H J©Å0H( *  J©í0H< J©1HP J©=1Hd J©e1Hx J©f@  *        K©O!@  K©Ï‘@  L©Ï-@  e©‹@  f©M@  *  i©r@  m©O!@  n©'@  n©r@  o©M@  *  p©r@  u©f@  w©f@  •©f@  –©@  *  –©‹@  ›©O@   ©'@  ±©O!@  ¹©M@  *  ¾©O@  ¾©@  ¾©'@  ¾©˜@  À©M@  *  Ã©¤@  Ä©M@  Ä©Ï_@  )ªÏ@  )ªÏx@  *  *ªÏF@  +ª@  ,ªXR@  .ªM@  .ªÏ_@  *  3ªr@  4ª'@  4ªÏ_@  4ªr@  4ªÏx@  *  5ªr@  6ªf@  7ªO:@  7ªÏ_@  7ªr@  *  7ªÏx@  8ª@  :ª'@  ;ªf@  ?ªÏ@  *  ?ª'@  ŠªOl@  ¢ªM@  ¤ª‹@  ³ªÏ‘@  *  µªY@  ÌªO!@  ÏªU}H} ÓªOž      @  Ôª'@  *  ×ª‹@  ÚªY@  ÚªÏx@  Ûª'@  òªÏF@  *  ôªOS@  ûªOž@  ýªÏ_@   «ÏF@  «Y@  *  «@  «OS@  («O!@  («Y@  («r@  *  /«Ï@  N«Ï@  R«‹@  S«Ï‘@  ‘«O!@  *  “«O!@  “«r@  •«r@  •«@  –«M@  *  œ«Ï-@  œ«ÏF@  ž«O!@  ž«'@   «M@  *  ¤«@  §«Ï@  §«O!@  ¼«r@  ¾«Y@  *  Ä«@  Ä«Ï‘@  Ì«Ož@  Î«r@  å«r@  *  é«Ï_@  í«f@  ï«Ï_@  ð«OS@  ¬'@  *  ¬r@  ¬Ï@  ¬M@  6¬Ï@  Y¬O!@  *  [¬@  [¬O!@  ]¬@  †¬O!@      (    Ûªâ.¸ôÏª\}      h  ¯”   
   Ûªâ.             F   F   F   F   F   F &  –©‹¬Ï ©'4ªÏxS«Ï‘K©Ï‘     F   F   F   F   F   F &  ;ªfÛª':ª'.ªÏ_6ªfï«Ï_  4   F   F   F   F   F   Q &  Ä«Ï‘¬Me©‹¤ª‹7ªÏ_7ªO:  L   Q   Q   F   D   D   D &  [¬O!“«O!³ªÏ‘¾©'R«‹±©O!  d   D   D   F   F   F   I &  f©M*ªÏFôªOSÄ©MY¬O!,ªXR  |   F   F   F   F   F   F &  D©O!§«O!o©Mw©f]¬«  ”   F   F   F   F   F   D &  K©O!G©r“«r/«Ï      ?ªÏ•«  ¬   Q   I   I   F   F   F &  å«rE©f¬r4ªr4ª'«Y  Ä   F   F   F   F   D   F &  ¬'‘«O!òªÏF+ª«OSL©Ï-  Ü   F   F   F   F   F   F &  («rÌªO!7ªrµªY©Ïxi©r  ô   D   F   D   F   F   F &  ¾©OJ©f›©O×ª‹7ªÏx¾«Y    F   F   F   F   F   Q &  Ì«Ož¼«r¹©MÄ©Ï_•©fœ«ÏF  $  Q   F   F   F   I   I &  ž«'À©M§«Ïé«Ï_–«M©M  <  F   D   F   D   D   D &  n©'ë¨O!n©r(«Y «Mœ«Ï-  T  D         D   F   F   F   F &  ¾©–©¢ªM)ªÏx3ªrÓªOž  l  F   F   F   F   F   I &  ûªOžŠªOl.ªMð«OSÚªÏxu©f  „  F   F   F   F   F   I &  Ä«J©O!•«r†¬O!¾©˜p©r  œ  D   D   F   F   F   F &  Ôª'<©O!N«ÏF© «ÏFž«O!  ´  F   F   F   F   I   F &  m©O!¤«)ªÏÎ«rýªÏ_í«f  Ì  F   F   F   F   F   F &  [¬ÚªY5ªrJ©'(«O!8ª  ä  F   F   F   F   ?ª'4ªÏ_6¬ÏÃ©¤      ‚M  	 NÀEÛ*  =©§r    NÀEÛ   ¯”L  w—R;      H) ›™R"H) *  K©Ò’H  e©’ŒH –©’ŒH(  ©’(H& .ªÒ`H+ *  4ªÒyH" 6ªgH% 7ªR;H1 7ªÒ`H2 :ª’(H' *  ;ªgH" ¤ª’ŒH Ûª’(H S«Ò’H$ Ä«Ò’H9 *  ï«Ò`H ¬ÒH3 ¬NH [¬R"H4     (  *  ?Tòy¸/w—O:h©›™O!hK©Ï‘hÇ e©‹h*  –©‹h   ©'h[ .ªÏ_hK4ªÏxh 6ªfhv*  7ªO:hx7ªÏ_hF:ª'h$;ªfhç ¤ª‹h(*  Ûª'h	S«Ï‘h£ Ä«Ï‘h¸ï«Ï_h›¬Ïh(   ¬Mhñ[¬O!hÒ¯”   
   ?Tòy  *    %N%VR- USE OF RMS FEATURE NOT PURCHASE*  & D %N%VR- ONLY [*,*] OR [X,Y] IS LEGAL *  L AS DESTINA      TION %N%VR- ILLEGAL NUMBER O*  r F OUTPUT FILES %N%VR- ILLEGAL INPUT OP*  ˜ TION - %VA %N%VR- PRIVILEGED USER OPTI*  ¾ ON - %VA %N%VR- CONFLICTING OPTION - %*  ä VA %N%VR- ILLEGAL OPTION VALUE - %VA %*  
N%VR- OUTPUT FILE MISSING %N%VR- ILLEG*  0AL RMS RECORD FORMAT - %VA %N%VR- ILLE*  VGAL RMS FILE ORGANIZATION - %VA %N%VR-*  | ILLEGAL NUMBER OF INPUT FILES %N%VR- *  ¢COMMAND LINE TOO LONG %N%VR- ILLEGAL U*  ÈSE OF WILD CARDS IN SUMMARY LISTING FI*  îLE %N%VR- UTILITY INPUT ERROR %N%VR- I      *  LLEGAL DEVICE - %VA %N%VR- ILLOGICAL D*  :EVICE - %VA %N%VR- I/O ERROR ENCOUNTER*  `ED ON OUTPUT FILE - %VA %N%VR- I/O ERR*  †OR ENCOUNTERED ON INPUT FILE %VA,%N   *  ¬     VBN %VA TO %VA. CONTINUE (Y,N)?  *  Ò%N%VR- CHECK AFTER WRITE ERROR ON OUTP*  øUT FILE %VA,%N        VBN %VA TO %VA.   CONTINUE (Y,N)?  N       ”M  	 NÀEÛ*  =©¨r    NÀEÛ   ¯”L  —NH Ó˜R"H) *  D©R"H/ G©’sH# K©R"H f©NH! o©NH *  w©gH$ ±©R"H! ¾©’(H Ä©NH4 *ªÒGH% *  ,ªÐzH ³ªÒ’H% ôªRTH      . «H$ R«’ŒH! *  “«R"H3 “«’sH §«R"H+ Y¬R"H/ ]¬€HA *      (  ?Tòy¸2—Mh¶Ó˜O!h3 D©O!h *  G©rhõK©O!hÛf©Mho©Mh5w©fhR*  ±©O!hí ¾©'h° Ä©Mh‚*ªÏFh/,ªXRhÈ*  ³ªÏ‘h\ ôªOShT«h·R«‹hÌ “«O!h  *  “«rh§«O!h
Y¬O!hÛ]¬hv¯”   
   ?Tòy  *    %N%VR- READ AFTER WRITE ERROR ON OUTPU*  & T FILE %VA,%N        VBN %VA TO %VA. C*  L ONTINUE (Y,N)?  %N%VR- ILLOGICAL USE O*  r F OPTION - %VA %N%VR- CLOSE ERROR ON F*  ˜ ILE %VA, ERROR CODE= %P %N%VR- F      ILE NO*  ¾ T FOUND - %VA %N%VR- PRIVILEGE VIOLATI*  ä ON - %VA %N%VR- FILE ALREADY EXISTS - *  
%VA %N%VR- DEVICE/FILE IS FULL - %VA %*  0N%VR- INPUT FILE %VA IS BACKUP FILE %N*  V%VR- EXPLICIT CONTAINER FILE NAME NECE*  |SSARY %N%VR- FATAL RMS ERROR - PC= %P,*  ¢ STS= %P, STV= %P,%N        FILE= %VA *  È%N%VR- VERSION %VA %N%VR- WRITE ERROR *  îON ATTRIBUTES OF FILE - %VA %N%VR- REW*  IND OR SPACE ERROR ON FILE - %VA %N%VR*  :- DEVICE OFF LINE - %VA %N%VR- DEVICE *  `WRITE PROTECTED       - %VA %N%VR- WRITE ERR*  †OR ON INTEGRITY CHECK TABLE ON OUTPUT *  ¬FILE - %VA %N%VR- NOT A SHAREABLE DEVI*  ÒCE - %VA %N%VR- SYNTAX ERROR - %VA %N%*  øVR- NOT ENOUGH MEMORY AVAILABLE %N%VR-   RELEASE CORE ERROR        ÞM  	 NÀÅç*  =©©r    NÀÅç   ¯”L  Õ˜€H( M™’sH *  ©ÒyH. E©gH& L©Ò.H/ +ª’H- 4ª’(H, *  4ª’sH 7ª’sH' ?ªÒH/ µª’ZH ÌªR"H+ *  òªÒGH+ «’ZH «RTH («’sH$ /«ÒH0 *  ‘«R"H+ •«€H. å«’sH4 ¬’(H2 ¬’sH- *      (  ?Tòy¸oÕ˜hØ M™rhé©Ïxh*        E©fh–L©Ï-hž+ªh]4ª'h~ 4ªrh_ *  7ªrh?ªÏh0 µªYhCÌªO!hñòªÏFh2*  «Yhý«OShŠ(«rhÍ/«Ïh  ‘«O!hD*  •«hª å«rhb¬'h ¬rh¼¯”   
   ?Tòy  *    %N%VR- ILLEGAL USE OF WILD CARDS ON OU*  & TPUT FILE %N%VR- ILLEGAL USE OF WILD C*  L ARDS ON INPUT FILE %N%VR- ILLEGAL RMS *  r RECORD SIZE %N%VR- ERROR INSERT TOO BI*  ˜ G, ERROR CODE= %P %N%VR- READ ERROR, I*  ¾ NTEGRITY CHECK TABLE AND%N        REWR*  ä ITE DATA MAY HAVE BEEN LOST %N%VR- WRI*  
TE ERROR       ON CREATE OF OUTPUT FILE - %V*  0A %N%VR- INPUT FILE IS NOT BACKUP FILE*  V - %VA %N%VR- UNABLE TO ERASE INCOMPLE*  |TE FILE - %VA %N%VR- NO SUCH FILE %N%V*  ¢R- FAILURE TO CREATE CONTIGUOUS FILE -*  È %VA %N%VR- FAILURE TO OPEN COMMAND FI*  îLE %N%VR- COMMAND FILE NESTING DEPTH E*  XCEEDED %N%VR- I/O ERROR ON COMMAND LI*  :NE INPUT %N%VR- TI LUN ASSIGNMENT ERRO*  `R %N%VR- INTEGRITY CHECK TABLE FULL. C*  †ONTINUE (Y,N)?  %N%VR- FILE PROCESSING*  ¬ COMPLETE - %VA %N%VR- UNCORRECTABLE       E*  ÒRROR, VBN %VA TO %VA,%N        REASON=*  ø %VA %N%VR- NO RENAME ALLOWED %N%VR- T*  OO MANY SELECTIVE FILE SPECIFICATIONS *  D%N%VR- READ ERROR ON FILE ATTRIBUTES -	  j %VA C       "M  	 NÀÅÎ*  =©ªr    NÀÅÎ   ¯”L  ©NH J©gH# *  i©’sH$ n©’(H! •©gH ›©R	H, ¹©NH *  ¾©R	H  À©NH  Ä©Ò`H( 7ªÒyH$ ×ª’ŒH" *  –«NH œ«ÒGH1 ž«’(H4 §«ÒH: ¼«’sH$ *  ¾«’ZH$ Ì«RŸH$ é«Ò`H=     (  ?Tòy¸ë*  ©Mh·J©fhD i©rh  n©'hÊ•©fh‰*  ›©Ohg ¹©MhE¾©Oh$ À©Mh      Ä©Ï_ha*  7ªÏxhµ ×ª‹h“ –«Mh¢œ«ÏFh¦ž«'h×*  §«Ïh+¼«rh!¾«YhÙ Ì«Ožhý é«Ï_he
  ¯”   
   ?Tòy  *    %N%VR- NOT A DIRECTORY DEVICE - %VA %N*  & %VR- FILE NOT AVAILABLE - %VA %N%VR- O*  L UTPUT VOLUME CORRUPT - %VA %N%VR- INCO*  r MPLETE BACKUP FILE REMAINS - %VA %N%VR*  ˜ - MISSING OPTION VALUE - %VA %N%VR- IL*  ¾ LEGAL OUTPUT OPTION -  %VA %N%VR- FILE*  ä  NAME SYNTAX ERROR - %VA %N%VR- FILE T*  
YPE SYNTAX ERROR - %VA %N%VR- DIRECTOR*  0Y SYNTAX ERROR - %VA %N%VR- FI      LE, %VA,*  V CORRUPTED %N%VR- ILLEGAL FILE SPECIFI*  |CATION - %VA %N%VR- EMPTY FILE INDEX A*  ¢REA %N%VR- REQUESTED RECORD LOCKED. CO*  ÈNTINUE (Y,N)?  %N%VR- REQUESTED RECORD*  î NOT FOUND. CONTINUE (Y,N)?  %N%VR- FI*  LE POSITION LOST - %VA %N%VR- ERROR DU*  :RING WILD CARD LOOKUP %VA. RSTS/E CODE*  `= %P %N%VR- I/O ERROR ENCOUNTERED DURI*  †NG TUTORIAL, ERROR CODE= %P %N%VR- RES*  ¬TORED FILE %N%VR- BACKUP FILE %N%VR- D  ÒIRECTORY NOT FOUND - %VA         –M  	 NÀÅç*  =©«r          NÀÅç   ¯”L  Ö–€H ë¨R"H0 *  J©R"H+ n©’sH u©gH* –©€H. ¾©H. *  )ªÒyH2 .ªNH) 3ª’sH ŠªRmH8 ¢ªNH *  ÓªRŸH ÚªÒyH8 ûªRŸH$ («’ZH0 •«’sH *  œ«Ò.H$  «NH) Ä«€H ð«RTH>     (  *  ?Tòy¸CÖ–h'ë¨O!h  J©O!hÿn©rh0 *  u©fh»–©hù ¾©hË )ªÏxhW.ªMh*  3ªrh‰ŠªOlhä¢ªMh>ÓªOžh£ÚªÏxhƒ*  ûªOžhÀ(«YhN •«rh*œ«Ï-h§  «Mh~   Ä«håð«OShE¯”   
   ?Tòy  *    %N%VR- FILE ACCESS ERROR ON %VA, ERROR*  &  CODE= %P %N%VR- DEVICE NOT READ      Y - %V*  L A %N%VR- OPEN ERROR ON %VA, RSTS/E ERR*  r OR CODE= %P %N%VR- READ ERROR ON FILE *  ˜ PROLOGUE - %VA %N%VR- ERROR IN FILE PR*  ¾ OLOGUE - %VA %N%VR- FIND FILE ERROR ON*  ä  %VA, ERROR CODE= %P %N%VR- ENTER FILE*  
 IN DIRECTORY ERROR ON %VA,%N        E*  0RROR CODE= %P %N%VR- LABEL ERROR - %VA*  V %N%VR- ILL USE OF /BL, /AP, OR /SU WI*  |TH FILE ORG  %N%VR- INVALID /KR VALUE *  ¢ %N%VR- TOO MANY KEYS - %VA%N %N%VR- N*  ÈO SUCH KEY FOR FILE - %VA%N %N%VR- /KR*  î NOT ALLOWED FOR       SEQUENTIAL OR RELATIV*  E FILE  %N%VR- INCORRECT FILE ORGANIZA*  :TION - %VA %N%VR- SWITCH /TR OR /PD OR*  ` BOTH ARE NEEDED FOR THIS CONVERT  %N%*  †VR- INPUT AND OUTPUT RECORD SIZES DO N*  ¬OT CORRESPOND  %N%VR- %VA DUPLICATE RE*  ÒCORDS NOT WRITTEN  %N%VR- SELECT ERROR*  ø - %VA %N%VR- CREATE ERROR ON %VA, ERR)  OR CODE= %P %N%VR- FILE READ ERROR%N R       HM  	 OÀ…È*  =©¬r    OÀ…È   ¯”L  ˜’(H <©R"H2 *  F©H0 J©’(H" m©R"H= p©’sH ¾©™H *  )ªÒH 5ª’sH+ Ôª’(H)       Úª’ZH' ýªÒ`H *   «ÒGH( («R"H N«ÒH" ž«R"H( ¤«’H *  Î«’sH' í«gH$ [¬H †¬R"H      (  *  ?Tòy¸ü˜'h} <©O!hš F©hî J©'h»*  m©O!hnp©rh> ¾©˜h  )ªÏhÉ5ªrh*  Ôª'hT ÚªYhiýªÏ_h «ÏFh(«O!hÝ*  N«ÏhÌ ž«O!hF¤«h«Î«rhäí«fh)  [¬hM†¬O!h  ¯”   
   ?Tòy  *    %N%VR- EMPTY INDEX INPUT FILE%N %N%VR-*  &  FILE NOT FOUND - %VA%N %N%VR- DUP RCD*  L = %VA%N %N%VR- READ ERROR OR INCONSIST*  r ENT DATA.%N        MAY HAVE LOST FILES*  ˜ . %N%V      R- UNABLE TO RESTORE SPECIAL ATT*  ¾ RIBUTES - %VA %N%VR- PRIMARY KEY CAN N*  ä OT CHANGE %N%VR- KEY OPTION COMBINATIO*  
N CHG-NODUP ILLEGAL %N%VR- NO KEY DECL*  0ARED FOR INDEXED FILE %N%VR- RELATIVE *  VOUTPUT FILE NOT EMPTY%N %N%VR- BUCKET *  |SIZE OR KEY OF REFERENCE EXCEEDS LIMIT*  ¢ - %VA%N %N%VR- RECORD TOO BIG - %VA%N*  È %N%VR- FILE LOCKED - %VA%N %N%VR- FIL*  îE VERSION SYNTAX ERROR - %VA %N%VR- NO*   MORE MATCHING FILES %N%VR- ERROR IN T*  :EMPORARY FILE - %P %N%VR- ERROR WI      TH W*  `ILDCARDS %N%VR- MAXIMUM RECORD EXCEEDE*  †D - %VA%N %N%VR- ILLEGAL MAXIMUM RECOR*  ¬D SIZE - %VA%N %N%VR- FILE CREATE FAIL*  ÒED - %VA%N %N%VR- FILE OPEN ERROR - %V  øA%N        üM  	 NÀÅç*  =©­r    NÀÅç   ¯”L  Ã©’¥H8 4ªÒ`H2 *  8ªH8 ?ª’(H. 6¬ÒHF     (  ?Tòy¸*  Ã©¤hÞ 4ªÏ_hf 8ªh  ?ª'h8 6¬Ïh˜ 
  ¯”   
   ?Tòy  *    %N%VR- ILL USE OF /PD WITH OUTPUT FILE*  & 'S RECORD FORMAT  %N%VR- ILLEGAL USE O*  L F /WF WITH RECORD FORMAT  %N%VR- ILLEG*  r AL       USE OF /LO WITH FILE ORGANIZATION  *  ˜ %N%VR- INPUT AND OUTPUT FIXED CONTROL *  ¾ HEADER SIZES DO NOT CORRESPOND  %N%VR-*  ä  INPUT RECORD IS TOO SHORT FOR VFC REC  
ORD HEADER         4M  	 NÀÅÎ*  ¼€    NÀÅÎ   ¯”L  Ëª=	@  Ëªþ~@  *  ÎªÙz@  Îªßz@  ×ª¡q@  ×ª§q@  Øª÷@  *  Úª‘'@  Úª—'@  Úª(x@  Úªy@  Æ«Ú@  "      (  û¬ù_8°¼©€h  ¯”   
   û¬ù_  *    ×-   
×-   ÷-    w Œ÷5   
×-   Úª‘'Úª—'ÎªÙzÎªßz$Ëªþ~*  &    ×-   w `×­   $×­   ×-           Úª‘'Úª—'Úª—' Úª‘'(Øª÷*  L  ÷-    w d ÷5   w X w $w ( ×-  
ÚªyÚª(xËªþ~*  r    ÷5   w < w  ×-   w w (   Øª÷Ëªþ~Øª÷*  ˜ ÷5   ÷-    w  w à ÷-    w  w    Ëªþ~Úª(xÚªyÚª(x Úªy*  ¾ Ð ×­    ×­    ÷   ×­    ×­      ×ª¡q×ª§qËª=	×ª¡q&×ª§q*  ä ÷   ×­    ×­    ÷   ×­      
Ëª=	×ª¡q×ª§q Ëª=	$×ª¡q*  
×­    ÷   ×­   ×­   ÷   ×­   ×ª§qËª=	×ª¡q×ª§q&Ëª=	*  0   ×­    ÷   ×­          ×­    ÷   ×ª¡q×ª§qËª=	×ª¡q"×ª§q*  V   ×­    ×­   ÷   ×­    ×­  &  Ëª=	
×ª¡q×ª§qËª=	 ×ª¡q(×ª§q*  |  ÷	   ‡ Ä¢ÿw   Ä¡ÿw   Ä‡ÿw   Ä  Ëª=	Æ«ÚÆ«Ú&Æ«Ú  ¢ˆÿw   Ä…ÿw     Æ«ÚÆ«Ú       DM  	 NÀEÂ*  ÀÎ    NÀEÂ   ¯”L  ¬¯@  ¬°@  *  ¬¯@  ¬°@      (  û¬ d¸¹©ª%h *  ¹©ªph ¿©ª%h ¿©ªph À©Îh Ã©ª%h  *  Ã©ªph «»{èP«¹{è` «½{è «·{è  *  
­YTè ­¿d¨‚¼©¨Whf¼©Ðzh~Å©Îh€*  Å©Bxh€	¬ßWhP ¬÷vhH¬Ÿ      h  ¬Ÿhp    ¬Xh¯”   
   û¬ d                      p *  ¬¯
¬¯¬°¬°­¿d  ­¿dp 
   ­¿d      P                                
   
 
  
          &   & P f          P f P *  P                           H          H  v                               ’   ’         
     *  8                                      6          T   B  B     F  F     E  E    D  D          :  :           ~  ~     €  €        &M  	 NÀ…È*  ’M    NÀ…È   ¯”L  @©ÌG@  À©Î@  *  Ã©ª%@  Ã©ªp@  Å©Î@  Å©Bx@  6ªŒw@  *  Éªd@  Ùª–Q@  «&@  «•@  «\g@  *  «)x@  Æ«Ú@      (  û¬ d¸’­¿d¨   û¬ù_8ö ª’Mh  ¯”   
   û¬ d      ðú  éÿ  @þ  ñÿ þ  Šÿ$  Éªd
­¿d  Éªd­¿d Éªd       TI:   ­¿d    *   		RMS-11 CONVERT UTILITY
		----------*  D ------------
FUNCTION: MOVE RECORDS B*  j ETWEEN FILES
FORMAT:   CNV OU      TFILE[/O*   PTIONS]=INFILE[/OPTIONS]

GLOBAL OPTI*  ¶ ONS: 
 ? OR HELP	TYPE HELP MESSAGES
*  Ü  ID		IDENTIFY CURRENT VERSION NUMBER
*   SL:FILESPEC	PROVIDE SUMMARY LISTING F*  (ILE

OUTFILE OPTIONS:
 AP		APPEND RE*  NCORDS TO SEQUENTIAL FILE
 FO:VAL 	FIL*  tE ORGANIZATION
 SU		SUPERSEDE EXISTIN  šG SEQUENTIAL FILE   ¬*  ¬ TR		TRUNCATE RECORDS
 PD:CHAR 	PAD R*  ÒECORD WITH ASCII CHARACTER
 PD:#OCTAL*  ø	PAD RECORD WITH OCTAL VALUE
 WF		WRI*  TE FIXED HEADER OF VFC REC      ORD
 LO		EN*  DFORCE BUCKET LOADING FACTOR

INFILE O*  jPTIONS:
 KR:N		KEY OF REFERENCE NUMBE  RI
   ­¿d  
          
   û¬ù_  *    À  Á Á
Áå úÅ  C 3
( 3Š, ó  ­¿d  Ã©ª%*  &  * ó• - ó  ó   ó• 3 3
 ÷	  ×,  û¬ d À©Î&«•*  L   ÷	h w n Å  C ó•   ó•   ó    Ã©ªp"Ùª–Q(Å©Î*  r  ó   ÷	  ×,  ÷	4 Å  C w 2 À  Å©Bx«&Ã©ª%*  ˜  Á÷	 À¬Áå ÷	 ‡ 3 s ÷	  ‡   û¬ d û¬ d¬&«\g*  ¾ Á  ÷	  ‡ ×-   À w   ×-        À &  û¬ d  
@©ÌG­¿d  6ªŒw ­¿d   ä w   —  Ääÿw     6ªŒwÆ«Ú       ¸ M  	 NÀ…È*  ày    NÀ…È   ¯”L  9©""@      (    @©ÌG84 @©ÌGh  ¯”   
   @©ÌG  *    És" 
Áe w  Dù   ± ‡ Áe îÂ  9©""  &  Á Ä ± ‡        ÄM  	 NÀÕ*  6&    NÀÕ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¾©…@  Ý©á~@  6ªŒw@  Éªd@  *  Êª(@  ÊªÁG@  ÊªN@  ÎªÙz@  Óªær@  *  ×ª¡q@  Úª‘'@  Úª(x@  Ýªƒ@  Ýª)N@  *  «E`@  «)x@  Æ«Ú@  Æ«@  	¬ðW@        *      (  û¬ d¸‚ ­¿d¨
 û¬ù_8n6ª&h  
  ¯”   
   û¬ d       ý  ›ÿ  ðú  éÿ  0þ  ¼ÿ$  Éªd
­¿d  Éªd­¿d  Éªd     ý  ¾ÿ  @þ  ñÿ þ&  ­¿d  Éªd­¿d  Éªd­¿d   *   ±ÿ  àÿ  ‘ÿ  @ý  ‘ÿ$  Éªd­¿d  Éªd­¿d  Éªd  >    þ  ¦ÿ  pû  ¦ÿ   ý&  ­¿d  Éªd­¿d  Éªd­¿d    R   ¾ÿ  Àý  ÿÿ Pû  ‰ÿ$  Éªd­¿d  Éªd­¿d Éªd  f    û  ‹ÿ  `ù  ½ÿ  ü&  ­¿d  Éªd­¿d  Éªd­¿d    z   ©ÿ     Éªd­¿d  ­¿d                      
   û¬ù_  *    ÄI À  Á Á
Áå úÁ  7
 À ÷	  
­¿d  "­¿d &­¿d *  &   ÷	  Å  C ³( 3, Å  C ó•     ¾©…
Ý©á~¹©ª%¹©ª%*  L ó•  ó• 3 ó  & ÷	  ×,  w ¶ ÷œ   	¬ðW«E`*  r   ÷œ   ÷œ1   ÷   ÷œ0   óµ  2 ÷.    ×ª¡q
Úª‘'ÊªÁGÚª(xÎªÙz*  ˜   ó ÷   ÷m    ×¬   Ä 7   ÊªNÝªƒÎªÙzÝªƒ*  ¾   ÷m     
×¬   Àœ1   À Â ÷	  ÝªƒÎªÙz
Ýªƒ*  ä   w  ×­    óµ 2 ÷   ó¥   ×-  Ýª)NÝªƒ×ª¡qÊª      (*  
   w P Å  C ó@  ‡ Á  ÷	  ×-  $  Óªær¹©ªp û¬ d  $@©ÌG(­¿d  *  0 À w   ×-  À w   —  €w   6ªŒw­¿d 6ªŒw  V  ×-  w   Ä¤ÿw   ‡   Æ«­¿d Æ«ÚÆ«Ú       M  	 NÀ…á*  Øì    NÀ…á   ¯”L  ê¨¤`@  %©¬&@  *  %©|(@  G©lY@  G©qY@  G©xY@  G©4Z@  *  G©9Z@  G©@Z@  G©L[@  G©Q[@  G©X[@  *  ¼©€@  ª’M@  6ª&@  6ªÊ8@  Êª$H 
*  ÊªH Ôª–QH Ùª–QH àª–QH ,«&@  *  K«€}@  “«ì@  “«ñ@  “«ø@  “«´@  *  “«¹@  “«      À@  “«Ì@  “«Ñ@  “«Ø@  *  •«€K@  «)x@  «6x@  ½«Êj@  Ä«
&@  *  ¬ƒd@  9¬’@      (  û¬ d¸ Êª®h *  ÊªìGh  ÊªNh Úªlh ­¿d¨b Éªffh *  Êªéh: Êªïh> Êª(hJ Êª)hN Êª4hP *  ÊªhL ÊªhR Êª$hT ÊªÁGh* ÊªÇGh, *  Êª¡Kh\ Êª÷KhZ Êª9Mh< Êª?Mh@ ÊªNhF *  ÊªNhH Ëª=	h Ëª™`h ËªYqh Ëªþ~h *  ÌªÀƒh Íª¹Zh Îªa^h
 Îª·^h ÎªÙzh$ *  Îªßzh( Óª!qh Óªwqh Óªærh ×ª¡qh. *  ×ª§qh0 Øª¡h` Øª÷h^ Ùª™QhV ÙªŸQhX *  Úª !h" Úª‘'h2 Úª—'h4 ÚªP2h& ÚªYKh      B *  Úª_KhD Úª(xh Úªyh ÛªfMh  Ûª¦…h *  Ýªqh6 Ýªƒh8 û¬ù_8F©€‰h  ÚªÞh  àªdh¯”   
   û¬ d           
   ­¿d  *                                          *  &                                         L                       
   û¬ù_  *    ÷	  ÷	  À  Áb Á
Áå ú÷  ÷5 @&  «6x
6ªÊ8­¿d  "¬ƒd $­¿d &  &  ÷	  ÷5  ÷	  w Ô ÷5 € ÷	&  ­¿d 
9¬’­¿d ª’M ­¿d $  H   ÷	  ÷ ‡ ÷	  ÷	  ×-  ÷	*  Ä«
&K«€}­¿d 6ª&      ,«&­¿d    h   ÷	  ÷	  ÷	  ×-"  ÷	  ×-(  ½«Êj¼©€%©¬&%©|(­¿d" •«€K$  „   ÷	  ÷	  ×-  ÷	  ÷	  ×-*  ­¿d G©X[“«Ø­¿d G©L[ “«Ì$  ¤   ÷	  ÷	  ×-  ÷	  ÷	  ×-*  ­¿d G©Q[“«Ñ­¿d G©xY “«ø$  Ä   ÷	  ÷	  ×-  ÷	  ÷	  ×-*  ­¿d G©lY“«ì­¿d G©qY “«ñ$  ä   ÷	  ÷	  ×-  ÷	  ÷	  ×-*  ­¿d G©@Z“«À­¿d G©4Z “«´   	 ÷	  ÷	  ÷	  ‡   ­¿d G©9Z“«¹ê¨¤`       Ð M  	 NÀEÂ*  „:    NÀEÂ         ¯”L  =©€p@  F©€‰@  *  àªd@  ¬ðZ@      (  ¬ K¸ Éªdh 
  ¯”   
   ¬ K      CNV          =©€p  F©€‰  w     ¬ðZ
=©€pF©€‰àªd       bM  	 NÀ¨Ä*  %Ì    NÀ¨Ä   ¯”L  sð3@  sÖK@  *  s0M@  sÐf@  ²Î@  Ìü@  Þ@  *  ª%  @  <&ly@  E, K@   .ÖK@   .Ðf@  *  Ô2 d@  faÖK@  faÐf@  ßfR@  ßfBx@  *  ßf*–@  \g%@  ·k  @  »zÖK@  »zÐf@  *  ¤‘ÖK@  ¤‘Ðf@  X«@  Ž±J…@  Ž±P…@  *      (  %Ì(ÞsÌhœ²hÈ ²Xh *  ²øh0      ²˜hj²X hÀ ²˜!hø ²8"h(*  ²Ø"hb²˜qh° ²Ørhè ²xsh²thR*  ²Øh¸ ²’hð ²¸’h ²X“hZ .Îh  *   .œwh¨ ð3shŽð3ßfhP faÎhÐ faœwhÜ *  ÒføMhr×f shX ßfÌh> ßfð‘hj àfØrh  *  ãf8Ÿh| çf KhŽ »zÎh»zœwh¤‘Îh8  ¤‘œwhJ¯”   
   %Ì  *    ÷	  Á  Â  w   À  7  Á
 Á
Àe 
&  ²Î
ßfRßfBx\g%ßf*–X«*  & Á
ýÀ  Á  p  1 ‡ ÷	Îÿð   ÷U   
X«ª%  "Ž±J…(  L   ‡ Àæÿw   Á  Â  ÷	  Îe ‡ Á  Â&  ÌüÔ2 d .Ðf .ÖKE,       K$faÐf(  p   ÷	  Îe ‡ Á  Â  ÷	  Îe ‡ Á  Â&  faÖKE, K»zÐf»zÖKE, K$¤‘Ðf*  ”   ÷	  Îe ‡ ÷E   ‡ ÷U   ‡ ÷E   ‡ ÷E   ¤‘ÖKE, KŽ±J…Ž±J…$Ž±J…*  º    ‡ ÷E   ‡ ÷E   ‡ 7
  ÷Eð   ‡ 7
  &  Ž±J…Ž±J…Ž±J…Ž±J…"Ž±J…(Ž±J…*  à ÷Uð   ‡ ÷E   ‡ ÷E    ‡ ÷E@   ‡ ÷E€      Ž±J…Ž±J…Ž±J… Ž±J…(Ž±J…*  ‡ ÷E   ‡ ÷U   ‡ ÷E   ‡ ÷E   ‡ ÷E   
Ž±J…Ž±J…Ž±J…"Ž±J…*  ,  ‡ ÷E   ‡ ÷E   ÷U à  ÷	öþ‡ ÷U ð  ‡    Ž±J…Ž±J…Ž±J…Ž±J…&Ž±J…*  R÷E   ‡ ÷E    ‡ ÷E @  ‡ ÷E       €  ‡ ÷5    &  Ž±J…Ž±J…Ž±J… Ž±J…&<&ly(Þ*  x‡ Á  Â  ÷	  Îe ‡ Á  Â  ÷	  ‡ ÷&  
sÐfsÖKE, Ksð3 s0M$·k  *  ž  ÷U   ‡ ÷  ×-   Îe ‡ ×-       Ž±J…ÌüŽ±P…Ž±J…&Ž±J…  ÄÎe ‡ Â  ò  . ÷U   ‡   ª%  Ž±J…Ìü       ¬ M  	 NÀEÂ*  %R    NÀEÂ   ¯”L  %XH@  G©@Q@  *  0²#	@      (  %R( ãf%h  ¯”   
   %R      Á Â  Å  ÷	  ‡   
%XHG©@Q0²#	       ªM  	 NÀ¨Ä*  %\}    NÀ¨Ä   ¯”L  sÌ@  ²@  *  ²      X@  ²ø@  ²˜@  ²X @  ²˜!@  *  ²8"@  ²Ø"@  ²˜q@  ²Ør@  ²xs@  *  ²t@  ²Ø@  ²’@  ²¸’@  ²X“@  *  Ìü@   .Î@   .œw@  ð3s@  ð3ßf@  *  ,:@`@  faÎ@  faœw@  ÒføM@  ×f s@  *  ßfÌ@  ßfð‘@  àfØr@  ãf8Ÿ@  çf K@  *  »zÎ@  »zœw@  ¤‘Î@  ¤‘œw@      (  *  Ì«e	¸TG©@Qh  Œª¸ %XHh  ‹ªÐ¸ 
  ¯”   
   Ì«e	      È  È…    À†   À  (    4

  
 
àfØr ßfð‘   TÊ     X ?   À‚  Ê &  TfaÎÌüX ð3ßf fa      œw  .   X R  * W  * E  * D*  ÌüX 
²Ør* ²’* ²˜!*   F   *   ²X*  ‹ªÐ  	    NONEÿ
   Œª          ‹ªÐ   Ì«e	J   J €   X À†   À  TÊ   &  Ìü
X ,:@` ×f sT .Î  d     ?  X À‚  Ê     R&  Ìü  
ð3ßfX  .œwÌü    |   r W  r E  r D  r *  ²˜qr 
²Ør ²X r ²r 
   ‹ªÐ 	   NONEÿ
   Œª       ‹ªÐ  Ì«e	’   ’      À†  X À  TÊ   &  Ìü
  ,:@`X ãf8ŸT»zÎ        ¬   è ?    À‚  Ê   è R&  Ìüè 
ð3ßf  »zœwÌüè   Ä   º W  º E  º D  º *  ²xsº 
²¸’º ²8"º ²øº 
   ‹ªÐ
 	  
 NONEÿ 
   Œª    
   ‹ªÐ
  Ì«e	Ú   Ú ‚   è À†    À  TÊ   &  Ìü
è ,:@`  çf KT¤‘Î   ô     ?  è À‚  Ê       R  *  Ìü
ð3ßfè ¤‘œwßfÌÌü²t  W  E  D  $  ²X“
²Ø"²˜
   ‹ªÐ 	   NONEÿ 
   Œª       ‹ªÐ  Ì«e	$&  $ƒ       À†  è À    Ê           ?  *  ßfÌ
Ìü,:@`è ÒføMÌü$ð3s  F4Ì    À†  4  4sÌ,:@`4       DM  	 NÀ…È*  *c,    NÀ…È   ¯”L  D©b@  D©Åb@  *  G©]\@  G©…\@  J©$@  i©{@  i©Å{@  *  ¹©]\@  Ý©Ý@  Ý©‚@  («$@  («E$@  *  U«Ý@  U«‚@  «)x@      (  û¬ d¸  *  
­WTìJ ­¿d¨ Þ©ºh ë©8Ÿh  ¯”   
   
­WT          («$         D©b         G©]\           i©{         J©$ 0   0     U«Ý (   (     Ý©Ý H         H     ¹©]\         («E$         D©Åb         G©…\ "   "     i©Å{ *   *     Ý©‚ 2   2     U«‚ ­¿d                 "M  	 NÀEÂ*  *@-    NÀEÂ   ¯”L  D©íb@  G©­\@  *  i©í{@  Ý©-‚@  («m$@  U«-‚@  «)x@  "      (  û¬ d¸  
­WTì6 ¯”   
   
­WT        («m$         D©íb         G©­\ $   $     i©í{ ,   ,     Ý©-‚ 4   4     U«-‚       ,M  	 NÀÕ*  ,&    NÀÕ   ¯”L  9©""@        @©ÌG@  *  ¾©…@  ¿©ª%@  Ý©á~@  6ªŒw@  Éªd@  *  Éªff@  Êª@  ÊªÇG@  ÊªN@  ËªYq@  *  Ëªþ~@  Îªa^@  Îªßz@  ×ª§q@  Úª !@  *  Úª—'@  Úªy@  Ûª¦…@  «E`@  «)x@  *  Æ«Ú@  Æ«@  	¬ßW@      ( û¬ d¸‚ "  ­¿d¨
 û¬ù_8Ž,«&h  ¯”   
             ÷	    û¬ù_   û¬ d       ý  ›ÿ  ðú  éÿ  0þ  ¼ÿ$  Éªd
­¿d  Éªd­¿d  Éªd     ý  ¾ÿ  @þ  ñÿ þ&  ­¿d  Éªd­¿d  Éªd­¿d   *   ±ÿ  àÿ  ‘ÿ  @ý  ‘ÿ$  Éªd­¿d  Éªd­¿d  Éªd        >    þ  ¦ÿ  pû  ¦ÿ   ý&  ­¿d  Éªd­¿d  Éªd­¿d    R   ¾ÿ  Àý  ÿÿ Pû  ‰ÿ$  Éªd­¿d  Éªd­¿d Éªd  f    û  ‹ÿ  `ù  ½ÿ  ü&  ­¿d  Éªd­¿d  Éªd­¿d    z   ©ÿ     Éªd­¿d  ­¿d                
   û¬ù_  *    ÄO À  Á Á
Áå úÁ  7
 À ÷	  
­¿d  "­¿d &­¿d *  &   ÷	  Å  C ³( 3, ×­   ó•    ¾©…
Ý©á~¿©ª%Îªa^*  L ó•  ó• 3 ó  & ×­    ×-     	¬ßWÎªa^"Éªff*  r 
×-   ó  ÷   w ¤ ÷	  ×,          Ûª¦…ËªYq «E`*  ˜ w  w ’ ÷œ   ÷œ   ÷œ1   ÷.   ÷      ×ª§qÚª—'ÊªÇG"ÊªN(Úªy*  ¾ ÷œ0   ÷¬   w ¢ ÷5   ×­    w ¢   ÎªßzÎªa^Ëªþ~ ×ª§q*  ä ×¬  ÷   ×­    óµ 2 &
&
&
&
  Úª !×ª§q*  
&
&
&
&
&
æ æ æÿˆóµ 2 ÷     (Êª*  0‡ Á  ÷	  ×-   À w   ×-  À &  û¬ d  @©ÌG­¿d  6ªŒw ­¿d *  Vw   —  €w   ×-  w   Ä£ÿ÷   $  6ªŒwÆ«­¿d Æ«Ú(­¿d    |÷    w ´ÿÄ†ÿw     Éªd9©""Æ«Ú             M  	 NÀÕ*  K€}    NÀÕ   ¯”L  ¾©…@  Ý©á~@  *  Ý©€@  Éªff@  Êª¡K@  Êª÷K@  Ëªþ~@  *  Îªa^@  Îª·^@  Óª!q@  Óªwq@  Óªær@  *  Øª¡@  Øª÷@  Ûª¦…@  Æ«Ú@      ( *  û¬ d¸  ­¿d¨ û¬ù_8.K«€}h  ¯”   
             ÷	    û¬ù_   û¬ d              -      .      0  &  Îª·^
Îªa^ÓªwqÓª!qÊª÷KÊª¡K         Øª÷Øª¡ ­¿d        
   û¬ù_  *    ÷5   ÷   7
  ÷5   ÷   7
   Ëªþ~ÉªffÉªffËªþ~$Ûª¦…*  &   ×-   ×-   w æ Á       @÷   À  ÷	$  Ûª¦…ÉªffÛª¦…"­¿d  &­¿d  *  L   †w Ø ÷	  ƒÅ  À ÷	  Á @÷   ¾©…Ý©á~û¬ d   Ý©€$  r   À  ÷	  †7
  ÷   ÷	  ÷*  ­¿d  ­¿d  ¾©…ÓªærÓªær Ý©á~*  ’   w 6 ƒÅ  À ÷	  ×-   ×-  	 "  Óªærû¬ d  Ý©€Óªwq&Óª!q*  ¸ w Z ×-   ÷  w H ×-   ×­      ÓªwqÓª!qÉªff&Îªa^*  Þ w * ×-   ×­    w  ×-   ×­    Ûª¦…Îªa^ Êª÷K(Îªa^*    w  ‡ Ä¨ÿw   ‡ Ä§ÿw   ‡ Äúÿw     Æ«ÚÆ«Ú(Æ«Ú  *‡ ‡              M  	 NÀEÂ*  “ì    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  6ªŒw@  Éªd@  *  Ëªþ~@  ÎªÙz@  Îªßz@  Øª¡@  Øª÷@  *  Úª‘'@  Úª—'@  ÚªP2@  Úªy@  «œ,@  *  «\g@  «)x@  Æ«Ú@  Æ«@      (  *  û¬ d¸: ­¿d¨ û¬ù_8¨“«ìh  ¯”   
   û¬ d      ù  Ïÿ ðü  çÿ ðú  éÿ$  Éªd
­¿d Éªd­¿d Éªd    `ú  ¸ÿ  ú  ÿ àù&  ­¿d Éªd­¿d Éªd­¿d   *   Òÿ °û  Œÿ    &  Éªd­¿d Éªd­¿d   ­¿d              
         û¬ù_  *    Ä À  Á Á
Áå úÅ  C ó  "   
­¿d  ¹©ªp&ÚªP2*  & ó  0 ×-   ÷  Â  Ä Ô  Â
ü÷	   ÎªÙzØª÷ÚªyÚªy"Øª¡*  L   ×,  w $ ÷	â   w > 	 ÷	ê   «œ,*  r Å  C w è Â Á Å  C ³ s ó  ¹©ª%¿©ªp*  ˜   " ó  0 ÷5   ×­   @Àm  ó   &  ÚªP2
ÎªßzËªþ~Úª—'"ÎªÙz&ÚªP2*  ¾ 3 ×­   @Àí  Àw Æ ³" Âm  ³   
Úª‘'Îªßz$Îªßz*  ä 3 ×-   ÷  ó   ÷5   	÷     
Øª÷ÚªyÚªy Ëªþ~&Úªy*  
w   ó         ÷	  ×,  w òþ÷	, W 	   ÚªyÚªy«\g*  0÷	( Å  C w &  
×, °ýÀ À	 ‡   
¿©ª%*  VÁ	 ‡ Á  ÷	  ‡ ×-   À w   ×-  &  û¬ d  @©ÌG­¿d  "6ªŒw&­¿d *  |À w   —  €w   ×-  w   Ä„ÿ  6ªŒwÆ«­¿d $Æ«Ú
  ¢w   ‡   Æ«Ú       &M  	 NÀEÂ*  “ñ    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  6ªŒw@  Éªd@  *  Ëªþ~@  ÎªÙz@  Îªßz@  Øª¡@  Øª÷@  *  Úª‘'@  Úª—'@  ÚªP2@  Úªy@  «œ,@  *  «\g@  «)x@  Æ«Ú@  Æ«      @      (  *  û¬ d¸: ­¿d¨ û¬ù_8°“«ñh  ¯”   
   û¬ d      ù  Ïÿ ðü  çÿ ðú  éÿ$  Éªd
­¿d Éªd­¿d Éªd    `ú  ¸ÿ  ú  ÿ àù&  ­¿d Éªd­¿d Éªd­¿d   *   Òÿ °û  Œÿ    &  Éªd­¿d Éªd­¿d   ­¿d              
   û¬ù_  *    Ä À  Á Á
Áå úÅ  C ó  "   
­¿d  ¹©ªp&ÚªP2*  & ó  0 ×-   ÷  Â  Ä Ô  Â
ü÷	   ÎªÙzØª÷ÚªyÚªy"Øª¡*  L   ×,  w $ ÷	ì   w F 	 ÷	ò   «œ,*  r Å  C w ð Â       Á Å  C ³ s ó  ¹©ª%¿©ªp*  ˜   " ó  0 ÷5   ×­   @Àm  ó   &  ÚªP2
ÎªßzËªþ~Úª—'"ÎªÙz&ÚªP2*  ¾ 3 ×­   @Àí  Àw Î ³" Âm  ³   
Úª‘'Îªßz$Îªßz*  ä 3 ×-   ÷  ó   ÷5   	÷     
Øª÷ÚªyÚªy Ëªþ~&Úªy*  
w   ó   ÷	  ×,  w òþ÷	4 W    ÚªyÚªy«\g*  0w z W 	 ÷	& Å  C w $ ×, °ýÀ   ¿©ª%*  VÀ	 ‡ Á	 ‡ Á  ÷	  ‡ ×-   À w   û¬ d  @©ÌG­¿d  *  |  ×-  À w   —  €w   ×-  $  6ªŒw      ­¿d 6ªŒw Æ«$­¿d   ¢w   Ä„ÿw   ‡   Æ«ÚÆ«Ú       ÈM  	 NÀEÂ*  “ø    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  6ªŒw@  Éªd@  *  Ëªþ~@  ÎªÙz@  Îªßz@  Øª¡@  Øª÷@  *  Úª‘'@  Úª—'@  ÚªP2@  Úªy@  ÛªfM@  *  «œ,@  «\g@  «)x@  Æ«Ú@  Æ«@  *  Æ«$@  Ì«2q@      (  û¬ d¸: ­¿d¨
   û¬ù_8“«øh  ¯”   
   û¬ d      ù  Ïÿ ðü  çÿ ðú  éÿ$  Éªd
­¿d Éªd­¿d Éªd    `ú  ¸ÿ  ú  ÿ àù&  ­¿d Éªd­¿d       Éªd­¿d   *   Òÿ °û  Œÿ   &  Éªd­¿d Éªd­¿d  ­¿d                
   û¬ù_  *    Ä À  Á
 Á
Áå úÅ  C ó  "   
­¿d  ¹©ªp&ÚªP2*  & ó  0 ×-   ÷  Â  Ä Ô  Â
ü÷	   ÎªÙzØª÷ÚªyÚªy"Øª¡*  L   ×,  w $ ÷	$  w Ž 	 ÷	:  «œ,*  r Å  C w 8Â Á Å  C ³ s ó  ¹©ª%¿©ªp*  ˜   " ó  0 ÷5   ×­   @Àm  ó   &  ÚªP2
ÎªßzËªþ~Úª—'"ÎªÙz&ÚªP2*  ¾ 3 ×­   @Àí  Àw ³" Âm  ³   
Úª‘'Îªßz$Îª      ßz*  ä 3 ×-   ÷  ó   ÷5   	÷     
Øª÷ÚªyÚªy Ëªþ~&Úªy*  
w   ó   ÷	  ×,  w òþ×,  w   ÚªyÚªy«\g*  0æþ×,  w Úþ÷	V W  w ª W  ÷e *  V  ×-   Äšÿ÷	  w ¬þW 	 ÷	6 Å  C  ­¿d  ÛªfMÌ«2q&¿©ª%*  | w 4  
×, °ýÀ À	 ‡ ×, àýÁ*  ¢ ‡ Á	 ‡ Á  ÷	  ‡ ×-  À w   ×-  û¬ d  @©ÌG­¿d &6ªŒw*  È  À w   —  €w   ×-  w   $  ­¿d 6ªŒwÆ« ­¿d (Æ«Ú  îÄ„ÿw   ÷  Ä ÿ÷	  ‡   
Æ«Ú­¿d        Æ«$       6M  	 NÀEÂ*  “´    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  6ªŒw@  Éªd@  *  Ëªþ~@  ÎªÙz@  Îªßz@  Øª¡@  Øª÷@  *  Úª‘'@  Úª—'@  ÚªP2@  Úªy@  «œ,@  *  «\g@  «)x@  Æ«Ú@  Æ«@      (  *  û¬ d¸B ­¿d¨ û¬ù_8¤“«´h  ¯”   
   û¬ d      ù  Ïÿ ðü  çÿ ðú  éÿ$  Éªd
­¿d Éªd­¿d Éªd    `ú  ¸ÿ  ú  ÿ àù&  ­¿d Éªd­¿d Éªd­¿d   *   Òÿ °û  Œÿ  Ðù  ’ÿ$  Éªd­¿d Éªd­¿d  Éªd  >             ­¿d   ­¿d              
   û¬ù_  *    Ä À  Á Á
Áå úÅ  C ó  "   
­¿d  ¹©ªp&ÚªP2*  & ó  0 ×-   ÷  Â  Ä Ô  Â
ü÷	   ÎªÙzØª÷ÚªyÚªy"Øª¡*  L   ×,  w $ ÷	â   w : 	 ÷	æ   «œ,*  r Å  C w ä Â Á Å  C ³ s ó  ¹©ª%¿©ªp*  ˜   " ó  0 ÷5   ×­   @Àm  ó   &  ÚªP2
ÎªßzËªþ~Úª—'"ÎªÙz&ÚªP2*  ¾ 3 ×­   @Àí  Àw Â ³" Âm  ³   
Úª‘'Îªßz$Îªßz*  ä 3 ×-   ÷  ó   ÷5   	÷     
Øª      ÷ÚªyÚªy Ëªþ~&Úªy*  
w   ó   ÷	  ×,  w òþ÷	( W 	   ÚªyÚªy«\g*  0÷	$ Å  C w " À	 ×, °ýÀ ‡ Á	   
¿©ª%*  V‡ Á  ÷	  ‡ ×-   À w   ×-  À&  û¬ d  @©ÌG­¿d  6ªŒw"­¿d *  | w   —  €w   ×-  w   Ä„ÿw   "  6ªŒwÆ«­¿d  Æ«Ú(Æ«Ú  ¢‡        6M  	 NÀ…È*  “¹    NÀ…È   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  6ªŒw@  Éªd@  *  Ëªþ~@  ÎªÙz@  Îªßz@  Øª¡@  Øª÷@  *  Úª‘'@  Úª—'@  ÚªP2@  Úªy@  «œ,      @  *  «\g@  «)x@  Æ«Ú@  Æ«@      (  *  û¬ d¸B ­¿d¨ û¬ù_8¤“«¹h  ¯”   
   û¬ d      ù  Ïÿ ðü  çÿ ðú  éÿ$  Éªd
­¿d Éªd­¿d Éªd    `ú  ¸ÿ  ú  ÿ àù&  ­¿d Éªd­¿d Éªd­¿d   *   Òÿ °û  Œÿ  Ðù  ’ÿ$  Éªd­¿d Éªd­¿d  Éªd  >       ­¿d   ­¿d              
   û¬ù_  *    Ä À  Á Á
Áå úÅ  C ó  "   
­¿d  ¹©ªp&ÚªP2*  & ó  0 ×-   ÷  Â  Ä Ô  Â
ü÷	   ÎªÙzØª÷ÚªyÚªy"Øª¡*  L         ×,  w $ ÷	â   w : 	 ÷	æ   «œ,*  r Å  C w ä Â Á Å  C ³ s ó  ¹©ª%¿©ªp*  ˜   " ó  0 ÷5   ×­   @Àm  ó   &  ÚªP2
ÎªßzËªþ~Úª—'"ÎªÙz&ÚªP2*  ¾ 3 ×­   @Àí  Àw Â ³" Âm  ³   
Úª‘'Îªßz$Îªßz*  ä 3 ×-   ÷  ó   ÷5   	÷     
Øª÷ÚªyÚªy Ëªþ~&Úªy*  
w   ó   ÷	  ×,  w òþ÷	( W 	   ÚªyÚªy«\g*  0÷	$ Å  C w " À	 ×, °ýÀ ‡ Á	   
¿©ª%*  V‡ Á  ÷	  ‡ ×-   À w   ×-  À&  û¬ d        @©ÌG­¿d  6ªŒw"­¿d *  | w   —  €w   ×-  w   Ä„ÿw   "  6ªŒwÆ«­¿d  Æ«Ú(Æ«Ú  ¢‡        âM  	 NÀ…È*  “À    NÀ…È   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  6ªŒw@  Éªd@  *  Ëªþ~@  ÎªÙz@  Îªßz@  Øª¡@  Øª÷@  *  Úª‘'@  Úª—'@  ÚªP2@  Úªy@  ÛªfM@  *  «œ,@  «\g@  «)x@  Æ«Ú@  Æ«@  *  Æ«$@  Ì«2q@      (  û¬ d¸B ­¿d¨
   û¬ù_8 “«Àh  ¯”   
   û¬ d      ù  Ïÿ ðü  çÿ ðú  éÿ$  Éªd
­¿d Éªd­¿d Éªd          `ú  ¸ÿ  ú  ÿ àù&  ­¿d Éªd­¿d Éªd­¿d   *   Òÿ °û  Œÿ Ðù  ’ÿ$  Éªd­¿d Éªd­¿d Éªd  >      ­¿d  ­¿d                
   û¬ù_  *    Ä À  Á
 Á
Áå úÅ  C ó  "   
­¿d  ¹©ªp&ÚªP2*  & ó  0 ×-   ÷  Â  Ä Ô  Â
ü÷	   ÎªÙzØª÷ÚªyÚªy"Øª¡*  L   ×,  w $ ÷	$  w ˆ 	 ÷	4  «œ,*  r Å  C w 2Â Á Å  C ³ s ó  ¹©ª%¿©ªp*  ˜   " ó  0 ÷5   ×­   @Àm  ó   &  ÚªP2
ÎªßzËª      þ~Úª—'"ÎªÙz&ÚªP2*  ¾ 3 ×­   @Àí  Àw ³" Âm  ³   
Úª‘'Îªßz$Îªßz*  ä 3 ×-   ÷  ó   ÷5   	÷     
Øª÷ÚªyÚªy Ëªþ~&Úªy*  
w   ó   ÷	  ×,  w òþ×,  w   ÚªyÚªy«\g*  0æþ×,  w Úþ÷	R W  w ¤ W  ÷e *  V  ×-   Äšÿ÷	  w ¬þW 	 ÷	0 Å  C  ­¿d  ÛªfMÌ«2q&¿©ª%*  | w . À	 ×, °ýÀ ‡ Á	 ×, àýÁ*  ¢ ‡ Á  ÷	  ‡ ×-  À w   ×-  &  
û¬ d  @©ÌG­¿d  6ªŒw$­¿d *  ÈÀ w   —  €w   ×-  w         Ä„ÿw   
6ªŒwÆ«­¿d "Æ«Ú  î  ÷  Ä ÿ÷	  ‡   Æ«Ú­¿d  Æ«$       M  	 NÀEÂ*  “Ì    NÀEÂ   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  6ªŒw@  Éªd@  *  Ëªþ~@  ÎªÙz@  Îªßz@  Øª¡@  Øª÷@  *  Úª‘'@  Úª—'@  ÚªP2@  Úªy@  «œ,@  *  «\g@  «)x@  Æ«Ú@  Æ«@      (  *  û¬ d¸B ­¿d¨ û¬ù_8œ“«Ìh  ¯”   
   û¬ d      ù  Ïÿ ðü  çÿ ðú  éÿ$  Éªd
­¿d Éªd­¿d Éªd    `ú  ¸ÿ  ú  ÿ àù&  ­¿d Éªd­¿d Éªd      ­¿d   *   Òÿ °û  Œÿ  @ü  ¥ÿ$  Éªd­¿d Éªd­¿d  Éªd  >       ­¿d   ­¿d              
   û¬ù_  *    Ä À  Á Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Øª÷*  & ÷  Â  Ä Ô  Â
ü÷	  ×,  w   ÚªyÚªyØª¡«œ,*  L $ ÷	â   w > 	 ÷	ê Å  C w è    ¹©ª%*  r Â Á Å  C ³ s ó  " ó  0 ÷5  ¿©ªpÚªP2$Îªßz*  ˜    ×­   @Àm  ó   3 ×­      Ëªþ~Úª—'ÎªÙzÚªP2$Úª‘'*  ¾ @Àí  Àw Æ ³" Âm  ³ 3 ×-           ÎªßzÎªßz$Øª÷*  ä ÷  ó   ÷5   	÷  w   ó   &  ÚªyÚªyËªþ~Úªy Úªy&Úªy*  
÷	  ×,  w þþ÷	, W 	 ÷	( Å  C   «\g$¿©ª%*  0w &  
×, °ýÀ À	 ‡ Á	 ‡ Á  ÷	
  &û¬ d  *  V  ‡ ×-   À w   ×-  À w   — $  @©ÌG
­¿d  6ªŒw­¿d &6ªŒw$  | €w   ×-  w   Ä„ÿw   ‡   Æ«­¿d Æ«Ú Æ«Ú       
M  	 NÀÕ*  Îu:    NÀÕ   ¯”L  e©Z&@  e©ì&@  *  e©ô&@  e©](@  e©ƒ(@  y©sY@  y©P\@  *  œ«@  «¯@  «•@  «)x      @  «6x@  *  ¡«@  ¤«úW@  ¬°@      (  
­YTè *  «·{è( «»{è0 «¹{è  e©0*8¤e©€%h    Îg:¨ ¯”   
   Îg: 
         
   e©0*  *    Â  

ò  ·  fÂ  
—  ü &  y©P\y©P\ y©sYÎg:  Îg: *  & Á±  ± ‡ ðU 
 ð5 @ &¦À Á    (e©ì&*  L Â  ÷	  ‚€`ƒ‡ ƒ
ÂàÂà·  ¦Ã
ý  e©ô&
e©Z&"e©ƒ(*  r ÷	² W   ‚ÂE ÿÂà&Àºÿ÷	  €Æ    "e©Z&(e©ƒ(*  ˜ w ˆÿ÷	Ê†Æ  ÷	pw vÿ÷	v W  @‚  e©ƒ(*  ¾ ÂE ÿÂà&Àºÿ÷	  €÷	FÆ  w       Hÿ÷	X †  e©Z&e©ƒ(*  ä Æ  ÷	æ÷	*w 0ÿ÷	0 Á% €&Àºÿ÷	  e©ƒ(*  
  €Æ  ÷	¼÷	 w ÿ÷	ú÷	ô‡ CÃÅ ÿ  e©Z&
e©ƒ(*  0Â`ÁEÿ‡ f&EÅE ÿÅàÅ€…‡ É¥  *  VÅå 
t” w âÿÉ¥# Åå 
t” t” t”*  | w ÆÿÉ¥" Åå 
t”1 w ²ÿÉ¥& -Åå &*  ¢fÀ  Á
 ÷	  †ÀÚÿ¦
÷	  ‚€€…  y©sY¡«e©Z&*  È± ‡ 7
 Á
 
Á
ýÀ
 È• 
p” p”  
Îg:
 Îg:
 *  î	 €w RÿÉ¥ÔÿÀ à`w @ÿÉ¥, 	À à*  `ô€  w (ÿÉ¥$ À f`à
t”
 t” *  :t” t” w  ÿÉ¥      ( 7À
 f`à
&fÀ*  `  Á ÷	  †ÀÚÿ¦
÷	  ‚€€…±   y©sY¡«e©Z&*  †‡ 7 Á 
Á
ýÀ È• ¦Â p”   Îg: Îg: *  ¬Ð‹Â
û‚€w ŒþÉ¥! €…± ‡ Åå f&*  ÒÀ  Á8 ÷	  †ÀÚÿ¦
÷	  ‚€€…±   y©sY¡«e©Z&*  ø‡ ÷ 7 fÃ Á Cú3  Îg: Îg: Îg: *   Á8 
Á
ý€Ë• Á s’ ‰

s”
  Îg: *  D s” s”" É¥% 	ÅÅå 
s” s” w Þý*  j&¦Â À  ÷	  	†ÀÚÿ
÷	  ‚€± ‡   y©sY¡« e©Z&*  Ä f      ÁP Á

Á
ýÄ  ô• 3 4 ´  ¬° ¬°*  ¶ ‚€´( ‚ ÂE ÿÂà´, ¡ ‡ æô
  ÷
  $Îg:
 *  Ü
 ô  Ã
 ó   Ãô  *  Îg:
 
Îg: Îg:
 Îg: $Îg: *  fÁ Cúó  ƒ‡ ÷	²ÿf&f÷	
  Îg: *  (Ò ÁÀ  ÷	  †ÀÚÿ¦
÷	  ‚€…±   y©sY¡«e©Z&*  N‡ À0 & ÷	  „÷	.ô•  ô•    ¤«úW*  t÷	  E õ%  &@ ÃA( 
BÝ, D   «•*  š÷	  „€…± ‡ ÷	ê ÷ ô  ô     e©](Îg: Îg: &Îg: *  À÷	        E õ%  &@ ÃA( 
BÝ, D   «¯*  æ÷	  „€…± ‡ €…¡ ‡ ÷ 
‡ æ
Ã  e©](Îg: *   Áe0 Ã
üƒ‡ Â
 ÂÀ  Á
 ÷	  
  Îg: Îg:
 y©sY$œ«*  2 ÃæÅ Â ¦…
ƒøÅ‚
Ò*  XW  À  Á8 ÷	  W  À  Á ÷	  Å
  y©sYœ«y©sY&œ«*  ~é À  Á ÷	  ÷	  ‡ Å  Í 5 ‡   y©sYœ««6xÎg:         2M  	 NÀ…È*  “Ñ    NÀ…È   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  6ªŒw@  Éªd@  *  Ëªþ~@  ÎªÙz@  Îªßz@  Øª      ¡@  Øª÷@  *  Úª‘'@  Úª—'@  ÚªP2@  Úªy@  «œ,@  *  «\g@  «)x@  Æ«Ú@  Æ«@      (  *  û¬ d¸B ­¿d¨
 û¬ù_8¦“«Ñh  ¯”   
   û¬ d      ù  Ïÿ ðü  çÿ ðú  éÿ$  Éªd
­¿d Éªd­¿d Éªd    `ú  ¸ÿ  ú  ÿ àù&  ­¿d Éªd­¿d Éªd­¿d   *   Òÿ °û  Œÿ @ü  ¥ÿ$  Éªd­¿d Éªd­¿d Éªd  >      ­¿d  ­¿d                
   û¬ù_  *    Ä À  Á
 Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Øª÷*  & ÷  Â  Ä Ô  Â
      ü÷	  ×,  w   ÚªyÚªyØª¡«œ,*  L $ ÷	ì   w H 	 ÷	ô Å  C w ò    ¹©ª%*  r Â Á Å  C ³ s ó  " ó  0 ÷5  ¿©ªpÚªP2$Îªßz*  ˜    ×­   @Àm  ó   3 ×­      Ëªþ~Úª—'ÎªÙzÚªP2$Úª‘'*  ¾ @Àí  Àw Ð ³" Âm  ³ 3 ×-     ÎªßzÎªßz$Øª÷*  ä ÷  ó   ÷5   	÷  w   ó   &  ÚªyÚªyËªþ~Úªy Úªy&Úªy*  
÷	  ×,  w þþ÷	6 W  w | W 	 ÷	  «\g*  0( Å  C w &  
×, °ýÀ À	 ‡ Á  ¿©ª%*  V	 ‡ Á        ÷	  ‡ ×-  À w   ×-  &  
û¬ d  @©ÌG­¿d  6ªŒw$­¿d *  |À w   —  €w   ×-  w   Ä„ÿw   
6ªŒwÆ«­¿d "Æ«Ú  ¢  ‡   Æ«Ú       îM  	 NÀ…È*  “Ø    NÀ…È   ¯”L  @©ÌG@  ¹©ª%@  *  ¹©ªp@  ¿©ª%@  ¿©ªp@  6ªŒw@  Éªd@  *  Ëªþ~@  Øª¡@  Øª÷@  Úªy@  ÛªfM@  *  «œ,@  «\g@  «)x@  Æ«Ú@  Æ«@  *  Æ«$@  Ì«2q@      (  û¬ d¸B ­¿d¨
   û¬ù_8š“«Øh  ¯”   
   û¬ d      ù  Ïÿ ðü  çÿ ðú  éÿ$  Éªd
­¿d Éªd­¿d       Éªd    `ú  ¸ÿ  ú  ÿ àù&  ­¿d Éªd­¿d Éªd­¿d   *   Òÿ °û  Œÿ @ü  ¥ÿ$  Éªd­¿d Éªd­¿d Éªd  >      ­¿d  ­¿d                
   û¬ù_  *    Ä
 À  Á
 Á
Áå úÅ  C ×-     
­¿d  ¹©ªp&Øª÷*  & ÷  Â  Ä Ô  Â
ü÷	  ×,  w   ÚªyÚªyØª¡«œ,*  L $ ÷	Ì   w . 	 ÷	â Å  C w à    ¹©ª%*  r Â Á Å  C ³ s ×-   ÷    ¿©ªpØª÷&Úªy*  ˜ ó   ÷5   	÷  w   ó   ÷	  ×,&  ÚªyËª      þ~ÚªyÚªy Úªy&«\g*  ¾   w Pÿ×,  w Dÿ×,  w 8ÿ÷	P *  ä W  w œ W  ÷e   ×-   Äšÿ÷	    ­¿d  ÛªfM(Ì«2q*  
w 
ÿ÷	6 Å  C w 4  
×, °ýÀ À  ¿©ª%*  0	 ‡ ×, àýÁ ‡ Á	 ‡ Á  ÷	  ‡ ×-   û¬ d  "@©ÌG(­¿d *  V À w   ×-  À w   —  €w   6ªŒw­¿d 6ªŒw"  |  ×-  w   ÷  Ä ÿ÷	  ‡ $  Æ«­¿d Æ«Ú­¿d  Æ«$       	M  	 NÀ[À*  Î˜:    NÀ[À   ¯”L  ð3*}@  ¡ENq@  *  R*}@  þvL"@  áy s@  ô¨úW@   ©@        *   ©+€@  Û©R@  Ý©Š}@  ª@  •«ŠK@  *  —«ç@  —«è@  «¯@  «{@  «\g@  *  «)x@  ¹«´‰@  ¬|—@  ¬ÚK@      (*  ƒ  h  ƒšhP ²ÎhzÌüh"Ìª%hâ*  Ìªph2Þh 	# }hÜE, Khvœ,  h¦*  Ô2 dhŽ,:@`hˆ«:<}h$RÀ+h–ÜY0 h‚*  aª%hBaªph’Õf:dhÖ\g%hD·k  hN*  màyhð 
­YTè «·{èP «»{èÀ «¹{è` 
  ¯”   
       ð *  ð  ø  HP                            
  ø 
H     ¯       H    
  H H  HP           X  X                            R
  R         n  n˜Â»       ˜Â» ˜*  ˜                            "   SY:CMI  ¾.CMDCMI   â  â    ì  ìÿü  P   
   >  ü              ((  (  üÿþÿþÿýÿýÿüÿûÿûÿÿÿúÿ    P           R  R                      L
  L         h  h                ’%  ’P                                  ´  ´  B    
  B â  âP           ò  ò                     ì
  ì                                 2%  2P                               
     T  T  â    
  â ‚*  ‚ÀñÿÀðÿ÷  ”þ÷  Œþf¦& ÀÀ  ð3*}R*}*  ¨Àm|þ÷	š€ ìÿ çÿ
    ïÿ*  ÎÀð ÷	  ‚‡ fæ2æ …÷	  Æe …f  ð 
—«è2 «{*  ôæâæ …÷	  Æe …fæ’æ …÷	  Æe  â«¯’&«{*   …fæBæ …÷	  Æe …æ  æÿˆæ  B«¯ ¬|—*  @3ÿˆÀ2ð ‡ p ° fæ2æ …÷	
  
2 2*  f  Æe …À2ðtý ‡ ÷5 ¢ý÷býÂþf      æ  «\g2*  Œ2æ …÷	  Æe …÷E ~ý‡ ¦÷	  †÷	    2«\g"Ý©Š}( ©+€*  ²€†÷	ÜþÆ  w   ñÖf
Á
ý‡ ÷  þvL"áy s*  Ø  ,Ã  Ã×¢ Â ÂÁ  ÷	  Á8   ¡ENq
ª$•«ŠK*  þÁ ÂÃ ÷	  è
Â  Áe0 Â
üÀ0 D  •«ŠK¡ENq*  $÷	  ‡÷	  Ã  Á ÃÂÃ ÷	    ô¨úW•«ŠK ©(•«ŠK*  Jø‡ ÷	  Å’µ u fæ’æ …÷	  Æe  
¹«´‰’’&«\g*  p …‡ ÷5 ¦üÀ2ðbü fæ2æ …÷	
  2 2*  –  Æe …÷E ~üÀð ðÅ ó Àð °ô pö ÷	        «\gð ð *  ¼  $†Àü öÿw þ÷E    ÷U    f¦&À   —«ç¬ÚK¬|—Û©R ¬|—*  âð ÷	  €Á* @÷	žý‚¼ÑöÀøÿö  ð —«è*  ø ú ‡        °M  	 NÀEÂ*  •€K    NÀEÂ   ¯”L  9©""@  @©ÌG@  *  ¿©ª%@  ¿©ªp@  Å©Î@  Å©Bx@  6ªŒw@  *  Éªd@  Ôª–Q@  «&@  «{@  «œ,@  *  «)x@  Æ«Ú@  Æ«@      (  û¬ d¸
 "  ­¿d¨ û¬ù_8¸ •«€Kh  ¯”   
   û¬ d       þ  “ÿ      Éªd
­¿d   ­¿d              
   û¬ù_  *    À  Á Á
      Áå úÅ  C ó   ó    ­¿d  ¿©ªp"Å©Î(Å©Bx*  &  ó   ó•   ÷	  ×,  	÷	. Å    Ôª–Q«&(¿©ª%*  L C w , ÷	  ×, °ý÷	  ‡ ÷    Ä”ÿ  «œ,«{"Éªd$9©""$  r w   Á  ÷	  ‡ ×-   À w   ×-$  Æ«Ú
û¬ d  @©ÌG­¿d   6ªŒw*  ’   À w   —  €w   ×-  w   $  ­¿d 6ªŒwÆ« ­¿d (Æ«Ú       šM  	 NÀ+Í*  J©@	    NÀ+Í   ¯”L  ¢Ø@  šÎ@  *  š˜:@  š«:@  £å@  £@  Ìs@  *  ´:2“@  J©@	@  Œ©?T@  ÿª@  ÿª€@  *            (  £X:¨Š £óh  £!h £sh *  Ìósh J©x8 £h2 £'h> £˜:hx *  £?Thb £ìYhp ¬h ¬¬:h ¬Rh "  ¬d^h  ¬[qh  ¬àh( ¯”   
   £X:  
            £å£Ìs J©x  *    ÷ÿÿ ÷þÿ ÷ýÿ ÷üÿ ÷ûÿ *  £X: £X: £X:  £X: (£X: *  & ÷úÿ w   ð5 
 D
f¦æ&÷	   
£X: J©@	*  L „ƒ‚Ã
ó± ‡ ¡ ‡ &À  ÷	  Á  šÎ$Œ©?T"  r   Ä  &Â  Ã  ÷	  †w   €‡ &  ÿª€ÿªš«:´:2“š˜:¢Ø             èM  	 NÀ+Í*  J© x    NÀ+Í   ¯”L  £ó@  £!@  *  £s@  £˜:@  £?T@  Ìós@  T;z@  *  s©À@  ªr@  ª’s@  •«Ï-@  •«Ò.@  *  —«Y@  Ç«‹@  Ê«½@  Ê«ÏÃ@  Ê«Ê@  *  Ì«ÏF@  Ì«ÒG@  Ì«Y@  Ì«Ïx@  ¬@  *  ¬N@      (  £ 78pJ©@	h  J©xhN 
  ¯”   
   £ 7  *    7
 À  &
&
æiÿˆ×§       ÷  ×-(  £!
 
£!s©ÀT;z £ó$£!*  &   þÿ°* °, °( ×-  úÿ°( ° °  £!£!*  L  p Áe ‘ÑQEÁ  Ä  ÷	  A  ª’s ªr      $£˜:*  r Âe
 È‘ÑÁe ‰Ée CÉ–%Ã  „  &¬N*  ˜ Äe Ä BÁ  ÷	  „Äå Ä BÁ  ÷	  ¬£?T&Ç«‹*  ¾   Áe ‘‘‘‘‘Âe
 Á  ÷	  Á  £?T"—«Y&£?T"  ä   Ä  ÷	  Âe Á  ÷	  Á  Ä&  •«Ò.•«Ï-£˜:Ì«Ïx£?TÌ«ÒG*    ÷	  Âe Á  ÷	  È   "þÿ .    Ì«ÏF£˜:Ì«Y£?T£s*  (¦Ò 
, ‚Á  ÷	  ‚Á  Ò 
* ‚÷	  Ê«Ê£?TÊ«ÏÃ&  N  ‚Á  

( ‚÷	  "úÿò     £?T
Ê«½£?T$Ìós       øM  	 NÀ…È*  Î—`          NÀ…È   ¯”L  D©b@  D©Åb@  *  G©]\@  G©…\@  J©$@  J©E$@  i©{@  *  i©Å{@  ¹©]\@  Ý©Ý@  («$@  («E$@  *  U«Ý@  «)x@      (  
­WTìJ ¯”   
   
­WT          («$         D©b         G©]\           i©{ (   (     Ý©Ý           («$         D©b         G©]\           i©{ 0   0     U«Ý           («$         D©b         G©]\           i©{ H   H     ¹©]\                 («$         D©b         G©]\           i©{         J©$         («E$         D©Åb         G©…\ "   "     i©Å{ 
   
     J©E$       ² M  	 NÀÕ*  Îl†    NÀÕ   ¯”L  =©€p@  e©€%@  "  ¬0 @      (  ¬ K¸ ¯”   
   ¬ K      DFN          =©€p  f©€W    ¬0 
=©€pe©€%       îM  	 NÀÅç*  J©!x    NÀÅç   ¯”L  š	@  šÎ@  *  £@  £'@  £!@  £˜:@  £?T@  *  £ìY      @  T;z@   ©@   ©€@  9©O…@  *  9©R†@  o©Y@  o©’Z@  s©À@  ±©@  *  ±©’@  ²©ÏÃ@  ªÏF@  7ª@  7ª€@  *  ÍªOS@  ÍªRT@  «@  «@  C«O!@  *  K«@  K«€@  S«@  ‘«@  ‘«’@  *  ’«ÏÃ@  £«‹@  £«’Œ@  ¥«@  Ì«O@  *  ò«f@  ò«g@  ¬Ïx@  ¬Òy@  ¬ƒd@  *  ¬@  ¬’@  ‚¬ÏÃ@      (  J©!x8Ì*  ¢Øhš£åh®£hŠ Ìsh  ¯”   
   J©!x  *    Á  Âe ÷	  Á  Âe ÷	  Ä  Á  ÷	&  C«O!£?TS«£?T"9©O…&9©R†*  &   Å  W#ÿÿ%W#þÿ      W#ýÿW#üÿW#ûÿÄ  £˜:£!"  L   Á  Ä  Á  Ä  Á  Ä&  ò«fò«g£«‹£«’Œ7ª7ª€   j   Á  	Ä  Á  Ä  Á  ÷	&   © ©€ÍªOSÍªRT««*  †   YÂe
 ¦Åe. f‚Âe Á  ÷	  ‚   £˜: ¥«$£?T*  ¬ Âe •—¢% ü…Á  B÷	  Á  BÂe …Åe  C«O!£?TÌ«O&  Ò  ÷	  Á  Ä  ÷	  Á  Â  Ã& €÷	&  £?T±©’±©£˜:²©ÏÃš	$  ô   †÷	  Á  Ä  ÷	  ÕÁ  Ã. ÷	&  £
£ìY‘«’‘«£˜:’«ÏÃ$    †÷	  Á  Ä  ÷	  ÕÁ  Ã       ÷	&  £
£ìY¬’¬£˜:‚¬ÏÃ$  4  †÷	  Á  Ä  ÷	  Å  C Á&  £
£ìYK«€K«£˜:¬ƒd*  T  Ä  ÷	  ƒ†ƒ
Á  BÃå	 €æ÷	     ¬Òy¬Ïx£˜:ªÏF(£?T&  zƒÁ  Åe Â  D÷	  Á  Ä  ÷	  Á&  ²©ÏÃš	£'o©’Zo©Y"£˜:*  œ  fæ?ÿˆ×§     ˆÁe  f fæSÿˆ×§  šÎs©ÀT;z  Â    ò   s©ÀT;z        M  	 NÀÅÎ*  E€M    NÀÅÎ   ¯”L  «¯@  «&@  *  «•@  «\g@  «)x@  ¬¯@  ¬¯@  *      (  û¬ d¸–û¬ù_8      ¬ h©0!h  ¯”   
   û¬ d            TI:†  ¬¯
¬¯  *   		RMS-11 DISPLAY UTILITY
		----------*  2 ------------
FUNCTION: DISPLAY FILE A*  X TTRIBUTES & THE CONTENTS OF CONTAINER *  ~ FILE
FORMAT:   DSP [OUTFILE=]INFILE[/*  ¤ OPTIONS][,INFILE[/OPTIONS]..]

GLOBAL*  Ê  OPTIONS: 
 ? OR HELP	TYPE HELP MESSA*  ð GES
 ID		IDENTIFY CURRENT VERSION NUM*  BER
 BP		LIST CONTENTS OF BACKUP CONT*  <AINER FILE

OUTFILE :
 		IS THE FILE*  b SPECIFICATION OF A FILE TO BE
 		CRE      *  ˆATED BY THE DISPLAY UTILITY AND CONTAI*  ®N THE
		ATTRIBUTES OF THE SPECIFIED I*  ÔNPUT FILES OR A LIST
		OF THE CONTENT'  úS OF THE SPECIFIED CONTAINER FILES
E   *  INFILE :
 		IS THE FILE SPECIFICATION*  D OF EITHER :
 		1. AN RMS-11 FILE
		*  j2. A BACKUP CONTAINER FILE ON MAGNETIC
   TAPE

   û¬ù_  *    Å  C 3
( 3Š, ó * ó• - ó  3   û¬ d  û¬ d *  & ó• 3 3
 ÷	  ×,  ‡ Å C Âe  «•û¬ d *  L ó•   ó•  ³ ó  ÷	  ×,  ‡ À        «&*  r  Á÷	" ÀÁx ÷	 Å  C 3
* 3Š-   û¬ d û¬ dû¬ d    ˜ ÷	  ‡ 3 s ÷	  ‡   «¯«\g       Ø M  	 NÀEÂ*  £ày    NÀEÂ   ¯”L  ¬@  ¬¬:@  *  ¬R@  ¬d^@  ¬[q@  ¬à@      (    J©Ìyø Ë«Ú}h  ¯”   
   J©Ìy                      &  ¬d^¬R¬
¬¬:¬[q¬à       ,M  	 NÀÅÎ*  {     NÀÅÎ   ¯”L  «Iq@  «)x@  *  ¹«´‰@      (  s©„f¸ s©ue¨ s© d8ú   i© wh  ¯”   
   s©„f      PUKCABBACKUP
   s©ue               
   s© d  *    ÷	  ÷ 3
& 3
( ÷	& ‡÷	 6 v ¡ ‡   ¹«´‰
s©ue *  & À Àe Áe
   ‡ ÷	 †ü‡ Å  ÷	    $s©ue  («Iq*  L À    °ý6
 Æe ¡ ‡   ú  ÿ*  r ± ‡ Æe ± ‡ À $ $ ÷	 ± *  ˜ ‡ ÷	  À Àe Á 
Ä b$Ä
ûÄ  ¹«´‰s©„f *  ¾ ùdÄ
ýÁ  Ä b$Ä
ûˆ õ%  
  s©„f    ä õZ õ‹c ¡ ‡ ± ‡        ÆM  	 NÀÅÎ*  ½Êj    NÀÅÎ   ¯”L  @©ÌG@  ¹©ª%@  *  ¿©ª%@  6ªŒw@  Éªd@  Êª@  Êª¡K@  *  Êª÷K@  ÊªN@  Îª      a^@  ÎªÙz@  Îªßz@  *  Úª—'@  Úª(x@  Úªy@  «•@  «)x@  *  Æ«@      (  û¬ d¸r ­¿d¨ û¬ù_8Š  ½«Êjh  ¯”   
   û¬ d      ù  Ïÿ  ðü  çÿ  `ý  èÿ$  Éªd
­¿d  Éªd­¿d  Éªd     ðú  éÿ  0þ  ¼ÿ  ý&  ­¿d  Éªd­¿d  Éªd­¿d    *   ¾ÿ  @þ  ñÿ þ  ±ÿ$  Éªd­¿d  Éªd­¿d Éªd  >   @ý  ‘ÿ   ý  ¾ÿ  pú&  ­¿d  Éªd­¿d  Éªd­¿d    R   ÷ÿ  þ  Šÿ  `ù  ½ÿ$  Éªd­¿d  Éªd­¿d  Éªd  f   ü  ©ÿ      ­¿d  Éªd­      ¿d  ­¿d                           
   û¬ù_  *    À  Á Á
Áå úÅ  C ÷œ0  ÷œ   ­¿d  ¹©ª%$­¿d *  &  ÷  ÷œ  ×¬   	÷
  ÷ 
 ÷ *  ­¿d 
­¿d ­¿d ­¿d $­¿d
 *  L  óµ  2 ÷.  ÷  Å  C ó   3
&  ­¿d ­¿d ­¿d ¿©ª%$Îªa^*  r  3
 ó 0 ó  ×-  óÅ  ó  "  ­¿d ­¿d ­¿d &­¿d &  ˜ ó  ó 
 ó
  ó  ×-   ó(  ­¿d ­¿d ­¿d
 ­¿d Êª÷K"  º   . ó . 3
 ÷    ÷    Á(  Êª¡K­¿d       Úª(xÚªyÎªÙzÎªßz*  Ø   ÷	  ×,  ×, púóµ 2 óµ  2   û¬ d  «•*  þ ó•  3Š0 èw L óµ 2 ÷   óµ  2    Êª*  $÷.   ÷œ   óµ 2 &
&
&
&
&
&
&
&
&
  ÊªNÚª—'*  Jæ æ æÿˆ‡ ÷	  ×-   À w   ×-  @©ÌG­¿d  &6ªŒw  p  À w   —  €w     ­¿d 6ªŒwÆ«       ÒM  	 NÀÅÎ*  {—`    NÀÅÎ   ¯”L  D©b@  D©Åb@  *  G©]\@  G©…\@  J©$@  i©{@  i©Å{@  *  ¹©]\@  Ý©Ý@  («$@  («E$@  U«Ý@  "  «)x@      (  
­WTìJ ¯”         
   
­WT          («$         D©b         G©]\           i©{         J©$ 0   0     U«Ý H   H     ¹©]\ (   (     Ý©Ý         («E$         D©Åb         G©…\ "   "     i©Å{       ¼ M  	 NÀÕ*  {<d    NÀÕ   ¯”L  s©"g@  s©%g@  "      (  Zg©#8* s© dh  ¯”   
   Zg©#  *    Â  
"2,  z  Âe —   óÁ±    s©"gs©%g  & ± ‡        M  	 NÀ…È*  Ä
&    NÀ…È   ¯”L        @©ÌG@  ¾©…@  *  À©Î@  Ã©ª%@  Ã©ªp@  Ý©á~@  6ªŒw@  *  Éªd@  Ùª–Q@  ÛªfM@  «&@  «•@  *  «)x@  Æ«Ú@      (  û¬ d¸U ­¿d¨Š   û¬ù_8
Ä«
&h  ¯”   
   û¬ d      ù  Ïÿ  ðü  çÿ  `ý  èÿ$  Éªd
­¿d  Éªd­¿d  Éªd     ðú  éÿ  0þ  ¼ÿ  ý&  ­¿d  Éªd­¿d  Éªd­¿d    *   ¾ÿ  @þ  ñÿ þ  ±ÿ$  Éªd­¿d  Éªd­¿d Éªd  >   þ  Šÿ  `ù  ½ÿ    TI: &  ­¿d  Éªd­¿d  Éªd­¿d  
   ­¿d  
             ˆ   ˆ   
   û¬ù_        *    À  Áˆ Á
Áå úÁ `7
ˆ Àˆ ÷	  †   ­¿d  ­¿dˆ "­¿dˆ &¾©…*  & Å  C 3
( 3Š, óR * ó• - w  ÷	    Ã©ª%û¬ dR (Ý©á~*  L Å  C ÷   ³( 3, ó  ó   ó•   Ã©ª%ÛªfM"À©Î*  r 3 ó 
 ó   ÷	  ×,  ÷	> w D   «•*  ˜ Å  C ó•   ó•   ó  ÷	  ×,    Ã©ªpÙª–Q­¿d  «&*  ¾ ‡ ÷	 Å  C w 
 Á  ÷	  ‡ ×-     Ã©ª%û¬ d  @©ÌG$­¿d  *  ä À w   ×-  À w   —  Ääÿw     
6ªŒw­¿d 6ªŒw(Æ«Ú      	M  	 xÀ¨Ä      *  {ùe    xÀ¨Ä   ¯”L  	@  »@  *  ô&@  ¡E@  9©""@  :©@  h©0!@  *  i© w@  s©Ýf@  «¯@  «&@  «•@  *  «E`@  «\g@  «)x@  «6x@  ¹«´‰@  *  Æ«ˆ@  å«ˆr@  ¬|—@  ¬¯@  ¬°@  *  ¬¯@  ¬°@  ¬ÚK@  ^¬?:@  ^¬@:@  *      (¸<8"h Q! }ha'À+h €:""hP*  vLÎh˜ gMHh(®Sh:µWkhx \gvLhB*  z*–h. i©ÀvhÒ
­YTè «·{è< «»{è`   «¹{è@ ¯”   
             TI:     *               .                         .   *            .   . 
     6   6      2   2       x $  x   ,@                     8 @     ,8  ”*  ”  ‰`B‚
àà‡ 7ZôÄE ÿ`5( 7Pô*  ºfüÿÎE ÿ`ƒáõ, ÷<ô‡ f·,ô÷	  Å    $«6x(¬¯*  àõ•  õ  ( õ• , õ õ  õ• 3 õ
    *    õx & 7 øó÷	zÿCÄÃEÿ×   ÷	|ÿ  
x *  ,Â
ô÷5 ÖóÄ÷	  w ,fæPfæ   h©0!"P*  R…÷	  Æe …Å  õ  $ õ˜  õ˜  fæ  «•¬¯¬¯˜ "˜ *  xPfæ …÷	  Æe …÷5 @|óÀ˜ ÷	‚D  P      «&"˜ *  žSP -- VERSION Á B÷	  ÷	ˆw ´ ÷	ÒþC  :©*  ÄÄÃEÿ×   IÅ  ÷	Ðþõx & õ õ   ¬°x  *  êõ•"  õ• 3 ÷5 ó07
ó÷	f*‡õ  f  $ *  æPfæ …÷	  Æe …÷	  W­   ÷	    P«E`»(	*  6÷	  ÷	  ffæ …÷	  Æe …÷5 ¬òÓ  ¡Eô&«¯*  \÷	0 Â
®À˜ È•
 ÷	Ð ÆŽòfæ  æ   ˜ $¬¯*  ‚…÷	  Æe …¡ ‡ ÷	  fæPfæ …÷	    «¯¹«´‰P(«E`*  ¨Æe …õµ  2 3õ‹ 0Ã  ó  $ ó ó  ¬°¬°$*  Î       fæPææ …÷	  Æe …÷	  ‡À	  P«&"i© w*  ôBÀ˜ ÷	: ÷	> òfæ  æ …÷	  Æe   
˜ ¬°$«¯*  …‡ ‚”÷	 J R aÃ
úÐ•	 ”Á
ý*  @‡ Å  Àå˜ 5 fæü fæ …÷	  Æe …  ¬¯˜ "«\g*  fÀ˜ ‡ ÷	  ÷5 ñ)ÁlÃŒñÄ†ñ÷€ñ÷	  ˜ ¹«´‰l*  Œ  †÷	: W- ÿW- êÿ± ‡ w Æþ÷	    ^¬?:(^¬@:*  ²†í·
Nñ@& 5 ( 5œ , ¡ ‡ ÷6ñW- *  Øÿ¡ ‡ ÷$ñW- êÿ¡ ‡ À  & 0
    ¬¯*  þD ÷ñ!êÿ!ÿÄËÿÃlËìð÷æð   l*  $Hü7
      Fü÷D  ÷:  ÷	  À  ° ‡ À  °(  Då«ˆr:9©""Æ«ˆ¬¯&¬¯*  J w "þÀ  & ( W"TIW¬ : 0
 E  ¬¯*  p @ 

W­   C& Á 
ÂÜ A( &  –
BÝ, ÷	  À  ° ÷   ÷U    w ºý   s©Ýf¬¯¬|—¬ÚK ¬|—       ² M  	 NÀÅÎ*  {l†    NÀÅÎ   ¯”L  =©€p@  i©Àv@  "  ¬8;@      (  ¬ K¸ ¯”   
   ¬ K      DSP          =©€p  s© d    ¬8;
=©€pi©Àv         M  	 NŽXÀ*  ~     NŽXÀ   ¯”L      (6 i© Šh  
  ¯”   
               *    &fæ! 

ED ‚E ‚Eà„à± CB  & ÎŠñÖ A…„‡        Š M  	 NÀEÂ*  ~à8    NÀEÂ   ¯”L      (  û¬ù_8   i©ìŠh  ¯”   
   û¬ù_  "    æ f
ÀAN ‡ã€
ö
 ÷–%‡        ð M  	 NŽ€À*  i©(Œ    NŽ€À   ¯”L  ¹«´‰@      (n   i©(Œh  ¯”   
         *    ÷	  æA …UUUUÄ



ÄTTTT  ¹«´‰*  & Áe e(e(e(e(‚ÄTä””Œ$)&  L TäŒ´ TäŒTä± …UUUUÎ
ÙÖ‡       vM  	 xÀ¨Ä*  »    xÀ¨Ä   ¯”L  <8"@  Q!       }@  *  €:""@  vLÎ@  gMH@  ®S@  µWk@  *  \gvL@  z*–@  :©@  <©@  <©!€@  *  «@  «)x@  ¹«´‰@  ¬°@      (    »(r»hn ¯”   
   »  *    
         SEQUENTIALRELATIVE   INDEX*  & ED   0DIRECT     ORG=???   FIXED   V*  L ARIABLESTREAM  VFC      RFM=??? ÷	    (¹«´‰*  r À   
Ü À  Ð•
 ÷	  ÷	  	FILE O  µWkvLÎ®S Q! }*  ˜ RGANIZATION:
AÝ Â
 Ã Ä
 ÷	  ÷	    
 $gMH(\gvL*  ¾ Á  W¬   ÷	  RMS VERSION NUMBER: 	  ¬      °Q! }*  ä Á  A 
÷	  ÷	  Á  Áe ñ f÷	     z*–:©\gvL<8"(Q! }*  
	CREATED: Â ÷	  Á  W,  ñ   <©!€<8"*  0÷	   	REVISED: Á Â ÷	  Á  A Ð•  Q! }<8" <©!€"<8"*  V  Ð•( 
÷	  Ð•) ÷	  Ã  À  ðµ 2 À  :©\gvL  ¬°*  |  w † ð fæ  &æ …÷	  Æe …À    vLÎ€:""«(vLÎ*  ¢÷	  FILE PROTECTION:  	Á Ð•[ Ã Á5  Q! }*  È Ð•R Á5 Ð•W Á5 Ð•E Á5 Ð•D *  îÐ•, Ã
äÀ
Ð•] ÷	  ÷	  RECORD   \g      vL Q! }*  FORMAT:	Å  
AÝ ÂA Ã Ä ÷	  A   ¬°A $gMH*  :
¨  ü€
Ð•= 
÷	  W­  ÷	  	FI  :©$Q! }*  `XED AREA SIZE=
AÝ0 
÷	  ÷	  Å  W­   :© \gvL$¬°*  † %÷	  			MAXIMUM RECORD NUMBER=W-    
Q! }*  ¬ÿÿW-" ÿÐ•0 	f  f" 
÷	  –%÷	  $<©*  Ò  ÷	  RECORD ATTRIBUTES: Å  
CÝ Ã5  \gvLQ! } ¬°*  ø W­  ÷	   	PRINT FILE FORMATÃ5  Q! }*   ÷	  		 FORTRANÃ5 ÷	   	CARRIAG  
Q! }Q! }*  DE RETURNÃ5 	÷	  	      NO SPANNING ÷	  Å  Q! }&\gvL  j  5
 ‡   ¬°       ä M  	 NÀEÂ*  9’    NÀEÂ   ¯”L  Æ«ˆ@      (  *  û¬ d¸ ­¿d¨ û¬ù_8 9¬’h  ¯”   
   û¬ d         1.5

   ­¿d  
         
   û¬ù_      À  Ã ãÄ w     û¬ d  
­¿d Æ«ˆ       M  	 QÀ…á*  s©Úd    QÀ…á   ¯”L  s© d@  s©†dH: *  s©teH «šw@  ¹«WŒ@      (  X:¨B *  s©:dh s©Šdh s©leh  s©gh s©Úd8¤   s©Údh0 s©Ýfh  ¯”   
   X:  	    0001 E       =©      €p       s© d
   s©Úd  *    w	  ÷	  †Ä Ô%*” T T Ô•% Ã   ¹«WŒ
«šwX: (X: *  & óäÿ w	  Ã 3 ÄÄe  
ÂT”Â
  ¹«WŒX: *  L ÂüóU 
 Ô•% Ä5 ÀÿÿÔ‹Â @ÅàLŒP*  r ÀÌŠÔÌ ŒPÔÌ 3 óà óe  ÀÁ  ˜   ÷	  ‡ ± ‡     s© d       îM  	 xÀ¨Ä*  ô&    xÀ¨Ä   ¯”L  Q! }@  a'À+@  *  €:""@  vLÎ@  \gvL@  z*–@  :©@  *  <©@  «@  «)x@  ¹«´‰@  ¬°@  *      (  ô&(h	h*ô&h ¯”   
   ô&                                  
   
             *   Å  õµ 2 õµ  2 ‡ ÷	  À  ÷	  FIL  ¬°¹«´‰ vLÎ$Q! }*  D E ATTRIBUTES: ÷	  Å  õµ  2 w * D÷	  \gvL¬°*  j ˜ ÷	  	EXTEND QUANTITY=D 
, ÷	    Q! }(:©*   W­   õµ  2 ÷	   	BLOCK SIZE=A.   Q! }*  ¶ 
÷	  ÷	  	BUCKET SIZE=
AÝ1 
÷	    :©Q! }(:©*  Ü ÷	  Å  õ5€  ÷	  			CONTIGUOUS÷	    \gvL
¬°Q! }(\gvL*  ‡ ÷	  	ALLOCATION= &
 & 
÷	  –%  Q! }&<©*  (‡ ÷	        Á  W¬  ÷5@   w Øþ÷	ÔþÀ    ¹«´‰z*–a'À+(¬°*  NÃ 3Š ð wœ  þÂœþ¦À  fæ  &æ   ¬°$€:""*  t …÷	  Æe …À  ÷	 ³Š ‚Â
è‡ ÷	    
«vLÎ(Q! }*  šAREA NUMBER: 
ÁÜ 
÷	  ÷	  Ä÷	Fÿ÷	  :© \gvL*  À  	BUCKET SIZE=
ÁÜ 
÷	   Á÷	  Q! }:©*  æ  	EXTEND QUANTITY= 
÷	  ÷	  ÷	   Q! } :©$\gvL*  óµ 	 ÷	  	CONTIGUOUS÷	  ‡ ÷	  	LO  Q! }\gvL$Q! }*  2CATION:	÷	  LOGICAL BLOCK NUMBER=æ   Q! }  Xæ 
÷	        –%‡   <©       M  	 QÀÅÎ*  e©Z&    QÀÅÎ   ¯”L  e©&H: e©ô&H *  s© d@  «šw@  ¹«WŒ@      (  ÎX:¨B *  e©º%h e©
&h e©ì&h  e©ƒ(h e©Z&8¤   e©Z&h0 e©](h  ¯”   
   ÎX:  	    1.5          =©€p       f©€W
   e©Z&  *    w	  ÷	  †Ä Ô%*” T T Ô%*Ã   ¹«WŒ
«šwÎX: (ÎX: *  & óäÿ w	  Ã 3 ÄÄe  
ÂT”Â
  ¹«WŒÎX: *  L ÂüóU 
 Ô•% Ä5 ÀÿÿÔ‹Â @ÅàLŒP*  r ÀÌŠÔÌ ŒPÔÌ 3 óà óe  ÀÁ  ˜   ÷	        ‡ ± ‡     s© d       ªM  	 PÀÅÎ*  ¡E    PÀÅÎ   ¯”L  Q! }@  a'À+@  *  €:""@  vLÎ@  \gvL@  z*–@  :©@  *  :©Ï_@  <©@  «@  «)x@  ¹«´‰@  "  ¬°@      (Â¡EhZ ¯”   
         *    8              :                       :   &                2   2      6   6      5   5      4   4  	   *   *            8   8      Z *  Z ÷	  ÷5@   w @ À  Ã  3Š ð Á  
  ¹«´‰a'À+¬°  &z*–*  € BÜ fæ  &æ       …÷	  Æe …÷	< ³Š Â
  €:""«*  ¦ î‡ À  ÷	  NUMBER OF KEYS: 	Á  Aœ   
vLÎQ! }$z*–*  Ì ÁE ÿ
÷	  ÷	  ‡ ÷	  À  
ÄÜ 
÷	  
   :©\gvL¹«´‰vLÎ&Q! }*  ò PRIMARY KEY:÷	  
ALTERNATE KEY: 	
  Q! }*  ÷	  
ÁÜ W   ÷	  	STRINGW  ÷	  :©Q! }*  >   	UNSIGNED INTEGER-2 W  ÷	   	U  Q! }$Q! }*  dNSIGNED INTEGER-4 W  ÷	   	SIGNED   Q! }*  ŠINTEGER-2 W  ÷	   	SIGNED INTEGER-  Q! }*  °4 W  
÷	  	PACKED DECIMAL÷	  
ÄÜ         Q! }"\gvL*  ÖÄ5 	÷	  	DUPLICATES
÷	   	NO DUPL  Q! }Q! }*  üICATESÄ5 	÷	  	CHANGEABLE÷	  	NO  Q! }$Q! }*  " CHANGESÄ5 ÷	   	NULL=
ÁÜ
 W     Q! }*  HÐ•# 
÷	  P÷	  ÷	  	ROOT VIRTUAL B  :©Ï_\gvLQ! }*  nLOCK NUMBER=æ* æ, 
÷	  –%÷	   	R  <©$Q! }*  ”OOT LEVEL=
ÁÜ 
÷	  ÷	  ÷	  ' 	1ST D  :©\gvL Q! }*  ºATA BUCKET VIRTUAL BLOCK NUMBER=æ. æ*  à0 
÷	  –%÷	  Â Ê÷	  	KEY NAME  <©\gvLQ! }*  :	Â Á  ”Á
ýÂ       Á  ŠÁ
ý÷	  Äœ4   $\gvL*  ,÷	  	POSITION:	! ÷	  Ð•	 ÅÅe &  Q! }\gvL*  RA
÷	  Ð•	 Ä
ø÷	  ÷	  		SIZE:	 	„!  
:©\gvLQ! }*  x ÷	  Ð•	 ÅÅe" w•ªüÁ¦ü
÷	  Ð•	 Ä
  
\gvL":©*  žõ÷	  ÷	   	TOTAL KEY SIZE=
ÁÜ5 
÷	  \gvLQ! }*  Ä  ÷	  	MINIMUM RECORD LENGTH=Á6 
÷	  :©Q! }*  ê  ÷	  ÷	   	DATA LEVEL FILL SIZE=Á   :©\gvLQ! }*  
÷	  ÷	  	INDEX LEVEL FILL SIZE=Á   :©Q! }*  6
÷	  ÷	  Á  W¬  ‡ ÷	  	DATA ARE        :©\gvLz*–Q! }*  \A=
ÁÜ 
÷	  ÷	   	INDEX AREA=
ÁÜ   :©Q! }*  ‚
÷	  
ÁÜ Á÷	  	LOWEST LEVEL IND  :©Q! }  ¨EX AREA=

ÁÜ ÷	  ÷	  ‡   :©\gvL       ¤ M  	 NÀ…È*  ö*}    NÀ…È   ¯”L      (  ¬Žžè  *  y©N\h  ¬žè¬žè y©sYh y©P\h  
  ¯”   
   ¬ž            
  ¬Žž         ´M  	 NÀ¨Ä*  ›r""    NÀ¨Ä   ¯”L  ¬ K@  ¬ÖK@  *  ¬R@  ¬Ðf@  Ìªp@    @  ª%  @  *  E, K@  Ô2 d@  ï4ÖK@  ï4Ðf@  ,:@`@  *        RÀ+@  ãfCy@  \g%@  þvL"@  áy s@  *  óy  @  öy  @  zÖK@  zÐf@  :©Ï_@  *      (  ""›r(¬.  hü ¬CyhŒ 6  hl *  B  hv Ô(  h€ æf  h` ›r""h  ¯”   
   ""›r  *      Á@ Ñ @H ùÀ  Á Â ÷	    
@ óy   ª%   (:©Ï_"  & À  Á ÷	  Àãÿ÷	  Æ  w   `ý(  öy  
ª%   :©Ï_RÀ+þvL"áy s*  D Xðú` þl  þv @þv ðü€ °ÿü   Àâÿ÷	  w $  X` l v v € ü &RÀ+*  j ªÿÀáÿ÷	  Ààÿ÷	  Àßÿ÷	  w ŠÿÁ    RÀ+RÀ+ RÀ+(¬Ðf*   Â  ÷	  £N       w tÿÃ£Y À  & 0
  ¬ÖK
E, K"Ìªp&  ¶  ÷	  · Á  Â  ÷	  ÷ ÀÜÿ÷	*  ãfCyÌªp ¬R¬ K\g%Ìªp *  Ø   Â÷	  w   £? ÀÜÿ÷	  Ë÷	  ÈÀ   RÀ+\g%  Ô2 d$,:@`*  þ    ñµ 	 ÀÞÿ÷	  w þþÁ  Â  ÷	     ª%  RÀ+ ï4Ðf$ï4ÖK(E, K*  $Ã£Y ñÅ 	 w   £N w Ôþ£? À    *  JÖÿ÷	  ã÷	  àÁ  Â  ÷	  £Y À  ðU&  Ô2 d,:@`zÐfzÖKE, K&ª%  *  p  0
 0
 w   £N ÃÆ  w   £?      þvL"$áy s  –Àåÿ÷	  ÛÀðÿ      ÷	  Ö  Ô2 dRÀ+        M  	 NÀEÂ*  ´'Èd    NÀEÂ   ¯”L  Íª¹Z@  ¬ƒd@  "      (  ¾©…8z ¾©…h  ¯”   
   ¾©…  *    Ä  Äm Äå ·  Â¡ ‡ ÂÃEÿÀ  ¬ƒd
¬ƒd Íª¹Z*  & 
    Â
ñ± ‡ Á ¡ ‡ ÷×   *  L Å Á W! ¡ ‡ ê×   Å Á W!   r ¡ ‡ Ý       M  	 ÎšXÀ*  Ü©u~    ÎšXÀ   ¯”L  a©bŸ@  i©€‰@  *  Ýª¨M@  Ýª[N@  ¹«WŒ@      (œ:©´h6   Ü©u~h ¯”   
         *           <       €–˜     w	  &fæ  Æå  ¹«WŒ*        &  fæ=ÿˆÎel… C



ö5  p*  L Ä €Á÷	  Á
€Ád ÷	  Á€  i©€‰"i©€‰*  r Á ÷	  Á
€ÀåAÁ÷	  &@Ád ÷	  
i©€‰i©€‰*  ˜   &@Á ÷	  &Àm÷	  MÀµ÷	  M`  i©€‰i©€‰Ýª[N&Ýª[N*  ¾ À¬Ž÷	  M`5 u À¬Ž÷	  Á@Á@  Ýª[N Ýª[N*  ä e@M`u 5` €Á BœÿÿW  á@ †`
  a©bŸÿÿ*  
u 
ó‚#;‚eu Íåìoµ õå  Æe *  0„Æå À  A‚÷	  ƒeSSSÀ B÷	    Ýª¨M" *  V  CeSSSA‚÷	  ƒeSSSÀ B  Ýª¨M      Ýª¨M$ $  |÷	  Æe ‚€‡ Æe Â €€± ‡   Ýª¨M       ’M  	 PÀ(Ñ*  œ,    PÀ(Ñ   ¯”L  œ«@  ¡«@  *      (¾  ©+€hl Ý©Š}hR 6ªÊ8h
 •«ŠKh¶ 
  ¯”   
         *              
€Æå ‚¦&
&
æAÿˆ‚ Â  	*  & ÂÂÂÂÂÀÌÿ·ÎÿàÂE —  ‡7ºÿ
*  L ˆ¡ ‡ fÀ ÷	  †± ‡ ¡ ‡ fø   ¡«*  r Áe? &
fæYÿˆ†± ‡ ÁÁ*  ˜ ÁÁÁÁÂdÿw``ÿÀ ÷	  ¡ ‡ À w      œ«$ (œ«       ˜ M  	 NÀEÂ*  œ,(K    NÀEÂ   ¯”L  ¬ƒd      @      (    Ý©á~8 Ý©á~h  ¯”   
   Ý©á~      @ÀE ÿBÂE ÿƒàÂ  `À‡   ¬ƒd       M  	 NÀ…È*  œ,0z    NÀ…È   ¯”L      (  ­¿d¨   Ý©€8R Ý©€h  ¯”   
   ­¿d          
   Ý©€  *    D7  
K£Åe w  €
7  õ± ‡ Åe   ­¿d ­¿d *  & BÝ ƒ
·  EÂ Õ”‚
·   ûÁí  ¡ ‡   ­¿d  ­¿d  "­¿d  
  L w ´ÿ       ü M  	 NÀ…È*  ø8—`    NÀ…È   ¯”L  D©íb@  G©­\@  *  J©m$@  i©í{@  («m$@  «)x@      (    
­WTì& ¯”         
   
­WT        («m$         D©íb         G©­\ $   $     i©í{         J©m$       b M  	 NÀ…È*  €:Î    NÀ…È   ¯”L  6ª\dH      (    6ªVd¨  6ªVdh  ¯”           M  	 NÀEÂ*  ƒ:à    NÀEÂ   ¯”L  Æ«ˆ@      (  "  ­¿d¨ û¬ù_8N 6ªŒwh  ¯”   
   ­¿d              
   û¬ù_  *    7 Â&  EÃ   
×-  w  €
W¤:   ­¿d ­¿d  ­¿d *  & ûKãw   
…Ü ÅÅ àSKãw   Æ«ˆ  L     Æ«ˆ             |M  	 NÀEÂ*  ¡EÌ    NÀEÂ   ¯”L  ƒš@  ÖK@  *  Ðf@  ²Î@  Ìü@  Ìªp@  XÖK@  *  XÐf@  ª%  @  g'ÖK@  g'Ðf@  E, K@  *  œ,  @  Ô2 d@  ,:@`@  ¡EÖK@  ¡E?T@  *  ¡EÕZ@  ¡EÐf@  ¡ENq@  ¡EBx@  ýFÖK@  *  ýFÐf@  RÀ+@  NYÖK@  NYÐf@  ÔZÖK@  *  ÔZÐf@  kfÖK@  kfÐf@  \g%@  mày@  *  þvL"@  BxÖK@  BxÐf@  áy s@  :©@  *  P©@  ª@  «\g@  «)x@  ¤«úW@  *  ƒ±:2@  Ž±J…@  Ž±P…@      (  ¡EÌ(þ*  ÌhTc(#h8 XÌhð3hLð3Xh*  ð3¡EhŒð3      ýFhÐð3NYhŒð3ÔZhrð3kfh¶ *  ð3Bxh@¡EÎh”6F`;h ýFÌhØNYÌh”*  ÕZ€hæL^Ìh¸kfÌh¾ kfCyh Óf3h:*  ÔfÀ…hÖfLh(Ûf(#hzÛfˆYh¾Þf0Hhz*  Þf …h`àf¸`h  ãfP<h.w  hÀwÌhÌ*  wØh°wBxh$BxÌhHBx,:hBxCyh’"  ½yÀ+hÆ¶z@}hN@}  hd¯”   
   ¡EÌ  *          ÷	  Á  Â  ÷	  7
  ÀX ð5 2 (  ²Î¡E?T¡EBx\g%¡ENq màyX *  & Àïÿ÷	  ÷	 Îe ‡ ×-  þ Àíÿ÷	  Æ    
Ô2 d¡ENq$RÀ+(þvL"*  L w   Á8 Âíÿ÷	  ÷  7  Á  1 
Á   áy       sœ,  ªª ª%  *  r   ñ A ú1 Á8 Á Áe Hð   ·
  ª$¡ENq*  ˜   7  ‡ Á  Â  ÷	  7
TÿÎe ‡ Àîÿw   &  ¡ENqP©kfÐfkfÖKE, K(Ô2 d*  ¾ ÷  Îe ‡ À    ÀÀ-  
Àëÿ÷	    Ž±P…ª%  Ž±J…(RÀ+*  ä ÷ ÿÎe ‡ À  ð   7
ÿ‡ À  Á Á  P©Ž±J…"ƒš&Ìªp *  
ÈŠÁ
ýÁú Âø · À  P”Â
ý‡ Á   màyú màyø Ìªp ƒš*  0  Â  ÷	  Îe ‡ Àíÿw   ÷´þw f÷     BxÐfBxÖKE, KÔ2 d(Ž±P…*  V×-   ÷  Îe ‡ À    Á        À  Ž±J…Ž±J…ª%  $P©*  |B Âm  € ©ñ  " ‡ Á  ñ   fæ     
Ž±J…Ž±J…Ìªp ƒš(Ìªp*  ¢æ …÷	  Æe …ñú  ÷U   ‡ 7
<þ‡ 7
  «\gmàyú Ìü*  È8þ‡ ÷  Îe ‡ À    ÀÀ-  w îþ  
Ž±P…ª%  "Ž±J…*  îÁþÁÁm  Áe É  ×-üý ·
ôý
Àïÿ÷	  P©Ž±J…*    ÷ èýÎe ‡ ‡ ×-Úý 6÷-ÐýÌýw ~   RÀ+*  :÷  ×-   ÷  Îe ‡ À    À  Ž±P…Ž±J…Ž±J… ª%  *  `ÂžýÂÂm  Âe ‚Âm  € w `þÁ‚ýÁm  Áe  P©Ž±J…&P©*  †" É  ×-rý       ·
jý
Àïÿ÷	  ÷ \ýÎe   Ž±J…RÀ+*  ¬‡ ‡ ÷-LýLý
Àîÿ÷	  ÷ >ýÎe ‡ À  Àe  RÀ+&P©*  Ò" 
Á(ý7”&ýÂm"ýÁ
ú7
ý—  
Àêÿ÷	    (RÀ+*  ø÷ ýÎe ‡ w Šþ÷øüw   Á  Áe" Â   ,:@` P©*  
Â
ý×-Üü 7
Ôü‡ 7
ÎüÁ  Áe Â 
  P©*  DÂ
ýÎe ‡ Á  Áe Â 
Â
ýw   Á  Áe  P©",:@`&P©*  j" Â 
Â
ýw   Á  Â  ÷	  Îe ‡ Àëÿ  ,:@`¡EÐf¡EÖKE, K*  w   ÷  ‡ 
Â  Áe0 Â
üÂíÿ÷	  À  Ô2 d
¡ENq¡ENq$œ,  *  ¶0 ÷	  ‡ Á  Â  ÷	  Îe       ‡ Àçÿw   Á     ¤«úWýFÐfýFÖKE, K$Ô2 d*  ÜÂíÿ÷	  Á  1 Â—   Â  P”Â
ý‡   
œ,  P©*  Á  Â  ÷	  Îe ‡ Àìÿw   À  ðÕ  ‡    XÐf
XÖKE, KÔ2 d P©*  (Á  Â  ÷	  Îe ‡ Á  Â  ÷	  Îe ‡ À&  g'Ðf
g'ÖKE, KÐfÖK E, K*  Nêÿw   À  ðÕ  ‡ Á  Â  ÷	  Îe ‡ À   Ô2 dP©ÔZÐfÔZÖK E, K*  téÿw   Á  Â  ÷	  Îe ‡ Àèÿw   ÃÎe   Ô2 dNYÐfNYÖKE, K"Ô2 d*  š ‡ ÷U   À  ð  
 ðÕ  w . ÷  ×-  ÌüP©ƒ±:2$Ž±P…*  À   Îe       ‡ ÷U   À  ð  
 ðÕ  w     Ž±J…ÌüP©Ž±J…  æÀ  Á  Á

÷	  Àìÿw     ¡EÕZ
¡ENq:©RÀ+       M  	 XÀ  *  VN    XÀ     ¯”L  s©À@      (  "  <@¨ @(b µª Xh  ¯”   
   @  *    &Îe Á  f&æÿˆÂ  €Â% ÿ$&&  <@  s©À*  & &üÿæÿˆÂ  	f&üÿæÿˆöe  öe   s©À  L  €‡ Ðö	$ä1¢ áð       ¢ M  	 ÎšXÀ*  ×ª¢Z    ÎšXÀ   ¯”L      (0 a©bŸh$   ×ª¢Zh  ¯”   
         *    JANFEBMARAPRMAYJUNJULAUGSE      POCTNOVDEC  &        z M  	 NÀEÂ*  ”Th~    NÀEÂ   ¯”L      (  û¬ù_8   Ýª)Nh  ¯”   
   û¬ù_      
À`À
û‡        ~ M  	 NÀ…È*  ”Tƒ…    NÀ…È   ¯”L      ( Ýª[Nh  
  ¯”   
             &æ  
 †€m Î
ù–%‡        €M  	 NÀEÂ*  —`Ì    NÀEÂ   ¯”L  ƒš@  Ìü@  *  Ìªp@  œp!@   €p@  Þ@  ª%  @  *  ’(ÖK@  ’(Ðf@  ®(ÖK@  ®(Ðf@  E, K@  *  Ô2 d@  ,:@`@  RÀ+@  TÖK@  TÐf@  *  #TÖK@  #TÐf@  Ú_ x@  Ú_Ry@  —`      ÖK@  *  —`R@  —`Ðf@  —`Bx@  \g%@  mày@  *  }qÖK@  }qÐf@  ‘yå~@  ‘y’@  «\g@  *  «)x@  Ž±J…@  Ž±P…@      (  —`Ì(Ð*  kÌh‚ k""hê kð3hz ‘àhž 'Ìh,*  ’(Ìh ®(ÌhÄð3h–ð3’(hð3®(h¼*  ð3;hjð3Thrð3ThXð3#Thžð3Ú_h¦*  ð3—`h" ð3Vshbð3–yhø8ÌhB TÌh`*  #TÌh®#T\gh° Ú_ëvhºÓf€ph„ÖfÐzh*  Öf0hªÝf°rhFÝfxshŒßf#Thzßf˜qh  *  âfˆ'hãfkhZ TqÌh6 ™wÌh* íyÌh8"  æƒÌhDº‰Ìh sŠÌhV¯”   
   —`Ì  *    ÷5          Àòÿw   Á  Â  ÷	  Îe ‡ Àýÿ   ÞRÀ+—`Ðf—`ÖKE, K*  & w   Â  ò•   Â  ò•  Â  ò•     Ô2 d
ª%  ª%  "ª%  *  L  Á  Â  w   ÷5    ÷	 ‡ Á  Â  ÷	&  —`R—`Bx\g%Þ"‘y’&‘yå~*  r   Îe ‡ Àüÿw   Â  —¬  —,  
Á  E, KÔ2 dª%  *  ˜   Â ŠÂ
ýÎe ‡ òU  Â  —¬  Á  ƒšÌªp ª%  *  ¾   ñ   fæ  æ …÷	  Æe …ñú  ÷U"  ÌªpƒšÌªp«\g$màyú *  ä    ‡ Ã£N Àùÿ÷	  Îe ‡ w   Á    ÌüRÀ+$,:@`(}qÐf*  
      Â  ÷	  Îe ‡ Àûÿw   Â  ò•  ‡ Â     }qÖK
E, KÔ2 dª%  (ª%  *  0ò•  ‡ Â  ò•  ‡ Â  ò•   ò•!  ‡   ª%  ª%  *  VÂ  ò•  ‡ Àùÿw   Àøÿw   Àúÿw   Á  ª%  Ô2 dÔ2 d&Ô2 d*  |  Â  ÷	  Îe ‡ Á  Â  ÷	  Îe ‡ À÷ÿ&  Ú_RyÚ_ xE, K#TÐf#TÖKE, K*  ¢w   Àöÿw   ÷  Îe ‡ ÷  Îe ‡ Â  Ô2 dÔ2 dŽ±J…Ž±P…*  È  ò   —¬   —¬  Áú Âø À  P”$  ª%  Ž±J…màyú "màyø &ƒš*  îÂ
ýÁ  ñø  ÷U   ‡ Á  Â  ÷	  Îe(  
Ìªpmàyø Ìü      ’(Ðf"’(ÖK&E, K*   ‡ Àóÿw   ÷  ×-   Îe ‡ ÷U     Ô2 dŽ±P…Ž±J…(Ìü*  :Â  ò  0 ‡ Á  Â  ÷	  Îe ‡ Àòÿw   &  ª%  
Ž±J…TÐfTÖKE, K(Ô2 d*  `÷  Îe ‡ ÷U   Â  ò    ò  " ‡ Á   Ž±P…Ìüª%  Ž±J…"Ž±P…*  †  Â  ÷	  Îe ‡ Àñÿw   Â  òU  ‡ Á    €pœp!E, KÔ2 dª%  (  ¬  Â  ÷	  Îe ‡ Àðÿw   Â  òU  ‡    ®(Ðf®(ÖKE, KÔ2 dª%         ¬ M  	 NÀEÂ*  —`R    NÀEÂ   ¯”L  —`XH@  w«˜q@  *  0²#	@      (  —`R( ãf—`h  ¯”         
   —`R      Á Â  Å  ÷	  ‡   
—`XHw«˜q0²#	       ¼M  	 NÀEÂ*  —`\}    NÀEÂ   ¯”L  kÌ@  k""@  *  kð3@  Ì@  Ìü@  ‘à@  c(#@  *  XÌ@   'Ì@  ’(Ì@  ®(Ì@  ð3@  *  ð3@  ð3X@  ð3’(@  ð3®(@  ð3;@  *  ð3¡E@  ð3ýF@  ð3T@  ð3T@  ð3#T@  *  ð3NY@  ð3ÔZ@  ð3Ú_@  ð3—`@  ð3kf@  *  ð3Vs@  ð3Bx@  ð3–y@  ø8Ì@  ,:@`@  *  ¡EÎ@  6F`;@  ýFÌ@  TÌ@  #TÌ@  *  #T\g@  NYÌ@  ÜY0 @  ÕZ€@  L^Ì@  *  Ú_ëv@  kfÌ@  kfCy@  Óf      3@  Óf€p@  *  ÔfÀ…@  ÖfL@  ÖfÐz@  Öf0@  Ûf(#@  *  ÛfˆY@  Ýf°r@  Ýfxs@  Þf0H@  Þf …@  *  ßf#T@  ßf˜q@  àf¸`@  âfˆ'@  ãfk@  *  ãfP<@  TqÌ@  w  @  wÌ@  wØ@  *  wBx@  ™wÌ@  BxÌ@  Bx,:@  BxCy@  *  ½yÀ+@  íyÌ@  ¶z@}@  @}  @  æƒÌ@  *  º‰Ì@  sŠÌ@      (  Ì«e	¸˜w«˜qh  "  Œª¸ —`XHh  ‹ªÐ¸< ¯”   
   Ì«e	      À  Ø Ê     : ?    &  ßf˜qØ ™wÌÌü: ð3—`  
   ‹ªÐ      SEQÿ
   Œª          ‹ªÐ   Ì«e	    €           :   ™wÌ
Ìü:  ‹ªÐ    RELÿ
   Œª       ‹ªÐ  Ì«e	           Ø  TqÌ
ÌüØ ‹ªÐ    IDXÿ
   Œª       ‹ªÐ  Ì«e	*   * ‚     BÀ†    È…    À'  ø8Ì
ÌüB,:@`    @ 
  B   ˜Ê     Š ?  @ &  âfˆ'˜
º‰ÌÌüŠ ð3–y@ 
   ‹ªÐ    VARÿ
   Œª       ‹ªÐ  Ì«e	V   V ƒ     Š   º‰Ì
ÌüŠ  ‹ªÐ    FIXÿ
   Œª       ‹ªÐ  Ì«e	`   ` „         'Ì
Ìü        ‹ªÐ    STMÿ
   Œª
   
    ‹ªÐ  Ì«e	j   j …     Š   íyÌ
ÌüŠ  ‹ªÐ    UDFÿ
   Œª       ‹ªÐ  Ì«e	t   t †     Š È  Š À†  '  æƒÌ
ÌüŠ   V
Š ,:@`8  ˆ @ È…  ” È  È   @   

”   8
  –   È…    À    Ê       ?*    ž 
  ~
ãfk#T\gÌü   °   ž Y       N    À  ž À„(  kð3ž 
#T\gÌükÌk""ž   Ì Î È  È…    È…    À'  Î   8
  ž 
  Þ 
   à   ˜Ê     Š       ?  Þ &  âfˆ'˜
º‰ÌÌüŠ ð3TÞ 
   ‹ªÐ    VARÿ
   Œª       ‹ªÐ  Ì«e	ô   ô ‡     Š   º‰Ì
ÌüŠ  ‹ªÐ      FIXÿ
   Œª        ‹ªÐ   Ì«e	þ   þ ˆ         'Ì
Ìü  ‹ªÐ$   $ UDFÿ
   Œª    $   ‹ªÐ$  Ì«e	  ‰     Š À†  Þ À  ˜Ê &  æƒÌ
ÌüŠ ,:@`Þ ßf#T˜  "    ?  Ì    À†  À  (  Ìü
ð3Ú_Ú_ëv,:@`Ýfxs  <˜Ê  8?  8Ì    À†  8*  ˜ÜY0 
8ð3#T8#TÌ,:      @`8
   ‹ªÐ(   ( VFCÿ
   Œª    (   ‹ªÐ(  Ì«e	V"  VŠš     À  ˜Ê     ?  ^Ì(  sŠÌ
ÌüÖfÐz˜Ìüð3’(^   t    À†  ^À  ˜Ê       ?(  ’(Ì
,:@`^Óf€p˜‘àÌü    ~Y       N   ¬À†  (  ð3~
‘àÌüÌü¬,:@`   ª~À  ˜Ê     ?  ¬Y   &  ~Öf0
˜Ìüð3®(¬®(Ì   Æ    N     À†  ¬È…    À  )  ÌüÌü,:@`¬  Þ
âfˆ'  â˜Ê     ?  Þ(  ˜º‰ÌÌüð3VsÞ ‹ªÐ      ,   , VARÿ
   Œª    ,   ‹ªÐ,  Ì«e	ô  ô‹       º‰Ì
Ìü ‹ªÐ0   0 FIXÿ
   Œª    0   ‹ªÐ0  Ì«e	þ  þŒ     È  À†  '   'Ì
Ìü  V
,:@`  ÞÈ  È  È…    À'  Þ  8
  "
  ~
   $  ˜Ê     ?  "Ì    À†  (  Ýf°r˜Ìüð3T"TÌ,:@`  @"È…    À  ˜Ê     '  "  H
âfˆ'˜º‰ÌÌü`  Vx?  H  xð3;
H ‹ªÐ4   4 VARÿ
   Œª    4   ‹ªÐ4  Ì«      e	^  ^     x  º‰Ì
Ìüx ‹ªÐ8   8 FIXÿ
   Œª    8   ‹ªÐ8  Ì«e	h  hŽ     ~À†  HÈ…  '   'Ì
Ìü~,:@`H  
   |‚È  È  È…    À'  ‚  8
  ~
  Œ
…  Ž  ˜È…  ÌÈ  È&  6F`;˜
  ˜
Ì  Ú
  ž  À  ˜Ê     ?   Y'    ¼
ÔfÀ…
˜Ìüð3X …"  ¶       N     À†   À  ˜Ê(  XÌÌüÌü,:@` Ûf(#˜"  Ô       ?  ÌN       Y   *  ¡EÎÌüð3¡EÌ¡EÎ      Ìüc(#  ò  üÀ†  ÌÈ  È!  Ìüü
,:@`Ì  Ú
     À  ˜Ê     2?'    ¼
ÖfL
˜XÌÌü2    Y     2N   `À†&  ð3X
XÌÌü2Ìü`  .  À  ˜Ê     `?&  ,:@`
Óf3˜ÌÌü`  D  2Y     `N   `À†&  ð32
ÌÌü`Ìü`  \  2À  ˜Ê     Ì?&  ,:@`2
Þf …˜ÕZ€ÌüÌ  r  `N     ÌY   ŽÀ†&  ð3ÔZ`
ÕZ€ÌüÌÌüŽ  Š  `À  ˜Ê  Ž?  Ž      #*  ,:@``
Þf0H˜ÜY0 Žð3NYŽ  ¢°Ð  ÌÀ†  ŽÂ  ÌÀ†  *  °NYÌ
Ì,:@`ŽL^ÌÌ,:@`   ºŽÀ  ˜Ê     ?  ¼Àž   &  ŽÛfˆY
˜Ìüð3ýF¼ýFÌ  Ö    À  ˜Ê  Ú?  ÚÌ&  Ìü
àf¸`˜ÜY0 Úð3kfÚ  î  (  BÀ  ÚÀ„ÚÊ  *  kfÌ
w  BBx,:ÚÚkfCy  À†  ÚÀ  ˜Ê  ?  *  ,:@`
ÚãfP<˜ÜY0 ð3Bx  Ì  6(  hÀ  À„ÚÊ(  BxÌ
6½yÀ+hBx,:Ú   8    À†  Ì  XÌ        ÚÌÚÀ†*  BxCy
,:@`wÌXBx,:ÚÚ  T  Ú)  ,BÀ†  ÚÌ  *  ¶z@}Ú
kfCyB¶z@}ÚwBx"  l~Ì  ÌÚÀ†  ,h)    )(  ~Bx,:
Ú@}  hwØ  Š  )ÚÀ†    Bx,:
Ú@}         |M  	 NÀ¨Ä*  ãeÌ    NÀ¨Ä   ¯”L  .ÖK@  .Ðf@  *  10@  1ÖK@  1Ðf@  	@@  	%@  *  	Ò@  ;	ÕZ@  K0@  KÖK@  KÐf@  *  ²Î@  Ìü@  ç0@  çÖK@  ç.d@  *  çÐf@  Ù0@  ÙÖK@  ÙÐf@  Þ@  *  ª%  @  %&%l@        %&Òl@  <&ly@  E, K@  *  œ,  @  Ô2 d@  Ô4ÖK@  Ô4Ðf@  ,:@`@  *  [M0@  [MÖK@  [MÐf@  RÀ+@  ªS%!@  *  ªSÒ!@  ãe0@  ãeÖK@  ãeR@  ãeÐf@  *  ãeBx@  \g%@  þvL"@  áy s@   ©@  *  :©@  M©At@  Ž±J…@  Ž±P…@      (  *  ãeÌ(1Ìh¨	MhX KÌhÌçÌhæ*  ÎKh”ÙÌhÄY¨Mh%&Ìhfô&M!h *  ú&àyh¼ ð3.h„ð31h ð3	h¬ð3KhÄ*  ð3çhÞð3Ùh¼ð3%&h^ð3Ô4h^ð3[Mh$*  ð3ãehþÔ4Ìhf^KÌhŒ¯K1h[MÌh,*  ÕZZhÆãeÌh¬ Ñf0MhrÑf¨Mh„ÑfIqh~*        Òf¸Gh¤Óf~hÂÔfè!h ÖfÙh4Øf qh>*  Üf8^hÝf•`h´àfxKhâœwÙh,Þ‰Ìh˜
  ¯”   
   ãeÌ  (      ÷FI  ÷LE ÷FI  ÷LE ÷FI  ÷LE$  
1010 K0K0 "Ù0"  $  ÷FI  ÷LE ÷FI  ÷LE ÷FI&  Ù0 
ç.dç.d ç0ç0 $  B   ÷LE ÷FI  ÷LE *÷AR  ÷EA$  ãe0
ãe0 [M0[M0 10"  b  ÷AR  ÷EA ÷AR  ÷EA ÷AR&  10 
K0K0 Ù0Ù0 "  €   ÷EA ÷AR  ÷EA ÷AR  ÷EA$  ç.d
ç.d ç0ç0 ãe0   ž  ÷AR  ÷      EA ÷	  Á  Â  w *  ãe0 
[M0[M0 ²ÎãeRãeBx*  º   ÷  .÷  +÷	R Á  p
 
 p  pœ1   \g%	@ ©ª%  *  à  p  ð ÷ ÿ7
ÿñ5€  ðÕ *  	 1

 1
 1Š1 1
 ñE€  ×-  þ Àæÿ÷	  	@(  ,  Æ  w   Á Âæÿ÷	  ÷  7  
Á&  RÀ+þvL"áy sœ,   ©" ©*  P  ñ A ú1 Á Á Áe Hð   ·
   ©$	@*  v  7  ‡ 7
  7
  À  ¬   ÷	  w hþÁ&  	@M©At	@M©Atª%  "²Î&  œ  Â  ÷	  Îe ‡ Àäÿw   Á  Â  ÷	&  	Ò	      %E, KÔ2 dªSÒ!"ªS%!*  ¾  Îe ‡ À  Á  ÁÁ

÷	  Àçÿw   ÷5   E, K;	ÕZ	@:©&RÀ+*  ä    ‡ Á  Â  ÷	  Îe ‡ ÀÚÿw   ÷	ÿ&  <&lyÞãeÐfãeÖKE, K$Ô2 d*  
ð•  ‡ Á  Â  ÷	  Îe ‡ ÀÙÿw   À     [MÐf[MÖKE, K$Ô2 d(M©At*  0ð   ð   ‡ À  ¬  ‡ Á  Â  ÷	   Ž±J…Ž±P…M©At"Ô4Ðf&Ô4ÖK*  V  Îe ‡ ÀØÿw   À  ðÕ 	 ‡ Á  Â  ÷	   E, KÔ2 dM©At".Ðf&.ÖK*  |  Îe ‡ À×ÿw   À  ð•  ‡ À  ð•    E, KÔ2 dM©At"M©At*  ¢‡ À  ¬         ‡ Á  Â  ÷	  Îe ‡ Àôÿ  ª%  KÐfKÖKE, K*  Èw   ÷  ÷	  Îe ‡ ×-    ÷	  Îe ‡    Ô2 d
Ž±P…,:@`Ž±J…",:@`*  îÀ  ð ÷  À  ð  1 À  ð  &  ª%  M©Atª%  Ž±J…$M©At(Ž±J…*   ÷U   ‡ ¬   
¬  Á Á   
Ìü*  :¬  Á ¬  Á œ0 ÁÁ*  ` Áe  B`ŠÂ ‚‚
À  ÀÀ € À  Ž±J…*  †éÿ÷	  Îe ‡ ³÷   À  ¿÷5    ‡ Á   RÀ+Ž±J…ª%   <&ly"Þ*  ¬  Â  ÷	  Îe ‡ Àãÿw   ÷  Îe ‡ ÷   ÙÐfÙÖKE, K      Ô2 dŽ±P…*  Ò  ÷U   w L Á  ÁÁ  @œ1 @œ À  Ž±J…ÌüM©Atª%  *  ø  Â  € ‡àüÂÀèÿ÷	  Îe ‡   Ž±J…"RÀ+*  ÷U   ñ   ‡ ÷ Îû‡ ÷5    ‡ ÷¾û  ÌüŽ±J…<&lyÞ*  D÷  ‡ Á  Â  ÷	  Îe ‡ ÀÛÿw   ÷  &   ©%&Òl%&%lE, K$Ô2 d(Ž±P…*  jÎe ‡ Á  ñ   ÷U   ‡ ÷5    ‡ Á   ª%  Ž±J…Ìü <&ly"Þ*    Â  ÷	  Îe ‡ Àõÿw   À  ÀÀ  ð&  1Ðf1ÖKE, KÔ2 dM©At&ª%  $  ¶  
 ð   ‡ ÷5    ‡ Á  Â  ÷	&  Ž±J…
      Ž±P…<&lyÞçÐf çÖK*  Ö  Îe ‡ Àâÿw   ÷  À  ðU€  ‡ À     E, KÔ2 dM©Atª%  (M©At  üðÕ 	 ‡        ¬ M  	 NÀEÂ*  ãeR    NÀEÂ   ¯”L  ìXH@  L© K@  *  0²#	@      (  ãeR( ãfãeh  ¯”   
   ãeR      Á Â  Å  ÷	  ‡   
ìXHL© K0²#	       ÚM  	 NÀ¨Ä*  ãe\}    NÀ¨Ä   ¯”L  1Ì@  	M@  *  KÌ@  6K@  Ìü@  çÌ@  6Ì@  *  ÎK@  ÙÌ@  üÌ@  %&Ì@  ô&M!@  *  ú&ày@  ð3.@  ð31@  ð3	@  ð3K@  *  ð3ç@  ð36@  ð3      Ù@  ð3ü@  ð3%&@  *  ð3Ô4@  ð3v8@  ð3<9@  ð36K@  ð3[M@  *  ð3ãe@  Ô4Ì@  v8Ì@  v8Cy@  <9Ì@  *  <9Cy@  ,:@`@  y:ð}@  6KÌ@  6KCy@  *  ^KÌ@  ¯K1@  [MÌ@  ÜY0 @  ÕZZ@  *  Ñf0M@  Ñf¨M@  ÑfÕZ@  ÑfIq@  Òf¸G@  *  Óf~@  Ôfp@  Ôfè!@  Ôf`'@  ÖfÙ@  *  Øf q@  Ùfp@  Ùf`'@  Ûf6#@  Üfp@  *  Üf8^@  Ýf•`@  àfxK@  œwÙ@  Þ‰Ì@  *      (  Ì«e	¸úL© Kh  Œª¸ ìXHh    ‹ªÐ¸ ¯”   
   Ì«e	      À  € Ê     z ?    Y&  ÑfIq€ ô&M!Ìü      z ð3	          0 N     z À†  (  	MÌü
0 ô&M!Ìüz ,:@`  .   Èƒ    À  úÊ   '      € 

ÕZZÝf•`úÌüy   B ?  6 Y     b N   À†*  ð3	
6 ú&àyÌüb Ìü  ^   6 È  È  È"  ,:@`6 
  
  ¶
  l   È  È‡    )    j
  
  Ú
ÕZZ`  x 6 È…  &È  È   6   € 

&  – 
  †   È  È  È…#    ¶
  j
  
 "  ’     À    Ê     ?  – Y   )    Ú

àfx      KÌüð3ãe– ¯K1   °   Â N     À†  – À  úÊ&  ÌüÂ Ìü,:@`– Üf8^ú  Ê   Â ?  Â Ì     ä À†&  ÜY0 Â 
ð3[MÂ [MÌÌüä "  à   Â À    Ê     ?  ä Y   (  ,:@`Â 
Øf qÌüð3Ô4ä Ô4Ì&  þ     N     À†  ä À  úÊ     ?(  ÌüÌü,:@`ä àfxKú Ìü      Y   :N     À†  À&  ð3ãeÌü:Ìü,:@`  <  úÊ     Â ?  :&  Ñf0Mú
^KÌÌüÂ ð3.:
   ‹ªÐ      LBNÿ
   Œª                ‹ªÐ   Ì«e	P  P€     Â   ^KÌ
ÌüÂ  ‹ªÐ    VBNÿ
   Œª       ‹ªÐ  Ì«e	Z"  Z     Â À†  :À    Ê    Ê(  Þ‰Ì
ÌüÂ ,:@`:Òf¸GÎK$  xj?  jÌ    ÌjÀ†  jÀ    Ê*  jð3K
jKÌj,:@`jÔfè!   ˜       ?  Ì    ÌÀ†  (  œwÙÌüð3ÙÙÌ,:@`&  ´À    Ê     ?  ¶Ì       À†(  Ñf¨MÌüð31¶1Ì Ìü&  Ö  ¶À    Ê     ?  ÚN     Y(  ,:@`¶
Óf~Ìüð3çÚ Ìü        ø       À†  ÚÀ  &Ê   (  çÌÌü,:@`ÚÖfÙ&Ìü  &?  Ì  &À†  À  *  &ð3%&
%&Ì&,:@`ÑfÕZ&  * À€À    À€À  úÊ   V?  6Ì*   
Ûf6#ÔfpúÌüV ð36"6  L  VÀ†  6È  À  '  6ÌV
,:@`6  ´
Ùfp   ^úÊ  x?  ZÌ  xÀ†  *  úv8Cy
xð3v8Zv8Ìx,:@`  vZÈ  À  úÊ  .?%  Z  Ø
Üfpú6KCy.   Š  |Ì  .Ì  ZÀ†  |À‚*  ð36K|
6KÌ.6KZ,:@`|        ¢  À    È  È…  ¤À(  y:ð}Ûf6#  ´
  Ø
¤"  ¶  úÊ     ?  ´Ì    Ì´À†&  Ôf`'úÌüð3ü´üÌ´  Ô  ´À  úÊ    ?  ØÌ&  ,:@`´
Ùf`'ú<9Cyð3<9Ø  ì    ÌØÀ†  Ø  <9Ì
Ø,:@`Ø       &M  	 NÀªÆ*  [qì	    NÀªÆ   ¯”L  <©!€@  ¬ @  *  ¬ @      (  •«¸{¨* ­[q8ü¨,th  
  ¯”   
   •«¸{  
    #       ­[q  *    Ã &
Ã
ý€Ã Ä  Ó 
Á ÉÅ    •«¸{ ¬ ¬   ¬  *  & ŠÅ
ý      ÷	t Á ÉÅ ŠÅ
ý÷	\ Á
  ¬  *  L  ÉÅ ŠÅ
ýÂ ÷	@ Ã &
Ã
ýƒ
  ¬  *  r &
&
&
&
æ  &
&
æ&
Î• æ	 æ æÿˆ
  •«¸{  *  ˜ Æe ×¢ ± ‡ &÷	  Š€÷	 ‡ &f
  <©!€*  ¾ W¢- ”Ó•0 ”€
”””Àe ””€

&  ä W¢: ”Ó•0 ”€
””€
””€‡        ÆM  	 NÀ(Ñ*  [q&    NÀ(Ñ   ¯”L  ü¨,t@  9©""@  *  n©Ý;@  ›©£_@  ¾©M@  Â©ô+@  ªôs@  *  °ªˆr@  ³ªp€@  ¶ª°@  ¶ªÀ@  ÿª*t@  *  •«ô+@  •«§y@  ˜«Ð@  ™«°_@  ¢«@@  *  ¢«h@  ¢«À@  ¢«      è@  §«³s@  §«\}@  *  ¹«´‰@  Å«[q@  ¬ƒd@      (  •«Dy¸ *  •«’{¨ ¹« Œh  ­[q8L«L	h¼ •«7xh  
  ¯”   
   •«Dy              "  ¢«@¢«À¢«h
¢«è ­[q  "    ÷  ÷	  ÷	® 7&   7(  7 &  §«\} §«\} ™«°_¶ª°¶ª° *       ÐÁ  Â ”Â
ý÷	  Á  ÷	¢ Ã  "  ³ªp€°ªˆr§«³s •«Dy  (§«\}*  D ÷	  Â÷	  Á ÷	Š ÷  ƒ
 Ã Ã   ÿª*t•«§y•«Dy ªôs*  j Á Áe Â
 À  Â
ý÷	  	†÷˜   Ä˜ÿ  ˜«Ðü¨,t"˜ $9©""*   Ã w   À  Á  Â       Â
ýÅ  C ÷	  *  Â©ô+ 
¾©M•«’{  ¶ªÀ Â©ô+(Å«[q*  ¶ ÷	  ‡ ÷	  7&   7(    ÐÁ Â &  ›©£_¹«´‰•«’{  •«’{ "•«’{ *  Ü Â
ý‡ ÷5  Å  ÷	  ÷5  ù	  ù	  ¬ƒd •«ô+n©Ý;¬ƒd    ‡        M  	 NÀ…á*  [qR    NÀ…á   ¯”L  ì¨@  ¹© @  *  ¹«´‰@  ¬±@      (  ­[q8d C©Õfh  
  ¯”   
   ­[q  *    ÷	  ÷5  2 "À Á Áí  P Á  Ã Â%  ¹«´‰¬±2 ì¨"¹© *  &  
Ð5 &TÃ
ýÀe $Ã
ü°0  L ôÿ¡ ‡ 6
 ± ‡       öÿÿ ú       ¦M  	 RÀ¨Ý*  [q•    RÀ¨Ý   ¯”L  ì¨@  ô¨@j@  *  ü¨€}@  ©ô@  G©X@  J©%@  J©"@  *  v©òy@  Â©ô+@  ªôs@  Íªq@  •«ô+@  *  ˜«Ð@  «•@  «)x@  ¤«4z@  ¹«´‰@  *  	¬ñW@  ¬°@  ¬š@  ¬ƒd@  ¬ @  *  ¬ @      (  ­[q8J©[qh  ¯”   
   ­[q  *    Å  C ÷	þó5 2 w   ó•	 3 ÷	  ÷5   Â©ô+v©òy$ü¨€}*  &  ó   ó   ÷	  ÷	< Ã  
ÂÜ Ã  ¬ƒd ¬ J©% 	¬ñW*  L  Å ÷	  Ã 3‘, s( Å  ÷	  ÷	  ÷	˜*  ¬š Íªq      Â©ô+ Â©ô+ «•$J©"*  r Å  ÷	  ‡ ÷	  À   Àm  ð%  ÷	¶ "  •«ô+
G©X¹«´‰©ô ì¨*  ˜ ÷	 ‡ ÀeZ 3
 3 ÷
   ÷  3” 3”  ô¨@j"ô¨@j *  ¾  3” 3”0 3”1 Ð‹3  3" 3 3T Ã  3
  &¬ *  ä  3 3 3 3 3 3 3
 3 3 *  
3 3 3 Ã  3 3 ÷	 D÷	 Á Q  ¬ *  0s 7
  7
  ‡ ””ÂÂÂÂP‡ 7
  Àe  
ªôs¤«4z&¤«4z*  V\ 3T ÷	’ ’ÁEðÿs ”ÁEÿs 3” Ð3*  | 3
 ÷
   ÷  Àe 3”1 € ŠÐ‹3”0 3  ô¨@jô¨@j *  ¢ ó¥   ó¥        3ðÿ Àe Â Á    (¬ *  ÈÁe Â
ýÃ  3 3 ô5 Z ÷   3  ¬ &¬° *  î ‡ ÷	  Á  Â Â
ý7  ‡ ó5  2 óE  
¹«´‰˜«Ðªôs
   2 ‡        ¶M  	 OÀÅç*  [qì    OÀÅç   ¯”L  "©ì@  J©[q@  *  ²©ô@  Â©ô+@  («[q@  •«7x@  ˜«0!@  *  Í«ßf@  ¬ƒd@      (  •«Dy¸. •«{èD *  ô¨@jh@ µ©Þ‰h  ¹© h ªôsh
 ˜«Ðh *  ¤«Àvh: ¤«4zh> ­[q8 •«Àvh  ¯”   
   •«Dy      (             	  *  ( Í«ßf(«[q
J©[q•«7x²©ôÂ©ô+       RM      SRST - VERSION  1.5       ­[q      ÷5  ÷	  ‡ Å  ÷	  ‡   ¬ƒd ˜«0!•«Dy  "©ì       ª M  	 NÀEÂ*  [qf    NÀEÂ   ¯”L  ô¨@j@      (    ­[q8$ o©HXh  ¯”   
   ­[q  (    D& E( Äe EÅ- ‡‚Ä-  ‡¡ ‡ ± ‡   ô¨@j ô¨@j       ÂM  	 NÀEÛ*  [qû    NÀEÛ   ¯”L  ì¨@  9©´}@  *  ªôs@  ˜«Ð@  ¹«´‰@  ¬ @      (    ­[q8¾ s©h  ¯”   
   ­[q  *    ÷	  ÷  À Àm  Àe Á  Â Â
ý  ¹«´‰
ªôsì¨˜«Ð*  & 7  ÷	 ‡       Æå Äe:  
÷	2 €Á ÷	d  
÷	  ªôs ¬  *  L " €Á ÷	T À ÷	 €Á ÷	B Æe ‡ …  
¬  ¬  *  r Õ••Õ•- •••Õ•- ••ÀÕ•  ••Õ•*  ˜ : ••Õ•: ••Õ• ‡ ÷	  †Ã 
Ã
ý‡   9©´}       æ M  	 NÀÅÎ*  [q(    NÀÅÎ   ¯”L  ê¨ s@  ¾©M@  *  ó«ø@      (  •«Dy¸ ­[q8 —©(h  
  ¯”   
   •«Dy       ú     °ý  ¶ÿ      
­[q ê¨ s¾©M ­[q      Â  w   ± ‡   •«Dy  
ó«ø       ˜ M  	 NÀEÂ*  [q–,    NÀEÂ   ¯”L  ì¨@  Ï«Î@  "            (  ­[q8 Ï«êh  ¯”   
   ­[q      ÷	  ðí   ‡   Ï«Î
ì¨       æ M  	 NÀEÂ*  [q!4    NÀEÂ   ¯”L  ô¨@j@  9©€K@  *  ¹«´‰@      (  ­[q8: ª‰Sh  ¯”   
   ­[q  *    ÷	  D& E( Â  Ã áƒCáÂe CÃ—   ¹«´‰ô¨@jô¨@j   &  ÷	  Â ¶ ‡   
9©€K       š M  	 NÀEÂ*  [q¡:    NÀEÂ   ¯”L  ©ô@  •«ô+@  "      (  ­[q8
 7ª„:h  ¯”   
   ­[q      Á À ‡   •«ô+ 
©ô        ¢ M  	 NÀEÂ*  [q€M    NÀEÂ   ¯”L        ê¨ s@  9©""@  "  ¾©M@      ( ¯ªðyh  ¯”   
             ÷    Ä¶ÿw     ê¨ s9©""¾©M       ¢M  	 NÀ…á*  [qE`    NÀ…á   ¯”L  ê¨ s@  ì¨@  *  ©ô@  ©|L@  ©  @  ©Ðz@  %©€*@  *  9©""@  >©/K@  C©Õf@  G©X@  a©Ð@  *  t©Ø@  v©"@  v©0"@  v©òy@  ›©£_@  *  ²©ô@  ¾©M@  ¾©((@  ¾©cT@  Ã©Ð@  *  Ã©Þ‰@  4ªN@  ¥ª¬W@  °ª˜r@  ¶ªÀ@  *  ÿªØY@  «°@  «ò@  («ì&@  +«ò@  *  C«à~@  «E`@  «Iq@  «)x@  ¹«´‰@  *  ½«  @  Ã«`'@  Ã«s'@        Ì«‹@  Ï«ê@  *  ó«ø@  ó«þ@  	¬ñW@  ¬	w@  ¬±@  *  ¬ @      (  •«Dy¸¨ •«{è> •«{¨ "  í«=fh  ­[q8(«[qh  ¯”   
   •«Dy  &    PUKCAB ú  Îÿ  °ý  Íÿ     ý  êÿ  0ù&  Ã«`'¾©MÃ«`'¾©cTÃ«s'"¾©((  "   ÿ  ðú  éÿ  @þ  ñÿ  ý&  ê¨ s¾©MÃ«`'¾©cTê¨ sv©"  :   ¾ÿ  `ù  ½ÿ  0þ  ¼ÿ  @ý&  ê¨ sÃ©Ðê¨ sÃ©Ðê¨ sÃ©Ð  R   Ãÿ  þ  ±ÿ  àÿ  °ÿ   þ&  Ã«`'¾©cTê¨ s¾©MÃ«`'Ì«‹  j   ¯ÿ  Pû  ®ÿ  0ý  «ÿ  ü&  ê¨ sv©0"Ã«`'Ì«‹Ã«`'      Ì«‹)  ‚   ©ÿ  `ÿ  Îÿ     ú    <°ý    D  *.*w*  ê¨ sv©0"ê¨ s¾©M­[q<"­[qD
   •«{        
   •«{        
   ­[q  *    Å  C ÷	Úó5( 2 w   ÷5   \3, s  ²©ôv©òy >©/K*  & ( ó•"  ó5 2 8‚ ƒ ÷	´‡Ä  ÷    $½«  (ê¨ s*  L   w   ×-  ÿæfÅ  C ÷&   3
& …"  9©""4ªN(«ì&²©ô"•«{  *  r ƒ÷	  ×-  ÿó  & 7
  ÷   ÷	èÂ *  ›©£_(«ì&•«{  ì¨ ©Ðz(•«Dy *  ˜ ÷	°U‡÷	Ò P‡÷	  ÷  Ä  É÷   ÷  ÿªØYC«à~©  &ì¨      *  ¾   ÷	¶÷	z÷E   7
  7
 ÷5  2 $Å  *  ©Ðz>©/K¶ªÀ¶ªÀ "¬±2 (©ô*  ä C ÷	ü $‡÷	â Ä$ &  W¤: À
ûÀ
*  
—¤: ýW¢  R”Ñ‹À
øí ´ ÷&   ÷  &Ã©Þ‰$  0(  ‡ ÷U   Å  ÷	  w   ÄÍÿ÷  (  Ã©Þ‰ >©/K²©ô›©£_Ã«`'"Ã«`'*  P  w   B †Ä †S¤ùB Ä ¡ ‡ ± ‡ ÷	  9©""¾©cT*  v  ÷5    (÷	P W¤[ À
ûá‹B—¤] À
û  ¹«´‰
C«à~*  œ@¤, ýÃ  Ä  ÅW¥, ý÷5   C÷5  +«ò«ò C«à~*  Â   Dw †ÿ¡ ‡ À Àm  Áe
   ‡   C«à~ì¨      *  èó%°ý ± ‡ ÷	p †Â’ ÷	J †÷&   ÷(   •«Dy’ $¶ªÀ*   À ÐÁ  Â ”Â
ýêÀ 
÷	Dÿä‡÷	  ¶ªÀ °ª˜r*  4æ†à‡ Æe ± ‡ Æe ± ‡ ÷	  ó  óm    «°(ì¨*  Z Å  ÷	  ÷	  Â ÷	  ‡÷	8‡ ¡ ‡ ÷     ©ô«Iqó«øC©Õf(C«à~*  €À  3 0
 3
 À& ð   ó  ó  ¬ ¬	w*  ¦  ×-  ÿóU  óE  ÷	  Â ÷	  $  %©€* 
(«ì& «E`$•«Dy (ó«þ*  Ì÷	Ä  ×-  ÿ&f¦æ 
 Ý  4   
	¬ñW(«ì&*  ò S”À
ýƒ‚€×¬   ×¬   w 0þ"        ÷  À Á  ÷	  †÷	  w   Å(  C«à~¬  a©Ðt©Ø›©£_Ã«`'*  6  ÷	  ÷	  ‡ ÷	  ƒ ‚ Ä ÷	ž .‡Œ"  ©ôG©XÏ«ê¹«´‰ •«{ *  \ÌEÿøE`÷5    	÷5   Ê5 ÌU fW©  C«à~C«à~*  ‚; ÔU ÖÕ‹÷	: †…ÔU 	Ì5 ÔÖ*  ¨…ÔU TTÏ! Ô Ô¤ Ô§ 7  ‡ "  •«{ •«Dy¤ "•«Dy§ &•«{  *  Îå‹W£. ± ‡ W£; ¡ ‡ ôó5  2 óE 2 *  ô‡ ÃÃ
€ÀEÿ      ó± ‡ ÷	  ¡   &¥ª¬W*  ‡ ÷	  ÷	°ýÀ
W¤] üB`EW¥. ýÀ È5   ¹«´‰$•«{ *  @È5 1      f¦  È5—¨; ý¤¨*  f–% —¢; øÈ5 A×¤. ýÈ5 B©. *  ŒýÔ‹÷	Âü‚‡ÈU Àe 7   É± ‡ ÷	    •«{  (¹«´‰*  ²À Àm  Á  
Ä b$Ä
ûÄùdÄ
  
ì¨©|L*  ØýÁ  Ä b$Ä
ûˆ õ%  õZ 
  •«Dy    þõ‹c ¡ ‡ ± ‡        øM  	 NÀEÛ*  [q—`    NÀEÛ   ¯”L  D©b@  D©Åb@  *  G©]\@  G©…\@  J©$@  J©E$@  i©{@  *  i©Å{@  ¹©]\@  Ý©Ý@  («$@  («E$@  *  U«Ý@  «)x@      (  
­WTìJ ¯”   
   
­WT        («E$               D©Åb         G©…\ "   "     i©Å{ 
   
     J©E$           («$         D©b         G©]\           i©{ (   (     Ý©Ý           («$         D©b         G©]\           i©{ H   H     ¹©]\           («$         D©b         G©]\           i©{ 0   0     U«Ý           («$         D©b         G©]\           i©{               J©$       Ò M  	 NÀ…È*  [qXf    NÀ…È   ¯”L  ¼©w@  ç©p†@  *  ¥ª¬W@      (  ­[q82 Í«ßfh  ¯”   
   ­[q  *    ÷	  ‡&f€ÀEÿ  @
÷	  W¤, ÷U€     ç©p†¥ª¬W(¼©w  & À
ø¡ €‡        ðM  	 NÀÅÎ*  [qØh    NÀÅÎ   ¯”L  ê¨ s@  9©""@  *  C© q@  N©°@  µ©Þ‰@  ¾©@V@  7ª„:@  *  ”«T[@  «)x@  «™’@  ¹«´‰@  Ï«ê@  *  j¬ƒ}@      (  •«¹{¨  «6Ãh  ­[q8x   ™«°_h  ¯”   
   ­[q  *    ÷	  ÷	  ÷	  f÷	  ‡÷	  ( ÿÿ‡÷	  ï*  7ª„:
Ï«      ê”«T[j¬ƒ}C© q( &«™’*  & ‡ ÷	  CÅ Á Â  Æå
 ÷	   ‚ $  ¹«´‰•«¹{ µ©Þ‰ µ©Þ‰ N©°*  L Âå Æå
 U%÷	  ÄîÿÂ  ÷    ÷	  "  N©°•«¹{   ê¨ s"9©""(¾©@V
  r Æe ‡        FM  	 NÀ…È*  [q¨p    NÀ…È   ¯”L  o©HX@  —©(@  *  ª‰S@  «°@  “«@@  “«¶ @  •«ô+@  *  «Iq@  «)x@      (  ­[q8< ¢«@h    ¢«hh ¯”   
   ­[q  &    Å  Å  fÃ Á÷	  ‡÷	  Å  ÷	(  “«@“«¶ •«ô+ o©HX«°"•«ô+  "   ± ÷	  ÷	  †þ	  í…‡         ª‰S«Iq—©(       hM  	 PÀEÂ*  [qøp    PÀEÂ   ¯”L  ì¨@  ©ô@  *  ©Ðz@  %©€*@  C©Õf@  C© q@  J©œ@  *  n©Ý;@  y©N\@  —©(@  ¾©Ö@  ¾©ç@  *  ¯ªðy@  «Î@  «ç@  ”«T[@  ”«Ty@  *  ”«\}@  •«ô+@  «Iq@  «)x@  §«Bx@  *  ¹«´‰@  Í«6x@  Ï«ê@  â«çM@  ¬±@  *  [¬@@  [¬¶ @      (  ­[q8¢«Àh    ¢«èh ¯”   
   ­[q  $    Å  Å  fÅ  ÷	  ÀÁ ÷	  ÷	(  [¬@[¬¶ ©ôn©Ý;•«ô+  «Î&      ð  ðm   Å  ÷	  ÷	  ð  ðí(  Ï«      êì¨©ô«Iq—©( y©N\ *  B    ñ  ÷	  ‡÷	  6üÿ‡÷	 õ‡…÷	Ð    ì¨
%©€* ”«T[C© q6&  h ñÄ  Ãm  ÷	  \‡æ À Á Ã&  ì¨”«\}â«çM ©ô "•«ô+ *  Š  Î O†÷5 2 ÷	  ÷	÷	¼ 9÷	  ÷	.Â  â«çM ¬±2 «ç"«ç*  °  æ÷	  ƒ†Âw    —, @ Î †  C©Õf¯ªðy*  Ö ÷	¤ Ãe ùÖÂm  À Á  ‘À
ýÙ   ì¨â«çM*  ü ò" ò,  ÷	p Ãe Î †ðÖ÷	p ¡ ÷	*  "< æ Ãe ¯Ö÷	  …‡ ÷	   Ãm  D   â«çM ”«Ty¹«´‰$ì¨*  H      E …%ƒ ~  Å
ø‡ ÷	  C†Âüÿ÷	  ¹«´‰*  n  ÷	  †0Š ‡ ÷	  ÷	` ± ÷	Ôÿ‡ ÷	  Å  Í«6x
¾©Ö¹«´‰&¹«´‰*  ”  ñ& ñ( 1  ñí   ÷	  … ÷	‚ÿ‡ ÷	  •«ô+ì¨J©œ*  º  ÷	& ÷	  ÷5  2 ð   ÷	  ÷	  ‡ ÷	Øÿ(  ¹«´‰«Î¬±2 ©Ðz«Iq"—©(*  à†ü‡ ñ& ñ( ãÅ  ÷	  1  ‡ D& E  ©ô§«Bx  ( ÷	  ‡Å  ÷	  ‡   ¾©ç•«ô+J©œ       žM  	 NÀÇ*  [q.q    NÀÇ   ¯”L  ì¨@  ô¨@j@  *  ©ô@  ©Ðz@  C©Õf@  o©HX@  s©@  *  —©(@  µ©Þ‰@  ª‰S      @  6ªÚ}@  ¯ªðy@  *  «°@  «Î@  «Ï@  «Iq@  «)x@  *  Í«6x@  ò«y@  ¬±@      (  ­[q8\  C© qh4 ”«T[h  ¯”   
   ­[q  &    ÷	  ‡÷	  ÷	  Å  ÷	  Âm  ° ÷5  &  o©HX«Ï«Î©ôª‰Sì¨*  " 2 ð   ÷	  ¡ ‡ w&   w(  Å  ÷	¼ *  ¬±2 
©Ðz«Iqµ©Þ‰ µ©Þ‰ $©ô*  H †÷	²ÿ‡÷fÎ5 æ  Îe æ N÷5    ô¨@j ô¨@j *  n 2  ± & ± ( f& f( ÷	® /†„ 
  ¬±2 *  ” ü	  ö5  ñE & ñe & q( ÷	  N( v  "«Ï*  º &  ñ  & ñ       ( C÷	  ³  ÷	  ÷	  "  
µ©Þ‰µ©Þ‰ ª‰S$Í«6x(«°*  à N,( óv,&  ï±( ±& ÷	  öe  ‡ ÷	  ò«y*    ‡Â ÷	  †Âw   Â ÷	  ‡÷	     —©(C©Õf¯ªðy"C©Õf(s©*  ,ñýÿ& ñÿÿ( ± ‡ ·-  ‡	‚·-   ‡‚¡   µ©Þ‰ "µ©Þ‰  R‡ ÷	  ± ‡   6ªÚ}       À M  	 NÀ…È*  [q/q    NÀ…È   ¯”L  “«¶ @  ”«"@  *  «Iq@  «)x@      (  ­[q8 9©eh   J©œh  ¯”   
   ­[q      ÷	  ÷	  †÷	  ± ‡   «Iq
”«"“«¶        ˆM  	 NÀ…á*  [qgs    NÀ…á         ¯”L  ê¨ s@  ì¨@  *  ©ô@  ©Ðz@  C©Õf@  s©@  ¾©M@  *  ¯ªò@  «¸ƒ@  L«L	@  «Iq@  «)x@  *  â«çM@  ó«ø@      (  •«Dy¸ ­[q8œ   ”«Tyh‚ ”«\}h  ¯”   
   •«Dy       ú| Öÿ  °ý    ~  ÿ| Öÿ&  ­[q| 
¾©Mê¨ s­[q~ ­[q|          ¾©M ­[q  *    Å  @ æ÷	  ð   ó óe  ÷	  Â  "  ©ô«¸ƒ©Ðz$«Iq(•«Dy  *  & ÷	  (‡÷	  †ÂÂ ÷	  ‡÷	  Â "  ó«øC©ÕfC©Õf"s©(•«Dy *  L Ã w   À Àm  "óÂ Â
ý€0`  ©ô       
¯ªòì¨*  r  ƒ¡ ‡ ƒ± ‡ Ä@ Ã  ÷	rÿ†ÛÀ ÷	  â«çM&©ô   ˜   ‡   L«L	       ž M  	 NÀEÂ*  [q’s    NÀEÂ   ¯”L  ì¨@  9©€K@  "      (  ­[q8 §«Bxh  ¯”   
   ­[q      Âœ ÷	  Âm  ° ‡   
9©€Kì¨       ÈM  	 NÀEÛ*  [q³s    NÀEÛ   ¯”L  ©ô@  ©Ðz@  *  C©Õf@  ¯ªðy@  «Î@  «ç@  ”«"@  *  ”«Ty@  ”«\}@  •«ô+@  «Iq@  «)x@  *  «™’@  §«Bx@  Í«6x@  Ï«ê@  â«çM@  *  ò«y@  ¬±@  ¬ƒd@  j¬ƒ}@      (    ­[q8Ä §«³s      h  ¯”   
   ­[q       Ä Ã  ÷	  Z‡Á À Ã æ&  
â«çM”«\}•«ô+ ©ô â«çM $    Î G†÷	  æ÷	  ÷	  ÷	  Å  ÷5  (  â«çM «ç§«Bx«ÎÏ«ê©ô*  < 2 ð   ÷	  ÷	  ƒñ& ñ( Å  ÷	  	†(  ¬±2 
©Ðz«Iqj¬ƒ}"©ô&”«"*  b Âÿÿ1  C÷	  Â ÷	  ‡÷5  2   Í«6xC©Õf&¬±2 *  ˆ  r,&  r,(  w   ÷	  ÷	  ƒÃe   ¯ªðyò«y"«™’  ® ·Ö÷	  ÷5  ÷	  ‡   
j¬ƒ}¬ƒd ”«Ty       NM  	 OÀÅÎ*  [qt    OÀÅÎ   ¯”L  ì¨@        ©ô@  *  ©Ðz@  %©€*@  C©Õf@  n©Ý;@  —©(@  *  ¾©ç@  ¯ªðy@  «°@  «ç@  ”«"@  *  •«ô+@  «Iq@  «)x@  «™’@  §«Bx@  *  §«\}@  ¹«´‰@  ò«y@  ¬±@  j¬ƒ}@  "      (  ­[q8&•«§yh  ¯”   
   ­[q      æ Å  ÷	  ÀÁ Ã Ãí&  §«\} 
©ôn©Ý;•«ô+ %©€* *     ð Ã Î †÷	4 ‡æ÷	<  ƒÃe óÃ  ì¨§«\} *  >  Î †÷	 †æ÷	  ƒÃe óÖ‡ ÷	  Ä  §«\} &«ç*  d Åã÷	  ‡ ÷	 ‡÷	˜ Îe ‡ ÷	  ÷	  3Š   
¾©ç ¹«´‰$§«Bx*  Š ÷5  2 +Å        C 
÷	  ó   ÷	  ÷	  ö‡(  ¬±2 ©ô«°©Ðz"«Iq&—©(*  ° ‚ ÷	  †Âw   ìÂ ¶,  æ‡‚¶,   
C©Õf¯ªðy*  Ö 
 á‡‚¡ ± ÛÄe E0& p( Å  ÷	  &©ô*  ü   ÷	  †ƒ ó•ÿÿ ‡ 1& q( ÷	  ÷	  ÷	  «Iq”«""ò«y&«™’  "  ‡   j¬ƒ}       ¶ M  	 NÀEÂ*  [qt    NÀEÂ   ¯”L  â«çM@      (    ­[q8( ¾©çh  ¯”   
   ­[q  *    ¦Â ·  	†
!r! Âe ô¡ ± ‚  â«çM â«çM   & ‡        Z M  	 NÀEÂ*  [q,t    NÀEÂ   ¯”L            (  •«‘{¨   â«çMh  ¯”          .M  	 NÀEÂ*  [qz    NÀEÂ   ¯”L  •«ô+@  §«\}@  *  Æ«ˆ@  Í«R@  Í«<R@  â«çM@      (    ­[q8P Å«[qh  ¯”   
   ­[q  *    Ä³ÿÃ  ÷	 Ä²ÿÃ  ÷	
 Ã ÷	  ‡ À
  
§«\}â«çM•«ô+ "Í«<R*  & ÁÁe s  †ñ‹ ‚
Áe öÂ
÷	  ÷	  &Æ«ˆ  L   ‡   Í«R       ª M  	 NÀEÂ*  [qw~    NÀEÂ   ¯”L  ì¨@  •«ô+@  "      (  ­[q8 ò«yh  ¯”   
   ­[q  "    Å  1  qa 1  qá Å  ‡   ì¨•«ô+             – M  	 NÀEÂ*  [qC    NÀEÂ   ¯”L  C©¤’@  •«ô+@  "      (  ­[q8
 j¬ƒ}h  ¯”   
   ­[q      Å  ÷	  ‡   •«ô+
C©¤’       ØM  	 NÀ…È*  Åq€M    NÀ…È   ¯”L  %©€*@  «¯@  *  «&@  «•@  «\g@  «)x@  ¬¯@  *  ¬¯@      (  û¬ d¸N­¿d¨ û¬ù_8¢   ˜«0!h  ¯”   
   û¬ d            TI:   ¬¯
¬¯  *   		RMS-11 RESTORE UTILITY
		----------*  2 ------------
FUNCTION: RESTORE BACKUP*  X  FILES
FORMAT:   RST OUTFILE[/OPTIONS*  ~       ]=INFILE[/OPTIONS][,INFILE[/OPTIONS]..*  ¤ ]

GLOBAL OPTIONS: 
 ? OR HELP	TYPE *  Ê HELP MESSAGES
 ID		IDENTIFY CURRENT V*  ð ERSION NUMBER
 QU		ENABLE QUERY MODE
*   SL:FILESPEC	PROVIDE SUMMARY LISTING *  <FILE

OUTFILE OPTIONS:
 SU		SUPERSED*  bE EXISTING FILE
INFILE OPTIONS:
 BD:D*  ˆD-MMM-YY	RESTORE FILES BASED ON DATE O*  ®F BACKUP
 OA:[N,M]	SELECT FILES BASED*  Ô ON ORIGINAL ACCOUNT
 SE:FILESPEC	SEL*  úECT SPECIFIED FILE(S) FOR RESTORATION
*    SE:(FILSPEC,..) FROM BACKU      P CONTAINE  FR FILE

   ­¿d        %©€* û¬ù_  *    Å  C 3
( 3Š, ó * ó• - ó  ó    û¬ d  û¬ d (%©€**  &  ó• 3 3
 ÷	  ×,  ‡ Å C ó•    «• û¬ d *  L  ó•  ó   ó  ÷	  ×,  ‡ À   ­¿d  «&(û¬ d *  r Áf÷	 ÀrÁÜ ÷	 Å  C ÷	  ‡ 3   û¬ drû¬ d  "«¯  ˜ s ÷	  ‡   
«\g       |M  	 OÀ…È*  «šw    OÀ…È   ¯”L  «ìyH$ ¹«WŒ@  *      (  ›r*}¸ «âyh  «šw8& «šwh  
  ¯”   
   ›r*}  *    @ÿùÿÐþ      úÿÀþ»ÿ@þñÿ þÚÿàýúÿÀýÿÿ ýºÿ`ýèÿ@ý*  & Ãÿ ýêÿýºÿ ýùÿðüçÿÐü¹ÿ@üùÿ0üùÿ°ûùÿ ûùÿ*  L `û•ÿ0ûöÿðúéÿÐú÷ÿÀú÷ÿ úÃÿpúùÿ`ú¸ÿ@ú·ÿ ú"  r ùÿðù¸ÿàùÒÿ`ùºÿ0ùºÿùïÿ þùÿþ±ÿ
   «šw  *    w	  Ã  Ä$  ÀÓÄ
!  ÷± ‡ ¡ ‡   ¹«WŒ
›r*}         |M  	 NÀEÛ*  ôx@    NÀEÛ   ¯”L  s© d@  ¹«´‰@  *  ¬š@  ¬®@  ¬ƒd@      (  Zg¤#¸ *  X:†¨ 9©""h  å«ˆrh Zg©#8º Æ«ˆh  
  ¯”   
   Zg¤#      =©€p
   X:†          
   Zg©#  "    ÷	  Á  Ñ  Ñ ÑÑ 

Ñ&  ¹«´‰
¬šZg      ¤#  Zg¤# ¬ƒd *     Ñ ÃÂ9ÀE…`Åe W!  0‚”Â
ý  ¬ƒd¬ƒd  ¬š¬®
*  D Ñ•% ï@Á5 
÷	" À ÷	 Ñ Áå  w  ¬š &¬š*  j  À  Á† ÷	  ‡ Àå  ÀU €‡ ÷5 
 ö(  ¬š ¬š† s© d¬š$¬š
 *      ö  ‡ ÷Ñÿ Á Ñ%*Ñ•% ÷ *  X:†  X:† ¬š ¬š (X:†   ¶   È
  X:†         Ö M  	 NÀEÂ*  ôx"    NÀEÂ   ¯”L  9©""@  Éªd@  *  Æ«ˆ@      (  ­¿d¨ û¬ù_8 Æ«Úh  
  ¯”   
   ­¿d  
          
   û¬      ù_      Ã  ÷    
w     ­¿d  
Éªd9©""Æ«ˆ       DM  	 NÀ…È*  ôx (    NÀ…È   ¯”L  9©""@  Éªd@  *  Æ«ˆ@      (  ­¿d¨ û¬ù_8< Æ«h  
  ¯”   
   ­¿d       
       %*        
  û¬ù_  *    7 w 7 Â&   
€Ü ÀÀ 7 "  ­¿d 
­¿d ­¿d (­¿d   & w Ã  Ääÿ÷    w   $  ­¿d 
­¿d  Éªd9©""Æ«ˆ       È M  	 NÀEÂ*  ôx }    NÀEÂ   ¯”L  Æ«ˆ@      (  "  ­¿d¨ û¬ù_8 Æ«$h  ¯”   
   ­¿d            SO      ME  
   û¬ù_      Ã  Ó Ë ã÷	  ‡   ­¿d  ­¿d Æ«ˆ      F
M  	 NÀ¨Ä*  CyÌ    NÀ¨Ä   ¯”L  ³ÖK@  ³Ðf@  *  Ìü@  Ìª%@  ÌÖK@  ÌÐf@  Ìªp@  *  ÌCy@  ¤ÖK@  ¤Ðf@  È¥@  ÈR@  *  Þ@  	# }@  #t@  #0M@  ª%  @  *  E, K@  ,0Ïƒ@  Ô2 d@  RÀ+@  \g%@  *  ·k  @  mày@  CyÖK@  CyR@  CyÐf@  *  CyBx@  EyÀ@  Ey®@  G©P}@  µª X@  *  «¯@  «&@  «•@  «{@  «)x@  *  Ž±J…@  Ž±P…@  “±†}@  “±”@      (  *  CyÌ(¾t:hÈ «„h      :¯ˆwhR ‘È}h’*  „Àvh … h( ÎÞhÞÌhZf@h²*  ""ÌhÚ""Þh¾""zh¾""VNh°""«„hP*  ô&khäö&@;h–ð3³hJ ð3Ìh  ð3¤hŠ*  ð3CyhÒá8àhäy: }hôy:x}h¨ ®S@h,*  ®Skhö®Sö&h€¶T dhÌÛYàQhÚ æY@h.*  E`€Whø ÓføMh8 ÓfàQhŽ Óf shxÓfCyhâ *  ãfxdh¨Rq  hîþv (hœw®Sh¢ø€Ìh  ø€ö&hz«„Ìhh¯”   
   CyÌ      SY:    *                   À  ð ‡ Îe ‡ ÷5  Ìªp*  *    ‡ Îe ‡ Á  Â  ÷	  Îe ‡ ÀÕÿw   Ìü³Ðf³ÖKE,       K*  P   fæ  æ …÷	  Æe …fæ  æ …÷	  Ô2 d
Ìªp«{ Ìª%*  v   Æe …À  0
 ÷E   ‡ Á  Â  ÷	  Îe&  «¯ÌªpÌüÌÐf"ÌÖK&E, K*  œ  ‡ ÀÔÿw   Á  À  ŠÀ
ý÷  Pÿ÷  Lÿ(  Ô2 dÌCyEy® ÌCy&ÌCyEy®
*  Â 7
Nÿ‡ ÀX ð5 2 Îe ‡ 7
 w ° Á  Â  màyX Ìªp &ÈR*  è   ÷	  ÷	¶ÿÎe ‡ ÷E   Á  1Š, Â  Àþþ   È¥E, KÌüª%  $Ìª%*  Àå  2, fæ  æ …÷	  Æe …À  ,   ÌCyÌª%«•$Ìª%*  4 Àãÿ÷	  Á  Â ÷	  Á  Â  ŠÂ
ý(        RÀ+#t#0M ·k  #t"#0M*  ZÎe ‡ fæ  æ …÷	  Æe …‡ Á  Â    Ìªp«&$¤Ðf(¤ÖK*  €÷	  Îe ‡ ÀÓÿw   ÷E   Á  Â  ŠÂ
ý   E, KÔ2 dÌü#t"#0M*  ¦‡ ÀX ð5 2 ÷5   Á  Â  ÷	  ÷	( "  màyX ÌüCyÐf CyÖK$E, K*  ÌÎe ‡ Àþÿw   À÷ÿ÷	  ‡ Àÿÿ÷	  ‡ Îe   Ô2 dRÀ+"Ô2 d&  ò‡ Á  À  ŠÀ
ýÀ  ð  ( ÷  úý÷   EyÀEy®ª%  EyÀ EyÀ*    öý7
øý‡ ÷  ìý÷  èý‡ À‡ ÂÖý`·   EyÀEy®
“±”“±†}*  :ÒýƒÀûÿ÷	  w   Â¾ýR”À
      ý·´ý‡ ÷²ý¨ý  RÀ+	# }*  `À¬ýÀe 7   7
˜ý÷	  †!wŠýÀ ÷	  “±”G©P}& *  †  ñ5   w    ÷ pýÀlýÁfý÷	  µª X,0Ïƒ,0ÏƒÞ*  ¬~ÿ‡ Àÿÿ÷	  Îe ‡ Àôÿ÷	  Îe ‡ ÷	L ×-  RÀ+RÀ+*  Ò>ý	 ÷	Ì ÷	 0ýß×-  	 ÷	¸ ÷	 ýÀ  “±†}*  ø  Á  ÷	*ÿ‡ ×-   Àõÿ÷	  ÷   íÁ   “±†}“±”“±†}RÀ+$“±†}*    À ÷	ÿ7
  ‡ ÷ àüÎe ‡ ÷  ×-      Þ"Ž±P…(Ž±J…*  Dÿ Îe ‡ ‡ ×-Àü ‡ Àóÿ÷	  Îe ‡ Á   RÀ+*  j¤üÀ  @à€
÷	´þ‡ ÷	†ÿ÷        ÷  Îe   “±”Ž±P…"Ž±J…*  ‡ ÷	`ÿÂ  ÀnüÀå  2, ‡ Àöÿ÷	  ‡ Á    ª%  EyÀ"RÀ+(CyR  ¶Â  w     CyBx
\g%       ¬ M  	 NÀEÂ*  CyR    NÀEÂ   ¯”L  ÛXH@  e©Àv@  *  0²#	@      (  CyR( ãfCyh  ¯”   
   CyR      Á Â  Å  ÷	  ‡   
ÛXHe©Àv0²#	       È M  	 NÀEÂ*  òyÐ    NÀEÂ   ¯”L  Æ«ˆ@      (  "  ­¿d¨ û¬ù_8" Ì«2qh  ¯”   
   ­¿d  
          
   û¬ù_  &    Â Á Ã  W H ÁH S‹ã÷	  ‡   ­¿d  "Æ«ˆ             ÈM  	 PÀÕ*  lzœ    PÀÕ   ¯”L  {p!H     (  *  Ï« }¸¾–«¦dh¶¹« Kh4¹« dh^º« h¨ *  º«ÀDhBº« Khˆº« dh* º«€ph »« hš *  »«À]h½« hÒ ¾«À]hî ¾«€ph¤¾«@ƒh *  À« dhŒ Á« hà Ã«€ph–Ã«@œhü Å«@hl*  Ç«@h¶ Ç« dh
Ç«€‰hzÈ«€phPÉ«@ƒh  *  Ê«@hb Ê«ÀhT Ê« hÄ Ê«€%h&Ê«Àh8 *  Ë«@hF Ë« Kh~ Ë«@ƒhp Ì«œh  Ì«t!h²
  ¯”   
   Ï« }  *                 €         Ä   @         *  & Ä            Ä      +            *  L                                     *  r           €         €            *  ˜     € '½    €ƒ   €/½    €ƒ   *   
  ½½*  ¾         )½    €ƒ   (½    €ƒ @  
  ½½*  ä        @      ²        !           ²*  
    %            ,         #´    &´*  0      $¸        "          @ &   ¸*  V      @          !                *  |           @.        @    -          ¢                #  $            –M  	 NÀÕ*  Ò…Bz    NÀÕ   ¯”L  ©èvH       ©8wH  *  © xH ©ðxH ©XzH Ï«®H     (  *  ¬º‰¨ˆ ©Àvh0 ©ˆwhˆ ©yh. F©Üh *  e©ö&h
 –©éh ™©`'h š©h 6ªh *  ‘ªh « }h «È}h Ì«òh Ì«Vh *  Ì«ÖKh  Î«/	h& Î«0	h( Î«1	h* Î«@yh "  Ï«lh Ï«ìXh" a¬ Kh ¯”   
   ¬º‰  *                                            &         0   0        r M  	 NÀ…È*  l†      NÀ…È   ¯”L      (  ¬ K¸  *  s©"gh s©%gh ¬Ö}h ¬Mh  ¯”          (
M  	 PÀ¼*  l†¸    PÀ¼   ¯”L        ©y@  ©Xz@  *  D©½`@  F©Ü@  e©ö&@  –©é@  ™©`'@  *  š©@  š©g@  6ª@  Þª¸e@  « }@  *  «È}@  A«Ð@  C«®F@  C«þ~@  C«ÿ~@  *  D«a	@  S«P<@  ¹« d@  ¹«€Š@  Å«@@  *  Ì«ò@  Ì«ÖK@  Î«@y@  Ï«®@  Ï«l@  *  Ñ«  @  Ñ« K@  ¬Ö}@  a¬ K@  “±†}@  *  “±”@      (  R«{è Zg©#8v?©Àhœ*  C©î!h  C©""h† C©ÔZh°D©È`hèE©h  *  ¾©@Qhpªn8h 6ªp;h6ªçeh6ªHfhÔ *  6ªü}hö Þªh|Þª (hž-«®}hL•«Byht *  •«Gyhl ¹«Œhb ù« dh|¬°"h¬h8*  ¬@hf      _¬€phe¬@Qhf¬@Qhòl¬Àžhü  n¬"h¯”   
   R«{              
   Zg©#      7
  7
  ÷   ÷    ÷  &  a¬ K
e©ö&6ªD«a	« }« }     ÷å    ÷  &  –©éA«Ð
–©éA«ÐC«®F 
  $   7
  À  Á  
À
ý÷&  «È}A«ÐC«®F Ï«®Ï«l  :    ÷    7
 À&  Ñ«  R«{ 
Ñ« KR«{  R«{ *  J   Àe 7  7  7
  ÷	 ‡ ÷  7  ‡ ÷ÿÿ&  ¬Ö}C«þ~C«ÿ~™©`'Ì«ÖK"Ì«ò&  p   7
  Ã  Ä  ÷	  ‡ ×-   1‡ Ã&  ™©`'
™©`'Ì«ÖKÌ«ò¹«€Š      ™©`'*  ’   Ä  ÷E   ‡ À  ð5  	÷  ÷øÿ  &  Ì«ÖKÌ«òC«þ~¬Ö} ™©`'(š©*  ¸ 7
  ð5  ÷  ÷  ÷U   ÷E   Ì«ÖK™©`'™©`'$F©Ü*  Þ   ‡ ÷U   ÷   Îe ‡ ÷Eû  ÷E   ‡    F©ÜF©Ü™©`' e©ö&&a¬ K*  7
  7
  ‡ Á  ·  À  à÷5   ÷5€(  š©
F©ÜR«{  Î«@yÌ«ò"F©Ü*  *  ‘	÷	  ‡ ÷5   ,÷5   À  ÀEÿü   F©ÜÞª¸ee©ö&F©Ü$a¬ K*  P  ·  ÷	h Á Ø÷5   è·  ÷	  Î«@yR«{ e©ö&&Î«@y*  vP ÷	Z ·  À  Â  ÷	  ‡ ÷þÿ        7
  Îe &  Î«@y“±”“±†}Þª¸e š©$Ì«ÖK"  œ‡ À  7  7  7à  àÀ  Àå  7 &  Ì«ò“±”“±†}“±†}« }A«Ð*  º  í÷5   é‡ À Á €Â  À Á @Â&  –©ée©ö&R«{ R«{  "R«{ *  à w0  wP  ÷	  ‡ À€ ÷	" ºÀ@ ÷	 »  R«{ e©ö&e©ö&Þª¸e*  À À ÷	 ‡ À  ò÷5   Ö÷óÿ    F©Ü(š©*  ,w Á  ÷5   ñ5  ñ5   ÷×ÿ    
¬Ö}F©Ü(š©*  R€€€€€Á ñ5  ÷Øÿ  Öw Ê   "š©*  xÁÁÁ7P  ÷5 €  wP  À  pP  ‡ ·         a¬ KF©Ü–©é ©y$©Xz(  ž  ÷U   ÷	  Á  À  Á5 
@ ÷  &  Î«@y
F©ÜD©½`« }«È}&C«®F&  Â  @ †Â  à”Â
ýw  ÷å    @ ƒw (  S«P<A«ÐC«®F
S«P<A«ÐS«P<   ä  ‡ À  ð­   ‡÷=    ÷=  &  š©g
¬Ö}6ªÅ«@C«þ~¹« d*     ÷5à  w \ÿ·  ÷	ˆÿ‡ ·
  À  ð­  &  C«þ~a¬ KÎ«@y 6ª$¬Ö}(6ª*  & ‚‡ ð5   ÷ýÿ  ÷õÿ  7
  Îe ‡   š©š©"Ì«ÖK*  LÀ  ð5  ÷5€   ÷5@   ÷	hý‡ ÷Ðÿ  ¬Ö}a¬ Ka¬ K  r  æ  š©             ŒM  	 NÀÅÎ*  l†Ä    NÀÅÎ   ¯”L  F©Ü@  –©é@  *  « }@  «È}@  A«Ð@  C«®F@      (  "  Zg¤#¸ Zg©#8J D©½`h  ¯”   
   Zg¤#        €  @  ` €        
   Zg©#      Â  Âå  ÷5   ·   ‡ ·
  « }
A«ÐF©Ü–©é"     À  72    Àe   õÀ]*  A«ÐC«®F Zg¤#  F©ÜZg¤#   8   Á  !w  ·  ‡   –©é«È}«È}–©é       "M  	 NÀPÀ*  l†ô    NÀPÀ   ¯”L  9©´}@  Þªà8@  *  Þª¸e@  Î«/	@  Î«0	@  Î«@y@  ‰¬N@  *      (  Zg©#      8. ¹«4Šh( 1¬´Kh  ¯”   
   Zg©#       ·  ÷	  À  Á  ÷	  †w   À&  Î«@y
Þªà8Î«0	Î«/	9©´}‰¬N     Â ÷	  ‡ 7  ‡   Î«/	Þª¸eÎ«0	       ú M  	 NÀ…È*  l†@    NÀ…È   ¯”L  š©@  Ì«ò@  *  Ì«ÖK@  “±†}@  “±”@      (  Zg©#8"   ¹«€Šh  Ñ«¸Zh ¯”   
   Zg©#      ÷    ÷    ‡ ÷  ÷  7&  “±”Ì«ò“±†}Ì«ÖKš©Ì«ÖK     Îe ‡   Ì«ò       (M  	 NÀ}À*  l†O	    NÀ}À   ¯”L  {p!@  ©Àv@  *  ©èv@  ©8w@  © x@  ©ðx      @  ©y@  *  ©Xz@  D©½`@  F©Ü@  e©ö&@  –©é@  *  š©@  ‘ª@  Þªà8@  Þªó8@  Þª¸e@  *  C«þ~@  –«¦d@  ¹«€Š@  Ç« d@  Ì«œ@  *  Ì«ò@  Ì«V@  Ì«t!@  Ì«ÖK@  Î«/	@  *  Î«0	@  Î«1	@  Î«@y@  Ï«l@  Ï«ìX@  *  Ñ«  @  Ñ« K@  ¬Ö}@  Ž±J…@  Ž±P…@  *  “±†}@  “±”@      (  Zg¤#¸ Zg©#8D*  œw,hôœwÎhfœw{QhÜ©†hj©Šhp*  © h„D© xhÜD©]zhœf©pqhšš©?9hN*  š©3:h¬ š©;h4š©ÀSh–š©ôqhVš©bshd*  š©Øxh’¿©  hÆê©  hŽ4ªšwhÔ 4ªÈyhŒ*  6ªýh†6ª€      hn‘ª  h^‘ª
zh’ÞªXh*  Þª€h>ÞªÐhàÞª¯8hÞª°8h8Þª(yhh*  («  hü(«[zh(«\zh
/«  h€R«®ShV*  R«+dhH–«  h £«Àhºº«ðFhLº«@`hR*  ½«˜hú½«³hF½«t!h0½«€%hè½«#XhR*  ½« }hÈ½«È}h¾½«Ðhª½«€hÂ½«˜€h´*  Ì«è]h¦Î«Xzh¬Ñ«Àvhr¬&ŠhX1¬Nh    g¬  hœ¯”   
   Zg¤#       
   Zg©#  *    À  Á  ÷5   Áe Áe ð  1<    Ì«V
¬Ö}F©Ü*  & B	<  >÷5€   	ð5  6Â  Á  7<  F©Ü Ï«ìX$Ï«l*  L 
   07<  ,Â  Á  7L
         \  
\ <"  Ï«lÏ«l Ï«lÏ«ìXC«þ~*  r   	< ð‹ ÷5€   7L    7\      F©Ü C«þ~(C«þ~*  ˜ ÷5   ·  ÷	  ‡ ÷	P ÷úÿ  ÷5€      
F©ÜÎ«@yÞªà8"š©(F©Ü*  ¾ ÷   ÷   Îe ‡ ÷	( ÷5€   À   
Ì«ÖKÌ«ÖK"F©Ü"  ä À ÷    7à  ÷    7`  çÀ&  “±”Ì«òÌ«ò“±†}Ì«ÖKÌ«ÖK*    ð5  ð5   ÷5   ÷üÿ  ¬Ö}"F©Ü   (  ÷¿ÿ  ‡ ÷÷ÿ  ÷    ÷  &  š©š©š©“±”Ì«ò“±†}*  D  Ã7  ½÷öÿ  ò÷  ÷ùÿ  7
  ö      &  Ì«ÖK
Ì«òš©š© š©&Î«/	*  jÄ
ƒ
‡ ×-   Ä
ƒ
Îe ‡ ‡ ÷   ‡ ÷	$   Î«/	"Î«/	*  â÷	 ÷Àÿ  ÷5€   „‰÷U €  ÷    ‡ ÷   š©F©Üe©ö&"Ì«ò$Î«/	  ¶  ÷    ‡ ÷U   ÷    ÷e&  Î«/	
Î«/	Ì«òF©Ü©yÎ«0	  Ð    ÷    ÷E   ÷	Ôÿ$÷&  
 © x
Î«0	
Ì«òÎ«/	F©Ü  ê    ÷e    ÷  &  ©yÎ«0	

 © x
Î«0	Ì«ò(  ø  ÷U    À  7   ÷Åÿ  7
  Îe ‡ ð&  Î«/	
F©Ü©yÎ«0	š©Ì«ÖK      ðEû  0  0
  ‡ À  0&  F©Ü©8w      ©8w©èv©Xz©y(  6  0ì    ÷e    ‡ ÷E    ÷	jÿ‡ ÷	Úÿ÷À&  ©ðx©èv
©ðx© x©yF©Ü(  Z  ·  Àe ” ÷	  ‡ ÷E€  7
  7
  7
&  Ì«VÎ«@yÞª¸eF©Ü Ì«V$Î«/	  ~  ÷	  ‡ 7
  7
 ÷E   ÷  (  Î«0	¹«€Š‘ªÏ«l Ï«l©Àv*  ˜  ‡ ·  Á  ñ À  1<  
7<  "  ©y
Î«@y¬Ö}Ì«œ&Ï«l *  ¾&f÷	šÿ€Àe     í÷U   ÷	  ÷E      {p!Ì«t!F©Ü"D©½`(F©Ü  ä×-    -À  7\    7\  &  ©y©Àv©Àv©8wF©Ü©Xz*  ú  &     ÷5         ¦&¤: Â
ûÀ     –©é
©ðx©èvF©Ü(Ñ«  "   Â  ÷	  €‚÷	  ÷	  €7L    Àe&  Ñ« K
Þª¸eÞª¸eD©½`©8wF©Ü*  >  7   Õ‡ ÷  w þw â÷  w ØÎe   © x©yŽ±P…Î«/	*  d‡ ÷ à  7
  ‡ ÷   ÷ðÿ  ‡ ÷ð   ÷ÿ   
Ž±J…Î«0	Î«1	Î«/	$Î«1	*  Š  ‡ ÷   ÷ÿð  ‡ ÷ ð  ÷ÿ  ‡ À  ÀU&  Î«/	Î«1	Î«/	Î«1	 Î«/	&Î«/	*  °îîÀ  ÀUÝÝ	À  ÀU»»À  ÀUww@
7P    
Î«/	Î«/	Î«/	(Î«0	  Ö7@  ‡ ÷  ÷M    ÷]    7
&  Î«1	Î«/	Î«0	Ž±J…Î«1	Ž±J…*        ð  ‡ ÷]    ‡ ÷  ÷U   ‡ À Á ×-   Î«0	
Î«1	Ž±J…‘ªÎ«0	*     ÷  ÷—ÿ  À Á w0  ×-     “±†}‘ªš©"F©Ü(“±†}*  < 7P  ‡ Îe ‡ À À 70  õ‡ ·    
Î«0	 F©Ü(Î«@y(  b·
  ‡ ·  ÷%   ÷–ÿ  åÀ  ÷	  À&  ‘ªÎ«@yÎ«0	š© Ç« d$Þªó8&  †  Â ÷	  ‡ ÷    ‡ À  ÷  ÷&  Î«0	Þª¸e“±”Î«/	–«¦d Ž±P…*  ¨  À  ·  &÷	 €Â ÷	  ‡ ·  ÷	  &  Ž±J…
Ž±J…Î«@yÞª¸e$Î«@y(Þªà8*  ÎÀ  Â ÷	  ‡ w vü·  ÷	  À  Â ÷	  &        Î«/	Þª¸eÎ«@yÞªà8 Ž±J…(Þª¸e*  ôÀ  Â ÷	  ‡ Â Â ·  ¦÷	  ‚·  Ž±P…Þª¸eÎ«@y$Þªà8*    ÷  Ý—  ÷‹ ×À  ÷	  ‡ Â çÂ"  Î«@yŽ±P…Ž±J… Ž±J…Þª¸e  @ ê       ² M  	 NÀ…È*  l†«    NÀ…È   ¯”L  ©À@  =©€p@  "  
¬¸@      (  ¬ K¸ ¯”   
   ¬ K      BCK          =©€p  ©ÀD    
¬¸
=©€p©À       ~M  	 OÀ¼*  l†¤    OÀ¼   ¯”L  «¯@  «&@  *  «•@  «{@  «@  «œ,@  «E`@  *  «\g@  «)x@      (        ¬¤8H ¬„Kh *  ¬†Kh$ ¬ŠKh  ¬£Kh* ¬³Kh ¬,Lh   ¬hMh ¬”Mh ¯”   
   ¬¤  *    ÷	  ÷	  ÷	  ÷	  ÷	  ÷	  ÷	&  «•«E`««¯«\g$«œ,&  &   ÷	   
E õ%  @ ± ‡ ¡ ‡   «&
«{      &M  	 TÀ(Ñ*  l†ì    TÀ(Ñ   ¯”L  ,0q…@  ,0……@  *  9©""@  E© @  s© d@  š©@  Û©RH@ *  6ªp;@  6ªVd@  6ª\d@  µª X@  A«Ð@  *  A«ZqH€ —«ç@  —«è@  «)x@  «6x@  *  Æ«ˆ@  Ë«Ú}@  Ì«ò@  Ì«ÖK@  Ñ« KH *  å«ˆr@  ¬ìQH ¬ƒd      @  ¬Ö}@  ¬ÚKH *  ¬ÏL@  ¬M@  0²#	@      (  Zg¤#¸, *  Ñ«  h  X:†¨>Î :h   «˜rh8ô«Þh2*  ¬|—h<¬Nh0F©Ü8˜U(Uh  '.ihø   áy sh F©Ü(    
   Zg¤#      SY:     *     TI    TI  üÿÈÿþÿÉÿýÿÛÿûÿôÿÿÿÇÿ    *   
   X:†  *       X P                            
   
X   &    d   *   *   X     
  X  X   X P           h   h                       b 
  b          ~   ~ ¨ Ò Ë        ¨ Ò Ë  ¨ *  ¨                                   "   SY:CMI  Î .CMDCMIM   ò   ò     ü   ü ÿ      
   >  6ªVd
6ª\d 0  0     6  6
   >  
   F©Ü  *    ÷	h·0æ æ  æiÿˆ÷	÷ <÷Õ ó    
X:†0Ë«Ú}"X:†<(X:†ó *  & À  ð ô ð6ö ÷	  †÷ <÷U@ <Q(  X:†  X:†6—«çX:†<$X:†<*  L ú ø #Å`Í• ÷	  Á Â  Å  ÷	  †  6ªp;¬ÏL"E© &0²#	$  r ÷ <÷U€ <÷	  À  ÁZ÷	  æ(  X:†<X:†<«6x¬ƒdZ s© d*  ’ <æÿˆ¿÷  
ÄÛÿÃ  ×"P ƒËP Ã        X:†<š©Ì«ÖK*  ¸   Ä  Â  ÂbÀ  ø lú  ƒKËí  ÷ê &  Ì«ÖKš©Ì«òX:†  $Ì«ò(ê $  Þ   ÷ø   ÷	  —Àò 
À%öÿ
Æ0æ(  9©""ø 
å«ˆrÆ«ˆX:†ò  X:†0*  þ <æÿˆæ3ÿˆ&À  ÷	  €Á  DÛ   X:†<X:†  —«è Zg¤# (  $ÑúÀ ÷	  ÷	  w  2wœ  *  Zg¤# µª Xµª X ,0q…"X:†2&,0……*  H4‡ ÄÆÿ
÷ø   ÃÄòÿ÷ <÷U <ò÷	$  X:†4ø 9©""X:†<$X:†<   n  7
 À  Àe  7  7 À  Á*  6ªp;¬ƒd ¬Ö}A«ÐA«Ð ¬M        Š8Â ”Â
ý‡ 
  X:†8       ² M  	 NÀÅÎ*  l†{    NÀÅÎ   ¯”L  =©€p@  i©Àv@  "  ¬8;@      (  ¬ K¸ ¯”   
   ¬ K      DIS          =©€p  i©Àv    ¬8;
=©€pi©Àv       M  	 NÀPÀ*  l†¬R    NÀPÀ   ¯”L  F©Ü@  Þª¸e@  *  Ì«V@  Î«1	@  Î«@y@      (  Zg©#82 "  ×ªìŠh  Þªà8h Þªó8h ¯”   
   Zg©#  *    ·  À  7œ   ‡ ÷5€   7  À  Â &  Î«@y
Ì«VÎ«1	F©Ü Î«1	$Î«1	  & ÷	  ÷U   ‡   Þª¸eF©Ü       .M  	 NÀÕ*        l†ËS    NÀÕ   ¯”L  F©Ü@  š©@  *  š©ôq@  « }@  «È}@  Î«@y@      (  *  Zg©#8@ š©gh, Þª¸eh  ‰¬Nh< ¯”   
   Zg©#  *    ÷5    ÂÁ  `Áe w   ‚Á  ”Â
ý  F©Ü« }«È}"« }  & w  ‡ ÷ôÿ  Æ  Îe ‡ w     « }š©Î«@yš©ôq       0M  	 TÀ(ê*  l† g    TÀ(ê   ¯”L  œw,@  œwÎ@  *  œw{Q@  ©†@  ©Š@  © @  ?©À@  *  C©î!@  C©""@  C©ÔZ@  D©½`@  D©È`@  *  D© x@  D©]z@  E©@  F©Ü@  e©ö&@  *  f©pq@  š©?9@  š©;@  š©ÀS@  š©      ôq@  *  š©bs@  š©Øx@  ¾©@Q@  ¿©  @  ê©  @  *  ªn8@  4ªšw@  4ªÈy@  6ªçe@  6ªü}@  *  6ªý@  6ª€@  ‘ª  @  ‘ª
z@  ×ªìŠ@  *  ÞªX@  ÞªÐ@  Þª@  Þª (@  Þª¯8@  *  Þª°8@  Þª(y@  («[z@  («\z@  -«®}@  *  /«  @  C«þ~@  R«®S@  R«+d@  •«By@  *  •«Gy@  –«  @  £«À@  ¹« K@  ¹« d@  *  ¹«4Š@  ¹«€Š@  º« @  º«ÀD@  º« K@  *  º«@`@  º« d@  º«€p@  »« @  »«À]@  *  ½«˜@  ½«³@  ½« @  ½«t!@  ½«€%@  *  ½«#X@  ½« }@  ½«È}@  ½«Ð@  ½«€@  *  ½«˜€@  ¾«À]@  ¾«      €p@  ¾«@ƒ@  Á« @  *  Ã«€p@  Ã«@œ@  Å«@@  Ç«@@  È«€p@  *  É«@ƒ@  Ê«@@  Ê«À@  Ê« @  Ê«€%@  *  Ê«À@  Ë«@@  Ë« K@  Ë«@ƒ@  Ì«V@  *  Ì«è]@  Î«/	@  Ñ«¸Z@  Ñ«Àv@  ù« d@  *  ¬°"@  ¬@  ¬&Š@  1¬´K@  1¬N@  *  _¬€p@  e¬@Q@  f¬@Q@  g¬  @  l¬Àž@  *  n¬"@      (  Ì«e	¸þE© h  Œª¸\   ¬ÏLh  ‹ªÐ¸œ ¯”   
   Ì«e	      À‚    E© ‹ªÐ  	    HELPÿ 
   Œª          ‹ªÐ   Ì«e	     €   @ ?   @ /* À€È  À%  C«þ~
@ C«þ~@       *   L 
«      j À†  \   C©î!j 
C©""\  ‹ªÐ    IDÿƒ
   Œª       ‹ªÐ  Ì«e	* $  *  @  6 À‚  Ê    À‚  Ê    À†  *  C«þ~
6 Ñ«¸Z?©ÀÑ«¸Z?©À"ªn8  J  =    Ê    Ð„L Èƒ    ='   •«Gy•«ByL   ~ 
-«®}   d j À‚  È  ,  j Ê    À‚'  j Ñ«¸Z  ~ 
6ªçej D©È`   |   Èƒ    È…    À‚  Ä*  Ñ«¸Z  Š 

D©½`  :
6ªü}     ˜ À„¨ :   €  ¨ À†  Î È*  ¹«€Š˜ 
¨ ¬°"e©ö&¨ Þª (Î   ª   ° À€Ä      Î *          '    
° ¾©@Qe©ö&Î f¬@Q   À   Î À    À‚  .  Ø À‚  Ä(  e©ö&Î 
C©ÔZÑ«¸ZÞªØ Ñ«¸Z  Ú      î *     î À€;  (  ù« de©ö&
î l¬Àže©ö&î Þª*  ò ø À„  Â       *       Àœ     [ž  *  ø Þªe©ö&n¬"e©ö&"e©ö&(¹«€Š"     Â&*‚  ,€Â0*‚  ]ž   @&  e©ö&&_¬€p0e¬@Q¬  6    À‚  /  JÀ†    È  È‡)  e©ö&
6ªý6ª€JD©]z  @
€
  P    >    V
1¬N>
   ‹ªÐ    IDÿ 
   Œª             ‹ªÐ  Ì«e	V  V‚        Á« Ì«V ‹ªÐ    QUÿ
   Œª       ‹ªÐ  Ì«e	^  ^ƒ        É«@ƒÌ«V ‹ªÐ    FUÿ
   Œª       ‹ªÐ  Ì«e	f  f„        ¾«@ƒÌ«V ‹ªÐ    FRÿ 
   Œª
   
    ‹ªÐ  Ì«e	n  n…        ¾«€pÌ«V ‹ªÐ    BRÿ
   Œª       ‹ªÐ  Ì«e	v  v†        º«€pÌ«V ‹ªÐ    BPÿz
   Œª       ‹ªÐ  Ì«e	~  ~‡        º« dÌ«V ‹ªÐ    APÿ 
         Œª       ‹ªÐ  Ì«e	†  †ˆ        ¹« dÌ«V ‹ªÐ    RCÿ 
   Œª       ‹ªÐ  Ì«e	Ž  Ž‰        Ê«ÀÌ«V ‹ªÐ      RAÿ 
   Œª        ‹ªÐ   Ì«e	–  –Š        Ê«@Ì«V ‹ªÐ#   # MEÿ 
   Œª    #   ‹ªÐ#  Ì«e	ž  ž‹        Å«@Ì«V ‹ªÐ&   & RWÿ 
   Œª    &   ‹ªÐ&  Ì«e	¦  ¦Œ        Ê«ÀÌ«V ‹ªÐ)   ) SUÿ 
   Œª    )   ‹ªÐ)  Ì«e	®  ®        Ë«@ƒÌ«V ‹ªÐ      ,   , SLÿ 
   Œª    ,   ‹ªÐ,  Ì«e	¶  ¶Ž    V  Ë« KÌ«V
V ‹ªÐ/   / SEÿ 
   Œª    /   ‹ªÐ/  Ì«e	¾  ¾    l  Ë«@Ì«V
l ‹ªÐ2   2 COÿ 
   Œª      2   ‹ªÐ2  Ì«e	Æ  Æ        »«À]Ì«V ‹ªÐ5   5 OAÿ 
   Œª"   " 5   ‹ªÐ5  Ì«e	Î  Î‘    ä  Ç«@Ì«V
ä ‹ªÐ8   8 BDÿª
   Œª$   $ 8   ‹ªÐ8  Ì«e	Ö  Ö’    Ú  º« Ì«V
Ú ‹ªÐ;   ; CDÿ 
   Œª&   & ;   ‹ªÐ;  Ì«e	Þ        Þ“    Ú  »« Ì«V
Ú ‹ªÐ>   > RDÿ«
   Œª(   ( >   ‹ªÐ>  Ì«e	æ  æ”    Ú  Ê« Ì«V
Ú ‹ªÐA   A EDÿ«
   Œª*   * A   ‹ªÐA  Ì«e	î  î•    Ú  ½« Ì«V
Ú ‹ªÐD   D PRÿ«
   Œª,   , D   ‹ªÐD  Ì«e	ö  ö–    (  È«€pÌ«V
( ‹ªÐG   G RFÿ
   Œª.   . G   ‹ªÐG  Ì«e	þ  þ—    ¢  Ê«€%Ì«V
¢ ‹ªÐJ   J FOÿ
   Œª0   0 J   ‹ªÐJ  Ì«e	  ˜    è  ¾«À]Ì«V
è ‹ªÐM   M BKÿ
         Œª2   2 M   ‹ªÐM  Ì«e	  ™      º«ÀDÌ«V
 ‹ªÐP   P KRÿ
   Œª4   4 P   ‹ªÐP  Ì«e	  š      Ã«€pÌ«V
 ‹ªÐS   S KYÿ
   Œª6   6 S   ‹ªÐS  Ì«e	  ›    N  Ã«@œÌ«V
N ‹ªÐV   V ALÿ
   Œª8   8 V   ‹ªÐV  Ì«e	&  &œ    *  ¹« KÌ«V
* ‹ªÐY   Y BLÿ
   Œª:   : Y   ‹ªÐY  Ì«e	.(  .    <Ä    À‚  NHÀ„  O€     À†(  º« KÌ«V
<4ªšwÑ«¸ZH"F©Ü   R    :  `À„  È            À‚  :)  ©†
½«€`  Š 
D© x4ªÈy   ntÀ‚  (  †À‚  È‡  '  tš©ÀS½«€%†½«€%  ž
   ‚    È‡    Ž,  †)'  ½«#X
  ž
½«t!Ž½«˜†   –    À‚  À‚  Ä°*  °À‚  .(  ½«³
Ñ«¸Z6ªü}°f¬@Q°4ªÈy*  ²¸À‚  ÄÄ*  ÄÀ€;ÌÀ„  Â  *    À„$  ¸4ªÈyÄl¬ÀžÄÌ$n¬"&  Ø  :  äÀ‚  ÌìÀ‚  -ôÀ‚  ÄüÀ‚*  ¹«4Š
äš©ÀSìš©ôqôÑ«¸Z"ü  ú  -À‚  Ì  À‚  :À†&  š©ôqÑ«¸Z1¬´Kš©ôq$            A    B    À‚  :6/  JÀ‚(  ¬&Š
ÞªÞªš©ôq6œwÎ J  4  Â    À‚  /JÀ†    È  )  š©ÀSR«+dš©ôqJR«®S  X
  N  @À†      ©Š@
R«®S ‹ªÐ\   \ SYÿ‚
   Œª<   < \   ‹ªÐ\  Ì«e	X
  Xž  t  Ñ«Àvt ‹ªÐ_   _ OWÿ 
   Œª>   > _   ‹ªÐ_  Ì«e	^
  ^Ÿ  t  /«  t ‹ªÐb   b GRÿ
   Œª@   @ b   ‹ªÐb  Ì«e	d
  d   t  ê©  t ‹ªÐe   e WOÿ
   ŒªB   B e   ‹ªÐe  Ì«e	j   j¡  tÀ‚  :      ~À†    D  ~R&  g¬  t© ~œw,½« }~  †  ~W  ~E  ~Ò    À†&  ½«Ð~
½«˜€~½«È}~š©bs  ž    :ªÀ‚    œw{Q
ªš©ÀS ‹ªÐh   h FIXÿ
   ŒªD   D h   ‹ªÐh  Ì«e	ª  ª¢   Ô  Î«/	
Ô ‹ªÐl   l VARÿ
   ŒªF   F l   ‹ªÐl  Ì«e	²  ²£   Ô  Î«/	
Ô ‹ªÐp   p VFCÿ
   ŒªH   H p   ‹ªÐp  Ì«e	º  º¤   Ô  Î«/	
Ô ‹ªÐt   t STMÿ
   ŒªJ   J t   ‹ªÐt  Ì«e	Â(  Â¥   ÔÄ    À‚  :ÞÀ†          Ì    À‚(  Î«/	
Ôš©;Ñ«¸ZÞf©pq"–«    æ  :ðÀ‚    š©ôqðš©ÀS ‹ªÐx   x RELÿ
   ŒªL   L x   ‹ªÐx  Ì«e	ð  ð¦     Î«/	
 ‹ªÐ|   | SEQÿ
   ŒªN   N |   ‹ªÐ|  Ì«e	ø  ø§      Î«/	
 ‹ªÐ€   € IDXÿ
   ŒªP   P €   ‹ªÐ€  Ì«e	 &   ¨    Ä    À‚  À†    : À‚  Ì(  Î«/	
š©?9Ñ«¸Z¿©   "š©ÀS$  "    À‚  :2À‚  Ì    À‚  :DÀ‚(  Þª¯8
š©ôq2š©ÀSÞªÐš©ôq D   B  Ì    À‚  :VÀ‚  Ì  `      À‚(  š©ÀSÞª°8š©ôqVš©ÀSÞª°8`  ^  :hÀ‚  Ì  rÀ‚  :|À†&  4ªÈyhÑ«¸ZÞªXrš©ôq|"  x    („À‚  /  ”)    À‚  È(  ‘ª  
„Ñ«¸Z‘ª
z”‘ª  Ñ«¸Z  –  „À‚      ž
„
š©ôq 
   ‹ªÐ„   „ OPÿ	
   ŒªR   R „   ‹ªÐ„  Ì«e	ž  ž©š     :¸À‚  :¸À†    *  º«@`
F©Ü¸š©Øx¸Þª(y ‹ªÐ‡   ‡ DUPÿ
   ŒªT   T ‡   ‹ªÐ‡  Ì«e	¸  ¸ª     ®  («\z
F©Ü® ‹ªÐ‹   ‹ CHGÿ
   ŒªV   V ‹   ‹ªÐ‹  Ì«      e	Â  Â«     ®  («[z
F©Ü® ‹ªÐ 
   NODUPÿ
   ŒªX   X    ‹ªÐ  Ì«e	Ì  Ì¬     ®  («\z
F©Ü® ‹ªÐ• 
  • NOCHGÿ
   ŒªZ   Z •   ‹ªÐ•  Ì«e	Ö  Ö­     ®À‚  À‚  :  òÀ‚(  («[z
F©Ü®4ªÈy×ªìŠÌ«è]ò  ð  È      À‚    š©ÀS  

£«À4ªÈy†       ² M  	 NÀÕ*  l†[q    NÀÕ   ¯”L  =©€p@  •«Àv@  "  ¬8"@      (  ¬ K¸ ¯”   
   ¬ K      RST©         =©€p  £« }    ¬8"
=©€p•«Àv             ¾M  	 OÀèÊ*  l†*}    OÀèÊ   ¯”L  C«®FH¬ ¬®H¬ *  ¬îeH¬     (  X:†¨PA«Ðh¤C«þ~hª*  C«ÿ~h¬D«a	h°S«P<h¨	¬ïWhÈ 	¬ðWhè *  ¬¯h( ¬°hx ¬šhø¬ƒdh¤¬¯h  ¬°hX¬9"h  ¯”   
   X:†(   ( P           8   8 @          „          2 
  2          N   N È            
  È  x   x P           ˆ   ˆ                       ‚ 
  ‚          ž   ž è             
  è  È *  È                             (             *        î                       (   P                                         *  *  (     
  (  X%  X                                ¬   z  z  x       x        ð M  	 QÀ¨Ä*  l†L†    QÀ¨Ä   ¯”L      (  ¬ }¸` *  
¬¸h  ¬0 h0 ¬8;hH ¬8"h ¯”   
   ¬ }  *    ©ÀD ­ð  ð€        £« } ­ò  ô*  &  „        f©€W       @_       s© d  L  ­ÄP  ÄP  @              JM  	 NÀ…È*  l†9    NÀ…È   ¯”L  :©Ï_@  s©À@  *  µª X@  ¹«´‰@  ^¬@        ^¬t:@  ^¬ÐW@  *  ƒ±:2@  Ž±J…@  Ž±P…@  “±†}@  “±”@  *      (> [¬X:¨ ­88^&€‰h.i©Œsh|*  [¬½'h” [¬VNh®[¬ø€h^ [¬ZŠhÊ \¬Ñ(hÆ*  a¬¦Zh  m¬h m¬h* m¬º8h$m¬¿8hV*  m¬Å8hm¬üXh6 o¬.ho¬HSh"o¬ˆYhò   o¬ø€hþ o¬ZŠh
¯”   
   [¬X:            
   ­8  *    À Â  
À
ýÂ  À 
À
ý‡ Á  ñ    
^¬ÐW      $^¬ÐW(ƒ±:2*  &  ‡ Á  ñ   ‡ ÷  	÷  Á  ñ   &  
^¬ÐWƒ±:2Ž±P…Ž±J…"^¬ÐW&Ž±J…*  L ‡ Á  ññÿ Îe ‡ ÷	  Â  Ã  ×  Ã        ^¬¹«´‰“±” “±†}*  r  Ä  Äe ÷	b†Å  õ½ÿ öe  ‡ ÷	    ^¬ÐW^¬(¹«´‰*  ˜ Â  Ã  × 	 Ã	 Ä  Äe ÷	,†Å  õ  “±”
“±†}^¬ÐW&^¬*  ¾ ¾ÿ öe  ‡ ÷  	÷  Á  ñ   ‡ Á  Ž±P…Ž±J…^¬ÐW"Ž±J…*  ä   ñÿ Îe ‡ Á  ñU   ‡ Á  ñU  ‡   ^¬^¬ÐW ^¬ÐW*  
Á  ñU  ‡ Á  ñU  ‡ Á  ñU  ‡ ÷	  ^¬ÐW^¬ÐW^¬ÐW*  0  DÀ Â ÷	  †‡ Ã Â! ÷	¡ ‡   ¹«´‰     :©Ï_     ! *  VÁ  ñ5  ‡ Á  Áe À   ÿ ÷	²ÿ  ^¬ÐW^¬ÐWŽ±J…*        |†Á  ñ¼ÿ Îe ‡ ‡ Á  ñ5  ‡ ñ5   ^¬^¬ÐW*  ¢ Áe àÂ  r  Áe Áe Ô‡ Á
        *  È  ñ5  ‡ æ æ?ÿˆ†Á  ñ   Îe   ^¬ÐW     ^¬"s©À*  î‡ Â 

·œ  À Á ÷	&ÿ†¹

·œ  *                      (     *  À Á ÷	ÿ†­÷	  Á  ñ5  ‡ ñ5        
     ¹«´‰^¬ÐW*  : ‡ Å  Â  2
 2
 ÷	( ÷	  †õ±ÿ   ^¬       ^¬t:*  `öe  ‡ ±   ±  ±  ‡ òz ò *  † 2

 ò  ò  2
 r  r  Ã *        ¬‡ Á  À  p  p  ÷	  
ñ5     ^¬ÐW[¬X:  µª X*  ÒÁ  ñU  ‡ w lý&fÀÀeJ æ …”÷	B ‡  ^¬ÐW*  øÐ÷	  ÷	 LaÎ
Àå ÔÎ Ã
ë–
…*  €‡ ÅÅÅfÅÅ…e‡ ÿÿ   W!Z ‚W!A †  DW!9 ‚W!0 ‡ÅåÒÿÅå@ ‡ ± ‡        
M  	 NÀÅÎ*  l†>    NÀÅÎ   ¯”L  :©Ï_@  [©(}@  *  i©Œs@  µª X@  ¹«´‰@  [¬àQ@  m¬ë~@  *  0²#	@      (  [¬X:¨L ^¬hF ^¬ÐWhD *  ­88òF©Û‰hàÝ©©}h Ý©ù}h®]¬¥Zh**  ^¬?:h  ^¬@:hJ ^¬t:hRj¬«„hx¯”   
   [¬X: &   ÿ,              SY                ,   D   D         
   ­8  *    ÷ÿÿH wD wF 5
 5
 ñ5  ÷	Ú †‡   [¬X:H [¬X:D [¬X:F *  & ÷	¼ ÅF õ õ õ õÿ ± ‡ ÷	
  
[¬X:F *  L   f wD wF ñ5  ÷	Xñ5  ÷	  ¹«´‰[¬X:D [¬X:F *  r :ñ ñ5*  ÷	&Â& ÷	Ž †± 
  [¬X:& *  ˜ ‡ 7
H ÅF @& Àð ¬ ! 	± Å  [¬X:H [¬X:F *  ¾ F õÿ ± ‡   ÄD ÷	
@& ðJ  ±   [¬X:F [¬X:D "[¬X:J "  ä ‡ ÷	  Á  Â  Å  ÷	  ‡ ÷	  À$  ¹«´‰  m¬ë~      [¬àQ0²#	¹«´‰*   ÷	  ‡ ÅF õŽÿ µ ± ‡ ƒÄ 
  [¬X: µª X[¬X:F *  (Ä
ýò   r   ÷	  ÷	Šñ5  ñ   i©Œs*  N±,  	€Ä 
Ä
ý÷	dóñ5  ñ *  t±,  	€Ä 
Ä
ý÷	<ó±   ± *  š ±  ±   ÷ÿÿH Ã f D ñE  
  [¬X:H *  ÀÄ
ñ50  ñ5  w ’ ñ" w ˆ ÷H 
  ([¬X:H *  æñ5*  ± ñ5  w  ÿõÿ ± ‡ *  B÷	@± (†C × æÿ× Ýÿ× Üÿñ5 *  2 	Â& 5
 ¡ 1 w Øþ÷H õÿ õ  
[¬X:& [¬X:H *  Xêÿ õÿ       ± ‡ ‡ ñ" 	÷	B†õŽÿ ±*  ~ ‡ ñU  B÷	Ä†C × æÿ× Ýÿ× Üÿ*  ¤w 	õÿ ± ÷	2± ‡ f 1
 1
 *  Ê1
 B÷	~f f f q"  q$  q& *  ð BÃ f ñU  f  f f ÷	@5†W­*   æÿB1
 ± ± ±  ± 5
 ¡ ÷	î*  <± ± ± ± ± ‡ õŽÿ ± ± ±*  b  ± ± ± ± ± ± ‡ Ã ± ±*  ˆ ±  ± ± ± ± ± ± ñE  w *  ®Òþ± ñ5  õÿ ÷	&± ‡ ÷	Â& ¡ 
  &[¬X:& *  Ô5
 1 w @ý÷	  7J   
÷	  Ð•:   ¹«´‰[¬X:J $:©Ï_*  úÁD       ñ5  Ð•[ ÷	j†õ¼ÿ ‡ Ã Áœ   [¬X:D $[¬X: *   ÷	† Ð•, Á’÷	| Ð•] Å Äe ÷	X Ð•. Å *  F÷	L Ð•; 
÷	  ÀíJ 7J &ffÁD ÅF (  :©Ï_[¬X:J [¬X:J $[¬X:D ([¬X:F *  l@& p   p  p  p  p  …*  ’€‡ ÷	  Å
û¨  ý€
‡ ÁE ÿ
÷	  ‡ ÷	  [©(}$:©Ï_*  ¸  ÷	. Áe" &
&
&
&
æ
 f&
æ  &
Î• æ  ¹«´‰[¬X:
  [¬X:  *  Þ æ æÿˆ]ñ" ÷	  Áe" &
&
&
&
&
  ¹«´‰*  f&
æ  &
Î• æ æ æÿˆ


?‡ 
  
[¬X:  *  *¦&
&
&
&
&
&
æ  &
Î• æ æ æÿˆ      
  [¬X:  *  P*¦&
&
&
&
&
&
æ  &
Î• ææ 	æÿˆ
  [¬X:  *  vÃ Áe &
&
&
&
æ f&
æ  &
Î• æ  [¬X:  [¬X:  *  œæ æÿˆ×­   æÃ  õ ± ƒ‡ BÃ  [¬X:  [¬X:  *  Â ÷	 ‡ ÷	„ÿ†W­ æÿõÿ õÿ ÷	  èÿÖ± ‡ ‡        rM  	 TÀ…È*  l†L    TÀ…È   ¯”L  [¬½'@  [¬VN@  *  [¬ø€@  [¬ZŠ@  \¬Ñ(@  a¬¦Z@  m¬@  *  m¬@  m¬º8@  m¬¿8@  m¬Å8@  m¬üX@  *  o¬.@  o¬HS@  o¬ˆY@  o¬ø€@  o¬ZŠ@  *      (  Ì«e	¸‚ [¬àQh  Œª¸  m¬ë~h    ‹ªÐ¸  ¯      ”   
   Ì«e	      À‚  Ò‚  Ò‚  Â   :†   :‚(  a¬¦Z
m¬m¬m¬üX [¬VN      È…  " Ä  0 *  '  [¬VN  \ 

" [¬½'0 o¬ˆY *  , 0 À€.6 À€Ä  D *  D À€;L À„  Â    (  0 
6 [¬ø€D o¬ø€D L &[¬ZŠ(  R *    À„  [f À†    Â  p *‚  ,€Â  (  o¬ZŠf \¬Ñ(m¬¿8p  o¬.&m¬Å8  v | *‚  ]†      | o¬HSm¬º8       ˜M  	 NÀ…È*  l†*–    NÀ…È   ¯”L      (  X:†¨| *  ¬*–h  ¬o–h ¬p–h( ¬q–hD ¯”   
   X:†                                      
        
(       D       ( D  :   :        0   0            D *  D 8                                      j        I   I     v   v      z   z      y   y      x   x  &   n   n                žM  	 NÀ¨Ä*  Cy?T    NÀ¨Ä   ¯”L  ³ÖKH- ³0MH¹ *  ÌÖKH< Ì0MHY¤ÖKH< ¤0MHµ È¥H< *  Þ KH ô& KHU Cy KH) CyÖKH  Cy0MHü *  CyBxH4 ø€ KHV «„ KH ”0MHõ     (  *  Cy?T¨,³ð3h©³ÐfhÌð3h- ÌÐfhD*        ¤ð3hb¤Ðfh¼ÈRh€Þ""hŒô&""hË*  Cy""h¢Cyð3h¦CyRhøCyÐfh†ø€""h   «„""hv”ð3h  ¯”   
   Cy?T  *    
		!!! WELCOME TO THE DEFINE UTILITY *  & !!!


	    TYPE A QUESTION MARK (?)*  L  FOR HELP AT ANY TIME.
  ALL NUMBERS *  r WILL BE DECIMAL, UNLESS EXPLICITLY SPE*  ˜ CIFIED OTHERWISE.
DEFAULTS WILL BE SH*  ¾ OWN IN PARENTHESES, TYPE CARRIAGE RETU*  ä RN TO GET THEM.
IF YOU ANSWER YES TO *  
THIS QUESTION, A FILE CONTAINING YOUR *  0CORRECT
RESPONSES TO THE       UPCOMING QUE*  VSTIONS, WILL BE GENERATED FOR YOUR FUT*  |URE USE.

ENTER YOUR FILE SPECIFICAT*  ¢ION:
THE FILE SPECIFICATION SHOULD BE*  È ENTERED IN THE FOLLOWING FORMAT:
		D*  îEV: [GRP,MEMBR] FILENAME.TYP;VERSION
*      DEFAULTS ARE: DEV = SY0, UIC = YOU*  :R OWN, VERSION = HIGHEST +1.
THE GROU*  `P AND MEMBER NUMBERS OF THE UIC AND TH*  †E VERSION NUMBER ARE OCTAL

ILLEGAL *  ¬FILE SPECIFICATION, TRY AGAIN

WARNI*  ÒNG - BE AWARE THAT THE FILENAME HAS BE*  øEN TRUNCAT      ED.
		PROCESSING CONTINUES.*  

WARNING - BE AWARE THAT THE FILE T*  DYPE HAS BEEN TRUNCATED.
		PROCESSING *  jCONTINUES.

BAD UIC, TRY AGAIN

IL*  LEGAL DEVICE, TRY AGAIN

IF YOU SAY *  ¶YES, THE COMMAND FILE YOU HAVE BEEN GE*  ÜNERATING WILL BE
CLOSED AND YOU CAN B*  EGIN AGAIN. OTHERWISE, YOU CAN CONTINU*  (E
TO PUT COMMANDS INTO THE CURRENTLY *  NOPEN COMMAND FILE.

IF YOU SAY YES, *  tTHE FILE YOU ARE GOING TO DESCRIBE WIL*  šL ACTUALLY BE
CREATED. IF YOU SAY NO,      *  À IT WON'T BE.  IN EITHER CASE, A COMMA*  æND FILE
WILL BE GENERATED FOR YOUR FU*  TURE USE.

DO YOU WANT TO CLOSE THE *  2INDIRECT FILE(NO)?
DO YOU WANT TO GEN*  XERATE A COMMAND FILE FOR FUTURE USE(NO*  ~)?
ENTER A FILE SPECIFICATION FOR THE*  ¤ INDIRECT FILE YOU WANT:
DO YOU WANT *  ÊTO CREATE THE FILE YOU WILL BE DESCRIB*  ðING(NO)?;THE FIRST QUESTION ASKS FOR T  HE FILE SPECIFICATION.       ¢
M  	 NÀEÂ*  —`?T    NÀEÂ   ¯”L  k KHÖ œp!H, *  œ€WHŠ ’(ÖKH  ’(      0MH½ ®(ÖKH- ®(0MHo *  ; KH, T0MHJ TÖKH  T0MH§ #TÖKH *  #T0MH: Ú_ xH Ú_®xH —`ÖKH —`0MHL *  —`BxHC }qÖKH Vs KHa ™wÖKHX ‘yå~H9 *  ‘yî~HF –y0MH„     (  —`?T¨nk"h*  ˜€Mh €phÙ’(ð3h ’(Ðfhà®(ð3h¼*  ®(Ðfh;ð3hTð3hXTð3hÝTÐfh½*  #Tð3h_#TÐfhIÚ_xh_Ú_Ryh/—`ð3h *  —`Rh+—`Ðfh  }qÐfh¾ Vsð3h¢™waThf "  ‘yL~h½‘y’h„–yð3hÔ ¯”   
   —`?T  *    
FILE ORGANIZATION (SEQ):
ENTER SEQ *  & FOR SEQUENTIAL (DEFAULT), REL FOR RE      LA*  L TIVE, OR IDX FOR INDEXED

	SINCE YOU*  r  SPECIFIED A NON-DISK DEVICE,
	YOUR F*  ˜ ILE ORGANIZATION MUST BE SEQUENTIAL!
*  ¾ 
RECORD FORMAT (VAR):
ENTER VAR FOR *  ä VARIABLE (DEFAULT), FIX FOR FIXED, STM*  
 FOR STREAM,
VFC FOR VARIABLE-WITH-FI*  0XED-CONTROL-AREA OR UDF FOR UNDEFINED.*  V

ENTER VAR FOR VARIABLE (DEFAULT), *  |FIX FOR FIXED OR
UDF FOR UNDEFINED.
*  ¢
ENTER VAR FOR VARIABLE (DEFAULT), FI*  ÈX FOR FIXED
OR VFC FOR VARIABLE-WITH-*  îFIXED-CONTROL-AREA.
      
ENTER VAR FOR V*  ARIABLE OR FIX FOR FIXED.

MAXIMUM R*  :ECORD SIZE (0):
MAXIMUM RECORD SIZE:
*  `ENTER THE MAXIMUM SIZE OF RECORDS THA*  †T YOU WILL ALLOW.
A VALUE OF ZERO MEA*  ¬NS THAT RMS WILL NOT LIMIT THE SIZE OF*  Ò THE RECORD.

SIZE OF FIXED CONTROL *  øAREA(2):
ENTER A VALUE REPRESENTING T*  HE SIZE, IN BYTES, OF THE FIXED
CONTR*  DOL AREA OF EACH RECORD. THE NUMBER MUS*  jT BE BETWEEN 1 AND 255.
A VALUE OF ZE*  RO IS EQUIVALENT TO THE DEFAULT OF 2 B*  ¶YTES      .

MAXIMUM NUMBER OF RECORDS (0)*  Ü:
SPECIFY A VALUE REPRESENTING THE HI*  GHEST NUMBERED RECORD
THAT CAN EVER B*  (E WRITTEN TO THE FILE. THE DEFAULT IS *  NZERO,
WHICH MEANS THAT NO CHECKS WILL*  t BE PERFORMED.

WILL YOU ALLOW RECOR*  šDS TO CROSS BLOCK BOUNDARIES (YES)?
E*  ÀNTERING YES WILL ALLOW RECORDS TO CROS*  æS VIRTUAL BLOCK BOUNDARIES.

SINCE Y*  OU SPECIFIED FIXED SIZE RECORDS, YOU M*  2UST HAVE A MAXIMUM RECORD
SIZE LESS T*  XHAN 512. ( THE SIZE OF 1 BLOCK)       OR YOU*  ~ MUST ALLOW RECORDS
TO CROSS BLOCK BO*  ¤UNDARIES.  HERE'S YOUR CHANCE TO CHANG*  ÊE 1 OF THESE.

DO YOU WANT CARRIAGE *  ðRETURN CONTROL (YES)?
IF YOU SAY YES,*   EACH RECORD WILL BE PRECEDED BY A LIN*  <E FEED AND
FOLLOWED BY A CARRIAGE RET*  bURN ON OUTPUT TO A CARRIAGE CONTROL DE*  ˆVICE.

DO YOU WANT FORTRAN CHARACTER*  ® CONTROL (NO)?
IF YOU SAY YES, THIS M*  ÔEANS THAT THE 1ST BYTE OF EACH
RECORD*  ú CONTAINS A FORTRAN CARRIAGE CONTROL C*   HARACTER.
;THE       NEXT QUESTIONS DEAL WI*  FTH FILE ORGANIZATION & RECORD ATTRIBUT  lES      æM  	 NÀEÂ*  ¡E?T    NÀEÂ   ¯”L  ï KH0 ÖKH% *  0MH« XÖKH$ X0MHg'ÖKH% ø8ÖKH) *  ¡E KH ¡EÖKH& ¡E0MHd ¡EÀvH) ¡EBxH' *  ¥F€WH% ýFÖKH4 ýF0MH#T KH$ NYÖKH, *  NY0MH:ÔZÖKH- ÔZ0MHÏ kfÖKH kf0MH0*  wÖKH  BxÖKH Bx0MH[    (  ¡E?T¨*
*  ï""h=ð3h»Ðfh–Xð3h×XÐfh³*  g'Ðfhqø8""hð¡E""hÈ	¡Eð3h¡ERhÚ	*  ¡E?Th
¡EÕZh 
¡EÐfhçýFð3h¡ýFÐfhm*  RG  h  #T""h      NYð3hbNYÐfhœ	ÔZð3h“*  ÔZÐfhfkfð3h7 kfÐfh% w""hÐBxð3hu  BxÐfhg¯”   
   ¡E?T  *    
IT'S TIME TO DEFINE THE PRIMARY KEY*  & 
POSITION OF KEY:
ENTER A VALUE REPRE*  L SENTING THE STARTING POSITION OF THE K*  r EY.
A KEY CAN START IN POSITION 0, WH*  ˜ ICH IS THE 1ST BYTE OF THE RECORD.

*  ¾ IF THE KEY IS SEGMENTED, YOU MAY ENTER*  ä  UP TO 8 POSITIONS.
IF YOU SPECIFY MO*  
RE THAN 1 POSITION, THE POSITIONS MUST*  0 BE ENCLOSED
IN PARENTHESES AND SEPAR*  VATED B      Y COMMAS.

SIZE OF KEY:
ENTER*  | A VALUE REPRESENTING THE SIZE OF THE *  ¢KEY.

IF THE KEY IS SEGMENTED, YOU M*  ÈAY ENTER UP TO 8 SIZES, PROVIDING
YOU*  î HAVE ALREADY SPECIFIED AN EQUAL NUMBE*  R OF POSITIONS FOR THE KEY.
IF YOU SP*  :ECIFY MORE THAN 1 SIZE, THE SIZES MUST*  ` BE ENCLOSED IN
PARENTHESES AND SEPAR*  †ATED BY COMMAS.  THE COMBINED TOTAL OF*  ¬ THE SIZES
MUST BE LESS THAN 256.

*  ÒTOO MANY SEGMENTS, TRY AGAIN

UNEQUA*  øL NUMBER OF SEGMENTS, TRY AGAIN
      
KEY*   EXCEEDS MAXIMUM RECORD SIZE.

SUM O*  DF SEGMENTED KEY SIZES GREATER THAN 256*  j.

ENTER A NAME FOR YOUR KEY, IF YOU*   SO DESIRE(NONE):
YOU MAY OPTIONALLY *  ¶ASSOCIATE AN ALPHA-NUMERIC CHARACTER S*  ÜTRING
WITH THE KEY YOU HAVE JUST DEFI*  NED.  RMS WILL NEVER EXAMINE THIS STRI*  (NG.
IF YOU SPECIFY ONE, HOWEVER, RMS *  NWILL STORE IT IN THE FILE WITH THE
AS*  tSOCIATED KEY DEFINITION. THE MAXIMUM L*  šENGTH IS 32 CHARACTERS.

WILL YOU AL*  ÀLOW DUPLICATE KEYS      (NO)?
IF YOU ALLOW *  æDUPLICATES, RECORDS IN THE FILE MAY HA*  VE THE SAME
VALUES IN THE KEY FIELD. *  2OTHERWISE, DUPLICATES ARE NOT ALLOWED.*  X
DEFAULT IS NO FOR PRIMARY, YES FOR A*  ~LTERNATE KEYS. IN ORDER TO PERMIT
ALT*  ¤ERNATE KEYS TO CHANGE, YOU MUST NOW PE*  ÊRMIT THEM TO BE DUPLICATED.

DO YOU *  ðWANT TO DEFINE MORE KEYS(NO)?
FOR AN *  INDEXED FILE YOU MUST SPECIFY 1 OR MOR*  <E KEYS. YOU CAN THEN
REFERENCE THE RE*  bCORDS BY KEY.

WILL YOU ALLOW DUPLIC*  ˆAT      E KEYS(YES)?
WILL YOU ALLOW KEYS TO*  ® CHANGE(YES)?
IF YOU SAY YES, YOU ARE*  Ô ALLOWING KEY VALUES WITHIN RECORDS TO*  ú
BE CHANGED DURING AN UPDATE OPERATIO*   N. THIS IS ONLY ALLOWED FOR
ALTERNATE*  F KEYS WHICH CAN BE DUPLICATED.

DO Y*  lOU WISH TO DEFINE A NULL KEY VALUE(NO)*  ’?
IF YOU WANT A NULL KEY VALUE, SPECI*  ¸FY A SINGLE CHARACTER. IF A
RECORD CO*  ÞNTAINS ONLY THAT CHARACTER THROUGHOUT *  THE ENTIRE KEY FIELD, RMS
WILL NOT CR*  *EATE AN ENTRY FOR THAT RECORD       IN THE A*  PSSOCIATED INDEX.

FOR A NONPRINTING *  vCHARACTER, TYPE A '#' FOLLOWED
BY AN *  œOCTAL NUMBER. NOTE THAT '@' IS CONSIDE*  ÂRED NONPRINTING,
SINCE IT IS THE SYMB*  èOL FOR AN INDIRECT FILE. THEREFORE, IT*  	 MUST
BE ENTERED AS '#100'. LIKEWISE *  4	A '#' MUST BE ENTERED AS '#43'.
ALSO,*  Z	 A '?' MUST BE ENTERED AS '#77' SINCE *  €	IT IS THE SYMBOL FOR HELP.

O.K., EN*  ¦	TER YOUR NULL KEY VALUE CHARACTER:
TO*  Ì	O MANY KEYS!

JUST FINISHED ALTERNAT*  ò	E KEY NUMBER        0  ;THE FOLLOWING QUESTI  
ONS DEAL WITH KEYS       ÈM  	 NÀ¨Ä*  ãe?T    NÀ¨Ä   ¯”L  , KH .ÖKH+ *  .0MH>1ÖKH7 10MHâ 	%H" 	.H=*  K KHk KÖKH K0MH$çÖKH& ç0MHH *  Ù KHI ÙÖKHE Ù0MH%&%lH+ %&.lH³ *  Ô4ÖKH Ô40MH† [MÖKH [M0MHa ªS%!H' *  ÕZÖKH  ãeÖKH% ãe0MH\ ãeBxHA     (  *  ãe?T¨J,""h.ð3h
.Ðfhà	10h*  1ð3h–1Ðfh_	Œh" 	Òh  ;	ÕZh4*  K0hÐK""h­Kð3h‰KÐfhxç0hÎ*  çð3hºç.dh°çÐfh”Ù0hÔÙ""hm*        Ùð3h]ÙÐfh%&Œkhá%&Òlh¶Ô4ð3hZ	*  Ô4ÐfhK	[M0h,	[Mð3hê[MÐfhßªSÒ!h7*  ÕZRhãe0h¾ãeð3hƒãeRhÌãeÐfh^
  ¯”   
   ãe?T  *    
DO YOU WANT TO DEFINE AREAS(NO)?
YO*  & U MAY, IF YOU WISH, DEFINE FILE AREAS.*  L   THIS WILL GIVE
YOU MORE CONTROL OVE*  r R THE INTERNAL STRUCTURE OF AN INDEXED*  ˜  FILE.
FOR EACH AREA, YOU CAN ASSIGN *  ¾ AN INITIAL ALLOCATION QUANTITY, A
BUC*  ä KET SIZE, A DEFAULT AREA EXTENSION QUA*  
NTITY, AND A STARTING LOCATION.
YOU M*        0AY ALSO SPECIFY THAT YOU WANT A SPECIF*  VIC AREA TO BE CONTIGUOUS.
LATER YOU M*  |AY ASSOCIATE THE DATA BUCKET LEVEL, TH*  ¢E INDEX BUCKET
LEVEL, AND THE LOWEST *  ÈINDEX BUCKET LEVEL OF YOUR KEYS WITH A*  îREAS.
THE ONLY RESTRICTION IS THAT TH*  E LOWEST INDEX BUCKET LEVEL OF ANY KEY*  :
CANNOT BE ASSOCIATED WITH AREA 0.
*  `
ALLOCATION (0 -- IT IS SUGGESTED YOU *  †ENTER A VALUE) :
ENTER THE NUMBER OF *  ¬VIRTUAL BLOCKS YOU WANT IN THE
;THE N*  ÒEXT QUESTIONS DEAL WITH       ALLOCATION AND  ø PLACEMENT ATTRIBUTESF   *       AT CREATE TIME.  IT IS SUGGESTED *  4THAT YOU SPECIFY
A NONZERO ALLOCATION*  Z QUANTITY, FOR SPEED'S SAKE.

BUCKET*  € SIZE(1):
ENTER THE NUMBER OF VIRTUAL*  ¦ BLOCKS CONTAINED IN EACH BUCKET
OF T  ÌHE D   Ð*  Ð    .  ZERO IS EQUIVALENT TO THE DEFAU*  öLT OF 1. SINCE
RMS DOES NOT ALLOW REC*  ORDS TO CROSS BUCKET BOUNDARIES,
YOU *  BSHOULD MAKE SURE THAT THE NUMBER OF VI*  hRTUAL BLOCKS
PER BUCKET IS BIG ENOUGH*        Ž, ALLOWING FOR SOME OVERHEAD.

THE N*  ´UMBER OF VIRTUAL BLOCKS PER BUCKET IS *  ÚNOT BIG ENOUGH
GIVEN THE MAXIMUM RECO*   RD SIZE YOU SPECIFIED.

DEFAULT EXTE*  &NSION QUANTITY (0 - IT IS SUGGESTED YO*  LU ENTER A VALUE):
THE DEFAULT EXTENSI*  rON QUANTITY IS THE NUMBER OF VIRTUAL B*  ˜LOCKS TO BE
USED WHEN RMS11 MUST AUTO*  ¾MATICALLY EXTEND YOUR     .  FOR THE S*  äAKE
OF SPEED, IT IS SUGGESTED THAT YO*  
U SPECIFY A NONZERO VALUE. THE
DEFAUL*  0T EXTENSION QUANTITY MUST       BE A MULTIPL*  VE OF THE BUCKET SIZE.

THE DEFAULT E*  |XTENSION QUANTITY MUST BE A MULTIPLE O*  ¢F THE BUCKET SIZE.

DEFAULT EXTEND Q*  ÈUANTITY FOR YOUR FILE(0):
ENTER A VAL*  îUE TO BE THE DEFAULT EXTEND QUANTITY F*  OR YOUR FILE.
THIS VALUE WILL BE USED*  : AS THE "DEFAULT" FOR ANY AREA
FOR WH*  `ICH YOU HAVE NOT ALREADY DEFINED A NON*  †-ZERO VALUE.

DO YOU WANT A CONTIGUO  ¬US S   °!  °     (NO)?
IF YOU WANT YOUR     Î*  Î     TO BE CREATED PHYSICALLY CONTIG      UO*  ôUS, SAY YES.

TOO MANY AREAS!!!

J*  UST FINISHED AREA NUMBER  0  
DO YOU *  @WANT TO DEFINE MORE AREAS(NO)?
DO YOU*  f WANT PLACEMENT CONTROL (NO)?
IF YOU *  ŒDESIRE CONTROL OF THE PHYSICAL PLACEME  ²NT OF THE
R   ¾*  ¾     ON THE VOLUME, ANSWER YES.

LOC*  äATION:
ENTER A BLOCK NUMBER REPRESENT%  
	ING THE STARTING ADDRESS
OF THE     ,	*  ,	     ON THE SPECIFIED VOLUME.

EXACT*  R	LY (NO)?
THE DEFAULT IS TO GIVE YOU T*  x	HE BEST APPROXIMATION TO YOUR REQU      EST.*  ž	
IF YOU WANT ONLY THE EXACT LOCATION *  Ä	YOU SPECIFIED, ANSWER YES.

WHAT TYP*  ê	E OF ALIGNMENT DO YOU WANT (LBN)?
YOU*  
 MAY SPECIFY 1 OF 2 ALIGNMENT TYPES.  *  6
IF YOU ENTER LBN
( FOR LOGICAL BLOCK *  \
NUMBER), THEN THE LOCATION YOU GIVE WI*  ‚
LL BE
CONSIDERED TO BE A LOGICAL BLOC*  ¨
K ON THE VOLUME. IF YOU ANSWER VBN
( *  Î
FOR VIRTUAL BLOCK NUMBER), THEN THE LO*  ô
CATION YOU GIVE IS CONSIDERED
TO BE A*   VIRTUAL BLOCK NUMBER WITHIN THE FILE   @ITSELF.
Y             *M  	 NÀEÂ*  v?T    NÀEÂ   ¯”L  vBxHF …%SH8 *  6ÖKH0 60MH¦ü KH@ üÖKH[ ü0MH *  l'BxH1 v8ÖKH1 v80MHº<9ÖKH\ <90MHË*  ¡EeYH5 6K KHŸ 6KÖKH: 6K0MHnÙf%SH, *  Z£¥_H<     (  v?T¨zvRh4…@Qh” *  …ÒSh  Å@Qh…6ð3hÉ 6Ðfh™ ü""hj*  üð3hÊüÐfhol'Rhv8ð3hÛv8Ðfhª*  <9ð3hñ<9Ðfh•…:@Qh«¡EZhd 6K""hd*  6Kð3hö	6KÐfh¼	ÙfÒSh8 Z£R`hµ¯”   
   v?T  *    
IT IS TIME FOR AREA NUMBERS AND FILL*  &  FACTORS FOR KEYS.
THESE QUESTIONS       AR*  L E FOR THE PRIMARY KEY:

THESE QUESTI*  r ONS ARE FOR ALTERNATE KEY NUMBER  0  *  ˜ 

AREA NUMBER FOR DATA BUCKETS FOR TH*  ¾ IS KEY (0):
YOU MAY ASSIGN THE BUCKET*  ä S OF THE DATA LEVEL OF THE INDEX DEFIN*  
ED
BY THIS KEY TO ONE OF THE AREAS YO*  0U JUST DEFINED. WHEN DESCRIBING
THE P*  VRIMARY KEY, THE DATA LEVEL OF THE INDE*  |X CONSISTS OF THOSE
BUCKETS CONTAININ*  ¢G THE ACTUAL DATA RECORDS OF THE FILE.*  È  HOWEVER,
WHEN DESCRIBING AN ALTERNA*  îTE KEY, THE DATA LEV      EL OF THE INDEX
C*  ONSISTS OF BUCKETS IN WHICH RMS-11 MAI*  :NTAINS POINTER ARRAYS DESCRIBING
THE *  `DATA RECORDS.

THE BUCKET SIZE IS  0*  †  BLOCKS.
HOW MANY BYTES DO YOU WANT *  ¬FILLED IN THE DATA BUCKET (0)?
AT CRE*  ÒATE TIME, YOU SPECIFY HOW MANY BYTES Y*  øOU WANT USED
IN EACH DATA LEVEL BUCKE*  T OF THE ASSOCIATED INDEX.  BY
SPECIF*  DYING LESS THAN THE TOTAL BUCKET SIZE, *  jYOU INDICATE THAT
THE DATA BUCKETS AR*  E NOT TO BE COMPLETELY FILLED.  YOU MA*  ¶Y WA      NT TO
USE THIS FACILITY IF YOU EX*  ÜPECT TO PERFORM NUMEROUS 'PUT' AND
'U*  PDATE' OPERATIONS ON THE FILE AFTER IT*  ( HAS BEEN INITIALLY POPULATED.
ONE BL*  NOCK IS EQUAL TO 512. BYTES

THE BUCK*  tET FILL SIZE IS GREATER THAN THE ACTUA*  šL BUCKET SIZE.

AREA NUMBER FOR INDE*  ÀX BUCKETS FOR THIS KEY (0):
YOU MAY A*  æSSIGN THE BUCKETS OF THE INDEX LEVEL O*  F THE INDEX
DEFINED BY THIS KEY TO ON*  2E OF THE AREAS YOU JUST DEFINED.  WHEN*  X
DESCRIBING THE PRIMARY KEY, TH      E INDE*  ~X LEVEL OF THE INDEX CONSISTS
OF ALL *  ¤LEVELS OF THE TREE-STRUCTURED PRIMARY *  ÊINDEX DOWN TO AND
INCLUDING THE LEVEL*  ð CONTAINING POINTERS TO THE USER DATA *  RECORDS
THEMSELVES.  HOWEVER, WHEN DE*  <SCRIBING AN ALTERNATE KEY, THE INDEX
*  bLEVEL CONSISTS OF ALL LEVELS OF THE TR*  ˆEE-STRUCTURED ALTERNATE
INDEX DOWN TO*  ®, BUT NOT INCLUDING, THE LEVEL CONTAIN*  ÔING BUCKETS
IN WHICH RMS-11 MAINTAINS*  ú POINTER ARRAYS DESCRIBING THE USER DA*   TA
RECORDS.  YO      U MAY SEPARATE THE LOW*  FEST LEVEL OF THE INDEX FROM
ALL HIGHE*  lR LEVELS, BUT THAT'S THE NEXT QUESTION*  ’.

THE BUCKET SIZE IS  0  BLOCKS.
H*  ¸OW MANY BYTES DO YOU WANT FILLED IN TH*  ÞE INDEX BUCKET (0)?
AT CREATE TIME, Y*  OU SPECIFY HOW MANY BYTES YOU WANT
US*  *ED IN EACH INDEX LEVEL BUCKET OF THE A*  PSSOCIATED INDEX.  BY
SPECIFYNG LESS T*  vHAN THE TOTAL BUCKET SIZE, YOU INDICAT*  œE THAT
THE INDEX BUCKETS ARE NOT TO B*  ÂE COMPLETELY FILLED BUT ARE TO CONTAIN*  è      
SOME AMOUNT OF FREE SPACE.  YOU MAY *  	WANT TO USE THIS FACILITY
IF YOU EXPE*  4	CT TO PERFORM NUMEROUS 'PUT' AND 'UPDA*  Z	TE' OPERATIONS
ON FILE AFTER IT HAS B*  €	EEN INITIALLY POPULATED. ONE BLOCK IS *  ¦	EQUAL
TO 512. BYTES

AREA NUMBER FO*  Ì	R THE LOWEST INDEX LEVEL FOR THIS KEY *  ò	(0):
YOU MAY SEPARATE THE LOWEST LEVE*  
L OF THE INDEX FROM
ALL HIGHER LEVELS*  >
 BY SPECIFYING A DIFFERENT AREA NUMBER*  d
 THAN THAT
SPECIFIED FOR THE INDEX LE*  Š
VEL.  HOWEVER, THE BUCKET SI      ZES OF THE*  °

TWO AREAS MUST BE THE SAME.  THE DEF*  Ö
AULT VALUE OF ZERO MEANS THAT
THE ARE*  ü
A NUMBER FOR THE LOWEST LEVEL OF THE I*  "NDEX WILL BE THE
SAME AS THE AREA NUM*  HBER FOR THE HIGHER LEVELS.

THE AREA*  n ASSOCIATED WITH THE LOWEST LEVEL INDE*  ”X BUCKET
HAS A DIFFERENT BUCKET SIZE *  ºTHAN THE AREA ASSOCIATED WITH THE
HIG*  àHER INDEX BUCKET. TRY BOTH AGAIN.
;TH*  E NEXT QUESTIONS ASK ABOUT FILL SIZES *  ,FOR KEYS;THE NEXT QUESTIONS DEAL WITH *  RASSOCIATING       KEYS TO AREAS AND FILL SIZ  xES       nM  	 NÀ¨Ä*  %?T    NÀ¨Ä   ¯”L  sÖKH s0MHÇ *   .ÖKH faÖKH3 ßf0MH£ ßfBxH2 »zÖKH *  ¤‘ÖKH     (  %?T¨*sð3h sÐfh  *   .Ðfh¸faÐfh…ßfð3hâ ßfRhø»zÐfhÎ  ¤‘Ðfhå¯”   
   %?T  *    
MAGTAPE BLOCK SIZE (512):
YOU MAY S*  & PECIFY THE SIZE (IN BYTES) OF THE
PHY*  L SICAL BLOCKS ON THE MAGTAPE. A VALUE O*  r F 0 IS
THE DEFAULT AND IS UNDERSTOOD *  ˜ TO BE THE SYSTEM
DEFAULT OF 512. THE *  ¾ VALUE MUST BE BETW      EEN 18 AND 8192.

*  ä ENTER ANY COMBINATION OF R (READ), W (*  
WRITE), E (EDIT), D (DELETE)
TO GRANT*  0 THOSE PRIVILEGES TO THE CLASS PROMPTE*  VD.  ENTER "NONE"
TO DISALLOW ALL PRIV*  |ILEGES.

SPECIFY PROTECTION BY CLASS*  ¢
OWNER:(RWED ALLOWED)
GROUP:(RWED AL*  ÈLOWED)
SYSTEM:(RWED ALLOWED)
WORLD:(*  îR ALLOWED);THE FOLLOWING QUESTIONS DEA  L WITH FILE PROTECTION       jM  	 NÀ¨Ä*  *}ÈK    NÀ¨Ä   ¯”L  ,""@  , K@  *  .ð3@  .0M@  1ð3@  10M@  	Œ@  *        	.@  ¬ð3@  ¬ K@  ¬0M@  ¬R@  *  î""@  î K@  ï""@  ï K@  K""@  *  Kð3@  K K@  K0M@  k"@  k K@  *  mÖK@  mR@  ð3@  0M@  ³ð3@  *  ³0M@  Ìð3@  Ì0M@  •""@  •ÖK@  *  ˜€M@  œ€W@  ¤ð3@  ¤0M@  çð3@  *  ç0M@  6ð3@  60M@  ÎÖK@  ÎR@  *  Ù""@  Ùð3@  Ù K@  Ù0M@  Þ""@  *  Þ K@  ü""@  üð3@  ü K@  ü0M@  *  6""@  6ÖK@  B""@  BÖK@  Xð3@  *  X0M@  %&Œk@  %&.l@  ô&""@  ô& K@  *  ’(ð3@  ’(0M@  ®(ð3@  ®(      0M@  Ô(""@  *  Ô(ÖK@  Ô4ð3@  Ô40M@  ï4ð3@  ï40M@  *  v8ð3@  v80M@  è8€M@  ì8€W@  ø8""@  *  ø8ÖK@  <9ð3@  <90M@  ª:""@  ª: K@  *  ;ð3@  ; K@  ¡E""@  ¡Eð3@  ¡E K@  *  ¡E0M@  ¡ER@  ¡EÀv@  ¥F€W@  ýFð3@  *  ýF0M@  RG  @  6K""@  6Kð3@  6K K@  *  6K0M@  [Mð3@  [M0M@  VN""@  VN K@  *  åQ""@  åQ K@  Tð3@  T0M@  Tð3@  *  T0M@  #T""@  #Tð3@  #T K@  #T0M@  *  NYð3@  NY0M@  ÔZð3@  ÔZ0M@  ÕZÖK@  *  ÕZR@  Ú_x@  Ú_®x@  R`""@  R` K@  *  —`ð3@  —`      0M@  ãeð3@  ãe0M@  kfð3@  *  kf0M@  ÓfÖK@  ÓfR@  ßfð3@  ßf0M@  *  æf""@  æfÖK@  Vsð3@  Vs K@  w""@  *  wÖK@  ™wÖK@  ™waT@  Bxð3@  Bx0M@  *  Cy""@  Cyð3@  Cy K@  Cy0M@  ‘yL~@  *  ‘yî~@  –yð3@  –y0M@  zð3@  z0M@  *  g""@  g K@  ø€""@  ø€ K@  æƒ""@  *  æƒ K@  «„""@  «„ K@  ´‰  @  ´‰""@  *  Þ‰""@  Þ‰ÖK@  ”ð3@  ”0M@      (  "  *}ÈK¸Lð3*}h  R*}h¸ ¯”   
   *}ÈK                  &  ”ð3”0Mè8€M
ì8€WCyð3Cy0M               &        —`ð3—`0M‘yL~
‘yî~–yð3–y0M               &  Tð3T0MVsð3
Vs K;ð3; K  $             &  #Tð3#T0MÚ_x
Ú_®x1ð310M  0             &  Kð3K0M’(ð3
’(0MTð3T0M  <             &  ˜€Mœ€W®(ð3
®(0MRG  ¥F€W  H             &  kfð3kf0MBxð3
Bx0MXð3X0M  T             &  ¡Eð3¡E0Mð3
0MÔZð3ÔZ0M  `             &  NYð3NY0MýFð3
ýF0Mßfð3ßf0M  l             &  zð3z0M	Œ
	.Ùð3Ù0M  x                   &  çð3ç0M6ð3
60Mv8ð3v80M  „             &  6Kð36K0Müð3
ü0M<9ð3<90M               &  ¬ð3¬0M%&Œk
%&.lãeð3ãe0M  œ             &  [Mð3[M0MÔ4ð3
Ô40M.ð3.0M  ¨             &  ï4ð3ï40M³ð3
³0MÌð3Ì0M  ´             &  ¤ð3¤0MmR
mÖKVN""VN K  À             &  åQ""åQ KR`""
R` Kî""î K  Ì             &  g""g Kª:""
ª: Kk"k K  Ø             &  æƒ""æƒ KCy""
Cy Kô&""ô& K        ä             &  ø€""ø€ KÞ""
Þ K«„""«„ K  ð             &  ™waT™wÖKÎR
ÎÖK´‰""´‰    ü             &  w""wÖKø8""
ø8ÖK¡E""¡E K              &  ¡ER¡EÀv#T""
#T Kï""ï K              &  K""K KÙ""
Ù KÕZRÕZÖK               &  ,"", Kü""
ü K6K""6K K  ,            &  •""•ÖKæf""
æfÖK6""6ÖK  8            &  B""BÖKÔ(""
Ô(ÖKÞ‰""Þ‰ÖK  D          ÓfRÓfÖK¬R
¬ K             X
M  	 NÀ¨Ä*  ""?T    NÀ¨Ä   ¯”L  ¬ KH‚ ¬ÖKH… *  ¬0MHî KH/ mÖKH% •ÖKHa ÎÖKH& *  6ÖKH BÖKH Ô(ÖKH ï4ÖKH„ ï40MHÌ *  ì8€WH. ª: KH) VN KH åQ KH3 R` KH *  ÓfÖKH@ æfÖKH zÖKH( z0MHq g KH! *  æƒ KH ´‰  H" Þ‰ÖKHb     (  ""?T¨þ*  ¬ð3hÅ¬RhÊ¬Ðfh@î""h” mRhä*  •""hoÎRhI6""híB""h
Ô(""h(*  ï4ð3h2ï4Ðfh®è8€Mh  ª:""hÃ VN""h. *  åQ""hB R`""hu ÓfRh	æf""hÐóy  hµ*  öy  hÊzð3hszÐfhKg""hì æƒ""h"  ´‰""h)      Þ‰""hLZŠÕZh* ¯”   
   ""?T  *    
THIS IS THE RMS DEFINE UTILITY, VERS*  & ION 2   
CAN'T ASSIGN LUN

MAXIMUM *  L NESTING DEPTH EXCEEDED IN INDIRECT FIL*  r E

OPEN ERROR IN INDIRECT FILE

SY*  ˜ NTAX ERROR IN INDIRECT FILE SPECIFICAT*  ¾ ION

I-O ERROR IN PROCESSING INDIREC*  ä T FILE

FILE SPECIFICATION IS TOO BI*  
G

ERROR WITH INDIRECT FILE

ILLEG*  0AL VALUE, TYPE ? FOR HELP

DO YOU WA*  VNT TO SUPERCEDE THE FILE(NO)?
IF YOU *  |SAY YES, AN EXISTING FILE       WITH THE SAM*  ¢E NAME WILL
BE DELETED, AND IN ITS PL*  ÈACE WILL BE YOUR NEW FILE.


YOUR F*  îILE HAS BEEN CREATED!!! -- 
YOUR FILE*   HAS BEEN PROCESSED AND A COMMAND FILE*  : GENERATED!! --
NO DEFAULT, YOU MUST *  `ENTER A VALUE

	THIS FILE CANNOT BE *  †CREATED, START OVER AGAIN.
	RMS STATU  ¬S CODE = I   »  »	SYSTEM CODE = W   Ð*  Ð
		** PRIVILEGE VIOLATION **
		** DI*  öRECTORY NOT FOUND **
		** DEVICE NOT *  AVAILABLE **
		** DEVICE IS FULL **
*  B      THIS FILE CANNOT BE CREATED DUE TO AN *  hERROR IN THE FILE SPECIFICATION.
DO Y*  ŽOU WISH TO REENTER THE ENTIRE FILE SPE*  ´CIFICATION (YES)?
THE FILE CANNOT BE *  ÚCREATED DUE TO AN ERROR IN THE UIC
OR*    DEVICE SPECIFICATIONS.  YOU MAY CORRE*  &CT THE ERROR BY ANSWERING YES
AND THE*  LN REENTERING THE ENTIRE FILE SPECIFICA*  rTION. IF YOU ANSWER NO,
THIS FILE WIL*  ˜L NOT BE CREATED, BUT YOU CAN START AN*  ¾OTHER ONE.

;YOU ORIGINALLY GAVE A B*  äAD FILE SPECIFICATION WHICH       WAS OUTPUT*  
 TO
;YOUR COMMAND FILE.  YOU MUST EDI*  0T THE CHANGE IN YOURSELF.
;
	  YOU H*  VAVE SPECIFIED A VIRTUAL BLOCK NUMBER
*  |	WHICH IS NOT WITHIN THE BOUNDARIES OF*  ¢ THE FILE.

THE FILE WASN'T CREATED *  ÈSINCE YOU SPECIFIED A BLOCK WHICH
IS *  îIN USE. WILL YOU NOW ACCEPT AN APPROXI*  MATION OF THAT LOCATION (YES)?
YOU CA*  :N NOW DECIDE THAT YOU WANTED THE BEST *  `APPROXIMATIONFOR THE LOCICAL BLOCK YOU*  † DESIGNATED AND ANSWER YES. IF YOU STI*  ¬LL
WANT EXA      CTLY THAT LOCATION OR NOTH*  ÒING, YOU WILL GET NOTHING BY ANSWERING
  ø NO.
       ÒM  	 OŽØÌ*  0²#	    OŽØÌ   ¯”L  ¤¯ŒÈ@  \±ŒÈ@  *      (î0²#	h  X:†¨ ƒ±:2h †±/Kh  *  Ž±J…h
 Ž±P…h “±†}h “±”h ¯”   
         *    &f¦w  ÷‹  ÷	¾7
 7 @•,€ÀåÀÿq"  X:†  X:†  X:† X:† *  &   `-KacJE[Ã!Ãm*  L  Äí @•Á  †ÕÁ
ûÒ± )÷	L÷	  X:† X:† *  r R†é çÃå÷  7• Ã
f@• †Õ   X:† X:† *  ˜ †      &Ý	€…Ò€ÖÀ5 ]U ª†E¨¯ ‚*  ¾ …€Á  ‡ 
 :Á  ‚æ&@E ÷	ÿA  
X:†  X:†  *  ä · Îà· Ì†ª 
÷	Š ÷	Ð Â¢ÂÀE  X:† X:† *  
 ÿ÷	v œÀEÀÿÀ€c Á Â ¤‘Á
ü¢ÿ   X:† X:† *  0­÷‹ ‰÷­  ¦†„÷	@ Á	Ã£.   X:† X:† X:† *  V„
Ã
·
 æ&fÅ Ä Ã Á÷	  ÷	(  
X:† X:† X:† X:† $¤¯ŒÈ*  |  …„ƒ¶Ã÷	8 †À÷	" †À£.   \±ŒÈ*  ¢£$ ·
 „
Ã
ë÷ ‡ Ì¥Z ‡£A ‡ Ì¥  X:† X:† *  È9       ‡£0	‡ 
Ã
£  £	 ‚
„
Ã
ö‡        M  	 pÆ  *  ôXR    pÆ     ¯”L  :©@  :©ÿ@  *  :©Ï_@  :©¿`@  :©@  <©@  <©P}@  *  [©(}@  a© }@  ¹«WŒ@  é«@Q@      (ð"  Œ©?Th8 3M`©è ®ªh  ¯”   
         "    ABDEFMNOPRSTUXYZ<>  ¶ Â Ö î   (  ¤  
¶ Â Ö î   
   Ü   DJp  (  Ü 2 
D
Jpz 
  * è â ŠÖâ  !  è â Š
Öâ 
 *  6   w	  &D…•Â¥% “ùŠÀåB  & 
¹«WŒ:*  \ ‡ &       Ð¥V A ÷	  À
ÀCƒ
Â   <©P}*  ‚ 2£ÿÿÂ
û„
Â¦ Ž‡AÎÞ	ÖÐÐ•% 
  ÿÿ *  ¨ „ Ì¥V å‡ P”Ã
ý‡ Ð•  B”f‚÷	    (:©  Î Ã
õ‡ æ  =æ  :æ"  :©ÿ ÿ
:© ÿ
*  ä   7æ  4H”ÈÅ€ ¢  ¢ È•  €
Ã
ò"  :©  €

<© ÿ
*  
‡ ÷	h Š€‡ Ð• Ã
ü7
  ‡ Ð‹Ã
üÀ

  3M`©  *  0‡ Ð• Ð•
 ·
  Ã
ø‡ æ  æ  Ð•	 A*  3M`©  :©¿` ÿ
 :©Ï_  €
*  V¦
NÞ	Ã
ö–
‡ æ  ôA÷	  Ã
û‡ Ð•  :© ÿ
 [©(}*        |  Ã
ü‡ Ð•	 Aæ ÷	  AÎ
ûÖÂ	 ÷	$   [©(}*  ¢Ð•. ÷	  Â ÷	 AÐ•; 
÷	  Ã
à‡ Â
  
[©(} :©Ï_*  Èýð¥  ÿÿùÀ
øAá÷	  E‡ AáÂ÷	  E  a© }&é«@Q  î‡       &M  	 TÀh×*  ì    TÀh×   ¯”L  ,0q…@  ,0……@  *  9©""@  E© @  s© d@  š©@  Û©RH@ *  6ªp;@  6ªVd@  6ª\d@  µª X@  A«Ð@  *  A«ZqH€ —«ç@  —«è@  «)x@  «6x@  *  Æ«ˆ@  Ë«Ú}@  Ì«ò@  Ì«ÖK@  Ñ« KH *  å«ˆr@  ¬ìQH ¬ƒd@  ¬Ö}@  ¬ÚKH *  ¬ÏL@  ¬M@  0²#	@      (  Zg¤#¸, *        Ñ«  h  X:†¨>Î :h   «˜rh8ô«Þh2*  ¬|—h<¬Nh0F©Ü8˜U(Uh  '.ihø   áy sh F©Ü(    
   Zg¤#      SY:    *     TI    TI  üÿÈÿþÿÉÿýÿÛÿûÿôÿÿÿÇÿ    *   
   X:†  *       X P                            
   
X   &    d   *   *   X     
  X  X   X P           h   h                       b 
  b          ~   ~ ¨ Ò Ë        ¨ Ò Ë  ¨ *  ¨                             "   SY:CMI  Î .CMDCMIM   ò   ò     ü   ü       ÿ      
   >  6ªVd
6ª\d 0  0     6  6
   >  
   F©Ü  *    ÷	h·0æ æ  æiÿˆ÷	÷ <÷Õ ó    
X:†0Ë«Ú}"X:†<(X:†ó *  & À  ð ô ð6ö ÷	  †÷ <÷U@ <Q(  X:†  X:†6—«çX:†<$X:†<*  L ú ø #Å`Í• ÷	  Á Â  Å  ÷	  †  6ªp;¬ÏL"E© &0²#	$  r ÷ <÷U€ <÷	  À  ÁZ÷	  æ(  X:†<X:†<«6x¬ƒdZ s© d*  ’ <æÿˆ¿÷  
ÄÛÿÃ  ×"P ƒËP Ã  X:†<š©Ì«ÖK*  ¸   Ä  Â  ÂbÀ  ø lú  ƒKËí  ÷ê &        Ì«ÖKš©Ì«òX:†  $Ì«ò(ê $  Þ   ÷ø   ÷	  —Àò 
À%öÿ
Æ0æ(  9©""ø 
å«ˆrÆ«ˆX:†ò  X:†0*  þ <æÿˆæ3ÿˆ&À  ÷	  €Á  DÛ   X:†<X:†  —«è Zg¤# (  $ÑúÀ ÷	  ÷	  w  2wœ  *  Zg¤# µª Xµª X ,0q…"X:†2&,0……*  H4‡ ÄÆÿ
÷ø   ÃÄòÿ÷ <÷U <ò÷	$  X:†4ø 9©""X:†<$X:†<   n  7
 À  Àe  7  7 À  Á*  6ªp;¬ƒd ¬Ö}A«ÐA«Ð ¬M  Š8Â ”Â
ý‡ 
  X:†8       ¾M  	 OÀ(Ñ*  ¹¡K    OÀ(Ñ         ¯”L  C«®FH¬ ¬®H¬ *  ¬îeH¬     (  X:†¨PA«Ðh¤C«þ~hª*  C«ÿ~h¬D«a	h°S«P<h¨	¬ïWhÈ 	¬ðWhè *  ¬¯h( ¬°hx ¬šhø¬ƒdh¤¬¯h  ¬°hX¬9"h  ¯”   
   X:†(   ( P           8   8 @          „          2 
  2          N   N È            
  È  x   x P           ˆ   ˆ                       ‚ 
  ‚          ž   ž è             
  è  È *  È                             (             *  î                       (         P                                         *  *  (     
  (  X%  X                                ¬   z  z  x       x        –M  	 NÀEÛ*  RBz    NÀEÛ   ¯”L  ©èvH ©8wH  *  © xH ©ðxH ©XzH Ï«®H     (  *  R«Bz¨8 ©Àvh0 ©ˆwh8 ©yh. F©Üh *  e©ö&h
 –©éh ™©`'h š©h 6ªh *  ‘ªh « }h «È}h Ì«òh Ì«Vh *  Ì«ÖKh  Î«/	h& Î«0	h( Î«1	h* Î«@yh "  Ï«lh Ï«ìXh" a¬ Kh ¯”   
   R«Bz  *                                                  &         0   0        „ M  	 QÀ…È*  Ñ¢Z    QÀ…È   ¯”L      (  ¬ }¸   ¬ðZh  ¯”   
   ¬ }      F©€‰ ÑP Ð                 ~M  	 TÀ(ê*  Ìr	    TÀ(ê   ¯”L  ©†@  ?©À@  *  C©î!@  C©""@  C©ÔZ@  D©½`@  D©È`@  *  D© x@  D©]z@  E©@  F©Ü@  e©ö&@  *  š©?9@  š©ÀS@  š©ôq@  ¾©@Q@  ¿©  @  *  ªn8@  4ªšw@  4ªÈy@  6ªçe@  6ªü}@  *  6ªý@  6ª€@  Þª@  Þª (@  Þª¯8@  *  Þª°8@  -«®}@  C« 2@  C«þ~@  •«By@  *        •«Gy@  ¹« d@  ¹«€Š@  º« K@  ½«€@  *  ¾«À]@  Á« @  Ã«€p@  Ä«À]@  È« @  *  Ê«À@  Ë« K@  Ë«@ƒ@  Ì«V@  Ì«€p@  *  Î«/	@  Ï«€%@  Ñ«¸Z@  ù« d@  ¬°"@  *  ¬@  1¬N@  _¬€p@  e¬@Q@  f¬@Q@  *  l¬Àž@  n¬"@      (  Ì«e	¸^E© h  "  Œª¸" ¬ÏLh  ‹ªÐ¸8 ¯”   
   Ì«e	      À‚    E© ‹ªÐ  	    HELPÿ 
   Œª          ‹ªÐ   Ì«e	     €   @ ?   @ /* À€È  À%  C«þ~
@ C«þ~@ *   L 
       j À†  \   C©î!j 
C©""\  ‹ªÐ          IDÿd
   Œª       ‹ªÐ  Ì«e	* $  *  @  6 À‚  Ê    À‚  Ê    À†  *  C«þ~
6 Ñ«¸Z?©ÀÑ«¸Z?©À"ªn8  J  =    Ê    Ð„L Èƒ    ='   •«Gy•«ByL   ~ 
-«®}   d j À‚  È  ,  j Ê    À‚'  j Ñ«¸Z  ~ 
6ªçej D©È`   |   Èƒ    È…    À‚  Ä*  Ñ«¸Z  Š 

D©½`  :
6ªü}     ˜ À„¨ :   €  ¨ À†  Î È*  ¹«€Š˜ 
¨ ¬°"e©ö&¨ Þª (Î   ª   ° À€Ä      Î *    '    
° ¾©@Qe©ö&Î f¬@Q   À   Î À          À‚  .  Ø À‚  Ä(  e©ö&Î 
C©ÔZÑ«¸ZÞªØ Ñ«¸Z  Ú      î *     î À€;  (  ù« de©ö&
î l¬Àže©ö&î Þª*  ò ø À„  Â       *       Àœ     [ž  *  ø Þªe©ö&n¬"e©ö&"e©ö&(¹«€Š"     Â&*‚  ,€Â0*‚  ]ž   @&  e©ö&&_¬€p0e¬@Q¬  6    À‚  /  JÀ†    È  È‡)  e©ö&
6ªý6ª€JD©]z  À
€
  P    >    V
1¬N>
   ‹ªÐ    IDÿ 
   Œª       ‹ªÐ  Ì«e	V  V‚        Á« Ì«V ‹ªÐ          APÿ
   Œª       ‹ªÐ  Ì«e	^  ^ƒ        ¹« dÌ«V ‹ªÐ    RWÿ
   Œª       ‹ªÐ  Ì«e	f  f„        Ê«ÀÌ«V ‹ªÐ    SUÿ 
   Œª
   
    ‹ªÐ  Ì«e	n  n…        Ë«@ƒÌ«V ‹ªÐ    SLÿ
   Œª       ‹ªÐ  Ì«e	v  v†    Ö  Ë« KÌ«V
Ö ‹ªÐ    TRÿ 
   Œª       ‹ªÐ  Ì«e	~  ~‡        Ì«€pÌ«V ‹ªÐ    WFÿ 
   Œª       ‹ªÐ  Ì«e	†  †ˆ        Ï«      €%Ì«V ‹ªÐ    LOÿ 
   Œª       ‹ªÐ  Ì«e	Ž  Ž‰        Ä«À]Ì«V ‹ªÐ      FOÿ 
   Œª        ‹ªÐ   Ì«e	–  –Š    ì  ¾«À]Ì«V
ì ‹ªÐ#   # KRÿ 
   Œª    #   ‹ªÐ#  Ì«e	ž  ž‹      Ã«€pÌ«V
 ‹ªÐ&   & BLÿª
   Œª    &   ‹ªÐ&  Ì«e	¦  ¦Œ    .  º« KÌ«V
. ‹ªÐ)   ) PDÿª
   Œª    )   ‹ªÐ)  Ì«e	®(  ®    @Ä    À‚  NÈÀ„  O€     À†(  È« Ì«V
@4ªšwÑ«¸ZÈ"F©      Ü   Ò    :  àÀ„  È      À‚  :)  ©†
½«€à  Š 
D© x4ªÈy 
  îôÀ‚    ôš©ÀS ‹ªÐ,   , RELÿ
   Œª    ,   ‹ªÐ,  Ì«e	ô  ôŽ     Î«/	
 ‹ªÐ0   0 SEQÿ
   Œª    0   ‹ªÐ0  Ì«e	ü  ü      Î«/	
 ‹ªÐ4   4 IDXÿ
   Œª      4   ‹ªÐ4  Ì«e	&      Ä    À‚  À†    :$À‚  Ì(  Î«/	
š©?9Ñ«¸Z¿©  $"š©ÀS$  &    À‚  :6À‚  Ì    À‚  :JÀ†(  Þª¯8
š©ôq6š©ÀSÞª°8š©ôq J  F    #T      Ð†    Â    À‚    Þª¯8
TC« 2Þª¯8š©ôq       ÒM  	 PÀ…á*  Ï"€    PÀ…á   ¯”L  {p!H     (  *  Ï«"€¸º ¹« dhF º« KhT ¾«À]h8 À« dh¨ *  Á« h* Ã«€phb Ä«À]hš È« hp Ê«Àh *  Ë« Kh Ë«@ƒh  Ì«œh  Ì«t!h¶ Ì«€ph~   Ï«€%hŒ ¯”   
   Ï«"€  *                 +        €        *  &  €   @         @      ¶             ¶ *  L          @.        @    -           *  r  0¸                              ¸ &  ˜                                   0        .M  	 NÀEÛ*  ×Œ    NÀEÛ   ¯”L  F©Ü@  š©@  *  š©ôq@  « }@  «È}@  Î«@y@      (  *  Zg©#8@ š©gh, Þª¸eh  ‰¬Nh< ¯”   
   Zg©#  *    ÷5    ÂÁ  `Áe w   ‚Á  ”Â
ý  F©Ü« }«È}"« }  & w  ‡ ÷ôÿ  Æ  Îe ‡ w     « }š©Î«@yš©ôq       ú M  	 NÀÅÎ*  ¹€Š    NÀÅÎ   ¯”L  š©@  Ì«ò@  *  Ì«ÖK@  “±†}@  “±”@      (  Zg©#8"   ¹«€Šh  Ñ«¸Zh ¯”   
   Zg©#      ÷    ÷    ‡ ÷  ÷  7&  “±”Ì«ò“±†}      Ì«ÖKš©Ì«ÖK     Îe ‡   Ì«ò       ŒM  	 NÀÕ*  DKy    NÀÕ   ¯”L  F©Ü@  –©é@  *  « }@  «È}@  A«Ð@  C«®F@      (  "  Zg¤#¸ Zg©#8J D©½`h  ¯”   
   Zg¤#        €  @  ` €        
   Zg©#      Â  Âå  ÷5   ·   ‡ ·
  « }
A«ÐF©Ü–©é"     À  72    Àe   õÀ]*  A«ÐC«®F Zg¤#  F©ÜZg¤#   8   Á  !w  ·  ‡   –©é«È}«È}–©é       M  	 NÀQÀ*  ×ìŠ    NÀQÀ   ¯”L  F©Ü@  Þª¸e@  *  Ì«V      @  Î«1	@  Î«@y@      (  Zg©#82 "  ×ªìŠh  Þªà8h Þªó8h ¯”   
   Zg©#  *    ·  À  7œ   ‡ ÷5€   7  À  Â &  Î«@y
Ì«VÎ«1	F©Ü Î«1	$Î«1	  & ÷	  ÷U   ‡   Þª¸eF©Ü       
M  	 PÀ¼*  ¹+K    PÀ¼   ¯”L  ©y@  ©Xz@  *  D©½`@  F©Ü@  e©ö&@  –©é@  ™©`'@  *  š©@  š©g@  6ª@  Þª¸e@  « }@  *  «È}@  A«Ð@  C«®F@  C«þ~@  C«ÿ~@  *  D«a	@  S«P<@  ¹« d@  ¹«€Š@  Ì«ò@  *  Ì«ÖK@  Î«@y@  Ï«®@  Ï«l@  Ñ«  @  *  Ñ« K@  ¬Ö}@        a¬ K@  “±†}@  “±”@  *      (  R«{è Zg©#8n?©ÀhœC©î!h  *  C©""h† C©ÔZh°D©È`hèE©h  ¾©@Qhp*  ªn8h 6ªp;h6ªçeh6ªHfhÔ 6ªü}hö *  Þªh|Þª (hž-«®}hD•«Byht •«Gyhl *  ¹«Œhb ù« dh|¬°"h¬h8¬@hf*  _¬€phe¬@Qhf¬@Qhòl¬Àžhün¬"h
  ¯”   
   R«{              
   Zg©#      7
  7
  ÷   ÷    ÷  &  a¬ K
e©ö&6ªD«a	« }« }     ÷å    ÷  &  –©éA«Ð
–©éA«ÐC«®F 
  $   7
  À  Á  
À
ý÷&  «È}A      «ÐC«®F Ï«®Ï«l  :    ÷    7
 À&  Ñ«  R«{ 
Ñ« KR«{  R«{ *  J   Àe 7  7  7
  ÷	 ‡ ÷  7  ‡ ÷ÿÿ&  ¬Ö}C«þ~C«ÿ~™©`'Ì«ÖK"Ì«ò&  p   7
  Ã  Ä  ÷	  ‡ ×-   1‡ Ã&  ™©`'
™©`'Ì«ÖKÌ«ò¹«€Š™©`'*  ’   Ä  ÷E   ‡ À  ð5  	÷  ÷øÿ  &  Ì«ÖKÌ«òC«þ~¬Ö} ™©`'(š©*  ¸ 7
  ð5  ÷  ÷  ÷U   ÷E   Ì«ÖK™©`'™©`'$F©Ü*  Þ   ‡ ÷U   ÷   Îe ‡ ÷Eû  ÷E   ‡    F©ÜF©Ü™©`' e©ö&&a¬ K*  7
  7
  ‡ Á  ·  À        à÷5   ÷5€(  š©
F©ÜR«{  Î«@yÌ«ò"F©Ü*  *  ‘	÷	  ‡ ÷5   ,÷5   À  ÀEÿü   F©ÜÞª¸ee©ö&F©Ü$a¬ K*  P  ·  ÷	h Á Ø÷5   è·  ÷	  Î«@yR«{ e©ö&&Î«@y*  vP ÷	Z ·  À  Â  ÷	  ‡ ÷þÿ  7
  Îe &  Î«@y“±”“±†}Þª¸e š©$Ì«ÖK"  œ‡ À  7  7  7à  àÀ  Àå  7 &  Ì«ò“±”“±†}“±†}« }A«Ð*  º  í÷5   é‡ À Á €Â  À Á @Â&  –©ée©ö&R«{ R«{  "R«{ *  à w0  wP  ÷	  ‡ À€ ÷	" ºÀ@ ÷	 »  R«{       e©ö&e©ö&Þª¸e*  À À ÷	 ‡ À  ò÷5   Ö÷óÿ    F©Ü(š©*  ,w 
Á  ÷5   ñ5  ñ5   ÷×ÿ    
¬Ö}F©Ü(š©*  R€€€€€Á ñ5  ÷Øÿ  Öw Â   "š©*  xÁÁÁ7P  ÷5 €  wP  À  pP  ‡ ·   a¬ KF©Ü–©é ©y$©Xz(  ž  ÷U   ÷	  Á  À  Á5 
@ ÷  &  Î«@y
F©ÜD©½`« }«È}&C«®F&  Â  @ †Â  à”Â
ýw  ÷å    @ ƒw (  S«P<A«ÐC«®F
S«P<A«ÐS«P<*  ä  ‡ À  ð­   ‡÷=    ÷5à  w dÿ·&  š©g
¬Ö}6ª¹« d      C«þ~ a¬ K*  
  ÷	ÿ‡ ·
  À  ð­   ‚‡ ð5   ÷ýÿ  Î«@y6ª¬Ö}6ª*  0  ÷õÿ  7
  Îe ‡ À  ð5  ÷5€      š©š©Ì«ÖK¬Ö}(a¬ K  V÷5@   ÷	pý‡ ÷Ðÿ  æ  
a¬ Kš©       
M  	 NÀžÀ*  Ï+}    NÀžÀ   ¯”L  {p!@  ©Àv@  *  ©èv@  ©8w@  © x@  ©ðx@  ©y@  *  ©Xz@  D©½`@  F©Ü@  –©é@  š©@  *  Þªà8@  Þª¸e@  C«þ~@  ¹«€Š@  Ì«œ@  *  Ì«ò@  Ì«V@  Ì«t!@  Ì«ÖK@  Î«/	@  *  Î«0	@  Î«@y@  Ï«l@  Ï«ìX@  Ñ«  @  *  Ñ« K@  ¬Ö}@        ƒ±:2@  Ž±J…@  Ž±P…@  *  “±†}@  “±”@      (  Zg¤#¸ Zg©#8v*  ©†h^D© xhªD©]zh2š©?9hHš©3:h¬ *  š©ÀShjš©ôqhP¿©  hÞ4ªšwhÔ 4ªÈyhd*  6ªýh*6ª€hÞªXhÞª€hVÞªÐhø*  Þª¯8h Þª°8hPC« 2h\£«Àhˆ½«t!hæ*  ½«€hÎ«Xzhz¬&Šhü1¬Nh  ¯”   
   Zg¤#       y
   Zg©#  *    À  Á  ÷5   Áe Áe ð  1<    Ì«V
¬Ö}F©Ü*  & B	<  >÷5€   	ð5  6Â  Á  7<  F©Ü Ï«ìX$Ï«l*  L 
   07<  ,Â  Á  7L
   \  
\ <"  Ï«l      Ï«l Ï«lÏ«ìXC«þ~*  r   	< ð‹ ÷5€   7L    7\      F©Ü C«þ~(C«þ~*  ˜ ÷5   ·  ÷	  ‡ ÷	P ÷úÿ  ÷5€      
F©ÜÎ«@yÞªà8"š©(F©Ü*  ¾ ÷   ÷   Îe ‡ ÷	( ÷5€   À   
Ì«ÖKÌ«ÖK"F©Ü"  ä À ÷    7à  ÷    7`  çÀ&  “±”Ì«òÌ«ò“±†}Ì«ÖKÌ«ÖK*    ð5  ð5   ÷5   ÷üÿ  ¬Ö}"F©Ü   (  ÷¿ÿ  ‡ ÷    ÷    Æ7&  š©š©“±”Ì«ò“±†}Ì«ÖK*  D  À÷öÿ  ò÷  ÷ùÿ  	Ä
ƒ
‡ ÷	 ó  Ì«òš©š©      š©&  j÷Àÿ  ÷5€   šŸ÷    ‡ ÷  ÷  &  š©F©ÜÌ«òÎ«/	Î«/	$Î«/	  Œ  ‡ ÷U   ÷    ÷e  &  Ì«òF©Ü©yÎ«0	
 © x
(     ÷    ÷E   ÷	ÔÿÀ  7   ÷Åÿ&  Î«0	Ì«ò
Î«/	F©Ü©y Î«0	"  Ä  7
  Îe ‡ ð    ðEû  0  0
&  š©Ì«ÖKF©Ü©8w©8w©èv  â  ‡ À  0  0ì    ÷e  &  ©Xz
©y©ðx©èv©ðx© x*  ø  ‡ À  ·  Àe ” ÷	  ‡ ÷E€  7
  7
&  ©y
Ì«VÎ«@yÞª¸e"F©Ü&Ì«V    7
  ÷	  ‡ ÷    ‡ ·  Á&  Î«/	Î«0	      ¹«€Š©Àv©yÎ«@y*  8  ñ À  1<  
7<  &f÷	¨ÿ  ¬Ö}Ì«œÏ«l $  ^€Àe     í÷U   ÷	  ÷E   ×-  &  {p!Ì«t!F©ÜD©½`F©Ü"©y  ~  -À  7\    7\    &&  ©Àv
©Àv©8wF©Ü©Xz–©é*  –     ÷5   ¦&¤: Â
ûÀ  Â  ÷	   ©ðx©èvF©Ü"Ñ«  &Ñ« K   ¼  €‚÷	  ÷	  €7L    Àe  7 &  Þª¸eÞª¸eD©½`©8wF©Ü© x*  Ø  Õ‡ ·  ÷	  À  Â ÷	  ‡ w Xþ·  ÷	&  ©yÎ«@yÞªà8Î«/	Þª¸e&Î«@y*  þ  À  Â ÷	  À  Â ÷	  ‡ Â       Â    Þªà8Ž±J…Þª¸eŽ±P…Þª¸e*  $·  ¦÷	  ‚·  ÷  Ý—  ÷‹ ×À  (  Î«@yÞªà8Î«@yŽ±P…"Ž±J… (Ž±J…*  J÷	  ‡ Â çÂ êÂ ·  ÷	  Â À    Þª¸eÎ«@y Þªà8(ƒ±:2
  p÷	  ‡   Þª¸e      2M  	 NÀEÂ*  Îì    NÀEÂ   ¯”L  Ìü@  Ìª%@  *  Ìªp@  #0MH" RÀ+@  aª%@  aªp@  *  Õf:d@  ãf%@  ãf—`@  ãfãe@  ãfCy@  *  ·k  @  ›r""@  Ey®H" Û©RH@ 6ªÊ8@  *  µª X@  A«ZqH€ «¯@  «&@  «•@  *  «{@  «)x@  «6x@  ¬ÚKH     (ø*  	      @h ÌCyh"   hÞÎu:h#thF *  ª%  hŠ ¡ENqhü ŠY¸Lhj ÛYIqh¶ßf*–hÚ *  þvL"hú EyÀh  áy sh^ ©hô M©Athþ *  P©hªhø X«hö ¬|—h    (  
       D   D 
   h *  h 
                          F "   P     F 
  Ž          š   š                       ” 
  ”          °   °                  Ú *  Ú 
          TI    TI              *         ·ðÿÀ  ð" ( ðj & ÷	´÷	  ÷	    Ìª%" j $«6x(6ªÊ8*  &fæ  æ …÷	  Æe …fæ  æ       …÷	    aª%«•aªp(«&*  LÆe …÷ ¬ÿ÷U ¦ÿ7
”ÿ7
’ÿ7
ŠÿÄŒ ÁP   $Œ *  rÁ

Á
ýÄŠ ô• 3 ôj & ÷	  ÷ nÿ÷U  Š j  ãfCy*  ˜ hÿ÷	  ÷	  ÷	  ÷LÿÁPÿÁ>ÿÁÁ  
ãf—`ãfãeãf%*  ¾Š ñ0ÿ ñ(ÿ ÀŠ ðÕ  ÷U   ÷5     Š Š "Ìü(Ìü*  äw Ì fæ  æ …÷	  Æe …fæŠ æ   aªp«{$Š *  
…÷	  Æe …fæ  æ …÷	  Æe …ÀŠ   «•aªp«&(Š *  0,  w   ÷¸þð®þ ðªþ fæŠ   ›r""(Š *  Væ …÷	  Æe …ÀŠ ,  w         À  ÷	  «¯Š "›r""*  |  ÁF Â$ ÷	  ÁF Â" ŠÂ
ý÷ fþæbþ  RÀ+F ·k  F *  ¢æÿˆ÷ ÷	  w ¨þÀÝÿ÷	  Á" Â$ ÷	  Ìªp Õf:dRÀ+"" *  È  ÷	  w ŒþÀä ÷	  ÷	  ‡ Àÿÿ÷	  ·k  Õf:dä µª Xµª X  î  Æþw fþ  RÀ+       4M  	 NÀ¨Ä*  Cy\}    NÀ¨Ä   ¯”L  t:@  «„@  *  ¯ˆw@  Ìü@  ‘È}@  „Àv@  … @  *  ÎÞ@  ÞÌ@  f@@  ""Ì@  ""«„@  *  ô&k@  ö&@;@  ð3³@  ð3Ì@  ð3¤@  *  ð3Cy@  á8à@  ,:@`@  ®Sk@  ®Sö&@        *  ¶T d@  ÛYàQ@  ÜY0 @  æY@@  E`€W@  *  ÓføM@  ÓfàQ@  Óf s@  ÓfCy@  ãfxd@  *  Rq  @  þv (@  ø€Ì@  «„Ì@      (  *  Ì«e	¸he©Àvh  Œª¸ ÛXHh  ‹ªÐ¸ 
  ¯”   
   Ì«e	       À   À  0 À„¢ À  hÊ¢ N(  „Àv … 0 ¢ ÓføMh¢    ¢ Y  0 ?   À†   À  *  ¢ ¯ˆw
0 ð3³ ,:@` ÓfàQ  4 hÀ  ¢ Ê  ¢ N  ¢ Y\ (  ht:
¢ ÛYàQ¢ ÛYàQ¢ \ 
   ‹ªÐ      IDÿ
   Œª          ‹ªÐ   Ì«e	L   L €¾ ?  0 À†  0 À        hÊ  *  ¾ 
ð3Ì0 ,:@`0 ÓfCyhÜY0   f \ ?  \ È    z À„\ À)  \ ð3Cy
\   Ê 
E`€Wz \     |   hÊ   ¢ N   ¢ Y  ¢ ?*  Óf shÌü¢ Ìü¢ ‘È}¢   ˜   z À†  z À  hÊ  ¢ ?*  ð3¤z 
,:@`z ãfxdhÜY0 ¢   °   ¢ È    À„¢ Ê  0 À†%  ð3Cy¢ 
  Ê 
¢ á8à0 `  Æ   0 Ä  Ö À†  æ :  æ :*  ,:@`0 
þv (Ö ÎÞæ ÞÌæ   Þ bÀ†  È  ö À  ö À„)  b¶T d
  D
ö ""«„ö    ô bÄ  À†  4.        À†  *  bô&k
ö&@;4®Sk""Ì  bÄ  À€;  "À†  4Â  *  bø€Ì
®Sk"ö&@;4®Sö&  &4Â  bÀ†  4Ê       À†&  4""Ì
bö&@;4f@Ìü  @  b[  NÀ‚  Â†  T,€Â†&  ""Ìb
þv (NæY@«„T  X  \]†    À†  h  «„\
«„ÌRq  h      ÊM   TÀ(Ñ*  l†ì    TÀ(Ñ   ¯”L  ,0q…@  ,0……@  *  9©""@  E© @  s© d@  š©@  Û©RH@ *  6ªp;@  6ªVd@  6ª\d@  µª X@  A«Ð@  *  A«ZqH€ —«ç@  —«è@  «)x@        «6x@  *  Æ«ˆ@  Ë«Ú}@  Ì«ò@  Ì«ÖK@  Ñ« KH *  å«ˆr@  ¬ìQH ¬ƒd@  ¬Ö}@  ¬ÚKH *  ¬ÏL@  ¬M@  0²#	@      (  Zg¤#¸, *  Ñ«  h  X:†¨BÎ :h   «˜rh8ô«Þh2*  ¬|—h<¬Nh0F©Ü8ÖU(Uh  '.ih(  áy sh, F©Ü(    
   Zg¤#      SY:     *     TI    TI  üÿÈÿþÿÉÿýÿÛÿûÿôÿÿÿÇÿ    *   
   X:†  *       X P                            
   
X   &    d   *   *   X     
  X  X   X P           h   h                       b 
  b                ~   ~ ¨ Ò Ë        ¨ Ò Ë  ¨ *  ¨                             "   SY:CMI  Î .CMDCMIM   ò   ò     ü   ü ÿ      
   >  6ªVd
6ª\d 0  0     6  6
   >      
   F©Ü  *    ÷	¦·0æ æ  æiÿˆ÷	N÷ <÷ÿ@   
X:†0Ë«Ú}"X:†<(X:†@*  & ÷ÿÿ>÷	r ÷Õ ó À  ð ô ð6ö ÷	  †(  X:†>X:†ó X:†   X:†6&—«ç*  L ÷ <÷U@ <aú ø Å`Í• ÷	  Á  X:†<X:†<&6ªp;(  r  Â  Å  ÷	  †÷ <÷U€ <÷	  À*  ¬      ÏLE© 0²#	X:†<X:†<$«6x(  –   Á˜÷	  Å×-< Á<ÁEøÿw >w*  ¬ƒd˜s© dX:†<X:†<"X:†>"  º >÷<@÷ <‡ ÷  
ÄÛÿÃ(  X:†>X:†<
X:†@X:†<š©*  Ø   ×"P ƒËP Ã  Ä  Â  ÂbÀ  ø l"  Ì«ÖKÌ«ÖKš©Ì«ò"X:†  *  þ ú  ƒKËí  ÷  ÷(  ÷	  ˆÀò 
À%*  Ì«ò9©""(å«ˆrÆ«ˆ$X:†ò *  $öÿÆ0×-@ÿ÷@<æ<æÿˆæ3ÿˆ*  
X:†0X:†@X:†@X:†<X:†<*  J&À  ÷	  €Á  DÔÑúÀ ÷	  &  X:†        —«èZg¤# $Zg¤# (µª X(  p÷	  w  2wœ  4‡ ÄÆÿ
÷((  
µª X,0q…X:†2,0……X:†4&($  ”  ¼Äòÿ÷ <÷U <ò÷	  7
 À&  9©""X:†<X:†<6ªp; ¬ƒd &  ´  Àe  7  7 À  Á8Â ”Â
ý‡ $  ¬Ö}A«ÐA«Ð ¬MX:†8      ÊM   TÀh×*  ì    TÀh×   ¯”L  ,0q…@  ,0……@  *  9©""@  E© @  s© d@  š©@  Û©RH@ *  6ªp;@  6ªVd@  6ª\d@  µª X@  A«Ð@  *  A«ZqH€ —«ç@  —«è@  «)x@  «6x@  *  Æ«ˆ@  Ë«Ú}@  Ì«ò@  Ì«ÖK@  Ñ« KH *        å«ˆr@  ¬ìQH ¬ƒd@  ¬Ö}@  ¬ÚKH *  ¬ÏL@  ¬M@  0²#	@      (  Zg¤#¸, *  Ñ«  h  X:†¨BÎ :h   «˜rh8ô«Þh2*  ¬|—h<¬Nh0F©Ü8ÖU(Uh  '.ih(  áy sh, F©Ü(    
   Zg¤#      SY:    *     TI    TI  üÿÈÿþÿÉÿýÿÛÿûÿôÿÿÿÇÿ    *   
   X:†  *       X P                            
   
X   &    d   *   *   X     
  X  X   X P           h   h                       b 
  b          ~   ~ ¨ Ò Ë        ¨ Ò Ë  ¨       *  ¨                             "   SY:CMI  Î .CMDCMIM   ò   ò     ü   ü ÿ      
   >  6ªVd
6ª\d 0  0     6  6
   >      
   F©Ü  *    ÷	¦·0æ æ  æiÿˆ÷	N÷ <÷ÿ@   
X:†0Ë«Ú}"X:†<(X:†@*  & ÷ÿÿ>÷	r ÷Õ ó À  ð ô ð6ö ÷	  †(  X:†>X:†ó X:†   X:†6&—«ç*  L ÷ <÷U@ <aú ø Å`Í• ÷	  Á  X:†<X:†<&6ªp;(  r  Â  Å  ÷	  †÷ <÷U€ <÷	  À*  ¬ÏLE© 0²#	X:†<X:†<$«6x(  –   Á˜÷	  Å      ×-< Á<ÁEøÿw >w*  ¬ƒd˜s© dX:†<X:†<"X:†>"  º >÷<@÷ <‡ ÷  
ÄÛÿÃ(  X:†>X:†<
X:†@X:†<š©*  Ø   ×"P ƒËP Ã  Ä  Â  ÂbÀ  ø l"  Ì«ÖKÌ«ÖKš©Ì«ò"X:†  *  þ ú  ƒKËí  ÷  ÷(  ÷	  ˆÀò 
À%*  Ì«ò9©""(å«ˆrÆ«ˆ$X:†ò *  $öÿÆ0×-@ÿ÷@<æ<æÿˆæ3ÿˆ*  
X:†0X:†@X:†@X:†<X:†<*  J&À  ÷	  €Á  DÔÑúÀ ÷	  &  X:†  —«èZg¤# $Zg¤# (µª X(  p÷	  w  2wœ        4‡ ÄÆÿ
÷((  
µª X,0q…X:†2,0……X:†4&($  ”  ¼Äòÿ÷ <÷U <ò÷	  7
 À&  9©""X:†<X:†<6ªp; ¬ƒd &  ´  Àe  7  7 À  Á8Â ”Â
ý‡ $  ¬Ö}A«ÐA«Ð ¬MX:†8       ªM   TÀ(Ñ*  l†ì    TÀ(Ñ   ¯”L  ,0q…@  ,0……@  *  9©""@  E© @  s© d@  š©@  Û©RH@ *  6ªp;@  6ªVd@  6ª\d@  µª X@  A«Ð@  *  A«ZqH€ —«ç@  —«è@  «)x@  «6x@  *  Æ«ˆ@  Ë«Ú}@  Ì«ò@  Ì«ÖK@  Ñ« KH *  å«ˆr@  ¬ìQH ¬ƒd@  ¬Ö}@  ¬ÚKH *  ¬ÏL@        ¬M@  0²#	@      (  Zg¤#¸, *  Ñ«  h  X:†¨BÎ :h   «˜rh8ô«Þh2*  ¬|—h<¬Nh0F©Ü8ÆU(Uh  '.ih  áy sh, F©Ü(    
   Zg¤#      SY:    *     TI    TI  üÿÈÿþÿÉÿýÿÛÿûÿôÿÿÿÇÿ    *   
   X:†  *       X P                            
   
X   &    d   *   *   X     
  X  X   X P           h   h                       b 
  b          ~   ~ ¨ Ò Ë        ¨ Ò Ë  ¨ *  ¨                             "   SY:CMI  Î .CMD      CMIM   ò   ò     ü   ü ÿ      
   >  6ªVd
6ª\d 0  0     6  6
   >      
   F©Ü  *    ÷	–·0æ æ  æiÿˆ÷	>÷ <÷ÿ@   
X:†0Ë«Ú}"X:†<(X:†@*  & ÷ÿÿ>÷	d ÷Õ ó À  ð ô ð6ö ÷	  `‡(  X:†>X:†ó X:†   X:†6&—«ç*  L ú ø Å`Í• ÷	  Á Â  Å  ÷	    6ªp; ¬ÏL$E© (0²#	(  r †÷ <÷U€ <÷	  À  Áˆ÷	  Ì×-(  
X:†<X:†<«6x¬ƒdˆ"s© d   – < Á<ÁEøÿw >w>÷<*  X:†<X:†<X:†>X:†>      X:†<*  ² @÷ <‡ ÷  
ÄÛÿÃ  ×"P ƒËP Ã  X:†@
X:†<š©Ì«ÖK*  Ø   Ä  Â  ÂbÀ  ø lú  ƒKËí  ÷
&  Ì«ÖKš©Ì«òX:†  $Ì«ò(
$  þ   ÷  ÷	  Àò 
À%öÿÆ0×-(  9©""
å«ˆrÆ«ˆX:†ò  X:†0(  @ÿ÷@<æ<æÿˆæ3ÿˆ&À  ÷	*  X:†@X:†@X:†<X:†<$X:†  *  B  €Á  DÔÑúÀ ÷	  ÷	  $  —«è
Zg¤# Zg¤#  µª X(µª X*  hw  2wœ  4‡ ÄÆÿ
÷  ¼Äòÿ÷(  
,0q…X:†2,0……X:†4 9©"""  Ž <÷U       <ò÷	  7
 À  Àe  7&  X:†<X:†<6ªp;¬ƒd ¬Ö}  ¬  7 À  Á8Â ”Â
ý‡   A«ÐA«Ð ¬MX:†8       ªM   TÀh×*  ì    TÀh×   ¯”L  ,0q…@  ,0……@  *  9©""@  E© @  s© d@  š©@  Û©RH@ *  6ªp;@  6ªVd@  6ª\d@  µª X@  A«Ð@  *  A«ZqH€ —«ç@  —«è@  «)x@  «6x@  *  Æ«ˆ@  Ë«Ú}@  Ì«ò@  Ì«ÖK@  Ñ« KH *  å«ˆr@  ¬ìQH ¬ƒd@  ¬Ö}@  ¬ÚKH *  ¬ÏL@  ¬M@  0²#	@      (  Zg¤#¸, *  Ñ«  h  X:†¨BÎ :h   «˜rh8ô«Þh2*  ¬|—h      <¬Nh0F©Ü8ÆU(Uh  '.ih  áy sh, F©Ü(    
   Zg¤#      SY:     *     TI    TI  üÿÈÿþÿÉÿýÿÛÿûÿôÿÿÿÇÿ    *   
   X:†  *       X P                            
   
X   &    d   *   *   X     
  X  X   X P           h   h                       b 
  b          ~   ~ ¨ Ò Ë        ¨ Ò Ë  ¨ *  ¨                             "   SY:CMI  Î .CMDCMIM   ò   ò     ü   ü ÿ      
   >  6ªVd
6ª\d 0  0           6  6
   >      
   F©Ü  *    ÷	–·0æ æ  æiÿˆ÷	>÷ <÷ÿ@   
X:†0Ë«Ú}"X:†<(X:†@*  & ÷ÿÿ>÷	d ÷Õ ó À  ð ô ð6ö ÷	  `‡(  X:†>X:†ó X:†   X:†6&—«ç*  L ú ø Å`Í• ÷	  Á Â  Å  ÷	    6ªp; ¬ÏL$E© (0²#	(  r †÷ <÷U€ <÷	  À  Áˆ÷	  Ì×-(  
X:†<X:†<«6x¬ƒdˆ"s© d   – < Á<ÁEøÿw >w>÷<*  X:†<X:†<X:†>X:†>X:†<*  ² @÷ <‡ ÷  
ÄÛÿÃ  ×"P ƒËP Ã  X:†@
X:†<š©Ì«ÖK*        Ø   Ä  Â  ÂbÀ  ø lú  ƒKËí  ÷
&  Ì«ÖKš©Ì«òX:†  $Ì«ò(
$  þ   ÷  ÷	  Àò 
À%öÿÆ0×-(  9©""
å«ˆrÆ«ˆX:†ò  X:†0(  @ÿ÷@<æ<æÿˆæ3ÿˆ&À  ÷	*  X:†@X:†@X:†<X:†<$X:†  *  B  €Á  DÔÑúÀ ÷	  ÷	  $  —«è
Zg¤# Zg¤#  µª X(µª X*  hw  2wœ  4‡ ÄÆÿ
÷  ¼Äòÿ÷(  
,0q…X:†2,0……X:†4 9©"""  Ž <÷U <ò÷	  7
 À  Àe  7&  X:†<X:†<6ªp;¬ƒd ¬Ö}  ¬  7 À  Á8Â       ”Â
ý‡   A«ÐA«Ð ¬MX:†8       æM   NÀEÂ*  ¡E?T    NÀEÂ   ¯”L  ï KH0 ÖKH% *  0MH« XÖKH$ X0MHg'ÖKH% ø8ÖKH) *  ¡E KH ¡EÖKH& ¡E0MHd ¡EÀvH) ¡EBxH' *  ¥F€WH% ýFÖKH4 ýF0MH#T KH$ NYÖKH, *  NY0MH:ÔZÖKH- ÔZ0MHÏ kfÖKH kf0MH0*  wÖKH  BxÖKH Bx0MH[    (  ¡E?T¨*
*  ï""h=ð3h»Ðfh–Xð3h×XÐfh³*  g'Ðfhqø8""hð¡E""hÈ	¡Eð3h¡ERhÚ	*  ¡E?Th
¡EÕZh 
¡EÐfhçýFð3h¡ýFÐfhm*  RG  h  #T""hNYð3hbNYÐfhœ	ÔZð3h“*  ÔZÐf      hfkfð3h7 kfÐfh% w""hÐBxð3hu  BxÐfhg¯”   
   ¡E?T  *    
IT'S TIME TO DEFINE THE PRIMARY KEY*  & 
POSITION OF KEY:
ENTER A VALUE REPRE*  L SENTING THE STARTING POSITION OF THE K*  r EY.
A KEY CAN START IN POSITION 0, WH*  ˜ ICH IS THE 1ST BYTE OF THE RECORD.

*  ¾ IF THE KEY IS SEGMENTED, YOU MAY ENTER*  ä  UP TO 8 POSITIONS.
IF YOU SPECIFY MO*  
RE THAN 1 POSITION, THE POSITIONS MUST*  0 BE ENCLOSED
IN PARENTHESES AND SEPAR*  VATED BY COMMAS.

SIZE OF KEY:
ENTER      *  | A VALUE REPRESENTING THE SIZE OF THE *  ¢KEY.

IF THE KEY IS SEGMENTED, YOU M*  ÈAY ENTER UP TO 8 SIZES, PROVIDING
YOU*  î HAVE ALREADY SPECIFIED AN EQUAL NUMBE*  R OF POSITIONS FOR THE KEY.
IF YOU SP*  :ECIFY MORE THAN 1 SIZE, THE SIZES MUST*  ` BE ENCLOSED IN
PARENTHESES AND SEPAR*  †ATED BY COMMAS.  THE COMBINED TOTAL OF*  ¬ THE SIZES
MUST BE LESS THAN 255.

*  ÒTOO MANY SEGMENTS, TRY AGAIN

UNEQUA*  øL NUMBER OF SEGMENTS, TRY AGAIN

KEY*   EXCEEDS MAXIMUM RECOR      D SIZE.

SUM O*  DF SEGMENTED KEY SIZES GREATER THAN 255*  j.

ENTER A NAME FOR YOUR KEY, IF YOU*   SO DESIRE(NONE):
YOU MAY OPTIONALLY *  ¶ASSOCIATE AN ALPHA-NUMERIC CHARACTER S*  ÜTRING
WITH THE KEY YOU HAVE JUST DEFI*  NED.  RMS WILL NEVER EXAMINE THIS STRI*  (NG.
IF YOU SPECIFY ONE, HOWEVER, RMS *  NWILL STORE IT IN THE FILE WITH THE
AS*  tSOCIATED KEY DEFINITION. THE MAXIMUM L*  šENGTH IS 32 CHARACTERS.

WILL YOU AL*  ÀLOW DUPLICATE KEYS(NO)?
IF YOU ALLOW *  æDUPLIC      ATES, RECORDS IN THE FILE MAY HA*  VE THE SAME
VALUES IN THE KEY FIELD. *  2OTHERWISE, DUPLICATES ARE NOT ALLOWED.*  X
DEFAULT IS NO FOR PRIMARY, YES FOR A*  ~LTERNATE KEYS. IN ORDER TO PERMIT
ALT*  ¤ERNATE KEYS TO CHANGE, YOU MUST NOW PE*  ÊRMIT THEM TO BE DUPLICATED.

DO YOU *  ðWANT TO DEFINE MORE KEYS(NO)?
FOR AN *  INDEXED FILE YOU MUST SPECIFY 1 OR MOR*  <E KEYS. YOU CAN THEN
REFERENCE THE RE*  bCORDS BY KEY.

WILL YOU ALLOW DUPLIC*  ˆATE KEYS(YES)?
WILL YOU ALLOW KEY      S TO*  ® CHANGE(YES)?
IF YOU SAY YES, YOU ARE*  Ô ALLOWING KEY VALUES WITHIN RECORDS TO*  ú
BE CHANGED DURING AN UPDATE OPERATIO*   N. THIS IS ONLY ALLOWED FOR
ALTERNATE*  F KEYS WHICH CAN BE DUPLICATED.

DO Y*  lOU WISH TO DEFINE A NULL KEY VALUE(NO)*  ’?
IF YOU WANT A NULL KEY VALUE, SPECI*  ¸FY A SINGLE CHARACTER. IF A
RECORD CO*  ÞNTAINS ONLY THAT CHARACTER THROUGHOUT *  THE ENTIRE KEY FIELD, RMS
WILL NOT CR*  *EATE AN ENTRY FOR THAT RECORD IN THE A*  PSSOCIATED INDEX.
      
FOR A NONPRINTING *  vCHARACTER, TYPE A '#' FOLLOWED
BY AN *  œOCTAL NUMBER. NOTE THAT '@' IS CONSIDE*  ÂRED NONPRINTING,
SINCE IT IS THE SYMB*  èOL FOR AN INDIRECT FILE. THEREFORE, IT*  	 MUST
BE ENTERED AS '#100'. LIKEWISE *  4	A '#' MUST BE ENTERED AS '#43'.
ALSO,*  Z	 A '?' MUST BE ENTERED AS '#77' SINCE *  €	IT IS THE SYMBOL FOR HELP.

O.K., EN*  ¦	TER YOUR NULL KEY VALUE CHARACTER:
TO*  Ì	O MANY KEYS!

JUST FINISHED ALTERNAT*  ò	E KEY NUMBER  0  ;THE FOLLOWING QUESTI  
ON      S DEAL WITH KEYS       M   NÀEÂ*  Îì    NÀEÂ   ¯”L  Ìü@  Ìª%@  *  Ìªp@  #0MH" RÀ+@  aª%@  aªp@  *  Õf:d@  ãf%@  ãf—`@  ãfãe@  ãfCy@  *  ·k  @  ›r""@  Ey®H" Û©RH@ 6ªÊ8@  *  µª X@  A«ZqH€ «¯@  «&@  «•@  *  «{@  «)x@  «6x@  ¬ÚKH     (î*  	@h ÌCyh"   hÞÎu:h#thF *  ª%  hŠ ¡ENqhü ŠY¸Lhj ÛYIqh¬ßf*–hÚ *  þvL"hú EyÀh  áy sh^ ©hô M©Athþ *  P©hªhø X«hö ¬|—h    (  
       D   D 
   h *        h 
                          F "   P     F 
  Ž          š   š                       ” 
  ”          °   °                  Ú *  Ú 
          TI    TI              *         ·ðÿÀ  ð" ( ðj & ÷	ª÷	  ÷	    Ìª%" j $«6x(6ªÊ8*  &fæ  æ …÷	  Æe …fæ  æ …÷	    aª%«•aªp(«&*  LÆe …÷ ¬ÿ÷U ¦ÿ7
”ÿ7
’ÿ7
ŠÿÄŒ ÁP   $Œ *  rÁ

Á
ýÄŠ ô• 3 ôj & ÷	  ÷ nÿ÷U  Š j  ãfCy*  ˜ hÿ÷	  ÷	  ÷	  ÷LÿÁPÿÁ>ÿÁÁ  
ãf—`      ãfãeãf%*  ¾Š ñ0ÿ ñ(ÿ ÀŠ ðÕ  ÷U   ÷5     Š Š "Ìü(Ìü*  äw Â fæ  æ …÷	  Æe …fæŠ æ   aªp«{$Š *  
…÷	  Æe …fæ  æ …÷	  Æe …ÀŠ   «•aªp«&(Š *  0,  w   ÷¸þð®þ ðªþ fæŠ   ›r""(Š *  Væ …÷	  Æe …ÀŠ ,  w   À  ÷	  «¯Š "›r""*  |  ÁF Â$ ÷	  ÁF Â" ŠÂ
ý÷ fþ÷   RÀ+F ·k  F (Ìªp *  ¢÷	  w ²þÀÝÿ÷	  Á" Â$ ÷	  ÷	  w –þ  Õf:dRÀ+"  ·k  $Õf:d*  ÈÀä ÷	  ÷	        ‡ Àÿÿ÷	  Æþw pþ  ä 
µª Xµª X RÀ+       †M   NÀEÛ*  =©§r    NÀEÛ   ¯”L  w—R;H) ›™R"H) *  K©Ò’H  e©’ŒH –©’ŒH-  ©’(H& .ªÒ`H+ *  4ªÒyH" 6ªgH% 7ªR;H1 7ªÒ`H2 :ª’(H' *  ;ªgH" ¤ª’ŒH Ûª’(H S«Ò’H$ Ä«Ò’H9 *  ï«Ò`H ¬ÒH3 ¬NH [¬R"H4     (  *  ?Tòy¸4w—O:h®›™O!hK©Ï‘hÌ e©‹h*  –©‹h   ©'h` .ªÏ_hP4ªÏxh† 6ªfh{*  7ªO:h}7ªÏ_hK:ª'h);ªfhì ¤ª‹h-*  Ûª'hS«Ï‘h¨ Ä«Ï‘h½ï«Ï_h ¬Ïh-   ¬Mhö[¬O!h×¯”   
   ?Tòy  *          %N%VR- THIS FEATURE AVAILABLE ONLY ON *  & RMS11K %N%VR- ONLY [*,*] OR [X,Y] IS L*  L EGAL AS DESTINATION %N%VR- ILLEGAL NUM*  r BER OF OUTPUT FILES %N%VR- ILLEGAL INP*  ˜ UT OPTION - %VA %N%VR- PRIVILEGED USER*  ¾  OPTION - %VA %N%VR- CONFLICTING OPTIO*  ä N - %VA %N%VR- ILLEGAL OPTION VALUE - *  
%VA %N%VR- OUTPUT FILE MISSING %N%VR- *  0ILLEGAL RMS RECORD FORMAT - %VA %N%VR-*  V ILLEGAL RMS FILE ORGANIZATION - %VA %*  |N%VR- ILLEGAL NUMBER OF INPUT FILES %N*  ¢%VR- COMMAND LINE TOO LONG       %N%VR- ILLE*  ÈGAL USE OF WILD CARDS IN SUMMARY LISTI*  îNG FILE %N%VR- UTILITY INPUT ERROR %N%*  VR- ILLEGAL DEVICE - %VA %N%VR- ILLOGI*  :CAL DEVICE - %VA %N%VR- I/O ERROR ENCO*  `UNTERED ON OUTPUT FILE - %VA %N%VR- I/*  †O ERROR ENCOUNTERED ON INPUT FILE %VA,*  ¬%N        VBN %VA TO %VA. CONTINUE (Y,*  ÒN)?  %N%VR- CHECK AFTER WRITE ERROR ON*  ø OUTPUT FILE %VA,%N        VBN %VA TO   %VA. CONTINUE (Y,N)?        L
M   NÀ¨Ä*  CyÌ    NÀ¨Ä   ¯”L  ³ÖK@  ³Ðf@  *  Ìü@        Ìª%@  ÌÖK@  ÌÐf@  Ìªp@  *  ÌCy@  ¤ÖK@  ¤Ðf@  È¥@  ÈR@  *  Þ@  	# }@  #t@  #0M@  ª%  @  *  E, K@  ,0Ïƒ@  Ô2 d@  RÀ+@  \g%@  *  ·k  @  mày@  CyÖK@  CyR@  CyÐf@  *  CyBx@  EyÀ@  Ey®@  G©P}@  µª X@  *  «¯@  «&@  «•@  «{@  «)x@  *  Ž±J…@  Ž±P…@  “±†}@  “±”@      (  *  CyÌ(Ät:hÈ «„h@¯ˆwhR ‘È}h’*  „Àvh … h( ÎÞh"ÞÌhZf@h¸*  ""ÌhÚ""ÞhÄ""zhÄ""VNh¶""«„hV*  ô&khêö&@;hœð3³hJ ð3Ìh  ð3      ¤hŠ*  ð3CyhÒá8àhäy: }hôy:x}h¨ ®S@h,*  ®Skhü®Sö&h†¶T dhÒÛYàQhÚ æY@h4*  E`€Whø ÓføMh8 ÓfàQhŽ Óf shxÓfCyhâ *  ãfxdh¨Rq  hîþv (hœw®Sh¨ø€Ìh
  ø€ö&h€«„Ìhn¯”   
   CyÌ      SY:    *                   À  ð ‡ Îe ‡ ÷5  Ìªp*  *    ‡ Îe ‡ Á  Â  ÷	  Îe ‡ ÀÕÿw   Ìü³Ðf³ÖKE, K*  P   fæ  æ …÷	  Æe …fæ  æ …÷	  Ô2 d
Ìªp«{ Ìª%*  v   Æe …À  0
 ÷E   ‡ Á  Â  ÷	  Îe&  «¯ÌªpÌüÌ      Ðf"ÌÖK&E, K*  œ  ‡ ÀÔÿw   Á  À  ŠÀ
ý÷  Pÿ÷  Lÿ(  Ô2 dÌCyEy® ÌCy&ÌCyEy®
*  Â 7
Nÿ‡ ÀX ð5 2 Îe ‡ 7
 w ° Á  Â  màyX Ìªp &ÈR*  è   ÷	  ÷	¶ÿÎe ‡ ÷E   Á  1Š, Â  Àþþ   È¥E, KÌüª%  $Ìª%*  Àå  2, fæ  æ …÷	  Æe …À  ,   ÌCyÌª%«•$Ìª%*  4 Àãÿ÷	  Á  Â ÷	  Á  Â  ŠÂ
ý(  RÀ+#t#0M ·k  #t"#0M*  ZÎe ‡ fæ  æ …÷	  Æe …‡ Á  Â    Ìªp«&$¤Ðf(¤ÖK*  €÷	  Îe ‡ ÀÓÿw   ÷E   Á        Â  ŠÂ
ý   E, KÔ2 dÌü#t"#0M*  ¦‡ ÀX ð5 2 ÷5   Á  Â  ÷	  ÷	( "  màyX ÌüCyÐf CyÖK$E, K*  ÌÎe ‡ Àþÿw   À÷ÿ÷	  ‡ Àÿÿ÷	  ‡ Îe   Ô2 dRÀ+"Ô2 d&  ò‡ Á  À  ŠÀ
ýÀ  ð  ( ÷  úý÷   EyÀEy®ª%  EyÀ EyÀ*    öý7
øý‡ ÷  ìý÷  èý‡ À‡ ÂÖý`·   EyÀEy®
“±”“±†}*  :ÒýƒÀûÿ÷	  w   Â¾ýR”À
ý·´ý‡ ÷²ý¨ý  RÀ+	# }*  `À¬ýÀe 7   7
˜ý÷ šý	÷	  †!w„ý  “±” G©P}*  †÷ †ýÀ ÷	  ñ5   w    Àfý         µª X,0Ïƒ",0Ïƒ$Þ*  ¬Á`ý÷	xÿ‡ Àÿÿ÷	  Îe ‡ Àôÿ÷	  Îe ‡   RÀ+"RÀ+*  Ò÷	L ×-8ý	 ÷	Ì ÷	 *ýß×-  	 ÷	¸ ÷  “±†}*  ø	 ýÀ  Á  ÷	$ÿ‡ ×-   Àõÿ÷	  ÷   
“±†}“±”“±†}$RÀ+*    íÁ  À ÷	þþ7
  ‡ ÷ ÚüÎe ‡ ÷    “±†}
  Þ(Ž±P…*  D×-  ÿ Îe ‡ ‡ ×-ºü ‡ Àóÿ÷	  Îe  Ž±J…&RÀ+*  j ‡ ÁžüÀ  @à€
÷	®þ‡ ÷	†ÿ÷  ÷    “±”"Ž±P…(Ž±J…*  Îe ‡ ÷	`ÿÂ  ÀhüÀå  2, ‡ Àöÿ÷	    ª%  EyÀ(RÀ+  ¶‡ Á  Â  w     CyRCyBx\g%             ,M   xÀ¨Ä*  »    xÀ¨Ä   ¯”L  <8"@  Q! }@  *  vLÎ@  gMH@  ®S@  µWk@  ßf  @  *  \gvL@  z*–@  :©@  <©@  <©!€@  *  ¹«´‰@  ¬°@      (  »(L»hd 
  ¯”   
   »  *     SEQUENTIALRELATIVE   INDEXED   0DIRE*  & CT     ORG=???   FIXED   VARIABLEST*  L REAM  VFC      RFM=??? ÷	  À   
  ¹«´‰"µWk*  r Ü À  Ð•
 ÷	  ÷	  	FILE ORGANIZATIO  
vLÎ®SQ! }*  ˜ N:
AÝ Â  Ã Ä
 ÷	  ÷	  Á  W¬       gMH\gvL"¬°*        ¾ ÷	  RMS VERSION NUMBER: 	Á  A 
  Q! }"z*–*  ä ÷	  ÷	  Á  Áe ñ f÷	  	CREATED:   :©
\gvL<8"Q! }*  
Â ÷	  Á  W,  ñ ÷	   	REV  <©!€<8""Q! }*  0ISED: Á Â ÷	  Á  A Ð•  Ð•( 
÷	  <8" <©!€<8"*  V  Ð•) ÷	  À  ðµ 2 À  w n Ã  À  &  :©\gvL¬°vLÎ$ßf  (vLÎ*  |÷	  FILE PROTECTION:  	Á Ð•[ Ã Á5  Q! }*  ¢ Ð•R Á5 Ð•W Á5 Ð•E Á5 Ð•D *  ÈÐ•, Ã
äÀ
Ð•] ÷	  ÷	  RECORD   \gvL Q! }*  î      FORMAT:	Å  
AÝ Â7 Ã Ä ÷	  A   ¬°7 $gMH*  
¨  ü€
Ð•= 
÷	  W­  ÷	  	FI  :©$Q! }*  :XED AREA SIZE=
AÝ0 
÷	  ÷	  Å  W­   :© \gvL$¬°*  ` %÷	  			MAXIMUM RECORD NUMBER=W-    
Q! }*  †ÿÿW-" ÿÐ•0 	f  f" 
÷	  –%÷	  $<©*  ¬  ÷	  RECORD ATTRIBUTES: Å  
CÝ Ã5  \gvLQ! } ¬°*  Ò W­  ÷	   	PRINT FILE FORMATÃ5  Q! }*  ø ÷	  		 FORTRANÃ5 ÷	   	CARRIAG  
Q! }Q! }*  E RETURNÃ5 	÷	  	NO SPANNING ÷	        Å  Q! }&\gvL  D  5
 ‡   ¬°       $	M   xÀ¨Ä*  {ùe    xÀ¨Ä   ¯”L  	@  »@  *  ô&@  ¡E@  9©""@  :©@  h©0!@  *  i© w@  s©Ýf@  «¯@  «&@  «•@  *  «E`@  «\g@  «)x@  «6x@  ¹«´‰@  *  Æ«ˆ@  å«ˆr@  ¬|—@  ¬¯@  ¬°@  *  ¬¯@  ¬°@  ¬ÚK@  ^¬?:@  ^¬@:@  *      (Â<8"h Q! }h(a'À+h €:""hZ*  vLÎh¢ gMHh2®ShDµWkh‚ ßf  h. *  \gvLhLz*–h8 i©ÀvhÜ
­YTè «·{è<   «»{è` «¹{è@ ¯”   
                   TI:    *               .                         .   *      .   . 
8       
  
  8  @   @      <   <        ‚ $  ‚   6@                     B @     6B  ž*  ž  ‰`B‚
àà‡ 7PôÄE ÿ`5( 7Fô*  ÄfüÿÎE ÿ`ƒáõ, ÷2ô‡ f·"ô÷	  Å    $«6x(¬¯*  êõ•  õ  ( õ• , õ& õ  õ• 3 õ
    &*    õ‚ & 7 îó÷	zÿCÄÃEÿ×   ÷	|ÿ  
‚ *  6Â
ô÷5 ÌóÄ&÷	  w ,fæZfæ   &h©0!"Z*  \…÷	  Æe …Å  õ  $ õ¢  õ¢        fæ  «•¬¯¬¯¢ "¢ *  ‚Zfæ …÷	  Æe …÷5 @róÀ¢ ÷	‚D  Z«&"¢ *  ¨SP -- VERSION Á B÷	  ÷	ˆw ´ ÷	ÒþC  :©*  ÎÄÃEÿ×   IÅ  ÷	Ðþõ‚ & õ& õ   ¬°‚  &*  ôõ•"  õ• 3 ÷5 ó07
üò÷	f*‡õ  f  $ *  æZfæ …÷	  Æe …÷	  W­   ÷	    Z«E`»(	*  @÷	  ÷	  ffæ …÷	  Æe …÷5 ¢òÓ  ¡Eô&«¯*  f÷	0 Â
®À¢ È•
 ÷	Ð Æ„òfæ  æ   ¢ $¬¯*  Œ…÷	  Æe …¡ ‡ ÷	  fæZfæ …÷	    «      ¯¹«´‰Z(«E`*  ²Æe …õµ  2 3õ‹ 0Ã  ó  $ ó& ó  ¬°¬°$&*  Ø fæZææ …÷	  Æe …÷	  ‡À	  Z«&"i© w*  þBÀ¢ ÷	: ÷	> òfæ  æ …÷	  Æe   
¢ ¬°$«¯*  $…‡ ‚”÷	 J R aÃ
úÐ•	 ”Á
ý*  J‡ Å  Àå¢ 5 fæü fæ …÷	  Æe …  ¬¯¢ "«\g*  pÀ¢ ‡ ÷	  ÷5 †ñ)ÁvÃ‚ñÄ|ñ÷vñ÷	  ¢ ¹«´‰v*  –  †÷	: W- ÿW- êÿ± ‡ w Æþ÷	    ^¬?:(^¬@:*  ¼†í·
Dñ@& 5 ( 5œ , ¡ ‡ ÷,ñW- *  âÿ¡ ‡ ÷ñW- êÿ      ¡ ‡ À  & 0
    ¬¯*  D ÷øð!êÿ!ÿÄËÿÃvËâð÷Üð   v*  .Hü7
Fü÷N  ÷D  ÷	  À  ° ‡ À  °(  Nå«ˆrD9©""Æ«ˆ¬¯&¬¯*  T w "þÀ  & ( W"TIW¬ : 0
 E  ¬¯*  z @ 

W­   C& Á 
ÂÜ A( &   
BÝ, ÷	  À  ° ÷   ÷U    w ºý   s©Ýf¬¯¬|—¬ÚK ¬|—       f
M   NÀ¨Ä*  CyÌ    NÀ¨Ä   ¯”L  ³ÖK@  ³Ðf@  *  Ìü@  Ìª%@  ÌÖK@  ÌÐf@  Ìªp@  *  ÌCy@  ¤ÖK@  ¤Ðf@  È¥@  ÈR@  *  Þ@  	# }@  #      t@  #0M@  ª%  @  *  E, K@  ,0Ïƒ@  Ô2 d@  RÀ+@  \g%@  *  mày@  CyÖK@  CyR@  CyÐf@  CyBx@  *  EyÀ@  Ey®@  óy  @  öy  @  :©Ï_@  *  G©P}@  µª X@  «¯@  «&@  «•@  *  «{@  «)x@  Ž±J…@  Ž±P…@  “±†}@  *  “±”@      (  CyÌ(Æt:hÈ «„hB*  ¯ˆwhR ‘È}h”„Àvh … h( ÎÞh$*  ÞÌh\f@hº""ÌhÜ""ÞhÆ""zhÆ*  ""VNh¸""«„hXô&khìö&@;hžð3³hJ *  ð3Ìh  ð3¤hŒð3CyhÔá8àhæy: }hö*  y:x}h¨ ®S@h.®Skhþ®Sö&hˆ¶T dhÔ*  ÛY      àQhÚ æY@h6E`€Whø ÓføMh8 ÓfàQhŽ *  Óf shzÓfCyhâ ãfxdhªRq  hðþv (h *  œw®Shªø€Ìhø€ö&h‚«„Ìhp¯”   
   CyÌ      SY:    *                   À  ð ‡ Îe ‡ ÷5  Ìªp*  *    ‡ Îe ‡ Á  Â  ÷	  Îe ‡ ÀÕÿw   Ìü³Ðf³ÖKE, K*  P   fæ  æ …÷	  Æe …fæ  æ …÷	  Ô2 d
Ìªp«{ Ìª%*  v   Æe …À  0
 ÷E   ‡ Á  Â  ÷	  Îe&  «¯ÌªpÌüÌÐf"ÌÖK&E, K*  œ  ‡ ÀÔÿw   Á  À  ŠÀ
ý÷  Pÿ÷  Lÿ(  Ô2 dÌCyEy® Ì      Cy&ÌCyEy®
*  Â 7
Nÿ‡ ÀX ð5 2 Îe ‡ 7
 w ² Á  Â  màyX Ìªp &ÈR*  è   ÷	  ÷	¶ÿÎe ‡ ÷E   Á  1Š, Â  Àþþ   È¥E, KÌüª%  $Ìª%*  Àå  2, fæ  æ …÷	  Æe …À  ,   ÌCyÌª%«•$Ìª%*  4 À  Á Â ÷	  À  Á ÷	  Àãÿ÷	*  
óy  Ìª% :©Ï_öy  Ìª% ":©Ï_*  Z  Îe ‡ fæ  æ …÷	  Æe …‡ Á  Â  RÀ+Ìªp«&&¤Ðf*  €  ÷	  Îe ‡ ÀÓÿw   ÷E   Á  Â  ŠÂ
&  ¤ÖKE, KÔ2 dÌü #t$#0M*  ¦ý‡ ÀX ð5 2 ÷5   Á        Â  ÷	  ÷	"  
màyX ÌüCyÐf"CyÖK&E, K*  Ì( Îe ‡ Àþÿw   À÷ÿ÷	  ‡ Àÿÿ÷	  ‡ Îe  Ô2 dRÀ+$Ô2 d(  ò ‡ Á  À  ŠÀ
ýÀ  ð  ( ÷  øý÷   
EyÀEy®ª%  EyÀ"EyÀ*    ôý7
öý‡ ÷  êý÷  æý‡ À‡ ÂÔý`·   EyÀEy®
“±”“±†}*  <ÐýƒÀûÿ÷	  w   Â¼ýR”À
ý·²ý‡ ÷°ý¦ý  RÀ+	# }*  bÀªýÀe 7   7
–ý÷ ˜ý	÷	  †!w‚ý  “±” G©P}*  ˆ÷ „ýÀ ÷	  ñ5   w    Àdý   µª X,0Ïƒ",0Ïƒ$Þ*  ®Á^ý÷	xÿ‡ Àÿÿ÷	  Îe ‡ Àôÿ÷	  Îe ‡   R      À+"RÀ+*  Ô÷	L ×-6ý	 ÷	Ì ÷	 (ýß×-  	 ÷	¸ ÷  “±†}*  ú	 ýÀ  Á  ÷	$ÿ‡ ×-   Àõÿ÷	  ÷   
“±†}“±”“±†}$RÀ+*     íÁ  À ÷	þþ7
  ‡ ÷ ØüÎe ‡ ÷    “±†}
  Þ(Ž±P…*  F×-  ÿ Îe ‡ ‡ ×-¸ü ‡ Àóÿ÷	  Îe  Ž±J…&RÀ+*  l ‡ ÁœüÀ  @à€
÷	®þ‡ ÷	†ÿ÷  ÷    “±”"Ž±P…(Ž±J…*  ’Îe ‡ ÷	`ÿÂ  ÀfüÀå  2, ‡ Àöÿ÷	    ª%  EyÀ(RÀ+  ¸‡ Á  Â  w     CyRCyBx\g%  ,0Ïƒ",0Ïƒ$Þ*  ®Á^ý÷	xÿ‡ Àÿÿ÷	  Îe ‡ Àôÿ÷	  Îe ‡   R          ›rl†Ì› 8$d   ä  ;
; BUILD UTILITIES
;
SY:[1,54]RMSBCK,=[1,20]BCKBLD/MP
UNITS=9
TASK=...BCK
/
SY:[1,54]RMSRST,=[1,20]RSTBLD/MP
UNITS=9
TASK=...RST
/
SY:[1,54]RMSDFN/CP,=[1,20]DFNBLD/MP
TASK=...DFN
/
SY:[1,54]RMSDSP/CP/FU,=[1,20]DSPBLD/MP
TASK=...DSP
/
SY:[1,54]RMSCNV/CP/FU,=[1,20]CNVBLD/MP
TASK=...CNV
/
;	*********************************
;	*				*
;	*	DEFBLD TUTORIAL		*
;	*				*
;	*********************************
SY:[1,54]RMSDEF/CP,=[1,20]DEFBLD/MP
TASK=...DEF
/
//
 ä         ›r˜ÆÌ€À› 8$        ;
; COPYRIGHT (C) 1977
; DIGITAL EQUIPMENT CORP.
;
.ENABLE SUBSTITUTION
SET /UIC=[1,1]
.SETS SDK ""
.SETS TK "TKX"
INS LB:[1,54]BIGTKB/TASK=...TKX
.IFNINS TKX .SETS TK "TKB"
.IFNINS PIP INS LB:[1,54]PIP
.ASKS DEV WHAT IS INPUT DEVICE
ASN 'DEV'=IN:
.ASK MT IS INPUT DEVICE A MAGTAPE
.ASK SDV IS SYSTEM DEVICE AN RK05
.IFF MT .GOTO 5
.IFNINS FLX INS LB:[1,54]FLX
.SETS OPT "FLX"
.GOTO 10
.5:
.SETS OPT "PIP"
.10:
.IFF MT .GOTO 12
.IFF SDV .GOTO 12
;
; PLEASE LOAD A SCRATCH RK05 PACK IN A       SPARE DK DRIVE
; IT WILL BE INITIALIZED AND MOUNTED WHEN YOU CONTINUE
;

.ASKS SDK WHAT IS THE NAME OF THE SPARE DRIVE
.PAUSE
ASN 'SDK'=WX:
INI WX:RMSWRK
MOU WX:RMSWRK
;
; PLACE REQUIRED UFD'S ON SCRATCH PACK
;
UFD WX:[1,1]
UFD WX:[1,20]
UFD WX:[1,24]
UFD WX:[1,54]
.GOTO 15
.12:
ASN SY:=WX:
.15:
;
; GET RMS-11 COMPONENTS ON TO SYSTEM DISK
; BUT FIRST DELETE ANY THAT MAY BE PRESENT
;
PIP SY:[1,1]RMS11.ODL;*/DE
PIP SY:[1,1]RMSRES.ODL;*/DE
PIP SY:[1,1]RMSFUN.OBJ;*/DE
PIP SY:[1,1]RMSM      AC.MLB;*/DE
PIP SY:[1,1]RMSLIB.OLB;*/DE
;
; DELETE OLD RMS-11 UTILITIES
;
REM ...BCK
REM ...RST
REM ...DSP
REM ...DFN
REM ...DEF
REM ...CNV
PIP LB:[1,54]RMSBCK.TSK;*/DE
PIP LB:[1,54]RMSRST.TSK;*/DE
PIP LB:[1,54]RMSDSP.TSK;*/DE
PIP LB:[1,54]RMSDFN.TSK;*/DE
PIP LB:[1,54]RMSDEF.TSK;*/DE
PIP LB:[1,54]RMSCNV.TSK;*/DE
'OPT' SY:[1,1]=IN:[1,1]RMS11.ODL,RMSRES.ODL,RMSMAC.MLB,RMSLIB.OLB
.IFT MT .GOTO 20
;
; UPDATE THE SYSTEM LIBRARY FROM THE RMSKIT DISK
;
.IFNINS LBR INS LB:[1,54]LBR
LBR SY:[1,      1]SYSLIB/RP=IN:[1,1]RMSFUN.OBJ
.IFF SDV .GOTO 25
; !!!!  NOTE  !!!!
;
; THE RMSKIT RK05 DISK WILL BE USED AS A WORK DISK
; FOR BUILDING THE RMS-11 UTILITIES.
; IF YOU HAVE FORGOTTEN TO BACKUP THE  RMSKIT,
; ANSWER NO TO THE FOLLOWING  QUESTION AND THE
; INSTALLATION WILL BE ABORTED. 
;
.ASK UT IS EVERYTHING OK FOR THE UTILITY BUILD
.IFF UT .GOTO 200
;
; PLEASE ENSURE THAT THE RMSKIT DISK IS WRITE ENABLED.
;
; GET ROOM ON THE RMSKIT DISK FOR THE UTILITY
; TASK IMAGES.
;
ASN IN:=WX:
PIP WX:      [11,10]*.*;*/DE
PIP WX:[1,2]*.*;*/DE
PIP WX:[1,54]RMS11.SAV/CO/BL:900.=WX:[1,1]RMS11.ODL
PIP WX:[1,1]=WX:[1,24]RMSUTLBLD.CMD
PIP WX:[1,24]*.*;*/DE
PIP WX:[1,24]RMSUTLBLD.CMD/-CO=WX:[1,1]RMSUTLBLD.CMD
PIP WX:[1,1]RMSUTLBLD.CMD;*/DE
;
; GET SYSTEM LIBRARY ONTO THE RMSKIT DISK
;
PIP WX:[1,1]/-CO=SY:[1,1]SYSLIB.OLB
;
; FREE UP CONTIGUOUS SPACE ON THE RMSKIT DISK
;
PIP WX:[1,54]RMS11.SAV;*/DE
.GOTO 30
.20:
;
; UPDATE THE SYSTEM LIBRARY
;
FLX SY:[1,1]=IN:[1,1]RMSFUN.OBJ
.IFNINS LBR INS LB:[1,      54]LBR
LBR SY:[1,1]SYSLIB/RP=SY:[1,1]RMSFUN.OBJ
PIP SY:[1,1]RMSFUN.OBJ;*/DE
.25:
.IFF SDV .GOTO 27
;
; PLACE THE RMS-11 AND SYSTEM OBJECT LIBRARIES ON THE SCRATCH RK05 DISK
;
PIP WX:[1,1]/-CO=SY:[1,1]RMSLIB.OLB,SYSLIB.OLB
.27:
;
; RESERVE ROOM FOR THE RMS-11 UTILITY TASK IMAGES
;
PIP WX:[1,54]RMS11.SAV/CO/BL:900.=SY:[1,1]RMS11.ODL
;
; GET UTILITY COMPONENTS ONTO BUILD DEVICE
;
'OPT' WX:[1,24]=IN:[1,24]RMSUTLBLD.CMD
'OPT' WX:[1,20]=IN:[1,20]*.*
PIP WX:[1,54]RMS11.SAV;*/DE
.IFT SDV .GOTO 3      0
;
; AFTER THE RMS-11 INSTALLATION IS COMPLETE, YOU MAY WANT TO
; DELETE THE FOLLOWING FILES FROM YOUR SYSTEM DISK.
;
;	UFD [1,24]	RMSUTLBLD.CMD
;
;	UFD [1,20]	BCKBLD.ODL,RSTBLD.ODL,DFNBLD.ODL,DSPBLD.ODL
;			CNVBLD.ODL,RMSUTL.ODL,RMSODL.ODL,RMSCNV.ODL
;			RMSUTL.OLB,DEFBLD.ODL
;
.30:
;
; BUILD UTILITIES
;
SET /UIC=[1,20]
ASN WX:=SY:
'TK' @[1,24]RMSUTLBLD
;
; RESTORE THE SYSTEM DEVICE NAME TO SY:
;
ASN =SY:
SET /UIC=[1,1]
.IFT SDV .GOTO 35
;
; THE FOLLOWING INSTALL COMMANDS SHOULD B      E INCLUDED IN YOUR
; SYSTEM STARTUP FILE TO INSURE THE AVAILABLITY OF THE
; UTILITIES AFTER A SYSTEM BOOTSTRAP.
;
INS LB:[1,54]RMSBCK
INS LB:[1,54]RMSRST
INS LB:[1,54]RMSDSP
INS LB:[1,54]RMSDFN
INS LB:[1,54]RMSDEF
INS LB:[1,54]RMSCNV
.GOTO 52
.35:
;
;
; THE RMS-11 UTILITY TASK IMAGES ARE NOW ON THE SCRATCH OR RMSKIT DISK
; UNDER DIRECTORY [1,54]. THE RMS-11 UTILITIES REQUIRE THE FOLLOWING
; NUMBER OF CONTIGUOUS DISK BLOCKS:
;	RMSBCK - BACKUP - 161.
;	RMSRST - RESTORE - 184.
;	RMSDSP - DIS      PLAY - 149.
;	RMSDFN - DEFINE - 136.
;	RMSDEF - DEFINE - 138.
;	RMSCNV - CONVERT - 235.
;
; THE FOLLOWING PROCEDURE WILL NOW BE PERFORMED FOR EACH
; OF THE UTLITIES ABOVE:
;
; THE FILE ASKS:
;	DO YOU WANT THE RMSXXX UTILITY IN YOUR SYSTEM?
;
;	IF YOU ANSWER YES THEN THE FOLLOWING WILL BE DONE:
;
; THE FILE ASKS:
;	WHAT DISK DEVICE DO YOU WANT IT ON?
;		REM ...XXX
;		PIP XX:[1,54]RMSXXX.TSK;*/DE
;		PIP XX:[1,54]=WX:[1,54]RMSXXX.TSK
;		INS XX:[1,54]RMSXXX
;	WHERE XX IS THE DEVICE YOU SPECIF      IED.
;
;	THE INSTALL COMMAND SHOULD BE INCLUDED IN YOUR SYSTEM
;	STARTUP FILE TO INSURE THE UTILITY'S AVAILABLITY
;	AFTER A SYSTEM BOOTSTRAP.
;
;	IF YOU ANSWERED NO, THEN YOU MAY WANT TO SAVE THE UTILITY
;	TASK IMAGE ON A BACKUP MEDIA OR SIMPLY SAVE
;	THE SCRATCH OR RMSKIT DISK.
;
.ASK X DO YOU WANT THE RMSBCK UTILITY IN YOUR SYSTEM
.IFF X .GOTO 40
.ASKS DV WHAT DISK DEVICE DO YOU WANT IT ON
REM ...BCK
.IFF MT .IF DV EQ DEV .GOTO 37
.IFT MT .IF DV EQ SDK .GOTO 37
PIP 'DV'[1,54]RMSBCK.TSK;*/D      E
PIP 'DV'[1,54]=WX:[1,54]RMSBCK.TSK
.37:
INS 'DV'[1,54]RMSBCK
.40:
.ASK X DO YOU WANT THE RMSRST UTILITY IN YOUR SYSTEM
.IFF X .GOTO 42$
.ASKS DV WHAT DISK DEVICE DO YOU WANT IT ON
REM ...RST
.IFF MT .IF DV EQ DEV .GOTO 41
.IFT MT .IF DV EQ SDK .GOTO 41
PIP 'DV'[1,54]RMSRST.TSK;*/DE
PIP 'DV'[1,54]=WX:[1,54]RMSRST.TSK
.41:
INS 'DV'[1,54]RMSRST
.42$:
.ASK X DO YOU WANT THE RMSDSP UTILITY IN YOUR SYSTEM
.IFF X .GOTO 44$
.ASKS DV WHAT DISK DEVICE DO YOU WANT IT ON
REM ...DSP
.IFF MT .IF DV       EQ DEV .GOTO 43
.IFT MT .IF DV EQ SDK .GOTO 43
PIP 'DV'[1,54]RMSDSP.TSK;*/DE
PIP 'DV'[1,54]=WX:[1,54]RMSDSP.TSK
.43:
INS 'DV'[1,54]RMSDSP
.44$:
.ASK X DO YOU WANT THE RMSDFN UTILITY IN YOUR SYSTEM
.IFF X .GOTO 46$
.ASKS DV WHAT DISK DEVICE DO YOU WANT IT ON
REM ...DFN
.IFF MT .IF DV EQ DEV .GOTO 45
.IFT MT .IF DV EQ SDK .GOTO 45
PIP 'DV'[1,54]RMSDFN.TSK;*/DE
PIP 'DV'[1,54]=WX:[1,54]RMSDFN.TSK
.45:
INS 'DV'[1,54]RMSDFN
.46$:
.ASK X DO YOU WANT THE RMSCNV UTILITY IN YOUR SYSTEM
.IFF X .GOTO       48
.ASKS DV WHAT DISK DEVICE DO YOU WANT IT ON
REM ...CNV
.IFF MT .IF DV EQ DEV .GOTO 47
.IFT MT .IF DV EQ SDK .GOTO 47
PIP 'DV'[1,54]RMSCNV.TSK;*/DE
PIP 'DV'[1,54]=WX:[1,54]RMSCNV.TSK
.47:
INS 'DV'[1,54]RMSCNV
.48:
.ASK X DO YOU WANT THE INTERACTIVE RMSDEF UTILITY IN YOUR SYSTEM
.IFF X .GOTO 52$
.ASKS DV WHAT DISK DEVICE DO YOU WANT IT ON
REM ...DEF
.IFF MT .IF DV EQ DEV .GOTO 51
.IFT MT .IF DV EQ SDK .GOTO 51
PIP 'DV'[1,54]RMSDEF.TSK;*/DE
PIP 'DV'[1,54]=WX:[1,54]RMSDEF.TSK
.51:
INS 'DV   ²   '[1,54]RMSDEF
.52:
.IFF MT .GOTO 54
.IFF SDV .GOTO 54
DMO WX:RMSWRK
.54:
;
; RMS-11 SYSTEM INSTALLATION IS NOW COMPLETE
;
.200:
.IFNINS TKX .GOTO 205
REM TKX
.205:
 ²          ÊQ  ÌÁ› 8$     ’   	.ENABLE SUBSTITUTION	.SETS BLANK ""	.ONERR RESET	.ASKS NAME Name of MCR indirect file	.IF NAME EQ BLANK .GOTO END	RUN $M	@'NAME'.RESET:	@DCL.END:’            ÌÁ› 8$        CNV DM1:MCR.CMD=MT:MCR.CMDCNV DM1:DCL.CMD=MT:DCL.CMDCNV DM1:DELFRMQUE.CMD=MT:DELFRMQUE.CMDCNV DM1:WILDDIR.BAT=MT:WILDDIR.BATCNV DM1:WILDDIR.BP2=MT:WILDDIR.BP2CNV DM1:WILDDIR.B2S=MT:WILDDIR.B2SCNV DM1:DIALOG.B2S=MT:DIALOG.B2SCNV DM1:SBREED.B2S=MT:SBREED.B2SCNV DM1:WILDDIR.ODL=MT:WILDDIR.ODLCNV DM1:WILDDIR.CMD=MT:WILDDIR.CMDCNV DM1:WILDDIR.OBJ=MT:WILDDIR.OBJCNV DM1:GOTHIC.B2S=MT:GOTHIC.B2SCNV DM1:GOTHIC.OBJ=MT:GOTHIC.OBJCNV DM1:GOTHIC.CMD=MT:GOTHIC.CMDCNV DM1:GOTHIC.ODL=MT:GOTHIC.ODLCNV DM1:COPYTAPE.B2S=MT:CO      PYTAPE.B2SCNV DM1:COMGEN.B2S=MT:COMGEN.B2SCNV DM1:CPBLP2.B2S=MT:CPBLP2.B2SCNV DM1:EDBLDCTL.B2S=MT:EDBLDCTL.B2SCNV DM1:SYSGEN.B2S=MT:SYSGEN.B2SCNV DM1:TEMP.B2S=MT:TEMP.B2SCNV DM1:ATSGN1.B2S=MT:ATSGN1.B2SCNV DM1:COPYFILES.B2S=MT:COPYFILES.B2SCNV DM1:ATSSUP.B2S=MT:ATSSUP.B2SCNV DM1:KERGN1.B2S=MT:KERGN1.B2SCNV DM1:ATSGN3.B2S=MT:ATSGN3.B2SCNV DM1:KERZAPMAP.B2S=MT:KERZAPMAP.B2SCNV DM1:AUTOZAP.B2S=MT:AUTOZAP.B2SCNV DM1:CHGMAKER.B2S=MT:CHGMAKER.B2SCNV DM1:SGNDEBREG.B2S=MT:SGNDEBREG.B2SCNV DM1:CHEKIT.B2S=MT:CHEKIT.B      2SCNV DM1:CPBLP3.B2S=MT:CPBLP3.B2SCNV DM1:KERGN4.B2S=MT:KERGN4.B2SCNV DM1:T27SUP.B2S=MT:T27SUP.B2SCNV DM1:RESCOM.B2S=MT:RESCOM.B2SCNV DM1:TIMSUP.B2S=MT:TIMSUP.B2SCNV DM1:SYSCHANGE.B2S=MT:SYSCHANGE.B2SCNV DM1:CPBLFILES.B2S=MT:CPBLFILES.B2SCNV DM1:PHSCTLMAP.B2S=MT:PHSCTLMAP.B2SCNV DM1:SCHMAP.B2S=MT:SCHMAP.B2SCNV DM1:CPBLP1.B2S=MT:CPBLP1.B2SCNV DM1:AUTOCM.B2S=MT:AUTOCM.B2SCNV DM1:COMSUP.B2S=MT:COMSUP.B2SCNV DM1:ATSGEN.B2S=MT:ATSGEN.B2SCNV DM1:SAVCTLMAP.B2S=MT:SAVCTLMAP.B2SCNV DM1:DATGEN.B2S=MT:DATGEN.B2SCNV DM      1:LANSUP.B2S=MT:LANSUP.B2SCNV DM1:DLGTXT.B2S=MT:DLGTXT.B2SCNV DM1:GENLST.B2S=MT:GENLST.B2SCNV DM1:CPBLCOM.B2S=MT:CPBLCOM.B2SCNV DM1:CPBLVIRT.B2S=MT:CPBLVIRT.B2SCNV DM1:CPBLDLG.B2S=MT:CPBLDLG.B2SCNV DM1:CHGCTLMAP.B2S=MT:CHGCTLMAP.B2SCNV DM1:REFER.B2S=MT:REFER.B2SCNV DM1:SAVEBUILD.B2S=MT:SAVEBUILD.B2SCNV DM1:AUTOFF.B2S=MT:AUTOFF.B2SCNV DM1:CPYCTLMAP.B2S=MT:CPYCTLMAP.B2SCNV DM1:OCTALF.B2S=MT:OCTALF.B2SCNV DM1:KERGN5.B2S=MT:KERGN5.B2SCNV DM1:KUTGEN.B2S=MT:KUTGEN.B2SCNV DM1:TPEGEN.B2S=MT:TPEGEN.B2SCNV DM1:READMA      P.B2S=MT:READMAP.B2SCNV DM1:SGNSET.B2S=MT:SGNSET.B2SCNV DM1:ATZCOM.B2S=MT:ATZCOM.B2SCNV DM1:KERXTR.B2S=MT:KERXTR.B2SCNV DM1:SAVTAP.B2S=MT:SAVTAP.B2SCNV DM1:KERGN2.B2S=MT:KERGN2.B2SCNV DM1:KERGN3.B2S=MT:KERGN3.B2SCNV DM1:ATSGN2.B2S=MT:ATSGN2.B2SCNV DM1:KERGN7.B2S=MT:KERGN7.B2SCNV DM1:KERGN6.B2S=MT:KERGN6.B2SCNV DM1:CHGTAPBLD.B2S=MT:CHGTAPBLD.B2SCNV DM1:IBMSUP.B2S=MT:IBMSUP.B2SCNV DM1:KERGEN.B2S=MT:KERGEN.B2SCNV DM1:CPBLMAPS.B2S=MT:CPBLMAPS.B2SCNV DM1:CHGPREPBL.B2S=MT:CHGPREPBL.B2SCNV DM1:CPBLFLOPN.B2S=MT:CPB      LFLOPN.B2SCNV DM1:RECOVR.B2S=MT:RECOVR.B2SCNV DM1:AUTOPS.B2S=MT:AUTOPS.B2SCNV DM1:AUTOTAB.B2S=MT:AUTOTAB.B2SCNV DM1:GETRECORD.B2S=MT:GETRECORD.B2SCNV DM1:PUTRECORD.B2S=MT:PUTRECORD.B2SCNV DM1:AUTDEF.B2S=MT:AUTDEF.B2SCNV DM1:TPTRAC.B2S=MT:TPTRAC.B2SCNV DM1:AUTOSK.BPP=MT:AUTOSK.BPPCNV DM1:BREED.B2S=MT:BREED.B2SCNV DM1:VIRTUAL.B2S=MT:VIRTUAL.B2SCNV DM1:CHKDAT.B2S=MT:CHKDAT.B2SCNV DM1:CHKTIM.B2S=MT:CHKTIM.B2SCNV DM1:SERANL.B2S=MT:SERANL.B2SCNV DM1:SETPAR.B2S=MT:SETPAR.B2SCNV DM1:SERDAY.MAC=MT:SERDAY.MACCNV DM1:      TSTBLD.B2S=MT:TSTBLD.B2SCNV DM1:SERPARSE.MAC=MT:SERPARSE.MACCNV DM1:SETMAP.B2S=MT:SETMAP.B2SCNV DM1:SERINS.MAC=MT:SERINS.MACCNV DM1:SERCTL.B2S=MT:SERCTL.B2SCNV DM1:SPAWN.MAC=MT:SPAWN.MACCNV DM1:SERROT.MAC=MT:SERROT.MACCNV DM1:JRNSUB.MAC=MT:JRNSUB.MACCNV DM1:DIALOG.B2S=MT:DIALOG.B2SCNV DM1:SHOLOG.B2S=MT:SHOLOG.B2SCNV DM1:SHOLG1.B2S=MT:SHOLG1.B2SCNV DM1:SETCOM.B2S=MT:SETCOM.B2SCNV DM1:MODSET.B2S=MT:MODSET.B2SCNV DM1:GENSEQKEY.B2S=MT:GENSEQKEY.B2SCNV DM1:MOD11.B2S=MT:MOD11.B2SCNV DM1:TSTLIB.MAC=MT:TSTLIB.MACCN      V DM1:AUTOCO.B2S=MT:AUTOCO.B2SCNV DM1:AUTOOCT.B2S=MT:AUTOOCT.B2SCNV DM1:SETCTL.B2S=MT:SETCTL.B2SCNV DM1:AUTOSK.B2S=MT:AUTOSK.B2SCNV DM1:SVIRTUAL.B2S=MT:SVIRTUAL.B2SCNV DM1:HERALD.B2S=MT:HERALD.B2SCNV DM1:DLGBREED.B2S=MT:DLGBREED.B2SCNV DM1:SETHID.B2S=MT:SETHID.B2SCNV DM1:AUTOAS.B2S=MT:AUTOAS.B2SCNV DM1:DDATA.MAC=MT:DDATA.MACCNV DM1:DBULOG.MAC=MT:DBULOG.MACCNV DM1:VALID.MAC=MT:VALID.MACCNV DM1:AUTOQU.B2S=MT:AUTOQU.B2SCNV DM1:AUTOSZ.B2S=MT:AUTOSZ.B2SCNV DM1:TSTINT.MAC=MT:TSTINT.MACCNV DM1:AUTOCM.B2S=MT:AUTOCM      .B2SCNV DM1:WORDEF.B2S=MT:WORDEF.B2SCNV DM1:TEST.MAC=MT:TEST.MACCNV DM1:TEST.OBJ=MT:TEST.OBJCNV DM1:CHECKTT0.B2S=MT:CHECKTT0.B2SCNV DM1:CHECKTT0.MAC=MT:CHECKTT0.MACCNV DM1:FILEID.MAC=MT:FILEID.MACCNV DM1:TEST.LST=MT:TEST.LSTCNV DM1:TEST.CMD=MT:TEST.CMDCNV DM1:AUTOMAP1.B2S=MT:AUTOMAP1.B2SCNV DM1:TPREDO1.B2S=MT:TPREDO1.B2SCNV DM1:TPREDO.B2S=MT:TPREDO.B2SCNV DM1:FIX.B2S=MT:FIX.B2SCNV DM1:TEMP.B2S=MT:TEMP.B2SCNV DM1:PRCDLGTXT.B2S=MT:PRCDLGTXT.B2SCNV DM1:FIXIT.MAC=MT:FIXIT.MACCNV DM1:TPDEF.B2S=MT:TPDEF.B2SCNV DM      1:TPSTAT.SAV=MT:TPSTAT.SAVCNV DM1:TPUMC.MLB=MT:TPUMC.MLBCNV DM1:DBULOG.OBJ=MT:DBULOG.OBJCNV DM1:DBULOG.LST=MT:DBULOG.LSTCNV DM1:SGNPRCTXT.B2S=MT:SGNPRCTXT.B2SCNV DM1:SETACN.B2S=MT:SETACN.B2SCNV DM1:STAROT.SAV=MT:STAROT.SAVCNV DM1:DEBUGMAC.CMD=MT:DEBUGMAC.CMDCNV DM1:TSTINT.OBJ=MT:TSTINT.OBJCNV DM1:TSTINT.LST=MT:TSTINT.LSTCNV DM1:TEMP.CMD=MT:TEMP.CMDCNV DM1:RMROOT.OBJ=MT:RMROOT.OBJCNV DM1:RMROOT.LST=MT:RMROOT.LSTCNV DM1:STAROT.S00=MT:STAROT.S00CNV DM1:DBULOG.SLP=MT:DBULOG.SLPCNV DM1:TSTINT.SLP=MT:TSTINT.SLPCN      V DM1:RMROOT.SLP=MT:RMROOT.SLPCNV DM1:TPSTAT.S00=MT:TPSTAT.S00CNV DM1:SETSYS.B2S=MT:SETSYS.B2SCNV DM1:SETOCT.B2S=MT:SETOCT.B2SCNV DM1:ANALYS.B2S=MT:ANALYS.B2SCNV DM1:TT0.B2S=MT:TT0.B2SCNV DM1:BUROCR.B2S=MT:BUROCR.B2SCNV DM1:RCLEAN.MAC=MT:RCLEAN.MACCNV DM1:RECIO.MAC=MT:RECIO.MACCNV DM1:AUTORP.B2S=MT:AUTORP.B2SCNV DM1:AUTOMAP2.B2S=MT:AUTOMAP2.B2SCNV DM1:RMROOT.MAC=MT:RMROOT.MACCNV DM1:COPYRIGHT.MAC=MT:COPYRIGHT.MACCNV DM1:RCPROC.MAC=MT:RCPROC.MACCNV DM1:JUREAD.MAC=MT:JUREAD.MACCNV DM1:SETVMR.B2S=MT:SETVMR.B2S      CNV DM1:SETTER.B2S=MT:SETTER.B2SCNV DM1:STJRN.MAC=MT:STJRN.MACCNV DM1:CHECKTT0.OBJ=MT:CHECKTT0.OBJCNV DM1:CHECKTT0.LST=MT:CHECKTT0.LSTCNV DM1:CLEAN.B2S=MT:CLEAN.B2SCNV DM1:LPUT.MAC=MT:LPUT.MACCNV DM1:TLKDF.MAC=MT:TLKDF.MACCNV DM1:NEWSPEAK.MAC=MT:NEWSPEAK.MACCNV DM1:TALKR.MAC=MT:TALKR.MACCNV DM1:TALK.MAC=MT:TALK.MACCNV DM1:SETDRV.B2S=MT:SETDRV.B2SCNV DM1:VERSION.B2S=MT:VERSION.B2SCNV DM1:TLKDAT.MAC=MT:TLKDAT.MACCNV DM1:SETBOO.B2S=MT:SETBOO.B2SCNV DM1:SETTRA.B2S=MT:SETTRA.B2SCNV DM1:SETBAD.B2S=MT:SETBAD.B2SCN      V DM1:AMPER.B2S=MT:AMPER.B2SCNV DM1:SETSTR.B2S=MT:SETSTR.B2SCNV DM1:SYSMOD.B2S=MT:SYSMOD.B2SCNV DM1:CHECKTT0.DEB=MT:CHECKTT0.DEBCNV DM1:MODDLG.B2S=MT:MODDLG.B2SCNV DM1:MODASK.MAC=MT:MODASK.MACCNV DM1:TALKC.MAC=MT:TALKC.MACCNV DM1:SETTIM.B2S=MT:SETTIM.B2SCNV DM1:RECER.B2S=MT:RECER.B2SCNV DM1:STTRAN.MAC=MT:STTRAN.MACCNV DM1:TPSTAT.MAC=MT:TPSTAT.MACCNV DM1:STAROT.MAC=MT:STAROT.MACCNV DM1:BDIALOG.B2S=MT:BDIALOG.B2SCNV DM1:AUTOIO.MAC=MT:AUTOIO.MACCNV DM1:TPUMCLBR.BLD=MT:TPUMCLBR.BLDCNV DM1:UNLOCKFIL.B2S=MT:UNLOC      KFIL.B2SCNV DM1:SETSAV.MAC=MT:SETSAV.MACCNV DM1:SETPARB2S.CMD=MT:SETPARB2S.CMDCNV DM1:CHKSEQKEY.B2S=MT:CHKSEQKEY.B2SCNV DM1:SERCHK.MAC=MT:SERCHK.MACCNV DM1:GUIDE.RNO=MT:GUIDE.RNOCNV DM1:GUIDE.DOC=MT:GUIDE.DOCCNV DM1:TXDEMO.MAC=MT:TXDEMO.MACCNV DM1:TXDEMO.LST=MT:TXDEMO.LSTCNV DM1:TXDEMO.ODL=MT:TXDEMO.ODLCNV DM1:TXDEMO.CMD=MT:TXDEMO.CMDCNV DM1:TXDEMO.TSK=MT:TXDEMO.TSKCNV DM1:SMPDEM.TSK=MT:SMPDEM.TSKCNV DM1:TXDEMO.OBJ=MT:TXDEMO.OBJCNV DM1:MISC.MAC=MT:MISC.MACCNV DM1:ABE.LST=MT:ABE.LSTCNV DM1:SUMMRY.OBJ=MT:SUMM      RY.OBJCNV DM1:TSTQUE.OBJ=MT:TSTQUE.OBJCNV DM1:TSTQUE.LST=MT:TSTQUE.LSTCNV DM1:TEST.OBJ=MT:TEST.OBJCNV DM1:QUESUM.OBJ=MT:QUESUM.OBJCNV DM1:QUESUM.LST=MT:QUESUM.LSTCNV DM1:ABE.CMD=MT:ABE.CMDCNV DM1:ARCHIVE.CMD=MT:ARCHIVE.CMDCNV DM1:DSKTST.MAP=MT:DSKTST.MAPCNV DM1:DSKSUM.LST=MT:DSKSUM.LSTCNV DM1:MEM3.MAC=MT:MEM3.MACCNV DM1:CPU.CMD=MT:CPU.CMDCNV DM1:RMD52BLD.CMD=MT:RMD52BLD.CMDCNV DM1:DEMO1.ODL=MT:DEMO1.ODLCNV DM1:MEMORY.CMD=MT:MEMORY.CMDCNV DM1:TPMMC.MLB=MT:TPMMC.MLBCNV DM1:EXEMC.MLB=MT:EXEMC.MLBCNV DM1:ARCH.C      MD=MT:ARCH.CMDCNV DM1:DEMO.OBJ=MT:DEMO.OBJCNV DM1:DSKSUM.MAC=MT:DSKSUM.MACCNV DM1:DSKSUM.OBJ=MT:DSKSUM.OBJCNV DM1:ABE.OBJ=MT:ABE.OBJCNV DM1:ABE.MAP=MT:ABE.MAPCNV DM1:CPU.MAP=MT:CPU.MAPCNV DM1:QUESUM.MAC=MT:QUESUM.MACCNV DM1:MEMSUM.MAC=MT:MEMSUM.MACCNV DM1:INCLUDE.OBJ=MT:INCLUDE.OBJCNV DM1:MEMINC.OBJ=MT:MEMINC.OBJCNV DM1:MEMORY.MAP=MT:MEMORY.MAPCNV DM1:APPSUM.CMD=MT:APPSUM.CMDCNV DM1:LKLST.OBJ=MT:LKLST.OBJCNV DM1:RMD52.MAP=MT:RMD52.MAPCNV DM1:DEMO.LST=MT:DEMO.LSTCNV DM1:DEMOTS.CMD=MT:DEMOTS.CMDCNV DM1:DEMOTS      .MAP=MT:DEMOTS.MAPCNV DM1:RMSLIB.OLB=MT:RMSLIB.OLBCNV DM1:DEMO1.MAP=MT:DEMO1.MAPCNV DM1:RMSMAC.MLB=MT:RMSMAC.MLBCNV DM1:INCLTS.OBJ=MT:INCLTS.OBJCNV DM1:TRANN34.OBJ=MT:TRANN34.OBJCNV DM1:DEMO34.OBJ=MT:DEMO34.OBJCNV DM1:DEMO34.LST=MT:DEMO34.LSTCNV DM1:MSG34.MAC=MT:MSG34.MACCNV DM1:MSG34.OBJ=MT:MSG34.OBJCNV DM1:MSG34.LST=MT:MSG34.LSTCNV DM1:DEMOXX.CMD=MT:DEMOXX.CMDCNV DM1:DEMOTR.CMD=MT:DEMOTR.CMDCNV DM1:DEMO70.CMD=MT:DEMO70.CMDCNV DM1:INCLTR.OBJ=MT:INCLTR.OBJCNV DM1:DEMO70.MAP=MT:DEMO70.MAPCNV DM1:DEMO34.CMD=M      T:DEMO34.CMDCNV DM1:INCLDE.OBJ=MT:INCLDE.OBJCNV DM1:DEMOMS.CMD=MT:DEMOMS.CMDCNV DM1:INCLMS.OBJ=MT:INCLMS.OBJCNV DM1:DEMOTR.MAP=MT:DEMOTR.MAPCNV DM1:MISC.OBJ=MT:MISC.OBJCNV DM1:MISC.LST=MT:MISC.LSTCNV DM1:DEMOMS.MAP=MT:DEMOMS.MAPCNV DM1:DEMO34.MAP=MT:DEMO34.MAPCNV DM1:HRDCPY.CMD=MT:HRDCPY.CMDCNV DM1:SAMPLE.LOG=MT:SAMPLE.LOGCNV DM1:RMD52.OBJ=MT:RMD52.OBJCNV DM1:HELP.MAC=MT:HELP.MACCNV DM1:HELP.OBJ=MT:HELP.OBJCNV DM1:HELP.LST=MT:HELP.LSTCNV DM1:APPSUM.MAC=MT:APPSUM.MACCNV DM1:APPSUM.OBJ=MT:APPSUM.OBJCNV DM1:AP      PSUM.LST=MT:APPSUM.LSTCNV DM1:TRAN34.MAC=MT:TRAN34.MACCNV DM1:TRAN34.OBJ=MT:TRAN34.OBJCNV DM1:TRAN34.LST=MT:TRAN34.LSTCNV DM1:TST34.MAC=MT:TST34.MACCNV DM1:TST34.OBJ=MT:TST34.OBJCNV DM1:TST34.LST=MT:TST34.LSTCNV DM1:LISTING.CMD=MT:LISTING.CMDCNV DM1:MEMSUM.OBJ=MT:MEMSUM.OBJCNV DM1:MEMSUM.LST=MT:MEMSUM.LSTCNV DM1:MEMOUT.MAC=MT:MEMOUT.MACCNV DM1:MEMOUT.OBJ=MT:MEMOUT.OBJCNV DM1:MEMOUT.LST=MT:MEMOUT.LSTCNV DM1:HRDCPY.LST=MT:MEMINI.MACCNV DM1:MEMINI.OBJ=MT:MEMINI.OBJCNV DM1:MEMINI.LST=MT:MEMINI.LSTCNV DM1:HRDCPY      .MAC=MT:HRDCPY.MACCNV DM1:HRDCPY.OBJ=MT:HRDCPY.OBJCNV DM1:HRDCPY.TSK=MT:HRDCPY.TSKCNV DM1:HRDCPY.MAP=MT:HRDCPY.MAPCNV DM1:DEMO.ODL=MT:DEMO.ODLCNV DM1:INC.MAC=MT:INC.MACCNV DM1:INC.OBJ=MT:INC.OBJCNV DM1:DEMOXX.MAP=MT:DEMOXX.MAPCNV DM1:DEMO.LOG=MT:DEMO.LOGCNV DM1:MEM2.MAC=MT:MEM2.MACCNV DM1:MEM2.OBJ=MT:MEM2.OBJCNV DM1:MEM2.LST=MT:MEM2.LSTCNV DM1:DEMOPR.MAP=MT:DEMOPR.MAPCNV DM1:KERNEL.STB=MT:KERNEL.STBCNV DM1:CRASH.CDA=MT:CRASH.CDACNV DM1:ABE.MAC=MT:ABE.MACCNV DM1:TPC.MAC=MT:TPC.MACCNV DM1:SHUTDOWN.A00=MT:SHUT      DOWN.A00CNV DM1:TPCPRE.MAC=MT:TPCPRE.MACCNV DM1:ISYMBL.MAC=MT:ISYMBL.MACCNV DM1:INSMGR.MAC=MT:INSMGR.MACCNV DM1:SERLOG.MAC=MT:SERLOG.MACCNV DM1:TPREMV.MAC=MT:TPREMV.MACCNV DM1:SHUTDOWN.A02=MT:SHUTDOWN.A02CNV DM1:STOP.MAC=MT:STOP.MACCNV DM1:RETURN.MAC=MT:RETURN.MACCNV DM1:NOCRASH.MAC=MT:NOCRASH.MACCNV DM1:ISCB.MAC=MT:ISCB.MACCNV DM1:INSCOM.MAC=MT:INSCOM.MACCNV DM1:STPERR.MAC=MT:STPERR.MACCNV DM1:STOP.DMP=MT:STOP.DMPCNV DM1:CKFRTP.MAC=MT:CKFRTP.MACCNV DM1:TPINIT.MAC=MT:TPINIT.MACCNV DM1:SHUTDOWN.A01=MT:SHUTDO      WN.A01CNV DM1:SHUTIT.MAC=MT:SHUTIT.MACCNV DM1:ICXT.MAC=MT:ICXT.MACCNV DM1:ICMD.MAC=MT:ICMD.MACCNV DM1:SETCAL.MAC=MT:SETCAL.MACCNV DM1:INSRMS.MAC=MT:INSRMS.MACCNV DM1:SHUTDOWN.MAC=MT:SHUTDOWN.MACCNV DM1:COPYTOMM0.CMD=MT:COPYTOMM0.CMDCNV DM1:TPSCOM.MAC=MT:TPSCOM.MACCNV DM1:CACHES00.MAC=MT:CACHES00.MACCNV DM1:TIMCAL.MAC=MT:TIMCAL.MACCNV DM1:TIMACT.MAC=MT:TIMACT.MACCNV DM1:TPMLIB.CHG=MT:TPMLIB.CHGCNV DM1:TIMDAT.MAC=MT:TIMDAT.MACCNV DM1:TPMLIB.2  =MT:TPMLIB.2  CNV DM1:TIMCTX.MAC=MT:TIMCTX.MACCNV DM1:DMDB.MAC=MT:      DMDB.MACCNV DM1:DMFL.MAC=MT:DMFL.MACCNV DM1:TPMLIB.SPN=MT:TPMLIB.SPNCNV DM1:SPAWN.MAC=MT:SPAWN.MACCNV DM1:DMLIB.LST=MT:DMLIB.LSTCNV DM1:CACHE.S00=MT:CACHE.S00CNV DM1:EMTASK.SPN=MT:EMTASK.SPNCNV DM1:SGDATA.MAX=MT:SGDATA.MAXCNV DM1:DMLIB.MAC=MT:DMLIB.MACCNV DM1:EMTASK.MAC=MT:EMTASK.MACCNV DM1:TPMLIB.MAC=MT:TPMLIB.MACCNV DM1:TIMER.MAC=MT:TIMER.MACCNV DM1:TIMMAN.MAC=MT:TIMMAN.MACCNV DM1:EMTASK.DIF=MT:EMTASK.DIFCNV DM1:DM.S00=MT:DM.S00CNV DM1:SHBUF.   =MT:SHBUF.   CNV DM1:ABGO.MAC=MT:ABGO.MACCNV DM1:TPMLIB.A3 =M      T:TPMLIB.A3 CNV DM1:DMINIT.S00=MT:DMINIT.S00CNV DM1:ABWAT.MAC=MT:ABWAT.MACCNV DM1:DMLIB.10B=MT:DMLIB.10BCNV DM1:DMLIB.NEW=MT:DMLIB.NEWCNV DM1:DMLIB.S01=MT:DMLIB.S01CNV DM1:EMTASK.V1C=MT:EMTASK.V1CCNV DM1:ABSET.MAC=MT:ABSET.MACCNV DM1:DMLIB.POB=MT:DMLIB.POBCNV DM1:DMREC.NEW=MT:DMREC.NEWCNV DM1:DMFIL.NEW=MT:DMFIL.NEWCNV DM1:BMAN.MAC=MT:BMAN.MACCNV DM1:DM.10B=MT:DM.10BCNV DM1:DMINIT.10B=MT:DMINIT.10BCNV DM1:DMFL.10B=MT:DMFL.10BCNV DM1:SGDATA.MAC=MT:SGDATA.MACCNV DM1:DM.S01=MT:DM.S01CNV DM1:DMLIB.PAT=MT:DMLIB.P   ®  ATCNV DM1:DMLIB.SAV=MT:DMLIB.SAVCNV DM1:DMLIBPAT.CMD=MT:DMLIBPAT.CMDCNV DM1:DMLIB.S00=MT:DMLIB.S00CNV DM1:TR.MAC=MT:TR.MACCNV DM1:TIMCOPY.CMD=MT:TIMCOPY.CMDCNV DM1:TIMBLD.CMD=MT:TIMBLD.CMDCNV DM1:DMLIB.S02=MT:DMLIB.S02CNV DM1:EMTASK.COM=MT:EMTASK.COMCNV DM1:DM.MAC=MT:DM.MACCNV DM1:DMINIT.MAC=MT:DMINIT.MACCNV DM1:DMMLB.MAC=MT:DMMLB.MACCNV DM1:TPSCOM.V1C=MT:TPSCOM.V1CCNV DM1:EMTASK.CSH=MT:EMTASK.CSHCNV DM1:CACHE.MAC=MT:CACHE.MAC®         „  ÌÁ› 8$        SET /DCL=TI:            Ô](ÌÁ› 8$m   ²   	.ENABLE SUBSTITUTION	.ASKS QUEUE Name of queue to delete from	.ASKS JOB Name of job to delete from 'QUEUE'.DEL:	DEL/Q 'QUEUE'/J:'JOB'	.ASK DONE Are you done	.IFF DONE .GOTO DEL ²          4‘©¼Á› 8$€p   ˆ   $JOB WILDDIR$MESS/TE:TT10 BUILD OF WILDDIR STARTED$BASIC@WILDDIR.BP2$LIN @WILDDIR$PURGE WILDDIR.*$MESS/TE:TT10 BUILD OF WILDDIR DONE$EOJˆ          4‘© Á› 8$€p   H   OLD WILDDIRAPPEND	[113,10]DIALOGAPPEND	[111,5]SBREEDCOMPILE WILDDIREXIT H          4‘©“Á› 8$€p      1	!***************************************************************&	!								&	!								&	!	W I L D    C A R D    D I R E C T			&	!								&	!								&	!								&	!	Program:	WILDDIR					&	!	Version:	V2.0					&	!	Edit level:	A00					&	!	Edit date:	20-Apr-79				&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		           COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!					      			&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	01/00	20-Apr-78 KMR	Initial coding.			&	!	V2.0A00 20-Apr-79 KMR	Added some new stuff.		 2.0A00&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!					      			&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***********************      ****************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$********************      ******************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	-      -------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!							      	&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&900	\ DIMENSION	TASK.PARAMETERS%( 17% )				&	!								&950	\ MAP	(DIRECT)						&			 VERIFY.1%			!  0 !		&			,VERIFY.2%			!  2 !		&			,VERIFY.3%			!  4 !		&			,FILE.NAME.1%			!  6 !		&			,FILE.NAME.2%			!  8 !		&      			,FILE.NAME.3%			! 10 !		&			,EXTENTION%			! 12 !		&			,VERSION%			! 14 !		&							! 16 !		&	!								&	!	Map out the directory					&955	\ MAP	(LIST)							&			 FILE$		= 16%		!   0 !		&	!								&	!	Map out the list file.					&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Se      t up standard default error trap			&1010	\ VER.EDIT.NUM$ = "V2.0A"					!2.0A00&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "WILDDIR	"; VER.EDIT.NUM$; "   ";		&	\ PRINT								&	\ PRINT "Wild card directory program"				&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ FALSE% = 0%							&	\ TRUE% = -1%							&	\ END.OF.FILE% = 11%						&	\ NO.SUCH.FILE% = 5%						&	\ PREVIOUS.DIRECTORY$ = ""					!2.0A00&1100	\ ASK.HELP$(1%) = 'Enter the specif      ication of the file you '	&				+ 'wish to direct.  This specification'	&	\ ASK.HELP$(2%) = '  may contain question marks (?) any where '	&				+ 'in the filename or extention.'	&	\ ASK.HELP$(3%) = '  You may specify any account, however, the'	&				+ ' account specification may contain'	&	\ ASK.HELP$(4%) = '  no wild card specifications.'		&	\ H1% = 1%							&	\ N1% = 4%							&	!								&	\ ON FN.ASK%(	'File specification',				&			"",						&			"",						&			34%, H1%, N1%	)				&	  GO TO								&		1100,							&      		32000,							&		1500							&	!								&1500	\ FILE.SPECIFICATION$ = ASK.CVT$				&	\ ON FN.PARSE%( FILE.SPECIFICATION$ )				&		GO TO							&			1600,			! Good	!		&			1100			! Bad	!		&	!								&1600	\ DEVICE$ = "SY:" IF DEVICE$ = ""				!2.0A00&	\ DIRECTORY.FILE$ =	  DEVICE$				!2.0A00&				+ '[0,0]'				!2.0A00&				+ STRING$(3%-LEN(GROUP$),ASCII('0'))	&				+ GROUP$				&				+ STRING$(3%-LEN(USER$),ASCII('0'))	&				+ USER$					&				+ '.DIR'				&	\ GO TO 1630	IF DIRECTORY.FILE$ = PREVIOUS.DIRECTORY$	!2.0A00&	\ P      RINT "Directory file name: "; DIRECTORY.FILE$		&		IF DEBUG.FLAG%						&	\ OPEN "SY:WILDDIR.TMP" FOR OUTPUT AS FILE #2%			&		,ORGANIZATION SEQUENTIAL FIXED				&		,ACCESS MODIFY						&		,ALLOW NONE						&		,MAP DIRECT						&		,TEMPORARY						&	!								&	\ OPEN DIRECTORY.FILE$ FOR INPUT AS FILE #1%			!2.0A00&		,ORGANIZATION	SEQUENTIAL				!2.0A00&				FIXED					!2.0A00&		,ACCESS		READ					!2.0A00&		,ALLOW		MODIFY					!2.0A00&		,MAP		DIRECT					!2.0A00&	!								 2.0A00&	!	Open the real directory file.				 2.0A0      0&1610	\ GET #1%							!2.0A00&	\ PUT #2%							!2.0A00&	\ GO TO 1610							!2.0A00&	!								 2.0A00&	!	Move another record.					 2.0A00&1620	\ PREVIOUS.DIRECTORY$ = DIRECTORY.FILE$				!2.0A00&	\ CLOSE #1%							!2.0A00&	\ RESTORE #2%							!2.0A00&	!								 2.0A00&	!	Make sure we know what the previous directory was.	 2.0A00&	!	Close the original directory file.			 2.0A00&	!	Restore our data file.					 2.0A00&1630	\ OPEN 'SY:WILDDIR.DAT' FOR OUTPUT AS FILE #1%			&		,ORGANIZATION	SEQUENTIAL				&				VARIAB      LE				&		,ACCESS		MODIFY					&		,RECORDSIZE	72%					&	!								&	!	Open our output file.					 2.0A00&1700	\ ASK.HELP$(1%) = 'Enter an output file name or device'		&	\ ASK.HELP$(2%) = ''						&	\ ASK.HELP$(3%) = ''						&	\ ASK.HELP$(4%) = ''						&	\ ON FN.ASK%(	'Listing file',					&			"TI:",						&			"",						&			34%, H1%, N1%	)				&	  GOTO								&		1700,							&		32000,							&		1800							&1800	\ LST.FIL$ = ASK.CVT$						&	\ TE% = INSTR( 1%, LST.FIL$, ':' )				&	\ LST.FIL$ = "SY:" + LST.FIL$ 	IF TE% = 0      %			&1900	\ GET #2%							&	\ GO TO 1900	IF VERIFY.1% = 0%				&	\ FILE.NAME$ =	  RAD$(FILE.NAME.1%)				&			+ RAD$(FILE.NAME.2%)				&			+ RAD$(FILE.NAME.3%)				&	\ EXTENTION$ =	  RAD$(EXTENTION%)				&	\ VERSION$ =	  FN.INT.TO.OCT$( VERSION% )			&	\ FULL.FILE.NAME$ =	  FILE.NAME$				&				+ '.'					&				+ EXTENTION$				&				+ ';'					&				+ VERSION$				&	\ PRINT #1%, FULL.FILE.NAME$					&		IF FN.NAME.CHECKS%					&	\ GO TO 1900							&	!								&2000	!$								&	!								&	\ CLOSE #1%							&	\ RESTORE #2%					      		&	!								&2005	\ ASK.HELP$(1%) =						&		 'Enter YES if you want your output to be sorted'	&	\ ASK.HELP$(2%) = ''						&	\ ASK.HELP$(3%) = ''						&	\ ASK.HELP$(4%) = ''						&	\ ON FN.ASK%(	'Sort',						&			"NO",						&			"",						&			34%, H1%, N1%	)				&	  GOTO								&		2005,							&		32000,							&		2007							&2007	\ SORT$ = ASK.CVT$						&	\ IF SORT$ = "NO"						&		THEN 							&		OPEN 'SY:WILDDIR.DAT' FOR INPUT AS FILE #1%		&			,ACCESS READ					&	\	GOTO 2009						&2008	\ BREED.TASK$ = "MCR..."				      	&	\ BREED.COMMAND$=						&		"SRT SY:WILDSRT.DAT=SY:WILDDIR.DAT/FO:VAR:72./KEY:1.15"	&	\ GOSUB 20000							&	\ OPEN "SY:WILDSRT.DAT" FOR INPUT AS FILE #1%			&			,ACCESS	READ					&	!								&2009	\ OPEN LST.FIL$ FOR OUTPUT AS FILE #4%				!2.0A00&		,ORGANIZATION	SEQUENTIAL				!2.0A00&&				STREAM					!2.0A00&		,ACCESS		MODIFY					!2.0A00&		,ALLOW		NONE					!2.0A00&		,RECORDSIZE	72%					!2.0A00&2010	\ INPUT LINE #1%, FILE.NAME$					&	\ PRINT #4%, FILE.NAME$						!2.0A00&	\ GO TO 2010							!2.0A00&	!								&30      00	\ CLOSE #1%							&	\ CLOSE #4%							&	\ KILL 'SY:WILDDIR.DAT'						&	\ KILL 'SY:WILDSRT.DAT' IF SORT$ <> "NO"				&	\ GO TO 1100							&	!								&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!				      				&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15010	!$								&	!								&	\ DEF FN.PARSE%( FILE.SPECIFICATION$ )				&	\ FN.PARSE% = 1%						&	!								&	!	Define the function.					&	!								&	\ DEVICE.END% = INSTR( 1%, FILE.SPECIFICATION$, ":" )		!2.0A00&	\ IF DEVICE.END% = 0%						!2.0A00&		  THEN	  DEVICE$ = ""					!2.0A00&		  ELSE	  DEVICE$ = SEG$(	FILE.SPECIFICATION$      ,	!2.0A00&						1%,			!2.0A00&						DEVICE.END%	)	!2.0A00&15015	\ PRINT "Device Specification: "; DEVICE$			&		IF DEBUG.FLAG% = TRUE% AND DEVICE$ <> ""		&	\ ACCOUNT.START% = INSTR( 1%, FILE.SPECIFICATION$, '[' ) + 1%	&	\ GO TO 15020	IF ACCOUNT.START% = 1%				&	\ ACCOUNT.END% = INSTR(	ACCOUNT.START%,				&				FILE.SPECIFICATION$,			&				']' ) - 1%				&	\ GO TO 15040	IF ACCOUNT.END% = -1%				&	\ ACCOUNT$ = SEG$(	FILE.SPECIFICATION$,			&				ACCOUNT.START%,				&				ACCOUNT.END%	)			&	\ PRINT "Account: "; ACCOUNT      $	IF DEBUG.FLAG%			&	\ COMMA% = INSTR( 1%, ACCOUNT$, ',' )				&	\ GO TO 15040	IF COMMA% = 0%					&	\ GROUP$ = LEFT( ACCOUNT$, COMMA%-1% )				&	\ USER$ = RIGHT( ACCOUNT$, COMMA%+1% )				&	\ GO TO 15030							&	!								&15020	\ ACCOUNT.END% = -1%						&	\ CALL GETTSK BY REF( TASK.PARAMETERS%(), ERROR% )		&	!								&	!	Get the current task's parameters.			&	!								&	\ GO TO 15040 IF ERROR% <> 1%					&	\ USER% = TASK.PARAMETERS%( 7% ) AND 255%			&	\ GROUP% = SWAP%(TASK.PARAMETERS%(7%)) AND 255%			&	\ USER$       = FN.INT.TO.OCT$( USER% )				&	\ GROUP$ = FN.INT.TO.OCT$( GROUP% )				&	!								&15030	\ PRINT "Group, User: "; GROUP$, USER$	IF DEBUG.FLAG%		&	\ FILE.NAME.START% = ACCOUNT.END% + 2%				&	\ FILE.NAME.END% = INSTR(	FILE.NAME.START%,		&					FILE.SPECIFICATION$,		&					'.'	) - 1%			&	\ GO TO 15040	IF FILE.NAME.END% = -1%				&	\ TARGET.FILE.NAME$ = SEG$(	FILE.SPECIFICATION$,		&				FILE.NAME.START%,			&				FILE.NAME.END%	)			&	\ TARGET.FILE.NAME$ = FN.WILD.CARD.CHECK$(			&				TARGET.FILE.NAME$, 9% )			&	\ PRINT       "File name: "; TARGET.FILE.NAME$	IF DEBUG.FLAG%	&	\ EXTENTION.START% = FILE.NAME.END% + 2%			&	\ EXTENTION.END% = INSTR( EXTENTION.START%,			&					FILE.SPECIFICATION$,		&					';'	) - 1%			&	\ VERSION.SPECIFIED% = TRUE%					&	\ VERSION.SPECIFIED% = FALSE%					&		IF EXTENTION.END% = -1%					&	\ EXTENTION.END% = LEN( FILE.SPECIFICATION$ )			&		IF EXTENTION.END% = -1%					&	\ TARGET.EXTENTION$ = SEG$(	FILE.SPECIFICATION$,		&				EXTENTION.START%,			&				EXTENTION.END%	)			&	\ TARGET.EXTENTION$ = FN.WILD.CARD.CH      ECK$( TARGET.EXTENTION$	&							, 3% )		&	\ PRINT "Extention: "; TARGET.EXTENTION$	IF DEBUG.FLAG%	&	\ IF VERSION.SPECIFIED%						&	  THEN	  TARGET.VERSION$ = SEG$(	FILE.SPECIFICATION$,	&					EXTENTION.END%+2%,		&					LEN(FILE.SPECIFICATION$) )	&		\ TARGET.VERSION$ = FN.WILD.CARD.CHECK$(		&					TARGET.VERSION$, 6% )		!2.0A00&		\ PRINT "Version: "; TARGET.VERSION$	IF DEBUG.FLAG%	&		\ GO TO 15050						&	  ELSE	  TARGET.VERSION$ = '??????'				!2.0A00&		\ GO TO 15050						&	!								&15040	\ FN.PARSE% = 2%						      &	!								&15050	\ FNEND								&15100	!$								&	!								&	\ DEF FN.WILD.CARD.CHECK$( INPUT.STRING$, LENGTH% )		&	\ INPUT.STRING$ = LEFT( INPUT.STRING$, LENGTH% )		&	\ INPUT.STRING$ = EDIT$( INPUT.STRING$, 38% )			&	\ FN.WILD.CARD.CHECK$ = INPUT.STRING$				&	\ FN.WILD.CARD.CHECK$ = STRING$( LENGTH%, ASCII('?') )		&		IF INSTR( 1%, INPUT.STRING$, '*' ) <> 0%		&	\ FN.WILD.CARD.CHECK$ =	INPUT.STRING$				&				+ STRING$(	  LENGTH%		&						- LEN(INPUT.STRING$),	&						ASCII('?')	)	&		IF INSTR( 1%, INPUT.STRING      $, '?' ) <> 0%		&	\ FNEND								&	!								&15200	!$								&	!								&	\ DEF FN.INT.TO.OCT$( NUMBER% )					&	\ NUMBER$ = ''							&	\ WHILE NUMBER% > 0%						&		\ NEXT.NUMBER% = NUMBER% / 8%				&		\ REMAINDER% = NUMBER% - NEXT.NUMBER% * 8%		&		\ NUMBER$ = NUM1$(REMAINDER%) + NUMBER$			&		\ NUMBER% = NEXT.NUMBER%				&		\ NEXT							&	\ FN.INT.TO.OCT$ = NUMBER$					&	\ FNEND								&	!								&	!								&15300	!$								&	!								&	\ DEF FN.NAME.CHECKS%						&	\ FN.NAME.CHECKS% = TRUE%					&	\ FOR I% = 1%       TO LEN(FILE.NAME$)				&		\ TARGET$ = MID(TARGET.FILE.NAME$,I%,1%)		&		\ GO TO 15310	IF TARGET$ = '?'			&		\ CHARACTER$ = MID(FILE.NAME$,I%,1%)			&		\ GO TO 15340	IF CHARACTER$ <> TARGET$	&	!								&15310		\ NEXT I%						&	\ FOR I% = 1% TO LEN(EXTENTION$)				&		\ TARGET$ = MID(TARGET.EXTENTION$, I%, 1% )		&		\ GO TO 15320	IF TARGET$ = '?'			&		\ CHARACTER$ = MID(EXTENTION$,I%,1%)			&		\ GO TO 15340	IF CHARACTER$ <> TARGET$	&	!								&15320		\ NEXT I%						&	\ FOR I% = 1% TO LEN(VERSION$)					&		\ TARGET$       = MID(TARGET.VERSION$, I%, 1% )		&		\ GO TO 15330	IF TARGET$ = '?'			&		\ CHARACTER$ = MID(VERSION$, I%, 1% )			&		\ GO TO 15340	IF CHARACTER$ <> TARGET$	&	!								&15330		\ NEXT I%						&	\ GO TO 15350							&	!								&15340	\ FN.NAME.CHECKS% = FALSE%					&	!								&15350	\ FNEND								&	!								&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!**************************************      *************************&19010	\ RESUME 1600	IF ERR = NO.SUCH.FILE% AND ERL = 1600%		&	\ RESUME 2000	IF ERR = END.OF.FILE% AND ERL = 1900%		&	\ RESUME 3000	IF ERR = END.OF.FILE% AND ERL = 2010%		&	\ RESUME 1620	IF ERR = END.OF.FILE% AND ERL = 1610%		!2.0A00&	!								&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ PRINT 'ERR ='; ERR; 'ERL ='; ERL				!2.0A00&	\ STOP	IF DEBUG.FLAG%						!2.0A00&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  syste      m default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**********      ****************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	!								&	!	Put out a blank line.					&	!	Close any files that may be open.			&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!*********   H   ******************************************************&	!								&	\ ENDH          i_M“Á› 8$        25000	!$**************************************************************&	!								&	!								&	!	D I A L O G U E     F U N C T I O N 			&	!								&	!								&	!								&	! USAGE FORMAT	:						&	!								&	! FN.ASK%(PROMPT$,DEFAULT$,VALID$,MAX%,HELP.IND%,HELP.CNT%)	&	!								&	!								&	! INPUTS:							&	!								&	! PROMPT$	the prompt string to be printed at the		&	!		user terminal; a question mark is added.	&	!								&	! DEFAULT$	the default value to be displayed with the	&	!		prompt; NULL string if the      re is no default.	&	!								&	! VALID$	a valid response list or a valid response	&	!		type; NULL string if no editing is to be done.	&	!		A valid response list must begin with a slash	&	!		and elements in the list are separated by a	&	!		slash (e.g. /CREATE/EDIT/DELETE ).		&	!		Valid response types are the following:		&	!			Y - yes/no				&	!			A - alphanumeric			&	!			* - alphanumeric and asterisk		&	!			D - decimal				&	!			I - integer				&	!			P - positive integer (must be > 0)	&	!								&	! MAX%		the m      aximum acceptable length of the 		&	!		response if VALID$ = "A"; the maximum 		&	!		value of the response if VALID$ = "I", "P"	&	!		or "D"; 32767 if there is no maximum.		&	!								&	! HELP.IND%	the element of the array ASK.HELP$ for the	&	!		help text; a negative number if there is no 	&	!		help text. The array ASK.HELP$ must be		&	!		dimensioned in the calling program.		&	!								&	! HELP.CNT%	the number of array elements in the 		&	!		help text.					&	!								&	!								&	! RETURNS:							&	!								&      	! The function returns the following values:			&	!								&	!	1 - if the ESCAPE key is the response			&	!	2 - if CTRL-Z is the response				&	!	3 - if YES is the response when YES/NO is required	&	!	4 - if NO is the response when YES/NO is required	&	!	n - where n is the number of the element in the 	&	!	    list + 2 if a valid response list was specified	&	!	3 - for all other responses				&	!								&	! The following are also returned:				&	!								&	!	ASK.RESP$	the user response as typed		&	!								&	!	      ASK.CVT$	the response with all blanks and tabs	&	!			suppressed and lower case converted	&	!			to upper case; expanded if the user 	&	!			response identifies an element from	&	!			a list of valid responses		&	!								&	!	ASK.NUM%	the value of the response if an 	&	!			integer is required			&	!								&	!	ASK.NUM		the value of the response if any	&	!			decimal value is valid			&	!								&	!								&	! DESCRIPTION:							&	!								&	!	The function prints the prompt string with the		&	!	default value, if sp      ecified, enclosed in angle		&	!	brackets. The response is edited as indicated. If	&	!	invalid, the prompt is repeated; if valid, the return	&	!	is set and the function exits. The help text is 	&	!	printed and the prompt repeated if the response		&	!	is "?".							&	!								&	!								&	!***************************************************************&25001	 DEF FN.ASK%(PROMPT$,DEFAULT$,VALID$,MAX%,HELP.IND%,HELP.CNT%)	&									&	\ ON ERROR GOTO 25130						&	!								&	!	Set up standard default error trap.	      		&	!								&25010	\ FN.ASK% = 3%							&	\ PRINT								&	\ PRINT PROMPT$;						&	\ PRINT " <"; DEFAULT$; ">"; IF DEFAULT$ <> ""			&	\ INPUT LINE ASK.RESP$						&	\ IF RIGHT(ASK.RESP$,LEN(ASK.RESP$)) = CHR$(27%)		&		THEN FN.ASK% = 1%					&	\	PRINT							&	\	GOTO 25120						&	!								&	!	Print prompt with default, if specified, enclosed	&	!		in angle brackets.				&	!	If response is ESCAPE, set return and exit.		&	!								&25020	\ ASK.CVT$ = EDIT$(ASK.RESP$,2%+4%+32%)				&	\ IF ASK.CVT$ = ""						&		THEN       IF DEFAULT$ = ""					&			THEN PRINT					&	\		PRINT "% Input required"			&	\		GOTO 25010					&		ELSE ASK.CVT$ = EDIT$(DEFAULT$,2%+4%+32%)		&	!								&	!	Discard all spaces, tabs, and excess characters;	&	!		convert lower to upper case.			&	!	If the user takes the default value but no default	&	!		was specified, the response is invalid.		&	!		Print error message; repeat the prompt.		&	!	Otherwise, if the default value is taken, set up	&	!		the converted string as the default 		&	!		(converted) and continue.	      		&	!								&25030	\ IF ASK.CVT$ = "?" 						&		THEN IF HELP.IND% >= 0%					&			THEN PRINT					&	\		PRINT ASK.HELP$(ASK.T1%) FOR ASK.T1% = 		&				HELP.IND% TO HELP.IND%+HELP.CNT%-1%	&	\		GOTO 25010					&	  	ELSE GOTO 25010						&	!								&	!	If response is "?", print HELP text, if specified,	&	!		and repeat prompt.				&	!								&25040	\ GOTO 25120 IF VALID$ = ""					&	\ GOTO 25060 IF ((VALID$ <> "A") AND (VALID$ <> "*"))		&	\ FOR ASK.T1% = 1% TO LEN(ASK.CVT$)				&	\	ASK.CHR$ = MID(ASK.CVT$,ASK.T1%,1%)			      &	\	GOTO 25050 IF VALID$ = ASK.CHR$				&	\	IF ASK.CHR$ < "0" OR ASK.CHR$ > "Z"			&			OR (ASK.CHR$ > "9" AND ASK.CHR$ < "A")		&			THEN PRINT					&	\		PRINT "% Alphanumeric" ; 			&	\		PRINT " or asterisks" ; IF VALID$ = "*"		&	\		PRINT " required"				&	\		GOTO 25010					&25050	\ NEXT ASK.T1%							&	\ IF LEN(ASK.CVT$) > MAX%					&		THEN PRINT						&	\	PRINT "% Response exceeds maximum length"		&	\	GOTO 25010						&	  ELSE GOTO 25120						&	!								&	!	If no validation is specified, exit.			&	!	If an alphanum      eric response (A,*) was specified,	&	!		determine if alphanumeric and compare with	&	!		maximum length. Print error message and		&	!		repeat prompt if invalid; exit if valid.	&	!								&25060	\ IF VALID$ = "D" OR VALID$ = "I" OR VALID$ = "P"		&		THEN ASK.NUM = VAL(ASK.CVT$)				&	\	IF ASK.NUM > MAX%					&			THEN PRINT					&	\		PRINT "% Number exceeds maximum"		&	\		GOTO 25010					&		ELSE GOTO 25120 IF VALID$ = "D"				&	!								&	!	Set ASK.NUM to the value of the string; will trap to	&	!		error routine if n      ot a valid numeric response.	&	!	Compare all numeric responses with maximum; print	&	!		error message and repeat prompt if greater	&	!		than maximum.					&	!	Decimal response (D) validated, exit.			&	!								&25070	\ IF VALID$ = "I" OR VALID$ = "P" 				&		THEN IF ASK.NUM <> INT(ASK.NUM)				&			THEN PRINT					&	\		PRINT "% Integer required"			&	\		GOTO 25010					&		ELSE IF VALID$ = "P" AND INT(ASK.NUM) <= 0%		&			THEN PRINT					&	\		PRINT "% Positive integer required"		&	\		GOTO 25010					&		ELSE ASK.NUM% =       INT(ASK.NUM)				&	\	GOTO 25120						&	!								&	!	Check for integer (I) and positive integer (P).		&	!	Print error message and repeat prompt if invalid.	&	!	If valid, equate ASK.NUM% to the value of the		&	!		response and exit.				&	!								&25080	\ IF VALID$ = "Y" THEN VALID$ = "/YES/NO"			&	!								&	!	If YES or NO is required, set up VALID$ as a list	&	!	to validate against.					&	!								&25090	\ ASK.T2% = INSTR(1%,VALID$,"/" + ASK.CVT$)			&	\ IF ASK.T2% = 0% THEN PRINT					&	\	PRINT "% Invalid res      ponse"				&	\	GOTO 25010						&	  ELSE ASK.T1% = INSTR(ASK.T2%+1%,VALID$,"/" + ASK.CVT$)	&	\	IF ASK.T1% <> 0% THEN PRINT				&	\		PRINT "% Response not unique"			&	\		GOTO 25010					&	!								&	!	Search valid string for matches to the response.	&	!		The response can be a substring of a 		&	!		list element.					&	!	If no match or more than one, the response is		&	!		invalid; repeat the prompt.			&	!	If only one match is found, the response is valid.	&	!								&25100	\ ASK.T3%, ASK.ITEM% = 0%					&	!								      &	!	Initialize accumulator and position pointer.		&	!								&25110	\ ASK.T3% = INSTR(ASK.T3%+1%,VALID$,"/")			&	\ ASK.ITEM% = ASK.ITEM% + 1%					&	\ GOTO 25110 IF ASK.T2% <> ASK.T3%				&	!								&	!	Find which list item the response matches.		&	!								&	\ ASK.T1% = INSTR(ASK.T3% + 1%,VALID$,"/")			&	\ ASK.LEN% = LEN(VALID$)-ASK.T3% IF ASK.T1% = 0%  ! Last item	&	\ ASK.LEN% = ASK.T1% - ASK.T3% - 1% IF ASK.T1% <> 0%		&	\ ASK.CVT$ = MID(VALID$,ASK.T3%+1%,ASK.LEN%)			&	\ FN.ASK% = ASK.ITEM% + 2%					&	!				      				&	!	Determine length of list item.				&	!	Equate the converted string to the list item.		&	!	Set the return to the item number + 2.			&	!								&25120	\ ON ERROR GOTO 19000						&	\ FNEND								&	!								&	!	Reset the default error trap.				&	!	Exit.							&	!								&	!***************************************************************&	!								&	!	E R R O R     H A N D L I N G				&	!								&	!***************************************************************&25130	\ IF ERR = 11% THEN FN.ASK% = 2%				&	\      	RESUME 25120						&	!								&	!	We get an EOF error if the response is CTRL-Z.		&	!	Set return and exit.					&	!								&25140	\ IF ERR = 52% AND ERL = 25060% THEN PRINT			&	\	PRINT "% Numeric required"				&	\	RESUME 25010						&	!								&	!	We get an illegal number error if we don't get		&	!	a valid numeric response when I, P, or D is		&	!	specified as the valid type. Repeat the prompt.		&	!								&25149	\ GOTO 19900							&	!								&	!	For all unaccounted for errors, go to the error		&	!	routine for    $   the calling program.			&	!								& $          "w “Á› 8$        481	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!		F O R    T H E    B R E E D			&	!								&	!		    S U B R O U T I N E				&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	BREED.COMMAND$		Text string of command line to	&	!				  be sent to spawned task. Task	&	!				  must be installed.		&	!	BREED.CVT.ERROR%	= 0% if no RAD50 convert errors	      &	!				= 1% if error in first 3 chars	&	!				= 2% if error in last  3 chars	&	!				= 3% if error in both halves	&	!	BREED.DEBUG%		= TRUE% if debug print of	&	!				  each command spawned		&	!	BREED.ERROR%		Error indicator for SPAWN call	&	!	BREED.NOSPAWN%		= TRUE% if task is not to be	&	!					spawned.		&	!	BREED.RETURN%		= FALSE% to cause BREED to do	&	!				  error checking and printing	&	!				  of error messages.  Exits	&	!				  program.			&	!				= TRUE% to cause return to	&	!				  calling program even when      	&	!				  errors occur.			&	!	BREED.TASK$		Task name of task to be spawned	&	!	BREED.TASK.NAME%()	Array for RAD50 task name	&	!								&	!***************************************************************&935	\ DIM	BREED.TASK.NAME%(1%)					&	!								&	!	The array containing the RAD50 version of the spawned 	&	!	task name.						&20000	!$**************************************************************&	!								&	!								&	!	S P A W N    A    T A S K				&	!								&	!								&	!								&	!	Version:	01					&	!	Ed      it level:	00					&	!	Edit date:	26-Oct-77				&	!	Author(s):	BD(edited by WJB)			&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------  ------    ---   ------------------------------- &	!	01-00	102677	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	INPUT:	BREED.TASK$	Name of task to be spawned.	&	!				Must be exactly six (6) chars	&	!		BREED.COMMAND$	Command line to be sent to	&	!				  spawned task (task must be	&	!				  install      ed for SPAWN to work)	&	!		BREED.RETURN%	= TRUE% if errors are to be	&	!				  ignored.  FALSE% will cause	&	!				  BREED to print error msg(s).	&	!		BREED.DEBUG%	If TRUE%, causes printout of	&	!				  command line data before spawn&	!		BREED.NOSPAWN%	If TRUE%, task is not spawned	&	!								&	!	RETURNS: BREED.ERROR$	Contains error status		&	!				  code returned by		&	!				  SPAWN subroutine.		&	!		 BREED.CVT.ERROR%	Contains error code for &		!					  ASCII to RAD50 cvt.	&	!					  of task name.		&	!								&	!      	LOCAL:	T2000%	- working variable			&	!		T2001%	-    "        "				&	!		T2000$	- working string			&	!								&	!								&	!	BREED is a simple interface subroutine for driving the	&	!	SPAWN subroutine.  BREED makes the proper ASCII to	&	!	RAD50 conversion of the target task name, and will	&	!	process errors that may occur during the spawning.	&	!								&	!								&	!***************************************************************&20010	\ BREED.TASK$ = LEFT((BREED.TASK$+SPACE$(6%)),6%)		&		IF LEN(BREED.TASK$)       <> 6%				&	!								&	!	Make sure that the task name is exactly six (6) chars	&	!	  long.							&20020	\ BREED.CVT.ERROR% = 0%						&	\ T2000$ =  LEFT(BREED.TASK$,3%)				&	\ CALL ASTO50(T2000$,T2001%,T2000%)				&	\ BREED.TASK.NAME%(0%) = T2001%					&	\ BREED.CVT.ERROR% = 1%	IF T2000% <> 0%				&	\ T2000$ = RIGHT(BREED.TASK$,4%)				&	\ CALL ASTO50(T2000$,T2001%,T2000%)				&	\ BREED.TASK.NAME%(1%) = T2001%					&	\ BREED.CVT.ERROR% = BREED.CVT.ERROR% + 2%	IF T2000% <> 0%	&	\ GO TO 20050	IF BREED.CVT.ERROR% <>       0%			&	!								&	!	Clear conversion error flag.				&	!	Convert first half of task name.			&	!	Signal error if one occurred.				&	!	Convert second half of task name.			&	!	Signal error if one occurred.				&	!	Go process error if one occurred.			&20030	\ PRINT CHR$(10%)+CHR$(13%);"Spawning: ";			&		BREED.TASK$;						&		" with: ";						&		BREED.COMMAND$						&				IF (BREED.DEBUG% = TRUE%) OR		&					(BREED.NOSPAWN% = TRUE%)	&	\ CALL SPAWN(BREED.TASK.NAME%(),BREED.COMMAND$,BREED.ERROR%)	&			UNLESS BREED.NOSPAWN      % = TRUE%			&	\ BREED.ERROR%=1% IF BREED.NOSPAWN% = TRUE%			&	\ RETURN	IF (BREED.ERROR% AND 7%) = 1%			&	!								&	!	Print action if debugging.				&	!	Do the actual SPAWN operation.				&	!	Return if SUCCESS.					&20040	\ RETURN	IF BREED.RETURN% = TRUE%			&	\ PRINT "SPAWN operation failed for following command:"		&	\ PRINT "  Task: ";						&		BREED.TASK$;						&		"(";							&		RAD$(BREED.TASK.NAME%(0%));				&		RAD$(BREED.TASK.NAME%(1%));				&		")"							&	\ PRINT "  Command text: ";					&		BREED.COMMAND$			      			&	\ PRINT "  Status value: ";					&		BREED.ERROR%						&	\ CLOSE T2000%	FOR T2000% = 1% TO 12%				&	\ GO TO 32767							&	!								&	!	Skip error messages if not requested.			&	!	Otherwise, print error messages denoting failure	&	!	  parameters.						&	!	Close all files and exit the routine.			&20050	\ BREED.ERROR% = 0%						&	\ RETURN	IF BREED.RETURN% = TRUE%			&	\ PRINT "ASCII-to-RAD50 conversion failure: ";			&		BREED.CVT.ERROR%					&	\ GO TO 20040							&	!								&	!	Return if error messages not req   ^   uested.			&	!	Otherwise, signal conversion error and then		&	!	  print out rest of data.				& ^          4‘©l^Á› 8$€p   Ž   	.ROOT BIROT1-USER,RMSUSER:	.FCTR WILDDIR-[113,24]ASTO50-[113,24]SPAWN-LIBRLIBR:	.FCTR [1,1]BASIC2/LBRMS:	.FCTR BIO017@SY:[1,1]    BASIC1	.ENDŽ          4‘©ÌÁ› 8$€p   l   SY:WILDDIR/CP,SY:WILDDIR/-SP=SY:WILDDIR/MP;LIBR=BASIC2:ROUNITS = 14ASG = TI:13ASG = SY:5:6:7:8:9:10:11:12// l          4‘©^Á› 8$€p       4‘©    OÀPÀ   ¼©jè  ¼©kè ¼©lè  zÌì {L }ì vLÀ¨@  ^À¨@  «SÕª@  ©¸«@  Ô:À¨@  irÈª@  ƒgñ¨@  ¤!À¨@   ©Èª@  áYÈª@  ¡S5ª@  ù_¸«@  +Èª@  «SÉª@  ¡S;ª@  ù_Èª@  «SÛª@  ¡SÛª@  &À¨@  ‹@À¨@  Ûé¨@  µÀ¨@  +é¨@   ÖKÀ¨@  zË«@  ;	À¨@  òyÀ¨@  +Ë«@  +¹«@  «SÅ«@  YÀ¨@  €Èª@  AT5ª@  èrÀ¨@  &LÀ¨@  ŽMÀ¨@  QÀ¨@  qÀ¨@   ŠsÀ¨@  ƒ:À¨@  ¡SÅ«@  ¬pÀ¨@  €¸«@  èrÀ¨@  Í.À¨@  3:À¨@  Ã;è¨@  4FÀ¨@  ]zÀ¨@  n'À¨@  wÀ¨@  ÑÕª@  ÙKÀ¨@   5MÀ¨@  tÀ¨@  Á8¸«@        ÑÑª@  ¸«@  LÀ¨@  üqÀ¨@  !Èª@  "À¨@  aŽÈª@  hzÀ¨@  ¡SÕª@  é5ª@  é;ª@  =†À¨@   )&Èª@  DÀ¨@  +û¨@  3&Èª@  eÀ¨@  q;ª@  ‘T;ª@  ¹À¨@  ^\À¨@  ¬À¨@  »RÀ¨@  ñXÈª@  Èª@  ""À¨@  ÑÅ«@   "À¨@  ÑÁ«@  …sÀ¨@  ygÁ«@  ðyÀ¨@  ‰^À¨@  CyÀ¨@  ©¸«@  ôÀ¨@  ¡SÉª@  é5ª@  ª:À¨@  tÀ¨@  OqÀ¨@  tÀ¨@   éÛª@  kŽÈª@  ôLÀ¨@  ,LÀ¨@  f‹À¨@  žSÅ«@  ÎÛª@  žSÛª@  v:À¨@  ¦¸«@  ÎË«@  åLÀ¨@  .À¨@  Á8Èª@  zÛª@   zÛª@   © K@  ©Z@  © d@  ©p†@  "©l      @  +…À¨@   6ªm;@  ¹«ˆŒ¨ +ª·:ì€ t!À¨@   D«a	¨z,ªa	¨Ô,«1zh( Ì«·r¨° G©È(Žú¨Áp¨
 ä«a	¨
 G©È(  œ,€@  L	Vc@  Ayð‘@     ¹«ˆŒ         +ª·:      ©p†       ©Z       © d         © K (  (    "©l 0  0    "©l 8  8    ©p† @  @    ©p† p  p    +…À¨ ~  ~     D«a	         €@  €À        V2.0A   WILDDIR	*      2  Wild card directory program R    no wild card specifications.t  File spe   ** 22 RR tt  | cificationŠ        SY: ’  [0,0] œ  0 ¢  .DIRª  Directory file name:  Ä  SY:WILDDIR.TMPÖ  SY:WILDDIR.DATè # Enter an output  Š ’  œ &¢ .ª HÄ ZÖ lè  ø file name or device  Listing file  TI: ( : . . 4 ; :. Enter YES if you want your output to be sortedl Sortt  ( 0(6.<4B:tl|t tNOz MCR...„5 SRT SY:WILDSRT.DAT=SY:WILDDIR.DAT/FO:VAR:72./KEY:1.15 ¾ SY:WILDSRT.DATÐ Device Specification: ê [ ð  z„J¾\Ðvê|ð ð] ö	 Account:   , 
 Group, User:   Fi      le name:  , Extention:  <	 Version:  J ??????T ? Z * ` ERR = j ER ö
,<,L<ZJdTjZp`zj lL = t
 Spawning: ‚  with:  Ž- SPAWN operation failed for following command: À   Task: Ì ( Ò ) Ø   Command text:  t‚"ŽTÀ`ÌfÒlØ èì   Status value:  # ASCII-to-RAD50 conversion failure:  (  <. > 4 % Input requiredH A N Z T 9 Z % Alphanum ì @(F.L4`HfNlTrZ dericl  or asterisks ~	  required Œ! % Response exceeds m      aximum length ² D ¸ I ¾ P Ä % Number exceeds maximumà  l~(ŒN²T¸Z¾`Ä|à à% Integer requiredö % Positive integer required  Y  /YES/NO ( / . % Invalid responseD % Response not unique ^ ö6<H(N.dD~^ \ % Numeric requiredtK Enter the specification of the file you wish to direct.  This specification ÄH   may contain questi thÄ Øon marks (?) any where in the filename or extention.M   You may specify any account, however, the account specif      ication ma 8 Ty contain b 
h      €        bh{L }  "Ì«·r  (,ªa	  ä«a	        D    ,ªa	D G©È     	      6ªm; 
¹«ˆŒ                     	,ªa	  
¼©j       
+ª·:        6       Z  ,ªa	 6 
D«a	  D«a	  ,ªa	  &   X      WILDDI Ì«·r  ä«a	  
ú¨Áp   6            d   ,    á  ¼  î     „  §  ¶  »  è  Â
  ò    vLÀ¨vLÀ¨vLÀ¨vLÀ¨vLÀ¨vLÀ¨vLÀ¨ vLÀ¨$vLÀ¨(vLÀ¨,vLÀ¨0vLÀ¨4vLÀ¨8vLÀ¨<vLÀ¨@^À¨BÂ
DvLÀ¨H      «SÕªJD«a	  ~ ,   ü                       ÿÿ  ,   ÿÿ  &   ÿÿ Ì«·r, vLÀ¨
©¸«Ô:À¨irÈªD«a	  ƒgñ¨¤!À¨©¸«Ô:À¨irÈªD«a	  ƒgñ¨$irÈª&Ì«·r, (ƒgñ¨,irÈª.D«a	& 0ƒgñ¨ ®                       .                        ¤!À¨©¸«Ô:À¨
irÈªD«a	  ƒgñ¨¤!À¨©¸«Ô:À¨irÈªD«a	. ƒgñ¨ ¤!À¨"©¸«$Ô:À¨&irÈª(D«a	  *ƒgñ¨.¤!À¨0vLÀ¨ Þ     H   `   b    T   L    p¤   p ©Èª,ªa	áYÈª
,ªa	H¡S5ª,ªa	`¡S5ª,ªa	b«SÕªD«a	  Ì«·rT vLÀ¨"ù_¸«$«S      Õª&D«a	p(Ì«·r¤ *+Èª,D«a	p   ¤      À¤   p  ¤      ¤   p  ¤  «SÉªÌ«·r¤ ¡S;ª«SÕªD«a	ÀÌ«·r¤ +ÈªD«a	p«SÉªÌ«·r¤ ¡S;ª«SÕª D«a	"Ì«·r¤ $+Èª&D«a	p(«SÉª*Ì«·r¤  0     p  N   d   f  p           "   d ¡S;ª+Èª
D«a	p«SÉªD«a	N ù_Èª,ªa	d¡S5ª,ªa	f«SÛªD«a	p «SÛª D«a	  "«SÛª$D«a	  &¡S;ª*¡SÛª,,ªa	d Z  f  À   ø Nl  Ü  0 X   X   "   †ø   @   ¡SÛª,ªa	f&À¨
À‹@À¨ø NlvLÀ¨«SÕªÌ«·r0 Ì«·rX  «SÛª"Ì«      ·rX $&À¨&"(‹@À¨,†.ø 0vLÀ¨4irÈª Œ\         ž  † \   \   Ž        d      Ì«·r\ irÈªD«a	  
Ûé¨µÀ¨ž«SÕªD«a	† Ì«·r\ irÈªÌ«·r\ irÈªD«a	Ž +é¨ ¡S;ª$irÈª&Ì«·rd (ÖKÀ¨*zË« ´  ˜         d        4       ˜          irÈªD«a	˜ ;	À¨
òyÀ¨+Ë«irÈªÌ«·rd +¹«¡S;ªirÈªÌ«·r4 ÖKÀ¨zË« irÈª"D«a	˜ $;	À¨&òyÀ¨(+Ë«*irÈª Ü4     ž     `   `   T     Ž  ’     Ì«·r4 +¹«irÈª
D«a	ž +¹««SÅ«Ì«·r` irÈªÌ«·r` irÈªÌ«·rT Ûé¨YÀ¨      Ž €Èª",ªa	’$YÀ¨&(©¸«     ¦   ÿÿ  `          ®   ¨  ®À   ¨               Ô:À¨irÈªD«a	¦ 
ƒgñ¨irÈªÌ«·r` ƒgñ¨¤!À¨¡S5ª,ªa	®AT5ª",ªa	¨$èrÀ¨,,ªa	®.D«a	À 0zÌ  2,ªa	¨@ù_Èª @°   ¨   °`   ¨              J               d  T  `  ,ªa	°AT5ª
,ªa	¨èrÀ¨,ªa	°Ì«·r` zÌ  ,ªa	¨(vLÀ¨,ù_¸«.&LÀ¨2¡S;ª6ŽMÀ¨:QÀ¨<d>vLÀ¨B«SÕªDÌ«·r`  ‚T            ^  ²  H ´    ²Ò   ´              ¤    p Ì«·rT ù_¸«qÀ¨
¡S      ;ªŠsÀ¨vLÀ¨ù_Èª,ªa	²¡S5ª,ªa	´èrÀ¨&,ªa	²(D«a	Ò ,,ªa	´:vLÀ¨>ù_¸«@+ÈªBD«a	p Â  ä      p         p         p       «SÉªD«a	ä ¡S;ª+ÈªD«a	p«SÉªD«a	  ¡S;ª+ÈªD«a	p«SÉªD«a	   ¡S;ª$+Èª&D«a	p(«SÉª*D«a	  ,«SÛª ì        "   d  f  À   ¸N    0 8  D«a	«SÛªD«a	
«SÛªD«a	  ¡S;ª¡SÛª,ªa	d¡SÛª,ªa	f&À¨À‹@À¨"¸$N&(vLÀ¨,«SÕª.Ì«·r0 0Ì«·r8      8   $    h  h  @  †   8     8  ù_¸«irÈªÌ«·r8 
      irÈªD«a	$ƒ:À¨¡SÅ«,ªa	h€Èª,ªa	hµÀ¨@irÈªD«a	†  irÈª"Ì«·r8 $+é¨&«SÅ«(Ì«·r8  @  l             @              
        vLÀ¨¡S;ª&LÀ¨€ÈªzÌ  YÀ¨@¡SÛªzÌ ¬pÀ¨¡SÛª zÌ "¬pÀ¨$+Ë«&¡SÛª(zÌ
 *¬pÀ¨,+Ë«.«SÅ« lh        <      à  l   h   *     Ì«·rh ¡SÛªzÌ 
¬pÀ¨«SÅ«Ì«·r< ¡SÛªzÌ &À¨à«SÅ«Ì«·rl irÈªÌ«·rh  irÈª"D«a	*$+é¨&irÈª <     0    l     p   Z	    ¼      p      Ì«·r< +¹«irÈª
D«a	0      +¹«irÈªÌ«·rl +¹««SÅ«Ì«·rp &À¨Z	€¸«YÀ¨ ¼"ù_¸«$Ô:À¨&irÈª(Ì«·rp *ƒgñ¨ º    @  Ð           Õ    p  6     p        ¤!À¨QÀ¨@
vLÀ¨ù_¸«qÀ¨¡S;ªŠsÀ¨vLÀ¨ù_¸«+Èª D«a	p"«SÉª$D«a	6&¡S;ª*+Èª,D«a	p.«SÉª0D«a	  2¡S;ª ì  p         p      h  p      "   d +ÈªD«a	p«SÉª
D«a	  ¡S;ª+ÈªD«a	p«SÉªD«a	  «SÛªD«a	h«SÛªD«a	p «SÛª"D«a	  $¡S;ª(¡SÛª*,ªa	d   f  À   ÎN&  ×  0 t   t   p    b   ¡SÛª,ªa	      f&À¨
À‹@À¨ÎN&vLÀ¨«SÕªÌ«·r0 Ì«·rt  irÈª"Ì«·rt $irÈª&D«a	p(Ûé¨*µÀ¨,b.ù_Èª @¶      ¶Ò                   –  Ø  vx   €|   ž  ¸       ,ªa	¶èrÀ¨,ªa	¶D«a	Ò "QÀ¨$–&vLÀ¨*«SÕª,D«a	v.Ì«·rx 0«SÕª2D«a	€4Ì«·r| 6Í.À¨8ž:ù_Èª<,ªa	¸>èrÀ¨ ‚¸º                  Ù   º  H ¼   º8   ¼              Ú      h      ,ªa	¸D«a	ºvLÀ¨¡S5ª ,ªa	º"¡S5ª&,ªa	¼(èrÀ¨0,ªa	º2Ì«·r8 6,ªa	¼DvLÀ¨Hù_¸«J3:À¨LirÈªNÌ«·rh PÃ;è¨R¤!À¨       Ò       h         Â  ¸           Ò     t   p ¡S;ªÔ:À¨
irÈªÌ«·rh ƒgñ¨¤!À¨QÀ¨ÂvLÀ¨ù_¸«qÀ¨ ¡S;ª$qÀ¨&irÈª(D«a	Ò *4FÀ¨,irÈª.Ì«·rt 0irÈª2D«a	p       º    ø   '  ˜:  ¢:  8   X     ¢:  Ð     Ûé¨YÀ¨
irÈªD«a	º4FÀ¨QÀ¨ø vLÀ¨vLÀ¨vLÀ¨ QÀ¨"8$]zÀ¨(Ì«·rX ,n'À¨0ù_Èª2,ªa	Ð4ù_¸«6irÈª 6X   $    N  N  T    \   d  X      Ì«·rX irÈªD«a	$
ƒ:À¨¡SÅ«,ªa	N€Èª,ªa	NµÀ¨T«SÕªD«a	  Ì«·r\ QÀ¨ d"irÈª$Ì«·rX       &ù_¸«(¡SÛª \N    \   §:  ’H    \               š ,ªa	NwÀ¨«SÅ«
Ì«·r\ vLÀ¨ÑÕª,ªa	’,ªa	HÙKÀ¨irÈªÌ«·r\ irÈªD«a	   Ûé¨"5MÀ¨$tÀ¨&€¸«(YÀ¨*š „      Ì  ÿÿ  \           X   æ      ”   ©¸«Ô:À¨irÈª
D«a	Ìƒgñ¨irÈªÌ«·r\ ƒgñ¨¤!À¨ù_¸«irÈªÌ«·rX  irÈª"D«a	æ$ƒ:À¨&Á8¸«(¡SÅ«*,ªa	”,ÑÑª ®”   @  ”  X   ì      j  jÿÿ    X  ,ªa	”YÀ¨
@¡SÛª,ªa	”irÈªÌ«·rX irÈªD«a	ìƒ:À¨¸«¡SÅ«,ªa	j ÑÑª",ªa	j&YÀ¨(      *irÈª,Ì«·rX  Ø  ”  j    €   ’        ò  ÿÿ  €      ¡SÛª,ªa	”¡SÛª
,ªa	jwÀ¨«SÅ«Ì«·r€ €Èª,ªa	’YÀ¨©¸«Ô:À¨irÈª D«a	ò"ƒgñ¨&irÈª(Ì«·r€ *ƒgñ¨       €        –  –    €   –     ¤!À¨ù_¸«irÈª
Ì«·r€ irÈªD«a	 ƒ:À¨¡SÅ«,ªa	–€Èª,ªa	–YÀ¨irÈª Ì«·r€ "¡SÛª$,ªa	–&¸«(LÀ¨ (  d   €   –      4      ¬:  j  l     «SÅ«Ì«·rd irÈª
Ì«·r€ ¡SÛª,ªa	–Á8¸«üqÀ¨«SÅ«Ì«·r4 QÀ¨ vLÀ¨ áYÈª",ªa	j$irÈª&,ªa	l      (©¸«*!Èª Pv       l        v  ÿ     n     v    ÿ  D«a	v"À¨
œ,€ÑÑª,ªa	lµÀ¨¡S;ªaŽÈªD«a	v¡S;ª"tÀ¨$¡SÅ«&,ªa	n(¡S;ª,aŽÈª.D«a	v0hzÀ¨2¡S;ª ‚    ˜  n  à  4   ˜  à  d   ¶:  ’  Ê tÀ¨¡SÅ«,ªa	˜
¡SÛª,ªa	n&À¨à«SÅ«Ì«·r4 ¡SÛª,ªa	˜&À¨à«SÅ« Ì«·rd "vLÀ¨&€Èª(,ªa	’*YÀ¨,Ê ¬        ÿÿ  d      4         jš   š   ©¸«Ô:À¨irÈª
D«a	ƒgñ¨irÈªÌ«·rd ƒgñ¨irÈªÌ«·r4 ƒgñ¨ ¤!À¨"¡SÕª$,ªa	j&,ªa	      š(é5ª,,ªa	š.¡SÛª Øš  X   *      p  pÿÿ    X   š   ,ªa	širÈªÌ«·rX 
irÈªD«a	*ƒ:À¨¸«¡SÅ«,ªa	pÑÑª,ªa	pYÀ¨ irÈª"Ì«·rX $¡SÛª&,ªa	š(¡SÛª þp    @   @   	   @  @   ’  4       ,ªa	pwÀ¨«SÅ«
Ì«·r@ «SÛªÌ«·r@ ¡S;ª&À¨@«SÅ«Ì«·r@ €Èª,ªa	’ YÀ¨"4$©¸«&Ô:À¨(irÈª*D«a	 &  ÿÿ  @         pL   L  L  X   0     ƒgñ¨irÈª
Ì«·r@ ƒgñ¨¤!À¨¡SÕª,ªa	p,ªa	Lé5ª,ªa	L¡SÛª ,ªa	L"irÈª$Ì«·rX &irÈª(D«a	0      *ƒ:À¨,¸« P  P  Hr  Pÿÿ  j  r  Pÿÿ  ~  X    ¡SÅ«,ªa	P¡SÕª
,ªa	H,ªa	rÑÑª,ªa	PµÀ¨j¡SÕª,ªa	,ªa	rÑÑª ,ªa	P$µÀ¨&~(irÈª*Ì«·rX ,ÖKÀ¨ z  P  X   L  P    „   „      @  „    ¡SÅ«,ªa	PirÈª
Ì«·rX ¡SÛª,ªa	L¡SÛª,ªa	PwÀ¨«SÅ«Ì«·r„ «SÛªÌ«·r„ ¡S;ª"&À¨$@&«SÅ«(Ì«·r„ *€Èª ¢’  ¾      (  ÿÿ  „         r    X    ,ªa	’YÀ¨¾
©¸«Ô:À¨irÈªD«a	(ƒgñ¨irÈªÌ«·r„ ƒgñ¨¤!À¨ €Èª",ªa	r$YÀ¨&(irÈª      *Ì«·rX ,¡SÛª ÌP     X       D   D      @  D   ’   ,ªa	Pé;ª
irÈªÌ«·rX ÖKÀ¨wÀ¨«SÅ«Ì«·rD «SÛªÌ«·rD ¡S;ª&À¨ @"«SÅ«$Ì«·rD &€Èª(,ªa	’*YÀ¨, ö      8  ÿÿ  D         $  FD   $  À:   Ð  Ê: ©¸«Ô:À¨irÈª
D«a	8ƒgñ¨irÈªÌ«·rD ƒgñ¨¤!À¨QÀ¨$«SÕª D«a	F"Ì«·rD $QÀ¨&$(vLÀ¨,¡S5ª0,ªa	Ð2vLÀ¨ (   X     Ð  Ê:  ü:  Ø   R ˆ     ü:  ˆ   R    ˆ  =†À¨Ì«·rX )&Èª,ªa	Ðn'À¨vLÀ¨QÀ¨Ø]zÀ¨ ,ªa	R$Ì«·rˆ (n'À¨,irÈª.      Ì«·rˆ 0¡SÛª2,ªa	R4LÀ¨6«SÅ«8Ì«·rˆ  ^  ˆ   &     ˆ   ˆ ¬     ˆ   V      ”   irÈªÌ«·rˆ ¡S;ªDÀ¨«SÅ«Ì«·rˆ «SÕªÌ«·rˆ Ì«·r¬ ù_¸«irÈªÌ«·rˆ irÈª D«a	V"ƒ:À¨$€¸«&YÀ¨(”*¡SÛª †R  P      ¬     ˆ   P      Ä  ˆ    ,ªa	RirÈªD«a	P
;	À¨òyÀ¨«SÅ«Ì«·r¬ ù_¸«irÈªÌ«·rˆ irÈªD«a	Pƒ:À¨€¸« YÀ¨"Ä$irÈª&Ì«·rˆ (¡SÛª ¬R  ˆ       P        ¬    R ˆ     ¬   ü: ,ªa	RirÈªÌ«·rˆ 
ÖKÀ¨zË«irÈªD«a	P;	À¨òyÀ¨+û¨«SÅ«Ì«·r¬ =†      À¨ ,ªa	R$Ì«·rˆ (3&Èª*Ì«·r¬ ,n'À¨ Ø  `;  R	   œ    `;    Œ   `;  œ  8	  œ     t vLÀ¨QÀ¨
R	]zÀ¨,ªa	œn'À¨«SÕªD«a	  Ì«·rŒ n'À¨"€Èª$,ªa	œ&eÀ¨(8	*¡SÛª,,ªa	œ.q;ª2¡SÅ«4,ªa	t 
	  œ  t       v  v      Œ     Œ    ¡SÛª,ªa	œ¡SÛª
,ªa	t‘T;ªzË«¡SÅ«,ªa	v¡SÛª,ªa	v¹À¨^\À¨irÈª Ì«·rŒ "+¹«$«SÅ«&Ì«·rŒ (¡SÕª 0	tœ  ò  `;  Œ ¨    œ    ¨   `;  Ä;  Â
  Ä;  H ,ªa	t,ªa	œQÀ¨
òn'À¨«SÕªÌ«·rŒ Ì«·r¨ =†À¨,ªa	œ3&Èª       Ì«·r¨ "n'À¨&vLÀ¨*QÀ¨,Â
.n'À¨2¡SÕª4,ªa	H b	Ò  x  h     ¾  x¾  Ì	  Ä;  @   x ,ªa	Òù_Èª,ªa	x
irÈªÌ«·rh ÖKÀ¨¡SÅ«,ªa	¾ÑÕª,ªa	x,ªa	¾¬À¨Ì	n'À¨"irÈª$Ì«·r@ &¡SÛª(,ªa	x ˆ	      H   H   P    ¼	  h   x        ù_¸«»RÀ¨«SÅ«
Ì«·rH irÈªÌ«·rH irÈªD«a	PÛé¨YÀ¨¼	irÈªÌ«·rh ¡SÛª ,ªa	x"ù_¸«$»RÀ¨&«SÅ«(Ì«·r  ®	     H     ¬
  Î;  x¾|	  x  Î;  x  <  irÈªÌ«·r irÈª
Ì«·rH Ûé¨µÀ¨¬
vLÀ¨ñXÈª,ªa	x,ªa	¾|	Èª       ,ªa	x"n'À¨&ù_Èª(,ªa	x*irÈª,Ì«·r<  Ø	    À  xÀ  8
  Î;  „   x      H   H  ÖKÀ¨¡SÅ«,ªa	À
ÑÕª,ªa	x,ªa	À¬À¨8
n'À¨irÈªÌ«·r„ ¡SÛª,ªa	x ù_¸«"»RÀ¨$«SÅ«&Ì«·rH (irÈª*Ì«·rH   
  P    (
  <   x            H      irÈªD«a	PÛé¨
YÀ¨(
irÈªÌ«·r< ¡SÛª,ªa	xù_¸«»RÀ¨«SÅ«Ì«·r irÈª Ì«·r "irÈª$Ì«·rH &Ûé¨(µÀ¨ &
¬
  Ø;  xÀè	  x  Ø;  x  l     Â  xÂ ¬
vLÀ¨
ñXÈª,ªa	x,ªa	Àè	Èª,ªa	xn'À¨ù_Èª,ªa	xirÈª Ì«·r      l "ÖKÀ¨$¡SÅ«&,ªa	Â(ÑÕª*,ªa	x,,ªa	Â P
  ¤
  Ø;  D   x      H   H   P    ”
   ¬À¨¤
n'À¨irÈªÌ«·rD ¡SÛª,ªa	xù_¸«»RÀ¨«SÅ«Ì«·rH irÈªÌ«·rH  irÈª"D«a	P$Ûé¨&YÀ¨(”
*irÈª x
l   x            H     ¬
  â;  xÂT
 Ì«·rl ¡SÛª,ªa	x
ù_¸«»RÀ¨«SÅ«Ì«·r irÈªÌ«·r irÈªÌ«·rH Ûé¨µÀ¨¬
 vLÀ¨$ñXÈª&,ªa	x(,ªa	Â*T
  
  x  â;  ¶
  ì;  Ò  ö;  Ò  ö;  8J  BJ    b   Èª,ªa	xn'À¨QÀ¨¶
vLÀ¨¡SÕª,ªa	,ªa	ÒvLÀ¨)&Èª ,ªa	      Ò"n'À¨&vLÀ¨*vLÀ¨.""À¨0ÑÅ«2,ªa	b4ÙKÀ¨ Ò
    @        æ
  †    `      l          À "À¨ÑÁ«
ÙKÀ¨tÀ¨€¸«YÀ¨æ
…sÀ¨†""À¨ÑÅ«,ªa	`ÙKÀ¨ "À¨"ÑÁ«&ÙKÀ¨(tÀ¨*€¸«,YÀ¨.0…sÀ¨2À     `      Ú          æ    `      J     ""À¨ÑÅ«,ªa	`
ÙKÀ¨"À¨ÑÁ«ÙKÀ¨tÀ¨€¸«YÀ¨…sÀ¨æ ""À¨"ÑÅ«$,ªa	`&ÙKÀ¨("À¨*ÑÁ«.ÙKÀ¨0tÀ¨ 0    :  z  ¼M                z   Ä  ¼M  z   €¸«YÀ¨:
…sÀ¨zvLÀ¨©¸«Ô:À¨irÈªD«      a	  ƒgñ¨¤!À¨ ù_Èª",ªa	z$¡S5ª(,ªa	Ä*n'À¨.¡SÛª0,ªa	z2qÀ¨ `  zÄV  z  ¼M      \  ÿÿ    ÿÿ  f  ÿÿ       ñXÈª,ªa	z,ªa	Ä
VÈª,ªa	zn'À¨©¸«Ô:À¨irÈªD«a	\ƒgñ¨ ""À¨"ygÁ«&irÈª(D«a	f*ƒgñ¨."À¨0ygÁ«     ’  œ       N  *N  x        Ì  x         ¤!À¨€Èª,ªa	’
YÀ¨œðyÀ¨‰^À¨vLÀ¨vLÀ¨irÈªÌ«·rx ÖKÀ¨ ÑÁ«$YÀ¨&Ì(irÈª*Ì«·rx ,¡S;ª0CyÀ¨2+û¨ À         x   4N  |  x        L   €  ~   ©¸«¡S;ª
LÀ¨«SÅ«Ì«·rx vLÀ¨      ©Èª,ªa	|irÈªÌ«·rx ¡S;ª LÀ¨"«SÅ«$Ì«·rL &irÈª(,ªa	€*irÈª,,ªa	~.irÈª ìL             ~  €  
  |  x         Ì«·rL ôÀ¨
L	Vc©¸«!Èªú¨Áp ¡SÉª,ªa	~€Èª,ªa	€YÀ¨
ù_Èª ,ªa	|"irÈª$Ì«·rx &¡S;ª*üqÀ¨,«SÅ« L   €  ~  L             ~  €  B    Ì«·rL irÈª,ªa	€
irÈª,ªa	~irÈªÌ«·rL ôÀ¨L	Vcù_¸«!Èªú¨Áp ¡SÉª ,ªa	~"€Èª$,ªa	€&YÀ¨(B*é5ª @|  |  †  >N  ‚H    „H        ”   ,ªa	|€Èª,ªa	|
µÀ¨†      vLÀ¨ÑÕª,ªa	‚,ªa	HÙKÀ¨ÑÕª,ªa	„,ªa	H ÙKÀ¨"ª:À¨$€¸«&YÀ¨(”*©¸« h    ^  ÿÿ  p  ÿÿ  x   ÿÿ  ~  ÿÿ  |         „ Ô:À¨irÈªD«a	^
ƒgñ¨irÈªD«a	pƒgñ¨irÈªÌ«·rx ƒgñ¨irÈª D«a	~"ƒgñ¨&irÈª(Ì«·r| *ƒgñ¨.¤!À¨0ÑÕª2,ªa	„ ˜H  °  J  |           „H  ¾  J    ,ªa	HYÀ¨°
irÈª,ªa	JirÈªÌ«·r| irÈªú¨Áp ôÀ¨Ayð‘ÑÕª,ªa	„ ,ªa	H"µÀ¨$¾&ù_Èª(,ªa	J*¡S;ª Â  J       Ò    HN  žH  â        Š       ¡SÛª,ªa	JtÀ¨      
ÑÁ«µÀ¨ÒOqÀ¨vLÀ¨ÑÕª,ªa	ž,ªa	HµÀ¨ â"OqÀ¨$©¸«&Ô:À¨(irÈª*D«a	Š,ƒgñ¨0¤!À¨ ð      ¼  ÿÿ  x   ÿÿ  È  ÿÿ           ÿÿ     ©¸«Ô:À¨irÈª
D«a	¼ƒgñ¨irÈªÌ«·rx ƒgñ¨irÈªD«a	Èƒgñ¨ ©¸«"aŽÈª$ú¨Áp &¬pÀ¨(©¸«*ƒgñ¨.ù_¸«0aŽÈª        ÿÿ  Î            Ô  ÿÿ  |            ú¨Áp ¬pÀ¨©¸«
ƒgñ¨irÈªD«a	Îƒgñ¨¤!À¨©¸«Ô:À¨irÈªD«a	Ô ƒgñ¨$irÈª&Ì«·r| (ƒgñ¨,¤!À¨.©¸«0Ô:À¨ L  è  ÿÿ  J        €   Æ  HN  €    €Æh irÈª      D«a	èƒgñ¨¡SÛª,ªa	JygÁ«¤!À¨ù_Èª,ªa	€¡S5ª,ªa	Æ n'À¨$¡SÛª&,ªa	€(qÀ¨*ñXÈª,,ªa	€.,ªa	Æ0h z  €  HN  ˆ  RN  J  žH  š        ü  ÿÿ   Èª,ªa	€n'À¨QÀ¨ˆvLÀ¨©Èª,ªa	JÑÕª,ªa	ž,ªa	HµÀ¨ š"OqÀ¨$©¸«&Ô:À¨(irÈª*D«a	ü,ƒgñ¨0¡SÛª ¨|        Ò  ¨a  ©a  ò   †   T œ  ˜  ”     ©a  ò ,ªa	|ygÁ«
¤!À¨QÀ¨ÒvLÀ¨vLÀ¨QÀ¨ò]zÀ¨ ,ªa	†$,ªa	 (,ªa	T,Ì«·rœ 0Ì«·r˜ 4Ì«·r” 8n'À¨<^À¨>ò ä  ²a   Î                          ”   ÿÿ    ˜      vLÀ¨¡S5ª,ªa	Î©¸«Ô:À¨irÈªD«a	  ƒgñ¨¤!À¨©¸«Ô:À¨ irÈª"Ì«·r” $ƒgñ¨(¤!À¨*irÈª,Ì«·r˜ .irÈª0D«a	       6      $  ÿÿ  ˜   ÿÿ  *  ÿÿ             Ûé¨YÀ¨6
©¸«Ô:À¨irÈªD«a	$ƒgñ¨irÈªÌ«·r˜ ƒgñ¨irÈª D«a	*"ƒgñ¨&¤!À¨(©¸«*3:À¨,irÈª.Ì«·r  0Ã;è¨ @                  d      r  Î       ¤!À¨irÈªÌ«·r  
irÈªÌ«·r  ÖKÀ¨üqÀ¨©¸««SÛªD«a	d©¸«Ûé¨µÀ¨r ù_Èª",ªa	Î$©¸«&Ô:À¨(irÈª f          Æ  ¼a            &     0   0         Î   D«a	  ƒgñ¨
¤!À¨QÀ¨ÆvLÀ¨irÈªÌ«·r  ¡S;ªDÀ¨«SÅ« Ì«·r0 "irÈª$Ì«·r0 &irÈª(D«a	  *Ûé¨,µÀ¨.Î0irÈª ”˜         À                    0        ä Ì«·r˜ irÈªD«a	  
Ûé¨µÀ¨À©¸«Ô:À¨irÈªD«a	  ƒgñ¨¤!À¨©¸« Ô:À¨"irÈª$D«a	0&ƒgñ¨*¤!À¨,QÀ¨.ä À  ˜   &     0   Æa  0   P    B     >     irÈªÌ«·r˜ ¡S;ªDÀ¨«SÅ«Ì«·r0 vLÀ¨irÈªÌ«·r0 irÈªD«a	PÛé¨ µÀ¨"B$€Èª&,ªa	 (tÀ¨*>,©¸«.Ô:À¨ ì                   ¢     †    È  ¢È   irÈªD«a	  ƒgñ¨¤!À¨¡SÕª,ªa	 ,ªa	¢¡SÛª,ªa	 éÛª,ªa	†¸«¡SÅ« ,ªa	È"ÑÕª$,ªa	¢&,ªa	È(¬À¨ 6  Æa      ¢  p        ¢È  ¢  Æa  ä   6n'À¨
©¸«Ô:À¨¡SÛª,ªa	¢kŽÈªD«a	pƒgñ¨¤!À¨ñXÈª,ªa	¢ ,ªa	È"$Èª&,ªa	¢(n'À¨,QÀ¨.ä0QÀ¨ @ä  Ða  œ         Æ  œ   D      œ   V ävLÀ¨
irÈªÌ«·rœ irÈªD«a	  Ûé¨YÀ¨ÆirÈªÌ«·rœ irÈªD«a	D Ûé¨"5MÀ¨$irÈª&Ì«·rœ (irÈª*D«a	V h                z  ¢  0     Ê  ¢Ê  D  Ða   Ûé¨5MÀ¨tÀ¨
€¸«µÀ¨zù_Èª,ªa	¢irÈªÌ«·r0 ÖKÀ¨¡SÅ«,ªa	ÊÑÕª ,ªa	¢",ªa	Ê$¬À¨&D(n'À¨,irÈª ’0   ¢      P   œ   P     4  P   ˜    Ì«·r0 ¡SÛª,ªa	¢
ù_¸«»RÀ¨«SÅ«Ì«·rP irÈªÌ«·rœ irÈªÌ«·rP Ûé¨YÀ¨4 irÈª"Ì«·rP $irÈª&D«a	˜ (Ûé¨ ¸    P   J        P   P      P   D   ôLÀ¨irÈªÌ«·rP 
irÈªD«a	JÛé¨,LÀ¨ª:À¨irÈªÌ«·rP irÈªD«a	PÛé¨,LÀ¨ irÈª"Ì«·rP $irÈª&D«a	D(Ûé¨ Þ                4                    V  ÿÿ    œ  ôLÀ¨tÀ¨ª:À¨
€¸«YÀ¨4©¸«Ô:À¨irÈªD«a	  ƒgñ¨¤!À¨©¸« Ô:À¨"irÈª$D«a	V&ƒgñ¨*¤!À¨,irÈª.Ì«·rœ  
  V    "      h  ÿÿ        z        ä  Úa irÈªD«a	VÛé¨
µÀ¨"©¸«Ô:À¨irÈªD«a	hƒgñ¨¤!À¨©¸«Ô:À¨ irÈª"D«a	z$ƒgñ¨(¤!À¨*QÀ¨,ä.vLÀ¨ 8  ¢ÊŒ  ¢  Úa  0     T  v             ñXÈª,ªa	¢,ªa	Ê
ŒÈª,ªa	¢n'À¨irÈªÌ«·r0 ÖKÀ¨ÑÅ«,ªa	TeÀ¨ v"©¸«$Ô:À¨&irÈª(D«a	  *ƒg      ñ¨ b        ˆ        ä  Æ  äa  œ   ®      œ  ¤!À¨©¸«Ô:À¨
irÈªD«a	ˆƒgñ¨¤!À¨QÀ¨äQÀ¨ÆvLÀ¨ irÈª"Ì«·rœ $irÈª&D«a	®(Ûé¨*ÙKÀ¨,irÈª.Ì«·rœ  Ž  ´        œ   º          ò  0      irÈªD«a	´Ûé¨
ÙKÀ¨ª:À¨irÈªÌ«·rœ irÈªD«a	ºÛé¨ÙKÀ¨ª:À¨€¸«YÀ¨ ò"irÈª$Ì«·r0 &f‹À¨(žSÅ« ´ˆ  T    ˆ  ä                    À     ,ªa	ˆ¡SÛª,ªa	T
¹À¨ÎÛª,ªa	ˆeÀ¨ä©¸«Ô:À¨irÈªD«a	  ƒgñ¨ ¤!À¨"©¸«$Ô:À¨&irÈª(D«a	À*ƒgñ¨       Þ    ä  œ   ®    Æ  îa  œ   ´      œ    ¤!À¨QÀ¨ä
irÈªÌ«·rœ irÈªD«a	®Ûé¨YÀ¨ÆvLÀ¨irÈªÌ«·rœ  irÈª"D«a	´$Ûé¨&ÙKÀ¨(irÈª*Ì«·rœ ,irÈª º          ”  ˆ    ˆ  D               D«a	ºÛé¨ÙKÀ¨
ª:À¨€¸«YÀ¨”žSÛª,ªa	ˆv:À¨ÎÛª,ªa	ˆYÀ¨D ©¸«"Ô:À¨$irÈª&D«a	  (ƒgñ¨,¤!À¨ 2      Ü        ä  œ   º      ˆ         ©¸«Ô:À¨irÈª
D«a	Üƒgñ¨¤!À¨QÀ¨äirÈªÌ«·rœ irÈªD«a	ºÛé¨ ÙKÀ¨"žSÛª$,ªa	ˆ&v:À¨(¦¸«*ÎË«      ,åLÀ¨ \      „                    ò        ä  ˆ tÀ¨€¸«YÀ¨
„©¸«Ô:À¨irÈªD«a	  ƒgñ¨¤!À¨©¸«Ô:À¨irÈª D«a	ò"ƒgñ¨&¤!À¨(QÀ¨*ä,žSÛª.,ªa	ˆ ˆ      Œ  Æ  øa  œ       ¬  œ   b     v:À¨.À¨¡SÅ«
,ªa	ŒQÀ¨ÆvLÀ¨irÈªÌ«·rœ irÈªD«a	Ûé¨µÀ¨ ¬"«SÕª$D«a	&Ì«·rœ (vLÀ¨,ù_¸«.irÈª ´œ   $  0         ¤  ¤  ð             Ì«·rœ irÈªD«a	$
irÈªÌ«·r0 +é¨©¸«ƒ:À¨¡SÅ«,ªa	¤€Èª,ªa	¤µÀ¨ð ©¸«"Ô:À¨$irÈª&      D«a	  (ƒgñ¨ Ü        *        ä  ¤    œ   $  0    ¤!À¨©¸«Ô:À¨
irÈªD«a	*ƒgñ¨¤!À¨QÀ¨ä¡SÛª,ªa	¤Á8¸«irÈª Ì«·rœ "irÈª$D«a	$&irÈª(Ì«·r0 *+é¨       ¢  ¢  4                    @       ©¸«ƒ:À¨¡SÅ«
,ªa	¢€Èª,ªa	¢YÀ¨4©¸«Ô:À¨irÈªD«a	  ƒgñ¨ ¤!À¨"©¸«$Ô:À¨&irÈª(D«a	@*ƒgñ¨.¤!À¨ 0  ä  b  V  Ž  b  V    œ   $    V   QÀ¨ävLÀ¨©Èª,ªa	V©Èª,ªa	ŽvLÀ¨¡SÛª,ªa	VÁ8¸«irÈª Ì«·rœ "irÈª$D«a	$&ƒ:À¨(¡S      Å«*,ªa	V,Á8Èª ZŽ  ¤V  @  V    œ   $    ¢  ¢ ,ªa	ŽÑÕª,ªa	¤
,ªa	VµÀ¨@¡SÛª,ªa	VÁ8¸«irÈªÌ«·rœ irÈªD«a	$ƒ:À¨ ¡SÅ«",ªa	¢$€Èª&,ªa	¢ ~    œ     V  ¦  ¢  ¦  ¢  V     µÀ¨irÈª
Ì«·rœ ÖKÀ¨zÛª,ªa	V¡SÅ«,ªa	¦€Èª,ªa	¢YÀ¨¦¡SÛª ,ªa	¢"zÛª$,ªa	V&¸«(¡SÅ« ¤¦  œ   V    ¦    0   ŽÎ   Î   b   ,ªa	¦irÈªÌ«·rœ 
¡SÛª,ªa	VÁ8¸«¡SÛª,ªa	¦»RÀ¨«SÅ«Ì«·r0 ¡SÕª,ªa	Ž,ªa	Î é5ª$,ªa	Î&vLÀ¨*      ^À¨ ÌÂ
   †   T œ  ˜  ”     Î   b  *b       
   Î   Â
=†À¨
,ªa	†,ªa	 ,ªa	TÌ«·rœ Ì«·r˜ Ì«·r” ")&Èª$,ªa	Î&n'À¨*vLÀ¨.""À¨0ÑÁ«4µÀ¨6
8¡S5ª<,ªa	Î>…sÀ¨ Æ  4b    4       äa        F                     ÆvLÀ¨
""À¨ÑÁ«ÙKÀ¨"À¨ÑÁ«ÙKÀ¨tÀ¨€¸«YÀ¨ F"©¸«$Ô:À¨&irÈª(D«a	  *ƒgñ¨.¤!À¨0©¸«2Ô:À¨4irÈª :Z        ä  =b  :   }  
}                z   Ì D«a	Zƒgñ¨
¤!À¨…sÀ¨ävLÀ¨QÀ¨:vLÀ¨vLÀ¨ ©¸«"Ô:À¨$irÈª&      D«a	  (ƒgñ¨,¤!À¨.ù_Èª0,ªa	z2¡S5ª6,ªa	Ì n  
}  z    zÌn  z  
}  ÿ   n'À¨¡SÛª
,ªa	zqÀ¨ñXÈª,ªa	z,ªa	ÌnÈª,ªa	zn'À¨vLÀ¨"t!À¨ ,ªa	      6  :  > d B ,F J áN ¼R îV  Z „^ §b ¶f »j èn ò G©È6 
G©È: G©È> G©ÈB G©ÈF G©ÈJ G©ÈN "G©ÈR &G©ÈV *G©ÈZ .G©È^ 2G©Èb 6G©Èf :G©Èj >G©Èn  > v ü€ Ú Lø Ül@†JdTz^Ž¤¸l@ÐÀÕÎ×&Ø G©Èv G©È€ G©ÈÚ G©Èø G©ÈlG©È†G©Èd G©Èz$G©ÈŽ(G©È¸,      G©È0G©È@4G©ÈÀ8G©ÈÎ<G©È& z bÙ–ÚÂ¸æ'˜:¢:§:d¬:@¶: À:Ê:$ü:8`;ØÄ;R	Î; G©ÈbG©È–G©ÈÂG©ÈæG©ÈG©ÈG©È G©Èd$G©È@(G©È ,G©È0G©È$4G©È88G©ÈØ<G©ÈR	 ¶ ¼	Ø;(
â;”
ì;¬
ö;¶
8JÂ
BJÆ
¼M: Nž*N¢4NÌ>NJHNÒRN†¨a´©a G©È¼	G©È(
G©È”
G©È¬
G©È¶
G©ÈÂ
G©ÈÆ
 G©È:$G©Èž(G©È¢,G©ÈÌ0G©ÈJ4G©ÈÒ8G©È†<G©È´ ò ¸²aä¼arÆaÎÐaBÚa4äazîaòøa”b¬b4b@ bÆ*bò4b
=b G©È¸G©ÈäG©ÈrG©ÈÎG©   Œ   ÈBG©È4G©Èz G©Èò$G©È”(G©È¬,G©È40G©È@4G©ÈÆ8G©Èò<G©È
 .F }N
}Rÿˆ   G©ÈFG©ÈNG©ÈRG©Èˆ Œ          ,.k3“Á› 8$        1	!								&	!	G O T H I C   B A N N E R   P R O G R A M		&2!	FILENAME	:	GOTHPR.BAS5!	VERSION		:	V06C-036!	EDIT		:	07!	EDIT DATE	:	26-JAN-788!9!	AUTHOR		:	RWC/RTW10!				AJS MODIFIED FOR TRAX20	!								&	!	M O D I F I C A T I O N   H I S T O R Y			&21!	VER/ED		EDIT DATE	REASON100	!								&	!	G E N E R A L   D E S C R I P T I O N			&101!	THIS PROGRAM WILL GENERATE BANNERS ON ANY DESIRED FILESPEC.	&   !	THE BANNER IS USUALLY TRANSFERRED TO A LINE PRINTER WHICH	&   !	WILL REPRODUCE THE DESIRED CHARACTER STRI      NG WITH MUCH		&   !	OVER PRINTING.  THE LETTERS ARE LARGE GOTHIC.  THE DEFAULT	&   !	COLOR SCHEME IS BLACK ON WHITE.  A "/" ANYWHERE IN THE INPUT	&   !	STRING WILL SWITCH TO THE INVERSE OF THE PREVIOUS CHARACTER.	&   !	THIS PROGRAM WILL QUE THE OUTPUT TO THE LINE PRINTER IF		&   !	DESIRED.  AUTO QUE, AUTO DELETE, AND MULTIPLE COPIES ARE	&   !	FEATURED.  THE PROGRAM ALSO HAS AUTO RESTART CAPABILITY.	&   !									&300	!								&	!	I / O   C H A N N E L S					&310	!	CHANNEL		USED FOR320	!	1		GOTHIC.MAT  VIRTU      AL CHARACTER ARRAY330	!	2		OUTPUT FILE FOR BANNER			&400	!								&	!	V A R I A B L E  D E S C R I P T I O N S		&900	!								&	!	D I M E N S I O N   S T A T E M E N T S			&910	DIM  A%(128%)							&	!								&920	DIM #1%, C%(128%,512%)						&	! VIRTUAL CHARACTER ARRAY GOTHIC.MAT				&930	DIM FQB.BYTE%(30%), FQB.WORD%(15%)				&999!									&	!	M A I N   C O D I N G   A R E A				&1000	ON ERROR GOTO 19000						&	! SET UP STANDARD ERROR TRAP					&1030	T9%=0%								&	! SET AUTO RESTART FLAG TO FALSE				&1040	Q%      =-1% \ R%=-1%							&	! AUTO RESTART ENTRY POINT - QUE=TRUE RESTART=FALSE		&1800	X$="#.(@!$);-,?:'"+'"'						&	\ X$=X$+CHR$(X%) FOR X%=97% TO 122%				&	\ X$=X$+"ABCDEFGHIJKLMN"					&	\ X$=X$+"OPQRSTUVWXYZ0123456789"				&	! VALID CHARACTERS						&1810	A%(I%) = I%-1% FOR I%=1% TO 128%				&	\ A%(0%) = 128%							&	\ A%(89%) = 42%							&	\ CHANGE A% TO X1$						&1815	A%(89%) = 79%							&	\ CHANGE A% TO X2$						&1820 	A%(89%) = 32%							&	\ A%(33%) = 88%							&	\ CHANGE A% TO X3$						&1830	OPEN "[1,2]GOTHI      C.MAT" FOR INPUT AS FILE 1%,			&			ORGANIZATION VIRTUAL,				&			ACCESS READ, ALLOW MODIFY			&	! OPEN VIRTUAL ARRAY IN GAMES ACCOUNT READ ONLY			&1840	\ OPEN "LP:" FOR OUTPUT AS FILE 2%,				&		ORGANIZATION SEQUENTIAL STREAM				&	! GENERATE UNIQUE FILE NAME FOR OUTPUT				&1860	IF T9%=0% THEN PRINT						&	\ PRINT "THE CHARACTER STRING CAN BE AS LONG AS DESIRED."	&	\ PRINT "INPUT MAY BE ON MULTIPLE LINES.  A BLANK LINE "	&	\ PRINT "I.E. <CR> TERMINATES THE INPUT.  THE DEFAULT MODE "	&	\ PRINT "OF OUTPUT IS BLAC      K ON WHITE.  THE MODE IS INVERTED "	&	\ PRINT " WHENEVER A "+'"/"'+" IS ENCOUNTERED."			&	! MESSAGE OF HELP ON FIRST PASS ONLY				&1870	PRINT "		VALID CHARACTERS ARE:"				&	\ PRINT X$							&	\ PRINT								&	! PRINT VALID CHARACTERS LIST					&2000	INPUT LINE A$							&	\ IF INSTR(1%,A$,"TRAX SUCKS")<>0% THEN A$="I love /TRAX  "	&2001	\ CHANGE A$ TO A%\A%(0%)=A%(0%)-2%				&2002	IF A%(0%)=0% THEN 32767						&2010	FOR W% = 1% TO A%(0%)						&	\ IF A%(W%) = 47% THEN						&		F% = NOT(F%)						&		\ GOTO 2040				      		&	!DO LINE IF / THEN CHANGE BACKGROUND				&2015	W1% = INSTR(1%,X$,CHR$(A%(W%)))					&	\ W1% = 77% IF W1% = 0%						&	!MAP CHAR TO VAL SET TO 77 (SPACE ) IF NO VALID			&2020	W2%=FNG%(W1%,F%)						&	!PRINT THE LETTER						&2040	NEXT W%								&	\ PRINT #2%, CHR$(12%)						&	\ GOTO 2000							&	!LOOP								&	!CLEAR PRINTER							&	!SEE IF USER WANTS MORE						&19000	!								&									&	!	S T A N D A R D   E R R O R   T R A P			&									&19010	\ RESUME 32767							&	! EXIT GRACEFULLY						&20000	DEF FNG%(T      %,T0%)						&	!PRINT GOTH LETTER						&20010	T$=""								&	\ FOR T1% = 1% TO C%(T%,0%) -1%					&	!START LOOP							&20020	IF (C%(T%,T1%) <> 0%) THEN 20030				&	!IF NOT A ZERO THEN GO ON					&20022	T$=T$+SPACE$(132%-LEN(T$))					&	\ T$=XLATE(T$,X3$) IF T0% = -1%					&	! ADD SPACES TILL 132 AND NEG IF T0 SET				&20024	PRINT #2%, T$;CHR$(13%);XLATE(T$,X1$);CHR$(13%);XLATE(T$,X2$)	&	!PRINT THE LINE							&20026	T$=""								&	\ GOTO 20100							&	!ZERO THE STRING AND GOTO NEXT					&20030 	IF C%(T%,T1%) > 0% TH      EN T$=T$+SPACE$(C%(T%,T1%))		&	\GOTO 20100							&	!IF POS THE ADD SPACES						&20040	T$=T$+"X" FOR T3% = C%(T%,T1%) TO 0%				&	!NEG ADD CHAR							&20100	NEXT T1%20200	FNG%=T%								&	\FNEND								&32767	\ CLOSE T% FOR T%=1% TO 12%					&	\ END								&           ,.k3^Á› 8$         ,.k3    OÀNÀ   ¼©jè  ¼©kè ¼©lè  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@   vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  vLÀ¨@  ^À¨@  vLÀ¨@   ©Èª@  vLÀ¨@  áYÈª@  áYÈª@  vLÀ¨@  irÈª@  irÈª@  +é¨@  «SÅ«@  ¡S5ª@  ¡S5ª@  Èª@  ñXÈª@  QÀ¨@  n'À¨@   irÈª@  ¡SÛª@  À¨@  +û¨@  «SÅ«@  ñXÈª@  Èª@  n'À¨@  irÈª@  irÈª@  +é¨@  «SÅ«@  irÈª@  irÈª@  +é¨@   «SÅ«@  vLÀ¨@  ù_Èª@        ¡S5ª@  Èª@  ñXÈª@  QÀ¨@  n'À¨@  ¡SÛª@  ¡SÕª@  Èª@  !Èª@  ¡SÉª@  ñXÈª@  Èª@   n'À¨@  ©¸«@  !Èª@  ¡S)ª@  ¡S;ª@  !Èª@  ¡S)ª@  —À¨@  aŽÈª@  ÝEÀ¨@  «SÅ«@  vLÀ¨@  ¡S;ª@  !Èª@  ¡S)ª@   —À¨@  aŽÈª@  ÝEÀ¨@  «SÅ«@  vLÀ¨@  ¡S;ª@  !Èª@  ¡S)ª@  ¡S;ª@  !Èª@  ¡S)ª@  —À¨@  aŽÈª@  ÝEÀ¨@  «SÅ«@   vLÀ¨@  ù_Èª@  èrÀ¨@  vLÀ¨@  ¡S5ª@  èrÀ¨@  vLÀ¨@  €Èª@  µÀ¨@  ©¸«@  Ô:À¨@  irÈª@  ƒgñ¨@  ¤!À¨@  ©¸«@   Ô:À¨@  irÈª@  ƒgñ¨@  ¤!À¨@  ©¸«@  Ô:À¨@        irÈª@  ƒgñ¨@  ¤!À¨@  ©¸«@  Ô:À¨@  irÈª@  ƒgñ¨@  ¤!À¨@  ©¸«@   Ô:À¨@  irÈª@  ƒgñ¨@  ¤!À¨@  ©¸«@  Ô:À¨@  irÈª@  irÈª@  +é¨@  irÈª@  +¹«@  ©¸«@  ƒgñ¨@  ¤!À¨@  vLÀ¨@   ©¸«@  Ô:À¨@  irÈª@  ƒgñ¨@  ¤!À¨@  ©¸«@  Ô:À¨@  irÈª@  ƒgñ¨@  ¤!À¨@  ©¸«@  Ô:À¨@  irÈª@  ƒgñ¨@  ¤!À¨@   vLÀ¨@  ©¸«@  3:À¨@  irÈª@  Ã;è¨@  ¤!À¨@  ù_¸«@  irÈª@  irÈª@  ƒ:À¨@  €¸«@  YÀ¨@  «SÕª@  irÈª@  ç-À¨@   ¡SÅ«@  !Èª@  ¡SÉª@  Ü}À¨@  ©¸«@  ©¸«@  aŽÈª@  z;ª@  ¡SÅ«@        !Èª@  ¡SÉª@  ©¸«@  aŽÈª@  €¸«@  YÀ¨@   ù_Èª@  ©¸«@  aŽÈª@  ¡SÅ«@  Èª@  ñXÈª@  QÀ¨@  n'À¨@  ¡SÛª@  aŽÈª@  ÑÁ«@  µÀ¨@  !Ûª@  ¡SÅ«@  QÀ¨@   ù_¸«@  irÈª@  ¡SÛª@  aŽÈª@  À¨@  ©¸«@  ƒ:À¨@  ¡SÅ«@  €Èª@  µÀ¨@  ¡S5ª@  ¡SÛª@  ¡SÛª@  &À¨@  ¡SÅ«@   ñXÈª@  Èª@  n'À¨@  ¡S;ª@  Ô:À¨@  ¡S;ª@  À¨@  ©¸«@  ƒgñ¨@  ¤!À¨@  QÀ¨@  …sÀ¨@  QÀ¨@  azÀ­@  n'À¨@   «SÕª@  ù_Èª@  ¡SÛª@  ©¸«@  ‰Ž0¬@  ¸«@  ¡SÅ«@  Èª@  ñXÈª@  QÀ¨@  n'À¨@  ¡SÛª@        ¡SÛª@  ‰Ž0¬@  €¸«@   µÀ¨@  irÈª@  ¡S;ª@  irÈª@  ÖKÀ¨@  zË«@  CyÀ¨@  +û¨@  «SÅ«@  ÑÑª@  µÀ¨@  irÈª@  irÈª@  ô—À¨@  «SÅ«@   ¡S;ª@  Ô:À¨@  irÈª@  ƒgñ¨@  ¡S;ª@  À¨@  ©¸«@  ƒgñ¨@  irÈª@  irÈª@  ô—À¨@  ©¸«@  ƒgñ¨@  ¡S;ª@  À¨@   ©¸«@  ƒgñ¨@  irÈª@  irÈª@  ô—À¨@  ©¸«@  ƒgñ¨@  ¤!À¨@  «SÕª@  QÀ¨@  ¡SÛª@  ¡SÛª@  ‰Ž0¬@  €¸«@  eÀ¨@   irÈª@  ¡SÛª@  ¡SÛª@  ‰Ž0¬@  CyÀ¨@  +û¨@  «SÅ«@  QÀ¨@  ¡SÛª@  ¡SÛª@  ‰Ž0¬@  ¡SÅ«@  ©Èª@  Èª@  ñXÈª@         QÀ¨@  n'À¨@  irÈª@  irÈª@  +é¨@  «SÅ«@  ñXÈª@  Èª@  n'À¨@  ñXÈª@  Èª@  n'À¨@  ¡SÕª@  A†À­@  )&Èª@   n'À¨@  ù_Èª@  ¡S5ª@  Èª@  ñXÈª@  QÀ¨@  n'À¨@  ¡SÛª@  qÀ¨@  ñXÈª@  Èª@  n'À¨@   © K@  ©Z@  © d@  ©p†@  "©l@  +…À¨@   6ªm;@  ¹«ˆŒ¨ +ª·:ì€ t!À¨@   D«a	¨Ò,ªa	¨¶,«1zh( Ì«·r¨ G©È(’ú¨Áp¨  ä«a	¨  G©È(     ¹«ˆŒ         +ª·:      ©p†       ©Z       © d         © K (  (    "©l 0  0    "©l 8  8          ©p† @  @    ©p† p  p    +…À¨ ~  ~     D«a	         €@  €À      IAÛ  #.(@!$);-,?:' *  " 0  ABCDEFGHIJKLMNB  OPQRSTUVWXYZ0123456789\  [1,2]GOTHIC.MAT p  LP: x / THE   ** 00 BB \\ pp xx  | CHARACTER STRING CAN BE AS LONG AS DESIRED. ¬ . INPUT MAY BE ON MULTIPLE LINES.  A BLANK LINE Þ 2 I.E. <CR> TERMINATES THE I 0¬ bÞ  ø NPUT.  THE DEFAULT MODE 3 OF OUTPUT IS BLACK ON WHITE.  THE MODE IS INVERTED  L  WHENEVER A \ "/" d  IS ENCOUNTERED. TLd\ld t      x 		VALID CHARACTERS ARE: ”
 TRAX SUCKS¢ I love /TRAX  ´ X     0       "   ` x ”.¢@´J,ªa	 Z,ªa	"`,ªa	` G©È     	      6ªm; 
¹«ˆŒ                     	,ªa	  
¼©j       
+ª·:    2       Ë     2 D«a	  D«a	  
,ªa	 Ì«·r   &       GOTHIC ä«a	  ú¨Áp   2                     	   
         d   e   ,  6  @  J    „  Ž  ˜  ¢ vLÀ¨vLÀ¨vLÀ¨vLÀ¨vLÀ¨vLÀ¨vLÀ¨ vLÀ¨$vLÀ¨(vLÀ¨,vLÀ¨0vLÀ¨4vLÀ¨8vLÀ¨<vLÀ¨@vLÀ¨      DvLÀ¨HvLÀ¨LvLÀ¨PvLÀ¨TvLÀ¨ †   ç  è  ¼    †    ˆ  Š       &      vLÀ¨vLÀ¨^À¨¼vLÀ¨©Èª,ªa	†vLÀ¨áYÈª,ªa	ˆ áYÈª",ªa	Š$vLÀ¨(irÈª*D«a	 ,irÈª.D«a	& 0+é¨2«SÅ« ¶    a Œ  z ž  Œ  ŒžÔ   ô        Œ   Ì«·r ¡S5ª
,ªa	Œ¡S5ª,ªa	žÈª,ªa	ŒñXÈª,ªa	Œ,ªa	žÔ QÀ¨ ô "n'À¨&irÈª(Ì«·r *¡SÛª,,ªa	Œ.À¨ â        ŒžÔ   Œ       ,         +û¨«SÅ«Ì«·r 
ñXÈª,ªa	Œ,ªa	žÔ Èª,ªa	Œn'À¨irÈªÌ«·r irÈª       D«a	, "+é¨$«SÅ«&Ì«·r (irÈª    >          €  € ¢  €  €¢2  X Ì«·r irÈªD«a	> 
+é¨«SÅ«Ì«·r vLÀ¨ù_Èª,ªa	€¡S5ª,ªa	¢Èª ,ªa	€"ñXÈª$,ªa	€&,ªa	¢(2*QÀ¨,X 2    €  €      ¸     €¢2  € n'À¨¡SÛª
,ªa	€¡SÕª,ªa	€,ªa	 Èª,ªa	 !ÈªD«a	¸¡SÉª,ªa	 ñXÈª ,ªa	€",ªa	¢$2&Èª(,ªa	€ X      ¸  €   Y   ¸  *     ¸         Y   ¸ n'À¨©¸«
!ÈªD«a	¸¡S)ª¡S;ª!ÈªD«a	¸¡S)ª—À¨ aŽÈª"D«a	¸$      ÝEÀ¨&«SÅ«(Ì«·r *vLÀ¨.¡S;ª2!Èª4D«a	¸ Š  O     ¸         Y   ¸      !   ¸  X     ¸ ¡S)ª—À¨
aŽÈªD«a	¸ÝEÀ¨«SÅ«Ì«·r vLÀ¨¡S;ª!ÈªD«a	¸ ¡S)ª$¡S;ª(!Èª*D«a	¸,¡S)ª0—À¨2aŽÈª4D«a	¸ ¼       &  ¤    ¤X                   0   ¦     ¦l                   D  † ÝEÀ¨«SÅ«Ì«·r 
vLÀ¨ù_Èª,ªa	¤èrÀ¨,ªa	¤D«a	X .vLÀ¨2¡S5ª6,ªa	¦8èrÀ¨@,ªa	¦BD«a	l TvLÀ¨X€ÈªZ,ªa	†   z                    t             ¨        µÀ¨z©¸«
      Ô:À¨irÈªD«a	  ƒgñ¨¤!À¨©¸«Ô:À¨irÈªD«a	t ƒgñ¨"¤!À¨$©¸«&Ô:À¨(irÈª*D«a	¨ ,ƒgñ¨0¤!À¨ B      Ú                         H  X   ©¸«Ô:À¨irÈª
D«a	Ú ƒgñ¨¤!À¨©¸«Ô:À¨irÈªD«a	ƒgñ¨¤!À¨ ©¸«"Ô:À¨$irÈª&D«a	H(irÈª*D«a	X,+é¨ l  `            N      t                      irÈªD«a	`+¹«
©¸«ƒgñ¨¤!À¨vLÀ¨©¸«Ô:À¨irÈªD«a	tƒgñ¨"¤!À¨$©¸«&Ô:À¨(irÈª*Ì«·r ,ƒgñ¨0¤!À¨2©¸« œ              Ð                         Ô:À¨      irÈªD«a	  
ƒgñ¨¤!À¨vLÀ¨©¸«3:À¨irÈªÌ«·r  Ã;è¨¤!À¨ ù_¸«"irÈª$Ì«·r  &irÈª(D«a	*ƒ:À¨,€¸« Æ  Ð  ž    Ñ        ¨  ¸  ¨         YÀ¨Ð«SÕª
D«a	žÌ«·r  vLÀ¨irÈªÌ«·r  ç-À¨¡SÅ«,ªa	¨!ÈªD«a	¸ ¡SÉª",ªa	¨$Ü}À¨&©¸«(©¸«*aŽÈª î¸     ª  ¸  ª  Ò    ¸    X  Ú  Ž   D«a	¸z;ª
¡SÅ«,ªa	ª!ÈªD«a	¸¡SÉª,ªa	ªvLÀ¨©¸«aŽÈªD«a	¸ €¸«"YÀ¨$X&vLÀ¨*ù_Èª,,ªa	Ž.©¸«   ¸  ¬  Ž  Ž¬2     Ú  Ž  ¸  /    aŽÈª      D«a	¸¡SÅ«
,ªa	¬Èª,ªa	ŽñXÈª,ªa	Ž,ªa	¬2QÀ¨ n'À¨ ¡SÛª",ªa	Ž$aŽÈª&D«a	¸(ÑÁ«,µÀ¨ DR  „  „    ß       Ž  ¸         R!Ûª,ªa	„
¡SÅ«,ªa	„QÀ¨vLÀ¨ù_¸«irÈªÌ«·r ¡SÛª,ªa	Ž aŽÈª"D«a	¸$À¨&©¸«(ƒ:À¨*¡SÅ« l    |  M   ä    „  Ð  ’  ø  Ž ,ªa	€Èª,ªa	
µÀ¨|¡S5ª,ªa	vLÀ¨¡SÛª,ªa	¡SÛª,ªa	„ &À¨"Ð$¡SÅ«&,ªa	’(vLÀ¨,ñXÈª.,ªa	Ž ˜¬2  Ž  ø                    ¨  8J  BJ  X         N  T ,ªa	¬2Èª
,ªa	Žn'À¨¡S;ªÔ:À¨¡S;ªÀ¨©¸«ƒgñ¨"¤!À¨$QÀ¨&¨(vLÀ¨,vLÀ¨0…sÀ¨2X4vLÀ¨8QÀ¨:T Ð  ”–   N  *N       ˜  ”    ¾    ® azÀ­,ªa	”,ªa	–
n'À¨vLÀ¨«SÕªD«a	  Ì«·r ù_Èª,ªa	˜¡SÛª,ªa	” ©¸«"‰Ž0¬$D«a	¾&¸«(¡SÅ«*,ªa	® ø  ˜  ˜®  <  *N  4N  ”  ˜  ¾    °  6N Èª,ªa	˜ñXÈª
,ªa	˜,ªa	®QÀ¨<n'À¨vLÀ¨¡SÛª,ªa	” ¡SÛª",ªa	˜$‰Ž0¬&D«a	¾(€¸«*µÀ¨,°.vLÀ¨ &     „                 –ÿÿ        V       irÈªÌ«·r ¡S;ªirÈªÌ«·r ÖKÀ¨zË«CyÀ¨+û¨«SÅ«Ì«·r ÑÑª,ªa	–"µÀ¨$V&irÈª(Ì«·r *irÈª,Ì«·r  P       8N          ÿÿ         ÿÿ           ô—À¨«SÅ«Ì«·r 
vLÀ¨¡S;ªÔ:À¨irÈªÌ«·r ƒgñ¨¡S;ª À¨"©¸«$ƒgñ¨(irÈª*Ì«·r ,irÈª.Ì«·r 0ô—À¨2©¸« €  ÿÿ         ÿÿ                  :N       ,  >N ƒgñ¨¡S;ªÀ¨©¸«ƒgñ¨irÈªÌ«·r irÈªÌ«·r ô—À¨©¸« ƒgñ¨$¤!À¨&vLÀ¨*«SÕª,D«a	  .Ì«·r 0QÀ¨2,4vLÀ¨ ´  ”  ˜        ¾    â     ”  ˜  ¾     ¡SÛª,ªa	”¡SÛª
,ªa	˜‰Ž0¬D«a	¾€¸«eÀ¨âirÈªÌ«·r ¡SÛª,ªa	”¡SÛª ,ªa	˜"‰Ž0¬$D«a	¾&CyÀ¨(+û¨ Ú     ,  HN  ”  ˜  ¾  š  °  š   «SÅ«Ì«·r QÀ¨
,vLÀ¨¡SÛª,ªa	”¡SÛª,ªa	˜‰Ž0¬D«a	¾¡SÅ«,ªa	š ©Èª",ªa	°$Èª&,ªa	š(ñXÈª  š°
  (  HN     °       š°
  š ,ªa	š,ªa	°

QÀ¨(n'À¨irÈªÌ«·r irÈªD«a	°+é¨«SÅ«Ì«·r  ñXÈª",ªa	š$,ªa	°&
(Èª*,ªa	š (  HN  „N  ˜®        ˜  „N  èN  ”´  –”  ´ n'À¨vLÀ¨ñXÈª,ªa	˜,ªa	®Èª,ªa	˜n'À¨vLÀ¨ ¡SÕª",ªa	”$,ªa	´&A†À­(,ªa	–*,ªa	”,)&Èª.,ªa	´ T  èN  ÿ  ”   ²  ”  ”²v  Œ  ÿ  ”     n'À¨vLÀ¨ù_Èª,ªa	”¡S5ª,ªa	²Èª,ªa	”ñXÈª,ªa	”,ªa	² v"QÀ¨$Œ&n'À¨*¡SÛª,,ªa	”.qÀ¨0ñXÈª ‚”²v  ”  ÿ   ,ªa	”,ªa	²v
Èª,ªa	”n'À¨t!À¨ ,ªa	      2  6  :  >  B  F 	 J 
 N  R  V d Z e ^ ,b 6f @j J G©È2 
G©È6 G©È: G©È> G©ÈB G©      ÈF G©ÈJ "G©ÈN &G©ÈR *G©ÈV .G©ÈZ 2G©È^ 6G©Èb :G©Èf >G©Èj  > n r „v Žz ˜~ ¢‚ ç† èŠ ’ š ¦ ~š&Â0 G©Èn G©Èr G©Èv G©Èz G©È~ G©È‚ G©È†  G©ÈŠ $G©È’ (G©Èš ,G©È¦ 0G©È4G©È~8G©Èš<G©ÈÂ z æDNzÐ¨ÑÐÒ ÚßRä|ø8J¼BJÀ NÈ*NÚ4N6N G©ÈæG©ÈG©ÈzG©È¨G©ÈÐG©È G©È G©ÈR$G©È|(G©È,G©È¼0G©ÈÀ4G©ÈÈ8G©ÈÚ<G©È ¶ "8NV:N¢>N°HNâ„N,èN@ÿX   G©È"G©ÈVG©È¢   (   G©È°G©ÈâG©È,G©È@ G©ÈX (          ,.k3ÌÁ› 8$     X   SY:GOTHIC/CP=SY:GOTHIC/MPUNITS = 14ASG = TI:13ASG = SY:5:6:7:8:9:10:11:12EXTTSK= 2048 //X          ,.k3l^Á› 8$     p   	.ROOT BIROT1-USER,RMSUSER:	.FCTR GOTHIC-LIBRLIBR:	.FCTR LB:[1,1]BASICY/LBRMS:	.FCTR BIO017@LB:[1,1]BASIC1	.END p          (aŸ“Á› 8$Èd      1	!***************************************************************&	!								&	!								&	!	C O P Y    S Y S G E N    F I L E S    F R O M		&	!								&	!			   T A P E				&	!								&	!								&	!								&	!	Program:	COPYTAPE				&	!	Version:	V1.1A					&	!	Edit level:	02					 1.1A02&	!	Edit date:	13-Jun-79				 1.1A02&	!	Author(s):	WJB					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!***************************************************************&	!			      					&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!	     COPYRIGHT (c) 1977, 1978 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 PERS      ON.   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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	      !$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	V01-00	060178	  WJB	Initial V01-00 Release		&	!	V1.1A00	29-Mar-79 KMR	Changed spawnings to use MCR.	 1.1A00&	!	V1.1A01	08-Jun-79 KMR	Removed skip around the running	 1.1A01&	!				  of SYSCHANGE if norewind was	 1.1A01&	!				  specif      ied.			 1.1A01&	!	V1.1A02	13-Jun-79 KMR	Change the prompt for tape number1.1A02&	!				  to allow the reading of all	 1.1A02&	!				  valid tapes.			 1.1A02&	!				Converted to the new dialogue	 1.1A02&	!				  function.			 1.1A02&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!************************************************      ***************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$******************      ********************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&      	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	10000		Allocate Tape Drive(s)			&	!	10100		Deallocate Tape Drive(s)		&	!	10200		Mount A Tape or Tape Set		&	!	10300		Dismount Tape(s)			&	!	10400		Establish Tape Holding UFD		&	!	10500		Delete Unused Components From Holding	&	!			  UFD					&	!	12000		General Tape Copy Routine		&	!								&	!**********************************************************      *****&750	!$**************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!*********      ******************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\       DIM TAPES.ALLOCATED$(15)					&	!								&	!	List of tapes to be allocated or deallocated.		&902	\ DIM SEQ.KEYS$(99)						&	!								&	!	Array to hold sequence keys of components to be		&	!	  dropped during the copy operation.			&904	\ DIM NUM.MISSING.FROM.TAPE%(24%)				&	!								&	!	Holds count of missing items on each Release Kit tape	&	!								&	\ DIM #10%,	 MISSING.COUNTS%(24%)				&			,MISSING.ITEMS$(1023%) = 32%			&	!								&	!	Virtual arrays for holding entries for components	&	!	  missing at time       of updating				&950	!$**************************************************************&	!								&	!								&	!		R E C O R D    M A P ( S )			&	!								&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Se      t up standard default error trap			&1010	\ VER.EDIT.NUM$ = "V1.1A"					!1.1A00&	\  TRUE% = -1%							&	\ FALSE% =  0%							&	\ DEBUG.FLAG% = FALSE%						&	\ GO SUB 14700							&	\ GO TO 1030	IF INDIRECTED% = TRUE%				&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "COPYTAPE	"; !VER.EDIT.NUM$; "   ";		 1.1A02&	\ PRINT								&	\ PRINT "Copy Files From Tape To SYSGEN Disk"			&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ TE% = FN.SETUP.DIALOG      UE%( "[200,200]SGNDLGHLP" )		!1.1A02&	\ VT.IS.OPEN%,							&	  PIP.IS.RUNNING%  = FALSE%					&	\ PIP.PROMPT$ = "PIP>"						&	\ PIP.ERROR$ = "PIP -- "					&	!								&	!	Set up the proper dialogue processing.			&	!	Preset a number of control variables.			&	!	Set the expected prompt text string from PIP.		&	!	Set the prefix text string for PIP error messages.	&1040	\ PROC.MODEL% = 7%						&	\ GO SUB 10800	IF MISSING.RETRIEVAL% = TRUE%			&	\ GO TO 3000	IF INDIRECTED% = TRUE%				&	\ REWIND.AND.DISMOUNT.TAPE% =       TRUE%				&	!								&	!	Force to 11/7x model always, for now.			&	!	Initialize missing items processing if necessary.	&	!	Skip dialogue if running as Spawned Task.		&	!	Set up to rewind, dismount and deallocate tape when done&1900	!$**************************************************************&	!								&	!								&	!	A S K    I F    A N Y    C O M P O N E N T S    T O	&	!								&	!			  S K I P				&	!								&1910	\ ON FN.ASK%(1050%,		! Query text		!	&		     "NO",		! Default to NO		!	&		     "Y",		! YES/N      O response	!	&		     FALSE%,		! No range checking	!	&		     1%		       )! Level = 1		!	&	  GO TO								&		 1900,			! ESC response		!	&		32500,			! CTRL/Z response	!	&		 1920,			! YES response		!	&		 1930			! NO response		!	&	!								&	!	Ask about components to be skipped on ANY tape.		&1920	\ COMPONENTS.TO.BE.SKIPPED% = TRUE%				&	\ GO TO 2000							&	!								&	!	Set flag to ask question on each tape process.		&1930	\ COMPONENTS.TO.BE.SKIPPED% = FALSE%				&	!								&	!	Show that all components are to be       accepted.		&2000	!$**************************************************************&	!								&	!								&	!	G E T    T A P E    N U M B E R				&	!								&	!								&	\ NO.ASK.SELECT% = TRUE%					!1.1A02&	\ ON FN.ASK%(1056%,			! Query #	!	!1.1A02&		     "",			! No default	!	!1.1A02&		     FN.TEXT.LINE$(1057%),	! Valid list	!	!1.1A02&		     TRUE%,			! Range checking!	!1.1A02&		     1%		       )	! Level = 1	!	!1.1A02&	  GO TO								&		 2000,			! ESC response		!	&		32500,			! CTRL/Z response	!	&		 2010			! Va      lid response	!	&	!								&	!	Get the tape number.					&2010	\ TAPE.NUMBER% = VAL( ASK.CVT$ )				!1.1A02&	!								&	!	Save number for later use.				&2100	!$**************************************************************&	!								&	!								&	!	G E T    C P U    T Y P E				&	!								&	!								&	\ SUBSTITUTE.TEXT$(1%) = "sysgen"				&	\ ON FN.ASK%(1096%,		! Query index text	!	&		     "70",		! Default to 11-70	!	&		     "/34/60/70",	! Selection list	!	&		     FALSE%,		! No checking		!	&		     1%		       )! L      evel = 1		!	&	  GO TO								&		 2000,			! ESC			!	&		32500,			! CTRL/Z		!	&		 2110,			! 34			!	&		 2110,			! 60			!	&		 2110			! 70			!	&	!								&	!	Ask for CPU type.					&2110	\ CPU.TYPE$ = ASK.CVT$						&	!								&	!	Save for later selection checking.			&3000	!$**************************************************************&	!								&	!								&	!	D R I V E    T H E    C O P Y    R O U T I N E		&	!								&	!								&	\ GO TO 32000							&		IF  MISSING.RETRIEVAL% = TRUE%				&		AND (   (NUM.OF.MISSING.      ITEMS% = 0%)			&		     OR (NUM.MISSING.FROM.TAPE%(TAPE.NUMBER%) = 0%))	&	\ BREED.DEBUG%,							&	     VT.DEBUG% = DEBUG.FLAG%					&	\ GO SUB 12000			! Copy in the tape	!	&	\ GO TO 32000							&	!								&	!	Process the tape.					&10800	!$**************************************************************&	!								&	!								&	!	S E T    U P    M I S S I N G    I T E M S		&	!								&	!		   A R R A Y S					&	!								&	!								&	!	This routine opens up the cover file for the missing	&	!	items array and counts.        The appropriate information	&	!	is transfer to the proper in memory variables for	&	!	speed considerations.					&	!								&	!								&	!***************************************************************&	!								&	\ OPEN "MISSING.VIR" FOR INPUT AS FILE 10%			&		,ORGANIZATION	VIRTUAL					&	\ NUM.OF.MISSING.ITEMS% = MISSING.COUNTS%(0%)			&	\ NUM.MISSING.FROM.TAPE%(T1080%) =				&		MISSING.COUNTS%(T1080%)					&			FOR T1080% = 1% TO 19%				&	\ RETURN							&	!								&	!	Open the cover array file.				&	!	Transfe      r the total missing items count.			&	!	Transfer the associated tape missing items counts.	&10810	\ NUM.OF.MISSING.ITEMS% = 0%					&	\ RETURN							&	!								&	!	For a missing cover file, there are no missing items.	&12000	!$**************************************************************&	!								&	!								&	!	G E N E R A L    T A P E    P R O C E S S I N G		&	!								&	!								&	!	INPUT:	TAPE.NUMBER%	- holds kit number of tape	&	!				  to be processed.		&	!								&	!	RETURN:			- SUBSTITUTE.TEXT$() modi      fied.	&	!				- BREED.xxxxx modified.		&	!				- Tape will have been processed &	!				  and dismounted.		&	!								&	!	LOCAL:	T1200%		- working variable		&	!								&	!								&	!	Subroutine performs the complete COPYFILES operation on	&	!	a single tape (or tapeset) from the Release Kit.	&	!								&	!	The target disk is required to be the user's SY:.	&	!								&	!	The following ranges in the SGNDLGHLP.VIR file contain	&	!	information indexed by the TAPE.NUMBER%:		&	!								&	!	Query #:	Used for:				 1.1A0      2&	!	--------	---------------------------------------- 1.1A02&	!	1021		Mount command template			 1.1A02&	!	1022		Tape names in English			 1.1A02&	!	1023		Undefined tape name			 1.1A02&	!								 1.1A02&	!	1041		Unit name/number prompt			 1.1A02&	!	1042		Unique text for each tape for 1041	 1.1A02&	!	1043		Default unique text for 1041		 1.1A02&	!								 1.1A02&	!	1093		Tape volume labels (machine readable	 1.1A02&	!			  tape names)				 1.1A02&	!	1094		Volume label query (used for tape not	 1.1A02&	!			  defi      ned in 1093)			 1.1A02&	!								&	!***************************************************************&12100	!$**************************************************************&	!								&	!								&	!	E S T A B L I S H    T A P E    D R I V E ( S )		&	!								&	!								&12105	\ ASK.CVT$ = UNIT.ID$						&	\ GO TO 12130	IF UNIT.PRESENT% = TRUE%			&	!								&	!	Transfer unit name.					&12110	\ SUBSTITUTE.TEXT$( 51% ) = NUM1$( TAPE.NUMBER% )		!1.1A02&	\ SUBSTITUTE.TEXT$( 50% ) =					!1.1A02&		FN.SUB.TEXT$( FN.TEX      T.LINE$( 1023% ) )			!1.1A02&	\ SUBSTITUTE.TEXT$( 50% ) = ASK.RESP$				!1.1A02&		IF FN.TEXT.LIST%( 1022%, TAPE.NUMBER% )			!1.1A02&	\ TE% = FN.PRINT.BLOCK%( 0%, 1021% )				!1.1A02&	!								 1.1A02&	!	Put the tape number where it is expected.		 1.1A02&	!	Set up the default for tapes which are out of the de-	 1.1A02&	!	  fined range.						 1.1A02&	!	Get the real text for tapes which are in the defined	 1.1A02&	!	  range.						 1.1A02&	!	Print out the text requesting the user to mount the tape.1.1A02&12120	\       SUBSTITUTE.TEXT$( 52% ) =					!1.1A02&		FN.SUB.TEXT$( FN.TEXT.LINE$( 1043% ) )			!1.1A02&	\ SUBSTITUTE.TEXT$( 52% ) = ASK.RESP$				!1.1A02&		IF FN.TEXT.LIST%( 1042%, TAPE.NUMBER% )			!1.1A02&	!								 1.1A02&	!	Get the default for the special text.			 1.1A02&	!	If the special text is defined for the tape, get it.	 1.1A02&	!								 1.1A02&	\ ASK.RANGE(0%) = 4						&	\ ON FN.ASK%(	1041%,			! Query index number !	!1.1A02&&			"",			! No default	     !  !1.1A02&			"",			! Any response	     !	!1.1A02&			TRUE%,	      		! Up to 4 characters !	!1.1A02&			1%	)		! Level = 1	     !	!1.1A02&	  GO TO								&		12110,				! ESC response	     !  &		32500,				! CTRL/Z response    !	&		12130				! Valid response     !  &	!								&	!	Ask for the unit(s) where the tape(s) will be mounted.	&12130	\ UNIT.ID$ = ASK.CVT$						&	\ VOLUME.LABEL$ = "NOTAPE"					!1.1A02&	\ VOLUME.LABEL$ = ASK.RESP$					!1.1A02&		IF FN.TEXT.LIST%( 1093%, TAPE.NUMBER% )			!1.1A02&	\ GO TO 12200	IF VOLUME.LABEL$ <> "NOTAPE"			!1.1A02&	!								 1.1A02&	!	Save t      he unit ID that was supplied.			 1.1A02&	!	Set the volume label default.				 1.1A02&	!	Get the real volume name if the tape is in our defined	 1.1A02&	!	  tape list.						 1.1A02&	!	If the tape label was defined, continue.		 1.1A02&	!								 1.1A02&	\ ASK.RANGE(0%) = 6						!1.1A02&	\ ON FN.ASK%(	1094%,		! Query number		!	!1.1A02&			"",		! No default		!	!1.1A02&			"",		! Accept any response	!	!1.1A02&			TRUE%,		! Enable range checking	!	!1.1A02&			2%	)	! Prompt at level 2	!	!1.1A02&		GO TO							!1.1A02&		      	12120,		! ESCape processing	!	!1.1A02&			32500,		! Control Z		!	!1.1A02&			12200		! Valid label info.	!	!1.1A02&	!								 1.1A02&	!	Ask the user for the label of the undefined tape.	 1.1A02&12200	!$**************************************************************&	!								&	!								&	!	A L L O C A T E   A N D    M O U N T    T H E		&	!								&	!			  T A P E ( S )				&	!								&	!								&	\ GO SUB 10000			! Allocate	!		&	\ GO TO 32510	IF  ALLOCATE.OK% = FALSE%			&			AND UNIT.PRESENT%				&	\ GO TO 12100	I      F ALLOCATE.OK% = FALSE%			&	\ GO SUB 10200			! Mount		!		&	\ GO TO 32520	IF  MOUNT.OK% = FALSE%				&			AND UNIT.PRESENT% = TRUE%			&	\ GO TO 12100	IF MOUNT.OK% = FALSE%				&	!								&	!	ALLOCATE the tape drive(s).				&	!	If an error, go back to original query.			&	!	MOUNT the tape(s).					&	!	If an error, go back to original query.			&12300	!$**************************************************************&	!								&	!								&	!	S E E   I F    A N Y    C O M P O N E N T S    T O	&	!								&	!			 S K I P		      		&	!								&	!								&	\ NUM.TO.SKIP% = 0%						&	\ GO TO 12500	IF COMPONENTS.TO.BE.SKIPPED% = FALSE%		&	\ ON FN.ASK%(1051%,		! Query index number	!	&		     "NO",		! NO is the default	!	&		     "Y",		! YES/NO response	!	&		     FALSE%,		! No range checking	!	&		     2%		       )! Level = 2		!	&	  GO TO								&		12300,			! ESC response		!	&		32500,			! CTRL/Z response	!	&		12400,			! YES response		!	&		12500			! NO response		!	&	!								&	!	Set list count to no entries.				&	!	Skip if global query respo      nse was NO.			&	!	Otherwise, ask if any components are to be skipped for	&	!	  this tape.						&12400	!$**************************************************************&	!								&	!								&	!	G E T    K E Y S    O F    C O M P O N E N T S    T O	&	!								&	!		   B E      S K I P P E D			&	!								&	!								&12410	\ ASK.RANGE(0%) = 20						&	\ ON FN.ASK%(1052%,		! Query index number	!	&		     "DONE",		! Default is DONE	!	&		     "",		! Any text response	!	&		     TRUE%,		! Up to 20 characters	!	&		     3      %		       )! Level = 3		!	&	  GO TO								&		12300,			! ESC response		!	&		32500,			! CTRL/Z response	!	&		12420			! Valid response	!	&	!								&	!	Set limit on allowed response length.			&	!	Query for sequence key value.				&12420	\ ASK.CVT$ = EDIT$(ASK.CVT$,32%)				&	\ GO TO 12500	IF ASK.CVT$ = "DONE"				&	\ GO TO 12430	IF FN.SEQUENCE.KEY.VALID%(ASK.CVT$) = FALSE%	&	\ SEQ.KEYS$(NUM.TO.SKIP%) = ASK.CVT$				&	\ NUM.TO.SKIP% = NUM.TO.SKIP% + 1%				&	\ GO TO 12400							&	!								&	!	Convert to UPPPER CASE       response.			&	!	Exit loop if DONE					&	!	Skip out if invalid entry.				&	!	Otherwise, store key in list.				&	!	Count in list.						&	!	Go back for more.					&12430	\ PRINT "% Invalid entry"					&	\ GO TO 12400							&	!								&	!	Print error message for invalid entry.			&	!	Go back for another try.				&12500	!$**************************************************************&	!								&	!								&	!	S E T U P    A N D    C O N T R O L    C O P Y		&	!								&	!			 L O O P				&	!								&	!								&12510	\       PRINT TIME$(0%);						&		"  BEGIN Tape Copy Operation"				&	\ GO SUB 10400							&	\ GO SUB 13000							&	\ STATUS% = FN.EXEC.BLOCK%("MCR...",				&				   1008%,				&				   FALSE%	)			&	!								&	!	Signal starting time.					&	!	Set up the holding UFD.					&	!	Check the options.					&	!	Read in the COPYCNTRL File.				&12515	\ OPEN FN.SUB.TEXT$("\\03COPYCNTRL.FIL") FOR INPUT AS FILE 2%	&		,ORGANIZATION	SEQUENTIAL				&				FIXED					&		,ACCESS		READ					&		,ALLOW		READ					&		,MAP		CPYCTL					&	!								&	!	Ope      n the COPYCNTRL File.				&12520		\ GET #2%						&		\ GO TO 12600						&			IF NUM.MISSING.FROM.TAPE%(TAPE.NUMBER%) = 0%	&			IF MISSING.RETRIEVAL% = TRUE%			&		\ GO TO 12520	IF MISSING.RETRIEVAL% = TRUE%		&				IF FN.NOT.MISSING% = TRUE%		&		\ GO TO 12520						&			IF OPTIONS.PRESENT%(VAL(CPYCTL.TAPE.NUM$)) =	&				FALSE%					&			IF TAPE.NUMBER% = 4%				&		\ GO TO 12520	IF CPYCTL.SEQUENCE.KEY$ = SEQ.KEYS$(T%) &			FOR T% = 0% TO (NUM.TO.SKIP%-1%)		&		!							&		!	Next section makes check to see if this		&		!	  co      mponent belongs to the selected CPU.	&		!							&		\ T1250$ = MID(CPYCTL.SEQUENCE.KEY$,13%,2%)		&		\ GO TO 12520	UNLESS T1250$ = "**"			&				    OR T1250$ = CPU.TYPE$		&		!							&		!	First, locate the CPU type key.			&		!	Then, reject record if not ANY, or if CPU type	&		!	  does not match selected CPU type.		&		!							&12530		\ SUBSTITUTE.TEXT$(5%) = EDIT$(CPYCTL.TARGET.UFD$,2%)	&		\ SUBSTITUTE.TEXT$(6%) = TRM$(CPYCTL.COMPONENT.NAME$)	&		!							&		!	Set the target UFD value.			&		!	Set the current compo      nent name.			&		!							&		\ IF  CPYCTL.FIRST.IN.UFD$ = "Y"			&		  AND SUBSTITUTE.TEXT$(5%) <> "[1,1]"			&		  THEN							&			  TE% = FN.EXEC.BLOCK%("MCR...",		!1.1A00&					       999%,			&					       FALSE%	)		&		!							&		!	Get the next entry from the file.		&		!	Skip out if in SKIPPED COMPONENTS list.		&		!	Otherwise, set up new UFD if needed.		&12540		\ T1200% = 1010%					&		!							&		!	Set COPY type query number.			&12550	\ STATUS% = FN.EXEC.BLOCK%("MCR...",				&				   T1200%,				&				   FALSE%	)			&	      !								&	!	Execute the copy command.				&12560	\ GO TO 12520	IF STATUS% = 1%					&	!								&	!	Go back if no error occurred.				&	!								&	\ PRINT "% Copy error while processing: ";			&		TRM$(CPYCTL.COMPONENT.NAME$)				&	!								&	!	Print error message signalling failure.			&	!	Count number of occurred errors.			&12567	\ GO SUB 10300							&	\ GO SUB 10100							&	\ GO TO 32500							&	!								&	!	Rewind and dismount the tape.				&	!	Go to the CTRL/Z EXIT WITH STATUS point.		&12600	!$****************      **********************************************&	!								&	!								&	!	D I S M O U N T    T A P E ( S )    A N D		&	!								&	!	D E A L L O C A T E     D R I V E ( S )			&	!								&	!								&	\ CLOSE 2%							&	\ TE% = FN.EXEC.BLOCK%("MCR...",				!1.1A00&			       45%,					&			       FALSE%	) UNLESS TAPE.NUMBER%=4%	&	\ TE% = FN.EXEC.BLOCK%("MCR...",				!1.1A00&			       1005%,					&			       FALSE%	)				&	\ SYSCHANGE.PROC.TYPE$=CPU.TYPE$				&	\ SUBSTITUTE.TEXT$(1%)=SYSCHANGE.COMMAND$			&	\ TE%=FN.EXEC.B      LOCK%("MCR...",1125%,TRUE%) IF TAPE.NUMBER%=4%	&	!								&	!	Fire off SYSCHANGE if this is the change tape.		&	!								&	\ PRINT TIME$(0%);						&		"  END   Tape Copy Operation"				&	\ RETURN	IF REWIND.AND.DISMOUNT.TAPE% = FALSE%		&			AND ERROR.COUNT% = 0%				&	\ GO SUB 10300			! Dismount		!	&	\ GO SUB 10100			! Deallocate		!	&	!								&	!	Close the COPYCNTRL File.				&	!	Exit now if not to rewind or dismount tape.		&	!	Delete it from the holding UFD.				&	!	Delete the TEMP.TMP file also.				&	!	Signal t      he time of completion.				&	!	Then, dismount the tape(s).				&	!	Then, deallocate the drive(s).				&	!	Abort if errors occurred.				&12999	\ RETURN							&14700	!$**************************************************************&	!								&	!								&	!	G E T    P O S S I B L E    M C R    C O M M A N D	&	!								&	!								&	!	RETURNS:	For a single program, PROG.NAME$ 	&	!			  contains the file name.  		&	!			  ONLY.ONE.PROGRAM% is then set TRUE.	&	!			If @ appears, USE.INDIRECT% is set TRUE	&	!			  and the       indirect input command file	&	!			  name is placed in CMD.FILE$.		&	!								&	!								&	!***************************************************************&14710	\ COMMAND.BUFR$ = SPACE$(80%)					&	\ INDIRECTED% = FALSE%						&	!								&	!	Reserve space for up to 80 characters.			&14720	\ CALL GETMCR BY REF (COMMAND.BUFR$, RETURN.RESULT%)		&	\ RETURN	IF RETURN.RESULT% < 1%				&	\ INDIRECTED% = TRUE%						&	!								&	!	Set if command line is there.				&	!	If not, skip out of processing.				&14730	\ COMMAND.      LINE$ =						&		EDIT$(MID(COMMAND.BUFR$,5%,(RETURN.RESULT%-4%)),-1%)	&	!								&	!	Reduce input text to manageable form.			&	!								&	\ T1470% = INSTR(1%,COMMAND.LINE$,"/")				&	\ T1470% = LEN(COMMAND.LINE$)+1%	UNLESS T1470% <> 0%	&	\ TAPE.NUMBER% = VAL(LEFT(COMMAND.LINE$,(T1470%-1%)))		&	\ COMPONENTS.TO.BE.SKIPPED% = FALSE%				&	\ COMPONENTS.TO.BE.SKIPPED% = TRUE%				&		IF INSTR(T1470%,COMMAND.LINE$,"/SKIP") <> 0%		&	\ DEBUG.FLAG% = TRUE%						&		IF INSTR(T1470%,COMMAND.LINE$,"/DEBUG") <> 0%		&	\ REWIND      .AND.DISMOUNT.TAPE% = TRUE%				&	\ REWIND.AND.DISMOUNT.TAPE% = FALSE%				&		IF INSTR(T1470%,COMMAND.LINE$,"/NORW") <> 0%		&	\ MISSING.RETRIEVAL% = FALSE%					&	\ MISSING.RETRIEVAL% = TRUE%					&		IF INSTR(T1470%,COMMAND.LINE$,"/MISSING") <> 0%		&	\ UNIT.PRESENT% = FALSE%					&	\ T1471% = INSTR(T1470%,COMMAND.LINE$,"/UNIT:")			&	\ IF T1471% <> 0%						&	  THEN								&		  UNIT.PRESENT% = TRUE%					&		\ T1472% = INSTR((T1471%+6%),COMMAND.LINE$,":")		&		\ UNIT.ID$ = MID(COMMAND.LINE$,(T1471%+6%),		&					             (T1472%-T1471%-5%)  )	&	!								&	!	Find "/" if one is there.				&	!	Otherwise, default to end of string.			&	!	Convert tape number.					&	!	Reset skip flag.					&	!	Set the flag if /SKIP was appended to tape number.	&	!	Set the debug flag if required.				&	!	Set to rewind and dismount tape when done.		&	!	Reset rewind and dismount if no rewind requested.	&	!	Reset flag for missing item retrieval mode.		&	!	Set flag for missing item retrieval mode if required.	&	!	Reset UNIT present flag.				&	!	Find out       if switch present for unit number.		&	!	If so, set unit present flag.				&	!		Find end of drive name and unit number.		&	!		Copy out unit name and number.			&14740	\ T1471% = INSTR(1%,COMMAND.LINE$,"/CPU:")			&	\ IF T1471% = 0%						&	  THEN								&		  PRINT "% Missing CPU type switch"			&		\ GO TO 32500						&	  ELSE								&		  CPU.TYPE$ = MID(COMMAND.LINE$,(T1470%+5%),2%)		&	!								&	!	Find the /CPU switch.					&	!	In none there, declare an error.			&	!	Otherwise, pull off the CPU type value.			&14799      	\ RETURN							&15900	!$**************************************************************&	!								&	!								&	!	C H E C K    T O    S E E    I F    C U R R E N T	&	!								&	!		C O M P O N E N T    I S    T O			&	!								&	!		    B E     R E T R I E V E D			&	!								&	!								&	!	USAGE FORMAT:	FN.NOT.MISSING%				&	!								&	!	RETURN:		- TRUE% if current component is not	&	!			  present in the missing items list.	&	!			- FALSE% if current component is	&	!			  present on missing items list.	&	!			- T15      90% will be pointing to entry in	&	!			  missing items list if match occurs.	&	!								&	!	LOCAL:	T1590%	- search loop variable			&	!								&	!								&	!	If the current component is found in the missing items	&	!	list, then the associated NUM.MISSING.FROM.TAPE%() entry&	!	will also be decremented.				&	!								&	!								&	!***************************************************************&15901	DEF FN.NOT.MISSING%						&15910		\ FN.NOT.MISSING% = FALSE%				&		\ T1590% = 0%						&		!							&		!	Preset retu      rn result to not missing.		&		!	Initialize search loop counter.			&15920		\ WHILE T1590% < NUM.OF.MISSING.ITEMS%			&			\ GO TO 15930					&				IF VAL(LEFT(MISSING.ITEMS$(T1590%),2%))	&						<> TAPE.NUMBER%		&			\ GO TO 15940					&				IF (CPYCTL.TARGET.UFD$			&				   +CPYCTL.COMPONENT.NAME$)		&				   = RIGHT(MISSING.ITEMS$(T1590%),3%)	&		!							&		!	Loop until all entries in the missing items list&		!	  have been checked.				&		!		Skip if list entry not associated with	&		!		  currnet Release Kit tape.		&		!      		Skip out if a match is found.		&15930			\ T1590% = T1590% + 1%				&		\ NEXT							&		\ FN.NOT.MISSING% = TRUE%				&		\ GO TO 15949						&		!							&		!		Advance pointer to next entry in list.	&		!	End of list search loop.			&		!	Set TRUE return result.				&		!	Go to exit point.				&15940		\ NUM.MISSING.FROM.TAPE%(TAPE.NUMBER%) =		&			NUM.MISSING.FROM.TAPE%(TAPE.NUMBER%) - 1%	&		!							&		!	Count down on number still missing from this	&		!	  tape.						&15949	\ FNEND								&19000	!$**********************      ****************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ RESUME 12600							&		IF  ERR = 11%						&		AND ERL = 12520%					&	!								&	!	Catch end of COPYCNTRL File list.			&19100	\ RESUME 10810	IF ERL = 10800%					&	!								&	!	Catch missing cover file for missing items list.	&19900	\ GOSUB 10300							&	\ GOSUB 10100							&	\ PRINT								&	\ CLOSE T%       FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25015	!***************************************************************&	!								&	!								&	!	D E B U G    D E B U G    D       E B U G    D E B U G	&	!								&	!								&	!	Special /DEBUG switch on dialog function.  Special	&	!	only to the compiler because they wouldn't put it	&	!	in the general dialogue function.			&	!								&	!	The switch is "hidden" from the user by not appearing	&	!	in the spec for the dialogue function or any document	&	!	pertaining to FMTGEN.					&	!								&	!	This code checks for, and removes the string:		&	!								&	!	/DEBUG							&	!								&	!	from the input text string to the dialogue function.	&	!	      The entire keyword must appear after the slash.		&	!								&	!								&	\ ASK.T3% = INSTR(1%,EDIT$(ASK.RESP$,32%),"/DEBUG")		&	\ GO TO 25020	IF ASK.T3% = 0%					&	\ ASK.RESP$ =  LEFT(ASK.RESP$,(ASK.T3%-1%))			&		    + RIGHT(ASK.RESP$,(ASK.T3%+6%))			&	\ DEBUG.FLAG% = TRUE%						&	!								&	!	Search for the debug switch.				&	!	Skip out if not there.					&	!	Otherwise, remove from the string.			&	!	Set the DEBUG switch.					&32000	!$**************************************************************&	!								&      	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ IF  MISSING.RETRIEVAL% = TRUE%				&	  AND NUM.MISSING.FROM.TAPE%(TAPE.NUMBER%) <> 0%		&	  THEN								&		  PRINT "? Some missing component(s) was(were) NOT";	&			" retrieved from tape."				&		\ T% = 0%						&		\ WHILE T% < NUM.OF.MISSING.ITEMS%			&			\ WHILE TAPE.NUMBER% =				&				VAL(LEFT(MISSING.ITEMS$(T%),2%))	&				\ SUBSTITUTE.TEXT$(1%) =		&					 LEFT(MISSI      NG.ITEMS$(T%),2%   ) &				\ SUBSTITUTE.TEXT$(2%) =		&					  MID(MISSING.ITEMS$(T%),3%,9%) &				\ SUBSTITUTE.TEXT$(3%) =		&					RIGHT(MISSING.ITEMS$(T%),  12%) &				\ TE% = FN.PRINT.BLOCK%(0%,1122%)	&			\ NEXT						&		\ NEXT							&		\ GO TO 32500						&	  ELSE								&		  CLOSE 10%, 11%, 12%					&		\ GO TO 32767						&	!								&	!	Check to see if we were retrieving missing items and	&	!	  whether one or more items were not found.		&	!	If so, go through the missing items list and printout	&	!	  all items no      t found on this tape.			&	!	Exit with a return status of CTRL/Z.			&32500	\ CLOSE 10%, 11%, 12%						&	\ CALL EXITS2(2%,26%)						&	!								&	!	Close the files before exiting.				&	!	Special exit when CTRL/Z is typed to a query.		&32510	\ CLOSE 10%, 11%, 12%						&	\ CALL EXITS2(2%,99%)						&	!								&	!	Signal failure to process UNIT number in allocation.	&32520	\ GO SUB 10100							&	\ CLOSE 10%, 11%, 12%						&	\ CALL EXITS2(2%,99%)						&	!								&	!	Deallocate drive.					&	!	Signal failure to mount   ü    tape.				&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END ü          %–,“Á› 8$        1	!***************************************************************&	!								&	!								&	!	C O M M U N I C A T I O N S    S U P P O R T		&	!								&	!	G E N E R A T I O N    M O D U L E			&	!								&	!								&	!								&	SUB	COMGEN	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	16-May-79				 1.1A00&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!**      *************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1979 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!*****      **********************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL COMGEN(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**********      ****************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	16-May-79 KMR	Eliminated duplicate building	 1.1A00&	!				  of LIMTSK and XKLDR.		 1.1A00&	!				Put building of LIMTSK onto a	 1.1A00&	!				  virtual terminal.		 1.1A00&	!								&	!***************************************************************&1      00	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This sub-program generates the Communications support.	&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	------------      --------------------------  &	!	    1		Command terminal input/output		&	!	    3		Primary data file output		&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************      ************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	      !	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N           D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!*****      **********************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ CALL RET							&	!								&	!	Set up standard default error trap			&1005	\ GOTO 5000 IF COM.SUPPORT%=0%					&1010	\ T%=FN.EXEC.BLOCK%("MCR...",768%,FALSE%)			&	\ GOTO 1025 IF SKIP.ASSEMBLIES%<>0%				&	\ OPEN "NODLNK.MAC" FOR OUTPUT AS FILE 3%			&	\ SUBSTITUTE.TEXT$(1%)=TRM$(HERALD.TEXT$)			&	\ SUBSTITUTE.TEXT$(2%)=TRM$(RIGHT(VER.EDIT.NUM$,		&				INSTR(1%,VER.EDIT.NUM$,"V")))		&	\ T%=FN.PRINT.BLOCK%(3%,760%      )					&	\ T%=FN.PRINT.BLOCK%(3%,1%)					&	\ SUBSTITUTE.TEXT$(9%)=FN.INT.TO.OCT$(NUM.OF.NODES%)		&	\ SUBSTITUTE.TEXT$(15%)=FN.INT.TO.OCT$(NUM.OF.DMCS%)		&	\ T%=FN.PRINT.BLOCK%(3%,761%)					&	\ FOR NODE.NUM%=0% TO NUM.OF.DMCS%-1%				&		\ SUBSTITUTE.TEXT$(6%)=FN.INT.TO.OCT$(NODE.NUM%)	&		\ SUBSTITUTE.TEXT$(7%)=TRM$(DMC.DUPLEX$(NODE.NUM%))	&		\ SUBSTITUTE.TEXT$(8%)=TRM$(LINK.NODE$(NODE.NUM%))	&		\ T%=FN.PRINT.BLOCK%(3%,762%) UNLESS			&			DMC.USED%(NODE.NUM%)=0%				&	\ NEXT NODE.NUM%						&	\ FOR NODE.NUM%=0% TO       NUM.OF.NODES%-1%				&		\ SUBSTITUTE.TEXT$(3%)=TRM$(NODE.NAME$(NODE.NUM%))	&		\ SUBSTITUTE.TEXT$(10%)=FN.INT.TO.OCT$(NODE.NUM%+3%)	&		\ SUBSTITUTE.TEXT$(4%)="XM"+TRM$(PRI.LINK$(NODE.NUM%))	&		\ SUBSTITUTE.TEXT$(5%)=""				&		\ SUBSTITUTE.TEXT$(5%)=",XM"+TRM$(SEC.LINK$(NODE.NUM%))	&				UNLESS TRM$(SEC.LINK$(NODE.NUM%))=""	&		\ T%=FN.PRINT.BLOCK%(3%,764%)				&	\ NEXT NODE.NUM%						&	\ T%=FN.PRINT.BLOCK%(3%,766%)					&	\ CLOSE 3%							&	!								&	!	Set up the NODLNK.MAC file.				&1020	\ SPAWN.STATUS%=FN.EXEC      .BLOCK%("MCR...",770%,FALSE%)		&	\ GOTO 5000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",778%,FALSE%)		&	\ GOTO 5000 IF (SPAWN.STATUS% AND 7%)<>1%			&1025	!								 1.1A00&!	\ BLOCK%=774%							 1.1A00&!	\ MODULE.INDX%=BLOCK%*2%					 1.1A00&!	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%)+SKIP.ASSEMBLIES% TO	 1.1A00&!			(HELP.INDEX%(MODULE.INDX%)+			 1.1A00&!				HELP.INDEX%(MODULE.INDX%+1%)-1%)	 1.1A00&!		\ SUBSTITUTE.TEXT$(1%)=ASK.HELP$(MODULE%)		 1.1A00&!		\ SPAWN.STATUS%=FN.EXEC.BL      OCK%("MCR...",776%,FALSE%)	&!		\ GOTO 5000 IF (SPAWN.STATUS% AND 7%)<>1%		&!	\ NEXT MODULE%							 1.1A00&	!								&	!	Set up for the Communications assemblies.		&	!		DO THE ASSEMBLIES				&1030	\ SUBSTITUTE.TEXT$(51%)=NUM1$(PROCESSOR.TYPE%)			&	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",772%,FALSE%)		&!	\ GOTO 5000 IF (SPAWN.STATUS% AND 7%)<>1%			 1.1A00&!	\ DO.SETUP%=DO.SETUP% OR 16%					 1.1A00&	!								&	!	Link the Communications ACP				&5000	\ XKLDR.STATUS% = 0%						!1.1A00&	\ XKLDR.STATUS% = FN.EXEC.BL      OCK%(	"MCR...",		!1.1A00&						1315%,			!1.1A00&						FALSE%	)		!1.1A00&		IF	(IBM.SUPPORT% <> 0%)				!1.1A00&		OR	(T2780.SUPPORT% <> 0%)				!1.1A00&	!								 1.1A00&	!	Preset the XKLDR status.				 1.1A00&	!	Build the XKLDR if we have either 3271 support or 2780	 1.1A00&	!	  support.						 1.1A00&	!								 1.1A00&6000	\ SPAWN.STATUS% = FN.EXEC.BLOCK%(	"MCR...",		!1.1A00&						1316%,			!1.1A00&						FALSE%	)		!1.1A00&		IF	T2780.SUPPORT% <> 0%				!1.1A00&	!								 1.1A00&	!	Do the builds which are unique to       2780.			 1.1A00&	!								 1.1A00&	\ DO.SETUP% = DO.SETUP% OR 128%					!1.1A00&		IF	(SPAWN.STATUS% = 1%)				!1.1A00&		AND	(XKLDR.STATUS% = 1%)				!1.1A00&	!								 1.1A00&	!	We only concider the 2780 build done if we were		 1.1A00&	!	  successfull with building the XKLDR and teh 2780	 1.1A00&	!	  stuff.						 1.1A00&7000	\ GO TO 8000	IF  (COM.SUPPORT% = 0%)				!1.1A00&			AND (IBM.SUPPORT% = 0%)				!1.1A00&	!								 1.1A00&	!	Skip the building of the LIMTSK if we are not doing	 1.1A00&	!	  TRAX/TL or 3271      .					 1.1A00&&	!								 1.1A00&	\ BLOCK% = 1314%						!1.1A00&	\ MODULE.INDX% = BLOCK% * 2%					!1.1A00&	\ FIRST.LINE% = HELP.INDEX%( MODULE.INDX% )			!1.1A00&	\ LAST.LINE%	= HELP.INDEX%( MODULE.INDX% )			!1.1A00&			+ HELP.INDEX%( MODULE.INDX% + 1%)		!1.1A00&			- 1%						!1.1A00&	!								 1.1A00&	!	Set up to execute the block which builds LIMTSK.	 1.1A00&	!								 1.1A00&	\ SUBSTITUTE.TEXT$( 1% ) = FN.INT.TO.OCT$( FN.VT.CREATE% )	!1.1A00&	\ T% = FN.EXEC.BLOCK%(	"MCR...",				!1.1A00&				913%,					!1.1A00      &				FALSE%	)				!1.1A00&	!								 1.1A00&	!	Create a virtual terminal and store its octal value in	 1.1A00&	!	  sub text.						 1.1A00&	!	Make necessary assignments for the virtual terminal.	 1.1A00&	!								 1.1A00&	\ FOR LINE% = FIRST.LINE% TO LAST.LINE%				!1.1A00&	!								 1.1A00&	!	Loop through each line in the block			 1.1A00&	!								 1.1A00&		\ VT.CMD$ = ASK.HELP$( LINE% )				!1.1A00&		\ T% = FN.TASK.INIT%( "MCR..." )			!1.1A00&		\ PRINT "Spawning: MCR... (on VT) with: "; VT.CMD$	!1.1A00&			IF       BREED.DEBUG% <> 0%				!1.1A00&	!								 1.1A00&	!		Set the command as the next line in the block.	 1.1A00&	!		Feed the line to MCR...				 1.1A00&7010		\ ON FN.VT.COMM%( "!@#$%^&*()_+", "*FATAL*" )		!1.1A00&			GO TO						!1.1A00&				7050,	! Task terminated	!	!1.1A00&				7010,	! Found first		!	!1.1A00&				7020,	! VT requested input	!	!1.1A00&				7030,	! Got normal output	!	!1.1A00&				7040	! Fatal error		!	!1.1A00&		!							 1.1A00&		!	Branch on information passed back from VT.	 1.1A00&7020		\ T% = FN.VT.EOF      %					!1.1A00&		\ GO TO 7010						!1.1A00&		!							 1.1A00&		!	Send an EOF if the task prompts.		 1.1A00&7030		\ ERR.LINE$ = VT.RESPONSE$				!1.1A00&		\ PRINT ERR.LINE$	IF BREED.DEBUG% <> 0%		!1.1A00&		\ GO TO 7010						!1.1A00&		!							 1.1A00&		!	If not in debug, just continue.			 1.1A00&7040		\ ERR.LINE$ = VT.RESPONSE$				!1.1A00&		\ T% = INSTR( 1%, ERR.LINE$, "*FATAL*" )		!1.1A00&		\ ERR.LINE$	= EDIT$( RIGHT( ERR.LINE$, T%), 132% )	!1.1A00&				+ " on command "			!1.1A00&				+ TRM$( VT.CMD$ )			!1.1A00      &		\ PRINT							!1.1A00&		\ PRINT ERR.LINE$					!1.1A00&		\ SPAWN.STATUS% = 2%					!1.1A00&		\ GO TO 7010						!1.1A00&7050		\ GO TO 32000	IF (SPAWN.STATUS% AND 7%) <> 1%		!1.1A00&		\ NEXT LINE%						!1.1A00&		!							 1.1A00&		!	Skip to the end if the last line caused an	 1.1A00&		!	  error.					 1.1A00&		!	Otherwise do the next line.			 1.1A00&7060	\ DO.SETUP% = DO.SETUP% OR 16%	IF COM.SUPPORT% <> 0%		!1.1A00&	\ DO.SETUP% = DO.SETUP% OR 64%	IF IBM.SUPPORT% <> 0%		!1.1A00&	!								 1.1A00&	!	Indicate tha      t TRAX/TL is done if we were to do it.	 1.1A00&	!	Indicate that 3271 is done, if we were to do it.	 1.1A00&8000	\ GO TO 32000							!1.1A00&	!								 1.1A00&	!	Provide a hook for future additions.			 1.1A00&10000	!$**************************************************************&	!								&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!      								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	      !								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!********      *******************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!						      		&	\ SUBEND            B M“Á› 8$        1	!***************************************************************&	!								&	!								&	!	C H A N G E    P R E P A R E    B A S E    L E V E L	&	!								&	!			P A S S    I I				&	!								&	!								&	!								&	!	Program:	CPBLP2					&	!	Version:	BL9					 BL9-00&	!	Edit level:	00					 BL9-00&	!	Edit date:	22-May-79				 BL9-00&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!      								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 TITL      E 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$***********      ***************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL01-00	31-Jul-78 KMR	Initial coding as seperate	&	!				  program.			 BL9-00&	!	BL9-00	30-Mar-79 KMR	Changed so CPYCTL tape number	 BL9-00&	!				  reflects usual tape number.	 BL9-00&	!				  program.			 BL9-00&	!		17-May-79 KMR	Removed incorrect IF DEBUG.F      LAG% BL9-00&	!		22-May-79 KMR	Corrected 30-Mar-79 change above,BL9-00&	!				  2 other instances existed	 BL9-00&	!				  which were missed.		 BL9-00&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$*********************************************************      *****&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A       B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME      /LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**      ************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines       950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIMENSION UFD.LIST$( 1% )					&	\ DIMENSION TE%( 1% )						&	!								&	!	Dimension the two lists we will use for collecting	&	!	  UFD's used.						&	!	Dimension the array we need to emit status.		&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!      								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$ = "BL1-00"					&	!								&	!	Assign the current version/edit level #			&1020	!\ PRINT							&	!\ PRINT "XXXXXX	"; VER.EDIT.NUM$; "   ";		&	!\ PRINT							&	!\ PRINT "YYYYYY"						&	!\ PRINT							&	!								&	!	Output program herald messages				&1030	\ TE% = FN.SETUP.DIALOGUE%					&	!								&	!	Set up the dialogue funct      ions.				&	!								&	\ FILE.NAME$( 1% )	= "CHGPREPBL.FIL"			&	\ FILE.NAME$( 2% )	= "COMPONENT.FIL"			&	\ FILE.NAME$( 3% )	= "REFERENCE.FIL"			&	\ FILE.NAME$( 4% )	= "CMDLINE.FIL"				&	\ FILE.NAME$( 5% )	= "BLDCNTR.FIL"				&	\ FILE.NAME$( 6% )	= "CMDENTRY.LST"			&	\ FILE.NAME$( 7% )	= "REBUILDEM.CMD"			&	\ FILE.NAME$( 8% )	= "COPYCNTRL.FIL"			&	\ FILE.NAME$( 9% )	= "CHNGCNTRL.FIL"			&	!								&	!	Set up the file names for locked file processing.	&	!								&	\ FIND.SEQUENTIAL% = 0%						&	\ FIND.KEY.EQ% =       1%						&	\ FIND.KEY.GT% = 2%						&	\ FIND.KEY.GE% = 3%						&	\ GET.SEQUENTIAL% = 4%						&	\ GET.KEY.EQ% = 5%						&	\ GET.KEY.GT% = 6%						&	\ GET.KEY.GE% = 7%						&	\ FIND.RELATIVE% = 8%						&	\ GET.RELATIVE% = 9%						&	!								&	!	Set up the command values for the record functions.	&	!								&	\ GOSUB 14000							&	!								&	!	Open up the necessary files.				&2000	!$**************************************************************&	!								&	!								&	!	S E T    U P    C O M M A N D    F I L E		      &	!								&	!								&	!***************************************************************&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 653% )				&	\ RESTORE #2%, KEY #0%						&	\ TE% = FN.PRINT.BLOCK%( 0%, 641% )	IF DEBUG.FLAG%		&	!								&	!	Restore the component file.				&2010	\ ON FN.GET.RECORD%( GET.SEQUENTIAL%, 2%, 0%, "" )		&		GO TO							&			2020,		! Got another one	!	&			3000,		! No more		!	&			3000		! No more		!	&	!								&	!	Get the next component.					&2020	\ GO TO 2010	IF CMPONT.WORK.FLAG$ = "N"			      &			OR CMPONT.BASE.FILE$ = "Y"			&	\ SUBSTITUTE.TEXT$( 1% ) = TRM$( CMPONT.COMPONENT.KEY$ )	&			IF DEBUG.FLAG%					&	\ TE% = FN.PRINT.BLOCK%( 0%, 650% )	IF DEBUG.FLAG%		&	!								&	!	Do not process this component if it has not changed or	&	!	  it is a base file.					&	!								&	\ CMPONT.WORK.FLAG$,						&	  BUILD.CODE$ = RIGHT( CMPONT.SHIPPING.CODE$, 3% )		&	\ CMPONT.WORK.FLAG$ = "L"	IF BUILD.CODE$ = "B"		&					OR BUILD.CODE$ = "C"		&	\ SUBSTITUTE.TEXT$( 2% ) = CMPONT.WORK.FLAG$	IF DEBUG.FLAG%	&	!								      &	!	Extract the build code and set the component code to	&	!	  it. (It will now be B, C, O or S).			&	!	Set the work flag to "L" if the code is one which	&	!	  indicates a local build (B or C).			&	!								&	\ T% = 614%							&	\ GO TO 2030	IF CMPONT.RE.BUILD.INST$ = ""			&	!								&	!	Set up error number for no re-build instructions.	&	!	Go show the error if necessary.				&	!								&	\ T% = 615%							&	\ ON FN.GET.RECORD%(	GET.KEY.EQ%,				&				4%, 0%,					&				CMPONT.RE.BUILD.INST$ )			&		GO TO							&      			2040,		! Found build inst.	!	&			2030,		! No inst.: Error	!	&			2030		! No inst.: Error	!	&	!								&	!	Set the error to indicate that there is not entry in	&	!	  the command line dictionary for this build.		&	!	Attempt to get the entry in the command line dictionary	&	!	  for this build.					&2030	\ TE% = FN.PRINT.BLOCK%( 0%, T% )				&	\ INCONSISTENT.INSTRUCTIONS% = TRUE%				&	\ GO TO 2010							&	!								&	!	Print the error.					&	!	Indicate that we had errors that will prevent us from	&	!	  continui      ng at the next phase.				&	!	Go back for another component.				&2040	\ ENTRY.INDEX$		= CMDLIN.INDEX$				&	\ ENTRY.COMP.KEY$	= CMPONT.COMPONENT.KEY$			&	\ ENTRY.CMD.LINE$	= CMDLIN.COMMAND$			&	\ ENTRY.BUILD.LOCATION$ = CMPONT.WORK.FLAG$			&	\ ON FN.PUT.RECORD%( 6%, 0% )					&		GO TO							&			2050,		! Successfull		!	&			9000,		! File error		!	&			9000		! File error		!	&	!								&	!	Fill in the entry record.				&	!	Put it out to the entry file.				&2050	\ NUM.OF.CMDS.WRITTEN% = NUM.OF.CMDS.WRITTEN% + 1%		&	\       UPDATE #2%							&	\ UNLOCK #4%							&	\ TE% = FN.PRINT.BLOCK%( 0%, 654% )	IF DEBUG.FLAG%		&	\ GO TO 2010							&	!								&	!	Increment the number of commands written.		&	!	Update the component record.				&	!	Unlock the command line dictionary.			&	!	Go back for another component.				&3000	!$**************************************************************&	!								&	!								&	!	P R E P A R E    O N - S I T E    B U I L D S		&	!								&	!								&	!********************************************************      *******&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 655% )				&	\ RESTORE #2%, KEY #0%						&	\ TE% = FN.PRINT.BLOCK%( 0%, 641% )	IF DEBUG.FLAG%		&	!								&	!	Tell the user what we are doing.			&	!	Restore the component file.				&	!								&	\ SEQUENCE.NUMBER$ = "0"					&	\ UFD.LIST$( T% ) = ""	FOR T% = 0% TO 1%			&	!								&	!	Initialize some variables for the functions used.	&3010	\ ON FN.GET.RECORD%( GET.SEQUENTIAL%, 2%, 0%, "" )		&		GO TO							&			3020,		! Successfull		!	&			4000,		! Done this pass	!	&      			4000		! Done this pass	!	&	!								&	!	Get the next record in the component file.		&3020	\ GO TO 3010	IF CMPONT.WORK.FLAG$ <> "O"			&			AND CMPONT.WORK.FLAG$ <> "S"			&	\ PARENT.WORK.FLAG$ = CMPONT.WORK.FLAG$				&	\ CURRENT.COMPONENT$,						&	  SUBSTITUTE.TEXT$( 1% ) = TRM$( CMPONT.COMPONENT.KEY$ )	&	\ TE% = FN.PRINT.BLOCK%( 0%, 650% )	IF DEBUG.FLAG%		&	!								&	!	Skip this component if it is not built on-site.		&	!	Save this component's work flag as the parent work	&	!	  so we can mark commands in th      e rebuildem file accord-	&	!	  ing to it's value.					&	!								&	\ ON FN.GET.RECORD%(	FIND.KEY.EQ%,				&				3%, 1%,					&				CMPONT.COMPONENT.KEY$ )			&		GO TO							&			3030,		! Found one.		!	&			3010,		! None found.		!	&			3010		! None found.		!	&	!								&	!	Find the first reference.				&3030	\ ON FN.GET.RECORD%( GET.SEQUENTIAL%, 3%, 0%, "" )		&		GO TO							&			3040,		! Got another one.	!	&			3900,		! No more.		!	&			3900		! No more.		!	&	!								&	!	Get the next reference.					&3040	\ GO TO 3900	IF        REFER.ORIG.FILE$ <> CURRENT.COMPONENT$	&	!								&	!	Go get the next component if we have checked all of	&	!	  this ones referenced.					&	!								&	\ GO TO 3030	IF  REFER.RE.BUILD.FLAG$ <> "M"			&			AND REFER.RE.BUILD.FLAG$ <> "L"			&	\ SUBSTITUTE.TEXT$( 2% ) = TRM$( REFER.REF.FILE$ )		&		IF DEBUG.FLAG%						&	\ TE% = FN.PRINT.BLOCK%( 0%, 656% )	IF DEBUG.FLAG%		&	!								&	!	Skip this referenced component if it is not needed.	&	!								&	\ ON FN.GET.RECORD%(	GET.KEY.EQ%,				&				2%, 0%,					&				REFE      R.REF.FILE$ )			&		GO TO							&			3060,		! Found it		!	&			3050,		! Not found		!	&			3050		! Not found		!	&	!								&	!	Get the component record for the referenced component.	&3050	\ SUBSTITUTE.TEXT$( 1% ) = CURRENT.COMPONENT$			&	\ TE% = FN.PRINT.BLOCK%( 0%, 616% )				&	\ INCONSISTENT.INSTRUCTIONS% = TRUE%				&	\ GO TO 3030							&	!								&	!	Tell the user that the current component references	&	!	  a non-existing component.				&	!	Set the flag to quit at the end of this pass.		&	!	Go try for another r      eference.				&3060	\ TAPE.NUMBER$ = LEFT( CMPONT.SHIPPING.CODE$, 2% )		&	\ BUILD.CODE$  = RIGHT( CMPONT.SHIPPING.CODE$, 3% )		&	\ GO TO 3500	IF INSTR( 1%, "00/04", TAPE.NUMBER$ ) <> 0%	&	!								&	!	Extract the tape number from the shipping code.		&	!	Extract the build code from the shipping code.		&	!	Skip to the other section if this component is usually	&	!	  not shipped.						&	!								&	!***************************************************************&	!								&	!	HANDLE COMPONENTS USUALLY SHIPPED			      &	!								&	!***************************************************************&	!								&	\ GO TO 3030	IF INSTR( 1%, "LYH", CMPONT.WORK.FLAG$ ) <> 0%	&	!								&	!	If the component has changed, it will be in the copy	&	!	  control file.  Therefore we do not have to work about	&	!	  checking for it's presence.				&	!	Also if it is already in the change control file there	&	!	  is no reason to put it there again.			&	!								&	\ CMPONT.WORK.FLAG$ = "H"					&	\ UPDATE #2%							&	\ TE% = FN.PRINT.BLOCK%( 0%,       664% )	IF DEBUG.FLAG%		&	!								&	!	Set this component's work flag to "H" to signify that	&	!	  it has already been put on the change tape.		&	!								&	\ CHGCTL.TAPE.NUMBER$		= TAPE.NUMBER$			&	\ TE%				= VAL( CMPONT.TAPE.NUMBER$ )	&	\ CHGCTL.HOLD.UFD$		= "[7,"				&					+ FN.INT.TO.OCT$( TE% )		&					+ "]"				&	\ CHGCTL.TARGET.UFD$		= "[CHECKUP]"			&	\ CHGCTL.COMPONENT.NAME$	= CMPONT.COMPONENT.NAME$	&	\ CHGCTL.COMPONENT.KEY$		= CMPONT.COMPONENT.KEY$		&	\ CHGCTL.LEVEL$			= CMPONT.CUR.LEVEL$		&	\ CHGCTL.      SEQUENCE.KEY$		= FN.SEQUENCE.KEY$		&	\ CHGCTL.CONTIG.FLAG$		= COMPONT.CONTIG.FLAG$		&	\ CHGCTL.FIRST.IN.UFD$		= "N"				&	!								&	!	Fill in the change control record.			&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 660% ) 	IF DEBUG.FLAG%		&	\ ON FN.PUT.RECORD%( 9%, 0% )					&		GO TO							&			3030,		! Success		!	&			9000,		! File error		!	&			9000		! File error		!	&	!								&	!	Put the record out to the change control file.		&3500	!***************************************************************&	!								&	!      	HANDLE COMPONENTS THAT ARE USUALLY NOT SHIPPED		&	!								&	!***************************************************************&	!								&	\ GO TO 3030	IF CMPONT.WORK.FLAG$ = "S"			&			OR CMPONT.WORK.FLAG$ = "O"			&	!								&	!	If the component is usually built on-site, skip adding	&	!	  it to the copycontrol file.				&	!								&	\ CPYCTL.TAPE.NUM$	= TAPE.NUMBER$				!BL9-00&	!								&	!	Set the tape number as the change tape.			&	!								&	\ TEMP%			= VAL( TAPE.NUMBER$ )			&	\ TEMP% = 4%	IF TEMP% = 0%		      			&	\ CPYCTL.HOLD.UFD$	= "[7,"					&				+ FN.INT.TO.OCT$( TEMP% )		&				+ "]"					&	\ CPYCTL.TARGET.UFD$	= "["					&				+ CMPONT.DEST.GROUP$			&				+ ","					&				+ CMPONT.DEST.MEMBER$			&				+ "]"					&	!								&	!	Construct the holding and target UFD's for this		&	!	  component.						&	!								&	\ CPYCTL.COMPONENT.NAME$ = CMPONT.COMPONENT.NAME$		&	\ CPYCTL.COMPONENT.KEY$	= CMPONT.COMPONENT.KEY$			&	\ CPYCTL.LEVEL$		= CMPONT.CUR.LEVEL$			&	\ CPYCTL.SEQUENCE.KEY$	= FN.SEQUENCE.KEY$			&	\ CPYCTL.CONTIG.FL      AG$	= CMPONT.CONTIG.FLAG$			&	\ CPYCTL.FIRST.IN.UFD$						&			= FN.FIRST.IN.UFD$( 0%, CPYCTL.TARGET.UFD$ )	&	!								&	!	Get the following to the Copy Control File:		&	!		Component Name					&	!		Component Key					&	!		Component's Current Level			&	!		A Sequence Key for this entry in the Copy	&	!		  Control File					&	!		The Component's Contiguous Flag			&	!		Find out whether this is the first in the UFD.	&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 661% )	IF DEBUG.FLAG%		&	\ ON FN.PUT.RECORD%( 8%, 0% )					&	      	GO TO							&			3510,	! Successfull			!	&			9000,	! Not successfull		!	&			9000	! Not successfull		!	&	!								&	!	Put the change control record out to the file.		&3510	\ ENTRY.INDEX$ = "90"						&	\ ENTRY.COMP.KEY$ = CMPONT.COMPONENT.KEY$			&	\ SUBSTITUTE.TEXT$( 1% ) = CPYCTL.TARGET.UFD$			&	\ SUBSTITUTE.TEXT$( 2% ) = TRM$( CPYCTL.COMPONENT.NAME$)	&	\ ENTRY.CMD.LINE$ =						&		FN.SUB.TEXT$( FN.TEXT.LINE$( 610% ) )			&	\ ENTRY.BUILD.LOCATION$,					&	  SUBSTITUTE.TEXT$( 3% ) = "S"					&	\ NUM.OF.CMDS.WRITT      EN% = NUM.OF.CMDS.WRITTEN% + 1%		&	\ TE% = FN.PRINT.BLOCK%( 0%, 663% )	IF DEBUG.FLAG%		&	\ ON FN.PUT.RECORD%( 6%, 0% )					&		GO TO							&			3030,	! Successfull		!		&			9000,	! Not successfull	!		&			9000	! Not successfull	!		&	!								&	!	Fill in an entry file record with the command		&	!	  to delete the component we are copying when		&	!	  done.							&	!	Note that the location of the delete is set as "S".	&	!	  This will assure that the delete is done even at	&	!	  SYSCHANGE run time (since we will not       need the build	&	!	  files and other such files after we have processed	&	!	  the special builds).					&	!	Increment the number of commands written to the		&	!	  file.							&	!	Write the entry record to the file.			&3900	\ ON FN.GET.RECORD%(	GET.KEY.EQ%,				&				2%, 0%,					&				CURRENT.COMPONENT$ )			&		GO TO							&			3010,						&			3910,						&			3910						&	!								&	!	Get back to where we were in the file.			&3910	\ TE% = FN.PRINT.BLOCK%( 0%, 609% )				&	\ GO TO 31000							&	!								&	!	Tell the u      ser that the component record has dis-	&	!	  appeared.						&	!	Go exit with status.					&4000	!$**************************************************************&	!								&	!								&	!	S E T    U P    L O C A L    B U I L D S		&	!								&	!								&	!***************************************************************&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 657% )				&	\ RESTORE #2%, KEY #0%						&	\ TE% = FN.PRINT.BLOCK%( 0%, 641% )	IF DEBUG.FLAG%		&	!								&	!	Tell the user what we are doing.			&	!	Restore       the component file.				&4010	\ ON FN.GET.RECORD%( GET.SEQUENTIAL%, 2%, 0%, "" )		&		GO TO							&			4020,		! Found another one	!	&			5000,		! No more		!	&			5000		! No more		!	&	!								&	!	Get the next component.					&4020	\ GO TO 4010	IF INSTR( 0%, "LY", CMPONT.WORK.FLAG$ ) = 0%	&	!								&	!	Do not process this component if it is not a locally	&	!	  built or base component that has changed.		&	!								&	\ TAPE.NUMBER$ = LEFT( CMPONT.SHIPPING.CODE$, 2% )		&	\ GO TO 4010	IF TAPE.NUMBER$ = "00"				&	\ C      URRENT.COMPONENT$,						&	  SUBSTITUTE.TEXT$( 1% ) = TRM$( CMPONT.COMPONENT.KEY$ )	&	\ TE% = FN.PRINT.BLOCK%( 0%, 650% )	IF DEBUG.FLAG%		&	!								&	!	Extract the tape number for the shipping code.		&	!	If this component should not be shipped, don't ship it.	&	!								&	\ CPYCTL.TAPE.NUM$	= TAPE.NUMBER$				!BL9-00&	!								&	!	Set the tape number as the change tape.			&	!								&	\ TEMP%			= VAL( TAPE.NUMBER$ )			&	\ TEMP% = 4%	IF TEMP% = 0%					&	\ CPYCTL.HOLD.UFD$	= "[7,"					&				+ FN.INT.TO.OCT$( TE      MP% )		&				+ "]"					&	\ CPYCTL.TARGET.UFD$	= "["					&				+ CMPONT.DEST.GROUP$			&				+ ","					&				+ CMPONT.DEST.MEMBER$			&				+ "]"					&	!								&	!	Construct the holding and target UFD's for this		&	!	  component.						&	!								&	\ CPYCTL.COMPONENT.NAME$ = CMPONT.COMPONENT.NAME$		&	\ CPYCTL.COMPONENT.KEY$	= CMPONT.COMPONENT.KEY$			&	\ CPYCTL.LEVEL$		= CMPONT.CUR.LEVEL$			&	\ CPYCTL.SEQUENCE.KEY$	= FN.SEQUENCE.KEY$			&	\ CPYCTL.CONTIG.FLAG$	= CMPONT.CONTIG.FLAG$			&	\ CPYCTL.FIRST.IN.UFD$						&		      	= FN.FIRST.IN.UFD$( 0%, CPYCTL.TARGET.UFD$ )	&	!								&	!	Get the following to the Copy Control File:		&	!		Component Name					&	!		Component Key					&	!		Component's Current Level			&	!		A Sequence Key for this entry in the Copy	&	!		  Control File					&	!		The Component's Contiguous Flag			&	!		Find out whether this is the first in the UFD.	&	!								&	\ ON FN.PUT.RECORD%( 8%, 0% )					&		GO TO							&			4030,	! Successfull			!	&			9000,	! Not successfull		!	&			9000	! Not successfull		!	&	!								&	      !	Put the change control record out to the file.		&4030	!$**************************************************************&	!								&	!								&	!	C H E C K    S P I N - O F F ' S    F O R		&	!								&	!		S H I P P I N G					&	!								&	!								&	!***************************************************************&	!								&	\ ON FN.GET.RECORD%( FIND.KEY.EQ%, 3%, 1%, CURRENT.COMPONENT$ )	&		GO TO							&			4050,						&			4010,						&			4010						&	!								&	!	Get the first reference from the current compone      nt.	&4050	\ ON FN.GET.RECORD%( GET.SEQUENTIAL%, 3%, 0%, "" )		&		GO TO							&			4060,						&			4090,						&			4090						&	!								&	!	Get the next reference from the current component.	&4060	\ GO TO 4090	IF CURRENT.COMPONENT$ <> REFER.ORIG.FILE$	&	\ GO TO 4050	IF REFER.RE.BUILD.FLAG$ <> "S"			&	\ SUBSTITUTE.TEXT$( 2% ) = TRM$( REFER.REF.FILE$ )		&			IF DEBUG.FLAG%					&	\ TE% = FN.PRINT.BLOCK%( 0%, 666% )		IF DEBUG.FLAG%	&	!								&	!	Finish up if we have processed all references from the	&	!	  current c      omponent.					&	!	Skip this reference if it is not a spin-off.		&	!								&	\ ON FN.GET.RECORD%( GET.KEY.EQ%, 2%, 0%, REFER.REF.FILE$ )	&		GO TO							&			4080,						&			4070,						&			4070						&	!								&	!	Get the component file entry for the spin-off.		&4070	\ TE% = FN.PRINT.BLOCK%( 0%, 665% )				&	\ INCONSISTENT.INSTRUCTIONS% = TRUE%				&	\ GO TO 4050							&	!								&	!	Tell the user we could not find the component entry 	&	!	  for this spun-off reference.				&	!	Make sure the build will not contin      ue.			&	!	Go check out the next reference.			&4080	\ TAPE.NUMBER$ = LEFT( CMPONT.SHIPPING.CODE$, 2% )		&	\ GO TO 4050	IF TAPE.NUMBER$ = "00"				&	!								&	!	Extract this component's tape number.			&	!	Skip this component if it is usually not shipped.	&	!								&	\ GO TO 4050	IF INSTR( 0%, "LF", CMPONT.WORK.FLAG$ ) <> 0%	&	\ CMPONT.WORK.FLAG$ = "F"					&	\ CMPONT.BUILD.COPY.AUTHOR$ = OPERATOR.INITIALS$		&	\ CMPONT.CUR.LEVEL$ = BASE.LEVEL.NUMBER$			&	\ UPDATE #2%							&	\ TE% = FN.PRINT.BLOCK%( 0%, 667% )      		IF DEBUG.FLAG%	&	!								&	!	Skip processing this spin-off if it has already been	&	!	  processed.						&	!	Update the component's build/copy author and the	&	!	  current level.					&	!								&	\ CPYCTL.TAPE.NUM$ = TAPE.NUMBER$				!BL9-00&	\ TEMP% = VAL( TAPE.NUMBER$ )					&	\ TEMP% = 4%	IF TEMP% = 0%					&	\ CPYCTL.HOLD.UFD$	= "[7,"					&				+ FN.INT.TO.OCT$( TEMP% )		&				+ "]"					&	\ CPYCTL.TARGET.UFD$	= "["					&				+ CMPONT.DEST.GROUP$			&				+ ","					&				+ CMPONT.DEST.MEMBER$			&				+ "]"					&      	\ CPYCTL.COMPONENT.NAME$ = CMPONT.COMPONENT.NAME$		&	\ CPYCTL.COMPONENT.KEY$ = CMPONT.COMPONENT.KEY$			&	\ CPYCTL.LEVEL$ = CMPONT.CUR.LEVEL$				&	\ CPYCTL.SEQUENCE.KEY$ = FN.SEQUENCE.KEY$			&	\ CPYCTL.CONTIG.FLAG$ = CMPONT.CONTIG.FLAG$			&	\ CPYCTL.FIRST.IN.UFD$						&		= FN.FIRST.IN.UFD$( 0%, CPYCTL.TARGET.UFD$ )		&	\ TE% = FN.PRINT.BLOCK%( 0%, 661% )	IF DEBUG.FLAG%		&	!								&	!	Contruct the copy control record for the spin-off.	&	!								&	\ ON FN.PUT.RECORD%( 8%, 0% )					&		GO TO							&			4050,			      			&			9000,						&			9000						&	!								&	!	Put out the record to the copycontrol file.		&4090	\ ON FN.GET.RECORD%( GET.KEY.EQ%, 2%, 0%, CURRENT.COMPONENT$ )	&		GO TO							&			4010,						&			4100,						&			4100						&	!								&	!	Get back to the current component.			&4100	\ TE% = FN.PRINT.BLOCK%( 0%, 609% )				&	\ GO TO 31000							&	!								&	!	Tell the user that the current compnent's record has	&	!	  disappeared.						&	!	Go exit with status.					&5000	!$********************************************      ******************&	!								&	!								&	!	F I N I S H    U P					&	!								&	!								&	!***************************************************************&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 658% )	IF DEBUG.FLAG%		&	\ CPYCTL.TAPE.NUM$ = "04"					&	\ CPYCTL.HOLD.UFD$ = "[7,4]"					&	\ CPYCTL.TARGET.UFD$ = "[1  ,1  ]"				&	\ CPYCTL.COMPONENT.NAME$ = "REBUILDEM.CMD"			&	\ CPYCTL.COMPONENT.KEY$ = "DATFILREBUILDEM"			&	\ CPYCTL.LEVEL$ = BASE.LEVEL.NUMBER$				&	\ CPYCTL.SEQUENCE.KEY$ = FN.SEQUENCE.KEY$			&	      \ CPYCTL.CONTIG.FLAG$ = "N"					&	\ CPYCTL.FIRST.IN.UFD$						&		= FN.FIRST.IN.UFD$( 0%, CPYCTL.TARGET.UFD$ )		&	!								&	!	Make up a copy control record for the rebuildem		&	!	  command file.						&	!								&	\ ON FN.PUT.RECORD%( 8%, 0% )					&		GO TO							&			5010,		! Successfull		!	&			9000,		! Not successfull	!	&			9000		! Not successfull	!	&	!								&	!	Put the record out to the copy control file.		&5010	\ GO TO 5020	IF INCONSISTENT.INSTRUCTIONS%			&	\ GOSUB 14100							&	\ SUBSTITUTE.TEXT$(42%) =       NUM1$( NUM.OF.CMDS.WRITTEN% )		&			IF DEBUG.FLAG%					&	\ TE% = FN.PRINT.BLOCK%( 0%, 642% )	IF DEBUG.FLAG%		&	\ GO TO 32000							&	!								&	!	Print an error message an quit if we have encountered	&	!	  inconsistent instructions.				&	!	Create the build control file and successfully exit.	&5020	\ SUBSTITUTE.TEXT$( 10% ) = "II"				&	\ TE% = FN.PRINT.BLOCK%( 0%, 621% )				&	\ GO TO 31000							&	!								&	!	Set up the pass number.					&	!	Tell the user why we are quitting.			&	!	Go quit.						&9000	!$****      **********************************************************&	!								&	!								&	!	H A N D L E    F I L E    E R R O R S   H E R E		&	!								&	!								&	!***************************************************************&	!								&	\ PRINT "? CHGPREPBL file error"; ERR; ERL			&	\ GO TO 31000							&	!								&	!	Print out the error message.				&	!	Go finish up.						&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		      &	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&14000	!$**************************************************************&	!								&	!								&	!	O P E N    F I L E S    F O R    P A S S    I I		&	!								&	!								&	!***************************************************************&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make sure that no file is marked as locked.		&14010	!	Reserved for open of control file.	      		&14020	!	Reserved for error in control file.			&14030	!	Reserved for extraction of data from control file.	&14040	\ FILE.NUMBER% = 2%						&	\ OPEN "COMPONENT.FIL" AS FILE 2%				&		,ORGANIZATION	INDEXED					&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		CMPONT					&		,PRIMARY KEY	CMPONT.COMPONENT.KEY$			&		,ALTERNATE KEY	CMPONT.COMPONENT.NAME$			&				NODUPLICATES				&		,ALTERNATE KEY	CMPONT.SHIPPING.CODE$			&				DUPLICATES				&				CHANGES					&	!								&	!	Open the COMPONENT File.		      		&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Reset the flag before we try to open another file.	&14050	\ FILE.NUMBER% = 3%						&	\ OPEN "REFERENCE.FIL" AS FILE 3%				&		,ORGANIZATION	INDEXED					&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		REFER					&		,PRIMARY KEY	REFER.ENTRY.NUM$			&		,ALTERNATE KEY	REFER.ORIG.FILE$			&				DUPLICATES				&				CHANGES					&		,ALTERNATE KEY	REFER.REF.FILE$				&				DUPLICATES				&	!								&	!	Open the REFERENCE File.				&	!								&	\ F      ILE.LOCKED% = FALSE%						&	!								&	!	Make sure that the file is not locked.			&14060	\ FILE.NUM% = 8%						&	\ OPEN "[7,4]COPYCNTRL.FIL" FOR OUTPUT AS FILE #8%		&		,ORGANIZATION	SEQUENTIAL				&				FIXED					&		,ACCESS		WRITE					&		,ALLOW		NONE					&		,MAP		CPYCTL					&	!								&	!	Open the copy control file.				&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Assure that the next file is not locked before we 	&	!	  start.						&14070	\ FILE.NUMBER% = 9%						&	\ OPEN "CHNGCNTRL.FIL" FOR OUTPUT       AS FILE #9%			&		,ORGANIZATION	SEQUENTIAL				&				FIXED					&		,ACCESS		WRITE					&		,ALLOW		NONE					&		,MAP		CHGCTL					&	!								&	!	Open the change control file.				&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make sure that the next file is not marked as locked.	&14080	\ FILE.NUMBER% = 4%						&	\ OPEN "CMDLINE.FIL" AS FILE 4%					&		,ORGANIZATION	INDEXED					&				VARIABLE				&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		CMDLIN					&		,PRIMARY KEY	CMDLIN.KEY$				&	!								&	!	Ope      n the file for business				&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make sure the next file is not marked as locked.	&14090	\ FILE.NUMBER% = 6%						&	\ OPEN "CMDENTRY.LST" FOR OUTPUT AS FILE #6%			&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		WRITE					&		,ALLOW		NONE					&		,MAP		ENTRY					&	\ NUM.OF.CMDS.WRITTEN% = 0%					&	!								&	!	Open the entry file for output.				&	!	Indicate that no commands have been written to the	&	!	  file.							&	!								&	\ RETURN							&	!					      			&	!	Return to the caller.					&14100	!$**************************************************************&	!								&	!								&	!	I N I T I A L I Z E    B U I L D    C O N T R O L	&	!								&	!			F I L E					&	!								&	!								&	!***************************************************************&	!								&	\ FILE.NUMBER% = 5%						&	\ OPEN "BLDCNTR.FIL" FOR OUTPUT AS FILE #5%			&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		WRITE					&		,ALLOW		NONE					&		,MAP		BLDCTL					&	!								&	!	Open the       build control file.				&	!								&	\ BLDCTL.CUR.PTR% 	= 1%					&	\ BLDCTL.NUM.OF.ENTRIES%	= NUM.OF.CMDS.WRITTEN%		&	\ BLDCTL.SEQUENCE.NUMBER$ = SEQUENCE.NUMBER$			&	\ ON FN.PUT.RECORD%( 5%, 1% )					&		GO TO							&			14120,		! Successfull		!	&			14110,		! not successfull	!	&			14110		! not successfull	!	&	!								&	!	Create the buildcontrol file.				&	!	Initialize the first record.				&	!	Attempt to write the record to the file.		&14110	\ TE% = FN.PRINT.BLOCK%( 0%, 617% )				&	\ GO TO 31000							&	!			      					&	!	Tell the user that the build control file is corrupt.	&	!	Go exit with error status.				&14120	\ CLOSE #5%							&	\ KILL "REBUILDEM.CMD"	WHILE TRUE%				&	!								&	!	Close the file.						&	!	Eliminate all copies of the rebuildem file (we will	&	!	  trap to the standard error handler when they are all	&	!	  gone).						&14130	\ RETURN							&	!								&	!	Return to the caller.					&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S           L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15010	!$**************************************************************&	!								&	!								&	!	F I R S T    I N    U F D				&	!								&	!								&	!***************************************************************&									&	DEF	FN.FIRST.IN.UFD$( LIST.FN%, UFD.FN$ )			&									&		\ IF INSTR( 1%, UFD.LIST$( LIST.FN% ), UFD.FN$ ) = 0%	&		  THEN	  FN.FIRST.I      N.UFD$ = "Y"			&			\ UFD.LIST$( LIST.FN% )				&				= UFD.LIST$( LIST.FN% ) + UFD.FN$	&		  ELSE	  FN.FIRST.IN.UFD$ = "N"			&		!							&		!	If the entry is not in the string of UFD's	&		!	  supplied, set it as first in the UFD and add	&		!	  the UFD to the list.				&		!	Otherwise set it as not the first in the UFD.	&15020		\ FNEND							&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!****      ***********************************************************&	!								&	\ SUBSTITUTE.TEXT$( 40% ) = NUM1$( ERR )	IF DEBUG.FLAG%	&	\ SUBSTITUTE.TEXT$( 41% ) = NUM1$( ERL )	IF DEBUG.FLAG%	&	\ TE% = FN.PRINT.BLOCK%( 0%, 645% )		IF DEBUG.FLAG%	&19010	\ RESUME 19990	IF ERR = 162%					&	!								&	!	Resume at the locked file handling if the error is	&	!	  a locked file.					&	!								&	\ RESUME 14130	IF ERR = 5% AND ERL = 14120			&	!								&	!	If the error is file or account not found while killing	&	!	  rebuil      dem command files, just resume at the return.	&	!								&19900	\ TE% = FN.PRINT.BLOCK% ( 0%, 644% )	IF DEBUG.FLAG%		&	\ TE% = FN.PRINT.BLOCK%( 0%, 618% )	IF DEBUG.FLAG%		&	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&19990	!$**************************************************************&	!								&	!								&	!	H A N D L E    L O C K E D    F I L E S			&	!								&	!					      			&	!***************************************************************&	!								&	\ IF FILE.LOCKED%						&	  THEN	  PRINT "? Can't access file ";				&			FILE.NAME$( FILE.NUMBER% )			&		\ GO TO 31000						&	!								&	!	If we tried unlocking the file but still failed, tell	&	!	  the user our problem and the get out.			&	!								&	  ELSE	  TE% = FN.UNLOCK.FILE%( FILE.NAME$( FILE.NUMBER% ))	&		\ FILE.LOCKED% = TRUE%					&		\ ON FILE.NUMBER%					&			GO TO						&				14010,	! No such file number	!	&				14040,	!       Component file	!	&				14050,	! Reference file	!	&				14080,	! Command Line Diction.	!	&				31000,	! Build Control file	!	&				14090,	! Command list		!	&				31000,	! Re-buildem file	!	&				14060,	! Copy Control file	!	&				14070	! Change Control file	!	&	!								&	!	If this is our first try at unlocking the file, unlock	&	!	  it, indicate that we have now tried once and then	&	!	  go try to open the file again.			&20000	!$**************************************************************&	!								&	!								&	      !	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&31000	!$**************************************************************&	!								&	!								&	!	S E N D    B A C K    E R R O R    S T A T U       S		&	!								&	!								&	!***************************************************************&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 643% )	IF DEBUG.FLAG%		&	\ CALL EMIT BY REF ( TE%(), 2%, 0% )				&	!								&	!	Send back a status of 2 to the main program.		&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ TE% = FN.PRINT.BLOCK%   V  ( 0%, 644% )	IF DEBUG.FLAG%		&	\ CLOSE T% FOR T% = 1% TO 12%					&	!								&	!	Close all files.					&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDV         â£K“Á› 8$à~      995	\ MAP	(BLDCTL)						&		 BLDCTL.CUR.PTR%				!   0 !	&		,BLDCTL.NUM.OF.ENTRIES%				!   2 !	&		,BLDCTL.SEQUENCE.NUMBER$	=  5%		!   4 !	&								!   9 !	&	!								&	!	Map out the build control file.				&14050	\ BUILDING% = TRUE%						&	!								&	!	Whenever we come through here, assume that we will be	&	!	  successfull in opening the build control file and	&	!	  that therefore we will be building.			&	!								&	\ FILE.NUMBER% = 2%						&	\ OPEN "BLDCNTR.FIL" FOR INPUT AS FILE #2%			&		,ORGANIZATION	RELATI      VE				&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		NONE					&		,MAP		BLDCTL					&	!								&	!	Attempt to open the build control file for input.	&	!	If we succeed (we don't trap out here) then we are	&	!	  in a BUILD phase and must indicate such.  If not	&	!	  there, the error trapper will put us a statement	&	!	  14080.						&	!								&	\ ON FN.GET.RECORD%(	GET.RELATIVE%,				&				2%, 1%, ""	)			&		GO TO							&			14090,		! Got the record	!	&			14060,		! No such record	!	&			14060		! No such record	!	&   6   	!								&	!	Get the first record from the file.			& 6          »z–,“Á› 8$        1	!***************************************************************&	!								&	!								&	!		S Y S G E N    D I A L O G U E    A N D  	&	!								&	!		     C O N T R O L    P R O G R A M		&	!								&	!								&	!								&	!								&	!	Program:	SYSGEN					&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	01					 1.1A01&	!	Edit date:	13-Jun-79				 1.1A01&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!***********************************      ****************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1979 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 AVAI      LABLE	&	!   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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!**************************************      *************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/01	10-OCT-77 AJS	FIRST PASS			&	!	V1.1A00	14-May-79 KMR	Added code to handle the running 1.1A00&	!				  of SYSGEN to do Change Maker's 1.1A00&	!				  building.			 1.1A00&	!	V1.1A01	13-Jun-79 KMR	Moved the ATS su      pport dialogue	 1.1A01&	!				  so it would appear after all of1.1A01&	!				  the communications dialogue	 1.1A01&	!				  is finished. (This is how	 1.1A01&	!				  the documentation says it is	 1.1A01&	!				  done.)			 1.1A01&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!	This program is the central control program for T      PS-11	&	!	system generation.  It conducts a dialogue with the	&	!	user, to ascertain which optional features the user	&	!	wishes to include in his/her system.  This program 	&	!	then tailors the sysgen data files and makes use of	&	!	system utility program to properly build and setup	&	!	the user defined system configuration.			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!      	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y       S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	---      --------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$********************************      ******************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements      .			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&905	\ DIM TASK%(15%)						&	\ DIM WDB%(7%)							&	\ DIM RDB%(7%)							&	\ DIM REGION1%(7%)						&	\ DIM REGION%(7%)						&	!								&	!	Spawn task array for SPAWN() call.			&	!	Window and Region descriptor blocks.			&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!****      ***********************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ DONT.PUT%=-1%							&	\ CALL CHEKIT(SPAWN.STATUS%)					&	\ GOTO 32010 IF SPAWN.STATUS%<>1%				&	!								&	!	Set up standard default error trap			&	!	See if we are on TT0: under [1,1]			&1030	\ RDB%(1%)=128%							&	\ CALL ASTO50("GEN",Z%,ZZ%)					&	\ RDB%(2%)=Z%							&	\ CALL ASTO50("COM",Z%,ZZ%)					&	\ RDB%(3%)=Z%							&	\ CALL ASTO50("GEN",Z%,ZZ%)					&	\ RDB%(4%)=Z%							&	\ RDB%(6%)=8%+2%+1%					      	&	\ CALL CRRG BY REF (RDB%(),Z%)					&	\ PRINT 							&	\ PRINT "? Another SYSGEN is being performed on this system." IF&		RDB%(6%)>=0%						&	\ GOTO 32010 IF RDB%(6%)>=0%					&	\ CALL ATRG BY REF (RDB%(),Z%)					&	\ WDB%(0%)=SWAP%(7%)						&	\ WDB%(2%)=128%							&	\ WDB%(3%)=RDB%(0%)						&	\ WDB%(5%)=128%							&	\ WDB%(6%)=256%+128%+2%						&	\ CALL CRAW BY REF (WDB%(),Z%)					&	!								&	!	Create, attach, and create address window for the	&	!		SYSGEN data region.				&	\ REGION1%(1%)= 16%						&	\ REG      ION1%(2%)= 1%*40%**2% + 21%*40% + 20%			&	\ REGION1%(3%)= 15%*40%**2% + 19%*40% + 26%			&	\ REGION1%(6%)= 128% + 32% + 8% + 4% + 2% + 1%			&	\ CALL CRRG BY REF (REGION1%(),DIRECTIVE.ERROR%)		&	!								&	!	Create the region used by AUTOIO			&	\ REGION%(1%)= 48%						&	\ REGION%(2%)= 4%						&	\ REGION%(3%)= 4%						&	\ REGION%(6%)= 128%+32%+8%+4%+2%+1%				&	\ CALL CRRG BY REF (REGION%(),DIRECTIVE.ERROR%)			&	!								&	!	For testing purposes, create the region			&	!	BEWARE, the region codes documented in V3       M manuals	&	!	is incorrect						&1035	\ T%=FN.SETUP.DIALOGUE%						&	\ SUBSTITUTE.TEXT$(1%) = "Generation"				!1.1A00&	\ SUBSTITUTE.TEXT$(1%) = "Update"	IF CHANGEMAKER%		!1.1A00&	\ T%=FN.PRINT.HELP.TEXT%(37%,1%)				&	\ CALL TIMSUP(0%)						&	\ BREED.COMMAND$="SET /UIC=[1,1]"				&	\ BREED.TASK$="MCR..."						&	\ GOSUB 20000							&	\ GO TO 1235	IF CHANGEMAKER%					!1.1A00&	!								&	!	Set up the dialogue.					 1.1A00&	!	Decide how the copyright should be worded.		 1.1A00&	!	Print out the copyright.				 1.1      A00&	!	Print out the proper time message			 1.1A00&	!	Set our UIC.						 1.1A00&	!	Skip around stuff which is unneccessary for Change	 1.1A00&	!	  Maker.						 1.1A00&1040	\ DEFAULT$="NO"							&	\ PRINT.NEXT.HELP%=TRUE%					&	\ ON FN.ASK%(2%,DEFAULT$,"",0%,1%) GOTO 1040,32000,1050		&	!								&	!	Ask the 'Long/Short' question.				&	!		ALT asks it again				&	!		CTRL/Z gets us out				&	!		valid response to continues			&1050	\ LONG.FORM%,FINE.TUNE%,INSERT.XDT%,SYSGEN.LONG.FORM%=0%	&	\ ASK.CVT$=EDIT$(ASK.CVT$,      32%)					&	\ Z%=INSTR(1%,ASK.CVT$,"/FT")					&	\ FINE.TUNE%=Z%							&	\ Z%=INSTR(1%,ASK.CVT$,"/XDT")					&	\ INSERT.XDT%=Z%						&	\ Z%=INSTR(1%,ASK.CVT$,"/")					&	\ IF (Z%<>0%) AND ((FINE.TUNE% OR INSERT.XDT%)=0%)		&	  THEN PRINT							&		\ PRINT "% Invalid response."				&		\ GOTO 1040						&	  ELSE Z%=LEN(ASK.CVT$)+1% IF Z%=0%				&		\ ASK.CVT$=LEFT(ASK.CVT$,Z%-1%)				&		\ IF (ASK.CVT$="YES") OR (ASK.CVT$="YE") OR (ASK.CVT$="Y")&		  THEN LONG.FORM%=-1%					&			\ SYSGEN.LONG.FORM%=LONG.FORM%			&			\ GOTO       1060					&		  ELSE IF (ASK.CVT$="NO") OR (ASK.CVT$="N")		&		       THEN GOTO 1060					&		       ELSE PRINT					&			    \ PRINT "% Respond with YES or NO."		&			    \ GOTO 1040					&	!								&	!	Set up the 'Long/Short' flag as he/she wants.		&1060	\ DEFAULT$="NO"							&	\ ON FN.ASK%(3%,DEFAULT$,"Y",0%,1%) GOTO 1040,32000,1070,1070	&	!								&	!	Ask the skip question					&	!		ALT back one question				&	!		CTRL/Z out					&	!		valid to 1070					&1070	\ GOTO 1235 IF ASK.CVT$="YES"					&1075	\ T%=FINE.TUNE%			      				&	\ TT%=INSERT.XDT%						&	\ T$=VER.EDIT.NUM$						&	\ T.HERALD$=HERALD.TEXT$ UNLESS T.HERALD$=""			&	\ DONT.PUT%=-1%							&	\ OPEN "[200,201]CONFIGURE.DAT" FOR OUTPUT AS FILE 6%,		&			ORGANIZATION VIRTUAL,				&			MAP GENCOM,					&			FILESIZE 16%,					&			RECORDSIZE 8192%				&	\ DONT.PUT%=0%							&	\ CALL	NULGEN							&	\ DO.SETUP%=0%							&	\ FINE.TUNE%=T%							&	\ INSERT.XDT%=TT%						&	\ VER.EDIT.NUM$=T$						&	\ HERALD.TEXT$=T.HERALD$					&	\ CONFIGURE.DAT$="[200,201]CONFIGURE.DAT"			&	!								      &	!	Go on to the generate phase if yes was the answer.	&	!	OPEN THE Saved region FILE and restore variables 	&	!	already set up.						&1080	\ DEFAULT$=TRM$(HERALD.TEXT$)					&	\ SELECTIVE.DIALOGUE%=0%					&	\ ASK.RANGE(0%)=24.						&	\ ON FN.ASK%(4%,DEFAULT$,"",TRUE%,1%) GOTO 1085,32000,1090	&	!								&	!	Ask the "Herald" question.				&	!		ALT back one question				&	!		CTRL/Z out					&	!		anything else to 1090				&1085	\ CLOSE 6%							&	\ T%=FN.EXEC.BLOCK%("MCR...",672%,FALSE%) IF			&			VALID.REGION$<>"TP      S-11 SYSGEN*"			&	\ DONT.PUT%=-1%							&	\ GOTO 1060							&	!								&	!	Get rid of the CONFIGURE.DAT file you just created.	&1090	\ HERALD.TEXT$=EDIT$(ASK.RESP$,4%)				&	\ ON ERROR GOTO 19000						&	\ OPEN "[1,2]SYSHERALD.TXT" FOR OUTPUT AS FILE 9%		&	\ PRINT #9, HERALD.TEXT$					&	\ CLOSE 9%							&	!								&	!	Set up Herald in our space and in a file.		&1095	\ DEFAULT$="NO"							&	\ DEFAULT$="YES" IF DEV.SYS%<>0%				&	\ ON FN.ASK%(42%,DEFAULT$,"Y",0%,1%) GOTO 1080,32000,1097,1097	&	!								&	!	Ask t      he "Development system only" question.		&1097	\ DEV.SYS%=(ASK.CVT$="YES")					&	!								&	!	TRUE IF YES, FALSE IF NO.				&1100	\ BREED.TASK$="...INS"						&	\ BREED.COMMAND$="INS [1,54]AUTO/TASK=AUTO"			&	\ BREED.RETURN%=TRUE%						&	\ GOSUB 20000							&	\ BREED.COMMAND$=""						&	\ BREED.TASK$="AUTO"						&	\ GOSUB 20000							&	\ SPAWN.STATUS%=BREED.ERROR%					&	\ BREED.COMMAND$="REM AUTO"					&	\ BREED.TASK$="MCR..."						&	\ GOSUB 20000							&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ GOTO 109      5 IF (SPAWN.STATUS%/8%)=27%				&	\ DO.SETUP%=0%							&	!								&	!	Install AUTO						&	!	Spawn AUTO						&	!	Remove AUTO						&	!	Exit if anything but success received from AUTO.	&	!	Ask the 'Herald' question if ALTed from AUTO.		&1120	\ CALL LANSUP(SPAWN.STATUS%)					&	\ DATATR.SUPPORT%=-1%						&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ GOTO 1100 IF (SPAWN.STATUS%/8%)=27%				&	\ GOTO 1180 IF DEV.SYS%<>0%					&	!								&	!	Do the Language Support dialogue.			&	!	Error out, ALT to the "Kernal uti      lities" dialogue.	&1130	\ CALL COMSUP(SPAWN.STATUS%)					&	\ COM.SUPPORT%=0% IF DEV.SYS%<>0%				&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ GOTO 1180 IF SELECTIVE.DIALOGUE%<>0%				&	\ GOTO 1120 IF (SPAWN.STATUS%/8%)=27%				&	!								&	!	See if he/she bought the Communications support.	&	!	Do the Communications dialogue if he/she did.		&	!	Error out, ALT to the "Language Support" dialogue.	&1135	\ CALL IBMSUP(SPAWN.STATUS%)					!1.1A01&	\ IBM.SUPPORT% = 0%	IF DEV.SYS% <> 0%			!1.1A01&	\ GOTO 32000 IF       (SPAWN.STATUS% AND 7%)<>1%			&	\ GOTO 1180 IF SELECTIVE.DIALOGUE%<>0%				&	\ IF SPAWN.STATUS%/8% = 27%					!1.1A01&	  THEN	  GO TO 1130	IF COM.SUPPORT% <> 0%			!1.1A01&		\ GO TO 1120						!1.1A01&	!								&	!	Do the 3271 Support dialogue.				 1.1A01&	!	Indicate that we have no 3271 support if this is a	 1.1A01&	!	  developement system only.				 1.1A01&	!	Error out, ALT to the  APPROPRIATE dialogue.		&1145	\ CALL T27SUP(SPAWN.STATUS%)					!1.1A01&	\ T2780.SUPPORT%=0%	IF DEV.SYS%<>0%				!1.1A01&	\ GOTO 3200      0 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ GOTO 1180 IF SELECTIVE.DIALOGUE%<>0%				&	\ IF SPAWN.STATUS%/8% = 27%					!1.1A01&	  THEN	  GO TO 1135	IF IBM.SUPPORT% <> 0%			!1.1A01&		\ GO TO 1130	IF COM.SUPPORT% <> 0%			!1.1A01&		\ GO TO 1120						!1.1A01&	!								&	!	Do the 2780 support dialogue.				 1.1A01&	!	Indicate no 2780 support if this is a developement only	 1.1A01&	!	  system.						 1.1A01&	!	Exit on error.						 1.1A01&	!	Skip everything else if we are doing a selective	 1.1A01&	!	  dialogue.						 1.1A      01&	!	Handle ESC's properly.					 1.1A01&1150	\ CALL ATSSUP(SPAWN.STATUS%)					!1.1A01&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ GOTO 1180 IF SELECTIVE.DIALOGUE%<>0%				&	\ IF SPAWN.STATUS%/8% = 27%					!1.1A01&	  THEN	  GO TO 1145	IF T2780.SUPPORT% <> 0%			!1.1A01&		\ GO TO 1135	IF IBM.SUPPORT% <> 0%			!1.1A01&		\ GO TO 1130	IF COM.SUPPORT% <> 0%			!1.1A01&		\ GO TO 1120						!1.1A01&	!								&	!	Do the ATS support dialogue.				 1.1A01&	!	Exit on an error.					 1.1A01&	!	Skip to the end if we are       doing a selective dialogue.	 1.1A01&	!	Handle ESC's in some intelligent fashion.		 1.1A01&1180	\ CALL GENLST(SPAWN.STATUS%)					&1185	\ DEFAULT$="PRINT"						&	\ VALID$="/DISK/PRINT/TERMINAL"					&	\ ON FN.ASK%(22%,DEFAULT$,VALID$,0%,1%)				!1.1A01&		GO TO							!1.1A01&			1187,		! ESC processing	!	!1.1A01&			32000,		! Control Z processing	!	!1.1A01&			1210,		! DISK response		!	!1.1A01&			1200,		! PRINT response	!	!1.1A01&			1190		! TERMINAL response	!	!1.1A01&	!								&	!	Create the summary listing of the       sysgen.		&	!	See what he/she wants to do with it.			&1187	\ GO TO 1150	IF DEV.SYS% = 0%				!1.1A01&	\ GO TO 1145	IF T2780.SUPPORT% <> 0%				!1.1A01&	\ GO TO 1135	IF IBM.SUPPORT% <> 0%				!1.1A01&	\ GO TO 1130	IF COM.SUPPORT% <> 0%				!1.1A01&	\ GO TO 1120							!1.1A01&	!								 1.1A01&	!	Escapes are handled by going back to the latest option	 1.1A01&	!	  that was specified (or defaulted) to being present.	 1.1A01&1190	\ T%=651%							&	\ GOTO 1205							&1200	\ T%=652%							&1205	\ TT%=FN.EXEC.BLOCK%("D      CL...",T%,FALSE%)			&	!								&	!	Print the configuration file.				&1210	\ DEFAULT$="YES"						&	\ ON FN.ASK%(23%,DEFAULT$,"Y",0%,1%) GOTO 1185,32000,1230,1220	&	!								&	!	Ask the Confirmation question.				&	!		ALT to the listing question			&	!		CTRL/Z out					&	!		YES to 1230					&	!		NO to 1220					&1220	\ GOTO 1080							&	!								&	!	Start again from the 'HERALD' question.			&1230	\ Z%=FN.PRINT.HELP.TEXT%(24%,1%)	IF NOT CHANGEMAKER%	&	\ VALID.REGION$="TPS-11 SYSGEN*"				&	\ PUT #6, RECORD 1%						&      	\ CLOSE 6%							&	\ ON ERROR GOTO 19000						&	\ OPEN TRM$(CONFIGURE.DAT$) AS FILE 6%,				&			ORGANIZATION VIRTUAL,				&			MAP GENCOM,					&			RECORDSIZE 8192%				&	\ GET #6, RECORD 1%						&	\ GOTO 1240							&	!								&	!	Let he/she know that they are now in the generation	&	!		phase.						&	!								&	!	Save the AUTOCM region in case they want to skip the	&	!	dialogue at some future time.				&1235	\ CALL RESCOM(SPAWN.STATUS%)					&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	!								 1.1A00&	!	Fin      d out about the configuration file and set up common. 1.1A00&	!	If ^Z was typed, just exit.				 1.1A00&	!								 1.1A00&	\ IF (SPAWN.STATUS% / 8%) = 27%					!1.1A00&	  THEN	  GO TO 1235	IF CHANGEMAKER%				!1.1A00&		\ GO TO 1060						!1.1A00&	!								 1.1A00&	!	If the user typed ESC					 1.1A00&	!	Then:	Go ask for configuration file name again if we	 1.1A00&	!		  are wearing of Change Maker hat.		 1.1A00&	!		Go back to the previous prompt otherwise.	 1.1A00&	!								 1.1A00&	  ELSE	  GO TO 1230	IF CHANGEM      AKER%				!1.1A00&		\ DONT.PUT%=0%						!1.1A00&		\ PRINT							!1.1A00&		\ PRINT "Previous SYSGEN dialogue performed on ";	!1.1A00&			SYSGEN.DATE$; " at "; SYSGEN.TIME$		!1.1A00&		\ SELECTIVE.DIALOGUE%=SPAWN.STATUS%/8%			!1.1A00&		\ ON SELECTIVE.DIALOGUE%+1%				!1.1A00&			GO TO						!1.1A01&				1180,		! NONE		!	!1.1A01&				1080,		! ALL		!	!1.1A01&				1150,		! ATS		!	!1.1A01&				1130,		! TRAX/TL	!	!1.1A01&				1135,		! 3271		!	!1.1A01&				1145		! 2780		!	!1.1A01&	!								 1.1A00&	!	Otherwise, branch to the p      lace we always go Change Maker.1.1A00&	!		Set up to run as SYSGEN.			 1.1A00&	!		Go do whatever dialogue the user requested.	 1.1A00&1240	\ T%=FN.EXEC.BLOCK%("MCR...",655%,FALSE%)			&	!								 1.1A00&	!	Make all the necessary local assignments.		 1.1A00&	!								 1.1A00&	\ IF CHANGEMAKER%						!1.1A00&	  THEN	  DO.ALL.STAGES% = 0%					!1.1A00&		\ DO.SET.UP% = 1%					!1.1A00&		\ GO TO 1280						!1.1A00&	!								 1.1A00&	!	If we are running as Change Maker:			 1.1A00&	!	Then:	Set that we will NOT do all st      ages.		 1.1A00&	!		Indicate that the KERNEL build has been done.	 1.1A00&	!		Continue with the first stage we will do.	 1.1A00&	!								 1.1A00&	  ELSE	  DEFAULT$="YES"					!1.1A00&		\ ON FN.ASK%(25%,DEFAULT$,"Y",0%,1%)			!1.1A00&			GO TO						!1.1A00&				1240,		! ESCape	!	!1.1A00&				32000,		! ^Z		!	!1.1A00&				1250,		! Yes		!	!1.1A00&				1250		! No		!	!1.1A00&	!								&	!	If we are not Change Maker				 1.1A00&	!	Then:	Set default as YES.				 1.1A00&	!		Ask the 'Do all sections' question.		 1.1A00&1250	\       DO.ALL.STAGES%=0%						&	\ DO.ALL.STAGES%=-1% IF ASK.CVT$="YES"				&	\ SOMETHING.DONE%=0%						&	!								&	!	Set the DO.ALL.STAGES% flag if specified.		&1260	\ GOTO 1270 IF DO.ALL.STAGES%<>0%				&	\ DEFAULT$="YES"						&	\ SPAWN.STATUS%=1%						&	\ ON FN.ASK%(26%,DEFAULT$,"Y",0%,1%) GOTO 1240,32000,1270,1275	&	!								&	!	Ask the 'Kernel generation' question.			&	!		ALT to the 'Do all' question			&	!		CTRL/Z out					&	!		Yes does it					&	!		No asks about the 'Kernel utilities'		&1270	\ CALL TIMSUP(2%)		      				&	\ DO.SETUP%=0%							&	\ CALL KERGEN(SPAWN.STATUS%)					&	\ DO.SETUP%=DO.SETUP% OR 1% IF (SPAWN.STATUS% AND 7%)=1%	&	\ SOMETHING.DONE%=1%						&	\ PUT #6, RECORD 1%						&	!								&	!	Generate the Kernel.					&1275	\ PRINT IF (DO.SETUP% AND 1%)=0%				&	\ PRINT "The KERNEL must be successfully generated before any other"+&		" phase." IF (DO.SETUP% AND 1%)=0%			&	\ GOTO 1260 IF ((DO.SETUP% AND 1%)=0%) AND (SPAWN.STATUS%=1%)	&	\ PRINT IF (SPAWN.STATUS% AND 7%)<>1%				&	\ PRINT "? The KERNEL generation h      as failed." IF		&			(SPAWN.STATUS% AND 7%)<>1%			&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	!								&	!	THEY MUST NOT SKIP THE KERNEL UNLESS IT HAS BEEN DONE.	&	!	THEY CAN NOT GO ON IF THE KERNEL BUILD IS NOT DONE.	&1280	\ GOTO 1290	IF (DO.ALL.STAGES%<>0%)				!1.1A00&			OR (CHANGEMAKER%)				!1.1A00&	\ DEFAULT$="YES"						&	\ ON FN.ASK%(27%,DEFAULT$,"Y",0%,1%) GOTO 1280,32000,1290,1340	&	!								&	!	If we are doing all stages of a SYSGEN or we are running 1.1A00&	!	  as Change Maker, just go do this       phase of the build.	 1.1A00&	!	Ask the "Do the Kernel Utilities" question.		&	!		ALT to this question				&	!		CTRL/Z out					&	!		YES generates them				&	!		NO goes to the next section			&1290	\ CALL TIMSUP(3%)						&	\ CALL KUTGEN(SPAWN.STATUS%)					&	\ DO.SETUP%=DO.SETUP% OR 2% IF (SPAWN.STATUS% AND 7%)=1%	&	\ SOMETHING.DONE%=1%						&	\ PUT #6, RECORD 1%						&	\ GOTO 1340							&	!								&	!	Generate the Kernel Utilities.				&1300	\ GOTO 1310	IF (DO.ALL.STAGES% <> 0%)			!1.1A00&			OR (CHANGEMAKER%)				      !1.1A00&	\ DEFAULT$="YES"						&	\ ON FN.ASK%(28%,DEFAULT$,"Y",0%,1%) GOTO 1300,32000,1310,1320	&	!								&	!	If we are doing all stages of SYSGEN or we are running	 1.1A00&	!	  as Change Maker, just go do the build.		 1.1A00&	!	Ask the "Language support" question.			&	!		ALT to this question				&	!		CTRL/Z out					&	!		YES generates the language support		&	!		NO goes to the next section			&1310	\ CALL TIMSUP(4%)						&	\ CALL DATGEN(SPAWN.STATUS%)					&	\ DO.SETUP%=DO.SETUP% OR 8% IF (SPAWN.STATUS% AND 7%      )=1%	&	\ PUT #6, RECORD 1%						&	!								&	!	Generate the language support.				&	!	DATATRIEVE is also included in this section.		&1320	\ GOTO 1380 IF DEV.SYS%<>0%					&	\ GOTO 1380 IF (NUM.OF.NODES%=0%) AND (IBM.SUPPORT%=0%) AND	&			(T2780.SUPPORT%=0%)				&	\ GOTO 1330	IF (DO.ALL.STAGES% <> 0%)			!1.1A00&			OR (CHANGEMAKER%)				!1.1A00&	\ DEFAULT$="YES"						&	\ ON FN.ASK%(29%,DEFAULT$,"Y",0%,1%) GOTO 1320,32000,1330,1380	&	!								&	!	Skip to next section if developement only system.	 1.1A00&	!	Skip to       the next section if not communications is	 1.1A00&	!	  necessary.						 1.1A00&	!	Assume we will do the build if we are doing all sections 1.1A00&	!	  of SYSGEN or we are running as Change Maker.		 1.1A00&	!	Ask the communications facility question.		&	!		ALT to this question				&	!		CTRL/Z out					&	!		YES generation the communications facility	&	!		NO goes to the next section.			&1330	\ CALL TIMSUP(5%)						&	\ DO.SETUP%=DO.SETUP% AND (NOT 16%+64%+128%)			&	\ CALL COMGEN(SPAWN.STATUS%)					&	\ PUT #6, REC      ORD 1%						&	\ GOTO 1380							&	!								&	!	Do the Communications generation.			&1340	\ GOTO 1300 IF DEV.SYS%<>0%					&	\ GOTO 1350	IF (DO.ALL.STAGES% <> 0%)			!1.1A00&			OR (CHANGEMAKER%)				!1.1A00&	\ DEFAULT$="YES"						&	\ ON FN.ASK%(30%,DEFAULT$,"Y",0%,1%) GOTO 1340,32000,1350,1300	&	!								&	!	Skip to the next section if this is a developement only	 1.1A00&	!	  system.						 1.1A00&	!	Go ahead and do the build if we are doing all sections	 1.1A00&	!	  of SYSGEN or we are running as Change Maker.	      	 1.1A00&	!	Ask the "TP executive support" question.		&	!		ALT to this question				&	!		CTRL/Z out					&	!		YES generates the TP executive support		&	!		NO goes on to the next section			&1350	\ CALL TIMSUP(7%)						&	\ CALL TPEGEN(SPAWN.STATUS%)					&	\ DO.SETUP%=DO.SETUP% OR 32% IF (SPAWN.STATUS% AND 7%)=1%	&	\ PUT #6, RECORD 1%						&	\ GOTO 1300							&	!								&	!	Generate the TP executive support.			&1380	\ GOTO 1400 IF DEV.SYS%<>0%					&	\ GOTO 1390	IF (DO.ALL.STAGES% <> 0%)			!1.1A00&			OR (CHANGEMA      KER%)				!1.1A00&	\ DEFAULT$="YES"						&	\ ON FN.ASK%(32%,DEFAULT$,"Y",0%,1%) GOTO 1380,32000,1390,1400	&	!								&	!	Skip to the next section if this is a developement only	 1.1A00&	!	  system.						 1.1A00&	!	Go do the build if we are doing all section of SYSGEN or 1.1A00&	!	  or we are running as Change Maker.			 1.1A00&	!	Ask the "Application Terminal Support" question.	&	!		ALT to this question				&	!		CTRL/Z out					&	!		YES generates the ATS support			&	!		NO goes on to the next step			&1390	\ CALL       TIMSUP(9%)						&	\ CALL ATSGEN(SPAWN.STATUS%)					&	\ DO.SETUP%=DO.SETUP% OR 4% IF (SPAWN.STATUS% AND 7%)=1%	&	\ SOMETHING.DONE%=1%						&	\ PUT #6, RECORD 1%						&	!								&	!	Generate ATS support.					&	!	Put the files generated by SYSGEN on the KERSAV tape.	&1400	\ GOTO 1410 IF (DEV.SYS%=0%) AND ((DO.SETUP% AND 36%)<>36%)	&	\ GOTO 1410 IF (DO.SETUP% AND 11%)<>11%				&	\ GOTO 1410 IF ((DO.SETUP% AND 16%)=0%) AND (NUM.OF.NODES%<>0%)	&	\ GOTO 1410 IF ((DO.SETUP% AND 64%)=0%) AND (IBM.SUPPORT%<>0%)	&	\ G      OTO 1410 IF ((DO.SETUP% AND 128%)=0%) AND (T2780.SUPPORT%<>0%)&	\ CALL SAVTAP(SPAWN.STATUS%) UNLESS (SOMETHING.DONE%=0%) AND	&					((DO.SETUP% AND 16384%)<>0%)	&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ DO.SETUP%=DO.SETUP% OR 16384%					&	\ PUT #6, RECORD 1%						&	\ BREED.COMMAND$="INS [1,54]SETUP/TASK=SETINT/RUN=REM"		&	\ BREED.TASK$="...INS"						&	\ CALL SGNSET(SPAWN.STATUS%)					&	\ GOSUB 20000	IF NOT CHANGEMAKER%				!1.1A00&	\ DONT.PUT%=-1% 						&	\ GOTO 32000 IF (BREED.ERROR% AND 7%)<>1%			&      	!								&	!	Save the SYSGEN data.					&	!	Save the SYSGEN files if the proper work has been done.	&	!	Install SETUP.						&	!	Spawn SETUP.						&1410	\ GOTO 32000							&	!								&	!	SYSGEN complete.					&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$***********************      ***************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR       T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N       C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ SUBSTITUTE.TEXT$(1%)="[1,1]"					&	\ T%=FN.EXEC.BLOCK%("MCR...",650%,FALSE%)			&	\ CALL TIMSUP(100%) IF DONT.PUT%=0%				&	\ PUT #6, RECORD 1% IF DONT.PUT%=0%				&	\ INDX%=864%							&      	\ INDX%=866% IF DEV.SYS%<>0%					&	\ T%=FN.PRINT.HELP.TEXT%(INDX%,1%) 	IF DONT.PUT%=0%		!1.1A00&						AND (NOT CHANGEMAKER%)	!1.1A00&	\ CLOSE T% FOR T%=1% TO 12%					&32010	\ PRINT ">";							&	\ GOTO 32767	IF NOT CHANGEMAKER%				!1.1A00&	\ SPAWN.STATUS% = SPAWN.STATUS% AND 7%				!1.1A00&	\ CALL EXITST BY REF (SPAWN.STATUS%)				!1.1A00&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!**************   D   *************************************************&	!								&	\ END D          Õ} d“Á› 8$        15001	\ DEF FN.ADDRESS$						&	\ ON ERROR GO TO 15050						&	\ B$= "[1,34]KERNEL.MAP"					&	\ OPEN B$ FOR INPUT AS FILE #5%					&15005	\ LINPUT #5%, MAP.LINE$						&	\ MAP.LINE$= EDIT$(MAP.LINE$,2%+4%+32%)				&	\ T%= INSTR(1%,MAP.LINE$,"$CURNM")			&	\ GO TO 15005	IF T%= 0%					&15010	\ T$= RIGHT(MAP.LINE$,T%+6%)					&	\ T%= INSTR (1%,T$,"-R")					&	\ T$= LEFT (T$,T%-1%)						&	\ T$= EDIT$(T$,2%+4%+32%)					&	\ CLOSE #5%							&	\ FN.ADDRESS$ = T$						&	\ GO TO 15080							&	!								&	!	Locate the address    ,  of $CURNM by reading the map		&15050	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ PRINT "? FATAL error in SETSYS"				&	\ PRINT								&	\ PRINT "The kernel image does not contain the system name cell."&	\ PRINT								&	\ ON ERROR GO TO 0						&	!								&15080	\ ON ERROR GO TO 19000						&	\ FNEND								&,         s	.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	A P P L I C A T I O N S    T E R M I N A L		&	!								&	!	S U P P O R T    G E N E R A T I O N			&	!								&	!								&	!								&	SUB	ATSGN1	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	01					 1.1A01&	!	Edit date:	19-Jun-79				 1.1A01&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!**      *************************************************************&	!								&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its        software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!***************************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL ATSGN1(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!		      						&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	03-Apr-79 KMR	Added code to do CCB calculation 1.1A00&	!				  for DZ's and DUP's based on	 1.1A00&	!				  modem support.		 1.1A00&	!	V1.1A01	19-Jun-79 KMR	Put       in code to read a table for	 1.1A01&	!				  baud rates.			 1.1A01&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This sub-program generates the Applications Terminal	&	!	Support.						&	!								&	!***************************************************************&300	!$*********************************************************      *****&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    3		Primary data file output		&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!			      					&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&7      50	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!****************      ***********************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$****      **********************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(NUM.OF.TPS%+1%)		&	\ OPEN "ATSDB.MAC" FOR OUTPUT AS FILE 3%			&	\ T%=FN.PRINT.BLOCK%(3%,800%)					&	\ SUBSTITUTE.TEXT$(3%)="TT.V62"					&	\ TERMINAL.NUMBER%      =0%						&	\ NUM.OF.VT62%=0%						&	\ NUM.OF.VT52%=0%						&	\ NUM.OF.VT62.LINES%=0%						&	\ MAX.62.ON.ANY.LINE%=0%					&	\ APR1%=0%							&	\ FOR DUP.UNIT%=0% TO NUM.OF.DUPS%-(NUM.OF.DUPS.IN.COMM%+1%)	&		\ NUM.OF.VT62.LINES%=NUM.OF.VT62.LINES%+1%		&		\ NUM.OF.VT62%=NUM.OF.VT62%+DUP.TERM.COUNT%(DUP.UNIT%)	&		\ MAX.62.ON.ANY.LINE%=DUP.TERM.COUNT%(DUP.UNIT%) IF	&			DUP.TERM.COUNT%(DUP.UNIT%)>MAX.62.ON.ANY.LINE%	&		\ TEMP=((40%+(46%*DUP.TERM.COUNT%(DUP.UNIT%)))/64.)+.99999&		\ APR1%=APR1%+TEMP					&		\ FOR TT      %=1% TO DUP.TERM.COUNT%(DUP.UNIT%)		&			\ TERMINAL.NUMBER%=TERMINAL.NUMBER%+1%		&			\ SUBSTITUTE.TEXT$(3%)="V62"			&			\ GOSUB 12000					&			\ SUBSTITUTE.TEXT$(3%)="TT.V62"			&			\ T%=FN.PRINT.BLOCK%(3%,802%)			&		\ NEXT TT%						&	\ NEXT DUP.UNIT%						&	\ DZ.COUNT%=1%							&	\ DZ.COUNT%=NUM.OF.KMC.DZS% UNLESS NUM.OF.KMC.DZS%=0%		&	\ DZ.COUNT%=DZ.COUNT%+NUM.OF.DZS.IN.SE%				&	\ GOTO 1020 IF NUM.OF.DZS%=NUM.OF.DZS.IN.SE%			&	\ DZ.LINE.COUNT%=NUM.OF.ATS.DZ.LINES%				&	\ FOR DZ.UNIT%=NUM.OF.DZS.IN.SE% TO DZ.      COUNT%-1%		&		\ FOR CHNL%=0% TO 7%					&		    \ GOTO 1020 IF DZ.LINE.COUNT%=0%			&		    \ NUM.OF.VT62.LINES%=NUM.OF.VT62.LINES%+1% IF		&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=0%	&		    \ TEMP=((40%+(46%*DZ.VT62.CT%(DZ.UNIT%,CHNL%)))/64.)+.99999&		    \ APR1%=APR1%+TEMP					&		    \ FOR T.TERM%=1% TO DZ.VT62.CT%(DZ.UNIT%,CHNL%)	&			\ NUM.OF.VT62%=NUM.OF.VT62%+1% IF 		&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=0%	&			\ NUM.OF.VT52%=NUM.OF.VT52%+1% IF		&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)<>0%	&			\ MAX.62.ON.ANY.LINE%=DZ.VT6      2.CT%(DZ.UNIT%,CHNL%) IF&			  DZ.VT62.CT%(DZ.UNIT%,CHNL%)>MAX.62.ON.ANY.LINE%&			\ TERMINAL.NUMBER%=TERMINAL.NUMBER%+1%		&			\ SUBSTITUTE.TEXT$(3%)="V62" IF			&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=0%	&			\ SUBSTITUTE.TEXT$(3%)="V52" IF			&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=1%	&			\ SUBSTITUTE.TEXT$(3%)="L36" IF			&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=2%	&			\ SUBSTITUTE.TEXT$(3%)="L18" IF 		&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=3%	&			\ GOSUB 12000					&			\ SUBSTITUTE.TEXT$(3%)="TT."+SUBSTITUTE.TEXT$(3%)&			\ T%=FN.      PRINT.BLOCK%(3%,802%)			&		    \ NEXT T.TERM%					&		    \ DZ.LINE.COUNT%=DZ.LINE.COUNT%-1%			&		\ NEXT CHNL%						&	\ NEXT DZ.UNIT%							&	!								&	!	Open and start filling up the ATSDB.MAC file.		&1020	\ T%=FN.PRINT.BLOCK%(3%,804%)					&	\ CLOSE 3%							&	\ NUM.OF.TERMS%=TERMINAL.NUMBER%				&	\ SUBSTITUTE.TEXT$(5%)=FN.INT.TO.OCT$(TERMINAL.NUMBER%)		&	!								&	!	Finish off and close the ATSDB.MAC file.		&1025	\ GOTO 1027 UNLESS FINE.TUNE%=FALSE%				&	\ ATS.RDBS%=2%							&	\ ATS.SDBS%=0%							&	\ AT      S.LDBS%=(2%*NUM.OF.VT62.LINES%)+NUM.OF.VT62%+		&				(NUM.OF.TPS%*5%)			&	\ ATS.CCBS%=(2%*NUM.OF.VT62.LINES%)+MAX.62.ON.ANY.LINE%		&	!								&	!	Set up the ATS buffer requirements if fine tuning 	&	!	was not done.						&	!								 1.1A00&	\ ATS.CCBS% = ATS.CCBS% + 1%					!1.1A00&		IF DUP.MODEM$( T% ) = "1"				!1.1A00&			FOR T% = 0% TO NUM.OF.KMC.DUPS%-1%		!1.1A00&	!								 1.1A00&	!	Add one CCB to the ATS CCB count for each DUP which	 1.1A00&	!	  has modem support.					 1.1A00&	!								 1.1A00&	\ FOR DZ.U      NIT% = 0% TO DZ.LINE.COUNT%-1%			!1.1A00&		\ T% = DZ.UNIT% / 8%					!1.1A00&		\ TT% = DZ.UNIT% - T% * 8%				!1.1A00&	!								 1.1A00&	!	For each DZ line:					 1.1A00&		!							 1.1A00&		!	Calculate the line.				 1.1A00&		!	Calculate the channel.				 1.1A00&		!							 1.1A00&		\ ATS.CCBS% = ATS.CCBS% + 1%				!1.1A00&			IF DZ.MODEM$( T%, TT% ) = "1"			!1.1A00&		\ NEXT DZ.UNIT%						!1.1A00&		!							 1.1A00&		!	Add one to the number of CCB's for each DZ	 1.1A00&		!	  line/channel with mode support.		 1.1A00&      1027	\ SUBSTITUTE.TEXT$(29%)=ASK.HELP$(HELP.INDEX%(1332%*2%))	&	\ SUBSTITUTE.TEXT$(30%)=FN.INT.TO.OCT$(MAX.62.ON.ANY.LINE%)	&	\ OPEN "[155,10]EXPBFT.MAC" FOR OUTPUT AS FILE 3%		&	\ T%=FN.PRINT.BLOCK%(3%,1330%)					&	\ CLOSE 3%							&	!								&	!	SET UP THE POLLING ALGORITHM STUFF.			&1030	\ OPEN "CETAB.MAC" FOR OUTPUT AS FILE 3%			&	\ SUBSTITUTE.TEXT$(4%)=TRM$(HERALD.TEXT$)			&	\ T%=FN.PRINT.BLOCK%(3%,806%)					&	\ SUBSTITUTE.TEXT$(5%)=FN.INT.TO.OCT$(NUM.OF.TERMS%)		&	\ T%=FN.PRINT.BLOCK%(3%,808%)					&	\       SUBSTITUTE.TEXT$(6%)=FN.INT.TO.OCT$(ATS.CCBS%)		&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(ATS.LDBS%)		&	\ SUBSTITUTE.TEXT$(8%)=FN.INT.TO.OCT$(ATS.SDBS%)		&	\ SUBSTITUTE.TEXT$(9%)=FN.INT.TO.OCT$(ATS.RDBS%)		&	\ T%=FN.PRINT.BLOCK%(3%,810%)					&	\ SUBSTITUTE.TEXT$(27%)=""					&	\ SUBSTITUTE.TEXT$(26%)=""					&	\ SUBSTITUTE.TEXT$(26%)=","+ATS.V62$ IF ATS.V62$="V62"		&	\ SUBSTITUTE.TEXT$(27%)=","+ATS.V52$ IF ATS.V52$="L18"		&!	\ SUBSTITUTE.TEXT$(27%)=SUBSTITUTE.TEXT$(27%)+",TUD" IF		&!			IBM.SUPPORT%<>0%				&	\       SUBSTITUTE.TEXT$(60%)=ATS.V62$ IF ATS.V62$="V62"		&	\ SUBSTITUTE.TEXT$(61%)=ATS.V52$ IF ATS.V52$="L18"		&	\ SUBSTITUTE.TEXT$(28%)=ATS.DCP$				&	\ SUBSTITUTE.TEXT$(29%)=ATS.KSA$				&	\ SUBSTITUTE.TEXT$(30%)=ATS.KDZ$				&	\ SUBSTITUTE.TEXT$(31%)=ATS.KDP$				&	\ SUBSTITUTE.TEXT$(32%)=EDIT$(ATS.DLC$,6%)			&!	\ SUBSTITUTE.TEXT$(32%)=SUBSTITUTE.TEXT$(32%)+",BSD" IF		&!			IBM.SUPPORT%<>0%				&	\ SUBSTITUTE.TEXT$(32%)=SUBSTITUTE.TEXT$(32%)+">"		&	\ SUBSTITUTE.TEXT$(33%)=EDIT$(ATS.DDM$,6%)			&!	\ SUBSTITUTE.TEXT$(33      %)=SUBSTITUTE.TEXT$(33%)+",BU" IF		&!			IBM.SUPPORT%<>0%				&	\ SUBSTITUTE.TEXT$(33%)=SUBSTITUTE.TEXT$(33%)+">"		&	\ T%=FN.PRINT.BLOCK%(3%,812%)					&	\ T%=FN.PRINT.BLOCK%(3%,813%)					&	\ T%=FN.PRINT.BLOCK%(3%,814%) IF ATS.V62$="V62"			&	\ T%=FN.PRINT.BLOCK%(3%,815%) IF ATS.V52$="L18"			&!	\ T%=FN.PRINT.BLOCK%(3%,780%) IF IBM.SUPPORT%<>0%		&	\ T%=FN.PRINT.BLOCK%(3%,816%) IF ATS.DCP$="DCP"			&!	\ T%=FN.PRINT.BLOCK%(3%,781%) IF IBM.SUPPORT%<>0%		&	\ T%=FN.PRINT.BLOCK%(3%,819%) IF (ATS.KSA$="SA") OR (ATS.KSA$      ="KSA")&	!								&	!	Open and do the initial setup of the CETAB.MAC file.	&1040	\ KMC.UNIT%=0%							&	\ GOTO 1060 IF ATS.KDP$<>"KDP"					&	\ T%=FN.PRINT.BLOCK%(3%,817%)					&	\ ATS.KMC%=0%							&	\ SUBSTITUTE.TEXT$(10%)=FN.INT.TO.OCT$(ATS.KMC%)		&	\ SUBSTITUTE.TEXT$(11%)=TRM$(KMC.VEC$(KMC.UNIT%))		&	\ SUBSTITUTE.TEXT$(12%)=TRM$(KMC.CSR$(KMC.UNIT%))		&	\ SUBSTITUTE.TEXT$(13%)=TRM$(KMC.PRI$(KMC.UNIT%))		&	\ T%=FN.PRINT.BLOCK%(3%,818%)					&	\ ATS.DUP%=-1%							&	\ TIME.OUT% = VAL( FN.TEXT.LINE$( 823% ) )	      		!1.1A01&	\ GOSUB 10100							!1.1A01&	\ SUBSTITUTE.TEXT$(38%)=FN.INT.TO.OCT$(TIME.OUT%)		&	\ FOR DUP.UNIT%=0% TO NUM.OF.DUPS%-(NUM.OF.DUPS.IN.COMM%+1%)	&		\ ATS.DUP%=ATS.DUP%+1%					&		\ SUBSTITUTE.TEXT$(14%)=FN.INT.TO.OCT$(ATS.DUP%)	&		\ SUBSTITUTE.TEXT$(15%)=DUP.PLEX$(DUP.UNIT%)		&		\ SUBSTITUTE.TEXT$(16%)=TRM$(DUP.CSR$(DUP.UNIT%))	&		\ T%=FN.PRINT.BLOCK%(3%,820%)				&	\ NEXT DUP.UNIT%						&	\ KMC.UNIT%=KMC.UNIT%+1%					&	!								&	!	Insert the KMC/DUP control sections.			&1060	\ GOTO 1070 IF ATS.KDZ$      <>"KDZ"					&	\ T%=FN.PRINT.BLOCK%(3%,822%)					&	\ UNITC%=0%							&	\ ATS.KMC%=0%							&	\ TEST.KMC%=0%							&	\ ATS.DZ%=-1%							&	\ DZ.LINE.COUNT%=NUM.OF.ATS.DZ.LINES%				&	\ FOR DZ.UNIT%=NUM.OF.DZS.IN.SE% TO NUM.OF.DZS%-1%		&		\ GOTO 1070 IF DZ.LINE.COUNT%=0%			&		\ ATS.DZ%=ATS.DZ%+1%					&		\ UNITC%=UNITC%+1%					&		\ SUBSTITUTE.TEXT$(10%)=FN.INT.TO.OCT$(ATS.KMC%)	&		\ SUBSTITUTE.TEXT$(11%)=TRM$(KMC.VEC$(KMC.UNIT%))	&		\ SUBSTITUTE.TEXT$(12%)=TRM$(KMC.CSR$(KMC.UNIT%))	&		\ SUBSTITUTE.TEXT$(13%)=TRM      $(KMC.PRI$(KMC.UNIT%))	&		\ T%=FN.PRINT.BLOCK%(3%,824%) IF ATS.KMC%=TEST.KMC%	&		\ TEST.KMC%=TEST.KMC%+1% IF TEST.KMC%=ATS.KMC%		&		\ FOR CHNL%=0% TO 7%					&			\ GOTO 1070 IF DZ.LINE.COUNT%=0%		&			\ SUBSTITUTE.TEXT$(40%)=FN.INT.TO.OCT$(		&					(8%*ATS.DZ%)+CHNL%)		&			\ GOSUB 11000					&			\ SUBSTITUTE.TEXT$(18%)=","+TRM$(DZ.CSR$(DZ.UNIT%))&			\ SUBSTITUTE.TEXT$(18%)="" IF CHNL%<>0%		&			\ ASK.RESP$ = FN.TEXT.LINE$( 821% )		!1.1A01&			\ T$	= "/"					!1.1A01&				+ NUM1$(DZ.BAUD.RATE%(DZ.UNIT%,CHNL%))	!1.1A      01&				+ "%"					!1.1A01&			\ T% = INSTR( 1%, ASK.RESP$, T$ )		!1.1A01&			\ T% = INSTR( T%, ASK.RESP$, "%" ) + 1%		!1.1A01&			\ TIME.OUT% = INSTR( T%, ASK.RESP$, "/" ) - 1%	!1.1A01&			\ TIME.OUT% = VAL( SEG$( ASK.RESP$, T%,		!1.1A01&							TIME.OUT% ) )	!1.1A01&			\ GOSUB 10100					!1.1A01&			\ SUBSTITUTE.TEXT$(38%)=FN.INT.TO.OCT$(TIME.OUT%)&			\ SUBSTITUTE.TEXT$(38%)="0" IF 			&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)<>0%	&			!						 1.1A01&			!	Get the table of baud rate vs. time out	 1.1A01&			!	  from the dial      ogue file.		 1.1A01&			!	Set up the baud rate we want, framed by	 1.1A01&			!	  "/" and "%".				 1.1A01&			!	Find the baud rate in the list.		 1.1A01&			!	Find the start of the time-out.		 1.1A01&			!	Find the end of the time-out.		 1.1A01&			!	Extract the time-out.			 1.1A01&			!	Move it to the right place in the word.	 1.1A01&			!	Convert the time-out to octal.		 1.1A01&			!						 1.1A01&			\ T%=FN.PRINT.BLOCK%(3%,826%)			&			\ DZ.LINE.COUNT%=DZ.LINE.COUNT%-1%		&		\ NEXT CHNL%						&		\ KMC.UNIT%=KMC.UNIT      %+1% IF UNITC%=6%			&		\ ATS.KMC%=ATS.KMC%+1% IF UNITC%=6%			&		\ GOTO 1070 IF KMC.UNIT%=NUM.OF.KMCS%			&		\ UNITC%=0% IF UNITC%=6%				&	\ NEXT DZ.UNIT%							&	!								&	!	Put in the support for the KMC/DZS			&1070	\ GOTO 1500							&	\ GOTO 1500 IF IBM.SUPPORT%=0%					&	\ DUP.UNIT%=NUM.OF.DUPS%-NUM.OF.DUPS.IN.COMM%			&	\ IBM.UNIT%=0%							&	\ T%=FN.PRINT.BLOCK%(3%,782%)					&	\ FOR DUP.UNIT%=DUP.UNIT% TO NUM.OF.DUPS%-1%			&		\ SUBSTITUTE.TEXT$(80%)=FN.INT.TO.OCT$(IBM.UNIT%)	&		\ SUBSTITUTE.TEXT$(81%)=DU      P.VEC$(DUP.UNIT%)		&		\ SUBSTITUTE.TEXT$(82%)=DUP.CSR$(DUP.UNIT%)		&		\ SUBSTITUTE.TEXT$(83%)=DUP.PRI$(DUP.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(3%,783%)				&		\ SUBSTITUTE.TEXT$(84%)="00"				&		\ SUBSTITUTE.TEXT$(95%)=FN.INT.TO.OCT$(256%*2%*IBM.UNIT%)&		\ T%=FN.PRINT.BLOCK%(3%,784%)				&		\ IBM.UNIT%=IBM.UNIT%+1%				&	\ NEXT DUP.UNIT%						&	!								&	!	Do some 3271 stuff if necessary.			&1500	\ GOTO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S       U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&10100	!$************************************************************** 1.1A01&	!								 1.1A01&	!								 1.1A01&	!	Move the time-out value to the correct position in	 1.1A01&	!								 1.1A01&	!		in the KERMC file macro.			 1.1A01&	!								 1.1A01&	!*************************************************************** 1.1A01&							      		!1.1A01&	\ TIME.OUT% = TIME.OUT% * 128%					!1.1A01&	\ TIME.OUT% = 512%	IF TIME.OUT% < 512%			!1.1A01&	\ TIME.OUT% = TIME.OUT% + 9%					!1.1A01&	!								 1.1A01&	!	Shift it up to where it belongs.			 1.1A01&	!	Set it to 512 if less than 512.				 1.1A01&	!	  (This will give us a time-out of at least 4 seconds.)	 1.1A01&	!	Add the constant 9 to the end.				 1.1A01&	!								 1.1A01&	\ RETURN							!1.1A01&11000			\ SUBSTITUTE.TEXT$(17%)="30" IF			&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=50%	&			\ SUBSTITUTE.TEXT      $(17%)="430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=75%	&			\ SUBSTITUTE.TEXT$(17%)="1030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=110%	&			\ SUBSTITUTE.TEXT$(17%)="1430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=134%	&			\ SUBSTITUTE.TEXT$(17%)="2030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=150%	&			\ SUBSTITUTE.TEXT$(17%)="2430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=300%	&			\ SUBSTITUTE.TEXT$(17%)="3030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=600%	&			\ SUBSTITUTE.TEXT$(17%)="3430" IF		&				DZ.BAUD.RATE%(DZ.      UNIT%,CHNL%)=1200%	&			\ SUBSTITUTE.TEXT$(17%)="4030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=1800%	&			\ SUBSTITUTE.TEXT$(17%)="4430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=2000%	&			\ SUBSTITUTE.TEXT$(17%)="5030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=2400%	&			\ SUBSTITUTE.TEXT$(17%)="5430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=3600%	&			\ SUBSTITUTE.TEXT$(17%)="6030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=4800%	&			\ SUBSTITUTE.TEXT$(17%)="6430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=7200%	&			\ SUBSTIT      UTE.TEXT$(17%)="7030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=9600%	&			\ RETURN					&	!								&	!	Set up the Baud Rate.					&12000	\ T$=NUM1$(TERMINAL.NUMBER%)					&	\ FOR T%=1% TO (3%-LEN(T$))					&		\ T$="0"+T$						&	\ NEXT T%							&	\ SUBSTITUTE.TEXT$(2%)=T$+SUBSTITUTE.TEXT$(3%)			&	\ RETURN							&	!								&	!	Generate the terminal name.				&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I       S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  syste      m default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$*******   Æ  *******************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDÆ         (9“Á› 8$ÛK      1	!***************************************************************&	!								&	!								&	!	C O P Y    S Y S G E N    F I L E S    F R O M		&	!								&	!		 R E L E A S E        K I T			&	!								&	!								&	!								&	!	Program:	COPYFILES				&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	03-Apr-79				 1.1A00&	!	Author(s):	WJB					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!**********************************************      *****************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		 COPYRIGHT (c) 1977,1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!************************************************      ***************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	V01-00	060178	  WJB	Version 1.0 Release		&	!	V1.1A00	03-Apr-79 KMR	Added prompt and copytape call	 1.1A00&	!				  for the TRAX/2780 communica-	 1.1A00&	!				  tions option.			 1.1A00&	!								&	!*****************      **********************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	------------------------------      --------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary       working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	12000		General Tape Copy Routine		&	!								&	!***********************************************      ****************&750	!$**************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&      	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!**********************************************************      *****&901	\ DIM TAPES.ALLOCATED$(15)					&	!								&	!	List of tapes to be allocated or deallocated.		&902	\ DIM SEQ.KEYS$(99)						&	!								&	!	Array to hold sequence keys of components to be		&	!	  dropped during the copy operation.			&950	!$**************************************************************&	!								&	!								&	!		R E C O R D    M A P ( S )			&	!								&	!								&	!***************************************************************&1000	!$***************************************************      ***********&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\  TRUE% = -1%							&	\ FALSE% =  0%							&	\ GO SUB 14700							&	\ GO TO 1030	IF INDIRECTED% = TRUE%				&	!								&	!	Set up standard default error trap			&	!	Set logical constants.					&	!	Check for IND type running.				&	!	If indirect, skip herald printout.			&1010	\ VER.EDIT.NUM$ = "V1.1A"				      	!1.1A00&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "COPYFILES	"; VER.EDIT.NUM$; "   ";		&	\ PRINT								&	\ PRINT "Copy Files From Distribution Kit To SYSGEN Disk"	&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ TE% = FN.SETUP.DIALOGUE%					&	\ PROC.MODEL% = 7%						&	\ CPT.INSTALLED% = FALSE%					&	!								&	!	Set up the proper dialogue processing.			&	!	Force processor to 11/70 always.			&	!	Flag COPYTAPE as not installed.				&1900	!      $**************************************************************&	!								&	!								&	!	A S K    I F    A N Y    C O M P O N E N T S    T O	&	!								&	!			  S K I P				&	!								&1910	\ ON FN.ASK%(1050%,		! Query text		!	&		     "NO",		! Default to NO		!	&		     "Y",		! YES/NO response	!	&		     FALSE%,		! No range checking	!	&		     1%		       )! Level = 1		!	&	  GO TO								&		 1900,			! ESC response		!	&		32500,			! CTRL/Z response	!	&		 1920,			! YES response		!	&		 1930			! NO response		!	&	!					      			&	!	Ask about components to be skipped on ANY tape.		&1920	\ SUBSTITUTE.TEXT$(2%) = "/SKIP"				&	\ GO TO 1950							&	!								&	!	Set flag to ask question on each tape process.		&1930	\ SUBSTITUTE.TEXT$(2%) = ""					&	!								&	!	Show that all components are to be accepted.		&1980	\ TE% = FN.EXEC.BLOCK%("MCR...",				&			       1100%,					&			       FALSE%	)				&	\ CPT.INSTALLED% = TRUE%					&	!								&	!	Install the COPYTAPE routine.				&	!	Mark it as installed.					&1950	\ SUBSTITUTE.TEXT$(4%) = ""		      			&	\ SUBSTITUTE.TEXT$(4%) = "/DEBUG"				&		IF DEBUG.FLAG% = TRUE%					&	!								&	!	Pass on debugging flag if necessary to COPYTAPE		&1960	!$**************************************************************&	!								&	!								&	!	A S K    F O R    C P U    T Y P E			&	!								&	!								&	\ SUBSTITUTE.TEXT$(1%) = "sysgen"				&	\ ON FN.ASK%(1096%,		! query text index	!	&		     "70",		! Default to 11-70	!	&		     "/34/60/70",	! The choices		!	&		     FALSE%,		! no checking needed	!	&		     1%		       )! Le      vel = 1		!	&	  GO TO								&		 1900,			! ESC			!	&		32500,			! CTRL/Z		!	&		 1970,			! 34			!	&		 1970,			! 60			!	&		 1970			! 70			!	&	!								&	!	Ask for the type of CPU for which this kit is being	&	!	  bilt.							&1970	\ CPU.TYPE$ = ASK.CVT$						&	!								&	!	Save the selection for later processing.		&2000	!$**************************************************************&	!								&	!								&	!	P R O C E S S    REQUIRED FILES	   T A P E		&	!								&	!								&	\ ON FN.ASK%(	1063%,		! Query text i      ndex	!	&			"YES",		! YES if default	!	&			"Y",		! YES/NO response	!	&			FALSE%,		! No checking		!	&			1%	       )! Level = 1		!	&	  GO TO								&		 2000,			! ESC			!	&		32500,			! CTRL/Z		!	&		 2100,			! YES			!	&		 3000			! NO			!	&	!								&	!	Ask if REQUIRED FILES tape is to be processed.		&2100	\ TAPE.NUMBER% = 3%						&	\ GO SUB 12000			! Copy in the tape	!	&	!								&	!	Set the tape number.					&	!	Process the tape.					&3000	!$**************************************************************&	!						      		&	!								&	!	P R O C E S S   BASIC-PLUS 2	O P T I O N		&	!								&	!								&3010	\ ON FN.ASK%(1065%,		! Query index number	!	&		     "NO",		! Default to NO		!	&		     "Y",		! YES/NO response	!	&		     FALSE%,		! No range checking	!	&		     1%		       )! Level = 1		!	&	  GO TO								&		 3010,			! ESC response		!	&		32500,			! CTRL/Z response	!	&		 3030,			! YES response		!	&		 3020			! NO response		!	&	!								&	!	Ask if option tape was purchased.			&3020	\ BASIC.PLUS.2.OPTION% = FALSE%					&	\ GO TO       4000							&	!								&	!	Signal option was not bought.				&	!	Skip to process COBOL.					&3030	\ BASIC.PLUS.2.OPTION% = TRUE%					&	\ TAPE.NUMBER% = 5%						&	\ GO SUB 12000			! Process the tape	!	&	!								&	!	Signal presence of BASIC-PLUS 2.			&	!	Set the tape number.					&	!	Process the tape.					&4000	!$**************************************************************&	!								&	!								&	!	P R O C E S S    COBOL-11	O P T I O N		&	!								&	!								&4010	\ ON FN.ASK%(1066%,		! Query index number	!	&      		     "NO",		! NO is the default	!	&		     "Y",		! YES/NO response	!	&		     FALSE%,		! No range checking	!	&		     1%		       )! Level = 1		!	&	  GO TO								&		 4010,			! ESC response		!	&		32500,			! CTRL/Z response	!	&		 4030,			! YES response		!	&		 4020			! NO response		!	&	!								&	!	Ask if the COBOL Language Option tape is present.	&4020	\ COBOL.OPTION% = FALSE%					&	\ GO TO 5000							&	!								&	!	Signal the option as missing.				&	!	Skip to the communications section.			&4030	\ COBOL.OPTION      % = TRUE%						&	\ TAPE.NUMBER% = 6%						&	\ GO SUB 12000			! Process the tape	!	&	!								&	!	Flag COBOL as present and processed.			&	!	Set the proper tape number.				&	!	Process the tape.					&4900	!$**************************************************************&	!								&	!								&	!	V E R I F Y    P R E S E N C E    O F    A T		&	!								&	!		L E A S T    O N E    L A N G U A G E		&	!								&	!								&4910	\ GO TO 5000							&		IF BASIC.PLUS.2.OPTION%	= TRUE%				&		OR        COBOL.OPTION% = TRUE      %				&	\ TE% = FN.PRINT.HELP.TEXT%(1054%,1%)				&	\ GO TO 3000							&	!								&	!	Skip out if at least one of the languages was 		&	!	  processed.						&	!	Otherwise, warn him of necessity and return for option	&	!	  processing.						&5000	!$**************************************************************&	!								&	!								&	!	P R O C E S S    TRAX/TL COMMUNICATIONS   O P T.	&	!								&	!								&5010	\ ON FN.ASK%(1067%,		! Query text index	!	&		     "NO",		! NO is default		!	&		     "Y",		! YES/NO resp      onse	!	&		     FALSE%,		! No range checking	!	&		     1%		       )! Level = 1		!	&	  GO TO								&		 5000,			! ESC response		!	&		32500,			! CTRL/Z response	!	&		 5030,			! YES response		!	&		 6000			! NO response		!	&	!								&	!	Ask if TRAX-to-TRAX communications option purchased.	&5030	\ TAPE.NUMBER% = 7%						&	\ GO SUB 12000			! Process the tape	!	&	!								&	!	Set up the tape number and process it.			&6000	!$**************************************************************&	!								&	!								&	!	P R       O C E S S    TRAX/3271  COMMUNICATIONS  O P T .	&	!								&	!								&6010	\ ON FN.ASK%(1068%,		! Query text index	!	&		     "NO",		! NO is the default	!	&		     "Y",		! YES/NO response	!	&		     FALSE%,		! No range checking	!	&		     1%		       )! Level = 1		!	&	  GO TO								&		 6000,			! ESC response		!	&		32500,			! CTRL/Z response	!	&		 6030,			! YES response		!	&		 7000			! NO response		!	&	!								&	!	Ask if TRAX-to-IBM Communications Option purchased.	&6030	\ TAPE.NUMBER% = 8%						&	\ GO SUB 12      000			! Process the tape.	!	&	!								&	!	Set the tape number and process the tape.		&	!	Clean up the holding UFD.				&7000	!$************************************************************** 1.1A00&	!								 1.1A00&	!								 1.1A00&	!	P R O C E S S    T R A X / 2 7 8 0    O P T I O N	 1.1A00&	!								 1.1A00&	!								 1.1A00&									!1.1A00&	\ ON FN.ASK%(	1069%,		! Query number		!	!1.1A00&			"NO",		! Default value		!	!1.1A00&			"Y",		! Accept Yes or No	!	!1.1A00&			FALSE%,		! N/A			!	!1.1A00&			1%	)	! Q      uery level - normal	!	!1.1A00&		GO TO							!1.1A00&			7000,		! <ESC> processing	!	!1.1A00&			32500,		! Control Z processing	!	!1.1A00&			7010,		! Yes			!	!1.1A00&			9000		! No			!	!1.1A00&	!								 1.1A00&	!	Ask the user if he wishes to process the TRAX/2780	 1.1A00&	!	  communications option tape. Branch as shown.		 1.1A00&7010	\ TAPE.NUMBER% = 9%						!1.1A00&	\ GOSUB 12000							!1.1A00&	!								 1.1A00&	!	Set the tape number to 9 for the TRAX/2780 communica-	 1.1A00&	!	  tions tape and go spawn COPYT      APE to copy in the tape.	 1.1A00&9000	!$**************************************************************&	!								&	!								&	!	P R O C E S S    CHANGE TAPE				&	!								&	!								&9010	\ TAPE.NUMBER% = 4%						&	\ GO SUB 12000			! Process the tape	!	&	!								&	!	Set the tape number and process the tape.		&3100	!$**************************************************************&	!								&	!								&	!	U P D A T E    BASIC-PLUS 2    C O M P I L E R		&	!								&	!								&3110	\ STATUS% = FN.EXEC.BLOCK%("M      CR...",	! The MCR does it !	&				  1007%,	! The commands	  !	&				  FALSE%       )! Any error quits !	&	\ IF STATUS% <> 1%						&	  THEN								&		  PRINT "? BASIC-PLUS 2 compiler was not updated."	&	!								&	!	Perform the AUTOZAP processing of BASIC-PLUS 2.		&	!	If anything goes wrong, signal with error message.	&9800	!$**************************************************************&	!								&	!								&	!	R E L E A S E    N O T E    P R I N T I N G		&	!								&	!								&	\ ON FN.ASK%(1097%,		! Query t      ext index	!	&			"NO",		! NO is default		!	&			"Y",		! YES/NO response	!	&			FALSE%,		! No length checking	!	&			1%	       )! Level is 1		!	&	  GO TO								&		 9800,			! ESC			!	&		32500,			! CTRL/Z		!	&		 9810,			! YES			!	&		 9900			! NO			!	&	!								&	!	Ask if Release and Update notes are to be printed.	&9810	\ TE% = FN.EXEC.BLOCK%("MCR...",				&			       1098%,					&			       TRUE%	)				&	!								&	!	Spool the [200,200]RELEASE.NTS and [200,200]UPDATE.NTS	&	!	  files to the printer.					&9900	!$******      ********************************************************&	!								&	!								&	!	C L E A N    U P   CHANGE TAPE    H O L D I N G		&	!								&	!			   U F D				&	!								&	!								&9910	\ TE% = FN.EXEC.BLOCK%("MCR...",				&			       1102%,					&			       FALSE%	)				&	\ CPT.INSTALLED% = FALSE%					&	\ GO TO 32000							&	!								&	!	Remove the installed COPYTAPE routine.			&	!	Flag it as removed.					&	!	Go "chain" to the SYSGEN program.			&12000	!$********************************************************      ******&	!								&	!								&	!	D R I V E    T H E    COPYTAPE    P R O G R A M		&	!								&	!								&12010	\ SUBSTITUTE.TEXT$(1%) = NUM1$(TAPE.NUMBER%)			&	\ SUBSTITUTE.TEXT$(5%) = "/CPU:" + CPU.TYPE$			&	\ STATUS% = FN.EXEC.BLOCK%("...CTP",				&			       1101%,					&			       FALSE%	)				&	!								&	!	Set the tape number in the first slot.			&	!	The SKIP flag is already set in thesecond slot.		&	!	Set the tape holding UFD in the 3rd slot.		&	!	The debug switch is already set in the 4th slot.	&	!	The CP      U type is in the fifth slot.			&	!	Execute the COPYTAPE routine.				&	!								&	\ RETURN	IF STATUS% = 1%					&	!								&	!	Exit the routine if COPYTAPE did not encounter an error	&	!	  or a CTRL/Z response.					&12020	\ TE% = FN.EXEC.BLOCK%("MCR...",				&			       1102%,					&			       FALSE%	)				&	\ CLOSE 12%							&	\ GO TO 32767							&	!								&	!	Remove the INSTALLed copy of COPYTAPE.			&	!	Close the dialogue help text file.			&	!	Exit the program.					&14700	!$*************************************      *************************&	!								&	!								&	!	G E T    P O S S I B L E    M C R    C O M M A N D	&	!								&	!								&	!	RETURNS:	For a single program, PROG.NAME$ 	&	!			  contains the file name.  		&	!			  ONLY.ONE.PROGRAM% is then set TRUE.	&	!			If @ appears, USE.INDIRECT% is set TRUE	&	!			  and the indirect input command file	&	!			  name is placed in CMD.FILE$.		&	!								&	!								&	!***************************************************************&14710	\ COMMAND.BUFR$ = SPACE$(80%)					&	\ I      NDIRECTED% = FALSE%						&	!								&	!	Reserve space for up to 80 characters.			&14720	\ CALL GETMCR BY REF (COMMAND.BUFR$, RETURN.RESULT%)		&	\ RETURN	IF RETURN.RESULT% < 1%				&	\ INDIRECTED% = TRUE%						&	!								&	!	Set if command line is there.				&	!	If not, skip out of processing.				&14730	\ COMMAND.LINE$ =						&		EDIT$(MID(COMMAND.BUFR$,5%,(RETURN.RESULT%-4%)),-1%)	&	!								&	!	Reduce input text to manageable form.			&	!								&	\ RETURN							&19000	!$***************************************      ***********************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T       I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&25015	!***************************************************************&	!								&	!								&	!	D E B U G    D E B U G    D E B U G    D E B U G	&	!								&	!								&	!	Special /DEBU      G switch on dialog function.  Special	&	!	only to the compiler because they wouldn't put it	&	!	in the general dialogue function.			&	!								&	!	The switch is "hidden" from the user by not appearing	&	!	in the spec for the dialogue function or any document	&	!	pertaining to FMTGEN.					&	!								&	!	This code checks for, and removes the string:		&	!								&	!	/DEBUG							&	!								&	!	from the input text string to the dialogue function.	&	!	The entire keyword must appear after the slash.		&	!								&      	!								&	\ ASK.T3% = INSTR(1%,EDIT$(ASK.RESP$,32%),"/DEBUG")		&	\ GO TO 25020	IF ASK.T3% = 0%					&	\ ASK.RESP$ =  LEFT(ASK.RESP$,(ASK.T3%-1%))			&		    + RIGHT(ASK.RESP$,(ASK.T3%+6%))			&	\ DEBUG.FLAG% = TRUE%						&	!								&	!	Search for the debug switch.				&	!	Skip out if not there.					&	!	Otherwise, remove from the string.			&	!	Set the DEBUG switch.					&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!						      		&	!								&	!***************************************************************&32010	\ TE% = FN.EXEC.BLOCK%("MCR...",				&			       1053%,					&			       FALSE%	)				&	!								&	!	SPAWN the SYSGEN program so that it can begin work.	&	!	After spawning, we exit this program to finish our work.&32500	\ TE% = FN.EXEC.BLOCK%("MCR...",				&			       1102%,					&			       FALSE%	)				&		IF CPT.INSTALLED% = TRUE%				&	\ CLOSE 11%, 12%						&	\ GO TO 32767							&	!								&	!	If CPT is still installed, remove it.     			&	!	Make sure files are closed.				&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END          s	z“Á› 8$        1	!***************************************************************&	!								&	!								&	!		A T S S U P    D I A L O G U E			&	!								&	!								&	!								&	SUB	ATSSUP	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	03-Apr-79				 1.1A00&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!***************************************************************&	!      								&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  f      or 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.	      					&	!								&	!***************************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL ATSSUP(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!*******************************************************      ********&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	03-Apr-79 KMR	Added code to restrict number of 1.1A00&	!				  terminals on DZ and DUP	 1.1A00&	!				  remote lines.			 1.1A00&	!								&	!***************************************************************&100	!$************      **************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This sub-program performs the ATS support		&	!	dialogue for the TPS-11 SYSGEN program.			&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	----      -----	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			-------------------------      -----  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!						      		&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$********************      ******************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!		      						&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ PRINT								&	\ PRINT "	Application Terminal Support Dialogue"		&	\ NUM.OF.DUPS.IN.COMM%=NUM.OF.DUPS.IN.3271%+NUM.OF.DUPS.IN.2780%&	\ NUM.OF.IBM.KMCS%=NUM.OF.2780.KMCS%+NUM.OF.3271.KMCS%		&	!								&	!	Set up standard default error trap			&1010	\ DEFAULT$="1"							&	\ DEFAULT$=NUM1$(NUM.OF.TPS%) UNLESS NUM.OF.TPS%=0%	      	&	\ ASK.RANGE(0%)=1.						&	\ ASK.RANGE(1%)=2.						&	\ ON FN.ASK%(5%,DEFAULT$,"I",TRUE%,1%) GOTO 1020,9000,1030	&	!								&	!	Ask the 'Number of TP's' question.			&	!		ALT out through 1020				&	!		CTRL/Z out					&	!		valid set up the number of TP's			&1020	\ SPAWN.STATUS%=1%+(27%*8%)					&	\ GOTO 32000							&	!								&	!	Set altmode status, and exit the subprogram.		&1030	\ NUM.OF.TPS%=ASK.NUM%						&	!								&	!	Set up the number of TP's				&1040	\ GOTO 1200 IF NUM.OF.KMCS%=0%					&	\ KMC.DEVICE.CT%(      T%)=0% FOR T%=0% TO NUM.OF.KMCS%-1%		&	\ T%=NUM.OF.DUPS%-NUM.OF.DUPS.IN.COMM%				&	\ KMC.UNIT%=0%							&	\ GOTO 1050 IF T%=0%						&	\ KMC.DEVICE.CT%(KMC.UNIT%)=T%					&	\ NUM.OF.KMC.DUPS%=T%						&	\ FOR DUP.UNIT%=0% TO NUM.OF.DUPS%-(NUM.OF.DUPS.IN.COMM%+1%)	&		\ KMC.DEVICE%(KMC.UNIT%,DUP.UNIT%)=DUP.UNIT%		&	\ NEXT DUP.UNIT%						&	\ KMC.UNIT%=KMC.UNIT%+1%					&	!								&	!	Skip ahead if there are no KMC's.			&	!	See if there are any DUP's assigned to ATS.		&	!	If none skip ahead.					&	!	Set up the tabl      es.					&1050	\ NUM.OF.KMC.DZS%=0%						&	\ GOTO 1100 IF NUM.OF.KMCS%=KMC.UNIT%				&	\ T%=NUM.OF.DZS%-NUM.OF.DZS.IN.SE%				&	\ GOTO 1100 IF T%=0%						&	\ FOR DZ.UNIT%=NUM.OF.DZS.IN.SE% TO NUM.OF.DZS%-1%		&		\ NUM.OF.KMC.DZS%=NUM.OF.KMC.DZS%+1%			&		\ KMC.DEVICE.CT%(KMC.UNIT%)=KMC.DEVICE.CT%(KMC.UNIT%)+1%&		\ T%=DZ.UNIT%-NUM.OF.DZS.IN.SE%				&		\ KMC.DEVICE%(KMC.UNIT%,T%)=DZ.UNIT%			&		\ KMC.UNIT%=KMC.UNIT%+1% IF DMC.DEVICE.CT%(DMC.UNIT%)=6%&		\ GOTO 1100 IF KMC.UNIT%=NUM.OF.KMCS%			&	\ NEXT DZ.UNIT%							      &	!								&	!	Assign the DZ's if any to the KMC's if any.		&1100	\ REPEAT%=-1%							&	\ SUBSTITUTE.TEXT$(99%)="DUP"					&	\ DUP.LINE.COUNT%=NUM.OF.DUPS%-NUM.OF.DUPS.IN.COMM%		&	\ FOR DUP.UNIT%=0% TO NUM.OF.DUPS%-(NUM.OF.DUPS.IN.COMM%+1%)	&1110		\ GOTO 1120 IF REPEAT%>=0%				&		\ DEFAULT$="FULL"					&		\ DEFAULT$="HALF" IF DUP.PLEX$(DUP.UNIT%)="1"		&		\ DUP.PLEX$(DUP.UNIT%)="1"				&		\ SUBSTITUTE.TEXT$(1%)=NUM1$(DUP.UNIT%)			&		\ VALID$="/FULL/HALF/"					&		\ PRINT							&		\ ON FN.ASK%(9%,DEFAULT$,VALID$,      FALSE%,2%) GOTO 1115,	&							9000,1120,1130	&	!								&	!	Ask the "Full/Half Duplex" question.			&	!		ALT to the number of TP's question		&	!		CTRL/Z out					&	!		FULL to 1120, HALF to next question.		&1115	\ GOTO 1010 IF DUP.UNIT%=0%					&	\ DUP.UNIT%=DUP.UNIT%-1%					&	\ DUP.LINE.COUNT%=DUP.LINE.COUNT%+1%				&	\ GOTO 1110							&	!								&	!	Back to the beginning if first DUP.			&	!	Back up to previous DUP otherwise.			&1120		\ DUP.PLEX$(DUP.UNIT%)="0"				&		\ DUP.PLEX$(DUP.UNIT%)=DUP.PLEX$(DUP.UNIT%-1      %) IF 	&				REPEAT%>=0%				&	!								&	!	Full duplex.						&1130		\ GOTO 1140 IF REPEAT%>=0%				&		\ DEFAULT$="NO"						&		\ DEFAULT$="YES" IF DUP.MODEM$(DUP.UNIT%)="1"		&		\ DUP.MODEM$(DUP.UNIT%)="0"				&		\ ON FN.ASK%(10%,DEFAULT$,"Y",0%,3%) GOTO 1110,9000,	&							1140,1150	&	!								&	!	Ask the "Modem control" question.			&	!		ALT to the previous.				&	!		CTRL/Z out					&	!		YES, NO go on					&1140		\ DUP.MODEM$(DUP.UNIT%)="1"				&		\ DUP.MODEM$(DUP.UNIT%)=DUP.MODEM$(DUP.UNIT%-1%) IF	&				REPEAT%>=0%	      			&		\ DUP.TERM.COUNT%( DUP.UNIT% ) = 1%			!1.1A00&			IF DUP.MODEM$( DUP.UNIT% ) = "1"		!1.1A00&	!								&	!	Assume that the DUP has modem control.			 1.1A00&	!	If we are repeating, set it according to what was	 1.1A00&	!	  specified for the last unit.				 1.1A00&	!	If the DUP still has modem control, set the number of	 1.1A00&	!	  terminals to the maximum allowed: 1.			 1.1A00&1150		\ TE% = FN.PRINT.BLOCK%( 0%, 80% )			!1.1A00&			IF DUP.MODEM$( DUP.UNIT% ) = "1"		!1.1A00&		\ GO TO 1170	IF DUP.MODEM$( DUP      .UNIT% ) = "1"	!1.1A00&	!								 1.1A00&	!	Print out a message telling the user that we are	 1.1A00&	!	  forceing the number of terminals to 1 for this DUP	 1.1A00&	!	  since that is the maximum allowed with modem control.	 1.1A00&	!	If this DUP has modem control, skip asking for the	 1.1A00&	!	  number of terminals.					 1.1A00&	!								 1.1A00&		\ GOTO 1160 IF REPEAT%>=0%				&		\ DEFAULT$="1"						&		\ DEFAULT$=NUM1$(DUP.TERM.COUNT%(DUP.UNIT%)) IF		&				DUP.TERM.COUNT%(DUP.UNIT%)<>0%		&		\ ASK.RANGE(0%)      =1.					&		\ ASK.RANGE(1%)=16.					&		\ ON FN.ASK%(11%,DEFAULT$,"I",TRUE%,3%) GOTO 1130,9000,	&							1160		&	!								&	!	Ask the "Number of terminals" question.			&	!		ALT to previous					&	!		CTRL/Z out					&	!		valid to set up the number.			&1160		\ DUP.TERM.COUNT%(DUP.UNIT%)=ASK.NUM%			&		\ DUP.TERM.COUNT%(DUP.UNIT%)=DUP.TERM.COUNT%(DUP.UNIT%-1%) IF&				REPEAT%>=0%				&	!								&	!	SET UP THE NUMBER OF TERMINALS ON THE LINE.		&1170		\ GOTO 1180 IF REPEAT%>=0%				&		\ DEFAULT$=NUM1$(DUP.LINE.COUNT%-1%)      			&		\ ASK.RANGE(0%)=0.					&		\ ASK.RANGE(1%)=DUP.LINE.COUNT%-1%			&		\ ON FN.ASK%(72%,DEFAULT$,"I",TRUE%,3%) GOTO 1150,9000,	&						1180			&	!								&	!	Ask the "Repeat Count" question.			&1180		\ REPEAT%=ASK.NUM% IF REPEAT%=-1%			&		\ REPEAT%=REPEAT%-1%					&		\ LONG.FORM%=0%						&		\ DUP.LINE.COUNT%=DUP.LINE.COUNT%-1%			&	\ NEXT DUP.UNIT%						&	\ LONG.FORM%=SYSGEN.LONG.FORM%					&	!								&	!	Set up the number of terminals and process the next DUP.&1200	\ DZ.COUNT%=1%							&	\ DZ.COUNT%=NUM.OF.KMC      .DZS% UNLESS NUM.OF.KMC.DZS%=0%		&	\ DZ.COUNT%=DZ.COUNT%+NUM.OF.DZS.IN.SE%				&	\ GOTO 1300 IF NUM.OF.KMC.DZS%=0%				&1204	\ NUM.OF.ATS.DZ.LINES%=8%*(NUM.OF.KMC.DZS%)			&	\ NUM.OF.ATS.DZ.LINES%=4% IF MEMORY.SIZE%=96%			&	\ NUM.OF.ATS.DZ.LINES%=16% IF (MEMORY.SIZE%>96%) AND 		&					(MEMORY.SIZE%<=128%) AND	&					(NUM.OF.ATS.DZ.LINES%>16%)	&	\ DEFAULT$=NUM1$(NUM.OF.ATS.DZ.LINES%)				&	\ ASK.RANGE(0%)=1.						&	\ ASK.RANGE(1%)=NUM.OF.ATS.DZ.LINES%				&	\ ON FN.ASK%(70%,DEFAULT$,"I",TRUE%,1%) GOTO 1206,9000,120      8	&	!								&	!	Ask the "Number of DZ lines" question			&1206	\ GOTO 1010 IF (NUM.OF.KMC.DUPS%=0%)				&	\ GOTO 1100							&	!								&	!	Escape goes to different question depending on DUP's.	&1208	\ NUM.OF.ATS.DZ.LINES%=ASK.NUM%					&	\ DZ.LINE.COUNT%=ASK.NUM%					&	!								&	!	Set up the maximum number of DZ lines.			&1209	\ REPEAT%=-1%							&	\ SUBSTITUTE.TEXT$(99%)="DZ"					&	\ FOR DZ.UNIT%=NUM.OF.DZS.IN.SE% TO DZ.COUNT%-1%		&1210		\ FOR CHNL.NUM%=0% TO 7%				&		\ GOTO 1300 IF DZ.LINE.COUNT%=0%			&122      0		\ GOTO 1245 IF REPEAT%>=0%				&		\ DEFAULT$="9600"					&		\ DEFAULT$=NUM1$(DZ.BAUD.RATE%(DZ.UNIT%,CHNL.NUM%)) IF	&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL.NUM%)<>0%	&		\ SUBSTITUTE.TEXT$(1%)=NUM1$(DZ.UNIT%)			&		\ SUBSTITUTE.TEXT$(2%)=NUM1$(CHNL.NUM%)			&		\ ASK.RANGE(0%)=50.					&		\ ASK.RANGE(1%)=9600.					&		\ PRINT							&		\ ON FN.ASK%(12%,DEFAULT$,"I",TRUE%,2%) GOTO 1230,9000,	&								1240	&	!								&	!	Ask the "Baud rate" question.				&	!		ALT is processed at 1230			&	!		CTRL/Z out					&	!		valid to set       the baud rate up			&1230		\ GOTO 1204 IF						&				(CHNL.NUM%=0%) AND			&					 (DZ.UNIT%=NUM.OF.DZS.IN.SE%)	&		\ DZ.UNIT%=DZ.UNIT%-1% IF CHNL.NUM%=0%			&		\ DZ.LINE.COUNT%=DZ.LINE.COUNT%+1% IF CHNL.NUM%<>0%	&		\ DZ.LINE.COUNT%=DZ.LINE.COUNT%+8% IF CHNL.NUM%=0%	&		\ CHNL.NUM%=CHNL.NUM%-1% IF CHNL.NUM%<>0%		&		\ GOTO 1220						&	!								&	!	ALT to the beginning if no DUP's.			&	!	Ask the DUP stuff if there are some.			&	!	Otherwise skip back within the DZ support dialogue.	&1240		\ IF	(ASK.NUM%<>50%) AND				      &			(ASK.NUM%<>75%) AND				&			(ASK.NUM%<>110%) AND				&			(ASK.NUM%<>134%) AND				&			(ASK.NUM%<>150%) AND				&			(ASK.NUM%<>300%) AND				&			(ASK.NUM%<>600%) AND				&			(ASK.NUM%<>1200%) AND				&			(ASK.NUM%<>1800%) AND				&			(ASK.NUM%<>2400%) AND				&			(ASK.NUM%<>3600%) AND				&			(ASK.NUM%<>4800%) AND				&			(ASK.NUM%<>7200%) AND				&			(ASK.NUM%<>9600%)				&		  THEN PRINT						&			\ PRINT "% Invalid Baud rate setting."		&			\ GOTO 1220					&		  ELSE DZ.BAUD.RATE%(DZ.UNIT%,CHNL.NUM%)=ASK.NUM%	&	!					      			&	!	Set up the Baud rate.					&1245		\ TEMP.UNIT%=DZ.UNIT%					&		\ TEMP.UNIT%=DZ.UNIT%-1% IF CHNL.NUM%=0%		&		\ TEMP.CHNL%=CHNL.NUM%-1%				&		\ TEMP.CHNL%=7% IF CHNL.NUM%=0%				&		\ DZ.BAUD.RATE%(DZ.UNIT%,CHNL.NUM%)=			&		   DZ.BAUD.RATE%(TEMP.UNIT%,TEMP.CHNL%) IF REPEAT%>=0%	&1250		\ GOTO 1260 IF REPEAT%>=0%				&		\ DEFAULT$="NO"						&		\ DEFAULT$="YES" IF DZ.MODEM$(DZ.UNIT%,CHNL.NUM%)="1"	&		\ DZ.MODEM$(DZ.UNIT%,CHNL.NUM%)="0"			&		\ ON FN.ASK%(13%,DEFAULT$,"Y",0%,3%) GOTO 1220,9000,	&							1260,127      0	&	!								&	!	Ask the "Modem control" question.			&	!		ALT back					&	!		CTRL/Z out					&	!		YES for modem control				&	!		NO continue dialogue				&1260		\ DZ.MODEM$(DZ.UNIT%,CHNL.NUM%)="1"			&		\ DZ.MODEM$(DZ.UNIT%,CHNL.NUM%)=			&		   DZ.MODEM$(TEMP.UNIT%,TEMP.CHNL%) IF REPEAT%>=0%	&	!								&	!	Set Modem control.					&1270		\ GOTO 1286 IF REPEAT%>=0%				&		\ DEFAULT$="VT62"					&		\ DEFAULT$="LA180" IF DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)=3%&		\ DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)=0%			&		\ VALID$="/VT62/L      A180/"					&		\ ON FN.ASK%(14%,DEFAULT$,VALID$,0%,3%) GOTO 1250,9000,	&						1290,1280		&	!								&	!	Ask the "Terminal type" question.			&	!		ALT back					&	!		CTRL/Z out					&	!		dispatch for valid types			&1280	\ DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)=1%				&	!								&	!	LA180.							&1282	\ DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)=				&			DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)+1%		&	!								&	!	USED TO BE LA36.					&1284	\ DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)=				&			DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)+1%		&	!								&	!	      USED TO BE VT52.					&1286	\ DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)=				&	   DZ.TERM.TYPE%(TEMP.UNIT%,TEMP.CHNL%) IF REPEAT%>=0%		&1290		\ DZ.VT62.CT%(DZ.UNIT%,CHNL.NUM%)=1% IF			&			(DZ.VT62.CT%(DZ.UNIT%,CHNL.NUM%)=0%) OR		&			(DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)<>0%)		&			OR (DZ.MODEM$(DZ.UNIT%,CHNL.NUM%)="1")		!1.1A00&		!							 1.1A00&		!	Assume that there will be 1 VT62 on this channel 1.1A00&		!	  of this DZ if:				 1.1A00&		!		1. There were none orginally		 1.1A00&		!		2. The terminal type is not VT62.	 1.1      A00&		!		3. This DZ/channel has modem control.	 1.1A00&		!							 1.1A00&		\ TE% = FN.PRINT.BLOCK%( 0%, 81% )			!1.1A00&			IF DZ.MODEM$( DZ.UNIT%, CHNL.NUM% ) = "1"	!1.1A00&		\ GO TO 1296						!1.1A00&			IF DZ.MODEM$( DZ.UNIT%, CHNL.NUM% ) = "1"	!1.1A00&		!							 1.1A00&		!	Tell the user that we are setting the number	 1.1A00&		!	  of terminals to the maximum per line.		 1.1A00&		!	If we have modem control, skip asking for the	 1.1A00&		!	  information.					 1.1A00&		!							 1.1A00&		\ GOTO 1296 IF DZ.TER      M.TYPE%(DZ.UNIT%,CHNL.NUM%)<>0%	&		\ GOTO 1295 IF REPEAT%>=0%				&		\ DEFAULT$=NUM1$(DZ.VT62.CT%(DZ.UNIT%,CHNL.NUM%)) 	&		\ ASK.RANGE(0%)=1.					&		\ ASK.RANGE(1%)=8.					&		\ ON FN.ASK%(15%,DEFAULT$,"I",TRUE%,3%) GOTO 1270,9000,	&							1295		&	!								&	!	Ask the "Number of Terminals on line" question.		&	!		ALT back					&	!		CTRL/Z out					&	!		valid set then count up				&1295		\ DZ.VT62.CT%(DZ.UNIT%,CHNL.NUM%)=ASK.NUM%		&		\ DZ.VT62.CT%(DZ.UNIT%,CHNL.NUM%)=			&		   DZ.VT62.CT%(TEMP.UNIT%,TEMP.CHNL%) IF       REPEAT%>=0%	&	!								&	!	Set up the terminal count.				&1296		\ GOTO 1298 IF REPEAT%>=0%				&		\ DEFAULT$=NUM1$(DZ.LINE.COUNT%-1%)			&		\ ASK.RANGE(0%)=0.					&		\ ASK.RANGE(1%)=DZ.LINE.COUNT%-1%			&		\ ON FN.ASK%(72%,DEFAULT$,"I",TRUE%,3%) GOTO 1297,9000,	&						1298			&	!								&	!	Ask the "Repeat Count" question.			&1297		\ GOTO 1270 IF DZ.TERM.TYPE%(DZ.UNIT%,CHNL.NUM%)<>0%	&		\ GOTO 1290						&	!								&	!	Escape to the right place.				&1298			\ REPEAT%=ASK.NUM% IF REPEAT%=-1%		&			\ REPEAT%=REPEAT      %-1%				&			\ LONG.FORM%=0%					&			\ DZ.LINE.COUNT%=DZ.LINE.COUNT%-1%		&		\ NEXT CHNL.NUM%					&	\ NEXT DZ.UNIT%							&	\ LONG.FORM%=SYSGEN.LONG.FORM%					&	!								&	!	LOOP.							&1300	\ GOTO 1400 IF FINE.TUNE%=FALSE%				&	\ DEFAULT$=""							&	\ ASK.RANGE(0%)=1.						&	\ ASK.RANGE(1%)=100.						&	\ ON FN.ASK%(16%,DEFAULT$,"I",TRUE%,2%) GOTO 1310,9000,1320	&	!								&	!	Ask the "Number of CCB's" question.			&	!		Alt will be processed at 1310			&	!		CTRL/Z out					&	!		valid to set up the number			&131      0	\ GOTO 1200 UNLESS (NUM.OF.DZS%=NUM.OF.DZS.IN.SE%)		&	\ GOTO 1100 UNLESS (NUM.OF.DUPS%=NUM.OF.DUPS.IN.COMM%)		&	\ GOTO 1010							&	!								&	!	ALT to the proper place.  That is, if we didn't ask	&	!		the question before, don't ask it now.		&1320	\ ATS.CCBS%=ASK.NUM%						&	!								&	!	Set up the number of ATS CCB's.				&1330	\ DEFAULT$=""							&	\ ASK.RANGE(0%)=1.						&	\ ASK.RANGE(1%)=100.						&	\ ON FN.ASK%(17%,DEFAULT$,"I",TRUE%,2%) GOTO 1300,9000,1340	&	!								&	!	Ask the "Number of LDB's" que      stion.			&	!		ALT back a question				&	!		CTRL/Z out					&	!		valid sets up the number			&1340	\ ATS.LDBS%=ASK.NUM%						&	!								&	!	Set up the number of LDB's.				&1350	\ DEFAULT$=""							&	\ ASK.RANGE(0%)=1.						&	\ ASK.RANGE(1%)=100.						&	\ ON FN.ASK%(18%,DEFAULT$,"I",TRUE%,2%) GOTO 1330,9000,1360	&	!								&	!	Ask the "Number of SDB's" question.			&	!		ALT back one question				&	!		CTRL/Z out					&	!		valid set up the number				&1360	\ ATS.SDBS%=ASK.NUM%						&	!								&	!	Set up the number of       SDB's.				&1370	\ DEFAULT$=""							&	\ ASK.RANGE(0%)=1.						&	\ ASK.RANGE(1%)=100.						&	\ ON FN.ASK%(19%,DEFAULT$,"I",TRUE%,2%) GOTO 1350,9000,1380	&	!								&	!	Ask the "Number of RDB's" question.			&	!		ALT back a question				&	!		CTRL/Z out					&	!		valid sets up the number			&1380	\ ATS.RDBS%=ASK.NUM%						&	!								&	!	Set up the number of RDB's.				&1400	\ DEFAULT$="NO"							&	\ ATS.ERROR.MSG$(0%)="Alpha only" IF				&		ATS.ERROR.MSG$(0%)=STRING$(40%,0%)			&	\ ATS.ERROR.MSG$(1%)="Alphanumeric on      ly" IF			&		ATS.ERROR.MSG$(1%)=STRING$(40%,0%)			&	\ ATS.ERROR.MSG$(2%)="Numeric only" IF				&		ATS.ERROR.MSG$(2%)=STRING$(40%,0%)			&	\ ATS.ERROR.MSG$(3%)="Illegal entry in signed numeric field" IF	&		ATS.ERROR.MSG$(3%)=STRING$(40%,0%)			&	\ ATS.ERROR.MSG$(4%)="Field can not be left empty" IF		&		ATS.ERROR.MSG$(4%)=STRING$(40%,0%)			&	\ ATS.ERROR.MSG$(5%)="Field must be full" IF			&		ATS.ERROR.MSG$(5%)=STRING$(40%,0%)			&	\ ATS.ERROR.MSG$(6%)="Not enough MENU selections" IF		&		ATS.ERROR.MSG$(6%)=STRING$(4      0%,0%)			&	\ ATS.ERROR.MSG$(7%)="Too many MENU selections" IF		&		ATS.ERROR.MSG$(7%)=STRING$(40%,0%)			&	\ ON FN.ASK%(20%,DEFAULT$,"Y",0%,1%) GOTO 1405,9000,1410,1500	&	!								&	!	Ask the "Change Error messages" question.		&	!		ALT to the Fine Tuning questions		&	!		CTRL/Z out					&	!		YES solicites changes				&	!		NO exits this section				&1405	\ GOTO 1310 IF FINE.TUNE%=FALSE%				&	\ GOTO 1300							&	!								&	!	ALT to different places depending on fine tuning.	&1410	\ NUM.ERROR.MESSAGES%=8%					& 	\ F      OR ERROR.NUM%=0% TO NUM.ERROR.MESSAGES%-1%			&1420		\ DEFAULT$=TRM$(ATS.ERROR.MSG$(ERROR.NUM%))		&		\ ASK.RANGE(0%)=40.					&		\ ON FN.ASK%(21%,DEFAULT$,"A",TRUE%,2%) GOTO 1400,9000,	&								1430	&	!								&	!	Solicite new error message text.			&	!		ALT asks them whether they really want this	&	!		CTRL/Z out					&	!		valid sets up the new text			&1430		\ ATS.ERROR.MSG$(ERROR.NUM%)=EDIT$(ASK.RESP$,4%)		&	\ NEXT ERROR.NUM%						&	!								&	!	Set up the error message, do the next one.		& 1500	\ SPAWN.STATUS      %=1%						&	\ ATS.V62$=STRING$(3%,0%)					&	\ ATS.V52$=STRING$(3%,0%)					&	\ ATS.DCP$=ATS.V62$						&	\ ATS.KSA$=ATS.V52$						&	\ ATS.KDZ$=ATS.V62$						&	\ ATS.KDP$=ATS.V52$						&	\ ATS.DLC$=STRING$(9%,0%)					&	\ ATS.DDM$=STRING$(9%,0%)					&	\ FOR DUP.UNIT%=0% TO NUM.OF.DUPS%-(NUM.OF.DUPS.IN.COMM%+1%)	&		\ ATS.V62$="V62" IF DUP.TERM.COUNT%(DUP.UNIT%)<>0%	&	\ NEXT DUP.UNIT%						&	\ DZ.COUNT%=1%							&	\ DZ.COUNT%=NUM.OF.KMC.DZS% UNLESS NUM.OF.KMC.DZS%=0%		&	\ DZ.COUNT%=DZ.COUNT%+NUM.OF.DZS.IN.SE%				      &	\ GOTO 1510 IF NUM.OF.DZS%=NUM.OF.DZS.IN.SE%			&	\ DZ.LINE.COUNT%=NUM.OF.ATS.DZ.LINES%				&	\ FOR DZ.UNIT%=NUM.OF.DZS.IN.SE% TO DZ.COUNT%-1%		&	    \ FOR T%=0% TO 7%						&		\ GOTO 1510 IF DZ.LINE.COUNT%=0%			&		\ ATS.V62$="V62" IF DZ.TERM.TYPE%(DZ.UNIT%,T%)=0% 	&		\ ATS.V52$="L18" IF DZ.TERM.TYPE%(DZ.UNIT%,T%)<>0% 	&		\ DZ.LINE.COUNT%=DZ.LINE.COUNT%-1%			&	    \ NEXT T%							&	\ NEXT DZ.UNIT%							&1510	\ ATS.DCP$="DCP" IF ATS.V62$="V62"				&	\ ATS.KSA$="KSA" IF ATS.V52$="L18"				&	\ ATS.KSA$="SA" IF (      ATS.V52$="L18") AND (NUM.OF.KMC.DZS%=0%)	&	\ ATS.KDZ$="DZ" IF NUM.OF.DZS%>NUM.OF.DZS.IN.SE%		&	\ ATS.KDZ$="KDZ" IF NUM.OF.KMC.DZS%<>0%				&	\ ATS.KDP$="KDP" IF NUM.OF.KMC.DUPS%<>0%			&	\ ATS.DLC$=EDIT$("<"+ATS.DCP$+ATS.KSA$,6%) IF			&					 (ATS.DCP$<>"DCP") OR		&					(ATS.KSA$=STRING$(3%,0%))	&	\ ATS.DLC$=EDIT$("<"+ATS.DCP$+","+ATS.KSA$,6%) IF		&					 (ATS.DCP$="DCP") AND		&					(ATS.KSA$<>STRING$(3%,0%))	&	\ ATS.DDM$=EDIT$("<"+ATS.KDP$+ATS.KDZ$,6%) IF			&					 (ATS.KDP$<>"KDP") OR		&					(ATS.KDZ$=STRING$(      3%,0%))	&	\ ATS.DDM$=EDIT$("<"+ATS.KDP$+","+ATS.KDZ$,6%) IF		&					 (ATS.KDP$="KDP") AND		&					(ATS.KDZ$<>STRING$(3%,0%))	&	\ T%=NUM.OF.ATS.DZ.LINES%					&	\ NUM.OF.KMC.DZS%=0%						&	\ WHILE 1%<>2%							&		\ GOTO 1520 IF T%<=0%					&		\ NUM.OF.KMC.DZS%=NUM.OF.KMC.DZS%+1%			&		\ T%=T%-8%						&	\ NEXT								&1520	\ GOTO 32000							&	!								&	!	Set success status and exit.				&9000	\ SPAWN.STATUS%=2%						&	\ GOTO 32000							&	!								&	!	Set error status and exit.				&10000	!$**********************      ****************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!*************************************************      **************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!      								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O    `  C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND `         šE.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L    G E N E R A T I O N    M O D U L E	&	!								&	!								&	!								&	SUB	KERGN1	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	04-Apr-79				 1.1A00&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!**************************************************      *************&	!								&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    pl      ied by DIGITAL.						&	!								&	!***************************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KERGN1(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************      ************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	04-Apr-79 KMR	Removed code which caused a no	 1.1A00&	!				  longer used MACRO to be added	 1.1A00&	!				  to the source.		 1.1A00&	!								&	!**************************************************************      *&100	!$**************************************************************&	!								&	!								&	!	This sub-program creates the KERMC.MAC and SYSTB.MAC	&	!	files and all the necessary commands needed to build	&	!	the KERNEL.  It then executes the necessary commands	&	!	thus building the KERNEL.				&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M       E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    3		KERMC.MAC file output			&	!	    4		SYSTB.MAC file output			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------      ------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	      !								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$*************      *************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!						      		&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ OPEN "KERMC.MAC" FOR OUTPUT AS FILE 3%			&	!								&	!	Open the KERMC.MAC file so we can configure it.		&1020	\ SUBSTITUTE.TEXT$(1%)=TRM$(HERALD.TEXT$)			&	\ SUBSTITUTE.TEXT$(2%)=TRM$(RIGHT(VER.EDIT.NUM$,		&				INSTR(1%,VER.EDIT.NUM$,"V")))		&	\ T%=FN.PRINT.      BLOCK%(3%,310%)					&	\ T%=FN.PRINT.BLOCK%(3%,1%)					&	!								&	!	Put the .TITLE and .IDENT into KERMC.MAC		&	!	Put the COPYRIGHT in.					&1030	\ T%=FN.PRINT.BLOCK%(3%,312%)					&	!								&	!	NORMAL INSERTIONS INTO KERMAC.MAC			&1040	\ T%=FN.PRINT.BLOCK%(3%,313%) IF COM.SUPPORT%<>0%		&	!								&	!	Network support if TPS to TPS  was specified.		&1050	\ SUBSTITUTE.TEXT$(1%)=TRM$(CLK.TICKS.PER.SEC$)			&	\ T%=FN.PRINT.BLOCK%(3%,314%)					&	\ T%=FN.PRINT.BLOCK%(3%,316%) IF INSERT.XDT%<>0%		&	\ SUBSTITUTE.TE      XT$(1%)=TRM$(CRASH.CSR$)				&	\ SUBSTITUTE.TEXT$(2%)=TRM$(CRASH.UNIT$)			&	\ SUBSTITUTE.TEXT$(3%)=TRM$(CRASH.DEVICE$)			&	\ T%=FN.PRINT.BLOCK%(3%,318%)					&	\ T%=FN.PRINT.BLOCK%(3%,320%) IF PROCESSOR.TYPE%=70%		&	\ T%=FN.PRINT.BLOCK%(3%,322%) IF FL.PT.PROC%<>0%		&	!								&	!	Insert some normal things, XDT if requested,		&	!	some 11/70 specific stuff, and some Floating point	&	!	processor specific stuff.				&1060	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(MEMORY.SIZE%)		&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.OCT$(      CLOCK.FREQ%)		&	\ SUBSTITUTE.TEXT$(3%)=TRM$(CLK.CSR$)				&	\ SUBSTITUTE.TEXT$(4%)=TRM$(CLK.CT.REG$)			&	\ SUBSTITUTE.TEXT$(5%)=TRM$(CLK.TICKS.PER.SEC$)			&	\ SUBSTITUTE.TEXT$(6%)=TRM$(CLK.LOAD.CT$)			&	\ SUBSTITUTE.TEXT$(7%)=TRM$(CLK.INT.ENB$)			&	\ T%=FN.PRINT.BLOCK%(3%,324%)					&	!								&	!	Specify the Memory and Clock options.			&1070	\ T%=FN.PRINT.BLOCK%(3%,326%)					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(NUM.OF.RH.CNTLRS%)		&	\ T%=FN.PRINT.BLOCK%(3%,328%) IF NUM.OF.RH.CNTLRS%<>0%		&	!								&	!	Wr      ite check support					&	!	Number of RH controllers.				&1080	\ IF (NUM.OF.DB.DRIVES%<>0%) OR (NUM.OF.DB.CNTLRS%<>0%)		&	  THEN T%=FN.PRINT.BLOCK%(3%,330%)				&	!	\ T%=FN.PRINT.BLOCK%(3%,332%)				&		\ T%=FN.PRINT.BLOCK%(3%,333%)				&	!								&	!	DB support.						&1090	\ IF (NUM.OF.DR.DRIVES%<>0%)					&	  THEN T%=FN.PRINT.BLOCK%(3%,334%)				&	!	\ T%=FN.PRINT.BLOCK%(3%,336%)				&		\ T%=FN.PRINT.BLOCK%(3%,338%)				&	!								&	!	DR support.						&1100	\ IF (NUM.OF.MM.DRIVES%<>0%)					&	  THEN T%=FN.PRINT.BLOCK      %(3%,340%)				&	!	\ T%=FN.PRINT.BLOCK%(3%,342%)				&		\ T%=FN.PRINT.BLOCK%(3%,344%)				&	!								&	!	MM support.						&1105	\ T%=FN.PRINT.BLOCK%(3%,348%) IF (NUM.OF.RH.CNTLRS%<>0%) OR	&					(NUM.OF.DM.DRIVES%<>0%)		&	!								&	!	OVERLAPPED SEEK FOR OUR SYSTEM				&1110	\ IF NUM.OF.RH.CNTLRS%<>0%					&	  THEN T%=FN.PRINT.BLOCK%(3%,346%)				&	!	\ T%=FN.PRINT.BLOCK%(3%,350%)				&	!								&	!	RH controller device driver.				&1120	\ IF NUM.OF.DM.DRIVES%<>0%					&	  THEN T%=FN.PRINT.BLOCK%(3%,352%)				&		\ T%=F      N.PRINT.BLOCK%(3%,354%)				&	!								&	!	DM support.						&1130	\ IF (NUM.OF.LPS%<>0%)						&	  THEN SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(NUM.OF.LPS%)		&		\ T%=FN.PRINT.BLOCK%(3%,356%)				&		\ T%=FN.PRINT.BLOCK%(3%,358%)				&	!								&	!	LP support.						&1140	\ IF NUM.OF.TS03.DRIVES%<>0%					&	  THEN T%=FN.PRINT.BLOCK%(3%,360%)				&		\ T%=FN.PRINT.BLOCK%(3%,362%)				&	!								&	!	MT support.						&1150	\ T%=FN.PRINT.BLOCK%(3%,364%)					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(NUM.OF.DLS%)		&	\ T%=FN.PRINT      .BLOCK%(3%,366%)					&	\ IF NUM.OF.DZS.IN.SE%<>0%					&	  THEN SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(NUM.OF.DZS.IN.SE%)	&		\ T%=FN.PRINT.BLOCK%(3%,368%)				&		\ T$=TRM$(SE.DZ.NEEDS.MODEM$)				&		\ T$="12430" IF T$="300"				&		\ T$="12030" IF T$="150"				&		\ T$="11070" IF T$="110"				&		\ SUBSTITUTE.TEXT$(1%)=T$				&		\ T%=FN.PRINT.BLOCK%(3%,370%)				&	!								&	!	TT support.						&1160	\ T%=FN.PRINT.BLOCK%(3%,372%)					&	\ T%=FN.PRINT.BLOCK%(3%,374%)					&	!								&	!	NL and VT support.					&1170	\ IF COM.      SUPPORT%<>0%						&	  THEN SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(NUM.OF.DMCS%)		&		\ T%=FN.PRINT.BLOCK%(3%,376%)				&	!								&	!	Communications support.					&1175	\ IF (IBM.SUPPORT%<>0%) OR (T2780.SUPPORT%<>0%)			&	  THEN SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(NUM.OF.3271.KMCS%+	&						   NUM.OF.2780.KMCS%)	&		\ T%=FN.PRINT.BLOCK%(3%,378%)				&		!\ T%=FN.PRINT.BLOCK%(3%,1310%)				 1.1A00&	!								&	!	3271 and/or 2780 support.				&1180	\ GOTO 32000							& 10000	!$*********************************************      *****************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!      $**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	      T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!				   H  				&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDH         s	.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	A P P L I C A T I O N S    T E R M I N A L		&	!								&	!	S U P P O R T    G E N E R A T I O N			&	!								&	!								&	!								&	SUB	ATSGN3	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	13-Apr-79				 1.1A00&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!**      *************************************************************&	!								&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its        software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!***************************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL ATSGN3(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!		      						&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	13-Apr-79 KMR	Corrected integer arithmetic	 1.1A00&	!				  error which caused a negative	 1.1A00&	!				  map size for CEPOOL.	 	 1.1A00&	!								&	!*********      ******************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This sub-program generates the Applications Terminal	&	!	Support.						&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	      !								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    3		Primary data file output		&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &      	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!			      					&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$****************************      **********************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	      !	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1070	\ GOTO 1080 IF ATS.KDZ$<>"DZ"					&	\ T%=FN.PRINT.BLOCK%(3%,828%)					&	\ DZ.UNIT%=NUM.OF.DZS.IN.SE%					&	\ ATS.DZ%=0%							&	\ SUBSTITUTE.TEXT$(19%)=FN.INT.TO.OCT$(ATS.DZ%)			&	\ SUBSTITUTE.TEXT$(20%)=TRM$(DZ.VEC$(DZ.UNIT%))			&	\ SUBSTITUTE.TEXT$(18%)=TRM$(DZ.CSR$(DZ.UNIT      %))			&	\ SUBSTITUTE.TEXT$(21%)=TRM$(DZ.PRI$(DZ.UNIT%))			&	\ T%=FN.PRINT.BLOCK%(3%,830%)					&	\ DZ.LINE.COUNT%=NUM.OF.ATS.DZ.LINES%				&	\ FOR CHNL%=0% TO 7%						&		\ GOTO 1080 IF DZ.LINE.COUNT%=0%			&		\ SUBSTITUTE.TEXT$(38%)="1011"				&		\ SUBSTITUTE.TEXT$(38%)="0" IF				&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)<>0%	&		\ SUBSTITUTE.TEXT$(22%)=FN.INT.TO.OCT$(CHNL%)		&		\ GOSUB 11000						&		\ T%=FN.PRINT.BLOCK%(3%,832%)				&		\ DZ.LINE.COUNT%=DZ.LINE.COUNT%-1%			&	\ NEXT CHNL%							&	!								&	!	If single DZ       support is needed do the above.		&1080	\ KMC.UNIT%=0%							&	\ GOTO 1090 IF ATS.KDP$<>"KDP"					&	\ ATS.KMC%=0%							&	\ SUBSTITUTE.TEXT$(10%)=FN.INT.TO.OCT$(ATS.KMC%)		&	\ ATS.DUP%=0%							&	\ FOR DUP.UNIT%=0% TO NUM.OF.DUPS%-(NUM.OF.DUPS.IN.COMM%+1%)	&		\ SUBSTITUTE.TEXT$(23%)=""				&		\ SUBSTITUTE.TEXT$(23%)="!LF.MDC" IF			&				DUP.MODEM$(DUP.UNIT%)="1"		&		\ SUBSTITUTE.TEXT$(14%)=FN.INT.TO.OCT$(ATS.DUP%)	&		\ T%=FN.PRINT.BLOCK%(3%,834%)				&		\ ATS.DUP%=ATS.DUP%+1%					&		\ TERMINAL.NUMBER%=0%					&      		\ FOR TT%=1% TO DUP.TERM.COUNT%(DUP.UNIT%)		&			\ TERMINAL.NUMBER%=TERMINAL.NUMBER%+1%		&			\ SUBSTITUTE.TEXT$(24%)=FN.INT.TO.OCT$(		&						TERMINAL.NUMBER%)	&			\ T%=FN.PRINT.BLOCK%(3%,836%)			&		\ NEXT TT%						&	\ NEXT DUP.UNIT%						&	\ KMC.UNIT%=KMC.UNIT%+1%					&	!								&	!	Put the DUP controlled terminal information.		&1090	\ GOTO 1100 IF ATS.KDZ$<>"KDZ"					&	\ ATS.KMC%=0%							&	\ UNITC%=0%							&	\ ATS.DZ%=-1%							&	\ DZ.LINE.COUNT%=NUM.OF.ATS.DZ.LINES%				&	\ FOR DZ.UNIT%=NUM.OF.DZS.IN.SE      % TO NUM.OF.DZS%-1%		&		\ GOTO 1100 IF DZ.LINE.COUNT%=0%			&		\ ATS.DZ%=ATS.DZ%+1%					&		\ UNITC%=UNITC%+1%					&		\ SUBSTITUTE.TEXT$(10%)=FN.INT.TO.OCT$(ATS.KMC%)	&		\ FOR CHNL%=0% TO 7%					&			\ GOTO 1100 IF DZ.LINE.COUNT%=0%		&			\ SUBSTITUTE.TEXT$(25%)=""			&			\ SUBSTITUTE.TEXT$(25%)="!LF.MDC" IF		&				DZ.MODEM$(DZ.UNIT%,CHNL%)="1"		&			\ SUBSTITUTE.TEXT$(40%)=FN.INT.TO.OCT$(		&				(8%*ATS.DZ%)+CHNL%)			&			\ SUBSTITUTE.TEXT$(3%)="V62"			&			\ T%=FN.PRINT.BLOCK%(3%,838%) IF		&				DZ.TERM.TYPE%(DZ.UNI      T%,CHNL%)=0%	&			\ T%=FN.PRINT.BLOCK%(3%,842%) IF		&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)<>0%	&			\ TERMINAL.NUMBER%=0%				&		    \ FOR T.TEMP%=1% TO DZ.VT62.CT%(DZ.UNIT%,CHNL%)	&			\ TERMINAL.NUMBER%=TERMINAL.NUMBER%+1%		&			\ SUBSTITUTE.TEXT$(24%)=FN.INT.TO.OCT$(		&						TERMINAL.NUMBER%)	&			\ T%=FN.PRINT.BLOCK%(3%,840%) IF		&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=0%	&		    \ NEXT T.TEMP%					&		    \ DZ.LINE.COUNT%=DZ.LINE.COUNT%-1%			&		\ NEXT CHNL%						&		\ KMC.UNIT%=KMC.UNIT%+1% IF UNITC%=6%			&		\ ATS.DZ%=A      TS.DZ%+1% IF UNITC%=6%			&		\ GOTO 1150 IF KMC.UNIT%=NUM.OF.KMCS%			&		\ UNITC%=0% IF UNITC%=6%				&	\ NEXT DZ.UNIT%							&	!								&	!	Do the KMC/DZ terminal support.				&1100	\ GOTO 1110 IF ATS.KDZ$<>"DZ"					&	\ DZ.UNIT%=NUM.OF.DZS.IN.SE%					&	\ ATS.DZ%=0%							&	\ SUBSTITUTE.TEXT$(19%)=FN.INT.TO.OCT$(ATS.DZ%)			&	\ DZ.LINE.COUNT%=NUM.OF.ATS.DZ.LINES%				&	\ FOR CHNL%=0% TO 7%						&		\ GOTO 1110 IF DZ.LINE.COUNT%=0%			&		\ SUBSTITUTE.TEXT$(25%)=""				&		\ SUBSTITUTE.TEXT$(25%)="!LF.MDC" IF 			&				D      Z.MODEM$(DZ.UNIT%,CHNL%)="1"		&		\ SUBSTITUTE.TEXT$(22%)=FN.INT.TO.OCT$(CHNL%)		&		\ SUBSTITUTE.TEXT$(3%)="V62"				&		\ T%=FN.PRINT.BLOCK%(3%,844%) IF			&			DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=0%		&		\ T%=FN.PRINT.BLOCK%(3%,848%) IF			&			DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)<>0%		&		\ TERMINAL.NUMBER%=0%					&		\ FOR T.TEMP%=1% TO DZ.VT62.CT%(DZ.UNIT%,CHNL%)		&			\ TERMINAL.NUMBER%=TERMINAL.NUMBER%+1%		&			\ SUBSTITUTE.TEXT$(24%)=FN.INT.TO.OCT$(		&						TERMINAL.NUMBER%)	&			\ T%=FN.PRINT.BLOCK%(3%,846%) IF		&				DZ.TER      M.TYPE%(DZ.UNIT%,CHNL%)=0%	&		\ NEXT T.TEMP%						&		\ DZ.LINE.COUNT%=DZ.LINE.COUNT%-1%			&	\ NEXT CHNL%							&	!								&	!	Do the single DZ terminal support.			&1110	\ GOTO 1150							&	\ NUM.OF.DEC.STATIONS%=NUM.OF.DUPS.IN.COMM%			&	\ T%=FN.PRINT.BLOCK%(4%,788%)					&	\ FOR IBM.UNIT%=0% TO NUM.OF.DUPS.IN.COMM%-1%			&		\ SUBSTITUTE.TEXT$(80%)=FN.INT.TO.OCT$(IBM.UNIT%)	&		\ SUBSTITUTE.TEXT$(86%)=SUBSTITUTE.TEXT$(80%)		&		\ SUBSTITUTE.TEXT$(84%)="00"				&		\ SUBSTITUTE.TEXT$(87%)=FN.INT.TO.OCT$(			&			UNIT      S.ON.DUP%(IBM.UNIT%))			&		\ SUBSTITUTE.TEXT$(88%)=FN.INT.TO.OCT$(			&			CON.POLL.ADDR%(IBM.UNIT%))			&		\ T%=FN.PRINT.BLOCK%(4%,790%)				&		\ T%=FN.PRINT.BLOCK%(3%,785%)				&		\ FOR STATION%=0% TO UNITS.ON.DUP%(IBM.UNIT%)-1%	&			\ T$=FN.INT.TO.OCT$(STATION%)			&			\ T$=FN.INT.TO.OCT$(POLL.ADDRS%(IBM.UNIT%,STATION%))&				UNLESS POLL.ADDRS%(IBM.UNIT%,0%)=-1%	&			\ SUBSTITUTE.TEXT$(85%)="STA"+T$		&			\ T%=FN.PRINT.BLOCK%(3%,786%)			&			\ SUBSTITUTE.TEXT$(89%)=FN.INT.TO.OCT$(STATION%)&			\ SUBSTITUTE.TEXT$(90%      )=T$			&			\ T%=FN.PRINT.BLOCK%(4%,792%)			&		\ NEXT STATION%						&		\ NUM.OF.DEC.STATIONS%=NUM.OF.DEC.STATIONS%+		&			UNITS.ON.DUP%(IBM.UNIT%)			&	\ NEXT IBM.UNIT%						&	\ SUBSTITUTE.TEXT$(91%)=FN.INT.TO.OCT$(NUM.OF.DUPS.IN.COMM%)	&	\ SUBSTITUTE.TEXT$(92%)=FN.INT.TO.OCT$(NUM.OF.DEC.STATIONS%)	&	\ T%=FN.PRINT.BLOCK%(4%,794%)					&	\ CLOSE 4%							&	!								&	!	Do the 3271 support if necessary.			&1150	\ PSZ%=13%							&	\ PSZ%=PSZ%+(12%+((NUM.OF.KMC.DZS%*8%)/2%)) UNLESS (ATS.KDZ$<>"DZ")&			AND (ATS.KDZ$      <>"KDZ")				&	\ USZ%=14%+(NUM.OF.VT52%*4%)+(NUM.OF.VT62.LINES%*10%)+		&		(NUM.OF.KMC.DUPS%*4%)+(NUM.OF.KMC.DZS%*26%)		&	\ USZ%=USZ%+14% IF ATS.KDZ$="DZ"				&	\ USZ%=(USZ%/62%)+2%						&	\ ASZ%=(NUM.OF.TERMS%*30%)+((NUM.OF.TPS%+1%)*24%)		&	\ ASZ%=(ASZ%/64%)+1%						&	\ ESZ%=6%							&	\ ISZ%=0%							&	\ ISZ%=((2176%+(20%*NUM.OF.DUPS.IN.COMM%))/64%)+1% IF		&			IBM.SUPPORT%<>0%				&	\ TOTAL%=APR1%+USZ%+ASZ%+PSZ%+ESZ%+ISZ%				&	\ SUBSTITUTE.TEXT$(36%)=FN.INT.TO.OCT$(TOTAL%)			&	\ T%=FN.PRINT.BLOCK%(3%,850%)			      		&	\ CLOSE 3%							&	\ TOTAL%=TOTAL%+(ATS.LDBS%*8%)					&	\ T=(ATS.SDBS%*80%)						&	\ T%=T/64.+.99999						&	\ TOTAL%=TOTAL%+T%						&	\ TOTAL%=TOTAL%+(7%*NUM.OF.VT52%)				&! THE PRECEDING LINE IS HERE UNTIL ATS TELLS US DIFFERENTLY		&	\ OPEN "[1,34]CEPOOL.MAP" FOR OUTPUT AS FILE 3%			&	\ TOTAL = TOTAL%	! Change to real		!	!1.1A00&	\ TOTAL=TOTAL*32%	!   to assure we will not be neg!	!1.1A00&	\ PRINT #3%, "TASK IMAGE SIZE:"+NUM1$(TOTAL)+". WORDS"		&	\ CLOSE 3%							&	!								&	!	Finish off and close the       CETAB.MAC file.		&1200	\ SUBSTITUTE.TEXT$(33%)=TRM$(HERALD.TEXT$)			&	\ SUBSTITUTE.TEXT$(34%)=TRM$(RIGHT(VER.EDIT.NUM$,		&				INSTR(1%,VER.EDIT.NUM$,"V")))		&	\ TT%=0%							&	\ FOR T%=1% TO 31% STEP 2%					&		\ SUBSTITUTE.TEXT$(T%)=TRM$(ATS.ERROR.MSG$(TT%))	&		\ SUBSTITUTE.TEXT$(T%+1%)=FN.INT.TO.OCT$(		&				LEN(SUBSTITUTE.TEXT$(T%)))		&		\ TT%=TT%+1%						&		\ SUBSTITUTE.TEXT$(TT%+60%)=FN.INT.TO.OCT$(TT%)		&	\ NEXT T%							&	\ OPEN "V62ER.MAC" FOR OUTPUT AS FILE 3%			&	\ T%=FN.PRINT.BLOCK%(3%,300%)					&      	\ T%=FN.PRINT.BLOCK%(3%,301%)					&	\ CLOSE 3%							&	!								&	!	Create the Terminal Error Message Files.		&1300	\ OPEN "NQP.MAC" FOR OUTPUT AS FILE 3%				&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(NUM.OF.TPS%+1%)		&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(ATS.LDBS%)		&	\ SUBSTITUTE.TEXT$(9%)=FN.INT.TO.OCT$(ATS.RDBS%)		&	\ T%=FN.PRINT.BLOCK%(3%,855%)					&	\ CLOSE 3%							&	!								&	!	Set up the NQP.MAC prefix file.				&1350	\ IF NUM.OF.KMC.DZS%<>0%					&	  THEN OPEN "[1,54]KDZ.DAT" FOR OUTPUT AS FILE 3%	      	&		\ SUBSTITUTE.TEXT$(48%)=FN.INT.TO.OCT$(			&					32%*NUM.OF.KMC.DZS%*8%)		&		\ T%=FN.PRINT.BLOCK%(3%,857%)				&		\ CLOSE 3%						&	!								&	!	If we have DZ's create the KDZ.DAT file.		&1500	\ GOTO 32000							& 10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&11000			\ SUBSTI      TUTE.TEXT$(17%)="30" IF			&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=50%	&			\ SUBSTITUTE.TEXT$(17%)="430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=75%	&			\ SUBSTITUTE.TEXT$(17%)="1030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=110%	&			\ SUBSTITUTE.TEXT$(17%)="1430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=134%	&			\ SUBSTITUTE.TEXT$(17%)="2030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=150%	&			\ SUBSTITUTE.TEXT$(17%)="2430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=300%	&			\ SUBSTITUTE.TEXT$(17%)="3030" IF		&				DZ.BAUD.RA      TE%(DZ.UNIT%,CHNL%)=600%	&			\ SUBSTITUTE.TEXT$(17%)="3430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=1200%	&			\ SUBSTITUTE.TEXT$(17%)="4030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=1800%	&			\ SUBSTITUTE.TEXT$(17%)="4430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=2000%	&			\ SUBSTITUTE.TEXT$(17%)="5030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=2400%	&			\ SUBSTITUTE.TEXT$(17%)="5430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=3600%	&			\ SUBSTITUTE.TEXT$(17%)="6030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=4800%	&			\ S      UBSTITUTE.TEXT$(17%)="6430" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=7200%	&			\ SUBSTITUTE.TEXT$(17%)="7030" IF		&				DZ.BAUD.RATE%(DZ.UNIT%,CHNL%)=9600%	&			\ RETURN					&	!								&	!	Set up the Baud Rate.					&12000	\ T$=NUM1$(TERMINAL.NUMBER%)					&	\ FOR T%=1% TO (3%-LEN(T$))					&		\ T$="0"+T$						&	\ NEXT T%							&	\ SUBSTITUTE.TEXT$(2%)=T$+SUBSTITUTE.TEXT$(3%)			&	\ RETURN							&	!								&	!	Generate the terminal name.				&15000	!$**************************************************************&	!      								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO       TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!					      			&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!********************************************************      *******&	!								&	\ SUBEND          šE¸¢“Á› 8$xQ      958	\ MAP	(KERZAP)						&	!								&	  KERZAP.LEVEL$			=  8		!   0	!	&	, KERZAP.SEGMENT.BLOCK$		=  6		!   8	!	&	, KERZAP.PSECT.BLOCK.OFFSET$	=  6		!  14	!	&	, KERZAP.MODULE$		=  6		!  20	!	&	, KERZAP.SRC.LINE.NUM$		=  6		!  26	!	&	, KERZAP.NUM.OF.PAIRS$		=  2		!  32	!	&	, KERZAP.PATCH.PAIRS$(15)	= 24		!  34	!	&	!								&	!	Map for the KERZAP.DAT File				&14914	\ OPEN "[200,200]KERZAP.DAT" AS FILE 5%				!V1.1/1&	,	ORGANIZATION		SEQUENTIAL			&					VARIABLE			&	,	ACCESS			READ				&	,	ALLOW			NONE				&	,	MAP		   ¨  	KERZAP				&	!								&	!	Open the KERZAP.DAT File.				&	!	Modified to expect file in [200,200]			 V1.1/1&14964	\ CLOSE 5%							&	!								&	!	Close the KERZAP.DAT File.				&19894	\ IF (ERR = 5% OR ERR = 162% OR ERR = 136%)			&	  AND ERL = 14914%						&	  THEN								&		  PRINT "? Can't find symbolic data file"		&		\ ERROR.STATUS% = 2%					&		\ RESUME 32000						&	!								&	!	Handle problems in opening KERZAP.DAT.			& ¨         œ	Ña“Á› 8$ d      1	!***************************************************************&	!								&	!								&	!		A U T O Z A P					&	!								&	!								&	!								&	!	Program:	AUTOZAP					&	!	Version:	V1.1					&	!	Edit level:	02					&	!	Edit date:	13-Apr-79				&	!	Author(s):	LBB					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 19      77, 1979  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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D       I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1/1	10-Apr-79 LBB	Invoke FN.SETUP.DIALOGUE%	&	!				  - stmt 1030			&	!				Open KERNEL.TSK with /AB, set	&	!				  fixed value in relocation	&	!				  register		  	&	!				  - stmt 3030			&	!				Don't copy KERNEL.VGN to 	&	!				  KERNEL.TSK - delete stmt 4010	&	!				Specify account [1,1] for	&	!				  KERZAP.ZAP file - stmt 14915	&	!	V1.1      /2	13-Apr-79 LBB	Print "X" at end of KERZAP.ZAP	&	!				  file to exit form ...ZAP -	&	!				  stmt 3080			&	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	      C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		KERNEL.MAP				&	!	    4		Indirect command file KERZAP.ZAP(output)&	!	    5		ZAP command file KERZAP.DAT		&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D           A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPT      ION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$******************      ********************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote       MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ TRUE% = -1%							&	\ FALSE% = 0%							&	!		      						&	!	Set up logical TRUE and FALSE values.			&1020	\ ERROR.STATUS% = 1%						&	!								&	!	Initialize error status word to "success".		&1030	\ T% = FN.SETUP.DIALOGUE%					!V1.1&	!								 V1.1&	!	Open the SGNDLGTXT.VIR file.				 V1.1&2000	!$**************************************************************&	!								&	!								&	!	E X T R A C T   B L O C K   A D D R E S S E S		&	!								&	!		F R O M   .MAP   F I L E			&	!								&	!								&2010	\ DISK.BLK.LIMITS$ = ""						&	\ MODULE.NAME$(T%) = ""		FOR       T% = 0% TO 63%		&	\ MODULE.ADDRESS$(T%) = ""	FOR T% = 0% TO 63%		&	\ NUM.OF.MODULES% = -1%						&	!								&	!	Initialize block pointer.				&	!	Clear module name array.				&	!	Clear module address array.				&	!	Initialize number of modules.				&2020	\ CALL KERXTR							&	!								&	!	Call subprogram to extract data from .MAP file.		&3000	!$**************************************************************&	!								&	!								&	!	B U I L D   I N D I R E C T   C O M M A N D 		&	!								&	!		F I L E   KERZAP.ZA      P				&	!								&	!								&3010	\ GOSUB 14900							&	!								&	!	Open files.						&3030	\ PRINT #4%, "[1,54]KERNEL.TSK/AB"				!V1.1/1&	\ PRINT #4%, "000003:0;1R"					!V1.1/1&	!								&	!	File to be changed: KERNEL.TSK.				&	!	Load block address in relocation register.		&3040	\ GET #5%							&	\ GO TO 3080 IF KERZAP.LEVEL$ = "EOFEOF**"			&	!								&	!	Get next sequential record in KERZAP.DAT file.		&	!	Go to end if end-of-file mark reached.			&3050	\ FOR T% = 0% TO NUM.OF.MODULES%				&		\ GO TO 3055 IF       INSTR(1,KERZAP.MODULE$,MODULE.NAME$(T%))&			<> 0%						&	\ NEXT T%							&	\ GO TO 3040							&	!								&	!	Search module name array for module specified.		&	!	If not found, get next patch from file.			&3055	\ T3055$ = FN.LINE.OFFSET$(KERZAP.MODULE$,KERZAP.SRC.LINE.NUM$)	&	\ GO TO 3040 IF EDIT$(T3055$,6%) = ""				&	\ IF T3055$ = "ERROR"						&	  THEN								&		  PRINT "% Invalid source line number ";		&			KERZAP.SRC.LINE.NUM$;" in module ";		&			KERZAP.MODULE$					&		\ ERROR.STATUS% = 0%					&		\ GO TO 304      0						&	!								&	!	Get offset for this source line.			&	!	Ignore this patch if the source line was not assembled.	&	!	If the source line is in error				&	!		print warning message				&	!		get next patch.					&3060	\ PRINT #4%,"1,";MODULE.ADDRESS$(T%);"+";T3055$;"/";		&	!								&	!	Open the location.					&	!	  (N.B.: no carriage return at end of line.)		&3070	\ NUM.OF.PAIRS% = VAL(KERZAP.NUM.OF.PAIRS$)			&	\ FOR T% = 0% TO NUM.OF.PAIRS% - 1%				&		\ PRINT #4%						&		\ T.VALUE.L1$ = LEFT(KERZAP.PATCH.PAIR      S$(T%),6%)	&		\ T.VALUE.R1$ = MID(KERZAP.PATCH.PAIRS$(T%),7%,6%)	&		\ T.VALUE.L2$ = MID(KERZAP.PATCH.PAIRS$(T%),13%,6%)	&		\ T.VALUE.R2$ = RIGHT(KERZAP.PATCH.PAIRS$(T%),19%)	&		\ T.VALUE.1$ = FN.FINAL.DATA.VALUE$(T.VALUE.L1$,	&						T.VALUE.R1$)		&		\ T.VALUE.2$ = FN.FINAL.DATA.VALUE$(T.VALUE.L2$,	&						T.VALUE.R2$)		&		\ PRINT #4%, T.VALUE.1$;"V"				&		\ PRINT #4%, T.VALUE.2$					&	\ NEXT T%							&	\ GO TO 3040							&	!								&	!	For the number of patch pairs contained in the record,	&	!		first, print       a carriage return (serves 2 func-	&	!		  tions: (1) first time through loop, term-	&	!		  inates command printed at stmt 3060;		&	!		  (2) other times it positions ZAP at succeed-	&	!		  ing word in target file.)			&	!		extract optional module name -- orig. contents	&	!		extract octal offset 	     -- orig. contents	&	!		extract optional module name -- new value	&	!		extract octal offset	     -- new value	&	!		calculate true data value for original contents	&	!		calculate true data value for new value		&	!		      print original contents of word and ask ZAP to	&	!		  verify,					&	!		print new value to be stored.			&	!	Go back and get the next record from KERZAP.DAT.	&3080	\ PRINT #4%, "X"						!V1.1/2&	\ GOSUB 14950							&	!								&	!	Print command to exit from ...ZAP			 V1.1/2&	!	Close files.						&4000	!$**************************************************************&	!								&	!								&	!		Z A P   T H E   F I L E				&	!								&	!								&4020	\ TE% = FN.EXEC.BLOCK%("MCR...",				&				1103%,					&				FALSE%)			      		&	\ IF TE% <> 1%							&	  THEN								&		  PRINT "? Failed to update the KERNEL Task Image"	&		\ ERROR.STATUS% = 2%					&	!								&	!	Spawn task to ZAP the file.				&	!	If ZAP terminates on failure				&	!		print error message				&	!		set error status word to FATAL.			&4030	\ GO TO 32000							&	!								&	!	Exit program.						&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A       M			&	!								&	!								&	!***************************************************************&14915	\ OPEN "[1,1]KERZAP.ZAP" FOR OUTPUT AS FILE 4%			!V1.1/1&	,	ORGANIZATION		SEQUENTIAL			&					VARIABLE			&	,	ACCESS			MODIFY				&	,	ALLOW			NONE				&	,	RECORDSIZE		132				&	!								&	!	Open the KERZAP.ZAP indirect command file.		&14965	\ CLOSE 4%							&	!								&	!	Close KERZAP.ZAP					&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O       C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15100	!$**************************************************************&	!								&	!								&	!	C A L C U L A T E   F I N A L   D A T A   V A L U E	&	!								&	!								&	!	USAGE.FORMAT:	FN.FINAL.DATA.VALUE$(SYMBOLIC.ADDR$,	&	!				OCTAL.OFFSET$)			&	!								&	!	INPUT:	SYMBOLIC.ADDR$	- Either a module name or	&	!				    blank			&	!		OCTAL.OFFSET$	- Either octa      l offset from	&	!				    SYMBOLIC.ADDR$ or a true	&	!				    data value (if SYMBOL-	&	!				    IC.ADDR$ is blank)		&	!								&	!	LOCAL:	T15110%	- temporary working variable		&	!		T15115$ - temporary working variable		&	!								&	!								&	!	This function is used with the ZAP Patch files		&	!	to calculate the octal value of a ZAP patch.  The	&	!	function (1) returns OCTAL.OFFSET$ if SYMBOLIC.ADDR$	&	!	is blank, or (2) searches the array of MODULE.NAMES$	&	!	for SYMBOLIC.ADDR$, retrieves the module address      	&	!	and adds OCTAL.OFFSET$ to get the final data value.	&	!								&	!								&15101	DEF FN.FINAL.DATA.VALUE$(SYMBOLIC.ADDR$,OCTAL.OFFSET$)		&15105		\ IF SYMBOLIC.ADDR$ = "      "				&		  THEN							&			  FN.FINAL.DATA.VALUE$ = OCTAL.OFFSET$		&			\ GO TO 15149					&		!							&		!	If the symbolic address is blank,		&		!		return the offset as the final value	&		!		and exit.				&15110		\ FOR T15110% = 0% TO NUM.OF.MODULES%			&			\ GO TO 15115 					&				IF INSTR(1%,SYMBOLIC.ADDR$,		&				   MODULE.NAME$(T15110%      )) <> 0%		&		\ NEXT T15110%						&		\ PRINT "? Module name ";SYMBOLIC.ADDR$;" not found"	&		\ ERROR.STATUS% = 2%					&		\ FN.FINAL.DATA.VALUE$ = "INVALID"			&		\ GO TO 15149						&		!							&		!	Search array of module names for SYMBOLIC.ADDR$.&		!		Jump out if found.			&		!	If not found, print error message		&		!	set error status to FATAL			&		!	return invalid value				&		!	and exit.					&15115		\ T15115$ = SUM$(FN.OCTAL.TO.DEC$(OCTAL.OFFSET$),	&			FN.OCTAL.TO.DEC$(MODULE.ADDRESS$(T15110%)))	&		\ FN.FINAL.D      ATA.VALUE$ = FN.DEC.TO.OCTAL$(T15115$)	&		!							&		!	Convert offset and address from octal to decimal&		!	  and add.					&		!	Convert sum to octal.				&15149	FNEND								&15200	!$**************************************************************&	!								&	!								&	!	C O N V E R T   F R O M   O C T A L   T O 		&	!								&	!		D E C I M A L	V A L U E			&	!								&	!								&	!	USAGE FORMAT:	FN.OCTAL.TO.DEC$ ( OCTAL.VALUE$ )	&	!								&	!	INPUT:	OCTAL.VALUE$	- value to be converted		&	!								&	!	RETURNS      :	decimal string equivalent of octal value&	!								&	!	LOCAL:	T.FACTOR$	- array of decimal equivalents	&	!				    of octal column positions	&	!		T.SUM$		- temporary working variable	&	!		T15209%		- temporary working variable	&	!		T15210%		- temporary working variable	&	!		T15211%		- temporary working variable	&	!		T.DIGIT$	- temporary working variable	&	!		T.ADDEND$	- temporary working variable	&	!								&	!								&15201	DEF FN.OCTAL.TO.DEC$(OCTAL.VALUE$)				&15205		\ T.FACTOR$ = "3276804096005120006400      00800001"		&		!							&		!	Set up array of octal-decimal equivalents.	&15210		\ T.SUM$ = "000000"					&		\ T15209$ = EDIT$(OCTAL.VALUE$,6%)			&		\ T15209% = LEN(T15209$)				&		\ FOR T15210% = 7% - T15209% TO 6%			&			\ T15211% = T15210% - (7% - T15209%) + 1%	&			\ T.DIGIT$ = MID(T15209$,T15211%,1%)		&			\ T.ADDEND$ = PROD$(T.DIGIT$,MID(T.FACTOR$,	&				(T15210%-1%)*5%+1%,5%),6%)		&			\ T.SUM$ = SUM$(T.SUM$,T.ADDEND$)		&		!							&		!	Initialize sum to zero.				&		!	Edit octal value, discarding excess charact      ers.	&		!	Calculate length of octal string.		&		!	For each digit of octal value,			&		!		calculate digit position,		&		!		extract digit,				&		!		multiply by factor			&		!		add to sum.				&15215		\ NEXT T15210%						&		\ FN.OCTAL.TO.DEC$ = T.SUM$				&		!							&		!	End of loop.					&		!	Return sum.					&15249	FNEND								&15250	!$**************************************************************&	!								&	!								&	!	C O N V E R T   F R O M   D E C I M A L   T O 		&	!								&	!		O C T A L   V A L U E				&	      !								&	!								&	!	USAGE FORMAT:	FN.DEC.TO.OCTAL$ ( DEC.VALUE$ )		&	!								&	!	INPUT:	DEC.VALUE$	- value to be converted		&	!								&	!	RETURNS:	octal string equivalent of decimal value&	!								&	!	LOCAL:	T.FACTOR$	- array of decimal equivalents	&	!				    of octal column positions	&	!		T.REM$		- temporary working value	&	!		T.SUM$		- temporary working variable	&	!		T15260%		- temporary working variable	&	!		T15261%		- temporary working variable	&	!		T.FACT$		- temporary working variable	&	!		T.FA      CT%		- temporary working variable	&	!		T.TRIAL$	- temporary working variable	&	!								&	!								&15251	DEF FN.DEC.TO.OCTAL$(DEC.VALUE$)				&15255		\ T.FACTOR$ = "0409600512000640000800001"		&		\ T.SUM$ = ""						&		\ IF DEC.VALUE$ = "32768"				&		  THEN							&			  T.SUM$ = "100000"				&			\ GO TO 15295					&		!							&		!	Set up array of octal-decimal equivalents.	&		!	Initialize sum to nulls.			&		!	In case the decimal value is 32768		&		!		set the octal value			&		!		skip out.				&15260		\ T.REM% = VA      L(DEC.VALUE$)				&		\ FOR T15260% = 1% TO 5%				&			\ T.FACT$ = MID(T.FACTOR$,(T15260%-1%)*5%+1%,5%)&			\ T.FACT% = VAL(T.FACT$)			&		!							&		!	Initialize remainder to decimal value.		&		!	Loop through digit positions of octal number:	&		!		extract decimal equivalent of this octal&		!		  position				&		!		and convert from string to integer.	&15265			\ FOR T15265% = 7% TO 0% STEP -1%		&				\ T.TRIAL% = T.FACT% * T15265%		&				\ GO TO 15270 IF T.TRIAL% > T.REM%	&				\ T.SUM$ = T.SUM$ + NUM1$(T15265%)	&				      \ T.REM% = T.REM% - T.TRIAL%		&				\ GO TO 15275				&			!						&			!	Loop through octal digits		&			!		calculate trial value		&			!		skip out if trial value exceeds	&			!		  remainder			&			!		append digit to T.SUM string	&			!		subtract trial value to get new	&			!		  remainder			&			!		repeat for next octal position	&15270			\ NEXT T15265%					&			!						&			!	End of loop through octal digits.	&15275		\ NEXT T15260%						&		!							&		!	End of loop through octal digit positions.	&15295		\ FN.DEC.TO.OCTAL$       = T.SUM$				&		!							&		!	Pass out result.				&15299	FNEND								&15450	!$**************************************************************&	!								&	!								&	!	F I N D   O F F S E T   F O R   S O U R C E   L I N E	&	!								&	!	USAGE FORMAT:	FN.LINE.OFFSET$ ( MODULE.NAME$ ,	&	!						LINE.NUM$ )	&	!								&	!	INPUT:	MODULE.NAME$	- name of module to be patched	&	!		LINE.NUM$	- source line to be patched	&	!				  (ASCII string)		&	!								&	!	RETURNS:	offset corresponding to this line number&	!			blank      s if this line wasn't assembled	&	!			"ERROR" if listing file or source line	&	!			  not found				&	!								&	!	LOCAL:	T15455$	- file spec of listing file		&	!		T15455%	- LINE.NUM$ converted to integer	&	!		T15460$	- input buffer for listing file		&	!		T15460%	- source line number of current line of	&	!			    listing file			&	!								&	!	NOTE: This function opens the module listing file 	&	!	on channel 6.						&	!								&	!								&15451	DEF FN.LINE.OFFSET$(MODULE.NAME$,LINE.NUM$)			&15455		\ FN.LINE.OFF      SET$ = "ERROR"				&		\ ON ERROR GO TO 15480					&		\ T15455% = VAL(LINE.NUM$)				&		\ T15455$ = "[11,34]" + MODULE.NAME$ + ".LST"		&		\ T15455$ = EDIT$(T15455$,2%)				&		\ OPEN T15455$ FOR INPUT AS FILE 6%			&		   ,ACCESS		READ				&		!							&		!	Set initial error return value.			&		!	Set up error trap.				&		!	Conver ASCII line number to integer.		&		!	Set up file spec for module source listing file.&		!	Edit spaces.					&		!	Open the listing file.				&15460		\ LINPUT #6%, T15460$					&		\ T15460% = VAL(LE      FT(T15460$,7%))			&		\ GO TO 15490 IF T15460% > T15455%			&		\ GO TO 15460 IF T15460% < T15455%			&		!							&		!	Get line from source listing.			&		!	Extract source line number.			&		!	Skip out if past the desired line.		&		!	Get next line if desired line not yet reached.	&15470		\ FN.LINE.OFFSET$ = ""					&		\ T15470$ = MID(T15460$,9%,6%)				&		\ T = VAL(T15470$)					&		\ FN.LINE.OFFSET$ = T15470$				&		\ GO TO 15490						&		!							&		!	Initialize offset to nulls.			&		!	Extract 6 characters where offset       should be.	&		!	See if it's numeric.  (If not, it will trap	&		!	  to statement 15480.)				&		!	Return offset if numeric.			&		!	Go to end.					&15480		\ RESUME 15460 IF ERR = 52% AND ERL = 15460%		&		\ RESUME 15490 IF ERR = 11% AND ERL = 15460%		&		\ RESUME 15490 IF (ERR = 2% OR ERR = 5%)		&				AND ERL = 15455%			&		\ RESUME 15490 IF ERR = 52% AND ERL = 15470%		&		\ CLOSE T% FOR T% = 1% TO 12%				&		\ ON ERROR GO TO 0					&		!							&		!	Error handling:					&		!							&		!	Non-numeric character in source       line number 	&		!	  field (outcome: get next line).		&		!	End-of-file on listing file (outcome: go to end)&		!	Unable to open listing file (outcome: go to end)&		!	Supposed line offset contains non-numeric	&		!	  character (outcome: return null string).	&		!	All other errors: close files and go to system	&		!	  default error dump out.			&15490		\ CLOSE #6%						&		\ ON ERROR GO TO 19000					&		!							&		!	Close listing file.				&		!	Reset standard default error trap.		&15499	FNEND								&19000	!$*********      *****************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ RESUME 3080							&		IF (ERR = 11% OR ERR = 155%)				&		AND ERL = 3040%						&	!								&	!	EOF on KERZAP.DAT.					&19020	\ IF (ERR = 5% OR ERR = 162% OR ERR = 136%)			&	  AND ERL = 14915%						&	  THEN								&		  PRINT "? Can't find/open file KERZAP.ZAP"		&		\ RESUME 32000						&	!			      					&	!	Handle problems in opening KERZAP.ZAP.			&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$*******************************      *******************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ CALL EXITS2(ERROR.STATUS%,0%)					&	!								&	!	Exit with status.					&32767	!$*********   à   *****************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END à          sQ“Á› 8$"      1	!***************************************************************&	!								&	!								&	!	T R A X       S Y S T E M    U P D A T E		&	!								&	!		  U T I L I T Y					&	!								&	!								&	!								&	!	Program:	CHGMAKER				&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	01					 1.1A01&	!	Edit date:	23-May-79				 1.1A01&	!	Author(s):	WJB					&	!			KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!				      				&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$****      **********************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	BL6-00	012178	  WJB	Field Test Release I		&	!				  (Contains only first I-A 	&	!				   phase)			&	!	BL7-00  022278    WJB   Final release with all phases	&	!	BL7-01	041078	  KMR	Added more safequards for hand-	&	!				  ling files to insur      e integrity&	!				Added safequards for insuring	&	!				  that COPYTAPE does not get in-&	!				  stalled if it is already is.	&	!				Added code to ask for tape unit	&	!				  and to provide this informa-	&	!				  tion to COPYTAPE.		&	!				Moved prompts for CHGCTL skips	&	!				  into phase I-A.		&	!				Copying of files from the CHGCTL&	!				  file now uses FN.VT.COMM%.	&	!				Debugging statements were added.&	!	BL7-02	052478	  KMR	Added code to limit copying and	&	!				  building of components to	&	!				  inte      nded for the target CPU	&	!				  type.				&	!	V1.0							 BL8-00&	!	BL8-00	22-Aug-78 KMR	Final changes for first release	 BL8-00&	!				  version.			 BL8-00&	!	BL8-01	12-Sep-78 KMR	Moved most of the main line	 BL8-01&	!				  debug text to the dialogue	 BL8-01&	!				  file.				 BL8-01&	!				On-line builds were changed to	 BL8-01&	!				  virtual terminal processing	 BL8-01&	!				  to hide error messages.	 BL8-01&	!	V1.1A00	30-Mar-79 KMR	Added check for TT0:.		 1.1A00&	!				Added code to install and remove 1.1A      00&	!				  an indirect processing routine 1.1A00&	!				  for the virtual terminal used	 1.1A00&	!				  to do builds.			 1.1A00&	!	V1.1A01	23-May-79 KMR	Changed building phase to spawn	 1.1A01&	!				  SYSGEN with a special task	 1.1A01&	!				  name.				 1.1A01&	!				Removed virtual terminal support.1.1A01&	!		08-Jun-79 KMR	Re-added virtual terminal	 1.1A01&	!				  support for removal of	 1.1A01&	!				  copytape program.		 1.1A01&	!								&	!***************************************************************&100      	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output      		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/      edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!*******************************************************      ********&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$*****      *********************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIM	 TASK.PARAMETERS%(15%)					&		,STATUS%(1%)						&		,FILE.NAME      $(4%)						&		,FILE.LOCKED%(4%)					&		,OPTIONS.PRESENT%( 19% )				&	!								&	!	Arrays needed for GET TASK PARAMETERS system call.	&	!	Array for file names.					&	!	Array for keeping track of which files we have unlocked	&	!	  once.							&905	\ DIM #10%,	 MISSING.COUNTS%(19)				&			,MISSING.ITEMS$(1023) = 32			&	!								&	!	Cover file mapping for virtual array holding information&	!	  on components that are missing and must be retrieved	&	!	  from tape.						&906	\ DIM	NUM.MISSING.FROM.TAPE%(19)				&	!	      							&	!	Counters accumulating total number of missing 		&	!	  components by tape #.					&907	\ DIM	SEQ.KEYS$(99)						&	!								&	!	List of components to be skipped during copy/checkup	&	!	  and re-build phases.					&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ VT.IS.OPEN%,							!1      .1A00&	  VT.DEBUG%,							&	  BREED.DEBUG%,							&	  DEBUG.FLAG% = 0%						&	\ TE% = FN.SETUP.DIALOGUE%					&	\ GO TO 1005	IF FN.CHECK.TT0%				!1.1A00&	\ SUBSTITUTE.TEXT$(1%) = NUM1$( T2900% )			!1.1A00&	\ TE% = FN.PRINT.BLOCK%( 0%, 1119% )	IF T2900% = 1%		!1.1A00&	\ TE% = FN.PRINT.BLOCK%( 0%, 1120% )	IF T2900% <> 1%		!1.1A00&	\ GO TO 32767							!1.1A00&	!								 1.1A00&	!	Set up the standard error trap.			 	 1.1A00&	!	Initialize some logical variables.			 1.1A00&	!	Set up the dialogue file and functions      .			 1.1A00&	!	Skip the error processing if we are already running	 1.1A00&	!	  from TT0: or batch.					 1.1A00&	!	Put the directive return value into sub text.		 1.1A00&	!	If the directive was successfull, print the "must run	 1.1A00&	!	  from TT0: or batch" message.				 1.1A00&	!	If the directive was not successfull, print the		 1.1A00&	!	  directive error message.				 1.1A00&	!	In all error cases, go exit.				 1.1A00&1005	\ CALL GETTSK BY REF (TASK.PARAMETERS%(),STATUS%())		!1.1A00&	\ IF TASK.PARAMETERS%      (7%) <> 257%				&	  THEN								&		  TE% = FN.PRINT.BLOCK%( 0%, 1124% )			!BL8-01&		\ GO TO 32767						&	  ELSE								&		  TE% = FN.EXEC.BLOCK%(	"MCR...",			!1.1A00&					655%,				!1.1A00&					FALSE%	)			!1.1A00&		!							 1.1A00&		!	Make assignments to current SY:			 1.1A00&		!							 1.1A00&		\ TAPE.NUMBER% = 4%					!1.1A00&		!							&		!	Set the tape number to 4 for the option check.	&		!							&		\ PHSCTL.FILE.OPEN% = FALSE%				&		!							&		!	Indicate that the Phase Control file is not	&		!	  open.				      		&		!							&		\ FILE.LOCKED%(T%) = FALSE%	FOR T% = 0% TO 4%	&		\ FILE.NAME$(0%) = '[7,4]COPYCNTRL.FIL'			&		\ FILE.NAME$(1%) = 'CHNGCNTRL.FIL'			!BL8-01&		\ FILE.NAME$(2%) = 'MISSING.VIR'			&		\ FILE.NAME$(3%) = 'REBUILDEM.CMD'			&		\ FILE.NAME$(4%) = 'UPDTRXPHA.SES'			&		!							&		!	Initialize file locked flags.			&		!	Initialize the file names we will use.		&		!							&		\ NUM.OF.TAPES.ALLOCATED%,				!BL8-01&		  NUM.OF.VOLUMES%		= 1%			!BL8-01&		\ DRIVE.ALLOCATED%,					!BL8-01&		  TAPE.MOUNTED%		= FALS      E%			!1.1A00&		\ VOLUME.LABEL$	= "CHGTAP"				!BL8-01&		!							 BL8-01&		!	Make sure that if we attempt to dismount the	 BL8-01&		!	  tape we will be able to.			 BL8-01&		!							 BL8-01&		\ MY.TASK.NAME$ = RAD$(TASK.PARAMETERS%(0%))		&				+ RAD$(TASK.PARAMETERS%(1%))		&		\ GO TO 1010	IF MY.TASK.NAME$ <> "UPDCHG"		&		\ DRIVE.ALLOCATED%,					!1.1A00&		  TAPE.MOUNTED%		= TRUE%				!1.1A00&		!							 1.1A00&		!	Assume that the tape is still mounted and drive	 1.1A00&		!	  still allocated if we come in here.		 1      .1A00&		!							 1.1A00&		\ GO SUB 10900		! Setup phase control !		&		\ GO SUB 13000		! Check options	      !		&		\ GO TO 2000						&	!								&	!	Set up standard default error trap			&	!	Get the parameters for this version of CHGMAKER.	&	!	If we are not running in [1,1], abort with err message.	&	!	Otherwise, set up some defaults.			&	!		Get the task name and check it.  		&	!	  If we are the SPAWNed updated version, 		&	!	  then set up the phase control, check what options are	&	!	  present, and proceed im      mediately to Phase I-B.	&1010	\ VER.EDIT.NUM$ = "V1.1A"					!BL8-00&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "CHGMAKER	"; VER.EDIT.NUM$; "   ";		&	\ PRINT								&	\ PRINT "TRAX System Update Utility"				&	\ PRINT								&	!								&	!	Output program herald messages				&1100	!$**************************************************************&	!								&	!								&	!	P H A S E    C O N T R O L				&	!								&	!								&	!	Branch to the following statements according       to the	&	!	  phase we are in:					&	!								&	!								&	!		1200		Phase I-A and I-B(2000)		&	!		3000		Phase II			&	!		4000		Phase III			&	!		5000		Phase IV			&	!								&	!	If there is no Phase Control File (PHSCNTRL.FIL), or 	&	!	  the new phase is 5, then create a new file and set 	&	!	  set the phase number to 1 before proceeding.		&	!								&	!								&	\ GO SUB 10900		! Set up phase control file	!	&	\ GO SUB 13000		! Check options	!			&	\ ON PHSCTL.PHASE.NUM%						&	  GO TO								&		 1200,			! Phas      e I-A,I-B		!	&		 3000,			! Phase II		!	&		 4000,			! Phase III		!	&		 5000			! Phase IV		!	&	!								&	!	First, set up the Phase Control File.			&	!	Next, check the options present.			&	!	Finally, select the proper section of code to transfer	&	!	  to.							&1200	!$**************************************************************&	!								&	!								&	!	S I G N A L    S T A R T    O F    P H A S E		&	!								&	!								&	\ SUBSTITUTE.TEXT$( 10% ) = TIME$( 0% )				&	\ TE% = FN.PRINT.BLOCK%( 0%, 1200% )				&      	!								&	!	Print out phase message.				&1202	!$**************************************************************&	!								&	!								&	!	G E T    C P U    T Y P E				&	!								&	!								&	!***************************************************************&	!								&	\ SUBSTITUTE.TEXT$( 1% ) = "update"				&	\ ASK.RANGE( 0% ) = 2%						&	\ PHSCTL.CPU.TYPE$ = "70"					&	!								&	!	Set up the variable part of the prompt/help text.	&	!	Set the maximum length of the reply expected to 2.	&	!	Assume that the rep      ly will be "70".			&	!								&	\ ON FN.ASK%(	1096%,		! Query			!	&			"70",		! Default to "70"	!	&			"/34/60/70",	! Allow 34, 60 & 70	!	&			TRUE%,		! Check the length	!	&			1%	)	! Prompt at level 1	!	&		GO TO							&			1202,		! Escape		!	&			32000,		! Control Z		!	&			1204,		! Response was "34"	!	&			1204,		! Response was "60"	!	&			1210		! Response was "70"	!	&	!								&	!	Ask the user for the type of CPU the change is being	&	!	  made for.						&1204	\ PHSCTL.CPU.TYPE$ = ASK.CVT$					&	!								&	!	If th      e answer was 34 or 60, store it in the phase	&	!	  control record.  If it was 70, it was already placed	&	!	  there.						&1210	!$**************************************************************&	!								&	!								&	!	A S K    Q U E S T I O N S    F O R    P H A S E    I	&	!								&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 1014% )				&	\ ASK.RANGE(0%) = 5%		! Maximum length of 5	!	&	\ ON FN.ASK%(	1034%,		! Query number		!	&			'',		! No default		!	&			'',		! Any string is OK	!	&			TRUE%,		! Do length check	!      	&			1%	       )! Prompt at level 1	!	&	  GO TO								&		1202,			! <ESC>			!	&		32000,			! Control Z		!	&		1220			! Normal response	!	&	!								&	!	Make sure we have the current record in the Phase	&	!	  Control File.						&	!	Tell the user to mount the change tape.			&	!	Prompt the user for the unit on which he put the tape.	&1220	\ PHSCTL.TAPE.UNIT$,						!BL8-01&	  UNIT.ID$	= ASK.CVT$					!BL8-01&	\ UPDATE #4%							&	\ TE% = FN.PRINT.BLOCK%( 0%, 1126% )	IF DEBUG.FLAG%		!BL8-01&	!								&	!	Save the t      ape unit name in the Phase Control File.	&	!	Return the buffer to the file.				&	!	Get it back so we can update it.			&1250	!$**************************************************************&	!								&	!								&	!	P H A S E    I - A :    A S S I M I L A T E    A L L	&	!								&	!	N E W    R E P L A C E M E N T    C O M P O N E N T S	&	!								&	!								&	!		Copy in all new replacement components from	&	!	the Change Tape via COPYTAPE.				&	!								&	!								&	\ GOSUB 11000							&	!								&	!	Install t      he COPYTAPE Utility.				&	!								&	\ SUBSTITUTE.TEXT$(2%) = "/SKIP/NORW"				&	\ SUBSTITUTE.TEXT$(4%) = "/UNIT:"				&				+ TRM$( PHSCTL.TAPE.UNIT$ )		&				+"/CPU:" + TRM$( PHSCTL.CPU.TYPE$ )	&	\ SUBSTITUTE.TEXT$(1%) = "4"					&	\ SUBSTITUTE.TEXT$(5%) = ""					&	\ SUBSTITUTE.TEXT$(5%) = "/DEBUG"	IF DEBUG.FLAG%		&	\ TE% = FN.PRINT.BLOCK%( 0%, 1128% )	IF DEBUG.FLAG%		!BL8-01&	\ STATUS% = FN.EXEC.BLOCK%("...CTP",				&				   1101%,				&				   FALSE%	)			&	!								 1.1A00&	!	Copy the files.						 1.1A00&	!					      			 1.1A00&	\ IF STATUS% = 1%						!1.1A00&	  THEN	  DRIVE.ALLOCATED%,					!1.1A00&		  TAPE.MOUNTED%		= TRUE%				!1.1A00&		\ GO TO 1300						!1.1A00&	!								 1.1A00&	!	If status from the copy tape was successfull, set the	 1.1A00&	!	  drive as allocated and tape as mounted.		 1.1A00&	!								 1.1A00&	  ELSE	  DRIVE.ALLOCATED%,					!1.1A00&		  TAPE.MOUNTED%		= FALSE%			!1.1A00&		\ GO TO 1210	IF STATUS% / 8% = 99%			!1.1A00&		\ GO TO 32000						!1.1A00&	!								 1.1A00&	!	If the status was not successfull      , indicate that the	 1.1A00&	!	  tape is not mounted and the drive is not allocated.	 1.1A00&	!	If the status was "bad unit" go reprompt.		 1.1A00&	!	Go exit with error otherwise.				 1.1A00&1300	!$**************************************************************&	!								&	!								&	!	C H E C K    C O P Y C N T R L     F I L E    T O	&	!								&	!	T O    S E E    I F    CHGMAKER    U P D A T E D	&	!								&	!								&	\ FILE.NUM% = 0%						&	\ OPEN FILE.NAME$(FILE.NUM%) FOR INPUT AS FILE 2%		&		,ORGANIZAT      ION	SEQUENTIAL				&				FIXED					&		,ACCESS		READ					&		,ALLOW		READ					&		,MAP		CPYCTL					&	\ GO TO 1310	IF NOT DEBUG.FLAG%				!BL8-01&	\ SUBSTITUTE.TEXT$( 10% ) = TRM$( FILE.NAME$( FILE.NUM% ))	!BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1130% )				!BL8-01&	!								&	!	Open the file for searching.				&1310	\ GET #2%							&	\ GO TO 1320	IF CPYCTL.COMPONENT.NAME$ = "CHGMAKER.TSK"	&	\ GOSUB 11010	IF CPYCTL.COMPONENT.NAME$ = "COPYTAPE.TSK"	&	\ GO TO 1310							&	!								&	!	Scan each entry in file to see if a       new version of	&	!	  CHGMAKER was brought across.				&	!	If a new version of CHGMAKER was found, go set it up and&	!	  and exit.						&	!	If a new version of COPYTAPE was found on the tape,	&	!	  remove the currently installed version.		&	!	Go check the next element from the tape.		&1320	\ GOSUB 11010							&	\ TE% = FN.PRINT.BLOCK%( 0%, 1132% )	IF DEBUG.FLAG%		!BL8-01&	\ TE% = FN.EXEC.BLOCK%("MCR...",				&			       1104%,					&			       FALSE%	)				&	\ TE% = FN.PRINT.BLOCK%( 0%, 1134% )	IF DEBUG.FLAG%		!B      L8-01&	\ CLOSE T%	FOR T% = 1% TO 12%				&	\ GO TO 32767							&	!								&	!	Remove the COPYTAPE unility if it is installed.		&	!	Install and run the new version of CHGMAKER.		&	!	INSTALL is instructed to return status so that this	&	!	  version of CHGMAKER may exit and go away.		&1900	!$**************************************************************&	!								&	!								&	!	E N D    P H A S E    I-A				&	!								&	!								&	\ CLOSE #2%							&	\ GO TO 2000	IF NOT DEBUG.FLAG%				!BL8-01&	\ SUBSTITUTE.TEXT$      ( 11% ) = TRM$( FILE.NAME$( 0% ))		!BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1136% )				!BL8-01&	!								&	!	Close the COPYCNTRL File.				&2000	!***************************************************************&	!								&	!								&	!	P H A S E    I - B					&	!								&	!	    C H E C K    O N    O L D    C O M P O N E N T S	&	!								&	!	    A N D    A D D    N E W    O N E S    N E E D E D	&	!								&	!	    D U R I N G    U P D A T E    P R O C E S S I N G	&	!								&	!								&	!	The rest of the components       contained on the Change	&	!	Tape are copied onto the system disk.  Additionally,	&	!	any components that should be present on the disk	&	!	as copied from another Release Kit tape, or the		&	!	Kernel Image Save Tape, are checked for.  If they are	&	!	not present, an entry in made in the MISSING.ITEMS$	&	!	list for retrieval in Phase II.				&	!								&	!								&	\ SUBSTITUTE.TEXT$( 10% ) = TIME$( 0% )				&	\ TE% = FN.PRINT.BLOCK%( 0%, 1201% )				&	!								&	!	Signal the start of the phase.				&2100	!$****      **********************************************************&	!								&	!								&	!	C H E C K    F O R    C O M P O N E N T S    T O	&	!								&	!			 S K I P P E D				&	!								&	!								&	\ NUM.TO.SKIP% = 0%						&	\ ON FN.ASK%(	1202%,		! Query text index	!	&			"NO",		! NO is default		!	&			"Y",		! YES/NO response	!	&			FALSE%,		! No checking		!	&			1%	       )! Level = 1		!	&	  GO TO								&		 2100,			! ESC			!	&		32000,			! CTRL/Z		!	&		 2110,			! YES			!	&		 2200			! NO			!	&	!								&	!	See if the      re are any copies/checkups to be skipped.	&2110	\ ASK.RANGE(0%) = 20						&	\ ON FN.ASK%(	1203%,		! Query text index	!	&			"DONE",		! DONE is the default	!	&			"",		! Any response ok	!	&			TRUE%,		! Limit to 20 chars	!	&			2%	       )! Level = 2		!	&	  GO TO								&		 2100,			! ESC			!	&		32000,			! CTRL/Z		!	&		 2120			! Valid response	!	&	!								&	!	Ask for next skip key value.				&2120	\ ASK.CVT$ = EDIT$(ASK.CVT$,32%)				&	\ GO TO 2200	IF ASK.CVT$ = "DONE"				&	\ SEQ.KEYS$(NUM.TO.SKIP%) = ASK.CVT$				      &	\ GO TO 2130	IF NOT FN.SEQUENCE.KEY.VALID%( ASK.CVT$ )	&	\ NUM.TO.SKIP% = NUM.TO.SKIP% + 1%				&	\ GO TO 2110							&	!								&	!	Make sure response is in UPPERCASE.			&	!	Exit if DONE.						&	!	Go print an error if the sequence key is invalid.	&	!	Otherwise, add new entry to list and bump list counter.	&2130	\ TE% = FN.PRINT.BLOCK%( 0%, 1217% )				&	\ GO TO 2110							&	!								&	!	Tell the user that his sequence key does not check.	&	!	Go let him enter another one.				&2200	!$*************************      *************************************&	!								&	!								&	!	S E T U P    T O    P R O C E S S    CHGCNTRL	F I L E	&	!								&	!								&	\ GOSUB 10900							!BL8-01&	!								 BL8-01&	!	Make sure that we have the latest phase control record.	 BL8-01&	!								 BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1138% )	IF DEBUG.FLAG%		!BL8-01&	\ SUBSTITUTE.TEXT$( 1% ) = PHSCTL.TAPE.UNIT$			&	\ STATUS% = FN.EXEC.BLOCK%("MCR...",				&				   1204%,				&				   FALSE%	)			&	\ SUBSTITUTE.TEXT$( 12% ) = NUM1$( STATUS% )	IF D      EBUG.FLAG%	!BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1140% )		IF DEBUG.FLAG%	!BL8-01&	\ IF STATUS% <> 1%						&	  THEN								&		  TE% = FN.PRINT.BLOCK%( 0%, 1142% )			!BL8-01&		\ GO TO 32000						&	!								&	!	Copy in the CHGCNTRL File.				&	!	If an error occurs, signal with message and abort the	&	!	  processing.						&2205	\ GOSUB 10300							&	\ GOSUB 10100							&	!								&	!	Dismount the tape, if mounted.				&	!	Deallocate the drive, if allocated.			&2210	\ FILE.NUM% = 1%						&	\ OPEN FILE.NAME$(FILE.N      UM%) FOR INPUT AS FILE 6%		&		,ORGANIZATION	SEQUENTIAL				&				FIXED					!BL8-01&		,ALLOW		READ					&		,ACCESS		READ					&		,MAP		CHGCTL					&	\ GO TO 2220	IF NOT DEBUG.FLAG%				!BL8-01&	\ SUBSTITUTE.TEXT$( 10% ) = TRM$( FILE.NAME$( FILE.NUM% ))	!BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1130% )				!BL8-01&	!								&	!	Open the control file for business.			&2220	\ FILE.NUM% = 2%						&	\ OPEN FILE.NAME$(FILE.NUM%) AS FILE 10%			&		,ORGANIZATION	VIRTUAL					&	\ GO TO 2230	IF NOT DEBUG.FLAG%				!BL8-01&	\ SUBSTIT      UTE.TEXT$( 10% ) = TRM$( FILE.NAME$( FILE.NUM% ))	!BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1130% )				!BL8-01&	!								&	!	Cover the arrays to hold the list of missing items	&	!	  and counts/tape.					&2230	\ NUM.MISSING.FROM.TAPE%(T%) = 0%				&		FOR T% = 0% TO 19%					&	\ NUM.OF.MISSING.ITEMS% = 0%					&	\ SUBSTITUTE.TEXT$(1%) = PHSCTL.TAPE.UNIT$			&	!								&	!	Clear the counters for the number of missing items on	&	!	  each tape.  						&	!	Clear the counter of number of items entered into the	&	!	  missi      ng items list.					&	!	Get the tape unit number into the substitute text for	&	!	  following copies and checks.				&2400	!$**************************************************************&	!								&	!								&	!	P R O C E S S    C U R R E N T    E N T R Y		&	!								&	!								&	\ GET #6%							&	\ GO TO 2400	IF CHGCTL.SEQUENCE.KEY$ = SEQ.KEY$(T%)		&				FOR T% = 0% TO (NUM.TO.SKIP%-1%)	&	\ GO TO 2400							&		IF OPTIONS.PRESENT%(VAL(CHGCTL.TAPE.NUM$)) = FALSE%	&	\ TE$ = TRM$( MID( CHGCTL.SEQUENCE.KEY$, 13%,       2% ))		&	\ GO TO 2400	IF  TE$ <> PHSCTL.CPU.TYPE$			&			AND TE$ <> "**"					&	\ FILE.NAME$	= TRM$( CHGCTL.TARGET.UFD$			&			+ CHGCTL.COMPONENT.NAME$ )			&	!								&	!	Get the next record in the change control file.		&	!	Skip it if it is one of the ones to skip.		&	!	Skip this one if it applies to an option that is not	&	!	  present.						&	!	Extract the CPU type from the sequence key.		&	!	Skip this component if 1) it's CPU type does not	&	!	  match the target cpu type and 2) it does not apply to	&	!	  al      l CPU types.					&	!	Construct the file name from the change control record.	&2410	\ OPEN FILE.NAME$ FOR INPUT AS FILE #5%				&	\ CLOSE #5%							&	\ GO TO 2400							&	!								&	!	Attempt to open the file.  We will trap if not there or	&	!	  if the wrong kind of file.				&	!	We can be sure the file is there if we get to the close.&	!	Go back for another change control record.		&2420	\ MISSING.ITEMS$(NUM.OF.MISSING.ITEMS%) =			&		  CHGCTL.TAPE.NUM$					&		+ CHGCTL.TARGET.UFD$					&		+ CHGCTL.COMPONENT.NAME      $				&	\ SUBSTITUTE.TEXT$( 13% ) =					!BL8-01&		TRM$( CHGCTL.TARGET.UFD$+CHGCTL.COMPONENT.NAME$ )	!BL8-01&					IF DEBUG.FLAG%			!BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1144% )	IF DEBUG.FLAG%		!BL8-01&	\ T% = VAL(CHGCTL.TAPE.NUM$)					&	\ NUM.OF.MISSING.ITEMS% = NUM.OF.MISSING.ITEMS% + 1%		&	\ SUBSTITUTE.TEXT$( 14% ) = NUM1$( NUM.OF.MISSING.ITEMS% )	!BL8-01&						IF DEBUG.FLAG%		!BL8-01&&	\ TE% = FN.PRINT.BLOCK%( 0%, 1146% )	IF DEBUG.FLAG%		!BL8-01&	\ NUM.MISSING.FROM.TAPE%(T%) =					&		NUM.MISSING.FROM.TAPE%      (T%) + 1%				&	\ SUBSTITUTE.TEXT$( 15% ) = NUM1$( T% )	IF DEBUG.FLAG%		!BL8-01&	\ SUBSTITUTE.TEXT$( 16% ) = NUM1$( NUM.MISSING.FROM.TAPE%( T% ))!BL8-01&						IF DEBUG.FLAG%		!BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1148% )	IF DEBUG.FLAG%		!BL8-01&	\ GO TO 2400							&	!								&	!	Make entry in missing items list.			&	!	Count on items in list.					&	!	Count on items missing from associated tape.		&	!	Go back for another record.				&2600	!$**************************************************************&	!							      	&	!								&	!	C L E A N U P    A F T E R    F I L E    C O P Y	&	!								&	!		A N D      C H E C K U P			&	!								&	!								&	\ CLOSE #6%							&	\ SUBSTITUTE.TEXT$( 11% ) = TRM$( FILE.NAME$( 1% ))		!BL8-01&						IF DEBUG.FLAG%		!BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1136% )	IF DEBUG.FLAG%		!BL8-01&	!								&	!	Close the CHGCNTRL File.				&	!								&	\ GO SUB 10300							&	\ GO SUB 10100							&	!								&	!	Rewind, dismount and deallocate the tape drive.		&2900	!$************************************      **************************&	!								&	!								&	!	C L E A N U P    P H A S E    I-B			&	!								&	!								&	\ GOSUB 10900							&	\ PHSCTL.PHASE.NUM% = 2%					&	\ UPDATE #4%							&	\ TE% = FN.PRINT.BLOCK%( 0%, 1126% )	IF DEBUG.FLAG%		!BL8-01&	\ GO TO 1100							&	!								&	!	Get the latest Phase Control Record.			&	!	Set to Phase II processing.				&	!	RE-write the record in the Phase Control File.		&3000	!$**************************************************************&	!								&	!								&	!	P H A S       E    I I					&	!								&	!		R E T R I E V E    M I S S I N G    F I L E S	&	!								&	!		N E E D E D    I N   U P D A T E   P R O C .	&	!								&	!								&	\ SUBSTITUTE.TEXT$( 10% ) = TIME$( 0% )				&	\ TE% = FN.PRINT.BLOCK%( 0%, 1207% )				&	!								&	!	Signal progress with herald message.			&	!								&	\ GO TO 3900	IF NUM.OF.MISSING.ITEMS% = 0%			&	!								&	!	If all files are accounted for the go to end of phase	&	!	  processing.						&3100	!$*******************************************************      *******&	!								&	!								&	!	C Y C L E    T H R O U G H     T A P E S E T		&	!								&	!	  L O O K I N G    F O R    C O M P O N E N T S		&	!								&	!								&	\ GOSUB 11000							&	\ SUBSTITUTE.TEXT$( 2% ) = "/MISSING/UNIT:" + PHSCTL.TAPE.UNIT$	&				 + "/CPU:" + PHSCTL.CPU.TYPE$		&	\ SUBSTITUTE.TEXT$( 4% ) = ""					&	\ SUBSTITUTE.TEXT$( 4% ) = "/DEBUG"	IF DEBUG.FLAG%		&	\ TAPE.NUMBER% = 3%						&	\ WHILE TAPE.NUMBER% < 11%					&		\ GO TO 3130	IF TAPE.NUMBER% = 4%			&	!								&	!	Install COPYTAPE if       not installed.			&	!	Set up the COPYTAPE switches that do not change.	&	!	Set up the DEBUG switch for COPYTAPE if our DEBUG	&	!	  switch is set.					&	!	Initialize to look at tape 3 first.			&	!	Look at all tapes, including the Kernel Image Save Tape	&	!		Skip tape 4, the Change Tape.			&	!								&		\ GO TO 3130						&			IF OPTIONS.PRESENT%(TAPE.NUMBER%) = FALSE%	&		\ GO TO 3130						&			IF NUM.MISSING.FROM.TAPE%(TAPE.NUMBER%) = 0%	&		!							&		!	Skip if the associated option is missing.	&		!	Skip if the      re are no missing components on this	&		!	  tape.						&		!							&		\ GO SUB 12000						&		!							&		!	Process the current tape.			&		!							&3130		\ TAPE.NUMBER% = TAPE.NUMBER% + 1%			&	\ NEXT								&	!								&	!		Advance to next tape in kit.			&	!	End of tape processing loop.				&3900	!$**************************************************************&	!								&	!								&	!	C L E A N U P    P H A S E    I I			&	!								&	!								&	\ PRINT SPACE$( 9% ); FN.TEXT.LINE$( 1208% )			&	!								&	!	Signal       the end of processing.				&	!								&	\ PHSCTL.PHASE.NUM% = 3%					&	\ UPDATE #4%							!BL8-01&	\ TE% = FN.PRINT.BLOCK%( 0%, 1126% )		IF DEBUG.FLAG%	!BL8-01&	\ GOSUB 11010							&	\ GO TO 1100							&	!								&	!	Make sure we have the latest Phase Control File record.	&	!	Update to Phase III.					&	!	Remove COPYTAPE if installed (note that this subroutine	&	!	  puts the record back and closes the file).		&	!	Return to the phase control point.			&4000	!$****************************************************      **********&	!								&	!								&	!	D O    T H E    B U I L D S				&	!								&	!								&	!***************************************************************&								!	&	\ SUBSTITUTE.TEXT$(10%) = TIME$(0%)				&	\ TE% = FN.PRINT.BLOCK%( 0%, 1209% )				&	!								&	!	Tell the user what we are doing now:			&	!	Phase III - rebuilds					&	!								&	\ GOSUB 10900							&	!								&	!	Make sure we have the latest Phase Control Record.	&	!								&	\ TE% = FN.EXEC.BLOCK%(	"MCR...",				&				1113%,					&				FALSE%	)		      		&	!								&	!	Spawn SYSGEN with a special name to do our builds.	&	!								&4800	!$**************************************************************&	!								&	!								&	!	C L O S E    O U T    R E - B U I L D			&	!								&	!		O P E R A T I O N				&	!								&	!								&	\ CLOSE #6%, #7%						!BL8-01&	\ GO TO 4900	IF TE% = 1%					!1.1A01&	\ SUBSTITUTE.TEXT$(1%) = NUM1$(ERROR.COUNT%)			&	\ PRINT SPACE$( 9% ); FN.SUB.TEXT$( FN.TEXT.LINE$( 1213% ))	&	\ GO TO 32000							&	!								&	!	No errors - success.	      				&	!	Otherwise, prepare to send error message about the	&	!	  number of errors that occurred.			&	!	Abort further processing.				&4900	!$**************************************************************&	!								&	!								&	!	C L E A N U P    P H A S E    I I I			&	!								&	!								&	\ PHSCTL.PHASE.NUM% = 4%					&	\ UPDATE #4%	 						&	\ TE% = FN.PRINT.BLOCK%( 0%, 1126% )	IF DEBUG.FLAG%		!BL8-01&	\ GO TO 1100							&	!								&	!	Advance to Phase IV - SETUP completion.			&	!	Re-write record to the phas      e control file.		&	!	Go back to phase control point.				&5000	!$**************************************************************&	!								&	!								&	!	P H A S E    IV						&	!								&	!		D R I V E    SETUP    T O    C O M P L E T E	&	!								&	!		U P D A T E    O P E R A T I O N		&	!								&	!								&	\ SUBSTITUTE.TEXT$( 10% ) = TIME$( 0% )				&	\ TE% = FN.PRINT.BLOCK%( 0%, 1214% )				&	\ TE% = FN.PRINT.BLOCK%( 0%, 1215% )				&	!								&	!	Signal progress with herald message.			&	!	Announce spawning o      f SETUP to complete the update	&	!	  operations.						&	!								&	\ TE% = FN.EXEC.BLOCK%("MCR...",				&			       1216%,					&			       FALSE%	)				&	\ GO TO 32000							!BL8-01&	!								&	!	SPAWN SETUP, with no wait for exit status.		&	!	All done, go to end-of-job processing.			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!*********************      ******************************************&10900	!$**************************************************************&	!								&	!								&	!	S E T U P    P H A S E    C O N T R O L    F I L E	&	!								&	!								&	!	This routine opens up the Phase Control File,		&	!	UPDTRXPHA.SES, and reads in Record #1.			&	!								&	!	If there is no previous version of the file,		&	!	a new file is created and initialized to Phase I-A.	&	!	When a new file is created, we mark COPYTAPE as not	&	!	installed, and then use a v      irtual terminal to REMOVE	&	!	it.  This is done to assure that the user sees no error	&	!	if COPYTAPE is not installed.				&	!								&	!								&	!***************************************************************&	!								&	\ FILE.NUM% = 4%						&	\ OPEN FILE.NAME$(FILE.NUM%) FOR INPUT AS FILE 4%		&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		PHSCTL					&			IF PHSCTL.FILE.OPEN% = FALSE%			&	\ PRINT FILE.NAME$(FILE.NUM%); ' opened on channel 4'		&		IF DEBUG      .FLAG% AND NOT PHSCTL.FILE.OPEN%		&	\ PHSCTL.FILE.OPEN% = TRUE%					&	\ GET #4%,	RECORD 1%					&	\ PRINT 'Latest Phase Control record accessed'	IF DEBUG.FLAG%	&	\ GO TO 10920	IF PHSCTL.PHASE.NUM% < 1%			&			OR PHSCTL.PHASE.NUM% > 4%			&	\ VT.DEBUG%,							!BL8-01&	  BREED.DEBUG%,							!BL8-01&	  DEBUG.FLAG% = (PHSCTL.DEBUG.FLAG% OR DEBUG.FLAG%)		&	\ UNIT.ID$ = TRM$( PHSCTL.TAPE.UNIT$ )				!BL8-01&	\ RETURN							&	!								&	!	Open the file, if one exists and it is not open.	&	!	Mark the file as open.					      &	!	Get the first record.					&	!	Verify phase number in correct range.			&	!	If all checks out, exit to caller.			&10910	\ OPEN FILE.NAME$(FILE.NUM%) FOR OUTPUT AS FILE 4%		&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		NONE					&		,MAP		PHSCTL					&	\ PRINT FILE.NAME$(FILE.NUM%); ' created, opened on channel 4'	&		IF DEBUG.FLAG%						&	\ PHSCTL.DEBUG.FLAG% = DEBUG.FLAG%				&	\ PHSCTL.FILE.OPEN% = TRUE%					&	!								&	!	Create a new version of the Phase Control File.		&	!	M      ark the file as open.					&10920	!***************************************************************&	!								&	!								&	!	I N S U R E    C O P Y T A P E    R E M O V E D		&	!								&	!								&	\ TE% = FN.VT.CREATE%						&	\ VT.IS.OPEN% = TRUE%						&	!								&	!	Create a virtual terminal.				&	!	Indicate that the virtual terminal is open.		&	!								&	\ SUBSTITUTE.TEXT$(1%) = FN.INT.TO.OCT$( TE% )			&	\ TE% = FN.EXEC.BLOCK%(	'MCR...',				&				913%,					&				FALSE%	)				&	!								&	!	Do the necessary r      e-assignments for the virtual terminal&	!								&	\ FOR T% = 1197% TO 1199%					&	!								&	!	Cycle through the commands we must execute to insure	&	!	  that COPYTAPE is not installed:			&	!								&	!		1197:=	HELLO	1/1				&	!		1198:=	REM	...CTP				&	!		1199:=	BYE					&	!								&		\ VT.CMD$ = LEFT( FN.SUB.TEXT$( FN.TEXT.LINE$(T%)),79%)	&		\ TE% = FN.TASK.INIT%( "MCR..." )			&		!							&		!	Get the next command.				&		!	Go let MCR handle it.				&10930		\ ON FN.VT.COMM%( "", "" )				&		  GO TO							&			10      940,		! Program Exitted	!	&			10930,		! Program Prompted	!	&			10930,		! Input Requested	!	&			10930,		! Normal Output		!	&			10930		! Error Output		!	&		!							&		!	See what MCR has to say.			&10940		\ NEXT T%						&		!							&10950	\ TE% = FN.VT.DONE%						&	\ VT.IS.OPEN% = FALSE%						&	\ PHSCTL.CTP.INSTALLED% = FALSE%				&	\ PRINT 'COPYTAPE removed via VT'	IF DEBUG.FLAG%		&	!								&	!	Indicate that MCR is not longer running.		&	!	Shut off the virtual terminal.				&	!	Indicate that the virtual termina      l is off.		&	!	Indicate that COPYTAPE is not installed.		&	!								&	\ PHSCTL.PHASE.NUM% = 1%					&	\ PUT #4%, RECORD 1%						&	\ PRINT 'Phase Control record written'	IF DEBUG.FLAG%		&!	\ GET #4%, RECORD 1%						&!	\ PRINT "Phase Control record gotten"	IF DEBUG.FLAG%		&	\ GOSUB 10900							&	\ RETURN							&	!								&	!	Force the phase to 1.					&	!	Return the Phase Control record to the file.		&	!	Get the phase control record back again.		&	!	Return to the caller.					&11000	!$***************************      ***********************************&	!								&	!								&	!	I N S T A L L    C O P Y T A P E    U T I L I T Y	&	!								&	!								&	!	This subroutine checks to see if the COPYTAPE utility	&	!	  is installed.  If not, it installs it and notes the	&	!	  fact that it is installed in the appropriate manner.	&	!								&	!								&	\ GOSUB 10900							&	\ RETURN	IF PHSCTL.CTP.INSTALLED%			&	\ TE% = FN.EXEC.BLOCK%('MCR...',				&				1100%,					&				FALSE%	)				&	\ PHSCTL.CTP.INSTALLED% = TRUE%					&	\ PRINT 'CO      PYTAPE installed'	IF DEBUG.FLAG%			&	\ GO TO 11020							&	!								&	!	Make sure we have the latest Phase Control record.	&	!	If COPYTAPE is already installed, just return.		&	!	Install the COPYTAPE utility.				&	!	Indicate that COPYTAPE is installed.			&	!	Go to the common ending routine.			&11010	!$**************************************************************&	!								&	!								&	!	R E M O V E    C O P Y T A P E    U T I L I T Y		&	!								&	!								&	!	This routine removes the COPYTAPE utility, if       installed,&	!	  and makes note of the fact in the appropriate places.	&	!								&	!								&	\ GOSUB 10900							&	\ RETURN	IF NOT PHSCTL.CTP.INSTALLED%			&	\ TE% = FN.EXEC.BLOCK%(	'MCR...',				&				1102%,					&				FALSE%	)				&	\ PHSCTL.CTP.INSTALLED% = FALSE%				&	\ PRINT 'COPYTAPE removed'	IF DEBUG.FLAG%			&	!								&	!	Make sure we have the latest Phase Control record.	&	!	If COPYTAPE is not installed, just return.		&	!	Remove COPYTAPE.					&	!	Indicate that COPYTAPE is not installed.		&11020	\ UPDATE       #4%							&	\ PRINT 'Phase Control record updated'	IF DEBUG.FLAG%		&	\ RETURN							&	!								&	!	Return to the caller.					&11050	!$**************************************************************&	!								&	!								&	!	H A N D L E    L O C K E D    F I L E S			&	!								&	!								&	\ IF FILE.LOCKED%( FILE.NUM% )					&	  THEN	  PRINT "? Can't access file "; FILE.NAME$(FILE.NUM%)	&		\ PRINT FILE.NAME$(FILE.NUM%); 'was locked twice'	&			IF DEBUG.FLAG%					&		\ GO TO 32000						&		!							&		!	 If the fil      e was unlocked once before:		&		!		Issue an error message.			&		!		Go exit.				&		!							&	  ELSE	  TE% = FN.UNLOCK.FILE%( FILE.NAME$( FILE.NUM% ) )	&		\ PRINT FILE.NAME$( FILE.NUM% ); ' was locked'		&			IF DEBUG.FLAG%					&		\ FILE.LOCKED%( FILE.NUM% ) = TRUE%			&		\ RETURN						&		!							&		!	If the file has never before been locked:	&		!		Attempt to unlock it.			&		!		Indicate that we have attempted once to	&		!		  unlock it.				&		!		Return to the error handler for dis-	&		!		  to the proper open comm      and.		&12000	!$**************************************************************&	!								&	!								&	!	G E T    M I S S I N G    C O P O N E N T S		&	!								&	!		F R O M    T A P E				&	!								&	!								&	\ SUBSTITUTE.TEXT$( 1% ) = NUM1$( TAPE.NUMBER% )		&	\ PRINT 'COPYTAPE to process tape #'; TAPE.NUMBER%		&		IF DEBUG.FLAG%						&	!								&	!	Set up the tape number part of the COPYTAPE command	&	!	  line.							&	!								&	\ STATUS% = FN.EXEC.BLOCK%(	'...CTP',			&					1101%,				&					FALSE%	)			&	\       PRINT 'COPYTAPE error status:'; STATUS%			&		IF DEBUG.FLAG% AND STATUS% <> 1%			&	!								&	!	Spawn the COPYTAPE task with the constructed command	&	!	  line.							&	!								&	\ GO TO 32000	IF STATUS% <> 1%				&	\ RETURN							&	!								&	!	If the status was other than 1, go finish up.		&	!	Return to the caller.					&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!				      				&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19005	\ GO TO 19010	IF ERL <> 2410					&	\ RESUME 2420	IF ERR = 5%					&	\ CLOSE #5%							&	\ RESUME 2400							&	!								&	!	Skip to the next section if the error line was not 2410	&	!	If the e      rror was file not found, go add it to the	&	!	  list.							&	!	Close the file in case it's open.			&	!	Go back and try to get another one.			&19010	\ RESUME 1900	IF  ERR = 11%					&			AND ERL = 1310%					&	!								&	!	Catch end-of-file on COPYCNTRL File.			&19020	\ RESUME 19990	IF ERR = 138%					&	!								&	!	Handle locked files below.				&19100	\ RESUME 10910	IF  ERL = 10900%				&			AND ERR =     5%				&	!								&	!	Catch missing Phase Control File.			&19110	\ RESUME 10920	IF  ERL = 10900%				&			AND E      RR =    155%				&	!								&	!	Handle Phase Control File with no entry.		&19120	\ RESUME 2600	IF  ERL = 2400%					&			AND ERR = 11%					&	!								&	!	Resume at next phase if we came to the end of the	&	!	  CHGCNTRL file.					&19900	\ PRINT								&	\ PRINT 'Unexpected error'; ERR; 'at line'; ERL	IF DEBUG.FLAG%	&	\ GOSUB 31000							&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ PRINT 'All files closed'	IF DEBUG.FLAG%			&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	        system default error dump out.			&19990	\ GOSUB 11050							&	\ ON	(FILE.NUM% + 1%)					&	  GO TO								&		1300,			! [7,4]COPYCNTRL.FIL	!	&		2210,			! CHNGCNTRL.FIL		!	&		2220,			! MISSING.VIR		!	&		19995,			! REBUILDEM.CMD		!	&		10900			! UPDTRXPHA.SES		!	&	!								&	!	Go see if the file was locked once before.		&	!	If we get here, the file was never before unlocked, so	&	!	  we can try to open it again.				&19995	\ PRINT "? REBUILDEM.CMD should not be accessed"		&	\ GO TO 32000							&	!								&	!	Te      ll the user about our error. (Should never happen.)	&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!**********************************************************      *****&25015	!***************************************************************&	!								&	!								&	!	D E B U G    D E B U G    D E B U G    D E B U G	&	!								&	!								&	!	Special /DEBUG switch on dialog function.  Special	&	!	only to the compiler because they wouldn't put it	&	!	in the general dialogue function.			&	!								&	!	The switch is "hidden" from the user by not appearing	&	!	in the spec for the dialogue function or any document	&	!	pertaining to FMTGEN.					&	!								&	!	This code checks f      or, and removes the string:		&	!								&	!	/DEBUG							&	!								&	!	from the input text string to the dialogue function.	&	!	The entire keyword must appear after the slash.		&	!								&	!								&	\ ASK.T3% = INSTR(1%,EDIT$(ASK.RESP$,32%),"/DEBUG")		&	\ GO TO 25020	IF ASK.T3% = 0%					&	\ ASK.RESP$ =  LEFT(ASK.RESP$,(ASK.T3%-1%))			&		    + RIGHT(ASK.RESP$,(ASK.T3%+6%))			&	\ DEBUG.FLAG% = TRUE%						&	!								&	!	Search for the debug switch.				&	!	Skip out if not there.					&	!	Otherwise, remove fro      m the string.			&	!	Set the DEBUG switch.					&31000	!$**************************************************************&	!								&	!								&	!	C L O S E    S H O P    A N D    G O    H O M E		&	!								&	!								&	!***************************************************************&31010	\ GOSUB 11010							&	\ GOSUB 10300							&	\ GOSUB 10100							&	!								&	!	Remove copytape if installed.				&	!	Dismount and deallocate drive if necessary.		&	!								 1.1A00&	\ TE% = FN.EXEC.BLOCK%(	"MCR...",				!1.1A00      &				1109%,					!1.1A00&				FALSE%	)				!1.1A00&	\ TE% = FN.PRINT.BLOCK%( 0%, 1110% )				!1.1A00&	!								 1.1A00&	!	Delete all local assignments.				 1.1A00&31020	\ GO TO 31030	IF VT.IS.OPEN% = FALSE%				&	\ TE% = FN.EXEC.BLOCK%(	"MCR...",				!1.1A00&				1107%,					!1.1A00&				FALSE%	)				!1.1A00&	\ TE% = FN.PRINT.BLOCK%( 0%, 1108% )	IF DEBUG.FLAG%		!1.1A00&	\ SLEEP 1%							&	\ TE% = FN.VT.DONE%						&	!								&	!	Remove AT.Vnn and release the virtual terminal if still	 1.1A00&	!	  in use.						 1.1A00&      31030	\ CLOSE T%	FOR T% = 1% TO 12%				!1.1A00&	\ PRINT "All files closed"	IF DEBUG.FLAG%			!1.1A00&	!								 1.1A00&	!	Close all files.					 1.1A00&	!								 1.1A00&	\ RETURN							&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ GOSUB 31000							&	!								&	!	Close up and get out.					&32767	!$****************************   Ì   **********************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDÌ          æwÊ“Á› 8$Oq      872	!$**************************************************************&	!								&	!								&	!	S Y S G E N    C O M M O N    R E G I O N		&	!								&	!								&	!	VER/ED	DATE	INITIALS	REASON			&	!	------	--------- ---	------------------------------	&	!	V1.1A00	14-May-79 KMR	Added CHANGEMAKER% flag.	&	!								&	!***************************************************************&								!	&	\ COM (SGNDEB)	 BREED.NOSPAWN%				!   0 !	&			,BREED.DEBUG%				!   2 ! &			,NO.FILES%				!   4 ! &			,SKIP.ASSEMBLIES%			!   æ      6 ! &			,LINK.ONLY%				!   8 ! &			,DRIVERS.ONLY%				!  10 ! &			,EXEC.SKIP%				!  12 ! &			,CHANGEMAKER%				!  14 !	!1.1A00&								!  16 !	!1.1A00&	!								 1.1A00&	!	Common area for SYSGEN program and subroutines.		 1.1A00&æ          <F“Á› 8$        1	!***************************************************************&	!								&	!								&	!	C H E K I T   for TT0: and [1,1]			&	!								&	!								&	!								&	SUB	CHEKIT	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	14-May-79				 1.1A00&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!***************************************************************&	      !								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1979 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 PERSO      N.   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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&15	!      ***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL CHEKIT(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		1 FOR SUCCESS, NOT 1 FOR FAILURE&	!								&	!***************************************************************&20	!$**************************************************************&	!							      	&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	14-May-79 KMR	Added check for the name CHGMAK. 1.1A00&	!				  Set flag CHANGEMAKER% if this	 1.1A00&	!				  is our name.			 1.1A00&	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								      &	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	          4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!      								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------      - &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 deno      te local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO       TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ CALL GETTSK BY REF (TASK%(),SPAWN.STATUS%)			&	\ IF TASK%(7%)<>257%						&	  THEN PRINT							&		\ PRINT "? Please SET DEFAULT [1,1] before running SYSGEN."&		\ SPAWN.STATUS%=2%					&		\ GOTO 32000						&1020	\ PRINT "Task name: "; RAD$( TASK%(0%) ); RAD$( TASK%(1%) )	!1.1A00&			IF BREED.DEBUG%					!1.1A00&	\ CHANGEMAKER% = 0%						!1.1A00&	\ GO TO 1030	IF RAD$( TASK%(0%) ) <> "CHG"			!1.1A00&			OR RAD$( TASK%(1%) ) <> "MAK"			!1.1A0      0&	\ CHANGEMAKER% = -1%						!1.1A00&	!								 1.1A00&	!	Assume that we are not running as Change Maker.		 1.1A00&	!	If our task name is not the correct one, skip to next	 1.1A00&	!	  check.						 1.1A00&	!	If our name is correct, set the CHANGEMAKER% flag so	 1.1A00&	!	  that everyone else will know.				 1.1A00&1030	\ SPAWN.STATUS%=FN.CHECK.TT0%					&	\ SPAWN.STATUS%=-SPAWN.STATUS%					&	\ GOTO 32000 IF SPAWN.STATUS%=1%				&	\ PRINT								&	\ PRINT "? SYSGEN must be run from TT0:."			&	\ GOTO 32000						      	&	!								&	!	CHECK FOR [1,1]						&	!	CHECK FOR TT0:						&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B       - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default err      or dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$***********************   ¶  ***************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND ¶         B¡M“Á› 8$        1	!***************************************************************&	!								&	!								&	!	C H A N G E    P R E P A R E    B A S E    L E V E L	&	!								&	!			P A S S    I I I			&	!								&	!								&	!								&	!	Program:	CPBLP3					&	!	Version:	BL9					&	!	Edit level:	00					&	!	Edit date:	26-Mar-79				&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		             C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$*******************************      *******************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL1-00	31-Jul-78 KMR	Initial coding as seperate	&	!				  program.			&	!	BL9-00	26-Mar-79 KMR	Fixed up command spawning.	&	!	V1.1A00	11-Jun-79 KMR	Removed delete of COPYCNTRL file 1.1A00&	!				  in REBUILDEM file.		 1.1A00&	!								&	!*****************************************      **********************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Com      mand terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER      .EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!*****************************      **********************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!*************************************************      **************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIMENSION TE%( 1% )						&	!								&	!      	We need this for our emit status call.			&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$ = "BL1-00"					&	!								&	!	Assign the current version/edit level #			&1020	!\ PRINT							&	!\ PRINT "CPBLP3	"; VER.EDIT.NUM$;       "   ";		&	!\ PRINT							&	!\ PRINT "Change Prepare Base Level - Pass III"			&	!\ PRINT							&	!								&	!	Output program herald messages				&1030	\ TE% = FN.SETUP.DIALOGUE%					&	!								&	!	Setup the dialogue functions.				&	!								&	\ FILE.NAME$( 1% )	= "CHGPREPBL.FIL"			&	\ FILE.NAME$( 2% )	= "COMPONENT.FIL"			&	\ FILE.NAME$( 4% )	= "CMDLIN.FIL"				&	\ FILE.NAME$( 5% )	= "BLDCNTR.FIL"				&	\ FILE.NAME$( 6% )	= "CMDENTRY.LST"			&	\ FILE.NAME$( 7% )	= "REBUILDEM.CMD"			&	!								&	!	Set up the file       names for locked file processing.	&	!								&	\ FIND.SEQUENTIAL% = 0%						&	\ FIND.KEY.EQ% = 1%						&	\ FIND.KEY.GT% = 2%						&	\ FIND.KEY.GE% = 3%						&	\ GET.SEQUENTIAL% = 4%						&	\ GET.KEY.EQ% = 5%						&	\ GET.KEY.GT% = 6%						&	\ GET.KEY.GE% = 7%						&	\ GET.RELATIVE% = 8%						&	\ GET.RELATIVE% = 9%						&	!								&	!	Setup the commands.					&	!								&	\ GOSUB 14000							&	!								&	!	Open the necessary files.				&2000	\ CURRENT.LEVEL% = -1%						&	\ NO.ERRORS.YET% = TRUE%					&	\ BREED      .RETURN% = TRUE%						!BL9-00&	!								&	!	Initialize values used for aborting build.		&	!								&	\ SUBSTITUTE.TEXT$( 1% ) = TIME$( 0% )				&	\ SUBSTITUTE.TEXT$( 2% ) = DATE$( 0% )				&	\ SUBSTITUTE.TEXT$( 3% ) = NUM1$( BLDCTL.NUM.OF.ENTRIES% )	&	\ SUBSTITUTE.TEXT$( 4% ) = NUM1$( BLDCTL.CUR.PTR% )		&	\ SUBSTITUTE.TEXT$( 5% ) = BASE.LEVEL.NUMBER$			&	\ TE% = FN.PRINT.BLOCK%( 0%, 526% )				&	!								&	!	Set up and print the header block.			&	!								&	\ GO TO 2200	IF BLDCTL.NUM.OF.ENTRIES% = 0%			&	!				      				&	!	If there are no build commands, just go create the	&	!	  dummy commands we need for a dummy change tape.	&2030	!$**************************************************************&	!								&	!								&	!	C Y C L E    T H R O U G H    T H E    C O M M A N D S	&	!								&	!								&	!***************************************************************&	!								&	\ ON FN.GET.RECORD%( GET.RELATIVE%, 5%, 1%, "" )		&		GO TO							&			2035,		! Successfull		!	&			2033,		! Not successfull	!	&			2033		! Not success      full	!	&	!								&	!	Make sure we have the latest build control file record.	&2033	\ TE% = FN.PRINT.BLOCK%( 0%, 617% )				&	\ GO TO 31000							&	!								&	!	If we got here, we have some sort of problem with the	&	!	  build control file.  Tell the user of our error and	&	!	  go quit.						&2035	\ ON FN.GET.RECORD%( GET.RELATIVE%, 6%, BLDCTL.CUR.PTR%, "" )	&		GO TO							&			2050,	! Got entry record		!	&			2040,	! Could not get entry record	!	&			2040	!   "    "   "    "      "	!	&	!								&	!	Get the nex      t record in the command entry file.		&2040	\ TE% = FN.PRINT.BLOCK%( 0%, 619% )				&	\ GO TO 31000							&	!								&	!	Tell the user that the entry file is corrupt.		&	!	Go send out error status and exit.			&2050	\ ENTRY.INDEX% = VAL( ENTRY.INDEX$ )				&	\ GO TO 2060	IF CURRENT.LEVEL% = ENTRY.INDEX%		&	\ GO TO 9000	IF NO.ERRORS.YET% = FALSE%			&	!								&	!	Extract the level of the current build.			&	!	Continue processing this command if we have not changed	&	!	  levels.						&	!	If we have changed levels       and have errors, go finish	&	!	  up this part of the build.				&	!								&	\ CURRENT.LEVEL% = ENTRY.INDEX%					&	\ SUBSTITUTE.TEXT$( 10% ) = ENTRY.INDEX$			&	!								&	!	Begin the building of the new level.			&2060	\ SUBSTITUTE.TEXT$( 1% ) = ENTRY.COMP.KEY$			&	!								&	!	Put the name where the dialogue functions look for it.	&	!								&	\ ON FN.GET.RECORD%(	GET.KEY.EQ%,				&				2%, 0%,					&				ENTRY.COMP.KEY$ )			&		GO TO							&			2080,	! Got the component record	!	&			2070,	! Record missing.		!	&		      	2070	! Record missing.		!	&	!								&	!	Get the component record for the current component.	&2070	\ TE% = FN.PRINT.BLOCK%( 0%, 609% )				&	\ NO.ERRORS.YET% = FALSE%					&	\ GO TO 2110							&	!								&	!	Tell the user that the component description has dis-	&	!	  appeared.						&	!	Make sure that we do not process the next level.	&	!	Go get the next command.				&2080	\ GO TO 2090	IF ENTRY.BUILD.LOCATION$ = "L"			&	!								&	!	Go handle local builds.					&	!								&	\ RBLDEM.SEQ.KEY$	= FN.SEQUENCE.KEY$	      		&	\ RBLDEM.TAPE.NUM$	= LEFT( CMPONT.SHIPPING.CODE$, 2% )	&	\ RBLDEM.COMMAND.LINE$	= ENTRY.CMD.LINE$			&	\ RBLDEM.BUILD.LOCATION$ = ENTRY.BUILD.LOCATION$		&	\ ON FN.PUT.RECORD%( 7%, 0% )					&		GO TO							&			2110,	! Successfull write		!	&			3000,	! Write failed			!	&			3000	! Write failed			!	&	!								&	!	Put the current command into the on-site re-		&	!	  build file.						&	!	Go see about the next command in the entry		&	!	  file.							&2090	!**********************************************************      *****&	!								&	!								&	!	L O C A L    B U I L D S    A R E    H A N D L E D	&	!								&	!			H E R E					&	!								&	!								&	!***************************************************************&	!								&	\ BREED.COMMAND$ = ENTRY.CMD.LINE$				&	\ START.TIME$ = TIME$( 0% )					&	\ GOSUB 13000							&	!								&	!	Extract the command from the entry file.		&	!	Get the current time as start time.			&	!	Go execute the command.					&	!								&	\ T% = 202%							&	\ T% = 204%	IF STATUS% <> 1%				&	\ SUBSTI      TUTE.TEXT$( 1% ) = TRM$( ENTRY.CMD.LINE$ )		&	\ TE% = FN.PRINT.BLOCK%( 0%, T% )				&	\ GO TO 2100	IF STATUS% <> 1%				&	!								&	!	Pick the message we wish to print depending on the	&	!	  status returned from executing the command.		&	!	Print out the message we have chosen.			&	!	If the status was not 1, don't update the comp.		&	!	  record.						&	!								&	\ CMPONT.BUILD.COPY.TIME$	= TIME$( 0% )			&	\ CMPONT.BUILD.COPY.DATE$	= DATE$( 0% )			&	\ CMPONT.BUILD.COPY.AUTHOR$	= OPERATOR.INITIALS$		&	\ CMPONT      .CUR.LEVEL$		= BASE.LEVEL.NUMBER$		&	\ UPDATE #2%							&	!								&	!	Update the information in the component file.		&2100	\ SUBSTITUTE.TEXT$( 1% ) = START.TIME$				&	\ SUBSTITUTE.TEXT$( 2% ) = TIME$( 0% )				&	\ TE% = FN.PRINT.BLOCK%( 0%, 207% )				&	!								&	!	Get the starting and ending times to the sub. array.	&	!	Print out the message about this component.		&2110	\ BLDCTL.CUR.PTR% = BLDCTL.CUR.PTR% + 1%			&	\ BLDCTL.SEQUENCE.NUMBER$ = SEQUENCE.NUMBER$			&	\ UPDATE #5%							&	!								&	!	Increment       the number of the command to process next.	&	!	Make sure we have the latest sequence number in the	&	!	  file.							&	!	Update the build control file.				&	!								&	\ GO TO 2030	IF BLDCTL.CUR.PTR% <= BLDCTL.NUM.OF.ENTRIES%	&	!								&	!	Go process the next command if there are any more.	&	!								&2200	!$**************************************************************&	!								&	!								&	!	F I N I S H    O F F    T H E    C O M M A N D		&	!								&	!			F I L E					&	!								&	!								&	!***********      ****************************************************&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 659% )	IF DEBUG.FLAG%		&	\ RBLDEM.TAPE.NUM$ = "04"					&	\ CMPONT.MODEL$ = "**"						&	\ CMPONT.SHIPPING.CODE$ = "04"					&	!								&	!	For the three delete commands we are now going to add	&	!	  to the rebuildem file, the above variables do not	&	!	  change.						&	!								&!	\ SUBSTITUTE.TEXT$( 1% ) = "[7,4]"				&	\ RBLDEM.BUILD.LOCATION$ = "S"					&!	\ SUBSTITUTE.TEXT$( 2% ) = "COPYCNTRL.FIL"			&!	\ GOSUB 1100      0							&	!								&	!	Mark the copy control and rebuildem deletes as "S",	&	!	  i.e., these two files will be deleted at sysgen	&	!	  time if they exist.					&	!	Set up the name of the copy control file.		&	!	Go create a command in the rebuildem file that will	&	!	  cause it to be deleted.				&	!								&	\ SUBSTITUTE.TEXT$( 1% ) = "[1,1]"				&	\ SUBSTITUTE.TEXT$( 2% ) = "REBUILDEM.CMD"			&	\ GOSUB 11000							&	!								&	!	Go set up a command to delete the rebuildem file.	&	!								&	\ RBLDEM.BUILD.LOCA      TION$ = "O"					&	\ SUBSTITUTE.TEXT$( 2% ) = "CHNGCNTRL.FIL"			&	\ GOSUB 11000							&	!								&	!	Make sure that if change maker is run at sysgen time	&	!	  that we do not attempt to delete the change control	&	!	  file.							&	!	Set up a command to delete the change control file.	&2210	\ KILL "BLDCNTR.FIL"	WHILE TRUE%				&	\ GO TO 32000							&	!								&	!	Make sure we remove all copies of the build control	&	!	  file when we are done.				&	!	Go finish up.						&3000	!$*********************************      *****************************&	!								&	!								&	!	H A N D L E    F I L E    E R R O R S   H E R E		&	!								&	!								&	!***************************************************************&	!								&	\ PRINT "? CHGPREPBL file error"; ERR; ERL			&	\ GO TO 31000							&	!								&	!	Print out the error message.				&	!	Go finish up.						&9000	!$**************************************************************&	!								&	!								&	!	E N D    D U E    T O    E R R O R    S T A T U S	&	!								&	!								&	      !***************************************************************&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 621% )				&	\ GO TO 31000							&	!								&	!	Tell the user why we are quitting.			&	!	Go set Fatal Error and return.				&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&11000	!$**      ************************************************************&	!								&	!								&	!	A D D    D E L E T E    C O M M A N D    T O		&	!								&	!		R E B U I L D E M    F I L E			&	!								&	!								&	!***************************************************************&	!								&	\ RBLDEM.SEQ.KEY$ = FN.SEQUENCE.KEY$				&	\ RBLDEM.COMMAND.LINE$ =					&		FN.SUB.TEXT$( FN.TEXT.LINE$( 610% ) )			&	\ ON FN.PUT.RECORD%( 7%, 0% )					&		GO TO							&			11010,		! Successfull		!	&			3000,		! Not successfull	!	&			300      0		! Not successfull	!	&	!								&	!	Get a sequence key for this record.			&	!	Create the command line.				&	!	Attempt to put the record to the rebuildem file.	&11010	\ RETURN							&	!								&	!	Return to the caller.					&14000	!$**************************************************************&	!								&	!								&	!	O P E N    P A S S    I I I    F I L E S		&	!								&	!								&	!***************************************************************&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make       sure that the file is not marked as locked.	&14010	!	Reserved for open and get on control file.		&14020	!	Reserved for error on control file get.			&14030	!	Reserved for control file information extraction.	&14040	\ FILE.NUMBER% = 2%						&	\ OPEN "COMPONENT.FIL" AS FILE 2%				&		,ORGANIZATION	INDEXED					&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		CMPONT					&		,PRIMARY KEY	CMPONT.COMPONENT.KEY$			&		,ALTERNATE KEY	CMPONT.COMPONENT.NAME$			&				NODUPLICATES				&		,ALTERNATE KEY	CM      PONT.SHIPPING.CODE$			&				DUPLICATES				&				CHANGES					&	!								&	!	Open the COMPONENT File.				&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Reset the flag before we try to open another file.	&14050	\ FILE.NUMBER% = 5%						&	\ OPEN "BLDCNTR.FIL" FOR INPUT AS FILE #5%			&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		NONE					&		,MAP		BLDCTL					&	!								&	!	Attempt to open the build control file for input.	&	!								&	\ ON FN.GET.RECORD%(	GET.RELATIVE%,				      &				5%, 1%, ""	)			&		GO TO							&			14070,		! Got the record	!	&			14060,		! No such record	!	&			14060		! No such record	!	&	!								&	!	Get the first record from the file.			&14060	\ TE% = FN.PRINT.BLOCK%( 0%, 617% )				&	\ GO TO 31000							&	!								&	!	Tell the user why we are quitting.			&	!	Go send error status and exit.				&14070	\ SEQUENCE.NUMBER$ = BLDCTL.SEQUENCE.NUMBER$			&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Extract the sequence number from the build control	&	!	  file.							&	!	M      ake sure the next file we open is not marked as lock-	&	!	  ed before we start.					&14080	\ FILE.NUMBER% = 6%						&	\ OPEN "CMDENTRY.LST" FOR INPUT AS FILE #6%			&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		NONE					&		,MAP		ENTRY					&	!								&	!	Open up the file that contains the list of commands.	&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make sure the next file is not marked as locked.	&14090	\ FILE.NUMBER% = 7%						&	\ OPEN "REBUILDEM.CMD" AS FILE #7%      				&		,ORGANIZATION	SEQUENTIAL				&				VARIABLE				&		,ACCESS		APPEND					&		,ALLOW		NONE					&		,MAP		RBLDEM					&	!								&	!	Open the REBUILDEM file.				&	!								&	\ RETURN							&	!								&	!	Return to the main routine.				&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$      **************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&	!								&	\ SUBSTITUTE.TEXT$( 40% ) = NUM1$( ERR )	IF DEBUG.FLAG%	&	\ SUBSTITUTE.TEXT$( 41% ) = NUM1$( ERL )	IF DEBUG.FLAG%	&	\ TE% = FN.PRINT.BLOCK%( 0%, 646% )		IF DEBUG.FLAG%	&19010	\ RESUME 19990	IF ERR = 162%					&	!								&	!	Resume at the locked file handling if the error is	      &	!	  a locked file.					&	!								&	\ RESUME 32000	IF ERL = 2210%					&	!								&	!	Resume at the end if all copies of the build control	&	!	  file have been deleted.				&19900	\ PRINT								&	\ TE% = FN.PRINT.BLOCK%( 0%, 618% )	IF DEBUG.FLAG%		&	\ TE% = FN.PRINT.BLOCK%( 0%, 647% )	IF DEBUG.FLAG%		&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&19990	!$**********************************      ****************************&	!								&	!								&	!	H A N D L E    L O C K E D    F I L E S			&	!								&	!								&	!***************************************************************&	!								&	\ IF FILE.LOCKED%						&	  THEN	  PRINT "? Can't access file ";				&			FILE.NAME$( FILE.NUMBER% )			&		\ GO TO 31000						&	!								&	!	If we tried unlocking the file but still failed, tell	&	!	  the user our problem and the get out.			&	!								&	  ELSE	  TE% = FN.UNLOCK.FILE%( FILE.NAME$( FILE.NUMBER% ))	&		\       FILE.LOCKED% = TRUE%					&		\ ON FILE.NUMBER%					&			GO TO						&				14010,	! Control file		!	&				14040,	! Component file	!	&				31000,	! Reference file	!	&				31000,	! Command Line Diction.	!	&				14050,	! Build Control file	!	&				14080,	! Command list		!	&				14090	! Re-buildem file	!	&	!								&	!	If this is our first try at unlocking the file, unlock	&	!	  it, indicate that we have now tried once and then	&	!	  go try to open the file again.			&20000	!$***********************************************      ***************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&31000	!$**************************************************************&	!								&	!								&	!	S E N       D    E R R O R    S T A T U S			&	!								&	!								&	!***************************************************************&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 648% )	IF DEBUG.FLAG%		&	\ CALL EMIT BY REF ( TE%(), 2%, 0% )				&	!								&	!	Send out an error status.				&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ TE% = FN.   b  PRINT.BLOCK%( 0%, 647% )	IF DEBUG.FLAG%		&	\ CLOSE T% FOR T% = 1% TO 12%					&	!								&	!	Close all files.					&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDb         šE.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L    G E N E R A T I O N    M O D U L E	&	!								&	!								&	!								&	SUB	KERGN4	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	01					 1.1A01&	!	Edit date:	14-May-79				 1.1A01&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!**************************************************      *************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1979 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!*****************************************************      **********&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KERGN4(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**********************************************************      ****&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	04-Apr-79 KMR	Added code to manually produce	 1.1A00&	!				  entries in the $XKCTB table.	 1.1A00&	!				  This was originally done with	 1.1A00&	!				  a macro.			 1.1A00&	!	V1.1A01	14-May-79 KMR	Changed default of U.NDEV to 1	 1.1A01&	!				  so that 2780 will have the	 1.1A01&	!				  correct v      alue.		 1.1A01&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	This sub-program creates the KERMC.MAC and SYSTB.MAC	&	!	files and all the necessary commands needed to build	&	!	the KERNEL.  It then executes the necessary commands	&	!	thus building the KERNEL.				&	!								&	!	This is a dummy routine at this point in time.		&	!								&	!*************************************************      **************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    3		KERMC.MAC file output			&	!	    4		SYSTB.MAC file output			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A       R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!							      	&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N           D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!*******      ********************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ GOTO 5000 IF NO.FILES%<>0%					&	!								&	!	Set up standard default error trap			&2200	\ GOTO 2300 IF COM.SUPPORT%=0%					&	\ SUBSTITUTE.TEXT$(41%)=FN.INT.TO.OCT$(NUM.OF.DMCS%)		      &	\ T%=FN.PRINT.BLOCK%(4%,600%)					&	\ FOR DMC.UNIT%=0% TO NUM.OF.DMCS%-1%				&		\ SUBSTITUTE.TEXT$(42%)=CHR$(65%+DMC.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,602%)				&	\ NEXT DMC.UNIT%						&	\ DLR.CTBN%=DLR.CTBN%+1%					&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.OCT$(DLR.CTBN%)			&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	\ T%=FN.PRINT.BLOCK%(4%,393%) IF DLR.DCBN%=0%			&	\ SUBSTITUTE.TEXT$(40%)=FN.INT.TO.OCT$(NUM.OF.DMCS%-1%)		&	\ T%=FN.PRINT.BLOCK%(4%,604%)					&	\ FOR DMC.UNIT%=0% TO NUM.OF.DMCS%-1%		      		&		\ SUBSTITUTE.TEXT$(43%)=FN.INT.TO.OCT$(DMC.UNIT%)	&		\ SUBSTITUTE.TEXT$(44%)=TRM$(DMC.TYPE$(DMC.UNIT%))	&		\ SUBSTITUTE.TEXT$(45%)=TRM$(DMC.DUPLEX$(DMC.UNIT%))	&		\ T%=FN.PRINT.BLOCK%(4%,606%)				&		\ T%=FN.PRINT.BLOCK%(4%,608%) IF DMC.UNIT%=0%		&	\ NEXT DMC.UNIT%						&	\ FOR DMC.UNIT%=0% TO NUM.OF.DMCS%-1%				&		\ SUBSTITUTE.TEXT$(43%)=FN.INT.TO.OCT$(DMC.UNIT%)	&		\ SUBSTITUTE.TEXT$(46%)=TRM$(DMC.PRI$(DMC.UNIT%))	&		\ SUBSTITUTE.TEXT$(47%)=TRM$(DMC.VEC$(DMC.UNIT%))	&		\ SUBSTITUTE.TEXT$(48%)=TRM$(DMC      .CSR$(DMC.UNIT%))	&		\ SUBSTITUTE.TEXT$(42%)=CHR$(65%+DMC.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,610%)				&		\ T%=FN.PRINT.BLOCK%(4%,612%) IF PROCESSOR.TYPE%=70%	&		\ T%=FN.PRINT.BLOCK%(4%,614%)				&	\ NEXT DMC.UNIT%						&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)		&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!								&	!	DMC support.						&2300	\ GOTO 5000 IF (IBM.SUPPORT%=0%) AND (T2780.SUPPORT%=0%)	&	\ TKMC.UNIT%=0%							&	\ TKMC.UNIT%=TKMC.UNIT%+1% IF NUM.      OF.KMC.DZS%<>0%		&	\ TKMC.UNIT%=TKMC.UNIT%+1% IF NUM.OF.KMC.DUPS%<>0%		&	\ DUP.UNIT%=NUM.OF.KMC.DUPS%-1%					&	\ MAX.KMC.UNIT%=NUM.OF.3271.KMCS%+NUM.OF.2780.KMCS%-1%		&	\ SUBSTITUTE.TEXT$(21%)=FN.INT.TO.OCT$(MAX.KMC.UNIT%)		&	\ T%=FN.PRINT.BLOCK%(4%,1302%)					&	\ T%=FN.PRINT.BLOCK%(4%,1312%)					&	!								 1.1A00&	!	Skip this section if we do not have IBM or 2780 support. 1.1A00&	!	Calculate ?.						 1.1A00&	!	Set up the largest DUP unit.				 1.1A00&	!	Get the number of the highest KMC.			 1.1A00&	!	Fill       up the sub text with the highest KMC number.	 1.1A00&	!	Put out the code which contains the offsets.		 1.1A00&	!	Put out the CCB table header.				 1.1A00&	!								 1.1A00&	\ FOR KMC.UNIT% = 0% TO MAX.KMC.UNIT%				!1.1A00&		\ SUBSTITUTE.TEXT$( 25% ) = CHR$( 65% + KMC.UNIT% )	!1.1A00&		\ TE% = FN.PRINT.BLOCK%( 4%, 1313% )			!1.1A00&		\ NEXT KMC.UNIT%					!1.1A00&	!								 1.1A00&	!	For each KMC unit:					 1.1A00&		!	Set up the proper character. Should be A for 	 1.1A00&		!	  unit 0, B for 1, etc.				 1.1A00      &		!	Put out the code for this entry.		 1.1A00&		!	Go do another one, if there is one.		 1.1A00&	!								 1.1A00&	\ T%=FN.PRINT.BLOCK%(4%,1304%)					&	\ TYPE.UNIT%=3271%						&	\ TEMP.UNIT%=-1%						&	\ TRANSITION%=0%						&	\ FOR KMC.UNIT%=0% TO MAX.KMC.UNIT%				&		\ DUP.UNIT%=DUP.UNIT%+1%				&		\ TEMP.UNIT%=TEMP.UNIT%+1%				&		\ TRANSITION%=-1% IF (TEMP.UNIT%=NUM.OF.3271.KMCS%) AND	&				TYPE.UNIT%=3271%			&		\ TYPE.UNIT%=2780% IF TEMP.UNIT%=NUM.OF.3271.KMCS%	&		\ TEMP.UNIT%=0% IF TRANSITION%<>0%			&		\ T      RANSITION%=0%					&		\ SUBSTITUTE.TEXT$(20%)=FN.INT.TO.OCT$(KMC.UNIT%)	&		\ SUBSTITUTE.TEXT$(25%)=CHR$(65%+KMC.UNIT%)		&		\ SUBSTITUTE.TEXT$(22%)="U3.327"			&		\ SUBSTITUTE.TEXT$(22%)="U3.278" IF			&			TYPE.UNIT%=2780%				&		\ SUBSTITUTE.TEXT$(23%)="1"				!1.1A01&		\ SUBSTITUTE.TEXT$(23%)=FN.INT.TO.OCT$(			&				UNITS.ON.DUP%(TEMP.UNIT%)) IF		&			TYPE.UNIT%=3271%				&		\ SUBSTITUTE.TEXT$(24%)=FN.INT.TO.OCT$(			&					CON.POLL.ADDR%(TEMP.UNIT%))	&		\ SUBSTITUTE.TEXT$(24%)=FN.INT.TO.OCT$(			&					CON.POLL.2780%      (TEMP.UNIT%)) IF	&			TYPE.UNIT%=2780%				&		\ SUBSTITUTE.TEXT$(28%)=DUP.CSR$(DUP.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,1306%)				&		\ T%=FN.PRINT.BLOCK%(4%,1307%) IF KMC.UNIT%=0%		&	\ NEXT KMC.UNIT%						&	\ DLR.CTBN%=DLR.CTBN%+1%					&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.OCT$(DLR.CTBN%)			&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	\ T%=FN.PRINT.BLOCK%(4%,393%) IF DLR.DCBN%=0%			&	\ MAX.KMC.UNIT%=MAX.KMC.UNIT%+TKMC.UNIT%			&	\ TEMP.UNIT%=-1%						&	\ FOR KMC.UNIT%=TKMC.UNIT% TO MAX.KMC.UNIT%				&		\       TEMP.UNIT%=TEMP.UNIT%+1%				&		\ SUBSTITUTE.TEXT$(20%)=FN.INT.TO.OCT$(TEMP.UNIT%)	&		\ SUBSTITUTE.TEXT$(25%)=CHR$(65%+TEMP.UNIT%)		&		\ SUBSTITUTE.TEXT$(26%)=TRM$(KMC.VEC$(KMC.UNIT%))	&		\ SUBSTITUTE.TEXT$(27%)=TRM$(KMC.CSR$(KMC.UNIT%))	&		\ T%=FN.PRINT.BLOCK%(4%,1308%)				&	\ NEXT KMC.UNIT%						&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)		&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!								&	!	XK support.						&5000	\ GOTO 32000							&10000	!$*********      *****************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!*************************************      **************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$*******************************************************      *******&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F     f    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDf         %‚z“Á› 8$        1	!***************************************************************&	!								&	!								&	!		T 2 7 S U P    D I A L O G U E			&	!								&	!								&	!								&	SUB	T27SUP	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	14-May-79				 1.1A00&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!***************************************************************&	!      								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1979 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&15	!*      **************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL T27SUP(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**************************************************************&	!								&      	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	14-May-79 KMR	Removed unessary dialogue.	 1.1A00&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This is a dummy routine at t      his point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!******      *********************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E       S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!****************      ***********************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines       930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standa      rd default error trap			&1010	\ T2780.SUPPORT%=0%						&	\ ON ERROR GOTO 1020						&	\ OPEN "[1,54]KC2780.FIL" FOR INPUT AS FILE 9%			&	\ T2780.SUPPORT%=-1% UNLESS (NUM.OF.DUPS.IN.2780%=0%)		&	\ CLOSE 9%							&	\ GOTO 1500							!1.1A00&	!\ IBM.UNIT%=0%						!	!1.1A00&	!\ LOCAL.LONG.FORM%=LONG.FORM%				!	!1.1A00&	!\ PRINT						!	!1.1A00&	!\ PRINT "	TRAX/2780 Communications Dialogue"	!	!1.1A00&	!\ SUBSTITUTE.TEXT$(40%)="TRAX/2780"			!	!1.1A00&	!\ GOTO 1030						!	!1.1A00&	!								&	!	See if we have IBM sup      port on this system.		&1020	\ RESUME 1500							&1030	!\ FOR IBM.UNIT%=IBM.UNIT% TO NUM.OF.DUPS.IN.2780%-1%	!	!1.1A00&1060	!\ DEFAULT$=FN.INT.TO.OCT$(CON.POLL.2780%(IBM.UNIT%))	!	!1.1A00&	!\ SUBSTITUTE.TEXT$(40%)="TRAX/2780"			!	!1.1A00&	!\ ASK.RANGE(0%)=2.					!	!1.1A00&	!\ ON FN.ASK%(62%,DEFAULT$,"",TRUE%,2%) GOTO 1065,32000,1070!	!1.1A00&	!								&	!	Ask the "Controller Polling Address" question		&1065	!\ IBM.UNIT%=IBM.UNIT%-1%				!	!1.1A00&	!\ GOTO 1030 UNLESS IBM.UNIT%=-1%			!	!1.1A00&	!\ SPAWN.STATUS      %=1%+(27%*8%)				!	!1.1A00&	!\ GOTO 32000						!	!1.1A00&	!								&	!	Escape to the previous unless we was on the first.	&1070	!\ VALID%=1%						!	!1.1A00&	!\ T%=FN.REALLY.OCTAL%(ASK.CVT$)			!	!1.1A00&	!\ VALID%=VALID%+T%					!	!1.1A00&	!\ GOTO 1075 IF VALID%=1%				!	!1.1A00&	!\ ASK.NUM%=FN.OCT.TO.INT%(ASK.CVT$)			!	!1.1A00&	!\ CON.POLL.2780%(IBM.UNIT%)=ASK.NUM%			!	!1.1A00&	!\ GOTO 1120						!	!1.1A00&	!								&	!	Validate and store the response.			&1075	!\ PRINT						!	!1.1A00&	!\ PRINT						!	!1.1A00&	      !\ PRINT "? Please respond with a polling address in ";	!	!1.1A00&	!		"'STAnn' form."				!	!1.1A00&	!	IF (VALID%=0%) OR (VALID%=1%)			!	!1.1A00&	!\ PRINT "? Polling address number is out of range." IF	!	!1.1A00&	!	VALID%=2%					!	!1.1A00&	!\ GOTO 1060						!	!1.1A00&	!								&	!	Print an error message and ask the question again.	&1120	!\ LONG.FORM%=0%					!	!1.1A00&	!\ NEXT IBM.UNIT%					!	!1.1A00&	!\ LONG.FORM%=LOCAL.LONG.FORM%				!	!1.1A00&	!								&	!	Long prompts only the first time around.		&1500	\ G      OTO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***      ************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$*********************      *****************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!			   ˆ  					&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDˆ         [q%“Á› 8$        1	!***************************************************************&	!								&	!								&	!		R E S C O M					&	!								&	!								&	!								&	SUB RESCOM(SPAWN.STATUS%)	! Start sub-program here	&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	14-May-79				 1.1A00&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!***************************************************************      &	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1979 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 PER      SON.   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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&15      	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL	RESCOM						&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		Return status to caller		&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O       D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	14-May-79 KMR	Set code to indicate that no	 1.1A00&	!				  further dialogue is desired if	1.1A00&	!				  we are running as Change Maker.1.1A00&	!				  Note that this flag will is	 1.1A00&	!				  not currently checked in the	 1.1A00&	!				  program if we are running as	 1.1A00&	!				  Change Maker.			 1.1A00&	!								&	!******      *********************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This sub-program prompts the user for the name of	&	!	a file containing the GENCOM region from a previous	&	!	SYSGEN dialogue.					&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!						      		&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    6		GENCOM region file input		&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			---------------      ---------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************      &	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$*************      *************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!							      	&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ DEFAULT$="[200,201]CONFIGURE.DAT"				&	\ ON FN.ASK%(860%,DEFAULT$,"",0%,2%) GOTO 1020,9000,1030	&	!								&	!	Ask the "Configuration file" question.			&	!		ALT out through 1020				&	!		CTRL/Z out through 9000				&	!		Any other response to 1030			&1020	\ SPAWN      .STATUS%=1%+(27%*8%)					&	\ GOTO 32000							&	!								&	!	Set escape status, and get out				&1030	\ ON ERROR GOTO 1040						&	\ T%=FINE.TUNE%							&	\ TT%=INSERT.XDT%						&	\ T$=VER.EDIT.NUM$						&	\ DONT.PUT%=-1%							&	\ OPEN ASK.CVT$ FOR INPUT AS FILE 6%,				&		ORGANIZATION VIRTUAL,					&		ACCESS MODIFY, ALLOW READ,				&		MAP GENCOM,						&		RECORDSIZE 8192%					&	\ DONT.PUT%=0%							&	\ GET #6, RECORD 1%						&	\ FINE.TUNE%=T%							&	\ INSERT.XDT%=TT%						&	\ VER.EDIT.NUM$=T$						&	\ GOTO 105      0 IF VALID.REGION$="TPS-11 SYSGEN*"			&	\ PRINT								&	\ PRINT "	% The file specified did not contain SYSGEN data."&	\ GOTO 1010							&	!								&	!	Save some volitile variables and try to open what	&	!	he/she specified.					&	!	See if it was a valid GENCOM region			&1040	\ PRINT								&	\ PRINT "	? Please enter a valid and existing file specification."&	\ RESUME 1010							&	!								&	!	Something was wrong with the file specification.	&1050	\ FILES.MISSING%=0%						&	\ CONFIGURE.DAT$=ASK.CVT$					&	\       BLOCK%=950%							&	\ GOTO 1500 IF (DO.SETUP% AND 16384%)=0%			&	!								&	!	Exit this routine if no SAVTAP has been built.		&1052	\ MODULE.INDX%=BLOCK%*2%					&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%) TO			&		HELP.INDEX%(MODULE.INDX%)+(HELP.INDEX%(MODULE.INDX%+1%)-1%)&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"DB")<>0%) AND&			(NUM.OF.DB.DRIVES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"LP")<>0%) AND&			(NUM.OF.LPS%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"DM")<>0%) AND&			(      NUM.OF.DM.DRIVES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"DRDR")<>0%) AND&			(NUM.OF.DR.DRIVES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"MM")<>0%) AND&			(NUM.OF.MM.DRIVES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"MT")<>0%) AND&			(NUM.OF.TS03.DRIVES%=0%)			&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"XM")<>0%) AND&			(NUM.OF.NODES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"NT")<>0%) AND&			(NUM.OF.NODES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$      (MODULE%),"XK")<>0%) AND&			((IBM.SUPPORT%=0%) AND (T2780.SUPPORT%=0%))	&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"NODLNK")<>0%)&			AND (NUM.OF.NODES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"NTDRV")<>0%)&			AND (NUM.OF.NODES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"XMLOA")<>0%)&			AND (NUM.OF.NODES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),".34")<>0%)	&			AND (PROCESSOR.TYPE%<>34%)			&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),".60")<>0%)	&			AND (PROCESSOR      .TYPE%<>60%)			&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),".70")<>0%)	&			AND (PROCESSOR.TYPE%<>70%)			&		\ ON ERROR GOTO 1055					&		\ OPEN ASK.HELP$(MODULE%) FOR INPUT AS FILE 3%		&		\ CLOSE 3%						&		\ GOTO 1060						&1055	\ FILES.MISSING%=-1% IF ERR=5%					&	\ PRINT "? "+ASK.HELP$(MODULE%)+" is missing from your SYSGEN disk."&		IF ERR=5%						&	\ RESUME 1060							&	!								&	!	If the file is around, try the next one.		&	!	If not, we will spawn copytape.				&1060	\ NEXT MODULE%							&	\ BLOCK%=BL      OCK%+2%						&	\ GOTO 1052 UNLESS (DEV.SYS%<>0%) OR (BLOCK%=956%)		&	\ GOTO 1500 UNLESS FILES.MISSING%<>0%				&	!								&	!	Check to see that all of the SAVED files are around.	&1070	\ BREED.TASK$="...INS"						&	\ BREED.COMMAND$="INS [1,54]COPYTAPE/TASK=CPT"			&	\ BREED.RETURN%=TRUE%						&	\ GOSUB 20000							&	\ BREED.TASK$="CPT"						&	\ BREED.COMMAND$="CPT 10/CPU:"+NUM1$(PROCESSOR.TYPE%)		&	\ GOSUB 20000							&	\ SPAWN.STATUS%=BREED.ERROR%					&	\ BREED.TASK$="MCR..."						&	\ BREED.COMMAND$="REM CPT      "					&	\ GOSUB 20000							&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	!								&	!	Put the SAVE TAPE files on the disk.			&1500	\ GO TO 2000	IF CHANGEMAKER%					!1.1A00&	!								 1.1A00&	!	Don't bother to ask about further dialogue if we are	 1.1A00&	!	  running as Change Maker.				 1.1A00&	!								 1.1A00&	\ DEFAULT$="NONE"						&	\ VALID$="/NONE/ALL/"						&	\ VALID$=VALID$+"ATS/" IF DEV.SYS%=0%				&	\ VALID$=VALID$+"TL/" IF COM.SUPPORT%<>0%			&	\ VALID$=VALID$+"3271/" IF IBM.SUPPORT%<>0%			&	\ V      ALID$=VALID$+"2780/" IF T2780.SUPPORT%<>0%			&	\ T%=FN.ASK%(44%,DEFAULT$,VALID$,0%,2%)				&	\ ON T% GOTO 1505,9000,1510,1510,1510,1510,1510			&	!								&	!	SEE IF THEY WISH TO PERFORM ANY OTHER DIALOGUE.		&1505	\ CLOSE 6%							&	\ DONT.PUT%=-1%							&	\ GOTO 1010							&1510	\ ASK.NUM%=0% IF ASK.CVT$="NONE"				&	\ ASK.NUM%=1% IF ASK.CVT$="ALL"					&	\ ASK.NUM%=2% IF ASK.CVT$="ATS"					&	\ ASK.NUM%=3% IF ASK.CVT$="TL"					&	\ ASK.NUM%=4% IF ASK.CVT$="3271"				&	\ ASK.NUM%=5% IF ASK.CVT$="2780"				&	\ SPAW      N.STATUS%=(ASK.NUM%*8%)+1%				& 	\ GOTO 32000							&	!								&	!	Region was successfully loaded.				&2000	\ SPAWN.STATUS% = 1%						!1.1A00&	\ GO TO 32000							!1.1A00&	!								 1.1A00&	!	We are running as Change Maker. Set our status to	 1.1A00&	!	  indicate that we want no further dialogue.		 1.1A00&	!	Go return.						 1.1A00&9000	\ SPAWN.STATUS%=2%						&	\ GOTO 32000							&	!								&	!	CTRL/Z will cause SYSGEN to exit.			&10000	!$**************************************************************&	!			      					&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$************************      **************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y           S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!**********   ,  *****************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND ,         u~z“Á› 8$        1	!***************************************************************&	!								&	!								&	!		T I M S U P    D I A L O G U E			&	!								&	!								&	!								&	SUB	TIMSUP	(MESSAGE.NUM%)					&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	14-May-79				 1.1A00&	!	Author(s):	AJS					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!***************************************************************&	!	      							&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1979 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&15	!**      *************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL TIMSUP(MESSAGE.NUM%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	MESSAGE.NUM%		String to preceed date and time	&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!      								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	14-May-79 KMR	Added code to skip all time	 1.1A00&	!				  messages when we are running	 1.1A00&	!				  as Change Maker.		 1.1A00&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O       G R A M    D E S C R I P T I O N		&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing fi      le				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!						      		&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	      							&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimensio      n declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&933	\ DIM #11,SUBSTITUTE.TEXT$(99%)=128				&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!**************************************************************      *&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1005	\ GO TO 32000	IF CHANGEMAKER%					!1.1A00&	!								 1.1A00&	!	Skip all processing in this section if we are running	 1.1A00&	!	  as Change Maker.					 1.1A00&	!								 1.1A00&	\ MESSAGE.TEXT$(0%)="SYSGEN invoked "				&	\ MESSAGE.TEXT$(1%)="Previous SYSGEN dialogue performed "	&	\ MESSAGE.TEXT$(2%)="KERNEL generation started "		&	\ MESSAGE.TEXT$(3%)="KERNEL UTILITIES generation started "	&	\ MESSAGE.TEXT$(4%      )="LANGUAGE SUPPORT generation started "	&	\ MESSAGE.TEXT$(5%)="TRAX COMMUNICATIONS generation started "	&	\ MESSAGE.TEXT$(7%)="TRAX EXECUTIVE and UTILITIES generation started "&	\ MESSAGE.TEXT$(9%)="APPLICATIONS TERMINAL SERVICE generation started "&	!								&	!	Set up the Prefix strings				&1010	\ SYSGEN.DATE$=DATE$(0%)					&	\ SYSGEN.TIME$=TIME$(0%)					&	\ GOTO 1020 IF MESSAGE.NUM%=100%				&	\ PRINT								&	\ PRINT MESSAGE.TEXT$(MESSAGE.NUM%)+"on "+SYSGEN.DATE$+" at "+	&			SYSGEN.TIME$					&	\ GOTO 32      000							&	!								&	!	PRINT the Present date and time in the following form:	&	!								&	!	(PREFIX STRING)+on DD-MM-YY at HH:MM xM			&1020	\ SUBSTITUTE.TEXT$(1%)="complete"				&	\ SUBSTITUTE.TEXT$(2%)="complete"				&	\ SUBSTITUTE.TEXT$(3%)="complete"				&	\ SUBSTITUTE.TEXT$(4%)="complete"				&	\ SUBSTITUTE.TEXT$(5%)="complete"				&	\ SUBSTITUTE.TEXT$(6%)="complete"				&	\ SUBSTITUTE.TEXT$(7%)="complete"				&	\ SUBSTITUTE.TEXT$(8%)="complete"				&	\ SUBSTITUTE.TEXT$(9%)="complete"				&	\ SUBSTITUTE.TEXT$      (1%)="not "+SUBSTITUTE.TEXT$(1%) IF		&			(DO.SETUP% AND 1%)=0%				&	\ SUBSTITUTE.TEXT$(2%)="not "+SUBSTITUTE.TEXT$(2%) IF		&			(DO.SETUP% AND 2%)=0%				&	\ SUBSTITUTE.TEXT$(3%)="not "+SUBSTITUTE.TEXT$(3%) IF		&			(DO.SETUP% AND 8%)=0%				&	\ SUBSTITUTE.TEXT$(4%)="not "+SUBSTITUTE.TEXT$(4%) IF		&			(DO.SETUP% AND 4%)=0%				&	\ SUBSTITUTE.TEXT$(5%)="not "+SUBSTITUTE.TEXT$(5%) IF		&			(DO.SETUP% AND 32%)=0%				&	\ SUBSTITUTE.TEXT$(6%)="not "+SUBSTITUTE.TEXT$(6%) IF		&			(DO.SETUP% AND 16%)=0%				&	\ SUBSTITUTE      .TEXT$(7%)="not "+SUBSTITUTE.TEXT$(7%) IF		&			(DO.SETUP% AND 16384%)=0%			&	\ SUBSTITUTE.TEXT$(8%)="not "+SUBSTITUTE.TEXT$(8%) IF		&			(DO.SETUP% AND 64%)=0%				&	\ SUBSTITUTE.TEXT$(9%)="not "+SUBSTITUTE.TEXT$(9%) IF		&			(DO.SETUP% AND 128%)=0%				&	\ GOTO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!*************************      **************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!**************************      *************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$********************************************      ******************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F     ˆ     S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND ˆ          »z“Á› 8$X      1	!***************************************************************&	!								&	!								&	!	S Y S G E N    C H A N G E M A K E R			&	!								&	!								&	!								&	!	Program:	SYSCHANGE				&	!	Version:	V1					&	!	Edit level:	00					&	!	Edit date:	15-Aug-78				&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		           COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!				      				&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1-00	15-Aug-78 KMR	Initial coding.			&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!*************************************************      **************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$*******************      *******************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	      !		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!					      			&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension de      clarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&910	\ DIMENSION TE%( 1% )						&	!								&	!	Used for parent task name on error status spawn.	&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!*******************      ********************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$ = "V1.0"					&	!								&	!	Assign the current version/edit level #			&1020	!\ PRINT								&	!\ PRINT "SYSCHANGE	"; VER.EDIT.NUM$; "   ";		&	!\ PRINT								&	!\ PRINT "Sysgen change maker"					&	!\ PRINT								&	!								&	!	Output program herald messages				&1030	\ TRUE% = -1%							&	\ FALSE% = 0%							&	\ TE%( 0% ), TE%( 1% ) = 0%					&	!						      		&	!	Make sure that we have a parent task of all spaces.	&1040	\ CALL GETMCR BY REF( RBLDEM.COMMAND.LINE$, STATUS% )		&	\ PRINT "Command line: "; RBLDEM.COMMAND.LINE$	IF DEBUG.FLAG%	&	\ PRINT "Status: "; STATUS%			IF DEBUG.FLAG%	&	\ SYSCHANGE.COMMAND$ = RIGHT( TRM$( RBLDEM.COMMAND.LINE$), 5% )	&	\ PRINT "System: "; SYSCHANGE.PROC.TYPE$	IF DEBUG.FLAG%	&	\ PRINT "Option"; I%; ":"; OPTIONS.PRESENT%( I% )		&		FOR I% = 0% TO 19%			IF DEBUG.FLAG%	&	!								&	!	Get the command line from sysgen.			&	!	Get rid of       the task name and space.			&2000	\ OPEN "REBUILDEM.CMD" FOR INPUT AS FILE #7%			&		,ORGANIZATION	SEQUENTIAL				&				VARIABLE				&		,ACCESS		READ					&		,ALLOW		NONE					&		,MAP		RBLDEM					&	\ PRINT "REBUILDEM.CMD file opened"	IF DEBUG.FLAG%		&	!								&	!	Open the rebuildem file.				&2020	\ GET #7%							&	\ PRINT "Key: "; RBLDEM.SEQ.KEY$	IF DEBUG.FLAG%		&	\ PRINT "Tape: "; RBLDEM.TAPE.NUM$	IF DEBUG.FLAG%		&	\ PRINT "Command: "; TRM$( RBLDEM.COMMAND.LINE$ )		&						IF DEBUG.FLAG%		&	\ PRINT "Location: ";       RBLDEM.BUILD.LOCATION$	IF DEBUG.FLAG%	&	\ GO TO 2020	IF RBLDEM.BUILD.LOCATION$ <> "S"		&	\ OPTION.NUMBER% = VAL( MID( RBLDEM.SEQ.KEY$, 10%, 2% ) )	&	\ PRINT "Option number:"; OPTION.NUMBER%	IF DEBUG.FLAG%	&	\ GO TO 2020	IF OPTIONS.PRESENT%( OPTION.NUMBER% ) = FALSE%	&	\ CPU.TYPE$ = MID( RBLDEM.SEQ.KEY$, 13%, 2% )			&	\ PRINT "CPU type: "; CPU.TYPE$			IF DEBUG.FLAG%	&	\ GO TO 2030	IF CPU.TYPE$ = "**"				&	\ GO TO 2020	IF CPU.TYPE$ <> SYSCHANGE.PROC.TYPE$		&	!								&	!	Get the next command from the rebuilde      m.		&	!	If not a "build at sysgen", skip it.			&	!	Extract the option number from the command record.	&	!	Skip this command if that option is not present.	&	!	Extract the CPU type from the command record.		&	!	Go process this command if it is valid for all CPU	&	!	  types.						&	!	Skip this command if the processor types do not match.	&2030	\ BREED.COMMAND$ = TRM$( RBLDEM.COMMAND.LINE$ )			&	\ GOSUB 13000							&	\ PRINT COMAND.COMMAND$; " executed"	IF DEBUG.FLAG%		&	\ GO TO 2020	IF NO.ERRORS.YET% = FALSE%      			&	\ PRINT "? "; COMAND.COMMAND$					&	\ GOTO 31000							&	!								&	!	Get the next command to execute.			&	!	Set up the breed command.				&	!	Go process the command.					&	!	Go back for another one if we have no errors yet.	&	!	If we had errors, print out an error message.		&	!	Get out.						&4000	\ CLOSE #7%							&	\ GO TO 32000							&	!								&	!	Close the rebuildem file.				&	!	Go exit.						&10000	!$**************************************************************&	!								&	!								&	!	S U B R O       U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&13000	!$**************************************************************&	!								&	!								&	!	P R O C E S S     A     C O M M A N D			&	!								&	!								&	!	INPUT:		- BREED.COMMAND$ contains the command to&	!			  be executed.  It may be an indirect	&	!			  command file.				&	!								&	!	RETURNS:	- STATUS% contains 1% if all commands	&	!      			    were successful.  Contains 2% 	&	!			    otherwise.				&	!			  NO.ERRORS.YET% is flagged FALSE% if	&	!			    error occurs.			&	!								&	!								&	!***************************************************************&									&	\ STATUS% = 1%							&	\ BREED.TASK$ = "MCR..."					&	!								&	!	Flag this particular command(s) as successful unless	&	!	  error(s) occur.					&	!	Set up the breed task as "MCR..."			&	!								&	\ IF ASCII(BREED.COMMAND$) <> ASCII("@")			&	  THEN								&		  GO SUB 20000					      	&		\ NO.ERRORS.YET% = FALSE%	IF BREED.ERROR% <> 1%	&		\ STATUS% = 2%			IF BREED.ERROR% <> 1%	&		\ GO TO 13099						&	!								&	!	Check to see if command is indirect command file.	&	!	If not,							&	!		Execute the command.				&	!		Set the global and local error flags as needed.	&	!		Exit the routine.				&13010	\ OPEN TRM$(RIGHT(BREED.COMMAND$,2%)) FOR INPUT AS FILE 9%	&	!								&	!	Open the indirect command file.				&13020	\ LINPUT #9%, BREED.COMMAND$					&	\ GO TO 13020	IF BREED.COMMAND$ = ""				&	\ GO       SUB 20000							&	\ NO.ERRORS.YET% = FALSE%	IF BREED.ERROR% <> 1%		&	\ STATUS% = 2%			IF BREED.ERROR% <> 1%		&	\ GO TO 13020							&	!								&	!	Get the next command from the file.			&	!	  End of file will take us to 13030.			&	!	Execute the command.					&	!	Set the global and local error flags as needed.		&	!	Go back for more input processing.			&13030	\ CLOSE #9%							&	!								&	!	Close the file.						&	!	Signal completion of the file.				&13099	\ RETURN							&15000	!$********************************      ******************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ RESUME 4000	IF  ERL = 2020					&	!					      			&	!	At end of rebuildem file, resume at 4000.		&19200	\  RESUME 13030	IF  ERL = 13020%				&			AND ERR =    11%				&	!								&	!	Catch end of file from indirect command file.		&19202	\ IF ERL = 13010						!BL8-01&	  THEN	  NO.ERRORS.YET% = FALSE%				!BL8-01&		\ STATUS% = 2%						!BL8-01&		\ RESUME 13099						!BL8-01&	!								 BL8-01&	!	If the error is file or account not found,		 BL8-01&	!		Set that we encountered and error.		 BL8-01&	!		Resume at the end of the function.		 BL8-01&19900	\ PRINT								&      	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B       R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&31000	!$								&	!								&	!	E R R O R    R E T U R N				&	!								&	!*								&	!								&	\ CALL EMIT BY REF ( TE%(), 2%, 0% )				&	!								&	!	Emit a non 1 status.					&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!**********************************************************   X  *****&32010	\ CLOSE T% FOR T% = 1% TO 12%					&	!								&	!	Close all files that may still be open.			&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDX         BùK“Á› 8$ÛK      1	!***************************************************************&	!								&	!								&	!	F I L E    H A N D L I N G    F O R    C H A N G E	&	!								&	!		P R E P A R E    B A S E    L E V E L		&	!								&	!								&	!								&	SUB FILES( OPERATION% )		! Start sub-program here	&	!								&	!								&	!								&	!	Version:	BL8					&	!	Edit level:	00					&	!	Edit date:	18-Jul-78				&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!*******************      ********************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 OTH      ERWISE 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!**********************      *****************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL FILES( OPERATION% )				&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	OPERATION%		This variable indicates the	&	!				  desired function as follows:	&	!				1 -> If there is no build con-	&	!				  trol file, open the pass I	&	!				        files.  Otherwise, open the	&	!				  pass III files.		&	!				2 -> Open the pass II files.	&	!				3 -> Create and initialize the	&	!				  build control file.		&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL      8-00	19-Jul-78 KMR	Initial coding.			&	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!					      			&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			D      ESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!************************      ***************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!********************************************      *******************&899	\ COM TRUE%, FALSE%						&	!								&	!	Make sure that we have the values for true and false.	&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!*****      **********************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&	!								&	\ FILE.NAME$( 2% )	= "COMPONENT.FIL"			&	\ FILE.NAME$( 3% )	= "REFERENCE.FIL"			&	\ FILE.NAME$( 4% )	= "CMDLIN.FIL"		      		&	\ FILE.NAME$( 5% )	= "BLDCNTR.FIL"				&	\ FILE.NAME$( 6% )	= "CMDENTRY.LST"			&	\ FILE.NAME$( 7% )	= "REBUILDEM.CMD"			&	\ FILE.NAME$( 8% )	= "COPYCNTRL.FIL"			&	\ FILE.NAME$( 9% )	= "CHNGCNTRL.FIL"			&	\ FILE.NAME$( 10% )	= "BASELEVEL.NUM"			&	!								&	!	Set up the file names for locked file processing.	&	!								&	\ FILE.LOCKED% = FALSE%						&	\ ON OPERATION%							&		GO TO							&			2000,	! Open files for Passes I & III	!	&			3000,	! Open files for Pass II	!	&			4000	! Initialize build control fi      le	!	&	!								&	!	Branch according to the operation value.		&2000	!$**************************************************************&	!								&	!								&	!	O P E N    P A S S    I    O R    P A S S    I I I	&	!								&	!			F I L E S				&	!								&	!								&	!***************************************************************&	!								&	\ FILE.NUMBER% = 10%						&	\ OPEN "BASELEVEL.NUM" AS FILE 10%				&		,ORGANIZATION	SEQUENTIAL				&				VARIABLE				&		,ACCESS		READ					&		,ALLOW		READ					&		,MAP		BASLVL		      			&	!								&	!	Open the Base Level Number File.			&	!								&	\ ON FN.GET.RECORD%(	GET.SEQUENTIAL%,			&				10%, 0%, ""	)			&		GO TO							&			2020,		! Record found		!	&			2010,		! No such record	!	&			2010		! End of file		!	&	!								&	!	Get the record from the file.				&2010	\ PRINT "? BASELEVEL.NUM File is corrupt."			&	\ FATAL.ERROR% = TRUE%						&	\ GO TO 32767							&	!								&	!	Print message that file has been corrupted.		&2020	\ BASE.LEVEL.NUMBER$ = BASLVL.BASE.LEVEL.NUMBER$		&	!								&	!	Ge      t the number for use.					&	!								&	\ CLOSE 10%							&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Close the file since we are done with it.		&2030	\ FILE.NUMBER% = 2%						&	\ OPEN "COMPONENT.FIL" AS FILE 2%				&		,ORGANIZATION	INDEXED					&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		CMPONT					&		,PRIMARY KEY	CMPONT.COMPONENT.KEY$			&		,ALTERNATE KEY	CMPONT.COMPONENT.NAME$			&				NODUPLICATES				&		,ALTERNATE KEY	CMPONT.SHIPPING.CODE$			&				DUPLICATES				&				CHANGES					&	!		      						&	!	Open the COMPONENT File.				&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Reset the flag before we try to open another file.	&2040	\ FILE.NUMBER% = 5%						&	\ OPEN "BLDCNTR.FIL" FOR INPUT AS FILE #5%			&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		NONE					&		,MAP		BLDCTL					&	!								&	!	Attempt to open the build control file for input.	&	!	If we succeed (we don't trap out here) then we are	&	!	  in a BUILD phase and must indicate such.  If not	&	!	        there, the error trapper will put us a statement	&	!	  2090.							&	!								&	\ ON FN.GET.RECORD%(	GET.RELATIVE%,				&				5%, 1%, ""	)			&		GO TO							&			2047,		! Got the record	!	&			2043,		! No such record	!	&			2043		! No such record	!	&	!								&	!	Get the first record from the file.			&2043	\ PRINT "? Build Control file is corrupt"			&	\ GO TO 32000							&	!								&	!	Tell the user why we are quitting.			&	!	Go set the fatal error and return.			&2047	\ SEQUENCE.NUMBER$ = BLDCTL.SEQUENCE.NUMBER$	      		&	\ BUILDING% = TRUE%						&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Extract the sequence number from the build control	&	!	  file.							&	!	We found the file.  Therefore we are building.  Set the	&	!	  flag to tell the main program about this.		&2050	\ FILE.NUMBER% = 6%						&	\ OPEN "CMDENTRY.LST" FOR INPUT AS FILE #6%			&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		NONE					&		,MAP		ENTRY					&	!								&	!	Open up the file that contains the list of commands.	&	!			      					&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make sure the next file is not marked as locked.	&2060	\ FILE.NUMBER% = 7%						&	\ OPEN "REBUILDEM.CMD" FOR INPUT AS FILE #7%			&		,ORGANIZATION	SEQUENTIAL				&				VARIABLE				&		,ACCESS		MODIFY					&		,ALLOW		NONE					&		,MAP		RBLDEM					&	!								&	!	Open the REBUILDEM file.				&	!								&	\ GO TO 32767							&	!								&	!	Return to the main routine.				&2090	\ BUILDING% = FALSE%						&	\ FILE.NUMBER% = 3%						&	\ OPEN "REFERENCE.FIL" AS FILE 3%				&      		,ORGANIZATION	INDEXED					&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		REFER					&		,PRIMARY KEY	REFER.ENTRY.NUM$			&		,ALTERNATE KEY	REFER.ORIG.FILE$			&				DUPLICATES				&				CHANGES					&		,ALTERNATE KEY	REFER.REF.FILE$				&				DUPLICATES				&	!								&	!	Note that we are not building.				&	!	Open the REFERENCE File.				&	!								&	\ GO TO 32767							&	!								&	!	Go finish up.						&3000	!$**************************************************************&	!								&	!								&      	!	O P E N    P A S S    I I    F I L E S			&	!								&	!								&	!***************************************************************&	!								&	\ FILE.NUM% = 8%						&	\ OPEN "COPYCNTRL.FIL" FOR OUTPUT AS FILE #8%			&		,ORGANIZATION	SEQUENTIAL				&				FIXED					&		,ACCESS		WRITE					&		,ALLOW		NONE					&		,MAP		CPYCTL					&	!								&	!	Open the copy control file.				&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Assure that the next file is not locked before we 	&	!	  start.						&3010	\ FILE.NU      MBER% = 9%						&	\ OPEN "CHNGCNTRL.FIL" FOR OUTPUT AS FILE #9%			&		,ORGANIZATION	SEQUENTIAL				&				FIXED					&		,ACCESS		WRITE					&		,ALLOW		NONE					&		,MAP		CHGCTL					&	!								&	!	Open the change control file.				&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make sure that the next file is not marked as locked.	&3020	\ FILE.NUMBER% = 4%						&	\ OPEN "CMDLINE.FIL" AS FILE 4%					&		,ORGANIZATION	INDEXED					&				VARIABLE				&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		CMDLIN				      	&		,PRIMARY KEY	CMDLIN.KEY$				&	!								&	!	Open the file for business				&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make sure the next file is not marked as locked.	&3030	\ FILE.NUMBER% = 6%						&	\ OPEN "CMDENTRY.LST" FOR OUTPUT AS FILE #6%			&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		WRITE					&		,ALLOW		NONE					&		,MAP		ENTRY					&	\ NUM.OF.CMDS.WRITTEN% = 0%					&	!								&	!	Open the entry file for output.				&	!	Indicate that no commands have been written to the	&	!	        file.							&	!								&	\ GO TO 32767							&	!								&	!	Go finish up.						&4000	!$**************************************************************&	!								&	!								&	!	I N I T I A L I Z E    B U I L D    C O N T R O L	&	!								&	!			F I L E					&	!								&	!								&	!***************************************************************&	!								&	\ FILE.NUMBER% = 5%						&	\ OPEN "BLDCNTR.FIL" FOR OUTPUT AS FILE #5%			&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		WRITE					&		,ALLOW		NONE		      			&		,MAP		BLDCTL					&	!								&	!	Open the build control file.				&	!								&	\ BLDCTL.CUR.PTR% 	= 1%					&	\ BLDCTL.NUM.ENTRIES%	= NUM.OF.CMDS.WRITTEN%			&	\ BLDCTL.SEQUENCE.NUMBER$ = SEQUENCE.NUMBER$			&	\ PUT #5%, RECORD 1%						&	\ CLOSE #5%							&	\ GO TO 32767							&	!								&	!	Set the current record pointer to one.			&	!	Set the number of entries to the current number of	&	!	  commands written.					&	!	Make sure you save the current sequence number.		&	!	Put the record into the build control       file.		&	!	Close the file.						&	!	Return to the main routine.				&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S          S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ RESUME 19990	IF ERR = 162%					&	!								&	!	Resume at the locked file handling if the error is	&	!	  a locked file.					&	!								&	\ RESUME 2090	IF ERR =       5%  AND  ERL = 2040			&	!								&	!	If it is the absence of the build control file that	&	!	  trapped us, go continue with the non-building phase.	&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&19990	!$**************************************************************&	!								&	!								&	!	H A N D L E    L O C K E D    F I L E S			&	!								&	!								&	!***********      ****************************************************&	!								&	\ IF FILE.LOCKED%						&	  THEN	  PRINT "? Can't access file ";				&			FILE.NAME$( FILE.NUMBER% )			&		\ GO TO 32000						&	!								&	!	If we tried unlocking the file but still failed, tell	&	!	  the user our problem and the get out.			&	!								&	  ELSE	  TE% = FN.UNLOCK.FILE%( FILE.NAME$( FILE.NUMBER% ))	&		\ FILE.LOCKED% = TRUE%					&		\ ON FILE.NUMBER%					&			GO TO						&				32000,	! No such file number	!	&				2030,	! Component file	!	&      				2090,	! Reference file	!	&				3020,	! Command Line Diction.	!	&				2040,	! Build Control file	!	&				2050,	! Command list		!	&				2060,	! Re-buildem file	!	&				3000,	! Copy Control file	!	&				3010,	! Change Control file	!	&				2000	! Base level file	!	&	!								&	!	If this is our first try at unlocking the file, unlock	&	!	  it, indicate that we have now tried once and then	&	!	  go try to open the file again.			&20000	!$**************************************************************&	!								&	!				      				&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&   ¦  	!								&	!								&	!***************************************************************&32010	\ FATAL.ERROR% = TRUE%						&	!								&	!	Set a fatal error before we return.			&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND ¦         Seì“Á› 8$xQ      960	!*************************************************************** BL7-02&	!								&	!								&	!	P H A S E    C O N T O L    F I L E			&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	04					 BL7-04&	!	Edit date:	22-Aug-78				 BL7-04&	!	Author(s):	KMR					&	!								&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00	040778	  KMR	Field Test Release I		&	!	BL7-01	041078	  KMR	Added flag to indicate when	 BL7-01&	!				  COPYTAPE is inst      alled.	 BL7-01&	!	BL7-02	041878	  KMR	Changed line number.		 BL7-02&	!	BL7-03	052478	  KMR	Added a field for the CPU type.	 BL7-03&	!	BL7-04	22-Aug-78 KMR	Added debug flag field.		 BL7-04&	!								&	!***************************************************************&	!								&	\ MAP	(PHSCTL)						&		 PHSCTL.PHASE.NUM%				!   0 !	&		,PHSCTL.CTP.INSTALLED%				!   2 !	!BL7-01&		,PHSCTL.DEBUG.FLAG%				!   4 !	!BL7-04&		,PHSCTL.TAPE.UNIT$		=  5%		!   9 !	!BL7-04&		,PHSCTL.CPU.TYPE$		=  2%		!  11 ! !BL7-04&&						   D   		!  13 ! !BL7-04&	!								&	!	Map for the UPDTRXPHA.SES File				& D          @wxQ“Á› 8$     \  960	\ MAP	(SCHMAP)	SYSCHANGE.COMMAND$=75			&	\ MAP	(SCHMAP)	SYSCHANGE.PROC.TYPE$=2,			&				OPTIONS.PRESENT%(19%)			&	!								&	!	This MAP represents the context passed to the		&	!	SYSCHANGE program.  The SYSCHANGE program will do	&	!	any builds implied by the change tape which normally	&	!	do not get built by SYSGEN.  SYSCHANGE+SYSGEN=CHGMAKER	&\         BŸM“Á› 8$        1	!***************************************************************&	!								&	!								&	!	C H A N G E    P R E P A R E    B A S E    L E V E L	&	!								&	!			P A S S    I				&	!								&	!								&	!								&	!	Program:	CPBLP1					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	28-Jul-78				&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O       P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 T      HE	&	!   SOFTWARE IS HEREBY TRANSFERRED.				&	!								&	!   THE INFORMATION  IN  THIS SOFTWARE  IS SUBJECT TO CHANGE	&	!   WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS  A COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$***********************************      ***************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/00	28-Jul-78 KMR	Initial coding as seperate	&	!				  program.			&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			      &	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************      ************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$************      **************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!      	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	      !								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIMENSION TE%( 1% )						&	!								&	!	We need this for emit status.				&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M           L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$ = "BL1-00"					&	!								&	!	Assign the current version/edit level #			&1020	!\ PRINT								&	!\ PRINT "CPBLP1	"; VER.EDIT.NUM$; "   ";			&	!\ PRINT								&	!\ PRINT "Change Prepare Base Level - Pass I"			&	!\ PRINT								&	!								&	!	Output program herald messages				&1030	\ TE% = FN.SET      UP.DIALOGUE%					&	!								&	!	Set up the dialogue functions.				&	!								&	\ FILE.NAME$( 1% ) = "CHGPREPBL.FIL"				&	\ FILE.NAME$( 2% ) = "COMPONENT.FIL"				&	\ FILE.NAME$( 3% ) = "REFERENCE.FIL"				&	!								&	!	Setup the file names we will need to open files.	&	!								&	\ FIND.SEQUENTIAL%	= 0%					&	\ FIND.KEY.EQ%		= 1%					&	\ FIND.KEY.GT%		= 2%					&	\ FIND.KEY.GE%		= 3%					&	\ GET.SEQUENTIAL%	= 4%					&	\ GET.KEY.EQ%		= 5%					&	\ GET.KEY.GT%		= 6%					&	\ GET.KEY.GE%		= 7%					&	\ FIND.RELATIV      E%	= 8%					&	\ GET.RELATIVE%		= 9%					&	!								&	!	Assign the file operation codes.			&	!								&	\ GOSUB 14000							&	!								&	!	Go open up the necessary files.				&2000	!$**************************************************************&	!								&	!								&	!	P R E - S E T    W O R K    F L A G S			&	!								&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 631% )	IF DEBUG.FLAG%		&	\ RESTORE #2%, KEY #0%						&	!								&	!	Restore the component file to the start.  The key	&	!	  doesn't matter.					&2010	      \ ON FN.GET.RECORD%(	GET.SEQUENTIAL%,			&				2%, 0%, ""	)			&		GO TO							&			2020,	! Found another record		!	&			2030,	! Record not found		!	&			2030	! End of file			!	&	!								&	!	Get the next record in the component file.		&2020	\ BUILD.CODE$ = RIGHT( CMPONT.SHIPPING.CODE$, 3% )		&	\ IF CMPONT.CUR.LEVEL$ = CMPONT.RELEASE.LEVEL$			&	  OR INSTR( 1%, "KN", BUILD.CODE$ ) <> 0%			&	  OR INSTR( 1%, "MF", CMPONT.GROUP.KEY$ ) <> 0%			&	  THEN	  GO TO 2010	IF CMPONT.WORK.FLAG$ = "N"		&		\ CMPONT.WORK.FLAG$ = "      N"				&	  ELSE	  CMPONT.WORK.FLAG$ = "C"				&		\ SUBSTITUTE.TEXT$( 1% ) = TRM$( CMPONT.COMPONENT.KEY$ )&			IF DEBUG.FLAG%					&		\ TE% = FN.PRINT.BLOCK%( 0%, 668% )	IF DEBUG.FLAG%	&	!								&	!	If the component's current level is the same as its	&	!	  release level or it should not be built or it is	&	!	  a maintenance or functional test:			&	!	Then							&	!		Make no changes if its work flag is N.		&	!		If not N, make it N.				&	!	Else							&	!		Force its work flag to C.			&2025	\ UPDATE #2%							&	\ GO       TO 2010							&	!								&	!	Update the component's record.				&	!	Go back for the next one.				&2030	!$**************************************************************&	!								&	!								&	!	S E A R C H    F O R    C H A N G E D 			&	!								&	!		C O M P O N E N T S				&	!								&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 632% )	IF DEBUG.FLAG%		&	\ CHANGES% = FALSE%						&	\ RESTORE #2%, KEY #0%						&	!								&	!	Set changes to FALSE. If we find it true when we are	&	!	  done with the file, we have to g      o back through the	&	!	  file again.						&	!	Restore the file to its start.				&2040	\ ON FN.GET.RECORD%(	GET.SEQUENTIAL%,			&				2%, 0%, ""	)			&		GO TO							&			2060,	! Found another record		!	&			2050,	! Record not found		!	&			2050	! End of file			!	&	!								&	!	Get the next record in the component file.		&2050	\ GO TO 2030	IF CHANGES%					&	\ TE% = FN.PRINT.BLOCK%( 0%, 633% )	IF DEBUG.FLAG%		&	\ GO TO 3000							&	!								&	!	If there have been changes, run through the file again.	&	!	Go back to t      he main program.				&2060	\ GO TO 2040	IF CMPONT.WORK.FLAG$ = 'Y'			&	!								&	!	Skip this component if we have already processed it.	&	!								&	\ GO TO 2040	IF INSTR( 1%, "MF", CMPONT.GROUP.KEY$ ) <> 0%	&	!								&	!	Skip this component if it is a maintenance program	&	!	  or a functional test program.				&	!								&	\ GO TO 2040	IF CMPONT.WORK.FLAG$ = "N"			&	!								&	!	Skip this component if it is one of the one's that has	&	!	  not yet been marked as changed.			&	!	ALL component's that fall thro      ugh should be marked C.	&2070	\ CURRENT.COMPONENT$,						&	  SUBSTITUTE.TEXT$( 1% ) = TRM$( CMPONT.COMPONENT.KEY$ )	&	\ CMPONT.WORK.FLAG$ = 'Y'					&	\ UPDATE #2%							&	\ TE% = FN.PRINT.BLOCK%( 0%, 634% )	IF DEBUG.FLAG%		&	!								&	!	Save the component name so we can get the right		&	!	  component next time around.				&	!	Set the work flag for the current component to Y.	&	!	Update the record for the current component.		&	!								&	\ ON FN.GET.RECORD%(	FIND.KEY.EQ%,				&				3%,					&				2%,					&				CU      RRENT.COMPONENT$	)		&		GO TO							&			2080,	! Found the record		!	&			2130,	! Record not found		!	&			2130	! End of file			!	&	!								&	!	Attempt to find the first guy that references this	&	!	  component.						&2080	\ ON FN.GET.RECORD%(	GET.SEQUENTIAL%,			&				3%, 0%, ""	)			&		GO TO							&			2090,	! Record found			!	&			2130,	! Record not found		!	&			2130	! End of file			!	&	!								&	!	Get the next entry in the reference file.		&2090	\ GO TO 2130	IF REFER.REF.FILE$ <> CURRENT.COMPONENT$	&	\ GO TO 2      080	IF INSTR( 1%, "MF", REFER.RE.BUILD.FLAG$ ) = 0%	&	\ SUBSTITUTE.TEXT$( 2% ) = TRM$( REFER.ORIG.FILE$ )		&	\ TE% = FN.PRINT.BLOCK%( 0%, 635% )	IF DEBUG.FLAG%		&	!								&	!	If the secondary key field of the REFERENCE record does	&	!	  not agree with the current component name, we have	&	!	  found all back references for the current component.	&	!	Go get the next back reference for this component if	&	!	  this back reference does not require a mandatory	&	!	  rebuild.						&	!	Put the name of the referenc      ing component where the	&	!	  messages expect it.					&	!								&	\ ON FN.GET.RECORD%(	GET.KEY.EQ%,				&				2%,					&				0%,					&				REFER.ORIG.FILE$ )			&		GO TO							&			2110,	! Record found			!	&			2100,	! Record not found		!	&			2100	! End of file			!	&	!								&	!	Get the component entry for the referencing component.	&	!								&2100	\ TE% = FN.PRINT.BLOCK%( 0%, 601% )				&	\ INCONSISTENT.INSTRUCTIONS% = TRUE%				&	\ GO TO 2080							&	!								&	!	Set up the message to tell the user of our proble      m.	&	!	Tell the user.						&	!	Tell the main program of our problem.			&	!	Go try the next guy that references the current		&	!	  component.						&2110	\ IF INSTR( 0%, "YC", CMPONT.WORK.FLAG$ ) <> 0%			&	  THEN	  CMPONT.CUR.LEVEL$ = BASE.LEVEL.NUMBER$		&		\ UPDATE #2%						&		\ GO TO 2080						&	!								&	!	If this component is already marked as changeing, don't	&	!	  bother to look further.  Instead			&	!		Set it's current level to the base level #.	&	!		Update the record.				&	!		Go back for another refe      rence to the current	&	!		  component.					&	!								&	  ELSE	  GO TO 2120						&			IF INSTR( 1%, " KN",				&				RIGHT( CMPONT.SHIPPING.CODE$, 3% ) )	&					<> 0%				&			OR INSTR( 1%, "MF", CMPONT.GROUP.KEY$ ) <> 0%	&		\ CMPONT.CUR.LEVEL$ = BASE.LEVEL.NUMBER$		&		\ CMPONT.WORK.FLAG$ = "C"				&		\ UPDATE #2%						&		\ CHANGES% = TRUE%					&		\ TE% = FN.PRINT.BLOCK%( 0%, 649% )	IF DEBUG.FLAG%	&		\ GO TO 2080						&	!								&	!	If this component should not be rebuilt, go show an	&	!	  error (It is a component       which is not built at Change	&	!	  time or it is a maintenance or functional test prog-	&	!	  ram).							&	!	Set this component's current level to the base level	&	!	  number.						&	!	Set this component's work flag to "C".			&	!	Update the compoent's record.				&	!	Indicate that we have made changes.			&	!	Go try another reference.				&2120	\ TE% = FN.PRINT.BLOCK%( 0%, 613% )				&	\ GO TO 2080							&	!								&	!	Tell the user that we cannot do the build requested.	&	!	This does not cause the process to       stop.		&	!	Go get the next reference.				&2130	\ UNLOCK #3%							&	!								&	!	Unlock the reference file.				&	!								&	\ ON FN.GET.RECORD%(	FIND.KEY.EQ%,				&				2%,					&				0%,					&				CURRENT.COMPONENT$ )			&		GO TO							&			2040,	! Found the record		!	&			2140,	! Record not found		!	&			2140	! End of file			!	&	!								&	!	Find the record for the current component.		&2140	\ TE% = FN.PRINT.BLOCK%( 0%, 609% )				&	\ GO TO 31000							&	!								&	!	Note that the record that used to be there is no      t	&	!	  longer there.						&	!	Return to the main program.				&3000	!$**************************************************************&	!								&	!								&	!	F I N I S H    U P    P A S S    I			&	!								&	!								&	!***************************************************************&	!								&	\ GO TO 32000	IF INCONSISTENT.INSTRUCTIONS% = FALSE%		&	\ TE% = FN.PRINT.BLOCK%( 0%, 608% )				&	\ GO TO 31000							&	!								&	!	Skip to the end if we had no inconsistent instructions.	&	!	Tell the user that the b      uild is being aborted.		&	!	Go exit with error status.				&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&14000	!$**************************************************************&	!								&	!								&	!	O P E N    P A S S    I    F I L E S			&	!								&	!								&	!********************      *******************************************&	!								&	\ FILE.LOCKED% = FALSE%						&14010	! Open and get on control file					&14020	! Error on get on control file					&14030	! Extract data from and close control file.			&14040	\ FILE.NUMBER% = 2%						&	\ OPEN "COMPONENT.FIL" AS FILE 2%				&		,ORGANIZATION	INDEXED					&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		CMPONT					&		,PRIMARY KEY	CMPONT.COMPONENT.KEY$			&		,ALTERNATE KEY	CMPONT.COMPONENT.NAME$			&				NODUPLICATES				&		,AL      TERNATE KEY	CMPONT.SHIPPING.CODE$			&				DUPLICATES				&				CHANGES					&	!								&	!	Open the COMPONENT File.				&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Reset the flag before we try to open another file.	&14050	\ FILE.NUMBER% = 3%						&	\ OPEN "REFERENCE.FIL" AS FILE 3%				&		,ORGANIZATION	INDEXED					&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		REFER					&		,PRIMARY KEY	REFER.ENTRY.NUM$			&		,ALTERNATE KEY	REFER.ORIG.FILE$			&				DUPLICATES				&				CHANGES					&	      	,ALTERNATE KEY	REFER.REF.FILE$				&				DUPLICATES				&	!								&	!	Note that we are not building.				&	!	Open the REFERENCE File.				&14060	\ RETURN							&	!								&	!	Return to the caller.					&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**********************************      ****************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&	!								&	\ SUBSTITUTE.TEXT$( 40% ) = NUM1$( ERR )	IF DEBUG.FLAG%	&	\ SUBSTITUTE.TEXT$( 41% ) = NUM1$( ERL )	IF DEBUG.FLAG%	&	\ TE% = FN.PRINT.BLOCK%( 0%, 638% )		IF DEBUG.FLAG%	&19010	\ RESUME 19990	IF ERR = 162%					&	!								&	!	Resume at the locked file handling if the error is	&	!	  a locked file.					&19900	\       PRINT								&	\ TE% = FN.PRINT.BLOCK%( 0%, 618% )	IF DEBUG.FLAG%		&	\ TE% = FN.PRINT.BLOCK%( 0%, 636% )	IF DEBUG.FLAG%		&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&19990	!$**************************************************************&	!								&	!								&	!	H A N D L E    L O C K E D    F I L E S			&	!								&	!								&	!*************************************************************      **&	!								&	\ IF FILE.LOCKED%						&	  THEN	  PRINT "? Can't access file ";				&			FILE.NAME$( FILE.NUMBER% )			&		\ GO TO 31000						&	!								&	!	If we tried unlocking the file but still failed, tell	&	!	  the user our problem and the get out.			&	!								&	  ELSE	  TE% = FN.UNLOCK.FILE%( FILE.NAME$( FILE.NUMBER% ))	&		\ FILE.LOCKED% = TRUE%					&		\ ON FILE.NUMBER%					&			GO TO						&				14010,	! Control file		!	&				14040,	! Component file	!	&				14050	! Reference file	!	&	!								&	!	If this is       our first try at unlocking the file, unlock	&	!	  it, indicate that we have now tried once and then	&	!	  go try to open the file again.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N       S		&	!								&	!								&	!***************************************************************&31000	!$**************************************************************&	!								&	!								&	!	F A T A L    E R R O R    H A N D L I N G		&	!								&	!								&	!***************************************************************&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 637% )	IF DEBUG.FLAG%		&	\ CALL EMIT BY REF ( TE%(), 2%, 0% )				&	!								&	!	Send out non-success status.				&32000	!$*****************************      *********************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ TE% = FN.PRINT.BLOCK%( 0%, 636% )	IF DEBUG.FLAG%		&	\ CLOSE T% FOR T% = 1% TO 12%					&	!								&	!	Close all files.					&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!************************************   .   ***************************&	!								&	\ END .          œ	E^“Á› 8$        805	\ MAP (GENCOM)	GENCOM.EXTEND$=8192		!		&	!						!		&	!	Extend the GENCOM region to 4K words.	!		&810	\ MAP (GENCOM)	HERALD.TEXT$=24,		!0		&			SLACK1$=8,			!30		&			FINE.TUNE%,			!40		&			INSERT.XDT%,			!42		&			PROCESSOR.TYPE%,		!44		&			FL.PT.PROC%,			!46		&			MEMORY.SIZE%,			!50		&			PARITY.MEMORY%,			!52		&			CACHE.MEMORY%,			!54		&			EXTENDED.MEMORY%,		!56		&			SYSTEM.DISK$=6,			!60		&			DEV.SYS%,			!66		&			!				!		&			CRASH.DEVICE$=6,		!70		&			CRASH.CSR$=6,			!76		&			CRASH.UNIT$=2,			!104		&			!      				!		&			CLOCK.FREQ%,			!106		&			CLK.CSR$=6,			!110		&			CLK.VEC$=3,			!116		&			CLK.PRI$=3,			!121		&			CLK.CT.REG$=6,			!124		&			CLK.TICKS.PER.SEC$=4,		!132		&			CLK.LOAD.CT$=6,			!136		&			CLK.INT.ENB$=6,			!144		&			!				!		&			HIGHEST.VECTOR$=4,		!152		&			!				!		&			NUM.OF.DLS%,			!156		&			DL.CSR$(8%)=6,			!160		&			DL.VEC$(8%)=3,			!166		&			DL.PRI$(8%)=3,			!171		&			!				!		&			NUM.OF.LPS%,			!		&			LP.CSR$(7%)=6,			!		&			LP.VEC$(7%)=3,			!		&			LP.PRI$(7%)=3,			!		&			LP.TYPE$(7%)=6,			!		&      			!				!		&			TS03.CSR$=6,			!		&			TS03.VEC$=3,			!		&			TS03.PRI$=3,			!		&			NUM.OF.TS03.DRIVES%,		!		&			!				!		&			NUM.OF.KMCS%,			!		&			KMC.CSR$(9%)=6,			!		 V1.1&			KMC.VEC$(9%)=3,			!		 V1.1&			KMC.PRI$(9%)=3,			!		 V1.1&			!				!		&			NUM.OF.DUPS%,			!		&			DUP.CSR$(19%)=6,		!		&			DUP.VEC$(19%)=3,		!		&			DUP.PRI$(19%)=3,		!		&			!				!		&			NUM.OF.DZS%,			!		&			DZ.CSR$(13%)=6,			!		&			DZ.VEC$(13%)=3,			!		&			DZ.PRI$(13%)=3,			!		&			!				!		&			NUM.OF.DVS%,			!		&			DV.CSR$(2%)=6,			!		&			      DV.VEC$(2%)=3,			!		&			DV.PRI$(2%)=3,			!		&			!				!		&			NUM.OF.DMCS%,			!		&			DMC.CSR$(3%)=6,			!		&			DMC.VEC$(3%)=3,			!		&			DMC.PRI$(3%)=3,			!		&			DMC.DUPLEX$(3%)=6,		!		&			DMC.TYPE$(3%)=6,		!		&			!				!		&			!				!		&			NUM.OF.DZS.IN.SE%,		!		&			SE.DZ.NEEDS.MODEM$=4,		!		&			NUM.OF.DUPS.IN.COMM%,		!		&			NUM.OF.IBM.KMCS%,		!		&			SE.DZ.TERM.NUM%(15%),		!		&			!				!		&			!				!		&			NUM.OF.RH.CNTLRS%,		!		&			RH.UNITS%(3%),			!		&			RH.UNIT.TYPE$(3%)=2,		!		&			RH.PRI$(3%)=3,			!		&			RH.VEC$      (3%)=3,			!		&			RH.CSR$(3%)=6,			!		&			!				!		&			NUM.OF.DB.DRIVES%,		!		&			NUM.OF.DB.CNTLRS%,		!		&			DB.RH.CNTLR$(15%)=1,		!		&			DB.IS.RP06%(15%),		!		&			!				!		&			DB.PHY.NUM%(15%),		!		&			!				!		&			!				!		&			NUM.OF.DR.DRIVES%,		!		&			NUM.OF.DR.CNTLRS%,		!		&			!				!		&			DR.RH.CNTLR$(15%)=1,		!		&			DR.PHY.NUM%(15%),		!		&			!				!		&			!				!		&			NUM.OF.MM.DRIVES%,		!		&			NUM.OF.MM.MASTERS%,		!		&			NUM.OF.MM.SLAVES%(1%),		!		&			MM.MSTR%(15%),			!		&			MM.RH.CNTLRS$(1%)=1,		!		&			MM.P      HY.NUM%(15%),		!		&			!				!		&			!				!		&			NUM.OF.DM.DRIVES%,		!		&			DM.CSR$=6,			!		&			DM.VEC$=3,			!		&			DM.PRI$=3,			!		&			DM.IS.RK07%(7%),		!		&	!						!		&	!	These definitions set up the answers to the 11M+	&	!	sysgen dialog in a form useful to the SYSGEN program	&	!						!		&			COM.SUPPORT%,			!		&			NUM.OF.NODES%,			!		&			NODE.NAME$(3%)=6,		!		&			LINK.NODE$(3%)=6,		!		&			PRI.LINK$(3%)=1,		!		&			SEC.LINK$(3%)=1,		!		&			NUM.IBM.DUPS%,			!		&			IBM.SUPPORT%,			!		&			KMC.UNIT%,			!		&			APR1      %,				!		&			CONFIGURE.DAT$=34,		!		&			NUM.OF.TERMS%,			!		&			UNITS.ON.DUP%(3%),		!		&			CON.POLL.ADDR%(3%),		!		&			POLL.ADDRS%(3%,31%),		!		&			VER.EDIT.NUM$=12,		!		&			NUM.OF.ATS.DZ.LINES%,		!		&			DZ.LINE.COUNT%,			!		&			DMC.USED%(3%),			!		&			NUM.OF.DUPS.IN.3271%,		!BJD 9-FEB	&			NUM.OF.DUPS.IN.2780%,		!BJD 9-FEB	&			NUM.OF.2780.KMCS%,		!BJD 9-FEB	&			NUM.OF.3271.KMCS%,		!BJD 9-FEB	&			T2780.SUPPORT%,			!		&			MAX.62.ON.ANY.LINE%,		!		&			CON.POLL.2780%(3%),		!		&			GENERAL.RESERVED$=56,		!		&	!		      				!		&	!	The above section of the COM region describes the 	&	!	Communications support SYSGEN variables.!		&	!						!		&			NUM.OF.TPS%,			!		&			NUM.OF.KMC.DZS%,		!		&			NUM.OF.KMC.DUPS%,		!		&			KMC.DEVICE.CT%(2%),		!		&			KMC.DEVICE%(2%,15%),		!		&			DUP.PLEX$(15%)=1,		!		&			DUP.MODEM$(15%)=1,		!		&			DUP.TERM.COUNT%(15%),		!		&			DZ.BAUD.RATE%(15%,7%),		!		&			DZ.MODEM$(15%,7%)=1,		!		&			DZ.TERM.TYPE%(15%,7%),		!		&			DZ.VT62.CT%(15%,7%),		!		&			ATS.CCBS%,			!		&			ATS.LDBS%,			!		&			ATS.SDBS%,			!      		&			ATS.RDBS%,			!		&			ATS.V62$=3,			!		&			ATS.V52$=3,			!		&			ATS.DCP$=3,			!		&			ATS.KSA$=3,			!		&			ATS.KDZ$=3,			!		&			ATS.KDP$=3,			!		&			ATS.DLC$=9,			!		&			ATS.DDM$=9,			!		&			ATS.ERROR.MSG$(15%)=40,		!		&			NUM.OF.VT62%,			!		&			NUM.OF.VT52%,			!		&			NUM.OF.VT62.LINES%,		!		&			CEX.BASE%,			!		&			CEX.SIZE%,			!		&	!						!		&	!	The above section of the COM region describes the	&	!	ATS support SYSGEN variables.		!		&	!						!		&			DLR.DCBN%,			!		&			DLR.CTBN%,			!		&			FUMR%,				!		&		      	RH.UNIT%,			!		&			RH.LTR$=1,			!		&			DMC.LTR$=1,			!		&			DB.DCBN%,			!		&			DR.DCBN%,			!		&			MM.DCBN%,			!		&			RH.DEVICE$=6,			!		&			DMC.UNIT%,			!		&			DB.UNIT%,			!		&			SCBN%,				!		&			DR.UNIT%,			!		&			MM.UNIT%,			!		&			UNITC%,				!		&			DM.UNIT%,			!		&			LP.LTR$=1,			!		&			DL.LTR$=1,			!		&			LP.UNIT%,			!		&			MT.UNIT%,			!		&			TT.UNIT%,			!		&			DL.UNIT%,			!		&			DZ.LTR$=1,			!		&			FILL$=1,			!		&			CHNL%,				!		&			DZ.UNIT%,			!		&			PS.DEV$=3,			!		&			ASS.DEV$=3,			!		&	!						!		&      	!	Variables needed to generate the KERNEL.!		&	!		Several sub-programs are used to generate	&	!		the KERNEL so these variables must appear in	&	!		COMMON.				!		&	!						!		&			VALID.REGION$=14,		!		&	!						!		&	!	This variable validates that this is a SYSGEN common	&	!	region.					!		&	!						!		&			SYSGEN.LONG.FORM%,		!		&			BASIC.SUPPORT%,			!		&			COBOL.SUPPORT%,			!		&			DATATR.SUPPORT%,		!		&			SELECTIVE.DIALOGUE%,		!		&			DO.SETUP%,			!		&			SYSGEN.DATE$=9,			!		&			SYSGEN.TIME$=8,			!		&			FILL$=1   0   ,			!		&			BRIAN%,				!		&			GENCOM.END%			!		& 0          %z“Á› 8$        1	!***************************************************************&	!								&	!								&	!		C O M S U P    D I A L O G U E			&	!								&	!								&	!								&	SUB	COMSUP	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			      &	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  for use on such system and to one who agrees t      o	&	!    these license terms.  Title to  and  ownership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**************************      *************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL COMSUP(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$******************************      ********************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This sub-program performs the Co      mmmunications support	&	!	dialogue for the TPS-11 SYSGEN program.			&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output      		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$*********************************************************      *****&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ----------------------      --------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 90      1-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\       ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1005	\ COM.SUPPORT%=0%						&	\ ON ERROR GOTO 1007						&	\ OPEN "[1,24]CCPTKB.CMD" FOR INPUT AS FILE 9%			&	\ CLOSE 9%							&	\ GOTO 32000 IF NUM.OF.DMCS%=0%					&	\ COM.SUPPORT%=-1%						&	\ LINK.NODE$(T%)="$$$..." FOR T%=0% TO 3%			&	\ PRINT								&	\ PRINT "	TRAX/TL Communications Dialogue"		&	\ GOTO 1010							&	!								&	!	Don't do this dialogue if the hardware is not present.	&1007	\ RESUME 32000							&1010	\ FOR T%=0%       TO NUM.OF.DMCS%-1%					&		\ DMC.USED%(T%)=0%					&	\ NEXT T%							&	\ DEFAULT$="1"							&	\ DEFAULT$=NUM1$(NUM.OF.NODES%) IF NUM.OF.NODES%<>0%		&	\ ASK.RANGE(0%)=0.						&	\ ASK.RANGE(1%)=NUM.OF.DMCS%					&	\ ON FN.ASK%(33%,DEFAULT$,"I",TRUE%,1%) GOTO 1020,9000,1030	&	!								&	!	Ask the "Number of nodes" question.			&	!		ALT out through 1020				&	!		CTRL/Z out with error status			&	!		Valid to 1030					&1020	\ SPAWN.STATUS%=1%+(27%*8%)					&	\ GOTO 32000							&	!								&	!	Set altmode status, and exi      t the subprogram.		&1030	\ NUM.OF.NODES%=ASK.NUM%					&	!								&	!	Set up the number of nodes.				&1040	\ FOR NODE.NUM%=1% TO NUM.OF.NODES%				&1045		\ DEFAULT$=NODE.NAME$(NODE.NUM%-1%)			&		\ ASK.RANGE(0%)=6.					&		\ SUBSTITUTE.TEXT$(1%)=NUM1$(NODE.NUM%)			&		\ ON FN.ASK%(34%,DEFAULT$,"",TRUE%,2%) GOTO 1010,9000,	&								1050	&	!								&	!	Ask the "Node name" question.				&	!		ALT to number of nodes				&	!		CTRL/Z out					&	!		valid to set up the name			&1050		\ NODE.NAME$(NODE.NUM%-1%)=ASK.CVT$			&	!      								&	!	Set up the node name.					&1060		\ DEFAULT$=""						&		\ DEFAULT$=PRI.LINK$(NODE.NUM%-1%) UNLESS		&					PRI.LINK$(NODE.NUM%-1%)=" "	&		\ ASK.RANGE(0%)=0%					&		\ ASK.RANGE(1%)=NUM.OF.DMCS%-1%				&		\ ON FN.ASK%(35%,DEFAULT$,"I",TRUE%,2%) GOTO 1045,9000,	&								1070	&	!								&	!	Ask the "Link number" question.				&	!		ALT to the node name question			&	!		CTRL/Z out					&	!		valid to set up the primary link number		&1070		\ LINK.NODE$(ASK.NUM%)=NODE.NAME$(NODE.NUM%-1%)		&		\ PRI.LINK$(NODE.NU      M%-1%)=CHR$(48%+ASK.NUM%)		&	!								&	!	Set up the LINK node name, and the PRIMARY link number.	&1080		\ DEFAULT$="NONE"					&		\ DEFAULT$=SEC.LINK$(NODE.NUM%-1%) UNLESS		&					SEC.LINK$(NODE.NUM%-1%)=" "	&		\ VALID$="/NONE/"					&		\ FOR T%=0% TO NUM.OF.DMCS%-1%				&			\ VALID$=VALID$+NUM1$(T%)+"/"			&				 UNLESS NUM1$(T%)=PRI.LINK$(NODE.NUM%-1%)&		\ NEXT T%						&		\ T%=FN.ASK%(36%,DEFAULT$,VALID$,0%,2%)			&		\ ON T%  GOTO 1060,9000,1090,1090,1090,1090,1090	&	!								&	!	Ask the "Secondary Link number"       question.		&	!		ALT to the primary link question		&	!		CTRL/Z out					&	!		Valid to set up the secondary link number	&1090		\ SEC.LINK$(NODE.NUM%-1%)=" "				&		\ T%=T%-4%						&		\ GOTO 1095% IF T%<0%					&		\ SEC.LINK$(NODE.NUM%-1%)=ASK.CVT$			&		\ ASK.NUM%=VAL(ASK.CVT$)				&		\ LINK.NODE$(ASK.NUM%)=NODE.NAME$(NODE.NUM%-1%)		&1095	\ NEXT NODE.NUM%						&	!								&	!	Set up the secondary link number and do the next node.	& 1500	\ ON ERROR GOTO 1510						&	\ FOR T%=0% TO NUM.OF.NODES%-1%					&1502		\ PRIM%      =VAL(PRI.LINK$(T%))				&		\ DMC.USED%(PRIM%)=-1%					&1504		\ GOTO 1505 IF SEC.LINK$(T%)=" "			&		\ SEC%=VAL(SEC.LINK$(T%))				&		\ DMC.USED%(SEC%)=-1%					&1505	\ NEXT T%							&	\ ON ERROR GOTO 19000						&	\ SPAWN.STATUS%=1%						&	\ GOTO 32000							&	!								&	!	Set success status and exit.				&1510	\ RESUME 1504 IF ERL=1502%					&	\ RESUME 1505 IF ERL=1504%					&9000	\ SPAWN.STATUS%=2%						&	\ GOTO 32000							&	!								&	!	Set error status and exit.				&10000	!$***********************************      ***************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!**************************************************************      *&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!		      						&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G   R  			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDR         s	–,“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L    G E N E R A T I O N    M O D U L E	&	!								&	!								&	!								&	SUB	ATSGEN	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O       P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**********      *****************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL ATSGEN(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**************      ************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This routine cal      ls ATSGN1 and ATSGN2 to generate the	&	!	Application Terminal Support.				&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file       output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$***************************************************      ***********&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ----------------      --------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Li      nes 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!						      		&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1005	\ CALL RET							&	\ GOTO 1015 IF NO.FILES%<>0%					&1010	\ SPAWN.STATUS%=1%						&	\ CALL ATSGN1(SPAWN.STATUS%)					&	\ CALL ATSGN3(SPAWN.STATUS%)					&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ CALL RET							&1015	\ CALL ATSGN2(SPAWN.STATUS%)					&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	!								&	!	Call the necessary routines needed to generate the	&	!		ATS support.					&1020	\ GOTO 32000							&100      00	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!**********************      *****************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************      ************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!							   z  	&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDz         þvì“Á› 8$xQ   ´   956	\ MAP	(SAVCTL)						&		 SAVCTL.FILE.NAME$		= 13		!  0 !	&		,SAVCTL.FILE.UFD$		=  9		! 13 !	&		,SAVCTL.CONTIG.FLAG$		=  1		! 22 !	&	!								&	!	Map for the SAVECNTRL File				& ´          <–,“Á› 8$        1	!***************************************************************&	!								&	!								&	!		D A T G E N    D I A L O G U E			&	!								&	!								&	!								&	SUB	DATGEN	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			      &	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  for use on such system and to one who agrees t      o	&	!    these license terms.  Title to  and  ownership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**************************      *************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL DATGEN(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$******************************      ********************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This is a dummy routine at this       point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!*********      ******************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E       S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!*****************      **********************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines       930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ VT.NUM%=FN.VT.CREATE%	      					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(VT.NUM%)			&	\ T%=FN.EXEC.BLOCK%("MCR...",913%,0%)				&	!								&	!	Set up standard default error trap			&	!	Create the virtual terminal and assign its system disk	&1010	\ SPAWN.STATUS%=1%						&	\ BLOCK%=970%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%)+SKIP.ASSEMBLIES% TO	&			(HELP.INDEX%(MODULE.INDX%)+			&				HELP.INDEX%(MODULE.INDX%+1%)-1%)	&		\ TASK$="MCR..."					&		\ VT.CMD$=ASK.HELP$(MODULE%)				&		\ T%=FN.TASK.INIT%(TASK      $)				&		\ PRINT "Spawning: ";TASK$;" (on VT) with: ";VT.CMD$ IF	&			BREED.DEBUG%<>0%				&1012		\ ON FN.VT.COMM%("!@#$%^&*()","!@#$%^&*()") 		&			GOTO	1030,	! TASK TERMINATED		&				1012,	! SHOULDN'T HAPPEN		&				1015,	! INPUT REQUESTED, SEND EOF	&				1012,	! GET THE OUTPUT, THROW IT AWAY	&				1012	! SHOULDN'T HAPPEN		&1015		\ T%=FN.VT.EOF%						&		\ GOTO 1012						&	!								&	!	If input requested, send EOF and return for exit.	&1030		\ SPAWN.STATUS%=EX.FLAG%-1%				&		\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<      >1%		&	\ NEXT MODULE%							&	!								&	!	Do the datatrieve generation over a virtual terminal.	&1040	\ GOTO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I       O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpe      cted errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!*****************************      **********************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ T%=FN.VT.DONE%						&	!								&	!	Release the virtual terminal.				&32767	!$**************************************************************&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!$****************************************   (   **********************&	\ SUBEND							&(          6Kz“Á› 8$        1	!***************************************************************&	!								&	!								&	!		L A N S U P    D I A L O G U E			&	!								&	!								&	!								&	SUB	LANSUP	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			      &	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  for use on such system and to one who agrees t      o	&	!    these license terms.  Title to  and  ownership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**************************      *************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL LANSUP(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$******************************      ********************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This is a dummy routine at this       point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!*********      ******************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E       S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!*****************      **********************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines       930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up stan      dard default error trap			&1010	\ BASIC.SUPPORT%,COBOL.SUPPORT%=0%				&	\ ON ERROR GOTO 1020						&	\ OPEN "[1,1]BASIC2.OLB" FOR INPUT AS FILE 9%			&	\ BASIC.SUPPORT%=-1%						&	\ CLOSE 9%							&	\ GOTO 1030							&	!								&	!	See if we have BASIC+2 on this system.			&1020	\ RESUME 1030							&1030	\ ON ERROR GOTO 1040						&	\ OPEN "[1,1]COBLIB.OLB" FOR INPUT AS FILE 9%			&	\ COBOL.SUPPORT%=-1%						&	\ CLOSE 9%							&	\ GOTO 1050							&	!								&	!	See if we have COBOL on this system.			&1040	\ RESU      ME 1050							&1050	\ GOTO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!      								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20      000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$***************************************   ¦  ***********************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND¦         çÔ€“Á› 8$        1	!***************************************************************&	!								&	!								&	!	B U I L D    S Y S G E N    H E L P    T E X T		&	!								&	!	V I R T U A L    A R R A Y    C O V E R    F I L E	&	!								&	!								&	!								&	!	Program:	DLGTXT					&	!	Version:	BL8					&	!	Edit level:	00					&	!	Edit date:	09-Jun-77				&	!	Author(s):	WJB					&	!								&	!***************************************************************&11	!***************************************************************&	!						      		&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&      	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!					      			&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file outp      ut		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!*********************      ******************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&930	\ DIM TEXT.L      INES$(3),						&	      LINE.LEVEL%(3),						&	      FINISHED.LINE%(3)						&	!								&	!	Arrays for building text output lines.			&931	\ DIM T2652%(64)						&	!								&	!	Justification work array.				&932	\ DIM #12%, HELP.INDEX%(16383),					&		      ASK.HELP$( 8191) = 64				&	!								&	!	Query help text arrays.					&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!****************************      ***********************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$ = "BL8-00"					&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "DLGTXT	"; VER.EDIT.NUM$; "   ";			&	\ PRINT								&	\ PRINT "Build SYSGEN Help Text Virtual Array Cover File"	&	\ PRINT								&	!								&	!	Output program herald messages				&1050	\  TRUE% = -1%							&	\ FALSE% =  0%							&	!								&	!	Set logical cons      tants.					&1100	\ OPEN "SGNDLGHLP.DAT" FOR INPUT AS FILE 2%,			&		ORGANIZATION	SEQUENTIAL, VARIABLE,			&		ACCESS		READ					&	!								&	!	Open the source data file for business.			&1200	\ OPEN "SGNDLGHLP.VIR" FOR OUTPUT AS FILE 12%,			&		ORGANIZATION	VIRTUAL					&	!								&	!	Open a new copy of the target virtual array cover file.	&1300	\ NEXT.SLOT% = 0%						&	\ QUERY.MAX% = 0%						&	\ NUM.OF.BLOCKS% = 0%						&	!								&	!	Initialize for processing.				&1500	\ LINPUT #2%, REC$						&	\ GO TO 1500	IF L      EFT(REC$,2%) <> "**"			&	!								&	!	Search for initial record in next block.		&2000	\ START% = NEXT.SLOT%						&	\ NUM.OF.LINES% = 0%						&	\ T% = INSTR(3%,EDIT$(REC$,16%)," ")				&	\ T% = LEN(REC$)+1%	UNLESS T% <> 0%				&	\ QUERY.NUM% = VAL(MID(REC$,3%,(T%-2%)))			&	\ BLOCK.FLAG% = FALSE%						&	\ BLOCK.FLAG% = TRUE%	IF INSTR(1%,EDIT$(REC$,32%),"BLOCK")	&	\ IF QUERY.NUM% > 8191%						&	  THEN								&		  PRINT "? Query # too large:  ";			&			QUERY.NUM%					&		\ GO TO 1500						&	!								&	!	Save start       of next block.				&	!	Initialize lines/block counter.				&	!	Get query number from first line.			&	!	Set flag for block type.				&	!	Check validity of query #.				&	!	If invalid, signal with error number and skip this	&	!	  block.						&2010	\ GO TO 2100	IF BLOCK.FLAG% = TRUE%				&	\ LINPUT #2%, REC$						&	\ GO TO 3000	IF LEFT(REC$,2%) = "**"				&			OR LEFT(REC$,2%) = "$$"				&	\ IF ASCII(REC$) <> ASCII("?")					&	  AND ASCII(REC$) <> ASCII("!")					&	  THEN								&		  ASK.HELP$(NEXT.SLOT%) = " "				&		\       PRINT "% Missing question on query:  ";		&			QUERY.NUM%					&	  ELSE								&		  ASK.HELP$(NEXT.SLOT%) = RIGHT(REC$,2%)		&	!								&	!	Skip if block is pure block of text.			&	!	Otherwise, get first line of block.			&	!	Check for "?" or exclamation point prefix.		&	!	If none, signal error and substitute BLANK line.	&	!	Otherwise, stuff given line into array.			&2020	\ NEXT.SLOT% = NEXT.SLOT% + 1%					&	\ NUM.OF.LINES% = NUM.OF.LINES% + 1%				&	!								&	!	Count line added to array.				&2100	\ LINPUT #2%,       REC$						&	\ GO TO 3000	IF LEFT(REC$,2%) = "**"				&			OR LEFT(REC$,2%) = "$$"				&	!								&	!	Get next input line.					&	!	Skip out if start of next block or end of file.		&	!	Skip long line processing if not BLOCK			&2150	\ MORE.REC$ = RIGHT(REC$,64%)					&	\ REC$      =  LEFT(REC$,63%)					&	\ REC$      = REC$ + "-"	IF LEN(MORE.REC$) <> 0%		&	!								&	!	See if more text than 63 characters.			&	!	If so, peel off first 63.				&	!	If more to add later, add continuation mark.		&2200	\ ASK.HELP$(NEXT.SLO      T%) = REC$					&	\ NUM.OF.LINES% = NUM.OF.LINES% + 1%				&	\ NEXT.SLOT% = NEXT.SLOT% + 1%					&	\ IF NEXT.SLOT% < 8192%						&	  THEN								&		  REC$ = MORE.REC$					&		\ GO TO 2100	IF LEN(REC$) = 0%			&		\ GO TO 2150						&	  ELSE								&		  PRINT "? Too many lines for ASK.HELP$"		&		\ GO TO 9000						&	!								&	!	Stuff current record into array.			&	!	Count lines/block.					&	!	Advance array pointer.					&	!	Check for overflow of array.				&	!	Go back for more input if room still left.		&	!	Otherwise,       signal with error message and exit program.	&3000	\ PRINT "processing block:  "; QUERY.NUM%			&	\ GO TO 3100	IF QUERY.NUM% <= QUERY.MAX%			&	\ HELP.INDEX%(T%) = -1%						&		FOR T% =  2%*(QUERY.MAX%+1%)				&		      TO (2%*(QUERY.NUM%   ))+1%			&	\ QUERY.MAX% = QUERY.NUM%					&	!								&	!	Skip if query slot previously reserved.			&	!	Otherwise, initialize all slots between previous end	&	!	  of slots and new one.					&	!	Remark the end of the slots.				&3100	\ NUM.OF.BLOCKS% = NUM.OF.BLOCKS% + 1%				&	\ T%       = 2%*QUERY.NUM%						&	\ PRINT "% Query #: ";						&		QUERY.NUM%;						&		" is multiply-defined"					&			IF HELP.INDEX%(T%) <> -1%			&	\ HELP.INDEX%(T%   ) = START%					&	\ HELP.INDEX%(T%+1%) = NUM.OF.LINES%				&	\ GO TO 2000	IF LEFT(REC$,2%) = "**"				&	!								&	!	count on number of blocks processed.			&	!	Compute true array index.				&	!	Print warning if multiple definition occurs for this	&	!	  query number.						&	!	Store the indexing information for this block.		&	!	Go back for more is necessary.			      	&4000	\ HELP.INDEX%(0%) =  QUERY.MAX%					&	\ HELP.INDEX%(1%) = -1%						&	\ CLOSE 2%,12%							&	\ PRINT "SYSGEN Virtual Array Cover File Written"		&	\ PRINT NUM.OF.BLOCKS%;						&		" query blocks written into ";				&		QUERY.MAX%;						&		" slots"						&!!!	\ PRINT "Do you want a listing <NO> ?";				&!!!	\ INPUT Q$							&!!!	\ GO TO 8000	IF LEFT(EDIT$(Q$,32%),1%) <> "Y"		&	!								&	!	Mark maximum query number used.				&	!	Clear the unused flag anyway.				&	!	Close the data input file.				&	!	Signal pro      gressing to this point.			&5000	\ OPEN "SGNDLGHLP.LST" FOR OUTPUT AS FILE 3%			&	!								&	!	Open the listing file for the verification printout.	&	!								&	\ OPEN "SGNDLGHLP.VIR" FOR INPUT AS FILE 12%			&		,ORGANIZATION	VIRTUAL					&		,ACCESS		READ					&		,ALLOW		READ					&	!								&	!	Re-open the help text file for processing.		&5010	\ FOR QUERIES% = 1% TO QUERY.MAX%				&		\ QUERY% = 2%*QUERIES%					&	!								&	!	Loop through all slots for the printout.		&	!		Compute true array index.			&6000		\ PRIN      T #3%, "Query #:  ";				&			     QUERIES%;					&			     TAB(18%);					&		\ IF HELP.INDEX%(QUERY%) = -1%				&		  THEN							&			  PRINT #3%, "Undefined"			&			\ PRINT #3%					&			\ GO TO 7010					&		!							&		!	Start heading line for current block.		&		!	Complete line for undefined entries.		&6010		\ PRINT #3%, "Based @ ";				&			     HELP.INDEX%(QUERY%);			&			     TAB(32%);					&			     " # of lines: ";				&			     HELP.INDEX%(QUERY%+1%)			&		\ PRINT #3%						&		!							&		!	Complete line for all other en      tries.		&		!	Leave a little spacing.				&7000		\ PRINT #3%, "Line(";					&			     NUM1$(LINES%-HELP.INDEX%(QUERY%));		&			     "):	";				&			     ASK.HELP$(LINES%)				&			FOR LINES% = HELP.INDEX%(QUERY%)		&				  TO (HELP.INDEX%(QUERY%)		&				     +HELP.INDEX%(QUERY%+1%)-1%)	&		!							&		!	Cycle through, printing all lines of the block.	&7005		\ PRINT #3%						&		\ PRINT #3%						&		!							&		!	Space out block from others.			&7010	\ NEXT QUERIES%							&	!								&	!	End of query processing loop.				&8000	      \ CLOSE 3%, 12%							&	\ PRINT "Listing file SGNDLGHLP.LST Complete"			&		IF LEFT(EDIT$(Q$,32%),1%) <> "Y"			&	\ GO TO 32767							&	!								&	!	Close remaining files.					&	!	Signal completion.					&	!	Exit the program.					&9000	\ CLOSE 2%, 12%							&	\ KILL "SGNDLGHLP.VIR"						&	\ GO TO 32767							&	!								&	!	For FATAL errors, close all files and delete the	&	!	  partially complete cover file.			&	!	Exit the program.					&19000	!$**************************************************************&	!	      							&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ IF  (ERR = 5% OR ERR = 162%)					&	  AND  ERL = 1100%						&	  THEN								&		  PRINT "? Missing input data file"			&		\ RESUME 32767						&	!								&	!	Catch missing data file.				&19020	\ IF  ERR = 11%							&	  AND ERL = 1500%						&	  THEN								&		  PRINT "? Premature end to input before next block"	&		\ RESUME 9000						&	!								&	!      	Catch run off end of file while trying to re-sync.	&19030	\ IF  ERR = 11%							&	  AND (ERL = 2010% OR ERL = 2100%)				&	  THEN								&		  PRINT "? Missing $$END record - end assumed"		&		\ REC$ = "$$END"					&		\ RESUME 3000						&	!								&	!	Catch end of file on input data stream.			&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&32767	!$************************   Ð   **************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDÐ          –,N“Á› 8$        1	!***************************************************************&	!								&	!								&	!		G E N L S T    R E P O R T			&	!								&	!								&	!								&	SUB	GENLST	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			&	!	      							&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!******************************      *********************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL GENLST(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**********************************      ****************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This module generates the SYSGEN opt      ions summary	&	!	report.  The user is then given a choice regarding	&	!	the disposition of this file.				&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    4		Listing file				&	!								&	!************************************      ***************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	      !								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!********************************************      *******************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dim      ension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&      1010	\ OPEN "[200,200]SYSGENOPT.LST" FOR OUTPUT AS FILE 4%		&	\ PAGE%=1%							&	\ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)			&	\ SUBSTITUTE.TEXT$(50%)=HERALD.TEXT$				&	\ SUBSTITUTE.TEXT$(51%)=TIME$(0%)+" "+DATE$(0%)			&	\ T%=FN.PRINT.BLOCK%(4%,870%)					&	\ SUBSTITUTE.TEXT$(55%)=""					&	\ SUBSTITUTE.TEXT$(55%)=" not" IF BASIC.SUPPORT%=0%		&	\ T%=FN.PRINT.BLOCK%(4%,872%)					&	\ SUBSTITUTE.TEXT$(55%)=""					&	\ SUBSTITUTE.TEXT$(55%)=" not" IF COBOL.SUPPORT%=0%		&	\ T%=FN.PRINT.BLOCK%(4%,874%)					&	\ SU      BSTITUTE.TEXT$(55%)=""					&	\ SUBSTITUTE.TEXT$(55%)=" not" IF DATATR.SUPPORT%=0%		&!	\ T%=FN.PRINT.BLOCK%(4%,876%)					&	\ PAGE%=PAGE%+1%						&	\ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)			&	\ GOTO 1080 IF DEV.SYS%<>0%					&	!								&	!	Open the listing file.					&	!	Indicate the language support.				&1020	\ GOTO 1040 UNLESS COM.SUPPORT%<>0%				&	\ PRINT #4, CHR$(12%)						&	\ T%=FN.PRINT.BLOCK%(4%,870%)					&	\ SUBSTITUTE.TEXT$(2%)=NUM1$(NUM.OF.NODES%)			&	\ T%=FN.PRINT.BLOCK%(4%,880%)					&	\ FOR NOD      E.NUM%=0% TO NUM.OF.NODES%-1%				&		\ SUBSTITUTE.TEXT$(3%)=NUM1$(NODE.NUM%)			&		\ SUBSTITUTE.TEXT$(4%)=NODE.NAME$(NODE.NUM%)		&		\ SUBSTITUTE.TEXT$(5%)=PRI.LINK$(NODE.NUM%)		&		\ SUBSTITUTE.TEXT$(6%)=LINK.NODE$(NODE.NUM%)		&		\ SUBSTITUTE.TEXT$(7%)=SEC.LINK$(NODE.NUM%)		&		\ T%=FN.PRINT.BLOCK%(4%,882%)				&	\ NEXT NODE.NUM%						&	\ PAGE%=PAGE%+1%						&	\ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)			&	!								&	!	Describe the TPS to TPS communications facility.	&1040	\ GOTO 1060 UNLESS IBM.SUPPORT%<>0%		      		&	\ PRINT #4%, CHR$(12%)						&	\ T%=FN.PRINT.BLOCK%(4%,870%)					&	\ SUBSTITUTE.TEXT$(1%)=NUM1$(NUM.OF.DUPS.IN.COMM%)		&	\ T%=FN.PRINT.BLOCK%(4%,884%)					&	\ FOR IBM.UNIT%=0% TO NUM.OF.DUPS.IN.COMM%-1%			&		\ PAGE%=PAGE%+1%					&		\ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)		&		\ PRINT #4%, CHR$(12%)					&		\ T%=FN.PRINT.BLOCK%(4%,870%)				&		\ SUBSTITUTE.TEXT$(2%)=NUM1$(IBM.UNIT%)			&		\ SUBSTITUTE.TEXT$(3%)=NUM1$(UNITS.ON.DUP%(IBM.UNIT%))	&		\ SUBSTITUTE.TEXT$(4%)="STA"+FN.INT.TO.OCT$(		&			CON.POLL.      ADDR%(IBM.UNIT%))			&		\ T%=FN.PRINT.BLOCK%(4%,885%)				&		\ FOR STATION%=0% TO UNITS.ON.DUP%(IBM.UNIT%)-1%	&			\ SUBSTITUTE.TEXT$(5%)=NUM1$(STATION%)		&			\ T$=FN.INT.TO.OCT$(STATION%)			&			\ T$=FN.INT.TO.OCT$(POLL.ADDRS%(IBM.UNIT%,	&				STATION%)) UNLESS POLL.ADDRS%(IBM.UNIT%,&				0%)=-1%					&			\ SUBSTITUTE.TEXT$(6%)="STA"+T$			&			\ T%=FN.PRINT.BLOCK%(4%,886%)			&		\ NEXT STATION%						&	\ NEXT IBM.UNIT%						&	\ PAGE%=PAGE%+1%						&	\ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)			&	!								&	!	Descr      ibe the TPS to IBM communications facility.	&1060	\ SUBSTITUTE.TEXT$(8%)=NUM1$(NUM.OF.TPS%+1%)			&	\ PRINT #4, CHR$(12%)						&	\ T%=FN.PRINT.BLOCK%(4%,870%)					&	\ PAGE%=PAGE%+1%						&	\ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)			&	\ TERMINAL.NUMBER%=0%						&	\ SUBSTITUTE.TEXT$(8%)=NUM1$(NUM.OF.TPS%)			&	\ T%=FN.PRINT.BLOCK%(4%,890%)					&	\ GOTO 1070 IF NUM.OF.KMC.DUPS%=0%				&	\ FOR DUP.UNIT%=0% TO NUM.OF.DUPS%-(NUM.OF.DUPS.IN.COMM%+1%)	&		\ PRINT #4, CHR$(12%)					&		\ T%=FN.PRINT.BLOCK%(4%,870%)		      		&		\ PAGE%=PAGE%+1%					&		\ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)		&		\ SUBSTITUTE.TEXT$(10%)=NUM1$(DUP.UNIT%)		&		\ SUBSTITUTE.TEXT$(11%)="FULL"				&		\ SUBSTITUTE.TEXT$(11%)="HALF" IF DUP.PLEX$(DUP.UNIT%)="1"&		\ SUBSTITUTE.TEXT$(12%)=""				&		\ SUBSTITUTE.TEXT$(12%)="not" IF DUP.MODEM$(DUP.UNIT%)="0"&		\ T%=FN.PRINT.BLOCK%(4%,894%)				&		\ SUBSTITUTE.TEXT$(3%)="V62"				&		\ FOR TT%=1% TO DUP.TERM.COUNT%(DUP.UNIT%)		&			\ TERMINAL.NUMBER%=TERMINAL.NUMBER%+1%		&			\ GOSUB 12000					&			\ T%=FN.PRIN      T.BLOCK%(4%,896%)			&		\ NEXT TT%						&	\ NEXT DUP.UNIT%						&	!								&	!	Let them know about their ATS DUP support.		&1070	\ DZ.COUNT%=1%							&	\ DZ.COUNT%=NUM.OF.KMC.DZS% UNLESS NUM.OF.KMC.DZS%=0%		&	\ SUBSTITUTE.TEXT$(12%)=NUM1$(NUM.OF.ATS.DZ.LINES%)		&	\ DZ.COUNT%=DZ.COUNT%+NUM.OF.DZS.IN.SE%				&	\ GOTO 1075 IF NUM.OF.DZS%=NUM.OF.DZS.IN.SE%			&	\ DZ.LINE.COUNT%=NUM.OF.ATS.DZ.LINES%				&	\ FOR DZ.UNIT%=NUM.OF.DZS.IN.SE% TO DZ.COUNT%-1%		&		\ SUBSTITUTE.TEXT$(14%)=NUM1$(DZ.UNIT%)			&		\ FOR CHNL%=0%       TO 7%					&		    \ GOTO 1075 IF DZ.LINE.COUNT%=0%			&		    \ PRINT #4, CHR$(12%)				&		    \ T%=FN.PRINT.BLOCK%(4%,870%)			&		    \ PAGE%=PAGE%+1%					&		    \ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)	&		    \ T%=FN.PRINT.BLOCK%(4%,898%) IF 			&			DZ.LINE.COUNT%=NUM.OF.ATS.DZ.LINES%		&		    \ SUBSTITUTE.TEXT$(20%)=NUM1$(CHNL%)		&		    \ SUBSTITUTE.TEXT$(12%)=""				&		    \ SUBSTITUTE.TEXT$(12%)="not" IF			&				DZ.MODEM$(DZ.UNIT%,CHNL%)="0"		&		    \ SUBSTITUTE.TEXT$(15%)=NUM1$(DZ.BAUD.RATE%(	&					DZ.UNI      T%,CHNL%))		&		    \ SUBSTITUTE.TEXT$(16%)=NUM1$(DZ.VT62.CT%(		&					DZ.UNIT%,CHNL%))		&		    \ SUBSTITUTE.TEXT$(17%)="VT62"			&		    \ SUBSTITUTE.TEXT$(17%)="VT52" IF			&			DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=1%		&		    \ SUBSTITUTE.TEXT$(17%)="LA36" IF			&			DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=2%		&		    \ SUBSTITUTE.TEXT$(17%)="LA180" IF			&			DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=3%		&		    \ T%=FN.PRINT.BLOCK%(4%,900%)			&		    \ FOR T.TERM%=1% TO DZ.VT62.CT%(DZ.UNIT%,CHNL%)	&			\ TERMINAL.NUMBER%=TERMINAL.NUMBER%+1%		&		      	\ SUBSTITUTE.TEXT$(3%)="V62" IF			&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=0%	&			\ SUBSTITUTE.TEXT$(3%)="V52" IF			&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=1%	&			\ SUBSTITUTE.TEXT$(3%)="L36" IF			&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=2%	&			\ SUBSTITUTE.TEXT$(3%)="L18" IF 		&				DZ.TERM.TYPE%(DZ.UNIT%,CHNL%)=3%	&			\ GOSUB 12000					&			\ T%=FN.PRINT.BLOCK%(4%,902%)			&		    \ NEXT T.TERM%					&		    \ DZ.LINE.COUNT%=DZ.LINE.COUNT%-1%			&		\ NEXT CHNL%						&	\ NEXT DZ.UNIT%							&1075	\ PRINT #4, CHR$(12%)						&	\ T      %=FN.PRINT.BLOCK%(4%,870%)					&	\ PAGE%=PAGE%+1%						&	\ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)			&	\ T%=FN.PRINT.BLOCK%(4%,906%)					&	\ FOR TT%=0% TO 7%						&		\ SUBSTITUTE.TEXT$(25%)=TRM$(ATS.ERROR.MSG$(TT%))	&		\ T%=FN.PRINT.BLOCK%(4%,908%)				&	\ NEXT TT%							&	\ GOTO 1080 IF FINE.TUNE%=0%					&	\ PRINT #4, CHR$(12%)						&	\ T%=FN.PRINT.BLOCK%(4%,870%)					&	\ PAGE%=PAGE%+1%						&	\ SUBSTITUTE.TEXT$(52%)="Page "+NUM1$(PAGE%)			&	\ SUBSTITUTE.TEXT$(15%)=NUM1$(ATS.CCBS%)			&	\ SUBSTITUTE.TEXT$      (16%)=NUM1$(ATS.LDBS%)			&	\ SUBSTITUTE.TEXT$(17%)=NUM1$(ATS.SDBS%)			&	\ SUBSTITUTE.TEXT$(18%)=NUM1$(ATS.RDBS%)			&	\ T%=FN.PRINT.BLOCK%(4%,904%)					&	!								&	!	Describe the ATS configuration.				&1080	\ GOTO 3200010000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&12000	\ T$=NU      M1$(TERMINAL.NUMBER%)					&	\ FOR T%=1% TO (3%-LEN(T$))					&		\ T$="0"+T$						&	\ NEXT T%							&	\ SUBSTITUTE.TEXT$(2%)=T$+SUBSTITUTE.TEXT$(3%)			&	\ RETURN							&	!								&	!	Generate the terminal name.				&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$************      **************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I       B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!						   N  		&	!***************************************************************&	\ CLOSE 4%							&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDN         B‡K“Á› 8$@Q      810	!***************************************************************&	!								&	!								&	!	C O M M O N    F O R    C H A N G E    P R E P A R E	&	!								&	!		B A S E    L E V E L				&	!								&	!	Version:	BL8					&	!	Edit level:	00					&	!	Edit date:	18-Jul-78				&	!	Author(s):	KMR					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL8-00  18-Jul-78 KMR	Initial coding.			&	!								&	!************************************************************      ***&	!								&	\ COMMON	(CPBL)						&	!								&	!	Flags							&	!								&		 DEBUG.FLAG%					!   0 !	&		,VT.DEBUG%					!   2 !	&		,FATAL.ERROR%					!   4 !	&		,BUILDING%					!   6 ! &	!								&	!	File access values					&	!								&		,FIND.SEQUENTIAL%				!   8 ! &		,FIND.KEY.EQ%					!  10 !	&		,FIND.KEY.GT%					!  12 !	&		,FIND.KEY.GE%					!  14 !	&		,FIND.RELATIVE%					!  16 ! &		,GET.SEQUENTIAL%				!  18 ! &		,GET.KEY.EQ%					!  20 ! &		,GET.KEY.GT%					!  22 ! &		,GET.KEY.GE%					!  24 !	&		,GET.RELATI      VE%					!  26 !	&	!								&	!	Number of commands written				&	!								&		,NUM.OF.CMDS.WRITTEN%				!  28 ! &	!								&	!	Base level number.					&	!								&		,BASE.LEVEL.NUMBER%				!  30 ! &	!								&	!	File name array						&	!								&		,FILE.NAME$( 12% )		= 16%		!  32 ! &	!								&	!	Operator's initials					&	!								&		,OPERATORS.INITIALS$		= 3%		! 224 !	&	!								&	!	Common area for CHGPREPBL and subprograms.		&	!								&		,SEQUENCE.NUMBER$		= 5%		! 227 !	&	!								&	!	Sequence number for label       records			&								! 232 !	&          ByN“Á› 8$ s   Ì   932	\ DIM #12%, HELP.INDEX%(16383),					&		      ASK.HELP$( 8191) = 64				&	!								&	!	Query help text arrays.					&933	\ DIM #11,SUBSTITUTE.TEXT$(99%)=128				&	!								&	!	Substitute text array					& Ì          B¬K“Á› 8$À+      1	!***************************************************************&	!								&	!								&	!	C H A N G E    P R E P A R E    B A S E    L E V E L	&	!								&	!		D I A L O G    A N D    B R E E D		&	!								&	!			H A N D L I N G				&	!								&	!								&	!								&	SUB DIALOG(	CPBL.OPERATION%,				&			CPBL.QUERY%,					&			CPBL.TASK$,					&			CPBL.COMMAND$,					&			CPBL.STATUS%	)				&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	27-Jul-78				&	!	Author(s):	KMR					      &	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFT      WARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL DIALOG(	CPBL.OPERATION%,			&	!			CPBL.QUERY%,				&	!			CPBL.TASK$,				&	!			CPBL.COMMAND$,				&	!			CPBL.STATUS%	)			&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	      ------------------------------- &	!	CPBL.OPERATION%		The desired operation:		&	!				  1 -> Setup dialogue and get	&	!				    operators intials.		&	!				  2 -> Execute the block speci-	&	!				    fied by CPBL.QUERY% using	&	!				    the task specified by	&	!				    CPBL.TASK$.			&	!				  3 -> Print the block speci-	&	!				    fied by CPBL.QUERY% on	&	!				    channel 0.			&	!				  4 -> Process the command	&	!				    specifed by CPBL.COMMAND$.	&	!	CPBL.QUERY%		Query number, when needed.	&	!	CPBL.TASK$		Task n      ame when needed.		&	!	CPBL.COMMAND$		Command when needed.		&	!	CPBL.STATUS%		Return status. 1 implies	&	!				  success.			&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/00	27-Jul-78 KMR	Initial coding.			&	      !								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	----      -----	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			--------------------------      ----  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								      &	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$************************      **************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!							      	&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1030	!$**************************************************************&	!								&	!								&	!	B R A N C H    T O    O P E R A T I O N			&	!								&	!								&	!***************************************************************&	!								&	\ ON CPBL.OPERATION%						&		GO TO						      	&			1090,		! Setup.		!	&			2000,		! Execute block		!	&			3000,		! Print block		!	&			4000		! Process build command	!	&	!								&	!	Branch according to the value of CPBL.OPERATION%.	&1090	!$**************************************************************&	!								&	!								&	!	I N I T I A L I Z E					&	!								&	!								&	!***************************************************************&	!								&	\ TE% = FN.SETUP.DIALOGUE%					&	!								&	!	Set up the dialogue functions.				&1120	\ CPBL.STATUS% = 1%			      			&	\ GO TO 32767							&	!								&	!	Set the return status to success.			&	!	Return.							&2000	!$**************************************************************&	!								&	!								&	!	E X E C U T E    B L O C K				&	!								&	!								&	!***************************************************************&	!								&	\ CPBL.STATUS% = FN.EXEC.BLOCK%(	CPBL.TASK$,		&						CPBL.QUERY%,		&						TRUE%		)	&	!								&	!	Execute the requested block.				&	!								&	\ GO TO 32767							&	!								&	!	Return to the       user.					&3000	!$**************************************************************&	!								&	!								&	!	P R I N T    B L O C K					&	!								&	!								&	!***************************************************************&	!								&	\ CPBL.STATUS% = FN.PRINT.BLOCK%( 0%, CPBL.QUERY% )		&	\ GO TO 32767							&	!								&	!	Print the requested block.				&	!	Go return.						&4000	!$**************************************************************&	!								&	!								&	!	P R O C E S S    B U I L D    C O M M A N       D S		&	!								&	!								&	!***************************************************************&	!								&	\ BREED.COMMAND$ = TRM$( CPBL.COMMAND$ )			&	\ GOSUB 13000							&	\ CPBL.STATUS% = STATUS%					&	\ GO TO 32767							&	!								&	!	Get the breed command from the argument list.		&	!	Go process the command.					&	!	Set the return status.					&	!	Go return.						&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&      	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S       T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!*****************      **********************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$***   ê   ***********************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDê          ì“Á› 8$xQ      961	!***************************************************************&	!								&	!								&	!	C H A N G E    C O N T R O L    F I L E			&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	02					 BL7-02&	!	Edit date:	04-Aug-78				 BL7-02&	!	Author(s):	KMR					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00  041878    KMR   Field Test Release I		&	!	BL7-01	02-Aug-78 KMR	Added flag to notify CHGMAKER	 BL7-01&	!				  of files to be copied f      or	 BL7-01&	!				  rebuild at sysgen time.	 BL7-01&	!	BL7-02	04-Aug-78 KMR	Flag added above was removed.	 BL7-02&	!								&	!***************************************************************&	!								&	\ MAP	(CHGCTL)						&		 CHGCTL.TAPE.NUM$		=  2		!   0 ! &		,CHGCTL.HOLD.UFD$		=  9		!   2 !	&		,CHGCTL.TARGET.UFD$		=  9		!  11 !	&		,CHGCTL.COMPONENT.NAME$		= 13		!  20 ! &		,CHGCTL.COMPONENT.KEY$		= 24		!  33 ! &		,CHGCTL.LEVEL$			=  8		!  57 !	&		,CHGCTL.SEQUENCE.KEY$		= 20		!  65 ! &		,CHGCTL.CONTIG.FLAG$       		=  1		!  85 ! &		,CHGCTL.FIRST.IN.UFD$		=  1		!  86 !	&		,CHGCTL.FILLER$			=  1		!  87 ! !BL7-02&								!  88 ! &	!								&	!	Map for the CHGCNTRL File				&           Nq"“Á› 8$        1	!***************************************************************&	!								&	!								&	!	L I S T     R E F E R E N C E S				&	!								&	!								&	!								&	!	Program:	REFER					&	!	Version:	00					&	!	Edit level:	00					&	!	Edit date:	31-May-78				&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPY      RIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!      	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$*****************      *********************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$*********************************************************      *****&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&      	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!********************************      *******************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote l      ibrary dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&954	\ MAP	(REFER)	&		 REFER.ENTRY.NUM$	= 5%	&		,REFER.ORIG.FILE$	= 24%	&		,REFER.REF.FILE$	= 24%	&		,REFER.RE.BUILD.FLAG$	=  1%	&		,REFER.FILLER$		= 10%	&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	      !***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$ = "00-00"					&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "REFER	"; VER.EDIT.NUM$; "   ";			&	\ PRINT								&	\ PRINT "List Componenet References"				&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ TRUE% = -1%							&	\ FALSE% = 0%							&	!								&	!	Set up so      me logical values.				&2000	\ OPEN 'REFERENCE.FIL' AS FILE #3%				&		,ORGANIZATION	INDEXED					&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		MODIFY					&		,MAP		REFER					&		,PRIMARY KEY	REFER.ENTRY.NUM$			&		,ALTERNATE KEY	REFER.ORIG.FILE$			&				DUPLICATES				&				CHANGES					&		,ALTERNATE KEY	REFER.REF.FILE$				&				DUPLICATES				&	!								&	!	Open the reference file.				&2005	\ ON FN.ASK%( "COMMAND",					&			"EXIT",						&			"/EXIT/LIST/DELETE",				&			0%, -1%, 0% )					&		GO TO	2005, 32000, 32000,       2010, 3000			&	!								&	!	Find out what they want to do with the reference file.	&2010	\ ON FN.ASK%(	"Component key to LIST",				&			"",						&			"",						&			0%, 0%, 0%	)				&	  GO TO								&		2005,				! ESC		!	&		32000,				! Control Z	!	&		2020				! Other		!	&	!								&	!	Prompt.							&2020	\ COMPONENT.KEY$ = ASK.CVT$					&	\ PRINT								&	\ PRINT "Forward references from "; COMPONENT.KEY$; ":"		&	\ PRINT								&	\ FIND #3%, KEY #1% EQ COMPONENT.KEY$				&	\ WHILE TRUE%							&		\ GET #3%						&		\       GO TO 2030	IF COMPONENT.KEY$			&				<> TRM$(REFER.ORIG.FILE$)		&		\ PRINT	  "["; REFER.ENTRY.NUM$; "] ";			&			REFER.ORIG.FILE$; " ";REFER.REF.FILE$;		&			REFER.RE.BUILD.FLAG$				&		\ NEXT							&	!								&2030	\ PRINT								&	\ PRINT "Backward references to "; COMPONENT.KEY$; ":"		&	\ PRINT								&	\ FIND #3%, KEY #2% EQ COMPONENT.KEY$				&	\ WHILE	TRUE%							&		\ GET #3%						&		\ GO TO 2040	IF COMPONENT.KEY$			&				<> TRM$(REFER.REF.FILE$)		&		\ PRINT "["; REFER.ENTRY.NUM$; "]	";		&			REFER.ORIG.FILE      $; "	"; REFER.RE.BUILD.FLAG$	&		\ NEXT							&	!								&2040	\ GO TO 2010							&	!								&3000	\ ON FN.ASK%( "FROM component for reference to DELETE",		&			"", "", 0%, -1%, 0% )				&		GO TO 2005, 32000, 3010					&	!								&	!	Get the from reference.					&3010	\ COMPONENT.KEY$ = ASK.CVT$					&	\ FIND #3%, KEY #1% EQ COMPONENT.KEY$				&	\ WHILE TRUE%							&		\ GET #3%						&		\ GO TO 3020	IF COMPONENT.KEY$ <>			&				   TRM$(REFER.ORIG.FILE$)		&		\ PRINT "["; REFER.ENTRY.NUM$; "] ";			&			REFER.ORIG.FILE$      ; " "; REFER.REF.FILE$; " ";	&			REFER.RE.BUILD.FLAG$				&		\ NEXT							&3020	\ ON FN.ASK%( "Entry number of reference to delete",		&			"","I",9999%,-1%,0%)				&		GO TO 3000, 32000, 3030					&3030	\ NUMBER$ = NUM1$(ASK.NUM%)					&	\ NUMBER$ = NUMBER$ + SPACE$( 5% - LEN( NUMBER$ ))		&	\ GET #3%, KEY #0% EQ NUMBER$					&	\ PRINT "Record is:"						&	\ PRINT "["; REFER.ENTRY.NUM$; "]	";			&		REFER.ORIG.FILE$; " ";REFER.REF.FILE$;" ";		&		REFER.RE.BUILD.FILE$					&	\ ON FN.ASK%( "Really delete the record (YES/N      O)",		&			"NO", "Y",0%,-1%,0% )				&		GO TO 3020, 32000, 3040, 3020				&3040	\ DELETE #3%							&	\ GO TO 3020							&3050	\ PRINT "% No such entry number"				&	\ GO TO 3020							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************      ************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ RESUME 2030	IF ERL = 2020					&	\ RESUME 2040	IF ERL = 20      30					&19020	\ RESUME 3020	IF ERL = 3010					&	\ RESUME 3050	IF ERL = 3030					&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$*      *************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ CLOSE T% FOR T% = 1% TO 12%					&32767	!$******************   Ö   ********************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDÖ          þv¥“Á› 8$$:      1	!***************************************************************&	!								&	!								&	!	S Y S G E N    K E R N E L    I M A G E    S A V E	&	!								&	!		  T A P E        B U I L D E R			&	!								&	!								&	!								&	!	Program:	SAVEBUILD				&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	01-Jun-78				&	!	Author(s):	WJB					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!							      	&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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  A      ND 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$******************      ********************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	V01-00	060178	  WJB	INITIAL RELEASE			&	!				Remove dismount message.	&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R       A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    2		Copy List data file input		&	!	    3		COPYCNTRL File output			&	!								&	!******************************************************      *********&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	BASE.LEVEL.NUMBER$	Holds Base Level # of the	&	!				  magnetic tape			&	!	COPY.COMMAND$		holds basic COPY command	&	!				  template text string		&	!	COPY.LIST.FILE$		holds files specification for	&	!				  Copy List input data file	&	!	CPYCTL.COMPONEN      T.KEY$	Index key of component in	&	!				  COMPONENT File		&	!	CPYCTL.COMPONENT.NAME$	File name and type of component	&	!	CPYCTL.HOLD.UFD$	Holding UFD for this magnetic	&	!				  tape				&	!	CPYCTL.LEVEL$		Base Level # of component	&	!	CPYCTL.SEQUENCE.KEY$	COPYCNTRL File sequence key for	&	!				  this component		&	!	CPYCTL.TAPE.NUM$	Holds tape number where file	&	!				  will be written		&	!	CPYCTL.TARGET.UFD$	UFD where component will be	&	!				  renamed after reading from the&	!				  tape				&	!	CPYLST.COMP.K      EY$	Index key of component in the	&	!				  COMPONENT File		&	!	CPYLST.DEST.UFD$	UFD where component is to be	&	!				  renamed after copying from	&	!				  tape				&	!	CPYLST.FILE.NAME$	File name and type of component	&	!	CPYLST.LEVEL.CODE$	Two (2) digit hiearchy number	&	!				  for this component		&	!	CPYLST.SOURCE.UFD$	UFD where component will be	&	!				  found before copying		&	!	DRIVE.ALLOCATED%	TRUE% if tape drive has been	&	!				  allocated.			&	!	KEY.PREFIX$		Constant prefix text for	&	!				  COPYCNTRL       File entry sequence	&	!				  key				&	!	PROC.MODEL$		Holds processor model code	&	!	T$			General working string		&	!	T%			General working variable	&	!	TAPE.INITIALIZED%	TRUE% if tape has been inited.	&	!	TAPE.MOUNTED%		TRUE% if tape has been mounted.	&	!	TAPE.NUMBER%		holds release kit number of the	&	!				  magnetic tape			&	!	TAPE.SEQUENCE.NUMBER%	Tape copy sequence counter	&	!	TE%			General function calling	&	!				  variable			&	!	UNIT.ID$		holds unit name and number of	&	!				  tape drive where tape is      	&	!				  mounted			&	!	VER.EDIT.NUM$		Base Level # of this program	&	!	VOLUME.LABEL$		holds volume ID of magnetic tape&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	20000		SPAWN a task, with error handling.	&	!						      		&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension dec      larations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIM VOLUME.LABEL$(15)						&	!								&	!	Holds labels for tape volumes.				&950	!$**************************************************************&	!								&	!								&	!	M A P      D E C L A R A T I O N S			&	!								&	!								&	!***************************************      ************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\  TRUE% = -1%							&	\ FALSE% =  0%							&	\ GO SUB 14700							&	\ GO TO 1030	IF INDIRECTED% = TRUE%				&	!								&	!	Set up standard default error trap			&	!	Set logical constants.					&	!	Check for indirect execu      tion.				&	!	If so, skip herald printouts.				&1010	\ VER.EDIT.NUM$ = "V01-00"					&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "SAVEBUILD	"; VER.EDIT.NUM$; "   ";		&	\ PRINT								&	\ PRINT "Build KERNEL Image Save Tape"				&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ TE% = FN.SETUP.DIALOGUE%					&	!								&	!	Set up the dialogue processing.				&1050	\ NUM.OF.ERRORS% = 0%						&	\ SEQUENCE.NUMBER$ = "0"					&	!								&	!	Clear the e      rrors made counter.				&	!	Reset the identification key generator.			&2000	!$**************************************************************&	!								&	!								&	!	S E T    U P   T A P E   C O N T R O L    V A L U E S	&	!								&	!								&	\ TAPE.NUMBER$ = "10"						&	\ TAPE.NUMBER% = 10%						&	\ PROC.MODEL$ = "  "						&	!								&	!	Set the tape number to 10.				&	!	Any processor model applies.				&3100	!$**************************************************************&	!								&	!								&	!	S E T U P          T A R G E T    C O P Y    C O N T R O L	&	!								&	!			 F I L E				&	!								&	!								&3110	\ OPEN "COPYCNTRL.FIL" FOR OUTPUT AS FILE #3%,			&		ORGANIZATION	SEQUENTIAL	FIXED,			&		MAP CPYCTL						&	!								&	!	Open the target copy control file.			&3200	!$**************************************************************&	!								&	!								&	!	S E T    C O N S T A N T    F I E L D S			&	!								&	!								&3210	\ CPYCTL.TAPE.NUM$ = RIGHT(NUM1$(100%+TAPE.NUMBER%),2%)		&	\ OCT.TAPE.NUM$	   = FN.INT.TO      .OCT$(TAPE.NUMBER%)		&	\ CPYCTL.HOLD.UFD$ = "[007,"					&			   + LEFT("000",(3%-LEN(OCT.TAPE.NUM$)))	&			   + OCT.TAPE.NUM$				&			   + "]"					&	\ CPYCTL.LEVEL$    = "KERNEL01"					&	!								&	!	Set up tape number.					&	!	Set holding account UFD.				&	!	Set proper Base Level number.				&3300	!$**************************************************************&	!								&	!								&	!	O P E N    S A V E    L I S T    F I L E		&	!								&	!								&	\ OPEN "SAVECNTRL.FIL" FOR INPUT AS FILE 2%			&		,ORGANIZATI      ON	SEQUENTIAL				&				VARIABLE				&		,ALLOW		READ					&		,ACCESS		READ					&		,MAP		SAVCTL					&	\ GET #2%							&	!								&	!	Open the file containing the list of files to be saved.	&3500	!$**************************************************************&	!								&	!								&	!	COPYCNTRL    F I L E    B U I L D    L O O P		&	!								&	!								&3510	\ CPYCTL.COMPONENT.NAME$ = SAVCTL.FILE.NAME$			&	\ CPYCTL.TARGET.UFD$	 = SAVCTL.FILE.UFD$			&	\ CPYCTL.COMPONENT.KEY$  = ""					&	\ CPYCTL.CONTIG.FLAG$    = S      AVCTL.CONTIG.FLAG$			&	\ CPYCTL.FIRST.IN.UFD$   = "N"					&	\ CPYCTL.SEQUENCE.KEY$	 = FN.SEQUENCE.KEY$			&	!								&	!	Transfer data from the save file list record.		&3550	\ PUT #3%							&	!								&	!	Write the record to the COPYCNTRL File.			&3560	\ GET #2%							&	\ GO TO 3500							&	!								&	!	Get the next entry in the save file list.		&4000	!$**************************************************************&	!								&	!								&	!	C O M P L E T E    F I L E    P R E P A R A T I O N	&	!								&	!			      					&4010	\ CLOSE 3%							&	\ CLOSE 2%							&	!								&	!	Close the output Copy Control file.			&	!	Also, we are done with the save file list file.		&4020	\ DRIVE.ALLOCATED%,						&	  TAPE.INITIALIZED%,						&	  TAPE.MOUNTED%		= FALSE%				&	!								&	!	Clear state variables.					&5000	!$**************************************************************&	!								&	!								&	!	P R E P A R E    T A P E    F O R    W R I T I N G	&	!								&	!								&5010	\ PRINT								&	\ TE% = FN.PRINT.HELP.TEXT%(1010%+T      APE.NUMBER%,1%)		&	!								&	!	Signal mounting of required tape.			&5020	\ ASK.RANGE(0) = 4						&	\ ON FN.ASK%(1030%+TAPE.NUMBER%,! QUERY #		!	&		     "",		! No default		!	&		     "",		! Any type of character !	&		     TRUE%,		! Length checking	!	&		     1%		       )! Level = 1		!	&	  GO TO								&		 5020,			! ESC response		!	&		 5040,			! CTRL/Z response	!	&		 5030			! Valid response	!	&	!								&	!	Get the tape drive unit name and number			&5030	\ UNIT.ID$,							&	  SUBSTITUTE.TEXT$(1%) = ASK.CVT$			      	&	\ VOLUME.LABEL$,						&	  SUBSTITUTE.TEXT$(2%) = FN.TEXT.LINE$(1080%+TAPE.NUMBER%)	&	\ GO TO 5050							&	!								&	!	Get the tape drive identifier.				&	!	Put up the correct volume name.				&5040	\ CLOSE T%	FOR T% = 1% TO 12%				&	\ GO TO 32500							&	!								&5050	\ IF ASCII(VOLUME.LABEL$) = ASCII("(")				&	  THEN								&		  VOLUME.LABEL.LIST$ = 					&			MID(VOLUME.LABEL$,2%,(LEN(VOLUME.LABEL$)-2%))	&	  ELSE								&		  VOLUME.LABEL.LIST$ = VOLUME.LABEL$			&	!								&	!	Get the proper text string       for obtaining the volume	&	!	  label(s).						&5060	\ WHILE LEN(VOLUME.LABEL.LIST$) <> 0%				&		\ T% = INSTR(1%,VOLUME.LABEL.LIST$,",")			&		\ T% = LEN(VOLUME.LABEL.LIST$)+1%	UNLESS T% <> 0%	&		\ VOLUME.LABEL$(NUM.OF.VOLUMES%) =			&			LEFT(VOLUME.LABEL.LIST$,(T%-1%))		&		\ NUM.OF.VOLUMES% = NUM.OF.VOLUMES% + 1%		&		\ VOLUME.LABEL.LIST$ = RIGHT(VOLUME.LABEL.LIST$,(T%+1%))&	\ NEXT								&	!								&	!	While there is at least one more volume label:		&	!		Find the next "," delimiter.			&	!		If none, fake at en      d of text string.		&	!		Peel off the next volume label.			&	!		Count number in list.				&	!		Remove text from string.			&	!	End of scanning loop.					&5070	\ GO SUB 10000		! Initialize tape(s)	!		&	\ GO TO 5010	IF INIT.ERROR% = TRUE%				&	!								&	!	Get the tapes ready here.				&	!	Go back to query if error occurs.			&5100	!$**************************************************************&	!								&	!								&	!	P R E P A R E    T A P E    F O R    U S E		&	!								&	!								&5130	\ GO TO 5140	IF TAPE.MO      UNTED% = TRUE%			&	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(1001%))		&	\ GO SUB 20000			! The MOUNT directive	!	&	\ TAPE.MOUNTED% = TRUE%	IF BREED.ERROR% = 1%			&	\ GO TO 5140	IF BREED.ERROR% = 1%				&	\ PRINT "? Tape can not be mounted."				&	\ GO TO 5010							&	!								&	!	Perform the MOUNT operation.				&	!	Skip if no error.					&	!	If error, signal with message and try for another	&	!	  mount.						&5140	\ BREED.TASK$ = "MCR..."					&	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(1025%))		&	\ GO       SUB 20000			! Write the COPYCNTRL File  !	&	!								&	!	First file to go on tape is the COPYCNTRL File.		&	!	Switch to spawning PIP.					&	!	Do the copy operation.					&5150	\ COPY.COMMAND$ = FN.TEXT.LINE$(1026%)				&	!								&	!	Get the general disk-to-tape copy command.		&5200	!$**************************************************************&	!								&	!								&	!	S E T U P    COPYCNTRL    F I L E			&	!								&	!								&	\ OPEN "COPYCNTRL.FIL" FOR INPUT AS FILE 3%			&		,ORGANIZATION	SEQUENTIAL				&		      		FIXED					&		,ACCESS		READ					&		,ALLOW		READ					&		,MAP		CPYCTL					&	!								&	!	Open the file for reading to control the copy loop.	&6000	!$**************************************************************&	!								&	!								&	!	T A P E    C O P Y    C O N T R O L    L O O P		&	!								&	!								&6010	\ GET #3%							&	!								&	!	Get the next entry in the Copy List File.		&6020	\ SUBSTITUTE.TEXT$(2%) = CPYCTL.TARGET.UFD$			&	\ SUBSTITUTE.TEXT$(3%) = CPYCTL.COMPONENT.NAME$			&	\ BREED.COMMAND$ = F      N.SUB.TEXT$(COPY.COMMAND$)			&	\ GO SUB 20000			! Copy file to tape	!	&	\ PRINT	IF BREED.ERROR% <> 1%					&	\ NUM.OF.ERRORS% = NUM.OF.ERRORS% + 1%	IF BREED.ERROR% <> 1%	&	\ GO TO 6010							&	!								&	!	Get the source UFD.					&	!	Get the target file name.				&	!	Signal copy operation.					&	!	Perform the copy from disk to tape.			&	!	Print extra CR-LF if an error msg occurred.		&	!	Go back for more.					&8000	!$**************************************************************&	!								&	!								&	!	D I S       M O U N T    T H E    T A P E			&	!								&	!								&8010	\ SUBSTITUTE.TEXT$(1%) = UNIT.ID$				&	\ SUBSTITUTE.TEXT$(2%) = VOLUME.LABEL$				&	\ BREED.TASK$ = "MCR..."					&	!								&	!	Close the Copy List File.				&	!	Set name of tape to be dismounted.			&	!	Also, the volume label of the tape.			&	!	Return to spawning MCR.					&8020	\ GO TO 8030	IF TAPE.MOUNTED% = FALSE%			&	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(1002%))		&	\ GO SUB 20000			! The DISMOUNT directive !	&	!								&	!	Set the correct       command text.				&	!	Perform the DISMOUNT.					&	!	Go back for response if an error.			&8030	\ GO TO 8040	IF DRIVE.ALLOCATED% = FALSE%			&	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(1003%))		&	\ GO SUB 20000			! The DEALLOCATE directive !	&	!								&	!	Deallocate the tape drive.				&8040	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(1027%))		&	\ GO SUB 20000							&	\ PRINT "***** ";						&		NUM1$(NUM.OF.ERRORS%);					&		" occurred"						&			IF NUM.OF.ERRORS% <> 0%				&	\ GO TO 32500	IF NUM.OF.ERRORS% <      > 0%				&	\ GO TO 32000							&	!								&	!	Remove the COPYCNTRL File.				&	!	Signal end of processing.				&10000	!$**************************************************************&	!								&	!								&	!	I N I T I A L I Z E    T A P E ( S )			&	!								&	!								&10010	\ INIT.ERROR% = FALSE%						&	\ BREED.RETURN% = TRUE%						&	\ BREED.TASK$ = "MCR..."					&	\ SUBSTITUTE.TEXT$(1%) = UNIT.ID$				&	!								&	!	Clear error flag.					&	!	Set up to catch BREED errors ourselves.			&	!	Commands will go to the       MCR.				&	!	Set the tape drive unit name and number.		&10020	\ GO TO 10030	IF DRIVE.ALLOCATED% = TRUE%			&	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(1000%))		&					! The ALLOCATE directive !	&	\ GO SUB 20000			! Issue the command	!	&	\ IF BREED.ERROR% <> 1%						&	  THEN								&		  INIT.ERROR% = TRUE%					&		\ PRINT "? Drive can not be allocated"			&		\ GO TO 10090						&	  ELSE								&		  DRIVE.ALLOCATED% = TRUE%				&	!								&	!	Skip allocation if already done.			&	!	Get the ALLOCATE command, inse      rting unit ID		&	!	Perform the command.					&	!	If an error occurs,					&	!		then set error flag, signal with msg, exit.	&	!		else, set allocated flag.			&10030	\ FOR T% = (NUM.OF.VOLUMES%-1%) TO 0% STEP -1%			&		\ SUBSTITUTE.TEXT$(3%) = VOLUME.LABEL$(T%)		&	!								&	!	For all of the volumes in the list.			&	!		Set volume label for processing.		&10035		\ GOTO 10050						&10040		\ ON FN.ASK%(1028%,		! Query text	!	&			     "YES",		! Default is YES !	&			     "Y",		! YES/NO	!	&			     FALSE%,		! No checking      	!	&			     1%		       )! Level is 1	!	&		  GO TO							&			10040,		! ESC response	!		&			32000,		! CTRL/Z resp.	!		&			10050,		! YES		!		&			10050		! NO also	!		&		!							&		!	Prompt user to hang tape, wait for his response.&10050		\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(1029%))	&		\ GO SUB 20000		! The INITIALIZE directive !	&		\ IF BREED.ERROR% <> 1%					&		  THEN							&			  INIT.ERROR% = TRUE%				&			\ PRINT "? Tape can not be initialized"		&			\ GO TO 10090					&		!							&		!	Perform the initi      alize command.			&		!	If an error ,set the error flag, print error	&		!	  message and exit.				&10055		\ GOTO 10070						&10060		\ GO TO 10070	IF T% = 0%				&		\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(1002%))	&		\ GO SUB 20000		! The DISMOUNT directive !	&		!							&		!	For all but the last tape, dismount from drive.	&10070	\ NEXT T%							&	!								&	!	End of processing loop.					&10090	\ RETURN							&14700	!$**************************************************************&	!								&	!								&	!	G E       T    P O S S I B L E    M C R    C O M M A N D	&	!								&	!								&	!	RETURNS:	For a single program, PROG.NAME$ 	&	!			  contains the file name.  		&	!			  ONLY.ONE.PROGRAM% is then set TRUE.	&	!			If @ appears, USE.INDIRECT% is set TRUE	&	!			  and the indirect input command file	&	!			  name is placed in CMD.FILE$.		&	!								&	!								&	!***************************************************************&14710	\ COMMAND.BUFR$ = SPACE$(80%)					&	\ INDIRECTED% = FALSE%						&	!								&	!	Reserve space       for up to 80 characters.			&14720	\ CALL GETMCR BY REF (COMMAND.BUFR$, RETURN.RESULT%)		&	\ RETURN	IF RETURN.RESULT% < 1%				&	\ INDIRECTED% = TRUE%						&	!								&	!	Set if command line is there.				&	!	If not, skip out of processing.				&14730	\ COMMAND.LINE$ =						&		EDIT$(MID(COMMAND.BUFR$,5%,(RETURN.RESULT%-4%)),-1%)	&	!								&	!	Reduce input text to manageable form.			&	!								&	\ RETURN							&19000	!$**************************************************************&	!								&	!								&	!	S T A       N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ RESUME 4000	IF  ERR = 11%					&			AND ERL = 3560%					&	!								&	!	Catch end-of-file on the Copy List File.		&19020	\ RESUME 32000	IF ERL = 3300%					&	!								&	!	Abort operatioin if no save file produced.		&19030	\ RESUME 8000	IF  ERR = 11%					&			AND ERL = 6010%					&	!								&	!	Catch end-of-file on the Copy List File during actual	&	!	  tape writing.						&19      900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								      &	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&25012	!***************************************************************&	!								&	!								&	!	D E B U G    D E B U G    D E B U G    D E B U G	&	!								&	!								&	!	Special /DEBUG switch on dialog function.  Special	&	!	only to the compiler because they wouldn't put it	&	!	in the general dialogue function.			&	!								&	!	The switch is "hidden" from the user by no      t appearing	&	!	in the spec for the dialogue function or any document	&	!	pertaining to FMTGEN.					&	!								&	!	This code checks for, and removes the string:		&	!								&	!	/DEBUG							&	!								&	!	from the input text string to the dialogue function.	&	!	The entire keyword must appear after the slash.		&	!								&	!								&	\ ASK.T3% = INSTR(1%,EDIT$(ASK.RESP$,32%),"/DEBUG")		&	\ GO TO 25020	IF ASK.T3% = 0%					&	\ ASK.RESP$ =  LEFT(ASK.RESP$,(ASK.T3%-1%))			&		    + RIGHT(ASK.RESP$,(ASK.T3%+6%))		      	&	\ BREED.DEBUG% = TRUE%						&	!								&	!	Search for the debug switch.				&	!	Skip out if not there.					&	!	Otherwise, remove from the string.			&	!	Set the DEBUG switch.					&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    J O B    P R O C E S S I N G		&	!								&	!								&	\ CLOSE 2%, 3%							&	\ CLOSE 11%, 12%						&	\ GO TO 32767							&	!								&	!	Close all files.					&	!	Exit the program.					&32500	\ CLOSE 2%, 3%, 11%, 12%					   j  &	\ CALL EXITS2(2%,26%)						&	!								&	!	Close all the files.					&	!	Call EXIT WITH STATUS with CTRL/Z indication.		&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END j         œ	¶^“Á› 8$        1	!***************************************************************&	!								&	!								&	!		R E S C O M					&	!								&	!								&	!								&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	10-NOV-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c      ) 1977 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&15	!***************************************************************&	!								&	!								&	!		C A L       L    F O R M A T				&	!								&	!								&	!								&	!	CALL	RESCOM						&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		Return status to caller		&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	      INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This sub-program prompts the user for the name of	&	!	a file containing the GENCOM region from a previous	&	!	SYSGEN dialogue.					&	!								&	!***********************************************      ****************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    6		GENCOM region file input		&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R       A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************      ************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!      								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!**************************************      *************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1005	\ INPUT LINE A$							&	\ A$=EDIT$(A$,6%)						&	\ OPEN A$ FOR OUTPUT AS FILE 9%				&	\ T%=FN.SETUP.DIALOGUE%						&1010	\ DEFAULT$="[200,201]CONFIGURE.DAT"	      			&	\ ON FN.ASK%(860%,DEFAULT$,"",0%,1%) GOTO 1020,9000,1030	&	!								&	!	Ask the "Configuration file" question.			&	!		ALT out through 1020				&	!		CTRL/Z out through 9000				&	!		Any other response to 1030			&1020	\ SPAWN.STATUS%=1%+(27%*8%)					&	\ GOTO 32000							&	!								&	!	Set escape status, and get out				&1030	\ ON ERROR GOTO 1040						&	\ CALL RET							&	\ OPEN ASK.CVT$ AS FILE 6%,					&		ORGANIZATION VIRTUAL,					&		MAP GENCOM,						&		RECORDSIZE 8192%					&	\ CALL RET							&1031	\ GET #6      , RECORD 1%						&	\ CALL RET							&	\ GOTO 1500 IF VALID.REGION$="TPS-11 SYSGEN*"			&	\ PRINT #9%, "% The file specified did not contain SYSGEN data."	&	\ GOTO 1010							&	!								&	!	Save some volitile variables and try to open what	&	!	he/she specified.					&	!	See if it was a valid GENCOM region			&1040	\ CALL RET							&	\ PRINT #9%, "? Please enter a valid and existing file specification."&	\ RESUME 1010							&	!								&	!	Something was wrong with the file specification.	&1500	\ PRINT #9%, "HERAL      D.TEXT$",HERALD.TEXT$				&	\ PRINT #9%, "VER.EDIT.NUM$",VER.EDIT.NUM$				&	\ PRINT #9%, "FINE.TUNE%",FINE.TUNE%					&	\ PRINT #9%, "INSERT.XDT%",INSERT.XDT%				&	\ PRINT #9%, "PROCESSOR.TYPE%",PROCESSOR.TYPE%			&	\ PRINT #9%, "FL.PT.PROC%",FL.PT.PROC%				&	\ PRINT #9%, "MEMORY.SIZE%",MEMORY.SIZE%				&	\ PRINT #9%, "PARITY.MEMORY",PARITY.MEMORY%				&	\ PRINT #9%, "CACHE.MEMORY%",CACHE.MEMORY%				&	\ PRINT #9%, "EXTENDED.MEMORY%",EXTENDED.MEMORY%			&	\ PRINT #9%, "SYSTEM.DISK$",SYSTEM.DISK$				&	\ PRINT #9%,       "DEV.SYS%",DEV.SYS%					&	\ PRINT #9%, "CRASH.DEVICE$",CRASH.DEVICE$				&	\ PRINT #9%, "CRASH.CSR$",CRASH.CSR$					&	\ PRINT #9%, "CRASH.UNIT$",CRASH.UNIT$				&	\ PRINT #9%, "CLOCK.FREQ%",CLOCK.FREQ%				&	\ PRINT #9%, "CLK.CSR$",CLK.CSR$					&	\ PRINT #9%, "CLK.VEC$",CLK.VEC$					&	\ PRINT #9%, "CLK.PRI$",CLK.PRI$					&	\ PRINT #9%, "CLK.CT.REG$",CLK.CT.REG$				&	\ PRINT #9%, "CLK.TICKS.PER.SEC$",CLK.TICKS.PER.SEC$			&	\ PRINT #9%, "CLK.LOAD.CT$",CLK.LOAD.CT$				&	\ PRINT #9%, "CLK.INT.ENB$",CLK.INT.ENB$			      	&	\ PRINT #9%, "HIGHEST.VECTOR$",HIGHEST.VECTOR$			&	\ PRINT #9%, "NUM.OF.DLS%",NUM.OF.DLS%				&	\ PRINT #9%, "DL.CSR$(";N%;")",DL.CSR$(N%) FOR N%=0% TO 8%		&	\ PRINT #9%, "DL.VEC$(";N%;")",DL.VEC$(N%) FOR N%=0% TO 8%		&	\ PRINT #9%, "DL.PRI$(";N%;")",DL.PRI$(N%) FOR N%=0% TO 8%		&	\ PRINT #9%, "NUM.OF.LPS%",NUM.OF.LPS%				&	\ PRINT #9%, "LP.CSR$(";N%;")",LP.CSR$(N%) FOR N%=0% TO 7%		&	\ PRINT #9%, "LP.VEC$(";N%;")",LP.VEC$(N%) FOR N%=0% TO 7%		&	\ PRINT #9%, "LP.PRI$(";N%;")",LP.PRI$(N%) FOR N%=0% TO 7%		      &	\ PRINT #9%, "LP.TYPE$(";N%;")",LP.TYPE$(N%) FOR N%=0% TO 7%		&	\ PRINT #9%, "TS03.CSR$",TS03.CSR$					&	\ PRINT #9%, "TS03.VEC$",TS03.VEC$					&	\ PRINT #9%, "TS03.PRI$",TS03.PRI$					&	\ PRINT #9%, "NUM.OF.TS03.DRIVES%",NUM.OF.TS03.DRIVES%		&	\ PRINT #9%, "NUM.OF.KMCS%",NUM.OF.KMCS%				&	\ PRINT #9%, "KMC.CSR$(";N%;")",KMC.CSR$(N%) FOR N%=0% TO 2%		&	\ PRINT #9%, "KMC.VEC$(";N%;")",KMC.VEC$(N%) FOR N%=0% TO 2%		&	\ PRINT #9%, "KMC.PRI$(";N%;")",KMC.PRI$(N%) FOR N%=0% TO 2%		&	\ PRINT #9%, "NUM.OF.DUPS%"      ,NUM.OF.DUPS%				&	\ PRINT #9%, "DUP.CSR$(";N%;")",DUP.CSR$(N%) FOR N%=0% TO 19%		&	\ PRINT #9%, "DUP.VEC$(";N%;")",DUP.VEC$(N%) FOR N%=0% TO 19%		&	\ PRINT #9%, "DUP.PRI$(";N%;")",DUP.PRI$(N%) FOR N%=0% TO 19%		&	\ PRINT #9%, "NUM.OF.DZS%",NUM.OF.DZS%				&	\ PRINT #9%, "DZ.CSR$(";N%;")",DZ.CSR$(N%) FOR N%=0% TO 13%		&	\ PRINT #9%, "DZ.VEC$(";N%;")",DZ.VEC$(N%) FOR N%=0% TO 13%		&	\ PRINT #9%, "DZ.PRI$(";N%;")",DZ.PRI$(N%) FOR N%=0% TO 13%		&	\ PRINT #9%, "NUM.OF.DVS%",NUM.OF.DVS%				&	\ PRINT #9%, "DV.CSR$      (";N%;")",DV.CSR$(N%) FOR N%=0% TO 2%		&	\ PRINT #9%, "DV.VEC$(";N%;")",DV.VEC$(N%) FOR N%=0% TO 2%		&	\ PRINT #9%, "DV.PRI$(";N%;")",DV.PRI$(N%) FOR N%=0% TO 2%		&	\ PRINT #9%, "NUM.OF.DMCS%",NUM.OF.DMCS%				&	\ PRINT #9%, "DMC.CSR$(";N%;")",DMC.CSR$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "DMC.VEC$(";N%;")",DMC.VEC$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "DMC.PRI$(";N%;")",DMC.PRI$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "DMC.DUPLEX$";N%;")",DMC.DUPLEX$(N%) FOR N%=0% TO 3%	&	\ PRINT #9%, "DMC.TYPE$";N%;")",DMC.TYPE$      (N%) FOR N%=0% TO 3%	&	\ PRINT #9%, "NUM.OF.DZS.IN.SE%",NUM.OF.DZS.IN.SE%			&	\ PRINT #9%, "SE.DZ.NEEDS.MODEM$",SE.DZ.NEEDS.MODEM$			&	\ PRINT #9%, "NUM.OF.DUPS.IN.COMM%",NUM.OF.DUPS.IN.COMM%		&	\ PRINT #9%, "NUM.OF.IBM.DUPS%",NUM.OF.IBM.DUPS%			&	\ PRINT #9%, "SE.DZ.TERM.NUM%(";N%;")",SE.DZ.TERM.NUM%(N%) FOR N%=0%&			TO NUM.OF.DZS.IN.SE%-1%				&	\ PRINT #9%, "NUM.OF.RH.CNTLRS%",NUM.OF.RH.CNTLRS%				&	\ PRINT #9%, "RH.UNITS%(";N%;")",RH.UNITS%(N%) FOR N%=0% TO 3%	&	\ PRINT #9%, "RH.UNIT.TYPE$(";N%;")",RH.UN      IT.TYPE$(N%) FOR N%=0% TO 3%&	\ PRINT #9%, "RH.CSR$(";N%;")",RH.CSR$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "RH.VEC$(";N%;")",RH.VEC$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "RH.PRI$(";N%;")",RH.PRI$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "NUM.OF.DB.DRIVES%",NUM.OF.DB.DRIVES%			&	\ PRINT #9%, "NUM.OF.DB.CNTLRS%",NUM.OF.DB.CNTLRS%			&	\ PRINT #9%, "DB.RH.CNTLR$(";N%;")",DB.RH.CNTLR$(N%) FOR N%=0% TO 15%&	\ PRINT #9%, "DB.IS.RP06%(";N%;")",DB.IS.RP06%(N%) FOR N%=0% TO 15%	&	\ PRINT #9%, "DB.PHY.NUM%(";N%;")",DB.PHY.NUM      %(N%) FOR N%=0% TO 15%	&	\ PRINT #9%, "NUM.OF.DR.DRIVES%",NUM.OF.DR.DRIVES%			&	\ PRINT #9%, "NUM.OF.DR.CNTLRS%",NUM.OF.DR.CNTLRS%			&	\ PRINT #9%, "DR.RH.CNTLR$(";N%;")",DR.RH.CNTLR$(N%) FOR N%=0% TO 15%&	\ PRINT #9%, "DR.PHY.NUM%(";N%;")",DR.PHY.NUM%(N%) FOR N%=0% TO 15%	&	\ PRINT #9%, "NUM.OF.MM.DRIVES%",NUM.OF.MM.DRIVES%			&	\ PRINT #9%, "NUM.OF.MM.MASTERS%",NUM.OF.MM.MASTERS%			&	\ PRINT #9%, "NUM.OF.MM.SLAVES%(";N%;")",NUM.OF.MM.SLAVES%(N%) FOR	&			N%=0% TO 1%					&	\ PRINT #9%, "MM.MSTR%(";N%;")",MM.      MSTR%(N%) FOR N%=0% TO 15%	&	\ PRINT #9%, "MM.RH.CNTLRS$(";N%;")",MM.RH.CNTLRS$(N%) FOR N%=0% TO 1%	&	\ PRINT #9%, "MM.PHY.NUM%(";N%;")",MM.PHY.NUM%(N%) FOR N%=0% TO 15%	&	\ PRINT #9%, "NUM.OF.DM.DRIVES%",NUM.OF.DM.DRIVES%			&	\ PRINT #9%, "DM.CSR$",DM.CSR$					&	\ PRINT #9%, "DM.VEC$",DM.VEC$					&	\ PRINT #9%, "DM.PRI$",DM.PRI$					&	\ PRINT #9%, "DM.IS.RK07%(";N%;")",DM.IS.RK07%(N%) FOR N%=0% TO 7%	&	\ PRINT #9%, "COM.SUPPORT%",COM.SUPPORT%				&	\ PRINT #9%, "NUM.OF.NODES%",NUM.OF.NODES%				&	\ PRINT #9%      , "NODE.NAME$(";N%;")",NODE.NAME$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "LINK.NODE$(";N%;")",LINK.NODE$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "PRI.LINK$(";N%;")",PRI.LINK$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "SEC.LINK$(";N%;")",SEC.LINK$(N%) FOR N%=0% TO 3%		&	\ PRINT #9%, "NUM.IBM.DUPS%",NUM.IBM.DUPS%				&	\ PRINT #9%, "IBM.SUPPORT%",IBM.SUPPORT%				&	\ PRINT #9%, "NUM.OF.TPS%",NUM.OF.TPS%				&	\ PRINT #9%, "NUM.OF.KMC.DZS%",NUM.OF.KMC.DZS%			&	\ PRINT #9%, "NUM.OF.KMC.DUPS%",NUM.OF.KMC.DUPS%			&8000	\ CALL RE      T							&	\ PUT #6, RECORD 1%						&	\ CLOSE 6%							&9000	\ GOTO 32000							&	!	CTRL/Z will cause SYSGEN to exit.			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S           L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected e      rrors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!*************************************   ì  **************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ ENDì         Yì“Á› 8$xQ      951	!***************************************************************&	!								&	!								&	!	C O P Y    C O N T R O L    F I L E			&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	00					&	!	Edit date:	18-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00  021878    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	\ MAP	(CPYCTL)						&	   º  	 CPYCTL.TAPE.NUM$		=  2		!   0 ! &		,CPYCTL.HOLD.UFD$		=  9		!   2 !	&		,CPYCTL.TARGET.UFD$		=  9		!  11 !	&		,CPYCTL.COMPONENT.NAME$		= 13		!  20 ! &		,CPYCTL.COMPONENT.KEY$		= 24		!  33 ! &		,CPYCTL.LEVEL$			=  8		!  57 !	&		,CPYCTL.SEQUENCE.KEY$		= 20		!  65 ! &		,CPYCTL.CONTIG.FLAG$		=  1		!  85 ! &		,CPYCTL.FIRST.IN.UFD$		=  1		!  86 ! &		,CPYCTL.FILLER$			=  1		!  87 ! &								!  88 ! &	!								&	!	Map for the COPYCNTRL File				&º         L^&“Á› 8$        15100	!$**************************************************************&	!                                                               &	!                                                               &	! 	Octal to Integer conversion				&	!                                                               &	!                                                               &	!***************************************************************&15101	\ DEF FN.OCT.TO.INT%(A$)					&	\ HIGH%= 0%							&	\ HIGH%= NOT 32767      %	IF (LEN(A$)= 6 ) AND LEFT(A$,1%)= "1"	&	\ LOW$= A$							&	\ LOW$= RIGHT(A$,2%)	IF (LEN(A$)= 6) AND LEFT(A$,1%)= "1"	&	!								&	!	Separate out the signed part				&	!								&	\ D%= 0%							&	\ B%= LEN(A$)							&	\ FOR L%= 0% TO 4%						&		\ GO TO 15110	IF B%- L% <= 0%				&		\ C$= MID(A$,B%-L%,1%)					&		\ D%= VAL(C$)*8%**L% + D%				&	\ NEXT L%							&	!								&	!	Convert the low part to an integer			&15110	\ FN.OCT.TO.INT%= HIGH% OR D%					&	\ FNEND								&	!								&	!	Put the bits back together			      	&15200	!$**************************************************************&	!                                                               &	!                                                               &	! 	Integer to Octal Conversion				&	!                                                               &	!                                                               &	!***************************************************************&15201	DEF FN.INT.TO.OCT$(A%)						&	\ D$= ""							&	\ HIGH$= "0"							&      	\ HIGH$= "1"	IF (A% AND (NOT 32767%) ) <> 0%			&	\ LOW%= A% AND 32767%						&	!								&	!	Determine high order Octal digit			&	!	Separate off the low order				&15205	\ FOR L%= 4% TO 0%   STEP -1%					&		\ C%= 8%**L%						&		\ D%= LOW%/C%						&		\ LOW%= LOW%- D%*C%					&		\ D$= D$ + NUM1$(D%)					&	\ NEXT L%							&	!								&	!	Convert the low order part to Octal			&15207	\ D$= HIGH$ + D$						&	\ FOR L%= 5% TO 1%   STEP -1%					&		\ GO TO 15210	IF LEFT(D$,1%) <> "0"			&		\ D$= RIGHT(D$,2%)					&	\ NEXT       L%							&	!								&	!	Suppress leading zeroes					&15210	\ FN.INT.TO.OCT$= D$						&	\ FNEND								&	!								&	!	Return converted answer					&15300	!$**************************************************************&	!                                                               &	!                                                               &	! 	Validate Octal response					&	!                                                               &	!                                                                 †   &	!***************************************************************&15301	\ DEF FN.REALLY.OCTAL%(A$)					&	\ FN.REALLY.OCTAL%= 0%						&	\ FOR L%= 1% TO LEN(A$)						&		\ B$= MID(A$,L%,1%)					&		\ B%= VAL(B$)						&		\ GO TO 15305	IF (B%<0%) OR (B%>7%)			&	\ NEXT L%							&	\ FN.REALLY.OCTAL%= 1%						&	!								&	!	Check that each of the digits really is octal		&15305	\ FNEND								& †         šE.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L    G E N E R A T I O N    M O D U L E	&	!								&	!								&	!								&	SUB	KERGN5	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O       P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**********      *****************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KERGN5(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**************      ************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	This sub-program creates the KERMC.MAC and SYSTB.MAC	&	!	files and all the nece      ssary commands needed to build	&	!	the KERNEL.  It then executes the necessary commands	&	!	thus building the KERNEL.				&	!								&	!	This is a dummy routine at this point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------        &	!	    3		KERMC.MAC file output			&	!	    4		SYSTB.MAC file output			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************      ************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-      ----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	      !								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***********************************      ****************************&	!								&	\ ON ERROR GO TO 19000						&	\ GOTO 5000 IF NO.FILES%<>0%					&	!								&	!	Set up standard default error trap			&2300	\ T%=FN.PRINT.BLOCK%(4%,616%)					&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)		&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!								&	!	NL support.						&2400	\ T%=FN.PRINT.BLOCK%(4%,620%)					&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)		&	\ SUBSTITUTE.TEXT$(7%      )=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!								&	!	VT support.						&2500	\ GOTO 2600 IF COM.SUPPORT%=0%					&	\ T%=FN.PRINT.BLOCK%(4%,624%)					&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)		&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	\ DLR.CTBN%=DLR.CTBN%+1%					&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.OCT$(DLR.CTBN%)		&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	!								&	!	Network terminal support.				&2600	\ T%=FN.PRINT.BLOCK%(4%,630%)					&	\ FOR TT%      =0% TO 4%						&		\ PS.DEV$="TI" IF TT%=0%				&		\ ASS.DEV$="TI0" IF TT%=0%				&		\ PS.DEV$="CO" IF TT%=1%				&		\ ASS.DEV$="TT0" IF TT%=1%				&		\ PS.DEV$="CL" IF TT%=2%				&		\ ASS.DEV$="LP0" IF TT%=2%				&		\ ASS.DEV$="TT0" IF (TT%=2%) AND (NUM.OF.LPS%=0%)	&		\ PS.DEV$="SP" IF TT%=3%				&		\ ASS.DEV$=SYSTEM.DISK$ IF TT%>2%			&		\ PS.DEV$="LB" IF TT%=4%				&		\ T%=FN.PRINT.BLOCK%(4%,632%)				&		\ SUBSTITUTE.TEXT$(97%)=TRM$(PS.DEV$)			&		\ SUBSTITUTE.TEXT$(98%)=TRM$(ASS.DEV$)			&		\ T%=FN.PRINT.BLOCK%(4%,6      34%)				&		\ T%=FN.PRINT.BLOCK%(4%,638%)				&		\ DLR.DCBN%=DLR.DCBN%+1%				&		\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)	&		\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)	&	\ NEXT TT%							&	\ SUBSTITUTE.TEXT$(97%)="SY"					&	\ T%=FN.PRINT.BLOCK%(4%,632%)					&	\ T%=FN.PRINT.BLOCK%(4%,636%)					&	\ T%=FN.PRINT.BLOCK%(4%,638%)					&	!								&	!	Do all the PSEUDO devices.				&2700	\ T%=FN.PRINT.BLOCK%(4%,640%)					&	\ CLOSE 4%							&	\ T%=FN.PRINT.BLOCK%(3%,380%)					&	\ SUBSTITUTE.TEXT$(1%)=TRM      $(HIGHEST.VECTOR$)			&	\ T%=FN.OCT.TO.INT%(SUBSTITUTE.TEXT$(1%))			&	\ T%=T%+4%							&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(T%)			&	\ T%=FN.PRINT.BLOCK%(3%,384%)					&	\ CLOSE 3%							&	!								&	!	Finish off the KERMC.MAC and SYSTB.MAC files		&	!		and CLOSE them.					&5000	\ GOTO 32000							& 10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!							      	&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!						      		&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$***********      ***************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!		   ª   						&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDª          H–,“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L     U T I L I T I E S    G E N E R A T I O N&	!								&	!								&	!								&	SUB	KUTGEN	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!	      		C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  for use on such system a      nd to one who agrees to	&	!    these license terms.  Title to  and  ownership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!****      ***********************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KUTGEN(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$********      ******************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This sub-p      rogram generates all the Privileged and	&	!	Non-Privileged KERNEL utilities.			&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    3		Primary data file output		&	!								&	!**********      *****************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S          U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!******************      *********************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines       930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ VT.NUM%=FN.VT.CREATE%		      				&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(VT.NUM%)			&	\ T%=FN.EXEC.BLOCK%("MCR...",913%,0%)				&	!								&	!	Set up standard default error trap			&	!	Create the virtual terminal and assign its system disk	&1010	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",710%,FALSE%)		&	\ SPAWN.STATUS%=1%						&	\ BLOCK%=711%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%)+SKIP.ASSEMBLIES% TO	&			(HELP.INDEX%(MODULE.INDX%)+			&				HELP.INDEX%(MODULE.INDX%+1%)-1%)	&		\ TASK$="MCR..."					&		\ V      T.CMD$=ASK.HELP$(MODULE%)				&		\ T%=FN.TASK.INIT%(TASK$)				&		\ PRINT "Spawning: ";TASK$;" (on VT) with: ";VT.CMD$ IF	&			BREED.DEBUG%<>0%				&1012		\ ON FN.VT.COMM%("!@#$%^&*()","*FATAL*")	 	&			GOTO	1030,	! TASK TERMINATED		&				1012,	! SHOULDN'T HAPPEN		&				1015,	! INPUT REQUESTED, SEND EOF	&				1013,	! GET THE OUTPUT, THROW IT AWAY	&				1025	! ERROR MESSAGE			&1013		\ ERR.LINE$=VT.RESPONSE$				&		\ PRINT ERR.LINE$ IF BREED.DEBUG%<>0%			&		\ GOTO 1012						&1015		\ T%=FN.VT.EOF%						&		\ GOTO 1012			      			&	!								&	!	If input requested, send EOF and return for exit.	&1025		\ ERR.LINE$=VT.RESPONSE$				&		\ T%=INSTR(1%,ERR.LINE$,"*FATAL*")			&		\ PRINT							&		\ ERR.LINE$=EDIT$(RIGHT(ERR.LINE$,T%),132%)+" on command "+	&				TRM$(VT.CMD$)				&		\ PRINT ERR.LINE$					&		\ SPAWN.STATUS%=2%					&		\ GOTO 1012						&	!								&	!	PRINT ERROR MESSAGE AND GO BACK FOR EXIT.		&1030		\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%		&	\ NEXT MODULE%							&	!								&	!	Do the Kernel Util. generation over a virtual ter      minal.	&1040	\ OPEN "[1,24]UMDBLD.CMD" FOR OUTPUT AS FILE 3%			&	\ BLOCK%=735%							&	\ DIAG.INDEX%=BLOCK%*2%						&	\ FOR DIAG%=HELP.INDEX%(DIAG.INDEX%) TO				&			(HELP.INDEX%(DIAG.INDEX%)+			&				HELP.INDEX%(DIAG.INDEX%+1%)-1%)		&		\ SUBSTITUTE.TEXT$(1%)=ASK.HELP$(DIAG%)			&		\ GOTO 1050 IF (ASK.HELP$(DIAG%)="RP04") AND		&				(NUM.OF.DB.DRIVES%=0%)			&		\ GOTO 1050 IF (ASK.HELP$(DIAG%)="RP05") AND 		&				(NUM.OF.DB.DRIVES%=0%)			&		\ GOTO 1050 IF (ASK.HELP$(DIAG%)="RP06") AND		&				(NUM.OF.DB.DRIVES%=0%)      			&		\ GOTO 1050 IF (ASK.HELP$(DIAG%)="RK06") AND		&				(NUM.OF.DM.DRIVES%=0%)			&		\ GOTO 1050 IF (ASK.HELP$(DIAG%)="TU16") AND		&				(NUM.OF.MM.DRIVES%=0%)			&		\ GOTO 1050 IF (ASK.HELP$(DIAG%)="TU45") AND 		&				(NUM.OF.MM.DRIVES%=0%)			&		\ GOTO 1050 IF (ASK.HELP$(DIAG%)="TS03") AND		&				(NUM.OF.TS03.DRIVES%=0%)		&		\ T%=FN.PRINT.BLOCK%(3%,730%)				&1050	\ NEXT DIAG%							&	\ CLOSE 3%							&	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",740%,FALSE%)		&	\ GOTO 32000							&	!								&	!	Build the User Mode       Diagnostics.			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!*      **************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$*****************      *********************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************   Ú  &	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ T%=FN.VT.DONE%						&	!								&	!	Get rid of the virtual terminal.			&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND Ú         …–,“Á› 8$        1	!***************************************************************&	!								&	!								&	!		T P E G E N    D I A L O G U E			&	!								&	!								&	!								&	SUB	TPEGEN	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			      &	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  for use on such system and to one who agrees t      o	&	!    these license terms.  Title to  and  ownership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**************************      *************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL TPEGEN(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$******************************      ********************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This is a dummy routine at this       point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!*********      ******************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E       S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!*****************      **********************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines       930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ VT.NUM%=FN.VT.CREATE%	      					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(VT.NUM%)			&	\ T%=FN.EXEC.BLOCK%("MCR...",913%,0%)				&	!								&	!	Set up standard default error trap			&	!	Create the virtual terminal and assign its system disk	&1020	\ SPAWN.STATUS%=1%						&	\ BLOCK%=914%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%)+SKIP.ASSEMBLIES% TO	&			(HELP.INDEX%(MODULE.INDX%)+			&				HELP.INDEX%(MODULE.INDX%+1%)-1%)	&		\ TASK$="MCR..."					&		\ VT.CMD$=ASK.HELP$(MODULE%)				&		\ T%=FN.TASK.INIT%(TASK      $)				&		\ PRINT "Spawning: ";TASK$;" (on VT) with: ";VT.CMD$ IF	&			BREED.DEBUG%<>0%				&		\ PRINT T% IF BREED.DEBUG%<>0%				&1030		\ GOTO 1040 IF EX.FLAG%<>0%				&		\ GOSUB 11000 IF OUT.FLAG%<>0%				&		\ T%=FN.VT.EOF% IF IN.FLAG%<>0%				&		\ SLEEP 1%						&		\ GOTO 1030						&1040		\ GOTO 32000 IF SPAWN.STATUS%<>1%			&	\ NEXT MODULE%							&	!								&	!	Do all the necessary builds for the TP Executive.	&1050	\ GOTO 32000							&10000	!$**************************************************************&	!			      					&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&11000	\ OUT.LINE$=FN.READ.RESPONSE$					&	\ T%=INSTR(1%,OUT.LINE$,"*FATAL*")				&	\ PRINT OUT.LINE$ IF BREED.DEBUG%<>0%				&	\ GOTO 11049 IF T%=0%						&	\ SPAWN.STATUS%=2%						&	\ OUT.LINE$=RIGHT(OUT.LINE$,T%)					&	\ PRINT								&	\ T%=INSTR(1%,VT.CMD$,"@")					&	\ OUT.LINE$=OUT.LINE$+" linking "+RIGHT(V      T.CMD$,T%+1%)		&	\ PRINT EDIT$(OUT.LINE$,4%)					&	!								&	!	See if the output on the terminal is a FATAL error.	&11049	\ RETURN							&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	      !	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!*************      **************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ T%   
  =FN.VT.DONE%						&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND 
         Iq	“Á› 8$ d      15001	\ DEF FN.MAP.SIZE%(A$)						&	\ FN.MAP.SIZE%= 0%						&	\ ON ERROR GO TO 15050						&	\ B$= "[1,34]" + A$ + ".MAP"					&	\ OPEN B$ FOR INPUT AS FILE #5%					&15005	\ LINPUT #5%, MAP.LINE$						&	\ MAP.LINE$= EDIT$(MAP.LINE$,2%+4%+32%)				&	\ T%= INSTR(1%,MAP.LINE$,"TASKIMAGESIZE")			&	\ GO TO 15005	IF T%= 0%					&15010	\ T%= 1% + INSTR(1%,MAP.LINE$,":")				&	\ S%= INSTR(1%,MAP.LINE$,"WORDS")				&	\ GO TO 15075	IF (T%= 1%) OR (S%= 0%)				&	\ T$= MID(MAP.LINE$,T%,S%-T%)					&	\ T$= EDIT$(T$,2%+4%+32%)		      			&	\ CLOSE #5%							&	\ FN.MAP.SIZE%= VAL(T$)						&	\ GO TO 15080							&	!								&	!	Locate the line in the map file which has the		&	!	task image size.  Strip out the length of the 		&	!	image in words.  Convert it to an integer.		&15050	\ CLOSE #5%							&	\ RESUME 15075	IF ERR= 5 AND ERL= 15001			&	\ RESUME 15075	IF ERR= 11 AND ERL= 15005			&	\ RESUME 15075  IF ERR= 2 AND ERL= 15001			&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ ON ERROR GO TO 0						&	!								&	!	Errors can be no such file or EOF witho     ut finding key phrase&	!	Inthat case go to 15075					&	!	Anything else is a fatal error				&15075	\ FN.MAP.SIZE%= 0%						&	\ CLOSE #5%							&	\ GO TO 15080							&	!								&	!	For these error conditions, return value of zero	&15080	\ ON ERROR GO TO 19000						&	\ FNEND								&          æwœw“Á› 8$        1	!***************************************************************&	!								&	!								&	!		S G N S E T    D I A L O G U E			&	!								&	!								&	!								&	SUB	SGNSET	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			      &	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  for use on such system and to one who agrees t      o	&	!    these license terms.  Title to  and  ownership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**************************      *************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL SGNSET(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$******************************      ********************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This routine sets up the GENCOM       region for SETUP.	&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!*******      ********************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N       E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************      ************************************************&800	\ MAP	(SETCOM)	TEMP.DATA$=1500				&	!								&	!	This will overlay the SETUP data, it is here so that	&	!	all the data can be easily moved with a string		&	!	assignment statement.					&815	\ MAP	(GENCOM)	SETUP.DATA$=1500			&	!								&	!	This will overlay the SETUP data, it is here so that	&	!	the GENCOM region can be easily loaded with a string	&	!	assignment statement.					&900	!***************************************************************&	!								      &	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I       C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ BASIC%=BASIC.SUPPORT%						&	\ COBOL%=COBOL.SUPPORT%						&	\ BASIC%=-1% IF (BASIC.SUPPORT%=0%) AND (COBOL.SUPPORT%=0%)	&	\ CPU.TYPE%=PROCESSOR.TYPE%					&	\ S.MEMORY.SIZE%=MEMORY.SIZE%					&	\ S.DEV.SYS%=DEV.SYS%						&	\ S.SYSGEN.LONG.FORM%=SYSGEN.LONG.FORM%				&	\ RK.NUM%=NUM.OF.DM.DRIVES%					&	\ RM.NUM%=NUM.OF.DR      .DRIVES%					&	\ RP.NUM%=NUM.OF.DB.DRIVES%					&	\ NO.CON.TP%=NUM.OF.TPS%					&	\ CEXPAR.SIZE%=FN.MAP.SIZE%("CEX")				&	\ COMMUNICATIONS%=COM.SUPPORT%					&	\ COMMUNICATIONS%=0% IF NUM.OF.NODES%=0%			&	\ S.HERALD.TEXT$=HERALD.TEXT$					&	\ DL.NUM%=NUM.OF.DLS%						&	\ DZ.NUM%=NUM.OF.DZS.IN.SE%					&	\ S.E.TERMINAL.NUM%=DL.NUM%					&	\ FOR DZ.UNIT%=0% TO NUM.OF.DZS.IN.SE%-1%			&		\ S.E.TERMINAL.NUM%=S.E.TERMINAL.NUM%+			&			SE.DZ.TERM.NUM%(DZ.UNIT%)			&	\ NEXT DZ.UNIT%							&	\ DB.CONT%=NUM.OF.DB.CNTLRS%			      		&	\ DR.CONT%=NUM.OF.DR.CNTLRS%					&	\ FOR CONT%=0% TO NUM.OF.DB.CNTLRS%-1%				&		\ DB.SEEK$(CONT%)="RH"+DB.RH.CNTLR$(0%) IF CONT%=0%	&		\ T%=ASCII(DB.RH.CNTLR$(0%))-65% IF CONT%=0%		&		\ DB.SEEK$(CONT%)="RH"+DB.RH.CNTLR$(RH.UNITS%(T%)) IF	&					CONT%=1%			&	\ NEXT CONT%							&	\ FOR CONT%=0% TO NUM.OF.DR.CNTLRS%-1%				&		\ DR.SEEK$(CONT%)="RH"+DR.RH.CNTLR$(0%) IF CONT%=0%	&		\ T%=ASCII(DR.RH.CNTLR$(0%))-65% IF CONT%=0%		&		\ DR.SEEK$(CONT%)="RH"+DR.RH.CNTLR$(RH.UNITS%(T%)) IF	&					CONT%=1%			&	\ NEXT C      ONT%							&	!								&	!	Set up all the needed variables for SETUP.		&1020	\ BLOCK%=700%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ M.DRIVER.NUM%=0%						&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%) TO			&			(HELP.INDEX%(MODULE.INDX%)+			&				HELP.INDEX%(MODULE.INDX%+1%)-1%)	&		\ GOTO 1030 IF (ASK.HELP$(MODULE%)="DB") AND		&				(NUM.OF.DB.DRIVES%=0%)			&		\ GOTO 1030 IF (ASK.HELP$(MODULE%)="LP") AND		&				(NUM.OF.LPS%=0%)			&		\ GOTO 1030 IF (ASK.HELP$(MODULE%)="DM") AND		&				(NUM.OF.DM.DRIVES%=0%)			&		\ GOTO       1030 IF (ASK.HELP$(MODULE%)="DR") AND		&				(NUM.OF.DR.DRIVES%=0%)			&		\ GOTO 1030 IF (ASK.HELP$(MODULE%)="MM") AND		&				(NUM.OF.MM.DRIVES%=0%)			&		\ GOTO 1030 IF (ASK.HELP$(MODULE%)="MT") AND		&				(NUM.OF.TS03.DRIVES%=0%)		&		\ GOTO 1030 IF (ASK.HELP$(MODULE%)="XM") AND		&				(NUM.OF.NODES%=0%)			&		\ GOTO 1030 IF (ASK.HELP$(MODULE%)="XK") AND		&				((IBM.SUPPORT%=0%) AND (T2780.SUPPORT%=0%))&		\ GOTO 1030 IF (ASK.HELP$(MODULE%)="NT") AND		&				(NUM.OF.NODES%=0%)			&		\ DRIVER.NAME$(M.DRIVER.NUM%)=ASK      .HELP$(MODULE%)+"DRV"	&		\ M.DRIVER.NUM%=M.DRIVER.NUM%+1%			&1030	\ NEXT MODULE%							&	!								&	!	Count all the loadable drivers.				&1040	\ BLOCK%=934%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ ATS.DRIVER.NUM%=0%						&	\ GOTO 1060 IF DEV.SYS%<>0%					&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%)+SKIP.ASSEMBLIES% TO	&			(HELP.INDEX%(MODULE.INDX%)+			&				HELP.INDEX%(MODULE.INDX%+1%)-1%)	&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="V62" AND ATS.V62$<>"V62"&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="L18" AND ATS.V52$<>"L1      8"&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="DCP" AND ATS.V62$<>"V62"&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="KSA" AND ATS.V52$<>"L18"&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="KSA" AND ATS.KDZ$<>"KDZ"&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="SA"  AND ATS.V52$<>"L18"&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="SA"  AND ATS.KDZ$<>"DZ"&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="KDP" AND ATS.KDP$<>"KDP"&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="KDZ" AND ATS.KDZ$<>"KDZ"&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="DZ" AND ATS.KDZ$<>"DZ"&		\ GOTO 1050 IF       ASK.HELP$(MODULE%)="STCRC"		&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="DDHAR"		&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="KDZPMT"		&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="KDZLMT"		&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="QIOTAB"		&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="NTL"			&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="NTI"			&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="ATSNIL"		&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="KMCLDR"		&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="V62ER"		&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="DCE"			&		\ GOTO 1050 IF ASK      .HELP$(MODULE%)="BSD" AND IBM.SUPPORT%=0%&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="BU" AND IBM.SUPPORT%=0%&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="TUD" AND IBM.SUPPORT%=0%&		\ GOTO 1050 IF ASK.HELP$(MODULE%)="TTB" AND IBM.SUPPORT%=0%&		\ ATS.DRIVER.NAME$(ATS.DRIVER.NUM%)=ASK.HELP$(MODULE%)	&		\ ATS.DRIVER.NAME$(ATS.DRIVER.NUM%)="QIO" IF		&					ASK.HELP$(MODULE%)="NQ"		&		\ ATS.DRIVER.NAME$(ATS.DRIVER.NUM%)="TUDTAB" IF		&					ASK.HELP$(MODULE%)="TTB"	&		\ ATS.DRIVER.NUM%=ATS.DRIVER.NUM%+1%			&1050	\ NEXT MODULE%			      				&	\ ATS.DRIVER.NAME$(ATS.DRIVER.NUM%)="CEPOOL"			&	\ ATS.DRIVER.NUM%=ATS.DRIVER.NUM%+1%				&	!								&	!	Count all the necessary modules for this configuration.	&1060	\ KMC.3271%=NUM.OF.3271.KMCS% IF IBM.SUPPORT%<>0%		&	\ KMC.2780%=NUM.OF.2780.KMCS% IF T2780.SUPPORT%<>0%		&	\ SUBLINK.3271%=0%						&	\ FOR T%=0% TO KMC.3271%-1%					&		\ SUBLINK.3271%=SUBLINK.3271%+UNITS.ON.DUP%(T%) IF	&			IBM.SUPPORT%<>0%				&	\ NEXT T%							&	!								&	!	SET UP THE FIELDS FOR 3271 AND 2780 IF NECESSARY.	&1065	\ CALL       NULGEN							&	\ SETUP.DATA$=TEMP.DATA$					&	!								&	!	Null out GENCOM and then put the data in it for SETUP.	&1500	\ GOTO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&11049	\ RETURN							&15000	!$*************************************************************      *&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR       GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!	      							&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!****************************************************       ***********&	!								&	\ SUBEND           z	%“Á› 8$     ²  850	\ COM	(ATZCOM)						&	!								&		INPUT.BUFR$ = 134					&	,	MODULE.NAME$(63) = 5					&	,	MODULE.ADDRESS$(63) = 6					&	,	DISK.BLK.LIMITS$ = 10					&	,	NUM.OF.MODULES%						&	,	ERROR.STATUS%						&	!								&	!	COMMON area for AUTOZAP:				&	!		input buffer,					&	!		array of module names,				&	!		array of module addresses,			&	!		starting block address (octal),			&	!		number of modules in arrays,			&	!		error status word.				& ²         šE2™“Á› 8$        1	!***************************************************************&	!								&	!								&	!	E X T R A C T   D A T A   F R O M   KERNEL.MAP		&	!								&	!								&	!								&	SUB KERXTR		! Start sub-program here		&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	13-Dec-77				&	!	Author(s):	LBB					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		             C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1977 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 OWN      ERSHIP OF THE	&	!   SOFTWARE IS HEREBY TRANSFERRED.				&	!								&	!   THE INFORMATION  IN  THIS SOFTWARE  IS SUBJECT TO CHANGE	&	!   WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS  A COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&15	!*************************      **************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KERXTR						&	!								&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!							      	&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	-      --------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		MAP file KERNEL.MAP			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!**********************************      *****************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!				      				&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D       I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	      !								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ OPEN "[1,34]KERNEL.MAP" FOR INPUT AS FILE 2%			&	,ACCESS		READ						&	!								&	!	Open the KERNEL.MAP file.				&1020	\ INPUT LINE #2%, INPUT.BUFR$					&	\ T% = INSTR(1%,INPUT.BUFR$,"DISK BLK LIMITS:")			&	\ GO TO 1020 IF T% = 0%						&	\ T% = INSTR(1%,INPUT.BUFR$,"R-W")				&	\ GO TO 1020 IF T% <> 0%					&	\ T% = INSTR(1%,INPUT.BUFR$,      ": ")				&	\ DISK.BLK.LIMITS$ = MID(INPUT.BUFR$,T%+2%,6%)			&	!								&	!	Read a line from the MAP file.				&	!	Look for the line containing the disk block limits.	&	!	Go back and read another if this isn't the line.	&	!	Is this the "R-W DISK BLK LIMITS" line?			&	!	If so, go back and read another (wrong set of limits).	&	!	Find the start of the block # string.			&	!	Extract the block # string and save in common.		&1030	\ INPUT LINE #2%, INPUT.BUFR$					&	\ T% = INSTR(1%,INPUT.BUFR$,". BLK.")				&	\ GO TO       1030 IF T% = 0%						&	\ T.CTR% = -1%							&	!								&	!	Read a line from the MAP file.				&	!	Look for the line where the module names begin.		&	!	Go back and read another if this isn't the line.	&	!	Initialize the module array counter.			&1040	\ INPUT LINE #2%, INPUT.BUFR$					&	\ T% = INSTR(1%,INPUT.BUFR$,"GLOBAL SYMBOLS:")			&	\ GO TO 1060 IF T% <> 0%					&	!								&	!	Read a line from the MAP file.				&	!	Look for the end of the module names section.		&	!	Jump out when found.					&1050	\ T% = INSTR(      1%,INPUT.BUFR$,"0")				&	\ GO TO 1040 IF T% = 0%						&	\ T.CTR% = T.CTR% + 1%						&	\ MODULE.ADDRESS$(T.CTR%) = MID(INPUT.BUFR$,T%,6%)		&	\ T1% = INSTR(T%,INPUT.BUFR$,".")				&	\ MODULE.NAME$(T.CTR%) = MID(INPUT.BUFR$,T1%+2%,5%)		&	\ GO TO 1040							&	!								&	!	Find beginning of module address.			&	!	Get another line if not found (probably blank line).	&	!	Increment the module array counter.			&	!	Extract and store module address.			&	!	Find start of module name.				&	!	Extract and store module name.	      			&	!	Go back and read the next line.				&1060	\ NUM.OF.MODULES% = T.CTR%					&	\ CLOSE 2%							&	\ GO TO 32767							&	!								&	!	Store number of modules.				&	!	Close the MAP file.					&	!	Exit.							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$*****************      *********************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ IF (ERR = 5% OR ER      R = 162% OR ERR = 136%)			&	  AND ERL = 1010%						&	  THEN								&		  PRINT "? KERNEL Map is missing"			&		\ ERROR.STATUS% = 2%					&		\ RESUME 32000						&	!								&	!	Handle problems in opening KERNEL.MAP.			&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B       R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&   8  	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND 8         þv8}“Á› 8$        1	!***************************************************************&	!								&	!								&	!		S A V T A P    D I A L O G U E			&	!								&	!								&	!								&	SUB	SAVTAP	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			      &	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  for use on such system and to one who agrees t      o	&	!    these license terms.  Title to  and  ownership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**************************      *************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL SAVTAP(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$******************************      ********************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This is a dummy routine at this       point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!*********      ******************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E       S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!*****************      **********************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines       930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up stan      dard default error trap			&1050	\ BLOCK%=950%							&	\ SUBSTITUTE.TEXT$(1%)="[1,1]"					&	\ T%=FN.EXEC.BLOCK%("MCR...",650%,FALSE%)			&	\ OPEN "[1,1]SAVECNTRL.FIL" FOR OUTPUT AS FILE 3%,		&			MAP SAVCTL,					&			ORGANIZATION SEQUENTIAL				&	!								&	!	Open the copy control file for the SAVE TAPE.		&1052	\ MODULE.INDX%=BLOCK%*2%					&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%) TO 			&		HELP.INDEX%(MODULE.INDX%)+(HELP.INDEX%(MODULE.INDX%+1%)-1%)&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"DB")<>0%) AND&			      (NUM.OF.DB.DRIVES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"LP")<>0%) AND&			(NUM.OF.LPS%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"DM")<>0%) AND&			(NUM.OF.DM.DRIVES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"DRDR")<>0%) AND&			(NUM.OF.DR.DRIVES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"MM")<>0%) AND&			(NUM.OF.MM.DRIVES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"MT")<>0%) AND&			(NUM.OF.TS03.DRIVES%=0%)			&		\ GOTO 1060 IF (INSTR(1%,ASK.HE      LP$(MODULE%),"XM")<>0%) AND&			(NUM.OF.NODES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"XK")<>0%) AND&			((IBM.SUPPORT%=0%) AND (T2780.SUPPORT%=0%))	&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"NT")<>0%) AND&			(NUM.OF.NODES%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"XI")<>0%) AND&			(IBM.SUPPORT%=0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),".34")<>0%) AND&			(PROCESSOR.TYPE%<>34%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),".60")<>0%) AND&			(PROCESSOR.TYPE%<>6      0%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),".70")<>0%) AND&			(PROCESSOR.TYPE%<>70%)				&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"NODLNK")<>0%)&					AND (NUM.OF.NODES%=0%)		&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"NTDRV")<>0%)&					AND (NUM.OF.NODES%=0%)		&		\ GOTO 1060 IF (INSTR(1%,ASK.HELP$(MODULE%),"XMLOA")<>0%)&					AND (NUM.OF.NODES%=0%)		&		\ SAVCTL.FILE.NAME$=RIGHT(ASK.HELP$(MODULE%),		&			(INSTR(1%,ASK.HELP$(MODULE%),"]")+1%))		&		\ SAVCTL.FILE.UFD$=LEFT(ASK.HELP$(MODULE%),		      &			INSTR(1%,ASK.HELP$(MODULE%),"]"))		&		\ SAVCTL.CONTIG.FLAG$="N"				&		\ PUT #3						&	!								&	!	Put an appropriate record in the copy control file.	&1060	\ NEXT MODULE%							&	\ BLOCK%=BLOCK%+2%						&	\ GOTO 1052 UNLESS (DEV.SYS%<>0%) OR (BLOCK%=956%)		&	\ CLOSE 3%							&	!								&	!	Do the COMMUNICATIONS and ATS sections unless this	&	!	is a development only system.				&	!	Close the copy control file when done.			&1070	\ BREED.TASK$="...INS"						&	\ BREED.COMMAND$="INS [1,54]SAVEBUILD/TASK=SGNS      AV"		&	\ BREED.RETURN%=TRUE%						&	\ GOSUB 20000							&	\ SPAWN.STATUS%=BREED.ERROR%					&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ BREED.TASK$="SGNSAV"						&	\ BREED.COMMAND$="DUMMY"					&	\ GOSUB 20000							&	\ SPAWN.STATUS%=BREED.ERROR%					&	\ BREED.TASK$="MCR..."						&	\ BREED.COMMAND$="REM SGNSAV"					&	\ GOSUB 20000							&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	!								&	!	Build the SAVETAPE.					&1500	\ GOTO 32000							&10000	!$***********************************************      ***************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$*      *************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T       P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!						   F  		&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDF         šE.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L    G E N E R A T I O N    M O D U L E	&	!								&	!								&	!								&	SUB	KERGN2	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O       P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**********      *****************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KERGN2(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**************      ************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	This sub-program creates the KERMC.MAC and SYSTB.MAC	&	!	files and all the nece      ssary commands needed to build	&	!	the KERNEL.  It then executes the necessary commands	&	!	thus building the KERNEL.				&	!								&	!	This is a dummy routine at this point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------        &	!	    3		KERMC.MAC file output			&	!	    4		SYSTB.MAC file output			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************      ************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-      ----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	      !								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***********************************      ****************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1180	\ OPEN "SYSTB.MAC" FOR OUTPUT AS FILE 4%			&	!								&	!	Create the SYSTB.MAC file.				&1190	\ SUBSTITUTE.TEXT$(1%)=TRM$(HERALD.TEXT$)			&	\ SUBSTITUTE.TEXT$(2%)=TRM$(RIGHT(VER.EDIT.NUM$,		&				INSTR(1%,VER.EDIT.NUM$,"V")))		&	\ T%=FN.PRINT.BLOCK%(4%,390%)					&	\ T%=FN.PRINT.BLOCK%(4%,1%)					&	\ T%=FN.PRINT.BLOCK%(4%,392%)					&	!								&	!	Start off the SYSTB.MAC file.				&1200      	\ DLR.DCBN%=0%							&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	\ DLR.CTBN%=0%							&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.OCT$(DLR.CTBN%)		&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	\ FUMR%=5%							&	\ SUBSTITUTE.TEXT$(4%)=FN.INT.TO.OCT$(FUMR%)			&	!								&	!	INITIALIZE SOME VARIABLES.				&1210	\ GOTO 1300 IF NUM.OF.RH.CNTLRS%=0%				&	\  SUBSTITUTE.TEXT$(50%)=FN.INT.TO.OCT$(NUM.OF.RH.CNTLRS%)	&	\ T%=FN.PRINT.BLOCK%(4%,394%)		      			&	\ FOR RH.UNIT%=0% TO NUM.OF.RH.CNTLRS%-1%			&		\ SUBSTITUTE.TEXT$(6%)=CHR$(65%+RH.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,396%)				&	\ NEXT RH.UNIT%							&	\ DLR.CTBN%=DLR.CTBN%+1%					&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.OCT$(DLR.CTBN%)			&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	!								&	!	Do the RH CTB						&1300	\ GOTO 1400 IF (NUM.OF.DB.DRIVES% OR NUM.OF.DB.CNTLRS%)=0%	&	\ T%=FN.PRINT.BLOCK%(4%,393%) IF DLR.DCBN%=0%			&	\ SUBSTITUTE.TEXT$(51%)=FN.INT.TO.OCT$(NUM.OF.DB.DRIVES%-1%)	&	\ T%      =FN.PRINT.BLOCK%(4%,398%)					&	\ SUBSTITUTE.TEXT$(8%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ FOR DB.UNIT%=0% TO NUM.OF.DB.DRIVES%-1%			&		\ SUBSTITUTE.TEXT$(52%)=FN.INT.TO.OCT$(DB.UNIT%)		&		\ SUBSTITUTE.TEXT$(53%)=FN.INT.TO.OCT$(DB.PHY.NUM%(DB.UNIT%))&		\ T%=FN.PRINT.BLOCK%(4%,400%)				&		\ T%=FN.PRINT.BLOCK%(4%,402%) IF DB.IS.RP06%(DB.UNIT%)=0%&		\ T%=FN.PRINT.BLOCK%(4%,404%) IF DB.IS.RP06%(DB.UNIT%)<>0%&		\ T%=FN.PRINT.BLOCK%(4%,406%)				&		\ T%=FN.PRINT.BLOCK%(4%,408%) IF DB.IS.RP06%(DB.UNIT%)=0%&		\ T%=FN.PR      INT.BLOCK%(4%,410%) IF DB.IS.RP06%(DB.UNIT%)<>0%&		\ T%=FN.PRINT.BLOCK%(4%,412%) IF DB.UNIT%=0%		&	\ NEXT DB.UNIT%							&	\ FOR SCBN%=0% TO NUM.OF.DB.DRIVES%-1%				&		\ SUBSTITUTE.TEXT$(54%)=FN.INT.TO.OCT$(SCBN%)		&		\ SUBSTITUTE.TEXT$(6%)=DB.RH.CNTLR$(SCBN%)		&		\ T%=FN.PRINT.BLOCK%(4%,414%)				&		\ T%=FN.PRINT.BLOCK%(4%,416%)				&		\ T%=FN.PRINT.BLOCK%(4%,420%)				&	\ NEXT SCBN%							&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OC      T$(DLR.DCBN%+1%)		&	!								&	!	Do the DB DCB, UCB's, and SCB's.			&1400	\ GOTO 1500 IF NUM.OF.DR.DRIVES%=0%				&	\ T%=FN.PRINT.BLOCK%(4%,393%) IF DLR.DCBN%=0%			&	\ SUBSTITUTE.TEXT$(55%)=FN.INT.TO.OCT$(NUM.OF.DR.DRIVES%-1%)	&	\ T%=FN.PRINT.BLOCK%(4%,424%)					&	\ SUBSTITUTE.TEXT$(9%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ FOR DR.UNIT%=0% TO NUM.OF.DR.DRIVES%-1%			&		\ SUBSTITUTE.TEXT$(56%)=FN.INT.TO.OCT$(DR.UNIT%)		&		\ SUBSTITUTE.TEXT$(57%)=FN.INT.TO.OCT$(DR.PHY.NUM%(DR.UNIT%))&		\ T%=FN.PRINT.BLOCK%(4%,426%)		      		&		\ T%=FN.PRINT.BLOCK%(4%,428%) IF DR.UNIT%=0%		&	\ NEXT DR.UNIT%							&	\ FOR SCBN%=0% TO NUM.OF.DR.DRIVES%-1%				&		\ SUBSTITUTE.TEXT$(54%)=FN.INT.TO.OCT$(SCBN%)		&		\ SUBSTITUTE.TEXT$(6%)=DR.RH.CNTLR$(SCBN%)		&		\ T%=FN.PRINT.BLOCK%(4%,430%)				&		\ T%=FN.PRINT.BLOCK%(4%,432%)				&		\ T%=FN.PRINT.BLOCK%(4%,436%)				&	\ NEXT SCBN%							&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!								&	!	Do the DR DCB      , UCB's, and SCB's.			&1500	\ GOTO 1600 IF NUM.OF.MM.DRIVES%=0%				&	\ T%=FN.PRINT.BLOCK%(4%,393%) IF DLR.DCBN%=0%			&	\ SUBSTITUTE.TEXT$(58%)=FN.INT.TO.OCT$(NUM.OF.MM.DRIVES%-1%)	&	\ T%=FN.PRINT.BLOCK%(4%,440%)					&	\ UNITC%=0%							&	\ SUBSTITUTE.TEXT$(10%)=FN.INT.TO.OCT$(DLR.DCBN%)		&	\ FOR MM.UNIT%=0% TO NUM.OF.MM.DRIVES%-1%			&		\ SUBSTITUTE.TEXT$(59%)=FN.INT.TO.OCT$(MM.UNIT%)		&		\ SUBSTITUTE.TEXT$(60%)=FN.INT.TO.OCT$(MM.PHY.NUM%(MM.UNIT%))&		\ SUBSTITUTE.TEXT$(61%)=FN.INT.TO.OCT$(MM.MSTR%(MM.UNIT%)      )&		\ SUBSTITUTE.TEXT$(62%)=FN.INT.TO.OCT$(UNITC%)		&		\ T%=FN.PRINT.BLOCK%(4%,442%)				&		\ T%=FN.PRINT.BLOCK%(4%,444%) IF MM.UNIT%=0%		&		\ UNITC%=UNITC%+1%					&		\ UNITC%=0% IF MM.MSTR%(MM.UNIT%)<>MM.MSTR%(MM.UNIT%+1%)&	\ NEXT MM.UNIT%							&! NO KRB1's for this release.						&!	\ MM.MSTR.UNIT%=0%						&!	\ SUBSTITUTE.TEXT$(61%)=FN.INT.TO.OCT$(MM.MSTR.UNIT%)		&!	\ FOR MM.UNIT%=0% TO NUM.OF.MM.MASTERS%-1%			&!		\ SUBSTITUTE.TEXT$(63%)=				&!			FN.INT.TO.OCT$(NUM.OF.MM.SLAVES%(MM.UNIT%)-1%)	&!		\ T%=FN.P      RINT.BLOCK%(4%,445%) IF 			&!			NUM.OF.MM.SLAVES%(MM.UNIT%)=1%			&!		\ T%=FN.PRINT.BLOCK%(4%,446%) IF 			&!			NUM.OF.MM.SLAVES%(MM.UNIT%)<>1%			&!		\ FOR UNITC%=0% TO NUM.OF.MM.SLAVES%(MM.UNIT%)-1%	&!			\ SUBSTITUTE.TEXT$(62%)=FN.INT.TO.OCT$(UNITC%)	&!			\ T%=FN.PRINT.BLOCK%(4%,448%)			&!		\ NEXT UNITC%						&!		\ MM.MSTR.UNIT%=MM.MSTR.UNIT%+NUM.OF.MM.SLAVES%(MM.UNIT%)&!		\ SUBSTITUTE.TEXT$(61%)=FN.INT.TO.OCT$(MM.MSTR.UNIT%)	&!	\ NEXT MM.UNIT%							&	\ FOR SCBN%=0% TO NUM.OF.MM.MASTERS%-1%				&		\ SUBSTITU      TE.TEXT$(61%)="0"				&		\ SUBSTITUTE.TEXT$(61%)=FN.INT.TO.OCT$(			&			NUM.OF.MM.SLAVES%(0%)) IF SCBN%<>0%		&		\ SUBSTITUTE.TEXT$(6%)=MM.RH.CNTLRS$(0%)		&		\ SUBSTITUTE.TEXT$(6%)=MM.RH.CNTLRS$(1%) IF 		&			SUBSTITUTE.TEXT$(61%)<>"0"			&		\ T%=FN.PRINT.BLOCK%(4%,450%)				&		\ T%=FN.PRINT.BLOCK%(4%,452%)				&		\ T%=FN.PRINT.BLOCK%(4%,456%)				&	\ NEXT SCBN%							&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!							      	&	!	Do the MM DCB, UCB's, KRB's, and SCB's.			&1600	\ IF NUM.OF.RH.CNTLRS%=0%					&	  THEN T%=FN.PRINT.BLOCK%(4%,462%)				&	  	\ GOTO 1700						&	  ELSE T%=FN.PRINT.BLOCK%(4%,460%)				&		\ T%=FN.PRINT.BLOCK%(4%,464%)				&		\ T%=FN.PRINT.BLOCK%(4%,466%) IF NUM.OF.DB.DRIVES%<>0%	&		\ T%=FN.PRINT.BLOCK%(4%,468%) IF NUM.OF.DR.DRIVES%<>0%	&		\ T%=FN.PRINT.BLOCK%(4%,470%) IF NUM.OF.MM.DRIVES%<>0%	&		\ T%=FN.PRINT.BLOCK%(4%,472%)				&1610		\ FOR RH.UNIT%=0% TO NUM.OF.RH.CNTLRS%-1%		&			\ SUBSTITUTE.TEXT$(5%)=FN.I      NT.TO.OCT$(RH.UNIT%)	&			\ SUBSTITUTE.TEXT$(6%)=CHR$(65%+RH.UNIT%)	&			\ IF RH.UNITS%(RH.UNIT%)=0%			&			  THEN T%=FN.PRINT.BLOCK%(4%,474%)		&				\ GOTO 1620				&			  ELSE SUBSTITUTE.TEXT$(11%)=TRM$(RH.PRI$(RH.UNIT%))&				\ SUBSTITUTE.TEXT$(12%)=		&					TRM$(RH.VEC$(RH.UNIT%))		&				\ SUBSTITUTE.TEXT$(13%)=		&					TRM$(RH.CSR$(RH.UNIT%))		&				\ SUBSTITUTE.TEXT$(14%)=		&					FN.INT.TO.OCT$(RH.UNITS%(RH.UNIT%)-1%)&				\ SUBSTITUTE.TEXT$(30%)="KS.UCB!KS.UOP!"&				\ SUBSTITUTE.TEXT$(30%)="" IF 		&					RH.UNIT.      TYPE$(RH.UNIT%)="MM"	&				\ T%=FN.PRINT.BLOCK%(4%,476%)		&				\ SUBSTITUTE.TEXT$(15%)=		&		"50" IF (RH.UNIT.TYPE$(RH.UNIT%)="DB") OR		&			(RH.UNIT.TYPE$(RH.UNIT%)="DR")			&				\ SUBSTITUTE.TEXT$(15%)=		&		"34" IF (RH.UNIT.TYPE$(RH.UNIT%)="MM")			&				\ T%=FN.PRINT.BLOCK%(4%,478%)		&				\ T%=FN.PRINT.BLOCK%(4%,480%)		&		\ FOR UNITC%=0% TO RH.UNITS%(RH.UNIT%)-1%		&			\ SUBSTITUTE.TEXT$(16%)="0"			&			\ GOSUB 1630 IF RH.UNIT.TYPE$(RH.UNIT%)="MM"	&			\ GOSUB 1640 IF RH.UNIT.TYPE$(RH.UNIT%)="DR"	&			\ GOSUB 1650       IF RH.UNIT.TYPE$(RH.UNIT%)="DB"	&			\ T%=FN.PRINT.BLOCK%(4%,482%)			&		\ NEXT UNITC%						&				\ T%=FN.PRINT.BLOCK%(4%,486%)		&	1620		\ NEXT RH.UNIT%						&		\ GOTO 1700						&	!								&	!	Finish off the RH support.				&1630	\ T%=0%								&	\ T%=NUM.OF.MM.SLAVES%(TT%) FOR TT%=0% TO UNITC%-1%		&	\ SUBSTITUTE.TEXT$(16%)=".MM"+FN.INT.TO.OCT$(T%)			&	\ RETURN							&	!								&	!	Set up the magtape master unit number for each unit	&	!	on the controller.					&1640	\ T%=0%								&	\ WHILE DR.RH.CNTLR$(T%)<>SU      BSTITUTE.TEXT$(6%)			&		\ T%=T%+1%						&	\ NEXT								&	\ SUBSTITUTE.TEXT$(16%)=".DR"+FN.INT.TO.OCT$(T%+UNITC%)		&	\ RETURN							&	!								&	!	Set up the DR unit number for the current unit on the	&	!	controller.						&1650	\ T%=0%								&	\ WHILE DB.RH.CNTLR$(T%)<>SUBSTITUTE.TEXT$(6%)			&		\ T%=T%+1%						&	\ NEXT								&	\ SUBSTITUTE.TEXT$(16%)=".DB"+FN.INT.TO.OCT$(T%+UNITC%)		&	\ RETURN							&	!								&	!	Set up the DB unit number for the current unit on the	&	!	controller.						&1700	\ GOTO 3200      0							& 10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!********      *******************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$************************      **************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!				   ˆ  				&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDˆ         šE.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L    G E N E R A T I O N    M O D U L E	&	!								&	!								&	!								&	SUB	KERGN3	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O       P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**********      *****************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KERGN3(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**************      ************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	This sub-program creates the KERMC.MAC and SYSTB.MAC	&	!	files and all the nece      ssary commands needed to build	&	!	the KERNEL.  It then executes the necessary commands	&	!	thus building the KERNEL.				&	!								&	!	This is a dummy routine at this point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------        &	!	    3		KERMC.MAC file output			&	!	    4		SYSTB.MAC file output			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************      ************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-      ----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	      !								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***********************************      ****************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1700	\ GOTO 1800 IF NUM.OF.DM.DRIVES%=0%				&	\ T%=FN.PRINT.BLOCK%(4%,488%)					&	\ DLR.CTBN%=DLR.CTBN%+1%					&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.OCT$(DLR.CTBN%)			&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	\ T%=FN.PRINT.BLOCK%(4%,393%) IF DLR.DCBN%=0%			&	\ SUBSTITUTE.TEXT$(64%)=FN.INT.TO.OCT$(NUM.OF.DM.DRIVES%-1%)	&	\ T%=FN.PRINT.BLOCK%(4%,490%)					&	\ FOR DM.UNIT%=0% TO       NUM.OF.DM.DRIVES%-1%			&		\ SUBSTITUTE.TEXT$(65%)=FN.INT.TO.OCT$(DM.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,492%)				&		\ T%=FN.PRINT.BLOCK%(4%,496%) 				&		\ T%=FN.PRINT.BLOCK%(4%,498%)				&		\ T%=FN.PRINT.BLOCK%(4%,502%) 				&		\ T%=FN.PRINT.BLOCK%(4%,504%) IF DM.UNIT%=0%		&	\ NEXT DM.UNIT%							&	\ SUBSTITUTE.TEXT$(66%)=TRM$(DM.VEC$)				&	\ SUBSTITUTE.TEXT$(67%)=TRM$(DM.PRI$)				&	\ SUBSTITUTE.TEXT$(68%)=TRM$(DM.CSR$)				&	\ FOR SCBN%=0% TO NUM.OF.DM.DRIVES%-1%				&		\ SUBSTITUTE.TEXT$(54%)=FN.INT.TO.OCT$(S      CBN%)		&		\ T%=FN.PRINT.BLOCK%(4%,506%)				&	\ NEXT SCBN%							&	\ T%=FN.PRINT.BLOCK%(4%,508%)					&	\ FOR DM.UNIT%=0% TO NUM.OF.DM.DRIVES%-1%			&		\ SUBSTITUTE.TEXT$(65%)=FN.INT.TO.OCT$(DM.UNIT%)	&		\ T%=FN.PRINT.BLOCK%(4%,510%)				&	\ NEXT DM.UNIT%							&	\ T%=FN.PRINT.BLOCK%(4%,512%)					&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!								&	!	Put in the DM support.					&1800	\ GOTO 1900 IF NUM.OF.LPS%=0%		      			&	\ SUBSTITUTE.TEXT$(69%)=FN.INT.TO.OCT$(NUM.OF.LPS%)		&	\ T%=FN.PRINT.BLOCK%(4%,514%)					&	\ FOR LP.UNIT%=0% TO NUM.OF.LPS%-1%				&		\ SUBSTITUTE.TEXT$(70%)=CHR$(65%+LP.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,516%)				&	\ NEXT LP.UNIT%							&	\ DLR.CTBN%=DLR.CTBN%+1%					&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.OCT$(DLR.CTBN%)			&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	\ T%=FN.PRINT.BLOCK%(4%,393%) IF DLR.DCBN%=0%			&	\ SUBSTITUTE.TEXT$(72%)=FN.INT.TO.OCT$(NUM.OF.LPS%-1%)		&	\ T%=FN.PRINT.BLOCK%(      4%,518%)					&	\ FOR LP.UNIT%=0% TO NUM.OF.LPS%-1%				&		\ SUBSTITUTE.TEXT$(71%)=FN.INT.TO.OCT$(LP.UNIT%)		&		\ SUBSTITUTE.TEXT$(73%)=TRM$(LP.TYPE$(LP.UNIT%))	&		\ T%=FN.PRINT.BLOCK%(4%,520%)				&		\ T%=FN.PRINT.BLOCK%(4%,522%) IF LP.UNIT%=0%		&	\ NEXT LP.UNIT%							&	\ FOR LP.UNIT%=0% TO NUM.OF.LPS%-1%				&		\ SUBSTITUTE.TEXT$(71%)=FN.INT.TO.OCT$(LP.UNIT%)		&		\ SUBSTITUTE.TEXT$(74%)=TRM$(LP.PRI$(LP.UNIT%))		&		\ SUBSTITUTE.TEXT$(75%)=TRM$(LP.VEC$(LP.UNIT%))		&		\ SUBSTITUTE.TEXT$(76%)=TRM$(LP.CSR$(LP.UNI      T%))		&		\ SUBSTITUTE.TEXT$(70%)=CHR$(65%+LP.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,524%)				&	\ NEXT LP.UNIT%							&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!								&	!	LP support.						&1900	\ GOTO 2000 IF NUM.OF.TS03.DRIVES%=0%				&	\ SUBSTITUTE.TEXT$(77%)=FN.INT.TO.OCT$(NUM.OF.TS03.DRIVES%)	&	\ T%=FN.PRINT.BLOCK%(4%,526%)					&	\ T%=FN.PRINT.BLOCK%(4%,528%)					&	\ DLR.CTBN%=DLR.CTBN%+1%					&	\ SUBSTITUTE.T      EXT$(2%)=FN.INT.TO.OCT$(DLR.CTBN%)			&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	\ T%=FN.PRINT.BLOCK%(4%,393%) IF DLR.DCBN%=0%			&	\ SUBSTITUTE.TEXT$(82%)=FN.INT.TO.OCT$(NUM.OF.TS03.DRIVES%-1%)	&	\ FOR MT.UNIT%=0% TO NUM.OF.TS03.DRIVES%-1%			&		\ SUBSTITUTE.TEXT$(78%)=FN.INT.TO.OCT$(MT.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,530%)				&		\ T%=FN.PRINT.BLOCK%(4%,532%) IF MT.UNIT%=0%		&	\ NEXT MT.UNIT%							&	\ SUBSTITUTE.TEXT$(79%)=TRM$(MT.PRI$)				&	\ SUBSTITUTE.TEXT$(80%)=TRM$(MT.VEC$)				&	\ SUBST      ITUTE.TEXT$(81%)=TRM$(MT.CSR$)				&	\ T%=FN.PRINT.BLOCK%(4%,534%)					&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!								&	!	MT support.						&2000	\ GOTO 2100 IF NUM.OF.DLS%=0%					&	\ SUBSTITUTE.TEXT$(40%)=FN.INT.TO.OCT$(NUM.OF.DLS%)		&	\ T%=FN.PRINT.BLOCK%(4%,540%)					&	\ FOR DL.UNIT%=0% TO NUM.OF.DLS%-1%				&		\ SUBSTITUTE.TEXT$(83%)=CHR$(65%+DL.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,542%)				&	\ NEXT DL.UNIT      %							&	\ DLR.CTBN%=DLR.CTBN%+1%					&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.OCT$(DLR.CTBN%)			&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	\ T%=FN.PRINT.BLOCK%(4%,393%) IF DLR.DCBN%=0%			&	\ T%=FN.PRINT.BLOCK%(4%,544%)					&	\ SUBSTITUTE.TEXT$(85%)=FN.INT.TO.OCT$(NUM.OF.DLS%-1%)		&	\ TT.UNIT%=0%							&	\ SUBSTITUTE.TEXT$(84%)=FN.INT.TO.OCT$(TT.UNIT%)			&	\ T%=FN.PRINT.BLOCK%(4%,546%)					&	\ FOR TT.UNIT%=0% TO NUM.OF.DLS%-1%				&		\ SUBSTITUTE.TEXT$(84%)=FN.INT.TO.OCT$(TT.UNIT%)		&		\ T%=FN.PRINT      .BLOCK%(4%,550%)				&		\ T%=FN.PRINT.BLOCK%(4%,552%) IF TT.UNIT%=0%		&		\ T%=FN.PRINT.BLOCK%(4%,554%) IF TT.UNIT%<>0%		&		\ T%=FN.PRINT.BLOCK%(4%,556%)				&		\ T%=FN.PRINT.BLOCK%(4%,558%) IF TT.UNIT%=0%		&		\ T%=FN.PRINT.BLOCK%(4%,560%) IF TT.UNIT%<>0%		&		\ T%=FN.PRINT.BLOCK%(4%,562%)				&		\ T%=FN.PRINT.BLOCK%(4%,564%) IF TT.UNIT%=0%		&	\ NEXT TT.UNIT%							&	\ T%=FN.PRINT.BLOCK%(4%,566%)					&	\ FOR DL.UNIT%=0% TO NUM.OF.DLS%-1%				&		\ SUBSTITUTE.TEXT$(89%)=FN.INT.TO.OCT$(DL.UNIT%)		&		\ SUBSTITUTE.TEX      T$(86%)=TRM$(DL.PRI$(DL.UNIT%))		&		\ SUBSTITUTE.TEXT$(87%)=TRM$(DL.VEC$(DL.UNIT%))		&		\ SUBSTITUTE.TEXT$(88%)=TRM$(DL.CSR$(DL.UNIT%))		&		\ SUBSTITUTE.TEXT$(83%)=CHR$(65%+DL.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,568%)				&	\ NEXT DL.UNIT%							&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)		&	!								&	!	DL support.						&2100	\ GOTO 2200 IF NUM.OF.DZS.IN.SE%=0%				&	\ SUBSTITUTE.TEXT$(90%)=FN.INT.TO.OCT$(NUM.OF.DZS.      IN.SE%)	&	\ T%=FN.PRINT.BLOCK%(4%,570%)					&	\ T%=FN.PRINT.BLOCK%(4%,572%) IF SE.DZ.NEEDS.MODEM$<>""		&	\ T%=FN.PRINT.BLOCK%(4%,574%)					&	\ T%=FN.PRINT.BLOCK%(4%,576%) IF SE.DZ.NEEDS.MODEM$<>""		&	\ T%=FN.PRINT.BLOCK%(4%,578%) IF SE.DZ.NEEDS.MODEM$=""		&	\ T%=FN.PRINT.BLOCK%(4%,580%)					&	\ FOR DZ.UNIT%=0% TO NUM.OF.DZS.IN.SE%-1%			&		\ SUBSTITUTE.TEXT$(91%)=CHR$(65%+DZ.UNIT%)		&		\ T%=FN.PRINT.BLOCK%(4%,582%)				&	\ NEXT DZ.UNIT%							&	\ DLR.CTBN%=DLR.CTBN%+1%					&	\ SUBSTITUTE.TEXT$(2%)=FN.INT.TO.O      CT$(DLR.CTBN%)		&	\ SUBSTITUTE.TEXT$(3%)=FN.INT.TO.OCT$(DLR.CTBN%+1%)		&	\ TT.UNIT%=NUM.OF.DLS%						&	\ SUBSTITUTE.TEXT$(84%)=FN.INT.TO.OCT$(TT.UNIT%)		&	\ T%=0%								&	\ T%=T%+SE.DZ.TERM.NUM%(DZ.UNIT%) FOR DZ.UNIT%=0% TO		&					NUM.OF.DZS.IN.SE%-1%		&	\ T%=NUM.OF.DZS.IN.SE% IF T%=0%					&	\ SUBSTITUTE.TEXT$(40%)=FN.INT.TO.OCT$(TT.UNIT%+(T%-1%))	&	\ T%=FN.PRINT.BLOCK%(4%,584%)					&	\ T%=FN.PRINT.BLOCK%(4%,586%)					&	\ TT.UNIT%=TT.UNIT%-1%						&	\ FOR DZ.UNIT%=0% TO NUM.OF.DZS.IN.SE%-1%			&	    \ SE.DZ      .TERM.NUM%(DZ.UNIT%)=1% IF SE.DZ.TERM.NUM%(DZ.UNIT%)=0%&	    \ FOR CHNL%=0% TO SE.DZ.TERM.NUM%(DZ.UNIT%)-1%		&		\ TT.UNIT%=TT.UNIT%+1%					&		\ SUBSTITUTE.TEXT$(84%)=FN.INT.TO.OCT$(TT.UNIT%)	&		\ SUBSTITUTE.TEXT$(92%)=FN.INT.TO.OCT$(CHNL%)		&		\ T%=FN.PRINT.BLOCK%(4%,588%)				&		\ T%=FN.PRINT.BLOCK%(4%,590%) IF (DZ.UNIT%=0%) AND	&						(CHNL%=0%)		&	    \ NEXT CHNL%						&	\ NEXT DZ.UNIT%							&	\ TT.UNIT%=NUM.OF.DLS%-1%					&	\ FOR DZ.UNIT%=0% TO NUM.OF.DZS.IN.SE%-1%			&		\ SUBSTITUTE.TEXT$(96%)=FN.INT.TO      .OCT$(DZ.UNIT%)	&		\ SUBSTITUTE.TEXT$(93%)=TRM$(DZ.PRI$(DZ.UNIT%))		&		\ SUBSTITUTE.TEXT$(94%)=TRM$(DZ.VEC$(DZ.UNIT%))		&		\ SUBSTITUTE.TEXT$(95%)=TRM$(DZ.CSR$(DZ.UNIT%))		&		\ SUBSTITUTE.TEXT$(91%)=CHR$(65%+DZ.UNIT%)		&		\ SUBSTITUTE.TEXT$(40%)=FN.INT.TO.OCT$(			&					SE.DZ.TERM.NUM%(DZ.UNIT%)-1%)	&		\ T%=FN.PRINT.BLOCK%(4%,592%)				&		\ FOR CHNL%=0% TO SE.DZ.TERM.NUM%(DZ.UNIT%)-1%		&			\ TT.UNIT%=TT.UNIT%+1%				&			\ SUBSTITUTE.TEXT$(84%)=FN.INT.TO.OCT$(TT.UNIT%)&			\ T%=FN.PRINT.BLOCK%(4%,594%)			&				\       IF CHNL%=0% THEN			&			T%=FN.PRINT.BLOCK%(4%,596%) 			&			\ FOR T%=TT.UNIT% TO TT.UNIT%+			&					(SE.DZ.TERM.NUM%(DZ.UNIT%)-1%)	&				\ SUBSTITUTE.TEXT$(92%)=		&					FN.INT.TO.OCT$(T%)		&				\ TT%=FN.PRINT.BLOCK%(4%,598%)		&			\ NEXT T%					&2105		\ NEXT CHNL%						&	\ NEXT DZ.UNIT%							&	\ DLR.DCBN%=DLR.DCBN%+1%					&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(DLR.DCBN%)			&	\ SUBSTITUTE.TEXT$(7%)=FN.INT.TO.OCT$(DLR.DCBN%+1%)			&	!								&	!	DZ support.						&2200	\ GOTO 32000							& 10000	!$***************      ***********************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!******************************************      *********************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**********************************************************      ****&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F      f   P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDf         s	.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	A P P L I C A T I O N S    T E R M I N A L		&	!								&	!	S U P P O R T    G E N E R A T I O N			&	!								&	!								&	!								&	SUB	ATSGN2	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***********************************************      ****************&	!								&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  pers      on	&	!    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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!          plied by DIGITAL.						&	!								&	!***************************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL ATSGN2(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!************************************      ***************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S       C R I P T I O N		&	!								&	!	This sub-program generates the Applications Terminal	&	!	Support.						&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    3		Primary data file output		      &	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	      !		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!					      			&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension       declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!      								&	!	Set up standard default error trap			&1010	\ GOTO 1300 IF LINK.ONLY%<>0%					&	\ GOTO 1100 IF NO.FILES%<>0%					&	\ GOSUB 12000							&	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",920%,FALSE%)		&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	!								&	!	Do the setup for the ATS build.				&1100	\ BLOCK%=922%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ SUBSTITUTE.TEXT$(2%)=""					&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%)+SKIP.ASSEMBLIES% TO	&			(HELP.INDEX%(MODULE.INDX%)+			&				HELP.INDEX%(MODULE.INDX      %+1%)-1%)	&		\ SUBSTITUTE.TEXT$(1%)=ASK.HELP$(MODULE%)		&		\ SUBSTITUTE.TEXT$(2%)=""				&		\ SUBSTITUTE.TEXT$(2%)="NQP," IF ASK.HELP$(MODULE%)="NQTAB"&!		\ GOTO 1110 IF ASK.HELP$(MODULE%)="TTB" AND IBM.SUPPORT%=0%&!		\ GOTO 1110 IF ASK.HELP$(MODULE%)="D" AND IBM.SUPPORT%=0%&!		\ GOTO 1110 IF ASK.HELP$(MODULE%)="TUDX" AND IBM.SUPPORT%=0%&!		\ GOTO 1110 IF ASK.HELP$(MODULE%)="BSDX" AND IBM.SUPPORT%=0%&		\ SUBSTITUTE.TEXT$(2%)="BI.MFD," IF			&			(ASK.HELP$(MODULE%)="TTB") OR			&			(ASK.HELP$(MODULE%)="D") OR		      	&			(ASK.HELP$(MODULE%)="TUDX") OR			&			(ASK.HELP$(MODULE%)="BSDX")			&		\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",924%,FALSE%)	&		\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%		&1110	\ NEXT MODULE%							&	!								&	!	Do the ATS assemblies.					&1300	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",926%,FALSE%)		&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",925%,FALSE%)		&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ OPEN "[1,24]CEXTSTBLD.CMD" FOR OUTPUT AS FILE 3%		&	\       SUBSTITUTE.TEXT$(1%)="100000"					&	\ SUBSTITUTE.TEXT$(2%)="20000"					&	\ T%=FN.PRINT.BLOCK%(3%,940%)					&	\ CLOSE 3%							&	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",928%,FALSE%)		&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ CEX.SIZE%=FN.MAP.SIZE%("CEX")					&	\ CEX.SIZE%=CEX.SIZE%*2%					&	\ CEX.BASE%=NOT 32767%						&	\ CEX.BASE%=-24576%-CEX.SIZE% IF (PROCESSOR.TYPE%=70%) AND	&					(MEMORY.SIZE%>124%)		&	\ CEX.SIZE$=FN.INT.TO.OCT$(CEX.SIZE%)				&	\ CEX.BASE$=FN.INT.TO.OCT$(CEX.BASE%)				&	\ SUBSTI      TUTE.TEXT$(1%)=CEX.BASE$				&	\ SUBSTITUTE.TEXT$(2%)=CEX.SIZE$				&	\ OPEN "[1,24]CEXBLD.CMD" FOR OUTPUT AS FILE 3%			&	\ T%=FN.PRINT.BLOCK%(3%,940%)					&	\ CLOSE 3%							&	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",946%,FALSE%)		&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	!								&	!	Update ATS.OLB.						&	!	Build ATSDB.TSK.					&	!	Build CEX without specifying a partition.		&	!	Find out its size and build it in CEXPAR with		&	!		the proper BASE and SIZE.			&1310	\ OPEN "[1,24]NTLBLD.CMD" FOR OUTPUT A      S FILE 3%			&	\ SUBSTITUTE.TEXT$(T%)="" FOR T%=1% TO 2%			&	\ SUBSTITUTE.TEXT$(1%)="GBLDEF=$ASUMR:0" IF PROCESSOR.TYPE%<>70%&	\ SUBSTITUTE.TEXT$(2%)="GBLDEF=$DEUMR:0" IF PROCESSOR.TYPE%<>70%&	\ T%=FN.PRINT.BLOCK%(3%,942%)					&	\ CLOSE 3%							&	\ OPEN "[1,24]NTIBLD.CMD" FOR OUTPUT AS FILE 3%			&	\ T%=FN.PRINT.BLOCK%(3%,944%)					&	\ CLOSE 3%							&	!								&	!	Create the variable command files.			&1320	\ CALL RET							&	\ BLOCK%=934%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ FOR MODULE%=HELP.INDEX%(MODU      LE.INDX%)+SKIP.ASSEMBLIES% TO	&			(HELP.INDEX%(MODULE.INDX%)+			&				HELP.INDEX%(MODULE.INDX%+1%)-1%)	&		\ SUBSTITUTE.TEXT$(1%)=ASK.HELP$(MODULE%)		&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="V62ER" AND ATS.V62$<>"V62"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="V62" AND ATS.V62$<>"V62"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="L18" AND ATS.V52$<>"L18"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="DCP" AND ATS.V62$<>"V62"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="KSA" AND ATS.V52$<>"L18"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="KSA" AND ATS.K      DZ$<>"KDZ"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="SA"  AND ATS.V52$<>"L18"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="SA"  AND ATS.KDZ$<>"DZ"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="KDP" AND ATS.KDP$<>"KDP"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="KDZ" AND ATS.KDZ$<>"KDZ"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="KDZPMT" AND ATS.KDZ$<>"KDZ"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="KDZLMT" AND ATS.KDZ$<>"KDZ"&		\ GOTO 1330 IF ASK.HELP$(MODULE%)="DZ" AND ATS.KDZ$<>"DZ"&!		\ GOTO 1330 IF ASK.HELP$(MODULE%)="BSD" AND IBM.SUPPORT%=0%&!      		\ GOTO 1330 IF ASK.HELP$(MODULE%)="BU" AND IBM.SUPPORT%=0%&!		\ GOTO 1330 IF ASK.HELP$(MODULE%)="TUD" AND IBM.SUPPORT%=0%&!		\ GOTO 1330 IF ASK.HELP$(MODULE%)="TTB" AND IBM.SUPPORT%=0%&!		\ GOTO 1330 IF ASK.HELP$(MODULE%)="DCE" AND IBM.SUPPORT%=0%&		\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",932%,FALSE%)	&		\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%		&1330	\ NEXT MODULE%							&	!								&	!	Link all the necessary modules for this configuration.	&1500	\ GOTO 32000							&	10000	!$****************************      **********************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&12000	\ LINE.NUM%=-1%							&	\ OPEN "[1,54]AUX.DAT" FOR OUTPUT AS FILE 3%			&	\ FOR DUP.UNIT%=NUM.OF.DUPS.IN.COMM% TO NUM.OF.DUPS.IN.COMM%+	&					NUM.OF.KMC.DUPS%-1%		&		\ LINE.NUM%=LINE.NUM%+1%				&		\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(LINE.NUM%)	&		\ T%=FN.PRINT.B      LOCK%(3%,852%) IF DUP.MODEM$(DUP.UNIT%)="1"&	\ NEXT DUP.UNIT%						&	\ DZ.COUNT%=1%							&	\ DZ.COUNT%=NUM.OF.KMC.DZS% UNLESS NUM.OF.KMC.DZS%=0%		&	\ DZ.COUNT%=DZ.COUNT%+NUM.OF.DZS.IN.SE%				&	\ GOTO 12010 IF NUM.OF.DZS%=NUM.OF.DZS.IN.SE%			&	\ FOR DZ.UNIT%=NUM.OF.DZS.IN.SE% TO DZ.COUNT%-1%		&		\ FOR CHNL%=0% TO 7%					&			\ LINE.NUM%=LINE.NUM%+1%			&			\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(LINE.NUM%)&			\ T%=FN.PRINT.BLOCK%(3%,853%) IF		&				DZ.MODEM$(DZ.UNIT%,CHNL%)="1"		&		\ NEXT CHNL%						&	\ NEXT DZ.      UNIT%							&	!								&	!	Set up the AUX.DAT file for every line needing modem	&	!		control.					&12010	\ T%=FN.PRINT.BLOCK%(3%,854%)					&	\ CLOSE 3%							&	\ RETURN							&	!								&	!	Finish off the AUX.DAT file and RETURN.			&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&      19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!					      			&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			   P  &	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND P         šE.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L    G E N E R A T I O N    M O D U L E	&	!								&	!								&	!								&	SUB	KERGN7	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O       P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**********      *****************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KERGN4(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**************      ************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	This sub-program creates the KERMC.MAC and SYSTB.MAC	&	!	files and all the nece      ssary commands needed to build	&	!	the KERNEL.  It then executes the necessary commands	&	!	thus building the KERNEL.				&	!								&	!	This is a dummy routine at this point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------        &	!	    3		KERMC.MAC file output			&	!	    4		SYSTB.MAC file output			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************      ************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-      ----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	      !								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***********************************      ****************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&3020	\ BLOCK%=700%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%) TO			&			(HELP.INDEX%(MODULE.INDX%)+			&				HELP.INDEX%(MODULE.INDX%+1%)-1%)	&		\ SUBSTITUTE.TEXT$(1%)=ASK.HELP$(MODULE%)		&		\ GOTO 3030 IF (ASK.HELP$(MODULE%)="DB") AND		&				(NUM.OF.DB.DRIVES%=0%)			&		\ GOTO 3030 IF (ASK.HELP$(MODULE%)="LP") AND		&				(NUM.OF.LPS%=0%)			&		\ GOTO 3030 IF       (ASK.HELP$(MODULE%)="DM") AND		&				(NUM.OF.DM.DRIVES%=0%)			&		\ GOTO 3030 IF (ASK.HELP$(MODULE%)="DR") AND		&				(NUM.OF.DR.DRIVES%=0%)			&		\ GOTO 3030 IF (ASK.HELP$(MODULE%)="MM") AND		&				(NUM.OF.MM.DRIVES%=0%)			&		\ GOTO 3030 IF (ASK.HELP$(MODULE%)="MT") AND		&				(NUM.OF.TS03.DRIVES%=0%)		&		\ GOTO 3030 IF (ASK.HELP$(MODULE%)="XM") AND		&				(COM.SUPPORT%=0%)			&		\ GOTO 3030 IF (ASK.HELP$(MODULE%)="NT") AND		&				(COM.SUPPORT%=0%)			&		\ GOTO 3030 IF (ASK.HELP$(MODULE%)="XK") AND		&				((IBM.SUPP      ORT%=0%) AND (T2780.SUPPORT%=0%))&		\ OPEN "[1,24]"+ASK.HELP$(MODULE%)+"DRVBLD.CMD" FOR	&			OUTPUT AS FILE 3%				&		\ T%=FN.PRINT.BLOCK%(3%,690%)				&		\ CLOSE 3%						&		\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",695%,FALSE%)	&		\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%		&3030	\ NEXT MODULE%							&	!								&	!	Build all the loadable drivers.				&3040	\ OPEN "[25,10]SCOMPF.MAC" FOR OUTPUT AS FILE 3%		&	\ SUBSTITUTE.TEXT$(1%)=TRM$(HERALD.TEXT$)			&	\ SUBSTITUTE.TEXT$(2%)=TRM$(RIGHT(VER.EDIT.NUM$,		&				INSTR      (1%,VER.EDIT.NUM$,"V")))		&	\ SUBSTITUTE.TEXT$(3%)="MM"					&	\ SUBSTITUTE.TEXT$(4%)="0"					&	\ SUBSTITUTE.TEXT$(5%)=SUBSTITUTE.TEXT$(4%)			&	\ SUBSTITUTE.TEXT$(5%)="1" IF NUM.OF.MM.DRIVES%>1%		&	\ T%=FN.PRINT.BLOCK%(3%,910%)					&	\ T%=FN.PRINT.BLOCK%(3%,911%)					&	\ CLOSE 3%							&	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",912%,FALSE%)		&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	!								&	!	Create the SYSCOM data, assemble and link it.		&5000	\ GOTO 32000							& 10000	!$*************************      *************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!****************************************************      ***********&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!			      					&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E   ´   S S I N G			&	!								&	!								&	!***************************************************************&	\ T%=FN.VT.DONE% IF VT.NUM%<>0%					&	!								&	!	Get rid of the virtual terminal.			&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND´         šE.“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L    G E N E R A T I O N    M O D U L E	&	!								&	!								&	!								&	SUB	KERGN6	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O       P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**********      *****************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KERGN4(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**************      ************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	This sub-program creates the KERMC.MAC and SYSTB.MAC	&	!	files and all the nece      ssary commands needed to build	&	!	the KERNEL.  It then executes the necessary commands	&	!	thus building the KERNEL.				&	!								&	!	This is a dummy routine at this point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------        &	!	    3		KERMC.MAC file output			&	!	    4		SYSTB.MAC file output			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************      ************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-      ----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	      !								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***********************************      ****************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&3000	\ GOTO 3011 IF LINK.ONLY%<>0%					&	\ GOTO 5000 IF DRIVERS.ONLY%<>0%				&	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",702%,FALSE%) UNLESS	&				SKIP.ASSEMBLIES%<>0%			&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&	\ BLOCK%=660%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%)+SKIP.ASSEMBLIES% TO	&			(HELP.INDEX%(MODULE.INDX%)+			&				HELP.INDEX%(MODULE.IND      X%+1%)-1%)	&		\ SUBSTITUTE.TEXT$(1%)=ASK.HELP$(MODULE%)		&		\ GOTO 3005 IF (SUBSTITUTE.TEXT$(1%)="XMLOA") AND	&				(COM.SUPPORT%=0%)			&		\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",665%,FALSE%)	&		\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%		&3005	\ NEXT MODULE%							&	!								&	!	Set up for the KERNEL assemblies.			&	!		DO THE ASSEMBLIES.				&3010	\ SPAWN.STATUS%=FN.EXEC.BLOCK%("MCR...",685%,FALSE%)		&	\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%			&3011	\ OPEN "[1,24]KERBLD.CMD" FOR OUTPUT AS FILE 3%			&	\ OP      EN "[1,24]ALIGN.CMD" FOR OUTPUT AS FILE 4%			&	\ T%=FN.PRINT.BLOCK%(3%,670%)					&	\ T%=FN.PRINT.BLOCK%(4%,670%)					&	\ T%=FN.PRINT.BLOCK%(3%,671%)					&	\ T%=FN.PRINT.BLOCK%(4%,671%)					&	\ T%=FN.PRINT.BLOCK%(3%,675%) IF INSERT.XDT%<>0%		&	\ T%=FN.PRINT.BLOCK%(4%,675%) IF INSERT.XDT%<>0%		&	\ T%=FN.PRINT.BLOCK%(3%,677%) IF COM.SUPPORT%<>0%		&	\ T%=FN.PRINT.BLOCK%(4%,677%) IF COM.SUPPORT%<>0%		&	\ T%=FN.PRINT.BLOCK%(3%,684%) IF PROCESSOR.TYPE%=34%		&	\ T%=FN.PRINT.BLOCK%(4%,684%) IF PROCESSOR.TYPE%=34%		&      	\ T%=FN.PRINT.BLOCK%(3%,680%)					&	\ T%=FN.PRINT.BLOCK%(4%,678%)					&	\ T%=FN.PRINT.BLOCK%(4%,680%)					&	\ CLOSE 3%							&	\ CLOSE 4%							&	\ OPEN "[1,24]DIRRECBLD.CMD" FOR OUTPUT AS FILE 3%		&	\ T%=FN.PRINT.BLOCK%(3%,681%)					&	\ T%=FN.PRINT.BLOCK%(3%,684%) IF PROCESSOR.TYPE%<>34%		&	\ T%=FN.PRINT.BLOCK%(3%,683%)					&	\ CLOSE 3%							&	\ OPEN "[1,24]DIRREC.CMD" FOR OUTPUT AS FILE 3%			&	\ T%=FN.PRINT.BLOCK%(3%,681%)					&	\ T%=FN.PRINT.BLOCK%(3%,684%) IF PROCESSOR.TYPE%<>34%		&	\ T%=FN.PRINT.BLOC      K%(3%,682%)					&	\ T%=FN.PRINT.BLOCK%(3%,683%)					&	\ CLOSE 3%						&	!								&	!	Set up the Task Builder Command Files and build the	&	!			KERNEL.					&3012	\ BLOCK%=688%							&	\ MODULE.INDX%=BLOCK%*2%					&	\ VT.NUM%=FN.VT.CREATE%						&	\ SUBSTITUTE.TEXT$(1%)=FN.INT.TO.OCT$(VT.NUM%)			&	\ T%=FN.EXEC.BLOCK%("MCR...",913%,0%)				&	\ SPAWN.STATUS%=1%						&	\ FOR MODULE%=HELP.INDEX%(MODULE.INDX%) TO			&		(HELP.INDEX%(MODULE.INDX%)+HELP.INDEX%(MODULE.INDX%+1%)-1%)&		\ TASK$="MCR..."					&		\ VT.CMD$=ASK      .HELP$(MODULE%)				&		\ T%=FN.TASK.INIT%(TASK$)				&		\ PRINT "Spawning: ";TASK$;" (on VT) with: ";VT.CMD$ IF	&			BREED.DEBUG%<>0%				&3014		\ ON FN.VT.COMM%("!@#$%^&*()","*FATAL*")		&			GOTO	3019,	!TASK TERMINATED		&				3014,	!SHOULDN'T HAPPEN		&				3017,	!INPUT REQUESTED, SEND EOF	&				3016,	!GET THE OUTPUT			&				3018	!ERROR MESSAGE			&3016		\ ERR.LINE$=VT.RESPONSE$				&		\ PRINT ERR.LINE$ IF BREED.DEBUG%<>0%			&		\ GOTO 3014						&	!								&	!	PRINT OUTPUT IF DEBUG FLAG IS SET			&3017		\ T%=FN.VT.EOF%	      					&		\ GOTO 3014						&	!								&	!	SEND EOF AND WAIT FOR EXIT.				&3018		\ ERR.LINE$=VT.RESPONSE$				&		\ T%=INSTR(1%,ERR.LINE$,"*FATAL*")			&		\ PRINT							&		\ ERR.LINE$=EDIT$(RIGHT(ERR.LINE$,T%),132%)+" on command "+&			TRM$(VT.CMD$)					&		\ PRINT ERR.LINE$					&		\ SPAWN.STATUS%=2%					&		\ GOTO 3014						&	!								&	!	PRINT ERROR MESSAGE AND GO BACK FOR THE EXIT.		&3019		\ GOTO 32000 IF (SPAWN.STATUS% AND 7%)<>1%		&		\ GOSUB 11000	! CHECK FOR ALIGNMENT			&	\ NEXT MODULE%							&	!								&	!	Ex      ecute the KERNEL build.				&5000	\ GOTO 32000							& 10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&11000	\ ON ERROR GOTO 11040						&	\ GOTO 11050 IF INSTR(1%,VT.CMD$,"KERBLD")=0%			&	\ OPEN "[1,34]KERNEL.MAP" FOR INPUT AS FILE 3%			&	\ UNTIL 1%=2%							&		\ LINPUT #3%, MAP.L      INE$					&		\ MAP.LINE$=EDIT$(MAP.LINE$,-1%)			&		\ T%=INSTR(1%,MAP.LINE$,"$SYBEG")			&		\ GOTO 11010 IF T%=0%					&		\ T%=INSTR(T%,MAP.LINE$,"-")				&		\ T$=MID(MAP.LINE$,T%-1%,1%)				&		\ GOTO 11050 IF (T$="2") OR (T$="6")			&		\ MODULE%=MODULE%+1%					&		\ GOTO 11050						&	!								&	!	CHECK FOR SYMBOL $SYBEG AND SKIP THE ALIGNMENT BUILD	&	!	IF ITS ALREADY ALIGNED.					&11010	\ NEXT								&11040	\ RESUME 11050							&11050	\ ON ERROR GOTO 19000						&	\ CLOSE 3%							&	\ RETURN							&15000	!$*******      *******************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT		      						&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S           L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ T%=FN.VT.DONE% IF VT.NUM%<>0%					&	!								&	!	Get rid of the virtual terminal.			&32767	!$**************************************************************&   ®   	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND®          8}“Á› 8$d      1	!***************************************************************&	!								&	!								&	!	C H A N G E    T A P E    B U I L D E R			&	!								&	!								&	!								&	!	Program:	CHGTAPBLD				&	!	Version:	BL9					 BL9-00&	!	Edit level:	00					 BL9-00&	!	Edit date:	14-Mar-79				 BL9-00&	!	Author(s):	WJB					&	!			KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R       I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$*****************************************      *********************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	V01-00  15-Aug-78 KMR   Initial Release			&	!	V01-01	05-Sep-78 KMR	Removed delete of copy control	&	!				  file.				&	!	BL9-00	14-Mar-79 KMR	Added audit trail code and call	 BL9-00&	!				  to MNTCTL.			 BL9-00&	!								&	!****************************************************      ***********&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    2		Copy List data       file input		&	!	    3		COPYCNTRL File output			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	BASE.LEVEL.NUMBER$	Holds Base Level # of the	&	!				  magnetic tape			&	!	COPY.COMMAND$		holds basic COPY command	&	!				  template te      xt string		&	!	COPY.LIST.FILE$		holds files specification for	&	!				  Copy List input data file	&	!	CPYCTL.COMPONENT.KEY$	Index key of component in	&	!				  COMPONENT File		&	!	CPYCTL.COMPONENT.NAME$	File name and type of component	&	!	CPYCTL.HOLD.UFD$	Holding UFD for this magnetic	&	!				  tape				&	!	CPYCTL.LEVEL$		Base Level # of component	&	!	CPYCTL.SEQUENCE.KEY$	COPYCNTRL File sequence key for	&	!				  this component		&	!	CPYCTL.TAPE.NUM$	Holds tape number where file	&	!				  will be written		&	!	CPYC      TL.TARGET.UFD$	UFD where component will be	&	!				  renamed after reading from the&	!				  tape				&	!	CPYLST.COMP.KEY$	Index key of component in the	&	!				  COMPONENT File		&	!	CPYLST.DEST.UFD$	UFD where component is to be	&	!				  renamed after copying from	&	!				  tape				&	!	CPYLST.FILE.NAME$	File name and type of component	&	!	CPYLST.LEVEL.CODE$	Two (2) digit hiearchy number	&	!				  for this component		&	!	CPYLST.SOURCE.UFD$	UFD where component will be	&	!				  found before copying		&	!	DRIVE.ALLOCA      TED%	TRUE% if tape drive has been	&	!				  allocated.			&	!	KEY.PREFIX$		Constant prefix text for	&	!				  COPYCNTRL File entry sequence	&	!				  key				&	!	PROC.MODEL$		Holds processor model code	&	!	T$			General working string		&	!	T%			General working variable	&	!	TAPE.INITIALIZED%	TRUE% if tape has been inited.	&	!	TAPE.MOUNTED%		TRUE% if tape has been mounted.	&	!	TAPE.NUMBER%		holds release kit number of the	&	!				  magnetic tape			&	!	TAPE.SEQUENCE.NUMBER%	Tape copy sequence counter	&	!	TE%			Genera      l function calling	&	!				  variable			&	!	UNIT.ID$		holds unit name and number of	&	!				  tape drive where tape is	&	!				  mounted			&	!	VER.EDIT.NUM$		Base Level # of this program	&	!	VOLUME.LABEL$		holds volume ID of magnetic tape&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	--      ---------	--------------------------------------  &	!								&	!	20000		SPAWN a task, with error handling.	&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E       N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIM VOLUME.LABEL$(15)						&	!								&	!	Holds labels for tape volumes.				&902	\ DIM UFDS.WRITTEN$(199)					&	!								&	!	Holds list of UFDs written to t      he tape.			&903	\ DIM FILE.NAME$(12)						&	!								&	!	File names by channel					&950	!$**************************************************************&	!								&	!								&	!	M A P      D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!**********************************************      *****************&	!								&	\ ON ERROR GO TO 19000						&	!								 BL9-00&	!	Set the standard error trap.				 BL9-00&	!								 BL9-00&	\ TE% = FN.SETUP.DIALOGUE%( "MNTTXTHLP" )			!BL9-00&	!								 BL9-00&	!	Setup the dialogue files and functions.			 BL9-00&	!								 BL9-00&	\ PROGRAM.NAME$ = "CHGTAPBLD"					!BL9-00&	\ PROGRAM.NUMBER$ = ""						!BL9-00&	\ CALL MNTCTL( PROGRAM.NAME$, SUCCESS% )			!BL9-00&	\ GO TO 32000	IF NOT SUCCESS%					!BL9-00&	!								 BL9-00&	!	Set up your program name.				 BL9-00      &	!	Set up a blank program number so we will get our	 BL9-00&	!	  utilities installed.					 BL9-00&	!	Call the MNTCTL routine to see if we can run on this	 BL9-00&	!	  pack, and, if so, install our utilities.		 BL9-00&	!	Go exit if we were not successfull.			 BL9-00&	!								 BL9-00&	\ FIND.SEQUENTIAL%	= 0%					&	\ FIND.KEY.EQ%		= 1%					&	\ FIND.KEY.GT%		= 2%					&	\ FIND.KEY.GE%		= 3%					&	\  GET.SEQUENTIAL%	= 4%					&	\  GET.KEY.EQ%		= 5%					&	\  GET.KEY.GT%		= 6%					&	\  GET.KEY.GE%		= 7%					&	\ FI      ND.RELATIVE%	= 8%					&	\  GET.RELATIVE%	= 9%					&	\ FILE.NAME$(2%)	= "COMPONENT File"			&	!								 BL9-00&	!	Setup the file handling values we need.			 BL9-00&	!								 BL9-00&&	\ GO SUB 14700							&	\ GO TO 1030	IF INDIRECTED% = TRUE%				&	!								&	!	Check for indirect execution.				&	!	If so, skip herald printouts.				&1010	\ VER.EDIT.NUM$ = "BL9-00"					!BL9-00&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "CHGTAPBLD	"; VER.EDIT.NUM$; "   ";		&	\ PRINT					      			&	\ PRINT "Build a Change Tape"					&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ GO SUB 14900							&	!								&	!	Open any files we need open.				 BL9-00&1050	\ NUM.OF.VOLUMES% = 0%						&	\ NUM.OF.UFDS% = 0%						&	\ NUM.OF.ERRORS% = 0%						&	\ SEQUENCE.NUMBER$ = "0"					&	\ GO TO 5000	IF INDIRECTED% = TRUE%				&	!								&	!	Clear the tape volumes counter.				&	!	Clear the UFDs written counter.				&	!	Clear the errors made counter.				&	!	Clear the sequence number generat      or.			&	!	Skip to processing if indirected.			&2000	!$**************************************************************&	!								&	!								&	!	S E T    T A P E    N U M B E R				&	!								&	!								&	\ TAPE.NUMBER$ = "04"						&	\ TAPE.NUMBER% = 4%						&	!								&	!	Set the tape number to 4.				&5000	!$**************************************************************&	!								&	!								&	!	P R E P A R E    T A P E    F O R    W R I T I N G	&	!								&	!								&5010	\ PRINT								&	\ TE% = FN.PRINT.HELP      .TEXT%(TAPE.NUMBER%,1%)			&	!								&	!	Signal mounting of required tape.			&5020	\ ASK.RANGE(0) = 4						&	\ ON FN.ASK%(17%,		! QUERY #		!	&		     "",		! No default		!	&		     "",		! Any type of character !	&		     TRUE%,		! Length checking	!	&		     1%		       )! Level = 1		!	&	  GO TO								&		 5020,			! ESC response		!	&		 32000,			! CTRL/Z response	!	&		 5030			! Valid response	!	&	!								&	!	Get the tape drive unit name and number			&5030	\ UNIT.ID$,							&	  SUBSTITUTE.TEXT$(1%) = ASK.CVT$				&	      \ VOLUME.LABEL$,						&	  SUBSTITUTE.TEXT$(2%) = FN.TEXT.LINE$(700%+TAPE.NUMBER%)	!BL9-00&	!								&	!	Get the tape drive identifier.				&	!	Put up the correct volume name.				&	!								 BL9-00&	\ TE%	= FN.OPEN.AUDIT.TRAIL%					!BL9-00&		+ FN.SETUP.AUDIT.RECORD%( PROGRAM.NAME$ )		!BL9-00&		+ FN.AUDIT.OPERATION%( "START" )			!BL9-00&	\ AUDIT.CHGBLD.LEVEL$ = FN.AUDIT.FIELD$				!BL9-00&		( BASE.LEVEL.NUMBER$, AUDIT.CHGBLD.LEVEL$ )		!BL9-00&	\ AUDIT.CHGBLD.TAPE.DRIVE$ = FN.AUDIT.FIELD$			!BL9-00&		( UNIT.ID$,       AUDIT.CHGBLD.TAPE.DRIVE$ )			!BL9-00&	\ TE%	= FN.WRITE.AUDIT.RECORD%				!BL9-00&		+ FN.CLOSE.AUDIT.TRAIL%					!BL9-00&	!								 BL9-00&	!	Write out the initial audit trail record.		 BL9-00&5050	\ IF ASCII(VOLUME.LABEL$) = ASCII("(")				&	  THEN								&		  VOLUME.LABEL.LIST$ = 					&			MID(VOLUME.LABEL$,2%,(LEN(VOLUME.LABEL$)-2%))	&	  ELSE								&		  VOLUME.LABEL.LIST$ = VOLUME.LABEL$			&	!								&	!	Get the proper text string for obtaining the volume	&	!	  label(s).						&5060	\ WHILE LEN(VOLUME.LABEL.      LIST$) <> 0%				&		\ T% = INSTR(1%,VOLUME.LABEL.LIST$,",")			&		\ T% = LEN(VOLUME.LABEL.LIST$)+1%	UNLESS T% <> 0%	&		\ VOLUME.LABEL$(NUM.OF.VOLUMES%) =			&			LEFT(VOLUME.LABEL.LIST$,(T%-1%))		&		\ NUM.OF.VOLUMES% = NUM.OF.VOLUMES% + 1%		&		\ VOLUME.LABEL.LIST$ = RIGHT(VOLUME.LABEL.LIST$,(T%+1%))&	\ NEXT								&	!								&	!	While there is at least one more volume label:		&	!		Find the next "," delimiter.			&	!		If none, fake at end of text string.		&	!		Peel off the next volume label.			&	!		Count number i      n list.				&	!		Remove text from string.			&	!	End of scanning loop.					&5070	\ GO SUB 10000		! Initialize tape(s)	!		&	\ GO TO 5010	IF INIT.ERROR% = TRUE%				&	!								&	!	Get the tapes ready here.				&	!	Go back to query if error occurs.			&5100	!$**************************************************************&	!								&	!								&	!	P R E P A R E    T A P E    F O R    U S E		&	!								&	!								&5130	\ GO TO 5140	IF TAPE.MOUNTED% = TRUE%			&	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(19%))		&	\ G      O SUB 20000			! The MOUNT directive	!	&	\ TAPE.MOUNTED% = TRUE%	IF BREED.ERROR% = 1%			&	\ GO TO 5140	IF BREED.ERROR% = 1%				&	\ PRINT "? Tape can not be mounted."				&	\ GO TO 5010							&	!								&	!	Perform the MOUNT operation.				&	!	Skip if no error.					&	!	If error, signal with message and try for another	&	!	  mount.						&5140	\ SUBSTITUTE.TEXT$( 2% ) = "[7,4]"				&	\ SUBSTITUTE.TEXT$( 3% ) = "COPYCNTRL.FIL"			&	\ BREED.TASK$ = "MCR..."					&	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(39%))		&      	\ GO SUB 20000			! Write the COPYCNTRL File  !	&	!								&	!	First file to go on tape is the COPYCNTRL File.		&	!	Switch to spawning BCK.					&	!	Do the copy operation.					&5200	!$**************************************************************&	!								&	!								&	!	S E T U P    COPYCNTRL    F I L E			&	!								&	!								&	\ OPEN "[7,4]COPYCNTRL.FIL" FOR INPUT AS FILE 3%		&		,ORGANIZATION	SEQUENTIAL				&				FIXED					&		,ACCESS		READ					&		,ALLOW		READ					&		,MAP		CPYCTL					&	\ COPY.COMMAND$ = FN.T      EXT.LINE$(39%)				&	!								&	!	Open the file for reading to control the copy loop.	&	!	Set the proper copy template command.			&6000	!$**************************************************************&	!								&	!								&	!	T A P E    C O P Y    C O N T R O L    L O O P		&	!								&	!								&6010	\ GET #3%							&	!								&	!	Get the next entry in the Copy List File.		&6020	\ GET #2%, KEY#0 EQ CPYCTL.COMPONENT.KEY$			&	!								&	!	Get the associated component description record		&6030	\ SUBSTITUTE.TEXT      $(2%) = EDIT$(					&				 "["					&				+CMPONT.DEST.GROUP$			&				+","					&				+CMPONT.DEST.MEMBER$			&				+"]"			,2%)		&	\ SUBSTITUTE.TEXT$(3%) = TRM$(CPYCTL.COMPONENT.NAME$)		&	\ SUBSTITUTE.TEXT$(9%) = BREED.TASK$				&	\ PRINT FN.SUB.TEXT$("Copying file: \\02\\03")			&	\ BREED.COMMAND$ = FN.SUB.TEXT$(COPY.COMMAND$)			&	\ GO SUB 20000			! Copy file to tape	!	&	\ PRINT	IF BREED.ERROR% <> 1%					&	\ NUM.OF.ERRORS% = NUM.OF.ERRORS% + 1%	IF BREED.ERROR% <> 1%	&	\ GO TO 6010							&	!								&	!	Get the source       UFD.					&	!	Get the target file name.				&	!	Signal copy operation.					&	!	Perform the copy from disk to tape.			&	!	Print extra CR-LF if an error msg occurred.		&	!	Go back for more.					&7000	!$**************************************************************&	!								&	!								&	!	C O P Y    C H N G C N T R L    F I L E    T O		&	!								&	!			T A P E					&	!***************************************************************&	!								&	\ SUBSTITUTE.TEXT$( 2% ) = "[1,1]"				&	\ SUBSTITUTE.TEXT$( 3% ) = "CH      NGCNTRL.FIL"			&	\ BREED.TASK$ = "MCR..."					&	\ BREED.COMMAND$ = FN.SUB.TEXT$( FN.TEXT.LINE$( 39% ) )		&	\ GOSUB 20000							&	!								&	!	Put the change control file out to the tape.		&8000	!$**************************************************************&	!								&	!								&	!	D I S M O U N T    T H E    T A P E			&	!								&	!								&8010	\ CLOSE 2%							&	\ SUBSTITUTE.TEXT$(1%) = UNIT.ID$				&	\ SUBSTITUTE.TEXT$(2%) = VOLUME.LABEL$				&	\ BREED.TASK$ = "MCR..."					&	!								&	!	Close the Copy L      ist File.				&	!	Set name of tape to be dismounted.			&	!	Also, the volume label of the tape.			&	!	Return to spawning MCR.					&8015	\ GO TO 8020	IF NUM.OF.VOLUMES% = 1%				&	\ ASK.RANGE(0%) = 6						&	\ ON FN.ASK%(43%,		! Query text		!	&		     "",		! No default		!	&		     "",		! Any input		!	&		     TRUE%,		! Limit to 6 characters !	&		     1%		       )! Level = 1		!	&	  GO TO								&		 8015,			! ESC response		!	&		32000,			! CTRL/Z response	!	&		 8016			! Valid response	!	&	!								&	!	Get the volume l      abel for the last tape mounted.		&8016	\ SUBSTITUTE.TEXT$(2%) = ASK.CVT$				&	!								&	!	Set up the response for dismounting.			&8020	\ GO TO 8030	IF TAPE.MOUNTED% = FALSE%			&	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(20%))		&	\ GO SUB 20000			! The DISMOUNT directive !	&	\ GO TO 8015	IF BREED.ERROR% <> 1%				&	!								&	!	Set the correct command text.				&	!	Perform the DISMOUNT.					&	!	Go back for response if an error.			&8030	\ GO TO 8040	IF DRIVE.ALLOCATED% = FALSE%			&	\ BREED.COMMAND$ = FN.SU      B.TEXT$(FN.TEXT.LINE$(41%))		&	\ GO SUB 20000			! The DEALLOCATE directive !	&	!								&	!	Deallocate the tape drive.				&8040	\ PRINT								!V1.1&	\ SUBSTITUTE.TEXT$( 2% ) = VOLUME.LABEL$			&	\ SUBSTITUTE.TEXT$(4%) = NUM1$(TAPE.NUMBER%)			&	\ PRINT FN.SUB.TEXT$(						&		"Release kit tape: \\02(\\04) is complete.")		&	\ PRINT "***** ";						&		NUM1$(NUM.OF.ERRORS%);					&		" errors occurred"					&			IF NUM.OF.ERRORS% <> 0%				&	\ SUCCESS$ = "PASS"						!BL9-00&	\ SUCCESS$ = "ERRS"	IF NUM.OF.ERRORS% <> 0%	      		!BL9-00&	\ TE%	= FN.OPEN.AUDIT.TRAIL%					!BL9-00&		+ FN.SETUP.AUDIT.RECORD%( PROGRAM.NAME$ )		!BL9-00&		+ FN.AUDIT.OPERATION%( "FINISH" )			!BL9-00&	\ AUDIT.CHGBLD.LEVEL$ = FN.AUDIT.FIELD$				!BL9-00&		( BASE.LEVEL.NUMBER$, AUDIT.CHGBLD.LEVEL$ )		!BL9-00&	\ AUDIT.CHGBLD.TAPE.DRIVE$ = FN.AUDIT.FIELD$			!BL9-00&		( UNIT.ID$, AUDIT.CHGBLD.TAPE.DRIVE$ )			!BL9-00&	\ AUDIT.CHGBLD.SUCCESS$ = FN.AUDIT.FIELD$			!BL9-00&		( SUCCESS$, AUDIT.CHGBLD.SUCCESS$ )			!BL9-00&	\ TE%	= FN.WRITE.AUDIT.RECORD%				!BL9-00&		+       FN.CLOSE.AUDIT.TRAIL%					!BL9-00&	\ GO TO 32000							&	!								&	!	Signal end of processing.				&	!	Write out final audit trail.				 BL9-00&10000	!$**************************************************************&	!								&	!								&	!	I N I T I A L I Z E    T A P E ( S )			&	!								&	!								&10010	\ INIT.ERROR% = FALSE%						&	\ BREED.RETURN% = TRUE%						&	\ BREED.TASK$ = "MCR..."					&	\ SUBSTITUTE.TEXT$(1%) = UNIT.ID$				&	!								&	!	Clear error flag.					&	!	Set up to catch BREED errors ourse      lves.			&	!	Commands will go to the MCR.				&	!	Set the tape drive unit name and number.		&10020	\ GO TO 10030	IF DRIVE.ALLOCATED% = TRUE%			&	\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(21%))		&					! The ALLOCATE directive !	&	\ GO SUB 20000			! Issue the command	!	&	\ IF BREED.ERROR% <> 1%						&	  THEN								&		  INIT.ERROR% = TRUE%					&		\ PRINT "? Drive can not be allocated"			&		\ GO TO 10090						&	  ELSE								&		  DRIVE.ALLOCATED% = TRUE%				&	!								&	!	Skip allocation if already done.			&      	!	Get the ALLOCATE command, inserting unit ID		&	!	Perform the command.					&	!	If an error occurs,					&	!		then set error flag, signal with msg, exit.	&	!		else, set allocated flag.			&10030	\ FOR T% = (NUM.OF.VOLUMES%-1%) TO 0% STEP -1%			&		\ SUBSTITUTE.TEXT$(3%) = VOLUME.LABEL$(T%)		&	!								&	!	For all of the volumes in the list.			&	!		Set volume label for processing.		&10040		\ ON FN.ASK%(42%,		! Query text	!	&			     "YES",		! Default is YES !	&			     "Y",		! YES/NO	!	&			     FALSE%,		! No che      cking	!	&			     1%		       )! Level is 1	!	&		  GO TO							&			10040,		! ESC response	!		&			32000,		! CTRL/Z resp.	!		&			10050,		! YES		!		&			10050		! NO also	!		&		!							&		!	Prompt user to hang tape, wait for his response.&10050		\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(18%))	&		\ GO SUB 20000		! The INITIALIZE directive !	&		\ IF BREED.ERROR% <> 1%					&		  THEN							&			  INIT.ERROR% = TRUE%				&			\ PRINT "? Tape can not be initialized"		&			\ GO TO 10090					&		!							&		!	Perform the in      itialize command.			&		!	If an error ,set the error flag, print error	&		!	  message and exit.				&10060		\ GO TO 10070	IF T% = 0%				&		\ BREED.COMMAND$ = FN.SUB.TEXT$(FN.TEXT.LINE$(20%))	&		\ GO SUB 20000		! The DISMOUNT directive !	&		!							&		!	For all but the last tape, dismount from drive.	&10070	\ NEXT T%							&	!								&	!	End of processing loop.					&10090	\ RETURN							&14700	!$**************************************************************&	!								&	!								&	!	G E T    P O S S I B L E          M C R    C O M M A N D	&	!								&	!								&	!	RETURNS:	For a single program, PROG.NAME$ 	&	!			  contains the file name.  		&	!			  ONLY.ONE.PROGRAM% is then set TRUE.	&	!			If @ appears, USE.INDIRECT% is set TRUE	&	!			  and the indirect input command file	&	!			  name is placed in CMD.FILE$.		&	!								&	!								&	!***************************************************************&14710	\ COMMAND.BUFR$ = SPACE$(80%)					&	\ INDIRECTED% = FALSE%						&	!								&	!	Reserve space for up to 80 characters.	      		&14720	\ CALL GETMCR BY REF (COMMAND.BUFR$, RETURN.RESULT%)		&	\ RETURN	IF RETURN.RESULT% < 1%				&	\ INDIRECTED% = TRUE%						&	!								&	!	Set if command line is there.				&	!	If not, skip out of processing.				&14730	\ COMMAND.LINE$ =						&		EDIT$(MID(COMMAND.BUFR$,5%,(RETURN.RESULT%-4%)),-1%)	&	!								&	!	Reduce input text to manageable form.			&	!								&	\ TAPE.NUMBER$ = COMMAND.LINE$					&	\ TAPE.NUMBER% = VAL(TAPE.NUMBER$)				&	\ IF TAPE.NUMBER% <  3%						&	  OR TAPE.NUMBER% > 12%						&	  O      R TAPE.NUMBER% =  9%						&	  OR TAPE.NUMBER% = 11%						&	  THEN								&		  PRINT "? Illegal tape number"				&		\ GO TO 32000						&	  ELSE								&		  TAPE.NUMBER$ = RIGHT(NUM1$(100%+TAPE.NUMBER%),2%)	&	!								&	!								&	!	Remainder is tape number.				&	!	Range check, and if error, abort with message.		&	!	Otherwise, put into proper format.			&	!								&	\ RETURN							&15000	!$**************************************************************&	!								&	!								&	!	G E T    C O M M A N D    S W I T C       H 			&	!								&	!								&	!	USAGE FORMAT:	FN.SWITCH.PRESENT% ( SW$ )		&	!								&	!	INPUT:	SW$	- text of switch to search for		&	!								&	!	RETURN:		- TRUE if switch found, FALSE otherwise	&	!		SW.ARG$	- contains text of argument if any.	&	!		SW.DIR% - TRUE if switch value if positive,	&	!			  FALSE otherwise			&	!								&	!								&	!	This function is simply used to interface the TROA	&	!	routine, which does the work on processing the switch.	&	!								&	!								&	!*******************************      ********************************&15001	DEF FN.SWITCH.PRESENT%(SW$)					&15010		\ CALL TROA(	COMMAND.LINE$,				&				SW$,					&				SW.ARG$,				&				SW.DIR%,				&				SW.PRESENT%	)			&		\ FN.SWITCH.PRESENT% = SW.PRESENT%			&		!							&		!	Perform the processing.				&		!	Pass back the result.				&15049	\ FNEND								&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************      ************************************&19030	\ RESUME 7000	IF  ERR = 11%					&			AND ERL = 6010%					&	!								&	!	Catch end-of-file on the Copy List File during actual	&	!	  tape writing.						&19900	\ PRINT								&	\ GOSUB 30000							!BL9-00&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&30000	!$**************************************************************&	!								&	!								&	!	F I N I S H    U P    A N D    L O G    O       F F		&	!								&	!								&	!***************************************************************&	!								&	\ GOSUB 14950							&	\ CALL MNTCTL( PROGRAM.NAME$, SUCCESS% )			&		IF PROGRAM.NUMBER$ <> ""				&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ RETURN							&	!								&	!	Close any Base Level data base files.			&	!	Logoff and finish with any utilities you are using.	&	!	Close any other files that may be open, including the	&	!	  dialogue files.					&	!	Return to the caller.					&32000	!$**********************   Ì  ****************************************&	!								&	!								&	!	E N D    O F    J O B    P R O C E S S I N G		&	!								&	!								&	\ GOSUB 30000							!BL9-00&	!								 BL9-00&	!	Finish up everything.					 BL9-00&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END Ì         8z“Á› 8$        1	!***************************************************************&	!								&	!								&	!		I B M S U P    D I A L O G U E			&	!								&	!								&	!								&	SUB	IBMSUP	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			      &	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  for use on such system and to one who agrees t      o	&	!    these license terms.  Title to  and  ownership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**************************      *************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL IBMSUP(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$******************************      ********************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This is a dummy routine at this       point in time.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!*********      ******************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E       S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!*****************      **********************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines       930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up stan      dard default error trap			&1010	\ IBM.SUPPORT%=0%						&	\ ON ERROR GOTO 1020						&	\ OPEN "[1,54]KC3271.FIL" FOR INPUT AS FILE 9%			&	\ IBM.SUPPORT%=-1% UNLESS (NUM.OF.DUPS.IN.3271%=0%)		&	\ CLOSE 9%							&	\ GOTO 1500 IF IBM.SUPPORT%=0%					&	\ IBM.UNIT%=0%							&	\ LOCAL.LONG.FORM%=LONG.FORM%					&	\ PRINT								&	\ PRINT "	TRAX/3271 Communications Dialogue"		&	\ GOTO 1030							&	!								&	!	See if we have 3271 support on this system.		&1020	\ RESUME 1500							&1030	\ FOR IBM.UNIT%=IBM.UNIT% TO NU      M.OF.DUPS.IN.3271%-1%		&1035		\ DEFAULT$=""						&		\ DEFAULT$=NUM1$(UNITS.ON.DUP%(IBM.UNIT%)) IF		&				UNITS.ON.DUP%(IBM.UNIT%)<>0%		&		\ ASK.RANGE(0%)=1.					&		\ ASK.RANGE(1%)=32.					&		\ SUBSTITUTE.TEXT$(1%)=NUM1$(IBM.UNIT%)			&		\ ON FN.ASK%(60%,DEFAULT$,"I",TRUE%,1%) GOTO 1040,32000,&							1050		&	!								&	!	Ask the "Number of units on line" question		&1040	\ IBM.UNIT%=IBM.UNIT%-1%					&	\ GOTO 1030 UNLESS IBM.UNIT%=-1%				&	\ SPAWN.STATUS%=1%+(27%*8%)					&	\ GOTO 32000							&	!								&	!	On ES      C go do a previous unit unless we was on the first.&1050	\ UNITS.ON.DUP%(IBM.UNIT%)=ASK.NUM%				&	!								&	!	Place the answer in common.				&1060	\ DEFAULT$=FN.INT.TO.OCT$(CON.POLL.ADDR%(IBM.UNIT%))		&	\ SUBSTITUTE.TEXT$(40%)="TRAX/3271"				&	\ ASK.RANGE(0%)=2.						&	\ ON FN.ASK%(62%,DEFAULT$,"",TRUE%,2%) GOTO 1035,32000,1070	&	!								&	!	Ask the "Controller Polling Address" question		&1070	\ VALID%=1%							&	\ T%=FN.REALLY.OCTAL%(ASK.CVT$)					&	\ VALID%=VALID%+T%						&	\ GOTO 1075 IF VALID%=1%					      &	\ ASK.NUM%=FN.OCT.TO.INT%(ASK.CVT$)				&	\ GOTO 1075 IF ASK.NUM% >= UNITS.ON.DUP%(IBM.UNIT%)		&	\ CON.POLL.ADDR%(IBM.UNIT%)=ASK.NUM%				&	\ GOTO 1080							&	!								&	!	Validate and store the response.			&1075	\ PRINT								&	\ PRINT "? Please respond with a polling address in 'STAnn' form."&		IF (VALID%=0%) OR (VALID%=1%)				&	\ PRINT "? Polling address number is out of range." IF		&		VALID%=2%						&	\ GOTO 1060							&	!								&	!	Print an error message and ask the question again.	&1080	\ ASK.CVT$=      "YES"						&	\ GOTO 1090		! ALWAYS SEQUENTIAL POLLING ADDRESSES	&	\ DEFAULT$="YES"						&	\ ON FN.ASK%(64%,DEFAULT$,"Y",TRUE%,2%) GOTO 1060,32000,1090,1090&	!								&	!	Ask the "Automatic assignment of polling addresses"	&	!		question.					&1090	\ POLL.ADDRS%(IBM.UNIT%,0%)=-1% IF ASK.CVT$="YES"		&	\ GOTO 1120 IF ASK.CVT$="YES"					&	\ STATION%=0%							&	!								&	!	IF THE ANSWER IS YES WE WILL ASSIGN NUMBER IN SEQUENCE.	&	!	-1 IN THE FIRST ELEMENT OF THE ARRAY SIGNIFIES THIS.	&1100	\ FOR STATION%=STATION      % TO UNITS.ON.DUP%(IBM.UNIT%)-1%		&1105		\ DEFAULT$=""						&		\ ASK.RANGE(0%)=5.					&		\ SUBSTITUTE.TEXT$(2%)=NUM1$(STATION%)			&		\ ON FN.ASK%(66%,DEFAULT$,"",TRUE%,3%) GOTO 1107,32000,	&							1110		&	!								&	!	Ask the "polling address" question.			&1107	\ STATION%=STATION%-1%						&	\ GOTO 1100 UNLESS STATION%=-1%					&	\ GOTO 1080							&	!								&	!	Handle ESC here.					&1110	\ VALID%=0%							&	\ VALID%=VALID%+1% IF LEFT(ASK.CVT$,3%)="STA"			&	\ GOTO 1115 IF VALID%=0%					&	\ ASK.CVT$=RIGHT(ASK.      CVT$,4%)					&	\ T%=FN.REALLY.OCTAL%(ASK.CVT$)					&	\ VALID%=VALID%+T%						&	\ GOTO 1115 IF VALID%=1%					&	\ ASK.NUM%=FN.OCT.TO.INT%(ASK.CVT$)				&	\ GOTO 1115 IF ASK.NUM% >= UNITS.ON.DUP%(IBM.UNIT%)		&	\ POLL.ADDRS%(IBM.UNIT%,STATION%)=ASK.NUM%			&	\ GOTO 1117							&	!								&	!	Validate and store the response.			&1115	\ PRINT								&	\ PRINT "? Please respond with a polling address in 'STAnn' form."&		IF (VALID%=0%) OR (VALID%=1%)				&	\ PRINT "? Polling address number is out of range." IF		&		VALID      %=2%						&	\ GOTO 1105							&	!								&	!	Print an error message and ask the question again.	&1117	\ NEXT STATION%							&	!								&	!	Do the next one.					&1120	\ LONG.FORM%=0%							&	\ NEXT IBM.UNIT%						&	\ LONG.FORM%=LOCAL.LONG.FORM%					&	!								&	!	Long prompts only the first time around.		&1500	\ GOTO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O       G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N       D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!*****************************************************      **********&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$************************************   Ê   **************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND Ê          šE–,“Á› 8$        1	!***************************************************************&	!								&	!								&	!	K E R N E L    G E N E R A T I O N    M O D U L E	&	!								&	!								&	!								&	SUB	KERGEN	(SPAWN.STATUS%)					&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	12-OCT-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O       P Y R I G H T			&	!								&	!								&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**********      *****************************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL KERGEN(SPAWN.STATUS%)		 		&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!	SPAWN.STATUS%		STATUS ON EXECUTION OF ROUTINE	&	!								&	!***************************************************************&20	!$**************      ************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This routine cal      ls KERGN1,KERGN2,KERGN3, and KERGN4	&	!	to set up the KERMC.MAC and SYSTB.MAC files and		&	!	assemble and link the KERNEL.				&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Pri      mary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!      $**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESC      RIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R       A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!********************      *******************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1005	\ CALL RET							&	\ GOTO 1015 IF NO.FILES%<>0%					&1010	\ CALL KERGN1(SPAWN.STATUS%)					&	\ CALL RET							&	\ CALL KERGN2(SPAWN.STATUS%)					&	\ CALL RET							&	\ CALL KERGN3(SPAWN.STATUS%)					&	\ CALL RET							&1015	\ CALL KERGN4(SPAWN.STATUS%)					&	\ CALL KERGN5(SPAWN.STATUS%)					&	\ CALL KERGN6(SPAWN.STATUS%)					&	\ CALL KERGN7(SPAWN.STATUS%)					&	!					      			&	!	Call the necessary routines needed to generate the	&	!		KERNEL.						&1020	\ GOTO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L           T O			&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close a      ll files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!**************************************************   ä  *************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBENDä         B	M“Á› 8$øf      995	\ MAP	(BLDCTL)						&		 BLDCTL.CUR.PTR%				!   0 !	&		,BLDCTL.NUM.OF.ENTRIES%				!   2 !	&		,BLDCTL.SEQUENCE.NUMBER$	=  5%		!   4 !	&								!   9 !	&	!								&	!	Map out the build control file.				&996	\ MAP	(ENTRY)							&		 ENTRY.INDEX$				=  2%	!   0 !	&		,ENTRY.COMP.KEY$			= 24%	!   2 !	&		,ENTRY.CMD.LINE$			= 79%	!  26 !	&		,ENTRY.BUILD.LOCATION$			=  1%	! 105 !	&								! 106 !	&	!								&	!	Map out the file we use to temporarily store our build	&	!	  commands in.						&997	\ MAP	(CPBLFL)						     &		 CPBLFL.DEBUG.FLAG%				!   0 ! &		,CPBLFL.OPERATORS.INITIALS$		=  4%	!   2 ! &		,CPBLFL.BASE.LEVEL.NUMBER$		=  8%	!   6 !	&		,CPBLFL.INSTALL.CHARACTER$		=  1%	!  14 !	&		,FILL$					=  1%	!  15 !	&								!  16 !	&	!								&	!	Map out the control file.				&         Õf“Á› 8$\d      1	!***************************************************************&	!								&	!								&	!	P R E P A R E    B A S E    L E V E L    T O		&	!								&	!	  B U I L D    C H A N G E    T A P E			&	!								&	!								&	!								&	!	Program:	CHGPREPBL				&	!	Version:	BL9					 BL9-00&	!	Edit level:	00					&	!	Edit date:	14-Mar-79				 BL9-00&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!			      					&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$***      ***********************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL1-00	28-Jul-78 KMR	Initial coding.			&	!	BL9-00	14-Mar-79 KMR	Added audit trail code and calls BL9-00&	!				  to MNTCTL.			 BL9-00&	!								&	!***************************************************************&100	!$********************************      ******************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file inpu      t			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.		      	&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		      F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$****************************************      **********************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N            P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&	!								 BL9-00&	\ TE% = FN.SETUP.DIALOGUE%( "MNTTXTHLP" )			!BL9-00&	!								 BL9-00&	!	Set up the dialogue functions and files.		 BL9-00&	!								 BL9-00&	\ PROGRAM.NAME$ = "CHGPREPBL"					!BL9-00&	\ PROGRAM.NUMBER$ = ""						!BL9-00&	\ CALL MNTCTL( PROGRAM.NAME$, SUCCESS% )			!BL9-00&	\ GO T      O 32000	IF NOT SUCCESS%					!BL9-00&	!								 BL9-00&	!	Check for permission to run this program and set up	 BL9-00&	!	  any utilities you might need.				 BL9-00&1010	\ VER.EDIT.NUM$ = "BL9-00"					!BL9-00&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "CHGPREPBL	"; VER.EDIT.NUM$; "   ";		&	\ PRINT								&	\ PRINT "TRAX Prepare Base Level Pack for Change Tape Build"	&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ FIND.SEQUENTIAL%	= 0%					!      BL9-00&	\ FIND.KEY.EQ%		= 1%					&	\ FIND.KEY.GT%		= 2%					&	\ FIND.KEY.GE%		= 3%					&	\ GET.SEQUENTIAL%	= 4%					&	\ GET.KEY.EQ%		= 5%					&	\ GET.KEY.GT%		= 6%					&	\ GET.KEY.GE%		= 7%					&	\ FIND.RELATIVE%	= 8%					&	\ GET.RELATIVE%		= 9%					&	!								&	!	Set up some values for the GET RECORD function.		&	!								&	\ FILE.NAME$( 1% )	= "CHGPREPBL.FIL"			&	\ FILE.NAME$( 2% )	= "BLDCNTR.FIL"				&	\ FILE.NAME$( 3% )	= "BASELEVEL.NUM"			&	!								&	!	Set up the file names.					&	!								&	\ CONTROL.      FILE.CREATED% = FALSE%				&	!								&	!	Indicate that we have not yet created the control file.	&1200	!$**************************************************************&	!								&	!								&	!	C H E C K    F O R    B U I L D    C O N T R O L	&	!								&	!			F I L E					&	!								&	!								&	!***************************************************************&	!								&	\ PASS% = 0%							&	\ GOSUB 14000							&	!								&	!	Set the pass to 0.  If we are in the middle of build-	&	!	  ing, it will stay zero.	      			&	!	Open the baselevel number file and extract the inform-	&	!	  ation.						&	!	Check for the presence of the build control file.	&	!								&	\ OPERATION$ = "START"						!BL9-00&	\ OPERATION$ = "RESUME"	IF BUILDING%				!BL9-00&	\ TE% = FN.CHGPRP.AUDIT.RECORD%( OPERATION$, "" )		!BL9-00&	\ GO TO 3000	IF BUILDING%					&	!								&	!	Setup and write the appropriate audit record.		 BL9-00&	!	If we are building (the build control file was found)	&	!	  contiue at the point where we pick up the build.	&1300	!      $**************************************************************&	!								&	!								&	!	P A S S    I    -    M A R K    A L L   C H A N G E D	&	!								&	!		C O M P O N E N T S				&	!								&	!								&	!***************************************************************&	!								&	\ PASS% = 1%							&	\ TE% = FN.PRINT.BLOCK%( 0%, 600% )				&	!								&	!	Set the pass number to 1.				&	!	Tell the user what we are doing.			&	!								&	\ SUBSTITUTE.TEXT$( 50% ) = "CPBLP1"				&	\ TE% = FN.EXEC.BLOCK%(	"MCR...      ",				&				626%,					&				TRUE%	)				&	!								&	!	Spawn the program that does pass I.			&	!								 BL9-00&	\ IF TE% <> 1%							!BL9-00&	  THEN	  TE% = FN.CHGPRP.AUDIT.RECORD%( "FAILED", "PASS 1" )	!BL9-00&		\ GO TO 32000						!BL9-00&	!								 BL9-00&	!	If CPBLP1 failed for any reason, enter an audit trail	 BL9-00&	!	  record to indicate this.				 BL9-00&1400	!$**************************************************************&	!								&	!								&	!	P A S S    I I    -    P R E P A R E    A L L		&	!					      			&	!	F I L E S    A N D    B U I L D    C O M M A N D S	&	!								&	!								&	!***************************************************************&	!								&	\ PASS% = 2%							&	\ TE% = FN.PRINT.BLOCK%( 0%, 603% )				&	!								&	!	Set the pass number to 2.				&	!	Tell the user what we are doing.			&	!								&	\ SUBSTITUTE.TEXT$( 50% ) = "CPBLP2"				&	\ TE% = FN.EXEC.BLOCK%(	"MCR...",				&				626%,					&				TRUE%	)				&	!								&	!	Execute pass II.					&	!								 BL9-00&	\ IF TE% <> 1%							!BL9-00&	        THEN	  TE% = FN.CHGPRP.AUDIT.RECORD%( "FAILED", "PASS 2" )	!BL9-00&		\ GO TO 32000						!BL9-00&	!								 BL9-00&	!	If pass 2 failed for any reason, enter an audit record	 BL9-00&	!	  and get out.						 BL9-00&1500	!$**************************************************************&	!								&	!								&	!	P A S S    I I I    -     D O    L O C A L		&	!								&	!	B U I L D S    A N D    P R E P A R E    O N - S I T E	&	!								&	!			B U I L D S				&	!								&	!								&	!**********************************      *****************************&	!								&	\ PASS% = 3%							&	\ TE% = FN.PRINT.BLOCK%( 0%, 604% )				&	!								&	!	Set the pass number to 3%.				&	!	Tell the user that we are preparing to build		&	!								&	\ GOSUB 14050							&	\ GO TO 1510	IF BUILDING%					&	!								&	!	Attempt to open the build control file.			&	!	If we were successfull, skip the error message and end	&	!	  below.						&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 617% )				&	\ TE% = FN.CHGPRP.AUDIT.RECORD%( "FAILED", "BLDCNTR CORRUPT" )      	!BL9-00&	\ GO TO 32000							&	!								&	!	Tell the user that the build control file is corrupt.	&	!	Go exit with an error.					&1510	\ GO TO 3000	IF BLDCTL.NUM.OF.ENTRIES% = 0%			&	!								&	!	If we have no entries to tell us to build, then skip	&	!	  the sort below and go create the necessary files	&	!	  for a dummy change tape.				&	!								&	\ STATUS% = FN.EXEC.BLOCK%(	"MCR...",			&					525%,				&					FALSE%	)			&	!								&	!	Sort the records in the command entry file.		&	!								&	\ IF STATUS% <>       1%						&	  THEN	  SUBSTITUTE.TEXT$( 1% ) = NUM1$( STATUS% )		&		\ TE% = FN.PRINT.BLOCK%( 0%, 605% )			&		\ TE% = FN.CHGPRP.AUDIT.RECORD%(	"FAILED",	!BL9-00&							"SORT FAILED" )	!BL9-00&		\ GO TO 32000						&	!								&	!	If the sort was not successfull,			&	!		Tell the user.					&	!		Exit.						&	!								&	  ELSE	  TE% = FN.EXEC.BLOCK%(	"MCR...",			&					627%,				&					TRUE%	)			&		\ TE% = FN.PRINT.BLOCK%( 0%, 606% )	IF DEBUG.FLAG%	&		\ TE% = FN.PRINT.BLOCK%( 0%, 607% )	IF DEBUG.FLAG%	&	!								&	!	If       the sort was successfull,				&	!		Kill the unsorted file.				&	!		Rename the sorted file to the same name as it	&	!		  had before sort.				&3000	!$**************************************************************&	!								&	!								&	!	C O N T I N U E    B U I L D I N G			&	!								&	!								&	!***************************************************************&	!								&	\ CLOSE #2%							&	\ SUBSTITUTE.TEXT$( 50% ) = "CPBLP3"				&	\ TE% = FN.EXEC.BLOCK%(	"MCR...",				&				626%,					&				TRUE%	)				&	!					      			&	!	Close the build control file.				&	!	Call the section that does the build and prepares the	&	!	  on-site build.					&	!								 BL9-00&	\ IF TE% <> 1%							!BL9-00&	  THEN	  TE% = FN.CHGPRP.AUDIT.RECORD%(	"FAILED",	!BL9-00&							"BUILD ERROR" )	!BL9-00&		\ GO TO 32000						!BL9-00&	!								 BL9-00&	!	If we had some fatal error, put out an audit record and	 BL9-00&	!	  get out.						 BL9-00&	!								&	  ELSE	  TE% = FN.PRINT.BLOCK%( 0%, 620% )			!BL9-00&		\ GO TO 32000						!BL9-00&		!							 BL9-      00&		!	Tell the user that we are done.			 BL9-00&		!	Get out.					 BL9-00&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&14000	!$**************************************************************&	!								&	!								&	!	O P E N    N E C E S S A R Y    F I L E S		&	!								&	!								&	!*      **************************************************************&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make sure the file is not marked as locked.		&14010	\ FILE.NUMBER% = 1%						&	\ OPEN "CHGPREPBL.FIL" FOR OUTPUT AS FILE #1%			&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		WRITE					&		,ALLOW		NONE					&		,MAP		CPBLFL					&	!								&	!	Open the file we use to pass stuff to the other quys.	&	!								&	\ TE% = FN.PRINT.BLOCK%( 0%, 611% )	IF DEBUG.FLAG%		&	\ CONTROL.FILE.CREATED%       = TRUE%					&	!								&	!	Indicate that the control file has now been created.	&	!								&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Make sure the next file is not marked as locked.	&14020	\ FILE.NUMBER% = 3%						&	\ OPEN "BASELEVEL.NUM" AS FILE #3%				&		,ORGANIZATION	SEQUENTIAL				&				VARIABLE				&		,ACCESS		READ					&		,ALLOW		READ					&		,MAP		BASLVL					&	!								&	!	Open the Base Level Number File.			&	!								&	\ ON FN.GET.RECORD%(	GET.SEQUENTIAL%,			&				3%, 0%, ""	)			&		GO TO							&			140      40,		! Record found		!	&			14030,		! No such record	!	&			14030		! End of file		!	&	!								&	!	Get the record from the file.				&14030	\ TE% = FN.PRINT.BLOCK%( 0%, 629% )				&	!								&	!	Tell the user that the baselevel number file is corrupt.&	!								&	\ GO TO 32000							&	!								&	!	Go finish up.						&14040	\ CPBLFL.BASE.LEVEL.NUMBER$ = BASLVL.BASE.LEVEL.NUMBER$		&	\ CPBLFL.INSTALL.CHARACTER$ = INSTALL.CHARACTER$		!BL9-00&	!								&	!	Get the base level number to the file so the other	&	!	  pro      grams can find it.					&	!	Also, enter the install character so it can be found.	 BL9-00&	!								&	\ CLOSE 3%							&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Close the file since we are done with it.		&14050	\ BUILDING% = TRUE%						&	!								&	!	Whenever we come through here, assume that we will be	&	!	  successfull in opening the build control file and	&	!	  that therefore we will be building.			&	!								&	\ FILE.NUMBER% = 2%						&	\ OPEN "BLDCNTR.FIL" FOR INPUT AS FILE #2%			&		,ORGANIZATION	RE      LATIVE				&				FIXED					&		,ACCESS		MODIFY					&		,ALLOW		NONE					&		,MAP		BLDCTL					&	!								&	!	Attempt to open the build control file for input.	&	!	If we succeed (we don't trap out here) then we are	&	!	  in a BUILD phase and must indicate such.  If not	&	!	  there, the error trapper will put us a statement	&	!	  14080.						&	!								&	\ ON FN.GET.RECORD%(	GET.RELATIVE%,				&				2%, 1%, ""	)			&		GO TO							&			14090,		! Got the record	!	&			14060,		! No such record	!	&			14060		! No such record      	!	&	!								&	!	Get the first record from the file.			&14060	\ TE% = FN.PRINT.BLOCK%( 0%, 617% )				&	\ GO TO 32000							&	!								&	!	Tell the user why we are quitting.			&	!	Go set the fatal error and return.			&14080	\ BUILDING% = FALSE%						&	!								&	!	Note that we are not building.				&14090	\ GO TO 14099	IF PASS% = 3%					&	!								&	!	Skip setting up the change prepare control file if this	&	!	  is pass 3 checking on the presence of commands in	&	!	  the build control file.				&	!								&	\       CPBLFL.OPERATORS.INITIALS$ = OPERATORS.INITIALS$		&	\ CPBLFL.DEBUG.FLAG% = DEBUG.FLAG%				&	\ CPBLFL.INSTALL.CHARACTER$ = INSTALL.CHARACTER$		!BL9-00&	\ ON FN.PUT.RECORD%( 1%, 1% )					&		GO TO							&			14097,		! Successfull		!	&			14095,		! Not successfull	!	&			14095		! Not successfull	!	&	!								&	!	Put the debug flag into the file.			&	!	Put the operator's initials into the control files	&	!	  buffer.						&	!	Put the install character into the buffer.		 BL9-00&	!	Attempt to put the record out to th      e control file.	&14095	\ TE% = FN.PRINT.BLOCK%( 0%, 630% )				&	\ GO TO 32000							&	!								&	!	Tell the user that the control file is corrupt.		&	!	Get out.						&14097	\ CLOSE #1%							&	!								&	!	Close the change control file.				&14099	\ RETURN							&	!								&	!	Return to caller.					&15000	!$************************************************************** BL9-00&	!								 BL9-00&	!								 BL9-00&	!	 W R I T E    C H G P R E P B L    A U D I T		 BL9-00&	!								 BL9-00&	!			R E C O R D				 BL      9-00&	!								 BL9-00&	!								 BL9-00&	!*************************************************************** BL9-00&									!BL9-00&	\ DEF FN.CHGPRP.AUDIT.RECORD%( OPERATION$, REASON$ )		!BL9-00&									!BL9-00&		\ TE%	= FN.OPEN.AUDIT.TRAIL%				!BL9-00&			+ FN.SETUP.AUDIT.RECORD%( PROGRAM.NAME$ )	!BL9-00&			+ FN.AUDIT.OPERATION%( OPERATION$ )		!BL9-00&		!							 BL9-00&		!	Open the audit trail file, do the standard	 BL9-00&		!	  record setup and then add in the operation.	 BL9-00&		!							 BL9-00&		\ AUDIT      .CHGPRP.REASON$ = FN.AUDIT.FIELD$		!BL9-00&			( REASON$, AUDIT.CHGPRP.REASON$ )		!BL9-00&		!							 BL9-00&		!	Put the reason into the audit trail record.	 BL9-00&		!							 BL9-00&		\ TE%	= FN.WRITE.AUDIT.RECORD%			!BL9-00&			+ FN.CLOSE.AUDIT.TRAIL%				!BL9-00&		!							 BL9-00&		!	Write out the audit record and then close the	 BL9-00&		!	  audit trail file.				 BL9-00&		!							 BL9-00&		\ FNEND							!BL9-00&19000	!$**************************************************************&	!								&	!								&	!	S       T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&	!								&	\ PRINT 'Error encountered. ERR ='; ERR; 'ERL ='; ERL		&			IF DEBUG.FLAG%					&	!								&	!	Print out the error.					&19010	\ RESUME 19990	IF ERR = 162%					&	!								&	!	Resume at the locked file handling if the error is	&	!	  a locked file.					&	!								&	\ RESUME 14080	IF ERR = 5%  AND  ERL = 14050			&	!								&	!	If it is the absence of the build contr      ol file that	&	!	  trapped us, go continue with the non-building phase.	&19900	\ PRINT								&	\ GO TO 19905	IF CONTROL.FILE.CREATED% = FALSE%		&	!								&	!	Skip deleting the control file if it doesn't exist.	&	!								&	\ SUBSTITUTE.TEXT$( 1% ) = ""					&	\ SUBSTITUTE.TEXT$( 2% ) = FILE.NAME$( 1% )			&	\ TE% = FN.EXEC.BLOCK%(	"MCR...",				&				610%,					&				TRUE%	)				&	\ TE% = FN.PRINT.BLOCK%( 0%, 628% )	IF DEBUG.FLAG%		&	!								&	!	Delete the control file.				&	!								&19905	\ PRINT 'Error was u      nexpected.'		IF DEBUG.FLAG%		!BL9-00&	\ PRINT 'All files closed.'		IF DEBUG.FLAG%		&	\ GOSUB 30000							!BL9-00&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&19990	!$**************************************************************&	!								&	!								&	!	H A N D L E    L O C K E D    F I L E S			&	!								&	!								&	!***************************************************************&	!								&	\ IF FILE.LOCKED%						&	  THE      N	  PRINT "? Can't access file ";				&			FILE.NAME$( FILE.NUMBER% )			&		\ GO TO 32000						&	!								&	!	If we tried unlocking the file but still failed, tell	&	!	  the user our problem and the get out.			&	!								&	  ELSE	  TE% = FN.UNLOCK.FILE%( FILE.NAME$( FILE.NUMBER% ))	&		\ FILE.LOCKED% = TRUE%					&		\ ON FILE.NUMBER%					&			GO TO						&				14010,	! Control file		!	&				14050,	! Build Control file	!	&				14020	! Base level file	!	&	!								&	!	If this is our first try at unlocking the file, unl      ock	&	!	  it, indicate that we have now tried once and then	&	!	  go try to open the file again.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***********      ****************************************************&30000	!$**************************************************************&	!								&	!								&	!	F I N I S H    U P    A N D    L O G    O F F		&	!								&	!								&	!***************************************************************&	!								&	\ CALL MNTCTL( PROGRAM.NAME$, SUCCESS% )			&		IF PROGRAM.NUMBER$ <> ""				&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ PRINT "DEBUG - All files closed"	IF DEBUG.FLAG%		!BL9-00&	\ RETURN							&	!								&	!	Close any Bas      e Level data base files.			&	!	Logoff and finish with any utilities you are using.	&	!	Close any other files that may be open, including the	&	!	  dialogue files.					&	!	Return to the caller.					&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ GO TO 32020	IF CONTROL.FILE.CREATED% = FALSE%		&	!								&	!	Skip deleting the con      trol file if it was not created.	&	!								&	\ SUBSTITUTE.TEXT$( 1% ) = ""					&	\ SUBSTITUTE.TEXT$( 2% ) = FILE.NAME$( 1% )			&	\ TE% = FN.EXEC.BLOCK%(	"MCR...",				&				610%,					&				TRUE%	)				&	\ TE% = FN.PRINT.BLOCK%( 0%, 628% )	IF DEBUG.FLAG%		&	!								&	!	Delete the control file.				&32020	\ GOSUB 30000							!BL9-00&	!								&	!	Go remove utilities, close files and generally clean up. BL9-00&32767	!$**************************************************************&	!								&	!								&	!	E N D      ˆ     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDˆ          BüK“Á› 8$N`      14010	!$**************************************************************&	!								&	!								&	!	O P E N    T H E    C O N T R O L    F I L E		&	!								&	!								&	!***************************************************************&	!								&	\ FILE.NUMBER% = 1%						&	\ OPEN "CHGPREPBL.FIL" AS FILE #1%				&		,ORGANIZATION	RELATIVE				&				FIXED					&		,ACCESS		READ					&		,ALLOW		READ					&		,MAP		CPBLFL					&	!								&	!	Open the Control file.					&	!								&	\ ON FN.GET.RECORD%(	GET.RELATIVE%,				&				      1%, 1%, ""	)			&		GO TO							&			14030,		! Got the record	!	&			14020,		! Error 		!	&			14020		! Error			!	&	!								&	!	Attempt to get the first record in the control file.	&14020	\ TE% = FN.PRINT.BLOCK%( 0%, 639% )				&	\ GO TO 31000							&	!								&	!	Tell the user why we are quitting.			&	!	Go quit.						&14030	\ DEBUG.FLAG% = CPBLFL.DEBUG.FLAG%				&	\ OPERATOR.INITIALS$ = CPBLFL.OPERATOR.INITIALS$		&	\ BASE.LEVEL.NUMBER$ = CPBLFL.BASE.LEVEL.NUMBER$		&	\ INSTALL.CHARACTER$ = CPBLFL.INSTALL.CHARACTER   ð   $		&	!								&	!	Extract the necessary information from the Control	&	!	  file.							&	!								&	\ CLOSE #1%							&	\ FILE.LOCKED% = FALSE%						&	!								&	!	Close the file.						&	!	Make sure the next file is not marked as locked.	& ð          KqBa“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	RECOVR					&	!	Version:	V01					&	!	Edit level:	01					&	!	Edit date:	08-MAR-79				&	!	Author(s):	AJS					&	!			LBB					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!      		COPYRIGHT (c) 1977, 1978, 1979 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 TRANSFE      RRED.				&	!								&	!   THE INFORMATION  IN  THIS SOFTWARE  IS SUBJECT TO CHANGE	&	!   WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS  A COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!					      			&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/01	08-AUG-77 AJS	FIRST PASS			&	!	V1.1A	08-MAR-79 LBB	Check that RECOVR is run from	&	!				TT0: or batch only - stmt 1025	&	!	V1.1B	18-JUN-79 LBB	Don't print version number in	&	!				  herald - stmt 1020		&	!								&	!								&	!***************************************************************&100	!$************      **************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!	The RECOVR utility will be provided by TPS to perform	&	!	updates on application data file sets using journal 	&	!	as input.  This utility could restore data created 	&	!	between the most recent backup invocation and a sub-	&	!	sequent loss of the application data file set.		&	!								&	!	This utility will provide selective recovery based on 	&	!	transaaction proces      sor, data file within the transaction&	!	processor, and a date/time delimeter.  This facility	&	!	allows the user to guard against corruption of a single	&	!	file of an application data file set.  The utility will	&	!	be invoked through the DCLS RUN command.		&	!								&	!	This utility requires that the composition of the 	&	!	data file set (i.e., the set of files) remain static	&	!	over the life of a particular journal file. It is also	&	!	advisable to start a new journal file set after each	&	!	backup of       the application data file set(s).		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		XXXXXX.FIL (file definition file) I/O	&	!	    3		[1,1]TPDEF.TPF (system application index)&	!	      							&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!	APP.NAME$		application name		&	!	APP.NUMBER$		unique application number	&	!	APP.STATUS%		status indicator		&	!	APP.PART$		install partition name		&	!	APP.COMMON%		application common a      rea address	&	!	APP.TRACUM%		transaction accumulation	&	!	APP.FILKEY%		keyed file accumulation		&	!	APP.FILCUM%		file accumulation work		&	!	APP.PARBAS%		install partition base		&	!	APP.INSCUM%		install accumulation word	&	!	APP.FILL$		buffer filler			&	!	ASK.CVT$		converted dialogue response	&	!	ASK.HELP$()		long prompt array		&	!	DEFAULT$		default response string		&	!	FILE.NUM$		file number for recovery	&	!	FLAGS$			flag byte			&	!	FULL%			type of report flag		&	!	FUNCTION%		ADD, EDIT, DELETE flag		&	!	IN      TERVAL$		locked record access interval	&	!	INVALID%		keyed search failure code	&	!	LOCKED%			file locked error code		&	!	LOGICAL.NAME$		logical file name		&	!	MAX.CONCURRENT%		max concurrent accesses byte	&	!	MAX.KEY.LENGTH%		max key length			&	!	NOFILE%			can't find file error code	&	!	NUM.KEYS%		number of defined keys		&	!	PROMPT$			dialogue prompt string		&	!	REPORT%			report writer flag 		&	!	INTERVAL$		locked record access interval	&	!	RETURN%			return error flag from FILESP	&	!	SPEC.LENGTH$		length of       file specification	&	!	SPECIFICATION$		FILES-11 specification		&	!	VALID%			valid components mask for FILESP&	!	VALID$			valid response string		&	!	Z's 			working variables		&	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------        &	!	10000		Report writer for index and show	&	!	FILEID		return device, unit, and file id	&	!	SPAWN		spawn a task with a command line	&	!	ASTO50		convert 3 ascii characters to RAD50	&	!	CRRG		create region				&	!	CRAW		create address window			&	!	MAPWIN		map address window			&	!	DTRG		detach region				&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S       E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!	25000	FN.ASK%		standard dialogue function	&	!	25250	FN.CHK.TIME%	validate time string		&	!	25200	FN.CHK.DATE%	validate date string		&	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	      !***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***********************************************************      ****&915	DIM FILEID%(4%)							&	!								&	!	This is the array in which the device, unit, and file	&	!	ID is passed back from a call to FILEID.		&918	DIM RDB%(7%)							&	\ DIM WDB%(7%)							&	!								&	!	Region and window descriptor blocks for the memory	&	!	management directives.					&920	DIM TASK%(1%)							&	!								&	!	RAD50 task name array used as argument to SPAWN		&930	DIM ASK.HELP$(16%)						&	!								&	!	Dimension the long prompts array.			&950	MAP (FYLE)	LOGICAL.NAME$=6,				&			FLAGS$=1,				      	&			FILE.NUM$=1,					&			MAX.CONCURRENT%,				&			NUM.KEYS%,					&			MAX.KEY.LENGTH%,				&			INTERVAL$=1,					&			FILL$=1,					&			SPEC.LENGTH$=1,					&			SPECIFICATION$=33,				&			FILL$=8						&	!								&	!	File record map						&960	\ MAP (APPL)		RECORD$=64				&	\ DIM #3,		VIRTUAL$(16383)=64			&	\ MAP (APPL)		APP.NAME$=6,				&				APP.STATUS%,				&				APP.PART$=4,				&				APP.COMMON%,				&				APP.TRACUM%,				&				APP.FILKEY%,				&				APP.FILCUM%,				&				APP.PARBAS%,				&				APP.INSCUM%,				&				APP.FILL$=      38,				&				APP.NUMBER$=2				&	!								&	!	Application file map.					&970	MAP (CRITRN) FILEBLOCKS%(63%,7%)				&	\ MAP (CRITRN) 	TIME%(7%),					&			S.TIME%(7%),					&			E.TIME%(7%),					&			R.TIME%(7%),					&			NUM.PROCESSOR%,					&			TP.NAMES$(15)=8,				&			REPORT.FILE.LEN$=1,				&			REPORT.FILE$=33,				&			REC.VOLUME$=5,					&			FILL$=1,					&			LARGEST.SLOT%,					&			SLACK$=22					&	!								&	!	This MAP and COMMON block defines the window to be used	&	!	to access the selection criterion tables.		&980	MA      P (TRANS)		NAME$=6,				&				FLAG%,					&				MAX.MESSAGE$=1,				&				TRAN.WORK$=1,				&				SYST.WORK%,				&				SLACK$(10)=1,				&				NUM.FORMS$=1,				&				FORMS$(31)=64				&	!								&	!	Transaction map						&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default       error trap			&1010	VER.EDIT.NUM$ = "V1.01A"					!V1.01A&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "RECOVR	"						!V1.1B&	\ PRINT								&	\ PRINT "Data File Recovery Utility"				&	\ PRINT								&	!								&	!	Output program herald messages				&	!	Don't print version number.				 V1.1&1025	\ IF NOT FN.CHECK.TT0%						!V1.01A&	  THEN								!V1.01A&		  PRINT "? RECOVR must be run from TT0: or batch."	!V1.01A&		\ GO TO 32767						!V1.01A&	!								 V1.01A&	!	If REC      OVR is run from non-console terminal		 V1.01A&	!		print error message				 V1.01A&	!		and exit.					 V1.01A&1030	\ ON ERROR GOTO 19000						&	\ RDB%(1%)=260%							&	\ CALL ASTO50("REC",Z%,ZZ%)					&	\ RDB%(2%)=Z%							&	\ CALL ASTO50("COM",Z%,ZZ%)					&	\ RDB%(3%)=Z%							&	\ CALL ASTO50("GEN",Z%,ZZ%)					&	\ RDB%(4%)=Z%							&	\ RDB%(5%)=0%							&	\ RDB%(6%)=8%+2%+1%						&	\ RDB%(7%)=0%							&	\ CALL CRRG BY REF (RDB%(),ERROR%)				&	\ CALL ATRG BY REF (RDB%(),ERROR%)				&	\ WDB%(0%)=SWAP%(7%)						&	      \ WDB%(2%)=16%							&	\ WDB%(3%)=RDB%(0%)						&	\ WDB%(4%)=0%							&	\ WDB%(5%)=16%							&	\ WDB%(6%)=256%+128%+2%						&	\ CALL CRAW BY REF (WDB%(),ERROR%)				&	\ TP.NAMES$(Z%)="" FOR Z%=0% TO 15%				&	\ TIME%(Z%)=-1% FOR Z%=0% TO 7%					&	\ S.TIME%(Z%)=0% FOR Z%=0% TO 7%				&	\ E.TIME%(Z%)=0% FOR Z%=0% TO 7%				&	!								&	!	Open the Application File to validate work to be done	&	!	on a particular application.				&	!	Kill the temporary file.				&	!	Open the temporary file.				&1040	\ NOFILE%=5%						      	&	\ NOOPEN%=162%							&	\ LOCKED%=138%							&	\ INVALID%=155%							&	\ FILE.END$="######"						&	\ CR$=CHR$(13%)+CHR$(10%)					&	\ ASK.HELP$(1%)=						&"Enter the name of a transaction processor whose data files should be"	&+CR$+									&"considered for this recovery.  The maximum number of transaction processors"&+CR$+									&"which may be recovery during an invocation of this utility is 16.  Please"&+CR$+									&"respond with DONE when all desired transaction processors have been entered."&	\ ASK      .HELP$(2%)=						&"Please specify the date on which recovery operations should be terminated."&+CR$+									&"You may not wish to recovery all data appearing on a journal, but rather"&+CR$+									&"wish to recovery to a known date and time breakpoint."			&	\ ASK.HELP$(3%)=						&"Please specify a time which will be used to further modify your response"&+CR$+									&"to the previous question."						&	\ ASK.HELP$(4%)=						&"Please enter the 'Logical file name' of a file which you desire to be"	&+CR$+			      						&"recovered.  Logical file names are defined using the FILDEF utility."	&	\ ASK.HELP$(5%)=						&"Please specify the device on which the journal volume is mounted.  Ensure"&+CR$+									&"that the volume is in proper sequence in relation to other volumes in the"&+CR$+									&"journal set.  Also ensure that a disk volume is also logically mounted."&	!								&	!	Set up the error symbols.				&1050	\ ON ERROR GOTO 1060						&	\ OPEN "[1,1]"+"TPDEF.TPF" FOR INPUT AS FILE #3,		&		ORGANIZATION VIRTUAL			      		&	\ GOTO 1065							&1060	\ IF (ERR=NOFILE%) AND (ERL=1050%)				&	  THEN PRINT							&		\ PRINT "? Please define a transaction processor before"&			+" running this utility."			&		\ RESUME 32767						&	  ELSE IF ((ERR=LOCKED%) OR (ERR=NOOPEN%)) AND (ERL=1050%)	&	       THEN PRINT						&			\ PRINT "? You have been denied access to the "+&			"transaction processor file."+CR$+"Try again later."&			\ RESUME 32767					&	       ELSE GOTO 19000						&	!								&	!	If an error occurred upon open of the application       file	&	!	we take appropriate action here.  Any unexpected errors	&	!	will trap to 19000.					&1065	\ NUM.PROCESSOR%=0%						&	\ DEFAULT$="ALL"						&1070	\ PROMPT$="Transaction Processor name"				&	\ ON FN.ASK%(PROMPT$,DEFAULT$,"A",6%,1%,1%) GOTO 1070,32000,1080&	!								&	!	Ask which application is to be worked on		&1080	\ IF (ASK.CVT$="DONE") AND (NUM.PROCESSOR%=0%)			&	  THEN PRINT							&		\ PRINT "% Choose at least one Transaction Processor "+	&			"for recovery."					&		\ GOTO 1070						&	  ELSE GOTO       1110 IF ASK.CVT$="DONE"				&		\ TP.NAMES$(Z%)="" FOR Z%=0% TO 15% IF ASK.CVT$="ALL"	&		\ NUM.PROCESSOR%=0% IF ASK.CVT$="ALL"			&		\ FOR I% = 0% TO 16383%					&		\ APP.RECORD%=I%					&		\ RECORD$=VIRTUAL$(I%)					&		\ GOTO 1085 IF APP.NAME$=ASK.CVT$			&		\ GOTO 1110 IF (APP.NAME$=FILE.END$) AND (ASK.CVT$="ALL")&		\ GOTO 1095 IF APP.NAME$ = FILE.END$			&		\ GOTO 1100 IF (NUM.PROCESSOR%=16%) AND (ASK.CVT$="ALL")&		\ TP.NAMES$(I%)=APP.NAME$ IF ASK.CVT$="ALL"		&		\ NUM.PROCESSOR%=NUM.PROCESSOR%+1% IF ASK.CVT$="      ALL"	&		\ NEXT I%						&		\ GOTO 1095						&	!								&	!	FIND THE APPLICATION RECORD				&	!	1085 if found						&	!	1095 if not found					&1085	\ TP.NAMES$(NUM.PROCESSOR%)=APP.NAME$				&	\ NUM.PROCESSOR%=NUM.PROCESSOR%+1%				&	\ DEFAULT$="DONE"						&	\ GOTO 1070 UNLESS NUM.PROCESSOR%=16%				&	\ PRINT								&	\ PRINT "16 transaction processors have been chosen for recovery."&	\ GOTO 1110							&	!								&	!	They are done with this question when 16 have been	&	!	specified.						&1090	\ T$="FILE" IF ERL=113      0%					&	\ T$="TRANSACTION" IF ERL=1180%					&	\ IF ERR=NOFILE%						&	  THEN PRINT							&		\ PRINT "% The "+T$+" definition file for the selected"+&			" transaction processor"+CR$+"has been deleted."&		\ PRINT							&		\ PRINT "	Transaction processor "+TP.NAMES$(TP%)+	&			" has been de-selected from recovery."		&		\ TP.NAMES$(TP%)=""					&		\ RESUME 1188						&	  ELSE IF (ERR=LOCKED%) OR (ERR=NOOPEN%)			&	       THEN PRINT						&			\ PRINT "% You have been denied access to the "+&			T$+" file.  Try again       later."			&			\ PRINT						&		\ PRINT "	Transaction processor "+TP.NAMES$(TP%)+	&			" has been de-selected from recovery."		&			\ TP.NAMES$(TP%)=""				&			\ RESUME 1188					&1095	\ IF APP.NAME$=FILE.END$					&		   THEN PRINT						&			\ PRINT "% Transaction Processor has not"+	&				" yet been defined."			&			 \ RESUME 1070					&		    ELSE GOTO 19000					&	!								&	!	If an error occurred upon open of the FILE file		&	!	we take appropriate action here.  Any unexpected errors	&	!	will trap to 19000.					&1100      	\ PRINT								&	\ PRINT "% ALL cannot be specified with greater than 16 "+	&		"transaction processors."				&	\ GOTO 1070							&	!								&	!	Error if 16 or more transaction processor are defined	&	!	in the TPDEF file and ALL was specified.		&1110	\ PROMPT$="Ending date"						&	\ DEFAULT$="LAST TRANSACTION"					&	\ ON FN.ASK%(PROMPT$,DEFAULT$,"",0%,2%,1%) GOTO 1065,32000,1115	&	!								&	!	Ask the 'Ending date' question.				&	!		ALT to 1055					&	!		CTRL/Z out					&	!		anything else to 1115				&1115	\ AS      K.CVT$="31-DEC-99" IF ASK.CVT$="LASTTRANSACTION"		&	\ Z%=FN.CHK.DATE%(ASK.CVT$)					&	\ IF Z%=0%							&	  THEN PRINT							&		\ PRINT "% Invalid date."				&		\ GOTO 1110						&	  ELSE TIME%(0%)=YEAR%						&		\ TIME%(1%)=MONTH%					&		\ TIME%(2%)=DAY%					&	!								&	!	CHECK OUT THE DATE.					&1120	\ PROMPT$="Ending time"						&	\ DEFAULT$="23:59"						&	\ ON FN.ASK%(PROMPT$,DEFAULT$,"",0%,3%,1%) GOTO 1110,32000,1125	&	!								&	!	Ask the "Ending time" question.				&	!		ALT to 1110					&	!		CTRL/Z out				      	&	!		anything else to 1125				&1125	\ Z%=FN.CHK.TIME%(ASK.CVT$)					&	\ IF Z%=0%							&	  THEN PRINT							&		\ PRINT "% Invalid time."				&		\ GOTO 1120						&	  ELSE TIME%(3%)=HOUR%						&		\ TIME%(4%)=MINUTE%					&	!								&	!	CHECK OUT THE ENDING TIME.				&1130	\ LARGEST.SLOT%=129%						&	\ FOR TP%=0% TO NUM.PROCESSOR%-1%				&		\ WDB%(4%)=0%						&		\ CALL MAPWIN BY REF (WDB%(),ERROR%)			&		\ TP.NAME$=EDIT$(TP.NAMES$(TP%),2%)			&		\ PRINT							&		\ PRINT "Please make selections for transaction "+	&	      		"processor "+TP.NAME$+"."			&		\ ON ERROR GOTO 1090					&		\ OPEN "[1,300]"+TP.NAME$+".FIL" FOR INPUT AS FILE #2,	&				ORGANIZATION INDEXED, FIXED,		&				ACCESS MODIFY, ALLOW READ,		&				MAP FYLE,				&				PRIMARY KEY LOGICAL.NAME$		&		\ GOSUB 10000						&		\ DEFAULT$="ALL"					&		\ WDB%(4%)=4%+(TP%*16%)					&		\ CALL MAPWIN BY REF (WDB%(),ERROR%)			&		\ FILEBLOCKS%(Z%,ZZ%)=0% FOR ZZ%=0% TO 7% FOR Z%=0% TO 63%&	!								&	!	Tell them which transaction processor they are		&	!	making file selections for at t      his time.		&	!	Open up the file definition file for the transaction	&	!	processor under process.				&1135	\ PROMPT$="Logical file name"					&	\ Z%=FN.ASK%(PROMPT$,DEFAULT$,"A",6%,4%,1%)			&	\ ON Z% GOTO 1120,32000,1140					&	!								&	!	Set up the prompt					&	!								&	!	ALT back to the Ending time question.			&	!	CTRL/Z exits us.					&	!	valid to 1140						&1140	\ LOGICAL.NAME$=ASK.CVT$					&	\ PNAME$=ASK.CVT$						&	\ DEFAULT$="DONE"						&	\ GOTO 1155 IF ASK.CVT$="ALL"					&	\ GOTO 1180 IF ASK.CVT$="D      ONE"					&	\ ON ERROR GOTO 1150						&	\ GET #2, KEY #0 EQ LOGICAL.NAME$				&	\ GOTO 1160							&	!								&	!	Plug in the key value,					&	!	Set an error trap for not found,			&	!	Do a GET and goto 1160 if successful.			&1150	\ GOTO 19000 IF ERR<>INVALID%					&	\ PRINT								&	\ PRINT "% Record ("+PNAME$+") does not exist, cannot "+	&			"RECOVER that file."				&	\ RESUME 1135							&	!								&	!	Print a diagnostic and return the the Logical File	&	!	name question again.					&1155	\ ON ERROR GOTO 1170				      		&	\ LOGICAL.NAME$=""						&	\ GET #2, KEY #0 GE LOGICAL.NAME$				&	!								&	!	If we are RECOVERing ALL files, lets get the first one.	&1160	\ NUMBER%=ASCII(FILE.NUM$)					&	\ FILEID%(Z%)=0% FOR Z%=0% TO 4%				&	\ F.STRING$=EDIT$(SPECIFICATION$,2%)				&	\ CALL FILEID(F.STRING$,FILEID%(),ERROR%)			&	\ IF ERROR%<>0%							&	  THEN PRINT							&		\ PRINT "? "+LOGICAL.NAME$+" has invalid file string - "&			IF (ERROR%=-2%) OR (ERROR%=-3%)			&		\ PRINT "? Can't find file - "+F.STRING$+" on record "+&			LOGICAL      .NAME$ IF ERROR%=-4%			&		\ GOTO 1165 IF ASK.CVT$="ALL"				&		\ GOTO 1135						&	  ELSE FILEBLOCKS%(NUMBER%,Z%)=FILEID%(Z%) FOR Z%=0% TO 4%	&		\ GOTO 1165 IF ASK.CVT$="ALL"				&		\ GOTO 1135						&	!								&	!	Set up to recover the file.				&1165	\ GET #2							&	\ GOTO 1160							&	!								&	!	Get the next file if we are processing ALL.		&1170	\ RESUME 1180							&	!								&	!	This should only be an End of File error.		&1180	\ CLOSE 2%							&	\ WDB%(4%)=0%							&	\ CALL MAPWIN BY REF (WDB%(),ERROR%)		      		&	\ ON ERROR GOTO 1185						&	\ OPEN "[1,300]"+TP.NAME$+".TRA" FOR INPUT AS FILE #2,		&			ORGANIZATION INDEXED, VARIABLE,			&			ACCESS READ, ALLOW MODIFY,			&			BUCKETSIZE 1,					&			MAP TRANS,					&			PRIMARY KEY NAME$				&1182	\ NAME$=""							&	\ GET #2, KEY #0 GE NAME$					&	\ WHILE 1%<>2%							&		\ MAX.MESSAGE%=ASCII(MAX.MESSAGE$)			&		\ TRAN.WORK%=ASCII(TRAN.WORK$)				&		\ SLOT.SIZE%=MAX.MESSAGE%+TRAN.WORK%+SYST.WORK%		&		\ LARGEST.SLOT%=SLOT.SIZE% IF SLOT.SIZE%>LARGEST.SLOT%	&		\ GET #2						&	\ N      EXT								&	!								&	!	OPEN THE TRANSACTION DEFINITION FILE AND SEE IF ANY	&	!	TRANSACTION REQUIRES A LARGER SLOT THEN WE ARE GOING	&	!	TO USE NOW.						&1185	\ GOTO 1090 IF ERL=1180%					&	\ RESUME 1188							&1188	\ CLOSE 2%							&	\ NEXT TP%							&	\ CLOSE 3%							&	\ DEFAULT$=""							&	\ WDB%(4%)=0%							&	\ CALL MAPWIN BY REF(WDB%(),ERROR%)				&	\ E.TIME%(0%),S.TIME%(0%)=32767%				&	!								&	!	Do the next transaction processor.			&1190	\ WDB%(4%)=0%							&	\ CALL MAPWIN BY REF (WDB%(),ERROR%      )				&	\ ERROR%=0%							&	\ PROMPT$="Journal file"					&	\ DEFAULT$="DONE" IF E.TIME%(1%)<>0%				&	\ ON FN.ASK%(PROMPT$,DEFAULT$,"",0%,5%,1%) GOTO 1190,32000,1200	&	!								&	!	Ask the "Journal file" question.			&	!		ALT to the same question			&	!		CTRL/Z out					&	!		anything else to 1200				&1200	\ GOTO 1205 IF (ASK.CVT$="DONE")				&	\ REC.VOLUME$=ASK.CVT$						&	\ VALID%=4%							&	\ CALL FILESP(ASK.CVT$,VALID%,ERROR%)				&1205	\ IF ERROR%<>0%							&	  THEN PRINT							&		\ PRINT "% Please enter a val      id device specification."	&		\ GOTO 1190						&	  ELSE CALL ASTO50("...",Z%,ZZ%)				&		\ TASK%(0%)=Z%						&		\ CALL ASTO50("INS",Z%,ZZ%)				&		\ TASK%(1%)=Z%						&		\ LINE$="INS [1,54]RECIO/TASK=RECIO"			&		\ ERROR%=1%						&		\ CALL SPAWN(TASK%(),LINE$,ERROR%) IF INSTALLED%=0%	&		\ GOTO 32000 IF (ERROR% AND 7%)<>1%			&!		\ LINE$="INS [1,54]RECER/TASK=RECER"			&!		\ CALL SPAWN(TASK%(),LINE$,ERROR%) IF INSTALLED%=0%	&!		\ GOTO 32000 IF (ERROR% AND 7%)<>1%			&		\ LINE$="INS [1,54]RECRP/TASK=RECRP"			&		\ CA      LL SPAWN(TASK%(),LINE$,ERROR%) IF INSTALLED%=0%	&		\ GOTO 32000 IF (ERROR% AND 7%)<>1%			&		\ INSTALLED%=-1%					&		\ CALL ASTO50("REC",Z%,ZZ%)				&		\ TASK%(0%)=Z%						&		\ CALL ASTO50("IO ",Z%,ZZ%)				&		\ TASK%(1%)=Z%						&		\ LINE$=""						&		\ GOTO 1240 IF ASK.CVT$="DONE"				&		\ CALL SPAWN(TASK%(),LINE$,ERROR%)			&		\ GOTO 1240 IF (ERROR% AND 7%)<>1%			&	!								&	!	IF THEY ANSWERED "DONE" AND THEY HAVE DONE SOME		&	!	PROCESSING, LET THEM GET OUT.				&	!	SEE THAT IT IS A VALID DEVICE SPEC.			&	!	SP      AWN INSTALL TO INSTALL RECIO.				&	!	The RECIO module will ascertain which device to recover	&	!	from by finding out its task name.  This piece of info	&	!	combined with the common tables, gives the IO module	&	!	enough context with which to run.			&1220	\ GOTO 1190 IF E.TIME%(1%)=0%					&	\ LAST.DATE$=STRING$(9%,0%)					&	\ LAST.TIME$=STRING$(10%,0%)					&	\ CALL DATEM BY REF (LAST.DATE$,E.TIME%())			&	\ CALL TIMEM BY REF (LAST.TIME$,E.TIME%(),2%)			&	\ PRINT								&	\ PRINT "Last Transaction on volume wa      s initiated at "+		&		LAST.TIME$+" on "+LAST.DATE$+"."			&	\ GOTO 1190							&	!								&	!	Don't print the information if nothing was done on the	&	!	tape.							&	!	Otherwise, set up and print the message and then ask	&	!	the Journal file question again.			&1240	\ CALL ASTO50("REC",Z%,ZZ%)					&	\ TASK%(0%)=Z%							&	\ CALL ASTO50("RP ",Z%,ZZ%)					&	\ TASK%(1%)=Z%							&	\ LINE$="XXX"							&	\ CALL SPAWN(TASK%(),LINE$,ERROR%)				&	\ GOTO 1190 IF (ERROR%/8%)=27%					&	\ GOTO 32000							&	!								&	!	      Spawn the report writer.				&10000	!$**************************************************************&	!								&	!								&	!		S E T    U P    FILDEF   F I L E		&	!								&	!								&	!								&	!***************************************************************&	!								&	!								&	!								&	!								&	!	This routine scans through the FILDEF file for the	&	!	current transaction processor and numbers each file.	&	!								&	!								&	!***************************************************************&10010	\       ON ERROR GOTO 10095						&	\ NUMBER%=0%							&	\ LOGICAL.NAME$=""						&	\ GET #2, KEY #0 GE LOGICAL.NAME$				&	!								&	!	Position to the beginning of the file to read sequentially.&10030	\ FILE.NUM$=CHR$(NUMBER%)					&	\ NUMBER%=NUMBER%+1%						&	!								&	!	PUT THE FILE NUMBER INTO THE RECORD FOR THIS FILE.	&10070	\ UPDATE #2							&	\ GET #2							&	\ GOTO 10030							&	!								&	!	 Get the next and do it again.				&10090	\ RETURN							&10095	\ RESUME 10090							&	!								&	!	The only error that       should occur is EOF.		&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***********************************************      ****************&19900	\ ON ERROR GOTO 0						&	!								&	!	Let the system handle this one.				&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!**************      *************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ CLOSE Z% FOR Z%=1% TO 12%					&	\ CALL ASTO50("MCR",Z%,ZZ%)					&	\ TASK%(0%)=Z%							&	\ CALL ASTO50("...",Z%,ZZ%)					&	\ TASK%(1%)=Z%							&	\ LINE$="REM RECIO"						&	\ CALL SPAWN(TASK%(),LINE$,ERROR%) IF INSTALLED%<>0%		&!	\       LINE$="REM RECER"						&!	\ CALL SPAWN(TASK%(),LINE$,ERROR%) IF INSTALLED%<>0%		&	\ LINE$="REM RECRP"						&	\ CALL SPAWN(TASK%(),LINE$,ERROR%) IF INSTALLED%<>0%		&	\ INSTALLED%=0%							&	\ RDB%(6%)=64%							&	\ CALL DTRG BY REF (RDB%(),ERROR%)				&	\ GOTO 32767							&	!								&	!	Close 'em all						&	!	Get out.						&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!****************************   6   ***********************************&	!								&	\ END 6          œ	S`“Á› 8$        915	\ DIM MONTH.LENGTH%(12%)				&16001	\ DEF FN.CALC.PASSWORD$(PLACE.HOLD$)					&	!								&	\ T%= FN.CHK.DATE%(PLACE.HOLD$)					&	!								&16003	\ FOR II%= 1% TO 12%						&		\ MONTH.LENGTH%(II%)= 31%				&	\ NEXT II%							&	\ MONTH.LENGTH%(2%)= 28%					&	\ MONTH.LENGTH%(2%)= 29%	IF (YEAR%-(YEAR%/4%)*4%)= 0%	&	\ MONTH.LENGTH%(4%)= 30%					&	\ MONTH.LENGTH%(6%)= 30%					&	\ MONTH.LENGTH%(9%)= 30%					&	\ MONTH.LENGTH%(11%)=30%					&	!								&	!	Initialize month size array				&	!								&16005	\ JULIAN%= 0%      							&	\ FOR II%= 1% TO MONTH% - 1%					&		\ JULIAN%= JULIAN% + MONTH.LENGTH%(II%)			&	\ NEXT II%							&	\ JULIAN%= JULIAN% + DAY%					&	!								&	!	Calculate the Julian day				&	!								&16007	\ PASS.NUMBER%= 0%						&	\ GREATEST.POSSIBLE.FACTOR%= SQR (JULIAN%)			&	\ FOR II%= 1% TO GREATEST.POSSIBLE.FACTOR%			&		\ PASS.NUMBER%= PASS.NUMBER% + II%			&			IF (JULIAN% - (JULIAN%/II%)*II%) = 0%		&	\ NEXT II%							&	!								&	!	Compute the sum of the factors				&	!	up to square root of x					&	!								&1      6009	\ RAMANUJAN%= 1729%						&	\ TT%= SQR ( RAMANUJAN% ) + PASS.NUMBER% 			&	\ FN.CALC.PASSWORD$= NUM1$( TT% )				&	!								&	\ FNEND								&          œ	á`“Á› 8$€      420	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   U S E D   I N   " TABBUL "		&	!								&	!	(This is a partial listing.  It will be expanded	&	!	when I find the time.)					&	!								&	!								&	!								&	!	MAX.DEV%()	- The maximum number of this device	&	!			   allowed (the only reference to this 	&	!			   variable that I can find is in	&	!			   stmt 2805 of "AUTOQU" where it is	&	!			   used as the upper limit for some	&	!			   questions).      				&	!								&	!	TPS.CLASS%()	- Indicates degree of TRAX support	&	!			   for device				&	!			  = 0 - not supported			&	!			  = 1 - only on 11/70			&	!			  = 2 - only on 11/34			&	!			  = 3 - on both 11/70 and 11/34		&	!								&	!	The arrays named SPECIAL0%(), SPECIAL1%() are not	&	!	used in any systematic way.  The following is an	&	!	overview.  						&	!								&	!	Element 1 - RH70 Controller				&	!								&	!		SPECIAL0%(1%) - Type of unit on controller	&	!				= 1 - RP05/06			&	!				= 2 - TU16			&	!			      	= 3 - RM03			&	!		SPECIAL1%(1%) - Only used when unit type is	&	!				  RP05/06.  Bit coded (1:8)	&	!				  where				&	!				  = 0 - unit is RP05		&	!				  = 1 - unit is RP06		&	!		SPECIAL2%(1%) - Only used when unit type is	&	!				  TU16.  Byte-packed.		&	!				  Byte 0 - number of tape drives&	!					   on formatter 0	&	!				  Byte 1 - number of tape drives&	!					   on formatter 1	&	!		SPECIAL3%(1%) - UNUSED				&	!		SPECIAL4%(1%) - UNUSED				&	!		SPECIAL5%(1%) - UNUSED				&	!								&	!	Element 2 - RH70 Cont      roller				&	!								&	!		Special arrays the same as for element 1.	&	!								&	!	Element 3 - RH70 Controller				&	!								&	!		Special arrays the same as for element 1.	&	!								&	!	Element 4 - RH70 Controller				&	!								&	!		Special arrays the same as for element 1.	&	!								&	!	Element 5 - TS03/TU10 Tape				&	!								&	!		Special arrays UNUSED.				&	!								&	!	Element 6 - Console DL					&	!								&	!		Special arrays UNUSED.				&	!								&	!	Element 7 - DL11-D					&	!								&	!		Special arr      ays UNUSED.				&	!								&	!	Element 8 - LP11					&	!								&	!		SPECIAL0%(8%) - Sysgen CSR of first LP11	&	!		SPECIAL1%(8%) - Vector of first LP11		&	!		SPECIAL2%(8%) - Bit-coded (0:14) where		&	!				0 = printer is not LA180	&	!				1 = printer is LA180		&	!		SPECIAL3%(8%) - UNUSED				&	!		SPECIAL4%(8%) - UNUSED				&	!		SPECIAL5%(8%) - UNUSED				&	!								&	!	Element 9 - KMC11					&	!								&	!		Special arrays UNUSED.				&	!								&	!	Element 10 - DUP11					&	!								&	!		SPECIAL0%(10%) - Number of DU      Ps in TRAX/3271	&	!		SPECIAL1%(10%) - Number of DUPs in Application	&	!				   Environment			&	!		SPECIAL2%(10%) - Number of DUPs in TRAX/2780	&	!		SPECIAL3%(10%) - UNUSED				&	!		SPECIAL4%(10%) - UNUSED				&	!		SPECIAL5%(10%) - UNUSED				&	!								&	!	Element 11 - DZ11					&	!								&	!		SPECIAL0%(11%) - Number of DZs in Support	&	!				    Environment			&	!		SPECIAL1%(11%) - Baud rate for DZ dialup lines	&	!		SPECIAL2%(11%) - Number of terminals on 1st DZ	&	!		SPECIAL3%(11%) - Number of terminals on 2nd D      Z	&	!		SPECIAL4%(11%) - Number of DZs in Application	&	!				   Environment ( = -1 if the	&	!				   question has not yet been	&	!				   asked)			&	!		SPECIAL5%(11%) - UNUSED				&	!								&	!	Element 12 - DV11					&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 13 - DMC11					&	!								&	!		SPECIAL0%(13%) - DMC unit type for 		&	!				 DMC units 0 - 6.		&	!				 Bit-coded (0:14) in 2-bit	&	!				   groups where 0:1 corresponds	&	!				   to DMC 0, 2:3 to DMC 1, etc.	&	!				1 = Full-duplex			&	!	      			2 = Primary half-duplex		&	!				3 = Secondary half-duplex	&	!		SPECIAL1%(13%) - DMC unit type for 		&	!				 DMC units 7 - 12.		&	!				 Bit-coded (0:14) in 2-bit	&	!				   groups where 0:1 corresponds	&	!				   to DMC 7, 2:3 to DMC 8, etc.	&	!				1 = Full-duplex			&	!				2 = Primary half-duplex		&	!				3 = Secondary half-duplex	&	!		SPECIAL2%(13%) - UNUSED				&	!		SPECIAL3%(13%) - UNUSED				&	!		SPECIAL4%(13%) - UNUSED				&	!		SPECIAL5%(13%) - UNUSED				&	!								&	!	Element 14 - RK07					&	!								&	!	      	SPECIAL0%(14%) - Bit-coded (1:8)		&	!				 0 = RK06			&	!				 1 = RK07			&	!		SPECIAL1%(14%) - UNUSED				&	!		SPECIAL2%(14%) - UNUSED				&	!		SPECIAL3%(14%) - UNUSED				&	!		SPECIAL4%(14%) - UNUSED				&	!		SPECIAL5%(14%) - UNUSED				&	!								&	!	Element 15 - KW11-L					&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 16 - KW11-P					&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 17 - DJ11					&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 18 - DH11					&	!	      							&	!		Special arrays UNUSED				&	!								&	!	Element 19 - DQ11					&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 20 - DU11					&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 21 - DR11					&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 22 - DL11A,B					&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 23 - DM11-BB Modem				&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 24 - LK11					&	!								&	!		Special arrays UNUSED      				&	!								&	!	Element 25 - DC11					&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 26 - PA611 Card Read				&	!								&	!		Special arrays UNUSED				&	!								&	!	Element 27 - PA611 Card Punch				&	!								&	!		Special arrays UNUSED				&	!								&	!***************************************************************&800	!$**************************************************************&	!                                                               &	!                                                                     &	! 	SHARED COMMON REGION					&	!                                                               &	!                                                               &	!***************************************************************&801	COM (TABBUL) 							&		TABLE.SIZE%,						&		DEV.NAME$(35%)=16,					&		FIRST.CSR%(35%),					&		SYSGEN.CSR%(35%),					&		VECTOR%(35%),						&		MORE.JUNK$(35%)=1,					&		PRIORITY$(35%)=3,					&		MATCH%(35%),						&		CSR.LENGTH%(35%),					&		VECTOR.LENGTH%(3      5%),					&		NO.OF.DEVICES%(35%),					&		TPS.CLASS%(35%),					&		MAX.DEV%(35%),						&		QUESTION%(35%),						&		SPECIAL0%(35%),						&		SPECIAL1%(35%),						&		SPECIAL2%(35%),						&		SPECIAL3%(35%),						&		SPECIAL4%(35%),						&		SPECIAL5%(35%),						&		JUNK$=2,						&		TAB.CPU%,						&		TAB.FPP%,						&		TAB.CACHE%,						&		TAB.KT11%,						&		TAB.PARITY%,						&		TAB.TPS%,						&		TAB.HIGH%,						&		TAB.HERTZ%,						&		TAB.SIZE%,						&		TAB.VECTOR$=6,						&		TINKERED.WITH%,						&		STARTING.VECTOR%,				   €  	&		AUTO.LONG.FORM%,					&		AUTO.DEV.SYS%,						&		FORCE.DIALOG%,						&		FLOATING.INDEX%(25%),					&		VECTOR.INDEX%(35%),					&		FIELD.SERVICE%,						&		HOME.BASE%						&	!								&	!	This area holds the CPU option results and various other&	!	pieces of information					&	!	TAB.SIZE% is in units of 32 words			&	!								&	!	The assignment table is also present in this common area& €         œ,Kq“Á› 8$”`      18900	!$**************************************************************&	!								&	!								&	!	G E T    R E C O R D ,    H A N D L I N G    L O C K S	&	!								&	!								&	!	Version:	01					&	!	Edit level:	03					 BL1-03&	!	Edit date:	26-Jul-78				 BL1-03&	!	Author(s):	KMR					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/00	01-Jun-78 KMR	Initial coding.			&	!	01/01	12-Jun-78 KMR	Added code for getting and find- BL1-01&	!				  ing relative rec      ords.		 BL1-01&	!	01/02	13-Jul-78 KMR	Added code to check for 'record	 BL1-02&	!				  deleted' error.		 BL1-02&	!	01/03	26-Jul-78 KMR	Changed all local variables to	 BL1-03&	!				  be unique.			 BL1-03&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.GET.RECORD%(	OPERATION.FN%,		 BL1-03&	!					CHANNEL.FN%,		 BL1-03&	!					KEY.FN%,		 BL1-03&	!					KEY.VALUE.FN$	)	 BL1-03&	!								&	!	INPUT:		OPERATION.FN% - Integer indicating the	 BL1-03&      	!			  desired operation as follows:		 BL1-03&	!				0 - FIND with no key.		&	!				1 - FIND record with key number	&	!				      KEY.FN% equal to		 BL1-03&	!				      KEY.VALUE.FN$.		 BL1-03&	!				2 - FIND record with key number	&	!				      KEY.FN% greater than	 BL1-03&	!				      KEY.VALUE.FN$.		 BL1-03&	!				3 - FIND record with key number	&	!				      KEY.FN% greater than or	 BL1-03&	!				      equal to KEY.VALUE.FN$.	 BL1-03&	!				4 - GET with no key.		&	!				5 - GET record with key number	&	!				      K      EY.FN% equal to		 BL1-03&	!				      KEY.VALUE.FN$.		 BL1-03&	!				6 - GET record with key number	&	!				      KEY.FN% greater than	 BL1-03&	!				      KEY.VALUE.FN$.		 BL1-03&	!				7 - GET record with key number	&	!				      KEY.FN% greater than or	 BL1-03&	!				      equal to KEY.VALUE.FN$.	 BL1-03&	!				8 - FIND relative record with	 BL1-01&	!				      record number KEY.FN%.	 BL1-03&	!				9 - GET relatvie record with	 BL1-01&	!				      record number KEY.FN%.	 BL1-03&	!			CHANNEL.FN% - The channel on whi      ch to	 BL1-03&	!			  perform the desired operation.	 BL1-03&	!			KEY.FN% - The number of the key to use	 BL1-03&	!			  if OPERATION.FN% has a value of 1, 2,	 BL1-03&	!			  3, 5,	6 or 7. The number of the record BL1-03&	!			  if OPERATION.FN% has a value of 8 or	 BL1-03&	!			  9. Not used for operations 0 and 4.	 BL1-03&	!			KEY.VALUE.FN$ - The value of the desired BL1-03&	!			  key.  Used only for OPERATION.FN%	 BL1-03&	!			  values of 1, 2, 3, 5, 6 or 7.		 BL1-03&	!								&	!	LOCAL:		T18900% - Logical var      iable used to keep	&	!			  track of whether or not a locked	&	!			  record has been encountered.		&	!								&	!	RETURNS:	On return the value of the function	&	!			  will indicate the results of the	&	!			  requested operation as follows:	&	!				1 - Requested operation was	&	!				      successfull.		&	!				2 - Requested record does not	&	!				      exist.			&	!				3 - End of file was encountered	&	!				      attempting to complete	&	!				      requested operation.	&	!								&	!								&	!	This function per      forms the requested operation on the	&	!	  requested channel.  RECORD NOT FOUND and END OF FILE	&	!	  ON DEVICE are trapped and returned to the user.	&	!	  If a RECORD DELETED error is encountered on a rela-	&	!	  get, an attempt to get the next record is made.	&	!	  Locked record/bucket errors are handled by waiting	&	!	  1 second and then retrying.  There is no limit on the	&	!	  number of times the operation will be retried.  Any	&	!	  other errors are concidered unexpected and will cause	&	!	  a branch       to line 19900 in the standard error handler.	&	!	The function uses the array FILE.NAME$() to supply the	&	!	  filename in the Locked Record message.  This array	&	!	  should be dimensioned and filled by the user.		&	!								&	!***************************************************************&									&	DEF FN.GET.RECORD%(	OPERATION.FN%,				!BL1-03&				CHANNEL.FN%,				!BL1-03&				KEY.FN%,				!BL1-03&				KEY.VALUE.FN$ )				!BL1-03&									&		\ ON ERROR GO TO 18960					&		\ T18900% = FALSE%					&		\ FN.GET.REC      ORD% = 1%					&		!							&		!	Set the local error trap.			&		!	Indicate that we have not yet found any locked	&		!	  records.					&		!	Assume success.					&18910		\ FIND #CHANNEL.FN%					!BL1-03&			IF OPERATION.FN% = 0%				!BL1-03&		!							&		!	Do a sequential find on the specified channel.	&		!							&		\ FIND #CHANNEL.FN%, KEY #KEY.FN% EQ KEY.VALUE.FN$	!BL1-03&			IF OPERATION.FN% = 1%				!BL1-03&		!							&		!	Do a FIND on the requested channel for a record	&		!	  whose specified key equals the specified      	&		!	  value.					&		!							&		\ FIND #CHANNEL.FN%, KEY #KEY.FN% GT KEY.VALUE.FN$	!BL1-03&			IF OPERATION.FN% = 2%				!BL1-03&		!							&		!	FIND for record greater than.			&		!							&		\ FIND #CHANNEL.FN%, KEY #KEY.FN% GE KEY.VALUE.FN$	!BL1-03&			IF OPERATION.FN% = 3%				!BL1-03&		!							&		!	FIND for record greater than or equal to.	&		!							&		\ FIND #CHANNEL.FN%, RECORD KEY.FN%			!BL1-03&			IF OPERATION.FN% = 8%				!BL1-03&		!							&		!	Do a relative FIND.				&		!							&		\ GET #CHANNEL.FN%					      !BL1-03&			IF OPERATION.FN% = 4%				!BL1-03&		!							&		!	Do a sequential get on the specified channel.	&		!							&		\ GET #CHANNEL.FN%, KEY #KEY.FN% EQ KEY.VALUE.FN$	!BL1-03&			IF OPERATION.FN% = 5%				!BL1-03&		!							&		!	GET for equal record.				&		!							&		\ GET #CHANNEL.FN%, KEY #KEY.FN% GT KEY.VALUE.FN$	!BL1-03&			IF OPERATION.FN% = 6%				!BL1-03&		!							&		!	GET for record greater than.			&		!							&		\ GET #CHANNEL.FN%, KEY #KEY.FN% GE KEY.VALUE.FN$	!BL1-03&			IF OPERATION.FN% = 7%				!BL1-      03&		!							&		!	GET for record greater than or equal to.	&		!							&		\ GET #CHANNEL.FN%, RECORD KEY.FN%			!BL1-03&			IF OPERATION.FN% = 9%				!BL1-03&		!							&		!	Relative GET.					&		!							&		\ GO TO 18980						&		!							&		!	Go finish up.					&18960		!*******************************************************&		!							&		!							&		!	L O C A L    E R R O R    T R A P		&		!							&		!							&		!*******************************************************&		!							&		\ RESUME 18910	IF ERR = 132%				!BL1-      02&		!							 BL1-02&		!	If the error was RECORD DELETED, just go get	 BL1-02&		!	  another record.				 BL1-02&		!							 BL1-02&		\ GO TO 18970	IF ERR <> 154%				&		!							&		!	If the error is not RECORD/BUCKET LOCKED	&		!	  go handle elsewhere.				&		!							&		\ PRINT "Record locked in file ";			&			FILE.NAME$( CHANNEL.FN% );	IF NOT T18900%	!BL1-03&		\ PRINT ".";						&		\ T18900% = TRUE%					&		\ SLEEP 1%						&		\ RESUME 18910						&		!							&		!	If this is the first time the record is locked,	&		!	        print out an information message for the user.&		!	Print out a dot for each second the record is	&		!	  locked.					&		!	Set the locked record flag TRUE% so we know we	&		!	  have found one.				&		!	Wait for one second.				&		!	Go retry the operation.				&18970		\ GO TO 19900	IF  ERR <> 155%				&				AND ERR <> 11%				&		!							&		!	Go to the standard error handler if the error	&		!	  is not one of the ones we handle here.	&		!							&		\ FN.GET.RECORD% = 2%	IF ERR = 155%			&		!							&		!	Set the return f   ¸  or RECORD NOT FOUND.		&		!							&		\ FN.GET.RECORD% = 3%	IF ERR = 11%			&		!							&		!	Set the return for END OF FILE ON DEVICE.	&		!							&		\ RESUME 18980						&		!							&		!	Resume at the exit below.			&18980		\ PRINT		IF T18900%				&		\ ON ERROR GO TO 19000					&		!							&		!	Make sure we move to the next line if we have	&		!	  put out locked record messages.		&		!	Reset the standard error trap.			&		!							&		\ FNEND							& ¸         \gKq“Á› 8$”`      18800	!$**************************************************************&	!								&	!								&	!	P U T    R E C O R D ,    H A N D L I N G    L O C K S	&	!								&	!								&	!	Version:	01					&	!	Edit level:	02					 BL1-02&	!	Edit date:	26-Jul-78				 BL1-02&	!	Author(s):	KMR					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/00	12-Jun-78 KMR	Initial coding.			&	!	01/01	26-Jun-78 KMR	Fixed bug in error reporting.	 BL1-01&	!	01/02	26-Jul-78 KMR	Cha      nged all local variables to	 BL1-02&	!				  make them unique.		 BL1-02&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.PUT.RECORD%( CHANNEL.FN%,		 BL1-02&	!					RECORD.FN% )		 BL1-02&	!								&	!	INPUT:		CHANNEL.FN% - The channel on which to	 BL1-02&	!			  perform the desired operation.	 BL1-02&	!			RECORD.FN% - The number of the record to BL1-02&	!			  be put.  A value of 0 indicates a	&	!			  sequential or indexed put.		&	!								&	!      	LOCAL:		T18800% - Logical variable used to keep	&	!			  track of whether or not a locked	&	!			  record has been encountered.		&	!								&	!	RETURNS:	On return the value of the function	&	!			  will indicate the results of the	&	!			  requested operation as follows:	&	!				1 - Requested operation was	&	!				      successfull.		&	!				2 - A record with the specified	&	!				      key already exists.	&	!				3 - The record already exists.	&	!								&	!								&	!	This function performs the requested operatio      n on the	&	!	  requested channel.  DUPLICATE KEY FOUND and RECORD	&	!	  ALREADY EXISTS are trapped and returned to the user.	&	!	  Locked record/bucket errors are handled by waiting	&	!	  1 second and then retrying.  There is no limit on the	&	!	  number of times the operation will be retried.  Any	&	!	  other errors are concidered unexpected and will cause	&	!	  a branch to line 19900 in the standard error handler.	&	!	The function uses the array FILE.NAME$() to supply the	&	!	  filename in the Locked Reco      rd message.  This array	&	!	  should be dimensioned and filled by the user.		&	!								&	!***************************************************************&									&	DEF FN.PUT.RECORD%( CHANNEL.FN%, RECORD.FN% )			!BL1-02&									&		\ ON ERROR GO TO 18820					&		\ T18800% = FALSE%					&		\ FN.PUT.RECORD% = 1%					&		!							&		!	Set the local error trap.			&		!	Indicate that we have not yet found any locked	&		!	  records.					&		!	Assume success.					&18810		\ PUT #CHANNEL.FN%					!BL1-02&			IF RECORD.FN%       = 0%				!BL1-02&		!							&		!	Do an indexed or sequential put if the record	&		!	  number is zero.				&		!							&		\ PUT #CHANNEL.FN%, RECORD RECORD.FN%			!BL1-02&			IF RECORD.FN% <> 0%				!BL1-02&		!							&		!	Do a relative put operation if the record	&		!	  number is non-zero.				&		!							&		\ GO TO 18840						&		!							&		!	Go finish up.					&18820		!*******************************************************&		!							&		!							&		!	L O C A L    E R R O R    T R A P		&		!							&		!							&		!******      *************************************************&		!							&		\ GO TO 18830	IF ERR <> 154%				&		!							&		!	If the error is not RECORD/BUCKET LOCKED, go	&		!	  handle it elsewhere.				&		!							&		\ PRINT "Record locked on PUT in file ";		&			FILE.NAME$( CHANNEL.FN% );	IF NOT T18800%	!BL1-02&		\ PRINT ".";						&		\ T18800% = TRUE%					&		\ SLEEP 1%						&		\ RESUME 18810						&		!							&		!	If this is the first time the record is locked,	&		!	  print out an information message for the user.&		!	Print       out a dot for each second the record is	&		!	  locked.					&		!	Set the locked record flag TRUE% so we know we	&		!	  have found one.				&		!	Wait for one second.				&		!	Go retry the operation.				&18830		\ GO TO 19900	IF  ERR <> 134%				&				AND ERR <> 153%				&		!							&		!	Go to the standard error handler if the error	&		!	  is not one of the ones we handle here.	&		!	  (DUPLICATE KEY ENCOUNTERED and RECORD		&		!	  ALREADY EXISTS.)				&		!							&		\ FN.PUT.RECORD% = 2%	IF ERR = 134%			!BL1-01&		!					   Þ  		&		!	Set the return for DUPLICATE KEY ENCOUNTERED.	&		!							&		\ FN.PUT.RECORD% = 3%	IF ERR = 153%			!BL1-01&		!							&		!	Set the return for RECORD ALREADY EXISTS.	&		!							&		\ RESUME 18840						&		!							&		!	Resume at the exit below.			&18840		\ PRINT		IF T18800%				&		\ ON ERROR GO TO 19000					&		!							&		!	Make sure we move to the next line if we have	&		!	  put out locked record messages.		&		!	Reset the standard error trap.			&		!							&		\ FNEND							&Þ         œ	Î“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	AUTDEF					&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	28-JUL-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Co      pyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!***************************************************************&20	!$**      ************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/01	28-JUL-77 AJS	BL4 MAJOR CHANGES		&	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!		P R O G R A M    D E S       C R I P T I O N		&	!								&	!								&	!	The User Authorization Definition Utility (AUTDEF)	&	!	is invoked to specify user authorization codes, 	&	!	associating a user identifier and password with one or 	&	!	more work classes.					&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	      !	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		XXXXXX.AUT (authorization file) I/O	&	!	    3		TPDEF.TPF (system application index)	&	!	    4		XXXXXX.WOR (work class definition file)	&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME		      	DESCRIPTION			&	!	----			------------------------------  &	!	APP.NAME$		application name		&	!	APP.NUMBER$		unique application number	&	!	APP.STATUS%		status indicator		&	!	APP.PART$		install partition name		&	!	APP.COMMON%		application common area address	&	!	APP.TRACUM%		transaction accumulation	&	!	APP.FILKEY%		keyed file accumulation		&	!	APP.FILCUM%		file accumulation work		&	!	APP.PARBAS%		install partition base		&	!	APP.INSCUM%		install accumulation word	&	!	APP.FILL$		buffer filler			&	!	ASK.CVT$		c      onverted dialogue response	&	!	ASK.HELP$()		long prompt array		&	!	CNT%			record length			&	!	DEFAULT$		default response string		&	!	FULL%			type of report flag		&	!	FUNCTION%		ADD, EDIT, DELETE flag		&	!	IDENTIFIER$		user identifier			&	!	INVALID%		keyed search failure code	&	!	LOCKED%			file locked error code		&	!	NOFILE%			can't find file error code	&	!	NUM.WORK.NAMES%		number of work class names	&	!	PASSWORD$		user password			&	!	PROMPT$			dialogue prompt string		&	!	TRANS.BIT.MAP%(10)	transaction bit m      ap		&	!	VALID$			valid response string		&	!	WORK.NAME$(159)		work class names array		&	!	WORK.TEMP$(159)		scratch compress array		&	!	Z's 			working variables		&	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!	10000		re      port writer for INDEX and SHOW	&	!	12000		open the work class definition file	&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!	25000	FN.ASK%		standard dialogue function	&	!								&	!								&	!***************************      ************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 d      enote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&905	DIM WORK.TEMP$(63)						&	!								&	!	Scratch work class compression array			&930	DIM ASK.HELP$(7%)						&	!								&	!	Long prompts array.					&950	MAP (USER)	IDENTIFIER$=20,					&			PASSWORD$=6,					&			TRANS.BIT.MAP%(3%),				&			FILL$=20,					&			NUM.WORK.NAMES%,				&			WORK.NAME$(63)=6				&	!						      		&	!	User authorization record map				&960	\ MAP (APPL)		RECORD$=64				&	\ DIM #3,		VIRTUAL$(16383)=64			&	\ MAP (APPL)		APP.NAME$=6,				&				APP.STATUS%,				&				APP.PART$=4,				&				APP.COMMON%,				&				APP.TRACUM%,				&				APP.FILKEY%,				&				APP.FILCUM%,				&				APP.PARBAS%,				&				APP.INSCUM%,				&				APP.FILL$=38,				&				APP.NUMBER$=2				&	!								&	!	Application file map.					&970	MAP (WORK)	NAME$=6,					&			BIT.MAP%(3),					&			FILL$=20,					&			NUM.TRANS.NAMES%,				&			TRANS.NAME$(63)=6				&	!      								&	!	Work class map						&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	VER.EDIT.NUM$ = ""						&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "AUTDEF	"; VER.EDIT.NUM$; "   ";			&	\ PRI      NT								&	\ PRINT "User Authorization Definition Utility"			&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ NOFILE%=5%							&	\ NOOPEN%=162%							&	\ LOCKED%=136%							&	\ INVALID%=155%							&	\ FILE.END$="######"						&	\ CR$=CHR$(13%)+CHR$(10%)					&	!								&	!	Set up the error symbols.				&1040	\ HELP.CNT%=1%							&	\ ASK.HELP$(1%)=						&	"Enter the name of an existing transaction processor;  a 1- to"+CR$+&	"6-character alphanumeric string."&	\ ASK.HELP$(2%)=						&	"E      nter one of the following commands:"+CR$+&	CR$+&	"           ADD"+CR$+&	"           DELETE"+CR$+&	"           EDIT"+CR$+&	"           EXIT"+CR$+&	"           INDEX"+CR$+&	"           PRINT"+CR$+&	"           SHOW"&	\ ASK.HELP$(3%)=						&	"Specify a user identifier to select  the  user  authorization"+CR$+&	"record  to  be  displayed.  The identifier is an alphanumeric"+CR$+&	"string from 1 to 20 characters long."&	\ ASK.HELP$(4%)=						&	"Specify a user identifier to select  the  user  authorization"+CR$+&      	"record to be added, edited, or deleted.  The identifier is an"+CR$+&	"alphanumeric string from 1 to 20 characters long."&	\ ASK.HELP$(5%)=						&	"Specify the password to be associated with this user identif-"+CR$+&	"ier.   The  password  must be a 1 to 6 character alphanumeric"+CR$+&	"string."&	\ ASK.HELP$(6%)=						&	"Enter one of the following subcommands:"+CR$+&	CR$+&	"           ADD - Add a work class name"+CR$+&	"           DELETE - Delete a work class name"&	\ ASK.HELP$(7%)=						&	"Enter the name       of the work class to be added  to  or  deleted"+CR$+&	"from  the  user's  list  of authorized work classes.  Respond"+CR$+&	"with DONE when finished."&	!								&	!	Long prompts.						&1050	\ ON ERROR GOTO 1060						&	\ OPEN "[1,1]"+"TPDEF.TPF" FOR INPUT AS FILE #3,		&		ACCESS READ, ALLOW MODIFY,				&		ORGANIZATION VIRTUAL					&	\ GOTO 1070							&	!								&	!	Open the Application File to validate work to be done	&	!	on a particular application.				&1060	\ IF ERR=NOFILE%						&	  THEN PRINT							&			\ PRI      NT "? Please define a Transaction Processor"&				+" before running this utility."	&		\ RESUME 32767						&	  ELSE IF (ERR=LOCKED%) OR (ERR=NOOPEN%)			&	       THEN PRINT						&			\ PRINT "? You have been denied access to the "+&			"transaction processor file."+CR$+"Try again later."&			\ RESUME 32767					&	       ELSE GOTO 19000						&	!								&	!	If an error occurred upon open of the application file	&	!	we take appropriate action here.  Any unexpected errors	&	!	will trap to 19000.					&1070	\ CLOSE 4%		      					&	\ PROMPT$="Transaction Processor name"				&	\ ON FN.ASK%(PROMPT$,"","A",6%,1%,1%) GOTO 1070,32000,1080	&	!								&	!	Close the work class definition file for a previously	&	!	processed application.					&	!	Ask which application is to be worked on		&1080	\ GOSUB 14000							&	\ FOR I% = 0% TO 16383%						&		\ APP.RECORD%=I%					&		\ RECORD$=VIRTUAL$(I%)					&		\ GOTO 1085 IF APP.NAME$=ASK.CVT$			&		\ GOTO 1095 IF APP.NAME$ = FILE.END$			&	\ NEXT I%							&	\ GOTO 1095							&	!								&	!	FIND THE AP      PLICATION RECORD				&	!	1085 if found						&	!	1095 if not found					&1085	\ ON ERROR GOTO 1090						&	\ OPEN "[1,300]"+ASK.CVT$+".AUT" FOR INPUT AS FILE #2,		&		ORGANIZATION INDEXED, VARIABLE,				&		ACCESS MODIFY, ALLOW READ,				&		BUCKETSIZE 1,						&		MAP USER,						&		PRIMARY KEY IDENTIFIER$				&	\ GOTO 1100							&	!								&	!	Open the User Auth. File to validate work to be done	&	!	the User Auths. of the selected application.		&1090	\ IF ERR=NOFILE%						&	  THEN PRINT							&		\ PRINT "% The Authori      zation definition file for the selected"+&			" transaction processor"+CR$+"has been deleted."&		\ RESUME 1070						&	  ELSE IF ERR=LOCKED%						&	       THEN PRINT						&			\ PRINT "% You have been denied access to the "+&			"Authorization file.  Try again later."		&			\ RESUME 1070					&1095	\ IF APP.NAME$=FILE.END$					&		   THEN PRINT						&			\ PRINT "% Transaction Processor has not yet "+	&				"been defined."				&			 \ RESUME 1070					&		    ELSE GOTO 19000					&	!								&	!	If an error occurred upon       open of the Authorization file&	!	we take appropriate action here.  Any unexpected errors	&	!	will trap to 19000.					&1100	\ IF (APP.STATUS% AND 1%)<>0%					&	  THEN GOSUB 12000						&	!								&	!	If the application is installed at this time we must	&	!	open the work class definition file at 12000 and tell	&	!	the user under what circumstances he is running.	&1105	\ PROMPT$="Command"						&	\ REPORT%=0%							&	\ VALID$="/ADD/EDIT/DELETE/INDEX/SHOW/PRINT/EXIT"		&	\ ZTEMP%=FN.ASK%(PROMPT$,"",VALID$,0%,2%,1      %)			&	\ ON ZTEMP% GOTO 1070,32000,1130,1130,1130,1110,1120,1120,32000	&	!								&	!	Ask what function is to be performed.			&	!								&	!	Application name question is ALT			&	!	Close out if ctrl/z					&	!	1130 if ADD, EDIT, or DELETE				&	!	1110 if INDEX						&	!	1120 if SHOW						&	!	32000 if EXIT						&1110	\ FULL%=0%							&	\ FULL%=-1% UNLESS ASK.CVT$="INDEX"				&	\ ASK.CVT$="ALL" IF ASK.CVT$="INDEX"				&	\ REPORT%=-1%							&	\ GOTO 1160 UNLESS ASK.CVT$="ALL"				&1115	\ GOSUB 10000							&	\ GOTO 11      05							&	!								&	!	Set the default to a short report.			&	!	Set to a full report if this was a SHOW command		&	!	Set ASK.CVT$ to ALL if this is an index command		&	!	Set the report flag.					&	!	See if the WORK CLASS is around if this is not ALL	&	!	Do the report at 10000					&	!	Go back to the Command question.			&1120	\ PROMPT$="Which user identifier"				&	\ DEFAULT$="ALL"						&	\ ON FN.ASK%(PROMPT$,DEFAULT$,"A",20%,3%,1%) GOTO 1105,32000,1110&	!								&	!	Ask which entity they which to SHOW.			&	!      								&	!	Command question is ALT					&	!	Close out if ctrl/z					&	!	Goto the report writer if a valid response was given	&1130	\ FUNCTION%=0%							&	\ FUNCTION%=1% IF ASK.CVT$="EDIT"				&	\ FUNCTION%=2% IF ASK.CVT$="DELETE"				&	\ FUNCTION$=ASK.CVT$						&	!								&	!	Set up the function flag and string.			&1135	\ PROMPT$="User identifier"					&	\ REPORT%=0%							&	\ Z%=FN.ASK%(PROMPT$,"","A",20%,4%,1%)				&	\ Z%=Z%+FUNCTION% IF Z%=3%					&	\ ON Z% GOTO 1105,32000,1140,1160,1140				&	!								&	!	The       function differentiator is set to zero		&	!	The function differentiator is set to one for EDIT	&	!	The function differentiator is set to two for DELETE	&	!	Set up the prompt					&	!								&	!	ALT back to the Command question.			&	!	CTRL/Z exits us.					&	!	1140 for ADD.						&	!	1160 for EDIT.						&	!	1140 for DELETE.					&1140	\ IDENTIFIER$=ASK.CVT$						&	\ PNAME$=ASK.CVT$						&	\ ON ERROR GOTO 1150						&	\ GET #2, KEY #0 EQ IDENTIFIER$				&	\ DELETE #2 IF FUNCTION%=2%					&	\ PRINT								&	\ PRINT       "Record ("+PNAME$+") DELETED." IF FUNCTION%=2%		&	\ PRINT "% Record ("+PNAME$+") already exists, cannot ADD." IF	&					FUNCTION%=0%			&	\ GOTO 1135							&	!								&	!	Plug in the key,					&	!	Set the error trap,					&	!	Do a find,						&	!	Delete it if we found and function is DELETE,		&	!	Print a success message for the DELETE.			&	!	Print a diagnostic if we are trying to ADD existing,	&	!	Go back and ask for another WORK CLASS.			&1150	\ GOTO 19000 IF ERR<>INVALID%					&	\ IF FUNCTION%=2%						&	  THEN       PRINT							&		\ PRINT "% Record ("+PNAME$+") does not exist, cannot DELETE."&	       \ RESUME 1135						&	  ELSE RESUME 1175 UNLESS (PNAME$="ALL") OR (PNAME$="DONE")	&		\ PRINT							&		\ PRINT "% "+PNAME$+" is a reserved name, cannot ADD."	&		\ RESUME 1135						&	!								&	!	If we get here on the DELETE function,			&	!	then we print a diagnostic and go back for the selection&	!	Else we resume at 1175 to ADD (this error trap is 	&	!	normal for ADD).					&1160	\ IDENTIFIER$=ASK.CVT$						&	\ PNAME$=ASK.CVT      $						&	\ ON ERROR GOTO 1170						&	\ GET #2, KEY #0 EQ IDENTIFIER$					&	\ GOTO 1115 IF REPORT%						&	\ GOTO 1175							&	!								&	!	Plug in the key value,					&	!	Set an error trap for not found,			&	!	Do a GET and goto the report writer if successful.	&	!	Do a GET and goto 1175 if successful.			&1170	\ GOTO 19000 IF ERR<>INVALID%					&	\ FUNCTION$="SHOW" IF REPORT%<>0%				&	\ PRINT								&	\ PRINT "% Record ("+PNAME$+") does not exist, cannot "+	&			FUNCTION$+"."					&	\ RESUME 1120 IF REPORT%					&      	\ RESUME 1135							&	!								&	!	Print a diagnostic for cannot find on EDIT or SHOW and 	&	!	go back and ask the selection question again.		&1175	\ ON ERROR GOTO 19000						&	\ PROMPT$="Password"						&	\ DEFAULT$=""							&	\ DEFAULT$=PASSWORD$ IF FUNCTION%=1%				&	\ ON FN.ASK%(PROMPT$,DEFAULT$,"A",6%,5%,1%) GOTO 1135,32000,1178&	!								&	!	Ask the 'Password' question.				&	!		ALT to 1135					&	!		CTRL/Z out					&	!		valid to 1178					&1178	\ PASSWORD$=ASK.CVT$						&	!								&	!	Set up the password       in the buffer.			&1180	\ NUM.WORK.NAMES%=0% IF FUNCTION%=0%				&	\ WORK.NAME$(Z%)="//////" FOR Z%=NUM.WORK.NAMES% TO 63%		&	!								&	!	If this is an ADD there are no work classes.		&	!	Flag the rest of the records as unused.			&1185	\PROMPT$="Sub command"						&	\ VALID$="/ADD/DELETE/DONE"					&	\ REPORT%=FN.ASK%(PROMPT$,"",VALID$,0%,6%,1%)			&	\ ON REPORT% GOTO 1175,32000,1220,1220,1290			&	!								&	!	Ask the 'Sub command' question.				&	!		ALT to 1175					&	!		CTRL/Z out					&	!		ADD, DELETE to 1220		      		&	!		DONE to 1290 to ADD or UPDATE			&1220	\ Z%=REPORT%-3%							&	\ PROMPT$="Work class name"					&	\ DEFAULT$="DONE"						&	\ REPORT%=FN.ASK%(PROMPT$,DEFAULT$,"A",6%,7%,1%)		&	\ ON REPORT% GOTO 1185,32000,1230				&	!								&	!	Hold on to whether this is an ADD or DELETE.		&	!	Ask the 'Work class name' question.			&	!		ALT to 1185					&	!		CTRL/Z out					&	!		valid to 1230					&1230	\ REPORT%=Z%+3%							&	\ GOTO 1250 IF ASK.CVT$="DONE"					&	\ IF Z%=0%							&	  THEN IF NUM.WORK.NAMES%=64%					&	             THEN PRINT						&			\ PRINT "% No more than 64 work classes are "+	&				"allowed."				&			\ GOTO 1220					&	       ELSE FOR ZZ%=0% TO 63%					&			\ PRINT IF ASK.CVT$=WORK.NAME$(ZZ%)		&			\ PRINT "% Work class is already associated "+	&				"with this record." IF			&					ASK.CVT$=WORK.NAME$(ZZ%)	&			\ GOTO 1220 IF  ASK.CVT$=WORK.NAME$(ZZ%)	&		    \ NEXT ZZ%						&	!								&	!	If this ADD would take us over the top then give them	&	!	a diagnostic and ask again.				&	!	If the work class was already ADDed then       print a 	&	!	diagnostic and try again				&1235	\ IF Z%=0%							&	  THEN NUM.WORK.NAMES%=NUM.WORK.NAMES%+1%			&		\ Z%=Z%+1% WHILE WORK.NAME$(Z%)<>"//////"		&		\ WORK.NAME$(Z%)=ASK.CVT$				&		\ GOTO 1220						&	!								&	!	If the sub function is ADD, then increment the counter.	&	!	Find the first open slot and put the name in.		&	!								&	  ELSE FOR Z%=0% TO 63%						&			\ GOTO 1240 IF ASK.CVT$=WORK.NAME$(Z%)		&		   \ NEXT Z%						&		   \ PRINT						&		   \ PRINT "% "+ASK.CVT$+" was not previously associ      ated "+&			"with this user authorization record."		&		   \ GOTO 1220						&	!								&	!	If the function is delete, search for the name and	&	!	goto 1240 to delete it if found.			&	!	Print a diagnostic and return if you can't find it.	&1240	\ NUM.WORK.NAMES%=NUM.WORK.NAMES%-1%				&	\ WORK.NAME$(Z%)="//////"					&	\ GOTO 1220							&	!								&	!	Decrement the counter and invalidate the slot.		&1250	\ WORK.TEMP$(Z%)=WORK.NAME$(Z%) FOR Z%=0% TO 63%		&	\ POINTER%=0%							&	\ FOR Z%=0% TO 63%						&		\ IF WORK      .TEMP$(Z%)<>"//////"				&		  THEN WORK.NAME$(POINTER%)=WORK.TEMP$(Z%)		&			\ POINTER%=POINTER%+1%				&1260	\ NEXT Z%							&	\ Z%=0%								&	\ TRANS.BIT.MAP%(ZZ%)=0% FOR ZZ%=0% TO 3%			&	\ GOTO 1290 UNLESS ((APP.STATUS% AND 1%)<>0%) OR (BUFSIZ(4%)<>0%)&	!								&	!	We use the WORK.TEMP$() array to get all the valid	&	!	names at the beginning of the WORK.NAME$() array.	&	!	Set up the pointer for masking in the work class bit	&	!	map if necessary.					&	!	Clear the bit map in the authorization record.		&	!	      Close out the record immediately if Application is not	&	!	installed.						&1270	\ FOR Z%=Z% TO 63%						&		\ GOTO 1290 IF WORK.NAME$(Z%)="//////"			&		\ ON ERROR GOTO 1280					&		\ NAME$=WORK.NAME$(Z%)					&		!\ GET #4, KEY NAME$					&		\ FOR ZZ%=0% TO 3%					&			\ TRANS.BIT.MAP%(ZZ%)=TRANS.BIT.MAP%(ZZ%) OR	&						BIT.MAP%(ZZ%)		&		\ NEXT ZZ%						&	\ NEXT Z%							&	\ GOTO 1290							&	!								&	!	Mask in the bit maps from all the specified work	&	!	classes.						&1280	\ PRINT								&	\ PRINT "% Work cl      ass ("+WORK.NAME$(Z%)+") does not exist."	&	\ Z%=Z%+1%							&	\ RESUME 1270							&	!								&	!	If a non-existent work class was added or edited	&	!	print a diagnostic, bump up to the next one and resume.	&1290	\ ON ERROR GOTO 1300						&	\ CNT%=56%+(6%*NUM.WORK.NAMES%)					&	\ PUT #2, COUNT CNT% IF FUNCTION%=0%				&	\ UPDATE #2, COUNT CNT% IF FUNCTION%=1%				&	\ PRINT								&	\ PRINT "Record ("+PNAME$+") "+FUNCTION$+"ed."			&	\ GOTO 1135							&	!								&	!	Put the record out if we are ADDing.			&	!	Up      date the record if we are EDITing.			&	!	Print a success message and go back for another record.	&1300	\ PRINT								&	\ PRINT "% "+FUNCTION$+" on record ("+PNAME$+") failed."	&	\ RESUME 1135							&	!								&	!	Print the failure message and try again.		&10000	!$**************************************************************&	!								&	!								&	!	R E P O R T    W R I T E R 				&	!								&	!								&	!								&	!***************************************************************&	!								&	!								&	!			      					&	!								&	!	This routine is called to perform the INDEX and SHOW	&	!	functions.  						&	!								&	!								&	!***************************************************************&10010	\ ON ERROR GOTO 10095						&	\ OPEN "TI:" FOR OUTPUT AS FILE 8% IF ZTEMP%<>8%		&	\ OPEN "CL:" FOR OUTPUT AS FILE 8% IF ZTEMP%=8%			&	\ PRINT #8, "Transaction Processor Name: "+APP.NAME$ IF ZTEMP%=8%&	\ PRINT #8, "User Authorization: "+ASK.CVT$ IF ZTEMP%=8%	&	\ PRINT #8							&	\ IDENTIFIER$="" IF ASK.CVT$="ALL"				&	\ GE      T #2, KEY #0 GE IDENTIFIER$ IF ASK.CVT$="ALL"		&	!								&	!	If this is an INDEX or a SHOW ALL then we must set up 	&	!	at the beginning of the file to read sequentially.	&10030	\ PRINT #8, "User identifier : ";IDENTIFIER$;STRING$(5%,32%);	&		"Password : ";PASSWORD$					&	!								&	!	PRINT the index report and the first line of the show.	&10040	\ GOTO 10070 UNLESS FULL%<>0%					&	\ PRINT #8							&	\ PRINT #8, TAB(30%);"Number of associated work classes :";	&		NUM$(NUM.WORK.NAMES%)					&	\ GOTO 10070 IF N      UM.WORK.NAMES%=0%				&	\ PRINT #8							&	\ PRINT #8, TAB(30%);"Associated work class names"		&	\ PRINT #8							&	\ PRINT #8, TAB(40%);WORK.NAME$(Z%) FOR Z%=0% TO NUM.WORK.NAMES%-1%&	\ PRINT #8							&	!								&	!	PRINT out the rest of the report if necessary.		&10070	\ GOTO 10090 UNLESS ASK.CVT$="ALL"				&	\ GET #2							&	\ GOTO 10030							&	!								&	!	Exit if this was an individual report.			&	!	Otherwise get the next and do it again.			&10090	\ CLOSE 8%							&	\ RETURN							&10095	\ RESUME 10090	      						&	!								&	!	The only error that should occur is EOF.		&12000	!***************************************************************&	!								&	!								&	!	O P E N    T H E    W O R K    C L A S S    F I L E	&	!								&	!								&	!***************************************************************&	!								&	!								&	!								&	!	This routine opens the work class definition file	&	!	for the selected application.  This routine is 		&	!	called if the application is presently installed.	&	!	If the applica      tion is presently installed, the bit	&	!	map for any altered or defined user authorization	&	!	records must be dynamically updated.			&	!								&	!								&	!***************************************************************&12010	\ ON ERROR GOTO 12095						&	\ OPEN "[1,300]"+APP.NAME$+".WOR" FOR INPUT AS FILE 4%,		&		ORGANIZATION INDEXED, FIXED,				&		ACCESS READ, ALLOW MODIFY,				&		MAP WORK,						&		PRIMARY KEY NAME$					&	\ PRINT								&	\ PRINT "% Application ("+APP.NAME$+") is installed.  Work class"+&      		" validity checks will be made."			&	\ GOTO 12090							&	!								&	!	Open the work class definition file so that the 	&	!	bit maps in the authorization records can be		&	!	set up if the application has been installed.		&12090	\ ON ERROR GOTO 19000						&	\ RETURN							&	!								&	!	Reset the error trap and return.			&12095	\ PRINT								&	\ PRINT "% Access to the work class definition file has been "+	&		"prohibited."						&	\ PRINT "You may choose to proceed as if the application"+	&		" was not inst      alled."					&	\ RESUME 12090							&	!								&	!	Print a message and resume.				&14000	!$**************************************************************&	!								&	!								&	!	C L O S E    C H A N N E L    2 			&	!								&	!								&	!***************************************************************&	!								&	!								&	!	The purpose of this routine is to properly close	&	!	channel two before it is opened again.  All closout	&	!	processing for the file presently open on channel 2	&	!	is done here.  This       is a subroutine because a person	&	!	can process several applications during one run of 	&	!	an information file utility.  Therefore, channel 2 is	&	!	closed when a new application is to be processed and	&	!	also at program close-out which can come at unpredict-	&	!	able times.						&	!								&	!								&	!***************************************************************&14005	\ RETURN IF BUFSIZ(2%)=0%					&	!								&	!	Return immediately if channel 2 is not open.		&14090	\ ON ERROR GOTO 19000						&	\ CLO      SE 2%							&	\ RETURN							&	!								&	!	Close channel 2 update channel 3 and return.		&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!      								&	!								&	!***************************************************************&19900	\ ON ERROR GOTO 0						&	!								&	!	Let the system handle this one.				&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I       B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ GOSUB 14000							&	\ CLOSE Z% FOR Z%=1% TO 12%					&	\ GOTO 32767							&	!								&	!	Close channel 2						&	!	Close 'em all						&	!	Get out.						&32767	!   ê   $**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END ê          ”«p“Á› 8$        1	!***************************************************************&	!								&	!								&	!	T R A C E   U T I L I T Y				&	!								&	!								&	!								&	!	Program:	TPTRAC					&	!	Version:	V1.1					&	!	Edit level:	0					&	!	Edit date:	6-FEB-79				&	!	Author(s):	GW					&	!			LBB					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		           COPYRIGHT (c) 1978,1979 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								      &	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1	6-FEB-79  LBB	Allow TPTRAC to be run from TT0	&	!				only -- stmt 1030.		&	!	V1.1A	18-JUN-79 LBB	Don't print version number in	&	!				herald - stmt 1020		&	!								&	!								&	!***************************************************************&100	!$**************************************************************&	      !								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!    This program is used to produce selected and  formatted	&	!    listings  of the trace file.  The user may select list-	&	!    ings by transaction names and TST names.  The  listings	&	!    may include any combination of exchange messages, inde-	&	!    pendent messages, workspace and system calls.		&	!								&	!***************************************************************&300	!$**********************************************      ****************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    2		Primary data file input			&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!						      		&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ACCOUNT$		default uic			&	!	ACCESS$()		access types			&	!	ASK.CVT$		converted responses		&	!	ASK.HELP$()		help text			&	!	CHAR%()			character array for printing	&	!	CODE%			function code			&	!	COL%			print column pointer		&	!	DATA$()			recorded data			&	!	DEMARK$			demarcate ascii dumps		&	!	DISP%			displacement to workspace	&	!	DOUBLE$			double precision number		&	!	DUM%()			dummy arry for numeric convert	&	!	FF      $			form feed			&	!	FORMAT%()		print format flag (bits)	&	!					1 = TST station		&	!					2 = status		&	!					4 = additional name	&	!	HEADER$()		page header			&	!	I%			looping parameter		&	!	INDEX%			array index			&	!	INPUT$			input file specification	&	!	LABEL$			exchange or form label		&	!	LAST%			pointer to last data element	&	!	LINE%			line number			&	!	MAXLINE%		maximum line number		&	!	MSGTYPE$		message type			&	!	NAME$			auxillary name			&	!	OPTION%()		options flags			&	!	OPTEXT$()		option text			&	!	      ORG%			file organization		&	!	ORGANIZATION$		file organizations		&	!	PAGE%			page number			&	!	PROCESS%()		processing number		&	!	RECORD$()		record types			&	!	SAVE%			saved status word		&	!	SELECT%			selection code			&	!	SELECT$()		selection list			&	!	SELTEXT$()		selection text			&	!	SEQ%()			transaction sequence number	&	!	STATUS%()		status				&	!	SUBTYPE%		subrecord type			&	!	T%			Temporary working variable	&	!	TRANAME$		transaction name		&	!	TSTNAME$		TST name			&	!	TYPE%()			record type			&	!					0 =       undefined		&	!					1 = slot		&	!					2 = message		&	!					3 = other call		&	!					4 = system function	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!	VARIABLE$		variable data			&	!	VFC$			fixed portion of record		&	!	W's			working storage			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	      NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	12000		list RAB				&	!	12100		list key				&	!	12200		list channel number			&	!	12300		print character array			&	!	DOUBLE		convert double precision number		&	!	VFC		set up for VFC file			&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	      !								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	15020	SETUP%		set up for different functions	&	!	15100	SELECT%		selection dialog prompt		&	!	15200	OPTION%		option dialog prompt		&	!	15300	ITEM%		itemize selections		&	!	15400	BLANK%		print line with blanks and make	&	!				sure it fits on page		&	!	15500	ASCII%		dump in ascii			&	!	15600	DUMP%		dump data			&	!	15700	INT$		convert two bytes integer to	&	!				string				&	!	15800	LINE%		print a line      			&	!	15900	NUMCHANGE%	add numeric string to character	&	!				array				&	!	25001	ASK%		dialog				&	!	29000	CHECK.TT0%	check whether source terminal	V1.1&	!				is TT0: or batch		V1.1&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&810	COM (COMSUB) DOUBLE$=1      0%					&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&910	\ DIM HEADER$(46), TYPE%(46), PROCESS%(46), FORM      AT%(46),	&		ASK.HELP$(5), ORGANIZATION$(2), RECORD$(4), ACCESS$(2),	&		SELECT$(1), SELTEXT$(1), OPTION%(3), OPTEXT$(3),	&		CHAR%(80), DUM%(10)					&950	\ MAP (FXED) CODE%, SEQ%(1), TRANAME$=6, TSTNAME$=6,		&		STATUS%(1), NAME$=6, MSGTYPE$=2, LABEL$=6		&	 \ MAP (FXED) VFC$=36						&960	\ MAP (VARBLE) DATA$(8129)=1%					&	\ MAP (VARBLE) VARIABLE$=33					&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!					      			&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$ = "V1.0"					&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "TPTRAC	"						!V1.1A&	\ PRINT "Transaction processor trace utility"			&	\ PRINT								&	!								&	!	Output program herald messages				&	!	Don't print version number.				 V1.1A&1030	\ IF NOT FN.CHECK.TT0%						!V1.1&	  THEN		      						!V1.1&		  PRINT "? TPTRAC must be run from TT0: or batch."	!V1.1&		\ GO TO 32767						!V1.1&	!								 V1.1&	!	If the terminal user is not at the console (or running	 V1.1&	!	 from batch)						 V1.1&	!		print standard error message			 V1.1&	!		and exit.					 V1.1&1050	\ MAXLINE% = 58%						&	\ LINE% = MAXLINE% + 1%						&	\ PAGE% = 2%							&	\ ACCOUNT$ = "[1,10]"						&	\ FF$ = CHR$(12%)						&	\ DEMARK$ = "	"						&	\ DEMARK$ = DEMARK$ + "---------+" FOR I% = 1% TO 5%		&	\ ORGANIZATION$(0%) = "seque      ntial"				&	\ ORGANIZATION$(1%) = "relative"				&	\ ORGANIZATION$(2%) = "indexed"					&	\ RECORD$(0%) = "undefined"					&	\ RECORD$(1%) = "fixed"						&	\ RECORD$(2%) = "variable"					&	\ RECORD$(3%) = "VFC"						&	\ RECORD$(4%) = "stream"					&	\ ACCESS$(0%) = "sequential"					&	\ ACCESS$(1%) = "random"					&	\ ACCESS$(2%) = "RFA"						&	\ SELTEXT$(0%) = "Transaction"					&	\ SELTEXT$(1%) = "TST station"					&	\ OPTEXT$(0%) = "Exchange messages"				&	\ OPTEXT$(1%) = "Other station messages"			&	\ OPTEXT$(2      %) = "Transaction workspace"				&	\ OPTEXT$(3%) = "System calls"					&	\ W% = FN.SETUP%(12%,"End of transaction",4%,3%,0%)		&	\ W% = FN.SETUP%(14%,"Exchange restarted",3%,3%,3%)		&	\ W% = FN.SETUP%(16%,"Transaction aborted",4%,3%,0%)		&	\ W% = FN.SETUP%(24%,"Send message",2%,2%,7%)			&	\ W% = FN.SETUP%(26%,"Delete a route",3%,3%,7%)			&	\ W% = FN.SETUP%(28%,"Delete all routes",3%,3%,3%)		&	\ W% = FN.SETUP%(30%,"Add a route",3%,3%,7%)			&	\ W% = FN.SETUP%(32%,"Get a message",2%,11%,7%)			&	\ W% = FN.SETUP%(3      4%,"Spawn a transaction",3%,4%,7%)		&	\ W% = FN.SETUP%(36%,"Abort transaction",3%,5%,3%)		&	\ W% = FN.SETUP%(38%,"Log data",3%,6%,3%)			&	\ W% = FN.SETUP%(40%,"Get TST station name",3%,3%,7%)		&	\ W% = FN.SETUP%(42%,"Get message source station name",3%,3%,7%)&	\ W% = FN.SETUP%(44%,"Get transaction type name",3%,3%,7%)	&	\ W% = FN.SETUP%(46%,"Get transaction source station name"	&		,3%,3%,7%)						&	\ W% = FN.SETUP%(48%,"Restart exchange",3%,3%,3%)		&	\ W% = FN.SETUP%(50%,"Get number of messages in mailbox"	      &		,3%,12%,3%)						&	\ W% = FN.SETUP%(56%,"Start of TST",1%,1%,1%)			&	\ W% = FN.SETUP%(58%,"End of TST",1%,1%,1%)			&	\ W% = FN.SETUP%(64%,"Create file",3%,7%,7%)			&	\ W% = FN.SETUP%(66%,"Open file",3%,7%,7%)			&	\ W% = FN.SETUP%(68%,"Close file",3%,7%,7%)			&	\ W% = FN.SETUP%(70%,"Erase file",3%,7%,7%)			&	\ W% = FN.SETUP%(72%,"Display file",3%,7%,7%)			&	\ W% = FN.SETUP%(74%,"Connect stream",3%,8%,3%)			&	\ W% = FN.SETUP%(76%,"Disconnect stream",3%,8%,3%)		&	\ W% = FN.SETUP%(78%,"Get a record",3%,10%,3      %)			&	\ W% = FN.SETUP%(80%,"Find a record",3%,10%,3%)			&	\ W% = FN.SETUP%(82%,"Put a record",3%,9%,3%)			&	\ W% = FN.SETUP%(84%,"Delete a record",3%,8%,3%)		&	\ W% = FN.SETUP%(86%,"Update a record",3%,9%,3%)		&	\ W% = FN.SETUP%(88%,"Unlock a record",3%,8%,3%)		&	\ W% = FN.SETUP%(90%,"Unlock all records",3%,8%,3%)		&	\ W% = FN.SETUP%(92%,"Get file specification",3%,13%,7%)	&	\ ASK.HELP$(0%) = "Respond with the file specification of the"	&		+  " trace file. The default UIC is [1,10]"		&	\ ASK.HELP$(1%) = "a      nd the default file type is .TRC."		&	\ ASK.HELP$(2%) = "Specify an output device and/or file for the"&		+ " produced listing."					&	\ W$ = " to be included in the trace listing."			&	\ ASK.HELP$(3%) = "Select a transaction type" + W$		&	\ ASK.HELP$(4%) = "Select a TST station" + W$			&	!								&	!	Set up the program variables.				&1100	\ ON FN.ASK%("Input file","","",0%,0%,2%) GOTO 1100,32000,1150	&	!								&	!	Ask about the input file. Branch on ESC, ^Z, other	&1150	\ ASK.CVT$ = ASK.CVT$+ ".TRC" IF INS      TR(1%,ASK.CVT$,".") = 0%	&	\ IF INSTR(1%,ASK.CVT$,"[") = 0%				&		THEN W% = INSTR(1%,ASK.CVT$,":")			&	\ ASK.CVT$ = LEFT(ASK.CVT$,W%) + ACCOUNT$			&		+ RIGHT(ASK.CVT$,W%+1%)					&	!								&	!	Fix up the input file specification for the defaults.	&1200	\ CALL VFC(VFC$)						&		\ OPEN ASK.CVT$ FOR INPUT AS FILE #2%,				&		ORGANIZATION SEQUENTIAL VARIABLE, ACCESS READ,		&		ALLOW READ, MAP VARBLE					&	\ INPUT$ = ASK.CVT$						&	!								&	!	Open the input file. It is a VFC file.			&	!	Save the corrected speci      fication.			&1250	\ ON FN.ASK%("Listing device","CL:","",0%,2%,1%)		&		GOTO 1100,32000,1300					&	!								&	!	Ask about the listing devive. Branch on ESC, ^Z, other	&1300	\ ASK.CVT$ = ASK.CVT$ + ".LST" IF ((INSTR(1%,ASK.CVT$,".") = 0%)&		AND (INSTR(1%,ASK.CVT$,":") < LEN(ASK.CVT$)))		&	\ OPEN ASK.CVT$ FOR OUTPUT AS FILE #4%				&	!								&	!	Append .LST if a file with no extension.		&	!	Open the listing device					&1350	\ ON FN.SELECT%(0%) GOTO 1250,1400				&	!								&	!	Request transaction selection. Bra      nch on ESC, DONE	&1400	\ ON FN.SELECT%(1%) GOTO 1350,1450				&	!								&	!	Request TST selection. Branch on ESC, DONE		&1450	\ ON FN.OPTION%(0%) GOTO 1400,1500				&	!								&	!	Does user want exchange messages. Branch on ESC, other	&1500	\ ON FN.OPTION%(1%) GOTO 1450,1550				&	!								&	!	Does user want independent messages. Branch on ESC,other&1550	\ ON FN.OPTION%(2%) GOTO 1500,1600				&	!								&	!	Does user want workspace. Branch on ESC, other		&1600	\ ON FN.OPTION%(3%) GOTO 1550,1650				&	!								&      	!	Does user want system calls. Branch on ESC, other	&1650	\ GOTO 2000 IF OPTION%(I%) = 0% FOR I% = 0% TO 3%		&	\ PRINT								&	\ PRINT "% You must select at least one option"			&	\ GOTO 1450							&	!								&	!	Make sure the user selected at least one option. If	&	!	not type an error message and go back to ask the	&	!	option questions again.					&2000	!***************************************************************&	!								&	!								&	!	P R I N T   S U M M A R Y   O F   U S E R 		&	!		R E Q U E S T		      			&	!								&	!***************************************************************&	!								&	\ PRINT #4%, "Transaction Trace Listing" , DATE$(0%) ; "  "	&		; TIME$(0%)						&	\ PRINT #4% FOR I% = 1% TO 2%					&	\ PRINT #4%, "Input file: " ; INPUT$				&	\ PRINT #4% FOR I% = 1% TO 2%					&	\ W% = FN.ITEM%(0%)						&	\ W% = FN.ITEM%(1%)						&	\ PRINT #4%, "Trace will include:" ;				&	\ PRINT #4%, TAB(23%) ; OPTEXT$(I%) IF OPTION%(I%) =0%		&		FOR I% = 0% TO 3%					&	!								&	!	Print the summary page.					&3      000	!***************************************************************&	!								&	!								&	!	P R O C E S S I N G   O F   A   R E C O R D		&	!								&	!								&	!***************************************************************&	!								&	\ GET #2%							&	\ LAST% = RECOUNT - 1%						&	\ INDEX% = CODE%/2%						&	\ GOTO 3020 IF (2% * INDEX% <> CODE%)				&	\ GOTO 3020 IF ((INDEX% > 46%) OR (INDEX% < 1%))		&	\ SELECT% = TYPE%(INDEX%)					&	\ GOTO 3050 IF SELECT% <> 0%					&	!								&	!	Get the record and mak      e sure its a valid type.		&3020	\ PRINT								&	\ PRINT "% Undefined function code" ; CODE%			&	\ GOTO 3000							&	!								&	!	Print the error message and go back for the next record	&3050	\ GOTO 3000 IF ((SELECT% = 1%) AND				&		(OPTION%(0%) * OPTION%(2%) <> 0%))			&	\ GOTO 3000 IF ((SELECT% = 2%) AND (OPTION%(1%) <> 0%))		&	\ GOTO 3000 IF ((SELECT% = 3%) AND (OPTION%(3%) <> 0%))		&	\ GOTO 3000 IF ((SELECT% = 4%) AND (OPTION%(3%) <> 0%))		&	\ GOTO 3000 IF ((SELECT% = 4%) AND (SELECT$(1%)<> ""))		&	!				      				&	!	Check if the user wants to see this type of record	&3100	\ GOTO 3000 IF ((SELECT$(0%) <> "") AND				&		(INSTR(1%,SELECT$(0%),EDIT$(TRANAME$,2%)+"/") = 0%))	&	\ GOTO 3000 IF ((SELECT$(1%) <> "") AND				&		(INSTR(1%,SELECT$(1%),EDIT$(TSTNAME$,2%)+"/") = 0%))	&	\ IF PROCESS%(INDEX%) = 4% THEN SAVE% = STATUS%(0%)		&	\ IF STATUS%(0%) > 0% THEN STATUS%(0%) = 1%			&	!								&	!	Check if the user wants this transaction type or TST.	&	!	For spawned transaction call, save the status and 	&	!	set it to OK.			      			&3150	\ W% = FN.BLANK%(STRING$(15%,42%) + "  " + HEADER$(INDEX%)	&		,5%,3%)							&	\ W% = FN.BLANK%("Transaction    TST" + SPACE$(10%) +		&		"Sequence" + SPACE$(7%) + "Status Wds   Name",		&		1%,0%)							&	\ W% = FORMAT%(INDEX%)						&	\ PRINT #4%, TRANAME$ ;						&	\ PRINT #4%, TAB(15%) ; TSTNAME$ ; IF (W% AND 1%) <> 0%		&	\ CALL DOUBLE BY REF (SEQ%())	 				&	\ PRINT #4%, TAB(28%) ; EDIT$(DOUBLE$,4%) ;			&	\ PRINT #4%, TAB(42%) ; STR$(STATUS%(0%)) ; TAB(49%) ;		&		STR$(STATUS%(1%)) ;					&			IF (W% AN      D 2%) <> 0%				&	\ W$ = NAME$							&	\ W$ = "" IF ASCII(NAME$) = 0%					&	\ PRINT #4%, TAB(56%) ; W$ ; IF (W% AND 4%) <> 0%		&	\ PRINT #4%							&	\ LINE% = LINE% + 1%						&	!								&	!	Print the header data for this record.			&3200	\ ON PROCESS%(INDEX%) GOTO 4100, 4200, 4300, 4400, 4500,	&		4600, 4700, 4800, 4900, 4900, 4220, 5200, 5300		&	!								&	!	Branch on type of function				&4000	!***************************************************************&	!								&	!								&	!	S P E C I F I C   F U N C       T I O N   T Y P E		&	!		P R O C E S S I N G				&	!								&	!								&	!***************************************************************&4100	!***************************************************************&	!								&	!								&	!	T R A N S A C T I O N   S L O T				&	!								&	!								&	!***************************************************************&	!								&	\ DISP% = ASCII(NAME$) + 256% * ASCII(MID(NAME$,2%,1%))		&	\ GOTO 4120 IF OPTION%(0%) <> 0%				&	\ W% = FN.BLANK%("Message:",2%,2%)				&	\ W% = F      N.ASCII%(0%,DISP%-1%)					&	!								&	!	Get the displacement to the workspace. Dump the 	&	!	message if requested.					&4120	\ GOTO 4199 IF OPTION%(2%) <> 0%				&	\ GOTO 4199 IF ASCII(MID(NAME$,2%,1%)) > 127%			&	\ W% = FN.BLANK%("Workspace:",2%,2%)				&	\ W% = FN.DUMP%(DISP%)						&	!								&	!	Dump the workspace if desired and there is some.	&4199	\ GOTO 3000							&	!								&	!	Return for the next record.				&4200	!***************************************************************&	!								&	!								&	      !	M E S S A G E 						&	!								&	!								&	!***************************************************************&	!								&	\ W1$ = NUM$(ASCII(RIGHT(LABEL$,5%)))				&	\ W$ = ""							&	\ W$ = "Send a report using form " + LABEL$ IF MSGTYPE$ = "FR"	&	\ W$ = "Send reply number" + W1$ IF MSGTYPE$ = "RE"		&	\ W$ = "Transfer to exchange " + LABEL$ IF MSGTYPE$ = "FX"	&	\ W$ = "Send reply number" + W1$ + "and abort" IF MSGTYPE$ ="RA"&	\ W$ = "Stop repeat" IF MSGTYPE$ = "CH"				&	\ W$ = "Proceed" IF MSGTYPE$ = "CP"	      			&	\ W$ = "Close transaction" IF MSGTYPE$ = "CC"			&	!								&	!	We come here for a sent message. Set up the type and	&	!	the information contained in the header.		&4220	\ W% = FN.BLANK%(W$,2%,2%) IF W$ <> ""				&	\ W% = FN.BLANK%("Message:",1%,2%)				&	\ W% = FN.ASCII%(0%,LAST%)					&	\ GOTO 3000							&	!								&	!	Dump the type and the message				&4300	!***************************************************************&	!								&	!								&	!	N O   A D D I T I O N A L   D A T A			&	!								&	!								      &	!***************************************************************&	!								&	\ GOTO 3000							&	!								&	!	Just go back for the next record.			&4400	!***************************************************************&	!								&	!								&	!	S P A W N   T R A N S A C T I O N			&	!								&	!								&	!***************************************************************&	!								&	\ IF SAVE% >= 0% THEN STATUS%(0%) = SAVE%			&	\ CALL DOUBLE BY REF (STATUS%())	 			&	\ W% = FN.BLANK%("Sequence number of spawned t      ransaction = "	&		+ EDIT$(DOUBLE$,4%),1%,3%)				&	!								&	!	Restore the sequence number and print it if the		&	!	call was successful.					&4420	\ GOTO 4220							&	!								&	!	The remainder of the processing is the same as for	&	!	any other message.					&4500	!***************************************************************&	!								&	!								&	!	A B O R T    T R A N S A C T I O N			&	!								&	!								&	!***************************************************************&	!								&	\ CALL DOUBLE BY REF       (NAME$) 					&	\ W% = FN.BLANK%("Sequence number of aborted transaction = "	&		+ EDIT$(DOUBLE$,4%),1%,0%)				&	\ GOTO 3000							&	!								&	!	Print the transaction sequence number and go back for	&	!	the next record.					&4600	!***************************************************************&	!								&	!								&	!	L O G   D A T A 					&	!								&	!								&	!***************************************************************&	!								&	\ W% = FN.BLANK%("Log type is " + LEFT(NAME$,1%),2%,2%)		&	\ W% = FN.B      LANK%("Data:",2%,2%)					&	\ W% = FN.DUMP%(0%)						&	\ GOTO 3000							&	!								&	!	Print the log type.					&	!	Dump the data and go back for the next record.		&4700	!***************************************************************&	!								&	!								&	!	F I L E    O P E R A T I O N S				&	!								&	!								& 	!***************************************************************&	!								&	\ ORG% = ASCII(DATA$(21%))/16%					&	\ W% = FN.BLANK%("File organization is " + ORGANIZATION$(ORG%),	&		1%,2%)							      &	\ W% = FN.LINE%("Record format is "+ RECORD$(ASCII(DATA$(23%))))&	\ W% = ASCII(DATA$(16%))					&	\ W% = FN.LINE%("File is opened for write access")		&		IF ((W% = 1%) OR (W% = 8%))				&	\ W$ = DATA$(34%) + DATA$(35%) + DATA$(32%) + DATA$(33%)	&	\ CALL DOUBLE BY REF (W$)	 				&	\ W% = FN.LINE%("Maximum record number = " + EDIT$(DOUBLE$,4%))	&		IF ORG% = 1%						&	\ W% = FN.LINE%("Maximum record size =" + FN.INT$(30%))		&	\ W% = FN.LINE%("Bucket size =" + NUM$(ASCII(DATA$(49%))))	&	\ W% = FN.LINE%("Block siz      e =" + FN.INT$(46%))			&	\ GOTO 3000							&	!								&	!	List the FAB and go back for the next record.		&4800	!***************************************************************&	!								&	!								&	!	R E C O R D   O P E R A T I O N S   W I T H O U T	&	!		D A T A						&	!								&	!								&	!***************************************************************&	!								&	\ GOSUB 12200							&	\ GOTO 3000							&	!								&	!	Print the RAB and return for the next record.		&4900	!*********************************      ******************************&	!								&	!								&	!	R E C O R D   O P E R A T I O N S   W I T H   D A T A	&	!								&	!								&	!***************************************************************&	!								&	\ SUBTYPE% = ASCII(MID(NAME$,3%,1%))				&	\ SUBTYPE% = 3% IF ((SUBTYPE% = 2%) AND (PROCESS%(INDEX%) = 9%))&	\ GOSUB 12000 IF SUBTYPE% = 1%					&	\ GOSUB 12100 IF SUBTYPE% = 2%					&	\ IF SUBTYPE% = 3% THEN W% = FN.BLANK%("Record:",2%,2%)		&	\ W% = FN.DUMP%(0%)						&	!								&	!	Get the sub record t      ype. For puts and updates change	&	!	type 2 to type 3. Process the type; 12000 = FAB,	&	!	12100 = KEY, FN.DUMP% = record.				&4920	\ GOTO 3000 IF ASCII(MID(NAME$,5%,1%)) >= 128%			&	\ GET #2%							&	\ LAST% = RECOUNT - 1%						&	\ GOTO 4900							&	!								&	!	If this is the last record return to standard 		&	!	standard processing. Othewise read the next record	&	!	and continue processing it.				&5200	!***************************************************************&	!								&	!								&	!	N U M B E R          I N   M A I L B O X			&	!								&	!								&	!***************************************************************&	!								&	\ W$ = NUM$(ASCII(NAME$) + ASCII(MID(NAME$,2%,1%))*256%)	&	\ W% = FN.BLANK%("There are" + W$ + "messages queued at the " +	&		LEFT(VARIABLE$,6%) + " mailbox station",1%,0%)		&	\ GOTO 3000							&	!								&	!	Print how many messages are queued and the name of the	&	!	station. return for the next record.			&5300	!***************************************************************&	!								&      	!								&	!	G E T   F I L E   S P E C I F I C A T I O N		&	!								&	!								&	!***************************************************************&	!								&	\ W% = FN.BLANK%("File specification is " + VARIABLE$,1%,0%)	&	\ GOTO 3000							&	!								&	!	Print the specification and return for the next record	&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!	      							&	!***************************************************************&12000	!***************************************************************&	!								&	!								&	!	P R I N T   C H A N N E L   N U M B E R   A N D   R A B &	!								&	!								&	!***************************************************************&	!								&	\ GOSUB 12200							&	\ ORG% = ASCII(DATA$(16%))					&	\ W% = FN.LINE%("Access mode is " + ACCESS$(ORG%))		&	\ GOTO 12099 IF ORG% <> 1%					&	\ GOTO 12099 IF ((PROCESS%(INDEX%) = 8%) AN      D (CODE% <> 84%))	&	\ W1% = ASCII(DATA$(19%))					&	\ W% = FN.LINE%("Greater than or equal search") 		&		IF (W1% AND 8%) <> 0%					&	\ W% = FN.LINE%("Greater than search") IF (W1% AND 16%) <> 0%	&	\ W% = FN.LINE%("Reference key (if applicable) ="		&		+ NUM$(ASCII(DATA$(30%))))				&	\ W$ = DATA$(40%) + DATA$(41%) + DATA$(38%) + DATA$(39%)	&	\ CALL DOUBLE BY REF (W$)					&	\ W% = FN.LINE%("Record number (if applicable) = "		&		+ EDIT$(DOUBLE$,4%))					&	!								&	!	Print the channel number and the RAB.			&12      099	\ RETURN							&	!								&	!	Return							&12100	!***************************************************************&	!								&	!								&	!	P R I N T   T H E    K E Y 				&	!								&	!								&	!***************************************************************&	!								&	\ W% = FN.BLANK%("",1%,1%)					&	\ W$ = "Key = "							&	\ CHANGE W$ TO CHAR%						&	\ COL% = 6%							&	\ FOR T% = 0% TO LAST%						&		\ W% = ASCII(DATA$(T%))					&		\ W% = 32% IF ((W% < 32%) OR (W% > 126%))		&		\ COL% = COL% + 1%					      &		\ CHAR%(COL%) = W%					&		\ IF COL% >= 80% THEN GOSUB 12300			&		\ CHAR%(I%) = 32% FOR I% = 1% TO 6%			&		\ COL% = 6%						&	!								&	!	Set up the header. Loop over the characters. If we	&	!	reach the end of a line print it and reset the header	&	!	to blanks.						&12120	\ NEXT T%							&	\ GOSUB 12300							&	!								&	!	Loop till done. Then print the last line.		&12149	\ RETURN							&	!								&	!	Return							&12200	!***************************************************************&	!								&	!				      				&	!	P R I N T    C H A N N E L   N U M B E R 		&	!								&	!								&	!***************************************************************&	!								&	\ W% = FN.BLANK%("Channel number =" + NUM$(ASCII(NAME$)),1%,3%)	&	\ RETURN							&	!								&	!	Print the two status values and exit.			&12300	!***************************************************************&	!								&	!								&	!	P R I N T   C H A R A C T E R   A R R A Y		&	!								&	!***************************************************************&	!				      				&	\ CHAR%(0%) = COL%						&	\ CHANGE CHAR% TO W$						&	\ W% = FN.LINE%(W$)						&	\ COL% = 0%							&	\ RETURN							&	!								&	!	Set the length of the array in the zeroth element. 	&	!	Change it to ascii and print it. Reset the column	&	!	pointer and return.					&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!********************************      *******************************&15020	!***************************************************************&	!								&	!								&	!	S E T   U P   F O R   D I F F E R E N T			&	!		F U N C T I O N S				&	!								&	!	USAGE FORMAT:		FN.SETUP%(INDEX%,HEADER$,TYPE%,	&	!					PROCESS%,FORMAT%)	&	!								&	!	INPUT:			INDEX% = function code		&	!				HEADER$ = header to be printed	&	!				TYPE% = selection type		&	!				PROCESS% = process number	&	!				FORMAT% = format flag		&	!								&	!	RETURNS:		none				&	!								&	!	      This function will fill in the array elements associated&	!	with a specific function.				&	!								&	!***************************************************************&	!								&	\ DEF FN.SETUP%(INDEX%,HEADER$,TYPE%,PROCESS%,FORMAT%)		&	\ W% = INDEX%/2%						&	\ HEADER$(W%) = HEADER$						&	\ TYPE%(W%) = TYPE%						&	\ PROCESS%(W%) = PROCESS%					&	\ FORMAT%(W%) = FORMAT%						&	!								&	!	Use INDEX/2 as the array index and fill in the elements	&15049	\ FNEND								&	!								&	!	Return							&15100	!***      ************************************************************&	!								&	!								&	!	S E L E C T I O N   D I A L O G   F U N C T I O N	&	!								&	!	USAGE FORMAT:		FN.SELECT%(INDEX%)		&	!								&	!	INPUT:			INDEX% = selection item		&	!								&	!	RETURN:			1 if ESC typed			&	!				2 otherwise			&	!								&	!				SELECT$(INDEX%) = selected list	&	!								&	!	This function handles the selection dialog. It return	&	!	the selected list in SELECT$(). Each entry has a "/"	&	!	appended to it as a separator. If       the user selects	&	!	"ALL" the function returns a null string.		&	!								&	!***************************************************************&	!								&	\ DEF FN.SELECT%(INDEX%)					&	\ FN.SELECT% = 2%						&	\ SELECT$(INDEX%) = ""						&	\ DEFAULT$ = "ALL"						&	!								&	!	Initialize the return value, selection list and default	&	!	value.							&15120	\ ON FN.ASK%(SELTEXT$(INDEX%),DEFAULT$,"A",6%,INDEX%+3%,1%)	&		GOTO 15140,32000,15160					&	!								&	!	Ask the question. Branch on ESC, ^Z, other		&151      40	\ FN.SELECT% = 1%						&	\ GOTO 15199							&	!								&	!	For ESC set the return and go to exit			&15160	\ GOTO 15190 IF ASK.CVT$ = "ALL"				&	\ GOTO 15180 IF ASK.CVT$ = "DONE"				&	\ SELECT$(INDEX%) = SELECT$(INDEX%) + ASK.CVT$ + "/"		&	\ DEFAULT$ = "DONE"						&	\ GOTO 15120							&	!								&	!	Check the response. Branch if it is one of the special	&	!	ones. Otherwise add it to the current list. Change the	&	!	default and loop.					&15180	\ GOTO 15199 IF SELECT$(INDEX%) <> "" 				&	\ PRINT								&	\       PRINT "% You must pick at least one"				&	\ GOTO 15120							&	!								&	!	If the user typed DONE, make sure that at least one 	&	!	item was selected.					&15190	\ SELECT$(INDEX%) = ""						&	!								&	!	Response was ALL. Make the list into a null		&15199	\ FNEND								&	!								&	!	Return							&15200	!***************************************************************&	!								&	!								&	!	S E L E C T   O P T I O N   D I A L O G			&	!								&	!								&	!	USAGE FORMAT:		FN.OPTION%(INDEX%)		&	!							      	&	!	INPUT:			INDEX% = pointer to item	&	!								&	!	RETURN:			1 if ESC typed			&	!				2 otherwise			&	!								&	!				OPTION%(INDEX%) = selection flag&	!								&	!	This funtion is used for the option selection dialog.	&	!	If the user responds with a YES OPTION%() will be set to&	!	zero. For a NO response it is set to -1.		&	!								&	!***************************************************************&	!								&	\ DEF FN.OPTION%(INDEX%)					&	\ FN.OPTION% = 1%						&	\ ASK.HELP$(5%) = "Answer YES if you wa      nt the trace listing to "&		+ "include " + OPTEXT$(INDEX%)				&	\ W% = FN.ASK%(OPTEXT$(INDEX%),"YES","Y",0%,5%,1%)		&	\ GOTO 32000 IF W% = 2%						&	\ GOTO 15249 IF W% = 1%						&	\ OPTION%(INDEX%) = 3% - W%					&	\ FN.OPTION% = 2%						&	!								&	!	Set the default return for ESC. Ask the question. Skip	&	!	if response was ESC or ^Z. Set the OPTION% flag and	&	!	the return value.					&15249	\ FNEND								&	!								&	!	Return							&15300	!***************************************************************&	      !								&	!								&	!	I T E M I Z E   S E L E C T I O N   L I S T		&	!								&	!	USAGE FORMAT:		FN.ITEM%(INDEX%)		&	!								&	!	INPUT:			INDEX% = pointer to item	&	!				SELECT$() = section list string	&	!								&	!	RETURNS:		none				&	!								&	!	This function is used to list the selected items. 	&	!								&	!***************************************************************&	!								&	\ DEF FN.ITEM%(INDEX%)						&	\ PRINT #4%, SELTEXT$(INDEX%) ; "s" ;				&	\ W$ = SELECT$(INDEX%)						&	\ W$ = "ALL/" I      F W$ = ""					&	!								&	!	Print the header. Get the list. Reset it if null	&15320	\ PRINT #4%, TAB(16%) ;						&	\ FOR I% = 1% TO 8%						&		\ W% = INSTR(1%,W$,"/")					&		\ GOTO 15340 IF W% = 0%					&		\ PRINT #4%, LEFT(W$,W%-1%) ; "	" ;			&		\ W$ = RIGHT(W$,W%+1%)					&	\ NEXT I%							&	\ PRINT #4%							&	\ GOTO 15320							&	!								&	!	Space over 2 tab stops. Print 8 items per line. An	&	!	item is 8 columns wide. Loop till list is empty.	&15340	\ PRINT #4% FOR I% = 1% TO 3%					&	!								&	!	Add       some blank lines					&15349	\ FNEND								&	!								&	!	Return							&15400	!***************************************************************&	!								&	!								&	!	P R I N T   B L A N K   L I N E S   A N D   T E X T	&	!								&	!	USAGE FORMAT:		FN.BLANK%(TEXT$,NUMBER%,EXTRA%)	&	!								&	!	INPUT:			TEXT$ = text to be printed	&	!				NUMBER% = number of lines to 	&	!						skip		&	!				EXTRA% = number of lines requir-&	!					to be remaining on page	&	!								&	!	RETURN:			none				&	!								&	!	This fun      ction is used to print some blank lines followed&	!	by a line of text. It requires that there be at least	&	!	EXTRA% lines left on the page after the text line.	&	!	If this is not the case the function issues a form feed	&	!	does not print the blank lines, and prints the text line&	!								&	!***************************************************************&	!								&	\ DEF FN.BLANK%(TEXT$,NUMBER%,EXTRA%)				&	\ IF LINE% + NUMBER% + 1% + EXTRA% > MAXLINE% THEN LINE% = 0%	&	\ PRINT #4%, FF$ ; "Transaction tr      ace from file " ; INPUT$ ;	&		TAB(70%) ; "Page" ; PAGE%				&	\ PAGE% = PAGE% + 1%						&	\ PRINT #4%							&	\ PRINT #4%							&	\ GOTO 15440							&	!								&	!	Check if there are enough lines remaining on the page.	&	!	If not, issue a form feed, reset the line count,	&	!	print the heading, and skip the printing of blank lines.&15420	\ PRINT #4% FOR I% = 1% TO NUMBER%				&	\ LINE% = LINE% + NUMBER%					&	!								&	!	Print the blank lines and update the line count		&15440	\ PRINT #4%, TEXT$						&	\ LINE%       = LINE% + 1%						&	!								&	!	Print the line of text and update the line count	&15449	\ FNEND								&	!								&	!	Return							&15500	!***************************************************************&	!								&	!								&	!	A S C I I    D U M P					&	!								&	!	USAGE FORMAT:		FN.ASCII%(START%,END%)		&	!								&	!	INPUT:			START% = pointer to first elem.	&	!				END% = pointer to last element	&	!				DATA$ = Array to be dumped 	&	!					elements are 1 byte long&	!								&	!	RETURN:			none				&	!						      		&	!	This routine will dump the array DATA$ in ascii format	&	!	Each line will contain 50 characters and		&	!	the offset value. Nonprinting characters will appear	&	!	as blanks.						&	!***************************************************************&	!								&	\ DEF FN.ASCII%(START%,END%)					&	\ COL% = 0%							&	\ FOR T% = 0% TO END% - START%					&		\ GOTO 15520 IF (T%/50%)*50% <> T% 			&		\ GOSUB 12300						&		\ W% = FN.LINE%(DEMARK$) IF T% = 0%			&		\ W% = FN.NUMCHANGE%(NUM$(T%) + "	")		&	!								&	!      	Initialize the print string. Loop over the characters.	&	!	If the start of a new line, print the old line and add	&	!	the offset to the output text.				&	!	The header is printed before the first line.		&15520		\ W% = ASCII(DATA$(T%+START%)) AND 127%			&		\ W% = 32% IF ((W% < 32%) OR (W% > 126%))		&		\ COL% = COL% + 1%					&		\ CHAR%(COL%) = W%					&	\ NEXT T%							&	\ GOSUB 12300							&	\ W% = FN.LINE%(DEMARK$)					&	!								&	!	If the character is nonprinting make it into a blank.	&	!	Loop till done, b      ut don't forget to print the last lines&15549	\ FNEND								&	!								&	!	Return							&15600	!***************************************************************&	!								&	!								&	!	D U M P   D A T A					&	!								&	!	USAGE FORMAT:		FN.DUMP%(START%)		&	!								&	!	INPUT:			START% = offset for start of	&	!					 dump			&	!				DATA$ = array to be dumped	&	!					elements are 1 byte long&	!								&	!	RETURN:			none				&	!								&	!	This routine is used to dump the data array. Both an	&	!	ascii and intege      r dump are printed.			&	!								&	!***************************************************************&	!								&	\ DEF FN.DUMP%(START%)						&	\ W% = FN.ASCII%(START%,LAST%)					&	\ W% = FN.BLANK%("",1%,2%)					&	\ COL% = 0%							&	\ FOR T% = 0% TO LAST% - START% STEP 2%				&		\ GOTO 15620 IF (T%/20%)*20% <> T%			&		\ GOSUB 12300						&		\ W% = FN.NUMCHANGE%(NUM$(T%/2%) + "	")		&	!								&	!	Get an ASCII dump. Add a couple of blank lines. Loop	&	!	over the elements. Every 10 integers is a new line.	&	!	Add       the offset to the line.				&15620		\ W1$ = FN.INT$(T% + START%)				&		\ W% = FN.NUMCHANGE%(SPACE$(7%-LEN(W1$)) + W1$)		&	\ NEXT T%							&	\ GOSUB 12300							&	!								&	!	Convert to an integer along with the leading zeroes.	&	!	Loop till done. Don't forget to print the last line.	&15649	\FNEND								&	!								&	!	Return							&15700	!***************************************************************&	!								&	!								&	!	C O N V E R T   2   B Y T E   I N T E G E R   T O 	&	!		A   S T R I N G					&	!		      						&	!	USAGE FORMAT:		FN.INT$(INDEX%)			&	!								&	!	INPUT:			INDEX% = index to element in 	&	!					  array			&	!				DATA$ = byte array		&	!								&	!	RETURN:			string value of integer ala NUM$&		!								&	!	This function takes the 2 bytes pointed to by index and	&	!	converts them into an integer string.			&	!								&	!***************************************************************&	!								&	\ DEF FN.INT$(INDEX%) = NUM$(ASCII(DATA$(INDEX%)) +		&		256% * ASCII(DATA$(INDEX%+1%)))				&	!								&	!	J      ust do it.						&15800	!***************************************************************&	!								&	!								&	!	P R I N T   A   L I N E					&	!								&	!	USAGE FORMAT:		FN.LINE%(TEXT$)			&	!								&	!	INPUT:			TEXT$ = text to be printed	&	!								&	!	RETURN:			none				&	!								&	!	This function is used to print a line. If the line	&	!	exceeds the page, a form feed is issued first. The	&	!	line pointer is updated.				&	!								&	!***************************************************************&	!						      		&	\ DEF FN.LINE%(TEXT$) = FN.BLANK%(TEXT$,0%,0%)			&	!								&	!	This is just a special form of the BLANK% function.	&	15900	!***************************************************************&	!								&	!								&	!	A D D    S T R I N G   T O   T H E   P R I N T 		&	!		A R R A Y 					&	!								&	!	USAGE FORMAT:		FN.NUMCHANGE%(TEXT$)		&	!								&	!	INPUT:			TEXT$ = text to be added to 	&	!					the array		&	!				COL% = current column pointer	&	!				CHAR% = print array		&	!								&	!	RETURN:			COL% = new       column pointer	&	!				CHAR% = character array with	&	!					with text added		&	!								&	!	This function is used to add text to the character	&	!	array that will be printed. It is done in this round	&	!	about manner in order to cut down on garbage collection	&	!								&	!***************************************************************&	!								&	\ DEF FN.NUMCHANGE%(TEXT$)					&	\ CHANGE TEXT$ TO DUM%						&	\ FOR I% = 1% TO DUM%(0%)					&		\ COL% = COL% + 1%					&		\ CHAR%(COL%) = DUM%(I%)				&	\ NEXT I%		      					&	\ FNEND								&	!								&	!	Conver the strint to  and integer array. Move each 	&	!	element into the character array. Return when done.	&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19050	\ IF ERR = 11 THEN RESUME 32000					&	!								&	!	If EOF we are done.					&19100	\ GOTO 19900 IF ((ERL <> 1200) AND (ERL <>       1300))		&	\ PRINT								&	\ IF ERR = 8 THEN PRINT "% Device not available"		&		ELSE PRINT "% Open error" ; ERR ; "for file " ; ASK.CVT$&	!								&	!	Only expected errors are at the opens. If error is 8	&	!	the device is busy. Otherwise type a general message.	&19120	\ IF ERL = 1200 THEN RESUME 1100 ELSE RESUME 1250		&	!								&	!	Go back to the question.				&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	      &	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000      	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	!								&	\ CLOSE 2%,4%							&	!								&	!	Close all open files.					&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!*************************************************************      **&	!								&	\ END          œ	Ã`Á› 8$     °   OLD [113,10]AUTOSKAPPEND [113,10]SGNPRCTXTAPPEND [113,10]AUTOMAP2APPEND [113,10]AUTOTABAPPEND [113,10]AUTOOCTAPPEND [113,10]AUTOPSAPPEND [113,10]CHKDATREP [113,34]AUTOSK.LSTEXI°          Uà“Á› 8$        20001	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E    T I T L E			&	!								&	!		B R E E D					&	!								&	!								&	!	(Title information required only for library entries)	&	!								&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	30-OCT-77				&	!	Author(s):	BJD					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------  ------    ---   ------------------------------- &	!								&	!***********************************************      ****************&	!								&	!								&	!	INPUT:		TASK$ - The task name to be spawned	&	!				(must be <6 characters)		&	!			COMMAND$ - The command line to be given &	!				the spawned task.		&	!								&	!			RETURN% - 0% if a fatal error should	&	!				cause a message to print and	&	!				then cause the parent task to 	&	!				terminate.			&	!				- 1% if control should return	&	!				to instruction after GOSUB	&	!				when a fatal error occurs.	&	!								&	!								&	!	RETURNS:	If RETURN%=1%, then ERR1%, ERR2%,	      &	!				and SPAWN.ERROR% contain	&	!				various error codes.		&	!								&	!	LOCAL:		SEE BELOW				&	!								&	!								&	!								&	!								&	!***************************************************************&	!								&	!								&	!	S U B R O U T I N E     D E S C R I P T I O N		&	!								&	!								&	!***************************************************************&	!								&	!	This subroutine may be invoked from another Basic+2 program &	!	to spawn another task.  The spawned task uses TI: for 	&	!	I/O an      d the parent task waits for the spawned task 	&	!	to exit before continuing.				&	!								&	!	It should be appended to the main program.  It is called&	!	via a GOSUB 20001.  It needs variables called		&	!	TASK$ which contains the 6 character task to be spawned	&	!	and COMMAND$ which contains the command line to be 	&	!	executed.						&	!	RETURN% specifies how errors in the spawned task will	&	!	be treated in the parent program.			&	!								&	!***************************************************************      &	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ERR1%			Error indicator for ASTO50 call	&	!	ERR2%			Error indicator for ASTO50 call	&	!	RETURN%			If 1, return to main prog if error&	!	SPAWN.ERROR%		Error indicator for SPAWN call	&	!	TASK.NAME%()		Array for RAD50 task name	&	!	TEMP1$			Temporary working variable	&	!	TEMP2$			Temporary working variable	&	!	TEMP1      %			Temporary working variable	&	!	TEMP2%			Temporary working variable	&	!								&	!***************************************************************&	!                                                               &	!                                                               &	! 	S P A W N    A    T A S K 				&	!                                                               &	!                                                               &	!**************************************************************      *&20003	\ GO TO 20005	IF LEN(TASK$) <> 6				&	\ TEMP1$= LEFT(TASK$,3%)					&	\ TEMP2$= RIGHT(TASK$,4%)					&	\ CALL ASTO50 (TEMP1$,TEMP1%,ERR1%)				&	\ CALL ASTO50 (TEMP2$,TEMP2%,ERR2%)				&	\ TASK.NAME%(0%)= TEMP1%					&	\ TASK.NAME%(1%)= TEMP2%					&	!								&	\ CALL SPAWN (TASK.NAME%(),COMMAND$,SPAWN.ERROR%)		&	\ GO TO 20004	IF RETURN%= 1%					&	\ GO TO 20005	IF SPAWN.ERROR% <> 1%				&	\ GO TO 20005	IF ERR1% <> 0%					&	\ GO TO 20005	IF ERR2% <> 0%					&20004	\ RETURN							&	!								&	!	Check that the       task name is exactly 6 characters long	&	!	Convert the task name to RAD50				&	!	Spawn the task with the command line in COMMAND$	&	!	Fatal error if any of the calls did not work		&	!	Unless RETURN%= 1%					&20005	\ PRINT "? FATAL error in a  SPAWN call"			&	\ PRINT COMMAND$						&	\ PRINT ERR1%, ERR2%, SPAWN.ERROR%				&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (2%,0%)						&	!								&	!	The error message for the SPAWN subroutine		&20006	\ DIM TASK.NAME%(1)						&	!								&	!	This array contains    $   the RAD50 version of the task name	&$          úŠI€“Á› 8$ K      811	\ COM	(VTSTRN)	TERMINAL.LINE.1$=79,			&				TERMINAL.LINE.2$=79,			&				VT.CMD$=79				&	!								&	!	These contain the command strings for the QIO call	&	!	They must have fixed addresses and so reside in common	&28001	!$**************************************************************&	!                                                               &	!                                                               &	! 	Spawn a task with a virtual terminal			&	!                                                                     &	!                                                               &	!***************************************************************&	!								&	\ DEF  FN.TASK.INIT% (TASK$)				&	!								&	!								&	\ FN.TASK.INIT%= 1%						&	\ VT.A$= TASK$							&	\ VT.A$= LEFT(TASK$,6%)	IF LEN(TASK$) > 6%			&	\ CALL ASTO50 (LEFT(VT.A$,3%),TEMP1%,ASTO50.ERR1%)			&	\ CALL ASTO50 (RIGHT(VT.A$,4%),TEMP2%,ASTO50.ERR2%)		&	\ VT.NAME%(0)= TEMP1%						&	\ VT.NAME%(1)= TEMP2%						&	!								&	!	Convert the task n      ame to RAD50 - truncate if necessary	&	!								&	\ EX.FLAG%,IN.FLAG%,OUT.FLAG%= 0%					&	\ EV.FLG%= 31%							&	\ CALL VTINIT BY REF (VT.NAME%(),EV.FLG%,EX.FLAG%,IN.FLAG%,OUT.FLAG%,VT.CMD$,VT.ERR%)&	\ GO TO 28005	IF (ASTO50.ERR1% <> 0% ) OR (ASTO50.ERR2% <> 0%)&	\ GO TO 28005	IF VT.ERR% <> 1%				&	!								&28004	\ FNEND								&	!								&	!	Convert the task name to RAD50, spawn the task		&	!	pass the macro AST routines the addresses of various flags&28005	\ FN.TASK.INIT%= 0%						&	\ GO TO 28004							&	      !								&	!	Notify main program that Initialization failed		&28008	DEF FN.VT.EOF%							&	\ CALL QIOEOF							&	\ IN.FLAG%= 0%							&	\ FN.VT.EOF%= 1%						&	\ FNEND								&	!								&	!	Force EOF						&28010	!$**************************************************************&	!                                                               &	!                                                               &	! 	Remove the virtual terminal				&	!                                                               &	      !                                                               &	!***************************************************************&	!								&	\ DEF FN.VT.DONE%						&	\ CALL VTREM(VT.ERR%)						&	\ FN.VT.DONE%= 0%	IF VT.ERR% <> 1%				&	\ FN.VT.DONE%= 1%	IF VT.ERR% =  1%			&	\ FNEND								&	!								&	!	Remove the virtual terminal				&28020	!$**************************************************************&	!                                                               &	!                                                                     &	! 	Create a virtual terminal				&	!                                                               &	!                                                               &	!***************************************************************&28021	\ DEF FN.VT.CREATE%						&	\ CALL VTMAKE(VT.TEMP%)						&	\ FN.VT.CREATE%= VT.TEMP%					&	\ FNEND								&	!								&	!	Create a virtual terminal				&28025	!$**************************************************************&	!                                                                     &	!                                                               &	! 	Write a command to the offspring			&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ DEF FN.VT.WRITE.TO% (LINE$)					&	!								&	\ VT.LENGTH%= LEN(LINE$)						&	\ TERMINAL.LINE.2$= LINE$					&	\ GO TO 28027	IF LINE$= ""					&	\ CALL QIO      OUT BY REF (TERMINAL.LINE.2$,VT.LENGTH%)			&	\ IN.FLAG%= 0%							&	\ FN.VT.WRITE.TO%= 1%						&	\ GO TO 28028							&28027	\ CALL QIODUM 							&	\ IN.FLAG%= 0%							&	\ FN.VT.WRITE.TO%= 1%						&	!								&	!	If null response, write with a special function code	&28028	\ FNEND								&	!								&	!	Write a line of command to the offspring task via a 	&	!	QIO to the virtual terminal driver.  			&28050	!$**************************************************************&	!                                                                     &	!                                                               &	! 	Read a response from the offspring			&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ DEF FN.READ.RESPONSE$						&28055	\ CALL QIOIN BY REF (TERMINAL.LINE.1$)				&	\ OUT.FLAG%= 0%							&	\ FN.READ.RESPONSE$= TERMINAL.LINE.1$				&	\ TERMINAL.LINE.1$= ""      						&28056	\ FNEND								&           <“Á› 8$        25200	!***************************************************************&	!								&	!								&	!	C H E C K   D A T E   F U N C T I O N			&	!								&	!								&	!	Version:	1					&	!	Edit Level:	00					&	!	Edit Date:	01-MAR-77				&	!	Author:		GW					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	----	  ---	--------------------------------&	!								&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.CHK.DATE%(INPUT.DATE$)		&	!							      	&	!	INPUT:		INPUT.DATE$ - String to be checked	&	!								&	!	RETURNS:	0  - Invalid input			&	!			-1 - Valid input			&	!								&	!			YEAR% - year since 1900			&	!			MONTH% - month (1-12)			&	!			DAY% - day of month (1-31)		&	!			ON ERROR GOTO = 19000			&	!								&	!	Local:		CHK.W%		working variable	&	!								&	!								&	!								&	!	This function accepts one argument and verifies that	&	!	it is a valid date expressed in DEC standard format.	&	!	If valid it returns the integer values of the year,	&	!	mo      nth, and day.						&	!								&	!***************************************************************&	!								&	DEF FN.CHK.DATE%(INPUT.DATE$)					&25210	\ ON ERROR GOTO 25240						&	\ FN.CHK.DATE% = 0%						&	\ INPUT.DATE$ = EDIT$(INPUT.DATE$,2%+32%)			&	\ GOTO 25230 IF ((INSTR(1%,INPUT.DATE$,".") <> 0%)		&		OR (INSTR(1%,INPUT.DATE$,"+") <> 0%))			&	\ CHK.W% = INSTR(1%,INPUT.DATE$,"-")				&	\ GOTO 25230 IF CHK.W% = 0%					&	\ GOTO 25230 IF MID(INPUT.DATE$,CHK.W%+4%,1%) <> "-"		&	\ GOTO 25230 IF LEN(INPUT.DATE$      ) <> CHK.W% + 6%			&	\ YEAR% = VAL(RIGHT(INPUT.DATE$,CHK.W%+5%))			&	\ GOTO 25230 IF YEAR% < 0%					&	\ DAY% = VAL(LEFT(INPUT.DATE$,CHK.W%-1%))			&	\ GOTO 25230 IF DAY% <= 0%					&	\ CHK.W% = INSTR(1%,						&		"/JAN/FEB/MAR/APR/MAY/JUN/JUL/AUG/SEP/OCT/NOV/DEC",	&		"/" + MID(INPUT.DATE$,CHK.W%+1%,3%)) +3%		&	\ MONTH% = CHK.W%/4%						&	\ GOTO 25230 IF MONTH%*4% <> CHK.W%				&	\ GOTO 25230 IF DAY% > VAL(MID("312931303130313130313031",	&		MONTH%*2%-1%,2%))					&	\ GOTO 25230 IF ((MONTH% = 2%) AND (DAY% = 29%)       AND		&		(YEAR% <> (YEAR%/4%)*4%))				&	\ FN.CHK.DATE% = -1%						&	!								&	!	This does it all.					&	!								&	!	Set a new error trap.					&	!	Set the return for a failure.				&	!	Delete blanks and make all uppercase			&	!	Don't allow a decimal point or plus sign.		&	!	Make sure there are two dashes.				&	!	Break up the input about the dashes.			&	!	Get the year and make sure its two positive digits.	&	!	Get the day and make sure its positive.			&	!	Get the month and make sure its included in our list	&      	!	Convert the month to a number.				&	!	Make sure the day doesn't exceed the limit for the month&	!	Feb only has 29 days every 4 (leap) years.		&	!	We get this far if everthing is ok. Set the return.	&25230	\ ON ERROR GOTO 19000						&	\ FNEND								&	!								&	!	Reset the error trap and return.			&25240	!***************************************************************&	!								&	!	E R R O R   R O U T I N E   F O R   C H E C K		&	!								&	!		D A T E   F U N C T I O N			&	!								&	!*******************   0  ********************************************&	!								&	\ IF ERR = 52 THEN RESUME 25230 ELSE GOTO 19900			&	!								&	!	The only expected error is an invalid number. That	&	!	results in an invalid input return. For all other	&	!	errors go to the standard error handling in the		&	!	main program.						&0         u~“Á› 8$        25250	!***************************************************************&	!								&	!								&	!	C H E C K   T I M E   F U N C T I O N			&	!								&	!								&	!	Version:	1					&	!	Edit Level:	00					&	!	Edit date:	01-MAR-77				&	!	Author:		GW					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	----	  ---	--------------------------------&	!								&	!								&	!***************************************************************&	!	USAGE FORMAT:	FN.CHK.TIME%(INPUT.DATE$)		&	!								&	!	INPUT:		INPUT.TIM      E$ - String to be checked	&	!								&	!	RETURNS:	0  - Invalid input			&	!			-1 - Valid input			&	!								&	!			HOUR% - hour (0-23)			&	!			MINUTE% - minute (0-59)			&	!			ON ERROR GOTO = 19000			&	!								&	!	LOCAL:		CHK.W%		working variable	&	!								&	!								&	!	This function accepts one argument and verifies that	&	!	it is a valid time expressed in the DEC standard 24	&	!	hour format. If valid it returns the integer values	&	!	of the hour and minute.					&	!								&	!******************************      *********************************&	!								&	DEF FN.CHK.TIME%(INPUT.TIME$)					&25260	\ ON ERROR GOTO 25290						&	\ FN.CHK.TIME% = 0%						&	\ INPUT.TIME$ = EDIT$(INPUT.TIME$,2%)				&	\ GOTO 25280 IF ((INSTR(1%,INPUT.TIME$,".") <> 0%)		&		OR (INSTR(1%,INPUT.TIME$,"+") <> 0%))			&	\ CHK.W% = INSTR(1%,INPUT.TIME$,":")				&	\ GOTO 25280 IF CHK.W% = 0%					&	\ GOTO 25280 IF LEN(INPUT.TIME$) <> CHK.W% + 2%			&	\ HOUR% = VAL(LEFT(INPUT.TIME$,CHK.W%-1%))			&	\ GOTO 25280 IF ((HOUR% < 0%) OR (HOUR% > 23%))			&	\       MINUTE% = VAL(RIGHT(INPUT.TIME$,CHK.W%+1%))			&	\ GOTO 25280 IF ((MINUTE% < 0%) OR (MINUTE% > 59%))		&	\ FN.CHK.TIME% = -1%						&	!								&	!	This does it all.					&	!								&	!	Set a new error trap.					&	!	Set the return for a failure.				&	!	Delete all blanks and tabs.				&	!	Don't allow a decimal point or a plus sign.		&	!	Find the separator (:)					&	!	Make sure that minutes is a 2 digit number.		&	!	Get and verify the hour.				&	!	Get and verify the minute.				&	!	We get this far if everything is o      k. Set the return.	&25280	\ ON ERROR GOTO 19000						&	\ FNEND								&	!								&	!	Reset the error trap and return.			&25290	!***************************************************************&	!								&	!	E R R O R   R O U T I N E   F O R   C H E C K		&	!								&	!		T I M E   F U N C T I O N			&	!								&	!***************************************************************&	!								&	\ IF ERR = 52 THEN RESUME 25280 ELSE GOTO 19900			&	!								&	!	The only expected error is an invalid number. That	&	!	resul   z   ts in an invalid input return. For all other	&	!	errors go to the standard error handling in the		&	!	main program.						&z          šw|“Á› 8$        1	!***************************************************************&	!								&	!								&	!	S E R A N L    -    S O F T W A R E    E R R O R	&	!								&	!		A N A L Y Z E R					&	!								&	!								&	!								&	!	Program:	SERANL					&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	01					 1.1A01&	!	Edit date:	19-Jun-79				 1.1A00&	!	Author(s):	BJD					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!*********************************************************      ******&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 OTH      ER 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!************************************************************      ***&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	09-Mar-79 KMR	Added code and function to check 1.1A00&	!				  for TT0: or VT:.		 1.1A00&	!	V1.1A01	19-Jun-79 KMR	Removed version number from	 1.1A01&	!				  herald.			 1.1A01&	!								&	!****************************************      ***********************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!								&	      !	1		TPDEF file				&	!	2		SERANL.TMP dialog file			&	!	1		at later time - used for TRADEF file	&	!	13		Terminal I/O				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ALL.APP%		set if user selects all		&	!				  transaction process      ors	&	!	ALL.TRAN%		set if user selects all		&	!				  transactions			&	!	APFILE$()		The TPDEF virtual array		&	!	ASK.CVT$		string response from dialog	&	!				  function			&	!	ASK.HELP$()		the help text array for the	&	!				  dialog file			&	!	B.DATE$			beginning date for selection	&	!	B.TIME$			beginning time for selection	&	!	BDAY%			integer form of beginning day	&	!	BHOUR%			integer form of beginning hour	&	!	BMIN%			integer form of beginning minute&	!	BMON%			integer form of beginning month	&	!	BYEAR%			i      nteger form of year		&	!	COMMAND$		command line to give bred task	&	!	D1LEN%			length of input device spec	&	!	D2LEN%			length of output device spec	&	!	DEFAULT$		default string for dialog	&	!				  function			&	!	DETAIL.LIST%		indicates the type of report	&	!				  selected by the user		&	!	E.DATE$			ending date for selection	&	!	E.TIME$			ending time for selection	&	!	EDAY%			integer form of ending day	&	!	EHOUR%			integer form of ending hour	&	!	EMIN%			integer form of ending minute	&	!	EMON%			integer for      m of ending month	&	!	EYEAR%			integer form of ending year	&	!	FIRST.ERROR%		set if user selects beginning of&	!				  file  as starting point	&	!	I%			temporary loop index		&	!	IN.DEV$			input file device spec		&	!	IN.FILE$		user specified input file	&	!				  specification			&	!	IN.NAME$		input file file name & extension&	!	IN.UIC$			input file uic spec		&	!	LAST.ERROR%		set if user selects end of file	&	!				  as ending point		&	!	M%			TWV				&	!	N%			TWV				&	!	N1LEN%			length of input file name spec	&	!	      N2LEN%			length of output file name spec	&	!	NO.SUCH.APP%		set if specified TP does not	&	!				  exist on TPDEF file		&	!	NOBLANK$		Tradef file spec stripped of	&	!				  blanks			&	!	OUT.DEV$		output file device spec		&	!	OUT.FILE$		user specified output file	&	!				  specification			&	!	OUT.NAME$		output file file name &		&	!				  extension			&	!	OUT.UIC$		output file uic spec		&	!	P%			TWV				&	!	RETURN%			if set tells breed to ignore	&	!				  error in bred task		&	!	SEL.APP$		the selected transaction	&	!      				  processor name		&	!	STUFF$			dummy padding for rest of tradef&	!				  map				&	!	TASK$			name of task to breed		&	!	TNAME$			transaction name on tran def	&	!				  file				&	!	TRAN$()			user specified array of		&	!				  transactions to select	&	!	U2LEN%			length of output uic spec	&	!	UILEN%			length of input uic spec	&	!	VER.EDIT.NUM$		current program version #	&	!								&	!***************************************************************&700	!$**********************************************************      ****&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!	20001		BREED a task				&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	------------      --  ------------------------------- &	!								&	!	25000	FN.ASK%		Dialog function			&	!	????	FN.CHK.DATE%	Check time function		&	!	????	FN.CHK.TIME%	Check time function		&	!								&	!***************************************************************&800	!$************************************************************	&	!								&	!								&	!	C O M M O N    A R E A 					&	!								&	!								&	!***************************************************************&	!								&900	!$*************************************      *************************&	!                                                               &	!                                                               &	! 	D I M E N S I O N    S T A T E M E N T S 		&	!                                                               &	!                                                               &	!***************************************************************&901	\ DIM#1%,	APFILE$(100%)=64				&	!								&	!	The TP definition file buffer area			&903	\ DIM 		ASK.HELP$      (25)					&	!								&	!	The HELP text array					&951	\ MAP	(TRANS)	TNAME$=6,					&			STUFF$=2066					&	!								&	!	The map for the transaction definition file		&953	\ MAP	(DIALOG)						&				SEL.APP$=6%,				&				ALL.APP%,				&				ALL.TRAN%,				&				DETAIL.LIST%,				&				B.DATE$=12%,				&				B.TIME$=5%,				&				E.DATE$=12%,				&				E.TIME$=5%,				&				IN.DEV$=6%,				&				IN.UIC$=10%,				&				IN.NAME$=20%,				&				OUT.DEV$=6%,				&				OUT.UIC$=10%,				&				OUT.NAME$=20%,				&				BYEAR%,					&				BMON%,					&	      			BDAY%,					&				BHOUR%,					&				BMIN%,					&				EYEAR%,					&				EMON%,					&				EDAY%,					&				EHOUR%,					&				EMIN%,					&				FIRST.ERROR%,				&				LAST.ERROR%,				&				D1LEN%,					&				U1LEN%,					&				N1LEN%,					&				D2LEN%,					&				U2LEN%,					&				N2LEN%,					&				TRAN$(20)=6%				&	!								&	!	This MAP summarizes the results of the Dialog		&	!	A file is written to INSPECT with this data		&1000	!$**************************************************************&	!								&	!								&	!	M A I N          S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&	!								 1.1A00&	\ GO TO 1010	IF FN.CHECK.TT0% = -1%				!1.1A00&	\ PRINT "? SERANL must be run from TT0: or batch"		!1.1A00&			IF T2900% = 1%					!1.1A00&	\ PRINT "? GETLUN directive error:"; T2900%	IF T2900% <> 1%	!1.1A00&	\ GO TO 32000							!1.1A00&	!								 1.1A00&	!	Check lun 13 to as      sure it is assigned to TT0:		 1.1A00&	!	Act accordingly.					 1.1A00&1010	VER.EDIT.NUM$ = "V1.1A"						!1.1A00&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "SERANL	"; !	VER.EDIT.NUM$	! 			!1.1A01&	\ PRINT								&	\ PRINT "TRAX Software Error Analysis"			&	\ PRINT								&	!								&	!	Print the program herald message			&1050	\ ASK.HELP$(1)= "Specify the error log file whose errors are " +&			"to be examined."				&	\ ASK.HELP$(2)= "Valid responses are:" + CHR$(10%)       		&	\ ASK.HELP$(3)= "LIST - a detail error list which fully"+	&			" identifies every selected error." + CHR$(10%)	&	\ ASK.HELP$(4)= "DUMP - contains all that is in the list"+	&			" and a formatted dump of data " 		&	\ ASK.HELP$(5)= "related to the error." + CHR$(10%)		&	\ ASK.HELP$(6)= "SUMMARY - has summary totals by error "+	&			"type only."					&	\ ASK.HELP$(7)= "Specify the file or device which is to contain"+&			" the report."					&	\ ASK.HELP$(8)= "If you specify a transaction processor name, "+&			"o      nly errors logged for that transaction processor"+&			" will " + 					&			"be reported." + CHR$(10%) + CHR$(13%) + CHR$(10%)+&			"If you specify ALL, transaction processor name"+&			" will not be used as a" + CHR$(10%) + CHR$(13%)+&			"selection criterion."				&	\ ASK.HELP$(9)= "YES - you really want to select on the name given"+&			" even though there is " + CHR$(10%) + CHR$(13%)+&			"no such transaction processor"+		&			" currently established." + CHR$(10%) + CHR$(13%) +&			CHR$(10%) +					&			"NO - the e      ntered name was a mistake, you want to "+&			"re-enter it."						&	\ ASK.HELP$(10)= "Specify the transaction names to be used in "+	&			"selecting error records." + CHR$(10%) + CHR$(13%) +&			CHR$(10%) +						&			"Initially, the default will select ALL transaction"+&			" names; thereafter," + CHR$(10%) + CHR$(13%) +	&			"the default will inform the "+			&			"program that you have no more" + CHR$(10%) + CHR$(13%)+&			"transaction names to "+			&			"enter." + CHR$(10%) + CHR$(13%) + CHR$(10%) +	&			"Enter one       name per line."			&	\ ASK.HELP$(11)= "YES - you really want to select on the name given"+&			"even though there is " + CHR$(10%) + CHR$(13%) +&			"no such transaction currently"+		&			" established." + CHR$(10%) + CHR$(13%)	+ CHR$(10%) +	&			"NO - the entered name was a mistake, you would like "+&			"to re-enter it."				&	\ ASK.HELP$(12)= "Specify the starting date; errors logged before "+&			" this date will not " + CHR$(10%) + CHR$(13%) + &			"appear on the report."				&	\ ASK.HELP$(13)= CHR$(10%) + "The       format is dd-mmm-yy."		&	\ ASK.HELP$(14)= "Specify the starting time for the date just given."+&			CHR$(10%) + CHR$(13%) +				&			"Errors logged before this time on this " +	&			"date will not be reported."			&			+ CHR$(10%) + CHR$(13%) + CHR$(10%) +		&			"The format is hh:mm."				&	\ ASK.HELP$(15)= "Specify the closing date;" + CHR$(10%) + CHR$(13%) +&			"Errors logged after this"+			&			" date will not be reported."				&	\ ASK.HELP$(16)= CHR$(10%) + "The format is dd-mmm-yy."			&	\ ASK.HELP$(17)= "Specif      y the ending time for the date just given."+&			CHR$(10%) + CHR$(13%) +				&			"Errors logged after this time on this " + 	&			"date will not be reported."			&	\ ASK.HELP$(18)= CHR$(10%) + "The format is hh:mm."				&	!								&	!	The HELP texts are initialized.				&1100	\ OPEN "[1,300]SERANL.TMP" FOR OUTPUT AS FILE #2%,		&			ORGANIZATION SEQUENTIAL FIXED,			&			ACCESS WRITE, ALLOW READ,			&			MAP DIALOG,					&			RECORDSIZE 274					&	!								&	!	Open the Dialog file					&	!	Do it now because Basic zeroes th      e map			&2000	!$**************************************************************&	!                                                               &	!                                                               &	!	T H E    D I A L O G 					&	!                                                               &	!                                                               &	!***************************************************************&	!                                                               &	\ ON F      N.ASK%("Input file","[1,300]SERLOG.LOG","",34%,1%,1%)	&		GO TO 2000,32000,2010					&	!								&	!	Branch on ESC, CTRL-Z, and an input file name		&2010	\ IN.FILE$= ASK.CVT$						&2100	\ ON FN.ASK%("Report","LIST","/LIST/DUMP/SUMMARY",7%,2%,5%)	&		GO TO 2000, 32000, 2110, 2120, 2130			&	!								&	!	Branch on ESC, CTRL-Z, YES, NO				&2110	\ DETAIL.LIST%= 0%						&	\ DEFAULT$= "LP:"						&	\ GO TO 2200							&	!								&	!	Set switch indicating detail list is requested, set	&	!	the default for the next questio      n, and then ask the next&	!	question.						&2120	\ DETAIL.LIST%= 1%						&	\ DEFAULT$= "LP:"						&	\ GO TO 2200							&	!								&	!	Set switch indicating that the dump isrequested, set 	&	!	the default for the next question, and then ask the next& &	!	question.						&2130	\ DETAIL.LIST%= 2%						&	\ DEFAULT$= "TI:"						&	\ GO TO 2200							&	!								&	!	Set switch indicating that summary totals only are 	&	!	requested.  Set the default for the next question and	&	!	ask the next question.					&2200	\ ON       FN.ASK%("Output file",DEFAULT$,"",34%,7%,1%)		&		GO TO 2100, 32000, 2210					&	!								&	!	Branch on ESC, CTRL-Z, and an output file name.		&2210	\ OUT.FILE$= ASK.CVT$						&	!								&	!	Save the output file name				&2300	\ ON FN.ASK%("Transaction processor name","ALL","A",6%,8%,1%)	&		GO TO 2200, 32000, 2310					&	!								&	!	Branch on ESC, CTRL-Z, or an application name.		&2310	\ SEL.APP$= ASK.CVT$						&	\ NO.SUCH.APP%= 0%						&	\ ALL.TRAN%= 0%							&	\ ALL.APP%= 0%							&	\ ALL.APP%= 1%		IF SEL.AP      P$= "ALL"			&	\ ALL.TRAN%= 1%		IF SEL.APP$= "ALL"			&	\ GO TO 2700		IF SEL.APP$= "ALL"			&	\ OPEN "[1,1]TPDEF.TPF" FOR INPUT AS FILE #1%,			&		ORGANIZATION VIRTUAL					&	\ FOR I%= 0% TO 100%						&		\ GO TO 2500	IF SEL.APP$= LEFT(APFILE$(I%),6%)	&		\ GO TO 2350	IF LEFT(APFILE$(I%),6%)= "######"	&	\ NEXT I%							&	!								&	!	Store the transaction processor name.  Set special 	&	!	switches if ALL TP's were selected.  Nothing further is	&	!	done in that case.  Otherwise, an attempt is made to 	&	!	validate       the TP name by matching it to the TPDEF.TPF	&	!	file.  If a match is found go to 2500.  Otherwise, go 	&	!	to 2350.						&2350	\ CLOSE #1%							&	\ PRINT								&	\ PRINT "% " + SEL.APP$ + 					&		" is not an established transaction processor."		&	\ PRINT								&	\ GO TO 2400							&	!								&	!	Print the warning message that this is not an established&	!	transaction processor.  Then ask the next question.	&2400	\ NO.SUCH.APP%= 1%						&	\ ON FN.ASK%("Should this TP name be accepted","NO","Y",3%,9%,1%)&	      	GO TO 2300, 32000, 2500, 2300				&	!								&	!	If the given TP name is not an established		&	!	application, the user may still search for it (YES)	&	!	or may choose to re-enter it (NO).  Thus we branch at 	&	!	this point on the response.				&2500	\ CLOSE #1%							&	\ FOR I%= 1% TO 20%						&		\ TRAN$(I%)= ""						&	\ NEXT I%							&	\ ALL.TRAN%= 0%							&	\ DEFAULT$= "ALL"						&	\ FOR I%= 1% TO 20%						&	!								&	!	Close the TP definition file, clear the selected 	&	!	transaction name array, reset t      he ALL transactions 	&	!	selected switch, reset the default for the question,	&	!	and allow specification of up to 64 transaction names.	&2505	\ ON FN.ASK%("Transaction name",DEFAULT$,"A",6%,10%,1%)		&		GO TO 2300, 32000, 2520					&	!								&	!	Branch on ESC, CTRL-Z, or a transaction name.		&2520	\ DEFAULT$= "DONE"						&	\ SEL.TRAN$= ASK.CVT$						&	\ GO TO 2690		IF SEL.TRAN$= "DONE"			&	\ ALL.TRAN%= 1%		IF SEL.TRAN$= "ALL"			&	\ GO TO 2700		IF SEL.TRAN$= "ALL"			&	\ NOBLANK$= EDIT$(SEL.APP$,2%)					&	\ O      PEN "[1,300]" + NOBLANK$ + ".TRA" FOR INPUT AS FILE #1%,	&		ORGANIZATION INDEXED VARIABLE,				&		ACCESS MODIFY, ALLOW READ,				&		MAP TRANS,						&		PRIMARY KEY TNAME$					&	\ FIND #1%,							&		KEY #0 EQ SEL.TRAN$					&	\ CLOSE #1%							&	!								&	!	Set the default to the DONE value, get out if DONE	&	!	was the response, set the all transaction switch if	&	!	ALL transactions were selected, edit blanks out of 	&	!	the file name, validate the specified transaction 	&	!	name by finding a matching record on       the transaction	&	!	definition file.					&2545	\ TRAN$(I%)= SEL.TRAN$						&	\ NEXT I%							&	\ GO TO 2690							&	!								&	! 	Store the valid transaction name and return to get	&	!	another transaction name unless the table is full.  	&	!	In that case, go to 2700.				&2550	\ CLOSE #1%							&	\ PRINT								&	\ PRINT "% " + SEL.TRAN$ + 					&		" is not an established transaction"			&	\ PRINT "for the " + SEL.APP$ + " transaction processor."	&	\ PRINT								&	\ GO TO 2600							&	!								&	!	If no matc      h is found on transaction name, print the 	&	!	warning message.					&2600	\ ON FN.ASK%("Should this transaction name be accepted","NO","Y",3%,11%,1%)&		GO TO 2505, 32000, 2545, 2505				&	!								&	!	Branch on ESC, CTRL-Z, YES, or NO			&2690	\ TRAN$(I%) = EDIT$((CHR$(0%) + CHR$(0%) + CHR$(0%)),2%)	&	!								&	!	Set the end of table marker				&2700	\ ON FN.ASK%("Starting date","first error","",11%,12%,2%)	&		GO TO 2710, 32000, 2720					&	!								&	!	Branch on ESC, CTRL-Z, or a starting date		&2710	\ GO TO       2300%	IF ALL.APP%= 1%					&	\ GO TO 2500							&	!								&	!	On ESC branch to the previous question			&2720	\ B.DATE$= "First error" IF ASK.CVT$= "FIRSTERROR"		&	\ FIRST.ERROR%= 0%						&	\ FIRST.ERROR%= 1%	 IF ASK.CVT$= "FIRSTERROR"		&	\ GO TO 2900		IF ASK.CVT$= "FIRSTERROR"		&	\ ON (FN.CHK.DATE%(ASK.CVT$) + 2%)				&		GO TO 2730, 2740					&	!								&	!	Set the default option switch.  If the default was not	&	!	selected, validate the date.  Go to 2730 if valid;	&	!	Go to 2740 if not.					&2730	\ B.DATE$=       ASK.CVT$						&	\ BYEAR%= YEAR%							&	\ BMON%= MONTH%							&	\ BDAY%= DAY%							&	\ GO TO 2800							&	!								&	!	Store the date.						&2740	\ PRINT								&	\ PRINT "% Invalid date string"					&	\ PRINT								&	\ GO TO 2700							&	!								&	!	If date is invalid, print the error message and repeat	&	!	the question.						&2800	\ ON FN.ASK%("Starting time","00:00","",13%,14%,1%)		&		GO TO 2700, 32000, 2820					&	!								&	!	Branch on ESC, CTRL-Z, or a starting time.		&2820	\ ON (FN.CHK.TIME%(ASK.CVT      $) + 2%)				&		GO TO 2830, 2840					&	!								&	!	Validate the time.					&2830	\ B.TIME$= ASK.CVT$						&	\ BHOUR%= HOUR%							&	\ BMIN%= MINUTE%						&	\ GO TO 2900							&	!								&	!	If the time is valid, store the time.			&2840	\ PRINT								&	\ PRINT "% Invalid time string"					&	\ PRINT								&	\ GO TO 2800							&	!								&	!	If the time is invalid, print an error message and	&	!	repeat the question.					&2900	\ ON FN.ASK%("Ending date","last error","",11%,15%,2%)		&		GO TO 2910, 32000, 2920			      		&	!								&	!	Branch on ESC, CTRL-Z, or an ending date.		&2910	\ GO TO 2700		IF B.DATE$= "FIRST ERROR"		&	\ GO TO 2800							&	!								&	!	If ESC, repeat last question.				&2920	\ E.DATE$= "Last error" IF ASK.CVT$= "LASTERROR"		&	\ LAST.ERROR%= 0%						&	\ LAST.ERROR%= 1%	IF ASK.CVT$= "LASTERROR"		&	\ GO TO 3500		IF ASK.CVT$= "LASTERROR"		&	\ ON (FN.CHK.DATE%(ASK.CVT$) + 2%)				&		GO TO 2930, 2940					&	!								&	!	Set the default option switch.  If the default was not	&	!	not selected, validate the da      te.			&2930	\ E.DATE$= ASK.CVT$						&	\ EYEAR%= YEAR%							&	\ EMON%= MONTH%							&	\ EDAY%= DAY%							&	\ GO TO 3000							&	!								&	!	If the date is valid, store the date.			&2940	\ PRINT								&	\ PRINT "% Invalid date string"					&	\ PRINT								&	\ GO TO 2900							&	!								&	!	If the date is not valid, print an error message and	&	!	repeat the question.					&3000	\ ON FN.ASK%("Ending time","23:59","",5%,17%,2%)		&		GO TO 2900, 32000, 3020					&	!								&	!	Branch on ESC, CTRL-Z, or an endi      ng time.		&3020	\ ON (FN.CHK.TIME%(ASK.CVT$) + 2%)				&		GO TO 3030, 3040					&	!								&	!	Validate the time.					&3030	\ E.TIME$= ASK.CVT$						&	\ EHOUR%= HOUR%							&	\ EMIN%= MINUTE%						&	\ GO TO 3500							&	!								&	!	If the time is valid, store the time.			&3040	\ PRINT								&	\ PRINT "% Invalid time string"					&	\ PRINT								&	\ GO TO 3000							&	!								&	!	If the time is invalid, print an error message and 	&	!	repeat the question.					&3500	\ IN.DEV$= "SY:"							&	\ IN.UIC$= "[1,30      0]"							&	\ OUT.DEV$= "SY:"							&	\ OUT.UIC$= ""							&	!								&	\ M%= INSTR(1%,IN.FILE$,":")					&	\ N%= INSTR(1%,IN.FILE$,"[")					&	\ P%= INSTR(1%,IN.FILE$,"]")					&	\ IN.DEV$= LEFT(IN.FILE$,M%)	IF M% > 0%			&	\ IN.UIC$= MID(IN.FILE$,N%,P%-N%+1%)	IF P% > 0%		&	\ IN.NAME$= IN.FILE$						&	\ IN.NAME$= RIGHT(IN.FILE$,M%+1%)	IF M% > 0%		&	\ IN.NAME$= RIGHT(IN.FILE$,P%+1%)	IF P% > 0%		&	\ M%= INSTR(1%,OUT.FILE$,":")					&	\ N%= INSTR(1%,OUT.FILE$,"[")					&	\ P%= INSTR(1%,OUT.FILE$,"]")					&	\ OUT.DE      V$= LEFT(OUT.FILE$,M%)		IF M% > 0%		&	\ OUT.UIC$= MID(OUT.FILE$,N%,P%-N%+1%)	IF P% > 0%		&	\ OUT.NAME$= OUT.FILE$						&	\ OUT.NAME$= RIGHT(OUT.FILE$,M%+1%)	IF M% > 0%		&	\ OUT.NAME$= RIGHT(OUT.FILE$,P%+1%)	IF P% > 0%		&	\ D1LEN%= LEN(EDIT$(IN.DEV$,2%))				&	\ U1LEN%= LEN(EDIT$(IN.UIC$,2%))				&	\ N1LEN%= LEN(EDIT$(IN.NAME$,2%))				&	\ D2LEN%= LEN(EDIT$(OUT.DEV$,2%))				&	\ U2LEN%= LEN(EDIT$(OUT.UIC$,2%))				&	\ N2LEN%= LEN(EDIT$(OUT.NAME$,2%))				&	!								&	!	Parse the input and output file specification      s for 	&	!	convenience in setting up the DSD block in SERINS.	&4000	\ PUT #2%							&	\ CLOSE #2%							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "RUN [1,54]SERINS/TASK=SERINS"			&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	\ GO TO 32000							&	!								&	!	Write the Dialog results to a temporary file, this 	&	!	file will be read by SERINS.				&	!								&	!	Then spawn SERINS  and wait for it to finish		&4005	\ PRINT								&	\ PRINT "? FATAL error in spawning the       SERINS module"		&	\ PRINT								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%,0%)						&	!								&	!	Exit with error status after printing error message	&	!	if spawn directive fails				&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$***********************************      ***************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&	!								&	\ RESUME 2350	IF ERR= 11 AND ERL= 2310      			&	\ RESUME 2550	IF ERR= 155 AND ERL = 2520			&	!								&	!	If no match on transaction name, go to print error message&19900	\ PRINT								&	\ CLOSE T% FOR T%= 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	Close all open files and exit.				&	!	LET BASIC+2 trap the errors				&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!*****************************************************      **********&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!                                                               &	!                                                               &	! 	E N D    O F    P R O C E S S I N G 			&	!                        D                                            &	!                                                               &	!***************************************************************&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Close all open files					&	!	EXIT with success status				&32767	\ END D         œw:d“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETPAR					&	!	Version:	V1.1					&	!	Edit level:	01					&	!	Edit date:	30-MAR-79				&	!	Author(s):	BJD					&	!			LBB					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	      !		     COPYRIGHT (c) 1977 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	      !								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	BJD001	JAN 15,79 BJD	SPR #185717			&	!		LPP always in GEN now to suppress undesirable	&	!		interleaving of output.				&	!		Also, fixed rounding error in TP par too small	&	!		error message					&	!	1-2	FEB 9,79  BJD   SPR # 252437 CHANGE CONDITION	&	!				FOR EXTRA ACP PARTITIONS	&	!	1-3	FEB 9,79  BJD	SPR #252      436 ADD "DIREC" SUPPORT	&	!								&	!	1-4	FEB 9,79  BJD   SPR #252440 ADD 3271/2780 SUPPORT&	!								&	!	V1.1/01 30-MAR-79 LBB	V1.1 - ASK IF INDIRECT FILE PRO-&	!				CESSING DESIRED.  Stmts 1540,	&	!				1640,1650,1700,4750		&	!								&	!	V1.1/02 3-APR-79  LBB	V1.1 - Delete "Full support	&	!				  environment?" question.	&	!				  Stmts 1550-1630 replaced by	&	!				  stmts 1600, 1620, 1630.	&	!								&	!	V1.1/03 5-JUN-79  LBB	V1.1 - Always use PIPSML on	&	!				  11/34 - stmt 4750.		&	!				  Modify XKBUF si      ze calculation	&	!				  - stmt 2800			&	!				  Set up SAMPLE Application	&	!				  communication examples - 	&	!				  stmts 1760-1799		&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&	!								&	!	This program defines the necessary partitions for the 	&	!	use      r system.  Only 2 questions can occur. First, if 	&	!	he bought 2 languages and only has room for one OTS,	&	!	Second, if he has a big system, he must say if he wants	&	!	a full S.E.  All other assignments are not controlled	&	!	by the user, but are made automatically by the system.	&	!	The program also conditionally installs many tasks	&	!	depending on which partitions are defined.		&	!								&	!	V1.1 - We also ask whether the user wants indirect file	 V1.1&	!	processing for all support environment termin      als and	 V1.1&	!	install IND appropriately.				 V1.1&	!								&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	1		File of partition setup commands	&	!	3		File of conditionally installed tasks	&	!	2		Partition report on this channel	&	!	13		Terminal I/O				&	!								&	!								&	!***********************      ****************************************&410	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!			I N   S E T P A R			&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			temporary working variable	&	!	ACP.NAME$		ACP partition name constructed	&	!				  here				&	!	ASK.RANGE()		limits size of dialog responses	&	!	BASLIB%			=1 if baslib should be s      et up	&	!	BIG.SYSTEM.SIZE		256K words			&	!	BOMBED.OUT%		=1 if we over-allocated memory	&	!	COBRTS%			=1 if COBRTS should be set up	&	!	COMMAND$		define partition command file	&	!	CREATED.PARTITION$()	array of all partitions created	&	!	DEVICE$			temporary construct - device to	&	!				  get extra ACP			&	!	FIELD.TEST%		flag=1 if we are in field test -&	!				  no baslib,COBRTS		&	!	FILE.NAME$		name of partition setup command	&	!				  file				&	!	FULL.S.E%		=1 if by default or explicit	&	!				  specification,       full s.e. is	&	!				  called for			&	!	IND.WANTED%		=1 if user wants indirect file	 V1.1&	!				  processing for all support	 V1.1&	!				  environment terminals		 V1.1&	!	INDEX%			saved loop variable for checking&	!				  if partiton is needed		&	!	INS.*$			install command for extra ACP	&	!				  partitions			&	!	J%			loop variable			&	!	K%			looping variable		&	!	L%			index for created partition	&	!				  array				&	!	LIST.OF.PAR$		list of partitions created	&	!	MASK$			mask word for print using	&	!				  comm      and			&	!	MEMORY.LEFT		amount of memory un-allocated at&	!				  TP time - 32word blocks	&	!	MEMORY.LEFT$		string version of memory.left	&	!	OTHER.FCP.SIZE		8K words - large FCP size	&	!	OTHER.GEN.SIZE		32K words - large GEN size	&	!	OVERRUN			amount of memory overrun	&	!	OVERRUN$		string version of overrun	&	!	PAR.BASE		base address of partition	&	!	PAR.NAME$		partition name for report	&	!	PAR.SIZE		size of partition in 32 word	&	!				  block				&	!	PAR.TYPE$		partition type for report	&	!	PER%			% fo remai      ning space to allocate&	!				  to the TPs			&	!	POOL.TOP		top of pool address in 32 word	&	!				  blocks			&	!	REAL.SIZE		size of system in words		&	!				  including I/O page		&	!	SMALL.SYSTEM.SIZE	128K words			&	!	SUBSTITUTE.TEXT$()	substitution array for sysgen	&	!				  dialog function		&	!	SYSTEM.DISK$		device spec for target system	&	!				  disk				&	!	T			temporary working variable	&	!	T$			temporary working variable	&	!	T%			temporary working variable	&	!	T1-T35$			conditionally installed task	&	!				        installation command strings	&	!	TASKS.NAME$		name of conditionally installed	&	!				  task file			&	!	TP.PRESENT%		=1 if there is a transaction	&	!				  processor in the system	&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	----------------------------------      ----  &	!	10200		Routine to print line on report		&	!	10301		Routine to install stuff in GEN if no 	&	!				SYSPAR				&	!	10310		Routine to install stuff in SYSPAR	&	!	10400		Routine to handle ACP partition definition&	!								&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	---      --	--------------  ------------------------------- &	!								&	!	????	FN.REAL.TO.OCT$	Converts a real number into 	&	!				octal string			&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!      								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G       I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ A%= FN.SETUP.DIALOGUE%					&	!								&	!	Set up standard default error trap			&	!	Initialize dialog function				&1400	\ FILE.NAME$= "[200,201]" + SYSTEM.NAME$ + ".PAR"		&	\ TASKS.NAME$= "[200,201]" + SYSTEM.NAME$ + ".INS"		&	\ FILE.NAME$= EDIT$(FILE.NAME$,2%)				&	\ TASKS.NAME$= EDIT$(TASKS.NAME$,2%)				&	\ OPEN FILE.NAME$ FOR OUTPUT AS FILE #1%			&	\ OPEN TASKS.NAME$ F      OR OUTPUT AS FILE #3%			&	!								&	!	Open the system named partition file			&	!	and the conditionally installed task file		&1500	!$**************************************************************&	!                                                               &	!                                                               &	! 	INITIALIZATION						&	!                                                               &	!                                                               &	!*************************      **************************************&	!								&	\ NAME$(1)=  "CEXPAR"						&	\ NAME$(2)=  "DRVPAR"						&	\ NAME$(3)=  "ATSPAR"						&	\ NAME$(4)=  "FCPPAR"						&	\ NAME$(5)=  "TPMLIB"						&	\ NAME$(6)=  "TSTLIB"						&	\ NAME$(7)=  "SYSCOM"						&	\ NAME$(8)=  "BASLIB"						&	\ NAME$(9)=  "COBRTS"						&	\ NAME$(10)= "SPLPAR"						&	\ NAME$(11)= "SYSPAR"						&	\ NAME$(12)= "MTAACP"						&	\ NAME$(13)= "TP1PAR"						&	\ NAME$(14)= "TP2PAR"						&	\ NAME$(15)= "TP3PAR"						&	\ NAME$(16)= "TP4PAR"					      	&	\ NAME$(21)= "DB1PAR"						&	\ NAME$(22)= "DR1PAR"						&	\ NAME$(23)= "DM1PAR"						&	\ NAME$(24)= "GEN"						&	\ NAME$(25)= "LDRPAR"						&	\ NAME$(26)= "NETACP"						&	\ NAME$(27)= "DIRREC"						&	\ NAME$(28)= "XKBUF"						&	!								&	\ PAR.TYPE$(1)=  "COM"						&	\ PAR.TYPE$(2)=  "SYS"						&	\ PAR.TYPE$(3)=  "SYS"						&	\ PAR.TYPE$(4)=  "TASK"						&	\ PAR.TYPE$(5)=  "COM"						&	\ PAR.TYPE$(6)=  "COM"						&	\ PAR.TYPE$(7)=  "COM"						&	\ PAR.TYPE$(8)=  "COM"						&	\ PAR.TYPE$(9)=  "COM"						&      	\ PAR.TYPE$(10)= "TASK"						&	\ PAR.TYPE$(11)= "TASK"						&	\ PAR.TYPE$(12)= "SYS"						&	\ PAR.TYPE$(13)= "SYS"						&	\ PAR.TYPE$(14)= "SYS"						&	\ PAR.TYPE$(15)= "SYS"						&	\ PAR.TYPE$(16)= "SYS"						&	\ PAR.TYPE$(21)= "SYS"						&	\ PAR.TYPE$(22)= "SYS"						&	\ PAR.TYPE$(23)= "SYS"						&	\ PAR.TYPE$(24)= "SYS"						&	\ PAR.TYPE$(25)= "TASK"						&	\ PAR.TYPE$(26)= "TASK"						&	\ PAR.TYPE$(27)= "COM"						&	\ PAR.TYPE$(28)= "COM"						&1505	!$***************************************************      ***********&	!                                                               &	!                                                               &	! 	MORE INTIIALIZATION					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ SIZE(1)= 0							&	\ SIZE(2)= 0							&	\ SIZE(3)= 0							&	\ SIZE(4)= F11ACP.SIZE%						&	\ SIZE(5)= 4*1024						&	\ SIZE(6)=       0							&	\ SIZE(7)= 0							&	\ SIZE(8)= 8192							&	\ SIZE(9)= 12*1024						&	\ SIZE(10)= 4096						&	\ SIZE(11)= 2048						&	\ SIZE(12)= 8192						&	\ SIZE(13)= 0							&	\ SIZE(14)= 0							&	\ SIZE(15)= 0							&	\ SIZE(16)= 0							&	\ SIZE(21)= F11ACP.SIZE%						&	\ SIZE(22)= F11ACP.SIZE%						&	\ SIZE(23)= F11ACP.SIZE%						&	\ SIZE(24)= 8192 						&	\ SIZE(25)= 0							&	\ SIZE(26)= 8192						&	\ SIZE(27)= 0							&	\ SIZE(28)= 0							&	!								&	!	Define the partition sizes				&	!	0 means the       size will be read from the appropriate map	&	!	or filled in by this program from common variables.	&	!								&1525	\ OTHER.GEN.SIZE= 32*1024					&	\ OTHER.FCP.SIZE= 8192						&	\ SMALL.SYSTEM.SIZE= 128*1024					&	\ REAL.SIZE= (S.MEMORY.SIZE% + 4)*1024				&	\ BIG.SYSTEM.SIZE= 192*1024					&	\ BIG.SYSTEM%,SMALL.SYSTEM%= 0%					&	\ BIG.SYSTEM%= 1%	IF REAL.SIZE=> 192*1024			&	\ SMALL.SYSTEM%= 1%	IF REAL.SIZE<= 128*1024			&	\ SIZE.LIMIT= S.MEMORY.SIZE%*32					&	!								&	\ OPEN "CL:" FOR OUTPUT AS FILE #2%				      &	\ GOSUB 5010							&	!								&	!	Define useful variables					&	!								&	!	Use the printer for the partition report		&	!	Print report heading					&1540	!$**************************************************************&	!                                                               &	!                                                               &	! 	INSTALL TASK COMMAND LINE STRINGS			&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	\ T1$= "INS [1,54]FCP8K"					&	\ T2$= "INS [1,54]BIGFCP"					&	\ T3$= "INS [1,1]SYSCOM"					&	\ T4$= "INS [1,1]TPMLIB"					&	\ T5$= "INS [1,1]TSTLIB"					&	\ T6$= "INS [1,54]MCRDSP/PAR=GEN/CKP=YES"			&	\ T7$= "INS [1,54]MCRDSP/PAR=SYSPAR"				&	\ T8$= "INS [1,54]MCR/PAR=GEN/CKP=YES"				&	\ T9$= "INS [1,54]MCR/PAR=GEN/CKP=YES"				&	\ T10$= "INS [1,54]DCL/PAR=GEN/CKP=YES"				&	\ T11$= "INS [1,54]DCL/PAR=GEN/CKP=YES"				      &	\ T12$= "INS [1,54]DCLDSP/PAR=GEN/CKP=YES"			&	\ T13$= "INS [1,54]DCLDSP/PAR=SYSPAR"				&	\ T14$= "INS [1,54]SHF/PAR=SYSPAR"				&	\ T15$= "INS [1,1]COBRTS"					&	\ T16$= "INS [1,1]BASLIB"					&	\ T17$= "INS [1,54]LPP/PAR=GEN/CKP=YES"				&	\ T18$= "INS [1,54]LPP/PAR=GEN/CKP=YES"		!BJD001		&	\ T19$= "INS [1,54]CCP/TASK=NT..../PAR=NETACP"			&	\ T20$= "INS [1,54]JOURNL/TASK=JNLDRV/PAR=GEN/CKP=YES"		&	\ T21$= "INS [1,54]JOURNL/TASK=JNLDRV/PAR=DRVPAR/CKP=NO"	&!!!	\ T22$= "INS [1,54]NTL"						&!!!	\ T23$= "INS [      1,54]BIGMAC/PAR=GEN/CKP=YES"			&!!!	\ T24$= "INS [1,54]BIGTKB/PAR=GEN/CKP=YES"			&!!!	\ T25$= "INS [1,54]BIGTKB/PAR=GEN/TASK=...LIN/CKP=YES"		&!!!	\ T26$= "INS [1,54]RMSDFN/CKP=YES"				&!!!	\ T27$= "INS [1,54]RMSCNV/CKP=YES"				&!!!	\ T28$= "INS [1,54]EDT/TASK=...EDI/CKP=YES"			&!!!	\ T29$= "INS [1,54]PIP/CKP=YES"					&	\ T30$= "INS [1,54]SAV/PAR=MTAACP"				&	\ T31$= "INS [1,54]SAV/PAR=TP1PAR"				&!!!	\ T34$= "INS [1,54]PIPANS/INC=20000/CKP=YES/TASK=...PIP"	&	\ T35$= "INS [1,54]MTAACP/PAR=MTAACP/CKP=YES"			      &!!!	\ T36$= "INS [1,54]BASIC2/TASK=...BP2/CKP=YES/PAR=GEN"		&!!!	\ T37$= "INS [1,54]COBOL/TASK=...COB/CKP=YES/PAR=GEN"		&!!!	\ T38$= "INS [1,54]SORT/TASK=...SRT/CKP=YES/PAR=GEN"		&!!!	\ T39$= "INS [1,54]LBR/CKP=YES"					&!!!	\ T40$= "INS [1,54]RMSDSP/CKP=YES"				&!!!	\ T41$= "INS [1,54]RMSBCK/CKP=YES"				&!!!	\ T42$= "INS [1,54]RMSRST/CKP=YES"				&!!!	\ T43$= "INS [1,54]DSC/CKP=YES/PAR=GEN"				&	\ T44$= "INS [1,54]IND/TASK=...AT."				!V1.1&	\ T45$= "INS [1,54]IND/TASK=AT.T0"				!V1.1&	\ T46$= "INS [1,54]TP      REST"					&	\ T47$= "INS [1,54]PMD/PAR=GEN"					&!!!	\ T48$= "INS [1,54]RECER"					&!!!	\ T49$= "INS [1,54]BOO/PAR=GEN"					&	\ T50$= "INS [1,54]SHUTDOWN/TASK=SETSHT/PAR=TP1PAR"		&	\ T51$= "INS [1,54]SHUTDOWN/TASK=SETSHT/PAR=GEN"		&	\ T52$= "INS [1,54]TKN/PAR=GEN/CKP=YES"				&	\ T53$= "INS [1,54]TKN/PAR=SYSPAR/CKP=YES"			&	\ T54$= "INS [1,54]AUTOIO/TASK=AUTOIO"				&	\ T55$= "INS [1,54]KMCLDR"					&	\ T56$= "INS [1,54]XKLDR/PAR=GEN"				&	\ T60$= "SET /BUF=XK"						&1600	!$************************************      **************************&	!                                                               &	!                                                               &	! 	SUPPORT ENVIRONMENT LOGIC				&	!                                                               &	!                                                               &	!***************************************************************&1620	\ FULL.S.E.% = 0%						!V1.1/2&	\ FULL.S.E.% = 1%	IF CPU.TYPE% = 70% 			!V1.1/2&	\ FULL.S.E.% = 1%	IF CPU.TYPE% = 34      %			!V1.1/2&				AND S.DEV.SYS% = 1%			!V1.1/2&	!								 V1.1/2&	!	Full support environment is provided on all 11/70s	 V1.1/2&	!	 and on all 11/34 development-only systems.		 V1.1/2&1630	\ TP.PRESENT%= 0%						&	\ TP.PRESENT%= 1%	IF ((NO.CON.TP% > 0%) AND (S.DEV.SYS%= 0%))&	!								&	!	Final specification of the variables which indicate	&	!	if a full support environment is desired and if 	&	!	transaction processors will be present			&1640	\ IND.WANTED% = 0%						!V1.1&	\ ON FN.ASK%(219%,		! IND wanted?	!		      !V1.1&		"NO",			! Default	!		!V1.1&		"Y",			! Yes/No answer !		!V1.1&		FALSE%,			! No checking	!		!V1.1&		1%)			! Level = 1	!		!V1.1&	  GOTO								!V1.1&		 1600,			! ESC		!		!V1.1&		32200,			! CTRL/Z	!		!V1.1&		 1650,			! YES		!		!V1.1&		 1700			! NO		!		!V1.1&	!								 V1.1&	!	Does user want full indirect file processing?		 V1.1&	!	(Assume he doesn't.)					 V1.1&1650	\ IND.WANTED% = 1%						!V1.1&	!								 V1.1&	!	Yes he does.						 V1.1&1700	!$***********************************************************      ***&	!                                                               &	!                                                               &	! 	LANGUAGE & ACP LOGIC					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ BASLIB%, COBRTS%= 0%						&	\ GO TO 1730		IF CPU.TYPE%= 34%			&	\ BASLIB%= 1%		IF BIG.SYSTEM%= 1% AND BASIC%= 1%	&	\ COBRTS%= 1%		IF B      IG.SYSTEM%= 1% AND COBOL%= 1%	&	\ BASLIB%= 1%		IF BASIC%= 1% AND COBOL%= 0%		&	\ COBRTS%= 1%		IF BASIC%= 0% AND COBOL%= 1%		&	!								&	\ COBRTS%= 0%		IF REAL.SIZE < SMALL.SYSTEM.SIZE	&	\ BASLIB%= 0%		IF REAL.SIZE < SMALL.SYSTEM.SIZE	&	\ GO TO 1730		IF 					&				   (BASIC%= 1% AND COBOL%= 1% AND BIG.SYSTEM%= 1%)&				OR (BASIC%= 1% AND COBOL%= 0%)		&				OR (BASIC%= 0% AND COBOL%= 1%)		&				OR (REAL.SIZE < SMALL.SYSTEM.SIZE)	&	!								&	\ ON FN.ASK%(221%,"COBOL","/BASIC/COBOL",FALSE%,1%)		&		GO TO 1640, 322      00, 1710, 1720				!V1.1&	!								&	!	Determine which language OTS if only one is allowed and both &	!	are present						&1710	\ BASLIB%= 1%							&	\ GO TO 1730							&	!								&	!	Basic OTS						&1720	\ COBRTS%= 1%							&	\ GO TO 1730							&	!								&	!	Cobol OTS						&1730	\ GO TO 1750	UNLESS (BIG.SYSTEM%= 1%  AND FULL.S.E.%= 1%)	&	\ SIZE(4)= OTHER.FCP.SIZE					&!!!	\ SIZE(21)= OTHER.FCP.SIZE					&!!!	\ SIZE(22)= OTHER.FCP.SIZE					&!!!	\ SIZE(23)= OTHER.FCP.SIZE					&	!								&	!	Use developer's FCP       on big system with S.E.		&1750	\ SIZE(24)= OTHER.GEN.SIZE	IF FULL.S.E.%= 1%		&	!								&	!	Set up the big GEN if required				&1760	!$**************************************************************&	!								&	!								&	!	SET UP SAMPLE APPLICATION				&	!								&	!								 V1,1/3&	!	Set up the SAMPLE.STA file according to the following	 V1.1/3&	!	rules:							 V1.1/3&	!								 V1.1/3&	!	  (1) If there is a shared OTS present, set up SAMPLE	 V1.1/3&	!	      to run in that language with that OTS.		 V1.1/3&	      !	  (2) If there is no shared OTS present, or if both	 V1.1/3&	!	      language OTSs are present, then set up SAMPLE	 V1.1/3&	!	      to run in COBOL.					 V1.1/3&	!								 V1.1/3&	!	This implies the following order of preference:		 V1.1/3&	!								 V1.1/3&	!		COBOL shared OTS				 V1.1/3&	!		BASIC+2 shared OTS				 V1.1/3&	!		COBOL non-shared OTS				 V1.1/3&	!		BASIC+2 non-shared OTS				 V1.1/3&	!								&	!***************************************************************&	!								&	\ IF COBOL%= 1%  AND COB      RTS%= 1%				&		THEN	SUBSTITUTE.TEXT$(1%)= "CRT"			&			\ SUBSTITUTE.TEXT$(2%)= "[110,2]"		&			\ SUBSTITUTE.TEXT$(6%)= "[110,4]"		&			\ SUBSTITUTE.TEXT$(7%)= "[111,2]"		&			\ SUBSTITUTE.TEXT$(8%)= "[111,4]"		&			\ T%= FN.EXEC.BLOCK% ("MCR...",238%,FALSE%)	&			\ GO TO 1780					&			!						&			! Processing for Sample App - Cobol RTS		&1765	\ IF BASIC%= 1% AND BASLIB%= 1%					&		THEN	SUBSTITUTE.TEXT$(1%)= "BRT"			&			\ SUBSTITUTE.TEXT$(2%)= "[111,2]"		&			\ SUBSTITUTE.TEXT$(6%)= "[111,4]"		&			\ SUBSTITUTE.TEXT$(      7%)= "[110,2]"		&			\ SUBSTITUTE.TEXT$(8%)= "[110,4]"		&			\ T%= FN.EXEC.BLOCK%("MCR...",238%,FALSE%)	&			\ GO TO 1780					&			!						&			!	Processing for Sample App - Basic RTS	&1770	\ IF COBOL%= 1%							&		THEN	SUBSTITUTE.TEXT$(1%)= "CBL"			&			\ SUBSTITUTE.TEXT$(2%)= "[110,4]"		&			\ SUBSTITUTE.TEXT$(6%)= "[111,2]"		&			\ SUBSTITUTE.TEXT$(7%)= "[111,4]"		&			\ SUBSTITUTE.TEXT$(8%)= "[110,2]"		&			\ T%= FN.EXEC.BLOCK%("MCR...",238%,FALSE%)	&			\ GO TO 1780					&			!						&			!	Processing for Sample App -       Cobol no RTS&1775	\ IF BASIC%= 1%							&		THEN	SUBSTITUTE.TEXT$(1%)= "B2S"			&			\ SUBSTITUTE.TEXT$(2%)= "[111,4]"		&			\ SUBSTITUTE.TEXT$(6%)= "[111,2]"		&			\ SUBSTITUTE.TEXT$(7%)= "[110,2]"		&			\ SUBSTITUTE.TEXT$(8%)= "[110,4]"		&			\ T%= FN.EXEC.BLOCK%("MCR...",238%,FALSE%)	&			\ GO TO 1780					&			!						&			!	Processing for Sample App - Basic no RTS&1780	!****************************************************************V1.1/3&	!								 V1.1/3&	!								 V1.1/3&	!	SET UP SAMPLE APPLICATION COMMUNICA      TION TRANSACTIONS	 V1.1/3&	!								 V1.1/3&	!	Set up the SMPLTL.STA file according to the same rules	 V1.1/3&	!	as above.  						 V1.1/3&	!								 V1.1/3&	!								 V1.1/3&	!****************************************************************V1.1/3&	!								 V1.1/3&	\ GO TO 1799 IF COMMUNICATIONS% <> 1%				!V1.1/3&	\ GO TO 1790 IF COBOL% <> 1%					!V1.1/3&	\ GO TO 1782 IF BASIC% = 1%					!V1.1/3&	\ SUBSTITUTE.TEXT$(6%) = "[111,10]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(7%) = "B2S"					!V1.1/3&	\ TE% = FN.EXEC.BLOCK      %("MCR...",236%,FALSE%)			!V1.1/3&	\ SUBSTITUTE.TEXT$(7%) = "BLB"					!V1.1/3&	\ TE% = FN.EXEC.BLOCK%("MCR...",236%,FALSE%)			!V1.1/3&	\ SUBSTITUTE.TEXT$(6%) = "[111,24]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(7%) = "BP2"					!V1.1/3&	\ TE% = FN.EXEC.BLOCK%("MCR...",236%,FALSE%)			!V1.1/3&	!								 V1.1/3&	!	Skip out if communications option not present.		 V1.1/3&	!	If only the COBOL option is present, delete the		 V1.1/3&	!	  BASIC+2 sources (.B2S, .BLB) in [111,10] and the	 V1.1/3&	!	  BASIC+2 compiler command f      iles (.BP2) in [111,24].	 V1.1/3&1782	\ GO TO 1785 IF COBRTS% <> 1%					!V1.1/3&	\ SUBSTITUTE.TEXT$(1%) = "CRT"					!V1.1/3&	\ SUBSTITUTE.TEXT$(2%) = "[110,2]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(6%) = "[110,4]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(7%) = "[111,2]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(8%) = "[111,4]"				!V1.1/3&	\ TE% = FN.EXEC.BLOCK%("MCR...",237%,FALSE%)			!V1.1/3&	\ GO TO 1799							!V1.1/3&	!								 V1.1/3&	!	If the COBOL option and the COBOL shared OTS are both	 V1.1/3&	!	  present, then set up the SMP      LTL.STA file to reference	 V1.1/3&	!	  the COBOL shared OTS versions of the TSTs.  Delete the V1.1/3&	!	  other TST task images.				 V1.1/3&1785	\ GO TO 1790 IF BASLIB% = 1%					!V1.1/3&	\ SUBSTITUTE.TEXT$(1%) = "CBL"					!V1.1/3&	\ SUBSTITUTE.TEXT$(2%) = "[110,4]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(6%) = "[110,2]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(7%) = "[111,2]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(8%) = "[111,4]"				!V1.1/3&	\ TE% = FN.EXEC.BLOCK%("MCR...",237%,FALSE%)			!V1.1/3&	\ GO TO 1799							!V1.1/3&	!								       V1.1/3&	!	If the COBOL option is present without COBOL shared OTS, V1.1/3&	!	  then set up the SMPLTL.STA file to reference		 V1.1/3&	!	  the COBOL non-shared OTS versions of the TSTs. 	 V1.1/3&	!	  Delete the other TST task images.			 V1.1/3&1790	\ GO TO 1799 IF BASIC% <> 1%					!V1.1/3&	\ GO TO 1792 IF COBOL% = 1%					!V1.1/3&	\ SUBSTITUTE.TEXT$(6%) = "[110,10]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(7%) = "CBL"					!V1.1/3&	\ TE% = FN.EXEC.BLOCK%("MCR...",236%,FALSE%)			!V1.1/3&	\ SUBSTITUTE.TEXT$(7%) = "LIB"		      			!V1.1/3&	\ TE% = FN.EXEC.BLOCK%("MCR...",236%,FALSE%)			!V1.1/3&	!								 V1.1/3&	!	If only the BASIC+2 option is present, delete the	 V1.1/3&	!	  COBOL sources (.CBL, .LIB) in [110,10].		 V1.1/3&1792	\ GO TO 1795 IF BASLIB% <> 1%					!V1.1/3&	\ SUBSTITUTE.TEXT$(1%) = "BRT"					!V1.1/3&	\ SUBSTITUTE.TEXT$(2%) = "[111,2]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(6%) = "[111,4]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(7%) = "[110,2]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(8%) = "[110,4]"				!V1.1/3&	\ TE% = FN.EXEC.BLOCK%("MCR...",      237%,FALSE%)			!V1.1/3&	\ GO TO 1799							!V1.1/3&	!								 V1.1/3&	!	If the BASIC+2 option and the BASIC+2 shared OTS	 V1.1/3&	!	  are both present (and COBOL shared OTS is not),	 V1.1/3&	!	  then set up the SMPLTL.STA file to reference the	 V1.1/3&	!	  BASIC+2 shared OTS versions of the TSTs.		 V1.1/3&	!	  Delete the other TST task images.			 V1.1/3&1795	\ SUBSTITUTE.TEXT$(1%) = "B2S"					!V1.1/3&	\ SUBSTITUTE.TEXT$(2%) = "[111,4]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(6%) = "[111,2]"				!V1.1/3&	\ SUBSTITUTE.      TEXT$(7%) = "[110,2]"				!V1.1/3&	\ SUBSTITUTE.TEXT$(8%) = "[110,4]"				!V1.1/3&	\ TE% = FN.EXEC.BLOCK%("MCR...",237%,FALSE%)			!V1.1/3&	!								 V1.1/3&	!	The only language present is BASIC+2 without shared	 V1.1/3&	!	  OTS.  Set up the SMPLTL.STA file to reference		 V1.1/3&	!	  the BASIC+2 non-shared OTS versions of the TSTs. 	 V1.1/3&	!	  Delete the other TST task images.			 V1.1/3&1799	!								&1800	!***************************************************************&	!								&	!								&	!	TRAX/3271 & T      RAX 2780 Dialog				&	!								&	!								&	!***************************************************************&	!								&1801	\ GO TO 1870	IF (KMC.3271% = 0%) AND (KMC.2780% = 0%)		&	\ ON FN.ASK%(239%,"YES","/YES/NO",FALSE%,1%)			&		GO TO 1700, 32200, 1810, 1820				&	!								&	!	Determine if Defaults for buffer size are OK		&1810	\ BUFFER.3271%= 256%						&	\ BUFFER.2780%= 400%						&	\ GO TO 1860							&	!								&	!	They are acceptable, use the defaults			&1820	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= 2048      						&	\ BUFFER.3271%= 256%						&	\ BUFFER.2780%= 400%						&	\ GO TO 1840		IF KMC.2780% = 0%			&	\ ON FN.ASK%(240%,"400","I",TRUE%,3%)				&		GO TO 1800, 32200, 1830					&	!								&	!	Determine 2780 buffer size				&1830	\ BUFFER.2780%= ASK.NUM%					&1840	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= 2048						&	\ GO TO 1860		IF KMC.3271% = 0%			&	\ ON FN.ASK% (241%,"256","I",TRUE%,3%)				&		GO TO 1820, 32200, 1850					&	!								&	!	Determine 3271 buffer size				&1850	\ BUFFER.3271%= ASK.NUM%					&1860	\ GO T      O 1865		IF KMC.3271% = 0%			&	\ FOR T%= 0% TO (KMC.3271%-1%)					&		\ PRINT #1%, T60$ + NUM1$(T%) + ":" + 			&			NUM1$(BUFFER.3271%) + "."			&	\ NEXT T%							&	!								&	!	Create SET /BUF commands for 3271 XK devices		&1865	\ GO TO 1870		IF KMC.2780% = 0%			&	\ FOR T%= KMC.3271% TO (KMC.3271% + KMC.2780% - 1%)		&		\ PRINT #1%, T60$ + NUM1$(T%) + ":" + 			&				NUM1$(BUFFER.2780%) + "."		&	\ NEXT T%							&	!								&	!	Create SET /BUF commands for 2780 XK devices		&1870	\ TEMP%= 0%							&2600	!$**********      ****************************************************&	!                                                               &	!                                                               &	! 	CEXPAR & POOL	& DIREC					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ CEXPAR.SIZE= CEXPAR.SIZE%					&	\ CEXPAR.SIZE= 0		IF TP.PRESENT% <> 1%		&	\ DIREC.SI      ZE = DIREC.SIZE%					&	!								&	\ ATS.BASE= (20*1024 - CEXPAR.SIZE)/32				&	\ ATS.BASE= 16*1024/32		IF CPU.TYPE%= 34%		&	!								&	\ I%= 1%							&	\ SIZE(1)= CEXPAR.SIZE%						&	\ BASE= ATS.BASE						&	\ GOSUB 10200			IF TP.PRESENT%= 1%		&	!								&	!	Set up CEXPAR and base of partitions			&2700	\ POOL.TOP= ATS.BASE						&	\ POOL.TOP= ATS.BASE - (DIREC.SIZE/32)	IF CPU.TYPE%= 34%	&	\ T$= FN.REAL.TO.OCT$(POOL.TOP)					&	\ PRINT #1%, "SET /POOL=" + T$					&	!								&	!	Specify the pool size  - to 16K -DI      REC on 11-34		&	!				 to 20K - cexpar on 11-70	&2750	\ HOLD.BASE= BASE						&	\ BASE= (20*1024)/32						&	\ BASE = POOL.TOP 	IF CPU.TYPE%= 34%			&	!								&	\ I%= 27%							&	\ SIZE(27)= DIREC.SIZE						&	\ GOSUB 10200							&	!								&	\ BASE= HOLD.BASE 	IF CPU.TYPE%= 34%			&	!								&	!	Set up DIREC such that there is no memory lost on a 	&	!	34							&2800	!$**************************************************************&	!                                                               &	!                                                                     &	! 	MAIN PARTITIONS						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ I%= 7%							&	\ SIZE(7)= SYSCOM.SIZE%						&	\ GOSUB 10200							&	\ PRINT #3%,T3$							&	!								&	!	Create SYSCOM						&	!								&	\ I%= 25%							&	\ SIZE(25)= LDR.SIZE%						&	\ GOSUB 10200							&	!								&	!	Creat      e LDRPAR						&	!								&	\ I%= 28%							&	\ LINE.BUF.3271%= 2%						&	\ SIZE(28)= 5% * BUFFER.2780% * KMC.2780%	! 2780 BUFFERS	 V1.1/03&		  + 3% * BUFFER.3271% * KMC.3271%	! 3271 BUFFERS	&		  + (3% * BUFFER.3271% * SUBLINK.3271%)	/	! 3271 TERMINAL BUFFERS	&					LINE.BUF.3271%		!	&	\ SIZE(28)= SIZE(28)/2			! BYTES TO WORDS	&	\ GOSUB 10200		IF (KMC.2780% > 0%)  OR (KMC.3271% > 0%)&	\ PRINT #3%, T56$	IF (KMC.2780% > 0%)  OR (KMC.3271% > 0%)&	!								&	!	Create XKBUF partition if XK driver support is presen      t	&	!								&	!								&	\ I%= 2%							&	\ T.DRVPAR.SIZE%= DRVPAR.SIZE%					&	\ T.DRVPAR.SIZE%= DRVPAR.SIZE% + JOURNAL.SIZE%			&			IF ((BIG.SYSTEM%=1%) AND (TP.PRESENT%= 1%))	&	\ SIZE(2)= T.DRVPAR.SIZE%						&	\ GOSUB 10200							&	\ PRINT #3%, T20$  IF ((BIG.SYSTEM%= 0%) AND (TP.PRESENT% = 1%))&	\ PRINT #3%, T21$  IF ((BIG.SYSTEM%= 1%) AND (TP.PRESENT% = 1%))&	!								&	!	Install JOURNAL in GEN or DRVPAR depending on system size&	!	Create DRVPAR						&2900	!**********************************************      *****************&	!								&	!								&	!	More partitions						&	!								&	!								&	!***************************************************************&	!								&	\ I%= 3%							&	\ SIZE(3)= ATS.DRVPAR.SIZE					&	\ GOSUB 10200			IF TP.PRESENT%= 1%		&!	\ PRINT #3%, T22$		IF TP.PRESENT%= 1%		&	\ PRINT #3%, T55$		IF TP.PRESENT%= 1%		&	\ PRINT #3%, T46$		IF TP.PRESENT%= 1%		&	!								&	!	Create ATS DRVPAR					&3000	\ I%= 4%							&	\ GOSUB 10200							&	\ PRINT #3%,T1$	IF SIZE(4)= OTHER.FCP.SIZE			&	\ PRINT       #3%,T2$ IF SIZE(4)<> OTHER.FCP.SIZE			&	!								&	!	Create FCPPAR						&3050	\ I%= 26%							&	\ GOSUB	10200		IF COMMUNICATIONS%= 1%	AND S.DEV.SYS%= 0%&	\ PRINT #3%,T19$	IF COMMUNICATIONS%= 1%	AND S.DEV.SYS%= 0%&	!								&	!	Create Communications partition				&3100	\ I%= 5%							&	\ GOSUB 10200	IF TP.PRESENT%= 1%				&	\ PRINT #3%,T4$	IF TP.PRESENT%= 1%				&	!								&	!	Create TPMLIB						&3200	\ I%= 6%							&	\ SIZE(6)= TSTLIB.SIZE%						&	\ GOSUB 10200							&	\ PRINT #3%,T5$							&	!								&	!	Crea      te TSTLIB						&3400	!$**************************************************************&	!                                                               &	!                                                               &	! 	MORE PARTITON DEFINITIONS				&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ I%= 12%							&	\ GOSUB 10200	IF FULL.S.E.%= 1%	      			&	\ PRINT #3%, T35$		IF FULL.S.E.%=1%		&	\ PRINT #3%, T30$		IF FULL.S.E.%= 1%		&	\ PRINT #3%, T31$		IF FULL.S.E.% <> 1%		&	!								&	!	Create MTAACP  partition				&	!	Its put here to get a SYS partition low enough for SAV	&	!								&3450	\ GO TO 3500	IF CPU.TYPE%=34%				&	\ I%= 8%							&	\ GOSUB 10200		IF BASLIB%= 1%				&	\ PRINT #3%,T16$	IF BASLIB%= 1%				&	!								&	!	Create BASLIB						&3500	\ GO TO 3600		IF CPU.TYPE%= 34%			&	\ I%= 9%							&	\ GOSUB 10200		IF COBRTS%= 1%				&	\ PRINT #3%,T15$	IF       COBRTS%= 1%				&	!								&	!	Create COBRTS						&3600	\ I%= 10%							&!	\ GOSUB 10200	IF FULL.S.E.%= 1%				&	\ GOSUB 10310	IF FULL.S.E.%= 1%				&	\ GOSUB 10301	IF FULL.S.E.% <> 1%				&	!								&	!	Create SPLPAR						&3700	\ I%= 11%							&	\ GOSUB 10200	IF FULL.S.E.%= 1%				&	!								&	!	Create SYSPAR						&3800	!$**************************************************************&	!                                                               &	!                                                                     &	! 	ACP PARTITIONS						&	!                                                               &	!                                                               &	!***************************************************************&3900	\ GO TO 4500		!!! ACP PARTITION SUPPORT REMOVED	&!!	!								&!!!	\ SYSTEM.DISK$= "DB0"						&!!!	\ SYSTEM.DISK$= "DR0"	IF RP.NUM%= 0%				&!!!	\ SYSTEM.DISK$= "DM0"	IF RP.NUM%= 0% AND RM.NUM%= 0%		&!!!	\ GO TO 4000	IF ((BIG.SYSTEM%= 0%) OR (RP.NUM%= 0%))		&!!!	\ GO TO 4000	IF TP.      PRESENT% = 1%				&!!!	\ I%= 21%							&!!!	\ FOR J%= 0% TO RP.NUM% - 1%					&!!!		\ DEVICE$= "DB" + NUM1$(J%) 				&!!!		\ GO TO 3905	IF DEVICE$= SYSTEM.DISK$		&!!!		\ NAME$(I%)= DEVICE$ + "PAR"				&!!!		\ GOSUB 10200						&!!!		\ GOSUB 10400						&3905	!!!\ NEXT J%							&	!!!								&	!!!	Create extra ACP partitions for DB disks		&4000	!!!\ GO TO 4100	IF ((BIG.SYSTEM%= 0%) OR (RM.NUM%= 0%))		&	!!!\ GO TO 4100	IF TP.PRESENT% = 1%				&	!!!\ I%= 22%							&	!!!\ FOR J%= 0% TO RM.NUM%- 1%					&	!!!	\ DEVICE$=       "DR" + NUM1$(J%)				&	!!!	\ GO TO 4005	IF DEVICE$= SYSTEM.DISK$		&	!!!	\ NAME$(I%)= DEVICE$ + "PAR"				&	!!!	\ GOSUB 10200						&	!!!	\ GOSUB 10400						&4005	!!!\ NEXT J%							&	!!!								&	!!!	Create the extra ACP partitions for the DR disks	&4100	!!!\ GO TO 4500	IF ((BIG.SYSTEM%= 0%) OR (RK.NUM%= 0%))		&	!!!\ GO TO 4500	IF TP.PRESENT%= 1%				&	!!!\ I%= 23%							&	!!!\ FOR J%= 0% TO RK.NUM%- 1%					&	!!!	\ DEVICE$= "DM" + NUM1$(J%)				&	!!!	\ GO TO 4105	IF DEVICE$= SYSTEM.DISK$		&	!!!	\ NAME$(I%)= DEVI      CE$ + "PAR"				&	!!!	\ GOSUB 10200						&	!!!	\ GOSUB 10400						&4105	!!!\ NEXT J%							&	!!!								&	!!!	Create the extra ACP partitions for the DM disks	&4500	!$**************************************************************&	!                                                               &	!                                                               &	! 	TRANSACTION PROCESSOR PARTITIONS & GEN			&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	\ GO TO 4750	IF TP.PRESENT%= 0%				&4501	\ PRINT								&	\ MEMORY.LEFT= S.MEMORY.SIZE%*32 - BASE	- SIZE(24%)/32		&	\ MEMORY.LEFT= MEMORY.LEFT/32					&	\ MEMORY.LEFT%= 2%*INT ( MEMORY.LEFT )				&	\ MEMORY.LEFT$= NUM1$( MEMORY.LEFT% )			&	\ SUBSTITUTE.TEXT$(1)= MEMORY.LEFT$				&	\ A%= FN.PRINT.HELP.TEXT%(225%,1%)				&	!								&	\ T = MEMORY.LEFT						&	\ S = MEMORY.LEFT						&	!								&	!	Tell the user       how much memory is left and how to 	&	!	allocate it.						&	!								&4502	\ FOR I%= 1% TO NO.CON.TP%					&		\ ASK.RANGE(0)= 0					&		\ ASK.RANGE(1)= 100					&		\ SUBSTITUTE.TEXT$(1)= NUM1$(I%)			&		\ ON FN.ASK%(226%,"","I",TRUE%,1%)			&			GO TO 4501, 32200, 4510				&		!							&		!	Don't escape beyond the first TP		&		!	Determine % of remainder to go to TPi		&4510		\ T%= I% + 12%						&		\ SIZE(T%)= (T*ASK.NUM%*32%*32%)/100		&		\ PRINT						&		\ X%= 2%*INT(SIZE(T%) /1024)				&		\ PRINT "	You have specified       a size of ";		&			X%;" Kbytes for this transaction "	&			+ "processor partition."			&		\ PRINT							&		\ X= SIZE(T%)/1024					&		\ GO TO 4512	IF X = 0				&		\ GO TO 4800	IF X < 80/2				&		\ GO TO 4825	IF X < 152/2				&		!							&		!	Make validity checks on size			&4512		\ S= S - SIZE(T%)/1024		&		\ PER%(I%)= ASK.NUM%					&	\ NEXT I%							&	\ PRINT								&	!								&	!	Calculate how much memory is specified for each partition&	!	Tabulate % to check < 100%				&4520	\ T%= PER%(1%) + PER%(2%) 					&	\ GO TO       4530	IF T% <= 100%					&	!								&	\ PRINT								&	\ PRINT "% you have allocated more than 100% fo the remaining space."&	\ PRINT "  Try again!"						&	\ PRINT								&	\ GO TO 4500							&	!								&	!	If in-consistent, try again				&4530	\ MEMORY.LEFT= S						&	\ GO TO 4700	IF S < 1				&	\ PRINT								&	\ MEMORY.LEFT%= INT (S )				&	\ MEMORY.LEFT$= NUM1$ ( MEMORY.LEFT%*2% )			&	\ PRINT "The un-allocated memory, ";MEMORY.LEFT$;" K bytes" +	&							", will be "	&			+ "added to GEN."				&	\ PRINT								&      	!								&	!	Tell the user what happened to left-over memory		&4700	!$***************************************************************&	!								&	!								&	!	FINAL PARTITION SETUP					&	!								&	!								&	!***************************************************************&	!								&	\ FOR I% = 13% TO 16%						&		\ NAME$(I%)= "TP" + NUM1$(I%-12%) + "PAR"		&		\ GOSUB 10200	IF(( (NO.CON.TP% + 12%) => I% )		&					AND (SIZE(I%) <> 0 ))		&	\ NEXT I%							&	!								&	!	Create the TP partitions				&4750	\ I%=       24%							&	\ ADDED.GEN= 0							&	\ ADDED.GEN= (MEMORY.LEFT - 1)*1024	IF MEMORY.LEFT > 1	&	\ SIZE(24%)= SIZE(24%) + ADDED.GEN				&	\ PRINT #3%, T45$	IF IND.WANTED% <> 1%			!V1.1&	\ PRINT #3%, T44$	IF IND.WANTED% =  1%			!V1.1&!!!	\ PRINT #3%, T49$						&	\ PRINT #3%, T54$						&	\ PRINT #3%, T50$		IF SIZE(24%) < 32*1024		&	\ PRINT #3%, T51$		IF SIZE(24%) => 32*1024		&	\ GOSUB 10200							&	\ PRINT #2%							&	\ PRINT #2%, "GEN will automatically be extended to the top of " +&			"memory when the system is S      AVEd."		&	\ PRINT #2%							&	!								&	\ SUBSTITUTE.TEXT$(20%)= "SML"					&	\ SUBSTITUTE.TEXT$(20%)= "ANS"	IF (SIZE(24%) => 32*1024)	!V1.1/3&					AND (CPU.TYPE% = 70%)		!V1.1/3&	\ T%= FN.EXEC.BLOCK% ( "MCR...", 242%, FALSE% )			&	!								&	!	Set up the correct PIP					&	!	Always use small PIP on 11/34				 V1.1/3&	!								&	\ GO TO 32000							&	!								&	!	Create GEN						&	!	Exit with success					&4800	\ PRINT								&	\ X%= 2%*INT(SIZE(T%)/1024%)	!BJD001				&	\ PRINT "	You have specified ";X%;"Kbytes       for"	&			+ " this partition."				&	\ PRINT								&	\ PRINT "	The minimum value is 80 Kbytes.  Please re-specify."&	\ PRINT								&	\ GO TO 4502							&	!								&	!	Error message if TP partition is to small		&4825	\ PRINT									&	\ PRINT	"	% This TP partition will not "&		+ "support the resident RMS feature."			&	\ PRINT								&	\ GO TO 4512							&	!								&	! 	Warning message if too small for resident RMS		&5000	!$**************************************************************&	!                                                                     &	!                                                               &	! 	LIST THE PARTITIONS AS THEY ARE CREATED			&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ MASK$= "'LLLLLL   ######   ######   'LLLLLL   'RRRRRR   'RRRRRR"&	\ PAR.BASE%= 2*PAR.BASE/32					&	\ PAR.SIZE%= 2*PAR.SIZE/32					&	\ PRINT #2%       USING MASK$, PAR.NAME$,PAR.BASE%,PAR.SIZE%,PAR.TYPE$,&				 PAR.BASE$, PAR.SIZE$			&	\ RETURN							&	!								&	!	Print the partition definition giving name, type, and octal &	!	and decimal values for the base address and size	&5010	\ PRINT #2%							&	\ PRINT #2%, "	TRAX PARTITION DEFINITIONS", DATE$(0)		&	\ PRINT #2%							&	\ PRINT #2%, EDIT$(SYSTEM.NAME$,2%),S.HERALD.TEXT$		&	\ PRINT #2%							&	\ PRINT #2%, "All octal numbers are in units of 64 bytes."	&	\ PRINT #2%, "All decimal numbers are in Kbytes      ."		&	\ PRINT #2%							&	\ PRINT #2%, "Name     Decimal  Decimal   Type         Octal    Octal"&	\ PRINT #2%, "         Base     Size                   Base     Size "&	\ PRINT #2%							&	\ RETURN							&	!								&	!	print the heading for the partition list		&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!****************************************      ***********************&10200	!$**************************************************************&	!                                                               &	!                                                               &	! 	CREATE THE COMMAND LINE					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	!								&	\ PAR.TYPE$= PAR.TYPE$(I%)					      	&	\ PAR.NAME$= NAME$(I%)						&	\ PAR.NAME$= EDIT$(PAR.NAME$,2%)				&	\ T= SIZE(I%)							&	\ T= -T		IF T < 0%					&	\ PAR.SIZE= T/32						&	\ PAR.SIZE$= FN.REAL.TO.OCT$(PAR.SIZE)				&	\ PAR.BASE$= FN.REAL.TO.OCT$(BASE)				&	\ PAR.BASE= BASE						&	\ BASE= BASE + PAR.SIZE						&	!								&	!	Format the data into strings				&	!								&	\ COMMAND$= "SET /MAIN=" + PAR.NAME$ + ":" + PAR.BASE$	+ ":"	&						+ PAR.SIZE$ + ":"	&			+ PAR.TYPE$					&	\ PRINT #1%, COMMAND$						&	\ GOSUB 5000							&	!								&	!	Pr      int the command line and the report line		&	!								&10210	\ RETURN							&	!								&	!	SUMMARY:						&	!								&	!	Get current partition name, type, and size		&	!	Read the map file if necessary to get the size		&	!	Update the base address					&	!	Create the command line					&	!	Print the line in a formatted fashion			&	!	Return							&10301	\ PRINT #3%,T6$							&	\ PRINT #3%,T8$							&	\ PRINT #3%,T10$						&	\ PRINT #3%,T12$						&	\ PRINT #3%,T17$						&!!!	\ PRINT #3%,T29$						&	\ PRINT #3%,T47$		      				&!	\ PRINT #3%,T52$						&	\ RETURN							&	!								&	!	If only gen is present, install all se stuff in gen	&10310	\ PRINT #3%,T7$							&	\ PRINT #3%,T9$							&	\ PRINT #3%,T11$						&	\ PRINT #3%,T13$						&	\ PRINT #3%,T18$						&	\ PRINT #3%,T14$						&!!!	\ PRINT #3%,T23$						&!!!	\ PRINT #3%,T24$						&!!!	\ PRINT #3%,T25$						&!!!	\ PRINT #3%,T26$						&!!!	\ PRINT #3%,T27$						&!!!	\ PRINT #3%,T28$						&!!!	\ PRINT #3%,T34$						&!!!	\ PRINT #3%,T36$	IF BASIC%= 1%				&!!!	\ PRINT #3%,T37$	      IF COBOL%= 1%				&!!!	\ PRINT #3%,T38$						&!!!	\ PRINT #3%,T39$						&!!!	\ PRINT #3%,T40$						&!!!	\ PRINT #3%,T41$						&!!!	\ PRINT #3%,T42$						&!!!	\ PRINT #3%,T43$						&!!!	\ PRINT #3%,T48$						&	\ PRINT #3%,T47$						&!!!	\ PRINT #3%,T53$						&	\ RETURN							&	!								&	!	If SPLPAR, SYSPAR are present install se stuff there	&	!	Also, install SHF since we now have a task controlled	&	!	partition for it					&10400	!!!\ ACP.NAME$= DEVICE$ + "ACP"					&	!!!\ INS.1$= "INS [1,54]BIGFCP/TASK=" + AC      P.NAME$ + "/PAR=" + NAME$(I%)&	!!!\ INS.2$= "INS [1,54]FCP8K/TASK=" + ACP.NAME$ + "/PAR=" + NAME$(I%)&	!!!\ PRINT #3%,INS.1$	IF SIZE(4) <> OTHER.FCP.SIZE		&	!!!\ PRINT #3%,INS.2$	IF SIZE(4) =  OTHER.FCP.SIZE		&	!!!\ RETURN							&	!!!								&	!!!	Generate the install commands for extra ACP partitions	&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!*      **************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$*******************      *******************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!	      							&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	!								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Successful exit						&32100	\ CLOSE #T% 	FOR T%= 1% TO 12%				&	\ CALL EXITS2(1%, 27%)						&	!								&	!	ESC exit						&32200	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%, 26%)						&	!								&	!	CTRL-Z exit						&32767	!$******************************************   ¾   ********************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END¾          šwAkQÁ› 8$        	.TITLE	SERROT	- ROOT MODULE FOR ERROR REPORT	.IDENT	/V1.1A01/						; KR001	.SBTTL	MACRO CALLS & DIALOG FILE MAP                                   ; KR001	.ENABL 	LC                                                              ; KR001;                                                                               ; KR001;+                                                                              ; KR001;                                                                               ; KR001;	S E R R O T          M O D I F I C A T I O N    H I S T O R Y                 ; KR001;                                                                               ; KR001;                                                                               ; KR001;	VER/ED	DATE	INITIALS	REASON                                  ; KR001;	_______	_________ ___	________________________________________        ; KR001;	V1.1A00	12-Mar-79 KMR	Added call to TTCHK to assure that the	; KR001;				  utility only runs from TT0: or batch.	; KR001;	V      1.1A01	19-Jun-79 KMR	Removed version number from herald.	; KR002;                                                                               ; KR001;-                                                                              ; KR001;                                                                               ; KR001                                                                                ; KR001	.PAGE                                                                   ; KR001	.MCALL	FDBDF$,FDOP$      A,FDRC$A,EXST$S,FDBK$A,FDBF$A,FDAT$A                ;**-3	.MCALL	FINIT$,FSRSZ$,QIOW$	.PSECT	DATROT,D,REL,RW,GBL,CON;*******************************************************;;;	D I A L O G    F I L E    M A P;;;*******************************************************;DIALOG::.BLKB	274.		;The map for the Dialog file;SELAPP	==	0		;The selected transaction processorALLAPP	==	6		;Switch - 1 if ALL TP were selectedALLTRA	==	8.		;Switch - 1 if ALL TP were selectedDETLST	==	10.		;Switch - indicates type of report req      uestedBEDATE	==	12.		;ASCII - beginning date for selectionBETIME	==	24.		;ASCII - beginning time for selectionENDATE	==	29.		;ASCII - ending date for selectionENTIME	==	41.		;ASCII - ending time for selectionINDEV	==	46.		;Input file device spec.INUIC	==	52.		;Input file UIC spec.INNAME	==	62.				;Input file name spec.OUTDEV	==	82.		;Output file device spec.OUTUIC	==	88.		;Output file UIC spec.OUTNAM	==	98.				;Output file name spec.BYEAR	==	118.		;Integer beginning yearBMON	==	120.		;Integer beginning mont      hBDAY	==	122.		;Integer beginning dayBHOUR	==	124.		;Integer beinnning hourBMIN	==	126.		;Integer beginning minuteEYEAR	==	128.		;Integer ending yearEMON	==	130.		;Integer ending monthEDAY	==	132.		;Integer ending dayEHOUR	==	134.		;Integer ending minuteEMIN	==	136.		;Integer ending minuteFIRERR	==	138.		;Switch - 1 if first error is selectedLSTERR	==	140.		;Switch - 1 if last error is selectedD1LEN	==	142.		;Length of input dev specU1LEN	==	144.		;Length of input UIC specN1LEN	==	146.		;Length of input nam      e specD2LEN	==	148.				;Length of output dev specU2LEN	==	150.		;Length of output UIC specN2LEN 	==	152.				;Length of output name specTRANTA	==	154.		;Base of table of selected transaction names	.PAGE	.SBTTL	I/O INITIALIZATION;*******************************************************;;;	I/O    I N I T I A L I Z A T I O N;;;*******************************************************;FDBI::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	IBUF,512.,,,IOSTAT	FDOP$A	1,DSDI,,FO.RD;;		The error log fileFDBO::	FDBDF$	FDAT$A	R.VAR,FD.CR!FD.      BLK	FDRC$A	FDOP$A	2,DSDO,,FO.WRT	FDBF$A	,,1;;		The report file;;FDBN::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	NBUF,512.,,,IOSTAT	FDOP$A	3,DSDN,,FO.RD;;		The error message name fileFDBT::	FDBDF$	FDAT$A	R.FIX,,512.	FDRC$A	FD.RAN,TOTALS,512.	FDOP$A	4,DSDT,,FO.WRT	FDBF$A	,,1;;		The temporary total file	.PAGE	.SBTTL	CONSTANTS;**********************************************************;;;	CONSTANTS;;;************************************************************;CR	=	15				;CARRIAGE RETLF	=	12				;LINE FEED;	.EVENSTATUS:	.WORD      	1				;Exit status constantIBUF::	.BLKW	256.				;Block buffer input error fileNBUF::	.BLKW	256.				;Error message bufferTOTALS::.BLKW	256.				;Buffer for total fileOFFSET::.BLKW	32.				;Offset block - message fileMIDNIT::.ASCII	/00:00/				;Midnight time constant	.EVENCLOSED::.WORD					;Switch to indicate closing fileIOSTAT::.BLKW	2				;IO status block;HERA:	.BYTE	CR,LF,LF	.ASCII	/SERDAY/						; KR002	.BYTE	CR,LF,LF                                                        ;**-1	.ASCII	/Creates List report for       Today's errors/	.BYTE	CR,LF,LFSHERA	=	. - HERA	.EVEN                                                                   ; KR001;TRUMP:	QIOW$	IO.WBT,13.,32.,,IOSTAT,,<HERA,SHERA,0>;	FSRSZ$	2				;Allocate block buffers	.PAGE	.PSECT	CODROT,RO,I,REL,GBL,CON	.SBTTL	INITIALIZATION CODE;**************************************************;;;	I N I T I A L I Z A T I O N;;;*******************************************************;SERINS::FINIT$	JSR	PC,INI1				;Initialization	JSR	PC,MAIN				;MAIN LINE CODE	JSR	PC,CLOSE1		   ì  	;First close file routine	JSR	PC,SUMM				;TOTAL ROUTINE	JSR	PC,CLOSE2			;Second close routine	EXST$S	STATUS				;EXIT;;;SERDAY:	FINIT$	CALL	TTCHK		; Check to make sure that LUN 13 is             ; KR001				;   assigned to TT0: or batch.                  ; KR001	DIR$	#TRUMP				;HERALD	JSR	PC,INI2				;Initialization	JSR	PC,MAIN				;MAIN LINE CODE	JSR	PC,CLOSE1			;First close file routine	JSR	PC,SUMM				;TOTAL ROUTINE	JSR	PC,CLOSE2			;Second close routine	EXST$S	STATUS				;EXIT;	.END	SERDAYì         €d“Á› 8$        1	!***************************************************************&	!								&	!								&	!		T S T B U I L D					&	!								&	!								&	!								&	!	Program:	TSTBLD					&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	02					 1.1A02&	!	Edit date:	04-Apr-79				 1.1A02&	!	Author(s):	BJD					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!	      							&	!								&	!		     COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$*******************************************************      *******&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	02-Mar-79 KMR	Added prompt for Task Builder	 1.1A00&	!				  Command file name.		 1.1A00&	!				SPR's #T226781 & 22555:		 1.1A00&	!				Added code for COBOL debug	 1.1A00&	!				  terminal global patches.	 1.1A00&	!				SPR #T226769			 1.1A00&	!	V1.1A01	03-Apr-79 KMR	SPR #T205207 - Added code to	       1.1A01&	!				  global patch to use lun 13.	 1.1A01&	!				  for terminal I/O.		 1.1A01&	!	V1.1A02	04-Apr-79 KMR	Added code to assure that the	 1.1A02&	!				  TST segment name is COBDAT for 1.1A02&	!				  COBOL TST's without shared	 1.1A02&	!				  OTS.				 1.1A02&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!************      ***************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Output TKB file spec			&	!	    2		Tests input file specs			&	!	   13		Terminal output				&	!								&	!***************************************************************&400	!$*************************      *************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			group code for task		&	!	ASK.CVT$		dialog function string response	&	!	ASK.HELP$()		Help text array - query n =>	&	!				  help index 5*n		&	!	B%			member code for task		&	!	BAD.FILES%		flag set if a bad file spec is	&	!				  found while parsing		&	!	BASIC.ROOT$		"b" if basic is the lan      guage -	&	!				  TROOTB			&	!	DEBUG%			indicates if any debugger will	&	!				  be used			&	!	DEBUG.TERMINAL$		terminal spec to be used during	&	!				  debug session			&	!	DEFAULT$		holds default value for dialog	&	!				  questions			&	!	DEFAULT.*$		current default value of * - a	&	!				  file spec quantity		&	!	DEV$()			array of parsed device specs	&	!				  form input file spec		&	!	DIRERR%			flag for error checking on	&	!				  directives			&	!	FALSE%			has the value 0%		&	!	FILE.EXT$()		array of parsed fil      e extensions	&	!				  from input file specs		&	!	FILE.IS.OPEN%		flag set to indicate that a file&	!				  is open			&	!	FILE.NAME$		fully parsed & defaulted file	&	!				  name - used for test open	&	!	FILE.NAME$()		array of parsed file name specs	&	!				  from input file specs		&	!	GROUP$			String value of group code	&	!	HIGHEST.FILE.INDEX%	# of files in input file spec	&	!	I%			loop index			&	!	INIT.MODULE.NAME$	user specified module to init	&	!				  message & work space		&	!	LANGUAGE$		indicates which lang      uage is used&	!	LIST$			set of elements in a dialog list&	!				  spec				&	!	LT$			a line terminator string - CR-LF&	!	M%			loop index%			&	!	M%-S%			temporary variables in parsing	&	!				  routine			&	!	MEMBER$			String value of member code	&	!	MESSAGE$		error message to be printed with&	!				  file spec			&	!	NEXT.LINE$		fundamental input file spec	&	!	NOT.FIRST.TIME%		flag used to control printing of&	!				  "/" character			&	!	ODT$			"/da" string if macro debugging	&	!				  is used			&	!	OTS%			indicate      s if an ots is present	&	!	OUTPUT.SPEC$		tkb output file spec		&	!	PARSE.NAME$		one name from input file spec to&	!				  submit to parser		&	!	PROMPT$			holds prompt for dialog		&	!				  questions			&	!	T%			temporary working variable	&	!	T1$-T18$		Definitions of output strings	&	!	TASK.PAR%()		array for get task parameter	&	!				  call				&	!	TASK.UIC$		Uic spec under which task is	&	!				  running			&	!	TEMP.FILE.NAME$		file name which is invalid -	&	!				  used in printing error message&	!	TEST.RESP$()		      temporary array used in		&	!				  validating terminal spec	&	!	TKB.UIC$		output tkb file spec UIC	&	!	TP.DEBUG%		indicates if TST debugger will	&	!				  be used			&	!	TRUE%			has the value -1%		&	!	TT$			output file name$		&	!	UIC$()			array of parsed uic specs from	&	!				  input file spec		&	!	VER$()			array of parsed version # from	&	!				  input file specs		&	!	VER.EDIT.NUM$		program version number		&	!	X%()			array used to decode uic of task&	!								&	!************************************************      ***************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!							      	&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	15100	FN.OCTAL$()	Convert int to octal string	&	!								&	!	15200	FN.FORMAT.FILE$() Put together an array set to 	&	!				  make a file spec		&	!								&	!	15300	FN>PARSE$(,)	Parse an input file name	&	!								&	!	15400	FN.DEV.SPEC%()	Test a teminal spec		&	!								&	!	25000	FN.ASK%()	TPS dialog function		&	!								&	!								&	!***************************************************************&800	!$***      ***********************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines       950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIM	TASK.PAR%(17)		! For Get task parameter call	&903	\ DIM DEV$(15), UIC$(15), FILE.NAME$(15), FILE.EXT$(15), VER$(15)&	!								&	!	Array for parsing file strings				&905	\ DIM ASK.HELP$(50)		! Help text array		&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C	      	&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$= "V1.1A"					!1.1A00&	!								 1.1A00&	!	Assign the current version/edit level #			 1.1A00&1020	\ PRINT								&	\ PRINT "TSTBLD "; VER.EDIT.NUM$				&	\ PRINT								&	\ PRINT  "Links TSTs for testing or final use."			!1.1A00&	\ PRINT								&	!								&	!	Print program herald					&1400	\ LT$= CHR$(13%) +       CHR$(10%)		! CR - LF		&	\ ASK.HELP$(1)= "List the files to be linked.  Separate them"	&			+ LT$						&			+ "with + signs.  The first file name will be"	&			+ LT$						&			+ "the name of the TST."			&	!								&	\ ASK.HELP$(5)= "The allowed languages are BASIC, COBOL, & MACRO."&	!								&	\ ASK.HELP$(10)= "Answer YES only if there is a memory resident"&			+ LT$						&			+ "shared OTS in the system where the TST will run."&	!								&	\ ASK.HELP$(15)= "Answer YES if you are using some debugging aid"&			+ LT$      						&			+ "to debug the TST."				&	!								&	\ ASK.HELP$(20)= "Answer YES only if the TST will be tested under"&			+ LT$						&			+ "the control of the TST debugging aid."	&	!								&	\ ASK.HELP$(25)= "Specify the name of the module which will supply"&			+ LT$						&			+ "the initializing data.  This module may be needed"&			+ LT$						&			+ "to initialize the message & workspace for the test"&			+ LT$						&			+ "of the TST."					&	!								&	\ ASK.HELP$(30)= "In the Transaction processing debug mode y      ou must"&			+ LT$						&			+ "supply the physical device specification of the "&			+ LT$						&			+ "terminal to be used for the debugging session."&	!								 1.1A00&	\ ASK.HELP$(35%) = "TSTBLD creates a task builder indirect "	!1.1A00&			 + LT$						!1.1A00&			+ "command file. You may specify any name you"	!1.1A00&			+ LT$						!1.1A00&			+ "wish for this file.  Enter the desired name "!1.1A00&			+ LT$						!1.1A00&			+ "for the task builder indirect command file."	!1.1A00&	!								 1.1A00&	!	Initialize       the help text strings			&1500	\ T1$= "[1,1]COBRTS/LB"						&	\ T2$= "[1,1]BASLIB/LB"						&	\ T3$= "[1,1]BASLIB/LB:$IXOPN:$ISOPN:$IROPN"			&	\ T4$= "UNITS=0"						&	\ T5$= "UNITS=13"						&	\ T6$= "EXTTSK=1024"						&	\ T7$= "EXTTSK=2048"						&	\ T8$= "GBLDEF=$$$MSG:140200"					&	\ T9$= "GBLDEF=$$$WRK:120000"					&	\ T10$= "GBLDEF=TSTINI:0"					&	\ T11$= "LIBR=TSTLIB:RO"					&	\ T12$= "LIBR=BASLIB:RO"					&	\ T13$= "LIBR=COBRTS:RO"					&	\ T14$= "WNDWS=2"						&	\ T15$= "WNDWS=1"						&	\ T16$= "STACK=244"      						&	\ T17$= "GBLDEF=TSTINI:0"					&	\ T18$= "[1,1]COBDAT"						&	\ T19$= "STACK=218"						&	\ T20$= "UNITS=14"						&	\ T21$ = "GBLPAT=COBDAT:INTST:1"				!1.1A00&	\ T22$ = "GBLPAT=COBDAT:ADDEV:"					!1.1A00&	\ T23$ = "GBLPAT=COBDAT:ADUNIT:"				!1.1A00&	\ T24$ = "GBLPAT=COBDAT:ADLUN:15"				!1.1A01&	\ T25$ = ":COBDAT"						!1.1A02&	!								&	\ TKB.UIC$= ""							&	!								&	\ TRUE%= -1%							&	\ FALSE%= 0%							&	!								&	!	Initialize the constant strings for output file		&	!								 1.1A00&	\ FILE.      IS.OPEN% = FALSE%					!1.1A00&	!								 1.1A00&	!	Indicate that the command file is not open.		 1.1A00&1600	\ CALL GETTSK BY REF (TASK.PAR%(), DIRERR%)			&	\ GO TO 1625		IF DIRERR%= 1%				&	!								&	\ PRINT								&	\ PRINT "? FATAL error in GET TASK PARAMETER call."		&	\ PRINT 							&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Get task parameters					&1625	\ B%= TASK.PAR%(7%) AND 255%					&	\ A%= 255% AND (SWAP%(TASK.PAR%(7%)))				&	!								&	\ GROUP$= FN.OCTAL$(A%)						&	\ MEMBER$= FN.OCTAL$(B%)					      &	\ TASK.UIC$= "[" + GROUP$ + "," + MEMBER$ + "]"			&	!								&	!	Get & format the tasks UIC for use in forming file defaults&1700	\ CLOSE #1%	IF FILE.IS.OPEN%				!1.1A00&	\ FILE.IS.OPEN% = FALSE%					!1.1A00&	!								 1.1A00&	!	Close the previous file if there was one.		 1.1A00&	!	Make sure we think the file is closed.			 1.1A00&	!								 1.1A00&	\ PROMPT$ = "Task Builder indirect command file name"		!1.1A00&	\ DEFAULT$	= "TSTCOM.CMD"					!1.1A00&	\ ON FN.ASK%( PROMPT$, DEFAULT$, "", 34%, 35%, 1% )		!1.      1A00&		GO TO							!1.1A00&			1700, 32000, 1710				!1.1A00&	!								 1.1A00&	!	Set up the prompt for task builder command file name.	 1.1A00&	!	Set up the default value as TSTCOM.CMD.			 1.1A00&	!	Ask the user for the name of the task builder command	 1.1A00&	!	  file.							 1.1A00&	!	  Branch on <ESC>, ^Z and other.			 1.1A00&1710	\ COMMAND.FILE.NAME$ = ASK.CVT$					!1.1A00&	!								 1.1A00&	!	Save the user's response. We will validate it by trying	 1.1A00&	!	  to open the file (below).				 1.1A00&	!			      					 1.1A00&	\ OPEN COMMAND.FILE.NAME$ FOR OUTPUT AS FILE #1%		!1.1A00&	\ FILE.IS.OPEN%= TRUE%						&	\ NOT.FIRST.TIME%= FALSE%					&	!								&	!	Open the output file					&2000	!$**************************************************************&	!                                                               &	!                                                               &	! 	S T A R T    O F    D I A L O G 			&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	\ INIT.MODULE.NAME$= ""						&	\ DEBUG.TERMINAL$= "TI:"					&	!								&	\ FOR I%= 0% TO 15%						&		\ DEV$(I%), UIC$(I%), FILE.NAME$(I%), FILE.EXT$(I%), VER$(I%)&			= ""						&	\ NEXT I%							&	!								&	!								&	!	Reset tested variables which otherwise might not get reset&2100	\ PROMPT$= "Object module names"				&	\ DEFAULT$= "EXIT"						&	\ ON FN.ASK% (PROMPT$, DEFAULT$, "", 0%, 1%, 1% )	      	&		GO TO 1700, 32000, 2125					&	!								&	!	Determine object module names				&2125	\ GO TO 32000		IF ASK.CVT$= "EXIT"			&	\ BAD.FILES%= FALSE%						&	\ DEFAULT.DEV$= "SY:"						&	\ DEFAULT.UIC$= TASK.UIC$					&	\ DEFAULT.EXT$= "OBJ"						&	\ DEFAULT.VER$= "0"						&	\ I%= 1%							&	!								&	!	Set up defaults & point to first name in array		&2135	\ T%= INSTR (1%,ASK.CVT$,"+")					&	\ PARSE.NAME$= ASK.CVT$						&	\ PARSE.NAME$= LEFT(ASK.CVT$,T%-1%)		IF T% > 0%	&	\ A%= FN.PARSE%(PARSE.NAME$,I%)					&	\ G      O TO 6010				IF A%= 2%		&	!								&	!	Branch if no file spec					&	!								&	\ FILE.NAME$= FN.FORMAT.FILE$(I%)				&	\ OPEN FILE.NAME$ FOR INPUT AS FILE #2%				&			,ACCESS		READ				!1.1A00&	!								 1.1A00&	!	Attempt to open the file.				 1.1A00&2137	\ CLOSE #2%							&	\ GO TO 2140		IF T% = 0%				&	\ ASK.CVT$= RIGHT(ASK.CVT$,T%+1%)				&	\ I%= I% + 1%							&	\ GO TO 2100		IF T% = 0%				&	\ GO TO 2135							&	!								&	!	Parse the string of file names				&	!	Validate their existence by opening them		&214      0	\ HIGHEST.FILE.INDEX%= I%					&	!								&	!	Mark highest file given					&2145	\ GO TO 2100		IF BAD.FILES% = TRUE%			&	\ PROMPT$= "Language"						&	\ DEFAULT$= "COBOL"						&	\ LIST$= "/BASIC/COBOL/MACRO"					&	\ ON FN.ASK% (PROMPT$, DEFAULT$, LIST$, 5%, 5%, 1% )		&		GO TO 2100, 32000, 2165, 2175, 2185			&	!								&	!	Determine the language used in the TSTs			&2165	\ LANGUAGE$= "B"		! Language is Basic+2		&	\ GO TO 2200							&2175	\ LANGUAGE$= "C"		! Language is Cobol		&	\ GO TO 2200							&2185	\ LANGU      AGE$= "M"		! Language is Macro		&	\ GO TO 2200							&2200	\ PROMPT$= "Is there a shared OTS for this language"		&	\ DEFAULT$= "YES"						&	\ GO TO 2300		IF LANGUAGE$= "M"			&	\ ON FN.ASK% (PROMPT$, DEFAULT$, "Y", 3%, 10%, 1% )		&		GO TO 2145, 32000, 2250, 2275				&	!								&	!	Determine if an OTS is present for BASIC or COBOL	&2250	\ OTS%= TRUE%							&	\ GO TO 2300							&	!								&	!	Yes , there is an OTS					&2275	\ OTS%= FALSE%							&	\ GO TO 2300							&	!								&	!	No, there is not an OTS					&23      00	!$**************************************************************&	!                                                               &	!                                                               &	! 	D E B U G    M O D E    Q U E S T I O N S		&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ PROMPT$= "Debug mode"						&	\ DEFAULT$= "NO"						&      	\ TP.DEBUG%,							!1.1A00&	  DEBUG%= FALSE%						&	\ ON FN.ASK% (PROMPT$, DEFAULT$, "Y", 3%, 15%, 1%)		&		GO TO 2310, 32000, 2325, 2350				&	!								&	!	Is there a debugging aid present			&2310	\ GO TO 2200		UNLESS LANGUAGE$= "M"			&	\ GO TO 2145							&	!								&	!	Handle ESC processing					&2325	\ DEBUG%= TRUE%			! Yes, there is 		&	\ GO TO 2400							&2350	\ TP.DEBUG%,							!1.1A00&	  DEBUG%= FALSE%		!  No, there is not		&	\ GO TO 4000							&2400	\ PROMPT$= "Transaction Processing Debug"			&	\ DEFA      ULT$= "NO"						&	\ ON FN.ASK% (PROMPT$, DEFAULT$, "Y", 3%, 20%, 1%)		&		GO TO 2300, 32000, 2425, 2450				&	!								&	!	Is the TST debugger also there				&2425	\ TP.DEBUG%= TRUE%		! Yes, it is			&	\ GO TO 2600							&2450	\ TP.DEBUG%= FALSE%		! No, it is not			&	\ GO TO 2500							&2500	\ PROMPT$= "Initializing module name"				&	\ DEFAULT$= "NONE"						&	\ INIT.MODULE.NAME$= ""						&	\ ON FN.ASK% (PROMPT$, DEFAULT$, "", 6%, 25%, 1%)		&		GO TO 2400, 32000, 2550					&	!								&	!	Determine initializing nam      e				&2550	\ INIT.MODULE.NAME$= "[113,24]TSTINIT"				&	\ INIT.MODULE.NAME$= ASK.CVT$		IF ASK.CVT$ <> "NONE"	&	\ GO TO 4000							&	!								&	!	Process initializing module name & allow for default	&2600	\ PROMPT$= "Debugging terminal"					&	\ DEFAULT$= ""							&	\ ON FN.ASK% (PROMPT$, DEFAULT$, "", 5%, 30%, 1%)		&		GO TO 2400, 32000, 2650					&	!								&	!	Determine debugging terminal name			&2650	\ DEBUG.TERMINAL$= ASK.CVT$					&	\ T%= FN.DEV.SPEC% (ASK.CVT$)					&	\ GO TO 2700			IF T% <> 0%			!1.1A00&	!      								 1.1A00&	!	Save the user's response, assuming it is a valid device.	1.1A00&	!	Validate the structure of the response.			 1.1A00&	!	If the structure is incorrect, go tell the user.	 1.1A00&	!								 1.1A00&	\ DEB.TERM.NUM$ = SEG$(	DEBUG.TERMINAL$, 3%,			!1.1A00&				LEN( DEBUG.TERMINAL$ ) - 1% )		!1.1A00&	!								 1.1A00&	!	Extract the third and all following characters (except	 1.1A00&	!	  the last) as the debug terminal number.		 1.1A00&	!								 1.1A00&	\ DEB.TERM.NUM$ = "0"	IF DEB.TERM.NUM$ = "      "			!1.1A00&	!								 1.1A00&	!	If no terminal number was supplied, assume 0.		 1.1A00&	!								 1.1A00&	\ T%	= ASCII( TEST.RESP$( 2% ) ) * 256%			!1.1A00&		+ ASCII( TEST.RESP$( 1% ) )				!1.1A00&	\ T1%	= T% / 512%						!1.1A00&	!								 1.1A00&	!	Get an integer which represents the word we would get if 1.1A00&	!	  if we had the statement:				 1.1A00&	!								 1.1A00&	!		.ASCII	/<devnam>/				 1.1A00&	!								 1.1A00&	!	  where <devnam> := the device name typed by the user.	 1.1A00&	!	T1% represents the       value of the top 3 octal digits of	 1.1A00&	!	  this word (the most significant).			 1.1A00&	!								 1.1A00&	\ DEB.TERM.NAME$	= FN.OCTAL$( T1% )			!1.1A00&			+ FN.OCTAL$( T% - ( T1% * 512% ) )		!1.1A00&	!								 1.1A00&	!	Form a string which contains the octal digits which 	 1.1A00&	!	  are the device name.					 1.1A00&	!								 1.1A00&	\ GO TO 4000							!1.1A00&	!								 1.1A00&	!	Go output the task builder commands.			 1.1A00&2700	\ PRINT								!1.1A00&	\ PRINT "% Invalid terminal device specifica      tion"		&	\ PRINT								&	\ GO TO 2600							&	!								&	!	Validate terminal specification				&4000	!$**************************************************************&	!                                                               &	!                                                               &	! 	O U T P U T    L I N K    C O M M A N D S 		&	!                                                               &	!                                                               &	!*******************************      ********************************&4050	\ ODT$= ""							&	\ BASIC.ROOT$= ""						&	\ ODT$= "/DA"		IF DEBUG%= TRUE% AND LANGUAGE$= "M"	&	\ BASIC.ROOT$= "B"	IF LANGUAGE$= "B"			&	!								&	\ PRINT #1%, "/"	IF NOT.FIRST.TIME%= TRUE%		&	!								&	\ TT$= FILE.NAME$(1) 						&	!								&	!	Format the output file specs				&	!	Print terminator for previous block of TKB commands	&	!	Determine 1st line variables				&4075	\ OUTPUT.SPEC$= TKB.UIC$ + TT$ + ODT$ + "," +			&			TKB.UIC$ + TT$ + "/-SP="			&	!								&	\ NE      XT.LINE$=   "[113,24]TROOT" + BASIC.ROOT$			&	\ PRINT #1%, OUTPUT.SPEC$					&	\ PRINT #1%, T18$	IF LANGUAGE$="C" AND OTS%= TRUE%	&	\ PRINT #1%, T1$; T25$	IF LANGUAGE$="C" AND OTS% = FALSE%	!1.1A02&	\ PRINT #1%, NEXT.LINE$						&	!								&	!	Print the output LINK specifications			&	!	Print the root module specification for shared OTS.	 1.1A02&	!	Print the root module specification for non-shared OTS.	 1.1A02&			&4080	\ FOR I% = 1% TO HIGHEST.FILE.INDEX%				&		\ TT$= FN.FORMAT.FILE$(I%)				&		\ PRINT #1%, TT      $					&	\ NEXT I%							&	!								&	!	Print the user specified object modules - 1 per line	&4090	\ PRINT #1%, INIT.MODULE.NAME$	IF INIT.MODULE.NAME$ <> ""	&	!								&	!	Print the initializing module spec fi it exists		&4095	\ PRINT #1%, T1$		IF LANGUAGE$= "C"		&!	\ PRINT #1%, T3$		IF LANGUAGE$= "B"		&	\ PRINT #1%, T2$		IF LANGUAGE$= "B"		&	!								&	!	Print the disk resident library specifications		&4100	!$**************************************************************&	!                                                                     &	!                                                               &	! 	L I N K E R    O P T I O N S 				&	!                                                               &	!                                                               &	!***************************************************************&4110	\ PRINT #1%, "/"						&	\ PRINT #1%, T4$		IF DEBUG%= FALSE%		&	\ PRINT #1%, T5$		IF DEBUG%= TRUE% AND LANGUAGE$<>"B"&	\ PRINT #1%, T20$		IF DEBUG%= TRUE% AND LANGUAGE$="B"&	!	      							&	!	Specify the units					&4115	\ ASSIGN$= "ASG=" + DEBUG.TERMINAL$ + "13"	IF DEBUG%= TRUE%&	\ PRINT #1%, ASSIGN$				IF DEBUG%= TRUE%&	!								&	!	Print Lun assignment if needed				&4120	\ PRINT #1%, T8$		IF LANGUAGE$= "B"		&	\ PRINT #1%, T9$		IF LANGUAGE$= "B"		&	\ PRINT #1%, T6$		IF LANGUAGE$= "B" AND DEBUG%=FALSE%&	\ PRINT #1%, T7$		IF LANGUAGE$= "B" AND DEBUG%= TRUE%&	!								&	!	Basic + 2 needs to know where to put workspace & message&	!	Also, include the EXTTSK statements			&4130	\ PRINT #1%,       T13$		IF LANGUAGE$= "C" AND OTS%= TRUE%&	\ PRINT #1%, T12$		IF LANGUAGE$= "B" AND OTS%= TRUE%&	!								&	!	Print shared OTS references if required			&4140	\ PRINT #1%, T11$						&			UNLESS LANGUAGE$= "B" AND OTS%= TRUE%		&	!								&	!	Almost always include TSTLIB					&4170	\ PRINT #1%, T14$		IF LANGUAGE$ <> "C"		&	\ PRINT #1%, T15$		IF LANGUAGE$= "C"		&	!								&	!	Print window specification				&4180	\ PRINT #1%, T16$		IF LANGUAGE$= "C" AND OTS%= TRUE%&					AND DEBUG%= FALSE%		&	\ PRINT #1%, T19$		IF LA      NGUAGE$= "C" AND OTS%= TRUE%&					AND DEBUG%= TRUE% 		&	!								&	!	Cobol RTS uses little stack				&4190	\ GO TO 4200	IF LANGUAGE$ <> "C"				!1.1A01&	\ PRINT #1%, T24$						!1.1A01&	\ GO TO 4200	IF TP.DEBUG% = FALSE%				!1.1A01&	\ PRINT #1%, T21$						!1.1A00&	\ PRINT #1%, T22$; DEB.TERM.NAME$				!1.1A00&	\ PRINT #1%, T23$; DEB.TERM.NUM$				!1.1A00&	!								 1.1A00&	!	Skip this section if the language is not COBOL.		 1.1A01&	!	Put out the terminal I/O patch for COBOL.		 1.1A01&	!	Skip the rest of this sec      tion if we are not creating a	 1.1A01&	!	  TP debug using COBOL.					 1.1A01&	!	Print out the first global patch.			 1.1A00&	!	Print out the global patch for device name.		 1.1A00&	!	Print out the global patch for device number.		 1.1A00&4200	\ PRINT #1%, T17$		IF INIT.MODULE.NAME$ = ""	&	\ NOT.FIRST.TIME%= TRUE%					&	\ GO TO 2000							&	!								&	!	Print TST entry global def				&	!	Set flag for printing terminator & loop for more input	&6010	\ PRINT								&	\ PRINT "% - Null file names are not allowed.      "			&	\ PRINT 							&	\ GO TO 2100							&	!								&	!	Error message for null file spec			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!					      			&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15100	\ DEF FN.OCTAL$(I%)						&	\ FOR M%= 2% TO 0%   STEP -1%					&		\ X%(M%)= I% / (8%**M%)					&		\ I%= I% - X%(M%)*(8%**M%)				&	\ NEXT M%							&	!								&	\ FN.OCTAL$= NUM1$(X%(2%)) + NUM1$(X%(1%)) + NUM1$(X%(0%))	&	\ FNEND								&	!								&	!	Routine to convert integer to octal string		&15200	\ DEF FN.FORMAT.FILE$(I%)					&	\ T$= DEV$(I%) + UIC$(I%) + FILE.NAME$(I%) + "."		&      				  + FILE.EXT$(I%) + ";" + VER$(I%)	&	\ FN.FORMAT.FILE$= EDIT$(T$,2%)					&	\ FNEND								&	!								&	!	Put together a valid file spec from the array elements	&15300	DEF FN.PARSE%(PARSE.NAME$,I%)					&15310	\ FN.PARSE%= 1%							&	\ M%= INSTR(1%,PARSE.NAME$,":")					&	\ N%= INSTR(1%,PARSE.NAME$,"[")					&	\ P%= INSTR(1%,PARSE.NAME$,"]")					&	\ Q%= INSTR(1%,PARSE.NAME$,".")					&	\ R%= INSTR(1%,PARSE.NAME$,";")					&	\ S%= LEN(PARSE.NAME$)						&	\ VER$(I%)= ""							&	\ FILE.EXT$(I%)= ""						&	\ FILE      .NAME$(I%)= ""						&	\ UIC$(I%)= ""							&	\ DEV$(I%)= ""							&	!								&	\ VER$(I%)= RIGHT(PARSE.NAME$,R%+1%)		IF R% > 0%	&	\ PARSE.NAME$= LEFT(PARSE.NAME$,R%-1%)		IF R% > 0%	&	\ FILE.EXT$(I%)= RIGHT(PARSE.NAME$,Q%+1%)		IF Q% > 0%&	\ PARSE.NAME$= LEFT(PARSE.NAME$,Q%-1%)		IF Q% > 0%	&	!								&	\ DEV$(I%)= LEFT(PARSE.NAME$,M%)			IF M% > 0%&	\ UIC$(I%)= MID(PARSE.NAME$,N%,P%-N%+1%)		IF N% > 0%&	\ FILE.NAME$(I%)= RIGHT(PARSE.NAME$,M%+1%)				&	\ FILE.NAME$(I%)= RIGHT(PARSE.NAME$,P%+1%)	IF P% > 0%		&	!			      					&	\ DEV$(I%)= DEFAULT.DEV$		IF DEV$(I%)= ""		&	\ UIC$(I%)= DEFAULT.UIC$		IF UIC$(I%)= ""		&	\ FN.PARSE%= 2%				IF FILE.NAME$(I%)= ""	&	\ FILE.EXT$(I%)= DEFAULT.EXT$		IF FILE.EXT$(I%)= ""	&	\ VER$(I%)= DEFAULT.VER$		IF VER$(I%) = ""	&	!								&	\ DEFAULT.DEV$= DEV$(I%)	IF DEV$(I%) <> DEFAULT.DEV$&	\ DEFAULT.UIC$= UIC$(I%)	IF UIC$(I%) <> DEFAULT.UIC$&	\ DEFAULT.EXT$= FILE.EXT$(I%)	IF FILE.EXT$(I%) <> DEFAULT.EXT$&	\ DEFAULT.VER$= VER$(I%)	IF VER$(I%) <> DEFAULT.VER$&	!								&	\ FNEND								&15400	\ D      EF FN.DEV.SPEC% (SPEC$)					&	\ A%= LEN(SPEC$)						&	\ GO TO 15450	IF A% > 5%					&	\ N% = INSTR (1%,SPEC$,":")					&	\ GO TO 15450	IF N% <> A%					&	\ FOR L%= 1% TO A%-1%						&		\ TEST.RESP$(L%)= MID(SPEC$,L%,1%)			&	\ NEXT L%							&	!								&	!	Validate that length is < 6 characters			&	!	That last character is a :				&	!	Pick apart remaining characters				&15401	\ GO TO 15450	IF (TEST.RESP$(1) < "A") OR (TEST.RESP$(1) > "Z")&	\ GO TO 15450	IF (TEST.RESP$(2) < "A") OR (TEST.RESP$(2) > "Z")&	\ GO TO 15      405	IF TEST.RESP$(3) = ""				&	\ GO TO 15450	IF (TEST.RESP$(3) < "0") OR (TEST.RESP$(3) > "7")&	\ GO TO 15405	IF TEST.RESP$(4) = ""				&	\ GO TO 15450	IF (TEST.RESP$(4) < "0") OR (TEST.RESP$(4) > "7")&15405	\ FN.DEV.SPEC%= 0%						&	!								&	!	Must be of the form ddnn:				&15410	\ FNEND								&15450	\ FN.DEV.SPEC%= 1%						&	\ GO TO 15410							&	!								&	!	Print error message for bad device spec			&19000	!$**************************************************************&	!								&	!								&	!	S T A N       D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ IF ERL = 1710							!1.1A00&	  THEN	  MESSAGE$	= ERT$( ERR )				!1.1A00&				+ " - " + COMMAND.FILE.NAME$		!1.1A00&		\ PRINT MESSAGE$					!1.1A00&		\ RESUME 1700						!1.1A00&	!								 1.1A00&	!	If the error occured while attempting to open the	 1.1A00&	!	  requested command file then:				 1.1A00&	!		Compose a message consisting of the BASIC+2	 1.1A00&	!		  error text and       the user response.		 1.1A00&	!		Print out the composed message.			 1.1A00&	!		Go prompt for another file name.		 1.1A00&19100	\ IF ERL= 2135 AND (ERR=2 OR ERR=5 OR ERR=10 OR ERR=1 OR ERR=6)	&		THEN BAD.FILES%= TRUE%					&		\ PRINT							&		\ MESSAGE$= " - No such file or account"	IF ERR=5&		\ MESSAGE$= " - Illegal file name"		IF ERR=2&		\ MESSAGE$= " - Protection violation"		IF ERR= 10&		\ MESSAGE$= " - Bad directory"			IF ERR= 1&		\ MESSAGE$= " - Bad device"			IF ERR= 6&		!							&		\ TT%= INSTR (1%,FILE.      NAME$,";")				&		\ TEMP.FILE.NAME$= FILE.NAME$				&		\ TEMP.FILE.NAME$= LEFT(FILE.NAME$,TT%-1%)		&			IF MID(FILE.NAME$,TT%+1%,1%) = "0"		&		!							&		\ PRINT "% ";TEMP.FILE.NAME$;MESSAGE$			&		\ PRINT							&		\ RESUME 2137						&		!							&		!	If file spec is bad, tell user & keep going	&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$*************************      *************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!							      	&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&									!1.1A00&	\ GO TO 32010		IF FILE.IS.OPEN%= FALSE%		!1.1A00&	\ PRINT #1%, "//"						&	\ PRINT "To link your TST(s) use the following command:"	!1.1A00&	\ PRINT								!1.1A00&	\ PRINT "	LINK @"; COMMAND.FILE.NAME$			!1.1A00&	!								 1.1A00&	!	If no command file is open, assume they either didn't	 1.1A00&	!	  open one and/or they know what they are doing.	 1.   Ú  1A00&	!	Put out the proper ending command in the indirect file.	 1.1A00&	!	Tell the user what he must do to build his TST's.		1.1A00&32010	\ CLOSE #T%	FOR T%= 1% TO 12%				&	!								&	!	Close any files that might be open.			 1.1A00&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END Ú         šw:dkQÁ› 8$ˆw      	.TITLE	SERPARSE - PREPARE FOR OPEN BY FILE ID	.IDENT	/V01/	.SBTTL	MACRO CALLS, DIALOG FDB, & CONSTANTS	.NLIST	BEX	.ENABL	LC	.MCALL	READ$,WAIT$,DELET$	.MCALL	DIR$,QIOW$,EXST$S	.MCALL	FDBDF$,FDOP$A,FDRC$A,FDBK$A,FDAT$A,FDBF$A	.MCALL	GET$S,GTIM$,PUT$S,OPEN$R,OPEN$W,CLOSE$,PUT$R;	.MACRO	SLIDE,A,B,C,?D		;MOVE ONE FIELD TO ANOTHER	MOV	A,R0			;From address to R0	MOV	B,R1			;To address to R1	MOV	C,R2			;# to move to R2;D:	MOVB	(R0)+,(R1)+		;Move a byte & POP	SOB	R2,D			;Get next byte or exit	.ENDM	.PSECT	DATPAR,D,      RO,REL,GBL,CON;********************************************************************;;;	CONSTANTS & FDB FOR DIALOG;;;*********************************************************************;STATUS:	.WORD	2				;ERROR EXIT STATUSIOSTAT:	.BLKW	2				;IO status block;TYPE::	QIOW$	IO.WBT,13.,32.,,IOSTAT,,<MESSAG,S.MESS,0>;MESSAG::.BYTE	10.,10.,13.	.ASCII	/? Unexpected FATAL error in SERANL/	.BYTE	10.,13.	.ASCII	/The FCS error code is -/FIELD1:	.BLKB	6	.BYTE	13.,10.LOC:	.ASCII	/Location  /NEXTAD:	.BLKB	6	.BYTE	10.,13.      	.EVENS.MESS	=	. - MESSAG;;TIMBUF:	.BLKW	8.			;Buffer for the timeTIME:	GTIM$	TIMBUF			;;;FDBD:	FDBDF$	FDRC$A	,DIALOG,274.	FDOP$A	5,DSDD,,FO.RD	FDBF$A	,,1;;	The Dialog response file	.PAGE	.SBTTL	THE DSD SPECIFICATIONS;*******************************************************;;;	D S D    S P E C I F I C A T I O N S;;;*******************************************************;DSDI::	.WORD	3	.WORD	DEV1	.WORD	7	.WORD	UIC1	.WORD	10.	.WORD	NAME1;DEV1::	.ASCII	/SY:   /UIC1::	.ASCII	/[1,300]   /NAME1::	.ASCII	/SERLOG.LO      G          /;;		The DSD & file specification for the input error log file;	.EVENDSDO::	.WORD	3	.WORD	DEV2	.WORD	7	.WORD	UIC2	.WORD	10.	.WORD	NAME2;DEV2::	.ASCII	/SY:   /UIC2::	.ASCII	/[1,300]   /NAME2::	.ASCII	/SERLOG.LST          /;;		The DSD & file specification for the output listing file;	.EVENDSDN::	.WORD	3	.WORD	DEV3	.WORD	7	.WORD	UIC3	.WORD	10.	.WORD	NAME3;DEV3::	.ASCII	/SY:/UIC3::	.ASCII	/[1,300]/NAME3::	.ASCII	/SERLOG.DAT/;;		The DSD & file specification for the error message text file;	.EVENDSDT::      	.WORD	3	.WORD	DEV4	.WORD	7	.WORD	UIC4	.WORD	10.	.WORD	NAME4;DEV4::	.ASCII	/SY:/UIC4::	.ASCII	/[1,300]/NAME4::	.ASCII	/SERLOG.TMP/;;		The DSD & file specification for the total file	.PAGE;;	.EVENDSDD::	.WORD	3	.WORD	DEV5	.WORD	7	.WORD	UIC5	.WORD	10.	.WORD	NAME5;DEV5::	.ASCII	/SY:/UIC5::	.ASCII	/[1,300]/NAME5::	.ASCII	/SERANL.TMP/;;		The DSD & file specification for the Dialog file	.PAGE	.PSECT	CODPAR,I,RW,REL,GBL,CON	.SBTTL	OPENS & CLOSES - VARIABLE INITIALIZATION FOR SERDAY & SERINS;***********************      ***************************;;;	I N I T I A L I Z A T I O N;;;*******************************************************;INI1::	OPEN$R	#FDBD,,,,,,ERROR	GET$S	#FDBD,,,ERROR	INC	CLOSED	CLOSE$	#FDBD,ERROR	DELET$	#FDBD	CLR	CLOSED;	MOV	#DIALOG+D1LEN,R0		;Base address of I/O stuff	MOV	(R0)+,DSDI			;Device length	MOV	(R0)+,DSDI+4			;UIC length	MOV	(R0)+,DSDI+10			;Name length	MOV 	(R0)+,DSDO			;Output device length	MOV	(R0)+,DSDO+4			;Output UIC length	MOV	(R0)+,DSDO+10			;Output name length;	MOV	#DIALOG+INDEV,R0		;Ba      se address of the names	MOV	#DEV1,R1			;Base address of input spec	MOV	#36.,R2				;36 bytes to move1$:	MOVB	(R0)+,(R1)+			;Move a byte	SOB	R2,1$				;Get next byte;	MOV	#DEV2,R1			;Base address of output spec	MOV	#36.,R2				;36 bytes to move2$:	MOVB	(R0)+,(R1)+			;Move a byte	SOB	R2,2$				;Get next byte	JMP	COME				;;;INI2::	MOV	#1,DIALOG+LSTERR		;Specify last error on file	MOV	#1,DIALOG+ALLAPP		;Specify all transaction proc.	MOV	#1,DIALOG+ALLTRA		;Specify all transactions	SLIDE	#MIDNIT,#<BETIME+DIALOG>,#5	;      Starting time - midnight	DIR$	#TIME,ERROR			;Starting date - today	MOV	#TIMBUF,R1			;Address of date to R1	MOV	#<BEDATE+DIALOG>,R0		;Address of printed date to R0	JSR	PC,$DAT				;Get ASCII version of date;	MOV	TIMBUF+0,DIALOG+BYEAR		;Store date for selection	MOV	TIMBUF+2,DIALOG+BMON		;	MOV	TIMBUF+4,DIALOG+BDAY		;	CLR	DIALOG+BHOUR			;	CLR	DIALOG+BMIN			;;	CLR	DIALOG+DETLST			;Specify LIST	BR	COME				;	.PAGE;;COME::	OPEN$R	#FDBI,,,,,,ERROR		;Open input error log file	OPEN$W	#FDBO,,,,,,ERROR		;Open output repo      rt file	OPEN$R	#FDBN,,,,,,ERROR		;Open input error message file	OPEN$W	#FDBT,,,,,,ERROR		;Open temporary total file;;	MOV	#32.,R5				;Create a complete total file1$:	PUT$R	#FDBT,,,R5,,ERROR		;Write the records	SOB	R5,1$				;Branch if more records to write;;	READ$	#FDBN,,,,,,,ERROR		;Read the offset block	WAIT$	#FDBN,#32.,,ERROR		;Wait for the I/O to complete	SLIDE	#NBUF,#OFFSET,#32.		;Transfer data to offset buffer	RTS	PC				;Return;;;CLOSE1::INC 	CLOSED				;Mark files for closing	CLOSE$	#FDBI,ERROR			;Clos      e files 1-4	CLOSE$	#FDBT,ERROR			;	CLOSE$	#FDBN,ERROR			;;	OPEN$R	#FDBT,,,,,,ERROR		;RE-open files for totals	OPEN$R	#FDBN,,,,,,ERROR		;;	CLR	CLOSED				;Temporarily done closing	RTS	PC				;;;;CLOSE2::INC	CLOSED				;Mark files for closing	CLOSE$	#FDBO,ERROR			;	DELET$	#FDBT,ERROR			;	CLOSE$	#FDBN,ERROR			;	RTS	PC				;;;	.PAGE	.SBTTL	 ERROR REPORTING;***********************************************************;;;	E R R O R    R E P O R T I N G ;;;***********************************************************;ERRO   –   R:	NEGB	F.ERR(R0)	MOVB	F.ERR(R0),R1;1$:	MOV	#FIELD1,R0	JSR	PC,$CBDMG;	MOV	(SP)+,R1	MOV	#NEXTAD,R0	INC	R2	JSR	PC,$CBOMG	DIR$	#TYPE	EXST$S	STATUS;	.END –          œwxQ“Á› 8$        1300	\ REGION%(1)= 128%						&	\ REGION%(2)= 7%*40%**2% + 5%*40% + 14%				&	\ REGION%(3)= 3%*40%**2% + 15%*40% + 13%			&	!								&1304	\ REGION%(4)= 0%						&	\ REGION%(5)= 0%						&	\ REGION%(6)= 1% + 2% + 8% + 32% + 128%				&	\ T%= 0%							&	\ T%= 1% IF (LEFT (TASK.NAME$,3%) = "SET" ) AND 		&					(TASK.NAME$ <> "SETCHG")	&	\ T%= 0% IF TASK.NAME$= "SETCHG"				&	\ T%= 1% IF EDIT$(TASK.NAME$,2%) = ""				&	\ CALL ATRG BY REF (REGION%(),DIR.ERR%)	IF T% =  1%		&	\ CALL CRRG BY REF (REGION%(),DIR.ERR%) IF T% <      > 1%		&	\ GO TO 1350	IF DIR.ERR% = 1% AND T%= 1%			&	\ GO TO 1350	IF DIR.ERR% = 1% AND T% <> 1% AND REGION%(6) <0%&1305	\ PRINT								&	\ PRINT "? Another user is running SETUP - please try again later."&	\ PRINT								&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Create or attach the SETUP region			&	!								&	!	Print the error message if directive fails		&1350	\ WINDOW%(0)= 7%						&	\ WINDOW%(0)= SWAP%(WINDOW%(0))					&	\ WINDOW%(2)= 128%						&	\ WINDOW%(3)= REGION%(0)					&	\ WINDOW%(4)= 0%						&	\ W   ’  INDOW%(5)= 0%						&	\ WINDOW%(6)= 2% + 128%						&	\ CALL CRAW BY REF (WINDOW%(), DIR.ERR%)			&	\ GO TO 1400	IF DIR.ERR%= 1%					&	!								&	\ PRINT								&	\ PRINT "? FATAL error in creating a window for the SETUP region"&	\ PRINT								&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Map the highest address window to the setup region	&	!								&	!	Print an error message if this directive fails		& ’         šwƒ:kQÁ› 8$        	.TITLE	SERANL - THE SOFTWARE ERROR REPORT 	.IDENT	/V01/	.SBTTL	MACRO CALLS & DEFINITIONS	.NLIST	BEX	.ENABL	LC	.MCALL	GET$R,PUT$R,EXST$S	.MCALL	WAIT$,READ$,PUT$S,NMBLK$,OFNB$A	.MCALL	SLIDE,EXIT$S,GET$S,GTIM$,DIR$,QIOW$;;*************************************************;;;	M A C R O    D E F I N I T I O N S ;;;************************************************;	.MACRO	SAVE,?A		;SAVE THE REGISTERSA:	MOV	R0,-(SP)	MOV	R1,-(SP)	MOV	R2,-(SP)	MOV	R3,-(SP)	MOV	R4,-(SP)	MOV	R5,-(SP)	.ENDM	SAVE;	.MACRO	UNSAVE,?A	;RESTO      RE THE REGISTERSA:	MOV	(SP)+,R5	MOV	(SP)+,R4	MOV	(SP)+,R3	MOV	(SP)+,R2	MOV	(SP)+,R1	MOV	(SP)+,R0	.ENDM	UNSAVE;;	.MACRO	CONVER,A,B	;CONVERT AN INTEGER TO ASCII	MOV	A,R1		;VALUE TO R1	MOV	#10000.,R3	;START WITH HIGHEST DIGIT	MOV	#5,R4		;5 DIGITS TO DO	MOV	R5,-(SP)	;SAVE R5	MOV	B,R5		;ADDRESS TO PLACE ANSWER	JSR	PC,CONVEA	;SUB-ROUTINE DOES THE WORK	MOV	(SP)+,R5	;RESTORE R5	.ENDM	CONVER	.PAGE	.MACRO	EDITNO,A,G,C,D,E,?F	SAVE				;SAVE THE REGISTERS	MOV	G,R0			;ADDRESS OF MASK TO R0	MOV	C,R2			;LENGTH OF MASK TO R      2	MOV	D,R1			;ADDRESS OF TARGET TO R1;F:	MOVB	(R0)+,(R1)+		;TRANSFER MASK TO TARGET	SOB	R2,F;	MOV	A,R0			;ADDRESS OF SOURCE ASCII NUMBER	MOV	D,R1			;ADDRESS OF TARGET	MOV	C,R2			;LENGTH OF TARGET	.IIF	B,E,	MOV	#1,R5	;KEEP EITHER 1 OR USER GIVEN NUMBER	.IIF	NB,E,	MOV	E,R5	;OF DIGITS REGARDLESS OF ZERO SUPPRESSION	JSR	PC,EDIT			;SUB-ROUTINE DOES THE WORK	UNSAVE				;RESTORE THE REGISTERS	.ENDM	EDITNO;;	.MACRO	SLIDE,A,B,C,?D			;Move one field to another	MOV	A,R0				;From address to R0	MOV	B,R1				;To address to       R1	MOV	C,R2				;# to move to R2;D:	MOVB	(R0)+,(R1)+			;Move a byte & pop to next one	SOB	R2,D				;Get next byte or exit;	.ENDM;CR	=	13.				;Carriage return constantLF	=	10.				;Line feed constant	.PAGE	.PSECT	DATINS,RW,REL,GBL,D,CON	.SBTTL	INPUT FILE MAP;****************************************************;;;	I N P U T    F I L E    M A P ;;;*******************************************************;RECLEN	=	0.		;Record lengthBLKLEN	=	0.		;Block lengthBLKNO	=	2.		;Block #FLAG	=	3.		;SRCE	=	6.		;Source station       nameMOD	=	10.		;Logger codeERR	= 	11.		;Error codeTPN	=	14.		;TP nameTN	=	20.		;Transaction nameTID	=	26.		;Transaction IDEXN	=	30.		;Exchange #SN	=	32.		;Station nameFN	=	38.		;Form nameYR	=	46.		;YearMON	=	48.		;MonthDAY	=	50.		;DayHR	=	52.		;HourMIN	=	54.		;MinuteSEC	=	56.		;Second	.PAGE	.SBTTL	PROGRAM CONSTANTS & VARIABLES;*******************************************************;;;	V A R I A B L E S ;;;*******************************************************;STATUS:	.WORD	2				;Error exit statusBNULL:	.W      ORD					;Flag - starting null byteENULL:	.WORD					;Flag - ending null byteTEMP:	.ASCII	/      /			;Temporary storage ASCII conversion routineZSUP:	.WORD					;Zero suppression flagFULL:	.WORD					;Full field wanted flagHOWMAN:	.WORD					;Counter - how many bytes fetchedERR1:	.WORD					;Stored error codeERR2:	.WORD					;Stored logger codeINDEX1:	.WORDLEFTB:	.WORD	200				;Counter -# bytes left in blockLEFTR:	.WORD	200				;Counter -# bytes left in recordLEFTD:	.WORD					;Counter -# bytes left in 512 blockNEWRE      C:	.WORDNEWBLK:	.WORD	1IOSTAT:	.BLKW	2				;I/O status blockOCTAL:	.BLKB	6				;Working variable - dump routineHINUM:	.WORD					;High byte in block being printedLOWNUM:	.WORD					;Low byte in block being printedDUMP:	.WORD	1				;Switch - Go to Dump routineLIST:	.WORD	1				;Switch - Go to List routineTOTAL:	.WORD	1				;Switch - Go to Total routineEOFMES:	.WORD	0				;switch for eof on message fileEOFBUF:	.ASCII	/      /			;Buffer for ascii vers of bad err numLINCNT:	.WORD	65.				;Line counter for page eject;DU3      :	.WORD	0				;Temporary storage for Double PDU2:	.WORD	0				;DU1:	.WORD	0				;MASK:	.BLKB	4				;	.ASCII	/,/				;	.BLKB	3				;	.ASCII	/,/				;	.BLKB	3				;Mask word for double precisionTEMPID:	.BLKB	10.				;Temporary storage of dp result;FIRST:	.WORDPOINTER:.WORD	IBUFLENGTH:LIMIT:	.WORD					;Counter - # bytes to dump this timeSKIP:	.BYTE					;Switch - this record skipped	.EVENBLOCKN:	.BLKW	2				;Block # error message fileNUMGET:	.WORD					;aids in getting new block;						 to get or in core	.PAGE	.SBTTL	LOGGE      R NAME & CODE TABLES;************************************************************;;;	LOGGER NAME & CODE TABLES;;;*************************************************************;LOG0:	.ASCII	/System    /			;Table of error logging modulesLOG1:	.ASCII	/*Logger 1 /LOG2:	.ASCII	/TIM       /LOG3:	.ASCII	/*Logger 3 /LOG4:	.ASCII	/Exec mgr  /LOG5:	.ASCII	/*Logger 5 /LOG6:	.ASCII	/Data mgr  /LOG7:	.ASCII	/*Logger 7 /LOG8:	.ASCII	/Batch mgr /LOG9:	.ASCII	/*Logger 9 /LOG10:	.ASCII	/Mailbx mgr/LOG11:	.ASCII	/Logger 11 /L      OG12:	.ASCII	/Link mgr  /LOG13:	.ASCII	/Logger 13 /LOG14:	.ASCII	/Logger 14 /LOG15:	.ASCII	/Logger 15 /;;LOGPNT:	.WORD	LOG0				;Table of error logger codes	.WORD	LOG1				;	.WORD	LOG2	.WORD	LOG3	.WORD	LOG4	.WORD	LOG5	.WORD	LOG6	.WORD	LOG7	.WORD	LOG8	.WORD	LOG9	.WORD	LOG10	.WORD	LOG11	.WORD	LOG12	.WORD	LOG13	.WORD	LOG14	.WORD	LOG15;MONTAB:	.ASCII	/JAN FEB MAR APR MAY JUN JUL AUG SEP OCT NOV DEC /;;		Table of months of the year - need the blank space;;ASCDIG:	.ASCII	/0123456789/			;Table of ASCII digits	.PAGE	      .SBTTL	VARIOUS INPUT & OUTPUT BUFFERS;*******************************************************;;;;	B U F F E R S ;;;******************************************************;	.EVENDATA:	.WORD					;Record buffer offset storedRECBUF:	.BLKB	68.				;Input error file buffer;;;******************************************************;;;	L I S T    L I N E    P R I N T    B U F F E R ;;;******************************************************;;ANAME:	.ASCII	/      /	.ASCII	/  /TNAME:	.ASCII	/      /	.ASCII	/  /SOURCE:	.ASC      II	/      /	.ASCII	/   /TNUM:	.ASCII	/           /	.ASCII	/   /EXCH:	.ASCII	/      /	.ASCII	/    /FNAME:	.ASCII	/      /	.ASCII	/   /DTIMEH:	.ASCII	/  /	.ASCII	/:/DTIMEM:	.ASCII	/  /	.ASCII	/ on /DDATED:	.ASCII	/  /	.ASCII	/-/DDATEM:	.ASCII	/   /	.ASCII	/-/DDATEY:	.ASCII	/  /	.PAGE	.SBTTL	LIST LINES OTHER THAN THE FIRST;********************************************************;;;	LIST LINES OTHER THAN THE FIRST;;;**********************************************************;;	The buffer for the 2nd and third li      ne is next - the proper length ;	must be specified in each case;;STRBUF:	.ASCII	/      * /;LABEL:TXBUF:	.BLKB	64.;	.ASCII	/   /TOTNUM:	.ASCII	/      /		;Used in total report;;	Next is the buffer for the line which identifies the logging module;;	.EVENLGBUF:	.ASCII	/      * The error was logged by /LOGGER:	.BLKB	10.	.PAGE	.SBTTL	THE DUMP BUFFERS;*******************************************************;;;	T H E    D U M P    B U F F E R S ;;;*******************************************************;;	The Block #       line;BLOCKL:	.ASCII	/Block #/BNUM:	.BLKB	6;;;	The delineating line;AST:	.ASCII	/* * * * * * * * * * * * * * * * /	.ASCII	/* * * * * * * * * * * * * * * * /	.ASCII	/ /LOWER:	.ASCII	/      /	.ASCII	/->/HIGHER:	.ASCII	/      /;	.EVEN;;	The ASCII format line;ASBUF:	.BLKB	64.	.ASCII	/  ASCII         /;	.EVEN;;	The 6 OCTAL format lines - O1BUF has the high order;			         - O2BUF has the low order;O1BUF:	.BLKB	64.	.ASCII	/   O  high      /;	.EVENO2BUF:	.BLKB	64.	.ASCII	/   C            /;	.EVENO3BUF:	.BLKB	64.      	.ASCII	/   T            /;	.EVENO4BUF:	.BLKB	64.	.ASCII	/   A            /;	.EVENO5BUF:	.BLKB	64.	.ASCII	/   L            /;	.EVENO6BUF:	.BLKB	64.	.ASCII	/      low       /	.PAGE	.SBTTL	OTHER BUFFERS & HEADER LINES;****************************************************;;;	O T H E R    B U F F E R S    &   H E A D E R    L I N E S ;;;*****************************************************;	.EVEN;;	Useful header constants;FERROR:	.ASCII	/First error       /LERROR:	.ASCII	/Last error        /FF:	.BYTE	12.CLASS1:	      .ASCII	/ Detail/CLASS2:	.ASCII	/Summary/TYPE4:	.ASCII	/ List  /TYPE2:	.ASCII	/ Dump  /TYPE3:	.ASCII	/ Report/ALLTPN:	.ASCII	/ALL Transaction Processors      /;;	First header line;HEAD1:	.BYTE	9.	.BYTE	9.	.BYTE	9.CLASS:	.ASCII	/       /	.ASCII	/ TRAX Software Error/	.EVENRTYPE:	.ASCII	/                    /;BLANK:	.ASCII	/     /;;;	Second header line;HEAD2:	.ASCII	/For the /APPNAM:	.ASCII	/      /	.ASCII	/ transaction processor      for the period /BTIME:	.ASCII	/     /	.ASCII	/ on /BDATE:	.ASCII	/         /      	.PAGE	.SBTTL	MORE HEADER LINES;;;	Third header line;OHEAD3:	.ASCII	/      For ALL transactions                            /HEAD3:	.ASCII	/                                                      /	.ASCII	/to /ETIME:	.ASCII	/     /	.ASCII	/ on /EDATE:	.ASCII	/         /;;;	Fourth header line;HEAD4:	.ASCII	/ TP      Trans.  Source   Transaction/	.ASCII	/  Exchange  Form       Time/;HEAD5:	.ASCII	/ Name     Name   Station     Number/	.ASCII	/       #      Name/;;;	Line separating header from data;DASH:	.ASCII	/-      ---------------------------------------/	.ASCII	/----------------------------------------/;;;	Summary header line;HEAD6:	.ASCII	/      Error Type/	.ASCII	/						   /	.ASCII	/Error Total/SHED6	= 	. - HEAD6;LOGHED:	.BYTE	9.,9.,9.,	.ASCII	/For /HEDLOG:	.ASCII	/          /;;	Miscellaneous constants;SUM:	.BYTE	1	.PAGE	.SBTTL	 QIO CALL & ERROR MESSAGE;*************************************************;;;	E X E C U T I V E    C A L L S;;;*************************************************;	.EVEN;TYPE:	QIOW$	IO.WBT,13      .,1,,IOSTAT,,<PBUF,0,0>;PBUF:	.BYTE	LF,LF,CR	.ASCII	/? Unexpected FATAL error in SERINS/	.BYTE	LF,CR	.ASCII	/The FCS error code is  -/FIELD1:	.BLKB	6	.BYTE	CR,LF;LOC:	.ASCII	/Location  /NEXTAD:	.BLKB	6	.BYTE	LF,CR	.EVENSIZE2:	.WORD	. - PBUF	.PAGE	.PSECT	CODINS,RO,REL,GBL,CON,I	.SBTTL	GET NEXT RECORD;*****************************************************;;;	GET NEXT SEGMENT OF DATA;;;******************************************************;MAIN::GETIT:	TST	NEWREC				;Getting a new record?	BEQ	2$				;Yes, go to       special proc.	TSTB	NEWBLK				;Getting a new block?	BEQ	1$				;Yes, go to special proc.;;	Continuation of a block;	MOV	#RECBUF+4,R1			;Preserve Block length & #	CLR	DUMP				;Dump this segment of data	MOV	#1,NUMGET			;DON'T DYNAMICALLY GET BLOCK #	MOV	#64.,R0				;Try for 64 bytes of data	CMP	R0,LEFTB			;Full segment left?	BMI	7$				;Yes, go get it	MOV	LEFTB,R0			;No, get what's left	BR	7$;;	A new block of data;1$:	MOV	#RECBUF,R1			;Fill from beginning of buffer	CLR	DUMP				;Dump this segment of data	CLR	NUMGE      T				;Must determine block size on fly	MOV	#68.,R0				;Try for 68 bytes of data	CMP	R0,LEFTR			;Full segment left?	BMI	7$				;Yes, go get it	MOV	LEFTR,R0			;No, get what's left	BR	7$;;;	A new record of data;2$:	MOV	#RECBUF,R1			;Fill from beginning of buffer	CLR	TOTAL				;Total	CLR	LIST				;List	MOV	#1,NUMGET			;DON'T DYNAMICALLY GGET BLOCK #	MOV	#58.,R0				;Header block always 58 bytes	CLR	LEFTD				;New record always on disk bound.	MOV	#IBUF,POINTER			;Reset pointer to data buffer	INC	NEWBLK				;Force new       record processing	BR	7$	.PAGE;;7$:	MOV	POINTER,R4			;Important counters to registers						;Pointer to next byte to get	MOV	R1,DATA				;Save record buffer pointer	MOV	LEFTD,R3			;# bytes left in physical block;15$:	TST	R3				;Time to read another record?	BNE	16$				;No, then don't	JSR	PC,GETREC			;Yes, go to read record sub.16$:	MOVB	(R4)+,(R1)+			;Transfer a byte to record buf.;	TST	NUMGET				;DYNAMIC BLOCK #	BNE	17$				;NO	CMP	HOWMAN, #1			;BLOCK # IS 1ST 2 BYTES	BMI	17$				;HAVEN'T GOOT THEM YET	SUB	#2,R1      				;GO BACK TO START OF BLOCK	MOVB	(R1)+,NUMGET				;CORRECT BLOCK #	MOVB	(R1)+,<NUMGET+1>		;	CMP	NUMGET,#68.			;MORE THAN A PIECE?	BPL	17$				;YES	MOV	NUMGET,R0			;ALL THIS BECAUSE OF BYTE ALIGNMENT	DEC	R0				;CORRECT FOR 1ST PASS THROUGH;17$:	INC	HOWMAN				;increment bytes gotten counter	DEC	R3				;decrement # bytes in phys. blk.						;left to get;25$:	SOB	R0,15$				;Have all desired bytes been fetched?						; If not, go to 15$;PROC1:	MOV	R3,LEFTD			;Final values to perm. storage	MOV	R4,POINTER	JMP	PROC	.      PAGE	.SBTTL	BLOCK I/O ROUTINES;*****************************************************;;;	R E A D    A    B L O C K;;;*****************************************************;;GETREC:	MOV	R0,-(SP)			;Save R0	READ$	#FDBI,,,,,,,ERROR		;Read a block of data	WAIT$	#FDBI,#32.,,ERROR		;Wait for the I/O to complete	MOV	#512.,R3			;Reset # bytes in buffer	MOV	(SP)+,R0			;Restore R0	RTS	PC				;Return to program;;GETNAM:	MOV	INDEX1,R0			;Record index to R0	MOV	R0,R1				;Also to R1	ASH	#-3,R0				;Divide index by 8	INC	R0		      		;Virt blk # = index/8 + 1;	CMP	R0,BLOCKN+2			;Block in core?	BEQ	10$				;Branch if it is 	MOV	R0,BLOCKN+2			;Else set block # to be read	INC	EOFMES				;Indicate eof on message file	READ$	#FDBN,,,#BLOCKN,,,,ERROR	;Read a block	WAIT$	#FDBN,#32.,,ERROR		;Wait for the I/O to complete	CLR	EOFMES				;Indicate eof on other file;10$:	BIC	#177770,R1		;R1=remainder of division above	MUL	#64.,R1				;x64 gives offset in block	ADD	#NBUF,R1			;Get address of record;	SLIDE	R1,#TXBUF,#64.			;Move name to name buffer	RTS	      PC				;Return;;EOFTXT:	MOV	ERR1,R1				;Convert error code to ASCII	MOV	#EOFBUF,R0			;Final result buffer	CLR	R2				;Suppress zeros	JSR	PC,$CBDMG			;Convert to decimal;	MOV	#TXBUF,R1			;Address of buffer to clear	MOV	#64.,R2				;64 bytes long1$:	MOVB	#40,(R1)+			;Clear field	SOB	R2,1$				;Loop through field;	MOV	#TXBUF,R1			;Address of buffer to clear	MOV	#6,R2				;^ bytes to move	MOV	#EOFBUF,R0			;Address of source2$:	MOVB	(R0)+,(R1)+			;Move a byte	SOB	R2,2$				;Loop through field	RTS	PC				;Return	.PAGE	.      SBTTL	PROCESS THE RECORD;*****************************************************;;;	P R O C E S S I N G ;;;****************************************************;;PROC:	TST	NEWBLK				;A new block of data?	BNE	101$				;No, go to next test	MOV	#0,HINUM	MOV	RECBUF+BLKLEN,LEFTB		;Store block length	SUB	HOWMAN,LEFTB	SUB	HOWMAN,LEFTR			;Update # bytes left in record	SUB	#4,HOWMAN	MOV	HOWMAN,LENGTH	ADD	#4,DATA				;Correct pointer to data;	TSTB	RECBUF+FLAG			;Flags set?	BPL	1$				;Starting byte flag not set	INC	BNULL		      		;Indicate starting byte set10$:	ROLB	RECBUF+FLAG			;Move ending flag to sign bit	BPL	2$				;Ending flag not set	INC	ENULL				;Indicate ending flag set	BR	3$				;Resume main processing;1$:	CLR	BNULL				;Indicate starting byte not set	BR	10$				;Return;2$:	CLR	ENULL				;Indicate ending byte not set	BR	3$				;Return;3$:	BR	DOIT;101$:	TST	NEWREC				;A new record of data?	BNE	103$				;No, go to continued block routine	JSR	PC,ELIMIN			;Decide if rec. should be elimin.	MOV	RECBUF+RECLEN,LEFTR		;Store record leng      th	SUB	HOWMAN,LEFTR	CLR	LEFTB				;Header block read in 1 pass;	MOVB	RECBUF+MOD,ERR2			;Store logger code	MOVB	RECBUF+ERR,ERR1			;Store error code;	MOV	ERR2,R1				;Logger code to R1	ASL	R1				;x2  - words to bytes	ADD	#OFFSET,R1			;Add in offset base;						R1 has address of logger offset word	MOV	ERR1,R2				;Error code to R2	ADD	(R1),R2				;Add offset to get index	MOV	R2,INDEX1			;Store index for reference	BR	DOIT				;Go to general processing routines	.PAGE;;103$:	MOV	HOWMAN,LENGTH	SUB	HOWMAN,LEFTB			;Update       # bytes left in block	SUB	HOWMAN,LEFTR			;Update # bytes left in record;DOIT:	TSTB	SKIP				;Is this record to be skipped?	BNE	115$				;Yes, skip it;	TST	TOTAL				;Totals to be taken now?	BNE	105$				;No, go to next option	JSR	PC,SUMIT			;Yes, go to total routine;105$:	TST	LIST				;List to be done?	BNE	110$				;No, go to next option	JSR	PC,LISTIT			;Yes, go to list routine;110$:	TST	DUMP				;Dump to be done this time?	BNE	115$				;No, on to next option	JSR	PC,DUMPIT			;Yes, go to dump routine;;115$:	CLR	HOW      MAN	INC	NEWREC				;Reset switches for next pass	INC	NEWBLK		INC	LIST	INC	DUMP	INC	TOTAL	TST	LEFTR				;More to the record?	BNE	125$				;Yes	CLR	NEWREC				;Inform GET rout. there's new rec;125$:	TST	LEFTB				;More to the block?	BNE	130$				;Yes	CLR	NEWBLK				;Inform GET rout., there's new blk;130$:	JMP	GETIT				;Done processing-get next packet of data	.PAGE	.SBTTL	ELIMINATE UNWANTED RECORDS;****************************************************;;;	S E L E C T    E R R O R    R E C O R D S ;;;*******************      *********************************;ELIMIN:	CLRB	SKIP				;Reset SKIP switch	MOV	#RECBUF,R0			;Base address of rec under scrutiny	MOV	#DIALOG,R1			;Base address of Dialog record;	TST	ALLAPP(R1)			;All TP selected?	BNE	50$				;Yes, then don't select on it	CMP	SELAPP(R1),TPN(R0)		;No, compare to selected name	BNE	SKIPIT				;Not equal skip record	CMP	<SELAPP+2>(R1),<TPN+2>(R0)	;Bytes 3-4	BNE	SKIPIT				; "	CMP	<SELAPP+4>(R1),<TPN+4>(R0)	;Bytes 5-6	BNE	SKIPIT				; ";50$:	TST	ALLTRA(R1)			;All transactions selected?      	BNE	100$				;Yes, then don't select on it	MOV	#DIALOG+TRANTA+6,R3		;Base address of transaction tab						;Allow for element 055$:	MOV	#RECBUF+TN,R4			;Base of transaction name in rec	CMP	(R3)+,(R4)+			;Equal, continue	BNE	60$				;Not equal, go to next entry	CMP	(R3)+,(R4)+			;Bytes 3-4	BNE	70$				;Not equal, go to next entry	CMP	(R3)+,(R4)+			;Bytes 5-6	BNE	80$				;Not equal, go to next entry	BR	100$				;Match, continue selection tests;60$:	TST	(R3)+				;Bump toward next entry70$:	TST	(R3)+				;Bump to nex      t entry80$:	TST	(R3)				;More entries?	BEQ	SKIPIT				;No, skip the record	BR	55$				;Try next entry	.PAGE;100$:	TST	FIRERR(R1)				;First record cutoff?	BNE	WANTIT				;Yes	CMP	YR(R0),BYEAR(R1)		;Year => beginning year	BMI	SKIPIT				;No, skip the record	BNE	WANTIT				;>, want the record;						;=, more tests are needed	CMP	MON(R0),BMON(R1)		;Mon => beginning month	BMI	SKIPIT				;No, skip the record	BNE	WANTIT				;>, want the record;						;=, more tests are needed	CMP	DAY(R0),BDAY(R1)		;Day => beginning day	BMI      	SKIPIT				;No, skip the record	BNE	WANTIT				;>, want the record;						;=, more tests are needed	CMP	HR(R0),BHOUR(R1)		;Hour => beginning hour	BMI	SKIPIT				;No, skip the record	BNE	WANTIT				;>, want the record;						;=, more tests are needed	CMP	MIN(R0),BMIN(R1)		;Minute => beginning minute	BMI	SKIPIT				;No, skip the record;						;=>, want the record-on to next test;WANTIT:	TST	LSTERR(R1)				;Last error cutoff?	BNE	SAVEIT				;Yes	CMP	EYEAR(R1),YR(R0)		;Year<= ending year	BMI	SKIPIT				;No, skip the reco      rd	BNE	SAVEIT				;<, passes the test;						;=, more tests needed	CMP	EMON(R1),MON(R0)		;Month<= ending month	BMI	SKIPIT				;No, skip the record	BNE	SAVEIT				;<, passes the test;						;=, more tests needed	CMP	EDAY(R1),DAY(R0)		;Day<= ending day	BMI	SKIPIT				;No, skip the record	BNE	SAVEIT				;<, passes the test;						;=, more tests needed	CMP	EHOUR(R1),HR(R0)		;Hour <= ending hour	BMI	SKIPIT				;No, skip the record	BNE	SAVEIT				;<, passes the test;						;=, more tests are needed	CMP	EMIN(R1),MIN(R0)		;Mi      n<= ending minute	BMI	SKIPIT				;No, skip the record;						;<= passes the test;						 The record has now passed all testsSAVEIT:	CLRB	SKIP				;Record passes all testsGETOUT:	RTS	PC				;Return;SKIPIT:	INCB	SKIP				;Set switch to SKIP value	BR	GETOUT				;Return	.PAGE	.SBTTL	TOTAL THE ERRORS;********************************************************;;;	T H E    T O T A L S ;;;*******************************************************;SUMIT:	CMP	DIALOG+DETLST,#1		;IS IT A DUMP?	BNE	1$				;NO- TOTAL IT	RTS	PC				;YES      - DON'T TOTAL IT;1$:	MOV	ERR2,R1				;Logger code to R1	INC	R1				;Record 0 is in block #1	GET$R	#FDBT,,,R1,,ERROR		;Read the logger's total record;	MOV	ERR1,R2				;Temporary vers of error code	ASL	R2  				;x2 - word->byte	MOV	#TOTALS,R0			;Address of total buffer to R0	ADD	R2,R0				;Add in offset into record	INC	(R0)				;Increment total counter for error	PUT$R	#FDBT,,,R1,,ERROR		;Write the updated total record;	RTS	PC				;Return	.PAGE	.SBTTL	THE DETAIL LIST;**************************************************      ******;;;	T H E    L I S T ;;;*****************************************************LISTIT:	CMP	DIALOG+DETLST,#2		;IS IT TOTAL ONLY?	BNE	101$				;NO- LIST	RTS	PC				;YES- NO LIST;101$:	CMP	DIALOG+DETLST,#1		;IS IT DUMP?	BNE	5$				;NO	MOV	#60.,LINCNT			;FORCE NEW PAGE;5$:	CMP	#57.,LINCNT			;Full page?	BPL	100$				;No, continue	JSR	PC,HEADER			;Yes, go to header routine;100$:	PUT$S	#FDBO,#BLANK,#5,ERROR		;Start with a blank line	SLIDE	#RECBUF+TPN,#ANAME,#6.		;TP name to list line	SLIDE	#RECBUF+TN, #TNAME,#6.		      ;Transaction name to list line	SLIDE	#RECBUF+SN, #SOURCE,#6.		;Source station name to list line	SLIDE	#RECBUF+FN, #FNAME,#6.		;Forms name to list line;	MOV	RECBUF+TID,R0			;High order transaction ID to r0	MOV	RECBUF+TID+2,R1		;Low order to r1	MOV	#DU3,R4				;Answer starts here	MOV	R5,-(SP)			;Save R5	JSR	PC,DCON				;Convert double precision #	MOV	(SP)+,R5			;Restore R5	CONVER	DU1,#TEMPID+5			;Convert to ASCII	CONVER	DU2,#TEMPID+2			;	CONVER	DU3,#TEMPID			;	EDITNO	#TEMPID,#MASK,#12.,#TNUM		;Edit in the conve      rted number;	INC	FULL				;Full field result wanted	MOVB	#0,RECBUF+EXN			;Blank out low byte	MOV	RECBUF+EXN,R1			;Exchange # to R1	SWAB	R1				;Real stuff is in High byte initially	MOV	#EXCH,R4			;ASCII ex # address to R3	JSR	PC,DIGITS			;Format exchange #;	CLR	FULL				;Short field wanted	MOV	RECBUF+HR,R1			;Hour to R1	MOV	#DTIMEH,R4			;ASCII hour address to R3	JSR	PC,DIGITX			;Convert to ASCII;	MOV	RECBUF+MIN,R1			;Min to R1	MOV	#DTIMEM,R4			;ASCII min address to R3	JSR	PC,DIGITY			;Convert to ASCII;	MOV	REC      BUF+DAY,R1			;Day to R1	MOV	#DDATED,R4			;ASCII day address to R3	JSR	PC,DIGITX			;Convert to ASCII;	MOV	RECBUF+YR,R1			;Year to R1	MOV	#DDATEY,R4			;ASCII year address to R3	JSR	PC,DIGITY			;Convert to ASCII	.PAGE;;	MOV	RECBUF+MON,R1			;Month to R1	MOV	#DDATEM,R2			;Address ASCII month to R2	DEC	R1				;1st month=>0th table entry	ASH	#2,R1				;Monthx4 to get table offset	ADD 	#MONTAB,R1			;Add table base- R1 has						;address of proper ASCII month	MOV	(R1)+,(R2)+			;Move first two characters	MOVB	(R1),(R2)	      		;Move third character;;	MOV	#76.,R1				;76 bytes to check	MOV	#ANAME,R0			;Starting address2$:	TSTB	(R0)				;Is it null?	BNE	1$				;No	MOVB	#40,(R0)			;Move a blank in;1$:	TSTB	(R0)+				;Pop to next location	SOB	R1,2$				;Loop through field;	PUT$S	#FDBO,#ANAME,#76.,ERROR		;Print first list line	PUT$S	#FDBO,#STRBUF,#8.,ERROR		;Print second list line;;;	JSR	PC,GETNAM			;Get the error message text	PUT$S	#FDBO,#STRBUF,#72.,ERROR	;Write the error message line;;	MOV	RECBUF+MOD,R0			;Address of logger code to R0      	MOV	#LOGGER,R1			;Address of logger name table	JSR	PC,LOG				;Get logger name;120$:	PUT$S	#FDBO,#LGBUF,#42.,ERROR		;Write logger name line	PUT$S	#FDBO,#BLANK,#5,ERROR		;Write a blank line	ADD 	#6,LINCNT			;Update the line count	RTS	PC				;Return	.PAGE	.SBTTL	UTLILTY PRINT ROUTINES;************************************************************;;;	CONVERT INTEGER TO ASCII;	ZERO SUPPRESS  AN INTEGER;	GET LOGGER NAME;;;************************************************************;	.ENABL	LSBDIGITX:	MOV	#10.,R3			      	;Initialize to 10's digit	INC	FULL				;Full 2 digit field wanted	CLR	ZSUP				;With zero suppression	BR	2$				;Go to common routine;DIGITY:	MOV	#10.,R3				;Initialize to 10's digit	INC	ZSUP				;Don't zero suppress	BR	2$				;Go to common routine;DIGITS:	MOV	#10000.,R3			;Initialize to 10,000's digit	CLR	ZSUP				;Initialize zero suppression 	JSR	PC,DIVIDE			;Convert 10,000's digit	JSR	PC,DIVIDE			;Convert 1000's digit	TST	ZSUP				;All blank so far?	BEQ	1$				;Yes	MOVB	#',,(R4)+			;If no, put in comma;1$:	JSR	      PC,DIVIDE			;Convert 100's digit2$:	JSR	PC,DIVIDE			;Convert 10's digit	JSR	PC,DIVIDE			;Convert 1's digit	RTS	PC				;Return	.DSABL	LSB;;DIVIDE:	CLR	R0				;Initialize divide instr.	CLR	R2				;Initialize other divide	DIV	R3,R0				;Get integer format of digit	TST	R0				;This integer = 0?	BEQ	1$				;Yes, continue 0=>blank	INC	ZSUP				;No, discontinue 0=>blank;1$:	DIV	#10.,R2				;Set up for next lower digit	MOV	R2,R3				;Result is divisor for next digit	TST	ZSUP				;Still zero suppressing?	BEQ	3$				;Yes, move       a blank in	MOVB	ASCDIG(R0),(R4)+		;No, move in ASCII form of digit5$:	RTS	PC				;Return;3$:	TST	FULL				;Full field wanted?	BEQ	5$				;No, Done.	MOVB	#32.,(R4)+			;Move a blank in	BR	5$				;Done;LOG:	BIC	#177760,R0		;Make it between 0 and 31	ASL	R0			;x2 for word pointers	ADD	#LOGPNT,R0		;R0 - address of pointer to name	MOV	R3,-(SP)		;Save R3	MOV	(R0),R3			;Base of logger table to R3	MOV	#5,R2				;Transfer 5 words1$:	MOV	(R3)+,(R1)+			;Transfer a word of the name	SOB	R2,1$				;Loop through the whole name	MO      V	(SP)+,R3		;Reset R3	RTS	PC	.PAGE	.SBTTL	CONVERT DOUBLE PRECISION INTEGER;**************************************************************;;;	DCO CONVERTS A DOUBLE PRECISION INTEGER;;;***************************************************************;DCON:	MOV	R1,R5			;STORE R1 FOR PROCESSING REMAINDER	BIC	#177700,R5		;KEEP LOW 6 BITS	ASHC	#-6,R0			;DIVIDE BY 2**6	DIV	#15625.,R0		;DIVIDE BY 5**6	MOV	R0,(R4)+		;SAVE UPPER 4 DIGITS	CLR	R0			;CLEAR THE QUOTIENT OUT OF THE WAY	ASHC	#6,R0			;MULTIPLY REMAINDER BY 2*      *6	BIS	R5,R1			;ADD IN LOW 6 BITS;	MOV	R1,R5			;REPEAT ABOVE FOR NEXT THREE DIGITS	BIC	#177770,R5		;	ASHC	#-3,R0			;	DIV	#125.,R0		;	MOV	R0,(R4)+		;	CLR	R0			;	ASHC	#3,R0			;	BIS	R5,R1			;;	MOV	R1,(R4)+		;SAVE LOWEST THREE DIGITS;	RTS	PC	.PAGE	.SBTTL	CONVERT INTEGER TO ASCII;********************************************************;;;	CONVERT INTEGER TO ASCII;;;*********************************************************;CONVEA:1$:	CLR	R0			;INITIALIZE DIVIDES	CLR	R2			; ""	DIV	R3,R0			;GET DIGIT	BIS	#60,R0			;      CONVERT DIGIT TO ASCII	MOVB	R0,(R5)+		;MOVE IT TO TARGET FIELD	DIV	#10.,R2			;GET NEXT POWER OF TEN	MOV	R2,R3			;SET UP FOR NEXT DIGIT	SOB	R4,1$			;LOOP THROUGH ALL DIGITS;	RTS	PC			;RETURN;;;EDIT:	MOV	R2,R4			;SAVE R2	MOV	R1,R3			;SAVE R3;2$:	TSTB	(R1)			;IS PRINTING MASK CHARACTER THERE?	BNE	1$			;YES, SO DON'T MOVE DIGIT IN	MOVB	(R0)+,(R1)		;NO, SO MOVE DIGIT IN;1$:	TSTB	(R1)+			;POP TO NEXT TARGET BYTE	SOB	R2,2$			;LOOP THROUGH ALL BYTES OF SOURCE;;	CLR	ZSUP			;WHEN ABOVE IS DONE, ZERO SUPPRESS15$:	TST	      ZSUP			;IS SUPPRESSION STILL IN EFFECT?	BNE	10$			;NO	CMPB	#72,(R3)		;SHOULD CHARACTER BE SUPPRESSED?	BMI	20$			;YES, IF OUTSIDE 1-9	CMPB	(R3),#61	BMI	20$;10$:	INC	ZSUP			;INDICATE NO MORE SUPPRESSION	TSTB	(R3)+			;POP TO NEXT CHARACTER25$:	SOB	R4,15$			;LOOP THROUGH WHOLE FIELD	BR	100$			;DONE;20$:	CMP	R4,R5			;IF NOT PAST SUPPRESSION LIMIT, BLANK IT	BEQ	25$	BMI	25$			;PAST SUPPRESSION LIMIT	MOVB	#' ,(R3)+		;BLANK CHARACTER OUT	BR	25$			; LOOP THROUGH FIELD;100$:	RTS	PC			;RETURN	.PAGE	.SBTTL	 THE FULL DUM      P;*****************************************************;;;	T H E    D U M P ;;;*******************************************************DUMPIT:	CMP	DIALOG+DETLST,#1		;IS IT A DUMP?	BEQ	7$				;YES- DUMP IT	RTS	PC				;NO- DON'T DUMP IT;7$:	MOV	#O1BUF,R1	JSR	PC,CLEAR			;Clear the DUMP buffers	MOV	#O2BUF,R1			;Use spaces not nulls because	JSR	PC,CLEAR			;TI: is a valid report device	MOV	#O3BUF,R1	JSR	PC,CLEAR	MOV	#O4BUF,R1	JSR	PC,CLEAR	MOV	#O5BUF,R1	JSR	PC,CLEAR	MOV	#O6BUF,R1	JSR	PC,CLEAR	MOV	#ASBUF,R1	JSR	PC,CLE      AR;	CMP	#56.,LINCNT			;Page full?	BPL	3$				;No	JSR	PC,HEADER			;Yes, print headings;3$:	CLR	R2				;Zero suppress block #	MOVB	RECBUF+BLKNO,R1			;Block # to R1	MOV	#BNUM,R0			;Address of ASCII field	JSR	PC,$CBDMG			;Convert Block # to ASCII	PUT$S	#FDBO,#BLOCKL,#13.,ERROR	;Write block # line;	MOV	HINUM,LOWNUM			;Old high +1= new low byte #	INC 	LOWNUM	ADD	LENGTH,HINUM			;Old high + length = new high # 	MOV	#LOWER,R0			;Convert Low byte # to ASCII	MOV	LOWNUM,R1			;  "	JSR	PC,$CBOMG			;  ";	MOV	#HIGHER,R0			;C      onvert High byte # to ASCII	MOV	HINUM,R1			;  "	JSR	PC,$CBOMG			;  "	.PAGE;;	PUT$S	#FDBO,#AST,#80.,ERROR		;Write byte limit line;;;	The ASCII format line;	MOV	DATA,R0				;Address of data to be printed	MOV	#ASBUF,R1			;Address of print buffer	MOV	LENGTH,R2			;# bytes to print;1$:	CMPB	(R0),#32.			;Is char. a printable char.	BLT	52$				;No, its an unprintable char.	CMPB	(R0),#122.			;	BGT	52$				;No, its an unprintable char.	MOVB	(R0)+,(R1)+			;Yes, then print it!5$:	SOB	R2,1$				;Try for another character	BR       	50$				;Go to write the line;52$:	MOVB	#32.,(R1)+			;If not printable, print a space	INC	R0				;Pop to next character	BR	5$				;Try for another character;;50$:	TST	BNULL				;Starting Null byte - print *	BEQ	53$				;Not starting null byte	MOVB	#'*,ASBUF			;It is, * to buffer	CLR	BNULL				;Do it once;53$:	CMP	LENGTH,#64.			;Last dump set for block?	BEQ	54$				;No	TST	ENULL				;Yes, and is it ending null byte	BEQ	54$				;No	MOVB	#'*,-(R1)			;It is, * to buffer;54$:	PUT$S	#FDBO,#ASBUF,#80.,ERROR		;Print the A      SCII line	.PAGE;;	MOV	LENGTH,R5				;# bytes to R5	ASR	R5				;Divide by 2 - byte to word	MOV	#O1BUF+1,R4			;Address to print 1st word-high byte	MOV	DATA,R3			;Address of 1st word of data;55$:	MOV	(R3),R1				;Move word to R1	INC	R2				;No zero suppression	MOV	#OCTAL,R0			;Address of ASCII field	JSR	PC,$CBOMG			;Convert to OCTAL ASCII;	MOVB	OCTAL+0,  0.(R4)		;Move High order OCTAL digit	MOVB	OCTAL+1, 80.(R4)		;  ""	MOVB	OCTAL+2,160.(R4)	MOVB	OCTAL+3,240.(R4)	MOVB	OCTAL+4,320.(R4)	MOVB	OCTAL+5,400.(R4)		;Move L      ow order OCTAL digit	ADD	#2,R4				;Bump to next printing slot	TST	(R3)+				;Bump to next character	SOB	R5,55$				;Try to get next character;;;	PUT$S	#FDBO,#O1BUF,#80.,ERROR		;Print the 6 OCTAL buffer lines	PUT$S	#FDBO,#O2BUF,#80.,ERROR	PUT$S	#FDBO,#O3BUF,#80.,ERROR	PUT$S	#FDBO,#O4BUF,#80.,ERROR	PUT$S	#FDBO,#O5BUF,#80.,ERROR	PUT$S	#FDBO,#O6BUF,#80.,ERROR	PUT$S	#FDBO,#AST,#80.,ERROR		;Print the Divider line	PUT$S	#FDBO,#BLANK,#5.,ERROR		;Print a blank line	PUT$S	#FDBO,#BLANK,#5.,ERROR		;Print a blank line	ADD      	#12.,LINCNT			;Update line count;	RTS	PC				;Return;;;	Clear OCTAL and ASCII buffer routine;CLEAR:	MOV	#64.,R0				;64 bytes to clear1$:	MOVB	#32.,(R1)+			;Move a space in	SOB	R0,1$				;Try to loop	RTS	PC				;Return	.PAGE	.SBTTL	HEADER ROUTINE;******************************************************;;;	T H E    H E A D E R    L I N E S ;;;*******************************************************;HEADER:	CMP	DIALOG+DETLST,#0		;Is it a detail list?	BNE	5$				;No, try next possibility	SLIDE	#TYPE4,#RTYPE,#5		;Yes,       "List" to header line	SLIDE	#CLASS1,#CLASS,#7		;Yes, "Detail" to header line	BR	LIN1				;Go to continue processing line;5$:	CMP	DIALOG+DETLST,#1		;Is it a dump?	BNE	10$				;No, try total 	SLIDE	#TYPE2,#RTYPE,#5		;Yes, "Dump" to header line	SLIDE	#CLASS1,#CLASS,#7		;Yes, "Detail" to header line	BR	LIN1				;Go to continue processing line;10$:	SLIDE	#TYPE3,#RTYPE,#7		;It must be a total report	SLIDE	#CLASS2,#CLASS,#7		;Tailor header line;LIN1:	PUT$S	#FDBO,#FF,#1.,ERROR		;Form feed - new page	PUT$S	#FDBO,#HEAD      1,#37.,ERROR		;Print title line	PUT$S	#FDBO,#BLANK,#5.,ERROR		;Print blank line;;	TST	DIALOG+ALLAPP			;ALL Tran. Proc.?	BEQ	2$				;No, Go to 2$	SLIDE	#ALLTPN,#APPNAM-4,#32.		;Yes, Alter header line	BR	5$;2$:	SLIDE	#<DIALOG+SELAPP>,#APPNAM,#6.	;TP name to header line;5$:	TST	DIALOG+FIRERR			;First error?	BEQ	6$				;No	SLIDE	#FERROR,#BTIME,#18.		;Yes, alter header line	BR	RET1				;;6$:	SLIDE	#<DIALOG+BETIME>,#BTIME,#5	;Beg. selection time to header	SLIDE	#<DIALOG+BEDATE>,#BDATE,#9.	;Beg. selection date to hea      derRET1:	PUT$S	#FDBO,#HEAD2,#75.,ERROR		;Write header line #2	.PAGE;;	TST	DIALOG+ALLTRA			;ALL transactions selected?	BEQ	5$				;No	SLIDE	#OHEAD3,#HEAD3,#54.		;Yes, insert notice in header;5$:	TST	DIALOG+LSTERR			;Last error selected?	BEQ	7$				;No	SLIDE	#LERROR,#ETIME,#18.		;Alter header line	BR	RET2;7$:	SLIDE	#<DIALOG+ENTIME>,#ETIME,#5	;End selection time to header line	SLIDE	#<DIALOG+ENDATE>,#EDATE,#9.	;End selection date to headerRET2:	PUT$S	#FDBO,#HEAD3,#76.,ERROR		;Write header line #3;	PUT$S	#FDBO,#B      LANK,#5.,ERROR		;Write a blank line;	TSTB	SUM				;Is this a total report?	BEQ	1$				;Yes	PUT$S	#FDBO,#HEAD4,#64.,ERROR		;No, Write sub-title lines	PUT$S	#FDBO,#HEAD5,#53.,ERROR	MOV	#9.,LINCNT			;Increment line count - non-total	BR	2$				;;1$:	MOV	R5,R0				;Set up logger code in R0	MOV	#HEDLOG,R1			;Say where to print it	JSR	PC,LOG				;Get logger name	PUT$S	#FDBO,#LOGHED,#17.,ERROR	;Write logger name line	PUT$S	#FDBO,#HEAD6,#SHED6,ERROR	;Write sub-title line	MOV	#9.,LINCNT			;Increment line count - total;2$:      	PUT$S	#FDBO,#DASH,#80.,ERROR		;Write divider line	PUT$S	#FDBO,#BLANK,#5.,ERROR		;Write blank line	RTS	PC				;Return;;CLOSIT:	CMP	(SP)+,(SP)+			;Eof nested in sub-routines;						 correct for that	RTS	PC				;Return	.PAGE	.SBTTL	SUMMARY PROCESSING;*****************************************************;;;	S U M M A R Y    P R O C E S S I N G ;;;********************************************************;SUMM::	CMP	DIALOG+DETLST,#1		;If dump, no totals	BNE	5$				;	JMP	OUT				;Yes, its a dump;;5$:	MOV	#2,DIALOG+DETL      ST		;Make header think its total time	CLRB	SUM				; "	INC 	FULL				;Print 6 digit number fields	CLR	R5				;Start with logger 0	CLR	R4				;Start with error 0;TOTLOP:	MOV	R5,R1				;temporary logger code	ASL	R1				;x2 for word pointers	ADD	#LOGPNT,R1			;Get pointer for logger code	MOV	(R1),R1				;	CMPB	(R1),#'*			;Should this logger be skipped	BNE	51$				;No	JMP	LOGSKP				;Yes;51$:	INC	R5				;Logger 0=>virtual block #1	MOV	#100.,LINCNT			;Each logger starts on new page	GET$R	#FDBT,,,R5,,ERROR		;Get total recor      d for logger	DEC	R5				;Reset R5 to logger code	MOV	#TOTALS,R3			;Base buffer address to R3	.PAGE;;53$:	TST	(R3)				;Zero total?	BEQ	100$				;Yes;	CMP	#62.,LINCNT			;Page full?	BPL	55$				;No	JSR	PC,HEADER			;Yes,print headings;55$:	MOV	R5,R1				;Temporary field	ASL	R1				;x2 byte offset into header blk	ADD	#OFFSET,R1			;R1 has address of offset value	MOV	R4,R2				;Temporary field	ADD	(R1),R2				;Compute index	MOV	R2,INDEX1			;Store index;	JSR	PC,GETNAM			;Get error message;	MOV	R4,-(SP)			;Save R4	MOV	(R3)      ,R1				;Convert total to ASCII form	MOV	#TOTNUM,R4			;	MOV	R3,-(SP)			;Save R3	JSR	PC,DIGITS			;	MOV	(SP)+,R3			;Restore R3	MOV	(SP)+,R4			;Restore R4;	PUT$S	#FDBO,#TXBUF,#73.,ERROR		;Write the record;	INC	LINCNT				;Update the line count100$:	INC	R4				;Get next error code	TST	(R3)+				;Bump to next total;	CMP	R4,#256				;Finished a logger code?	BMI	53$				;No;LOGSKP:	INC	R5				;Yes, get next logger code unless	CLR	R4				;Start over with error 0	CMP	R5,#11.				;all loggers are done	BMI	TOTLOP				;More to c      omeOUT:	RTS	PC				;Return	.PAGE	.SBTTL	ERROR REPORTING;***********************************************************;;;	E R R O R    R E P O R T I N G ;;;***********************************************************;ERROR:	TST	(SP)+			;Correct stack pointer	NEGB	F.ERR(R0)	MOVB	F.ERR(R0),R1;	CMP	#10.,R1				;EOF?	BNE	1$				;No	TST	EOFMES				;EOF on message file	BNE	3$				;Yes	JMP	CLOSIT				;No;3$:	JMP	EOFTXT				;Go to specialeof on mess file routine;;1$:	MOV	#FIELD1,R0	CLR	R2				;	JSR	PC,$CBDMG;	MOV	(SP)+,R1	MOV	   X   #NEXTAD,R0	INC	R2	JSR	PC,$CBOMG	MOV	SIZE2,TYPE+Q.IOPL+2	DIR$	#TYPE;	EXST$S	STATUS	.END	 X          šwì“Á› 8$        1	!***************************************************************&	!								&	!								&	!	S O F T W A R E   E R R O R   L O G   C O N T R O L 	&	!	U T I L I T Y						&	!								&	!								&	!								&	!	Program:	SERCTL					&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	01					 1.1A01&	!	Edit date:	19-Jun-79				 1.1A01&	!	Author(s):	GW					&	!			KMR					 1.1A00&	!								&	!***************************************************************&11	!***************************************************************&	!	      							&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$      **************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1A00	09-Mar-79 KMR	Added code to check for TT0: or	 1.1A00&	!				  batch.			 1.1A00&	!	V1.1A01	19-Jun-79 KMR	Removed version from herald.	 1.1A01&	!								&	!***************************************************************&100	!$*************      *************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!    This utility is used to control the error logging  pro-	&	!    cess.   The user may enable or disable error logging on	&	!    a transaction processor basis, have data  deleted  from	&	!    the error log file or cause the error logging module to	&	!    exit.							&	!    								&	!    For (de)selecting the utility requests a list of  tran-	&	!    saction  processor  names  (o      r  all)  and the selection	&	!    status.  When the user has finished specifying transac-	&	!    tion  processors  the utility rewrites the control file	&	!    SERLOG.TPF.  It then sends a message (1) to  the  error	&	!    logging utility, to reopen its control file.		&	!    								&	!    For the remove option the user is prompted for a  tran-	&	!    saction processor name or all, and the date-time of the	&	!    last record to be removed.  The utility sends a message	&	!    (0) to the error logger to do th      e purge			&	!    								&	!    If the user requested the  STOP  command  the  utiltity	&	!    sends a message (-1) to the error logging utility.		&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Transaction processor fi      le input	&	!	    2		Logging control file input/output	&	!	    3		Secondary logging device (terminal)	&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ACCOUNT$		UIC for files			&	!	ACCOUNT1$		UIC for TPDEF			&	!	ASK.HE      LP$()		Help text			&	!	CODE%			Message type			&	!	CONTROL$		control code			&	!	DAY%			Day of month			&	!	DEFAULT$		Default value			&	!	DESTINATION%()		Message destination		&	!	DEVICE$			Secondary device		&	!	FUNCT%			Function code			&	!	HOUR%			Hour				&	!	I%			Counter				&	!	IDS%			Directive status		&	!	IS.SUC%			Successful status		&	!	LOGNAMES$()		TPs to be logged		&	!	MESSAGE$		Message to send			&	!	MINUTE%			Minute of hour			&	!	MONTH%			Month of year			&	!	NAME$			TP name in message		&	!	NUMDEF%			Numb      er of defined TPs		&	!	NUMSEL%			Number of selected TPs		&	!	NUMTP%			number of selected TPs		&	!	SECOND%			Second in minute		&	!	SEL%			selection status		&	!	SELECT$			Select list			&	!	T%			Temporary working variable	&	!	TRANSACTION$		Transaction processor name	&	!	UNIT%			unit number for secondary device&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!	VIRTUAL$()		Transaction processor record	&	!	W's			Working storage			&	!	YEAR%			Year				&	!								&	!****************************      ***********************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								      &	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	25001	FN.ASK		Dialog				&	!	25200	FN.CHK.DAT	Check date			&	!	25250	FN.CHK.TIM	Check time			&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!********************************************************      *******&850	\ COM MESSAGE$=2, CONTROL$=1, CODE$=1, NAME$=6, YEAR%, MONTH%,	&		DAY%, HOUR%, MINUTE%, SECOND%				&	!								&	!	Message buffer						&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE state      ments.			&	!								&	!***************************************************************&910	\ DIM ASK.HELP$(14), DESTINATION%(1)				&920	\ DIM #1, VIRTUAL$(100)=64					&950	\ MAP (SERTPF) NUMTP%, LOGNAMES$(83)=6, DEVICE$=2, UNIT%, FILL%	&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!					      			&	!	Set up standard default error trap			&	!								 1.1A00&	\ GO TO 1010	IF FN.CHECK.TT0% = -1%				!1.1A00&	!								 1.1A00&	!	If we are at TT0:, continue.				 1.1A00&	!								 1.1A00&	\ PRINT "? Directive error GETLUN:";T2900%	IF T2900% <> 1%	!1.1A00&	\ PRINT "? SERCTL must be run from TT0: or batch"		!1.1A00&				IF T2900% = 1%				!1.1A00&	\ GO TO 32000							!1.1A00&	!								 1.1A00&	!	If the error was a directive error, print out its value.	1.1A00&	!	If it was not a directive error, tell the user       the	 1.1A00&	!	  problem.						 1.1A00&	!	In any case, get out.					 1.1A00&1010	VER.EDIT.NUM$ = "V1.1A"						!1.1A00&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "SERCTL	"; !	VER.EDIT.NUM$; "   "	!		!1.1A01&	\ PRINT "Software error logger control utility"			&	\ PRINT								&	!								&	!	Output program herald messages				&1050	\ ACCOUNT$ = "[1,300]"						&	\ ACCOUNT1$ = "[1,1]"						&	\ FILE.END$ = "######"						&	\ DESTINATION%(0%) = 30618%			!"SER"		&	\ DESTINAT      ION%(1%) = 19807%			!"LOG"		&	\ IS.SUC% =  1%							&	\ SECOND% = 0%							&	\ CONTROL$ = CHR$(-1%)						&	\ ASK.HELP$(0%) = "Valid commands are:"				&	\ ASK.HELP$(1%) = "SELECT - to select/deselect error logging"	& 		+ " for a transaction processor"			&	\ ASK.HELP$(2%) = "REMOVE - to selectively purge the error log" &		+ " file"						&	\ ASK.HELP$(3%) = "STOP - to cause the error logger to exit"	&	\ ASK.HELP$(4%) = "TERMINAL - to change the secondary logging"	&		+ " device"						&	\ ASK.HELP$(5%) = "EXIT -       to exit from this utility"		&	\ ASK.HELP$(6%) = "The defined transaction processors are:"	&	\ ASK.HELP$(8%) = "A  YES  response will result  in error "	&		+ "logging being  enabled for the  requested"		&	\ ASK.HELP$(9%) = "transaction processor. A NO response will "	&		+ "disable it."						&	\ ASK.HELP$(10%) = "Specify the date (dd-mmm-yy) beyond which"	&		+ " all errors will be retained."			&	\ ASK.HELP$(11%) = "Specify the time  (hh:mm)  for the ending"	&		+ " date,  beyond which all errors will be"		&	\       ASK.HELP$(12%) = "retained."					&	\ ASK.HELP$(13%) = "All errors will be  recorded in the error "	&		+ "log.  You may specify an output device"		&	\ ASK.HELP$(14%) = "(terminal) on which the error will "	&		+ "also be listed or NONE."				&	!								&	!	Initialize the program data elements.			&1100	\ FUNCT% = FN.ASK%("Command","EXIT",				&		"/SELECT/REMOVE/STOP/TERMINAL/EXIT",0%,0%,6%)		&	\ ON FUNCT% GOTO 1100,32767,1150,1150,3000,1220,32767		&	!								&	!	Ask for the command and save it.			&	!	Branch on       ESC, ^Z, SELECT, REMOVE, STOP, EXIT		&1150	\ DEFAULT$ = "ALL"						&	\ GOTO 1220 IF ASK.HELP$(7%) <> ""				&	\ NUMDEF% = 0%							&	\ OPEN ACCOUNT1$ +"TPDEF.TPF" FOR INPUT AS FILE #1%,		&		ORGANIZATION VIRTUAL					&	!								&	!	Come here for SELECT and REMOVE commands. Initialize	&	!	the default value for the next question. Initialize	&	!	the selection lists. If this is the first time through,	&	!	open the transaction processor file.			&1200	\ W1$= ""							&	\ FOR I% = 0% TO 99%						&		\ W$ = EDIT$(LEFT(      VIRTUAL$(I%),6%),2%)			&		\ GOTO 1215 IF W$ = FILE.END$				&		\ GOTO 1210 IF W$ = ""					&		\ IF LEN(W$) + LEN(W1$) > 78% THEN ASK.HELP$(7%) =	&			ASK.HELP$(7%) + W1$ + CHR$(13%) + CHR$(10%)	&		\ W1$ = ""						&	!								&	!	Read the TP file until its end. Add the		 	&	!	name of the processor to the help text. Start a new	&	!	line if this line will overflow 80 columns		&1205		\ W1$ = W1$ + W$ + ", "					&		\ NUMDEF% = NUMDEF% + 1%				&	!								&	!	Add this processor to the text and count it.		&1210	\ NEXT       I%							&	!								&	!	Loop over processor records.				&1215	\ ASK.HELP$(7%) = ASK.HELP$(7%) + LEFT(W1$,LEN(W1$)-2%)		&	!								&	!	Add the remaining names to the help text, making sure	&	!	the last comma is deleted.				&1220	\ GOTO 1250 IF FUNCT% = 4%					&	\ OPEN ACCOUNT$ + "SERLOG.TPF" FOR INPUT AS FILE #2%,		&		ORGANIZATION SEQUENTIAL, FIXED, ACCESS SCRATCH		&			,MAP SERTPF, NOSPAN					&	\ SELECT$ = ""							&	\ GET #2%							&	\ GOTO 4000 IF FUNCT% = 6%					&	\ NUMSEL% = NUMTP%						&	\ GOTO 1250 IF       NUMTP% = 0%					&	\ FOR I% = 0% TO NUMTP% - 1%					&		\ SELECT$ = SELECT$ + EDIT$(LOGNAMES$(I%),2%) + ","	&	\ NEXT I%							&	!								&	!	If we are selecting then get a list of the previously	&	!	selected processors. This list exists in the file	&	!	SERLOG.TPF. The first entry is the number of		&	!	processor packed in the first 2 bytes.			&1250	\ ON FN.ASK%("Transaction processor name",DEFAULT$,"A",6%,6%,2%)&		GOTO 1100,32767,1300					&	!								&	!	Get the processor name or ALL. Branch on ESC, ^Z, OK	&130      0	\ GOTO 1750 IF ASK.CVT$ = "DONE"				&	\ TRANSACTION$ = ASK.CVT$					&	\ GOTO 1350 IF TRANSACTION$ = "ALL"				&	\ IF INSTR(1%," "+ASK.HELP$(7%)+","," "+TRANSACTION$+",") = 0%	&		THEN PRINT						&	\ PRINT "% Transaction processor not defined."			&	\ GOTO 1250							&	!								&	!	Skip if the response was done.				&	!	Save the processor name. Skip if it was ALL.		&	!	If the processor name is not in our help line		& 	!	then, it doesn't exist. Give the user the error		&	!	message and go reprompt.				&1350	\ GO      TO 2000 IF FUNCT% = 4%					&	!								&	!	Skip if the command was remove				&1400	\ SEL% = FN.ASK%("Select error monitoring","YES","Y",0%,8%,2%)	&	\ ON SEL% GOTO 1250,32767,1450,1450				&	!								&	!	Come here for SELECT processing. Ask if selecting or	&	!	deselecting. Save the answer.				&	!	Branch on ESC, ^Z, YES, NO.				&1450	\ IF TRANSACTION$ = "ALL" THEN NUMSEL% = 0%			&	\ SELECT$ = EDIT$(ASK.HELP$(7%),2%+4%) + ","			&	\ NUMSEL% = NUMDEF% IF SEL% = 3					&	\ GOTO 1750							&	!								&	!	If the user       selected all then set the select list	&	!	appropriately. That is make it empty or add all the	&	!	defined processors.					&1550	\ W% = INSTR(1%,","+SELECT$,","+TRANSACTION$+",")		&	\ IF SEL% = 3% THEN IF W% = 0% THEN NUMSEL% = NUMSEL% + 1%	&	\ SELECT$ = SELECT$ + TRANSACTION$ + ","			&	!								&	!	If we are selecting this processor and it has not	&	!	been previously selectd, then add it to the select list	&1650	\ IF SEL% = 4% THEN IF W% <> 0% THEN NUMSEL% = NUMSEL% - 1%	&	\ W2% = INSTR(W%,SELECT$,",")					      &	\ SELECT$ = LEFT(SELECT$,W%-1%) + RIGHT(SELECT$,W2%+1%)		&	!								&	!	If we are deselecting the processor and it is in our	&	!	selection list, then delete it.				&1700	\ DEFAULT$ = "DONE"						&	\ GOTO 1250							&	!								&	!	Reset default value. Loop for more selections		&1750	!***************************************************************&	!								&	!	P R O C E S S   T H E   N E W   S E L E C T I O N S	&	!								&	!***************************************************************&	!								&	\ SCRA      TCH #2%							&	\ NUMTP% = NUMSEL%						&	\ W% = 1%							&	\ FOR I% = 0% TO NUMTP% - 1%					&		\ W1% = INSTR(W%,SELECT$,",")				&		\ LOGNAMES$(I%) = MID(SELECT$,W%,W1%-W%)		&		\ W% = W1% + 1%						&	\ NEXT I%							&	!								&	!	Rewind the control file. Put the number of entries	&	!	in the first record. Add the selected processor names	&	!	to the file.						&1800	\ PUT #2%							&	\ CLOSE #2%							&	\ CODE$ = CHR$(1%)						&	\ CALL SEND BY REF (DESTINATION%(),MESSAGE$)			&	!								&	!	Send a message to       the error logger to reset its		&	!	 selection list.					&1850	\ PRINT								&	\ PRINT "The new selections will be applied."			&	\ GOTO 1100							&	!								&	!	Tell the user we did it and go back for the next	&	!	command.						&2000	!**************************************************************&	!								&	!								&	!	R E M O V E   P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	!								&	\ ON FN.ASK%("Ending date","LAST ERROR","",O%,10%,      1%)		&		GOTO 1250,32767,2050					&	!								&	!	Ask about the last date. Branch on ESC, ^Z, other.	&2050	\ IF ASK.CVT$ = "LASTERROR" THEN YEAR% = 100%			&	\ GOTO 2250							&	!								&	!	If the user wants all the errors removed, set the year	&	!	to the largest possible and skip the time question.	&2100	\ IF FN.CHK.DATE%(ASK.CVT$) = 0% THEN PRINT			&	\ PRINT "% Invalid date"					&	\ GOTO 2000	!								&	!	Check if the date is legal. Reprompt if it is not.	&2150	\ ON FN.ASK%("Ending time","23:59","",0%,11%,2      %)		&		GOTO 2000,32767,2200					&	!								&	!	Ask for the ending time. Branch on ESC, ^Z, other.	&2200	\ IF FN.CHK.TIME%(ASK.CVT$) = 0% THEN PRINT			&	\ PRINT "% Invalid time"					&	\ GOTO 2150							&	!								&	!	Check if the time is legal. Reprompt if it is not.	&2250	\ CODE$ = CHR$(0%)						&	\ NAME$ = TRANSACTION$						&	\ CALL SEND BY REF (DESTINATION%(),MESSAGE$,"",IDS%)		&	\ IF IDS% <> IS.SUC% THEN PRINT					&	\ PRINT "% Error logger is not running"				&	\ GOTO 1100	!								&	!	Send a message to t      he error logger to purge.		&	!	Tell the user if the message was not received.		&2650	\ PRINT								&	\ PRINT "Log file will be purged"				&	\ GOTO 1100							&	!								&	!	Tell the user we are done and go back for the next	&	!	command.						&3000	!***************************************************************&	!								&	!								&	!	S T O P    P R O C E S S I N G				&	!								&	!								&	!***************************************************************&	!								&	\ CODE$ = CHR$(-1%)						&	\ CALL SEN      D BY REF (DESTINATION%(),MESSAGE$)			&	\ PRINT								&	\ PRINT "Error logging will be terminated."			&	\ GOTO 1100	!								&	!	Send the exit message to the error logger.		&	!	 Go back for the next command.				&4000	!***************************************************************&	!								&	!								&	!	S E C O N D A R Y   D E V I C E    P R O C E S S I N G	&	!								&	!								&	!***************************************************************&	!								&	\ W% = (UNIT%/8%)*2% + UNIT%					&	\ W$ = "NONE"      							&	\ W$ = DEVICE$ + NUM1$(W%) + ":" IF W% >= 0%			&	\ ON FN.ASK%("Device name",W$,"",32767%,13%,2%)			&		GOTO 1100,32000,4050					&	!								&	!	Ask for tne new device name. The unit number is octal.	&4050	\ IF ASK.CVT$ = "NONE" THEN UNIT% = -1%				&	\ GOTO 4150							&	!								&	!	If the answer was none then set the unit negative	&4100	\ W% = INSTR(1%,ASK.CVT$,":")					&	\ GOTO 4200 IF W% = 0%						&	\ GOTO 4200 IF LEN(ASK.CVT$) > W%				&	\ OPEN ASK.CVT$ AS FILE #3%					&	\ GOTO 4200 IF STATUS AND 4      % = 0%				&	\ CLOSE #3%							&	\ DEVICE$ = LEFT(ASK.CVT$,2%)					&	\ W% = VAL(MID(ASK.CVT$,3%,W%-3%))				&	\ UNIT% = W% - (W%/10%)*2%					&	!								&	!	Make sure response was a terminal device.		&	!	Break up the response into unit and device name.	&	!	Note unit is octal.					&4150	\ SCRATCH #2%							&	\ PUT #2%							&	\ CLOSE #2%							&	\ PRINT								&	\ PRINT "The new  secondary logging  device will be  in effect "&		; "the  next time the error"				&	\ PRINT "logger is run."					&	\ GOTO 1100							&      	!								&	!	Update the file and go back to the command prompt.	&4200	\ PRINT								&	\ PRINT "% Not a valid terminal device"				&	\ GOTO 4000							&	!								&	!	Print the error message and go reprompt.		&9000	!***************************************************************&	!								&	!								&	!	C R E A T E    T H E   C O N T R O L   F I L E		&	!								&	!								&	!***************************************************************&	!								&	\ OPEN ACCOUNT$ + "SERLOG.TPF" FOR OUTPUT AS FILE #2%,		&	      	ORGANIZATION SEQUENTIAL, FIXED, ACCESS SCRATCH		&		,MAP SERTPF, NOSPAN					&	\ NUMTP% = 0%							&	\ DEVICE$ = "CO"						&	\ UNIT% = 0%							&	\ PUT #2%							&	\ GOTO 4000 IF FUNCT% <> 3%					&	\ NUMSEL% = 0%							&	\ GOTO 1250							&	!								&	!	Create the file and initialize the first record. If	&	!	selecting set number selected to 0.			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S           P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H       A N D L I N G	&	!								&	!								&	!***************************************************************&19100	\ IF ERR = 5 AND ERL = 1150 THEN				&		PRINT "% Transaction processor file doesn't exist"	&	\ RESUME 1100	!								&	!	If the processor file doesn't exist, there is no	&	!	sense proceeding with this command.			&19150	\ IF ERR = 5 AND ERL = 1220 THEN RESUME 9000			&	!								&	!	If there is no control file, go create it.		&19200	\ IF ERL = 4100  THEN RESUME 4200				&	!								&	!	If there is trouble       manipulating the output device	&	!	it must be illegal.					&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$*********************      *****************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	!								&	\ CLOSE #2%							&	!								&	!	Make sure the file is closed.				&32767	!   ê   $**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END ê          Ayð‘kQÁ› 8$        .PAGE.SBTTL	TPMLIB -- SPAWN TRANSACTION;;; ROUTINE TO SPAWN A TRANSACTION FOR A TRANSACTION INSTANCE;;; INPUT CONDITIONS:;	R0 -- VIRTUAL ADDRESS OF TDB;	R2 -- OWNER CCB;	UISAR3 -- BASE OF SPAWNING STATION;	UISAR4 -- MAPS THE BUFFER HOLDING THE TDB;; OUTPUT CONDITIONS:;;	'C' CLEAR IF TRANSACTION SPAWNED;		R5 -- CCB ADDRESS;;	'C' SET IF TRANSACTION NOT SPAWNED*;		R1 -- 'ER.OPE' TRANSACTION ALREADY OPEN;		      'ER.DSB' TRANSACTION TYPE DISABLED;		      'ER.NCB' NOT ENOUGH RESOURCES FOR TRANSACTION;;	ALL REGIS   ¼  TERS DESTROYED;;	ENTPT	TSPN	MOV	R2,-(SP)			; SAVE OWNER CCB	SUB	.CCBBA,R2			; CALCULATE	MOV	R2,R3	DIV	#C.CSIZE,R3			; OWNER INDEX	CALL	TOP2				; OPEN THE TRANSACTION	MOV	(SP)+,R2			; GET OWNER BACK	BCS	10$				; NOT OPENED	BIT	#CF.NEX,C.FLG(R2)		; EXCHANGE RECOVER FOR OWNER?	BNE	10$				; NO	BIS	#CF.HLD,C.FLG(R5)		; SET SPAWNED ON HOLD	MOV	C.SPN(R2),C.SPN(R5)		; LINK TO	MOV	R5,C.SPN(R2)			; SPAWN LIST						; C CLEAR FROM TOP2 CALL10$:	RETURN ¼         šwìrkQÁ› 8$        	.TITLE	SERROT	- ROOT MODULE FOR ERROR REPORT	.IDENT	/V1.1A00/                                                       ; KR001	.SBTTL	MACRO CALLS & DIALOG FILE MAP                                   ; KR001	.ENABL 	LC                                                              ; KR001;                                                                               ; KR001;+                                                                              ; KR001;                                                                                     ; KR001;	S E R R O T    M O D I F I C A T I O N    H I S T O R Y                 ; KR001;                                                                               ; KR001;                                                                               ; KR001;	VER/ED	DATE	INITIALS	REASON                                  ; KR001;	_______	_________ ___	________________________________________        ; KR001;	V1.1A00	12-Mar-79 KMR	Added call to TTCHK to assure that the          ; KR      001;				  utility only runs from TT0: or batch.         ; KR001;                                                                               ; KR001;-                                                                              ; KR001;                                                                               ; KR001                                                                                ; KR001	.PAGE                                                                   ; KR001	.MCALL	FDBDF$,FDOP$A      ,FDRC$A,EXST$S,FDBK$A,FDBF$A,FDAT$A                ;**-3	.MCALL	FINIT$,FSRSZ$,QIOW$	.PSECT	DATROT,D,REL,RW,GBL,CON;*******************************************************;;;	D I A L O G    F I L E    M A P;;;*******************************************************;DIALOG::.BLKB	274.		;The map for the Dialog file;SELAPP	==	0		;The selected transaction processorALLAPP	==	6		;Switch - 1 if ALL TP were selectedALLTRA	==	8.		;Switch - 1 if ALL TP were selectedDETLST	==	10.		;Switch - indicates type of report requ      estedBEDATE	==	12.		;ASCII - beginning date for selectionBETIME	==	24.		;ASCII - beginning time for selectionENDATE	==	29.		;ASCII - ending date for selectionENTIME	==	41.		;ASCII - ending time for selectionINDEV	==	46.		;Input file device spec.INUIC	==	52.		;Input file UIC spec.INNAME	==	62.				;Input file name spec.OUTDEV	==	82.		;Output file device spec.OUTUIC	==	88.		;Output file UIC spec.OUTNAM	==	98.				;Output file name spec.BYEAR	==	118.		;Integer beginning yearBMON	==	120.		;Integer beginning month      BDAY	==	122.		;Integer beginning dayBHOUR	==	124.		;Integer beinnning hourBMIN	==	126.		;Integer beginning minuteEYEAR	==	128.		;Integer ending yearEMON	==	130.		;Integer ending monthEDAY	==	132.		;Integer ending dayEHOUR	==	134.		;Integer ending minuteEMIN	==	136.		;Integer ending minuteFIRERR	==	138.		;Switch - 1 if first error is selectedLSTERR	==	140.		;Switch - 1 if last error is selectedD1LEN	==	142.		;Length of input dev specU1LEN	==	144.		;Length of input UIC specN1LEN	==	146.		;Length of input name       specD2LEN	==	148.				;Length of output dev specU2LEN	==	150.		;Length of output UIC specN2LEN 	==	152.				;Length of output name specTRANTA	==	154.		;Base of table of selected transaction names	.PAGE	.SBTTL	I/O INITIALIZATION;*******************************************************;;;	I/O    I N I T I A L I Z A T I O N;;;*******************************************************;FDBI::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	IBUF,512.,,,IOSTAT	FDOP$A	1,DSDI,,FO.RD;;		The error log fileFDBO::	FDBDF$	FDAT$A	R.VAR,FD.CR!FD.B      LK	FDRC$A	FDOP$A	2,DSDO,,FO.WRT	FDBF$A	,,1;;		The report file;;FDBN::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	NBUF,512.,,,IOSTAT	FDOP$A	3,DSDN,,FO.RD;;		The error message name fileFDBT::	FDBDF$	FDAT$A	R.FIX,,512.	FDRC$A	FD.RAN,TOTALS,512.	FDOP$A	4,DSDT,,FO.WRT	FDBF$A	,,1;;		The temporary total file	.PAGE	.SBTTL	CONSTANTS;**********************************************************;;;	CONSTANTS;;;************************************************************;CR	=	15				;CARRIAGE RETLF	=	12				;LINE FEED;	.EVENSTATUS:	.WORD	      1				;Exit status constantIBUF::	.BLKW	256.				;Block buffer input error fileNBUF::	.BLKW	256.				;Error message bufferTOTALS::.BLKW	256.				;Buffer for total fileOFFSET::.BLKW	32.				;Offset block - message fileMIDNIT::.ASCII	/00:00/				;Midnight time constant	.EVENCLOSED::.WORD					;Switch to indicate closing fileIOSTAT::.BLKW	2				;IO status block;HERA:	.BYTE	CR,LF,LF	.ASCII	/SERDAY V1.1A/                                                  ; KR001	.BYTE	CR,LF,LF                                                              ;**-1	.ASCII	/Creates List report for Today's errors/	.BYTE	CR,LF,LFSHERA	=	. - HERA	.EVEN                                                                   ; KR001;TRUMP:	QIOW$	IO.WBT,13.,32.,,IOSTAT,,<HERA,SHERA,0>;	FSRSZ$	2				;Allocate block buffers	.PAGE	.PSECT	CODROT,RO,I,REL,GBL,CON	.SBTTL	INITIALIZATION CODE;**************************************************;;;	I N I T I A L I Z A T I O N;;;*******************************************************;SERINS::FINIT$	JSR	PC,INI1				;Initializati      on	JSR	PC,MAIN				;MAIN LINE CODE	JSR	PC,CLOSE1			;First close file routine	JSR	PC,SUMM				;TOTAL ROUTINE	JSR	PC,CLOSE2			;Second close routine	EXST$S	STATUS				;EXIT;;;SERDAY:	FINIT$	CALL	TTCHK		; Check to make sure that LUN 13 is             ; KR001				;   assigned to TT0: or batch.                  ; KR001	DIR$	#TRUMP				;HERALD	JSR	PC,INI2				;Initialization	JSR	PC,MAIN				;MAIN LINE CODE	JSR	PC,CLOSE1			;First close file routine	JSR	PC,SUMM				;TOTAL ROUTINE	JSR	PC,CLOSE2			;Second close routine	EXST$S      	STATUS				;EXIT;	.END	SERINS           ^A
zkQÁ› 8$        	.TITLE	JRNSUB	BP2 SUBROUTINES TO READ A JOURNAL TAPE.IDENT	"V01.01B";;                         COPYRIGHT (C) 1979 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.;;;; MODULE:	JRNSUB;; VERSION:	V01.01B;; AUTHOR:	TONY SUKIENNIK;		LEE BARTON;; DATE:		20-JUN-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANA      TION;	------	----		------		-----------;	V1.1A	8-MAR-79	LBB		V1.1 - LBB001;						SPAWN MCR... WITH TASKNAME "REC";	V1.1B	20-JUN-79	LBB		LBB002 - MODIFY "ENCODE";;	.MCALL	WDBBK$,MAP$SLWDB::	WDBBK$	7,128.,,,128.,<WS.MAP!WS.WRT!WS.64B>				; WINDOW DESCRIPTOR BLOCK FOR THE SLOT REGIONMAPSLT::MAP$	SLWDB		; DPB FOR SLOT MAPPINGSLTMAP	==	SLWDB+W.NOFF	; USED TO MAP SLOTSLMPLN	==	SLWDB+W.NLEN	; USED TO MAP SLOT;;	GLOBAL DATA REQUIRED BY JOURNAL IO MODULES;SLOT	==	160000		; DATA TO BE MAPPED AT THIS LOCATIONSEQNUM	==	      SLOT+34		; RECORD SEQUENCE NUMBER ADDRESS IN SLOTVALSTR	==	SLOT+52		; ADDRESS OF VALIDATION STRING IN SLOT;;	BEGINNING OF BLOCK TO BE SENT TO ERROR PROCESSING TASK;RECNAM::.ASCII/REC /		; NAME OF "RECERR" PROGRAM TO BE RUN	;LBB001ERRTYP::.ASCII	/**/		; TYPE OF ERROR BEING REPORTED TO THE ERROR				; ERROR REPORTING TASKSTATUS::.WORD	0		; STATUS WORDRETRY::	.WORD	0		; RETRY COUNT FOR JOURNAL IOERRHIS::.BYTE	0,0		; ERROR HISTORY FOR JOURNAL IOSEQUEN::.WORD	0		; SEQUENCE NUMBER OF RECORD WE NOW EXPECTSLTLEN::.W      ORD	0		; LENGTH OF SLOT BEING READREMAIN::.WORD	0		; AMMOUNT OF SLOT LEFT TO READBLOCKL::.WORD	0		; DISK JOURNAL BLOCK NUMBER (LOW 16 BITS)BLOCKH::.WORD	0		; DISK JOURNAL BLOCK NUMBER (HIGH BITS)LBLOCK::.WORD	0		; DISK JOURNAL BLOCK NUMBER (LOW 16 BITS)HBLOCK::.WORD	0		; DISK JOURNAL BLOCK NUMBER (HIGH BITS)				; THE PRECEDING TWO WORDS ARE USED TO RELOAD				; THE DISK BLOCK NUMBER FOR SOME RETRY ATTEMPTDEVICE::.ASCII	/**/		; DEVICE NAMEUNITNM::.WORD	0		; UNIT NUMBERDISK::	.WORD	0		; TAPE OR DISK FLAG WORDI      OSTAT::.BLKW	2		; IO STATUS FOR VARIOUS QIO MACROSPRONUM::.WORD	0		; PROCESSOR NUMBERFILNUM::.WORD	0		; FILE NUMBERLASTIM::.BLKW	6		; CURRENT RECORD'S TIME KEPT HERETABCHG::.BYTE	0		; CODE FOR TAB				;LBB002CRCHG::	.BYTE	0		; CODE FOR <CR>				;LBB002ESCCHG::.BYTE	0		; CODE FOR ESCAPESPCCHG::.BYTE	0		; CODE FOR SPACE			;LBB002EXCLCH::.BYTE	0		; CODE FOR "!"				;LBB002RECEND	=	.		; MARK END OF RECORD			;LBB002RECERL	==	.-RECNAM	; LENGTH OF ERROR INFO TO BE PASSED TO 	;LBB001				; RECER					;LBB001;;	END OF BL      OCK TO BE SENT TO ERROR PROCESSING TASK;;;	CHARACTERS WHICH SHOULD BE REPLACED BY CODES BEFORE BLOCK IS	;LBB002;	SENT TO ERROR PROCESSING TASK (THESE CHARACTERS WOULD BE 	;LBB002;	DELETED OR REPLACED BY GMCR CALL)				;LBB002;TAB:	.BYTE	11		; TAB CHARACTER				;LBB002CR:	.BYTE	15		; CARRIAGE RETURN			;LBB002ESC:	.BYTE	33		; ESCAPE CHARACTER			;LBB002SPC:	.BYTE	40		; SPACE CHARACTER			;LBB002EXCL:	.BYTE	41		; EXCLAMATION POINT "!"			;LBB002RECER::	.RAD50	/MCR.../	; MCR... IS SPAWNED TO RUN "REC"	;LBB001READTP:      :.WORD	0		; TYPE OF READ TO PERFORM				; IO.RLB FOR MAGTAPE				; IO.RVB FOR DISKLSTSEQ::.WORD	0		; SEQUENCE NUMBER OF LAST RECORD READ;;;	BASIC+2 CALLABLE ROUTINE TO SETUP AND READ HEADER RECORD OF;	A JOURNAL TAPE OR DISK FILE.;;		PARAMETERS:;			DEVICE MNEMONIC;			UNIT NUMBER;			REGION ID;			STATUS WORD;;OPENIT::	MOV	@#$OTSV,-(SP)	; SAVE THE BASIC THING	MOV	#SLWDB,R0	; POINT TO THE WINDOW DESCRIPTOR BLOCK	MOV	@6(R5),W.NRID(R0); PUT IN THE CALLER'S REGION ID	MOV	#"SI,ERRTYP	; SHOLOG INITIALIALIZATION IS REQU      ESTING IO	MOV	@2(R5),R0	MOV	(R0),R0		; SET UP THE DEVICE MNEMONIC IN R0	MOV	@4(R5),R1	; SET UP THE UNIT NUMBER IN R1	MOV	#EX$SUC,@10(R5)	; SUCCESS STATUS BY DEFAULT	MOV	R0,DEVICE	; SAVE THE DEVICE NAME PERMANENTLY	MOV	R1,UNITNM	; SAVE THE UNIT NUMBER PERMANENTLY	CALL	$STJRN		; CALL THE JOURNAL INITIAL READ ROUTINE	BCC	OUT		; OK, HEADER RECORD IN BUFFER	MOV	#EX$SEV,@10(R5)	; SOMETHING VERY BAD HAPPENED, AND HAS ALREADY				; BEEN REPORTED TO THE USEROUT:	MOV	(SP)+,@#$OTSV	; PUT THE BASIC THING BACK	RETURN;;;	      BASIC+2 CALLABLE ROUTINE TO READ THE NEXT RECORD FROM A;	JOURNAL TAPE OR DISK FILE.;;		PARAMETERS:;			STATUS WORD;;		ENTRY POINTS:;;			GETREC - READ IN A LOG RECORD;			ANYREC - READ IN ANY TYPE OF RECORD;GETREC::	MOV	#1,R0		; READ ONLY THE NEXT LOG RECORD	BR	COMM		; BRANCH TO COMMON CODEANYREC::	MOV	#-1,R0		; READ ANY TYPE OF RECORD (BUT ONLY THE HEADER)COMM:	MOV	@#$OTSV,-(SP)	; SAVE THE BASIC THING	MOV	#"SO,ERRTYP	; SHOLOG NORMAL IO BEING REQUESTED	MOV	#EX$SUC,@2(R5)	; SUCCESS BY DEFAULT	CALL	JUREAD		; REA      D IT	BCC	OUT		; OK, LOG RECORD IS IN BUFFER	MOV	#EX$SEV,@2(R5)	; SOMETHING BAD HAPPENED	BR	OUT		; DONEENCODE::	MOV	R0,-(SP)	MOV	R1,-(SP)	; SAVE SOME REGISTERS	MOV	R2,-(SP)						;LBB002	MOV	R3,-(SP)	MOV	#TABCHG,R2	; CLEAR CODES BEGINNING WITH "TABCHG"	;LBB00210$:									;LBB002	CLRB	(R2)+		; CLEAR THE CHARACTER			;LBB002	CMPB	R2,#RECEND	; ALL CLEAR?				;LBB002	BLT	10$		; NO - DO THE REST			;LBB002;									;LBB002;	LOOK FOR 5 CHARACTERS WHICH DON'T APPEAR IN THE BLOCK.		;LBB002;	THESE WILL BE THE CODE CHARA      CTERS				;LBB002;									;LBB002	MOV	#42,R3		; START AT 42 FOR CHARACTER NOT IN STRING;LBB002	MOV	#TABCHG,R2	; R2 - POINTS TO THE CODES - THEY WILL	;LBB002				; BE FILLED IN ONE AT A TIME		;LBB00220$:	MOV	#ERRTYP,R0	; POINT TO THE STARTING ADDRESS		;LBB002				; (NO SUBSTITUTIONS NECESSARY IN 1ST	;LBB002				; 4 CHARACTERS - "RECER" TASK NAME)	;LBB002	MOV	#<TABCHG-ERRTYP>,R1 ; THIS MANY COMPARES		;LBB00230$:	CMPB	(R0)+,R3	; IS IT IN THE STRING?	BNE	40$		; NO	INC	R3		; YES, SEE IF NEXT ONE IS	BR	20$		; TRY AG      AIN40$:	SOB	R1,30$		; CHECK THEM ALL;									;LBB002;	FOUND A CHARACTER NOT USED IN THE BLOCK				;LBB002;									;LBB002	MOVB	R3,(R2)+	; SAVE THE CHARACTER			;LBB002	CMP	#RECEND,R2	; ALL CODE CHARACTERS FOUND?		;LBB002	BEQ	50$		; YES - SKIP OUT			;LBB002	INC	R3		; TRY NEXT CHARACTER	BR	20$		; DO IT;									;LBB002;	THE 5 CODE CHARACTERS HAVE BEEN FOUND.				;LBB002;	NOW SUBSTITUTE THEM INTO THE BLOCK FOR THE 5 ILLEGAL CHARACTERS.;LBB002;									;LBB00250$:	MOV	#TAB,R3		; POINT AT 1ST "ILLEGAL" CHARACTER	      ;LBB002	MOV	#TABCHG,R2	; POINT AT CORRESPONDING CODE CHARACTER	;LBB00260$:									;LBB002	MOV	#ERRTYP,R0	; POINT TO THE STARTING ADDRESS		;LBB002				; (NO SUBSTITUTIONS NECESSARY IN 1ST	;LBB002				; 4 CHARACTERS - "RECER" TASK NAME)	;LBB002	MOV	#<TABCHG-ERRTYP>,R1 ; THIS MANY COMPARES		;LBB00270$:	CMPB	(R0),(R3)	; IS CHARACTER ILLEGAL?			;LBB002	BNE	80$		; NO	MOVB	(R2),(R0)	; CHANGE IT TO THE CODED CHARACTER	;LBB00280$:	TSTB	(R0)+		; POINT TO NEXT CHARACTER		;LBB002	SOB	R1,70$;									;LBB002;	ALL SUBSTIT      UTIONS DONE FOR ONE CHARACTER			;LBB002;									;LBB002	TSTB	(R2)+		; LOOK AT NEXT CODE CHARACTER		;LBB002	CMP	#RECEND,R2	; ALL CODE CHARACTERS DONE?		;LBB002	BEQ	90$		; YES - SKIP OUT			;LBB002	TSTB	(R3)+		; NO - LOOK AT NEXT "ILLEGAL" CHARACTER	;LBB002	BR	60$		; AND SUBSTITUTE FOR IT			;LBB002;									;LBB002;	WHOLE BLOCK IS NOW ENCODED					;LBB002;									;LBB00290$:	MOV	(SP)+,R3	; RESTORE THE REGISTERS	MOV	(SP)+,R2						;LBB002	MOV	(SP)+,R1	MOV	(SP)+,R0	CALL	SPAWNM		; SPAWN THE ERROR PROCESSOR	MOV	R0      ,-(SP)	; RESAVE THE REGISTERS	MOV	R1,-(SP)	MOV	R2,-(SP)						;LBB002	MOV	R3,-(SP);									;LBB002;	NOW DECODE THE BLOCK BEFORE RETURNING TO CALLER			;LBB002;									;LBB002	MOV	#TAB,R2		; POINT AT 1ST "ILLEGAL" CHARACTER	;LBB002	MOV	#TABCHG,R3	; POINT AT CORRESPONDING CODE CHARACTER	;LBB002100$:									;LBB002	MOV	#ERRTYP,R0	; POINT TO THE STARTING ADDRESS		;LBB002				; (NO SUBSTITUTIONS NECESSARY IN 1ST	;LBB002				; 4 CHARACTERS - "RECER" TASK NAME)	;LBB002	MOV	#<TABCHG-ERRTYP>,R1 ; THIS MANY COMPARES		      ;LBB002110$:	CMPB	(R0),(R3)	; WAS CHARACTER CHANGED?		;LBB002	BNE	80$		; NO	MOVB	(R2),(R0)	; CHANGE IT BACK			;LBB002120$:	TSTB	(R0)+		; POINT TO NEXT CHARACTER		;LBB002	SOB	R1,110$;									;LBB002;	ALL REPLACEMENTS DONE FOR ONE CHARACTER				;LBB002;									;LBB002	TSTB	(R3)+		; LOOK AT NEXT CODE CHARACTER		;LBB002	CMP	#RECEND,R3	; ALL CODE CHARACTERS DONE?		;LBB002	BEQ	130$		; YES - SKIP OUT			;LBB002	TSTB	(R2)+		; NO - LOOK AT NEXT "ILLEGAL" CHARACTER	;LBB002	BR	100$		; AND CHANGE IT BACK			;LBB002;				   ¼   					;LBB002;	WHOLE BLOCK IS NOW DECODED					;LBB002;									;LBB002130$:									;LBB002	MOV	(SP)+,R3	; RESTORE REGISTERS	MOV	(SP)+,R2						;LBB002	MOV	(SP)+,R1	MOV	(SP)+,R0	RETURN	.END ¼          x_M“Á› 8$        1	!***************************************************************&	!								&	!								&	!		S H O L O G					&	!								&	!								&	!								&	!	Program:	SHOLOG					&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	01					 1.1A01&	!	Edit date:	20-Jun-79				 1.1A01&	!	Author(s):	Kenneth M. Reed				&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!				      				&	!		     COPYRIGHT (c) 1978 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 TRANSF      ERRED.				&	!								&	!   THE INFORMATION  IN  THIS SOFTWARE  IS SUBJECT TO CHANGE	&	!   WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS  A COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!				      				&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	01/02	06-Mar-78 KMR	Removed last vestiges of a file	&	!				  for passing data to second	&	!				  part.				&	!	01/03	23-Mar-78 KMR	Added the ability to pick out	&	!				  input and output log records.	&	!	01/04	23-Mar-78 KMR	Subscript out of range.		&	!				Removed references to the no	&	!				  longer use      d channel #5%.	&	!	01/05	27-Mar-78 KMR	Changed length of log type	 BL1-05&	!				  field in log record map from	 BL1-05&	!				  1 to 2.			 BL1-05&	!	01/06	27-Mar-78 KMR	Changed incorrect call to	 BL1-06&	!				  FN.DATE% to a call to FN.TIME% BL1-06&	!	01/07	27-Mar-78 KMR	Added additional check on Log	 BL1-07&	!				  Type to assure that only alpha BL1-07&	!				  are allowed.			 BL1-07&	!	01/08	25-Apr-78 KMR	Corrected inproper setup for	 BL1-08&	!				  spawn subroutine.		 BL1-08&	!	01/09	01-Aug-78 KMR	Changed       herald to V1.0 per spec. BL1-09&	!	01/10	31-Aug-78 KMR	Removed temporary comments on	 BL1-10&	!				  TRA file map.			 BL1-10&	!	V1.1A00	27-Feb-79 KMR	Added check for TT0:.		 1.1A00&	!	V1.1A01	20-Jun-79 KMR	Removed version number from 	 1.1A01&	!				  herald.			 1.1A01&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!******      *********************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Transaction Processor Definition File	&	!			  ([1,1]TPDEF.TPF)			&	!	    3		Transaction Definition File		&	!			  ([1,300]<tpname>.TRA)			&	!	    4		St      ation Definition File			&	!			  ([1,300]<tpname>.STA)			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								      &	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I       O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!	25000	ASK%		Prompting Function		&	!	25200	CHK.DATE%	Date Parsing Function		&	!	25250	CHK.TIME%	Time Parsing Function		&	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!      ***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!************************************************************      ***&901	\ DIMENSION #2%, TPDEF$(15%)	= 64%				&	!								&	! Dimension the virtual array we use to access the Transaction	&	!   Processor definition file.					&902	\ DIMENSION	WDB%(7%),					&			RDB%(7%)					&	!								&	! Dimension the parmeter blocks we need for creating region,	&	!   window and attaching to region.				&930	\ DIMENSION	ASK.HELP$(30%)					&	!								&	! Dimension the help text vector.				&950	\ MAP (TRA)		TRA.NAME$=6,				&				TRA.FLAG%,				&				TRA.MAX.MESSAGE$=1,			&				TRA.TRAN.WORK$=1,		      	&				TRA.SYST.WORK%,				!BL1-10&				TRA.SLACK$(10)=1,			!BL1-10&				TRA.NUM.FORMS$=1,			!BL1-10&				TRA.FORMS$(31)=64			!BL1-10&	!								&	!	Transaction map						&955	MAP (STA)	STA.NAME$=7,					&			STA.PRIORITY$=1,				&			STA.TYPE%,					&			STA.REPEAT%,					&			STA.MAIL.LENGTH%,				&			FILL$=920					&	!								&	!	ROOT STATION BUFFER MAP.				&960	\ MAP	(LOGREC)	ALL.TP%,				&				ALL.TRAN%,				&				ALL.SSTA%,				&				ALL.TYPE%,				&				FOUND.FIRST%,				&				START.DATE%,				&				START.TIME%,				&				END.DATE      %,				&				END.TIME%,				&				TP.NAME$	= 6,			&				TRANSACTION$	= 6,			&				STATION$	= 6,			&				LOG.TYPE$	= 2			!BL1-05&	!								&	! Initialize the record region.  This is used to pass all our	&	!   parameters to the second part of the program.		&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000			      			&	!								&	!	Set up standard default error trap			&	!								 1.1A00&	\ GO TO 1010	IF FN.CHECK.TT0% = -1%				!1.1A00&	!								 1.1A00&	!	If we are at TT0:, continue.				 1.1A00&	!								 1.1A00&	\ PRINT "? Directive error GETLUN:";T2900%	IF T2900% <> 1%	!1.1A00&	\ PRINT "? SHOLOG must be run from TT0: or batch"		!1.1A00&				IF T2900% = 1%				!1.1A00&	\ GO TO 32000							!1.1A00&	!								 1.1A00&	!	If the error was a directive error, print out its value.	1.1A00&	!	If it was not a directive error, tel      l the user the	 1.1A00&	!	  problem.						 1.1A00&	!	In any case, get out.					 1.1A00&1010	VER.EDIT.NUM$ = "V1.1A"						!1.1A00&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "SHOLOG	"; !	VER.EDIT.NUM$; "   ";	!		!V1.1A01&	\ PRINT								&	\ PRINT "Show Transaction Log Records"				&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ TRUE%			= -1%					&	\ FALSE%		=  0%					&	\ MAX.TP%		= 16%					&	\ FILE.NOT.FOUND%	= 5%					&	\ REC.NOT.FOUND%	= 15      5%					&	\ ALL$			= 'ALL'					&	\ ACCT$			= '[1,300]'				&	\ STA.TYPE.TIM%		= 0%					&	\ STA.TYPE.TST%		= 2%					&	\ STA.TYPE.MBX%		= 4%					&	\ STA.TYPE.LMA%		= 6%					&	\ STA.TYPE.LSL%		= 8%					&	\ STA.TYPE.BSU%		= 10%					&	\ STA.TYPE.BSL%		= 12%					&	\ ASK.HELP$(1%) = 'Enter the name of the Transaction Processor'	&				+ ' to select on.  Enter ALL if'	&	\ ASK.HELP$(2%) = '  you want to select on all Transaction'	&				+ ' Processors.'			&	\ H1% = 1%							&	\ N1% = 2%							&	\ H2% = -1%							&	\ N2% =       0%							&	\ ASK.HELP$(3%) = 'Enter the name of the transaction you wish'	&				+ ' to select on.  Enter ALL if'	&	\ ASK.HELP$(4%) = '  you want to select on all transactions.'	&	\ H3% = 3%							&	\ N3% = 2%							&	\ ASK.HELP$(5%) = 'The transaction name you entered is not'	&				+ ' defined for this Transaction'	&	\ ASK.HELP$(6%) = '  Processor.  Enter YES if you wish to sel'	&				+ 'ect on this transacation anyway.'	&	\ H4% = 5%							&	\ N4% = 2%							&	\ ASK.HELP$(7%) = 'Enter the name of the source s      tation you'	&				+ ' wish to select on.  Enter ALL'	&	\ ASK.HELP$(8%) = '  if you wish to select on all source'	&				+ ' stations.'				&	\ H5% = 7%							&	\ N5% = 2%							&	\ ASK.HELP$(9%) = 'The source station name you entered is not'	&				+ ' defined for this Transaction'	&	\ ASK.HELP$(10%) = '  Processor.  Enter YES if you wish to'	&				+ ' select on this source station'	&	\ ASK.HELP$(11%) = '  anyway.'					&	\ H6% = 9%							&	\ N6% = 3%							&	\ ASK.HELP$(12%) = 'Enter the date of the first record y      ou'	&				+ ' wish to select (DD-MMM-YY) or'	&	\ ASK.HELP$(13%) = '  <CR> if you wish to start at the first'	&				+ ' record.'				&	\ H7% = 12%							&	\ N7% = 2%							&	\ ASK.HELP$(14%) = 'Enter the time of the first record you'	&				+ ' wish to select (HH:MM) or <CR>'	&	\ ASK.HELP$(15%) = '  if you wish to start with the first '	&				+ 'record on the start date.'		&	\ H8% = 14%							&	\ N8% = 2%							&	\ ASK.HELP$(16%) = 'Enter last date you wish to see log '	&				+ 'records from (DD-MMM-YY) or <CR>'	&	      \ ASK.HELP$(17%) = '  if you wish to see all records after the'	&				+ ' start date/time.'			&	\ H9% = 16%							&	\ N9% = 2%							&	\ ASK.HELP$(18%) = 'Enter the last time you wish to see on the'	&				+ ' specified end date (HH:MM) or'	&	\ ASK.HELP$(19%) = '  <CR> if you want all records on the end'	&				+ ' date.'				&	\ H10% = 18%							&	\ N10% = 2%							&	\ ASK.HELP$(20%) = 'Enter one of the following:'		&	\ ASK.HELP$(21%) = TAB(8%) + '1) IN if you wish to dump input'	&				+ ' message log records.'		      &	\ ASK.HELP$(22%) = TAB(8%) + '2) OUT if you wish to dump '	&				+ 'output message log records.'		&	\ ASK.HELP$(23%) = TAB(8%) + '3) ALL if you wish to dump all '	&				+ 'log records.'			&	\ ASK.HELP$(24%) = TAB(8%) + '4) An alphabetic character '	&				+ 'representing the type of the log'	&	\ ASK.HELP$(25%) = TAB(12%) + 'of the log records you want '	&				+ 'dumped.'				&	\ H11% = 20%							&	\ N11% = 6%							&	!								&	! Initialize some of the variables we will use.			&1032	!$**************************      ************************************&	!								&	!								&	!	C R E A T E    T H E    P A R A M E T E R		&	!								&	!	  R E G I O N    A N D    W I N D O W			&	!								&	!	    A N D    A T T A C H				&	!								&	!								&	!***************************************************************&1035	\ RDB%(1%)	= 129%						&	\ CALL ASTO50('SHO', TEMP%, DUMMY%)				&	\ RDB%(2%)	= TEMP%						&	\ CALL ASTO50('PRM', TEMP%, DUMMY%)				&	\ RDB%(3%)	= TEMP%						&	\ CALL ASTO50('GEN', TEMP%, DUMMY%)				&	\ RDB%(4%)	= TE      MP%						&	\ RDB%(5%)	= 0%						&	\ RDB%(6%)	= 8% + 2% + 1%					&	\ RDB%(7%)	= 0%						&	\ CALL CRRG BY REF (RDB%(), TEMP%)				&	\ CALL ATRG BY REF (RDB%(), TEMP%)				&	\ WDB%(0%)	= SWAP%(7%)					&	\ WDB%(2%)	= 128%						&	\ WDB%(3%)	= RDB%(0%)					&	\ WDB%(4%)	= 0%						&	\ WDB%(5%)	= 128%						&	\ WDB%(6%)	= 256% + 128% + 2%				&	\ CALL CRAW BY REF (WDB%(), TEMP%)				&	!								&	! Fill the region definition block with the following infor-	&	!   mation:							&	! Region should be 129 32W blocks long.				&      	! Region should be named 'SHOPRM'.				&	! Region should be created in GEN partition.			&	! Region should have Delete access on attach, write access on	&	!   attach and read access on attach.				&	! Region should allow all types of access.			&	! Create the region.						&	! Attach to the region.						&	! Fill the window defintion block as follows:			&	! Map region starting at ASR 7 (Adresses starting at 16000).	&	! Make the size of the window 128 32w blocks (the whole of the	&	!   region that we just attache      d to).				&	! Get the region ID from the RDB.				&	! Indicate that there is no offset into region (Window starts	&	!   at start of region.						&	! Map all of the region.					&	! Indicate that we can align on 32w boudaries, Window will	&	!   be mapped by a Create Address Window directive and that	&	!   we should map with write access.				&	! Create the address window.					&1050	!$**************************************************************&	!								&	!								&	!	G E T    T H E    T R A N S A C T I O N		      	&	!								&	!		P R O C E S S O R    N A M E			&	!								&	!								&	!***************************************************************&1060	\ OPEN '[1,1]TPDEF.TPF' FOR INPUT AS FILE #2%,			&		ORGANIZATION VIRTUAL,					&		ACCESS READ,						&		ALLOW READ						&	\ VERIFY.TP% = TRUE%						&	!								&	! Open the Transaction Processor Definition file in the virtual	&	!   array mode for read access only.  Allow others to read	&	!   while the file is in use.					&	! Indicate that we should verify all transaction       processor	&	!   names entered by the user (we found the file).		&1070	\ ON FN.ASK% (	'Transaction processor name',			&			ALL$, 'A', 6%, H1%, N1% )			&		GO TO	1070, 32010, 1080				&	!								&	! Ask the user for the name of the transaction processor they	&	!   wish to list the log records for.				&	!	Branch on <ESC>, ^Z, Other.				&1080	\ TP.NAME$ = ASK.CVT$						&	\ FILE.NAME$ = ACCT$ + EDIT$( TP.NAME$, 2% )			&	\ IF	TP.NAME$ = ALL$						&		THEN	ALL.TP%, ALL.TRAN%, ALL.SSTA% = TRUE%		&			\ GO TO 4010					&      		ELSE	ALL.TP% = FALSE%				&			\ GO TO 2010	IF NOT VERIFY.TP%		&			\ GO TO 2010					&			    IF LEFT( TPDEF$( I% ), 6% ) = TP.NAME$	&			      FOR I% = 0% TO MAX.TP%-1%			&			\ PRINT '% '; TP.NAME$; ' is not an ';		&			    'established Transaction Processor.'	&			\ ON FN.ASK%(					&			    'Should this name be accepted anyway',	&			      'NO', 'Y', 3%, H2%, N2% )			&				GO TO	1070, 32010, 2010, 1070		&	!								&	! Assume that the name entered will be used and save it.	&	! Construct the basic filename for the       Transaction Definition	&	!   and Station Definition files.				&	! If the user typed the default					&	!	Then set the flags to indicate that all TP's,		&	!		transactions and source stations will be	&	!		accepted as valid.				&	!		Go get start date.				&	!	Else set the ALL.TP flag to false.			&	!		If we did not find the TPDEF.TPF file, assume	&	!		  the name is a valid one.			&	!		See if we can find a match for the entered TP	&	!		  name in the TPDEF.TPF file.  If so, skip.	&	!		If no match, tell the user we       could not find	&	!		  the requested TP.				&	!		Ask the user if he wishes to use it anyway.	&	!		  Branch on <ESC>, ^Z, YES, NO.			&2000	!$**************************************************************&	!								&	!								&	!	G E T    T H E    T R A N S A C T I O N    N A M E	&	!								&	!								&	!***************************************************************&2010	\ CLOSE #3%							&	\ OPEN FILE.NAME$ + '.TRA' FOR INPUT AS FILE #3%,		&		ORGANIZATION INDEXED VARIABLE,				&		ACCESS READ, ALLOW READ, MAP       TRA,			&		PRIMARY KEY TRA.NAME$					&	\ VERIFY.TRANSACTION% = TRUE%					&	!								&	! Close any files that may be open on channel 3.  This will	&	!   assure that we get back the buffer space.			&	! Open the appropriate transaction definition file on channel 3.&	!   The file is indexed and has fixed length records.		&	!   We only want to read it.  We don't want anyone to change	&	!   it once we have it and the map TRA shows the structure.	&	!   The primary key will be the Transaction name.		&	! Indicate tha      t we should, indeed, verify the transactions	&	!   entered by the user (this means we found the .TRA file).	&2020	\ ON FN.ASK%(	'Transaction name', ALL$, 'A', 6%, H3%, N3% )	&		GO TO	1070, 32010, 2030				&	!								&	! Ask the user for the name of the transaction for which he	&	!   wants to show the log records.				&	!	Branch on	<ESC>, ^Z, Other.			&2030	\ TRANSACTION$ = ASK.CVT$					&	\ IF TRANSACTION$ = ALL$					&	  THEN	ALL.TRAN% = TRUE%					&		\ GO TO 3010						&	  ELSE	ALL.TRAN% = FALSE%					&		\ GO TO       3010	IF NOT VERIFY.TRANSACTION%		&		\ FIND #3%, KEY #0% EQ TRANSACTION$			&		\ GO TO 3010						&	!								&	! Save the name the user entered in the slot TRANSACTION$.	&	! If the user typed ALL:					&	! Then	Set the flag to indicate we will accept all		&	!	  transactions.						&	!	Go check on source stations.				&	! Else	Clear the ALL flag					&	!	Skip the validation if we could not find the .TRA file.	&	!	Try to find the record. If not found, we will trap.	&	!	If we got here, we found the record.  Go get s      ource	&	!	  stations.						&2040	\ ON FN.ASK%( 'Should this transaction name be accepted',	&			'NO', 'Y', 3%, H4%, N4% )			&		GO TO	2020, 32010, 3010, 2020				&	!								&	! We got here if we trapped on the FIND above.  This means we	&	!    could not find the transaction that the user requested.	&	!    Therefore, ask the user if he really wants the name he	&	!    entered. Branch on <ESC>, ^Z, YES, NO.			&3000	!$**************************************************************&	!								&	!								&	!	G E T          T H E    S O U R C E    S T A T I O N		&	!								&	!			N A M E					&	!								&	!								&	!***************************************************************&3010	\ CLOSE #4%							&	\ OPEN FILE.NAME$ + '.STA' FOR INPUT AS FILE #4%,		&		ORGANIZATION INDEXED VARIABLE,				&		ACCESS READ, ALLOW READ, MAP STA,			&		PRIMARY KEY STA.NAME$,					&		ALTERNATE KEY STA.PRIORITY$ CHANGES DUPLICATES		&	\ VERIFY.STATION% = TRUE%					&	!								&	! Close any file that may be open on channel 4 to assure that	&	!   we retrie      ve the buffer space it may have taken up.		&	! Open the station definition file for the user-specified	&	!   transaction processor.					&	! Indicate that we should verify any station names that the	&	!   user enters. (This means that we found the .STA file.)	&3020	\ ON FN.ASK%( 'Source Station', ALL$, 'A', 6%, H5%, N5% )	&		GO TO	2010, 32010, 3030				!BL1-05&	!								&	! Prompt the user for the name of the source station he wishes	&	!   to select on. Branch on <ESC>, ^Z, Other.			&3030	\ STATION$ = ASK.CVT      $						&	\ IF STATION$ = ALL$						&	  THEN	ALL.SSTA% = TRUE%					&		\ GO TO 4010						&	  ELSE	ALL.SSTA% = FALSE%					&		\ GO TO 4010	IF NOT VERIFY.STATION%			&		\ TEST.STATION$ = '\' + STATION$			&	!								&	! Save the response in STATION$.				&	! If the user type ALL						&	! Then	Set the flag to indicate that we will select all source	&	!	  stations.						&	!	Go get the start date.					&	! Else	Set the flag to indicate that we are selecting on only	&	!	  one station.						&	!	Skip the validation if we       couldn't find the .STA file.	&	!	Append a backslash to the name so we can search for	&	!	  terminal stations.					&3040	\ GET #4%, KEY #0% EQ STATION$					&	\ GO TO 3060							&	!								&	! Attempt to find the station specified by the user.  We will	&	!   trap to the following statement if the search fails.	&	! The search was successful.  Go check to assure that this	&	!   type of station can initiate transactions.			&3050	\ IF LEFT( TEST.STATION$, 1% ) = '\'				&	  THEN	TEST.STATION$ = ' ' + RIGHT( TEST.S      TATION$, 2% )	&		\ GO TO 3040						&	  ELSE	ON FN.ASK%( 'Should this station name be accepted',	&				'NO', 'Y', 3%, H6%, N6% )		&			GO TO	3020, 32010, 3060, 3020			&	!								&	! We could not find the record.  If we just finished searching	&	!   the terminal stations					&	! Then	set to search the non-terminal stations.		&	!	Go do the search.					&	! Else	ask the user if he really wants to include this station.&	!	  Branch on <ESC>, ^Z, YES, NO.				&3060	\ GO TO 4010	IF	STA.TYPE% = STA.TYPE.TIM%		&			OR	STA      .TYPE% = STA.TYPE.TST%		&			OR	STA.TYPE% = STA.TYPE.LSL%		&			OR	STA.TYPE% = STA.TYPE.BSL%		&	\ PRINT '% '; STATION$; ' cannot initiate transactions'		&	\ GO TO 3020							&	!								&	! Proceed to the next step if the station type is terminal,	&	!   TST, link slave or batch slave.				&	! Tell the user that this station cannot initiate any trans-	&	!   actions.							&	! Reprompt for station name.					&4000	!$**************************************************************&	!								&	!								&	!	G E T    T       H E    S T A R T    D A T E			&	!								&	!		A N D    S T A R T    T I M E			&	!								&	!								&	!***************************************************************&4010	\ DEFAULT$ = 'FIRST MESSAGE'					&	\ ON FN.ASK%( 'Starting date', DEFAULT$, '', 0%, H7%, N7% )	&		GO TO	4015, 32010, 4020				&	!								&	! Set the default as indicated.					&	! Ask the user for the desired starting date.			&4015	\ GO TO 1070	IF ALL.TP%					&	\ GO TO 3010							!BL1-05&	!								&	! If we are accepting all TP's, go back t      o the Transaction	&	!   Processor prompt.						&	! If we are not accepting all TP's, then just back up.		&4020	\ IF ASK.CVT$ = EDIT$( DEFAULT$, 2% )				&	  THEN	FOUND.FIRST% = TRUE%					&		\ START.DATE% = 0%					&		\ GO TO 5010						&	  ELSE	GO TO 4010 IF NOT FN.CHK.DATE%( ASK.CVT$ )		&		\ START.DATE%	= (YEAR% - 70%) * 1000%			&				+ (MONTH% - 1%) * 31%			&				+ DAY%					&	!								&	! If the default was typed:					&	! Then	Say we have found the first (we will accept any date	&	!	  before the end date if th      is is set).			&	!	Generate a start date that will allow any end date.	&	!	Go get the end date.					&	! Else	Reprompt if the date was not of the valid format.	&	!	Calculate a characteristic that we will use for check-	&	!	  ing the end date.					&4030	\ DEFAULT$ = '00:00'						&	\ ON FN.ASK%( 'Starting time', DEFAULT$, '', 0%, H8%, N8% )	&		GO TO	4010, 32010, 4040				&	!								&	! Set the default to the first time in the day.			&	! Ask the user what he wants the start time to be.		&	!	Branch on <ESC>, ^Z, O      ther.				&4040	\ IF ASK.CVT$ = DEFAULT$					&	  THEN	START.TIME% = 0%					&		\ GO TO 4050						&	  ELSE	GO TO 4030	IF NOT FN.CHK.TIME%( ASK.CVT$ )		&		\ START.TIME%	= HOUR% * 60%				&				+ MINUTE%				&	!								&	! If the user's response was the default value:			&	! Then	Set the starting time to zero.				&	!	Go get the ending date.					&	! Else	Reprompt if the user's response was not a valid time.	&	!	Calculate a number that can be used to check the end-	&	!	  ing time.						&4050	\ FOUND.FIRST% = FALSE%			      			&	!								&	! Make sure that we will look until we find the first record	&	!  that is at or later than the start time.			&5000	!$**************************************************************&	!								&	!								&	!	G E T    E N D I N G    D A T E    A N D    T I M E	&	!								&	!								&	!***************************************************************&5010	\ DEFAULT$ = 'LAST MESSAGE'					&	\ ON FN.ASK%( 'Ending date', DEFAULT$, '', 0%, H9%, N9% )	&		GO TO	4010, 32010, 5020				&	!								&	! Set the       default to LAST MESSAGE.				&	! Ask the user for the desired last date.			&	!	Branch on <ESC>, ^Z, Other.				&5020	\ IF ASK.CVT$ = EDIT$( DEFAULT$, 2% )				&	  THEN	END.DATE% = 32767%					&		\ GO TO 5050						&	  ELSE	GO TO 5010 IF NOT FN.CHK.DATE%( ASK.CVT$ )		&		\ END.DATE%	= (YEAR% - 70%) * 1000%			&				+ (MONTH% - 1%) * 31%			&				+ DAY%					&		\ GO TO 5030	IF END.DATE% >= START.DATE%		&		\ PRINT 'End date must not be less than Start date'	&		\ GO TO 5010						&	!								&	! If the response equals the d      efault:				&	! Then	Set end date to largest date.				&	!	Go set largest time and continue.			&	! Else	Reprompt if the date is not in valid format.		&	!	Calculate the characteristic number for the date.	&	!	Skip further checks if the end date is greater than	&	!	  or equal to the start date.				&	!	Tell the user his dates are not of the right magnitude.	&	!	Go reprompt.						&5030	\ DEFAULT$ = '23:59'						&	\ ON FN.ASK%( 'Ending time', DEFAULT$, '', 0%, H10%, N10% )	&		GO TO	5010, 32010, 5040				&	!								      &	! Set the default to the largest time in the day.		&	! Ask the user for the ending time he wants.			&	!	Branch on <ESC>, ^Z, Other.				&5040	\ GO TO 5050	IF ASK.CVT$ = DEFAULT$				&	\ GO TO 5030	IF NOT FN.CHK.TIME%( ASK.CVT$ )			!BL1-06&	\ END.TIME%	= HOUR% * 60%					&			+ MINUTE%					&	\ GO TO 6010	IF END.DATE% > START.DATE%			&	\ GO TO 6010	IF END.TIME% >= START.TIME%			&	\ PRINT 'If starting and ending dates are the same,'		&	\ PRINT ' then end time must not be less than start time.'	&	\ GO TO	5030				      			&	!								&	! Go set the maximum time if the user responded with the	&	!   default.							&	! Reprompt if the time was not a valid time.			&	! Calculate the characteristic value of the time.		&	! Skip further checks if the end date is greater than the	&	!   start date.							&	! Skip further checks if the end time is greater than or equal	&	!   to the start time (if we get here we know the start and	&	!   end dates are the same).					&	! Tell the user he made a mistake.				&	! Go reprompt.							&5050	\       END.TIME% = 32767%						&	!								&	! Set up the maximum end time.					&6000	!$**************************************************************&	!								&	!								&	!	G E T    T H E    D E S I R E D    L O G    T Y P E	&	!								&	!								&	!***************************************************************&6010	\ ON FN.ASK%( 'Log Type', ALL$, 'A', 3%, H11%, N11% )		&		GO TO	5010, 32010, 6020				&	!								&	! Ask the user for the type of log records he wishes to select	&	!   on.								&	!	Branch on <ESC>      , ^Z, Other.				&6020	\ IF LEN(ASK.CVT$) = 3%						&	  THEN	IF ASK.CVT$ = ALL$					&		THEN	ALL.TYPE% = TRUE%				&		ELSE	GO TO 6010	IF ASK.CVT$ <> 'OUT'		&			\ ALL.TYPE% = FALSE%				&			\ LOG.TYPE$ = 'AO'				&	  ELSE	ALL.TYPE% = FALSE%					&		\ IF LEN(ASK.CVT$) = 1%					&		  THEN	GO TO 6010	IF ASCII( ASK.CVT$ ) < 65%	!BL1-07&					OR ASCII( ASK.CVT$ ) > 90%	!BL1-07&			\ LOG.TYPE$ = ASK.CVT$ + CHR$(0%)		&		  ELSE	GO TO 6010	IF ASK.CVT$ <> 'IN'		&			\ LOG.TYPE$ = 'AI'				&	!								&	! If the length of the stri      ng is three characters, it must be	&	!   either ALL or OUT. So, if the length is three:		&	! Then:	If the response is ALL:					&	!	Then: Indicate that we will select all log types.	&	!	Else: Reprompt if it is not OUT.			&	!		Clear the ALL.TYPE% flag.			&	!		Set the log type that we will select on.	&	! Else:	Set the ALL.TYPE% to false.				&	!	If the length of the response is one:			&	!	Then:	Reprompt if the character is not an alpha.	 BL1-07&	!		Set the log type equal to the single character	&	!		  plus a NU      LL.					&	!	Else:	Reprompt if the response is not IN.		&	!		Set the log type to AI.				&6030	\ BREED.TASK$ = 'DCL...'					&	\ BREED.COMMAND$ = 'RUN/TASK:SHOLOG $SHOLG1'			&	\ BREED.RETURN%,						&	  BREED.DEBUG%,							&	  BREED.NOSPAWN%	= FALSE%				&	\ GOSUB 20000							&	\ GO TO 32010							&	!								&	! Set the task we wish to SPAWN as DCL...			&	! Make the command line to run SHOLG1.				&	! Make sure we don't have to handle any errors (let the sub-	&	!   routine handle them).					&	! Call the SPAWN sub      routine.					&	! Go finish up.							&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ RESUME 2040	IF ERR = REC.NOT.FOUND% AND ERL = 2030		&	\ RESUME 3050	IF ERR = REC.NOT.FOUND% AND ERL = 3040		&	\ GO TO 19900	IF ERR <> FILE.NOT.FOUND%			&	\ RESUME 19500	IF ERL = 1060					&	\ RESUME 19510	IF ERL = 2010					&	\ RESUME       19520	IF ERL = 3010					&	\ GO TO 19900							&	!								&	! Handle the case where we cannot find the record we want in	&	!   the transaction definition file or the station definition	&	!   file.							&	! Skip further checking if the error is not FILE NOT FOUND.	&	! If we couldn't find the TPDEF.TPF file, go handle.		&	! Handle the absence of the .TRA file.				&	! Handle the absence of the .STA file.				&	! Other wise, get out.						&19500	\ PRINT 'TPDEF.TPF file is not defined on this system.'		&	\ PRINT       '  Transaction Processor names will NOT be verified.'	&	\ VERIFY.TP% = FALSE%						&	\ GO TO 1070							&	!								&	! Tell the user that the Transaction Processor Definition file	&	!   does not exist on this system.				&	! Tell the user that we will not verify the Transaction Proces-	&	!   sor names that he enters.					&	! Set the flag so that WE will know not to check the TP names.	&	! Go ask the user for a Transaction Processor name.		&19510	\ PRINT FILE.NAME$; '.TRA file is not present on this '		&				      	+ 'system.'			&	\ PRINT '  Transaction names will NOT be verified.'		&	\ VERIFY.TRANSACTION% = FALSE%					&	\ GO TO 2020							&	!								&	! Tell the user that the .TRA file for the Transaction Proces-	&	!   sor he selected is not present on this system.		&	! Tell the user that we will, therefore, not verify the Trans-	&	!   action names he may enter.					&	! Set the flag so that WE will remember not to check Trans-	&	!   action names.						&	! Go ask the user for Transaction name.				&19520	\ PRINT FILE.      NAME$; '.STA file is not present on this '		&					+ 'system.'			&	\ PRINT '  Source Station names will NOT be verified.'		&	\ VERIFY.STATION% = FALSE%					&	\ GO TO 3020							&	!								&	! Tell the user that the .STA file for the Transaction Proces-	&	!   sor he selected is not present on this system.		&	! Tell the user that we will, therefore, not verify the Source	&	!   Station names he may enter.					&	! Set the flag so that WE will remember not to do these checks.	&	! Go ask the user of a Source Stati      on name.			&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ CLOSE T% FOR T% = 2% TO 4%					&	!								&	! Close the files we may have open.		   ô   		&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END ô          x7L“Á› 8$        1	!***************************************************************&	!								&	!								&	!	S H O L G 1    -    S E C O N D    P A R T    O F	&	!								&	!		S H O L O G    U T I L I T Y			&	!								&	!								&	!								&	!	Program:	SHOLG1					&	!	Version:	V1.0C					&	!	Edit level:	00					 V1.0C0&	!	Edit date:	21-Feb-79				 V1.0C0&	!	Author(s):	Kenneth M. Reed				&	!								&	!***************************************************************&11	!**************************************************************      *&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 PE      RSON.   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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&2      0	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	01/02	06-Mar-78 KMR	Final (I hope) changes so we	&	!				  can use tape routines.	&	!	01/03	27-Mar-78 KMR	Changed length of log type	 BL1-03&	!				  field in log record map from	 BL1-03&	!				  1 to 2.			 BL1-03&	!	01/04	01-May-78       KMR	Added code to unpack log records BL1-04&	!				  within the log record buffer.	 BL1-04&	!	01/05	31-Aug-78 KMR	Incorrect branch when finished	 BL1-05&	!				  corrected.			 BL1-05&	!	V1.0C0	21-Feb-79 KMR	Corrected the printing of the	 V1.0C0&	!				  last line of user date.	 V1.0C0&	!				  (SPR #T226777).		 V1.0C0&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C       R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    6		RMS output file				&	!	    7		Print file.				&	!								&	!***************************************************************&400	!$****************      **********************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!							      	&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!	CONVER		Macro subroutine to convert a double	&	!			  word integer to 3 base 1000 'digits'.	&	!	GETREC		Macro subroutine to get the next rec-	&	!			  from the logging device.		&	!	OPENIT		Macro subroutine to open the requested	&	!			  device as the logging device.		&	!	10000		Create a record for the output RMS file.&	!	11000		Assure that the next       log record is at	 BL1-04&	!			  the start of the mapped area.		 BL1-04&	!	14000		Create and output a print record.	&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!	25000	ASK%		Prompting Function		&	!								&	!								&	!      ***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&810	\ COMMON	START$	= 14%,					&			TRANSACTION.ID%,				&			ID1%,						&			ID2%						&	!								&	! Set up the common we need to assure that our calls to the	&	!   macro routines will find enough contiguous space.		&900	!$**      ************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIMENSION	MONTH$( 12% ), ASK.HELP$(15%)			&	\ DIMENSION	RDB%(7      %), WDB%(7%)				&	!								&	! Dimension the month name array.				&	! Dimension the help text array.				&	! Dimension the Region and Window descriptor blocks.		&950	\ MAP	(LOGREC)	LOG.RECORD$	= 8192%	!    0	!	!BL1-04&	!								 BL1-04&	\ MAP	(LOGREC)	REC.TYPE%,				&				REC.TPNAME$		= 6%,		&				REC.TRANSACTION$	= 6%,		&				FILL%,					&				REC.LOGTYPE$		= 2%,		&				FILL$			= 12%,		&				REC.TRANSID$		= 4%,		&				REC.DAY%,				&				REC.HOUR%,				&				REC.MINUTE%,				&				REC.SECOND%,				&				FILL$			= 4%,		&				      REC.DATA.LENGTH%,			&				REC.STATION$		= 6%,		&				REC.LOGGING$		= 6%,		&				REC.YEAR%,				&				REC.MONTH%,				&				REC.DATA$		= 8128%		&	!								&	\ MAP	(LOGREC)	IN.ALL.TP%,				&				IN.ALL.TRAN%,				&				IN.ALL.SSTA%,				&				IN.ALL.TYPE%,				&				IN.FOUND.FIRST%,			&				IN.START.DATE%,				&				IN.START.TIME%,				&				IN.END.DATE%,				&				IN.END.TIME%,				&				IN.TP.NAME$	= 6%,			&				IN.TRANSACTION$	= 6%,			&				IN.STATION$	= 6%,			&				IN.LOG.TYPE$	= 2%			!BL1-03&	!								&	\ MAP	(LOGREC)	TAPE.TITLE$	      = 12%,			&				TAPE.YEAR%,				&				TAPE.MONTH%,				&				TAPE.DAY%,				&				TAPE.HOUR%,				&				TAPE.MINUTE%,				&				TAPE.SECOND%,				&				FILL%(2%),				&				TAPE.SEQUENCE%				&	!								&	! Map out the area where we will get our log records in.	&	! Use the same region to get our parameters from the Dialogue	&	!   program.							&	! Use the same region to map out the tape header that OPENIT	&	!   will pass back if it is successful aaccessing the tape.	&955	\ MAP	(DATFIL)	TPNAME$			= 6%,		&				TRANSACTION.NAM      E$	= 6%,		&				TRANSACTION.INSTANCE$	= 6%,		&				LOGTYPE$		= 2%,		&				SOURCE.STATION.NAME$	= 6%,		&				LOGGING.STATION.NAME$	= 6%,		&				YEAR%,					&				MONTH%,					&				DAY%,					&				HOUR%,					&				MINUTE%,				&				SECOND%,				&				USER.DATA.LENGTH%,			&				USER.DATA$		= 8128%		&	!								&	! Map out the RMS file that we provide for the user.		&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	      !***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	VER.EDIT.NUM$ = "V1.0C"						!V1.0C0&	!								&	!	Assign the current version/edit level #			&1030	\ TRUE%		= -1%						&	\ FALSE%	=  0%						&	\ EXIT%		= -1%						&	\ ILLEGAL.NUMBER% = 52%						&	\ NONE$		= 'NONE'					&	\ RMS.CH%	=  6%						&	\ PRINT.CH%	=  7%						&	\ REC.ACCESS%,							&	  REC.USED%	=  0%						&	\ MONTH$(1%)	= 'Jan'						&	\ MON      TH$(2%)	= 'Feb'						&	\ MONTH$(3%)	= 'Mar'						&	\ MONTH$(4%)	= 'Apr'						&	\ MONTH$(5%)	= 'May'						&	\ MONTH$(6%)	= 'Jun'						&	\ MONTH$(7%)	= 'Jul'						&	\ MONTH$(8%)	= 'Aug'						&	\ MONTH$(9%)	= 'Sep'						&	\ MONTH$(10%)	= 'Oct'						&	\ MONTH$(11%)	= 'Nov'						&	\ MONTH$(12%)	= 'Dec'						&	\ ASK.HELP$(1%) = 'If you wish to create a printable file '	&				+ 'from the selected records, type'	&	\ ASK.HELP$(2%) = '  the desired filename for this file.  If '	&				+ 'you do not wish to create a prin      t-'	&	\ ASK.HELP$(3%) = '  able file, type NONE.  <CR> will cause '	&				+ 'the output to be directed to the'	&	\ ASK.HELP$(4%) = '  line printer.'				&	\ H1% = 1%							&	\ N1% = 4%							&	\ ASK.HELP$(5%) = 'If you wish to create an RMS data file '	&				+ 'from the selected records, type'	&	\ ASK.HELP$(6%) = '  the desired filename for this file.  If '	&				+ 'no such file is desired, type <CR>'	&	\ ASK.HELP$(7%) = '  for the default of NONE.'			&	\ H2% = 5%							&	\ N2% = 3%							&	\ ASK.HELP$(8%) = 'E      nter the name of the device and/or file '	&				+ 'which contains the journal records'	&	\ ASK.HELP$(9%) = '  to select from.  When no more records are'	&				+ ' to be selected, type <CR> for the'	&	\ ASK.HELP$(10%) = '  default of DONE.'				&	\ H3% = 8%							&	\ N3% = 3%							&	\ ASK.HELP$(11%) = 'If this volume is the correct one, type '	&				+ 'YES.  If not, type NO.'		&	\ H4% = 11%							&	\ N4% = 1%							&	!								&	! Set up some reference values.					&1040	!$****************************************      **********************&	!								&	!								&	!	A T T A C H    T O    T H E    P A R A M E T E R	&	!								&	!			W I N D O W				&	!								&	!								&	!***************************************************************&1050	\ RDB%(1%)	= 128%						&	\ CALL ASTO50('SHO', TEMP%, DUMMY%)				&	\ RDB%(2%)	= TEMP%						&	\ CALL ASTO50('PRM', TEMP%, DUMMY%)				&	\ RDB%(3%)	= TEMP%						&	\ CALL ASTO50('GEN', TEMP%, DUMMY%)				&	\ RDB%(4%)	= TEMP%						&	\ RDB%(5%)	= 0%						&	\ RDB%(6%)	= 8% + 2% + 1%					&	\ RDB%(7      %)	= 0%						&	\ CALL ATRG BY REF (RDB%(), TEMP%)				&	\ WDB%(0%)	= SWAP%(7%)					&	\ WDB%(2%)	= 128%						&	\ WDB%(3%)	= RDB%(0%)					&	\ WDB%(4%)	= 0%						&	\ WDB%(5%)	= 128%						&	\ WDB%(6%)	= 256% + 128% + 2%				&	\ CALL CRAW BY REF (WDB%(), TEMP%)				&	!								&	! Fill the region definition block with the following infor-	&	!   mation:							&	! Region should be 128 32W blocks long.				&	! Region should be named 'SHOPRM'.				&	! Region should be created in GEN partition.			&	! Region should have Del      ete access on attach, write access on	&	!   attach and read access on attach.				&	! Region should allow all types of access.			&	! Attach to the region.						&	! Fill the window defintion block as follows:			&	! Map region starting at ASR 7 (Adresses starting at 16000).	&	! Make the size of the window 128 32w blocks (the whole of the	&	!   region that we just attached to).				&	! Get the region ID from the RDB.				&	! Indicate that there is no offset into region (Window starts	&	!   at start of region.				      		&	! Map all of the region.					&	! Indicate that we can align on 32w boudaries, Window will	&	!   be mapped by a Create Address Window directive and that	&	!   we should map with write access.				&	! Create the address window.					&1055	\ WDB%(0%), WDB%(1%) = 0%					&	\ CALL EMIT BY REF ( WDB%(), 1%, 0% )				&	\ SLEEP 5%							!BL1-04&	!								&	! Emit will expect the RAD-50 name of the task to which it	&	!   should send status to be found in these positions.  A zero	&	!   will cause all parents (in this       case only SHOLOG) to	&	!   receive status.						&	! Call the Emit Status routine.					&	! This statement notifies SHOLOG that it can exit, since it is	&	!   all done.							&	! Give SHOLOG five seconds to exit.				 BL1-04&1060	\ ALL.TP%		= IN.ALL.TP%				&	\ ALL.TRAN%		= IN.ALL.TRAN%				&	\ ALL.SSTA%		= IN.ALL.SSTA%				&	\ ALL.TYPE%		= IN.ALL.TYPE%				&	\ FOUND.FIRST%		= IN.FOUND.FIRST%			&	\ START.DATE%		= IN.START.DATE%			&	\ START.TIME%		= IN.START.TIME%			&	\ END.DATE%		= IN.END.DATE%				&	\ END.TIME%		      = IN.END.TIME%				&	\ TP.NAME$		= IN.TP.NAME$				&	\ TRANSACTION$		= IN.TRANSACTION$			&	\ STATION$		= IN.STATION$				&	\ LOG.TYPE$		= IN.LOG.TYPE$				&	!								&	! Extract all the parameters we need from the common region.	&2010	\ DEFAULT$ = 'LP:'						&	\ ON FN.ASK%( 'Print File Specification', DEFAULT$,		&				'', 0%, H1%, N1% )			&		GO TO	2010, 32010, 2030				&	!								&	! Set the default to LP:.					&	! Ask the user for the name of an print file.			&	!	Branch on <ESC>, ^Z, Other.				&2030	\ IF ASK.CVT      $ = NONE$						&	  THEN	PRINT% = FALSE%						&	  ELSE	OPEN ASK.CVT$ FOR OUTPUT AS FILE #PRINT.CH%,		&			ORGANIZATION SEQUENTIAL VARIABLE,		&			ACCESS WRITE, ALLOW NONE,			&			RECORDSIZE 512%					&		\ PRINT% = TRUE%					&	!								&	! If the user typed NONE:					&	! Then	Set PRINT false.					&	! Else	Open the file specified.				&	!	Set PRINT true.						&2040	\ ON FN.ASK%( 'Output Data File', NONE$, '', 0%, H2%, N2% )	&		GO TO	2010, 32010, 2050				&	!								&	! Ask the user for the name of an output data fil      e.		&2050	\ IF ASK.CVT$ = NONE$						&	  THEN	IF	NOT PRINT%					&		THEN	PRINT 'Must specify either print or data file.'	&			\ GO TO	2040					&		ELSE	RMS% = FALSE%					&			\ GO TO 3010					&	  ELSE	OPEN ASK.CVT$ FOR OUTPUT AS FILE #RMS.CH%,		&			ORGANIZATION SEQUENTIAL VARIABLE,		&			ACCESS WRITE, ALLOW NONE,			&			MAP DATFIL					&		\ RMS% = TRUE%						&	!								&	! If the user typed NONE:					&	! Then	If he typed NONE to PRINT file prompt:			&	!	Then	Tell him he has to have SOME output file.	&	!		Go back a      nd reprompt him.			&	!	Else	Set 'no RMS file'.				&	!		Proceed.					&	! Else	Open the requested output data file.			&	!	Set 'RMS file'.						&3000	!$**************************************************************&	!								&	!								&	!	G E T     J O U R N A L    D E V I C E			&	!								&	!								&	!***************************************************************&3010	\ DEFAULT$ = 'DONE'						&	\ ON FN.ASK%( 'Journal File', DEFAULT$, '', 0%, H3%, N3% )	&		GO TO	2040, 32010, 3020				&	!								&	! Set the d      efault to DONE.					&	! Ask the user for the name of the file (device) on which the	&	!   journal is to be found.  Branch on	<ESC>, ^Z, Other.	&3020	\ GO TO 4010	IF ASK.CVT$ = DEFAULT$				&	\ LENGTH% = LEN( ASK.CVT$ )					&	\ GO TO 3025	IF LENGTH% > 5% OR LENGTH% < 2%			&	\ CHARACTER$ = LEFT( ASK.CVT$, 1% )				&	\ GO TO 3025	IF CHARACTER$ < 'A' OR CHARACTER$ > 'Z'		&	\ JOURNAL.DEVICE$ = CHARACTER$					&	\ CHARACTER$ = MID( ASK.CVT$, 2%, 1% )				&	\ GO TO 3025	IF CHARACTER$ < 'A' OR CHARACTER$ > 'Z'		&	\ JOU      RNAL.DEVICE$ = JOURNAL.DEVICE$ + CHARACTER$		&	\ JOURNAL.UNIT% = 0%						&	\ FOR I% = 3% TO LENGTH%					&		\ CHARACTER$ = MID( ASK.CVT$, I%, 1% )			&		\ GO TO 3025	IF CHARACTER$ = ':' AND I% <> LENGTH%	&		\ JOURNAL.UNIT%	= JOURNAL.UNIT% * 10%			&				+ VAL( CHARACTER$ )			&					IF CHARACTER$ <> ':'		&		\ NEXT I%						&	\ CALL OPENIT( JOURNAL.DEVICE$, JOURNAL.UNIT%, RDB%(0%), STAT% )&	\ CALL RET( LOG.RECORD$, STAT% )				&	\ IF STAT% = 1%							&	  THEN	GO TO 3030						&	  ELSE	GO TO 3010						&	!								&	! I      f the user typed DONE, go finish up.				&	! Get the length of the user's response.			&	! Error if too long or too short for device specification.	&	! Extract the first character of the device name.		&	! Error if not alpha.						&	! Start to construct the Device name, using the first character.&	! Extract the second character of the device name.		&	! Again, error if not alpha.					&	! Add this character to the device name we are constructing.	&	! Initialize the unit number to zero.				&	! For each remaining       character in the specification:		&	!	Extract the next character.				&	!	If it is an embedded colon, Error.			&	!	Add its digit value into the unit number we are con-	&	!	  structing - IF it is not a colon.			&	!	Get any remaining characters in the specification.	&	! Call the subprogram that will attempt to open the device.	&	! If the routine was successfull (STAT% = 1%), continue.	&	!  Otherwise, go reprompt.					&3025	\ PRINT '% - Invalid device specification.'			&	\ GO TO 3010							&	!								&	! Tell th      e user that his specification is invalid.		&	! Go reprompt for logging device.				&3030	\ GO TO 3035	IF  TAPE.TITLE$ = 'TRAX11ABCDEF'		&			AND TAPE.SEQUENCE% = 0%				&	\ PRINT '% The specified device does not contain a '		&			+ 'TRAX journal.'				&	\ GO TO 3010							&	!								&	! If all the stuff in the header checks out, continue.		&	! Tell the user that he doesn't have what he thinks he has.	&	! Go and reprompt for journal device.				&3035	\ NEED.BUFFER% = TRUE%						!BL1-04&	\ CHARACTER$ = NUM1$( TAPE.      HOUR% )				&	\ TAPE.TIME$ = STRING$( 2%-LEN(CHARACTER$), 48% ) + CHARACTER$	&	\ CHARACTER$ = NUM1$( TAPE.MINUTE% )				&	\ TAPE.TIME$	= TAPE.TIME$ + ':'				&			+ STRING$( 2%-LEN(CHARACTER$), 48% )		&			+ CHARACTER$					&	\ CHARACTER$ = NUM1$( TAPE.DAY% )				&	\ TAPE.DATE$ = STRING$( 2%-LEN(CHARACTER$), 48% )		&			+ CHARACTER$ + '-' + MONTH$( TAPE.MONTH% )	&			+ '-' + NUM1$( TAPE.YEAR% )			&	\ ON FN.ASK%( 'Volume started at ' + TAPE.TIME$ + ' on '	&				+ TAPE.DATE$ + '.  Continue',		&				'YES', 'Y', 3%, H4%,       N4% )		&		GO TO	3010, 32010, 3040, 3010				&	!								&	! Set the flag that tells the subroutine that gets our records	 BL1-04&	!   that the buffer it currently has is not a valid one.	 BL1-04&	! Extract the number of hours from the header record, con-	&	!   verting it to a string.					&	! Start constructing the time string by padding the hours out	&	!   with zeros to 2 places.					&	! Convert the minutes from the header into a string.		&	! Complete the time string by adding a colon and a zero padded	&	!         number of minutes.						&	! Extract the day from the tape header, converting it to a	&	!   string.							&	! Construct the date string from the zero padded day, the month	&	!   from the month table and the year.				&	! Tell the user when the tape was started and ask him if he	&	!   wishes to continue.						&	!   Branch on <ESC>, ^Z, YES, NO.				&3040	\ GOSUB	11000							!BL1-04&	\ CALL RET( LOG.RECORD$, STAT% )				&	\ GO TO 3010	IF STAT% <> 1%					&	\ REC.ACCESS% = REC.ACCESS% + 1%				&	\ REC.DATE%	= (REC.Y      EAR% - 70%) * 1000%			&			+ (REC.MONTH% - 1%) * 31%			&			+ REC.DAY%					&	\ REC.TIME%	= REC.HOUR% * 60%				&			+ REC.MINUTE%					&	\ IF FIRST.FOUND%						&	  THEN	GO TO 3060	IF REC.DATE% < END.DATE%		&		\ GO TO 4000	IF REC.DATE% > END.DATE%		!BL1-05&				OR REC.TIME% > END.TIME%		&	  ELSE	GO TO 3040	IF REC.DATE% < START.DATE%		&				OR ( REC.DATE% = START.DATE%		&				  AND REC.TIME% < START.TIME% )		&		\ FIRST.FOUND% = TRUE%					&	!								&	! Get the next log record.					&	! Any error will cause us to repro      mpt for journal device.	&	! Increment the number of log records that we have accessed.	&	! Calculate the record date from the year, month and day.	&	! Calculate the record time from the hour and minute.		&	! If we have found the first record:				&	! Then	Continue if the record date is less than the end date.	&	!	Go to the end if the record date is past the end date	&	!	  or if the record time is past the end time.		&	! Else	Go get the next record if the record date is before	&	!	  the start date or we are b      efore the start time on the	&	!	  on the start date.					&	!	Set the flag to indicate that we have found our first	&	!	  record after the start date/time.			&3060	\ GO TO 3070	IF ALL.TP%					&	\ GO TO 3040	IF TP.NAME$ <> REC.TPNAME$			&	\ GO TO 3040	IF  NOT ALL.TRAN%				&			AND TRANSACTION$ <> REC.TRANSACTION$		&	\ GO TO 3040	IF  NOT ALL.SSTA%				&			AND STATION$ <> REC.STATION$			&	!								&	! Go check for log type if we are processing all TP's.		&	! Go get the next record if the tpname doesn't match.		&	      ! Go get the next record if we are not handling all		&	!   transactions and the the transaction names do not match.	&	! Go get the next record if we are not handling all source	&	!   stations and the source station names do not match.		&3070	\ GO TO 3040	IF  NOT ALL.TYPE%				&			AND LOG.TYPE$ <> REC.LOGTYPE$			&	\ REC.USED% = REC.USED% + 1%					&	\ GOSUB 10010	IF RMS%						&	\ GOSUB 14010	IF PRINT%					&	\ GO TO 3040							&	!								&	! Go get the next record if we are not handling all log types	&	!   and       the log types don't match.				&	! Increment the number of records used.				&	! Go handle output to the RMS file if we are creating one.	&	! Go handle output to the PRINT file if we are creating one.	&	! Go back and get another record.				&4000	!$**************************************************************&	!								&	!								&	!	P R I N T    S U M M A R I E S				&	!								&	!								&	!***************************************************************&4010	\ PRINT								&	\ PRINT REC.ACCESS%; 'Records acc      essed'				&	\ PRINT REC.USED%; 'Records used'				&	\ GO TO 32000							&	!								&	! Put out a blank line before the summaries.			&	! Tell the user how many records we accessed.			&	! Tell the user how many records we used.			&	! Go finish up.							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************      ************&10010	!$**************************************************************&	!								&	!	C R E A T E    R M S    F I L E    R E C O R D		&	!								&	!***************************************************************&10020	\ TPNAME$			= REC.TPNAME$			&	\ TRANSACTION.NAME$		= REC.TRANSACTION$		&	\ TRANSACTION.INSTANCE$		= REC.TRANSID$			&	\ LOGTYPE$			= REC.LOGTYPE$			&	\ SOURCE.STATION.NAME$		= REC.STATION$			&	\ LOGGING.STATION.NAME$		= REC.LOGGING$			&	\ YEAR%				= REC.YEAR%			&	\ MONTH%			= REC.MO      NTH%			&	\ DAY%				= REC.DAY%			&	\ HOUR%				= REC.HOUR%			&	\ MINUTE%			= REC.MINUTE%			&	\ SECOND%			= REC.SECOND%			&	\ USER.DATA.LENGTH%		= REC.DATA.LENGTH%		&	\ USER.DATA$			= REC.DATA$			&	\ PUT #RMS.CH%, COUNT USER.DATA.LENGTH% + 44%			&	\ RETURN							&	!								&	! Transfer the Transaction Processor name.			&	! Transfer the transaction name.				&	! Transfer the transaction ID (instance).			&	! Transfer the log type.					&	! Transfer the source station name.				&	! Transfer the logging station name.      				&	! Transfer the year, month, day.				&	! Transfer the hour, minute, second.				&	! Transfer the length of the user data.				&	! Transfer the user data.					&	! Put the record just constucted out to the RMS file we are	&	!   creating.  Make sure that we put out just the 44 bytes of	&	!   header and the user data.					&	! Return to the caller.						&11000	!$								&	!								&	!								&	!	G E T    N E X T    L O G    R E C O R D		&	!								&	!								&	!								&	!								&	\ NEED.BUFFER% = TRUE%		IF       BUFFER.TOTAL% = 8192%	&	\ CALL RET( LOG.RECORD$, NEED.BUFFER% )			&	\ GO TO 11010		IF NEED.BUFFER% = FALSE%		&	!								&	!	If we have processed all 4K words in this buffer,	&	!	  make sure we will get another buffer.			&	!	If we don't need another buffer, go move the next log	&	!	  record into position.					&	!								&	\ CALL	GETREC( STAT% )						&	\ CALL RET( LOG.RECORD$, STAT% )					&	\ GO TO 11020	IF STAT% <> 1%					&	!								&	!	Get the next log record block from the tape.		&	!	Go return with the err      or status if we were not success-	&	!	  full.							&	!								&	\ NEED.BUFFER%	= FALSE%					&	\ BUFFER.TOTAL%	= 64% + (REC.DATA.LENGTH% + 1%) / 2% * 2%	&	\ CALL RET( LOG.RECORD$, BUFFER.TOTAL% )			&	\ GO TO 11020							&	!								&	!	Indicate that we do not need another buffer.		&	!	Set the total number of characters processed in this	&	!	  block to the length of the header (64 bytes) plus	&	!	  this records data length rounded up to the nearest	&	!	  word boundary.					&	!	Go return to the caller with STA      T% set to success (+1).	&11010	\ LOG.RECORD$ = RIGHT( REC.DATA$,				&			((REC.DATA.LENGTH% + 1%) / 2% * 2%) + 1%)	&	!								&	!	Move the next record from the end of the block up	&	!	  to the start of the block.  Start at the first word	&	!	  following the end of the previous record.		&	!								&	\ CALL RET( LOG.RECORD$, REC.TYPE% )				&	\ IF REC.TYPE% = -1%						&	  THEN	  NEED.BUFFER% = TRUE%					&		\ GO TO 11000						&	!								&	!	If the record type indicates that there are no more	&	!	  log records in       this block, set the NEED.BUFFER% flag	&	!	  and go to the place where we will get a new buffer.	&	!								&	  ELSE	  BUFFER.TOTAL%	= BUFFER.TOTAL%				&				+ 64%					&				+ (REC.DATA.LENGTH% + 1%) / 2% * 2%	&		\ CALL RET( LOG.RECORD$, BUFFER.TOTAL% )		&	!								&	!	If this is really a good record, add its header length	&	!	  and the length of it's user data (rounded up to the	&	!	  nearest word) to the number of characters we have	&	!	  processed in this buffer.				&11020	\ RETURN							&	!								&	!	Ret      urn to the caller.					&14000	!$**************************************************************&	!								&	!								&	!	P U T    O U T    P R I N T    R E C O R D		&	!								&	!								&	!***************************************************************&14010	\ PRINT #PRINT.CH%,	SPACE$(3%); 'TP';			&			SPACE$(7%); 'TRANSACTION';			&			SPACE$(9%); 'MESSAGE';				&			SPACE$(4%); 'LOGGED'				&	\ PRINT #PRINT.CH%,	SPACE$(2%); 'NAME';			&			SPACE$(4%); 'NAME';				&			SPACE$(9%); 'ID';				&			SPACE$(6%); 'ID';				&      			SPACE$(2%); 'SOURCE';				&			SPACE$(4%); 'BY';				&			SPACE$(6%); 'DATE';				&			SPACE$(4%); 'TIME'				&	\ PRINT #PRINT.CH%						&	\ CALL CONVER( REC.TRANSID$, TRANSACTION.ID% )			&	\ ID0$	= NUM1$( TRANSACTION.ID% )				&	\ ID1$	= NUM1$( ID1% )						&	\ ID2$	= NUM1$( ID2% )						&	\ LEN.ID0%	= LEN( ID0$ )					&	\ ID0$	= LEFT( ID0$, LEN.ID0% - 3% ) + ','			&		+ RIGHT( ID0$, LEN.ID0% - 2% )				&			IF LEN.ID0% > 3%				&	\ ID$	= ID0$ + ','						&		+ STRING$( 3%-LEN(ID1$), 48% ) + ID1$ + ','		&		+ STRING$( 3%-      LEN(ID2$), 48% ) + ID2$			&	\ FOR I% = 1% TO LEN(ID$)					&		\ ID0$ = MID( ID$, I%, 1% )				&		\ GO TO 14020	IF	ID0$ <> ' '			&				AND	ID0$ <> '0'			&				AND 	ID0$ <> ','			&		\ NEXT I%						&	!								&	! Put out the first line of the header message.			&	! Put out the second line of the header message.		&	! Put out a blank line.						&	! Convert the Transaction ID from a two word integer to three	&	!   integers containing the millions, thousands and units of	&	!   the original number.					&	! Convert the m      illions to a character string.			&	! Convert the thousands to a character string.			&	! Convert the units to a character string.			&	! Calculate the length of the string reprsenting the millions.	&	! If there are more than three characters in the millions, put	&	!   a comma (,) in the right place.				&	! Put the three strings together, inserting commas and padding	&	!   each section out to three digits with leading zeros.	&	! Find the first character that we should keep.  When we find	&	!   it, go on to the       next statement.				&14020	\ ID$ = RIGHT( ID$, I% )					&	\ ID1% = 16 - LEN( ID$ )					&	\ PRINT #PRINT.CH%,	SPACE$( 1% ); REC.TPNAME$;		&			SPACE$( 2% ); REC.TRANSACTION$;			&			SPACE$(( ID1% + 1% ) / 2% ); ID$;		&			SPACE$( ID1% / 2% ); REC.LOGTYPE$;		&			SPACE$( 2% ); REC.STATION$;			&			SPACE$( 2% ); REC.LOGGING$;			&			SPACE$( 2% );					&	\ DAY$ = NUM1$( REC.DAY% )					&	\ YEAR$ = NUM1$( REC.YEAR% )					&	\ HOUR$ = NUM1$( REC.HOUR% )					&	\ MINUTE$ = NUM1$( REC.MINUTE% )				&	\ PRINT #PRINT.CH%, 	STRI      NG$( 2%-LEN(DAY$), 48% ); DAY$; '-';&			MONTH$( REC.MONTH% ); '-';			&			STRING$( 2%-LEN(YEAR$), 48% ); YEAR$;		&			SPACE$( 1% );					&			STRING$( 2%-LEN(HOUR$), 48% ); HOUR$; ':';	&			STRING$( 2%-LEN(MINUTE$), 48% ); MINUTE$	&	\ PRINT #PRINT.CH%						&	\ PRINT #PRINT.CH%,	SPACE$(1%); REC.DATA.LENGTH%;		&			'BYTES OF USER DATA:'				&	\ LINES% = REC.DATA.LENGTH%/80%					&	\ LEFT% = REC.DATA.LENGTH%-LINES%*80%				&	\ PRINT #PRINT.CH%,	MID( REC.DATA$, I%*80%+1%, 80% )	&		FOR I% = 0% TO LINES%-1%				&	\ PRINT #      PRINT.CH%,	MID( REC.DATA$, LINES%*80%+1%, LEFT% )	&		IF LEFT% > 0%						&	\ PRINT #PRINT.CH%						&	!								&	! Take off all the 0's, ','s and spaces that we found in the	&	!   previous statement.						&	! Calculate the number of spaces we have left over in the 	&	!   field where we are to put the Transaction ID.		&	! Print:	Transaction Processor Name			&	!		Transaction Name				&	!		Transaction ID					&	!		Message ID					&	!		Source Station Name				&	!		Logging Station Name				&	!		Date						&	!		Time					      	&	! Print out a blank line.					&	! Get the length of the user data.				&	! Print out a header to tell the user the length of the user	&	!   data.							&	! Print out the data in 80 character lines, except for the last	&	!   line.							&	! Calculate the number of characters in the last line.		&	! Print out the last line.					&	! Print out a blank line.					&14030	\ RETURN							&	!								&	! Return to the caller.						&15000	!$**************************************************************&	!								&	!		      						&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ GO TO 19020	IF (ERL <> 2030) OR (ERL <> 2050)		&	\ PRINT	'% Error while opening file:       '; ASK.CVT$;		&			'. ERR ='; ERR					&	\ RESUME 2010	IF ERL = 2030					&	\ RESUME 2040	IF ERL = 2050					&	!								&	! Handle file opening errors here.				&	! Tell the user which file we had trouble opening.		&	! Reprompt for RMS file if that was the one.			&	! Reprompt for PRINT file if that was the one.			&19020	\ RESUME 3025	IF ERL = 3020 AND ERR = ILLEGAL.NUMBER%		&	!								&	! Give an error message and reprompt the user for the logging	&	!   device if the error line was the one that parses the devic      e	&	!   specification supplied by the user and the error is the one	&	!   indicates an illegal digit.					&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***********************************************      ****************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ PRINT								&	\ CLOSE T% FOR T%    ¢  = 1% TO 12%					&	\ CALL EXITS2( 1%, 0% )						&	!								&	! On exit, print a blank line.					&	! Close any files that might be open.				&	! Then call the exit with status.				&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END¢         œw%“Á› 8$        420	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!		I N   S E T U P   M O D U L E S			&	!								&	!			( S E T C O M )				&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ALIGN.1$		dummy - for alignment		&	!	ALIGN.2$		dummy - for alignment		&	!	ATS.DRIVER.NAME$()	SYS - names of ATS drivers to go&	!				  in ATSPAR			&	!	ATS.DRIVER.NUM%		SYS - #       of ATS tasks in ATSPAR	&	!	ATS.DRVPAR.SIZE%	SET - computed ATSPAR size	&	!	BASIC%			SYS - <> 0 if basic is present	&	!	CEXPAR.SIZE%		SYS - size of CEXPAR in decimal	&	!				  words				&	!	COBOL%			SYS - <>0 if cobol is present	&	!	COMMUNICATIONS%		SYS - <> 0 if communications	&	!				  options are present		&	!	CPU.TYPE%		SYS - 34,60, or 70 identifies CPU type&	!	DB.CONT%		?????				&	!	DB.SEEK$()		??????				&	!	DL.NUM%			SYS - # of DL units in target	&	!				  system			&	!	DR.CONT%		?????				&	!	DR.SEEK$()		??      ????				&	!	DRIVER.NAME$()		SYS - names fo drivers to be	&	!				  loaded			&	!	DRVPAR.SIZE%		SET - computed DRVPAR size	&	!	DZ.NUM%			SYS - # of DZ units in target	&	!				  system			&	!	F11ACP.SIZE%		SET - size of BIGFCP.TSK-not	&	!				  5.5K				&	!	FAST%			SET - renew command- causes fast&	!				  setsys			&	!	FULL.S.E.%		SET - 1 if full support env pres&	!	JOURNAL.SIZE%		SET - size of JOURNL.TSK	&	!	LDR.SIZE%		SET - size of Loader partition	&	!	M.DRIVER.NUM%		SYS - # of 11M drivers in DRVPAR&	!	MTAACP.SIZE      %		SET - size of MTAACP aprtition	&	!	NAME$()			SET - array fo partition names	&	!	NEED.PAR$()		SET - array of essential	&	!				  partitions			&	!	NO.CON.TP%		SYS - # of concurrent		&	!				  transaction processors	&	!	PAR$			SET - currently set to GEN	&	!	REDO.TER%		SET - tells SETVMR - do		&	!				  terminals only		&	!	RK.NUM%			SYS- # of RK06/07 disks in	&	!				  target system			&	!	RM.NUM%			SYS - # of RM02/03 disks in	&	!				  target system			&	!	RP.NUM%			SYS - # of RP04/05/06 disks in	&	!				  target s      ystem			&	!	S.DEV.SYS%		SYS - <>0 if a development	&	!				  system only is wanted		&	!	S.E.TERMINAL.NUM%	SYS - # of S.E. terminals	&	!	S.HERALD.TEXT$		SYS - system herald text	&	!	S.MEMORY.SIZE%		SYS - target memory size in 	&	!				   Kwords - no I/O page		&	!	S.SYSGEN.LONG.FORM%	SYS - long prompts requested if	&	!				  <> 0				&	!	SIZE()			SET - array of partition sizes	&	!	SKIP.IT%		SET - ????????????		&	!	SYSCOM.SIZE%		SET - size of SYSCOM partition	&	!	SYSTEM.NAME$		SET - name of target system files&	!	      SYSUIC$			SET - currently set to [1,54]	&	!	TSTLIB.SIZE%		SET - size of TSTLIB		&	!	TT.TYPE%()		SET - <>0 if terminal i is a DL	&	!				  terminal			&	!	TYPE$()			SET - array of partition types	&	!								&	!***************************************************************&801	\ MAP	(SETCOM)						!V1.1/1&	!								 V1.1/1&				SETCOM.DATA$	= 1500			!V1.1/1&	!								 V1.1/1&	!	Map the whole area.					 V1.1/1&	!								 V1.1/1&	\ MAP	(SETCOM)						&				DRVPAR.SIZE%,		!     0		&				ATS.DRVPAR.SIZE,	!     2		&				      M.DRIVER.NUM%,		!     4		&				ATS.DRIVER.NUM%,	!     6		&	!								&	!	Size of DRVPAR.						 V1.1/1&	!	Computed size of ATSPAR.				 V1.1/1&	!	Number of 11M drivers in DRVPAR.			 V1.1/1&	!	Number of ATS tasks in ATSPAR.				 V1.1/1&	!								&				SYSTEM.NAME$=6,		!     8		&				S.HERALD.TEXT$=24,	!    14		&	!								&	!	Name of target system files.				 V1.1/1&	!	System herald text.					 V1.1/1&	!								&				COBOL%,			!    38		&				BASIC%,			!    40		&				COMMUNICATIONS%,	!    42		&				KMC.3271%,		!    44		&		      		KMC.2780%,		!    46		&				SUBLINK.3271%,		!    48		&				EXTRA.SPACE4%(10%),	!    50		&	!								&	!	Option flags (<> 0 if option is present):		 V1.1/1&	!	  COBOL,						 V1.1/1&	!	  BASIC+2,						 V1.1/1&	!	  Communications options,				 V1.1/1&	!	  ????							 V1.1/1&	!	  ????							 V1.1/1&	!	  ????							 V1.1/1&	!								&				RK.NUM%,		!    72		&				RM.NUM%,		!    74		&				RP.NUM%,		!    76		&				DL.NUM%,		!    78		&				DZ.NUM%,		!    80		&				LP.NUM%,		!    82		&				DB.SEEK$(1)=3,		!    84		&				DR.SEE      K$(1)=3,		!    90		&				DB.CONT%,		!    96		&				DR.CONT%,		!    98		&	!								&	!	Number of RK06/07 disks in target system.		 V1.1/1&	!	Number of RM02/03 disks in target system.		 V1.1/1&	!	Number of RP04/05/06 disks in target system.		 V1.1/1&	!	Number of DL units in target system.			 V1.1/1&	!	Number of DZ units in target system.			 V1.1/1&	!	Number of LP units in target system.			 V1.1/1&	!	????							 V1.1/1&	!	????							 V1.1/1&	!	????							 V1.1/1&	!	????							 V1.1/1&	!								&				CPU.TYPE%,		!         100		&				S.MEMORY.SIZE%,		!   102		&				S.E.TERMINAL.NUM%,	!   104		&				NO.CON.TP%,		!   106		&				S.DEV.SYS%,		!   108		&				EXTRA.SPACE3%(10%),	!   110		&	!								&	!	CPU type (=34, 60 or 70)				 V1.1/1&	!	Target memory size in Kwords, excluding I/O page.	 V1.1/1&	!	Number of support environment terminals.		 V1.1/1&	!	Number of concurrent transaction processors.		 V1.1/1&	!	Flag (<> 0 if a development-only system is desired.)	 V1.1/1&	!								&				CEXPAR.SIZE%,		!   132		&				DIREC.SIZE%,		!   134	      	&				MTAACP.SIZE%,		!   136		&				SYSCOM.SIZE%,		!   138		&				LDR.SIZE%,		!   140		&				TSTLIB.SIZE%,		!   142		&				JOURNAL.SIZE%,		!   144		&				F11ACP.SIZE%,		!   146		&				EXTRA.SPACE2%(10%),	!   148		&	!								&	!	Size of CEXPAR in decimal words.			 V1.1/1&	!	Size of DIRREC partition in ?????.			 V1.1/1&	!	Size of MTAACP partition in ?????.			 V1.1/1&	!	Size of SYSCOM partition in ?????.			 V1.1/1&	!	Size of LDRPAR partition in ?????.			 V1.1/1&	!	Size of TSTLIB partition in ?????.			 V1.1/1&	!	Size       of Journal driver task image in decimal words.	 V1.1/1&	!	Size of BIGFCP.TSK.					 V1.1/1&	!								&				S.SYSGEN.LONG.FORM%,	!   170		&				FULL.S.E.%,		!   172		&				TT.TYPE%(60),		!   174		&				EXTRA.SPACE1%(10%),	!   296		&				!					&				FAST%,			!   318		&				PAR.TYPE$(30)=6,	!   320		&				NAME$(30)=6,		!   506		&				SIZE(30),		!   692		&				SKIP.IT%,		!   754		&				SYSUIC$=6,		!   756		&				PAR$=6,			!   762		&				REDO.TER%,		!   768		&				EXTRA.SPACE%(10%),	!   770		&				!					&				DRIVER.NAME$(20)=9      ,	!   792		&				ATS.DRIVER.NAME$(20)=9,	!   981		&				!					&				EXTRA.SPACE$=50		!  1170		&							!  1220		&	!								&	!	The set of common variables used by the setup modules	&	!	The common was changed to a MAP for the convenience of 	&	!	SYSGEN.							&          œSœw“Á› 8$        1	!***************************************************************&	!								&	!								&	!	S U B - P R O G R A M    T I T L E			&	!								&	!								&	!								&	SUB MODSET		! Start sub-program here		&	!								&	!								&	!								&	!	Version:	V1.1A					&	!	Edit level:	01					1.1A01&	!	Edit date:	20-Jun-79				1.1A01&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&      	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1979 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&15	!*********************      ******************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL MODSET						&	!								&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1      .1A00	05-Mar-79 KMR	Changed herald due to change in	&	!				  MODDLG.			&	!				Added check for TT0:.		&	!	V1.1A01	20-Jun-79 KMR	Removed version from herald.	 1.1A01&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!								&	!***************************************************************&300	!$**********************************      ****************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&      	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!      								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								      &	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&810	\ COMMON (SYSMOD)	IS.SUC%,				&				IE.INS%,				&				IE.ITS%,				&				ERR.FLAG%,				&				ASCII.ZERO%,				&				ASCII.ONE%,				&				TASK%( 1% ),				&				ASK.RESP$			=  6%,	&				VALID.DEVICE$			= 19%,	&				JOURNAL.DEVICE$( 1%, 2% )	=  3%	&	!								&	! Setup all the common that we need.				&820	\ COMMON (DEVICE)	NULL.DEVICE$			=  3%	&	!								&	! Set up the common area for       the null device specification.	&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$*********************      *****************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&	!								 1.1A00&	\ GO TO 1010	IF FN.CHECK.TT0% = -1%				!1.1A00&	\ PRINT "? SYSMOD must be run from TT0: or batch"		!1.1A00&			IF T2900% = 1%					!1.1A00&	\ PRINT "? GETLUN directive error:"; T2900%	IF T2900% <> 1%      	!1.1A00&	\ ERR.FLAG% = -1%						!1.1A00&	\ GO TO 32000							!1.1A00&	!								 1.1A00&	!	Check lun 13 to assure it is assigned to TT0:		 1.1A00&	!	Act accordingly.					 1.1A00&1010	VER.EDIT.NUM$ = "V1.1A"						&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "SYSMOD	"; !	VER.EDIT.NUM$; "   ";	!		!1.1A01&	\ PRINT								&	\ PRINT "TRAX Modify global system parameters"			&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ IS.SUC%	=  1%						&	\ IE      .INS%	= -2%						&	\ IE.ITS%	=  -8%						&	!								&	! Initialize the directive returns for Success, Task not	&	!	Installed and No Messages Pending.			&1040	\ ASCII.ZERO%	= 48%						&	\ ASCII.ONE%	= 49%						&	!								&	! Initialize the value of the character zero.			&	! Initialize the value of the character one.			&1050	\ VALID.DEVICE$ = '/MT/MM/DB/DR/DM/NL/'				&	\ NULL.DEVICE$	= CHR$(0%) + CHR$(0%) + CHR$(0%)		&	!								&	! Set up the string of valid journal devices.			&	! Set up the value of the null       device string. (Two blanks	&	!	followed by a zero.)					&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S    S U B - P R O G R A M		&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S    S U B - P       R O G R A M		&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ ON ERROR GO BACK						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$*********************************      *****************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!				   |  				&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ SUBEND|         –,™w“Á› 8$¡E      15600	!$**************************************************************&	!								&	!								&	!	G E N E R A T E    S E Q U E N T I A L    K E Y		&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	03					 BL1-03&	!	Edit date:	14-Jun-78				 BL1-03&	!	Author(s):	KMR					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/00	02-May-78 KMR	Initial coding.			&	!	01/01	18-May-78 KMR	Change length of sequential num- BL1-01&	!				  from 5 digi      ts to 4 digits.	 BL1-01&	!	01/02	31-May-78 KMR	Added code to assure that all	 BL1-02&	!				  fields in the sequence key are BL1-02&	!				  padded to full length with	 BL1-02&	!				  asterisks ("*").		 BL1-02&	!	01/03	14-Jun-78 KMR	Added code to assure that we onlyBL1-03&	!				  use the non-blank portions of	 BL1-03&	!				  the base level number and CPU	 BL1-03&	!				  types in generating the key.	 BL1-03&	!	01/04	21-Aug-78 KMR	Changed the TRM$ used on the	 BL1-04&	!				  Base Level Number to an EDIT$	 BL1-0      4&	!				  with a code of 4 to eliminate	 BL1-04&	!				  nulls.			 BL1-04&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.SEQUENCE.KEY$			&	!								&	!	RETURNS:	Upon return, the value of the function	&	!			  will be a unique sequence key based	&	!			  on the current base level, the cur-	&	!			  rent components tape number and pro-	&	!			  cessor number, a 4 digit sequentially	 BL1-01&	!			  assigned number and a check digit	&	!			  gener      ated on the 4 digit sequence 	 BL1-01&	!			  number.				&	!								&	!	LOCAL:		SEQUENCE.NUMBER$ - Upon entry, contains	&	!			  the last sequential 4 digit number	 BL1-01&	!			  used.					&	!			DIGIT.TOTAL% - Keeps the running total	&	!			  of the weighted digits.		&	!			T15601$ - Temporary variable to hold the BL1-03&	!			  TRM'ed base level number.		 BL1-03&	!			T15602$ - Temporary variable to hold the BL1-03&	!			  TRM'ed CPU type.			 BL1-03&	!								&	!***************************************************      ************&	!								&	\ DEF FN.SEQUENCE.KEY$						&	!								&	!	Define the function.					&15610		\ DIGIT.TOTAL% = 0%					&		\ SEQUENCE.NUMBER$ = SUM$( SEQUENCE.NUMBER$, '1' )	&		\ SEQUENCE.NUMBER$ =					&			STRING$( 4% - LEN( SEQUENCE.NUMBER$ ), 48% )	!BL1-01&			+ SEQUENCE.NUMBER$				&		!							&		!	Set the running total for the weighted digits	&		!	  to zero.					&		!	Generate the next sequence number.		&		!	Pad the number out to four places using zeros.	 BL1-01&		!							&		\ DIGIT.TOTAL%	= DIGIT.TOTA      L%				&				+ I.FN%					&				* VAL(	MID(	SEQUENCE.NUMBER$,	&						6%-I.FN%,		!BL1-01&						1% ) )			&			FOR I.FN% = 5% TO 2% STEP -1%			!BL1-01&		!							&		!	Cycle throught the number adding in the weight-	&		!	  ed sum of the next digit.			&		!							&		\ DIGIT.TOTAL% = 11% - FN.MOD11%( DIGIT.TOTAL% )	&		\ GO TO 15610	IF DIGIT.TOTAL% = 10%			&		\ DIGIT.TOTAL% = 0%	IF DIGIT.TOTAL% = 11%		&		!							&		!	Generate the necessary 5th digit.		 BL1-01&		!	If that digit was really a 10, go try the next	&		!	  numb      er in sequence.				&		!	If the return was zero, we will have an eleven	&		!	  now. We must make this 11 a zero.		&		!	  ( 0 mod 11 = 11 mod 11 ).			&		!							&		\ T15601$ = EDIT$( BASE.LEVEL.NUMBER$, 4% )		!BL1-04&		\ T15602$ = TRM$( CMPONT.MODEL$ )			!BL1-03&		\ FN.SEQUENCE.KEY$	= T15601$			!BL1-03&					+ STRING$( 8% - LEN( T15601$ ),	!BL1-03&						ASCII( "*" ) )		!BL1-02&					+ '-'				&					+ LEFT(	CMPONT.SHIPPING.CODE$,	&						2% )			&					+ '-'				&					+ T15602$			!BL1-03&					+ STRING$( 2% - LEN( T15   Â   602$ ),	!BL1-03&						ASCII( "*" ) )		!BL1-02&					+ '-'				&					+ SEQUENCE.NUMBER$		&					+ NUM1$( DIGIT.TOTAL% )		&		!							&		!	Generate the rest of the key.			&		!							&	\ FNEND								&Â          œS˜Æ“Á› 8$        15800	!$**************************************************************&	!								&	!								&	!	M O D U L O - 1 1    F U N C T I O N			&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	03-May-78				&	!	Author(s):	KMR					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/00	03-May-78 KMR	Initial coding.			&	!								&	!***************************************************************&	!								&	!								&	!	USAG      E FORMAT:	FN.MOD11%( NUMBER% )			&	!								&	!	INPUT:		NUMBER% - This is number you wish to	&	!			  find the MOD11 equivilent of.		&	!								&	!	RETURNS:	Return value is NUMBER% MOD11.		&	!								&	!	The function finds the Modulo-11 equivilent of the	&	!	  number supplied in NUMBER% and passes it back as the	&	!	  functional value.					&	!								&	!***************************************************************&	!								&	\ DEF FN.MOD11%( NUMBER% )					&			= NUMBER% - NUMBER% / 11% * 11%			&	!								&   :   	!	Generate the MOD-11 value of the number.		&	!								& :          €jLkQÁ› 8$        .TITLE	TST LIBRARY ROUTINES.IDENT	"V001A";+;;;;;;                         COPYRIGHT (C) 1978 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  HE      REBY; 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.;;;;	MODULE:		TST LIBRARY (TSTLIB);;	VERSION:	V001A;;	AUTHOR:		ANDY WILSON;;	DATE:		AUGUST 1976;;;	THIS MODULE CONTAINS:;;	1. ROUTINES TO SUPPORT THE LANGUAGE INTERFACE;	   STATEMENTS TO TPM:-;;		SEND ME      SSAGE 		(SNDMSG);		ADD ROUTE		(AROUTE);		DELETE ROUTE		(DROUTE);		GET MESSAGE		(GETMSG);		SPAWN TRANSACTION	(SPAWN);		ABORT TRANSACTION	(TABORT);		JOURNAL			(JURNAL);		GET TIME		(GETIME);		GET TRANSACTION NAME	(GETRAN);		GET TST STATION		(GETSTN);		GET SOURCE STATION 	(GETMSR);		GET TRANSACTION SOURCE	(GETSCR);		INITALISE RMS		($RMSIN)	NOP;		CREATE FILE		($RMCRE);		ERASE FILE		($RMERA);		OPEN FILE		($RMOPE);		CLOSE FILE		($RMCLO);		CONNECT STREAM		($RMCON);		DISCONNECT STREAM	($RMDIS);		GET RECORD		($RMGET)      ;		FIND RECORD		($RMFIN);		PUT RECORD		($RMPUT);		DELETE RECORD		($RMDEL);		UPDATE RECORD		($RMUPD);		UNLOCK RECORD		($RMREL);		FREE ALL LOCKS		($RMFRE);		DISPLAY FILE		($RMDIS);;		RETURN POOL		($RTNCB)	NOP;		RETURN KEY POOL		($RTKYB)	NOP;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;;	V1.1/1	12-JUN-79	LBB		LBB001 - SPR T227038;						USE "MOVB" RATHER THAN;						"BISB" TO MOVE IN THE ;						LOGGING CODE IN "LOGTRN";						CALL;;.PA      GE.SBTTL	TSTLIB -- COMMON ROUTINES;;;;.PSECT	$$$TIB,RW,I;	.MCALL	DIR$,WTSE$S,SDAT$S,CLEF$S,SPND$S,QIOW$S,EMST$S	.MCALL	EXST$S,SRDA$S,WSIG$S,ASTX$S,SETF$S,DIR$,RCVD$S	.MCALL	GTSK$S,RDBDF$,ATRG$S,CRAW$S,WDBDF$,DTRG$S	.MCALL	$GNCAL,RABOF$,$RBCAL,$RMSTAT,$FBCAL,RAB$BT;;	RAB$BT	DFIN$L	RABOF$	RMS$L	WDBDF$	$GNCAL	$RMSTAT;;.PAGE;; ** $$TSTR -- CREATE CONTEXT AND CALL TST SUBROUTINE;;; ENTRY CONDITIONS;;	R1 POINTS TO PARAMETRE BLOCK:;;		WD.00 16 WORD BLOCK TO HOLD TASK PARAMETERS;		WD.01 REGION CONTROL BLOCK;		WD.02       WINDOW CONTROL BLOCK;		WD.03	SECOND WINDOW CONTROL BLOCK FOR TRANSACTION;			WORKSPACE MAP (ZERO IF MESSAGE AND W/S MAPPED IN;			ONE WINDOW)   *** FOR BASIC+2  ***;		WD.04 ENTRY POINT OF TST SUBROUTINE;;;;$$TSTR::	MOV	(R1)+,R4		; GET THE TASK PARAMETRE BLOCK	GTSK$S	R4,DIRERR		; GET THE TASK NAME	MOV	(R1)+,R3		; GET THE REGION CONTROL BLOCK	MOV	R3,-(SP)		; SAVE FOR LATER	MOV	G.TSTN+2(R4),R.GNAM+2(R3) ; SET THE MESSAGE NAME UP	MOV	G.TSTN(R4),R.GNAM(R3)	; SAME AS TST NAME	ATRG$S	R3,DIRERR		; ATTACH TO THE MESS      AGE	MOV	(R1)+,R4		; GET THE WINDOW CONTROL BLOCK	MOV	R.GID(R3),W.NRID(R4)	; REGION ID	MOV	R.GSIZ(R3),W.NSIZ(R4)	; SIZE	CLR	W.NLEN(R4)		; SET FOR DEFAULT SIZE	CRAW$S	R4,DIRERR		; MAP THE WHOLE WINDOW	MOV	(R1)+,R5		; GET SECOND WINDOW	BEQ	5$			; MAP ALL IN ONE  -- NO SECOND WINDOW;; DO A DOUBLE MAP ASR 5 AND ASR 6;;	MOV	M.ASR+M.VTW,R2		; GET ADDRESS OF TRAN W/S	BEQ	5$			; NONE SO ONE MAP	BIC	#160000,R2		; REMOVE ASR	ASH	#-6,R2			; GET SIZE OF MESSAGE AREA	MOV	R2,W.NSIZ(R4)		; SET SIZE OF MESSAGE WINDOW	MOV	R2      ,W.NOFF(R5)		; SET OFF SET TO WORKSPACE	MOV	R.GID(R3),W.NRID(R5)	; SET REGION ID FOR TRAN W/S WINDOW	MOV	R.GSIZ(R3),W.NSIZ(R5)	; SET SIZE OF WINDOW	CLR	W.NLEN(R4)		; RESET SIZE OF WINDOW	CLR	W.NLEN(R5)		;	CRAW$S	R5,DIRERR		; CREATE3$:	CRAW$S	R4,DIRERR		; CREATE AND MAP WINDOW5$:					; ONTO THE MESSAGE	SRDA$S	#RECAST,DIRERR		; DECLARE RECEIVE AST	BCC	10$			; O.K	CMP	#IE.UPN,$DSW		; LACK OF NODES?	BNE	DIRERR			; NO SO TAKE OUT THE TST	WSIG$S				; WAIT FOR FREE SPACE	BR	5$10$:	TST	M.ASR+M.TXT		; NEED TO TRACE?      	BEQ	20$			; NO	MOV	#BF.MEB,M.ASR+M.TFN	; SET TO TRACE INPUT MESSAGE	MOV	M.ASR+M.TCB,M.ASR+M.TCC	; PUT CCB IN	CALL	SENDT			; SEND TO TRACE20$:; CALL THE SUBROUTINE -- THE REQUIRED CALL STRUCTURE; WILL HAVE BEEN CREATED IN THE TST LIBRARY CONTEXT; AREA WHICH IS THE FIRST 32 WORDS OF THE MESSAGE BUFFER;	MOV	#M.ASR,R5		; POINTER TO PARAMETERBLOCK					; (VIRTUAL ADDRESS OF MESAGE BUFFER)	MOV	(R1)+,R4		; GET DEBUG INIALISE ENTRY POINT	BEQ	25$			; NONE	MOV	R1,-(SP)		;	CALL	@R4			; CALL INIALISE ROUTINE	MOV	(SP)+,      R1	MOV	#M.ASR,R5		; PUT PARMAETERS BACK25$:	CALL	@(R1)			; CALL THE TST SUBROUTINE	TST	M.ASR+M.TXT		; TRACE END MESSAGE?	BEQ	30$			; NO	MOV	#BF.MEE,M.ASR+M.TFN	; SET FUNCTION CODE	CALL	SENDT30$:;	MOV	(SP)+,R3		; GET THE REGION CONTROL BLOCK	DTRG$S	R3			; DETACH	EXST$S	#EX$SUC			; GOOD EXIT;;; RECEIVE AST ROUTINE;RECAST:	SETF$S	#24.,DIRERR		; WAKE UP THE LIBRARY	ASTX$S;;; DIRECTIVE ERROR;DIRERR:;; PREVENT UNDEFINED RMS SYMBOLS;$RMSIA::					; GLOBAL FOR RMS MACROS$DEL1E::$DEL2E::$DEL3E::$CRE1E::$CRE2E::$CRE3E      ::$OPE1E::$CLO1E::$CON1E::$DIS1E::$FIN1E::$GET1E::$PUT1E::$UPD1E::$OPE2E::$CLO2E::$CON2E::$DIS2E::$FIN2E::$GET2E::$PUT2E::$UPD2E::$OPE3E::$CLO3E::$CON3E::$DIS3E::$FIN3E::$GET3E::$PUT3E::$UPD3E::	MOV	$DSW,R4				; PUT ERROR CODE INTO R5	EMT	371			; CAUSE EMT ERROR.PAGE;; SENDT -- SEND TO TRACE MANAGER;SENDT:	CLEF$S	#24.			; CLEAR WAKE UP FLAG	SDAT$S	#M.ASR+M.TNM,#M.ASR+M.TCX ; SEND TRACE CONTEXT	BCS	10$			; OK	WTSE$S	#24.			; WAIT FOR IT	RCVD$S	,#M.ASR+M.TRP		; GET THE REPLY10$:	RETURN;; ** PRMVAL -- VALIDATE       PARAMETER BLOCK;; INPUT CONDITIONS:;;	SP+00 SAVED R0 (FROM JSR R0,PRMVAL);	SP+02	FUNCTION CODE;	SP+04 NUMBER OF PARAMETERS EXPECTED;	SP+06 RETURN TO "CALLER";;	R5	POINTER TO PARAMETER BLOCK;;; CALLING SEQUENCE:;;	JSR	R0,PRMVAL;;; OUTPUT CONDITIONS:;;	R1	POINTER TO DATA AREA IN SEND BLOCK;	R5	PONTS TO FIRST PARAMETER IN PARAMETER BLOCK;;;	SP+00	SAVED R0;	SP+02	SAVED R1;	SP+04	SAVED R5;	SP+06	RETURN ADDR TO CALLER OF LIBRARY ROUTINE;; IF AN ERROR IS DETECTED; 'C' IS SET AND A RETURN IS MADE DIRECT TO THE RET      URN; ADDRESS FOR THE CALLER OF THE LIBRARY ROUTINE;;PRMVAL:	CMP	(R5),4(SP)	; CORRECT NUMBER OF PARAMETERS SUPPLIED?	BNE	10$		; NO SO RETURN ERROR;;;	MOV	2(SP),M.ASR+M.FUN	; MOVE IN THE FUNCTION CODE	MOV	R5,4(SP)	MOV	R1,2(SP)	MOV	#M.ASR+M.CFB,R1	; POINT TO DATA AREA IN SEND;	TST	(R5)+		; STEP TO FIRST PARAMETER	MOV	R0,-(SP)	; GET RETURN ADDRESS	RETURN10$:;; ERROR IN PARAMETER BLOCK;	BPT;;; MOVE PARAMETERS INTO SEND BUFFER (INDIRECT);; ** MOV2 -- MOVE THE 2 WORDS POINTED TO BY CURRENT REQUEST PARAMETER; ** MO      V3 -- MOVE THE 3 WORDS POINTED TO BY THE CURRENT REQUEST PARAMETER;; INPUT CONDITIONS:;;	R5	POINTER TO CURRENT PARAMETER BLOCK ENTRY;;	R1	CURRENT POSITION IN SEND BLOCK;; OUTPUT CONDITIONS:;;	R5	UPDATED TO NEXT PARAMETER;	R1	UPDATED TO NEXT FREE WORD IN SEND BUFFER;;MOV2:	MOV	(R5)+,R0	; GET ADDRESS OF BLOCK TO MOV	BR	M2		; MOVE ITMOV3:	MOV	(R5)+,R0	; ADDRESS OF BLOCK TO MOVEMOV3A:	MOVB	(R0)+,(R1)+	MOVB	(R0)+,(R1)+M2:	MOVB	(R0)+,(R1)+	MOVB	(R0)+,(R1)+	MOVB	(R0)+,(R1)+	MOVB	(R0)+,(R1)+	RETURN;;; COMMON EXIT        FROM LIBRARY ROUTINE;; CALLING SEQUENCE:;	JMP	EXITR;; INPUT CONDITIONS:;	R5	POINTER TO STATUS BLOCK PARAMETER;;	SP+00	SAVED R0;	SP+02	SAVED R1;	SP+04	SAVED R5;	SP+06	RETURN PC TO CALLER;;	STATUS BLOCK RETURN VALUES IN RECIEVE BUFFER;;EXITR:	MOV	(R5),R0		; GET STATUS BLOCK;	MOV	M.ASR+M.CST+0,(R0)+ ; FIRST STATUS WORD	BMI	10$		; ERROR	MOV	#1,-2(R0)	; NO SO SET GOOD RETURN10$:	MOV	M.ASR+M.CST+2,(R0) ; SECOND STATUS WORD;	MOV	(SP)+,R0	MOV	(SP)+,R1	MOV	(SP)+,R5	CLC	RETURN;;;;; ** BUFVAL -- VALIDATE THAT A SPECIF      IED BUFFER IS IN THE ADDRESS SPACE;		OF THE TST AND THAT THE REQUIRED ACCESS IS PERMITTED.;;; INPUT CONDITIONS:;;	R5 -- POINTER TO BUFFER PARAMETER IN PARAMETER BLOCK;	SP+02	ZERO ID READ ACCESS REQUIRED TO THE BUFFER;		NON-ZERO IF WRITE ACCESS REQUIRED;;; IF THE BUFFER IS NOT IN THE ADDRESS SPACE OF THE TST OR THE; REQUIRED ACCESS IS NOT ALLOWED A MEMORY VIOLATION TRAP WILL OCCUR; WHICH WILL CAUSE THE TST AND THE TRANSACTION TO ABORT.;BUFVAL:	TST	(R5)			; BUFFER SPECIFIED	BEQ	40$			; NO	CMP	#-1,(R5)			; BUF      FER SPECIFIED?	BEQ	40$				; NO	MOV	(R5),-(SP)	; SAVE THE BASE ADDRESS ON THE SATCK	ADD	@2(R5),(SP)	; POINT TO	DEC	(SP)		; THE LAST BYTE IN THE BUFFER;	MOV	(R5),R0	; GET THE SATRT OF THE BUFFER	TSTB	(R0)		; CHECK TO SEE IF IN ADDRESS SPACE	TST	4(SP)		; WRITE ACCESS REQUIRED?	BEQ	10$		; NO	MOVB	(R0),(R0)	; WRITE THE FIRST BYTE BACK10$:	TSTB	@(SP)		; CHECK END ADDRESS	TST	4(SP)		; WRITE ACCESS REQUIRED	BEQ	20$		; NO	MOVB	@(SP),@(SP)	; WRITE THE BYTE BACK20$:; NOW NEED TO CHECK ASR BOUNDRIES;	BIS	#17777,R0	; GE      T LAST BYTE IN CURRENT ASR MAP	CMP	R0,(SP)		; ABOVE LAST BYTE OF BUFFER?	BHIS	30$		; YES SO BUFFER OK	TSTB	(R0)		; TEST TO SEE IF STILL MAPPED -- ACCESS WILL BE OK	INC	R0		; GET FIRST BYTE OVER ASR	BR	10$30$:	MOV	(R5)+,(R1)+	; MOVE INTO THE	MOV	@(R5),(R1)+	; SEND BLOCK	TST	(R5)+	TST	(SP)+	RETURN40$:	CLR	(R1)+	CLR	(R1)+	CMP	(R5)+,(R5)+	RETURN;;; SEND REQUEST TO TPM;; ** SNDEXM -- SEND TO EXECUTION MANAGER; ** SNDDM  -- SEND TO DATA MANAGER;SNDEXM::	MOV	M.ASR+M.CXT,M.ASR+M.SXT	; SET CORECT CONTEXT BLOCK	MOV	#      M.ASR+M.EXM,R0	; NAME EXECUTION MANAGER TASK	BR	S1SNDDM:	MOV	M.ASR+M.DXT,M.ASR+M.SXT	MOV	#M.ASR+M.DM,R0	; NAME OF DATA MANAGER TASKS1:	MOV	R4,-(SP)	MOV	R5,-(SP)	MOV	#M.ASR,R5	; VALIDATE THE CHECKSUM	CALL	..VLSM	BNE	30$		; ERROR	TST	M.ASR+M.TXT	; TRACE?	BEQ	3$		; NO	MOV	#M.ASR+M.TSP,R5	; COPY PARAMETERS	MOV	#M.ASR+M.CFB,R4	; SEND BUFFER	MOV	(R4)+,(R5)+	; COPY	MOV	(R4)+,(R5)+	MOV	(R4)+,(R5)+	MOV	(R4)+,(R5)+	MOV	(R4)+,(R5)+	MOV	(R4)+,(R5)+	MOV	M.ASR+M.FUN,M.ASR+M.TFN	; SAVE THE FUNCTION3$:	CLEF$S	#24.5$:	SDAT$      S	R0,#M.ASR+M.SBF	; SEND TO TPM	BCC	20$		; OK	CMP	#IE.UPN,$DSW	; NO NODES?	BNE	10$		; NO	WSIG$S	BR	5$10$:	MOV	$DSW,M.ASR+M.CST	RETURN20$:	WTSE$S	#24.	RCVD$S	,#M.ASR+M.CFB,DIRERR	; GET REPLY	CALL	VTRTRM			; CHECK FOR DEBUGGER FUNCTION	BCS	20$			; CONTINUE IF NOT DEBUGGER	TST	M.ASR+M.TXT		; TRACE?	BEQ	25$			; NO	MOV	#M.CST+M.ASR,R4		;	MOV	#M.TRT+M.ASR,R5	MOV	(R4)+,(R5)+	TST	(R4)+	MOV	(R4)+,(R5)+	MOV	(R4)+,(R5)+	MOV	(R4)+,(R5)+	CALL	SENDT25$:	MOV	(SP)+,R5	MOV	(SP)+,R4	RETURN30$:	EXST$S	#EX$SEV			; ERROR EXIT;;      ;; ** CALLDM -- INVOKE DATA MANAGER AND PROCESS RETURN STATUS;; INPUT:;	R4 ADDRESS OF RAB/FAB;	SP+00	RETRY COUNT;	SP+02	SAVED R4;CALLDM::	MOV	R0,-(SP)	$FETCH	-(SP),CTX,R4			; SAVE CONTEXT WORD (DM MAY CORRUPT)	CALL	SNDDM		; SEND TO DATA MANAGER	$STORE	(SP)+,CTX,R4			; GET CONTEXT BACK	MOV	(SP)+,R0	CMP	#ER$DME,M.ASR+M.CIF		; DYNAMIC MEMORY ERROR?	BNE	10$				; NO	DEC	(SP)				; REDUCE RETRY COUNT	BGT	20$				; O.K TO RETRY	BR	CLDM2				; NO MORE RETRIES10$:	CMP	#BF.RTY,M.ASR+M.CIF	; RETYR REQUIRED	BNE	CLDM2		; N      O20$:	JMP	RECOP1		; YES SO RETRYCLDM2:	TST	(SP)+	$STORE	M.ASR+M.CIF,STS,R4	; SET RETURN STATUS	$STORE	M.ASR+M.CIF+2,STV,R4	TST	M.ASR+M.CIF	; ERROR RETURN?	BMI	20$		; YES	CMPB	#3,(R5)		; IS THERE A SUCCESS ROUTINE?	BNE	15$		; NO	MOV	6(R5),-(SP)	; MOVE ITS ADDRESS ONTO THE STACK5$:	CMP	#-1,(SP)	; ROUTINE NULL?	BEQ	10$		; YES	MOV	R0,-(SP)	MOV	R1,-(SP)	MOV	R2,-(SP)	MOV	R3,-(SP)	MOV	R5,-(SP)	CALL	@12(SP)		; CALL THE ROUTINE	MOV	(SP)+,R5	MOV	(SP)+,R3	MOV	(SP)+,R2	MOV	(SP)+,R1	MOV	(SP)+,R010$:	TST	(SP)+		; REMOVE       THE ENTRY POINT15$:	MOV	(SP)+,R4	RETURN20$:	CMPB	#2,(R5)		; IS THERE AN ERROR ROUTINE?	BHI	15$		; NO	MOV	4(R5),-(SP)	; PUT THE ENTRY POINT ON THE STACK	BR	5$.PAGE.SBTTL	TSTLIB -- SEND MESSAGE		(SNDMSG);; INPUT PARAMETERS:;;	WD.00	4;	WD.01	PTR. TO BUFFER;	WD.02	PTR. TO BUFFER SIZE;	WD.03	PTR. TO STATION NAME;	WD.04	PTR. TO STATUS BLOCK;;; SEND BUFFER;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE ;	WD.03	NUMBER (2 WORDS);	WD.04	CCB ADDRESS FOR TRANSACTION;	      WD.05	PTR. TO HEADER (ZERO IF NO HEADER);	WD.06	VIRTUAL ADDR. (IN TST) OF BUFFER;	WD.07	BUFFER SIZE;	WD.10	STATION NAME [3 WORDS ASCII];		ZERO IF REFLEXIVE.;;SNDMSG::SNDMBX::	MOV	#4,-(SP)	; VALIDATE	MOV	#BF.SND,-(SP)	; FUNCTION CODE	JSR	R0,PRMVAL	; PARAMETER BLOCK	CLR	(R1)+		; NO HEADER	CALL	SNDCOM		; DO COMMOM MESSAGE SEND	CALL	SNDEXM		; INVOKE THE FUNCTION	JMP	EXITR		; AND EXIT WHEN COMPLETESNDCOM:;	CLR	-(SP)		; VALIDATE	CALL	BUFVAL		; BUFFER	TST	(SP)+;; NEED TO GET THE STATION	MOV	(R5)+,R0	; GET STATION       POINTER	BEQ	3$		; NO STATION	CMP	#-1,R0		; PARAMETER SPECIFIED?	BNE	5$		; YES3$:	CLR	(R1)+		; NO	BR	20$5$:	CALL	MOV3A		; MOVE THE STATION NAME IN20$:	RETURN.PAGE.SBTTL	TSTLIB -- SEND REFLEXIVE MESSAGE 	(SENDRX);;; INPUT PARAMETERS:;;	WD.00	4;	WD.01	POINTER TO 8 BYTE MESSAGE HEADER;	WD.02	POINTER TO BUFFER;	WD.03	POINTER TO BUFFER SIZE;	WD.04	POINTER TO STATUS;;; SEND BUFFER:;;	AS SEND MESSAGE;;SENDRX::	MOV	#3,-(SP)		; THREE PARAMATETERS	MOV	#BF.SND,-(SP)		; SEND CODE	JSR	R0,PRMVAL		; VALIDATE PARAMATERS	MOV      	(R5)+,(R1)+		; MOVE HEADER ADDRESS	CLR	-(SP)			; VALIDATE BUFFER	CALL	BUFVAL		;	TST	(SP)+	CLR	(R1)			; SET REFEXIVE MARKER	CALL	SNDEXM	JMP	EXITR.PAGE.SBTTL	TSTLIB -- HIGH LEVEL SEND MESSAGE ROUTINES;;; SEND BUFFER AS FOR SEND MESSAGE;	.ENABL	LSBPRCEED::	MOV	#"CP,M.ASR+M.CIF		; CONTINUE/PROCEED	BR	10$STPRPT::	MOV	#"CH,M.ASR+M.CIF		; CONTINUE/STOP REPEAT	BR	10$CLSTRN::	MOV	#"CC,M.ASR+M.CIF		; CONTINUE/CLOSE10$:	MOV	#3,-(SP)			; 3 PARAMETERS	MOV	#BF.SND,-(SP)			; FUNCTION CODE	JSR	R0,PRMVAL			; VALIDATE	CALL	      GETHD				; GET 8 BYTE HEADER ON STACK	CLR	(R3)+				; CLEAR	CLR	(R3)+				; 	MOV	#1,(R3)+			; AND SET CODE 1SND2:	CLR	-(SP)				; VALIDE	CALL	BUFVAL				; BUFFER	TST	(SP)+SND3:	CLR	(R1)+			; NO STATION (REFLEXIVE)SND4:	MOV	(SP)+,R3			; GET R3 BACK	CALL	SNDEXM				; SEND	ADD	#8.,SP				; REMOVE HEADER	JMP	EXITR	.DSABL	LSBREPORT::	MOV	#"FR,M.ASR+M.CIF		; REPORT	MOV	#5,-(SP)			; 5 PARAMETERS	MOV	#BF.SND,-(SP)	JSR	R0,PRMVAL	CALL	GETHD				; GET HEADER	CALL	SNDCOM				; GET BUFFER AND STATION	CALL	MOVNAM				; MOVE FORM       NAME IN	BR	SND4TRNSFR::	MOV	#"FX,M.ASR+M.CIF		; FIND EXCHANGE	MOV	#4,-(SP)	MOV	#BF.SND,-(SP)	JSR	R0,PRMVAL	CALL	GETHD				; GET HEADER	CLR	-(SP)				; VALIDATE	CALL	BUFVAL				; BUFFER	TST	(SP)+	CALL	MOVNAM				; MOVE NAME TO HEADER	BR	SND3	.ENABL	LSBREPLY::	MOV	#"RE,M.ASR+M.CIF		; REPLY/RE-ENTER	BR	10$ABORT::	MOV	R5,-(SP)			; PARAMETER BLOCK	MOV	10(R5),-(SP)			; POINT TO STATUS BLOCK	MOV	#1,-(SP)			; ONE PARAMETER	MOV	SP,R5				; POINT TO PARAMETERS	CALL	DALLRT				; DELETE ALL ROUTES	CMP	(SP)+,(SP)+			; CLEAN T      HE STACK	MOV	(SP)+,R5			; NOW DO THE SEND	MOV	#"RA,M.ASR+M.CIF		; REPLY/ABORT10$:	MOV	#4,-(SP)	MOV	#BF.SND,-(SP)	JSR	R0,PRMVAL	CALL	GETHD	CLR	-(SP)	CALL	BUFVAL	TST	(SP)+	CLR	(R3)+	CLR	(R3)+	MOV	@(R5),(R3)+			; REPLY NUMBER	TST	(R5)+	BR	SND3	.DSABL	LSBGETHD:;; GET HEADER FOR MESSAGE;	MOV	(SP),R0				; SAVE RETURN ADDRESS	SUB	#6.,SP				; GET THE EXTRA WORDS	MOV	SP,(R1)				; POINT TO HEADER IN SEND BUFFER	MOV	R3,-(SP)			; SAVE R3	MOV	(R1)+,R3			; AND POINT TO HEADER	MOV	M.ASR+M.CIF,(R3)+		; PUT CODE IN	MOV	R0,-      (SP)			; RETURN ADDRESS	RETURNMOVNAM:	MOV	(R5)+,R0			; GET ADDRESS OF NAME	.REPT	6	MOVB	(R0)+,(R3)+	.ENDR	RETURN.PAGE.SBTTL	TSTLIB -- RESTART EXCHANGE;; INPUT PARAMETERS:;;	WD.00	1;	WD.01	POINTER TO STATUS;; SEND BUFFER:;;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE -- BF.TRT;	WD.02	TRANSACTIN SEQUENCE;	WD.03	NUMBER (2 WORDS);	WD.04	CCB FOR TRANSACTIN INTANCE;;RESTRT::	MOV	#1,-(SP)	MOV	#BF.TRT,-(SP)		; FUNCTION CODE	JSR	R0,PRMVAL		; VALIDATE O.K	CALL	SNDEXM			; CALL EXECUTION MAMAG      ER	TST	M.ASR+M.CST		; SUCCESS	BMI	10$			; NO	SPND$S				; WAIT FOR ABORT FROM EXECUTION MGR.10$:	JMP	EXITR.PAGE.SBTTL	TSTLIB -- ADD/DELETE ROUTE	(AROUTE DROUTE);; INPUT PARAMETERS:;;	WD.00	2;	WD.01	PTR. TO DESTINATION NAME (ZERO IF DELETE ALL);	WD.02	PTR. TO STATUS BLOCK;;;; SEND BUFFER;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE ;	WD.03	NUMBER (2 WORDS);	WD.04	CCB ADDRESS FOR TRANSACTION;	WD.05	STATION NAME OF;	WD.06	ROUTE TO BE ADDED/DELETED;	WD.07	(3       WORDS ASCII) - NOT FOR DELETE ALL;;DROUTE::	MOV	#2,-(SP)	; VALIDATE PARAMETER	MOV	#BF.DRT,-(SP)	; FUNCTION CODE	JSR	R0,PRMVAL		; BLOCK;	CMP	#-1,(R5)	; PARAMETER SPECIFIED?	BEQ	10$		; NO	TST	(R5)		; IS A ROUTE SPECIFIED?	BEQ	10$		; NO SO DELETE ALL	TST	@(R5)		;	BNE	X110$:;; DELETE ALL ROUTES;	MOV	#BF.DAR,M.ASR+M.FUN	; RESET THE FUNCTION CODE	TST	(R5)+		; STEP OVER ROUTE PARAMETER	BR	X2		; INVOKE THE FUNCTION;;AROUTE::	MOV	#2,-(SP)	; VALIDATE	MOV	#BF.ART,-(SP)	; FUNCTION CODE	JSR	R0,PRMVAL		; PARAMETER BLOCK;      X1:	CALL	MOV3		; MOVE IN THE ROUTE NAMEX2:	CALL	SNDEXM		; INVOKE THE FUNCTION	JMP	EXITR		; AND EXITDALLRT::;; DELETE ALL ROUTES;	MOV	#1,-(SP)	MOV	#BF.DAR,-(SP)	JSR	R0,PRMVAL	BR	X2.PAGE.SBTTL	TSTLIB -- GET MESSAGE		(GETMSG);; INPUT PARAMETERS:;;	WD.00	4;	WD.01	PTR. TO BUFFER;	WD.02	PTR. TO BUFFER SIZE;	WD.03	PTR. TO STATION NAME;	WD.04	PTR. TO STATUS;;;; SEND BUFFER;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE ;	WD.03	NUMBER (2 WORDS);	WD.04	CCB ADDRESS F      OR TRANSACTION;	WD.05	VIRTUAL ADDR. (IN TST) OF BUFFER;	WD.06	BUFFER SIZE;	WD.07	NAME OF STATION;	WD.10	TO GET MESSAGE FROM;	WD.11	(3 WORDS ASCII);;GETMSG::GETMBX::	MOV	#4,-(SP)	; VALIDATE PARAMETER	MOV	#BF.GTM,-(SP)	JSR	R0,PRMVAL		; BLOCK;	MOV	R5,-(SP)	; VALIDATE WRITE	CALL	BUFVAL		; ACCESS TO BUFFER	TST	(SP)+;;	CALL	MOV3		; MOVE STATION NAME;	CALL	SNDEXM		; SEND TO TPM	JMP	EXITR		; AND EXIT ON RETURN.PAGE.SBTTL	TSTLIB -- GET NUMBER OF MAILBOX ENTRIES;;; INPUT PARAMETERS:;;	WD.01	3;	WD.01	POINTER TO ONE WO      RD REPLY BUFFER;	WD.02	POINTER TO STATION NAME;	WD.03	POINTER TO STATUS;; SEND BUFFER:;;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE;	WD.03	NUMBER (2 WORDS);	WD.04	CCB ADDRESS FOR TRANSACTION;	WD.05	STATION;	WD.06	NAME;	WD.07	(3 WORDS);;MBXNUM::	MOV	#3,-(SP)		; NUMBER OF PARAMETERS	MOV	#BF.MBN,-(SP)		; FUNCTION CODE	JSR	R0,PRMVAL		; VALIDATE	MOV	(R5)+,-(SP)		; SAVE THE REPLY BUFFER	CALL	MOV3			; MOVE STATION MANE IN	CALL	SNDEXM			; SEND TO EXECUTION MANA      GER	MOV	(SP)+,R0		; GET REPLY BUFFER	MOV	M.ASR+M.CIF,(R0)	; MOVE NUMBER IN	JMP	EXITR.PAGE.SBTTL	TSTLIB -- SPAWN TRANSACTION	(TSPAWN);; INPUT PARAMETERS:;;	WD.00	5;	WD.01	PTR. TO TRANSACTION TYPE NAME;	WD.02	PTR. TO BUFFER;	WD.03	PTR. TO BUFFER SIZE;	WD.04	PTR. TO RETURNED SEQUENCE NUMBER;	WD,05	PTR. TO STATUS BLOCK;;;; SEND BUFFER;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE ;	WD.03	(2 WORDS);	WD.04	CCB ADDRESS FOR TRANSACTION;	WD.05	TRANSACTION;	WD.06	T      YPE;	WD.07	NAME (3 WORDS ASCII);	WD.10	VIRTUAL ADDRESS OF BUFFER IN TST;	WD.11	BUFFER SIZE;TSPAWN::	MOV	#5,-(SP)	; VALIDATE PARAMETER	MOV	#BF.TOP,-(SP)	JSR	R0,PRMVAL		; BLOCK;;	CALL	MOV3		; MOVE IN TRANSACTION TYPE NAME;	CLR	-(SP)		; TEST READ	CALL	BUFVAL		; BUFFER	TST	(SP)+		;;	CALL	SNDEXM	; INVOKE TPM;; RETURN THE TRANSACTION SEQUENCE NUMBER;	MOV	(R5)+,R0	; GET ADDRESS TO RETURN IT TO	MOVB	M.ASR+M.CIF+0,(R0)+ ; FIRST WORD	MOVB	M.ASR+M.CIF+1,(R0)+	MOVB	M.ASR+M.CIF+2,(R0)+ ; SECOND WORD	MOVB	M.ASR+M.CIF+3,(      R0)+ ;;	JMP	EXITR.PAGE.SBTTL	TSTLIB -- ABORT TRANSACTION	(TABORT);; INPUT PARAMETERS:;;	WD.00	2;	WD.01	PTR. TO SEQUENCE NUMBER;	WD.02	PTR. TO STATUS BLOCK;;; SEND BUFFER;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE ;	WD.03	NUMBER (2 WORDS);	WD.04	CCB ADDRESS FOR TRANSACTION;	WD.05	TRANSACTION SEQUENCE NUMBER;	WD.06	(2 WORDS) ZERO IF CURRENT TRANSACTION;TABORT::	MOV	#2,-(SP)	; VALIDATE PARAMETER	MOV	#BF.TAB,-(SP)	JSR	R0,PRMVAL		; BLOCK;;	CMP	#-1,(R5)	; PA      RAMETER SPECIFIED?	BEQ	5$		; NO	TST	(R5)		; SEQUENCE NUMBER SPECIFIED?	BNE	20$		; YES SO GO MOVE IT IN5$:;	CLR	(R1)+		; CLEAR	CLR	(R1)+		; SEQUENCE NUMBER IN SEND BLOCK	TST	(R5)+		; STEP PARAMETER BLOCK ON ONE10$:	CLR	-(SP)		; CLEAR ABORT MARKER	TST	-2(R1)		; ID ZERO	BNE	15$		; NO	TST	-4(R1)		; TRY NEXT	BNE	15$		; NO	INC	(SP)		; SET MARKER15$:	CALL	SNDEXM		; INVOKE TPM	TST	(SP)+		; ABORT THIS TRANSACTION?	BEQ	17$		; NO	SPND$S;***17$:	JMP	EXITR		; EXIT20$:	CALL	MOV2		; MOVE IN THE SEQUENCE NUMBER	BR	10$.PAGE      .SBTTL	TSTLIB -- JOURNAL		(LOGTRN);; INPUT PARAMETERS;;	WD.00	4;	WD.01	PTR. TO BUFFER;	WD.02	PTR. TO BUFFER SIZE;	WD.03	POINTER TO LOG TYPE;	WD.04	PTR. TO STATUS BLOCK;; SEND BUFFER;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE ;	WD.03	NUMBER (2 WORDS);	WD.04	CCB ADDRESS FOR TRANSACTION;	WD.05	VIRTUAL ADDRESS (IN TST) OF BUFFER;	WD.06	BUFFER SIZE;	WD.07	LOG TYPE;LOGTRN::	MOV	#4,-(SP)	; VALIDATE	MOV	#BF.JRN,-(SP)	JSR	R0,PRMVAL	CLR	-(SP)	CALL	BUFVAL	TST	(SP      )+;	MOVB	@(R5),(R1)	; BYTE IN				;LBB001	TST	(R5)+	CALL	SNDEXM		; INVOKE TPM	JMP	EXITR		; RETURN.PAGE.SBTTL	TSTLIB -- GET TIME		(GETIME);; INPUT PARAMETERS:;;	WD.00	2;	WD.01	PTR. TO TIME BUFFER;	WD.02	PTR. TO STATUS BLOCK;; THIS CALL IS PROCESSED DIRECTLY IN THE TST VIA; THE GTIM$ DIRECTIVE;	.MCALL	GTIM$S;GETIME::	GTIM$S	2(R5)		; GET THE TIME PARAMETERS;	MOV	$DSW,@4(R5)	; RETURN THE STATUS	CLC	RETURN.PAGE.SBTTL	TSTLIB -- INFORMATION DIRECTIVES(GETSTN,GETMSR,GETRAN,GETSRC);; INPUT PARAMETERS:;;	WD.00	2;	WD.0      1	PTR. TO RETURN BUFFER;	WD.02	PTR. TO STATUS BLOCK;;; SEND BUFFER;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE ;	WD.03	NUMBER (2 WORDS);	WD.04	CCB ADDRESS FOR TRANSACTION;;GETSTN::	MOV	#BF.GST,-(SP)	; MOVE IN THE FUNCTION CODE	BR	G1			; COMMON PROCESSINGGETMSR::	MOV	#BF.GMS,-(SP)	; MOVE IN THE FUNCTION CODE	BR	G1			; COMMON PROCESSINGGETRAN::	MOV	#BF.GTR,-(SP)	; MOVE IN THE FUNCTION CODE	BR	G1			; COMMON PROCESSINGGETSRC::	MOV	#BF.GSC,-(SP)	; MOVE IN TH      E FUNCTION CODEG1:	MOV	(SP),-(SP)	MOV	#2,2(SP)		; VALIDATE	JSR	R0,PRMVAL			; PARAMETER BLOCK;	CALL	SNDEXM			; INVOKE TPM;	MOV	#M.ASR+M.CIF,R0		; RETURN VALUE -- STATION NAME	MOV	(R5)+,R1		; ADDRES FOR IT IN TST	MOVB	(R0)+,(R1)+	MOVB	(R0)+,(R1)+	MOVB	(R0)+,(R1)+	MOVB	(R0)+,(R1)+	MOVB	(R0)+,(R1)+	MOVB	(R0)+,(R1)+	JMP	EXITR.PAGE.SBTTL	TSTLIB -- GET FILE SPECIFICATION;;; INPUT PARAMETERS:;;	WD.00	3;	WD.01	POINTER TO LOGICAL FILE NAME;	WD.02	POINTER TO REPLY BUFFER;	WD.03	POINTER TO STATUS;; SEND BUFFER:;;	WD.00      	CONTEXT BLOCK ADDRESS IN DATA MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE;	WD.03	NUMBER (2 WORDS);	WD.04	CCB;	WD.05	LOGICAL;	WD.06	FILE NAME;	WD.07	(3 WORDS);	WD.08	BUFFER ADDRESS;;GETFIL::	MOV	#3,-(SP)			; 3 PARAMETERS	MOV	#BF.NAM,-(SP)			;	JSR	R0,PRMVAL	CALL	MOV3				; LOGICAL FILE NAME	MOV	(R5)+,(R1)			; BUFFER ADDRESS	CALL	SNDDM	JMP	EXITR.PAGE.SBTTL	TSTLIB -- DATA MANAGER FUNCTIONS;;;; INPUT PARAMETERS:;;	WD.00	NUMBER OF PARAMETERS (1,2 OR 3);	WD.01	FAB OR RAB POINTER;	WD.02	ERROR ROUTINE A      DDRESS (OPTIONAL);	WD.03	SUCCESS ROUTINE ADDRESS (OPTIONAL;;; SEND BUFFER;	WD.00	CONTEXT BLOCK ADDRESS IN EXECUTION MANAGER;	WD.01	FUNCTION CODE;	WD.02	TRANSACTION SEQUENCE ;	WD.03	NUMBER (2 WORDS);	WD.04	CCB ADDRESS FOR TRANSACTION;	WD.05	CHANNEL NUMBER;	WD.06	ADDRESS OF FAB;	WD.07	ADDRESS OF RAB;.PAGE.SBTTL	TSTLIB -- MISC. RMS OPERATIONS$RMSIN::$RTNCB::		; RETURN CONTROL BLOCK$RTKYB::		; RETURN KEY BUFFER$RMINF::		; INITALISE 'IF'	CLC	RETURN.SBTTL TSTLIB -- UNSUPPORTED RMS ROUTINES$RMEXT::		; EXTEND FILE$      RMTRU::		; TRUNCATE FILE$RMREW::		; REWIND$RMNXT::		; NEXT VOLUME	MOV	R5,-(SP)	MOV	2(R5),R5	; GET THE RAB/FAB	$STORE	#ER$IOP,STS,R5	; SET NO SUPPORTED ERROR CODE	MOV	(SP)+,R5	RETURN.PAGE.SBTTL	TSTLIB -- CONNECT;$RMCON::	MOV	#BF.CNT,M.ASR+M.FUN	; FUNCTION CODE	BR	RECOP			; DO COMMON PROCESSING.PAGE.SBTTL	TSTLIB -- DISCONNECT;$RMDIS::	MOV	#BF.DCT,M.ASR+M.FUN	; FUNCTION CODE	BR	RECOP			; COMMON CODE.PAGE.SBTTL	TSTLIB -- GET RECORD;$RMGET::	MOV	#BF.GET,M.ASR+M.FUN	; FUNCTION CODE	BR	RECOP			; COMMON ROUTINE.PAG      E.SBTTL	TSTLIB -- FREE ALL LOCKS;$RMFRE::	MOV	#BF.FRE,M.ASR+M.FUN	BR	RECOP.PAGE.SBTTL	TSTLIB -- FIND RECORD;$RMFIN::	MOV	#BF.FIN,M.ASR+M.FUN	; FUNCTION CODE	BR	RECOP.PAGE.SBTTL	TSTLIB -- PUT RECORD;$RMPUT::	MOV	#BF.PUT,M.ASR+M.FUN	; FUNCTION CODE	BR	RECOP			; COMMON CODE.PAGE.SBTTL	TSTLIB -- DELETE RECORD;$RMDEL::	MOV	#BF.DEL,M.ASR+M.FUN	; FUNCTION CODE	BR	RECOP			; COMMON CODE.PAGE.SBTTL	TSTLIB -- UPDATE RECORD;$RMUPD::	MOV	#BF.UP,M.ASR+M.FUN	; FUNCTION CODE	BR	RECOP			; COMMON CODE.PAGE.SBTTL	TSTLIB -- UN      LOCK RECORD;$RMREL::	MOV	#BF.UNK,M.ASR+M.FUN	; FUNCTION CODE	BR	RECOP.PAGE.SBTTL	TSTLIB -- CREATE FILE;$RMCRE::	MOV	#BF.CRF,M.ASR+M.FUN	; FUNCTION CODE	BR	FILOP			; COMMON CODE.PAGE.SBTTL	TSTLIB -- OPEN FILE$RMOPE::	MOV	#BF.OPE,M.ASR+M.FUN	BR	FILOP.PAGE.SBTTL	TSTLIB -- DISPLAY FILE$RMDSP::	MOV	#BF.DSP,M.ASR+M.FUN	;	BR	FILOP.PAGE.SBTTL	TSTLIB -- CLOSE FILE$RMCLO::	MOV	#BF.CLO,M.ASR+M.FUN	BR	FILOP.PAGE.SBTTL	TSTLIB -- ERASE FILE;$RMERA::	MOV	#BF.ERF,M.ASR+M.FUN	; FUNCTION CODE;;; COMMON CODE FOR FILE FUNCTION      S;;FILOP:	MOV	R4,-(SP)	CLR	-(SP)	MOV	2(R5),R4		; GET FABFILOP2:	CLR	M.ASR+M.TCB+2		; CLEAR THE CHANNEL NUMBER	MOV	R4,M.ASR+M.TCB+2+2	; FAB	CLR	M.ASR+M.TCB+2+4		; RAB	JMP	CALLDM.PAGE;; COMMON RECORD FUNTION CODE;	.ENABL	LSBRECOP:	MOV	R4,-(SP)		; SAVE R4	MOV	#5,-(SP)		; RETRY COUNT FOR DME	MOV	2(R5),R4		; GET THE RAB	$TESTBITS	#RB$LOC,ROP,R4	; LOCATE MODE	BNE	10$			; YES -- ERRORRECOP1:	$FETCH	M.ASR+M.TCB+2,ISI,R4	; CHANNEL NUMBER	$FETCH	M.ASR+M.TCB+2+2,FAB,R4	; FAB	MOV	R4,M.ASR+M.TCB+2+4	; RAB	JMP	CALLDM10$:      	MOV	#-1,M.ASR+M.CST	MOV	#ER$ROP,M.ASR+M.CIF	JMP	CLDM2	.DSABL	LSB.PAGE.PAGE.SBTTL	VTRTRM - DEBUG MODE SUPPORT;;	THIS ROUTINE CHECKS FOR A DEBUGGER MESSAGE;	AND PERFORMS THE TRANSFER.;VTRTRM:	MOV	R0,-(SP)	; SAVE R0	TST	M.ASR+M.CXT	; IF TST DEBUG THE E.M. CONTEXT BLOCK IS ZERO	BNE	10$		; ITS A LIVE TP	MOV	#M.ASR+M.CFB+12,R0; POINT AT RECEIVE BUFFER	CMPB	-6(R0),#377	;SPECIAL FUNCTION CODE	CLC	BNE	10$		;NO - THEN LEAVE	CLEF$S	#24.	QIOW$S	-(R0),#15,#23.,,#M.ASR+M.CFB+12,,<-(R0),-(R0)>;	TSTB	M.ASR+M.CFB+12		; I/O   r    SUCCESSFUL?	BGE	5$		; YES THE LEAVE	EMST$S	#EX$SEV	; OTHERWISE A BUFFER ERROR5$:	SEC10$:	MOV	(SP)+,R0	RETURN	.ENDr          œ	G^“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	AUTOCO					&	!	Version:	V1.1					&	!	Edit level:	00					&	!	Edit date:	3-APR-79				&	!	Author(s):	BJD					&	!			LBB					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!      		     COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	      !								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1/01 3-APR-79  LBB	V1.1 - 11/70 minimum memory size&	!				  is 384KB. 11/34 minimum memory&	!				  size is 256KB. Stmt 10800	&	!				  Change herald. Stmt 1898.	&	!	V1.1/02 8-JUN-79  LBB	V1.1 - Don't print version 	&	!				  number in herald . Stmt 1898.	&	!				Initialize SPECIALn%(11%) to	&	!				  -1.  Stmt 2150.  Pa      rt of	&	!				  a number of changes designed	&	!				  to allow AUTOSIZE to remember	&	!				  the user's answers to DZ	&	!				  questions.			&	!				  SPR T205275			&	!				Make similar changes to allow 	&	!				  AUTOSIZE to remember previous	&	!				  answers about DUPs, processor	&	!				  type, etc.			&	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I       P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!								&	!	      1		Autosize file				&	!	     13		Terminal I/O				&	!								&	!***************************************************************&410	!$***      ***********************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!			I N   A U T O C O			&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			temporary working variable	&	!	A1$			temporary string		&	!	A2$			temporary string		&	!	ASK.RANGE()		limits size of dialog responses	&	!	AUTO.DEV.SYS%		internal flag for development	&	!				  system			&	!	COMMAND$		command to be       BRED		&	!	CSR%			current csr value		&	!	CSR.LIMIT%		# of entries in floating CSR	&	!				  table				&	!	DB%			TRAX supported system working	&	!				  flag				&	!	DIR.ERR%		error flag for directives	&	!	DIRECTIVE.ERROR%	another exec call error flag	&	!	DM%			TRAX supported system working	&	!				  flag				&	!	DR%			TRAX supported system working	&	!				  flag				&	!	ESCAPE%			handles back-tracking		&	!	EVEN.UP%		forces DH alignment in CSR	&	!	FIELD.SERVICE%		flag for stripped down F/S	&	!				  version			&	!	FLOA      TING.INDEX%()	pointers into assignment table	&	!				for floating CSR gadgets	&	!	FORCE.DIALOG%		flag to force long dialog if	&	!				  error				&	!	I%			loop index			&	!	INDEX%			holds assignment table indices	&	!	K%			loop index			&	!	KMC.NEEDED%		# of KMCs needed		&	!	L%			loop control index		&	!	LENGTH%			holds length of a csr block	&	!	LONG.FORM%		forces long prompts		&	!	MAP.*			Map versions of CPU common	&	!				  variables			&	!	MIN.SYS%		flag for minimum system		&	!				  configuration			&	!	MM%			TRAX       supported system working	&	!				  flag				&	!	REAL.TABLE.SIZE%	the definitive version of the	&	!				  table size			&	!	REGION1%()		GENCOM region def block		&	!	RETURN%			=1 if errors are to be non-fatal&	!				  in BRED task			&	!	S%			temporary working variable	&	!	SPAWN.ERROR%		error flag for spawn module	&	!	START.ADDRESS%		working variable for CSR	&	!				  computation			&	!	STARTING.VECTOR%	octal 300 - base of floating	&	!				  vectors			&	!	T%			temporary working variable	&	!	T.*			Map versions of comm      on variables&	!	TASK$			name of task to BREED		&	!	TASK.NAME$		Name under which task is run	&	!	TASK.PAR%()		GET TASK PARAM call array	&	!	VECTOR%			current vector assigned		&	!	VECTOR.INDEX%()		Pointer into assignment table	&	!				for floating vector gadgets	&	!	VECTOR.LIMIT%		size of table of floating vector&	!				  table				&	!	WINDOW1%()		APR 6 window descriptor		&	!								&	!***************************************************************&700	!$*********************************************************      *****&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!	10100		Compute CSR addresses for floating things&	!	10200		Compute vector addresses for same	&	!	10300		Read the autosize file			&	!	10400		Write the autosize file			&	!	10800		Is minimum system present		&	!								&	!	 7000		Spawn the autosize report		&	!	20001		Breed a task				&	!								&	!****************************      ***********************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	25000	FN.ASK%()	Sysgen dialog file		&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M       M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&	!								&	!	See the build files - much gets appended in		&817	\ COM (SYSMIL)	FUDGE.FACTOR%					&	!								&	!	Fudge factor for the Mill system			&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Line      s 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&902	\ DIM TASK.PAR%(17)						&	!								&	!	Array for Get Task Parameter call			&951	!$**************************************************************&	!                                                               &	!                                                               &	! 	A U T O S       I Z E    F I L E    M A P    S T A T E M E N T&	!                                                               &	!                                                               &	!***************************************************************&	\ MAP	(TABLE)							&			T.DEV.NAME$=16,					&			T.FIRST.CSR%,					&			T.SYSGEN.CSR%,					&			T.VECTOR%,					&			T.FILL$=1,					&			T.PRIORITY$=3,					&			T.MATCH%,					&			T.CSR.LENGTH%,					&			T.VECTOR.LENGTH%,				&			T.NO.OF.DEVICES%,				&			T.TPS.CLASS%,					&		      	T.MAX.DEV%,					&			T.QUESTION%,					&			T.SPECIAL0%,					&			T.SPECIAL1%,					&			T.SPECIAL2%,					&			T.SPECIAL3%,					&			T.SPECIAL4%,					&			T.SPECIAL5%,					&			T.JUNK$=12					&	!								&	!	The map for the assignment table portion of the 	&	!	information stored on disk.				&952	\ MAP	(CPU)							&			MAP.CPU%,					&			MAP.FPP%,					&			MAP.CACHE%,					&			MAP.KT11%,					&			MAP.PARITY%,					&			MAP.TPS%,					&			MAP.HIGH%,					&			MAP.HERTZ%,					&			MAP.SIZE%,					&			MAP.VECTOR$=6,					&			MAP.DEV.      SYS%,					&			MAP.JUNK$=38					&	!								&	!	map for the CPU option stuff				&	!								&	!***************************************************************&	!								&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1001	\ ON ERROR GO TO 190      00						&	\ CALL GETTSK BY REF (TASK.PAR%(),DIR.ERR%)			&	\ A1$= RAD$(TASK.PAR%(0))					&	\ A2$= RAD$(TASK.PAR%(1))					&	\ TASK.NAME$= EDIT$(A1$ + A2$, 2%)				&1898	\ FIELD.SERVICE%= 0%						&	\ FIELD.SERVICE%= 1%	IF EDIT$(TASK.NAME$,2%) = "TT0"		&	!								&	\ PRINT "AUTOSZ"		IF EDIT$(TASK.NAME$,2%)<> "AUTO"!V1.1/2&	\ PRINT 			IF EDIT$(TASK.NAME$,2%)<> "AUTO"&	\ GO TO 1900			IF EDIT$(TASK.NAME$,2%)= "AUTO"	&	\ PRINT "Hardware autosize program - special Field Service version"&					IF EDIT$(TASK.NAME$,2%)=       "TT0"	&	\ PRINT "System hardware configuration generator"		&					IF EDIT$(TASK.NAME$,2%)<> "TT0"	&	\ PRINT								&	!								&	!	Determine if Field service or sysgen is running this program&	!	Sysgen uses the name AUTO				&	!	If F/S, hardware uatosizer is run - some modules are skipped&1100	\ REGION1%(2)= 7%*40%**2% + 5%*40% + 14%			&	\ REGION1%(3)= 3%*40%**2% + 15%*40% + 13%			&	!								&	\ REGION1%(1%)= 128%		!Region size			&	\ REGION1%(4%)= 0%		!Default partition		&	\ REGION1%(5%)= 0%		!				&	\ REGION1%      (6%)= 8% + 32% + 2% + 1% + 128%			&	!								&	! attach region, read, write, access  & delete on detach	&	!								&	\ REGION1%(7%)= 0%		!Give the world complete access	&	!								&	\ CALL CRRG BY REF (REGION1%(),DIRECTIVE.ERROR%)		&	\ GO TO 1175	IF DIRECTIVE.ERROR% <> 1%			&	\ GO TO 1150							&	!								&	!	Attach to the Gencom region				&	!	This is relly only used in AUTOCO to pass on LONG.FORM%	&	!	If pressed for space, get this , detach  and then use the &	!	same window for the autosize common region.	      	&1150	\ WINDOW1%(0%)= 6%		!Base APR of common region WINDOW1&	\ WINDOW1%(0%)= SWAP% (WINDOW1%(0%) )				&	\ WINDOW1%(2%)= 128%		! WINDOW1 size			&	\ WINDOW1%(3%)= REGION1%(0%)	! region ID			&	\ WINDOW1%(4%)= 0%		! Offset			&	\ WINDOW1%(5%)= 0%		! Length mapped			&	\ WINDOW1%(6%)= 2% + 2%*8%**2% + 4%*8%**2%			&	!								&	!	Specify MAP, alignment, & write access			&	!								&	\ CALL CRAW BY REF ( WINDOW1%(), DIRECTIVE.ERROR%)		&	\ GO TO 1180	IF DIRECTIVE.ERROR% <> 1%			&	\ GO TO 1201							&	!								&	!	He      re we map the GENCOM common region.  			&1175	\ PRINT "? FATAL error in the CREATE REGION directive."		&	\ RESUME 32000							&	!								&	!	Error message for failed CREATE REGION directive	&1180	\ PRINT "? FATAL error in MAPPING directive."			&	\ RESUME 32000							&	!								&	!	Couldn't map window to region				&1185	\ PRINT "? FATAL error in DETACH REGION directive."		&	\ RESUME 32000							&	!								&	!	Couldn't detach ( & delete) region			&1201	\ REAL.TABLE.SIZE%= 27%						&	\ A%= FN.SETUP.DIALOGUE%		      			&	!								&	!	Tell the program how big the table is			&	!	& initialize the dialog code				&1900	!$**************************************************************&	!                                                               &	!                                                               &	! 	INITIALIZE THE SHARED COMMON REGION			&	!                                                               &	!                                                               &	!*************************************      **************************&	!								&	!	Note that such regions are not initially cleared by	&	!	Basic+2							&	!								&	\ FOR I%= 1% TO REAL.TABLE.SIZE%				&		\ DEV.NAME$(I%)= ""					&		\ FIRST.CSR%(I%)= 0%					&		\ SYSGEN.CSR%(I%)= 0%					&		\ VECTOR%(I%)= 0%					&		\ PRIORITY$(I%)= "5"					&		\ MATCH%(I%)= -1%					&		\ CSR.LENGTH%(I%)= 8%					&		\ VECTOR.LENGTH%(I%)= 4%				&		\ NO.OF.DEVICES%(I%)= 0%				&		\ TPS.CLASS%(I%)= 0%					&		\ MAX.DEV%(I%)= 1%					&		\ QUESTION%(I%)= 1%					&		\ SPECIAL0%(I%)      = 0%					&		\ SPECIAL1%(I%)= 0%					&		\ SPECIAL2%(I%)= 0%					&		\ SPECIAL3%(I%)= 0%					&		\ SPECIAL4%(I%)= 0%					&		\ SPECIAL5%(I%)= 0%					&	\ NEXT I%							&	!								&	!	Initialize the common assignment table - this is 	&	!	necessary since it is set up via a CRRG directive	&	!								&	!								&	\ TAB.CPU%= 0%							&	\ TAB.FPP%= 0%							&	\ TAB.CACHE%= 0%						&	\ TAB.KT11%= 0%							&	\ TAB.PARITY%= 0%						&	\ TAB.TPS%= 0%							&	\ TAB.HIGH%= 0%							&	\ TAB.HERTZ%= 0%						&	\ TAB.SIZE%= 0%		      					&	\ TAB.VECTOR$= ""						&	\ TINKERED.WITH% = 0%						&	\ AUTO.LONG.FORM%= SYSGEN.LONG.FORM%				&	!								&	!	Initialize the assignment table	 - CPU portion		&	!								&	\ FOR I%= 1% TO 25%						&		\ FLOATING.INDEX%(I%)= 0%				&	\ NEXT I%							&	!								&	\ FOR I%= 1% TO 35%						&		\ VECTOR.INDEX%(I%)= -1%				&	\ NEXT I%							&	!								&	!	Initialize the floating device tables			&	!								&	\ TABLE.SIZE%= REAL.TABLE.SIZE%					&	\ HOME.BASE%= 0%						&	!								&	!	Set up the global value of the       table size		&	!								&2050	!$**************************************************************&	!                                                               &	!                                                               &	! 	INITIALIZE THE TABLE OF DEVICES WITH FLOATING CSR 	&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ FLOATING.INDEX%(      1%)	=	17%	! DJ11			&	\ FLOATING.INDEX%(2%)	=	18%	! DH11			&	\ FLOATING.INDEX%(3%)	=	19%	! DQ11			&	\ FLOATING.INDEX%(4%)	=	20%	! DU11			&	\ FLOATING.INDEX%(5%)	=	10%	! DUP11			&	\ FLOATING.INDEX%(7%)	=	24%	! LK11			&	\ FLOATING.INDEX%(8%)	=	13%	! DMC11			&	\ FLOATING.INDEX%(9%)	=	11%	! DZ11			&	\ FLOATING.INDEX%(10%)	=	9%	! KMC11			&	!								&	!	Initialize the table of floating CSR address devices	&2075	!$**************************************************************&	!                                                                     &	!                                                               &	! 	INITIALIZE TABLE OF DEVICES WITH FLOATING VECTORS	&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ VECTOR.INDEX%(1%)	=	25%	! DC11			&	\ VECTOR.INDEX%(2%)	=	22%	! DL11a,b		&	\ VECTOR.INDEX%(3%)	=	-1%	! DP11			&	\ VECTOR.INDEX%(4%)	=	-1%	! DM11a			&	\       VECTOR.INDEX%(5%)	=	-1%	! DN11			&	\ VECTOR.INDEX%(6%)	=	23%	! DM11-bb		&	\ VECTOR.INDEX%(7%)	=	21%	! DR11			&	\ VECTOR.INDEX%(8%)	= 	-1%	! Dummy holds place	&	\ VECTOR.INDEX%(9%)	=	26%	! Card Reader		&	\ VECTOR.INDEX%(10%)	=	27%	! Card punch		&	\ VECTOR.INDEX%(11%)	=	-1%	! LPD 			&	\ VECTOR.INDEX%(12%)	=	-1%	! DT11			&	\ VECTOR.INDEX%(13%)	=	-1%	! DX11			&	\ VECTOR.INDEX%(14%)	=	7%	! DL11c,d,e		&	\ VECTOR.INDEX%(15%)	=	17%	! DJ11			&	\ VECTOR.INDEX%(16%)	=	18%	! DH11			&	\ VECTOR.INDEX%(17%)	=	-1%	! GT40		      	&	\ VECTOR.INDEX%(18%)	=	-1%	! LPS			&	\ VECTOR.INDEX%(19%)	=	19%	! DQ11			&	\ VECTOR.INDEX%(20%)	=	-1%	! KW11-W		&	\ VECTOR.INDEX%(21%)	=	20%	! DU11			&	\ VECTOR.INDEX%(22%)	=	10%	! DUP			&	\ VECTOR.INDEX%(23%)	=	12%	! DV11			&	\ VECTOR.INDEX%(24%)	=	24%	! the mysterious LK11	&	\ VECTOR.INDEX%(25%)	=	-1%	! DWUN			&	\ VECTOR.INDEX%(26%)	=	13%	! DMC11			&	\ VECTOR.INDEX%(27%)	=	11%	! DZ11			&	\ VECTOR.INDEX%(28%)	=	-1	! DWR70			&	\ VECTOR.INDEX%(29%)	=	-1%	! LPP11			&	\ VECTOR.INDEX%(30%)	=	-1%	! VMV21			&	      \ VECTOR.INDEX%(31%)	=	-1%	! VMV31			&	\ VECTOR.INDEX%(32%)	=	9%	! KMC11			&	!								&	!	Set up the table of floating vector devices		&2100	!$**************************************************************&	!                                                               &	!                                                               &	! 	I N I T I A L I Z E    A S S I G N M E N T    T A B L E &	!                                                               &	!                                                                     &	!***************************************************************&2101	\ DEV.NAME$(1%) = "RH70 Controller "				&	\ FIRST.CSR%(1%)	= -576% 	!176700OCT		&	\ VECTOR%(1%)		= 172%		! 254o			&	\ TPS.CLASS%(1%)	= 1%					&	!								&	!								&	\ DEV.NAME$(2%) = "RH70 Controller "				&	\ FIRST.CSR%(2%)	= -2784%	! 172440 OCT		&	\ VECTOR%(2%)		= 148%		! 224 octal		&	\ CSR.LENGTH%(2%)	= 32%					&	\ TPS.CLASS%(2%)	= 1%					&	!								&	!								&	\ DEV.NAME$(3%)= "RH70 Controller "				&	\ FIRST.CSR%      (3%)	= -832%		! 176300	OCT	&	\ VECTOR%(3%)		= 104%		! 150 octal		&	\ CSR.LENGTH%(3%)	= 32%					&	\ TPS.CLASS%(3%)	= 1%					&	!								&	!								&	\ DEV.NAME$(4%) = "RH70 Controller "				&	\ FIRST.CSR%(4%)	= -3040%	! 172040 OCT		&	\ VECTOR%(4%)		= 132%					&	\ CSR.LENGTH%(4%)	= 32%					&	\ TPS.CLASS%(4%)	= 1%					&	!								&	!								&	\ DEV.NAME$(5%)		= "TS03/TU10 TAPE"			&	\ FIRST.CSR%(5%)	= -2736%	! 172520		&	\ VECTOR%(5%)		= 148%					&	\ CSR.LENGTH%(5%)	= 16%					&	\ TPS.CLASS%(5%)	= 0%					&	\ MAX.DEV      %(5%)		= 8%					&	!								&	!								&	\ DEV.NAME$(6%)		= "Console DL"				&	\ FIRST.CSR%(6%)	= -144%		! 177560 octal		&	\ VECTOR%(6%)		= 48%		! 60 octal		&	\ TPS.CLASS%(6%)	= 3%					&	\ VECTOR.LENGTH%(6%)	= 8%					&	!								&	!								&2150	\ DEV.NAME$(7%)		= "DL11-D"				&	\ TPS.CLASS%(7%)	= 3%					&	\ FIRST.CSR%(7%)	= -1144%	! 175610		&	\ MAX.DEV%(7%)		= 8%					&	\ VECTOR.LENGTH%(7%)	= 8%					&	!								&	!								&	\ DEV.NAME$(8%)		= "LP11"				&	\ FIRST.CSR%(8%)	= -6140		! 164004		&	\ VECTOR%(8%)		= 120      %					&	\ PRIORITY$(8%)		= "4"					&	\ CSR.LENGTH%(8%)	= 4%					&	\ TPS.CLASS%(8%)	= 3%					&	\ QUESTION%(8%)		= 2%					&	\ SPECIAL0%(8%)		= -180%		! 177514		&	\ SPECIAL1%(8%)		= 128%		! 200 oct		&	\ MAX.DEV%(8%)		= 8%					&	!								&	!								&	\ DEV.NAME$(9%)		= "KMC11"				&	\ VECTOR.LENGTH%(9%)	= 8%					&	\ TPS.CLASS%(9%)	= 3%					&	\ MAX.DEV%(9%)		= 10%					&	!								&	\ DEV.NAME$(10%)	= "DUP11"				&	\ VECTOR.LENGTH%(10%)	= 8%					&	\ TPS.CLASS%(10%)	= 3%					&	\ QUESTION%(10%)	= 4%					&	\ MAX.DEV%(1      0%)		= 20%					&	\ SPECIAL0%(10%)	= -1%					!V1.1/2&	\ SPECIAL1%(10%)	= -1%					!V1.1/2&	\ SPECIAL2%(10%)	= -1%					!V1.1/2&	!								 V1.1/2&	!	Initializing SPECIALn%(10%) indicates that the DUP	 V1.1/2&	!	  questions haven't been answered yet.			 V1.1/2&	!								&	\ DEV.NAME$(11%)	= "DZ11"				&	\ VECTOR.LENGTH%(11%)	= 8%					&	\ TPS.CLASS%(11%)	= 3%					&	\ QUESTION%(11%)	= 5%					&	\ MAX.DEV%(11%)		= 8%					&	\ SPECIAL0%(11%)	= -1%					!V1.1/2&	\ SPECIAL2%(11%)	= -1%					!V1.1/2&	\ SPECIAL3%(11%)	= -1%	      				!V1.1/2&	\ SPECIAL4%(11%)	= -1%					!V1/1/2&	!								 V1.1/2&	!	Initializing SPECIALn%() to -1 indicates that the	 V1.1/2&	!	DZ questions have not yet been answered.		 V1.1/2&	!								&	\ DEV.NAME$(12%)	= "DV11"				&	\ VECTOR.LENGTH%(12%)	= 16%					&	\ TPS.CLASS%(12%)	= 0%					&	\ FIRST.CSR%(12%)	= -1536%				&	\ CSR.LENGTH%(12%)	= 32%					&	\ MAX.DEV%(12%)		= 3%					&	!								&	\ DEV.NAME$(13%)	= "DMC11"				&	\ VECTOR.LENGTH%(13%)	= 8%					&	\ TPS.CLASS%(13%)	= 3%					&	\ QUESTION%(13%)	= 3%					&	\       MAX.DEV%(13%)		= 4%					&	!								&	\ DEV.NAME$(14%)	= "RK07"				&	\ FIRST.CSR%(14%)	= -224%		! 177440		&	\ VECTOR%(14%)		= 136%					&	\ CSR.LENGTH%(14%)	= 32%					&	\ TPS.CLASS%(14%)	= 2%					&	\ QUESTION%(14%)	= 6%					&	\ MAX.DEV%(14%)		= 8%					&	!								&	\ DEV.NAME$(15%)	= "KW11-L"				&	\ FIRST.CSR%(15%)	= -154%		! 177546		&	\ VECTOR%(15%)		= 64%		! 100o			&	\ PRIORITY$(15%)	= "6"					&	\ CSR.LENGTH%(15%)	= 2%					&	\ TPS.CLASS%(15%)	= 3%					&	!								&	\ DEV.NAME$(16%)	= "KW11-P"				&	\ FIRST.CSR      %(16%)	= -2720%	! 172540		&	\ VECTOR%(16%)		= 68%		! 104o			&	\ PRIORITY$(16%)	= "6"					&	\ CSR.LENGTH%(16%)	= 6%					&	\ TPS.CLASS%(16%)	= 3%					&	!								&	\ DEV.NAME$(17%)	= "DJ11"				&	\ VECTOR.LENGTH%(17%)	= 8%					&	\ MAX.DEV%(17%)		= 10%					&	!								&	\ DEV.NAME$(18%)	= "DH11"				&	\ CSR.LENGTH%(18%)	= 16%					&	\ VECTOR.LENGTH%(18%)	= 8%					&	\ MAX.DEV%(18%)		= 10%					&	!								&	\ DEV.NAME$(19%)	= "DQ11"				&	\ VECTOR.LENGTH%(19%)	= 8%					&	\ MAX.DEV%(19%)		= 10%					&	!								&	\ DEV.NA      ME$(20%)	= "DU11"				&	\ VECTOR.LENGTH%(20%)	= 8%					&	\ MAX.DEV%(20%)		= 10%					&	!								&	\ DEV.NAME$(21%)	= "DR11"				&	\ FIRST.CSR%(21%)	= -2808%				&	!								&	!								&	\ DEV.NAME$(22%)	= "DL11A,B"				&	\ FIRST.CSR%(22%)	= -704%					&	\ VECTOR.LENGTH%(22%)	= 8%					&	\ MAX.DEV%(22%)		= 8%					&	!								&	!								&	\ DEV.NAME$(23%)	= "DM11-BB Modem"			&	\ FIRST.CSR%(23%)	= -3776%				&	\ MAX.DEV%(23%)		= 16%					&	\ VECTOR.LENGTH%(23%)	= 8%					&	!								&	\ DEV.NAME$(24%)	= "LK11"				&	!						      		&	\ DEV.NAME$(25%)	= "DC11"				&	\ FIRST.CSR%(25%)	= -2048%		! 174000	&	\ VECTOR.LENGTH%(25%)	= 8%					&	\ MAX.DEV%(25%)		= 16%					&	!								&	!								&	\ DEV.NAME$(26%)	= "PA611 Card Read"			&	\ FIRST.CSR%(26%)	= -2688%				&	!								&	\ DEV.NAME$(27%)	= "PA611 Card Punch"			&	\ FIRST.CSR%(27%)	= -2624%				&3000	!$**************************************************************&	!                                                               &	!                                                                     &	! 	S Y S G E N    D I A L O G 				&	!                                                               &	!                                                               &	!***************************************************************&	\ ESCAPE%= 0%							&	\ LONG.FORM%= SYSGEN.LONG.FORM%					&	\ LONG.FORM%= FALSE%	IF EDIT$(TASK.NAME$,2%) <> "AUTO"			&	\ SYSGEN.LONG.FORM%= FALSE%	IF EDIT$(TASK.NAME$,2%) <> "AUTO"&	\ AUTO.LONG.FORM%= FALSE%	IF EDIT$(TASK.NAME$,2%) <> "AUTO"&	\ AUTO.DEV.SYS%= DEV.SYS%			      		&	\ STARTING.VECTOR%= 192%	! starting interrupt vector	&					! = 300 octal			&	\ FORCE.DIALOG%= 0%						&	\ GO TO 3020	IF FIELD.SERVICE%= 1%				&	!								&	!	Initialize the ESCAPE variable				&	!	Initialize the long form 				&	! 	Initialize other values					&3010	\ ON FN.ASK% (110%,"YES","Y",FALSE%,1%)				&			GO TO 32100,32200,3020,3110			&	!								&	!	"Stand-alone on target machine" question		&3020	\ SUBSTITUTE.TEXT$(1%)= ""					&	\ ON FN.ASK%(152%,"11-70","/11-70/11-34/11-60",FALSE%,1%)	&		GO TO 32100      ,32200,3021,3022,3023			&	!								&	!	Determine CPU type					&3021	\ TAB.CPU%= 70%							&	\ DEV.NAME$(1%)= "RH70 Cont. #1   "				&	\ DEV.NAME$(2%)= "RH70 Cont. #2   "				&	\ DEV.NAME$(3%)= "RH70 Cont. #3   "				&	\ DEV.NAME$(4%)= "RH70 Cont. #4   "				&	\ GO TO 3027							&	!								&	!	System is 11-70 with RH controllers			&3022	\ TAB.CPU%= 34%							&	\ GO TO 3024							&	!								&	!	System is 11-34 (almost an 11-60)			&3023	\ TAB.CPU%= 60%							&3024	\ DEV.NAME$(1%)= "RH11 Cont #1    "				&	\ DEV.NAM      E$(2%)= "RH11 Cont #2    "				&	\ DEV.NAME$(3%)= "RH11 Cont #3    "				&	\ DEV.NAME$(4%)= "RH11 Cont #4    "				&	\ GO TO 3027							&	!								&	!	11-60 has no RH controllers				&3027	\ TASK$= "...INS"						&	\ COMMAND$="INS [1,54]AUTOSZ/TASK=AUTOSZ"			&	\ GOSUB 20001							&	!								&	\ TASK$= "AUTOSZ"						&	\ COMMAND$= "AUTOSZ"						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	\ ESCAPE%= 1%	IF SPAWN.ERROR% = 27%*8% + 1%			&	\ ESCAPE%= 2%	IF SPAWN.ERROR% = 26%*8% + 2%			&	!							      	&	\ TASK$= "MCR..."						&	\ COMMAND$= "REM AUTOSZ"					&	\ GOSUB 20001							&	!								&	!	Go autosize the target machine				&	!								&	\ GO TO 3029	IF SPAWN.ERROR% <> 1%				&	\ GO TO 3000	IF ESCAPE%= 1%					&	\ GO TO 32200	IF ESCAPE%= 2%					&	\ GO TO 3030							&3029	\ PRINT "% Error in spawning the autosizing module. "		&	\ PRINT "You will "						&			+ "have to use a different method of supplying"	&			+ " peripheral device data!"			&	\ GO TO 3110							&	!								&	!	Autosize module could not be spa      wned.  User may either	&	!	use Autosize file, answer the questions manually, or	&	!	end SYSGEN with a CTRL-Z				&3030	\ GOSUB 10100							&	!								&	!	Compute CSR addresses and vectors			&3031	\ GOSUB	10800							&	!								&	!	Determine if minimum system is present			&3032	\ GOSUB	7000							&	!								&	!	Print the autosize report				&	!								&	\ GO TO 3050	IF FORCE.DIALOG%= 0%				&	\ GO TO 3050	IF FIELD.SERVICE%= 1%				&	\ PRINT 							&	\ PRINT "You have been forced to go through the full dialog!"	&      	\ PRINT								&	\ GO TO 3500							&	!								&	!	If certain devices are missing, the user is forced to 	&	!	go through the full dialog.				&3050	\ PRINT								&	\ CALL EXITS2 (1%,0%)	IF FIELD.SERVICE%= 1%			&	\ ON FN.ASK% (115%,"YES","Y",FALSE%,2%)				&			GO TO 3000,32000,3075,3500			&	!								&	!	"Autosize report acceptable" question			&	!								&3075	\ GOSUB 10400							&	!								&	!	Write the AUTOSIZE file					&	!								&3080	\ TASK$= "...INS"						&	\ COMMAND$= "INS [1,54]AUTOAS/TASK=AUTOAS"			&      	\ GOSUB 20001							&	!								&	\ TASK$= "AUTOAS"						&	\ COMMAND$= "AUTOAS"						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "REM AUTOAS"					&	\ GOSUB 20001							&	!								&	!	Write the answers to the SYSGEN program			&	!	This is done in the AUTOAS module			&	!								&	\ GO TO 32767							&	!								&	!	Exit							&3110	!$**************************************************************&	!                                                                     &	!                                                               &	! 	CONFIGURATION FILE OPTION				&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ ON FN.ASK% ( 120%,"YES","Y",FALSE%,1%)			&			GO TO 3000,32000,3210,3500			&	!								&	!	"Autosize file for target machine" question		&3210	\ ASK.RANGE(0)= 33						&	\ ON FN.ASK%       (130%,"[200,201]AUTOSIZE.DAT","",TRUE%,2%)		&			GO TO 3110,32000,3250				&	!								&	!	"Name of autosize file" question			&3250	\ GOSUB 10300							&	!								&	!	Read in the autosize file				&3260	\ GOSUB 7000							&	!								&	!	Print the autosize report				&3310	\ PRINT								&	\ ON FN.ASK% ( 140%,"YES","Y",FALSE%,2%)			&			GO TO 3210,32000,3320,3500			&	!								&	!	"Was the report satisfactory" question			&	!								&3320	\ GOSUB 10400							&	!								&	!	Write the autosize file					&	!								&33      25	\ TASK$= "...INS"						&	\ COMMAND$= "INS [1,54]AUTOAS/TASK=AUTOAS"			&	\ GOSUB 20001							&	!								&	\ TASK$= "AUTOAS"						&	\ COMMAND$= "AUTOAS"						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "REM AUTOAS"					&	\ GOSUB 20001							&	!								&	\ GO TO 32767							&	!								&	!	 Write the answers to SYSGEN and exit			&	!	This is done via the AUTOAS module			&	!								&	!	Print the autosize report				&3500	!$****************      **********************************************&	!                                                               &	!                                                               &	! 	THE FULL DIALOG						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ PRINT 							&	\ A%= FN.PRINT.HELP.TEXT% (145%,1%)				&	\ TASK$= "...INS"						&	\ COMMAND$= "I      NS [1,54]AUTOSK/TASK=AUTOSK"			&	\ GOSUB 20001							&	!								&	\ TASK$= "AUTOSK"						&	\ COMMAND$= "AUTOSK"						&	\ RETURN%= 1%							&	\ GOSUB	20001							&	\ RETURN%= 0%							&	\ ESCAPE%= 1%	IF SPAWN.ERROR%= 27%*8% + 1%			&	\ ESCAPE%= 2%	IF SPAWN.ERROR%= 26%*8% + 2%			&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "REM AUTOSK"					&	\ GOSUB 20001							&	!								&	!	Run the peripherals dialog				&	!								&	\ GO TO 3000	IF ESCAPE%= 1%					&	\ GO TO 32200	IF ESCAPE%= 2%					&3550	\ GOSUB 10100		      					&	!								&	!	Compute CSR & Vector addresses for floating gadgets	&	!								&3551	\ GO TO 3559	IF TINKERED.WITH%= 0%				&	\ PRINT								&	\ ASK.RANGE(0)= 3						&	\ ON FN.ASK% (144%,"","A",TRUE%,1%)				&		GO TO 3500, 32200, 3555					&	!								&	!	If tinkered with, he must tell us largest assigned vector&3555	\ FOR L%= 1% TO LEN(ASK.CVT$)					&		\ GO TO 3557	IF MID (ASK.CVT$,L%,1%) < "0"		&		\ GO TO 3557	IF MID (ASK.CVT$,L%,1%) > "7"		&	\ NEXT L%							&	\ TAB.HIGH$= ASK.CVT$						&	\ TAB.HIGH%= FN.      OCT.TO.INT%(TAB.HIGH$)				&	\ GO TO 3559							&	!								&	!	Make sure its octal					&	!	Store answer						&3557	\ PRINT								&	\ PRINT "% An octal response is required!"			&	\ PRINT								&	\ GO TO 3551							&	!								&	!	Error message if non-octal response			&3559	\ GOSUB	10800							&	!								&	!	Determine if minimum system is present			&3560	\ GOSUB 7000							&	!								&	!	Print the autosize report				&	!								&	\ PRINT								&	\ ON FN.ASK%(146%,"YES","Y",FALSE%,2%)				&			GO TO 3500, 32200,       3575, 3580			&	!								&	!	Have you answered questions to your satisfaction	&3575	\ GOSUB 10400							&	!								&	!	Write out the autosize file				&3577	\ TASK$= "...INS"						&	\ COMMAND$= "INS [1,54]AUTOAS/TASK=AUTOAS"			&	\ GOSUB 20001							&	!								&	\ TASK$= "AUTOAS"						&	\ COMMAND$= "AUTOAS"						&	\ RETURN%= 1%							&	\ GOSUB	20001							&	\ RETURN%= 0%							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "REM AUTOAS"					&	\ GOSUB 20001							&	!								&	\ GO TO 32767							&	!								&      	!	Write the answers to SYSGEN via the AUTOAS module 	&	!	Then EXIT						&3580	\ GO TO 3500							&	!								&	!	Re-try the dialog					&7000	!$**************************************************************&	!                                                               &	!                                                               &	! 	AUTOSIZE REPORT						&	!                                                               &	!                                                               &	!*************      **************************************************&	!								&	\ TASK$= "...INS"						&	\ COMMAND$= "INS [1,54]AUTORP/TASK=AUTORP"			&	\ GOSUB 20001							&	!								&	\ TASK$= "AUTORP"						&	\ COMMAND$= "AUTORP"						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "REM AUTORP"					&	\ GOSUB 20001							&	!								&	!	Install, spawn, and remove the report module		&	\ RETURN							&10000	!$**************************************************      ************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&10100	!$**************************************************************&	!                                                               &	!                                                               &	! 	COMPUTE CSR ADDRESSES					&	!                                                                     &	!                                                               &	!***************************************************************&	!								&	\ VECTOR%(2%)= 120%	IF ((TAB.CPU%= 34%) AND 		&				    (NO.OF.DEVICES%(5%) > 0%))		&	\ RETURN	IF (TINKERED.WITH% <> 0%)				&	\ CSR.LIMIT%= 10%						&	!								&	!	Currently, we allow both ts03 and tu16/45 on 11-34	&	!	Both of these devices are vectored to the same location	&	!	Therefore, if this circumstance arises, re-vector	&	!	the tu tapes to octal 170				&10      101	\ CSR%= 8%							&	\ FOR L%= 1% TO CSR.LIMIT%					&		\ INDEX%= FLOATING.INDEX%(L%)				&		\ GO TO 10115	IF INDEX%= 0%				&		\ LENGTH%= CSR.LENGTH%(INDEX%)				&		\ IF((INDEX% <> 18%)	OR (NO.OF.DEVICES%(INDEX%)=0%))	&			 THEN TOTAL.LENGTH%= NO.OF.DEVICES%(INDEX%)*LENGTH%&						+ 8%			&			\ FIRST.CSR%(INDEX%)= CSR% + (-8192%)		&				IF NO.OF.DEVICES%(INDEX%) > 0%		&			\ CSR%= CSR% +	TOTAL.LENGTH%			&			!						&			!	If there are some of this device and	&			!	it isn't a DH, calculate the current 	&			!	CSR and       calculate space to next free	&			!	CSR.  Allow for the GAP.		&10105		\ IF ((INDEX% = 18%) AND (NO.OF.DEVICES%(18%) > 0%))	&			THEN START.ADDRESS%= CSR%			&			\ T%= (START.ADDRESS%/16%)*16% - START.ADDRESS%	&			\ EVEN.UP%= 0%					&			\ EVEN.UP%= 8%	IF T% <> 0%			&			!						&			\ T%= START.ADDRESS% + EVEN.UP%			&			\ S%= NO.OF.DEVICES%(18%)*16% + 8%		&			\ CSR%= (T%+S%) 				&			\ FIRST.CSR%(INDEX%)= T% + (-8192%)		&			!						&			!	Special handling for the DH		&10115	\ NEXT L%							&	!								&	!	Loop throug      h table of floating CSR devices		&10120	!$**************************************************************&	!                                                               &	!                                                               &	! 	COMPUTE VECTOR ADDRESSES				&	!                                                               &	!                                                               &	!***************************************************************&10122	\ VECTOR.LIMIT%= 32%						&	!								      &	!	Set up table limit 					&10125	\ VECTOR%= STARTING.VECTOR%					&	\ FOR L%= 1% TO VECTOR.LIMIT%					&		\ INDEX%= VECTOR.INDEX%(L%)				&		\ GO TO 10127	IF INDEX%= -1%				&		\ GO TO 10127	IF NO.OF.DEVICES%(INDEX%)= 0%		&		\ VECTOR%(INDEX%)= VECTOR%				&		\ VECTOR%= VECTOR% + 					&				NO.OF.DEVICES%(INDEX%)*VECTOR.LENGTH%(INDEX%)&		!							&		!	If device is allowed for and it is present	&		!	allocate vector space for it.  There are no GAPS&		!	here.						&10127	\ NEXT L%							&	!								&	!	Assign the flo      ating vectors according to the standard 	&	!	hierarchy.						&10130	\ TAB.HIGH%= VECTOR% - 4%					&	\ TAB.HIGH%= 6%*64% +5%*8% -4%		IF TAB.CPU% <> 70%	&	\ TAB.HIGH%= 512% -4%			IF TAB.CPU% =  70%	&	!								&	!	Force uniform highest vector				&	!								&	\ RETURN							&	!								&	!	Keep track of highest assigned floating vector		&	!								&	!	Return							&10300	!$**************************************************************&	!                                                               &	!                                                                     &	! 	R E A D    A U T O S I Z E    F I L E 			&	!                                                               &	!                                                               &	!***************************************************************&10310	\ OPEN ASK.CVT$ FOR INPUT AS FILE #1%,				&		ORGANIZATION SEQUENTIAL FIXED,				&		ACCESS READ, ALLOW READ,				&		MAP CPU,						&		RECORDSIZE 64						&	!								&	!	OPEN the autosize file for input			&	!	It i      s read into the assignment table in the following	&	!	instructions						&10315	\ GET #1% 							&	!								&	\ TAB.CPU%= MAP.CPU%						&	\ TAB.FPP%= MAP.FPP%						&	\ TAB.CACHE%= MAP.CACHE%					&	\ TAB.KT11%= MAP.KT11%						&	\ TAB.PARITY%= MAP.PARITY%					&	\ TAB.TPS%= MAP.TPS%						&	\ TAB.HIGH%= MAP.HIGH%						&	\ TAB.HERTZ%= MAP.HERTZ%					&	\ TAB.SIZE%= MAP.SIZE%						&	\ TAB.VECTOR$= MAP.VECTOR$					&	\ AUTO.DEV.SYS%= MAP.DEV.SYS%					&	!								&	\ CLOSE #1%							&	!								&	!	Read in the CPU featu      res record and store the results	&10320	\ OPEN ASK.CVT$ FOR INPUT AS FILE #1%,		&		ORGANIZATION SEQUENTIAL FIXED,				&		ACCESS READ, ALLOW READ,				&		MAP TABLE,						&		RECORDSIZE 64						&	\ GET #1%							&	!								&	!	Open the file and skip the first record			&10322	\ FOR K%= 1% TO TABLE.SIZE%					&		\ GET #1% 						&		!							&		\ DEV.NAME$(K%)= T.DEV.NAME$				&		\ FIRST.CSR%(K%)= T.FIRST.CSR%				&		\ SYSGEN.CSR%(K%)= T.SYSGEN.CSR%			&		\ VECTOR%(K%)= T.VECTOR%				&		\ PRIORITY$(K%)= T.PRIORITY$				&		      \ MATCH%(K%)= T.MATCH%					&		\ CSR.LENGTH%(K%)= T.CSR.LENGTH%			&		\ VECTOR.LENGTH%(K%)= T.VECTOR.LENGTH%			&		\ NO.OF.DEVICES%(K%)= T.NO.OF.DEVICES%			&		\ TPS.CLASS%(K%)= T.TPS.CLASS%				&		\ MAX.DEV%(K%)= T.MAX.DEV%				&		\ QUESTION%(K%)= T.QUESTION%				&		\ SPECIAL0%(K%)= T.SPECIAL0%				&		\ SPECIAL1%(K%)= T.SPECIAL1%				&		\ SPECIAL2%(K%)= T.SPECIAL2%				&		\ SPECIAL3%(K%)= T.SPECIAL3%				&		\ SPECIAL4%(K%)= T.SPECIAL4%				&		\ SPECIAL5%(K%)= T.SPECIAL5%				&	\ NEXT K%							&	!								&	!	Read in the       assignment table portion of the file	&	!	Set up the assignment table				&10325	\ CLOSE #1%							&	\ RETURN							&	!								&	!	CLOSE the autosize file					&	!	and RETURN						&10400	!$**************************************************************&	!                                                               &	!                                                               &	! 	W R I T E    A U T O S I Z E    F I L E 		&	!                                                               &	!                                                                     &	!***************************************************************&10410	\ OPEN "[200,201]AUTOSIZE.DAT" FOR OUTPUT AS FILE #1%,		&		ORGANIZATION SEQUENTIAL FIXED,				&		ACCESS WRITE, ALLOW READ,				&		MAP CPU,						&		RECORDSIZE 64						&	!								&	!	OPEN the autosize file for output			&	!	Then write the assignment table to disk - done below	&10415	\ MAP.CPU%= TAB.CPU%						&	\ MAP.FPP%= TAB.FPP%						&	\ MAP.CACHE%= TAB.CACHE%					&	\ MAP.KT11%= TAB.KT11%		      				&	\ MAP.PARITY%= TAB.PARITY%					&	\ MAP.TPS%= TAB.TPS%						&	\ MAP.HIGH%= TAB.HIGH%						&	\ MAP.HERTZ%= TAB.HERTZ%					&	\ MAP.SIZE%= TAB.SIZE%						&	\ MAP.VECTOR$= TAB.VECTOR$					&	\ MAP.DEV.SYS%= AUTO.DEV.SYS%					&	!								&	\ PUT #1% 							&	\ CLOSE #1%							&	!								&	!	 Write the CPU features record				&	!								&10420	\ OPEN "[200,201]AUTOSIZE.DAT" FOR INPUT AS FILE #1%,		&		ORGANIZATION SEQUENTIAL FIXED,				&		ACCESS APPEND, ALLOW READ,				&		MAP TABLE,						&		RECORDSIZE 64						&	!	      							&	!	Write the rest of the file onto the end			&10422	\ FOR K%= 1% TO TABLE.SIZE%					&		\ T.DEV.NAME$= DEV.NAME$(K%)				&		\ T.FIRST.CSR%= FIRST.CSR%(K%)				&		\ T.SYSGEN.CSR%= SYSGEN.CSR%(K%)			&		\ T.VECTOR%= VECTOR%(K%)				&		\ T.PRIORITY$= PRIORITY$(K%)				&		\ T.MATCH%= MATCH%(K%)					&		\ T.CSR.LENGTH%= CSR.LENGTH%(K%)			&		\ T.VECTOR.LENGTH%= VECTOR.LENGTH%(K%)			&		\ T.NO.OF.DEVICES%= NO.OF.DEVICES%(K%)			&		\ T.TPS.CLASS%= TPS.CLASS%(K%)				&		\ T.MAX.DEV%= MAX.DEV%(K%)				&		\ T.QUESTION%=       QUESTION%(K%)				&		\ T.SPECIAL0%= SPECIAL0%(K%)				&		\ T.SPECIAL1%= SPECIAL1%(K%)				&		\ T.SPECIAL2%= SPECIAL2%(K%)				&		\ T.SPECIAL3%= SPECIAL3%(K%)				&		\ T.SPECIAL4%= SPECIAL4%(K%)				&		\ T.SPECIAL5%= SPECIAL5%(K%)				&		!							&		\ PUT #1% 						&	\ NEXT K%							&	!								&	!	The assignment table - device section written to disk	&10425	\ CLOSE #1%							&	\ RETURN							&	!								&	!	CLOSE the output autosize file				&10800	!$**************************************************************&	!		      						&	!								&	!	Determine if minimum system is present			&	!								&	!								&	!***************************************************************&	!								&	\ MIN.SYS%= 0%							&	\ DB%,DR%,MM%,DM%= 0%						&	\ MIN.SYS%= MIN.SYS% OR 1%	IF NO.OF.DEVICES%(6%) > 0%	&	\ MIN.SYS%= MIN.SYS% OR 2%	IF NO.OF.DEVICES%(15%)> 0%	&	\ MIN.SYS%= MIN.SYS% OR	2%	IF NO.OF.DEVICES%(16%)> 0%	&	\ MIN.SYS%= MIN.SYS% OR 4%	IF TAB.SIZE% => 128%		!V1.1/1&					AND TAB.CPU% =  34%		!V1.1/1&	\ MIN.SYS%= MIN.SYS% OR 4%	IF TAB.SIZ      E% => 192%		!V1.1/1&					AND TAB.CPU% =  70%		!V1.1/1&	!								&	\ TEMP%= NO.OF.DEVICES%(9%)					&	\ KMC.NEEDED%= 0%						&	!								&	\ KMC.NEEDED%= KMC.NEEDED% + 1%		IF SPECIAL1%(10%) > 0%	&	\ SPECIAL1%(10%)= 0%			IF KMC.NEEDED% > TEMP%	&	\ SPECIAL4%(11%)= 0%			IF KMC.NEEDED% > TEMP%	&	\ SPECIAL0%(10%)= 0%			IF KMC.NEEDED% > TEMP%	&	\ SPECIAL2%(10%)= 0%			IF KMC.NEEDED% > TEMP%	&	\ GO TO 10805				IF KMC.NEEDED% > TEMP%	&	!								&	\ KMC.NEEDED%= KMC.NEEDED% + 1%		IF SPECIAL4%(11%) > 0%	&	\ SPECIAL4%(11%      )= 0%			IF KMC.NEEDED% > TEMP%	&	\ SPECIAL0%(10%)= 0%			IF KMC.NEEDED% > TEMP%	&	\ SPECIAL2%(10%)= 0%			IF KMC.NEEDED% > TEMP%	&	\ GO TO 10805				IF KMC.NEEDED% > TEMP%	&	!								&	\ KMC.NEEDED%= KMC.NEEDED% + SPECIAL0%(10%) 			&						IF SPECIAL0%(10%) > 0%	&	\ SPECIAL0%(10%)= 0%			IF KMC.NEEDED% > TEMP%	&	\ SPECIAL2%(10%)= 0%			IF KMC.NEEDED% > TEMP%	&	\ GO TO 10805				IF KMC.NEEDED% > TEMP%	&	!								&	\ KMC.NEEDED%= KMC.NEEDED% + SPECIAL2%(10%)  			&						IF SPECIAL2%(10%) > 0%	&	\ SPECIAL2%(10%)= 0%		      	IF KMC.NEEDED% > TEMP%	&	!								&	!								&	!	Determine # of KMC needed				&	!								&10805	\ T%= TAB.CPU%							&	\ FOR I%= 1% TO 4%						&		\ DB%= 1%	IF SPECIAL0%(I%)= 1%			&		\ DR%= 1%	IF SPECIAL0%(I%)= 3%			&		\ MM%= 1%	IF SPECIAL0%(I%)= 2%			&	\ NEXT I%							&	\ DM%= 1%		IF NO.OF.DEVICES%(14%) > 0%		&	!								&	\ MIN.SYS%= MIN.SYS% OR 8%	IF DB% > 0%			&	\ MIN.SYS%= MIN.SYS% OR 8%	IF (DR% > 0%) 			&	\ MIN.SYS%= MIN.SYS% OR 8%	IF ((DM% > 0%) AND (T%=34%))	&	!								&	\ MIN.SYS%= MIN.SYS% OR 16%	I      F MM% > 0%			&	\ MIN.SYS%= MIN.SYS% OR 32%					&		IF (NO.OF.DEVICES%(9%) - KMC.NEEDED%) => 0%		&	!								&	\ TAB.TPS%= 0%							&	\ TAB.TPS%= 1%	IF MIN.SYS%= 63%				&	!								&	\ GO TO 10810	IF TAB.TPS% = 1%				&	\ PRINT								&	\ PRINT								&	\ PRINT "WARNING - This configuration will not support TRAX."	&	\ PRINT								&	\ PRINT "	   You lack a valid disk configuration."	&				IF (MIN.SYS% AND 8%)  = 0%		&	\ PRINT "	   You lack a valid tape configuration."	&				IF (MIN.SYS% AND 16%) = 0%		&	\ PRINT "	         You lack the required number of KMC11 units."&				IF (MIN.SYS% AND 32%) = 0%		&	\ PRINT " 	   You lack the required amount of memory."	&				IF (MIN.SYS% AND 4% ) = 0%		&	\ PRINT "	   You lack a console DL11 unit."		&				IF (MIN.SYS% AND 1% ) = 0%		&	\ PRINT "	   You lack a clock."				&				IF (MIN.SYS% AND 2% ) = 0%		&	\ PRINT								&10810	\ RETURN							&	!								&	!	Minimum system requirements:				&	!					1 console DL		&	!					1 clock, either type	&	!					256KB memory (11/34)	 V1.1/1&	!					384KB memo      ry (11/70)	 V1.1/1	&	!					TU16/45 drive		&	!					RP or RM disk on 70	&	!					RP or RK disk on 34	&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I       N G	&	!								&	!								&	!***************************************************************&	!								&	\ IF ((ERR=5 OR ERR=2) AND (ERL=10310))	THEN PRINT		&		\ PRINT "% We can't open that file - try again."	&		\ PRINT							&		\ RESUME 3210						&		!							&		!	Error message for bad file name			&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	Unexpected error trap					&20000	!$**************************************************************&	!								&	!		      						&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G      			&	!								&	!								&	!***************************************************************&	!								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Error exit						&32100	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (1%, 27%)						&	!								&	!	ESC exit						&32200	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 ( 2%,26%)						&	!								&	!	Exit for CTRL-Z						&32767	!$**************************************************************&	!								&	!								&	!	E N D        ô   O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ CLOSE #T% FOR T%= 1% TO 12%					&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Success exit						&	!								&	\ END ô          œ	`“Á› 8$ }      15100	!$**************************************************************&	!                                                               &	!                                                               &	! 	Octal to Integer conversion				&	!                                                               &	!                                                               &	!***************************************************************&  15101	\ DEF FN.OCT.TO.INT%(A$)					&	\ HIGH%= 0%							&	\ HIGH%= NOT 327      67%	IF (LEN(A$)= 6 ) AND LEFT(A$,1%)= "1"	&	\ LOW$= A$							&	\ LOW$= RIGHT(A$,2%)	IF (LEN(A$)= 6) AND LEFT(A$,1%)= "1"	&	!								&	!	Separate out the signed part				&	!								&	\ D%= 0%							&	\ B%= LEN(A$)							&	\ FOR L%= 0% TO 4%						&		\ GO TO 15110	IF B%- L% <= 0%				&		\ C$= MID(A$,B%-L%,1%)					&		\ D%= VAL(C$)*8%**L% + D%				&	\ NEXT L%							&	!								&	!	Convert the low part to an integer			& 15110	\ FN.OCT.TO.INT%= HIGH% OR D%					&	\ FNEND								&	!								&	!	Put the bits back together      				&  15200	!$**************************************************************&	!                                                               &	!                                                               &	! 	Integer to Octal Conversion				&	!                                                               &	!                                                               &	!***************************************************************& 15201	DEF FN.INT.TO.OCT$(A%)						&	\ D$= ""							&	\ HIGH$= "0"		      					&	\ HIGH$= "1"	IF (A% AND (NOT 32767%) ) <> 0%			&	\ LOW%= A% AND 32767%						&	!								&	!	Determine high order Octal digit			&	!	Separate off the low order				& 15205	\ FOR L%= 4% TO 0%   STEP -1%					&		\ C%= 8%**L%						&		\ D%= LOW%/C%						&		\ LOW%= LOW%- D%*C%					&		\ D$= D$ + NUM1$(D%)					&	\ NEXT L%							&	!								&	!	Convert the low order part to Octal			& 15207	\ D$= HIGH$ + D$						&	\ FOR L%= 5% TO 1%   STEP -1%					&		\ GO TO 15210	IF LEFT(D$,1%) <> "0"			&		\ D$= RIGHT(D$,2%)					&      	\ NEXT L%							&	!								&	!	Suppress leading zeroes					& 15210	\ FN.INT.TO.OCT$= D$						&	\ FNEND								&	!								&	!	Return converted answer					& 15300	!$**************************************************************&	!                                                               &	!                                                               &	! 	Validate Octal response					&	!                                                               &	!                                                       ž             &	!***************************************************************& 15301	\ DEF FN.REALLY.OCTAL%(A$)					&	\ FN.REALLY.OCTAL%= 0%						&	\ FOR L%= 1% TO LEN(A$)						&		\ B$= MID(A$,L%,1%)					&		\ B%= VAL(B$)						&		\ GO TO 15305	IF (B%<0%) OR (B%>7%)			&	\ NEXT L%							&	\ FN.REALLY.OCTAL%= 1%						&	!								&	!	Check that each of the digits really is octal		& 15305	\ FNEND								& 32767	\ END ž         œwì“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETCTL					&	!	Version:	V1.1A					& 	!	Edit level:	01					& 	!	Edit date:	10-Apr-79				& 	!	Author(s):	BJD					&	!			KMR					& 	!			LBB					& 	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!	      							&	!								&	!	       COPYRIGHT (c) 1977, 1978, 1979 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$******************************************      ********************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	BJD001	JAN 15 79 BJD	RENEW FOLLOWED BY DEV GIVES	&	!				AN INCORRECT AND DEFAULTED	&	!				SYSTEM NAME - SPR #207827	&	!								&	!	BJD002	FEB 28 79 BJD   ADD 2780/3271 SUPPORT		&	!				& USE MCR... EXCLUSIVELY	&	!								&	!	V1.1A00	13-Mar-79 KMR	Added code to check for TT0: o      r	 1.1A00&	!				  batch when run stand alone.	 1.1A00&	!	V1.1/1	9-Apr-79  LBB	Save DIRREC size in .SAV file	 V1.1/1&	!				  Modify SETMAP, simplifying 	 V1.1/1&	!				  save of data - stmts 951, 	 V1.1/1&	!				  10101, 10201			 V1.1/1&	!				Improve layout of stmt 4001	 V1.1/1&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&      	!***************************************************************&	!								&	!	This program determines what should be done and then 	&	!	spawns the appropriate setup modules to do the job.	&	!	It writes and reads the saved image of the shared common &	!	area, changes terminal status back & forth from DCL to MCR&	!	See the spec for a detailed list of valid commands and	&	!	for a list of modules spawned.  The program may be run	&	!	in any of three modes - which mode is determined by the	&	!	task name.  SETIN      T is the name if spawned by SYSGEN, in &	!	this casea long sequence of modules are spawned.  The final&	!	result is a custom-tailored bootable system image.	&	!	SETCHG is the name if spawned by CHANGEMAKER, in this case&	!	a much shorter sequence of modules are spawned, but the &	!	result is again a custom-tailored bootable system image.&	!	Any other task name will put the task in a mode to 	&	!	accept user commands.  The program will perform each command &	!	and then prompt for more work.				&300	!$******      ********************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!								&	!	1		File of saved common region data	&	!	13		Terminal I/O				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N       D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			temporary working variable	&	!	AR%()			array for rad50 name of parent	&	!	BACKWARD%		controls backspacing through	&	!				  phasing			&	!	COMMAND$		command line for BRED task	&	!	DIR.ERR%		error in executive call		&	!	DO.IT%			flag controlling performance of	&	!				  a phasein response to dialog	&	!	ERR.MESS$		initialize fatal error message	&	!				  string			&	!	ESC%			???      ????				&	!	FILE.NAME$		name of file where sysgen	&	!				  responses are saved		&	!	FLAG%			???????????			&	!	GROUP%			group code under which setup is	&	!				  running			&	!	I%			looping variable		&	!	LIST$			lsit of valid setup commands	&	!	LONG.FORM%		controls long prompt printing	&	!	MAP.*			Map version of a SETCOM variable&	!				  -				&	!	REGION%()		region definition block		&	!	RETURN%			=1 if errors in BRED task should&	!				  not be fatal			&	!	SKIP%			flag - don't write out common if&	!				  set				      &	!	SKIP.IT%		eliminate			&	!	SPAWN.NAME%()		rad50 version of MCR... in error&	!				  routine			&	!	STATUS%			saved exit status of installed 	&	!				  BRED task			&	!	SUBSTITUTE.TEXT$()	substitution array for sysgen	&	!				  dialog			&	!	T1$			temporary working variable	&	!	T2$			temporary working variable	&	!	TASK$			name of installed task to be	&	!				  BRED				&	!	TASK.NAME$		name under which setup is	&	!				  running			&	!	TASK.TO.SPAWN$		name of task to install, spawn,	&	!				  & remove			&	!	WINDOW%()      		window definition block		&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	10001		Routine to install, spawn, and remove 	&	!				a task				&	!	10101		Routine to write out the shared common	&	!				region to disk			&	!	1      0201		Routine to read in saved disk image of	&	!				shared common region		&	!	10401		Routine to solicit system name form user&	!	10500		Routine to convert terminal DCL->MCR	&	!	10510		Routine to convert terminal MCR->DCL	&	!	10600		Routine to determine if a phase of SETUP&	!				should be skipped		&	!	20001		BREED spawns an installed task		&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!      								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$*************************      *************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIM TASK.PAR%(17)						&	!								&	!	Array for get task parameter call			&951	\ MAP       (SETMAP)							&	!								 V1.1/1&				SETMAP.DATA$ = 	1500			!V1.1/1&	!								&	!	Map for saved common region image			&955	\ MAP (ALLSYS)		CURRENT.SYSTEM.NAME$=6,			&				SAVED.SYSTEM.NAME$=6,			&				FILLER$=38				&	!								&	!	Map for all system name file				&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR       GO TO 19000						&	!								&	!	Set up standard default error trap			&1200	\ CALL GETTSK BY REF (TASK.PAR%(),DIR.ERR%)			&	\ GO TO 1250	IF DIR.ERR% = 1%				&	!								&	\ PRINT								&	\ PRINT "? FATAL error in GET TASK PARAMETER call."		&	\ PRINT								&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Find out who spawned this task				&	!	The name is SETINT if SYSGEN spawned it			&	!	The name is SETCHG if CHANGEMAKER spawned it		&	!	The name is SETUP if it is run directly by the user	&	!								&	!	If the dire      ctive fails, print the error message and exit&1250	\ T1$= RAD$(TASK.PAR%(0%))					&	\ T2$= RAD$(TASK.PAR%(1%))					&	\ TASK.NAME$= T1$ + T2$						&	\ T1$= RAD$(TASK.PAR%(2%))					&	\ T2$= RAD$(TASK.PAR%(3%))					&	!								&	!	Final task name construction				&	!	Inital setup of partition specification			&	!								&	\ T%= SWAP%(TASK.PAR%(7%))					&	\ GROUP%= T% AND 255%						&	\ GO TO 1300	IF ((GROUP%< 8%) OR (TASK.NAME$= "SETINT"))	&	\ PRINT								&	\ PRINT "? FATAL error - User group code is not privileg      ed!"	&	\ PRINT								&	\ GOSUB 10510							&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Make sure the user is privileged			&1400	!								&	\ DRVPAR.SIZE%= 0%						&	\ ATS.DRVPAR.SIZE%= 0%						&	\ SYSTEM.NAME$= "TRAX11"					&	\ SYSUIC$= "[1,54]"						&	\ PAR$= EDIT$(T1$ + T2$,2%)					&	\ BASIC%= 1%			IF BASIC% <> 0%			&	\ COBOL%= 1%			IF COBOL% <> 0%			&	!								&	!	Initialize partition size fields			&	!	Setup initial system name				&	!	Setup sysuic and partions values			&	!	Convert Basic & Cobol variable      s to SETUP format		&1407	!								&!	\ GOSUB 10501							&	\ SKIP%= 0%							&	\ FLAG%= 0%							&	\ FAST%= 0%							&	\ ERR.MESS$= "? FATAL error -"					&	\ A%= FN.SETUP.DIALOGUE%					&	\ LONG.FORM%= S.SYSGEN.LONG.FORM%				&	!								&	!	Initialize variables					&	!	Set user terminal to MCR				&	!	Set up sysgen dialog function				&	!	Purge the [200,201]setup account			&2000	!$**************************************************************&	!                                                               &	!                                                                     &	! 	SETUP SPAWNED BY SYSGEN					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ GO TO 3000	IF TASK.NAME$ <> "SETINT"			&	\ LONG.FORM%= SYSGEN.LONG.FORM%					&	\ SKIP.IT%= 0%							&	\ GOSUB 10101		IF SKIP%= 0%				&	!								&	\ TASK$= "MCR..."			! BJD002		&	\ COMMAND$= "PIP [200,201      ]*.*/PU:2"				&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Clean up the SETUP account				&	!								&	\ SLEEP	2							&	!			Sleep to avoid SYSGEN exit prompt in dialog&	\ ESC%= 1%							&	!								&	!	write out an initial copy of common			&	!	to save the sysgen responses in case anything evil 	&	!	happen							&	!								&	\ FOR I%= 0% TO 60%						&		\ TT.TYPE%(I%)= 0%					&		\ TT.TYPE%(I%)= 1%	IF I% <= (DL.NUM%-1%)		&	\ NEXT I%							&	!								&	!	Mark the terminal type      s					&	!								&	\ GO TO 2001	IF SKIP%= 1%					&	\ PRINT								&	\ PRINT "SYSGEN has ended.  SETUP is now running."		&	\ PRINT								&	!								&	!	Special herald if spawned by sysgen			&	!								&	\ AR%(0)= 0%							&	\ AR%(1)= 0%							&	\ CALL EMIT BY REF (AR%(),1%,0%)				&	!								&	!	Emit status to sysgen so it can exit			&	!								&	\ A%= FN.MINI.BLOCK%("MCR...",1058%,FALSE%)			&	!								&	!	Do some purging for SYSGEN				&2001	!$**************************************************************&	!                                                                     &	!                                                               &	! 	SYSGEN SPAWNED TASKS					&	!                                                               &	!                                                               &	!***************************************************************&	!								&2002	\ BACKWARD%= 0%							&	\ TASK.TO.SPAWN$= "SETSYS"					&	\ GOSUB 10001							&	\ GO TO 2001	IF BACKWARD%= 1%				&	!								&	!	Do system i      mage phase if requested			&	!	SETSYS does the following:				 V1.1/1&	!	  Spawn AUTOZAP to ZAP KERNEL.TSK			 V1.1/1&	!	  Ask for target system name and ZAP to KERNEL.TSK.	 V1.1/1&2004	\ BACKWARD%= 0%							&	\ TASK.TO.SPAWN$= "SETDRV"					&	\ GOSUB 10001							&	!								&	!	Do driver phase 					&	!	SETDRV does the following:				 V1.1/1&	!	  Create [200,201]<system name>.DRV which includes	 V1.1/1&	!	   lines of the type "LOA <dev>:/PAR=DRVPAR"		 V1.1/1&	!	  Compute size of ATS drivers and store in SETCOM	 V      1.1/1&	!	  Compute size of following tasks and store in SETCOM:	 V1.1/1&	!	    MTAACP						 V1.1/1&	!	    SYSCOM						 V1.1/1&	!	    LDR							 V1.1/1&	!	    TSTLIB						 V1.1/1&	!	    JOURNAL						 V1.1/1&	!	    F11ACP						 V1.1/1&	!	    DIRREC (directives removed from kernel for V1.1)	 V1.1/1&2006	\ BACKWARD%= 0%							&	\ TASK.TO.SPAWN$= "SETPAR"					&	\ GOSUB 10001							&	\ GO TO 2001	IF BACKWARD%= 1%				&	!								&	!	Do partition phase if requested				&	!	SETPAR does the following:				 V1.1/1&	!	  A      sks whether indirect cmd processing desired		 V1.1/1&	!	  Asks which language OTS desired (if there is a choice) V1.1/1&	!	  Asks % of core for TP partitions			 V1.1/1&	!	  Sets up SAMPLE application 				 V1.1/1&	!	  Create [200,201]<system name>.PAR -- contains commands V1.1/1&	!	    to define partitions appropriate to specific system	 V1.1/1&	!	  Create [200,201]<system name>.INS -- contains commands V1.1/1&	!	    to install tasks appropriate to specific system	 V1.1/1&2008	\ BACKWARD%= 0%							&	\ TASK.      TO.SPAWN$= "SETTER"					&	\ S.SYSGEN.LONG.FORM%= 0%					&	\ GOSUB 10001							&	\ GO TO 2006	IF BACKWARD%= 1%				&	!								&	!	Do terminal phase if requested				&	!	SETTER does the following:				 V1.1/1&	!	  Specify the terminal definitions for the system 	 V1.1/1&	!	  Commands include ADD, DELETE, EDIT, DISPLAY, COPY	 V1.1/1&	!	    STEAL						 V1.1/1&	!	  The resulting definitions are stored in 		 V1.1/1&	!	    [200,201]<system name>.TER				 V1.1/1&2009	\ BACKWARD%= 0%							&	\ GOSUB 10101							&	\ TASK      .TO.SPAWN$= "SETVMR"					&	\ GOSUB 10001							&	!								&	!	Do VMR phase						&	!	SETVMR does the following:				 V1.1/1&	!	  Run VMR over a virtual terminal 			 V1.1/1&	!	  Pass VMR commands from the following files:		 V1.1/1&	!	    [200,201]<system name>.PAR				 V1.1/1&	!	    [200,201]<system name>.DRV				 V1.1/1&	!	    [200,201]<system name>.TER				 V1.1/1&	!	    [200,201]TRAX11.TAS (a constant file that is shipped V1.1/1&	!	      with the kit and which includes commands to 	 V1.1/1&	!	      install tas      ks which are permanently installed)	 V1.1/1&	!	    [200,201]<system name>.INS				 V1.1/1&2011	\ BACKWARD%= 0%							&	\ TASK.TO.SPAWN$= "SETSTR"					&	\ GOSUB 10001							&	!								&	!	Do startup phase 					&	!	SETSTR does the following:				 V1.1/1&	!	  Create [200,201]<system name>.MCR			 V1.1/1&	!	  This file is used by SETHID 				 V1.1/1&2015	\ BACKWARD%= 0%							&	\ TASK.TO.SPAWN$= "SETACN"					&	\ GOSUB 10001							&	\ GO TO 2001		IF BACKWARD%= 1%			&	!								&	!	Do account phase 					&	!	SETACN doe      s the following:				 V1.1/1&	!	  Maintain the account file [200,201]TPSACNT.DAT	 V1.1/1&	!	  Commands are ADD, DELETE, EDIT, LIST			 V1.1/1&	!	  At the end, [200,201]TPSACNT.DAT is copied into	 V1.1/1&	!	  [0,0]RSX11.SYS;1					 V1.1/1&2016	\ BACKWARD%= 0%							&	!								&	!								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "RUN " + SYSUIC$ + "SETBOO/TASK=BOOT/PAR=" + PAR$	&	\ GOSUB 20001							&	\ GOSUB 10510							&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Spawn       SETBOO and exit					&3000	!$**************************************************************&	!                                                               &	!                                                               &	! 	SETUP SPAWNED BY CHANGEMAKER				&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ GO TO 4000	IF TASK.NAME$ <> "SETCHG"		      	&	\ LONG.FORM%= FALSE%						&	\ SKIP.IT%= 1%							&	\ ESC%= 2%							&	\ SLEEP 2							&	!								&	!	Sleep to avoid the CHGMKR exit prompt in dialog		&	!								&	\ BACKWARD%= 0%							&!	\ GOSUB 10401	IF SKIP%= 0%					&	!								&	!	Read in the common data					&	!								&	\ GO TO 3001	IF SKIP%= 1%					&	\ PRINT								&	\ PRINT "CHANGEMAKER has ended.  SETUP is now running."		&	\ PRINT								&	!								&	!	Special herald if spawned by changemaker		&	!								&	\ AR%(0)= 0%							&	\ AR%(1)= 0%							&      	\ CALL EMIT BY REF (AR%(),1%,0%)				&	!								&	!	Emit status to changemaker				&	!								&	!								&	!								&	\ A%= FN.MINI.BLOCK%("MCR...",1058%,FALSE%)			&	!								&	!	Do some purging for changemaker				&	!								&3001	\ RENEW%= 1%							&	\ GOSUB 10450							&	\ RENEW%= 0%							&	\ FAST%= 1%							&	!								&	!	Get system name for source of information		&	!								&	\ TASK.TO.SPAWN$= "SETSYS"					&	\ GOSUB 10001							&	\ GO TO 3000	IF BACKWARD%= 1%				&	!								&	!	Do system image phase					      &3002	\ BACKWARD%= 0%							&	\ TASK.TO.SPAWN$= "SETVMR"					&	\ GOSUB 10001							&	!								&	!	Do VMR phase						&3003	\ BACKWARD%= 0%							&	\ TASK.TO.SPAWN$= "SETSTR"					&	\ GOSUB 10001							&	\ GO TO 3000	IF BACKWARD%= 1%				&	!								&	!	Do startup phase					&3004	\ GO TO 3001							&4000	!$**************************************************************&	!                                                               &	!                                                               &	! 	SETUP RUN       IN ITS OWN RIGHT				&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ ESC%= 3%							&	\ GO TO 4001	IF ONE.HERALD% <> 0%				&	\ IF FN.CHECK.TT0% <> -1%					!1.1A00&	  THEN	  PRINT "? SETUP must be run from TT0: or batch"	!1.1A00&			IF T2900% = 1%					!1.1A00&		\ PRINT "? GETLUN directive error:"; T2900%		!1.1A00&			IF T2900% <> 1%					!1.1A00&		\       CALL EXITS2(2%,0%)					!1.1A00&	!								 1.1A00&	!	If we are unsuccessfull in our check for TT0:		 1.1A00&	!		Put out the appropriate error message.		 1.1A00&	!		Exit with error status.				 1.1A00&	!								 1.1A00&	  ELSE	  PRINT							!1.1A00&		\ PRINT "SETUP V1.1A "					!1.1A00&		\ PRINT							!1.1A00&		\ PRINT "The system management utility"			!1.1A00&		\ PRINT							!1.1A00&		\ ONE.HERALD%= 1%					!1.1A00&	!								&	!	If we were successfull, print out the herald and	 1.1A00&	!	  indicate that we hav      e printed one.			 1.1A00&4001	\ BACKWARD%= 0%							&	\ DEFAULT$= "EXIT"						&	\ SKIPIT%= 1%							&	\ SKIP%= 0%							&	\ FAST%= 0%				!BJD001			&	\ FLAG%= 0%				!BJD001			&	\ LONG.FORM%= FALSE%						&	\ LIST$= "/BAD/BOOT/SAVE/HARDSAVE/ACCOUNT/PARTITION/TERMINAL/RENEW"&		+ "/RETRYSYSGEN/RETRYUPDATE/EXIT/TRANSFER/STARTUP/REDO TERMINAL"&		+ "/ERRORLOG/VERSION/DEV/SETTIME"			&	\ REDO.TER%= 0%							&	!								&	\ ON FN.ASK% (211%,DEFAULT$,LIST$,FALSE%,1%)			&		GO TO 							!V1.1/1&			 4000,			! ESC	!		!V1.1/      1&			32200, 			! CTRL/Z	!	!V1.1/1&			 4100, 			! BAD		!	!V1.1/1&			 4200, 			! BOOT		!	!V1.1/1&			 4300, 			! SAVE		!	!V1.1/1&			 4400, 			! HARDSAVE	!	!V1.1/1&			 4500, 			! ACCOUNT	!	!V1.1/1&			 4600,			! PARTITION	!	!V1.1/1&			 4700, 			! TERMINAL	!	!V1.1/1&			 4800, 			! RENEW		!	!V1.1/1&			 4900, 			! RETRY SYSGEN	!	!V1.1/1&			 4950, 			! RETRY UPDATE	!	!V1.1/1&			 5000,			! EXIT		!	!V1.1/1&			 4975,			! TRANSFER	!	!V1.1/1&			 4985,			! STARTUP	!	!V1.1/1&			 4990,			! REDO TERMINAL	!	!V1.1/1&			 4850,	      		! ERRORLOG	!	!V1.1/1&			 4875, 			! VERSION	!	!V1.1/1&			 4995,			! DEV		!	!V1.1/1&			 4825			! SET TIME	!	!V1.1/1&	!								&	!	If the user is running setup, let him select the 	&	!	  function to be performed				&4100	\ TASK.TO.SPAWN$= "SETBAD"					&	\ GOSUB 10001							&	\ GO TO 4001							&	!								&	!	Perform the BAD disc block checking function		&4200	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ TASK$= "MCR..."						&	\ COMMAND$= "RUN LB0:" + SYSUIC$ + "SETBOO/TASK=BOOT/PAR=" + PAR$	&	\ GOSUB 20001							&	      \ CALL EXITS2 (1%,0%)						&	!								&	!								&	!	Perform the MCR BOOT function				&4300	\ TASK$= "MCR..."						&	\ COMMAND$= "RUN LB0:" + SYSUIC$ + "SETSAV/TASK=SAVE/PAR=" + PAR$	&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ GOSUB 20001							&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Perform the MCR SAVE function				&4400	\ TASK$= "MCR..."						&	\ COMMAND$= "RUN LB0:" + SYSUIC$ + "SETSAV/TASK=SETHSV/PAR=" + PAR$	&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ GOSUB 20001							&	\ CALL EXITS2 (1%,0%)						&	!							      	&	!	Perform the MCR SAVE with BOOTSTRAP function		&4500	\ TASK.TO.SPAWN$= "SETACN"					&	\ GOSUB 10001							&	\ GO TO 4001							&	!								&	!	Perform the ACCOUNT function				&4600	\ TASK.TO.SPAWN$= "SETPAR"					&	\ GOSUB 10401			! Ask for system name	!	!V1.1/1&					! and read in common	!	!V1.1/1&	\ GOSUB 10001			! Install & spawn task	!	!V1.1/1	&	\ GO TO 4001							&	!								&	!	Set up the partitions					&4700	\ TASK.TO.SPAWN$= "SETTER"					&	\ GOSUB 10401							&	\ S.SYSGEN.LONG.FORM%= 0%					&	\ GOSU      B 10001							&	\ GO TO 4001							&	!								&	!	Perform the S.E. terminal setup function		&4800	\ TASK.TO.SPAWN$= "SETSYS"					&	\ RENEW%= 1%							&	\ GOSUB 10401							&	\ RENEW%= 0%							&	\ FAST%= 1%							&	\ GOSUB 10001							&	!								&	\ TASK.TO.SPAWN$= "SETVMR"					&	\ GOSUB 10001							&	!								&	\ GO TO 4001							&	!								&	!	Renew the system image - the user may boot in the new image later&4825	\ TASK.TO.SPAWN$= "SETTIM"					&	\ GOSUB 10001							&	\ GO TO 4001							&	!								&	!	Set       the clocks						&4850	\ ON FN.ASK%(231%,"LP:","",FALSE%,2%)				&		GO TO 4000, 32200, 4855					&	!								&	!	Find out device or file					&4855	\ SUBSTITUTE.TEXT$(1%)= ASK.CVT$				&	\ A%= FN.MINI.BLOCK%("MCR...",232%,FALSE%)			&	\ GO TO 4000							&	!								&	!	Print out the hardware error reports			&4875	\ PRINT								&	\ PRINT "Your TRAX system is ";					&			EDIT$(ASK.HELP$(HELP.INDEX%(12%)),128%)&	\ PRINT								&	\ PRINT "Your change tape was labelled ";			&			EDIT$(ASK.HELP$(HELP.INDEX%(12%)+1%),128%)      	&	\ OPEN "[200,201]ALLSYS.NAM" FOR INPUT AS FILE #8%,		&		ORGANIZATION SEQUENTIAL FIXED,				&		ACCESS READ, ALLOW NONE,				&		MAP ALLSYS, RECORDSIZE 50				&	\ GET #8%							&	\ PRINT 							&	\ PRINT "The tailored version of TRAX currently in memory is "	&		+ "called ";EDIT$(CURRENT.SYSTEM.NAME$,2%);"."		&	\ PRINT								&	\ CLOSE #8%							&	\ GO TO 4000							&	!								&	!	Print out the TRAX version #				&4900	\ TASK.NAME$= "SETINT"						&	\ SKIP%= 1%							&	\ SKIP.IT%= 1%							&	\ SYSTEM.NAME$= "TRAX      11"					&	\ GOSUB 10201			! Read in common	!	!V1.1/1	&	\ GO TO 2000							&	!								&	!	Retry SYSGEN version of setup				&4950	\ TASK.NAME$= "SETCHG"						&	\ SKIP%= 1%							&	\ SKIP.IT%= 1%							&	\ GOSUB 10401							&	\ GO TO 2000							&	!								&	!	Retry CHANGEMAKER version of setup			&4975	\ TASK.TO.SPAWN$= "SETTRA"					&	\ GOSUB 10001							&	\ GO TO 4001							&	!								&	!	Spawn the transfer file program				&4985	\ TASK.TO.SPAWN$= "SETSTR"					&	\ GOSUB 10401							&	\ GOSUB 10001							&	\ GO       TO 4001							&	!								&	!	Spawn the startup creator program			&4990	\ REDO.TER%= 1%							&	\ TASK.TO.SPAWN$= "SETVMR"					&	\ GOSUB 10401							&	\ GOSUB 10001							&	\ GO TO 4001							&	!								&	!	Reconfigure the terminals				&4995	\ TASK.NAME$= "SETINT"						&	\ SKIP%= 1%							&	\ SYSTEM.NAME$= "TRAX11"					&	\ GOSUB 10201							&	\ S.SYSGEN.LONG.FORM%= FALSE%					&	\ S.DEV.SYS%= 1%						&	\ NO.CON.TP%= 0%						&	\ GO TO 2000							&	!								&	!	Create a development only system			&5000	!$******      ********************************************************&	!                                                               &	!                                                               &	! 	CLEANUP							&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ GOSUB 10510							&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Convert terminal back to DCL		      		&	!	Exit with success					&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&10001	\ TASK$= "...INS"						&	\ COMMAND$= "INS " + SYSUIC$ +  TASK.TO.SPAWN$ 			&			+ "/TASK=" + TASK.TO.SPAWN$ + "/PAR=" + PAR$	&	\ RETURN%= 1%							&10002	\ GOSUB 20001			! Spawn the task	!	!V1.1/1&	\ GO T      O 10017	IF SPAWN.ERROR% <> 1%				&	!								&	!	Install the task					&	!								&	\ TASK$= TASK.TO.SPAWN$						&	\ COMMAND$= TASK.TO.SPAWN$					&	\ RETURN%= 1%							&	\ GOSUB 20001			! Spawn the task	!	!V1.1/1&	\ RETURN%= 0%							&	!								&	!	Run the installed task					&	!								&	\ STATUS%= SPAWN.ERROR%						&	\ TASK$= "MCR..."						&	\ COMMAND$= "REM " + TASK.TO.SPAWN$				&	\ RETURN%= 1%							&	\ GOSUB 20001			! Spawn the task	!	!V1.1/1&	\ GO TO 10017	IF SPAWN.ERROR% <> 1%				&	!								&	!	Remove t      he task						&	!								&	\ T1%= STATUS%/8%						&	\ T2%= STATUS% AND 7%						&	\ GO TO 10010	IF TASK.TO.SPAWN$= "SETBAD"			&	\ GO TO 10010	IF (T2%= 1% AND T1%= 0%)			&	\ GO TO 10003	IF ((T2%= 2%) OR ((T2%=1%) AND (T1%<> 0%)))	&	!								&	\ PRINT								&	\ PRINT "? FATAL error - task exited with illegal status."	&	\ PRINT 							&	\ GOSUB 10510							&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Process exit status codes				&10003	\ GO TO 10005	IF T1%= 26%					&	\ GO TO 10015	IF T1%= 27%					&	\ PRINT						      		&	\ PRINT "? FATAL error- task exited with unexpected status."	&	\ PRINT								&	\ GOSUB 10510							&	\ CALL EXITS2 ( 2%,0%)						&	!								&	!	Branch on ESC and CTRL-Z exit statuses			&10005	\ GO TO 10006	IF ((ESC%= 2%) OR (ESC%= 3%))			&	\ GOSUB 10101							&	!								&	!	Write out the common area if setup spawned by sysgen	&10006	\ GOSUB 10510			! SET /DCL=TI:		!	!V1.1/1&	\ CALL EXITS2 (2%,26%)						&	!								&	!	Exit with control z status				&10010	\ RETURN							&10015	\ BACKWARD%= 1%							&	\ R      ETURN							&	!								&	!	Process ESC response by setting switch			&10017	\ PRINT								&	\ PRINT "? FATAL  error in a spawn call."			&	\ PRINT COMMAND$						&	\ PRINT								&	\ GOSUB 10510							&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Routine for error in INS or REM calls			&	!	Use this rather than BREED's to set term to DCL		&10101	!$**************************************************************&	!                                                               &	!                                                                     &	! 	WRITE OUT COMMON					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ COMMUNICATIONS%= 1%	IF COMMUNICATIONS% <> 0%		&	!								&	\ SYSTEM.NAME$= "TRAX11"	IF EDIT$(SYSTEM.NAME$,2%)= ""	&	\ FILE.NAME$= "[200,201]" + SYSTEM.NAME$ + ".SAV"		&	\ FILE.NAME$= EDIT$(FILE.NAME$,2%)				&	\ OPEN FILE.NAME$ FOR OUTPUT AS FILE       #1%,			&		ORGANIZATION SEQUENTIAL FIXED,				&		ACCESS WRITE, ALLOW NONE,				&		MAP SETMAP						&	!								&	!	Open .SAV file.						 V1.1/1&	!								&	\ SETMAP.DATA$ = SETCOM.DATA$					!V1.1/1&	!								&	!	Copy data in GENCOM region to file buffer.		 V1.1/1&	!								&	\ PUT #1%							&	\ CLOSE #1%							&	\ RETURN							&	!								&	!								&	!	Write out the non-temporary stuff in the shared common	&	!	region.							&10201	!$**************************************************************&	!                                                                     &	!                                                               &	! 	READ IN COMMON						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ FILE.NAME$= "[200,201]" + SYSTEM.NAME$ + ".SAV"		&	\ FILE.NAME$= EDIT$(FILE.NAME$,2%)				&	\ OPEN FILE.NAME$ FOR INPUT AS FILE #1%,			&		ORGANIZATION SEQUENTI      AL FIXED,				&		ACCESS READ, ALLOW NONE,				&		MAP SETMAP						&	\ GET #1%							&	!								&	!	Open the .SAV file and read the record containing the	 V1.1/1&	!	  saved GENCOM region.					 V1.1/1&	!								&	\ SETCOM.DATA$ = SETMAP.DATA$					!V1.1/1&	!								&	!	Retrieve the saved data.				 V1.1/1&	!								&	!								&	\ COMMUNICATIONS%= 1%	IF COMMUNICATIONS% <> 0%		&	!								&	\ CLOSE #1%							&	\ RETURN							&	!								&	!								&	!	Read in saved disk image of shared common region	&10401	!**********      *****************************************************&	!								&	!								&	!	DETERMINE SYSTEM NAME					&	!								&	!								&	!***************************************************************&	!								&	\ FLAG%= 1%							&	\ ASK.RANGE(0)= 6						&	\ ON FN.ASK% (214%,"","A",TRUE%,1%)				&		GO TO 10401, 32200, 10403				&	!								&	!	Determine system name					&	!	Don't allow him to escape from sub-routine		&10403	\ SYSTEM.NAME$= ASK.CVT$					&	!								&	!	Store system name					&10405	\ ERR.MES$= "% "					      	&	\ GOSUB 10201		IF RENEW%= 0%	! Read in common	&	\ ERR.MES$= "? FATAL error - "					&	\ FLAG%= 0%							&	\ RETURN							&	!								&	!	Read in the file once 					&10450	\ ASK.RANGE(0)=6						&	\ ON FN.ASK% (235%,"","A",TRUE%,1%)				&		GO TO 10450, 32200, 10453				&	!								&	!	Determine system name for changemaker			&10453	\ SYSTEM.NAME$= ASK.CVT$					&	\ GOSUB 10201			! Read in common	!	&	\ RETURN							&	!								&	!	Store system name & read in system data			&10500	!$*********************************      *****************************&	!								&	!								&	!	DCL  <=>  MCR   CONVERSIONS				&	!								&	!								&	!***************************************************************&10501	\ TASK$= "DCL..."						&	\ COMMAND$= "SET TERM MCR"					&	\ GOSUB 20001							&	\ RETURN							&	!								&	!	DCL => MCR						&10510	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /DCL=TI:"					&	\ GOSUB 20001							&	\ RETURN							&	!								&	!	MCR => DCL						&10600	!***************************************************************&      	!								&	!								&	!	QUESTION TO SKIP A PHASE OF SETUP			&	!								&	!								&	!***************************************************************&	!								&	\ GO TO 10610	IF SKIP%= 0%					&	\ ON FN.ASK%(222%,"YES","Y",FALSE%,2%)				&		GO TO 10601,32200, 10610, 10620				&	!								&	!	Determine if user wants to do a module			&10601	\ BACKWARD%= 1%							&	\ RETURN							&10610	\ DO.IT%= 1%							&	\ RETURN							&	!								&	!	Do the module						&10620	\ DO.IT%= 0%							&	\ RETURN							&	!								&	!	      Don't do the module					&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15900	\ DEF FN.MINI.BLOCK%(E.TASK$,INDX%,IGNORED%)			&		\ E.START%= HELP.INDEX%(2%*INDX%)			&		\ E.LENGTH%= HELP.INDEX%(2%*INDX% + 1%)			&		\ TASK$= E.TASK$					&		\ RETURN%= 1%						&		\ FOR M%= E.START% TO E.START      %+E.LENGTH%-1%		&			\ COMMAND$= EDIT$(FN.SUB.TEXT$(ASK.HELP$(M%)),132%)&			\ GOSUB 20001					&		\ NEXT M%						&		\ RETURN%= 0%						&	\ FNEND								&	!								&	!	This is a miniature version of FN.EXEC.BLOCK% which is 	&	!	needed since SETCTL uses the original version of BREED	&	!	This version is not compatible with the function.	&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!******      *********************************************************&	!								&	\ SPAWN.NAME%(0)= 13%*40%**2% + 3%*40% + 18%			&	\ SPAWN.NAME%(1)= 28%*40%**2% + 28%*40% + 28%			&	\ COMMAND$= "SET /DCL=TI:"					&	\ IF ((ERR=5 OR ERR= 2)  AND ERL=10201) THEN			&		PRINT							&		\ PRINT ERR.MES$;"can't find file	[200,201]" +	&			SYSTEM.NAME$ + ".SAV"				&		\ PRINT							&		\ RESUME 10401	IF FLAG%= 1%				&		\ CALL SPAWN (SPAWN.NAME%(),COMMAND$,DIR.ERR%)		&		\ CALL EXITS2 (2%,0%)					&	!								&	!	Error message for missi      ng common region file		&	!								&19900	\ PRINT								&	\ CALL SPAWN (SPAWN.NAME%(),COMMAND$,DIR.ERR%)			&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25      000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32100	\ GOSUB 10510							&	\ CALL EXITS2 (1%,27%)						&	!   „  								&	!	ESC from user dialog	exit				&32200	\ GOSUB 10510							&	\ CALL EXITS2 (2%, 26%)						&	!								&	!	CTRL-Z from user dialog exit				&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END„         œ	Ã`“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	AUTOSK					&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	15-APR-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	1-1	9-FEB 79  BJD	SPR 252444 ADD 2780 SUPPORT	&	!	V1.1/2	9-JUN-79  LBB	SPR T205275 - Make changes such	&	!				that AUTOSIZE will use user's	&	!				previous answers to DZ questions&	!				as default.			&	!								&	!***************************************************************&100	!$***************************************      ***********************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	12		Sysgen dialog file			&	!	13		Terminal I/O				&	!								&	!**************      *************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			TWV				&	!	ASK.CVT$		dialog string response		&	!	ASK.RANGE()		controls size of dialog		&	!				  responses			&	!	BACKUP%			controls backing up through	&	!				  questions			&	!	DEFAULT$		constructed default       string for	&	!				  dialog			&	!	ESCAPE%			controls back-tracking		&	!	FUN.JUMP%		controls branching to special	&	!				  questions			&	!	HELP%()			array for printing help text	&	!				  once per question		&	!	I%			loop variable			&	!	K%			loop variable			&	!	L%			TWV				&	!	LONG.FORM%		controls long prompts		&	!	MAX.TERM%		used in computing maximum	&	!				  allowed # of SE DZ units	&	!	REALLY$			a text string for the hidden	&	!				  switch			&	!	S%			TWV				&	!	STARTING.VECTOR%	octal 300 - start of floating      	&	!				  vectors			&	!	STORE.LONG.FORM%	stored version of long.form%	&	!	SUBSTITUTE.TEXT$()	substitution array for dialog	&	!				  function			&	!	T%			TWV				&	!	T1%			TWV				&	!	T2%			TWV				&	!	TAB.SIZE$		string version of memory size	&	!	TEMP%			TWV				&	!	TEMP%()			temporary working array		&	!	TEMP1%			TWV				&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S          U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	3300		Determine CPU type			&	!	10600		Dispatcher to special device-dependent 	&	!			questions				&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&      	!	-----	--------------  ------------------------------- &	!								&	!	????	FN.INT.TO.OCT$	Convert int to octal string	&	!	????	FN.OCT.TO.INT%	Convert octal string to int	&	!	15001	FN.HELP%	Make sure help text comes out	&	!	15010	FN.RESET%	Reset help text function	&	!	15500	FN.MIN%		Determine minimum value of 2	&	!				once per important question	&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!		      						&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&	!								&	!	Note that a lot gets appended in here			&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP       statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&2000	!$***********************************************      ***************&	!                                                               &	!                                                               &	! 	S Y S G E N    D I A L O G 				&	!                                                               &	!                                                               &	!***************************************************************&2001	\ A%= FN.SETUP.DIALOGUE%					&	\ LONG.FORM%= AUTO.LONG.FORM%					&	\ STORE.LONG.FORM%= LONG.FORM%					&	!								&	!	Setup th      e sysgen dialog					&	!	Initialize long prompts					&	!								&	!								&	!	Note this module contains the "full" specificat	!	dialog.  It does not contain the dialog questions	&	!	which determine if a full manual specification		&	!	is needed.  These questions are in the controller 	&	!	module.  						&2500	!$**************************************************************&	!                                                               &	!                                                               &	! 	      C P U    O P T I O N S    D I A L O G 			&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ GOSUB 3300							&	\ GO TO 32100		IF ESCAPE%= -1%				&	!								&	!	Determine Processor type				&	!	******************************************		&	!								&2510	\ DEFAULT$= "YES"		IF TAB.FPP%= 1%			&	\ DEFAULT$= "NO"		IF TAB.FPP%= 0%			&	\ ON FN.ASK%(153%,DE      FAULT$,"Y",FALSE%,2%)			&		GO TO 2500, 32200, 2512, 2514				&	!								&	!	Floating point processor?				&2512	\ TAB.FPP%= 1%							&	\ GO TO 2520							&	!								&	!	Yes, its present					&2514	\ TAB.FPP%= 0%							&	!								&	!	No, its not present					&	!								&	!	*************************************************	&2520	\ ASK.RANGE(0)= MIN.SYS.SIZE%					&	\ ASK.RANGE(1)= 32200						&	\ TAB.SIZE$= NUM1$(TAB.SIZE%*2%)				&	\ ON FN.ASK%(154%,TAB.SIZE$,"I",TRUE%,2%)			&		GO TO 2510, 32200, 2525					&	!						      		&	!	Memory size question					&2525	\ TAB.SIZE%= ASK.NUM%/2%					&	!								&	!								&	!	**************************************************	&2540	\ GO TO 2542		! LEAVE CODE - BUT FORCE ANSWER FOR REL 1&	\ DEFAULT$= "YES"		IF TAB.PARITY%= 1%		&	\ DEFAULT$= "NO"		IF TAB.PARITY%= 0%		&	\ ON FN.ASK%(156%,DEFAULT$,"Y",FALSE%,2%)			&		GO TO 2520, 32200, 2542, 2544				&	!								&	!	Parity memory present					&2542	\ TAB.PARITY%= 1%						&	\ GO TO 2560							&	!								&	!	Parity memory is present				&2544	\ TAB      .PARITY%= 0%						&	\ GO TO 2560							&	!								&	!	Parity memory is not present				&	!								&	!	***************************************************	&2560	\ GO TO 2562		IF TAB.CPU%= 70%			&	\ GO TO 2564							&	\ DEFAULT$= "YES"	IF TAB.CACHE%= 1%			&	\ DEFAULT$= "NO"	IF TAB.CACHE%= 0%			&	\ ON FN.ASK%(158%,DEFAULT$,"Y",FALSE%,2%)			&		GO TO 2540, 32200, 2562, 2564				&	!								&	!	Cache memory present					&	!	Code left in but answer hard-wired for rel 1		&2562	\ TAB.CACHE%= 1%						&	\ GO TO 2570						      	&2564	\ TAB.CACHE%= 0%						&	!								&	!	Cache memory is not present				&	!								&	!	***************************************************	&2570	\ GO TO 2572		IF TAB.CPU%= 70%			&	\ GO TO 2574							&	\ DEFAULT$= "YES"						&	\ DEFAULT$= "NO"	IF TAB.KT11%= 0%			&	\ ON FN.ASK%(159%,DEFAULT$,"Y",FALSE%,2%)			&		GO TO 2560, 32200, 2572, 2574				&	!								&	!	Branch on ESC, CTRL-Z, extended memory specification	&	!	Code left in but answer is hard-wired			&2572	\ TAB.KT11%= 1%							&	\ GO TO 2580							&	!	      							&	!	Yes, it has extended memory				&2574	\ TAB.KT11%= 0%							&	\ GO TO 2580							&	!								&	!	No, it doesn't						&2580	\ DEFAULT$= NUM1$(TAB.HERTZ%)					&	\ DEFAULT$= "60"	IF TAB.HERTZ%= 0%			&	\ ON FN.ASK%(160%,DEFAULT$,"/50/60",FALSE%,2%)			&		GO TO 2570, 32200, 2582, 2582				&	!								&	!	Branch on ESC, CTRL-Z, either line frequency		&2582	\ TAB.HERTZ%= VAL(ASK.CVT$)					&	!								&	!	Store the line frequency				&2700	!$**************************************************************&	!                                                                     &	!                                                               &	! 	D E V I C E    D I A L O G 				&	!								&	!		CONTROLLER SPECIFICATION			&	!                                                               &	!                                                               &	!***************************************************************&2705	\ FOR I%= 1% TO 4%						&2707	\ DEFAULT$= "YES"						&	\ DEFAULT$= "NO"	IF NO.OF.DEVICES%(I%)= 0%		&	\ G      O TO 2708		IF TAB.CPU%= 70%			&	\ QUESTION.NUM%= 139%						&2708	\ GO TO 2709		IF TAB.CPU% <> 70%			&	\ QUESTION.NUM%= 149%						&2709	\ SUBSTITUTE.TEXT$(1)= "176700"					&	\ SUBSTITUTE.TEXT$(1)= "172440"  	IF I%= 2%		&	\ SUBSTITUTE.TEXT$(1)= "176300"		IF I%= 3%		&	\ SUBSTITUTE.TEXT$(1)= "172040"		IF I%= 4%		&	\ A%= FN.HELP%(1%)						&	!								&	!	Set up defaults and to help text only once		&	!								&	\ ON FN.ASK%(QUESTION.NUM%,DEFAULT$,"Y",FALSE%,1%)		&			GO TO 2710, 32200, 2711, 2720			&	!								&	!	D      etermine if an RH70 is present				&2710	\ GO TO 2500	IF I%= 1%					&	\ I%= I% - 1%							&	\ GO TO 2707							&	!								&	!	Process ESC						&2711	\ NO.OF.DEVICES%(I%)= 1%	IF NO.OF.DEVICES%(I%)= 0%	&	\ GO TO 2730							&	!								&	!	Mark it as present					&2720	\ NO.OF.DEVICES%(I%)= 0%					&	\ GO TO 2797							&	!								&	!	Mark it as absent					&2730	!$**************************************************************&	!                                                               &	!                                                                     &	! 	DETAILED CONTROLLER SPECIFICATION			&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ go to 2732							&	\ GO TO 2732	IF TAB.CPU%= 70%				&	\ GO TO 2732	IF I%= 4%					&	\ SPECIAL0%(I%)= 0%						&	\ SPECIAL0%(I%)= 1%	IF I%= 1%				&	\ SPECIAL0%(I%)= 2%	IF I%= 2%				&	\ SPECIAL0%(I%)= 3%	IF I%= 3%				&	\       GO TO 2770							&	!								&	!	This question is redundant if not a 70, so stuff in 	&	!	the answers and get on with it				&2732	\ DEFAULT$= "DB:"						&	\ DEFAULT$= "MM:"	IF SPECIAL0%(I%)= 2%			&	\ DEFAULT$= "DR:"	IF SPECIAL0%(I%)= 3%			&	\ ASK.RANGE(0)= 3						&	\ A%= FN.HELP%(2%)						&	!								&	\ ON FN.ASK%(172%,DEFAULT$,"/DB:/MM:/DR:",TRUE%,2%)		&		GO TO 2707, 32200, 2740, 2750, 2760			&	!								&	!	Determine what devices are on the RH70			&2740	\ SPECIAL0%(I%)= 1%						&	\ GO TO 2770							&	!				      				&	!	Its a RP05/06						&2750	\ SPECIAL0%(I%)= 2%						&	\ GOTO 2770							&	!								&	!	Its a TU16/45						&2760	\ SPECIAL0%(I%)= 3%						&	\ GO TO 2770							&	!								&	!	Its a RM03						&	!								&	!	***********************************************		&2770	\ SUBSTITUTE.TEXT$(1)= "disk drives"				&	\ SUBSTITUTE.TEXT$(1)= "tape formatters" IF SPECIAL0%(I%)=2%	&	\ DEFAULT$= NUM1$(NO.OF.DEVICES%(I%))				&	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= 8						&	\ ASK.RANGE(1)= 2			 IF SPECIAL0%(I%)= 2%	&	\ A%=       FN.RESET%							&	\ ON FN.ASK%(148%,DEFAULT$,"I",TRUE%,2%)			&		GO TO 2730, 32200, 2775					&	!								&	!	Branch on ESC, CTRL-Z, number of devices		&2775	\ NO.OF.DEVICES%(I%)= ASK.NUM%					&	!								&	!	Store the response					&2780	!$**************************************************************&	!                                                               &	!                                                               &	! 	RP06 questions						&	!                                                                     &	!                                                               &	!***************************************************************&	!								&	\ GO TO 2790	UNLESS	SPECIAL0%(I%)= 1%			&	\ TEMP%= 0%							&	\ FOR K%= 1% TO NO.OF.DEVICES%(I%)				&		\ SUBSTITUTE.TEXT$(2)= NUM1$(K%-1%)			&		\ A%= SPECIAL1%(I%) AND 2%**K%				&		\ DEFAULT$= "NO"					&		\ DEFAULT$= "YES"	IF A% <> 0%			&		!							&		!	Figure out defaults for RP06 question		&		!							&		\ GO TO 2785						&		\ ON FN.ASK%(178%,DEFAULT$,"Y      ",FALSE%,3%)		&			GO TO 2770, 32200, 2785, 2788			&		!							&		!	Is drive an RP06				&2785		\ TEMP%= TEMP% + 2%**K%					&		\ GO TO 2789						&		!							&		!	It is an RP06					&2788		\ TEMP%= TEMP% + 0%					&		\ GO TO 2789						&		!							&		!	It is not an RP06				&2789	\ NEXT K%							&	\ SPECIAL1%(I%)= TEMP%						&	!								&	!								&2790	!$**************************************************************&	!                                                               &	!                                                                     &	!  Mag tape questions						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ GO TO 2797	IF SPECIAL0%(I%) <> 2%				&	\ T1%, T2%= 0%							&	\ FOR K%= 1% TO NO.OF.DEVICES%(I%)				&		!							&		\ ASK.RANGE(0)= 1					&		\ ASK.RANGE(1)= 8					&		\ SUBSTITUTE.TEXT$(2)= NUM1$(K%-1%)			&		\ A%= SPECIAL2%(I%)	AND 255%			&		\       A%= SPECIAL2%(I%) / 2%**8%	IF K% > 1%		&		\ DEFAULT$= NUM1$(A%)					&		\ DEFAULT$= "1"		IF A% < 2%			&		!							&		\ ON FN.ASK%(177%,DEFAULT$,"I",TRUE%,3%)		&			GO TO 2770, 32200, 2792				&		!							&		!	Determine the number of units on the formatter	&2792		\ T1%= ASK.NUM%	IF K%= 1%				&		\ T2%= ASK.NUM% IF K%> 1%				&	\ NEXT K%							&	!								&	!	Store the responses					&2793	\ SPECIAL2%(I%)= T2%*2%**8% + T1%				&	!								&	!	Store the full response in coded form			&2797	\ GOSUB 2870		IF ((TPS.PERSONNE      L% <> 0%) AND 		&					(NO.OF.DEVICES%(I%) > 0%))	&	\ NEXT I%							&	!								&	!								&	!	End of loop for RH70 controllers			&2800	!$**************************************************************&	!                                                               &	!                                                               &	! 	NON- CONTROLLER DEVICES DIALOG				&	!                                                               &	!                                                               &	!*******      ********************************************************&	!								&	\ GO TO 2700		IF BACKUP%= 1% AND I%= 5%		&	\ I%= I% - 1%		IF BACKUP%= 1%				&	\ GO TO 2805		IF BACKUP%= 1%	AND I% > 5%		&	\ BACKUP%= 0%							&	\ FOR I%= 5% TO TABLE.SIZE%					&		!							&2805		\ PRINT 						&		\ SUBSTITUTE.TEXT$(1)= EDIT$(DEV.NAME$(I%),16%)		&		\ ASK.RANGE(0)= 0					&		\ ASK.RANGE(1)= MAX.DEV%(I%)				&		!							&		!							&		\ NO.OF.DEVICES$= NUM1$(NO.OF.DEVICES%(I%))		&		\ A%= FN.HELP%(3%)					&		\ BACKUP%= 0%						&		\       ON FN.ASK% (182%,NO.OF.DEVICES$,"I",TRUE%,1%)		&			GO TO 2806, 32200, 2850				&		!							&		!	Determine # of each device type			&2806		\ BACKUP%= 1%						&		\ GO TO 2800						&		!							&		!	Backup properly					&2850		\ NO.OF.DEVICES%(I%)= ASK.NUM%				&		\ MATCH%(I%)=  1%					&		\ GO TO 2950		IF ASK.NUM%= 0%			&		\ GOSUB 2870						&		\ GO TO 2950						&		!							&		!	Correct # of devices				&		!	& force the match mask to a match		&2870	!$**************************************************************&	!                                                                     &	!                                                               &	! 	SPECIAL QUESTIONS - SOFTWARE SUPPORT ONLY		&	!                                                               &	!                                                               &	!***************************************************************&	!								&		\ GO TO 2950	IF TPS.PERSONNEL%= 0%			&		!							&		\ GO TO 2873	IF ((I% <> 8%) OR (NO.OF.DEVICES%(8%)<2%))&		\ PRINT							&		\       PRINT "% Only secondary printers are referenced below."&		\ PRINT "  The location of the primary printer may not be"&			+ " changed."					&		\ PRINT							&		\ GO TO 2875						&		!							&2873		\ GO TO 2875	IF (I% <> 8%) 				&		\ PRINT							&		\ PRINT "	 The line printer must have the assigned CSR,"&			+ " vector, & priority assignments."		&		\ PRINT							&		\ GO TO 2950						&2875		\ ASK.RANGE(0)= 6					&		\ DEFAULT$= FN.INT.TO.OCT$(FIRST.CSR%(I%))		&		\ DEFAULT$= ""		IF DEFAULT$= "0"		&		\ A%= FN.HELP%      (4%)					&		\ ON FN.ASK% (184%,DEFAULT$,"",TRUE%,2%)			&			GO TO 2805, 32200, 2880					&2880		\ ASK.CVT$= "0"	IF ASK.CVT$= ""				&		\ GO TO 2975		IF FN.REALLY.OCTAL%(ASK.CVT$)= 0%&		\ T%= LEN(ASK.CVT$)					&		\ GO TO 2999	IF T% <> 6%				&		\ GO TO 2999	IF LEFT(ASK.CVT$,1%) <> "1"		&		\ FIRST.CSR%(I%)= FN.OCT.TO.INT%(ASK.CVT$)		&		!							&		!	Error if not all numeric characters		&		!	Accept new CSR value and compute new sysgen CSR &		!	using offset					&		!							&		! ***************************************      ************	&2890		\ ASK.RANGE(0)= 6					&		\ DEFAULT$= FN.INT.TO.OCT$(VECTOR%(I%))			&		\ DEFAULT$= ""		IF DEFAULT$= "0"		&		\ A%= FN.HELP%(5%)					&		!							&		\ ON FN.ASK% (186%, DEFAULT$,"",TRUE%,2%)		&			GO TO 2870, 32200, 2895				&		!							&		!							&2895		\ DEFAULT$= "0"		IF DEFAULT$= ""			&		\ GO TO 2977		IF FN.REALLY.OCTAL%(ASK.CVT$)= 0%&		\ VECTOR%(I%)= FN.OCT.TO.INT%(ASK.CVT$)			&		\ T%= VECTOR%(I%)					&		\ TAB.HIGH%= T%		IF ((T% > 192%) AND (T%> TAB.HIGH%))&		!							&		!	Accept new vector       value if valid		&		!							&		! ******************************************************&2900		\ ASK.RANGE(0)=1					&		\ ASK.RANGE(1)= 7					&		\ DEFAULT$= EDIT$(PRIORITY$(I%),2%)			&		\ A%= FN.HELP%(6%)					&		!							&		\ ON FN.ASK% (188%,DEFAULT$,"I",TRUE%,2%)		&			GO TO 2870, 32200, 2910				&		!							&		!	Let the user specify a new priority value	&2910		\ PRIORITY$(I%)= NUM1$(ASK.NUM%)			&		\ RETURN						&		!							&		!	Accept the new value				&2950	!$****************************************************      **********&	!                                                               &	!                                                               &	! 	Special questions for special devices			&	!                                                               &	!                                                               &	!***************************************************************&	!								&		\ FUN.JUMP%= QUESTION%(I%)				&		\ GOSUB 10600						&		\ GO TO 2805	IF ESCAPE%= 1%				&		!							&		!	Ask any spe      cial questions			&2951	\ NEXT I%							&	\ CALL EXITS2 (1%,0%)						&	!								&	!								&	!	End of Dialog - try to process results			&	!	back at the controller module				&2975	!$**************************************************************&	!                                                               &	!                                                               &	! 	Miscellaneous error messages				&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	\ PRINT								&	\ PRINT "% The specified CSR value is not a valid octal number"	&	\ GO TO 2870							&	!								&	!	Error message for bad CSR value in Dialog		&2977	\ PRINT 							&	\ PRINT "% The specified vector value is not a valid octal number"&	\ GO TO 2890							&	!								&	!	Error message for bad vector value in Dialog		&2999	\ PRINT								&	\ PRINT "% Illegal response!"					&	\ PRINT "Th      e answer must be 6 characters long starting with 1!"	&	\ PRINT								&	\ GO TO 2870							&	!								&3000	!$**************************************************************&	!                                                               &	!                                                               &	! 	SPECIAL PRINTER QUESTION				&	!                                                               &	!                                                               &	!***************************************      ************************&	!								&	\ GO TO 3032	IF I% <> 8% OR NO.OF.DEVICES%(I%)= 0%		&	\ TEMP%= 0%							&	\ FOR K%= 1% TO NO.OF.DEVICES%(I%)				&		\ SUBSTITUTE.TEXT$(3%)= NUM1$(K%-1%)			&		\ A%= SPECIAL2%(I%) AND 2%**(K%-1%)			&		\ DEFAULT$= "NO"					&		\ DEFAULT$= "YES"	IF A% <> 0%			&		!							&		\ ON FN.ASK%(190%,DEFAULT$,"Y",FALSE%,3%)		&			GO TO 3005, 32200, 3010	, 3020			&		!							&		!	Is line printer an LA180			&3005		\ ESCAPE%= 1%						&		\ GO TO 10650						&		!							&		!	Process ESC response      				&3010		\ TEMP%(K%-1%)= 1%					&		\ GO TO 3030						&		!							&		!	Yes						&3020		\ TEMP%(K%-1%)= 0%					&		\ GO TO 3030						&		!							&		!	No						&3030		\ TEMP%= TEMP% + TEMP%(K%-1%)*2%**(K%-1%)		&		!							&	\ NEXT K%							&	\ SPECIAL2%(I%)= TEMP%						&3032	\ GO TO 10650							&	!								&	!	Code the printer type response				&3050	!$**************************************************************&	!                                                               &	!                                                                     &	! 	DZ11 QUESTION						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ GO TO 3120	IF I% <> 11% 					!V1.1/2&	\ IF NO.OF.DEVICES%(I%)= 0%					!V1.1/2&	  THEN								!V1.1/2&		  SPECIAL0%(I%) = 0%					!V1.1/2&		\ SPECIAL1%(I%) = 0%					!V1.1/2&		\ SPECIAL2%(I%) = 0%					!V1.1/2&		\ SPECIAL3%(I%) = 0%					!V1.1/2&		\       SPECIAL4%(I%) = 0%					!V1.1/2&		\ GO TO 3120						!V1.1/2&	  ELSE								!V1.1/2&		  ASK.RANGE(0)= 0					&		\ ASK.RANGE(1)= NO.OF.DEVICES%(I%)			&		\ DEFAULT$= NUM1$(NO.OF.DEVICES%(I%))			&		\ DEFAULT$ = NUM1$(SPECIAL4%(I%))			!V1.1/2&			IF SPECIAL4%(I%) > -1%				!V1.1/2&		\ ON FN.ASK%(195%,DEFAULT$,"I",TRUE%,3%)		&			GO TO 3051, 32200, 3052				&	!								&	!	Skip this section if there are no DZs.			 V1.1/2&	!		Determine # of A.E. DZ 				&	!		Set the default to value previously specified	 V1.1/2&	!		  by u      ser (if it exists).			 V1.1/2&3051	\ ESCAPE%= 1%							&	\ GO TO 10650							&	!								&	!	If ESC response, set flag and exit subroutine.		 V1.1/2&3052	\ SPECIAL4%(I%)= ASK.NUM%					&	\ T% = NO.OF.DEVICES%(I%)-ASK.NUM% 				!V1.1/2&	\ SPECIAL0%(I%) = T%	IF SPECIAL0%(I%) < 0%			!V1.1/2&				OR SPECIAL0%(I%) > T%			!V1.1/2&	\ IF SPECIAL0%(I%) = 0%						!V1.1/2&	  THEN								!V1.1/2&		  SPECIAL2%(I%) = 0%					!V1.1/2&		\ SPECIAL3%(I%) = 0%					!V1.1/2&		\ GO TO 3130						!V1.1/2&	!								 V1.1/2&	!	Store user      -specified number of DZs in A.E.		 V1.1/2&	!	Calculate how many DZs are left over for S.E.		 V1.1/2&	!	The number of DZs left over will be the default		 V1.1/2&	!	  if the number of S.E. DZs has not yet been specified	 V1.1/2&	!	  or if the number previously specified is too high.	 V1.1/2&	!	If all DZs are in the A.E.				 V1.1/2&	!	  then							 V1.1/2&	!		clear the other S.E. DZ variables		 V1.1/2&	!		and exit the subroutine.			 V1.1/2&3055	\ ASK.RANGE(0)= 0						&	\ MAX.TERM%= 9%							&	\ MAX.TERM%= 17%	      IF AUTO.DEV.SYS%<> 0%			&	\ T%= NO.OF.DEVICES%(6%) + NO.OF.DEVICES%(7%)			&	\ S%= (MAX.TERM%-T%+7%)/8%					&	\ S%= -S%	IF S% < 0%					&	\ ASK.RANGE(1)= FN.MIN%(2%,S%)					&	\ ASK.RANGE(1)= 15		IF HOME.BASE%= 1%		&	\ SPECIAL0%(I%) = ASK.RANGE(1) 	IF SPECIAL0%(I%) > ASK.RANGE(1)	!V1.1/2&	\ DEFAULT$= NUM1$(SPECIAL0%(I%) )				&	!								&	!	Determine default & range				&	!	Make sure that default does not exceed maximum allowed.	 V1.1/2&	!								&	\ ON FN.ASK%(192%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 3050, 32200,       3070					&	!								&	!	# of DZs in S.E.					&3070	\ SPECIAL0%(I%)= ASK.NUM%					&	\ IF SPECIAL0%(I%) = 0%						!V1.1/2&	  THEN								!V1.1/2&		  SPECIAL2%(I%) = 0%					!V1.1/2&		\ SPECIAL3%(I%) = 0%					!V1.1/2&		\ GO TO 3130						!V1.1/2&	!								 V1.1/2&	!	Accept the updated response.				 V1.1/2&	!	If there are no DZs in the S.E.				 V1.1/2&	!	  then							 V1.1/2&	!		clear the other S.E. DZ variables		 V1.1/2&	!		and exit subroutine.				 V1.1/2&3080	\ DEFAULT$= "NO"						&	\ DEFAULT$= "YES"	IF SPECIA      L1%(I%) <> 0%			&	\ ON FN.ASK%(168%,DEFAULT$,"Y",FALSE%,3%)			&		GO TO 3050,32200,3100,3082				&	!								&	!	Do you need modem support				&3082	\ SPECIAL1%(I%)= 0%						&	\ GO TO 3120							&	!								&	!	No							&3100	\ DEFAULT$= NUM1$(SPECIAL1%(I%) )				&	\ DEFAULT$= "300"		IF DEFAULT$= "0"		&	\ ON FN.ASK%(191%,DEFAULT$,"I",FALSE%,3%)			&		GO TO 3050, 32200, 3110					&	!								&	!	S.E. DZ baud rate					&3110	\ GO TO 3115	UNLESS ASK.NUM%= 110% OR ASK.NUM%= 150% OR 	&				ASK.NUM%= 300%				&	\ SPECIAL1%(I      %)= ASK.NUM%					&	\ GO TO 3120							&	!								&	!	Accept the updated response				&3115	\ PRINT "% Your response is not an acceptable baud rate."	&	\ GO TO 3100							&	!								&	!	Print error message if bad baud rate & try again	&3120	\ GO TO 3130	IF SPECIAL0%(I%)= 0%				&	\ FOR L%= 1% TO SPECIAL0%(I%)					&		\ ASK.RANGE(0)= 1					&		\ ASK.RANGE(1)= 8					&		\ SUBSTITUTE.TEXT$(1)= "first "				&		\ DEFAULT$= NUM1$(SPECIAL2%(I%))			&		\ DEFAULT$= NUM1$(SPECIAL3%(I%))	IF L%= 2%	&		\ DEFAULT$= "8"	IF DEFAUL      T$= "0"			&		\ SUBSTITUTE.TEXT$(1)= "second "	IF L% > 1%	&		!							&		\ ON FN.ASK%(223%,DEFAULT$,"I",TRUE%,3%)		&			GO TO 3100, 32200, 3125				&		!							&		!	Determine # of terminals on se DZ		&3125		\ SPECIAL2%(I%)= ASK.NUM%	IF L%= 1%		&		\ SPECIAL3%(I%)= ASK.NUM%	IF L%= 2%		&	\ NEXT L%							&3130	\ GO TO 10650							&3150	!$**************************************************************&	!                                                               &	!                                                                     &	! 	DUP QUESTION						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	!								&	\ GO TO 3160		IF I% <> 10% OR NO.OF.DEVICES%(I%)= 0%	&	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= NO.OF.DEVICES%(I%)				&	\ DEFAULT$= NUM1$(NO.OF.DEVICES%(I%))				&	\ ON FN.ASK%(196%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 3151, 32200, 3152					&	!								&	!	D      Etermine # of A.E. DUP					&3151	\ ESCAPE%= 1%							&	\ GO TO 10650							&3152	\ SPECIAL1%(I%)= ASK.NUM%					&	\ T%= NO.OF.DEVICES%(I%) - ASK.NUM%				&	\ SPECIAL0%(I%)= 0%	IF T%= 0%	&	\ GO TO 3160		IF T%= 0%	&3153	\ DEFAULT$= NUM1$(SPECIAL0%(I%)	)				&	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= T%						&	\ ASK.RANGE(1)= 4	IF T% > 4%		&	!								&	\ ON FN.ASK%(193%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 3150, 32200, 3155					&	!								&	!	DUPs in 3271 region					&3155	\ SPECIAL0%(I%)= ASK.NUM%					&	!								&	!      	Accept the user response				&3156	\ DEFAULT$= NUM1$(SPECIAL2%(I%))				&	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= T%- SPECIAL0%(I%)				&	\ ASK.RANGE(1)= 4		IF ASK.RANGE(1) > 4		&	\ SPECIAL2%(I%)= 0%						&	\ GO TO 3160		IF ASK.RANGE(1) <= 0			&	!								&	\ Q2780%= 198%							&	\ ON FN.ASK%(Q2780%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 3153, 32200, 3158					&	!								&	!	DUPs in 2780 region					&3158	\ SPECIAL2%(I%)= ASK.NUM%					&	\ GO TO 3160							&3160	\ GO TO 10650							&3200	!$**************************      ************************************&	!                                                               &	!                                                               &	! 	DMC QUESTION						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	!								&3210	\ TEMP%= 0%							&	\ TEMP1%= 0%							&	\ GO TO 3230	IF I% <> 13%	OR NO.OF.DEVICES%(I%)= 0%	&	      \ FOR K%= 1% TO NO.OF.DEVICES%(I%)				&	\ T%= 4%**(K%-1%)						&		!							&		\ SUBSTITUTE.TEXT$(5)= NUM1$(K%-1%)			&		\ T1%= (SPECIAL1%(I%)/T%) AND 3%			&		\ T2%= (SPECIAL0%(I%)/T%) AND 3%			&		\ DEFAULT$= "FULL-DUPLEX"				&		\ DEFAULT$= "Full-duplex"		IF T2%= 1%	&							AND K%<= 7%	&		\ DEFAULT$= "Full-duplex"		IF T1%= 1%	&							AND K% > 7%	&		\ DEFAULT$= "Primary half-duplex"	IF T2%= 2%	&							AND K%<=7%	&		\ DEFAULT$= "Primary half-duplex"	IF T1%= 2%	&							AND K% > 7%	&		\ DEFAULT$= "Secondary half-d      uplex"	IF T2%= 3%	&							AND K%<=7%	&		\ DEFAULT$= "Secondary half-duplex"	IF T1%= 3%	&							AND K% > 7%	&		!							&		\ ON FN.ASK% (194%,DEFAULT$,				&		   "/FULL-DUPLEX/PRIMARYHALF-DUPLEX/SECONDARYHALF-DUPLEX"&		    ,FALSE%,3%)						&			GO TO 3212, 32200, 3215, 3218, 3220		&		!							&		!	Branch on ESC, CTRL-Z, each of three responses	&3212		\ ESCAPE%= 1%						&		\ GO TO 10650						&		!							&		!	Process escape response				&3215		\ TEMP%= TEMP% + 1%*T% 	IF K% <= 7%			&		\ TEMP1%= TEMP1% + 1%*T% 	IF K%       > 7%		&		\ GO TO 3225						&		!	Process full - duplex response			&3218		\ TEMP%= TEMP% + 2%*T%	IF K% <= 7%			&		\ TEMP1%= TEMP1% + 2%*T%	IF K% > 7%		&		\ GO TO 3225						&		!							&		!	Process primary half-duplex response		&3220		\ TEMP%= TEMP% + 3%*T%	IF K% <= 7%			&		\ TEMP1%= TEMP1% + 3%*T%	IF K% > 7%		&		\ GO TO 3225						&		!							&		!	Process secondary half-duplex response		&3225	\ NEXT K%							&	!								&	!	Loop through the DMC devices				&3230	\ SPECIAL0%(I%)= TEMP%						&	\ SPECIAL1%(I%)= TEMP1      %						&	\ GO TO 10650							&	!								&	!	Store final response and return				&3250	!$**************************************************************&	!                                                               &	!                                                               &	! 	RK06 QUESTION						&	!                                                               &	!                                                               &	!***************************************************************&	!					      			&3252	\ TEMP%= 0%							&	\ GO TO 3260	IF I% <> 14% OR NO.OF.DEVICES%(I%) = 0%		&	\ FOR L%= 1% TO NO.OF.DEVICES%(I%)				&		\ DEFAULT$= "NO"					&		\ DEFAULT$= "YES"					&			IF (SPECIAL0%(I%) AND 2%**L%)   <> 0%		&		\ SUBSTITUTE.TEXT$(1)= NUM1$(L%-1%)			&		!							&		\ GO TO 3258						&		\ ON FN.ASK%(181%,DEFAULT$,"Y",FALSE%,3%)		&			GO TO 3255, 32200, 3256, 3258			&		!							&		!	Branch on ESC, CTRL-Z, RK07, RK06		&3255		\ ESCAPE%= 1%						&		\ GO TO 10650						&		!							&		!	Process ESCAPE					&3256		\       TEMP%= TEMP% + 2%**L%					&		\ GO TO 3259						&		!							&		!	Process RK07					&3258		\ TEMP%= TEMP% + 0%					&		!							&		!	Process RK06					&3259	\ NEXT L%							&	\ SPECIAL0%(I%)= TEMP%						&	!								&	!	Store coded response					&3260	\ GO TO 10650							&	!								&3300	!$**************************************************************&	!                                                               &	!                                                               &	! 	CPU TYPE QUESTION					&	!                                                                     &	!                                                               &	!***************************************************************&	!								&	\ STARTING.VECTOR%= 192%					&	\ TPS.PERSONNEL%= 0%						&	\ REALLY$= ""							&3301	\ SUBSTITUTE.TEXT$(1%)= REALLY$					&	\ T$= FN.CALC.PASSWORD$ (DATE$(0))				&	\ LIST$= "/11-70/11-34/11-60/" + T$				&	\ ON FN.ASK% (152%,"11-70",LIST$,FALSE%,1%)	&			GO TO 3312, 32200, 3314,3316,3318,3320		&	!								&	!	De      termine CPU type					&3312	\ ESCAPE%= -1%							&	\ RETURN							&	!								&	!	ESC was returned					&3314	\ TAB.CPU%= 70%							&	\ DEV.NAME$(1%)= "RH70 Cont. #1   "				&	\ DEV.NAME$(2%)= "RH70 Cont. #2   "				&	\ DEV.NAME$(3%)= "RH70 Cont. #3   "				&	\ DEV.NAME$(4%)= "RH70 Cont. #4   "				&	\ RETURN							&	!								&	!	We have an 11-70 with RH70 controllers			&3316	\ TAB.CPU%= 34%							&	\ GO TO 3319							&3318	\ TAB.CPU%= 60%							&3319	\ DEV.NAME$(1%)= "RH11 Cont#1     "				&	\ DEV.NAME$(2%)= "RH11       Cont#2     "				&	\ DEV.NAME$(3%)= "RH11 Cont#3     "				&	\ DEV.NAME$(4%)= "RH11 Cont#4     "				&	\ RETURN							&	!								&	!	Set the CPU storage value to the number of the CPU 	&	!	Load in descriptive device names			&	!	if this is not an 11-70					&	!								&3320	\ TPS.PERSONNEL%= 1%						&	\ TINKERED.WITH%= 1%						&	\ REALLY$= "really "						&	\ PRINT								&	\ PRINT "WARNING - No floating CSR addresses or vectors will" + &			" be computed."					&	\ PRINT								&	\ PRINT "You must specify them AL      L by hand!"			&	\ PRINT								&	\ GO TO 3301							&	!								&	!	This is a hidden switch to enable TPS people to 	&	!	specify CSR & vector addresses and priorities		&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&10600	!$*************************************************************      *&	!                                                               &	!                                                               &	! 	B R A N C H    T O   S P E C I A L    R O U T I N E S 	&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ ESCAPE%= 0%							&	\ A%= FN.RESET%							&	\ ON FUN.JUMP%							&			GOTO	10650,		!Tricky exit		&				3000,      		!			&				3200,		!			&				3150,		!			&				3050,		!			&				3250		!			&	!								&	!	This routine turns control over to a special question.  &	!	Which question is determined by the value of FUN.JUMP%	&	!								&	!	2 - LP question						&	!	3 - DMC question					&	!	4 - DUP question					&	!	5 - DZ question						&	!	6 - RK question						&10650	\ RETURN							&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!	      	T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15001	\ DEF FN.HELP%(L%)						&	\ LONG.FORM%= STORE.LONG.FORM%					&	\ LONG.FORM%= FALSE%	IF HELP%(L%) > 0%			&	\ HELP%(L%)= HELP%(L%) + 1%					&	\ FN.HELP%= 0%							&	\ FNEND								&	!								&	!	This function and the one below allows us 		&	!	to give the rather wordy help texts only once on the 	&	!	questions where it would keep on coming out		&15010	\ DEF FN.RESET%							&	\ LONG.FORM%=       STORE.LONG.FORM%					&	\ FNEND								&	!								&	!	Reset help text long prompt to user specified value	&15500	\ DEF FN.MIN% (A%, B%)						&	!								&	\ FN.MIN%= A%							&	\ FN.MIN%= B%	IF B% < A%					&	\ FNEND								&	!								&	!	This function returns the minimum value of 2 integers	&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!*************************************************      **************&	!								&19900	\ PRINT								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ ON ERROR GO TO 0						&	!								&	!	Standard unexpected error trapping			&20000	!$**************************************************************&	!								&	!								&	!	TPS LIBRARY SUB-ROUTINES				&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O       N S		&	!								&	!								&	!***************************************************************&32000	\ CLOSE #T% 	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%,0%)						&	!								&	!	Unsuccessful exit					&32100	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(1%,27%)						&	!								&	!	ESC exit						&32200	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%,26%)						&	!								&	!	CTRL-Z exit						&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F     ž     P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ CALL EXITS2(2%,0%)						&	\ END ž          9zµs“Á› 8$       811	\ COM	(VTSTRN)	TERMINAL.LINE.1$ = 79,			&				TERMINAL.LINE.2$ = 79,			&					 VT.CMD$ = 79			&	!								&	!	These contain the command strings for the QIO call.	&	!	They must have fixed addresses and so reside in COMMON.	&28000	!$**************************************************************&	!								&	!								&	!	V I R T U A L      T E R M I N A L    S U P P O R T	&	!								&	!								&	!	This is a collection of functions, useful to the B+2	&	!	programmer in utilizing the "virtual terminal" facility	&      	!	of TRAX.  This collection of functions is available 	&	!	only to TRAX development personnel at this time.	&	!								&	!	A special flag, VT.DEBUG%, when set to TRUE%, will	&	!	cause various status messages to appear as the Virtual	&	!	Terminal service is used.				&	!								&	!								&	!***************************************************************&28001	!***************************************************************&	!								&	!								&	!	I N I T I A L I Z E    A     T A S K    O N    A	&	!								      &	!		  V I R T U A L     T E R M I N A L		&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	00					&	!	Edit date:	02-Mar-78				&	!	Author(s):	BJD (Edited by WJB)			&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00  030278    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!	USAGE FORMAT:	FN.TASK.INIT% ( TASK$ )			&	!								&	!	INPUT:	TASK$		- installed name of task to      	&	!				  be initialized.		&	!								&	!	RETURN:			- value of 1% to signal SUCCESS	&	!				  unless ASTO50 errors occur or	&	!				  the task initiation fails.	&	!				  Then a status code of 0 is	&	!				  returned.			&	!								&	!	The specified task, which must be installed in the	&	!	system, is started up, using the virtual terminal	&	!	previously created by FN.VT.CREATE%.  The background	&	!	support routines will communicate with the task through	&	!	the terminal via other functions in this collection.	&	      !								&	!								&	!***************************************************************&								       !&	DEF  FN.TASK.INIT%(TASK$)					&								       !&		\ FN.TASK.INIT% = 1%					&		\ VT.A$ = TASK$						&		\ VT.A$ = LEFT(TASK$,6%)	IF LEN(TASK$) > 6%	&		\ CALL ASTO50 ( LEFT(VT.A$,3%),TEMP1%,ASTO50.ERR1%)	&		\ CALL ASTO50 (RIGHT(VT.A$,4%),TEMP2%,ASTO50.ERR2%)	&		\ VT.NAME%(0) = TEMP1%					&		\ VT.NAME%(1) = TEMP2%					&		!							&		!	Preset SUCCESS return.				&		!	Convert the task name to RAD50 form.  Only 6      	&		!	  characters are allowed, and the conversion 	&		!	  is done in two parts.				&		!							&		\  EX.FLAG%,						&		   IN.FLAG%,						&		  OUT.FLAG% = 0%					&		\ EV.FLG% = 31%						&		\ CALL VTINIT BY REF (VT.NAME%(),	! task name !	&				      EV.FLG%,		! Flag is 31!	&				      EX.FLAG%,		! Task Term.!	&				      IN.FLAG%,		! Input flag!	&				      OUT.FLAG%,	! Output flg!	&				      VT.CMD$,		! Init Cmd  !	&				      VT.ERR%	       )! Status    !	&		!							&		!	Clear the control flags.			&		!	Event fla      g 31 is reserved for use in		&		!	  communicating by the support routines.	&		!	Call the support routine to initialize the task.&		!							&		\ FN.TASK.INIT% = 0%	IF VT.ERR% <> 1%		&					OR ASTO50.ERR1% <> 0%		&					OR ASTO50.ERR2% <> 0%		&		!							&		!	Return FAILURE status if the task initialization&		!	  failed, or a RAD50 conversion failure occurred&		!							&		\ PRINT "Initializing task: ";				&			TASK$;						&			"(";						&			NUM$(VT.ERR%);					&			NUM$(ASTO50.ERR1%);				&			NUM$(ASTO50.ERR2%);				&      			")"			IF VT.DEBUG% = -1%	&		!							&		!	Debug printout.					&		!							&	\ FNEND								&28050	!$**************************************************************&	!								&	!								&	!	S E N D    CTRL/Z    T O     T A S K    R U N N I N G	&	!								&	!	O N    A    V I R T U A L    T E R M I N A L		&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	01					 BL7-01&	!	Edit date:	31-May-78				 BL7-01&	!	Author(s):	BJD (Edited by WJB)			&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	        ---	------------------------------- &	!	BL7-00  030278    WJB   Field Test Release I		&	!	BL7-01  053178    WJB   Correct rest of IN.FLAG%	 BL7-01&	!								&	!***************************************************************&	!								&	!	USAGE FORMAT:	FN.VT.EOF%				&	!								&	!	RETURN:			- always returns SUCCESS status	&	!								&	!								&	!	Because of the mechanics of virtual terminal support,	&	!	this function is the only way that a CTRL/Z can be	&	!	issued to the task running on the virtual termin      al.	&	!								&	!								&	!***************************************************************&								       !&	DEF FN.VT.EOF%							&								       !&		\ CALL QIOEOF						&		\ IN.FLAG% = 0%						!BL7-01&		\ FN.VT.EOF% = 1%					&		!							&		!	Call the support routine to send the CTRL/Z.	&		!	Make sure no input requests remain.		 BL7-01&		!	Return SUCCESS status.				&		!							&		\ PRINT "Sending CTRL/Z to VT"	IF VT.DEBUG% = -1%	&		!							&		!	Debug printout.					&		!							&	\ FNEND								&28100	!$*******      *******************************************************&	!								&	!								&	!	R E L E A S E    T H E    V I R T U A L    T E R M .	&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	00					&	!	Edit date:	02-Mar-78				&	!	Author(s):	BJD (Edited by WJB)			&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00  030278    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!	USAG      E FORMAT:	FN.VT.DONE%				&	!								&	!	RETURN:			- SUCCESS status unless the	&	!				  release of the virtual	&	!				  terminal failed.		&	!				  Then FAILURE status (0).	&	!								&	!	The FN.VT.EOF% call should be issued before this 	&	!	function is used, if the task is known to be still	&	!	running.						&	!								&	!								&	!***************************************************************&								       !&	DEF FN.VT.DONE%							&								       !&		\ FN.VT.DONE% = 1%					&		\ CALL VTREM(VT.ERR%)					&	      	\ FN.VT.DONE% = 0%	IF VT.ERR% <> 1%		&		!							&		!	Preset SUCCESS return.				&		!	Call the support routine to release the virtual	&		!	  terminal.					&		!	Return FAILURE status if release failed.	&		!							&		\ PRINT "Releasing VT"	IF VT.DEBUG% = -1%		&		!							&		!	Debug printout.					&		!							&	\ FNEND								&28150	!$**************************************************************&	!								&	!								&	!	C R E A T E    A    V I R T U A L    T E R M I N A L	&	!								&	!								&	!	Version:	BL7			      		&	!	Edit level:	00					&	!	Edit date:	02-Mar-78				&	!	Author(s):	BJD (Edited by WJB)			&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00  030278    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!	USAGE FORMAT:	FN.VT.CREATE%				&	!								&	!	RETURN:			- the number of the virtual	&	!				  terminal created.		&	!								&	!								&	!******************************************      *********************&								       !&	DEF FN.VT.CREATE%						&								       !&		\ CALL VTMAKE(VTERM.NUM%)				&		\ FN.VT.CREATE% = VTERM.NUM%				&		!							&		!	Call the support routine to create the virtual	&		!	  terminal.					&		!	Return the terminal number to the caller.	&		!							&		\ PRINT "Creating VT"	IF VT.DEBUG% = -1%		&		!							&		!	Debug printout.					&		!							&	\ FNEND								&28200	!$**************************************************************&	!								&	!								&	!	W R I T E     T E       X T    T O    V I R T U A L		&	!								&	!			T E R M I N A L				&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	01					 BL7-01&	!	Edit date:	31-May-78				 BL7-01&	!	Author(s):	BJD (Edited by WJB)			&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00  030278    WJB   Field Test Release I		&	!	BL7-01  053178    WJB   Correct reset of IN.FLAG%	 BL7-01&	!								&	!***************************************************************&	!								&      	!	USAGE FORMAT:	FN.VT.WRITE.TO% ( LINE$ )		&	!								&	!	INPUT:	LINE$		- text string to be written on	&	!				  the virtual terminal.		&	!	RETURN:			- SUCCESS (1) always.		&	!								&	!								&	!	This function may not be used unless the task running	&	!	on the virtual terminal has requested input.		&	!								&	!								&	!***************************************************************&								       !&	DEF FN.VT.WRITE.TO% (LINE$)					&								       !&		\ VT.LENGTH% = LEN(LINE$)				&		\ TERMINAL.LINE.2$       = LINE$				&		\ GO TO 28210	IF LINE$ = ""				&		\ CALL QIOOUT BY REF (TERMINAL.LINE.2$,VT.LENGTH%)	&		\ IN.FLAG% = 0%						!BL7-01&		\ FN.VT.WRITE.TO% = 1%					&		!							&		!	Get the length of the text string.		&		!	Move the text string into a fixed position	&		!	  buffer.					&		!	Go handle NULL buffers in a special way.	&		!	Call the support routine to send the text.	&		!	Reset the input request flag.			&		!	Signal SUCCESS return.				&		!							&		\ PRINT "Sending to VT: "; 				&			LINE$			IF VT.DEBUG%       = -1%	&		\ GO TO 28249						&		!							&		!	Debug printout.					&28210		\ CALL QIODUM 						&		\ IN.FLAG% = 0%						!BL7-01&		\ FN.VT.WRITE.TO% = 1%					&		!							&		!	For the NULL response, a special support routine&		!	  is called.					&		!	Reset the input request flag.			&		!	Signal SUCCESS status.				&		!							&		\ PRINT "Sending NULL to VT"	if VT.DEBUG% = -1%	&		!							&		!	Debug printout.					&28249	\ FNEND								&28250	!$**************************************************************&	!								&	!      								&	!	R E A D    R E S P O N S E    F R O M    V I R T U A L	&	!								&	!		     T E R M I N A L				&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	01					 BL7-01&	!	Edit date:	31-May-78				 BL7-01&	!	Author(s):	BJD (Edited by WJB)			&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00  030278    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!	USAGE FORMAT:	FN.      READ.RESPONSE$			&	!								&	!	RETURN:			- the text string received from &	!				  the virtual terminal.		&	!				- the output flag is reset.	&	!								&	!								&	!***************************************************************&								       !&	DEF FN.READ.RESPONSE$						&								       !&		\ CALL QIOIN BY REF (TERMINAL.LINE.1$)			&		\ OUT.FLAG% = 0%					!BL7-01&		\ FN.READ.RESPONSE$ = TERMINAL.LINE.1$			&		!							&		!	Call the support routine to get the text string.&		!	Reset the output present flag.		      	&		!	Pass out the text string to the caller.		&		!							&		\ PRINT "Read from VT: ";				&			EDIT$(TERMINAL.LINE.1$,128%)			&				IF VT.DEBUG% = -1%			&		\ TERMINAL.LINE.1$ = ""					&		!							&		!	Debug printout.					&		!	Clear the text buffer for re-use.		&		!							&	\ FNEND								&28900	!$**************************************************************&	!								&	!								&	!	V I R T U A L    T E R M I N A L     C O M M .		&	!								&	!		    C O N T R O L				&	!								&	!								&	!	Version:	BL7					&      	!	Edit level:	02					 BL7-02&	!	Edit date:	24-Mar-78				 BL7-02&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00  022878    WJB   Field Test Release I		&	!	BL7-01  032478	  WJB	Change PROMPT and ERR search to  BL7-01&	!				  INSTR type searches.		 BL7-01&	!	BL7-02	032478	  AJS	Put EXIT check last		 BL7-02&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.      VT.COMM% ( PROMPT$ , ERR$ )		&	!								&	!	INPUT:	PROMPT$		- a text string used by the	&	!				  function to recognize that	&	!				  utility is prompting for	&	!				  input.			&	!		ERR$		- a text string used by the	&	!				  function to detect that an	&	!				  output from the utility is an	&	!				  error response.		&	!								&	!	RETURN:			- a value between 1 and 5, for	&	!				  use in an ON-GO-TO structure	&	!								&	!		EX.FLAG%	- status + 1 of task if it	&	!				  exited.			&	!		VT.RESPONSE$	- terminal ou      tput if a response	&	!				  was received.			&	!								&	!	LOCAL:	T2800%	- internal holder of select code.	&	!								&	!								&	!	The ON-GO-TO values are:				&	!								&	!		1	Task executing through the VT terminated&	!								&	!		2	Task prompted over the VT.		&	!								&	!		3	Task has requested input.  Input is	&	!			  sent via FN.VT.WRITE.TO%.		&	!								&	!		4	A non-error response has been received.	&	!								&	!		5	An error response has been received.	&	!								&	!								&	!	A special variable,       VT.DEBUG%, if set to TRUE%, will	&	!	cause all text lines received from the VT to be printed.&	!								&	!								&	!***************************************************************&								       !&	DEF FN.VT.COMM%(PROMPT$,ERR$)					&28920		\ GO TO 28940	IF OUT.FLAG% = 0%			&		\ VT.RESPONSE$ = FN.READ.RESPONSE$			&		\ T2890$ = EDIT$(VT.RESPONSE$,4%+32%)			&		\ IF INSTR(1%,T2890$,PROMPT$) <> 0%			!BL7-01&		  THEN							&			  T2800%,					&			  FN.VT.COMM% = 2%				&			\ GO TO 28999					&		!							&		!	Skip o      ut processing if there is none.		&		!	Debug printout if requested.			&		!	Get the output text string.			&		!	If the output is the prompt, then signal #2	&		!	  and exit.					&28930		\ T2800%,						&		  FN.VT.COMM% = 4%					&		\ T2800%,						&		  FN.VT.COMM% = 5%					&			IF INSTR(1%,T2890$,ERR$) <> 0%			!BL7-01&		\ GO TO 28999						&		!							&		!	Signal #4 for non-error response.		&		!	Change to #5 if error prefix string is found.	&28940		\ IF IN.FLAG% <> 0%					&		  THEN							&			  T2800%,					!BL7-02&			   Ø    FN.VT.COMM% = 3%				&			\ GOTO 28999					&		!							&		!	Signal 3 if input requested.			&28950		\ IF EX.FLAG% <> 0%					!BL7-02&		  THEN							&			T2800%,						&			FN.VT.COMM%=1%					&			\ GOTO 28999					&		  ELSE							&			SLEEP 1%					&			\ GOTO 28920					&		!							&		!	If the task terminates, signal 1		&		!	Otherwise, sleep a second and check everything	&		!		again.					&28999		\ PRINT "VT COMM Selection: ";				&			T2800%			IF VT.DEBUG% = -1%	&	\ FNEND								& Ø         Ú2$“Á› 8$     r   1010	\ VER.EDIT.NUM$ = "V2.0"					!2.0A00&	!								 2.0A00&	!	Assign the current version/edit level #			 2.0A00& r          çU“Á› 8$à      481	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!		F O R    T H E    B R E E D			&	!								&	!		    S U B R O U T I N E				&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	BREED.COMMAND$		Text string of command line to	&	!				  be sent to spawned task. Task	&	!				  must be installed.		&	!	BREED.CVT.ERROR%	= 0% if no RAD50 convert errors	      &	!				= 1% if error in first 3 chars	&	!				= 2% if error in last  3 chars	&	!				= 3% if error in both halves	&	!	BREED.DEBUG%		= TRUE% if debug print of	&	!				  each command spawned		&	!	BREED.ERROR%		Error indicator for SPAWN call	&	!	BREED.NOSPAWN%		= TRUE% if task is not to be	&	!					spawned.		&	!	BREED.RETURN%		= FALSE% to cause BREED to do	&	!				  error checking and printing	&	!				  of error messages.  Exits	&	!				  program.			&	!				= TRUE% to cause return to	&	!				  calling program even when      	&	!				  errors occur.			&	!	BREED.TASK$		Task name of task to be spawned	&	!	BREED.TASK.NAME%()	Array for RAD50 task name	&	!								&	!***************************************************************&935	\ DIM	BREED.TASK.NAME%(1%)					&	!								&	!	The array containing the RAD50 version of the spawned 	&	!	task name.						&20000	!$**************************************************************&	!								&	!								&	!	S P A W N    A    T A S K				&	!								&	!								&	!								&	!	Version:	01					&	!	Ed      it level:	00					&	!	Edit date:	26-Oct-77				&	!	Author(s):	BD(edited by WJB)			&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------  ------    ---   ------------------------------- &	!	01-00	102677	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	INPUT:	BREED.TASK$	Name of task to be spawned.	&	!				Must be exactly six (6) chars	&	!		BREED.COMMAND$	Command line to be sent to	&	!				  spawned task (task must be	&	!				  install      ed for SPAWN to work)	&	!		BREED.RETURN%	= TRUE% if errors are to be	&	!				  ignored.  FALSE% will cause	&	!				  BREED to print error msg(s).	&	!		BREED.DEBUG%	If TRUE%, causes printout of	&	!				  command line data before spawn&	!		BREED.NOSPAWN%	If TRUE%, task is not spawned	&	!								&	!	RETURNS: BREED.ERROR$	Contains error status		&	!				  code returned by		&	!				  SPAWN subroutine.		&	!		 BREED.CVT.ERROR%	Contains error code for &	!					  ASCII to RAD50 cvt.	&	!					  of task name.		&	!								&	!	      LOCAL:	T2000%	- working variable			&	!		T2001%	-    "        "				&	!		T2000$	- working string			&	!								&	!								&	!	BREED is a simple interface subroutine for driving the	&	!	SPAWN subroutine.  BREED makes the proper ASCII to	&	!	RAD50 conversion of the target task name, and will	&	!	process errors that may occur during the spawning.	&	!								&	!								&	!***************************************************************&20010	\ BREED.TASK$ = LEFT((BREED.TASK$+SPACE$(6%)),6%)		&		IF LEN(BREED.TASK$)       <> 6%				&	!								&	!	Make sure that the task name is exactly six (6) chars	&	!	  long.							&20020	\ BREED.CVT.ERROR% = 0%						&	\ T2000$ =  LEFT(BREED.TASK$,3%)				&	\ CALL ASTO50(T2000$,T2001%,T2000%)				&	\ BREED.TASK.NAME%(0%) = T2001%					&	\ BREED.CVT.ERROR% = 1%	IF T2000% <> 0%				&	\ T2000$ = RIGHT(BREED.TASK$,4%)				&	\ CALL ASTO50(T2000$,T2001%,T2000%)				&	\ BREED.TASK.NAME%(1%) = T2001%					&	\ BREED.CVT.ERROR% = BREED.CVT.ERROR% + 2%	IF T2000% <> 0%	&	\ GO TO 20050	IF BREED.CVT.ERROR% <> 0      %			&	!								&	!	Clear conversion error flag.				&	!	Convert first half of task name.			&	!	Signal error if one occurred.				&	!	Convert second half of task name.			&	!	Signal error if one occurred.				&	!	Go process error if one occurred.			&20030	\ PRINT CHR$(10%)+CHR$(13%);"Spawning: ";			&		BREED.TASK$;						&		" with: ";						&		BREED.COMMAND$						&				IF (BREED.DEBUG% = TRUE%) OR		&					(BREED.NOSPAWN% = TRUE%)	&	\ CALL SPAWN(BREED.TASK.NAME%(),BREED.COMMAND$,BREED.ERROR%)	&			UNLESS BREED.NOSPAWN%       = TRUE%			&	\ BREED.ERROR%=1% IF BREED.NOSPAWN% = TRUE%			&	\ RETURN	IF (BREED.ERROR% AND 7%) = 1%			&	!								&	!	Print action if debugging.				&	!	Do the actual SPAWN operation.				&	!	Return if SUCCESS.					&20040	\ RETURN	IF BREED.RETURN% = TRUE%			&	\ PRINT "SPAWN operation failed for following command:"		&	\ PRINT "  Task: ";						&		BREED.TASK$;						&		"(";							&		RAD$(BREED.TASK.NAME%(0%));				&		RAD$(BREED.TASK.NAME%(1%));				&		")"							&	\ PRINT "  Command text: ";					&		BREED.COMMAND$				      		&	\ PRINT "  Status value: ";					&		BREED.ERROR%						&	\ CLOSE T2000%	FOR T2000% = 1% TO 12%				&	\ GO TO 32767							&	!								&	!	Skip error messages if not requested.			&	!	Otherwise, print error messages denoting failure	&	!	  parameters.						&	!	Close all files and exit the routine.			&20050	\ BREED.ERROR% = 0%						&	\ RETURN	IF BREED.RETURN% = TRUE%			&	\ PRINT "ASCII-to-RAD50 conversion failure: ";			&		BREED.CVT.ERROR%					&	\ GO TO 20040							&	!								&	!	Return if error messages not requ      ested.			&	!	Otherwise, signal conversion error and then		&	!	  print out rest of data.				&26800	!$**************************************************************&	!								&	!								&	!	P R O C E S S    A N D    E X E C U T E    T E X T	&	!								&	!		       B L O C K				&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	        WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.EXEC.BLOCK%( TASK$ , INDX% , CONT%)	&	!								&	!	INPUT:	TASK$ - TASK TO SPAWN WITH COMMANDS WITHIN THE	&	!			BLOCK					&	!		INDX%	- entry in HELP.INDX%() for block to	&	!			    process.				&	!		CONT% - TRUE% if execution of block is to 	&	!			continue after an error on any command	&	!			within the block. FALSE% if execution	&	!			should be terminated on any error.	      &	!			(error = any non-success status)	&	!								&	!	RETURN:	Most severe status from block executed.		&	!								&	!	LOCAL:	T2600%	- working variable			&	!		T2601%	-    "        "				&	!		T2602%	- continue execution decision variable	&	!		T2601$	- working string			&	!								&	!								&	!	Each line of the block of text in ASK.HELP$() indicated	&	!	by INDX% is pulled out, substituted for, and then 	&	!	executed by the task specified by TASK$.		&	!								&	!	Lines ending in "-" are not terminated with CR-L      F.	&	!	Instead, the next line continues at the end of the	&	!	previous one.						&	!								&	!								&	!***************************************************************&								       !&	DEF FN.EXEC.BLOCK%(TASK$,INDX%,CONT%)				&								       !&		\ T2601% = INDX%+INDX%					&		\ T2602% = CONT%					&		\ CONT% = 1%						&		\ BREED.RETURN%=TRUE%					&		\ BREED.ERROR%=1%					&		\ BREED.TASK$=TASK$					&		\ TE% = FN.RESET.PTRS%					&		\ T2601$=""						& 		\ FOR T2600% = HELP.INDEX%(T2601%)+EXEC.SKIP%		&		                 TO (HELP.INDEX%(T2601%)			&			      +HELP.INDEX%(T2601%+1%)-1%)		&			\ BREED.COMMAND$="" UNLESS T2601$="+"		&		!							&		!	Reset processing of text.			&		!	Execute all lines in the block.			&26820			\ BREED.COMMAND$ = BREED.COMMAND$+		&			    EDIT$(FN.SUB.TEXT$(ASK.HELP$(T2600%)),132%)	&			\ GOTO 26830 IF ASCII(BREED.COMMAND$)=ASCII(";")&				     OR EDIT$(BREED.COMMAND$,-1%) = ""	&			\ T2601$ =					&			    RIGHT(BREED.COMMAND$,LEN(BREED.COMMAND$))	&			\ GOSUB 20000 UNLESS T2601$="+"			&			\ BREED.COMM      AND$ = LEFT(BREED.COMMAND$,		&				LEN(BREED.COMMAND$)-1%) IF T2601$="+"	&26830			\ CONT%=BREED.ERROR%				&				UNLESS ((BREED.ERROR% AND 7%) <		&					(CONT% AND 6%)) OR		&					(((CONT% AND 7%)=0%) AND 	&					((BREED.ERROR% AND 7%)=1%))	&			\ GOTO 26849 IF ((CONT% AND 7%)<>1%) AND	&					(T2602%=FALSE%)			&		\ NEXT T2600%						&		!							&		!		Get the next text line.			&		!		Pick off trailing character.		&		!		Execute the line unless the		&		!		last character was an accumulate line	&		!		before executing chara   ì   cter (+).		&		!		Set up the return status.		&		!		Exit the routine if error and he/she	&		!		specified that we should not go on.	&		!	End of scanning loop.				&26849	\ FN.EXEC.BLOCK%=CONT%						&	\ EXEC.SKIP%=0%							&	\ FNEND								&ì          œwl3“Á› 8$        1	!$***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETHID					&	!	Version:	V1.1					&	!	Edit level:	01					&	!	Edit date:	28-MAR-79				&	!	Author(s):	BJD					&	!			LBB					&	!								&	!***************************************************************&2	\ ON ERROR GO TO 19000						&	\ A%= CTRLC							&	!								&	!	This is placed here to eliminate a window in CTRL-C trapping&11	!**************      *************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1977 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  O      R 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!*****************      **********************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V1.1/01	28-MAR-79 LBB	FIX INFINITE LOOP WHEN SETCAL	&	!				RETURNS GARBAGE SYSTEM NAME	&	!	V1.1/02 12-JUN-79 LBB	Suppress printing of version	&	!				number.				&	!								&	!								&	!********      *******************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	---------------------      -----------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			T      emporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!	FALSE%			= 0% - Logical FALSE		&	!	TRUE%			= -1% - Logical TRUE		&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!							      	&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N           D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!*******      ********************************************************&901	\ DIM	AR%(17)							&	!								&	!	Array for get task call					&951	\ MAP (CALTIM) 	C.INIT%,					&			TIME%(8),					&			KERNEL.NAME$=6,					&			HOLD.SPACE$=10					&	!								&	!	Array for macro calendar program			&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	      \ ON ERROR GO TO 19000						&	!								&	\ PRINT								&	\ PRINT "INIT"							!V1.1/2&	\ PRINT								&	\ PRINT "TRAX System Initialization"				&	\ PRINT								&	!								&	!	Set up standard default error trap			&	!								&	\ A%= FN.SETUP.DIALOGUE%					&	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /MCR=TI:"					&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Open the SGNDLGHLP file and set up to use it.		&	!	Spawn MCR to set to MCR mode.				&	!								&	\ TASK$= "MCR..."			      			&	\ COMMAND$= "ASN LP0:=CL:/GBL"					&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	This is temporary code to fix a M bug			&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /NOLOGON"					&	\ GOSUB 20001							&	!								&	!	Initialize dialog and disable logons			&	!	Also, set terminal to DCL				&	!								&	\ TASK$= "MCR..."						&	\ RETURN%= 1%							&	\ COMMAND$= "ACS SY:/BLKS=2048."				&	\ GOSUB 20001							&	\ RETURN%= 0%							&1500	\ CALL GETTSK BY REF (AR%()      ,DIRERR%)				&	\ GO TO 2500		IF DIRERR% <> 1%			&	\ T1$= RAD$(AR%(0))						&	\ T2$= RAD$(AR%(1))						&	\ TASK.NAME$= T1$+T2$						&	\ INIT.PAR$= RAD$( AR%(2) ) + RAD$ (AR%(3) )			&	!								&	!	Task name is RELOAD if we are coming back from a crash	&1502	\ REGION%(1)= 2%						&	\ REGION%(2)= 20%*40%**2% + 9%*40% + 13%			&	\ REGION%(3)= 5%*40%**2%					&	\ REGION%(4)= 0%						&	\ REGION%(5)= 0%						&	\ REGION%(6)= 32%+8%+4%+2%+1%					&	\ REGION%(7)= 0%						&	\ CALL CRRG BY REF (REGION%(),DIR%)				&	\ GO TO       1510	IF DIR% = 1%					&	!								&	\ PRINT								&	\ PRINT "% Create region directive failed"			&	\ PRINT								&	\ GO TO 32200							&	!								&	!	Create region - print error message if necessary	&1510	\ WINDOW%(0)= 7%						&	\ WINDOW%(0)= SWAP% (WINDOW%(0%))				&	\ WINDOW%(1)= 0%						&	\ WINDOW%(2)= 2%						&	\ WINDOW%(3)= REGION%(0%)					&	\ WINDOW%(4)= 0%						&	\ WINDOW%(5)= 0%						&	\ WINDOW%(6)= 128%+8%+4%+2%+1%					&	\ CALL CRAW BY REF (WINDOW%(),DIR%)				&	\ GO TO 1520	IF DIR%= 1%					&	!				      				&	\ PRINT								&	\ PRINT "? Map window directive failed"				&	\ PRINT								&	\ GO TO 32200							&	!								&	!	Map window - print error message if necessary		&1520	\ C.INIT%= 1%							&	\ KERNEL.NAME$=""						&	\ ASK.246% = FALSE%						!V1.1&	!								&	!	Tell SETCAL that SETHID is calling			&	!	Initialize kernel name to nulls.			 V1.1&	!	Initialize flag to indicate "Target system name" query	 V1.1&	!	  not asked.						 V1.1&2000	!***************************************************************&	!		      						&	!								&	!	System name, time & date determined			&	!								&	!								&	!***************************************************************&	!								&	\ GOSUB 11000							&	\ GO TO 2010	IF EDIT$(NAME$,2%) <> ""			&	!								&	!	Determine system name & time & date			&	!	Skip the questions for the information supplied		&	!	by the system						&2001	\ ASK.246% = TRUE%						!V1.1&	\ ASK.RANGE(0)= 6						&	\ ON FN.ASK%(246%,"","A",TRUE%,1%)				&		GO TO 2000, 2003, 2005					&	!								&	!	Set flag indicat      ing "System name" query was asked.	 V1.1&	!	Ask for target system name				&2003	\ GOSUB 10900							&	\ GO TO 2000							&	!								&	!	CTRL-Z is not allowed					&2005	\ NAME$= ASK.CVT$						&2010	\ FILE$= "LB0:[200,201]" + EDIT$(NAME$,2%) + ".MCR"	&	\ OPEN FILE$ FOR INPUT AS FILE#1%,				&		ACCESS READ, ALLOW NONE					&	!								&	!	Open the file of MCR commands to be hidden		&2012	\ NO.BATCH%= 0%							&	\ FILE.1$= "[1,2]" + EDIT$(NAME$,2%) + ".BAT"	&	\ FILE.2$= "[1,2]" + "RELOAD.BAT"				&	\ FILE.3$= EDIT$      (NAME$,2%)					&	\ OPEN FILE.1$ FOR INPUT AS FILE #2%				&	!								&	!	Test if batch file is there				&2015	\ CLOSE #2%							&	\ GO TO 2100	IF NO.CALENDAR.CLOCK%= 0%			&	\ ON FN.ASK%(215%,"","",FALSE%,2%)				&		GO TO 2000, 2018, 2020					&	!								&	!	Time							&2018	\ GOSUB 10900							&	\ GO TO 2015							&	!								&	!	CTRL-Z is not allowed					&2020	\ ON FN.CHK.TIME%(ASK.CVT$) + 2%				&		GO TO 2030, 2025					&	!								&	!	Validate time						&2025	\ PRINT								&	\ PRINT "% Invalid time"					&	\ PR      INT								&	\ GO TO 2015							&	!								&	!	Error message for bad time				&2030	\ HIDE.TIME$= ASK.CVT$						&2031	\ ON FN.ASK%(216%,"","",FALSE%,2%)				&		GO TO 2015, 2036, 2040					&	!								&	!	Get the date						&2036	\ GOSUB 10900							&	\ GO TO 2031							&	!								&	!	CTRL-Z is not allowed					&2040	\ ON FN.CHK.DATE%(ASK.CVT$) + 2%				&		GO TO 2050, 2045					&	!								&	!	Validate date						&2045	\ PRINT								&	\ PRINT "% Invalid date"					&	\ PRINT								&	\ GO TO 2031							&	!								&	!	E      rror message for bad date				&2050	\ HIDE.DATE$= ASK.CVT$						&	\ TIME.COMMAND$= "TIM " + HIDE.TIME$ + " " + HIDE.DATE$		&	\ TASK$= "MCR..."						&	\ COMMAND$= TIME.COMMAND$					&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Set the time & date					&2100	!***************************************************************&	!								&	!								&	!	Process .MCR file commands on virtual terminal		&	!								&	!								&	!***********************************************************      ****&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /LOGON"					&	\ GOSUB 20001							&	\ VT.CMD$= "HELLO 1/1" 						&	!								&	!	First command line is used to login privileged - peek at the &	!	password to do this.					&2105	\ A%= FN.VT.CREATE%						&	\ TASK$= "MCR..."						&	\ DISABLE.PRINT%= 1%						&	\ GO TO 2115							&	!								&	!	Create the virtual terminal				&	!	All the tasks go to MCRDSP				&2110	\ GO TO 2112	IF FIRST%= 1%					&	\ FIRST%= 1%							&	\ TASK$= "MCR..."						&	\ VT.CMD$= "S      ET /NOLOGON"					&	\ GO TO 2115							&	!								&2112	\ LINPUT #1%, VT.CMD$						&	\ VT.CMD$= "IND " + VT.CMD$	IF VT.CMD$= "@[1,2]QMGSTART"	&	\ T%= INSTR (1%,VT.CMD$,"SUB/NOP")				&	\ GO TO 2110	IF VT.CMD$= "RUN $RELOAD/TASK=CRASH1"		&				AND TASK.NAME$<> "RELOAD"		&	\ GO TO 2110	IF VT.CMD$= "RUN TPRTSK"			&				AND TASK.NAME$<> "RELOAD"		&	\ GO TO 11900	IF VT.CMD$= "RUN TPRTSK"			&				AND TASK.NAME$= "RELOAD"		&	\ GO TO 2110	IF ((NO.BATCH%= 1%) AND (T%> 0%))		&	\ GO TO 2110	IF VT.CMD$= "RUN $NTI" AND ATS.P      RESENT%= 1%	&	\ VT.CMD$= EDIT$(VT.CMD$,4%)					&	\ IF ((T% > 0%) AND (TASK.NAME$ = "RELOAD"))			&		THEN	  T1%= INSTR(1%,VT.CMD$,FILE.3$)		&			\ T2%= INSTR(1%,VT.CMD$,".BAT")			&			\ T1$= LEFT(VT.CMD$,T1%-1%)			&			\ T2$= RIGHT(VT.CMD$,T2%)			&			\ VT.CMD$= T1$ + "RELOAD" + T2$			&	!								&	!	Get an MCR command line					&	!	If crash recovery, substitute batch file name		&2115	\ A%= FN.TASK.INIT%(TASK$)					&	\ GO TO 10001							&	!								&	!	Spawn a 1 line MCR command				&	!	Go to sub-routine which proces      ses the response		&2500	\ PRINT								&	\ PRINT "? FATAL error in GET TASK PARAMETER directive."	&	\ PRINT								&	\ GO TO 32200							&	!								&	!	Error if get task directive fails			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&10001	\ GO TO 10050		IF OUT.FLAG% <> 0%			&	\ GO T      O 10075		IF IN.FLAG%  <> 0%			&	\ GO TO 10100		IF EX.FLAG%  <> 0%			&	\ SLEEP 1							&	\ GO TO 10001							&	!								&	!	Check what kind of I/O needs looking after		&	!	If nothing has happened, wait 1 second and try again	&10050	\ LINE$= FN.READ.RESPONSE$					&	\ GO TO 10001		IF DISABLE.PRINT% = 1%			&	\ GO TO 10001		IF VT.CMD$= "IND @[1,2]QMGSTART"		&	\ GO TO 10001		IF EDIT$(LINE$,2%+4%)= ">"		&	\ T%= INSTR(1%,VT.CMD$,"BRO")					&	\ GO TO 10001		IF T% > 0%				&	\ T%= INSTR(1%,LINE$,"ERL")					&	\ GO TO 1      0001		IF T% > 0%				&	\ GO TO 10001		IF EDIT$(LINE$,2%+4%)= ""		&	\ GO TO 10001		IF EDIT$(LINE$,2%+4%)= "NTINIT--ILLEGALFUNCTION"&10055	\ PRINT EDIT$(LINE$,128%)						&	\ GO TO 10001							&	!								&	!	Read the response line.  Unless printing to user is 	&	!	disabled, print the response to the user.		&10075	\ PRINT								&	\ PRINT "? FATAL error - Spawned task wants input."		&	\ PRINT								&	\ CLOSE #1%							&	\ CALL EXITS2(2%,0%)						&	!								&	!	None of the spawned tasks should want input - fatal       error if &	!	one does						&10100	\ DISABLE.PRINT%= 0%						&	\ GO TO 2110		IF EX% < 2%				&	\ PRINT								&	\ PRINT "% Warning error - spawned task exited with error status."&	\ PRINT "	The bad command line is:"			&	\ PRINT								&	\ PRINT "	";command$					&	\ PRINT								&	\ GO TO 2110							&	!								&	!	Go get next command line if exit with success		&	!	Otherwise, print error message & return for next line	&10900	\ PRINT								&	\ PRINT "% CTRL-Z is not allowed in this program!"		&	\ PRINT								      &	\ RETURN							&	!								&	!	CTRL-Z error message routine				&11000	\ TASK$= "...INS"						&	\ COMMAND$= "INS [1,54]SETCAL/TASK=CALSET/PAR=" + INIT.PAR$	&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	\ TASK$= "CALSET"						&	\ COMMAND$= "CALSET"						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	\ TEMP%= 0%							&	\ TEMP%= 1%		IF SPAWN.ERROR% =  2%			&	\ TEMP%= 2%		IF SPAWN.ERROR% =  3%			&	!								&	\ TASK$= "MCR..."						&	\ RETURN%= 1%							&	\       COMMAND$= "REM CALSET"					&	\ GOSUB 20001							&	\ RETURN%= 0%							&	\ GO TO 11200		IF TEMP% = 0%				&	!								&	!	Spawn SETCAL						&11100	\ NO.CALENDAR.CLOCK%= 1%					&	\ NAME$= KERNEL.NAME$						&	\ GO TO 11500							&	!								&	!	Mark non-existence of clock & return			&11200	\ NO.CALENDAR.CLOCK%= 0%					&	\ NAME$= KERNEL.NAME$						&	\ CALL DATEM BY REF (C.DATE$,TIME%())				&	\ CALL TIMEM BY REF (C.TIME$,TIME%())				&	!								&	!	Convert SETCAL response to standard format		&11300	\ TIME.COMMAND$=       "TIM " + C.TIME$ + " " + C.DATE$		&	\ TASK$= "MCR..."						&	\ COMMAND$= TIME.COMMAND$					&	\ GOSUB 20001							&	\ GO TO 11500							&	!								&	!	Update the calendar clock				&11500	\ RETURN							&11900	\ COMMAND$= VT.CMD$						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ GO TO 2112							&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!*****      **********************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19001	\ IF ERR=11 AND ERL= 2112					&		THEN RESUME 32001					&	!								&	!	If EOF, exit with success				&19002	\ IF ((ERR=11 OR ERR=5 OR ERR=2) AND ERL=2010)	THEN  PRINT		&		\ PRINT "% There is no ";FILE$;				&			" fil      e."	IF ASK.246%			!V1.1&		\ PRINT							&		\ RESUME 2001	IF TASK.NAME$ <> "RELOAD"		!V1.1&		\ PRINT "? We cannot continue automatic crash recovery!"		&		\ PRINT "	You must initialize the system manually."&		\ PRINT 						&		\ RESUME 32200						&	!								&	!	Error if bad system name				&19003	\ IF ((ERR=5) AND ERL=2012)	THEN NO.BATCH%= 1%		&		\ RESUME 2015						&	!								&	!	Test if there is a batch file of user commands		&19005	\ IF ERR= 28	THEN RESUME 32200				&	!								&	!	CTRL-C trap						&19900	\ RES      UME 32200	IF ERR= 28					&	\ PRINT								&	\ PRINT "? FATAL error # ";ERR;" at line ";ERL;"."		&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ RESUME 32200							&	!								&	!	For unexpected errors,  close all files and go to	&	!	routine which resets the system to a state useful to the &	!	user.								&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!*******************************************      ********************&20001	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E    T I T L E			&	!								&	!		B R E E D					&	!								&	!								&	!	(Title information required only for library entries)	&	!								&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	30-OCT-77				&	!	Author(s):	BJD					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------  ------    ---   ------------------------------- &	!								&	!**************************      *************************************&	!								&	!								&	!	INPUT:		TASK$ - The task name to be spawned	&	!				(must be <6 characters)		&	!			COMMAND$ - The command line to be given &	!				the spawned task.		&	!								&	!			RETURN% - 0% if a fatal error should	&	!				cause a message to print and	&	!				then cause the parent task to 	&	!				terminate.			&	!				- 1% if control should return	&	!				to instruction after GOSUB	&	!				when a fatal error occurs.	&	!								&	!								&	!	RETURNS:	If RETURN%=1%      , then ERR1%, ERR2%,	&	!				and SPAWN.ERROR% contain	&	!				various error codes.		&	!								&	!	LOCAL:		SEE BELOW				&	!								&	!								&	!								&	!								&	!***************************************************************&	!								&	!								&	!	S U B R O U T I N E     D E S C R I P T I O N		&	!								&	!								&	!***************************************************************&	!								&	!	This subroutine may be invoked from another Basic+2 program &	!	to spawn another task.  The spawned task use      s TI: for 	&	!	I/O and the parent task waits for the spawned task 	&	!	to exit before continuing.				&	!								&	!	It should be appended to the main program.  It is called&	!	via a GOSUB 20001.  It needs variables called		&	!	TASK$ which contains the 6 character task to be spawned	&	!	and COMMAND$ which contains the command line to be 	&	!	executed.						&	!	RETURN% specifies how errors in the spawned task will	&	!	be treated in the parent program.			&	!								&	!******************************************      *********************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ERR1%			Error indicator for ASTO50 call	&	!	ERR2%			Error indicator for ASTO50 call	&	!	RETURN%			If 1, return to main prog if error&	!	SPAWN.ERROR%		Error indicator for SPAWN call	&	!	TASK.NAME%()		Array for RAD50 task name	&	!	TEMP1$			Temporary working variable	&	!	TEMP2$			Temporary worki      ng variable	&	!	TEMP1%			Temporary working variable	&	!	TEMP2%			Temporary working variable	&	!								&	!***************************************************************&	!                                                               &	!                                                               &	! 	S P A W N    A    T A S K 				&	!                                                               &	!                                                               &	!*****************************************      **********************&20003	\ GO TO 20005	IF LEN(TASK$) <> 6				&	\ TEMP1$= LEFT(TASK$,3%)					&	\ TEMP2$= RIGHT(TASK$,4%)					&	\ CALL ASTO50 (TEMP1$,TEMP1%,ERR1%)				&	\ CALL ASTO50 (TEMP2$,TEMP2%,ERR2%)				&	\ TASK.NAME%(0%)= TEMP1%					&	\ TASK.NAME%(1%)= TEMP2%					&	!								&	\ CALL SPAWN (TASK.NAME%(),COMMAND$,SPAWN.ERROR%)		&	\ GO TO 20004	IF RETURN%= 1%					&	\ GO TO 20005	IF SPAWN.ERROR% <> 1%				&	\ GO TO 20005	IF ERR1% <> 0%					&	\ GO TO 20005	IF ERR2% <> 0%					&20004	\ RETURN							&	!					      			&	!	Check that the task name is exactly 6 characters long	&	!	Convert the task name to RAD50				&	!	Spawn the task with the command line in COMMAND$	&	!	Fatal error if any of the calls did not work		&	!	Unless RETURN%= 1%					&20005	\ PRINT								&	\ PRINT "? FATAL error in a  SPAWN call"			&	\ PRINT COMMAND$						&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ GO TO 32200							&	!								&	!	The error message for the SPAWN subroutine		&20006	\ DIM TASK.NAME%(1)						&	!								&	!	This array contains the RAD50       version of the task name	&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32001	\ CLOSE #1%							&	\ A%=       FN.VT.DONE%						&	!								&32005	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /DCL=TI:"					&	\ GOSUB 20001							&	!								&	\ PRINT 							&	\ PRINT "	INIT has finished."		&	\ PRINT								&	\ PRINT ">";							&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Close the command file					&	!	Delete the virtual terminal				&	!	Set terminal to DCL					&	!	Detach terminal						&	!	Exit with success status				&32200	\ CLOSE #1%							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "ACS SY:/BLKS=0."					&	\ RETURN%      = 1%							&	\ GOSUB 20001							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /LOGON"					&	\ GOSUB 20001							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /DCL=TI:"					&	\ GOSUB 20001							&	!								&	!								&	!	Detach from terminal					&	!								&	\ PRINT								&	\ PRINT "? 	INIT has been abnormally terminated."		&	\ PRINT "	Your system is not in a usable state."		&	\ PRINT 							&	\ PRINT ">";							&	!								&	\ CALL EXITS2 (2%,26%)						&	!								&	!	Panic exit - reset so   f    sethid can be run again		&32767	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (1%,0%)						&	\ ENDf          œ	û]“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	AUTOAS					&	!	Version:	01					&	!	Edit level:	02					&	!	Edit date:	15-APR-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	1-1	FEB 9 79 BJD	SPR 207824 MULTIPLE LINE PRINTERS&	!								&	!	1-2	FEB 9 79 BJD	SPR 252445 ADD 2780 SUPPORT	&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			      &	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	      13	Terminal output				&	!								&	!***************************************************************&400	!$******************************************************      ********&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			temporary working variable	&	!	B%			temporary working variable	&	!	C%			temporary working variable	&	!	CODEn%			holds controller identifier -a,b&	!	D%			TWV				&	!	DB.PNT%()		same as MM.PNT% for DB disks	&	!	DIRECTIVE.ERROR%	error flag for PLAS directives	&	!	DR.PNT%()		same as MM.PNT% for DR disks	&	!	FALSE%			=       0%				&	!	I%			index into assignment table	&	!	J%			secondary index into assignment	&	!				  table				&	!	Jn%			Temporary index for controller	&	!				pointers			&	!	K%			loop variable			&	!	MM.PNT%()		array of pointers for tapes into&	!				  assignment table		&	!	Q%			loop variable			&	!	R%			TWV				&	!	R1%			TWV				&	!	REGION1%()		Region descriptor for GENCOM	&	!	S%			temporary working variable	&	!	S1%			TWV				&	!	T%			temporary working variable	&	!	T1%			TWV				&	!	T2%			TWV				&	!	TEMP%()			temporary wo      rking array		&	!	TRUE%			= -1%				&	!	WINDOW1%()		Window descriptor for GENCOM	&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***********      ****************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	????	FN.INT.TO.OCT$	Convert integer to octal string	&	!	????	FN.OCT.TO.INT%	Convert octal string to integer	&	!	15700	FN.CSR$		Compute CSR address from table	&	!	15800	FN.VECTOR$	Compute vector address from table&	!								&	!****************************************      ***********************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&	!								&	!	See the build files - lots gets appended in		&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote lo      cal dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&919	\ DIM TEMP%(15)							&	!								&	!	Array for use in DMC computation - must be this big	&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!****      ***********************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&6000	!$**************************************************************&	!                                                               &	!                                                               &	! 	A N S W E R    S Y S G E N    Q U E S T I O N S 	&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	!	Call this point when it is time to stuff the final 	&	!	answers into the common region.				&	!	All answers come from the MAP (CPU) or the assignment 	&	!	table.							&	!								&	!	Lines 6000-6600 are reserved for this code.		&	!								&	\ REGION1%(2)= 7%*40%**2% + 5%*40% + 14%			&	\ REGION1%(3)= 3%*40%**2% + 15%*40% + 13%			&	!								&	\ REGION1%(1%)= 128%		!Region size			&	\ REGION1%(4%)= 0%		!      Default partition		&	\ REGION1%(5%)= 0%		!				&	\ REGION1%(6%)= 8% + 32% + 2% + 1% + 128%			&	!								&	! attach region, read, write, access  & delete on detach	&	!								&	\ REGION1%(7%)= 0%		!Give the world complete access	&	!								&	\ CALL CRRG BY REF (REGION1%(),DIRECTIVE.ERROR%)		&	\ GO TO 6075	IF DIRECTIVE.ERROR% <> 1%			&	\ GO TO 6050							&	!								&	!	Attach to GENCOM					&6050	\ WINDOW1%(0%)= 6%		!Base APR of common region WINDOW1&	\ WINDOW1%(0%)= SWAP% (WINDOW1%(0%) )				&	\ WINDOW1%(2%)= 1      28%		! WINDOW1 size			&	\ WINDOW1%(3%)= REGION1%(0%)	! region ID			&	\ WINDOW1%(4%)= 0%		! Offset			&	\ WINDOW1%(5%)= 0%		! Length mapped			&	\ WINDOW1%(6%)= 2% + 2%*8%**2% + 4%*8%**2%			&	!								&	!	Specify MAP, alignment, & write access			&	!								&	\ CALL CRAW BY REF ( WINDOW1%(), DIRECTIVE.ERROR%)		&	\ GO TO 6080	IF DIRECTIVE.ERROR% <> 1%			&	\ GO TO 6100							&	!								&	!	Here we map GENCOM					&6075	\ PRINT "? FATAL error in the CREATE REGION directive."		&	\ RESUME 32000							&	!								&	!	E      rror message for failed CREATE REGION directive	&6080	\ PRINT "? FATAL error in MAPPING directive."			&	\ RESUME 32000							&	!								&	!	Couldn't map window to region				&6085	\ PRINT "? FATAL error in DETACH REGION directive."		&	\ RESUME 32000							&	!								&	!	Couldn't detach ( & delete) region			&6100	\ PROCESSOR.TYPE%= TAB.CPU%					&	!								&	\ HOME.BASE%= 0%						&	!								&	!	Kill support for Mill 11-70				&	!								&	\ TRUE%= -1%							&	\ FALSE%= 0%							&	!								&	\ FL.PT.PROC%= FALSE      %						&	\ FL.PT.PROC%= TRUE%		IF TAB.FPP%= 1%			&	!								&	\ PARITY.MEMORY%= TRUE%						&	!								&	!	Everything has parity memory now			&	!								&	\ CACHE.MEMORY%= FALSE%						&	\ CACHE.MEMORY%= TRUE%		IF TAB.CACHE%= 1%		&	!								&	\ EXTENDED.MEMORY%= FALSE%					&	\ EXTENDED.MEMORY%= TRUE%		IF TAB.KT11%= 1%	&	!								&	\ TAB.HIGH%= 252%	IF TAB.HIGH% < 252%			&	\ HIGHEST.VECTOR$= FN.INT.TO.OCT$(TAB.HIGH%)			&	!								&	!	Highest assigned vector must be at least 400 (8)	&	!								&	\ MEMORY.SIZE%=       TAB.SIZE%					&	!								&	!	Specify the CPU options					&6110	!$**************************************************************&	!                                                               &	!                                                               &	! 	TS03 TAPES & THE CLOCKS					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ I%= 5      %							&	\ NUM.OF.TS03.DRIVES%= NO.OF.DEVICES%(I%)			&	\ NUM.OF.TS03.DRIVES%= 0%		! not supported anymore	&	\ GO TO 6115	IF NO.OF.DEVICES%(I%) = 0%			&	!								&	\ TS03.CSR$= FN.SYSGEN.CSR$(I%)					&	\ TS03.VEC$= FN.INT.TO.OCT$(VECTOR%(I%))			&	\ TS03.PRI$= PRIORITY$(I%)					&	!								&	!	Specify the TS03 tapes in the conventional manner	&	!	This code was checked, but now TS03 are not supported	&	!	Left in in case they are re-instated			&6115	\ I%= 16%	IF NO.OF.DEVICES%(16%) <> 0%			&	\ I%= 15%	IF NO.OF.      DEVICES%(15%) <> 0%			&	\ CLOCK.FREQ%= TAB.HERTZ%					&	\ CLK.CSR$= FN.SYSGEN.CSR$(I%)					&	\ CLK.VEC$= FN.INT.TO.OCT$(VECTOR%(I%))				&	\ CLK.PRI$= PRIORITY$(I%)					&	\ CLK.TICKS.PER.SEC$= NUM1$(CLOCK.FREQ%) + "."			&	\ CLK.CT.REG$= CLK.CSR$		IF I%= 15%			&	\ CLK.CT.REG$= FN.INT.TO.OCT$(FIRST.CSR%(I%)+2%) IF I%= 16%	&	\ CLK.INT.ENB$= "115"						&	\ CLK.LOAD.CT$= "1"						&	\ GO TO 6150							&	!								&	!	Fill in the clock parameters.  The line clock is used	&	!	if both are present.  Most values are pre      -determined	&	!	in TPS.  There must be a clock.  The clock frequency	&	!	is determined from the line frequency.			&6150	!$**************************************************************&	!                                                               &	!                                                               &	! 	LINE PRINTER PROCESSING					&	!                                                               &	!                                                               &	!***************************      ************************************&	!								&	\ I%= 8%							&	\ A%= NO.OF.DEVICES%(I%)					&	\ NUM.OF.LPS%= NO.OF.DEVICES%(I%)				&	\ GO TO 6175		IF A%= 0%				&	!								&	!	Determine # of line printers present.  If 0, we go 	&	!	the next device type.					&	!								&	\ FOR Q%= 7% TO 0%	STEP -1%				&		\ TEMP%(Q%)= SPECIAL2%(I%) AND 2%**Q%			&	\ NEXT Q%							&	!								&	!	Special2% contains a special bit code indicating the 	&	!	type of printer.  Printer #i is an LA180 if bit i-1	&	!	is a 1.  Otherwise      , it is an LP11.  This code is 	&	!	converted to a more convenient form and stored in a 	&	!	temporary array.					&	!								&	\ LP.CSR$(0%)= FN.INT.TO.OCT$(SPECIAL0%(I%))			&	\ LP.VEC$(0%)= FN.INT.TO.OCT$(SPECIAL1%(I%))			&	\ LP.PRI$(0%)= PRIORITY$(I%)					&	\ LP.TYPE$(0%)= "0"						&	\ LP.TYPE$(0%)= "100000"	IF TEMP%(0%) <> 0%		&	\ GO TO 6175			IF A% < 2%			&	!								&	!	The first printer has a different CSR than all the rest.&	!	Its sysgen CSR and vector are stored in integer form in	&	!	special0% and s      pecial1%.  The type code indicates an	&	!	LP11 if type is "0".					&	!	If there is only 1 printer, we go to the next device.	&	!								&	\ FOR J%= 2% TO A%						&		\ LP.CSR$(J%-1%)= FN.CSR$(J%-1%,8%)			&		\ LP.VEC$(J%-1%)= FN.VECTOR$(J%-1%,8%)			&		\ LP.PRI$(J%-1%)= PRIORITY$(I%)				&		\ LP.TYPE$(J%-1%)= "0"					&		\ LP.TYPE$(J%-1%)= "100000"	IF TEMP%(J%-1%) <> 0%	&	\ NEXT J%							&	!								&	\ LP.VEC$(1%)= "170"						&	\ LP.VEC$(2%)= "174"						&	\ LP.VEC$(3%)= "270"						&	\ LP.VEC$(4%)= "274"						&	\       LP.VEC$(5%)= "774"						&	\ LP.VEC$(6%)= "770"						&	\ LP.VEC$(7%)= "764"						&	\ HIGHEST.VECTOR$= "774"	IF A% > 5%			&	!								&	!	The rest of the printer units are assigned in the 	&	!	standard way.  See above for an explanation of the 	&	!	printer type.						&6175	!$**************************************************************&	!                                                               &	!                                                               &	! 	DL & KMC UNIT PROCESSING				&	!                                                                     &	!                                                               &	!***************************************************************&	!								&	\ I%= 6%	! 1st DL unit					&	\ J%= 7%	! Other DL units				&	\ GO TO 6195		IF NO.OF.DEVICES%(I%) <> 1%		&	\ NUM.OF.DLS%= NO.OF.DEVICES%(I%) + NO.OF.DEVICES%(J%)		&	!								&	\ DL.CSR$(0%)= FN.SYSGEN.CSR$(I%)				&	\ DL.VEC$(0%)= FN.INT.TO.OCT$(VECTOR%(I%))			&	\ DL.PRI$(0%)= PRIORITY$(I%)					&	!								&	!	The      re must be one console terminal on a DL, its vector	&	!	and CSR assignments are different from all other DLs.	&	!								&	\ FOR K%= 1% TO NO.OF.DEVICES%(J%)				&		\ DL.CSR$(K%)= FN.CSR$(K%,J%)				&		\ DL.VEC$(K%)= FN.VECTOR$(K%,J%)			&		\ DL.PRI$(K%)= PRIORITY$(J%)				&	\ NEXT K%							&	\ GO TO 6200							&	!								&	!	Set up other DL units					&	!	This is done in the conventional manner.		&	!								&6195	\ PRINT								&	\ PRINT "? FATAL error - there must be exactly one Console DL"	&	\ CLOSE #T%	FOR T      %= 1% TO 12%				&	\ CALL EXITS2 (2%,0%)						&6200	\ I%= 9%		! KMC setup				&	\ A%= NO.OF.DEVICES%(I%)					&	\ NUM.OF.KMCS%= A%						&	\ GO TO 6210			IF A%= 0%			&	!								&	!	Determine # of KMC units.  If none, go to next device.	&	!								&	\ FOR J%= 1% TO A%						&		\ KMC.CSR$(J%-1%) = FN.CSR$(J%,I%)			&		\ KMC.VEC$(J%-1%) = FN.VECTOR$(J%,I%)			&		\ KMC.PRI$(J%-1%) = PRIORITY$(I%)			&	\ NEXT J%							&	!								&	!								&	!	KMCs are assigned in the conventional manner.  Nothing	&	!	special here.					      	&6210	!$**************************************************************&	!                                                               &	!                                                               &	! 	DUP UNIT PROCESSING					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ I%= 10%		! DUP setup				&	\ A%= NO.OF.DEVICES%(I%)					&	\ NUM.OF.      DUPS%= SPECIAL1%(I%) + SPECIAL0%(I%)	+ SPECIAL2%(I%)	&	\ GO TO 6220			IF A%= 0%			&	!								&	!	Determine # of DUP units.  If none, go to next device.	&	!								&	\ FOR J%= 1% TO A%						&		\ DUP.CSR$(J%-1%) = FN.CSR$(J%,I%)			&		\ DUP.VEC$(J%-1%) = FN.VECTOR$(J%,I%)			&		\ DUP.PRI$(J%-1%) = PRIORITY$(I%)			&		\ NUM.OF.DUPS.IN.3271%= SPECIAL0%(I%)			&		\ NUM.OF.DUPS.IN.2780%= SPECIAL2%(I%)			&		\ NUM.OF.3271.KMCS%= SPECIAL0%(I%)			&		\ NUM.OF.2780.KMCS%= SPECIAL2%(I%)			&	\ NEXT J%							&	!								&	!	As      sign DUPs in the conventional way.  Special0% holds	&	!	the # of DUPs allocated to the Communications region.	&	!								&6220	!$**************************************************************&	!                                                               &	!                                                               &	! 	DZ-11 SETUP & DV-11 SETUP				&	!                                                               &	!                                                               &	!*******************      ********************************************&	!								&	\ I%= 11%		! DZ setup				&	\ A%= NO.OF.DEVICES%(I%)					&	\ NUM.OF.DZS%= SPECIAL4%(I%) + SPECIAL0%(I%)			&	\ GO TO 6230			IF A%= 0%			&	!								&	!	Determine the # of DZ units.  If none, go to next device.&	!								&	\ FOR J%= 1% TO A%						&		\ DZ.CSR$(J%-1%) = FN.CSR$(J%,I%)			&		\ DZ.VEC$(J%-1%) = FN.VECTOR$(J%,I%)			&		\ DZ.PRI$(J%-1%) = PRIORITY$(I%)			&		\ NUM.OF.DZS.IN.SE%= SPECIAL0%(I%)			&		\ SE.DZ.NEEDS.MODEM$= NUM1$(SPECIAL1%(I%))		&		\ S      E.DZ.TERM.NUM%(0)= SPECIAL2%(I%)			&		\ SE.DZ.TERM.NUM%(1)= SPECIAL3%(I%)			&		\ SE.DZ.TERM.NUM%(2)= 8%				&		\ SE.DZ.TERM.NUM%(3)= 8%				&	\ NEXT J%							&	!								&	!	Make assignments in the conventional manner.		&	!	Special0% holds the # of DZs to be used in the support	&	!	environment.  Special1% holds the baud rate of these DZ	&	!								&6230	\ I%= 12%		! DV setup				&	\ A%= NO.OF.DEVICES%(I%)					&	\ a%= 0%			! Kill DV - not supported	&	\ NUM.OF.DVS%= A%						&	\ GO TO 6240			IF A%= 0%			&	!							      	&	!	Determine # of DV units.  If none, go to next device.	&	!	Support for the DV11 has been dropped but the code 	&	!	is left in						&	!								&	!								&	\ FOR J%= 1% TO A%						&		\ DV.CSR$(J%-1%) = FN.CSR$(J%,I%)			&		\ DV.VEC$(J%-1%) = FN.VECTOR$(J%,I%)			&		\ DV.PRI$(J%-1%) = PRIORITY$(I%)			&	\ NEXT J%							&	!								&	!	Make assignments in the conventional manner.		&6240	!$**************************************************************&	!                                                                     &	!                                                               &	! 	DMC-11 SETUP						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ I%= 13%		! DMC setup				&	\ A%= SPECIAL0%(I%)						&	\ B%= SPECIAL1%(I%)						&	\ FOR Q%= 7% TO 0%	STEP -1%				&		\ C%= 4%**Q%						&		\ TEMP%(Q%)=  (A%/C%) AND 3%				&		\ TEMP%(Q%+8%)=  (B%/C%) AND 3%			      	&	\ NEXT Q%							&	!								&	!	DMC units have special information stored in a bit code.&	!	Sum { a(n)*4**n } where n= 0 to 6  is a number.		&	!	a(n) = 1 if unit is full duplex, = 2 if unit is primary	&	!			half-duplex, = 3 if unit is secondary	&	!			half-duplex				&	!	Avoiding the sign bit, we can get 6 such chunks of 	&	!	information into each word.  Thus 2 words are used to 	&	!	hold information on 12 DMC units.			&	!	This code really amounts to using pairs of bits for the &	!	code.							&	!	As usual,       we put this information in a more convenient	&	!	form before continuing processing.			&	!								&	\ A%= NO.OF.DEVICES%(I%)					&	\ NUM.OF.DMCS%= A%						&	\ GO TO 6250			IF A%= 0%			&	!								&	!	Determine # of DMC units.  If none, go to next device	&	!								&	\ FOR J%= 1% TO A%						&		\ DMC.CSR$(J%-1%) = FN.CSR$(J%,I%)			&		\ DMC.VEC$(J%-1%) = FN.VECTOR$(J%,I%)			&		\ DMC.PRI$(J%-1%) = PRIORITY$(I%)			&		!							&		\ DMC.DUPLEX$(J%-1%)= "0"	IF TEMP%(J%-1%)= 1%	&		\ DMC.DUPLEX$(J%-1%)= "2000"	IF TEMP%      (J%-1%)= 2%	&		\ DMC.DUPLEX$(J%-1%)= "6000"	IF TEMP%(J%-1%)= 3%	&		!							&		\ DMC.TYPE$(J%-1%)= "140000"				&		\ DMC.TYPE$(J%-1%)= "0"		IF TEMP%(J%-1%)= 1%	&		!							&		! Assign the usual stuff in the usual way.  DUPLEX and	&		!	TYPE are assigned their specified values on 	&		! of the temporary variables.				&		!							& 	\ NEXT J%							&	!								&6250	!$**************************************************************&	!                                                               &	!                                                                     &	! 	RK06/07 DISKS						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	!								&	\ I%= 14%	! RK06/07 disks					&	\ A%= NO.OF.DEVICES%(I%)					&	\ A%= 0%	IF TAB.CPU%= 70% 				&	!								&	!	RK06 is allowed on our 70 only				&	!								&	\ NUM.OF.DM.DRIVES%= A%						&	\ GO TO 6260		IF A%= 0%				&	!					      			&	\ DM.CSR$= FN.SYSGEN.CSR$(I%)					&	\ DM.VEC$= FN.INT.TO.OCT$(VECTOR%(I%))				&	\ DM.PRI$= PRIORITY$(I%)					&	!								&	!	Determine # of RK type disks.  If none, go to next	&	!	device.  Assign conventional addresses.			&	!								&	\ FOR J%= 1% TO A%						&		\ C%= SPECIAL0%(I%) AND 2%**(J%)			&		\ DM.IS.RK07%(J%-1%)= FALSE%				&		\ DM.IS.RK07%(J%-1%)= TRUE%  	IF C% <> 0%		&	\ NEXT J%							&	!								&	!	Specify which drives are RK07 units			&6260	!$**************************************************      ************&	!                                                               &	!                                                               &	! 	RH70 CONTROLLER PROCESSING				&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ A%= 0%							&	\ A%= A% + 1%		IF NO.OF.DEVICES%(1%)> 0%		&	\ A%= A% + 1%		IF NO.OF.DEVICES%(2%)> 0%		&	\ A%= A% + 1%		IF       NO.OF.DEVICES%(3%)> 0%		&	\ A%= A% + 1%		IF NO.OF.DEVICES%(4%)> 0%		&	!								&	\ NUM.OF.RH.CNTLRS%= A%						&	!								&	!	Determine # of RH70 controllers				&	!								&	\ I%= 1%							&	\ FOR L%= 1% TO 4%						&		\ INDEX%(I%)= L%	IF NO.OF.DEVICES%(L%) > 0%	&		\ I%= I% + 1%		IF NO.OF.DEVICES%(L%) > 0%	&	\ NEXT L%							&	!								&	!	Fill in low entries in RH array with the controllers	&	!	that are present.  The above routine generates pointers	&	!	to the controllers that are present.			&	!								&	\ F      OR I%= 1% TO 4%						&		\ RH.PRI$(I%-1%)= PRIORITY$(INDEX%(I%))			&		\ RH.CSR$(I%-1%)= FN.SYSGEN.CSR$(INDEX%(I%))		&		\ RH.VEC$(I%-1%)= FN.INT.TO.OCT$(VECTOR%(INDEX%(I%)))	&	\ NEXT I%							&	!								&	\ NUM.OF.DB.CNTLRS%= 0%						&	\ NUM.OF.MM.MASTERS%= 0%					&	\ NUM.OF.DR.CNTLRS%= 0%						&	\ NUM.OF.DB.DRIVES%= 0%						&	\ NUM.OF.MM.DRIVES%= 0%						&	\ NUM.OF.DR.DRIVES%= 0%						&	!								&	\ FOR I%= 1% TO 4%						&		\ RH.UNITS%(I%-1%)= NO.OF.DEVICES%(INDEX%(I%))		&		\ RH.UNIT.TYPE$(I%-1%)= "DB"	IF SP      ECIAL0%(INDEX%(I%))= 1%&		\ RH.UNIT.TYPE$(I%-1%)= "MM"	IF SPECIAL0%(INDEX%(I%))= 2%&		\ RH.UNIT.TYPE$(I%-1%)= "DR"	IF SPECIAL0%(INDEX%(I%))= 3%&		!							&		! Determine types of the controllers - Special0% holds	&		! the code for this aspect of the controller		&		!							&		\ NUM.OF.DB.CNTLRS%= NUM.OF.DB.CNTLRS% + 1%		&				IF SPECIAL0%(INDEX%(I%))= 1%		&		\ NUM.OF.DR.CNTLRS%= NUM.OF.DR.CNTLRS% + 1%		&				IF SPECIAL0%(INDEX%(I%))= 3%		&		!							&		! Determine the # of controllers of the various types	&		!		      					&		\ NUM.OF.DB.DRIVES%= NUM.OF.DB.DRIVES% + NO.OF.DEVICES%(INDEX%(I%))&				IF SPECIAL0%(INDEX%(I%))= 1%		&		\ NUM.OF.MM.MASTERS%= NUM.OF.MM.MASTERS% + NO.OF.DEVICES%(INDEX%(I%))&				IF SPECIAL0%(INDEX%(I%))= 2%		&		\ T%= SPECIAL2%(INDEX%(I%)) AND 255%			&		\ S%= SWAP%(SPECIAL2%(INDEX%(I%))) AND 255%		&		\ NUM.OF.MM.DRIVES%= NUM.OF.MM.DRIVES% + T% + S%	&				IF SPECIAL0%(INDEX%(I%))= 2%		&		\ NUM.OF.DR.DRIVES%= NUM.OF.DR.DRIVES% + NO.OF.DEVICES%(INDEX%(I%))&				IF  SPECIAL0%(INDEX%(I%))= 3%		&		!							&      		! Determine the # of drives of each type		&		!							&	\ NEXT I%							&	!								&	!								&	!								&	!								&	\ K%= 1%							&	\ L%= 1%							&	\ M%= 1%							&	\ J1%= 1%							&	\ J2%= 1%							&	\ J3%= 1%							&	!								&	!	Determine the number of mag tape slave drives and 	&	!	initialize working variables				&	!								&	\ FOR I%= 1% TO 4%						&		\ GO TO 6270	IF SPECIAL0%(I%) <> 1%			&		\ DB.PNT%(J1%)= I%					&		\ J1%= J1% + 1%						&6270		\ GO TO 6280	IF SPECIAL0%(I%) <> 3%			&		\ DR.PNT%(J2      %)= I%					&		\ J2%= J2% + 1%						&6280		\ GO TO 6290	IF SPECIAL0%(I%) <> 2%			&		\ MM.PNT%(J3%)= I%					&		\ J3%= J3% + 1%						&6290	\ NEXT I%							&	!								&	!	These 3 routines determine the CSR addresses, vectors,	&	!	and priorities for the controllers.  This is done by 	&	!	type of controller.					&	!	They also set up the pointers to the assignment table 	&	!	entries by device type					&6300	!$**************************************************************&	!                                                                     &	!                                                               &	! 	RP06 PROCESSING & ASSIGNMENT OF PHYSICAL UNIT NUMBERS	&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ GO TO 6305	IF NUM.OF.DB.DRIVES% = 0%			&	\ FOR I%= 0% TO NUM.OF.DB.DRIVES%-1%				&		\ FOR L%= 1% TO 4%					&		\ CODE1%= 64% + L%		IF INDEX%(L%)= DB.PNT      %(1%)&		\ CODE2%= 64% + L%		IF INDEX%(L%)= DB.PNT%(2%)&		\ NEXT L%						&		!							&		\ DB.RH.CNTLR$(I%)= CHR$(CODE1%)			&		\ DB.RH.CNTLR$(I%)= CHR$(CODE2%)			&			IF I% > NO.OF.DEVICES%(DB.PNT%(1%)) -1%		&		!							&		\ DB.PHY.NUM%(I%)= I%  - NO.OF.DEVICES%(DB.PNT%(1%))	&		\ DB.PHY.NUM%(I%)= I% 					&			IF I% <= NO.OF.DEVICES%(DB.PNT%(1%)) - 1%	&	\ NEXT I%							&	!								&	!								&	!	Assign each DB drive to a controller - 			&	!	Controllers are designated by A,B,C,D			&6305	\ GO TO 6310	IF NUM.OF.MM.DRI      VES%= 0%			&	\ T%= SPECIAL2%(MM.PNT%(1%)) AND 255%				&	\ S%= SWAP%(SPECIAL2%(MM.PNT%(1%))) AND 255%			&	\ T1%= SPECIAL2%(MM.PNT%(2%)) AND 255%				&	\ S1%= SWAP%(SPECIAL2%(MM.PNT%(2%))) AND 255%			&	\ R%= S% + T%							&	\ R1%= S1% + T1%						&	!								&	\ NUM.OF.MM.SLAVES%(0%)= R%					&	\ NUM.OF.MM.SLAVES%(1%)= R1%					&	!								&	\ FOR L%= 1% TO 4%						&	\ CODE1%= 64% + L%		IF INDEX%(L%)= MM.PNT%(1%)	&	\ CODE2%= 64% + L%		IF INDEX%(L%)= MM.PNT%(2%)	&	\ NEXT L%							&	!								&	\ MM.RH.CNTLRS$(0%)= CH      R$(CODE1%)				&			IF ((MM.PNT%(1%) > 0%	) AND 			&			     ( NUM.OF.MM.MASTERS% > 0%))		&	\ MM.RH.CNTLRS$(1%)= CHR$(CODE2%)				&			IF ((MM.PNT%(2%) > 0%	) AND 			&			    (NUM.OF.MM.MASTERS% > 1%))			&	\ MM.RH.CNTLRS$(1%)= CHR$(CODE1%)				&			IF ((MM.PNT%(2%) = 0% ) AND			&			    (NUM.OF.MM.MASTERS% > 1%))			&	!								&	\ FOR I%= 0% TO NUM.OF.MM.DRIVES%-1%				&		\ MM.PHY.NUM%(I%)= I%  - R%				&		\ MM.PHY.NUM%(I%)= I% 					&			IF I% <= R% - 1%				&	\ NEXT I%							&	!								&	!								&	!	Assign formatters t      o controller and drives to foramtters&6310	\ GO TO 6315	IF NUM.OF.DR.DRIVES%= 0%			&	\ FOR I%= 0% TO NUM.OF.DR.DRIVES%-1%				&		\ FOR L%= 1% TO 4%					&		\ CODE1%= 64% + L%	IF INDEX%(L%)= DR.PNT%(1%)	&		\ CODE2%= 64% + L%	IF INDEX%(L%)= DR.PNT%(2%)	&		\ NEXT L%						&		!							&		\ DR.RH.CNTLR$(I%)= CHR$(CODE1%)			&		\ DR.RH.CNTLR$(I%)= CHR$(CODE2%)			&			IF I% > NO.OF.DEVICES%(DR.PNT%(1%)) - 1%	&		\ DR.PHY.NUM%(I%)= I%  - NO.OF.DEVICES%(DR.PNT%(1%))	&		\ DR.PHY.NUM%(I%)= I% 					&			IF I% <= NO.OF.DEVICES%      (DR.PNT%(1%)) - 1%	&	\ NEXT I%							&	!								&	!	We begin with an arbitrary numbering of the drive units	&	!	from 1 to 16.  We must associate these numbers with the &	!	physical unit numbers on the drives themselves.		&	!	Here we make the assignment in the way the drives units &	!	are always connected in the field.			&	!								&6315	\ GO TO 6320	IF NUM.OF.DB.DRIVES%= 0%			&	\ FOR I%= 0% TO NUM.OF.DB.DRIVES%-1%				&		\ DB.IS.RP06%(I%)= 0%					&		\ A%= SPECIAL1%(DB.PNT%(1%))				&		\ B%= SPECIAL1%(DB.PNT%(      2%))				&		\ C%= NO.OF.DEVICES%(DB.PNT%(1%))			&		\ DB.IS.RP06%(I%)= -1%					&			IF (((A% AND 2%**(I%+1%)) <> 0% ) AND (I% <= C%-1%))&		\ DB.IS.RP06%(I%)= -1%					&			IF (((B% AND 2%**(I%+1%-C%)) <> 0%) AND (I% > C%-1%))&	\ NEXT I%							&	!								&	!	Specify if drive is RP06 or RP05			&6320	\ GO TO 6450	IF NUM.OF.MM.DRIVES%= 0%			&	\ FOR I%= 0% TO NUM.OF.MM.DRIVES%-1%				&		\ MM.MSTR%(I%)= 0%					&		\ MM.MSTR%(I%)= T%	IF I% > T%-1%			&		\ MM.MSTR%(I%)= T%+S%	IF I% > T%+S%-1%		&		\ MM.MSTR%(I%)= T%+S%+T1%	      IF I% > T%+S%+T1%-1%	&	\ NEXT I%							&	!								&	!	Here we must specify for each tape drive (specified by	&	!	the arbitrary number) what the arbitrary unit number is &	!	for the master drive for that unit.			&	!	Again, we make the assignments on the basis of the 	&	!	standard installation procedure.			&6450	\ SYSTEM.DISK$= "DM0"	IF NUM.OF.DM.DRIVES% > 0%		&	\ SYSTEM.DISK$= "DR0"	IF NUM.OF.DR.DRIVES% > 0%		&	\ SYSTEM.DISK$= "DB0"	IF NUM.OF.DB.DRIVES% > 0%		&	!								&	!	Figure out the system disk				&	!	      							&	\ CRASH.UNIT$= "0"						&	\ CRASH.DEVICE$= LEFT (SYSTEM.DISK$,2%)				&	\ T%= DB.PNT%(1%)	IF SYSTEM.DISK$= "DB0"			&	\ T%= DR.PNT%(1%)	IF SYSTEM.DISK$= "DR0"			&	\ T%= 14%							&	\ CRASH.CSR$= FN.INT.TO.OCT$(FIRST.CSR%(T%))			&	!								&	!	In our system the crash routine uses the system disk	&	!	so we answer the questions accordingly.			&	!								&6457	\ CALL DTRG BY REF (REGION1%(),DIRECTIVE.ERROR%)		&	\ GO TO 6085	IF DIRECTIVE.ERROR% <> 1%			&	!								&	\ CALL EXITS2 (1%,0%)						&	!								&	      !	The end of the routine which stuffs the common region 	&	!	with answers.						&	!	We detach from the common region at this point.		&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C       T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15700	!$**************************************************************&	!                                                               &	!                                                               &	! 	compute CSR addresses					&	!                                                               &	!                                                                     &	!***************************************************************&	\ DEF FN.CSR$(A%,B%)						&	\ C%= FN.OCT.TO.INT%(FN.SYSGEN.CSR$(B%))			&	\ D%= C% + (A%-1%)*CSR.LENGTH%(B%)				&	\ FN.CSR$= FN.INT.TO.OCT$(D%)					&	\ FNEND								&	!								&	!	This routine generates the sysgen CSR address for 	&	!	unit #A% for the device with assignment table index B%	&15750	\ DEF FN.SYSGEN.CSR$(A%)					&	\ FN.SYSGEN.CSR$=  						&		FN.INT.TO.OCT$(FIRST.CSR%(A%) + SYSGEN.CSR%(A%))	&	\ FNEND								&      	!								&15800	!***************************************************************&	!                                                               &	!                                                               &	! 	compute Vector addresses				&	!                                                               &	!                                                               &	!***************************************************************&	\ DEF FN.VECTOR$(A%,B%)						&	\ C%= VECTOR%(B%)						&	\ D%= C% +       (A%-1%)*VECTOR.LENGTH%(B%)				&	\ A$= FN.INT.TO.OCT$(D%)					&	!								&	\ FN.VECTOR$= A$						&	\ GO TO 15850	IF LEN(A$) > 3					&15830	\ FNEND								&	!								&	!	This routine generates the floating vector assignment 	&	!	for unit #A% for the device with assignment table 	&	!	entry B%						&15850	\ PRINT								&	\ PRINT "? FATAL error - Vector address > 3 digits"		&	\ PRINT "The vector address is ";A$				&	\ GO TO 32000							&	!								&	!	Fatal error if we compute a ridiculous vector		&19000	!$***      ***********************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ ON ERROR GO TO 0						&	!								&	!	Unexpected error trap					&20000	!$**************************************************************&	!								&	!								&	!	TPS LIBRARY SUB-ROUTINES				&	!								&	!								&	!***************   p  ************************************************&	!								&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	\ CALL EXITS2 (2%,0%)						&	!								&	!	Error exit						&32767	\ ENDp         ¡(}kQÁ› 8$        	.TITLE	DDATA.IDENT	"V1.1A4";;                         COPYRIGHT (C) 1979 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.;;;; MODULE:	DDATA (TST DEBUG);; VERSION:	V01.01A4;; AUTHOR:	MIKE GARRY;		LEE BARTON;; DATE:		22-MAY-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		------      -----;	V1.1	27-MAR-79	LBB		V1.1 - LBB001;						CHANGES FOR V1.1;	V1.1A3	18-MAY-79	LBB		LBB002 - RENUMBER LABELS;						IN TSTWT SECTION AND FIX;						CLOSE BUG (CLOSING WRONG;						FILE SINCE USING FILE NAME;						WHICH IS NOT GUARANTEED);	V1.1A4	22-MAY-79	LBB		LBB003 - SPR T226789;						INSTALL TST WITH EXPLICIT;						DEVICE NAME, SY: DEFAULT;;;;	THIS IS THE MAIN LINE CODE FOR THE DEBUGGER;	.ENABL	LC	.MCALL	ELVT$S,CRVT$C,SPWN$,DIR$,SPND$,WTSE$S,ASTX$S,QIOW$,ALUN$	.MCALL	SETF$S,CLEF$S,SDAT$S,EXST$S,$INIT,DSA      R$S,ENAR$S	.MCALL	CRRG$S,CRAW$S,RDBBK$,WDBBK$	.MCALL	$COMPARE,GTSK$S,RCVD$S,SRDA$S,DTRG$S	.MCALL	$GNCAL,$FBCAL,$RBCAL	.MCALL	GLUN$S							;LBB003	$GNCAL	$FBCAL	$RBCAL.PAGE.SBTTL	ROOT DATA SECTION;;	THIS SECTION CONTAINS ALL THE RABS,FABS,DPBS ETC. FOR THE;	PROGRAM.;QIOTER::QIOW$	IO.RLB,LUN1,TEREFN,,IOSB,,<TERBUF,0,0>;QIOVTR::QIOW$	IO.RLB,LUN2,VTREFN,,IOSB,,<TERBUF,0,0>;ASSLUN::ALUN$	LUN2,VT,0;SPAWN::	SPWN$	...INS,,,,,,EXAST,EXSTA,INSCMD,INSLEN,0			;LBB01;VTRLEN == 100.		;LENGTH OF VIRTUAL TERMINAL TRANSFER;      LUN1 == 1		;TERMINAL I/O LUNLUN2 == 2		;VIRTUAL TERMINAL LUN;TEREFN == 1		;TERMINAL I/O EVENT FLAGVTREFN == 2		;VIRTUAL TERMINAL I/O EVENT FLAGWTEFN == 3		;TST EXIT EVENT FLAGTRANEF == 4		;TRANSFER COMPLETE EVENT FLAG;RCFLAG:	.BYTE	0	;RECEIVE FLAG;EXFLAG:	.BYTE	0	;EXIT FLAG;IOSB::	.WORD	0,0	;I/O STATUS BLOCK;WSSIZE::.WORD	0	;SIZE OF THE WORKSPACE;TPARAM::.WORD	0	;PARAMETER BLOCK ;TERBUF::.BLKW	4096.	; I/O BUFFER;EXSTA::	.BLKW	8.	;EXIT STATUS BLOCK;PARAM::	.BLKW	10.	;PARAMETER BLOCK;TSTREG::RDBBK$	,,,<RS.RED      !RS.WRT!RS.ATT>;TSTWND::WDBBK$	6,,,0,,<WS.MAP!WS.RED!WS.WRT>;BUFREG::RDBBK$	,,,<RS.RED!RS.WRT!RS.ATT>;BUFWND::WDBBK$	6,,,0,,<WS.MAP!WS.RED!WS.WRT>.PAGE;;	BELOW IS THE ASCII TEXT THAT IS USED TO INSTALL THE TST;;	THE FILE NAME IS INSERTED IN THIS STRING FOR EVERY RUN.;INSCMD::.ASCII	/INS /NAME::	.BLKW	39.LEND::	.ASCII	#/TASK=TST#SUFFIX::.ASCII	#   /RUN=REM#INSLEN=.-INSCMDLSZ==.-LEND;;	.EVEN;$TSTAD::.WORD	0		;ADDRESS OF FILE NAME STRING$TSTSZ::.WORD	0		;SIZE OF FILE NAME STRING;DBNAM::	.BLKW	2	;NAME OF THE DE      BUGGER;ACTCB::	.WORD	0		;ACTIVE CONTROL BLOCK;TRAN::	.WORD	0		;TRANSFER CONTROL ADDRESS;FSAV::	.BLKW	10.		;FAB SAVE AREA;RSAV::	.BLKW	10.		;RAB SAVE AREA;XABTAB::.BLKW	15.	;XAB TABLE;RECBUF::.BLKW	15.	;RECEIVE BUFFER;;	OFFSET FOR DATA MANAGER DATA STRUCTURES;B.CHN == 16		;CHANNEL NUMBERB.FAB == 20		;FABB.RAB == 22		;RAB;;									;LBB003;	SAVE AREA FOR TST DEVICE NAME					;LBB003;									;LBB003SYLUN = 4		;THIS LUN IS ASSIGNED TO SY:			;LBB003LUNBK:	.BLKW	6	;GLUN$ DATA BUFFER				;LBB003SYDEV::	.ASCII	/DDN:      /	;DEFAULT TST DEVICE NAME			;LBB003SYLEN == .-SYDEV							;LBB003DVFLG::	.BYTE	0	;FLAG = 0 - DON'T USE DEFAULT DEVICE NAME	;LBB003			;	1 - DO    USE DEFAULT DEVICE NAME	;LBB003;.PAGE.SBTTL	CREATE VIRTUAL TERMINAL AND SPAWN TST	.EVEN;START::	GLUN$S	#SYLUN,#LUNBK	;GET INFORMATION ABOUT SY:		;LBB003	MOV	#SYDEV,R1	;R1 POINTS TO DEFAULT TST DEVICE NAME	;LBB003	MOV	LUNBK+G.LUNA,(R1)+	;MOVE IN DEVICE NAME		;LBB003	MOVB	LUNBK+G.LUNU,(R1)	;AND UNIT NUMBER		;LBB003	BISB	#60,(R1)		;CONVERT UNIT NUMBER TO ASCII	;LBB00      3	SRDA$S	#RECAST		;SPECIFY RECEIVE AST	GTSK$S	#DBNAM		;GET NAME OF THE DEBUGGER;	CLR	TRAN		;RESET TRANSFER ADDRESS	$INIT			;INITIALIZE RMS	CALL	DBULOG		;DO THE DIALOGUE	MOV	$TSTSZ,STDPRM+6 ;SET UP LENGTH OF STRING;;;	CONNECT RABS FOR THE MESSAGE AND WORKSPACE FILES.;;	READ THE FIRST RECORDS FOR THIS FILE.;	MOV	#$MFRAB,R0	;POINT AT MESSAGE FILE RAB	$CONNECT	R0	;CONNECT TO MESSAGE FILE	$COMPARE	#0,STS,R0 ;DID THIS CONNECT SUCCEED	BGE	15$		;CONTINUE IF SUCCESSFUL	HALT15$:	MOV	#$WFRAB,R1	;CONNECT TO WORKSPACE F      ILE	$CONNECT	R1	20$:	MOV	#$LDRAB,R0	;POINT AT LOG FILE RAB	$CONNECT	R0	;CONNECT A STREAM FOR THE LOG FILE	$COMPARE	#0,STS,R0 ;DID THE CONNECT WORK	BGE	RESTRT	HALT;RESTRT::;	CALL	TSTINT		;INITIALIZE FOR THE TSTTSTWT:	DSAR$S			;INHIBIT AST'S	TSTB	RCFLAG		;ANY RECEIVES?	BNE	40$		;YES - GO PROCESS			;LBB002	TSTB	EXFLAG		;ANY EXIT'S	BEQ	20$		;NO - THEN CONTINUE			;LBB002	JMP	240$		;OTHERWISE - PROCESS THE EXIT		;LBB00220$:	CLEF$S	#WTEFN		;OTHERWISE RESET EVENT FLAG		;LBB002	ENAR$S			;ENABLE AST'S	WTSE$S	#WTEFN		      ;WAIT FOR TST TO DO SOMETHING	BR	TSTWT		;AND TRY AGAIN;40$:	CLRB	RCFLAG		;RESET RECEIVE FLAG			;LBB002	ENAR$S			;ENABLE AST'S;	RCVD$S	,#RECBUF	;TRY TO RECEIVE A MESSAGE	BCC	60$		;IF MESSAGE THERE TST CALLED A SUBROUTINE;LBB002	JMP	RESTRT		;OTHERWISE TST EXITED;60$:	MOV	RECBUF+6,R0	;GET FUNCTION CODE			;LBB002	CMP	#BF.CRF,R0	;IS THIS A DATA MANAGER FUNCTION?	BLOS	80$		;YES - THEN SKIP			;LBB002	CALL	@FUNDSP-BF.SND(R0) ;CALL PROCESSING ROUTINE	JMP	220$							;LBB002;;	INITIALIZE FOR A DATA MANAGER FUNCTION;80      $:	MOV	R0,-(SP)	;SAVE FUNCTION CODE			;LBB002	MOV	RECBUF+B.FAB,R4	;GET ADDRESS OF USER FAB	BEQ	40$		;SKIP ALL PROCESSING IF NO FAB		;LBB002	MOV	#FABSZE,R5	;AND SIZE	CALL	TODEB		;TRANSFER FAB TO DEBUGGER;	MOV	#TERBUF,R0	;GET ADDRESS OF FAB IN DEBUGGER	CALL	FABSAV		;SAVE ALL CRITICAL USER DATA;	MOV	#TERBUF,R0	;POINT AT FAB	CALL	XABGET		;GET XAB'S;	MOV	RECBUF+B.RAB,R4	;GET ADDRESS OF USER RAB	BEQ	100$		;NO RAB - CONTINUE			;LBB002;									;LBB002;	RECORD OPERATION - RAB EXISTS					;LBB002;									;LBB002	MOV      	#RABSZE,R5	;GET SIZE OF RAB	MOV	#TERBUF,R3	;CACULATE DEBUGGER'S RAB ADDRESS	ADD	#FABSZE,R3	MOV	R3,TRAN		;AND TRANSFER USER RAB INTO THIS ADDRESS	CALL	TODEB;	CALL	RABSAV		;SAVE CRITICAL USER RAB DATA;100$:	CLR	-(SP)		;PRESET STACK				;LBB002	TST	RECBUF+16	;IS THERE A CHANNEL NUMBER?	BEQ	120$		;NO - THEN CONTINUE			;LBB002;									;LBB002;	CHANNEL NUMBER EXISTS						;LBB002;									;LBB002	CALL	CHNLCK		;GO FIND CHANNEL ENTRY	MOV	R5,(SP)		;SAVE CHANNEL ENTRY	$STORE	L.ISI(R5),ISI,R3 ;SET UP ISI FIELD	MOV	L.F      TB(R5),R1	;SET UP FILE TABLE ENTRY	BNE	160$		;SKIP IF VALID FILE TABLE ENTRY		;LBB002;120$:	MOV	#$LGNAM,R4	;CLEAR LOGICAL NAME AREA TO BLANKS	;LBB002	MOV	#6,R5140$:	MOVB	#' ,(R4)+						;LBB002	SOB	R5,140$							;LBB002;	CMP	2(SP),#BF.CLO	;IS THIS A 'CLOSE'?			;LBB002	BEQ	150$		;YES - SKIP OUT				;LBB002	CMP	2(SP),#BF.DSP	;IS THIS A 'DISPLAY'?			;LBB002	BEQ	150$		;YES - SKIP OUT				;LBB002;									;LBB002;	FILE NOT YET OPENED - FAB CONTAINS VALID FILE NAME POINTERS	;LBB002;									;LBB002	MOV	#TERBUF,R0	;P      OINT AT FAB	$FETCH	R4,FNA,R0	;GET ADDRESS OF LOGICAL FILE NAME	$FETCH	R5,FNS,R0	;AND SIZE	MOV	#$LGNAM,TRAN	;TRANSFER IT INTO DEBUGGER	CALL	TODEB;	MOV	#$LGNAM,R2	;POINT AT NAME	MOV	(SP),R5		;RESTORE CHANNEL ENTRY	CALL	FNDNAM		;FIND NAME IN FILE TABLE	BR	160$		;SKIP OVER IFI CODE			;LBB002;;	FILE ALREADY OPEN - FIND NAME FROM FILE TABLE USING IFI		;LBB002;									;LBB002150$:	MOV	#TERBUF,R0	;POINT AT FAB				;LBB002	$FETCH	R2,IFI,R0	;RETRIEVE IFI				;LBB002	MOV	#$FLETB,R1	;POINT AT START OF FILE TABLE		;LBB00      2152$:	CMP	R2,F.IFI(R1)	;IS THIS THE FILE?			;LBB002	BEQ	154$		;YES - STOP SEARCH			;LBB002	ADD	#FTBSZ,R1	;LOOK AT NEXT ENTRY			;LBB002	CMP	R1,#$FLETE	;END OF TABLE?				;LBB002	BNE	152$		;NO - TRY THE ENTRY			;LBB002;									;LBB002;	CODE NEEDED HERE FOR "FILE ENTRY NOT FOUND" - CURRENTLY ABORT	;LBB002;									;LBB002	HALT			;ABORT DEBUGGER				;LBB002154$:	MOV	F.LNAM(R1),$LGNAM	;MOVE IN LOGICAL FILE NAME	;LBB002	MOV	<F.LNAM+2>(R1),<$LGNAM+2>				;LBB002	MOV	<F.LNAM+4>(R1),<$LGNAM+4>				;LBB002;									;LB      B002160$:	MOV	#TERBUF,R0	;POINT AT DEBUGGER FAB			;LBB002	MOV	#TERBUF+FABSZE,R3 ;AND AT RAB	$STORE	F.IFI(R1),IFI,R0 ;SET UP IFI FIELD;	MOV	F.ID(R1),BUFWND+W.NRID ;MAP ONTO BUFFER REGION	BEQ	180$		;SKIP IF NO REGION MAPPED		;LBB002	MOV	F.RSZE(R1),BUFWND+W.NSIZ ;SET UP REGION SIZE	CLR	BUFWND+W.NLEN	;RESET SIZE INDICATOR	CRAW$S	#BUFWND;180$:	MOV	(SP)+,R5	;RESTORE CHANNEL BLOCK			;LBB002	MOV	(SP)+,R4	;GET FUNCTION CODE	CALL	@DTDSP-BF.CRF(R4) ;TRANSFER TO PROCESSING ROUTINE;	MOV	#TERBUF,R0	;POINT TO DEBUGGER FAB      	CALL	XABRES		;RESTORE XAB'S	MOV	#TERBUF,R0	;POINT AT FAB	CALL	FABRES		;RESTORE USER'S FAB	MOV	RECBUF+B.FAB,R4 ;NOW RETURN FAB TO USER TST	MOV	#FABSZE,R5	CALL	TOTST		;TRANSFER TO TST;	MOV	RECBUF+B.RAB,R4	;IS THERE A RAB?	BEQ	200$		;NO - THEN LEAVE			;LBB002	MOV	#TERBUF+FABSZE,R3 ;OTHERWISE - RESTORE RAB	CALL	RABRES	MOV	R3,TRAN		;SET UP TRANSFER ADDRESS	MOV	#RABSZE,R5	;AND RETURN RAB TO USER	CALL	TOTST;200$:	MOV	ACTCB,R0	;GET ACTIVE CONTROL BLOCK		;LBB002	$FETCH	RECBUF+10,STS,R0 ;SET STATUS VALUES IN SEND BU      FFER	$FETCH	RECBUF+12,STV,R0	MOV	#1,R1		;SET SUCCESS CODE220$:	MOV	R1,RECBUF+4	;SET UP RETURN CODE			;LBB002	SDAT$S	#RECBUF,#RECBUF+4 ;SEND REPLY TO TST	JMP	TSTWT		;TRY AGAIN;240$:	CLRB	EXFLAG		;RESET THE FLAG				;LBB002	ENAR$S			;ENABLE AST'S;	CALL	DMPWKS		;DUMP THE WORKSPACE;	CALL	CLEAN		;CLEAN UP ANY OPEN FILES	JMP	RESTRT;;	FUNCTION DISPATCH TABLE;;	THIS TABLE IS POSITION DEPENDANT;FUNDSP:	SNDMSG			;SEND MESSAGE	DELRTE			;DELETE ROUTE	DELALL			;DELETE ALL ROUTES	ADDRTE			;ADD A ROUTE	GETMSG			;GET A MESS      AGE FROM MAILBOX	OPETRN			;SPAWN A TRANSACTION	ABTTRN			;ABORT A TRANSACTION	WRTJNL			;WRITE TO A JOURNAL	GETSTN			;GET STATION NAME	GETSRC			;GET SOURCE STATION NAME	GETTYP			;GET TRANSACTION TYPE	GETTSC			;GET TRANSACTION SOURCE	RSTART			;RESTART EXCHANGE	GETNUM			;GET NUMBER OF MESSAGES IN MAILBOX;;	DISPATCH TABLE FOR DATA MANAGER;DTDSP:	.WORD	CREATE	.WORD	OPEN		;OPEN FILE	.WORD	CLOSE		;CLOSE FILE	.WORD	ERASE		;ERASE FILE	.WORD	DISPLY		;DISPLAY FILE	.WORD	CONNCT		;CONNECT STREAM	.WORD	DISCON		;DISCONNECT       STREAM	.WORD	GET		;GET RECORD	.WORD	FIND		;FIND RECORD	.WORD	PUT		;PUT RECORD	.WORD	DELETE		;DELETE RECORD	.WORD	UPDATE		;UPDATE RECORD	.WORD	UNLOCK		;UNLOCK RECORD	.WORD	RELEAS		;RELEASE ALL LOCKS	.WORD	GETFIL		;GET FILE SPEC.;;;.PAGE.SBTTL	VIRTUAL TERMINAL INPUT PROCESSING;INAST::	MOV	R1,$DSW		;SAVE R1	MOV	TRAN,R1		;GET TRANSFER ADDRESS	BNE	10$		;CONTINUE IF ADDRESS SPECIFIED	MOV	#TERBUF,R1	;OTHERWISE USE DEFAULT ADDRESS10$:	MOV	R1,QIOVTR+Q.IOPL ;SET INTO DPB	MOV	R1,QIOTER+Q.IOPL	MOV	#IO.RLB,Q.IOFN+QIOTE      R ;SET TO READ FORM THE TERMINAL	MOV	(SP)+,R1	;GET SUB-FUNCTION CODE	SWAB	R1		;IN LOWER BYTE	BISB	R1,QIOTER+Q.IOFN ;SET IN QIO DPB	MOV	(SP),IOSB+2	;SET UP DEFAULT BYTE COUNT	MOV	(SP)+,QIOTER+Q.IOPL+2 ;MOVE IN BYTE COUNT	MOV	(SP)+,QIOTER+Q.IOPL+4 ;AND CARRIAGE CONTROL	MOV	$DSW,-(SP)	;SAVE R1	CMPB	#377,R1		;IS THIS DATA TRANSFER FUNCTION?	BEQ	15$		;YES - THEN DO NO TERMINAL I/O	DIR$	#QIOTER		;READ THE TERMINAL	BCC	15$		;CONTINUE IF NO ERROR	MOV	$DSW,R0	HALT15$:	MOV	#IO.WLB,QIOVTR+Q.IOFN ;NOW WRITE THE VIRTUAL       TERMINAL	MOV	IOSB,QIOVTR+Q.IOPL+4 ;SET UP FIRST WORD OF THE I/O STATUS	MOV	IOSB+2,QIOVTR+Q.IOPL+2 ;AND THE SIZE OF THE DATA TRANSFER	DIR$	#QIOVTR		;WRITE DATA TO THE VIRTUAL TERMINAL	BCC	20$		;CONTINUE IF NO ERROR	MOV	$DSW,R0	HALT20$:	MOV	(SP)+,R1	SETF$S	#TRANEF		;INDICATE TRANSFER COMPLETE	ASTX$S.PAGE.SBTTL	VIRTUAL TERMINAL OUTPUT HANDLING;OUAST::	MOV	R1,$DSW		;SAVE R1	MOV	TRAN,R1		;GET TRANSFER ADDRESS	BNE	5$		;SKIP IF ADDRESS SPECIFIED	MOV	#TERBUF,R1	;OTHERWISE USE DEFAULT ADDRESS5$:	MOV	R1,QIOTER+Q.IOP      L ;SET IN DPB'S	MOV	R1,QIOVTR+Q.IOPL	MOV	(SP)+,R1	;GET FUNCTION CODE	MOV	(SP),QIOVTR+Q.IOPL+2 ;MOVE INTO THE DPB	MOV	(SP)+,QIOTER+Q.IOPL+2 ;AND INTO TERMINAL DPB	MOV	(SP)+,QIOTER+Q.IOPL+4 ;MOVE IN CARRAIGE CONTROL	MOV	$DSW,-(SP)	;SAVE R1	MOV	#IO.RLB,QIOVTR+Q.IOFN ;MOVE IN FUNCTION CODE	MOV	#IS.SUC,QIOVTR+Q.IOPL+4 ;SET COMPLETION CODE	DIR$	#QIOVTR		;READ FROM THE VIRTUAL TERMINAL	BCC	10$		;CONTINUE IF NO ERROR	MOV	$DSW,R0	HALT10$:	MOV	#IO.WLB,QIOTER+Q.IOFN ;NOW WRITE TO THE TERMINAL	SWAB	R1		;GET SUB FUNCTIO      N CODE IN LOW BYTE	CMPB	#377,R1		;IS THIS A DATA TRANSFER FUNCTION?	BEQ	30$		;YES - THEN NO TERMINAL I/O	BISB	R1,QIOTER+Q.IOFN ;SET IT INTO THE DPB	DIR$	#QIOTER		;WRITE TO THE TERMINAL	BCC	30$		;CONTINUE IF NO ERROR	MOV	$DSW,R0	HALT30$:	SETF$S	#TRANEF		;SET TRANSFER COMPLETE	MOV	(SP)+,R1	ASTX$S.PAGE.SBTTL	ATTATCH TO VIRTUAL TERMINAL;ATAST::	MOV	#QIOVTR,R1	;POINT TO Q I/O DPB	MOV	#IO.STC,Q.IOFN(R1) ;MOVE IN SPECIAL FUNCTION CODE	CLR	Q.IOPL(R1)	;SET SPECIAL PARAMETER LIST	CLR	Q.IOPL+2(R1)	;SECOND IOSB WORD IS       ZERO	MOV	#1,Q.IOPL+4(R1)	;FIRST IOSB WORD INDICATES SUCCESS	DIR$	#QIOVTR		;WRITE TO VIRTUAL TERMINAL	BCC	10$		;CONTINUE IF NO ERROR	MOV	$DSW,R0	HALT10$:	CMP	(SP)+,(SP)+	;RESTORE STACK	TST	(SP)+	ASTX$S.PAGE.SBTTL	TST EXIT PROCESSING;EXAST::	INCB	EXFLAG	;SET THE EXIT FLAG	MOV	(SP)+,EXSTA	;GET THE EXIT STATUS BLOCK	CMP	#EX$SUC,@EXSTA	;WAS THE EXIT SUCCESSFUL?	BEQ	10$		;YES THEN CONTINUE	MOV	#ER.VXF,EXSTA	;SET UP ERROR CODE10$:	SETF$S	#WTEFN		;SET MAIN LINE GOING AGAIN	ASTX$S.PAGE.SBTTL	RECEIVE AST PROCESSING;      RECAST:	INCB	RCFLAG		;SET THE RECEIVE FLAG	SETF$S	#WTEFN		;SET MAIN LINE GOING AGAIN	ASTX$S.PAGE;;	EXIT ROUTINE;$EX::DEXIT::	$DISCONNECT #$LDRAB	;DISCINNECT LOGGING STREAM;	$CLOSE	#$LDFAB		;CLOSE THE FILE;	$DISCONNECT #$MFRAB	;DISCONNECT THE MESSAGE FILE;	$CLOSE	#$MFFAB		;CLOSE THE FILE;	$DISCONNECT #$WFRAB	;DISCONNECT THE WORKSPACE FILE;	$CLOSE	#$WFFAB		;CLOSE THE FILE;	EXST$S	#EX$SUC.PAGE.SBTTL	DATA TRANSFER ROUTINES;;	THESE ROUTINES TRANSFER DATA BETWEEN THE DEBUGGER AND THE TST;;	TRANSFER OCCURRS IN BOT      H DIRECTIONS.;;	THE VIRTUAL TERMINAL MECHANISM IS USED TO MOVE THE DATA.;;	INPUT:;		R4	ADDRESS OF DATA;		R5	SIZE OF DATA;;	TERBUF IS ALWAYS THE BUFFER IN THE DEBUGGER.;;	TO THE TST:;TOTST::	MOV	#IO.RLB!377,-(SP)	;SAVE THE FUNCTION CODE	BR	TCOM;;	TO THE DEBUGGER:;TODEB::	MOV	#IO.WLB!377,-(SP)	;TCOM:	MOV	#RECBUF,R0	;POINT AT RECEIVE ( SEND) BUFFER	MOV	(SP)+,4(R0)	;MOVE IN THE FUNCTION CODE	MOV	R4,-(SP)	;SAVE ADDRESS	MOV	R5,-(SP)	;AND SIZE	CLR	EXSTA		;RESET EXIT STATUS BLOCK	MOV	R4,6(R0)	;SET THE INITIAL ADDRE      SS	SUB	#VTRLEN,6(R0)	;;1$:	ADD	#VTRLEN,6(R0)	;MOVE ON TO NEXT BLOCK	MOV	#VTRLEN,10(R0)	;TRANSFER ONLY THE BLOCK LENGTH	CMP	R5,10(R0)	;IS THIS TOO MUCH?	BHIS	5$		;NO - THEN CONTINUE	MOV	R5,10(R0)	;OTHERWISE TRANSFER CORRECT AMOUNT5$:	CLEF$S	#TRANEF		;RESET TRANSFER COMPLETE EVENT FLAG	SDAT$S	R0,#RECBUF+4	;INITIATE THE TRANSFER	BCC	10$	HALT10$:	WTSE$S	#TRANEF		;WAIT FOR TRANSFER TO COMPLETE	CMP	#ER.VXF,EXSTA	;WAS THE TRANSFER ABORTED?	SEC			;ASSUME SO	BEQ	15$		;AND LEAVE	ADD	#VTRLEN,TRAN	;INCREMENT TRANSFER A   ²   DDRESS	SUB	#VTRLEN,R5	;OTHERWISE REDUCE THE COUNT	BGT	1$		;AND TRY AGAIN	CLR	TRAN		;RESET TRANSFER ADDRESS	CLC15$:	MOV	(SP)+,R5	;RESTORE PARAMETERS	MOV	(SP)+,R4	RETURN	.END	START²          e_MkQÁ› 8$        	.TITLE	DBULOG - TST DEBUG DIALOGUE	.IDENT	/V1.1A4/						;LBB001;;                         COPYRIGHT (C) 1979 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.;;;; MODULE:	DBULOG - TRAX TST DEBUG;; VERSION:	V01.01A4;; AUTHOR:	MIKE GARRY;		LEE BARTON;; DATE:		22-MAY-79;;;;;;	THIS ROUTINE PERFORMS THE USER DIALOG FOR THE TST DEBUG UTILITY;;	THE       CALLING SEQUENCE IS 	CALL DBULOG;;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;;	1.0C01	19-FEB-79	LBB		SPR - 21184 - LBB001;						MAKE "<NONE>" DEFAULT ANSWER;						  TO "WORKSPACE FILE" QUERY;	V1.1A4	22-MAY-79	LBB		SPR T226789 - LBB003;						INSTALL TST WITH EXPLICIT;						  DEVICE NAME, "SY:" DEFAULT;						ALSO SUPPRESS VERSION NUMBER;						  IN HERALD;;;			.MCALL	SPEAK	.MCALL	$GNCAL,$FBCAL,$RBCAL,DIR$,EXST$S	.MCALL	FAB$B,FAB$E	      $FBCAL	$RBCAL	$GNCAL	.ENABL	LCRESL:	.WORD	0RES:	.WORD	0RT:	.WORD	0HEADER:	.BYTE	15,12	.ASCII	/DEBUG/							;LBB003	.BYTE	15,12,15,12	.ASCII	/TST Debug Utility/	.BYTE	15,12HEADL	=.-HEADERND:	.ASCII	/? /	.BYTE	0,0NDL	=.-NDP1:	.ASCII	/TST filename/PL1	=.-P1H1:	.ASCII	/Please enter the file specification which represents the/	.ASCII	/ TST you wish to debug./HL1	=.-H1P2:	.ASCII	/Logical file name/PL2	=.-P2D2:	.ASCII	/<DONE>? /DL2	=.-D2H2:	.ASCII	/Please enter a logical file name which your TST references./HL2	=.      -H2P3:P7:	.ASCII	/File specification "/PL3	=.-P3P7V:	.BLKB	6	.ASCII	/"/PL7	=.-P7H3:	.ASCII	/Please enter the file specification to associate with the/	.ASCII	/ logical file name./HL3	=.-H3P4:	.ASCII	/Logging device/PL4	=.-P4D4:	.ASCII	/<TI:>? /DL4	=.-D4H4:	.ASCII	/Please enter the file specification you wish to use for/	.ASCII	/ logging purposes./HL4	=.-H4P5:	.ASCII	/Message file/PL5	=.-P5H5:	.ASCII	/Please enter the file specification of the file from which/	.ASCII	/ your TST will/	.BYTE	15,12	.ASCII	/deri      ve messages./HL5	=.-H5P6:	.ASCII	/Workspace file/PL6	=.-P6D6:	.ASCII	/<NONE>? /						;LBB001DL6	=.-D6								;LBB001H6:	.ASCII	/Please enter the file specification of the file from which/	.ASCII	/ your TST will/	.BYTE	15,12	.ASCII	/derive workspace./HL6	=.-H6ER.BDF:	.ASCII	/% Invalid file specification./EL.BDF	=.-ER.BDFER.TOL:	.ASCII	/% Response exceeds maximum length./EL.TOL	=.-ER.TOLER.NAL:	.ASCII	/% Response must be alphanumeric./EL.NAL	=.-ER.NALER.FNF:	.ASCII	/% File not found./EL.FNF	=.-ER.FNFER.PRV:	.      ASCII	/% Privilege violation - access denied./EL.PRV	=.-ER.PRVER.NOP:	.ASCII	/% File can not be opened./EL.NOP	=.-ER.NOPER.NDF:	.ASCII	/% No default./EL.NDF	=.-ER.NDF	.EVEN.PAGETSTFAB:	FAB$B	F$LCH	6	F$DNA	DFNAM	F$DNS	DFSZE	FAB$E;DFNAM:	.ASCII	/SY:.TSK/DFSZE = .-DFNAM	.EVEN;DBULOG::	MOV	#HEADER,HELP+Q.IOPL	MOV	#HEADL,HELP+Q.IOPL+2	DIR$	#HELP		; PRINT OUT THE PROGRAM HEADERQ1:	MOV	#$FLBUF,$FLPTR	; POINT TO THE STRING BUFFER AREA	MOV	$FLPTR,$TSTAD	; THE TST STRING WILL GO HERE	CLRB	DVFLG		; CLEAR "MOVE IN DEFA      ULT DEV STRING" FLG	;LBB003;	Ask the 'TST filename' question	SPEAK	#P1,#PL1,#ND,#NDL,#-1,#H1,#HL1,RES,RESL,RT,Q1,EX,ER	MOV	RES,R0		; POINT TO THE RESPONSE	MOV	$TSTAD,R1	; POINT TO WHERE IT IS SUPPOSED TO GO	MOV	RESL,R2		; THIS IS THE LENGTH OF THE STRING	CMP	#33.,R2		; IS THE STRING TOO LONG?	BHIS	5$		; NO4$:	MOV	#Q1,R0		; RETURN FROM ERROR REPORT	JMP	BADFIL		; IT HAS GOT TO BE A BAD FILE STRING IF > 33.5$:	TST	R2		; NO RESPONSE	BNE	6$		; NOPE	MOV	#Q1,R0		; RETURN FROM ERROR REPORT	JMP	NODEFL		; REPORT IT6$      :	MOVB	(R0)+,(R1)+	; TRANSFER IT	SOB	R2,5$		; TRANSFER TIL DONE	MOV	RESL,$TSTSZ	; SET UP THE SIZE OF THE STRING	MOV	$TSTAD,R0	; POINT R0 TO THE STRING	MOV	$TSTSZ,R1	; SIZE OF STRING TO BE VALIDATED	CALL	VALID		; SEE IF THE FILE STRING IS VALID	BCS	4$		; IT WASN'T	TST	<CSIBLK+C.DEVD>	; WAS A DEVICE STRING PROVIDED?		;LBB003	BNE	8$		; IT WAS - SO SKIP			;LBB003	INCB	DVFLG		; IT WASN'T - FLAG IT			;LBB0038$:									;LBB003	MOV	#TSTFAB,R0	; SEE IF THE TST FILE IS THERE	$STORE	$TSTAD,FNA,R0	; SET FILE STRING IN       FAB	$STORE	$TSTSZ,FNS,R0	$OPEN	R0		; OPEN THE FILE TO SEE IF IT IS THERE	$COMPARE #0,STS,R0	; DID THE OPEN SUCCEED	BGT	10$		;YES - THEN EVERYTHING O.K.	MOV	#Q1,R0		; OTHERWISE - PRINT ERROR MESSAGE	JMP	NOFILE;10$:	$CLOSE	R0		; CLOSE THE FILE	.PAGEQ2:	MOV	#$FLBUF,$FLPTR	; POINT TO THE STRING BASE	ADD	$TSTSZ,$FLPTR	; UPDATE THE STRING BUFFER AREA POINTER	MOV	#$FLETB,$FLETF	; POINT TO THE FIRST FREE ENTRY IN FILE TABLEQ2A:	MOV	#6,R2		;SET NAME TO BLANKS	MOV	$FLETF,R110$:	MOVB	#' ,(R1)+	SOB	R2,10$;;	Ask the 'L      ogical file name' question.	SPEAK	#P2,#PL2,#D2,#DL2,#-1,#H2,#HL2,RES,RESL,RT,Q1,EX,ER	CMP	#4.,RESL	; COULD IT BE 'DONE'?	BNE	30$		; NO CHANCE	MOV	RES,R0		; POINT TO THE STRING	CMPB	#'D,(R0)+	; COULD IT BE 'DONE'?	BNE	30$		; NO CHANCE	CMPB	#'O,(R0)+	; COULD IT BE 'DONE'?	BNE	30$		; NO CHANCE	CMPB	#'N,(R0)+	;	BNE	30$	CMPB	#'E,(R0)	BNE	30$	JMP	Q4		; 'DONE' WAS THE RESPONSE30$:	CMP	#6,RESL		; CAN ONLY BE UP TO 6 CHARACTERS	BHIS	40$		; IT IS OK	MOV	#Q2A,R0		; SET UP TO RETURN FROM THE ERROR REPORT	JMP	TOLONG		;       REPORT THE ERROR40$:	MOV	RES,R0		; POINT TO THE STRING	MOV	$FLETF,R1	; POINT TO WHERE IT IS SUPPOSED TO GO	MOV	RESL,R2		; LENGTH TO TRANSFER45$:	CMPB	#60,(R0)	; NUMERIC?	BLOS	46$		; MIGHT BE47$:	MOV	#Q2A,R0		; SET UP FOR RETURN FROM ERROR REPORT	JMP	NALPHA		; REPORT THE 'NOT ALPHANUMERIC' ERROR46$:	CMPB	#72,(R0)	; NUMERIC?	BHI	49$		; YES	CMPB	#100,(R0)	; ALPHA?	BHI	47$		; NO, SO ITS INVALID	CMPB	#133,(R0)	; ALPHA?	BLOS	47$		; NO, SO ITS INVALID49$:	MOVB	(R0)+,(R1)+	; TRANSFER	SOB	R2,45$		; UNTIL DONE	.PAGEQ      3:;	Ask the 'File specification' question.	SPEAK	#P3,#PL3,#ND,#NDL,#-1,#H3,#HL3,RES,RESL,RT,Q2A,EX,ER	MOV	RES,R0		; POINT TO THE RESPONSE	MOV	$FLPTR,R1	; POINT TO WHERE IT IS SUPPOSED TO GO	MOV	RESL,R2		; THIS IS THE LENGTH OF THE STRING	CMP	#33.,R2		; IS THE STRING TOO LONG	BHIS	50$		; NOT TOO LONG55$:	MOV	#Q3,R0		; RETURN FROM ERROR REPORT	JMP	BADFIL		; REPORT THE BAD FILE STRING ERROR50$:	TST	R2		; NO RESPONSE	BNE	52$		; NOPE	MOV	#Q3,R0		; RETURN FROM ERROR REPORT	JMP	NODEFL		; REPORT TI52$:	MOVB	(R0)+,(      R1)+	; TRANSFER	SOB	R2,50$		; UNTIL DONE	MOV	$FLPTR,R0	; POINT TO ALLEGED FILE STRING	MOV	RESL,R1		; SET UP THE LENGTH	CALL	VALID		; SEE IF ITS A VALID FILE STRING	BCS	55$		; NOPE	CALL	FILENT		; ENTER FILE IN TABLE	BCS	Q4		; CONTINUE IF NO MORE SAPCE	JMP	Q2A		; ASK AGAIN	.PAGEQ4:	MOV	#$LDFAB,R0	; POINT TO THE LOGGING DEVICE FAB	$COMPARE	#0,IFI,R0	BEQ	60$		; THE LOGGING DEVICE HAS NOT BEEN OPENED	$CLOSE	R0		; CLOSE THE LOGGING DEVICE FILE	$ERASE	R0		; DELETE THE FILE60$:;	Ask the 'Logging device' question.	S      PEAK	#P4,#PL4,#D4,#DL4,#-1,#H4,#HL4,RES,RESL,RT,Q2,EX,ER	MOV	RES,R0		; POINT TO THE STRING	MOV	#$LDSTR,R1	; POINT TO WHERE THE STRING IS TO GO	MOV	RESL,R2		; SET UP THE LENGTH OF THE STRING	CMP	#33.,R2		; SEE IF IT IS BAD ALREADY	BHIS	65$		; ITS OK62$:	MOV	#Q4,R0		; SET UP RETURN FROM ERROR REPORT	JMP	BADFIL		; REPORT THE 'BAD FILE STRING ERROR65$:	MOVB	(R0)+,(R1)+	; TRANSFER	SOB	R2,65$		; UNTIL DONE	MOV	#$LDSTR,R0	; POINT TO THE FILE STRING	MOV	RESL,R1		; GET THE LENGTH	CALL	VALID		; SEE IF ITS A VALID FIL      E STRIGN	BCS	62$		; IT WASN'T	MOV	#$LDFAB,R0	; POINT TO THE FAB	$STORE	#$LDSTR,FNA,R0	; POINT TO THE FILE STRING	$STORE	RESL,FNS,R0	; SET UP THE SIZE OF THE FILE STRING	$CREATE	R0	; OPEN IT	$COMPARE	#0,STS,R0 ;OPERATION SUCCESSFUL?	BGT	Q5		;YES - CONTINUELDERR:	MOV	#Q4,R0		; SET UP RETURN FROM THE ERROR REPORT	MOV	#$LDFAB,R1	; POINT TO THE FAB	$COMPARE	#ER$PRV,STS,R1	BNE	70$		; NOT A PRIVILEGE VIOLATION	JMP	PRIVER		; REPORT THE PRIVILEGE ERROR70$:	JMP	NOOPEN		; GENERIC 'CAN'T OPEN FILE' ERROR	.PAGEQ5:	MOV	#      $MFFAB,R0	; POINT TO THE MESSAGE FILE FAB	$COMPARE	#0,IFI,R0	BEQ	75$		; THE MESSAGE FILE HAS NOT BEEN OPENED	$CLOSE	R0		; CLOSE IT75$:;	Ask the 'Message file' question.	SPEAK	#P5,#PL5,#ND,#NDL,#-1,#H5,#HL5,RES,RESL,RT,Q4,EX,ER	MOV	RES,R0		; POINT TO THE STRING	MOV	#$MFSTR,R1	; POINT TO WHERE THE STRING IS TO GO	MOV	RESL,R2		; LENGTH OF STRING	CMP	#33.,R2		; STRING TOO LONG	BHIS	80$		; NOPE77$:	MOV	#Q5,R0		; SET UP RETURN FROM ERROR REPORT	JMP	BADFIL		; REPORT THE ERROR80$:	TST	R2		; NO RESPONSE?	BNE	82$		;       NOPE	MOV	#Q5,R0		; RETURN FROM ERROR REPORT	JMP	NODEFL		; REPORT IT82$:	MOVB	(R0)+,(R1)+	; TRANSFER	SOB	R2,80$		; UNTIL DONE	MOV	#$MFSTR,R0	; POINT TO THE STRING	MOV	RESL,R1		; LENGTH OF STRING	CALL	VALID		; SEE IF ITS VALID	BCS	77$		; NOPE	MOV	#$MFFAB,R0	; POINT TO THE FAB	$STORE	#$MFSTR,FNA,R0	; STORE THE STRING ADDRESS	$STORE	RESL,FNS,R0	; STORE THE STRING LENGTH	$OPEN	R0	; OPEN THE MESSAGE FILE	$COMPARE	#0,STS,R0	BGT	Q6		;CONTINUE IF OPERATION SUCCEEDEDMFERR:	MOV	#Q5,R0		; SET UP RETURN FROM THE ERROR R      EPORT	MOV	#$MFFAB,R1	; POINT TO THE FAB	$COMPARE	#ER$PRV,STS,R1	BNE	85$		; NOT A PRIVILEGED ERROR	JMP	PRIVER		; REPORT THE PRIVILEGE ERROR85$:	$COMPARE	#ER$FNF,STS,R1	BNE	90$		; NOT A 'FILE NOT FOUND' ERROR	JMP	NOFILE		; REPORT THE 'FILE NOT FOUND' ERROR90$:	JMP	NOOPEN		; GENERIC 'CAN'T OPEN FILE ERROR	.PAGEQ6:	MOV	#$WFFAB,R0	; POINT TO THE WORKSPACE FILE FAB	$COMPARE	#0,IFI,R0	BEQ	95$		; THE WORKSPACE FILE HAS NOT BEEN OPENED	$CLOSE	R0		; CLOSE IT95$:;	Ask the 'Workspace file' question.	SPEAK	#P6,#PL6,#D6,      #DL6,#-1,#H6,#HL6,RES,RESL,RT,Q5,EX,ER	;LBB001	CLRB	$NOWF		; INITIALIZE - 'NONE' NOT SELECTED	;LBB001	MOV	RES,R0		; POINT TO THE STRING	MOV	#$WFSTR,R1	; POINT TO WHERE THE STRING IS TO GO	MOV	RESL,R2		; LENGTH OF STRING	CMP	#33.,R2		; STRING TOO LONG	BHIS	100$		; NOPE102$:	MOV	#Q6,R0		; SET UP RETURN FROM ERROR REPORT	JMP	BADFIL		; REPORT THE ERROR100$:	CMP	#4.,RESL	; COULD IT BE 'NONE'?			;LBB001	BNE	105$		; NO CHANCE				;LBB001	CMPB	#'N,(R0)+	; COULD IT BE 'NONE'?			;LBB001	BNE	104$		; NO CHANCE				;LBB00      1	CMPB	#'O,(R0)+	; COULD IT BE 'NONE'?			;LBB001	BNE	104$		; NO CHANCE				;LBB001	CMPB	#'N,(R0)+	;					;LBB001	BNE	104$							;LBB001	CMPB	#'E,(R0)						;LBB001	BNE	104$							;LBB001	INCB	$NOWF		; 'NONE' WAS THE RESPONSE		;LBB001	RETURN								;LBB001104$:									;LBB001	MOV	RES,R0		; RESET POINTER TO STRING		;LBB001105$:	MOVB	(R0)+,(R1)+	; TRANSFER	SOB	R2,100$		; UNTIL DONE	MOV	#$WFSTR,R0	; POINT TO THE STRING	MOV	RESL,R1		; LENGTH OF STRING	CALL	VALID		; SEE IF ITS VALID	BCS	102$		; NOPE	MOV	#$WFFAB,R0	      ; POINT TO THE FAB	$STORE	#$WFSTR,FNA,R0	; STORE THE STRING ADDRESS	$STORE	RESL,FNS,R0	; STORE THE STRING LENGTH	$OPEN	R0	; OPEN THE WORKSPACE FILE	$COMPARE	#0,STS,R0	BGT	DONEWFERR:	MOV	#Q6,R0		; SET UP RETURN FROM THE ERROR REPORT	MOV	#$WFFAB,R1	; POINT TO THE FAB	$COMPARE	#ER$PRV,STS,R1	BNE	110$		; NOT A PRIVILEGED ERROR	JMP	PRIVER		; REPORT THE PRIVILEGE ERROR110$:	$COMPARE	#ER$FNF,STS,R1	BNE	120$		; NOT A 'FILE NOT FOUND' ERROR	JMP	NOFILE		; REPORT THE 'FILE NOT FOUND' ERROR120$:	JMP	NOOPEN		; GENERIC '      CAN'T OPEN FILE ERRORDONE:	RETURN			; GO BACK TO WHO CALLED YOUEX:	TST	(SP)+		; CLEAR STACK FROM THE CALL TO US	MOV	#$LDFAB,R0	; POINT THE THE LOGGING FILE	$COMPARE	#0,IFI,R0	BEQ	200$		; NOT OPEN	$CLOSE	R0		; CLOSE IT200$:	MOV	#$MFFAB,R0	; POINT TO THE MESSAGE FILE FAB	$COMPARE	#0,IFI,R0	BEQ	210$		; NOT OPEN	$CLOSE  R0		; CLOSE IT210$:	MOV	#$WFFAB,R0	; POINT TO THE WORDSPACE FILE FAB	$COMPARE	#0,IFI,R0	BEQ	220$		; NOT OPEN	$CLOSE	R0		; CLOSE IT220$:	EXST$S	#EX$SUC		; EXIT WITH SUCCESS STATUSER:	BR	EX		; THI      S SHOULD NOT OCCURBADFIL:	MOV	#ER.BDF,HELP+Q.IOPL				; SET UP THE ERROR MESSAGE	MOV	#EL.BDF,HELP+Q.IOPL+2				; SET UP THE LENGTH OF THE ERROR MESSAGE	BR	ERRPRT		; PRINT ITTOLONG:	MOV	#ER.TOL,HELP+Q.IOPL	MOV	#EL.TOL,HELP+Q.IOPL+2	BR	ERRPRTNALPHA:	MOV	#ER.NAL,HELP+Q.IOPL	MOV	#EL.NAL,HELP+Q.IOPL+2	BR	ERRPRTNOFILE:	MOV	#ER.FNF,HELP+Q.IOPL	MOV	#EL.FNF,HELP+Q.IOPL+2	BR	ERRPRTPRIVER:	MOV	#ER.PRV,HELP+Q.IOPL	MOV	#EL.PRV,HELP+Q.IOPL+2	BR	ERRPRTNOOPEN:	MOV	#ER.NOP,HELP+Q.IOPL	MOV	#EL.NOP,HELP+Q.IOPL+2	BR	ERRPRTNODEFL      :	MOV	#ER.NDF,HELP+Q.IOPL	MOV	#EL.NDF,HELP+Q.IOPL+2	BR	ERRPRTERRPRT:	DIR$	#BLANK	DIR$	#HELP	DIR$	#BLANK	JMP	@R0		; PRINT A BLANK LINE, THE ERROR MESSAGE				; AND RETURN TO THE LOCATION POINTED TO BY R0;;;	THIS ROUTINE WILL ASK THE 'File specification' question;;	INPUTS;;		R2	ADDRESS OF THE LOGICAL NAME;;	OUTPUTS;;;		R0	POINTS TO THE RESPONSE FILE STRING;		R1	CONTAINS THE LENGTH OF THE RESPONSE FILE STRING;Q7::	MOV	#P7V,R1		; POINT TO THE VARIABLE PART OF THE PROMPT	MOV	#6,R4		;MOVE 6 CHARACTERS	MOV	$FLETF,R      0	;POINT AT FREE ENTRY IN FILE TABLE;10$:	MOVB	(R2),(R1)+	;MOVE THE NAME	MOVB	(R2)+,(R0)+	;	SOB	R4,10$	SPEAK	#P7,#PL7,#ND,#NDL,#-1,#H3,#HL3,RES,RESL,RT,Q7,$EX,$EX	MOV	RES,R0		; POINT TO THE STRING	MOV	RESL,R1		; LENGTH OF THE STRING	CMP	#33.,R1		; TOO LONG?	BHIS	150$		; NOPE140$:	MOV	#Q7,R0		; SET UP RETURN AFTER ERROR REPORT	JMP	BADFIL		; REPORT THE 'Bad file string' ERROR150$:	TST	R1		; NO RESPONSE?	BNE	155$		; RESPONSE	MOV	#Q7,R0		; SET UP RETURN AFTER ERROR REPORT	JMP	NODEFL		; REPORT THE ERROR155$:	MOV      	$FLPTR,R4	;MOVE THE FILE STRING	MOV	R1,R5		160$:	MOVB	(R0)+,(R4)+	SOB	R5,160$;	MOV	RES,R0		;RESTORE THE POINTER	CALL	VALID		; SEE IF IT IS A VALID FILE STRING	BCS	140$		; IT WASN'T	CALL	FILENT	RETURN			; IT WAS SO RETURN.PAGE;;	ENTER FILE SPECIFICATION IN THE FILE TABLE;FILENT:	CMP	$FLETF,#$FLETE	; HAVE WE DONE ALL OF THEM?	SEC			; ASSUME SO	BEQ	10$		; YES	MOV	$FLETF,R0	; POINT TO THE PRESENT FILE TABLE ENTRY	MOV	$FLPTR,F.PNAM(R0)	; SET UP POINTER TO THE FILE STRING	MOV	RESL,F.PSZE(R0)	; SET UP LENGTH OF T   è   HE FILE STRING	CLR	F.ID(R0)	; RESET BUFFER REGION ID	CLR	F.IFI(R0)	; RESET IFI INDICATOR	ADD	RESL,$FLPTR	; UPDATE THE FILE STRING BUFFER POINTER	ADD	#FTBSZ,$FLETF	; POINT TO THE NEXT FREE FILE TABLE ENTRY	CLC10$:	RETURN	.END	DBULOG è          ´‰à8kQÁ› 8$        	.TITLE	VALID	.IDENT	"V1.1A4"						;LBB003;;                         COPYRIGHT (C) 1979 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.;;;; MODULE:	VALID;; VERSION:	V01.01A4;; AUTHOR:	MIKE GARRY;		LEE BARTON;; DATE:		22-MAY-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		----      -------;	V1.1A4	22-MAY-79	LBB		SPR T226789 - LBB003;						INSTALL TST WITH EXPLICIT;						DEVICE NAME, "SY:" DEFAULT.;						HERE, MAKE SOME VARIABLES;						GLOBAL AND RESET DEVICE;						STRING LENGTH EACH TIME.;;;;;	FILENAME VALIDATION ROUTINE;;;;+; **-VALID-FILE SPECIFICATION VALIDATION ROUTINE;; INPUTS;;	R0	POINTS TO THE ALLEGED FILE STRING;	R1	CONTAINS THE LENGTH OF THE FILE STRING;; OUTPUTS;;	CARRY SET IF ERROR;	CARRY CLEAR IF FILE STRING WAS VALID;;-	.LIST MEB	.MCALL CSI$,CSI$1,CSI$2	;WE NEED THESE MAC      ROS FOR THE VALIDITY SCANS	CSI$	DEF$G		;SET UP THE CONTROL BLOCK		;LBB003	.EVENCSIBLK::.BLKB	C.SIZE		;ALLOCATE THE CONTROL BLOCK		;LBB003	.EVENSTRING:	.WORD			;POINTER TO THE STRINGLENGTH:	.WORD			;LENGTH OF STRINGVALID::	CLR	<CSIBLK+C.DEVD>	;CLEAR DEVICE STRING LENGTH		;LBB003	MOV	R0,STRING	;SET UP THE POINTER TO THE STRING	MOV	R1,LENGTH	;SET UP THE LENGTH OF THE STRING	CSI$1	#CSIBLK,STRING,LENGTH				;CALL THE SYNTAX SCANNER	BCS	80$		;IF IT ERRED	CSI$2	#CSIBLK,OUTPUT	;CALL THE ACTUAL PARSER80$:	RETURN	.END          œ	}`“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	AUTOQU					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	15-APR-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	V1.1/2	8-JUN-79  LBB	Changes to make AUTOSIZE remem-	&	!				ber the user's answer to the	&	!				DZ questions.			&	!				Stmt. 3050. SPR T205275		&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G       R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	12		Dialog file				&	!	13		Terminal I/O				&	!								&	!***************************************************************&400	!$*****      *********************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ASK.CVT$		string response from dialog	&	!				  function			&	!	ASK.NUM%		integer response from dialog	&	!				  function			&	!	ASK.RANGE()		limits size of dialgo response	&	!	DEFAULT$		default value for dialog	&	!				  questions			&	!	I%			pointer into assignment table	&	!      	K%			temporary index			&	!	MAX.TERM%		max # support environment	&	!				  terminals allowed		&	!	REGION%()		Region descriptor block for	&	!				  common region			&	!	S%			TWV				&	!	SUBSTITUTE.TEXT$()	substitution array from dialog	&	!				  function			&	!	T%			TWV				&	!	T1%			TWV				&	!	T2%			TWV				&	!	TEMP%			TWV				&	!	TEMP%()			temporary array			&	!	WINDOW%()		window description block for	&	!				  common region			&	!								&	!***************************************************************&700	!$******      ********************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!	4000		Prints out # of a device which are present&	!	4025		DL error message			&	!	4050		Clock error message			&	!	4075		Tape error message			&	!								&	!								&	!***************************************************************&750	!*************************************      **************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	25000	FN.ASK%		Sysgen dialog function		&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!*************      **************************************************&	!								&	!	Note that much gets appended in here			&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!******************      *********************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1001	\ A%= FN.SETUP.DIALOGUE%					&	!								&	!	Initialize the Dialog function				&1700	!$******************************************************      ********&	!                                                               &	!                                                               &	! 	CREATE THE REGION					&	!                                                               &	!                                                               &	!***************************************************************&	!								&1701	\ REGION%(1%)= 128%						&	\ REGION%(2%)= 4%						&	\ REGION%(3%)= 4%						&	\ REGION%(4%)= 0%						&	\ REGION%(5%)= 0%						&	\ R      EGION%(6%)= 128%+32%+8%+4%+2%+1%				&	\ CALL CRRG BY REF (REGION%(),DIRECTIVE.ERROR%)			&	\ GO TO 1890	IF DIRECTIVE.ERROR% <> 1%			&	\ GO TO 1805							&	!								&	!	For testing purposes, create the region			&	!	BEWARE, the region codes documented in V3 M manuals	&	!	is incorrect						&1805	\ WINDOW%(0%)= 7%						&	\ WINDOW%(0%)= SWAP%(WINDOW%(0%))				&	\ WINDOW%(2%)= 128%						&	\ WINDOW%(3%)= REGION%(0%)					&	\ WINDOW%(4%)= 0%						&	\ WINDOW%(5%)= 0%						&	\ WINDOW%(6%)= 256%+128%+2%					&1806	\ CALL       CRAW BY REF (WINDOW%(), DIRECTIVE.ERROR%)		&	\ GO TO 1891	IF DIRECTIVE.ERROR% <> 1%			&	\ GO TO 1895							&	!								&	!	Map window to MAP region				&	!	APR 6 is used for the mapping				&1890	\ PRINT "? FATAL error in the CREATE region directive."		&	\ GO TO 32000							&	!								&1891	\ PRINT "? FATAL error in the MAP directive."			&	\ GO TO 32000							&	!								&1892	\ PRINT "? FATAL error in the DETACH directive."		&	\ GO TO 32000							&	!								&	!	Error messages for PLAS directives			&1895	\ A%=       A%							&	\ LONG.FORM%= AUTO.LONG.FORM%					&	\ CALL EXITS2 (1%,0%)		IF FIELD.SERVICE%= 1%		&	!								&	!	Set long prompts					&	!	Skip this module if F/S version				&2000	!***************************************************************&	!								&	!								&	!	ESCAPE from dialog					&	!								&	!								&	!***************************************************************&	!								&	!	ESCAPEing in the normal fashion is to convoluted here	&	!	All ESCAPEs come here to re-start			&2500	\ DEFAULT$= NUM1$(TAB      .HERTZ%)					&	\ DEFAULT$= "60"	IF TAB.HERTZ%= 0%			&	\ ON FN.ASK%(160%,DEFAULT$,"/50/60",FALSE%,1%)			&		GO TO 2000, 32200, 2550, 2550				&	!								&	!	Line frequency question					&2550	\ TAB.HERTZ%= VAL(ASK.CVT$)					&	!								&	!	Store line frequency 					&3000	!$**************************************************************&	!                                                               &	!                                                               &	! 	SPECIAL PRINTER QUESTION				&	!                                                                     &	!                                                               &	!***************************************************************&	!								&	\ I%= 8%							&	\ GO TO 3050	IF I% <> 8% OR NO.OF.DEVICES%(I%)= 0%		&	\ GOSUB	4000							&	\ TEMP%= 0%							&	!								&	\ FOR K%= 1% TO NO.OF.DEVICES%(I%)				&		!							&		\ SUBSTITUTE.TEXT$(3%)= NUM1$(K%-1%)			&		\ A%= SPECIAL2%(I%) AND 2%**(K%-1%)			&		\ DEFAULT$= "NO"					&		\ DEFAULT$= "YES"	IF A% <> 0%			&	      	!							&		\ ON FN.ASK%(190%,DEFAULT$,"Y",FALSE%,3%)		&			GO TO 2000, 32200, 3010	, 3020			&		!							&		!	Is line printer an LA180			&3010		\ TEMP%(K%-1%)= 1%					&		\ GO TO 3030						&		!							&		!	Yes						&3020		\ TEMP%(K%-1%)= 0%					&		\ GO TO 3030						&		!							&		!	No						&3030		\ TEMP%= TEMP% + TEMP%(K%-1%)*2%**(K%-1%)		&		!							&	\ NEXT K%							&	\ SPECIAL2%(I%)= TEMP%						&	!								&	!	Loop through all possible printers			&3050	!$********************************************************      ******&	!                                                               &	!                                                               &	! 	DZ11 QUESTION						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ I%= 11%							&	\ IF NO.OF.DEVICES%(I%) = 0%					!V1.1/2&	  THEN								!V1.1/2&		  SPECIAL0%(I%) = 0%					!V1.1/2&		\ SPECIAL1%(I%) = 0%      					!V1.1/2&		\ SPECIAL2%(I%) = 0%					!V1.1/2&		\ SPECIAL3%(I%) = 0%					!V1.1/2&		\ SPECIAL4%(I%) = 0%					!V1.1/2&		\ GO TO 3150						!V1.1/2&	  ELSE								!V1.1/2&		  GOSUB	4000						&	!								&	!	If there are no DZs.					 V1.1/2&	!	then							 V1.1/2&	!		clear special arrays				 V1.1/2&	!		and skip out;					 V1.1/2&	!	otherwise						 V1.1/2&	!		print line telling user how many DZs he has.	 V1.1/2&	!								&3055	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= NO.OF.DEVICES%(I%)				&	\ DEFAULT$= NUM1$(NO.OF      .DEVICES%(I%))				&	\ DEFAULT$ = NUM1$(SPECIAL4%(I%)) IF SPECIAL4%(I%) > -1%	!V1.1/2&	\ ON FN.ASK% (195%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 2000, 32200, 3060					&	!								&	!	Determine # of DZ in A.E.				&	!	Set default to previous answer if he has already	 V1.1/2&	!	  been asked this question.				 V1.1/2&3060	\ SPECIAL4%(I%)= ASK.NUM%					&	\ T% = NO.OF.DEVICES%(I%)- SPECIAL4%(I%) 			!V1.1/2&	\ SPECIAL0%(I%) = T% 	IF SPECIAL0%(I%) < 0%			!V1.1/2&				OR SPECIAL0%(I%) > T%			!V1.1/2&	\ IF SPECIAL0%(I%) = 0%      						!V1.1/2&	  THEN								!V1.1/2&		  SPECIAL2%(I%) = 0%					!V1.1/2&		\ SPECIAL3%(I%) = 0%					!V1.1/2&		\ GO TO 3150						!V1.1/2&	!								 V1.1/2&	!	Store specified number of DZs in A.E.			 V1.1/2&	!	Calculate how many DZs are left for S.E.		 V1.1/2&	!	The number of DZs left over will be the default		 V1.1/2&	!	  if the number of S.E. DZs has not yet been specified	 V1.1/2&	!	  or if the number the user previously specified is too	 V1.1/2&	!	   high.						 V1.1/2&	!	If all DZs are in the A.E.				 V1.      1/2&	!	  then							 V1.1/2&	!		clear the other S.E. DZ variables		 V1.1/2&	!		and skip to next device type.			 V1.1/2&3065	\ ASK.RANGE(0)= 0						&	\ MAX.TERM%= 9%							&	\ MAX.TERM%= 17%	IF AUTO.DEV.SYS%<> 0%			&	\ T%= NO.OF.DEVICES%(6%) + NO.OF.DEVICES%(7%)			&	\ S%= (MAX.TERM%-T%+7%)/8%					&	\ S%= -S%	IF S% < 0%					&	\ ASK.RANGE(1)= S%						&	\ ASK.RANGE(1)= 15		IF HOME.BASE%= 1%		&	\ SPECIAL0%(I%) = ASK.RANGE(1)	IF SPECIAL0%(I%) > ASK.RANGE(1)	!V1.1/2&	\ DEFAULT$= NUM1$(SPECIAL0%(I%) )				&	!							      	&	!	Determine default and range				&	!	Make sure that default does not exceed maximum allowed.	 V1.1/2&	!								&	\ ON FN.ASK%(192%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 2000, 32200, 3070					&	!								&	!	# of DZs in S.E.					&3070	\ SPECIAL0%(I%)= ASK.NUM%					&	\ IF SPECIAL0%(I%) = 0%						!V1.1/2&	  THEN								!V1.1/2&		  SPECIAL2%(I%) = 0%					!V1.1/2&		\ SPECIAL3%(I%) = 0%					!V1.1/2&		\ GO TO 3150						!V1.1/2&	!								&	!	Accept the updated response				&	!	If there are no DZs in the S.E.				 V1.1/      2&	!	  then							 V1.1/2&	!		clear the other S.E. DZ variables		 V1.1/2&	!		and skip to next device type.			 V1.1/2&3080	\ DEFAULT$= "NO"						&	\ DEFAULT$= "YES"	IF SPECIAL1%(I%) <> 0%			&	\ ON FN.ASK%(168%,DEFAULT$,"Y",FALSE%,3%)			&		GO TO 2000, 32200, 3100, 3082				&	!								&	!	Does he need modem support				&3082	\ SPECIAL1%(I%)= 0%						&	\ GO TO 3120							&	!								&	!	No							&3100	\ DEFAULT$= NUM1$(SPECIAL1%(I%) )				&	\ DEFAULT$= "300"	IF DEFAULT$= "0"			&	!								&	\ ON FN.ASK%(191%,DEFAULT      $,"I",FALSE%,3%)			&		GO TO 2000, 32200, 3110					&	!								&	!	S.E. DZ baud rate					&3110	\ GO TO 3115	UNLESS ASK.NUM%= 110% OR ASK.NUM%= 150% OR 	&				ASK.NUM%= 300%				&	\ SPECIAL1%(I%)= ASK.NUM%					&	\ GO TO 3120							&	!								&	!	Accept the updated response				&3115	\ PRINT "% Your response is not an acceptable baud rate."	&	\ GO TO 3100							&	!								&	!	Print error message if bad baud rate and try again	&3120	\ FOR L%= 1% TO SPECIAL0%(I%)					&		\ ASK.RANGE(0)= 0					&		\ ASK.RANGE(1)= 8				      	&		\ DEFAULT$ = NUM1$(SPECIAL2%(I%)) IF L% = 1%		!V1.1/2&		\ DEFAULT$ = NUM1$(SPECIAL2%(I%)) IF L% = 2%		!V1.1/2&		\ DEFAULT$ = "8" IF DEFAULT$ = "0"			!V1.1/2&		\ SUBSTITUTE.TEXT$(1)= "first "				&		\ SUBSTITUTE.TEXT$(1)= "second "	IF L% > 1%	&		!							&		\ ON FN.ASK%(223%,DEFAULT$,"I",TRUE%,3%)		!V1.1/2&			GO TO 2000, 32200, 3125				&	!								&	!	For each S.E. DZ,					 V1.1/2&	!		set range of permissible answers,		 V1.1/2&	!		set default ( = his previous answer if he has	 V1.1/2&	!		  already gone thro      ugh the dialogue once)	 V1.1/2&	!		Determine # of terminals on SE DZ units		&3125		\ SPECIAL2%(I%)= ASK.NUM%	IF L%= 1%		&		\ SPECIAL3%(I%)= ASK.NUM%	IF L%= 2%		&	\ NEXT L%							&	!								&	!	Store responses						&3150	!$**************************************************************&	!                                                               &	!                                                               &	! 	DUP QUESTION						&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	!								&	\ I%= 10%							&	\ IF NO.OF.DEVICES%(I%)= 0%					!V1.1/2&	  THEN								!V1.1/2&		  SPECIAL0%(I%) = 0%					!V1.1/2&		\ SPECIAL1%(I%) = 0%					!V1.1/2&		\ SPECIAL2%(I%) = 0%					!V1.1/2&		\ GO TO 3200						!V1.1/2&	  ELSE								!V1.1/2&		  GOSUB	4000						!V1.1/2&	!								&	!	If there are no DUPs					 V1.1/2&	!	then							 V1.1/2&	!		clear special arrays				       V1.1/2&	!		and skip out					 V1.1/2&	!	otherwise						 V1.1/2&	!		print line telling user how many DUPs he has.	 V1.1/2&3155	\ T%= NO.OF.DEVICES%(I%)					&	\ DEFAULT$= NUM1$(T%)						&	\ DEFAULT$ = NUM1$(SPECIAL1%(I%)) IF SPECIAL1%(I%) > -1%	!V1.1/2&	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= T%						&	\ ON FN.ASK% (196%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 2000, 32200, 3160					&	!								&	!	Determine # of A.E. DUP					&	!	Set default to previous answer if he has already	 V1.1/2&	!	  been asked this question.      				 V1.1/2&3160	\ SPECIAL1%(I%)= ASK.NUM%					&	\ T1%= NO.OF.DEVICES%(I%) - ASK.NUM%				&	\ IF T1% = 0%							!V1.1/2&	  THEN								!V1.1/2&		  SPECIAL0%(I%) = 0%					!V1.1/2&		\ SPECIAL2%(I%) = 0%					!V1.1/2&		\ GO TO 3200						!V1.1/2&	!								 V1.1/2&	!	Store Number of DUPs in A.E. in special array.		 V1.1/2&	!	See how many DUPs are left.				 V1.1/2&	!	If none are left					 V1.1/2&	!	then							 V1.1/2&	!		there are no TRAX/3271 DUPs			 V1.1/2&	!		or TRAX/2780 DUPs				 V1.1/2&	!		skip to next device       type.			 V1.1/2&3165	\ DEFAULT$= NUM1$(T1%)						!V1.1/2&	\ DEFAULT$ = NUM1%(SPECIAL0%(I%)) IF SPECIAL0%(I%) > -1%	!V1.1/2&	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= T1%						&	\ ASK.RANGE(1)= 4	IF T1% > 4%				&	\ DEFAULT$ = "4"	IF T1% > 4%				!V1.1/2&	\ ON FN.ASK%(193%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 2000, 32200, 3170					&	!								&	!	Ask for number of DUPs in COMM region.			&	!	Set default to previous answer if he has already been	 V1.1/2&	!	  asked this question,					 V1.1/2&	!	  otherwise to the rema      ining number of DUPs.		 V1.1/2&	!	Allow a maximum of 4 DUPs for TRAX/3271 communications.	 V1.1/2&3170	\ SPECIAL0%(I%)= ASK.NUM%					&	!								&	!	Accept the user response				&3175	\ DEFAULT$ = T1% - SPECIAL0%(I%)				!V1.1/2&	\ DEFAULT$= NUM1$(SPECIAL2%(I%))	IF SPECIAL2%(I%) > -1%	!V1.1/2	&	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= T1% - SPECIAL0%(I%)				&	\ DEFAULT$ = "4" 			IF ASK.RANGE(1) > 4	!V1.1/2&	\ ASK.RANGE(1)= 4%			IF ASK.RANGE(1) > 4	&	\ SPECIAL2%(I%)= 0%						&	\ GO TO 3190				IF ASK.RANGE(1) <=       0	&	\ Q2780%= 198%							&	\ ON FN.ASK%(Q2780%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 2000, 32200, 3180					&	!								&	!	Ask for number of DUPS in 2780				&	!	Set default to previous user answer if he has already	 V1.1/2&	!	  been asked this question,				 V1.1/2&	!	  otherwise to the remaining number of DUPs.		 V1.1/2&	!	Allow a maximum of 4 DUPs for TRAX/2780.		 V1.1/2&3180	\ SPECIAL2%(I%)= ASK.NUM%					&	!								 V1.1/2&	!	Store the user response.				 V1.1/2&3190	\ TEMP%= 0%							&3200	!$****************      **********************************************&	!                                                               &	!                                                               &	! 	DMC QUESTION						&	!                                                               &	!                                                               &	!***************************************************************&	!								&	!								&3210	\ I%= 13%							&	\ TEMP%= 0%							&	\ TEMP1%= 0%							&	\ GO TO 3230	IF I% <> 13%	      OR NO.OF.DEVICES%(I%)= 0%	&	\ GOSUB	4000							&	\ FOR K%= 1% TO NO.OF.DEVICES%(I%)				&	\ T%= 4%**(K%-1%)						&		!							&		\ SUBSTITUTE.TEXT$(5)= NUM1$(K%-1%)			&		\ T1%= (SPECIAL1%(I%)/T%) AND 3%			&		\ T2%= (SPECIAL0%(I%)/T%) AND 3%			&		\ DEFAULT$= "Full-duplex"				&		!							&		\ ON FN.ASK% (194%,DEFAULT$,				&		   "/FULL-DUPLEX/PRIMARYHALF-DUPLEX/SECONDARYHALF-DUPLEX"&		    ,FALSE%,3%)						&			GO TO 2000, 32200, 3215, 3218, 3220		&		!							&		!	Branch on ESC, CTRL-Z, each of three responses	&3215	      	\ TEMP%= TEMP% + 1%*T% 	IF K% <= 7%			&		\ TEMP1%= TEMP1% + 1%*T% 	IF K% > 7%		&		\ GO TO 3225						&		!	Process full - duplex response			&3218		\ TEMP%= TEMP% + 2%*T%	IF K% <= 7%			&		\ TEMP1%= TEMP1% + 2%*T%	IF K% > 7%		&		\ GO TO 3225						&		!							&		!	Process primary half-duplex response		&3220		\ TEMP%= TEMP% + 3%*T%	IF K% <= 7%			&		\ TEMP1%= TEMP1% + 3%*T%	IF K% > 7%		&		\ GO TO 3225						&		!							&		!	Process secondary half-duplex response		&3225	\ NEXT K%							&	!								&	!	Loop through the       DMC devices				&3230	\ SPECIAL0%(I%)= TEMP%						&	\ SPECIAL1%(I%)= TEMP1%						&	!								&	!	Store final response and return				&3250	\ GO TO 6000							&4000	!$**************************************************************&	!                                                               &	!                                                               &	! 	COMMON PRINT ROUTINE FOR # OF DEVICES   & ERROR ROUTINES&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	\ PRINT								&	\ PRINT								&	\ PRINT "You have ";NUM1$(NO.OF.DEVICES%(I%));" ";		&			EDIT$(DEV.NAME$(I%),16%);" devices."		&	\ PRINT								&	\ RETURN							&	!								&	!	This routine tells the user what we found so that 	&	!	he can answer the questions more correctly		&4025	\ PRINT								&	\ PRINT "% You must have at least one DL11 unit!"		&	\ PRINT "We can't find any!"					&	\ PRIN      T "You must go through the device dialog later."		&	\ PRINT								&	\ FORCE.DIALOG%= 1%						&	\ RETURN							&	!								&	!	Error message if no DL units are found			&4050	\ PRINT								&	\ PRINT "% You must have at least one clock (line or prog)!"	&	\ PRINT "We can't find any!"					&	\ PRINT "You must go through the device dialog later."		&	\ PRINT								&	\ FORCE.DIALOG%= 1%						&	\ RETURN							&	!								&	!	Error message if no clock is found			&4075	\ PRINT								&	\ PRINT "% You may have at most       2 TU45/16 formatters."		&	\ PRINT "We have detected more than that number."		&	\ PRINT "You must go through the device dialog later."		&	\ PRINT								&	\ FORCE.DIALOG%= 1%						&	\ RETURN							&	!								&	!	Error message if too many tape formatters		&6000	\ A%= 0%							&7000	!$**************************************************************&	!                                                               &	!                                                               &	! 	CLEAN UP						&	!                                                                     &	!                                                               &	!***************************************************************&	!								&7001	\ CALL DTRG BY REF (REGION%(),DIRECTIVE.ERROR%)			&	\ GO TO 7050	IF DIRECTIVE.ERROR% <> 1%			&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Detach from the regions and exit with sucess		&7050	\ PRINT								&	\ PRINT "? FATAL error in DETACH region directive."		&	\ PRINT								&	\ CALL EXITS2 (2%,0%)						&	!				      				&	!	Error routine for DETACH directives			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!					      			&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&	!								&19900	\ PRINT								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ ON ERROR GO TO 0						&	!								&	!	Standard unexpected error trapping			&20000	!$*****************************************      *********************&	!								&	!								&	!	TPS LIBRARY SUB-ROUTINES				&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	\ CLOSE #T% 	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%,0%)						&	!								&	!	Unsuccessful exit					&32100	\ CL   Ê  OSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(1%,27%)						&	!								&	!	ESC exit						&32200	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%,26%)						&	!								&	!	CTRL-Z exit						&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ CALL EXITS2(2%,0%)						&	\ ENDÊ         œ	Ò`“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	AUTOSZ					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	15-APR-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$******************      ********************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	13		Terminal I/O				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DE      SCRIPTION			&	!	----			------------------------------  &	!								&	!	ARRAY%(,)		has all information on RH11/70	&	!				  devices			&	!	BAD.AUTO%		indicates a bad autosize%	&	!	CACHE.CELL%		indicates if a cache is present	&	!	CODEI%			drive unit type codes on RP11/70&	!				  controllers			&	!	COMMAND$		command line to breed with	&	!	CP.NUM%			# of card punches		&	!	CPU.TYPE%		34,60, or 70 - the cpu type	&	!	CR.NUM%			# of card readers		&	!	DC.NUM%			# of dc11 devices		&	!	DL.NUM%			# of dl11 units including	      &	!				  console			&	!	DM.NUM%			# of dm11 modem controllers	&	!	DR.NUM%			# of dr11 general unibus gadgets&	!	DV.NUM%			# of dv11 units			&	!	FLOATER%()		# of each floating gadget	&	!				(0) - # of DJ			&	!				(1) - # of DH			&	!				(2) - # of DQ			&	!				(3) - # of DU			&	!				(4) - # of DUP			&	!				(5) - # of LK			&	!				(6) - # of DMC			&	!				(7) - # of DZ			&	!				(8) - # of KMC			&	!				(9) - ?????			&	!				(10) - ?????			&	!	FORM%()			3 of formatters on each		&	!				  controller			&	!	FPP.CELL%		in      dicates if a floating point	&	!				  processor is present		&	!	I%			TWV				&	!	J%			TWV				&	!	JUNK%			a filler variable		&	!	K%			TWV				&	!	LINE.CLOCK.NUM%		indicates if a line clock is	&	!				  present			&	!	LP.NUM%			# of line printers		&	!	OTHER.DL.NUM%		# of dl11 a,b			&	!	PROG.CLOCK.NUM%		indicates if a programmable	&	!				  clock is present		&	!	REGION%()		region descriptor for region	&	!				  shared with autoco		&	!	REGION1%()		region descriptor for region	&	!				  shared with autoio		&	!	RETURN%		      	if set - ignore error in bred	&	!				  task				&	!	RH.TYPE%()		indicates what type each	&	!				  controller is			&	!	RK.NUM%()		# & nature of RK type drives	&	!	RM%()			# of RM type drives on each	&	!				  controller			&	!	RM02%()			# of rm02 drives on each	&	!				  controller			&	!	RM03%()			# of rm03 drives on each	&	!				  controller			&	!	RP%()			# of RP type drives on each	&	!				  controller			&	!	RP04%()			# of rp04 drives on each	&	!				  controller			&	!	RP05%()			# of rp05 drives on each	&	!				        controller			&	!	RP06%()			# of rp06 drives on each	&	!				  controller			&	!	SIZE.MEMORY		used in converting 32 word	&	!				  blocks to Kbytes		&	!	SIZE.MEMORY%		32 word block size of memory	&	!	SLAVE%()		# of slaves on each controller	&	!	SYSTEM.ID%		used to identify our own 11-70	&	!	T%			TWV				&	!	TASK$			task name to breed		&	!	TS.NUM%			# & nature of each TS03 drive	&	!	WINDOW%()		window descriptor for autoco	&	!				  region			&	!	WINDOW1%()		window descriptor for autoio	&	!				  region			&	!	XX.NUM      %			indicates # of xx type devices	&	!				  found for each floating CSR	&	!				  gadget			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	20001		Breed a task				&	!								&	!******************************************      *********************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!			      					&	!***************************************************************&	!								&	!	Note that much gets appended in here			&803	\ COM	(AUTO)		CPU.TYPE%,				&				SIZE.MEMORY%,				&				CACHE.CELL%,				&				FPP.CELL%,				&				LINE.CLOCK.NUM%,			&				PROG.CLOCK.NUM%,			&				LP.NUM%,				&				DL.NUM%,				&				DV.NUM%,				&				RK.NUM%(7%),				&				DM.NUM%,				&				DR.NUM%,				&				OTHER.DL.NUM%,				&				CR.NUM%,				&				CP.NUM%,				&				DC.NUM%,				&				ARRAY%(31,7),				&				RH.TYPE%(3),				&				FLOATER%(10),			      	&				TS.NUM%(7%),				&				SYSTEM.ID%,				&				JUNK%					&	!								&	!	Common area for the AUTOIO variables			&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***********      ****************************************************&902	\ DIM	SLAVE%(32)						&	!								&	!	Dimension statements for arrays larger than default size&1000	!$**************************************************************&	!                                                               &	!                                                               &	! 	CREATE AND/OR ATTACH THE SHARED COMMON REGION		&	!                                                               &	!                                                                     &	!***************************************************************&1200	!$**************************************************************&	!                                                               &	!                                                               &	! 	CREATE THE REGION SHARED WITH AUTOIO			&	!                                                               &	!                                                               &	!***************************************      ************************&	!								&	\ REGION1%(1%)= 128%						&	\ REGION1%(2%)= 1%*40%**2% + 21%*40% + 20%			&	\ REGION1%(3%)= 15%*40%**2% + 19%*40% + 26%			&	\ REGION1%(4%)= 0%						&	\ REGION1%(5%)= 0%						&	\ REGION1%(6%)= 128% + 32% + 8% + 4% + 2% + 1%			&	\ CALL CRRG BY REF (REGION1%(),DIRECTIVE.ERROR%)		&	\ GO TO 1300	IF DIRECTIVE.ERROR% <> 1%			&	!								&	!	Create the region used by AUTOIO			&1210	\ WINDOW1%(0%)= 6%						&	\ WINDOW1%(0%)= SWAP%(WINDOW1%(0%))				&	\ WINDOW1%(2%)= 128%						&	\ WIN      DOW1%(3%)= REGION1%(0%)					&	\ WINDOW1%(4%)= 0%						&	\ WINDOW1%(5%)= 0%						&	\ WINDOW1%(6%)= 256% + 128% + 2%				&	\ CALL CRAW BY REF (WINDOW1%(),DIRECTIVE.ERROR%)		&	\ GO TO 1310	IF DIRECTIVE.ERROR% <> 1%			&	!								&	!	Map that region with APR 6				&	!								&	\ GO TO 1700							&1300	\ PRINT								&	\ PRINT "? FATAL error in CREATE region directive at 1200!"	&	\ PRINT								&	\ GO TO 1320							&	!								&	!	Error message for failed directive - CREATE region	&1310	\ PRINT								&	\ PRINT "? F      ATAL error in MAP window directive at 1210!"	&	\ PRINT								&	\ GO TO 1320							&	!								&	!	Error message for failed directive - CRAW		&1320	\ CALL EXITS2(2%,0%)						&	!								&	!	Error exit						&1700	!$**************************************************************&	!                                                               &	!                                                               &	! 	CREATE THE REGION					&	!                                                               &	!                                                                     &	!***************************************************************&	!								&1701	\ REGION%(1%)= 128%						&	\ REGION%(2%)= 4%						&	\ REGION%(3%)= 4%						&	\ REGION%(4%)= 0%						&	\ REGION%(5%)= 0%						&	\ REGION%(6%)= 128%+32%+8%+4%+2%+1%				&	\ CALL CRRG BY REF (REGION%(),DIRECTIVE.ERROR%)			&	\ GO TO 1890	IF DIRECTIVE.ERROR% <> 1%			&	\ GO TO 1805							&	!								&	!	For testing purposes, create the region			&	!	BEWARE, the region codes documen      ted in V3 M manuals	&	!	is incorrect						&1805	\ WINDOW%(0%)= 7%						&	\ WINDOW%(0%)= SWAP%(WINDOW%(0%))				&	\ WINDOW%(2%)= 128%						&	\ WINDOW%(3%)= REGION%(0%)					&	\ WINDOW%(4%)= 0%						&	\ WINDOW%(5%)= 0%						&	\ WINDOW%(6%)= 256%+128%+2%					&	\ CALL CRAW BY REF (WINDOW%(), DIRECTIVE.ERROR%)		&	\ GO TO 1891	IF DIRECTIVE.ERROR% <> 1%			&	\ GO TO 1895							&	!								&	!	Map window to MAP region				&	!	APR 7 is used for the mapping				&1890	\ PRINT "? FATAL error in the CREATE region directive."	      	&	\ GO TO 32000							&	!								&1891	\ PRINT "? FATAL error in the MAP directive."			&	\ GO TO 32000							&	!								&1892	\ PRINT "? FATAL error in the DETACH directive."		&	\ GO TO 32000							&	!								&	!	Error messages for PLAS directives			&1895	\ A%= A%							&2000	!$**************************************************************&	!                                                               &	!                                                               &	! 	Main Line Code						&	!                                                                     &	!                                                               &	!***************************************************************&2001	\ FOR I%= 0% TO 31%						&	\ FOR J%= 0% TO 7%						&		\ ARRAY%(I%,J%)= 0%					&	\ NEXT J%							&	\ NEXT I%							&	!								&	\ FOR I%= 0% TO 10%						&		\ FLOATER%(I%)= 0%					&	\ NEXT I%							&	!								&	\ FOR I%= 0% TO 3%						&		\ RH.TYPE%(I%)= 0%					&	\ NEXT I%							&	!								&	\ FOR I%= 0% TO 7%						&		\ R      K.NUM%(I%)= 0%					&	\ NEXT I%							&	!								&	\ CPU.TYPE%,SIZE.MEMORY%,CACHE.CELL%,FPP.CELL%= 0%		&	\ KT11%,PARITY%= 0%						&	\ SYSTEM.ID%= 0%						&	\ LINE.CLOCK.NUM%,PROG.CLOCK.NUM%,DL.NUM%,TS.NUM%= 0%		&	\ DC.NUM%,LP.NUM%,DV.NUM%,RK.NUM%= 0%				&	\ DM.NUM%,DR.NUM%,OTHER.DL.NUM%,CR.NUM%,CP.NUM%= 0%		&	!								&	\ FOR I%= 0% TO 7%						&		\ TS.NUM%(I%),RK.NUM%(I%)= 0%				&	\ NEXT I%							&	!								&	!	A shared COMMON region initially has garbage in it.	&	!	Clear it.						&2005	\ CODE1%= 18%		!RP06       code				&	\ CODE2%= 17%		!RP05 code				&	\ CODE3%= 20%		!RM03 code				&	\ CODE4%= 9%		!TU16 formatter exists			&	\ CODE5%= 10%		!TU45 drive exists			&	\ CODE6%= 16%		!RP04 code				&	\ CODE7%= 21%		! RM02 CODE			&	\ CODE8%= 8%		!TU16 code				&	!								&	!	Define the type codes returned in the drive type registers&2006	\ FOR I%= 1% TO 4%						&		\ NO.OF.DEVICES%(I%)= 0%				&	\ NEXT I%							&	!								&	!	Make sure RH cont devices are initially marked not present&2050	!$*************************************      *************************&	!                                                               &	!                                                               &	! 	SPAWN THE AUTOSIZER					&	!                                                               &	!                                                               &	!***************************************************************&	!								&2052	\ CPU.TYPE%= TAB.CPU%						&	!								&	!	Specify CPU type					&2060	\ TASK$= "AUTOIO"						&	\ COMMAND$= "AUTO      IO"						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	\ BAD.AUTO%= 0%							&	\ BAD.AUTO%= 1%		IF SPAWN.ERROR% <> 1%			&	!								&2100	!$**************************************************************&	!                                                               &	!                                                               &	! 	PROCESS AUTOSIZER RESPONSES				&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	\ SIZE.MEMORY= SIZE.MEMORY%					&	\ TAB.SIZE= SIZE.MEMORY/32					&	\ TAB.SIZE%= TAB.SIZE						&	\ TAB.FPP%= 1%		IF FPP.CELL%= 0%			&	\ TAB.CACHE%= 1%	IF CACHE.CELL%= 0%			&	\ TAB.PARITY%= 1%						&	\ TAB.KT11%= 1%		IF TAB.CPU%= 70%			&	!								&	!	Process CPU options					&	!								&	\ HOME.BASE%= 0%						&	!								&	!	Is this the TRAX development system			&	!								&	\ DJ.NUM%= FLOATER%(0%)						&	\ DH.NUM%= FLOAT      ER%(1)						&	\ DQ.NUM%= FLOATER%(2)						&	\ DU.NUM%= FLOATER%(3)						&	\ DUP.NUM%= FLOATER%(4)						&	\ LK.NUM%= FLOATER%(5)						&	\ DMC.NUM%= FLOATER%(6)						&	\ DZ.NUM%= FLOATER%(7)						&	\ KMC.NUM%= FLOATER%(8)						&	!								&	!	Identify specific floating device numbers		&	!								&	\ GOSUB 4050	IF ((LINE.CLOCK.NUM%=0%) AND (PROG.CLOCK.NUM%=0%))&	\ NO.OF.DEVICES%(15%)= LINE.CLOCK.NUM%				&	\ NO.OF.DEVICES%(16%)= PROG.CLOCK.NUM%				&	!								&	!	Declare clocks which are present.			&	!	Error if n      o clock is present				&	!								&	\ GOSUB 4025	IF DL.NUM%= 0%					&	\ NO.OF.DEVICES%(6%)= 1%	IF DL.NUM% > 0%			&	\ NO.OF.DEVICES%(7%)= DL.NUM% - 1%	IF DL.NUM% > 0%		&	!								&	!	Identify the 2 types of DL devices			&	!	Error if no console DL					&	!								&	\ FOR I%= 0% TO 7%						&		\ TS.NUM%= TS.NUM% + 1%		IF TS.NUM%(I%) <> 0%	&		\ RK.NUM%= RK.NUM% + 1%		IF RK.NUM%(I%) <> 0%	&	\ NEXT I%							&	!								&	!	Determine TS03 & RK06/07 drives				&	!								&	\ NO.OF.DEVICES%(5%)= TS.NUM%					&	\ NO.OF.DEV      ICES%(8%)= LP.NUM%					&	\ NO.OF.DEVICES%(9%)= KMC.NUM%					&	\ NO.OF.DEVICES%(10%)= DUP.NUM%					&	\ NO.OF.DEVICES%(11%)= DZ.NUM%					&	\ NO.OF.DEVICES%(12%)= DV.NUM%					&	\ NO.OF.DEVICES%(13%)= DMC.NUM%					&	\ NO.OF.DEVICES%(14%)= RK.NUM%					&	\ NO.OF.DEVICES%(17%)= DJ.NUM%					&	\ NO.OF.DEVICES%(18%)= DH.NUM%					&	\ NO.OF.DEVICES%(19%)= DQ.NUM%					&	\ NO.OF.DEVICES%(20%)= DU.NUM%					&	\ NO.OF.DEVICES%(21%)= DR.NUM%					&	\ NO.OF.DEVICES%(22%)= OTHER.DL.NUM%				&	\ NO.OF.DEVICES%(23%)= DM.NUM%					&      	\ NO.OF.DEVICES%(25%)= DC.NUM%					&	\ NO.OF.DEVICES%(26%)= CR.NUM%					&	\ NO.OF.DEVICES%(27%)= CP.NUM%					&	!								&	!	Insert # of devices determined by AUTOIO into the 	&	!	assignment table					&2300	\ SPECIAL0%(14%)= 0%						&	\ FOR I%= 0% TO 7%						&		\ T%= 2%**(I%+1%)					&		\ SPECIAL0%(14%)= SPECIAL0%(14%) + T%			&			IF RK.NUM%(7%-I%) = 2%				&	\ NEXT I%							&	!								&	!	Store RK06/07 answers					&	!								&	\ FOR I%= 0% TO 31%						&	\ FOR J%= 0% TO 7%						&		\ ARRAY%(I%,J%)= ARRAY%(I%,J%      ) AND 31%			&	\ NEXT J%							&	\ NEXT I%							&	!								&	!	For RH70/11 controllers only,				&	!	strip response down to type code only			&	!	Note that this will strip off TM03 bit - 40)8		&	!								&	\ FOR K%= 0% TO 3%						&		\ RP05%(K%),RP06%(K%),RM03%(K%),RP%(K%),RP04%(K%)= 0%	&		\ RM02%(K%)= 0%						&		\ FORM%(K%),SLAVE1%(K%), SLAVE2%(K%)= 0%		&	\ NEXT K%							&	!								&	!	Clear out these fields - the guy might have backspaced	&	!	and so come here twice					&2310	\ FOR K%= 0% TO 3%						&	\ I%= K      %*8%							&	\ FOR J%= 0% TO 7%						&		\ GO TO 2312		IF RH.TYPE%(K%)= -1%		&		\ RP04%(K%)= RP04%(K%) + 1%	IF ARRAY%(I%,J%)= CODE6%&		\ RP06%(K%)= RP06%(K%) + 1%	IF ARRAY%(I%,J%)= CODE1%&		\ RP05%(K%)= RP05%(K%) + 1%	IF ARRAY%(I%,J%)= CODE2%&		\ RM03%(K%)= RM03%(K%) + 1%	IF ARRAY%(I%,J%)= CODE3%&		\ RM02%(K%)= RM02%(K%) + 1%	IF ARRAY%(I%,J%)= CODE7%&		\ RP%(K%)  = RP05%(K%) + RP06%(K%) + RP04%(K%)		&		\ RM%(K%)  = RM02%(K%) + RM03%(K%)			&2312	\ NEXT J%							&	\ NEXT K%							&	!								&	!	Only 8 disks ma      y be on a controller so check 1st row	&	!	Total up disk types					&2350	\ FOR I%= 0% TO 31%						&	\ K%= I%/8%							&	\ FOR J%= 0% TO 7%						&		\ GO TO 2355		IF RH.TYPE%(K%) > 0%		&		\ SLAVE%(I%)= SLAVE%(I%) + 1%				&			IF ((ARRAY%(I%,J%)> 8%) AND (ARRAY%(I%,J%) < 16%))&2355	\ NEXT J%							&	\ FORM%(K%)= FORM%(K%) + 1%	IF SLAVE%(I%) > 0%		&	\ NEXT I%							&	!								&	!	Determine the number of tape formatters and slaves	&2360	\ FOR I%= 0% TO 3%						&		\ GOSUB 4075	IF FORM%(I%) > 2%			&	\ NEXT I%							      &	!								&	!	Make sure # of formatters does not exceed the maximum	&2400	\ FOR I%= 0% TO 31%						&		\ K%= I%/8%						&		\ GO TO 2401			IF SLAVE%(I%) = 0%	&		\ SLAVE1%(K%)= SLAVE%(I%)	IF SLAVE2%(K%)> 0%	&		\ SLAVE2%(K%)= SLAVE%(I%)	IF SLAVE2%(K%)= 0%	&		\ SPECIAL2%(K% + 1%)= SLAVE2%(K%)*256% + SLAVE1%(K%)	&				IF SLAVE1%(K%) > 0%			&		\ SPECIAL2%(K%+1%)= SLAVE2%(K%)				&				IF SLAVE1%(K%) = 0%			&2401	\ NEXT I%							&	!								&	!	Compact tape data					&2500	\ FOR I%= 0% TO 3%						&		\ T%= RP06%(I%) + R      P05%(I%) + RM03%(I%) + RP04%(I%) 	&				+ RM02%(I%) + FORM%(I%)			&		\ NO.OF.DEVICES%(I%+1%)= T%				&	\ NEXT I%							&	!								&	!	Mark existing rh controllers as present			&	!								&	\ FOR I%= 0% TO 3%						&		\ SPECIAL0%(I%+1%)= 1%					&	IF ((RH.TYPE%(I%) > 0%) AND (0% <> (RP%(I%))))			&		!							&		\ SPECIAL0%(I%+1%)= 2%					&			IF RH.TYPE%(I%) < 0%				&		\ SPECIAL0%(I%+1%)= 3%					&	IF ((RH.TYPE%(I%) > 0%) AND (RM%(I%) > 0%) )			&		!							&	\ NEXT I%							&	!								&	!	Mark table entry with type o      f unit in that slot		&2510	\ FOR I%= 0% TO 3%						&		\ SPECIAL1%(I%+1%)= 0%					&		\ T%= 0%						&		\ GO TO 2511	IF SPECIAL0%(I%+1%) <> 1%		&		\ FOR J%= 0% TO 7%					&			\ T%= T% + 2%**(8%-J%)				&				IF ARRAY%(8%*I%,J%) = CODE1%		&		\ NEXT J%						&		\ SPECIAL1%(I%+1%)= T%					&2511	\ NEXT I%							&	!								&	!	For RP type disks, specify the RP05/06 configuration	&	!								&3000	!$**************************************************************&	!								&	!								&	!	Ask non-autosizable questions				&      	!								&	!								&	!***************************************************************&	!								&	\ TASK$= "...INS"						&	\ COMMAND$= "INS [1,54]AUTOQU/TASK=AUTOQU"			&	\ GOSUB 20001							&	!								&	\ TASK$= "AUTOQU"						&	\ COMMAND$= "AUTOQU"						&	\ RETURN%= 1%							&	\ GOSUB 20001		IF FIELD.SERVICE% <> 1%			&	\ RETURN%= 0%							&	\ ESCAPE%= 0%							&	\ ESCAPE%= 1%	IF SPAWN.ERROR%= 27%*8% + 1%			&	\ ESCAPE%= 2%	IF SPAWN.ERROR%= 26%*8% + 2%			&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "RE      M AUTOQU"					&	\ GOSUB 20001							&	!								&	!	Spawn AUTOQU which asks the questions which we can't 	&	!	answer automatically					&	!								&	\ GO TO 32100		IF ESCAPE%= 1%				&	\ GO TO 32200		IF ESCAPE%= 2%				&	\ GO TO 6000							&4025	!$**************************************************************&	!								&	!								&	!	Error messages						&	!								&	!								&	!***************************************************************&	!								&	\ PRINT								&	\ PRINT "% You must have at least 1 DL11       unit!"			&	\ PRINT "We haven't found any!"					&	\ PRINT	"You must answer the device dialog later."		&	\ PRINT								&	\ FORCE.DIALOG%= 1%						&	\ RETURN							&	!								&	!	Error message if no DL units				&4050	\ PRINT								&	\ PRINT "% You must have at least one clock (line or prog)!"	&	\ PRINT "We haven't found any!"					&	\ PRINT "You must answer the device dialog later."		&	\ PRINT								&	\ FORCE.DIALOG%= 1%						&	\ RETURN							&	!								&	!	Error message if no clock is found			&4075	\ PRINT	      							&	\ PRINT "% You may have at most 2 TU45/16 formatters."		&	\ PRINT "We have detected more than that number."		&	\ PRINT "You must go through the device dialog later."		&	\ PRINT								&	\ FORCE.DIALOG%= 1%						&	\ RETURN							&	!								&	!	Error message if too many tape formatters		&6000	!$**************************************************************&	!                                                               &	!                                                               &	! 	CLEAN UP	      					&	!                                                               &	!                                                               &	!***************************************************************&	!								&7001	\ CALL DTRG BY REF  (REGION1%(),DIRECTIVE.ERROR%)		&	\ GO TO 7050	IF DIRECTIVE.ERROR% <> 1%			&	!								&	!	Detach from the autosizer region			&7005	\ CALL DTRG BY REF (REGION%(),DIRECTIVE.ERROR%)			&	\ GO TO 7050	IF DIRECTIVE.ERROR% <> 1%			&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Detac      h from the region and exit with sucess		&7050	\ PRINT								&	\ PRINT "? FATAL error in DETACH region directive."		&	\ PRINT								&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Error routine for DETACH directives			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$*************      *************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&	!								&19900	\ PRINT			      					&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ ON ERROR GO TO 0						&	!								&	!	Standard unexpected error trapping			&20000	!$**************************************************************&	!								&	!								&	!	TPS LIBRARY SUB-ROUTINES				&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***********      ****************************************************&32000	\ CLOSE #T% 	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%,0%)						&	!								&	!	Unsuccessful exit					&32100	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(1%,27%)						&	!								&	!	ESC exit						&32200	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%,26%)						&	!								&	!	CTRL-Z exit						&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!					   t   			&	!***************************************************************&	!								&	\ CALL EXITS2(2%,0%)						&	\ END t          €„:kQÁ› 8$        	.TITLE	TSTINT.IDENT	"V1.1A4";;                         COPYRIGHT (C) 1979 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.;;;; MODULE:	TSTINT;; VERSION:	V01.01A4;; AUTHOR:	MIKE GARRY;		LEE BARTON;; DATE:		22-MAY-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;	1.0      0C01	19-FEB-79	LBB		SPR 21184 - LBB001;						MAKE "<NONE>" THE DEFAULT;						ANSWER TO "WORKSPACE FILE" QUERY;	1.00C02	28-FEB-79	LBB		SPR T227015 - LBB002;						ALLOW FOR 1-BYTE EXCHANGE MSG;	2.00A	19-APR-79	LBB		LBB003 - PREVIOUS FIX WAS;						WRONG.  ;	V1.1A4	22-MAY-79	LBB		SPR T226789 - LBB004;						INSTALL TST WITH EXPLICIT;						DEVICE NAME, "SY:" DEFAULT;;	.ENABL	LC	.MCALL	SPWN$,DIR$,CRRG$S,CRAW$S,CRVT$C,$FBCAL,$RBCAL,$GNCAL	.MCALL	QIOW$	$RBCAL	$FBCAL	$GNCAL;$$$GBL=0;	SPWN$.PAGE;;	ROUTINE TO INITIALIZ      E FOR A TST.;;	THE MESSSAGE AND WORKSPACE FILES ARE READ AND THE MESSAGE AREA;	IS SET UP.;TSTINT::	MOV	#$MFRAB,R0	;POINT TO MESSAGE FILE RAB	CLR	R2		;RESET CHARACTER COUNT	$STORE	#TERBUF,UBF,R0	;SET UP INITIAL BUFFER ADDRESS20$:	MOV	#$MFFAB,R1	;POINT AT MESSAGE FILE FAB	$TESTBITS #FB$TRM,DEV,R1 ;IS THIS A TERMINAL?	BEQ	25$		;NO - CONTINUE	MOV	#MESPRM,PRMQIO+Q.IOPL ;OTHERWISE - SET UP FOR PROMPT	MOV	#MESPLN,PRMQIO+Q.IOPL+2	DIR$	#PRMQIO		;PROMPT FOR MESSAGE DATA25$:	$GET	R0		;GET A RECORD FROM THE MESSAGE FIL      E	$FETCH	R1,STS,R0	;DID THIS SUCCEED?	BGE	30$		;YES - CONTINUE	JMP	DEXIT30$:	$FETCH	R3,RSZ,R0	;GET RECORD SIZE	BEQ	35$		;LEAVE IF NO MESSAGE	ADD	R3,R2		;UPDATE CHARACTER COUNT	$FETCH	R5,RBF,R0	;GET BUFFER ADDRESS	ADD	R3,R5		;POINT PAST LAST CHARACTER	CMPB	#'-,-(R5)	;IS LAST CHARACTER A '-'	BNE	35$		;NO - THEN MESSAGE COMPLETE	$STORE	R5,UBF,R0	;RESET USER BUFFER ADDRESS	DEC	R2		;REDUCE CHARACTER COUNT	BR	20$		;AND READ ANOTHER RECORD;35$:	MOV	R2,-(SP)	;SAVE THE CHARACTER COUNT	CLR	R4		;RESET WORKSPACE CHARAC      TER COUNT;	TSTB	$NOWF		;WORKSPACE SPECIFIED?			;LBB001	BHI	50$		;NO - THEN LEAVE			;LBB001	MOV	#$WFRAB,R0	;POINT AT WORKSPACE FILE RAB	INC	R5		;RESET LAST ADDRESS	ROR	R5		;ROUND UP ADDRESS TO NEXT WORD	ADC	R5			ASL	R5	$STORE	R5,UBF,R0	;SET UP INITIAL BUFFER AREA45$:	MOV	#$WFFAB,R1	;POINT AT FAB	$TESTBITS #FB$TRM,DEV,R1 ;IS THIS A TERMINAL?	BEQ	47$		;NO - THEN CONTINUE	MOV	#WRKPRM,PRMQIO+Q.IOPL ;SET UP FOR PROMPT	MOV	#WRKPLN,PRMQIO+Q.IOPL+2	DIR$	#PRMQIO		;PROMPT FOR WORKSPACE DATA47$:	$GET	R0		;GET A RECORD	      $FETCH	R1,STS,R0	;DID THIS SUCCEED	BLT	50$		;NO - LEAVE40$:	$FETCH	R3,RSZ,R0	;GET SIZE OF THE RECORD	BEQ	50$		;LEAVE IF NO RECORD	ADD	R3,R4		;UPDATE CHARACTER COUNT	$FETCH	R5,RBF,R0	;GET BUFFER ADDRESS	ADD	R3,R5		;POINT PAST LAST CHARACTER	CMPB	#'-,-(R5)	;IS THE LAST CHARACTER A '-'	BNE	50$		;NO - THEN LEAVE	$STORE	R5,UBF,R0	;UPDATE BUFFER ADDRESS	DEC	R4		;REDUCE CHARACTER COUNT	BR	45$		;AND READ ANOTHER RECORD;.PAGE50$:	CRVT$C	INAST,OUAST,ATAST,VTRLEN	BCC	10$	MOV	$DSW,R0	HALT10$:	MOV	$DSW,R1		;GET VIRTUAL       TERMINAL NUMBER	MOV	#SUFFIX,R2	;SET UP TST NAME	MOVB	#'A,(R2)+	;NAME IS 'TSTAAn' WHERE 'n' IS THE 	MOVB	#'A,(R2)+	;VIRTUAL TERMINAL NUMBER	MOVB	#'@,(R2)	BISB	R1,(R2)	MOV	R1,A.LUNU+ASSLUN ;SET VIRTUAL TERMINAL NUMBER IN ASSIGN LUN DPB	MOV	R1,SPAWN+S.PWVT	;AND IN SPAWN DPB	DIR$	#ASSLUN		;ASSIGN LUN TO VIRTUAL TERMINAL.PAGE;;	NOW SET UP THE REGION FOR THE MESSAGE AND WORKSPACE.;;	THE TST WILL ATTACH TO THIS REGION ON INITIALIZATION.;	MOV	(SP)+,R2	;RESTORE CHARCTER COUNT	MOV	R2,R3		;GET SIZEOF MESSAGE(IN BYTES)       IN R3	ADD	#77,R3		;CONVERT TO 32 WORD BLOCKS	ASH	#-6,R3	MOV	R4,R5		;GET SIZE OF WORKSPACE(IN BYTES)	ADD	#77,R5		;CONVERT TO 32 WORD BLOCKS	ASH	#-6,R5		ADD	#2,R3		;ADD ON TWO BLOCKS FOR CONTEXT AREA	ADD	R5,R3		;R3 NOW HAS SIZE OF REQUIRED REGION;	MOV	R3,TSTREG+R.GSIZ ;INSERT SIZE IN THE REGION DESC. BLOCK	MOV	R3,TSTWND+W.NSIZ ;AND IN THE WINDOW DESC. BLOCK	MOV	#^RTST,TSTREG+R.GNAM ;SET UP THE REGION NAME	MOV	R2,-(SP)	MOV	#SUFFIX,R0	;CONVERT THE SUFFIX TO RAD50	CALL	$CAT5	MOV	R1,TSTREG+R.GNAM+2 ;SET SUFFIX I      N REGION DESC. BLOCK	MOV	(SP)+,R2;	CRRG$S	#TSTREG		;CREATE THE REGION	BCC	50$		;CONTINUE - IF NO ERROR	CALL	NODYMM		;REPORT - NO DYNAMIC MEMORY50$:	MOV	TSTREG+R.GID,TSTWND+W.NRID ;MOVE IN REGION ID.	CLR	TSTWND+W.NLEN	;CLEAR DEFAULT LENGTH 	CRAW$S	#TSTWND		;MAP ONTO THE REGION	BCC	60$		;CONTINUE IF NO ERROR	HALT60$:	;;	NOW SET UP THE TST CONTEXT AREA;	MOV	#140000,R0	;USE R0 AS A POINTER INTO CONTEXT AREA	MOV	R0,R5	MOV	#1,(R0)+	;SET UP THE CONSTANT	MOV	#140200,R1	;ADDRESS OF THE MESSAGE IS CONSTANT	MOV	R1,(R0      )+	;MOVE IN ADDRESS OF THE MESSAGE	MOV	R4,(R0)		;SET UP WORKSPACE ADDRESS	BEQ	65$		;SKIP - IF NO WORKSPACE	INC	-4(R0)		;SET PARAMETRS TO TWO	MOV	R1,(R0)		;ADDRESS OF WORKSPACE IS ADDRESS OF MESSAGE	ADD	R2,(R0)		;PLUS SIZE OF MESSAGE(MOD 32 WORD)	ADD	#77,(R0)	BIC	#77,(R0)65$:	MOV	(R0)+,R3	;SAVE WORKSPACE ADDRESS	MOV	DBNAM,(R0)+	;MOVE IN MY NAME AS EXECUTION MNG. NAME	MOV	DBNAM+2,(R0)+	MOV	DBNAM,(R0)+	;MOVE IN MY NAME AS DATA MNG. NAME	MOV	DBNAM+2,(R0)+	CLR	(R0)+		;E.M. CONTEXT BLOCK IS ZERO	MOV	#2,(R0)+	;D.M      . CONTEXT BLOCK IS 2	MOV	R4,-(SP)	;SAVE R4	CALL	..CLSM		;CALCULATE THE CHECKSUM	MOV	(SP)+,R4	;RESTORE R4;	MOV	#140200,R0	;NOW TRANSFER THE MESSAGE DATA	CLR	-104(R0)	;FIRST RESET TRACE INDICATOR	MOV	#TERBUF,R1	;POINT AT MESSAGE	ASR	R2		;CONVERT MESSAGE SIZE TO WORDS	ADC	R2		;ROUND UP IF ODD NUMBER OF BYTES	BEQ	75$		;LEAVE - IF NO MESSAGE			;LBB00370$:	MOV	(R1)+,(R0)+	;MOVE THE DATA	SOB	R2,70$;75$:	MOV	R4,WSSIZE	;SAVE SIZE OF WORKSPACE	ASR	R4		;CONVERT THE SIZE TO WORDS	ADC	R4	BEQ	85$		;SKIP - IF NO WORKSPACE      80$:	MOV	(R1)+,(R3)+	;MOVE THE DATA	SOB	R4,80$;;	INSTALL AND RUN THE TST;85$:	MOV	#NAME,R2	;POINT AT DESTINATION			;LBB004	TSTB	DVFLG		;SHOULD WE COPY IN DEFAULT DEV STRING?	;LBB004	BEQ	89$		;NO - THEN SKIP				;LBB004	MOV	#SYDEV,R3	;YES - POINT TO SOURCE			;LBB004	MOV	#SYLEN,R1	;MOVE IN LENGTH				;LBB00487$:	MOVB	(R3)+,(R2)+	;COPY DEFAULT STRING			;LBB004	SOB	R1,87$							;LBB00489$:	MOV	$TSTSZ,R1	;MOVE THE FILE NAME SPEC. INTO THE INSTALL LINE	MOV	$TSTAD,R3	;POINT AT SOURCE ADDRESS15$:	MOVB	(R3)+,(R2)+	;MO      VE THE DATA	SOB	R1,15$;	MOV	#LEND,R3	;NOW MOVE THE REMAINDER OF THE LINE	MOV	#LSZ,R1	17$:	MOVB	(R3)+,(R2)+	;MOVE THE DATA	SOB	R1,17$;	SUB	#INSCMD,R2	;CACULATE THE LENGTH OF THE COMMAND LINE	MOV	R2,SPAWN+S.PWCL	;STORE IN THE SPAWN DPB;	DIR$	#SPAWN		;SPAWN THE TST	BCC	20$	MOV	$DSW,R0	HALT20$:	RETURN.PAGE.SBTTL	DMPWKS - DUMP THE WORKSPACE;DMPWKS::	CLR	TSTWND+W.NLEN	;MAP TO THE MESSAGE/W/S	CRAW$S	#TSTWND;	MOV	140004,R4	;GET ADDRESS OF THE W/S	BEQ	100$		;LEAVE IF NO W/S;	MOV	#WKHDR,R1	;PRINT OUT THE HEADER	CALL	      VARLNE;	MOV	WSSIZE,R5	;GET SIZE OF W/S;5$:	MOV	#PARAM,R2	;POINT AT PARAMETER LIST	MOV	R5,(R2)		;	CMP	#100.,R5	;PRINT 100 CHARACTERS/LINE	BHIS	10$	MOV	#100.,(R2)	10$:	MOV	R4,2(R2)	;SET ADDRESS IN PARAMETER LIST	MOV	#DTLNE,R1	;POINT AT LINE TEMPLATE	CALL	VARLNE		;WRITE TO THE LOG;	SUB	#100.,R5	;ANY MORE LEFT?	BLE	100$		;NO - THEN LEAVE	ADD	#100.,R4	;UPDATE ADDRESS	BR	5$		;AND TRY AGAIN;100$:	RETURN;DTLNE:	.ASCIZ	/%N%15S%VA/;WKHDR:	.ASCIZ	/%2N***%5SWorkspace Data/;	.PAGE;PRMQIO:	QIOW$	IO.WLB,LUN1,TEREFN,,IOSB,   ¢   ,<0,0,'$>;MESPRM:	.ASCII	<15><12><12>/Input Message Data ? /MESPLN = . - MESPRM	.EVENWRKPRM:	.ASCII	<15><12><12>/Input Workspace Data ? /WRKPLN = . - WRKPRM	.END ¢          *’Î“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	WORDEF					&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	28-JUL-77				&	!	Author(s):	AJS					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Co      pyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!***************************************************************&20	!$**      ************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/01	28-JUL-77 AJS	BL4 MAJOR CHANGES		&	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!		P R O G R A M    D E S       C R I P T I O N		&	!								&	!								&	!	The Work Class Definition Utility (WORDEF) is invoked	&	!	to define a work class.  A work class represents a	&	!	grouping o ftransactions.  When associated with a 	&	!	station or a user identifier, a work class determines	&	!	which transactions that station/user is authorized to	&	!	to initiate.						&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!						      		&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		XXXXXX.WOR (work definition file) I/O	&	!	    3		TPDEF.TPF (system application index)	&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A       Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!	APP.NAME$		application name		&	!	APP.NUMBER$		unique application number	&	!	APP.STATUS%		status indicator		&	!	APP.PART$		install partition name		&	!	APP.COMMON%		application common area address	&	!	APP.TRACUM%		transaction accumulation	&	!	APP.FILKEY%		keyed file accumulation		&	!	APP.FILCUM%		file accumulation work		&	!	APP.PARBAS%		install partition base		&	!	APP.INSCUM%		install ac      cumulation word	&	!	APP.FILL$		buffer filler			&	!	ASK.CVT$		converted dialogue response	&	!	ASK.HELP$()		long prompt array		&	!	CNT%			length of record		&	!	DEFAULT$		default response string		&	!	FULL%			type of report flag		&	!	FUNCTION%		ADD, EDIT, DELETE flag		&	!	INVALID%		keyed search failure code	&	!	LOCKED%			file locked error code		&	!	NAME$			work class name			&	!	NOFILE%			can't find file error code	&	!	NUM.TRANS.NAMES%	number of transaction names	&	!	PROMPT$			dialogue prompt string		&	!	REPORT%      			report writer and branch flag	&	!	TRANS.BIT.MAP%(10)	transaction bit map		&	!	TRANS.NAME$(159)	transaction name array		&	!	TRANS.TEMP$(159)	sort array			&	!	VALID$			valid response string		&	!	Z's 			working variables		&	!								&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	---      --------	--------------------------------------  &	!	10000		Report writer for index and show	&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!	25000	FN.ASK%		standard dialogue function	&	!								&	!								&	!************      ***************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	      Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&905	DIM TRANS.TEMP$(63%)						&	!								&	!	Transaction name compaction array.			&930	DIM ASK.HELP$(6%)						&	!								&	!	Dimension the long prompts array.			&950	MAP (WORK)	NAME$=6,					&			TRANS.BIT.MAP%(3),				&			FILL$=20,					&			NUM.TRANS.NAMES%,				&			TRANS.NAME$(63)=6				&	!						      		&	!	Work class map						&960	\ MAP (APPL)		RECORD$=64				&	\ DIM #3,		VIRTUAL$(16383)=64			&	\ MAP (APPL)		APP.NAME$=6,				&				APP.STATUS%,				&				APP.PART$=4,				&				APP.COMMON%,				&				APP.TRACUM%,				&				APP.FILKEY%,				&				APP.FILCUM%,				&				APP.PARBAS%,				&				APP.INSCUM%,				&				APP.FILL$=38,				&				APP.NUMBER$=2				&	!								&	!	Application file map.					&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G       I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	VER.EDIT.NUM$ = ""						&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "WORDEF	"; VER.EDIT.NUM$; "   ";			&	\ PRINT								&	\ PRINT "Work Class Definition Utility"				&	\ PRINT								&	!								&	!	Output program herald messages				&1030	\ NOFILE%=5%							&	\ NOOPEN%=162%				      			&	\ LOCKED%=136%							&	\ INVALID%=155%							&	\ FILE.END$="######"						&	\ CR$=CHR$(13%)+CHR$(10%)					&	!								&	!	Set up the error symbols.				&1040	\ HELP.CNT%=1%							&	\ ASK.HELP$(1%)=						&	"Enter the name of an existing transaction processor;  a 1- to"+CR$+&	"6-character alphanumeric string."&	\ ASK.HELP$(2%)=						&	"Enter one of the following commands:"+CR$+&	CR$+								&	"           ADD"+CR$+&	"           DELETE"+CR$+&	"           EDIT"+CR$+&	"           EXIT"+CR$+&	"           INDEX"+      CR$+&	"           PRINT"+CR$+&	"           SHOW"&	\ ASK.HELP$(3%)=						&	"Enter the name of the work class to  be  displayed.   A  work"+CR$+&	"class name is a 1- to 6-character slphanumeric string."&	\ ASK.HELP$(4%)=						&	"Enter the name of the work class to be added, edited, or  de-"+CR$+&	"leted.  A work class name is a 1- to 6-character alphanumeric"+CR$+&	"string.  "&	\ ASK.HELP$(5%)=						&	"Enter one of the following subcommands:"+CR$+&	CR$+								&	"           ADD - Add a transaction name"+CR$+&      	"           DELETE - Delete a transaction name "&	\ ASK.HELP$(6%)=						&	"Enter the transaction name to be added to or deleted from the"+CR$+&	"work class list of transaction names.  Respond with DONE when"+CR$+&	"finished.  "&	!								&	!	Long prompts.						&1050	\ ON ERROR GOTO 1060						&	\ OPEN "[1,1]"+"TPDEF.TPF" FOR INPUT AS FILE #3,		&		ACCESS READ, ALLOW MODIFY,				&		ORGANIZATION VIRTUAL					&	\ GOTO 1070							&	!								&	!	Open the Application File to validate work to be done	&	!	on a particu      lar application.				&1060	\ IF ERR=NOFILE%						&	  THEN PRINT							&		\ PRINT "? Please define a transaction processor before"&			+" running this utility."			&		\ RESUME 32767						&	  ELSE IF (ERR=LOCKED%) OR (ERR=NOOPEN%)			&	       THEN PRINT						&			\ PRINT "? You have been denied access to the "+&			"transaction processor file."+CR$+"Try again later."&			\ RESUME 32767					&	       ELSE GOTO 19000						&	!								&	!	If an error occurred upon open of the application file	&	!	we take appropriate acti      on here.  Any unexpected errors	&	!	will trap to 19000.					&1070	\ PROMPT$="Transaction Processor name"				&	\ ON FN.ASK%(PROMPT$,"","A",6%,1%,1%) GOTO 1070,32000,1080	&	!								&	!	Ask which application is to be worked on		&1080	\ GOSUB 14000							&	\ FOR I% = 0% TO 16383%						&		\ APP.RECORD%=I%					&		\ RECORD$=VIRTUAL$(I%)					&		\ GOTO 1085 IF APP.NAME$=ASK.CVT$			&		\ GOTO 1095 IF APP.NAME$ = FILE.END$			&	\ NEXT I%							&	\ GOTO 1095							&	!								&	!	FIND THE APPLICATION RECORD				&	!	1085 i      f found						&	!	1095 if not found					&1085	\ ON ERROR GOTO 1090						&	\ OPEN "[1,300]"+ASK.CVT$+".WOR" FOR INPUT AS FILE #2,		&		ORGANIZATION INDEXED, VARIABLE,				&		ACCESS MODIFY, ALLOW READ,				&		BUCKETSIZE 1,						&		MAP WORK,						&		PRIMARY KEY NAME$					&	\ GOTO 1100							&	!								&	!	Open the Work Class File to validate work to be done	&	!	the Work Classes of the selected application.		&1090	\ IF ERR=NOFILE%						&	  THEN PRINT							&		\ PRINT "% The Work Class definition file for the select      ed"+&			" transaction processor"+CR$+"has been deleted."&		\ RESUME 1070						&	  ELSE IF ERR=LOCKED%						&	       THEN PRINT						&			\ PRINT "% You have been denied access to the "+&			"Work Class file.  Try again later."		&			\ RESUME 1070					&1095	\ IF APP.NAME$=FILE.END$					&		   THEN PRINT						&			\ PRINT "% Transaction Processor has not "+	&				"yet been defined."			&			 \ RESUME 1070					&		    ELSE GOTO 19000					&	!								&	!	If an error occurred upon open of the Work Class file	&	!	we take a      ppropriate action here.  Any unexpected errors	&	!	will trap to 19000.					&1100	\ PROMPT$="Command"						&	\ REPORT%=0%							&	\ VALID$="/ADD/EDIT/DELETE/INDEX/SHOW/PRINT/EXIT"		&	\ ZTEMP%=FN.ASK%(PROMPT$,"",VALID$,0%,2%,1%)			&	\ ON ZTEMP% GOTO 1070,32000,1130,1130,1130,1110,1120,1120,32000	&	!								&	!	Ask what function is to be performed.			&	!								&	!	Application name question is ALT			&	!	Close out if ctrl/z					&	!	1130 if ADD, EDIT, or DELETE				&	!	1110 if INDEX						&	!	1120 if SHOW						&	!      	32000 if EXIT						&1110	\ FULL%=0%							&	\ FULL%=-1% UNLESS ASK.CVT$="INDEX"				&	\ ASK.CVT$="ALL" IF ASK.CVT$="INDEX"				&	\ REPORT%=-1%							&	\ GOTO 1160 UNLESS ASK.CVT$="ALL"				&1115	\ GOSUB 10000							&	\ GOTO 1100							&	!								&	!	Set the default to a short report.			&	!	Set to a full report if this was a SHOW command		&	!	Set ASK.CVT$ to ALL if this is an index command		&	!	Set the report flag.					&	!	See if the WORK CLASS is around if this is not ALL	&	!	Do the report at 10000					&	!	Go       back to the Command question.			&1120	\ PROMPT$="Which work class"					&	\ DEFAULT$="ALL"						&	\ ON FN.ASK%(PROMPT$,DEFAULT$,"A",6%,3%,1%) GOTO 1100,32000,1110&	!								&	!	Ask which entity they which to SHOW.			&	!								&	!	Command question is ALT					&	!	Close out if ctrl/z					&	!	Goto the report writer if a valid response was given	&1130	\ FUNCTION%=0%							&	\ FUNCTION%=1% IF ASK.CVT$="EDIT"				&	\ FUNCTION%=2% IF ASK.CVT$="DELETE"				&	\ FUNCTION$=ASK.CVT$						&	!								&	!	Set up the functio      n flag and string.			&1135	\ PROMPT$="Work class name"					&	\ REPORT%=0%							&	\ Z%=FN.ASK%(PROMPT$,"","A",6%,4%,1%)				&	\ Z%=Z%+FUNCTION% IF Z%=3%					&	\ ON Z% GOTO 1100,32000,1140,1160,1140				&	!								&	!	The function differentiator is set to zero		&	!	The function differentiator is set to one for EDIT	&	!	The function differentiator is set to two for DELETE	&	!	Set up the prompt					&	!								&	!	ALT back to the Command question.			&	!	CTRL/Z exits us.					&	!	1140 for ADD.						&	!	1160 for EDI      T.						&	!	1140 for DELETE.					&1140	\ NAME$=ASK.CVT$						&	\ PNAME$=ASK.CVT$						&	\ ON ERROR GOTO 1150						&	\ GET #2, KEY #0 EQ NAME$					&	\ DELETE #2 IF FUNCTION%=2%					&	\ PRINT								&	\ PRINT "Record ("+PNAME$+") DELETED." IF FUNCTION%=2%		&	\ PRINT "% Record ("+PNAME$+") already exists, cannot ADD." IF	&					FUNCTION%=0%			&	\ GOTO 1135							&	!								&	!	Plug in the key,					&	!	Set the error trap,					&	!	Do a find,						&	!	Delete it if we found and function is DELETE,		&	!	Print a succ      ess message for the DELETE.			&	!	Print a diagnostic if we are trying to ADD existing,	&	!	Go back and ask for another WORK CLASS.			&1150	\ GOTO 19000 IF ERR<>INVALID%					&	\ IF FUNCTION%=2%						&	  THEN PRINT							&		\ PRINT "% Record ("+PNAME$+") does not exist, cannot DELETE."&	       \ RESUME 1135						&	  ELSE RESUME 1180 UNLESS (PNAME$="ALL") OR (PNAME$="DONE")	&		\ PRINT							&		\ PRINT "% "+PNAME$+" is a reserved name, cannot ADD."	&		\ RESUME 1135						&	!								&	!	If we get here on the DELE      TE function,			&	!	then we print a diagnostic and go back for the selection&	!	Else we resume at 1180 to ADD (this error trap is 	&	!	normal for ADD).					&1160	\ NAME$=ASK.CVT$						&	\ PNAME$=ASK.CVT$						&	\ ON ERROR GOTO 1170						&	\ GET #2, KEY #0 EQ NAME$					&	\ GOTO 1115 IF REPORT%						&	\ GOTO 1180							&	!								&	!	Plug in the key value,					&	!	Set an error trap for not found,			&	!	Do a GET and goto the report writer if successful.	&	!	Do a GET and goto 1180 if successful.			&1170	\ GOTO 1      9000 IF ERR<>INVALID%					&	\ FUNCTION$="SHOW" IF REPORT%<>0%				&	\ PRINT								&	\ PRINT "% Record ("+PNAME$+") does not exist, cannot "+	&			FUNCTION$+"."					&	\ RESUME 1120 IF REPORT%					&	\ RESUME 1135							&	!								&	!	Print a diagnostic for cannot find on EDIT or SHOW and 	&	!	go back and ask the selection question again.		&1180	\ ON ERROR GOTO 19000						&	\ NUM.TRANS.NAMES%=0% IF FUNCTION%=0%				&	\ TRANS.NAME$(Z%)="//////" FOR Z%=NUM.TRANS.NAMES% TO 63%	&	!								&	!	If this is an ADD there       are no transactions.		&	!	Flag the rest of the records as unused.			&1185	\PROMPT$="Sub command"						&	\ VALID$="/ADD/DELETE"						&	\ REPORT%=FN.ASK%(PROMPT$,"",VALID$,0%,5%,1%)			&	\ ON REPORT% GOTO 1135,32000,1220,1220				&	!								&	!	Ask the 'Sub command' question.				&	!		ALT to 1135					&	!		CTRL/Z out					&	!		ADD, DELETE to 1220				&1220	\ Z%=REPORT%-3%							&	!								&	!	Hold on to whether this is an ADD or DELETE.		&	\ PROMPT$="Transaction name"					&	\ DEFAULT$="DONE"						&	\ REPORT%=FN.AS      K%(PROMPT$,DEFAULT$,"A",6%,6%,1%)		&	\ ON REPORT% GOTO 1185,32000,1230				&	!								&	!	Ask the 'Transaction name' question.			&	!		ALT to 1185					&	!		CTRL/Z out					&	!		valid to 1230					&1230	\ GOTO 1250 IF ASK.CVT$="DONE"					&	\ REPORT%=Z%+3%							&	\ IF Z%=0%							&	  THEN IF NUM.TRANS.NAMES%=64%					&	       THEN PRINT						&			\ PRINT "% No more than 64 transactions are "+	&				"allowed."				&			\ GOTO 1220					&	       ELSE FOR ZZ%=0% TO 63%					&			\ PRINT IF ASK.CVT$=TRANS.NAME$(ZZ%)		&			\       PRINT "% Transaction is already associated "+	&				"with this work class." IF		&					ASK.CVT$=TRANS.NAME$(ZZ%)	&			\ GOTO 1220 IF  ASK.CVT$=TRANS.NAME$(ZZ%)	&		    \ NEXT ZZ%						&	!								&	!	If this ADD would take us over the top then give them	&	!	a diagnostic and ask again.				&	!	If the transaction was already ADDed then print a 	&	!	diagnostic and try again				&1235	\ IF Z%=0%							&	  THEN NUM.TRANS.NAMES%=NUM.TRANS.NAMES%+1%			&		\ Z%=Z%+1% WHILE TRANS.NAME$(Z%)<>"//////"		&		\ TRANS.NAME$(Z%)=AS      K.CVT$				&		\ GOTO 1220						&	!								&	!	If the sub function is ADD, then increment the counter.	&	!	Find the first open slot and put the name in.		&	!								&	  ELSE FOR Z%=0% TO 63%						&			\ GOTO 1240 IF ASK.CVT$=TRANS.NAME$(Z%)		&		   \ NEXT Z%						&		   \ PRINT						&		   \ PRINT "% "+ASK.CVT$+" was not previously associated "+&			"with this work class."				&		   \ GOTO 1220						&	!								&	!	If the function is delete, search for the name and	&	!	goto 1240 to delete it if found.			&	!	Print a       diagnostic and return if you can't find it.	&1240	\ NUM.TRANS.NAMES%=NUM.TRANS.NAMES%-1%				&	\ TRANS.NAME$(Z%)="//////"					&	\ GOTO 1220							&	!								&	!	Decrement the counter and invalidate the slot.		&1250	\ TRANS.TEMP$(Z%)=TRANS.NAME$(Z%) FOR Z%=0% TO 63%		&	\ POINTER%=0%							&	\ FOR Z%=0% TO 63%						&		\ IF TRANS.TEMP$(Z%)<>"//////"				&		  THEN TRANS.NAME$(POINTER%)=TRANS.TEMP$(Z%)		&			\ POINTER%=POINTER%+1%				&1260	\ NEXT Z%							&	!								&	!	We use the TRANS.TEMP$() array to get all the       valid	&	!	names at the beginning of the TRANS.NAME$() array.	&	!								&	\ ON ERROR GOTO 1270						&	\ CNT%=36%+(6%*NUM.TRANS.NAMES%)				&	\ PUT #2, COUNT CNT% IF FUNCTION%=0%				&	\ UPDATE #2, COUNT CNT% IF FUNCTION%=1%				&	\ PRINT								&	\ PRINT "Record ("+PNAME$+") "+FUNCTION$+"ed."			&	\ GOTO 1135							&	!								&	!	Put the record out if we are ADDing.			&	!	Update the record if we are EDITing.			&	!	Print a success message and go back for another record.	&1270	\ PRINT								&	\ PRINT "% "+FUNCT      ION$+" on record ("+PNAME$+") failed."	&	\ RESUME 1135							&	!								&	!	Print the failure message and try again.		&10000	!$**************************************************************&	!								&	!								&	!	R E P O R T    W R I T E R 				&	!								&	!								&	!								&	!***************************************************************&	!								&	!								&	!								&	!								&	!	This routine is called to perform the INDEX and SHOW	&	!	functions.  						&	!								&	!								&	!******************      *********************************************&10010	\ ON ERROR GOTO 10095						&	\ OPEN "TI:" FOR OUTPUT AS FILE 8% IF ZTEMP%<>8%		&	\ OPEN "CL:" FOR OUTPUT AS FILE 8% IF ZTEMP%=8%			&	\ PRINT #8, "Transaction Processor Name: "+APP.NAME$ IF ZTEMP%=8%&	\ PRINT #8, "Work class name: "+ASK.CVT$ IF ZTEMP%=8%		&	\ PRINT #8							&	\ NAME$="" IF ASK.CVT$="ALL"					&	\ GET #2, KEY #0 GE NAME$ IF ASK.CVT$="ALL"			&	!								&	!	If this is an INDEX or a SHOW ALL then we must set up 	&	!	at the beginning of the file       to read sequentially.	&10030	\ PRINT #8, "Work class name : ";NAME$;TAB(30%);		&		"Number of associated transactions :";			&		NUM$(NUM.TRANS.NAMES%)					&	!								&	!	PRINT the index report and the first line of the show.	&10040	\ GOTO 10070 UNLESS FULL%<>0%					&	\ GOTO 10070 IF NUM.TRANS.NAMES%=0%				&	\ PRINT #8							&	\ PRINT #8, TAB(30%);"Associated transaction names"		&	\ PRINT #8							&	\ PRINT #8, TAB(40%);TRANS.NAME$(Z%) FOR Z%=0% TO NUM.TRANS.NAMES%-1%&	\ PRINT #8							&	!								&	!	PRINT out       the rest of the report if necessary.		&10070	\ GOTO 10090 UNLESS ASK.CVT$="ALL"				&	\ GET #2							&	\ GOTO 10030							&	!								&	!	Exit if this was an individual report.			&	!	Otherwise get the next and do it again.			&10090	\ CLOSE 8%							&	\ RETURN							&10095	\ IF ERR=3%							&	  THEN PRINT \ PRINT "% Listing device is unavailable."		&	!								&	!	Somebody else has CL: tied up				&10097	\ RESUME 10090							&	!								&	!	The only error that should occur is EOF.		&14000	!$********************      ******************************************&	!								&	!								&	!	C L O S E    C H A N N E L    2 			&	!								&	!								&	!***************************************************************&	!								&	!								&	!	The purpose of this routine is to properly close	&	!	channel two before it is opened again.  All closout	&	!	processing for the file presently open on channel 2	&	!	is done here.  This is a subroutine because a person	&	!	can process several applications during one run of 	&	!	an information fi      le utility.  Therefore, channel 2 is	&	!	closed when a new application is to be processed and	&	!	also at program close-out which can come at unpredict-	&	!	able times.						&	!								&	!								&	!***************************************************************&14005	\ RETURN IF BUFSIZ(2%)=0%					&	!								&	!	Return immediately if channel 2 is not open.		&14090	\ ON ERROR GOTO 19000						&	\ CLOSE 2%							&	\ RETURN							&	!								&	!	Close channel 2 update channel 3 and return.		&15000	!$***********      ***************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ ON ERROR GOTO 0		      				&	!								&	!	Let the system handle this one.				&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!******************************************************      *********&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32010	\ GOSUB 14000							&	\ CLOSE Z% FOR Z%=1% TO 12%					&	\ GOTO 32767							&	!								&	!	Close channel 2						&	!	Close 'em all						&	!	Get out.						&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O   z    G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDz          Û} }kQÁ› 8$        	.TITLE	JRNSUB	BP2 SUBROUTINES TO READ A JOURNAL TAPE.IDENT	"V01.01B";;                         COPYRIGHT (C) 1979 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.;;;; MODULE:	JRNSUB;; VERSION:	V01.01B;; AUTHOR:	TONY SUKIENNIK;		LEE BARTON;; DATE:		20-JUN-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANA      TION;	------	----		------		-----------;	V1.1A	8-MAR-79	LBB		V1.1 - LBB001;						SPAWN MCR... WITH TASKNAME "REC";	V1.1B	20-JUN-79	LBB		LBB002 - MODIFY "ENCODE";;	.MCALL	WDBBK$,MAP$SLWDB::	WDBBK$	7,128.,,,128.,<WS.MAP!WS.WRT!WS.64B>				; WINDOW DESCRIPTOR BLOCK FOR THE SLOT REGIONMAPSLT::MAP$	SLWDB		; DPB FOR SLOT MAPPINGSLTMAP	==	SLWDB+W.NOFF	; USED TO MAP SLOTSLMPLN	==	SLWDB+W.NLEN	; USED TO MAP SLOT;;	GLOBAL DATA REQUIRED BY JOURNAL IO MODULES;SLOT	==	160000		; DATA TO BE MAPPED AT THIS LOCATIONSEQNUM	==	      SLOT+34		; RECORD SEQUENCE NUMBER ADDRESS IN SLOTVALSTR	==	SLOT+52		; ADDRESS OF VALIDATION STRING IN SLOT;;	BEGINNING OF BLOCK TO BE SENT TO ERROR PROCESSING TASK;RECNAM::.ASCII/REC /		; NAME OF "RECERR" PROGRAM TO BE RUN	;LBB001ERRTYP::.ASCII	/**/		; TYPE OF ERROR BEING REPORTED TO THE ERROR				; ERROR REPORTING TASKSTATUS::.WORD	0		; STATUS WORDRETRY::	.WORD	0		; RETRY COUNT FOR JOURNAL IOERRHIS::.BYTE	0,0		; ERROR HISTORY FOR JOURNAL IOSEQUEN::.WORD	0		; SEQUENCE NUMBER OF RECORD WE NOW EXPECTSLTLEN::.W      ORD	0		; LENGTH OF SLOT BEING READREMAIN::.WORD	0		; AMMOUNT OF SLOT LEFT TO READBLOCKL::.WORD	0		; DISK JOURNAL BLOCK NUMBER (LOW 16 BITS)BLOCKH::.WORD	0		; DISK JOURNAL BLOCK NUMBER (HIGH BITS)LBLOCK::.WORD	0		; DISK JOURNAL BLOCK NUMBER (LOW 16 BITS)HBLOCK::.WORD	0		; DISK JOURNAL BLOCK NUMBER (HIGH BITS)				; THE PRECEDING TWO WORDS ARE USED TO RELOAD				; THE DISK BLOCK NUMBER FOR SOME RETRY ATTEMPTDEVICE::.ASCII	/**/		; DEVICE NAMEUNITNM::.WORD	0		; UNIT NUMBERDISK::	.WORD	0		; TAPE OR DISK FLAG WORDI      OSTAT::.BLKW	2		; IO STATUS FOR VARIOUS QIO MACROSPRONUM::.WORD	0		; PROCESSOR NUMBERFILNUM::.WORD	0		; FILE NUMBERLASTIM::.BLKW	6		; CURRENT RECORD'S TIME KEPT HERETABCHG::.BYTE	0		; CODE FOR TAB				;LBB002CRCHG::	.BYTE	0		; CODE FOR <CR>				;LBB002ESCCHG::.BYTE	0		; CODE FOR ESCAPESPCCHG::.BYTE	0		; CODE FOR SPACE			;LBB002EXCLCH::.BYTE	0		; CODE FOR "!"				;LBB002RECEND	=	.		; MARK END OF RECORD			;LBB002RECERL	==	.-RECNAM	; LENGTH OF ERROR INFO TO BE PASSED TO 	;LBB001				; RECER					;LBB001;;	END OF BL      OCK TO BE SENT TO ERROR PROCESSING TASK;;;	CHARACTERS WHICH SHOULD BE REPLACED BY CODES BEFORE BLOCK IS	;LBB002;	SENT TO ERROR PROCESSING TASK (THESE CHARACTERS WOULD BE 	;LBB002;	DELETED OR REPLACED BY GMCR CALL)				;LBB002;TAB:	.BYTE	11		; TAB CHARACTER				;LBB002CR:	.BYTE	15		; CARRIAGE RETURN			;LBB002ESC:	.BYTE	33		; ESCAPE CHARACTER			;LBB002SPC:	.BYTE	40		; SPACE CHARACTER			;LBB002EXCL:	.BYTE	41		; EXCLAMATION POINT "!"			;LBB002RECER::	.RAD50	/MCR.../	; MCR... IS SPAWNED TO RUN "REC"	;LBB001READTP:      :.WORD	0		; TYPE OF READ TO PERFORM				; IO.RLB FOR MAGTAPE				; IO.RVB FOR DISKLSTSEQ::.WORD	0		; SEQUENCE NUMBER OF LAST RECORD READ;;;	BASIC+2 CALLABLE ROUTINE TO SETUP AND READ HEADER RECORD OF;	A JOURNAL TAPE OR DISK FILE.;;		PARAMETERS:;			DEVICE MNEMONIC;			UNIT NUMBER;			REGION ID;			STATUS WORD;;OPENIT::	MOV	@#$OTSV,-(SP)	; SAVE THE BASIC THING	MOV	#SLWDB,R0	; POINT TO THE WINDOW DESCRIPTOR BLOCK	MOV	@6(R5),W.NRID(R0); PUT IN THE CALLER'S REGION ID	MOV	#"SI,ERRTYP	; SHOLOG INITIALIALIZATION IS REQU      ESTING IO	MOV	@2(R5),R0	MOV	(R0),R0		; SET UP THE DEVICE MNEMONIC IN R0	MOV	@4(R5),R1	; SET UP THE UNIT NUMBER IN R1	MOV	#EX$SUC,@10(R5)	; SUCCESS STATUS BY DEFAULT	MOV	R0,DEVICE	; SAVE THE DEVICE NAME PERMANENTLY	MOV	R1,UNITNM	; SAVE THE UNIT NUMBER PERMANENTLY	CALL	$STJRN		; CALL THE JOURNAL INITIAL READ ROUTINE	BCC	OUT		; OK, HEADER RECORD IN BUFFER	MOV	#EX$SEV,@10(R5)	; SOMETHING VERY BAD HAPPENED, AND HAS ALREADY				; BEEN REPORTED TO THE USEROUT:	MOV	(SP)+,@#$OTSV	; PUT THE BASIC THING BACK	RETURN;;;	      BASIC+2 CALLABLE ROUTINE TO READ THE NEXT RECORD FROM A;	JOURNAL TAPE OR DISK FILE.;;		PARAMETERS:;			STATUS WORD;;		ENTRY POINTS:;;			GETREC - READ IN A LOG RECORD;			ANYREC - READ IN ANY TYPE OF RECORD;GETREC::	MOV	#1,R0		; READ ONLY THE NEXT LOG RECORD	BR	COMM		; BRANCH TO COMMON CODEANYREC::	MOV	#-1,R0		; READ ANY TYPE OF RECORD (BUT ONLY THE HEADER)COMM:	MOV	@#$OTSV,-(SP)	; SAVE THE BASIC THING	MOV	#"SO,ERRTYP	; SHOLOG NORMAL IO BEING REQUESTED	MOV	#EX$SUC,@2(R5)	; SUCCESS BY DEFAULT	CALL	JUREAD		; REA      D IT	BCC	OUT		; OK, LOG RECORD IS IN BUFFER	MOV	#EX$SEV,@2(R5)	; SOMETHING BAD HAPPENED	BR	OUT		; DONEENCODE::	MOV	R0,-(SP)	MOV	R1,-(SP)	; SAVE SOME REGISTERS	MOV	R2,-(SP)						;LBB002	MOV	R3,-(SP)	MOV	#TABCHG,R2	; CLEAR CODES BEGINNING WITH "TABCHG"	;LBB00210$:									;LBB002	CLRB	(R2)+		; CLEAR THE CHARACTER			;LBB002	CMPB	R2,#RECEND	; ALL CLEAR?				;LBB002	BLT	10$		; NO - DO THE REST			;LBB002;									;LBB002;	LOOK FOR 5 CHARACTERS WHICH DON'T APPEAR IN THE BLOCK.		;LBB002;	THESE WILL BE THE CODE CHARA      CTERS				;LBB002;									;LBB002	MOV	#42,R3		; START AT 42 FOR CHARACTER NOT IN STRING;LBB002	MOV	#TABCHG,R2	; R2 - POINTS TO THE CODES - THEY WILL	;LBB002				; BE FILLED IN ONE AT A TIME		;LBB00220$:	MOV	#ERRTYP,R0	; POINT TO THE STARTING ADDRESS		;LBB002				; (NO SUBSTITUTIONS NECESSARY IN 1ST	;LBB002				; 4 CHARACTERS - "RECER" TASK NAME)	;LBB002	MOV	#<TABCHG-ERRTYP>,R1 ; THIS MANY COMPARES		;LBB00230$:	CMPB	(R0)+,R3	; IS IT IN THE STRING?	BNE	40$		; NO	INC	R3		; YES, SEE IF NEXT ONE IS	BR	20$		; TRY AG      AIN40$:	SOB	R1,30$		; CHECK THEM ALL;									;LBB002;	FOUND A CHARACTER NOT USED IN THE BLOCK				;LBB002;									;LBB002	MOVB	R3,(R2)+	; SAVE THE CHARACTER			;LBB002	CMP	#RECEND,R2	; ALL CODE CHARACTERS FOUND?		;LBB002	BEQ	50$		; YES - SKIP OUT			;LBB002	INC	R3		; TRY NEXT CHARACTER	BR	20$		; DO IT;									;LBB002;	THE 5 CODE CHARACTERS HAVE BEEN FOUND.				;LBB002;	NOW SUBSTITUTE THEM INTO THE BLOCK FOR THE 5 ILLEGAL CHARACTERS.;LBB002;									;LBB00250$:	MOV	#TAB,R3		; POINT AT 1ST "ILLEGAL" CHARACTER	      ;LBB002	MOV	#TABCHG,R2	; POINT AT CORRESPONDING CODE CHARACTER	;LBB00260$:									;LBB002	MOV	#ERRTYP,R0	; POINT TO THE STARTING ADDRESS		;LBB002				; (NO SUBSTITUTIONS NECESSARY IN 1ST	;LBB002				; 4 CHARACTERS - "RECER" TASK NAME)	;LBB002	MOV	#<TABCHG-ERRTYP>,R1 ; THIS MANY COMPARES		;LBB00270$:	CMPB	(R0),(R3)	; IS CHARACTER ILLEGAL?			;LBB002	BNE	80$		; NO	MOVB	(R2),(R0)	; CHANGE IT TO THE CODED CHARACTER	;LBB00280$:	TSTB	(R0)+		; POINT TO NEXT CHARACTER		;LBB002	SOB	R1,70$;									;LBB002;	ALL SUBSTIT      UTIONS DONE FOR ONE CHARACTER			;LBB002;									;LBB002	TSTB	(R2)+		; LOOK AT NEXT CODE CHARACTER		;LBB002	CMP	#RECEND,R2	; ALL CODE CHARACTERS DONE?		;LBB002	BEQ	90$		; YES - SKIP OUT			;LBB002	TSTB	(R3)+		; NO - LOOK AT NEXT "ILLEGAL" CHARACTER	;LBB002	BR	60$		; AND SUBSTITUTE FOR IT			;LBB002;									;LBB002;	WHOLE BLOCK IS NOW ENCODED					;LBB002;									;LBB00290$:	MOV	(SP)+,R3	; RESTORE THE REGISTERS	MOV	(SP)+,R2						;LBB002	MOV	(SP)+,R1	MOV	(SP)+,R0;	CALL	SPAWNM		; SPAWN THE ERROR PROCESSOR	MOV	R      0,-(SP)	; RESAVE THE REGISTERS	MOV	R1,-(SP)	MOV	R2,-(SP)						;LBB002	MOV	R3,-(SP);									;LBB002;	NOW DECODE THE BLOCK BEFORE RETURNING TO CALLER			;LBB002;									;LBB002	MOV	#TAB,R2		; POINT AT 1ST "ILLEGAL" CHARACTER	;LBB002	MOV	#TABCHG,R3	; POINT AT CORRESPONDING CODE CHARACTER	;LBB002100$:									;LBB002	MOV	#ERRTYP,R0	; POINT TO THE STARTING ADDRESS		;LBB002				; (NO SUBSTITUTIONS NECESSARY IN 1ST	;LBB002				; 4 CHARACTERS - "RECER" TASK NAME)	;LBB002	MOV	#<TABCHG-ERRTYP>,R1 ; THIS MANY COMPARES	      	;LBB002110$:	CMPB	(R0),(R3)	; WAS CHARACTER CHANGED?		;LBB002	BNE	80$		; NO	MOVB	(R2),(R0)	; CHANGE IT BACK			;LBB002120$:	TSTB	(R0)+		; POINT TO NEXT CHARACTER		;LBB002	SOB	R1,110$;									;LBB002;	ALL REPLACEMENTS DONE FOR ONE CHARACTER				;LBB002;									;LBB002	TSTB	(R3)+		; LOOK AT NEXT CODE CHARACTER		;LBB002	CMP	#RECEND,R3	; ALL CODE CHARACTERS DONE?		;LBB002	BEQ	130$		; YES - SKIP OUT			;LBB002	TSTB	(R2)+		; NO - LOOK AT NEXT "ILLEGAL" CHARACTER	;LBB002	BR	100$		; AND CHANGE IT BACK			;LBB002;			   Ä   						;LBB002;	WHOLE BLOCK IS NOW DECODED					;LBB002;									;LBB002130$:									;LBB002	MOV	(SP)+,R3	; RESTORE REGISTERS	MOV	(SP)+,R2						;LBB002	MOV	(SP)+,R1	MOV	(SP)+,R0;	RETURN	.END	ENCODEÄ          Û} }^Á› 8$     Ü    	±Œ:    ¯”L  ahïLH€dhlH  hh`;H(  nhHH nh#H  nhH…H@     (4 J©¼	h   A«Äqh ¯”               @ 
 (    0     @ " :dOÀ( :d   

      " &(  & PÀ. :d    :dQÀ .  Ü          Œ“Á› 8$°      979	\ MAP (T2900)	 T2900%(5%)					!1.1A01&			,CHECK.DEBUG%					!1.1A01&	\ MAP (T2900)	T2900$	= 2%					&	!								&	!	This buffer is used by FN.CHECK.TT0% to hold returns	&	!	  from CALL GETLUN.					&29000	!$**************************************************************&	!								&	!								&	!	C H E C K    F O R    T T 0				&	!								&	!								&	!	Version:	V1.1A					&	!	Edit Level:	00					&	!	Edit date:	27-Feb-79				&	!	Author(s):	KMR					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	--------- -      --	------------------------------- &	!	V1.1A00	27-Feb-79 KMR	Initial coding.			&	!		28-Feb-79 KMR	Added check for VT:		&	!	V1.1A01	07-Mar-79 KMR	Added CHECK.DEBUG% to MAP and	 1.1A01&	!				  code to check it.		 1.1A01&	!	V1.1A02	25-Apr-79 KMR	Made all returns successfull.	 1.1A02&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.CHECK.TT0%				&	!								&	!	OUTPUT:		FN.CHECK.TT0%				&	!			= 0 -> Error occurred. Either the	&	!			 	directive       failed or lun 13. is	&	!				not assigned to TT0 or VTn.	&	!			= -1 ->Directive was successfull and	&	!				lun 13 is assigned to TT0: or	&	!				VTn:.				&	!								&	!			T2900% - Contains the GETLUN directive	&	!			  status.				&	!								&	!			T2900%() - Contains the GETLUN directive&	!			  return buffer. The first word is	&	!			  T2900%(0%).				&	!								&	!			T2900$ - This string contains the device&	!			  name for LUN 13. It is mapped over	&	!			  T2900%(0%).				&	!								&	!								&	!	The routine ca      lls the GETLUN directive using LUN 13.	&	!								&	!	If the directive is successfull AND LUN 13 is assigned	&	!	to TT0: or VTn:, the functional value is set to		&	!	TRUE (-1%).						&	!								&	!	If the directive fails OR LUN 13 is not assigned to	&	!	TT0: or VTn:, the functional value is set to		&	!	FALSE (0%).						&	!								&	!	The integer T2900% contains the status return from the	&	!	GETLUN directive. The possible values of T2900% are:	&	!								&	!		 1%	- Directive was successfull		&	!		-5%	- LUN       13 is unassigned			&	!								&	!	Any other value indicates a BASIC+2 error and should	&	!	be reported via an SPR.					&	!								&	!								&	!***************************************************************&								!	&	\ DEF FN.CHECK.TT0%						&								!	&		\ FN.CHECK.TT0% = -1% !CHECK.DEBUG%!			!1.1A02&		\ T2900% = 1%						!1.1A01&	!	\ FNEXIT	IF CHECK.DEBUG%			!	!1.1A02&		!							 1.1A01&		!	Set response according to debug flag.		 1.1A01&		!	Make sure we will pass all tests if we return.	 1.1A01&		!	If no      n-zero, just exit with true.		 1.1A01&		!							 1.1A01&	!	\ CALL GETLUN BY REF( 13%, T2900%(), T2900% )		 1.1A02&		!							&		!	Call the system GETLUN directive.		&		!	The lun is 13, the data buffer is T2900%() and	&		!	  we want status returned in the integer T2900%.&		!							&	!	\ T2900%(1%) = 32767%+T2900%(1%)+1%			 1.1A02&	!			IF T2900%(1%) < 0%			 1.1A02&		!							&		!	Trim off the bit which indicates that the	&		!	  driver for this device is loaded.		&		!							&	!	\ FN.CHECK.TT0% = -1%	IF  T2900% =   î    1%			 1.1A02&	!				AND ((T2900%(1%)=0%		 1.1A02&	!					AND T2900$="TT")	 1.1A02&	!				OR  T2900$ = "VT")		 1.1A02&		!							&		!	If the directive worked and the device is TT0:	&		!	  then indicate success.			&		!							&		\ FNEND							&î          ŒkQÁ› 8$°      	.TITLE	CHECK FOR TT0: or VTn: ON LUN 13	.IDENT	/V1.1A/	.ENABL	LC;;+;;;	C H E C K    F O R    T T 0 :;;;	Version:	V1.1A;	Edit Level:	01						; KR001;	Edit Date:	07-May-79					; KR001;	Author(s):	KMR;;	VER/ED	DATE	INITIAL	REASON;	------	--------- ---	----------------------------------------;	V1.1A00	27-Feb-79 KMR	Initial coding.;		28-Feb-79 KMR	Added check for VT.;	V1.1A01	07-May-79 KMR	Put in jumps around all checks.		; KR001;;;***********************************************************************;;;	USAGE       FORMAT:	CALL CHKTT0;;	INPUT:		R0 contains the lun to check.;			   if R0 is 0, lun 13. is checked.;;	OUTPUT:		$DSW contains the status return from GLUN call.;;			C = 0 -> lun is assigned to TT0: or VTn:;			C = 1 -> lun is not assigned to TT0: or VTn: or;				   directive error (check R0);;	The subroutine uses the GLUN macro to get the device name for;	  the lun provided or 13 if lun 0 was specified. The C bit is;	  set to indicate directive error or that the device on the;	  requested lun is not TT0: or VTn:      .;;;-;	.PAGE	.MCALL	GLUN$SCHKTT0::;	TST	R0		; Is R0 equal to 0?			; KR001;	BNE	10$		; If not, assume R0 contains a valid lun	; KR001;	MOV	#13., R0	; R0 contained 0. This implies we check	; KR001				;   lun 13.;10$:	GLUN$S	R0, #DATA	; Call GLUN. Put the results in the 	; KR001				;   buffer at DATA.			; KR001;	CMP	DATA+G.LUNA, #"VT					; KR001				; Is the lun assigned to a VT?	CLC			; Assume it is.;	BEQ	30$		; Branch to 30 if it is.		; KR001;	CMP	DATA+G.LUNA, #"TT					; KR001				; Compare the device name to    j  "TT";	BNE	20$		; If it is not equal, exit with C set.	; KR001;	TSTB	DATA+G.LUNU	; Test the device number (and clear C).	; KR001;	BEQ	30$		; If zero, exit immediately (C will be	; KR001				;   clear).				; KR001;20$:	SEC			; Errors pass through here and set C.	; KR00130$:	RETURN			; Return to your caller.;;	BUFFER for GLUN call;;DATA:	.BLKW	6							; KR001	.ENDj         ô&¬ kQÁ› 8$        ; COPYRIGHT	1977, DIGITAL EQUIPMENT CORP.,  MAYNARD, MASS.;; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEMS, EXCEPT; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.;; THE INFORMATION IN THIS DOCUMENT 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 RELIABILTY;       OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.;;;;;;	SUBPROGRAM TO RETURN THE DEVICE, UNIT, AND FILE ID FOR A FILE;;;;	BASIC+2	 	CALL(STRING$,ARRAY%(),ERR%);;	where 	STRING$= the file name string;		ARRAY%()= THE ARRAY IN WHICH TO PASS BACK THE DEVICE, UNIT;			  AND FILE ID.  (MUST BE AT LEAST FIVE ELEMENTS LONG);		ERR%    =the error code- a negative value indicates an;			  	error condition.;				-1 MEANS THE ARRAY IS NOT LONG ENOUGH;				-2 MEANS THE COMMAND STRING INTERPRETER FAILED;				-3 MEANS       .PARSE ENCOUNTERED AN ERROR;				-4 MEANS .FIND ENCOUNTERED AN ERROR;				 0 MEANS SUCCESS;;;	LINKAGE INFORMATION - ;		R5	- (BASIC+2)LINKAGE = ADDRESS OF THE (ARGUMENT COUNT) ;		@2(R5)	- HOLDS THE ADDRESS OF THE STRING;		(@2(R5)+2)- THIS ADDRESS HOLDS THE LENGTH OF THE STRING;		(@4(R5)+2)- HOLDS THE ADDRESS OF THE ARRAY;		@4(R5) - HOLDS THE NUMBER OF ELEMENTS IN THE ARRAY;		@6(R5)	- ERROR ARGUMENT;;	ALL REGISTERS ARE USED IN THIS ROUTINE - THE CONTENTS OF R0-R4 ARE;	VOLITILE.;	.PAGE;	.TITLE	FILEID	.MCALL	CSI      $,CSI$1,CSI$2	.MCALL	FINIT$,NMBLK$,FDBDF$,FSRSZ$,FDOP$A	.LIST MEB;	CSI$				; SET UP THE CONTROL BLOCK	.EVENCSIBLK:	.BLKB	C.SIZE			; ALLOCATE THE CONTROL BLOCK	.EVENSWITCH:	.WORD				;INITIALIZE ONCE SWITCHSTORE:	.BLKB	34.			;FILE NAME STRIPPED OF BLANKS;FDB::	FDBDF$	FDOP$A	12	FSRSZ$	0FILEID::	FINIT$1$:	MOV	2(R5),R4		;STRING ADDRESS	MOV	#-1,@6(R5)		; SET UP FOR ANY ERROR RETURN	CMP	#5,@4(R5)		; IS THE RETURN ARRAY LONG ENOUGH?	BHI	55$			; NO, ERROR IS -1;	MOV	#STORE,R1		;	MOV	(R4),R0			;	MOV	2(R4),R2		;	CLR	R      32$:	CMPB	(R0),#32.		;	BEQ	3$			;	MOVB	(R0),(R1)+		;	INC R33$:	INC	R0			;	SOB	R2,2$			;	DEC	@6(R5)			; ERROR IS -2 FOR THIS STAGE	CSI$1	#CSIBLK,#STORE,R3	; CALL THE SYNTAX SCANNER	BCS	55$			; ERROR	CSI$2	#CSIBLK,OUTPUT		; CALL THE ACTUAL PARSER	BCS	55$			; ERROR	MOV	#CSIBLK+C.DSDS,R2	; POINT TO DATASET DESCRIPTOR	MOV	#FDB,R0			;ADDRESS OF FDB	MOV	#FDB + F.FNB,R1		;ADDRESS OF FNB	CLR	R3			; THERE IS NO DEFAULT FILE NAME BLOCK	DEC	@6(R5)			; ERROR IS -3 FOR THIS STAGE	CALL	.PARSE			;SET UP FNB FOR FILE	BCS	55      $			; ERROR	DEC	@6(R5)			; ERROR IS -4 FOR THIS STAGE	CALL	.FIND			;SYSTEM GETS LATEST VERSION #	BCS	55$			; ERROR	MOV	4(R5),R3		; POINT TO ARRAY POINTER	MOV	2(R3),R3		; POINT TO ARRAY	MOV	#FDB+F.FNB,R0		; POINT TO FILE NAME BLOCK	MOV	N.DVNM(R0),(R3)		; MOVE THE DEVICE NAME IN	MOV	N.UNIT(R0),2(R3)	; MOVE THE UNIT IN	MOV	N.FID(R0),4(R3)		; FIRST WORD OF FILE ID	MOV	N.FID+2(R0),6(R3)	; SECOND WORD OF FILE ID	MOV	N.FID+4(R0),10(R3)	; THIRD WORD OF FILE ID	CLR	@6(R5)			; EVERYTHING IS OK55$:	RTS	PC			;RETURN	.E      ND                      Û} }NÁ› 8$        JRNSUB	BP2 SUBROUTINES TO READ	MACRO M1110  20-JUN-79 14:38  PAGE 1      1						.TITLE	JRNSUB	BP2 SUBROUTINES TO READ A JOURNAL TAPE      2					.IDENT	"V01.01B"      3					;      4					;                         COPYRIGHT (C) 1979 BY      5					;             DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.      6					;      7					;      8					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED      9					; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE     10					;       INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER     11					; COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY     12					; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY     13					; TRANSFERRED.     14					;     15					;     16					; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE     17					; AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT     18					; CORPORATION.     19					;     20					;           21					; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS     22					; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.     23					;     24					;     25					;     26					; MODULE:	JRNSUB     27					;     28					; VERSION:	V01.01B     29					;     30					; AUTHOR:	TONY SUKIENNIK     31					;		LEE BARTON     32					;     33					; DATE:		20-JUN-79     34					;     35					;     36					;     37					;	M O D I F I C A T I O N   H I S T O R Y   L O G     38					;     39					;     40	      				;     41					;     42					;	VER/ED	DATE		AUTHOR		EXPLANATION     43					;	------	----		------		-----------     44					;	V1.1A	8-MAR-79	LBB		V1.1 - LBB001     45					;						SPAWN MCR... WITH TASKNAME "REC"     46					;	V1.1B	20-JUN-79	LBB		LBB002 - MODIFY "ENCODE"     47					;     48					;     49     50     51     52						.MCALL	WDBBK$,MAP$     53     54	000000				SLWDB::	WDBBK$	7,128.,,,128.,<WS.MAP!WS.WRT!WS.64B>     55									; WINDOW DESCRIPTOR BLOCK FOR THE SLOT REGION     56     57	000020				MAPSL      T::MAP$	SLWDB		; DPB FOR SLOT MAPPINGJRNSUB	BP2 SUBROUTINES TO READ	MACRO M1110  20-JUN-79 14:38  PAGE 1-1     58     59		000010'			SLTMAP	==	SLWDB+W.NOFF	; USED TO MAP SLOT     60		000012'			SLMPLN	==	SLWDB+W.NLEN	; USED TO MAP SLOT     61     62					;     63					;	GLOBAL DATA REQUIRED BY JOURNAL IO MODULES     64					;     65     66		160000 			SLOT	==	160000		; DATA TO BE MAPPED AT THIS LOCATION     67		160034 			SEQNUM	==	SLOT+34		; RECORD SEQUENCE NUMBER ADDRESS IN SLOT     68		160052 			VALSTR	==	SLOT      +52		; ADDRESS OF VALIDATION STRING IN SLOT     69     70     71					;     72					;	BEGINNING OF BLOCK TO BE SENT TO ERROR PROCESSING TASK     73					;     74     75	000024	   122 	   105 	   103 	RECNAM::.ASCII/REC /		; NAME OF "RECERR" PROGRAM TO BE RUN	;LBB001	000027	   040     76	000030	   052 	   052 		ERRTYP::.ASCII	/**/		; TYPE OF ERROR BEING REPORTED TO THE ERROR     77									; ERROR REPORTING TASK     78	000032	000000 			STATUS::.WORD	0		; STATUS WORD     79	000034	000000 			RETRY::	.WORD	0		; RE      TRY COUNT FOR JOURNAL IO     80	000036	   000 	   000 		ERRHIS::.BYTE	0,0		; ERROR HISTORY FOR JOURNAL IO     81	000040	000000 			SEQUEN::.WORD	0		; SEQUENCE NUMBER OF RECORD WE NOW EXPECT     82	000042	000000 			SLTLEN::.WORD	0		; LENGTH OF SLOT BEING READ     83	000044	000000 			REMAIN::.WORD	0		; AMMOUNT OF SLOT LEFT TO READ     84	000046	000000 			BLOCKL::.WORD	0		; DISK JOURNAL BLOCK NUMBER (LOW 16 BITS)     85	000050	000000 			BLOCKH::.WORD	0		; DISK JOURNAL BLOCK NUMBER (HIGH BITS)     86	000052	0000      00 			LBLOCK::.WORD	0		; DISK JOURNAL BLOCK NUMBER (LOW 16 BITS)     87	000054	000000 			HBLOCK::.WORD	0		; DISK JOURNAL BLOCK NUMBER (HIGH BITS)     88									; THE PRECEDING TWO WORDS ARE USED TO RELOAD     89									; THE DISK BLOCK NUMBER FOR SOME RETRY ATTEMPT     90	000056	   052 	   052 		DEVICE::.ASCII	/**/		; DEVICE NAME     91	000060	000000 			UNITNM::.WORD	0		; UNIT NUMBER     92	000062	000000 			DISK::	.WORD	0		; TAPE OR DISK FLAG WORD     93	000064				IOSTAT::.BLKW	2		; IO STATUS FOR VARIOUS       QIO MACROS     94	000070	000000 			PRONUM::.WORD	0		; PROCESSOR NUMBER     95	000072	000000 			FILNUM::.WORD	0		; FILE NUMBER     96	000074				LASTIM::.BLKW	6		; CURRENT RECORD'S TIME KEPT HERE     97	000110	   000 			TABCHG::.BYTE	0		; CODE FOR TAB				;LBB002     98	000111	   000 			CRCHG::	.BYTE	0		; CODE FOR <CR>				;LBB002     99	000112	   000 			ESCCHG::.BYTE	0		; CODE FOR ESCAPE    100	000113	   000 			SPCCHG::.BYTE	0		; CODE FOR SPACE			;LBB002    101	000114	   000 			EXCLCH::.BYTE	0		; CODE FOR "!"	      			;LBB002    102    103		000115'			RECEND	=	.		; MARK END OF RECORD			;LBB002    104    105		000071 			RECERL	==	.-RECNAM	; LENGTH OF ERROR INFO TO BE PASSED TO 	;LBB001    106									; RECER					;LBB001    107    108					;    109					;	END OF BLOCK TO BE SENT TO ERROR PROCESSING TASK    110					;    111    112					;    113					;	CHARACTERS WHICH SHOULD BE REPLACED BY CODES BEFORE BLOCK IS	;LBB002JRNSUB	BP2 SUBROUTINES TO READ	MACRO M1110  20-JUN-79 14:38  PAGE 1-2    114					;	SENT TO ERROR PROCESSING T      ASK (THESE CHARACTERS WOULD BE 	;LBB002    115					;	DELETED OR REPLACED BY GMCR CALL)				;LBB002    116					;    117    118	000115	   011 			TAB:	.BYTE	11		; TAB CHARACTER				;LBB002    119	000116	   015 			CR:	.BYTE	15		; CARRIAGE RETURN			;LBB002    120	000117	   033 			ESC:	.BYTE	33		; ESCAPE CHARACTER			;LBB002    121	000120	   040 			SPC:	.BYTE	40		; SPACE CHARACTER			;LBB002    122	000121	   041 			EXCL:	.BYTE	41		; EXCLAMATION POINT "!"			;LBB002    123    124    125	000122	050712 	131574 		RECER::	      .RAD50	/MCR.../	; MCR... IS SPAWNED TO RUN "REC"	;LBB001    126	000126	000000 			READTP::.WORD	0		; TYPE OF READ TO PERFORM    127									; IO.RLB FOR MAGTAPE    128									; IO.RVB FOR DISK    129	000130	000000 			LSTSEQ::.WORD	0		; SEQUENCE NUMBER OF LAST RECORD READ    130    131    132					;    133					;    134					;	BASIC+2 CALLABLE ROUTINE TO SETUP AND READ HEADER RECORD OF    135					;	A JOURNAL TAPE OR DISK FILE.    136					;    137					;		PARAMETERS:    138					;			DEVICE MNEMONIC    139					;			      UNIT NUMBER    140					;			REGION ID    141					;			STATUS WORD    142					;    143					;    144    145	000132				OPENIT::    146	000132	013746 	000000G			MOV	@#$OTSV,-(SP)	; SAVE THE BASIC THING    147	000136	012700 	000000'			MOV	#SLWDB,R0	; POINT TO THE WINDOW DESCRIPTOR BLOCK    148	000142	017560 	000006 	000006 		MOV	@6(R5),W.NRID(R0); PUT IN THE CALLER'S REGION ID    149	000150	012767 	044523 	177652 		MOV	#"SI,ERRTYP	; SHOLOG INITIALIALIZATION IS REQUESTING IO    150	000156	017500 	000002 			MOV	@2(R      5),R0    151	000162	011000 				MOV	(R0),R0		; SET UP THE DEVICE MNEMONIC IN R0    152	000164	017501 	000004 			MOV	@4(R5),R1	; SET UP THE UNIT NUMBER IN R1    153	000170	012775 	000000G	000010 		MOV	#EX$SUC,@10(R5)	; SUCCESS STATUS BY DEFAULT    154	000176	010067 	177654 			MOV	R0,DEVICE	; SAVE THE DEVICE NAME PERMANENTLY    155	000202	010167 	177652 			MOV	R1,UNITNM	; SAVE THE UNIT NUMBER PERMANENTLY    156	000206	004767 	000000G			CALL	$STJRN		; CALL THE JOURNAL INITIAL READ ROUTINE    157	000212	103003 	      			BCC	OUT		; OK, HEADER RECORD IN BUFFER    158	000214	012775 	000000G	000010 		MOV	#EX$SEV,@10(R5)	; SOMETHING VERY BAD HAPPENED, AND HAS ALREADY    159									; BEEN REPORTED TO THE USER    160	000222				OUT:    161	000222	012637 	000000G			MOV	(SP)+,@#$OTSV	; PUT THE BASIC THING BACK    162	000226	000207 				RETURN    163    164    165					;    166					;    167					;	BASIC+2 CALLABLE ROUTINE TO READ THE NEXT RECORD FROM A    168					;	JOURNAL TAPE OR DISK FILE.    169					;    170					;		PARAMETERS:JR      NSUB	BP2 SUBROUTINES TO READ	MACRO M1110  20-JUN-79 14:38  PAGE 1-3    171					;			STATUS WORD    172					;    173					;		ENTRY POINTS:    174					;    175					;			GETREC - READ IN A LOG RECORD    176					;			ANYREC - READ IN ANY TYPE OF RECORD    177					;    178    179	000230				GETREC::    180	000230	012700 	000001 			MOV	#1,R0		; READ ONLY THE NEXT LOG RECORD    181	000234	000402 				BR	COMM		; BRANCH TO COMMON CODE    182	000236				ANYREC::    183	000236	012700 	177777 			MOV	#-1,R0		; READ ANY TYPE OF       RECORD (BUT ONLY THE HEADER)    184	000242				COMM:    185	000242	013746 	000000G			MOV	@#$OTSV,-(SP)	; SAVE THE BASIC THING    186	000246	012767 	047523 	177554 		MOV	#"SO,ERRTYP	; SHOLOG NORMAL IO BEING REQUESTED    187	000254	012775 	000000G	000002 		MOV	#EX$SUC,@2(R5)	; SUCCESS BY DEFAULT    188	000262	004767 	000000G			CALL	JUREAD		; READ IT    189	000266	103355 				BCC	OUT		; OK, LOG RECORD IS IN BUFFER    190	000270	012775 	000000G	000002 		MOV	#EX$SEV,@2(R5)	; SOMETHING BAD HAPPENED    191	000276	0      00751 				BR	OUT		; DONE    192    193	000300				ENCODE::    194	000300	010046 				MOV	R0,-(SP)    195	000302	010146 				MOV	R1,-(SP)	; SAVE SOME REGISTERS    196	000304	010246 				MOV	R2,-(SP)						;LBB002    197	000306	010346 				MOV	R3,-(SP)    198    199	000310	012702 	000110'			MOV	#TABCHG,R2	; CLEAR CODES BEGINNING WITH "TABCHG"	;LBB002    200	000314				10$:									;LBB002    201	000314	105022 				CLRB	(R2)+		; CLEAR THE CHARACTER			;LBB002    202	000316	120227 	000115'			CMPB	R2,#RECEND	; ALL CLEAR?      				;LBB002    203	000322	002774 				BLT	10$		; NO - DO THE REST			;LBB002    204					;									;LBB002    205					;	LOOK FOR 5 CHARACTERS WHICH DON'T APPEAR IN THE BLOCK.		;LBB002    206					;	THESE WILL BE THE CODE CHARACTERS				;LBB002    207					;									;LBB002    208    209	000324	012703 	000042 			MOV	#42,R3		; START AT 42 FOR CHARACTER NOT IN STRING;LBB002    210	000330	012702 	000110'			MOV	#TABCHG,R2	; R2 - POINTS TO THE CODES - THEY WILL	;LBB002    211									; BE FILLED IN ONE AT A TIME		;LBB0      02    212	000334				20$:    213	000334	012700 	000030'			MOV	#ERRTYP,R0	; POINT TO THE STARTING ADDRESS		;LBB002    214									; (NO SUBSTITUTIONS NECESSARY IN 1ST	;LBB002    215									; 4 CHARACTERS - "RECER" TASK NAME)	;LBB002    216	000340	012701 	000060 			MOV	#<TABCHG-ERRTYP>,R1 ; THIS MANY COMPARES		;LBB002    217	000344				30$:    218	000344	122003 				CMPB	(R0)+,R3	; IS IT IN THE STRING?    219	000346	001002 				BNE	40$		; NO    220	000350	005203 				INC	R3		; YES, SEE IF NEXT ONE IS    221	00035      2	000770 				BR	20$		; TRY AGAIN    222	000354				40$:    223	000354	077105 				SOB	R1,30$		; CHECK THEM ALL    224					;									;LBB002    225					;	FOUND A CHARACTER NOT USED IN THE BLOCK				;LBB002    226					;									;LBB002    227	000356	110322 				MOVB	R3,(R2)+	; SAVE THE CHARACTER			;LBB002JRNSUB	BP2 SUBROUTINES TO READ	MACRO M1110  20-JUN-79 14:38  PAGE 1-4    228	000360	022702 	000115'			CMP	#RECEND,R2	; ALL CODE CHARACTERS FOUND?		;LBB002    229	000364	001402 				BEQ	50$		; YES - SKIP OUT			;LB      B002    230	000366	005203 				INC	R3		; TRY NEXT CHARACTER    231	000370	000761 				BR	20$		; DO IT    232					;									;LBB002    233					;	THE 5 CODE CHARACTERS HAVE BEEN FOUND.				;LBB002    234					;	NOW SUBSTITUTE THEM INTO THE BLOCK FOR THE 5 ILLEGAL CHARACTERS.;LBB002    235					;									;LBB002    236	000372				50$:    237	000372	012703 	000115'			MOV	#TAB,R3		; POINT AT 1ST "ILLEGAL" CHARACTER	;LBB002    238	000376	012702 	000110'			MOV	#TABCHG,R2	; POINT AT CORRESPONDING CODE CHARACTER	;LBB002          239	000402				60$:									;LBB002    240	000402	012700 	000030'			MOV	#ERRTYP,R0	; POINT TO THE STARTING ADDRESS		;LBB002    241									; (NO SUBSTITUTIONS NECESSARY IN 1ST	;LBB002    242									; 4 CHARACTERS - "RECER" TASK NAME)	;LBB002    243	000406	012701 	000060 			MOV	#<TABCHG-ERRTYP>,R1 ; THIS MANY COMPARES		;LBB002    244	000412				70$:    245	000412	121013 				CMPB	(R0),(R3)	; IS CHARACTER ILLEGAL?			;LBB002    246	000414	001001 				BNE	80$		; NO    247	000416	111210 				MOVB	(R2),(R0)	; CHANG      E IT TO THE CODED CHARACTER	;LBB002    248	000420				80$:    249	000420	105720 				TSTB	(R0)+		; POINT TO NEXT CHARACTER		;LBB002    250	000422	077105 				SOB	R1,70$    251					;									;LBB002    252					;	ALL SUBSTITUTIONS DONE FOR ONE CHARACTER			;LBB002    253					;									;LBB002    254	000424	105722 				TSTB	(R2)+		; LOOK AT NEXT CODE CHARACTER		;LBB002    255	000426	022702 	000115'			CMP	#RECEND,R2	; ALL CODE CHARACTERS DONE?		;LBB002    256	000432	001402 				BEQ	90$		; YES - SKIP OUT			;LBB002          257	000434	105723 				TSTB	(R3)+		; NO - LOOK AT NEXT "ILLEGAL" CHARACTER	;LBB002    258	000436	000761 				BR	60$		; AND SUBSTITUTE FOR IT			;LBB002    259					;									;LBB002    260					;	WHOLE BLOCK IS NOW ENCODED					;LBB002    261					;									;LBB002    262	000440				90$:    263	000440	012603 				MOV	(SP)+,R3	; RESTORE THE REGISTERS    264	000442	012602 				MOV	(SP)+,R2						;LBB002    265	000444	012601 				MOV	(SP)+,R1    266	000446	012600 				MOV	(SP)+,R0    267					;	CALL	SPAWNM		; SPAWN THE ERRO      R PROCESSOR    268	000450	010046 				MOV	R0,-(SP)	; RESAVE THE REGISTERS    269	000452	010146 				MOV	R1,-(SP)    270	000454	010246 				MOV	R2,-(SP)						;LBB002    271	000456	010346 				MOV	R3,-(SP)    272					;									;LBB002    273					;	NOW DECODE THE BLOCK BEFORE RETURNING TO CALLER			;LBB002    274					;									;LBB002    275	000460	012702 	000115'			MOV	#TAB,R2		; POINT AT 1ST "ILLEGAL" CHARACTER	;LBB002    276	000464	012703 	000110'			MOV	#TABCHG,R3	; POINT AT CORRESPONDING CODE CHARACTER	;LBB002          277	000470				100$:									;LBB002    278	000470	012700 	000030'			MOV	#ERRTYP,R0	; POINT TO THE STARTING ADDRESS		;LBB002    279									; (NO SUBSTITUTIONS NECESSARY IN 1ST	;LBB002    280									; 4 CHARACTERS - "RECER" TASK NAME)	;LBB002    281	000474	012701 	000060 			MOV	#<TABCHG-ERRTYP>,R1 ; THIS MANY COMPARES		;LBB002    282	000500				110$:    283	000500	121013 				CMPB	(R0),(R3)	; WAS CHARACTER CHANGED?		;LBB002    284	000502	001346 				BNE	80$		; NOJRNSUB	BP2 SUBROUTINES TO READ	MACRO M1110        20-JUN-79 14:38  PAGE 1-5    285	000504	111210 				MOVB	(R2),(R0)	; CHANGE IT BACK			;LBB002    286	000506				120$:    287	000506	105720 				TSTB	(R0)+		; POINT TO NEXT CHARACTER		;LBB002    288	000510	077105 				SOB	R1,110$    289					;									;LBB002    290					;	ALL REPLACEMENTS DONE FOR ONE CHARACTER				;LBB002    291					;									;LBB002    292	000512	105723 				TSTB	(R3)+		; LOOK AT NEXT CODE CHARACTER		;LBB002    293	000514	022703 	000115'			CMP	#RECEND,R3	; ALL CODE CHARACTERS DONE?		;LBB002    29      4	000520	001402 				BEQ	130$		; YES - SKIP OUT			;LBB002    295	000522	105722 				TSTB	(R2)+		; NO - LOOK AT NEXT "ILLEGAL" CHARACTER	;LBB002    296	000524	000761 				BR	100$		; AND CHANGE IT BACK			;LBB002    297					;									;LBB002    298					;	WHOLE BLOCK IS NOW DECODED					;LBB002    299					;									;LBB002    300	000526				130$:									;LBB002    301	000526	012603 				MOV	(SP)+,R3	; RESTORE REGISTERS    302	000530	012602 				MOV	(SP)+,R2						;LBB002    303	000532	012601 				MOV	(SP)+,R1    304	00      0534	012600 				MOV	(SP)+,R0    305					;	RETURN    306    307		000300'				.END	ENCODEJRNSUB	BP2 SUBROUTINES TO READ	MACRO M1110  20-JUN-79 14:38  PAGE 1-6SYMBOL TABLEANYREC  000236RG 	EX$SUC= ****** GX	RECEND= 000115R  	STATUS  000032RG 	WS.64B= 000400BLOCKH  000050RG 	FILNUM  000072RG 	RECER   000122RG 	TAB     000115R  	W.NAPR= 000001BLOCKL  000046RG 	GETREC  000230RG 	RECERL= 000071 G 	TABCHG  000110RG 	W.NBAS= 000002COMM    000242R  	HBLOCK  000054RG 	RECNAM  000024RG 	UNITNM  000060RG 	W.NID = 000000      CR      000116R  	IOSTAT  000064RG 	REMAIN  000044RG 	VALSTR= 160052 G 	W.NLEN= 000012CRCHG   000111RG 	JUREAD= ****** GX	RETRY   000034RG 	WS.CRW= 100000   	W.NLGH= 000020DEVICE  000056RG 	LASTIM  000074RG 	SEQNUM= 160034 G 	WS.DEL= 000010   	W.NOFF= 000010DISK    000062RG 	LBLOCK  000052RG 	SEQUEN  000040RG 	WS.ELW= 020000   	W.NRID= 000006ENCODE  000300RG 	LSTSEQ  000130RG 	SLMPLN= 000012RG 	WS.EXT= 000004   	W.NSIZ= 000004ERRHIS  000036RG 	MAPSLT  000020RG 	SLOT  = 160000 G 	WS.MAP= 000200   	W.NSRB= 00      0016ERRTYP  000030RG 	M.APBA= 000002   	SLTLEN  000042RG 	WS.RCX= 000100   	W.NSTS= 000014ESC     000117R  	OPENIT  000132RG 	SLTMAP= 000010RG 	WS.RED= 000001   	$OTSV = ****** GXESCCHG  000112RG 	OUT     000222R  	SLWDB   000000RG 	WS.RRF= 010000   	$STJRN= ****** GXEXCL    000121R  	PRONUM  000070RG 	SPC     000120R  	WS.UNM= 040000   	$$$   = 000020EXCLCH  000114RG 	READTP  000126RG 	SPCCHG  000113RG 	WS.WRT= 000002   	$$$OST= 000004EX$SEV= ****** GX. ABS.	000000	   000      	000536	   001ERRORS DETECTED   „   :  0
VIRTUAL MEMORY USED:  1229 WORDS  ( 5 PAGES)DYNAMIC MEMORY:  2980 WORDS  ( 11 PAGES)ELAPSED TIME:  00:00:09TEST,TEST/-SP=TEST „          Û} }ÌÁ› 8$     4   SY0:TEST/CP/DA,SY0:TEST/-SP=SY0:TESTUNITS=12WNDWS=2 4          œ	É_“Á› 8$Øh      1700	!$**************************************************************&	!                                                               &	!                                                               &	! 	CREATE AND/OR ATTACH THE SHARED COMMON REGION		&	!                                                               &	!                                                               &	!***************************************************************&1701	!$*****************************************************      *********&	!                                                               &	!                                                               &	! 	CREATE THE REGION					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ REGION%(1%)= 128%						&	\ REGION%(2%)= 4%						&	\ REGION%(3%)= 4%						&	\ REGION%(4%)= 0%						&	\ REGION%(5%)= 0%						&	\ REGI      ON%(6%)= 128%+32%+8%+4%+2%+1%				&	\ CALL CRRG BY REF (REGION%(),DIRECTIVE.ERROR%)			&	\ GO TO 1890	IF DIRECTIVE.ERROR% <> 1%			&	!								&	!	BEWARE, the region codes documented in V3 M manuals	&	!	is incorrect						&1805	!$**************************************************************&	!                                                               &	!                                                               &	! 	MAP WINDOW TO REGION					&	!                                                                     &	!                                                               &	!***************************************************************&	!								&	\ WINDOW%(0%)= 7%						&	\ WINDOW%(0%)= SWAP%(WINDOW%(0%))				&	\ WINDOW%(2%)= 128%						&	\ WINDOW%(3%)= REGION%(0%)					&	\ WINDOW%(4%)= 0%						&	\ WINDOW%(5%)= 0%						&	\ WINDOW%(6%)= 256%+128%+2%					&	\ CALL CRAW BY REF (WINDOW%(), DIRECTIVE.ERROR%)		&	\ GO TO 1891	IF DIRECTIVE.ERROR% <> 1%			&	\ GO TO 1895							&	!								&	!	Map window to MAP region			   v  	&	!	APR 6 is used for the mapping				&1890	\ PRINT "? FATAL error in the CREATE region directive."		&	\ GO TO 32000							&	!								&1891	\ PRINT "? FATAL error in the MAP directive."			&	\ GO TO 32000							&	!								&1892	\ PRINT "? FATAL error in the DETACH directive."		&	\ GO TO 32000							&	!								&	!	Error messages for PLAS directives			&1895	\ A%= A%							& v         ’ï“Á› 8$ÀÁ      1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	TPREDO					&	!	Version:	V1.0B01					&	!	Edit level:	1					&	!	Edit date:	31-JAN-79				&	!	Author(s):	SH					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYR      IGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	      M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!	An MCR command line is input to this program.		&	!	The command line can specify (via sw      itches), 		&	!	that TIM and/or TPSCOM is to be rebuilt.		&	!								&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		TEMP.CMD file for Macro commands        &	!	    2		TEMP.LNK file for Link commands		&	!	    3                 TEMP.DEL file for deletion commands	&	!	    4		TPDEF.TPF file      			&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.      			&	!	LINKCOM%		If true, indicates that TPSCOM  &	!				is to be rebuilt.		&	!	LINKTIM%		If true, indicates the TIM	&	!				is to be rebuilt.		&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	GETMCR 14710	This subroutine       interfaces to the TROA	&	!			routine to read the MCR command line	&	!	GET COMMAND						&	!	SWITCH 15000	This subroutine parses the switches     &	!			in the MCR command line.		&	!								&	!	BUILD 16000	This subroutine builds the MACRO and	&	!			link statements in the appropriate	&	!			files. (Also, the delete statements).	&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F       U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$******************************************      ********************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&920	\ DIM #4, VIRTUAL$(84)=64					&950	\ MAP (TPDEF) RECORD$=64					&	\ MAP (TPDEF) NAME$=6%, STATUS%, FILLE      R$=54%, UNIQUE%		&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$ = "V1.0"					&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "TPREDO	"; VER.EDIT.NUM$; "   ";			&	\ PRINT								&      	!								&	!	Output program herald messages				&1050	\ ACCOUNT1$ = "[1,1]"						&	\ ACCOUNT$  = "[1,300]"						&	\ FILE.END$ = "######"						&	\ FALSE% = 0%							&	\ TRUE% = -1%							&	!								&	! 	Define the accounts for the files, and file end marker. &	!	Define the true/false variable values.			&1100	\ OPEN "TEMP.CMD" FOR OUTPUT AS FILE #1%			&1110	\ OPEN "TEMP.LNK" FOR OUTPUT AS FILE #2%			&1120	\ OPEN "TEMP.DEL" FOR OUTPUT AS FILE #3%			&1130	\ OPEN ACCOUNT1$ + "TPDEF.TPF" FOR INPUT AS FILE #4%,		&      		ORGANIZATION VIRTUAL					&	!								&	! 	Create the indirect command file to be executed next.   &	!	Create the file which will contain the link statements, &	!	and create the file which will delete the object	&	!	modules which will be created.				&	!	Open the application definition file.			&1200	\ GOSUB 14710							&	!								&	!	Parse input command.					&1500 	\ FOR I% = 0% TO 84%						&		\ NEWNAME$ = LEFT(VIRTUAL$(I%),6%)			&		\ NEWNAME$ = TRM$(NEWNAME$)				&		\ GOTO 1700 IF NEWNAME$ = FILE.END$			&		\       GOTO 1600 IF NEWNAME$ = ""				&		\ GOSUB 16000						&1600	\ NEXT I%							&	!								&	!	For each transaction processor in the TPDEF		&	!	file, call the build subroutine.			&	!	Jump out of the loop if the file end marker is 		&	!	reached.						&	!	Skip the entry if the name is blanks.			&1700 	\ PRINT #2%, "//"						&	\ PRINT #1%, "TKB @TEMP.LNK"					&	\ PRINT #1%, "@TEMP.DEL"					&1800	\ CLOSE T% FOR T% = 1% TO 4%					&	\ GOTO 32000							&	!								&	!	Close out the LINK file , and put the LINK		&	!	comm      and in the indirect CMD file we will be executing.	&	!	Also put the command to perform the deletes into	&	!	the indirect file we will execute.			&	!	Then close all the files.				&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&11000	!$****************************************************      **********&	!								&	!								&	!	P R O C E S S    C O M M A N D    S W I T C H E S	&	!								&	!								&	!	INPUT:	COMMAND.LINE$	- contains command line text	&	!								&	!	RETURN:	OPERATOR.INITIALS$ - set with value of /ID 	&	!				     switch, if any.		&	!		RE.BUILD%	- set TRUE if /BUILD		&	!				  set FALSE if /REBUILD		&	!		COMMAND.LINE$	- contains only the selection	&	!				  text portion of the command	&	!				  (all switches are removed)	&	!								&	!	LOCAL:	T1100%	- working variable			&	!								&	      !								&	!	If there are not all of the required switches, or some	&	!	unknown switch is found, an appropriate error message	&	!	is printed and the routine aborts.			&	!								&	!								&	!***************************************************************&11002	\ LINKCOM% = FALSE%						&	\ LINKTIM% = FALSE%						&	!								&	! 		Initialize variables.				&11010	\ IF FN.SWITCH.PRESENT%("COM") = TRUE%				&	  THEN								&	  	LINKCOM% = TRUE%					&	!								&	!		 If switch to rebuild TPSCOM is present,	&	!		 se      t the flag to force a relink.		&11030	\ IF FN.SWITCH.PRESENT%("TIM") = TRUE%				&	  THEN								&		LINKTIM% = TRUE%					&	!								&	!		If TIM switch is present, set the flag		&	!		to force relinking of TIM.			&11050	\ IF (LINKTIM% = FALSE%) AND (LINKCOM% = FALSE)			&		THEN							&			PRINT "Required switch not present"		&			\ GO TO 32767					&	!								&	! 	Make sure that either TIM or TPSCOM is to be rebuilt	&11099	\ RETURN							&14700	!$**************************************************************&	!			      					&	!								&	!	G E T    P O S S I B L E    M C R    C O M M A N D	&	!								&	!								&	!	RETURNS:	For a single program, PROG.NAME$ 	&	!			  contains the file name.  		&	!			  ONLY.ONE.PROGRAM% is then set TRUE.	&	!			If @ appears, USE.INDIRECT% is set TRUE	&	!			  and the indirect input command file	&	!			  name is placed in CMD.FILE$.		&	!								&	!								&	!***************************************************************&14710	\ COMMAND.BUFR$ = SPACE$(80%)					&	\ INDIRECTED% = FALSE%						&	!			      					&	!	Reserve space for up to 80 characters.			&14720	\ CALL GETMCR BY REF (COMMAND.BUFR$, RETURN.RESULT%)		&	\ RETURN	IF RETURN.RESULT% < 1%				&	\ INDIRECTED% = TRUE%						&	!								&	!	Set if command line is there.				&	!	If not, skip out of processing.				&14730	\ COMMAND.LINE$ =						&		EDIT$(MID(COMMAND.BUFR$,5%,(RETURN.RESULT%-4%)),-1%)	&	!								&	!	Reduce input text to manageable form.			&	!								&	\ GO SUB 11000		! Process switches	!		&	!								&	!	Process switches on command.				&	!						      		&	\ RETURN							&15000	!$**************************************************************&	!								&	!								&	!	G E T    C O M M A N D    S W I T C H 			&	!								&	!								&	!	USAGE FORMAT:	FN.SWITCH.PRESENT% ( SW$ )		&	!								&	!	INPUT:	SW$	- text of switch to search for		&	!								&	!	RETURN:		- TRUE if switch found, FALSE otherwise	&	!		SW.ARG$	- contains text of argument if any.	&	!		SW.DIR% - TRUE if switch value if positive,	&	!			  FALSE otherwise			&	!								&	!								&	!	This function i      s simply used to interface the TROA	&	!	routine, which does the work on processing the switch.	&	!								&	!								&	!***************************************************************&15001	DEF FN.SWITCH.PRESENT%(SW$)					&15010		\ CALL TROA(	COMMAND.LINE$,				&				SW$,					&				SW.ARG$,				&				SW.DIR%,				&				SW.PRESENT%	)			&		\ FN.SWITCH.PRESENT% = SW.PRESENT%			&		!							&		!	Perform the processing.				&		!	Pass back the result.				&15049	\ FNEND								&16000	!$**************************************      ************************&	!								&	!	B U I L D   C O M M A N D   L I N E S 			&	!								&	!								&	!***************************************************************&16300	\ IF LINKCOM% = TRUE%						&	  THEN								&		 PRINT #1%, "MAC " ; NEWNAME$ ; ".TP1=" ;       	&					 "[1,1]RMSMAC/ML," 		&		 ; ACCOUNT$ ; NEWNAME$ ; ",[24,10]TPSCOM"		&		 \ PRINT #2%, ACCOUNT$ ; NEWNAME$ ; "/-HD=" ;		&		 NEWNAME$ ; ".TP1"					&		 \ PRINT #2%, "/"					&		 \ PRINT #2%, "STACK=0"					&		 \ PRINT #2%, "UNITS=0"					&		 \       PRINT #2%, "/"					&		 \ PRINT #3%, "PIP " ; NEWNAME$ ; ".TP1;*/DE"		&16400	\ IF LINKTIM% = TRUE%						&	  THEN								&		 PRINT #1%, "MAC " ; NEWNAME$ ; ".TP2=" ;		&		 ACCOUNT$ ; NEWNAME$ ;					&		",[24,10]TIMCTX"						&   	     \ PRINT #2%, ACCOUNT$ ; NEWNAME$ ;				&	     ".TIM/PR:5/-CP=" ; NEWNAME$ ; ".TP2,[1,1]TPMLIB.STB"	&	     \ PRINT #2%,"[1,24]MGRLIB/LB:TIMMAN:TIMCAL:TIMACT:TIMDAT"	&	     \ PRINT #2%, "/"						&	     \ PRINT #2%, "UNITS=11"					&	     \ PRINT #2%, "ASG=SY:8:9:10"				&	     \ PRINT #      2%, "WNDWS=2"					&	     \ PRINT #2%, "STACK=100"					&	     \ PRINT #3%, "PIP " ; NEWNAME$ ; ".TP2;*/DE"		&	!								&	!	Fill in the control files with the commands to do the	&	!	assemblies and task builds. 				&16900	\ RETURN							&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ IF ERR = 5%							&	  AND ERL = 113      0%						&	  THEN								&		PRINT "TPDEF file doesn't exist"			&		\ PRINT "TPREDO program cannot be performed"		&		\ RESUME 1800						&19910	\ IF ERR = 11%							&	  AND ERL = 1500%						&	  THEN								&		RESUME 1700%						&	!								&	!	If we get end of file error on the TPDEF file, 		&	!	resume at cleanup point.				&	!								&19920	\ ER.NUM$ = STR$(ERR)						&	\ PRINT "ERROR NUMBER" ; ER.NUM$				&	\ CLOSE T% FOR T% = 1% TO 4%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all       files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!*******************************************************   Ø  ********&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDØ          '  “Á› 8$       10	\ PRINT "Name of the file to be salvaged";			&	\ INPUT FILENAME$						&	\ PRINT "Number of blocks allocated to the file";		&	\ INPUT BLOCKS%							&	\ CALL FIXIT(FILENAME$,BLOCKS%,STAT%)				&20	\ PRINT "Your file has been salvaged!"				&	\ PRINT STAT% IF DEBUG%<>0%					&32767	END          Ófç“Á› 8$Ô€      480	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!	I N    T H E    D I A L O G U E    S Y S T E M		&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ASK.CVT$		Dialogue function cleaned up	&	!				  response			&	!	ASK.DIR%		Direction flag for justification&	!				  routine fill-in		&	!	ASK.LEVEL%		Level at which the current query&	!				  is working at.		&	!	      ASK.MARGIN%		Right hand margin setting for	&	!				  text justifying.		&	!	ASK.NUM			Dialogue function numeric	&	!				  response			&	!	ASK.NUM%		Dialogue function integer	&	!				  response			&	!	ASK.RANGE()		Range checking boundary values	&	!	ASK.RESP$		Dialogue function user typed	&	!				  response			&	!	BOTTOM.LINE%		Pointer to current output slot	&	!				  in text line buffer		&	!	FINISHED.LINE%()	=TRUE if associated text line is&	!				  ready for printing		&	!	LINE.LEVEL%()		Level at which this line will	      &	!				  be built.			&	!	LONG.FORM%		=TRUE to cause help text to be	&	!				  printed before first typing of&	!				  prompt for each query		&	!	PRINT.NEXT.HELP%	Help text printed initially for	&	!				  next prompt, then reset	&	!	TEXT.LINE$()		Array for processing text lines	&	!				  for printing			&	!	TOP.LINE%		Pointer to current input slot in&	!				  text line buffer.		&	!								&	!***************************************************************&730	!*******************************************************      ********&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!	I N    T H E    D I A L O G U E     S Y S T E M		&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	20000		BREED a Kernel Task			&	!	ASTO50		ASCII to RAD50 Conversion		&	!	SPAWN		SPAWN a Kernel Task			&	!								&	!***************************************************************&780	!***************************************************************&	!								&	!					      			&	!		F U N C T I O N S    U S E D			&	!								&	!	I N    T H E    D I A L O G U E    S Y S T E M		&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------	------------------------------  &	!								&	!	26350	ADD.LINE%	Add given line to text buffer,	&	!				  using text substitution and	&	!				  justification			&	!	26150	ADV.BOTTOM.LINE%Advance output pointer to text	&	!				  line buffer			&	!	26100	ADV.TOP.LINE%	Advance input pointer to text	&	!				  line buffer			&	!	25000	ASK%		SYSGEN version       of the Dialogue	&	!				  function			&	!	26300	COMPLETE.LINE%	Complete the top line in the	&	!				  text buffer			&	!	26800	EXECUTE.BLOCK%	Execute block of text through	&	!				  BREED				&	!	26550	FILL.AFTER.SPECIAL.CHARS%			&	!				Adds SPACE after occurance of	&	!				  .;:? or exclamation point	&	!				  punctuation characters.	&	!	26500	JUSTIFY.LINE%	Justify top line in text buffer	&	!				  to be 64 characters long	&	!	26550	LEVEL$		Returns string of SPACEs for	&	!				  printing to the current level	&	!	264      50	PACK.WORD%	Pack new word into current text	&	!				  line				&	!	26400	PERFORM.BREAK%	Cause break in justification	&	!				  operation.			&	!	26000	PRINT.BLOCK%	Print block of text on given	&	!				  channel with text substitution&	!	26250	PRINT.FINISHED.LINES%				&	!				Print all finished lines at	&	!				  bottom of text line buffer	&	!	26600	PRINT.HELP.TEXT%Print help text for dialogue	&	!				  function query		&	!	26200	RESET.PTRS%	Reset for text line processing	&	!	26050	SUB.TEXT$	Perform text substituti      on on	&	!				  given text string		&	!	26750	TEXT.LINE$	Returns first text line in a	&	!				  query text block.		&	!								&	!***************************************************************&899	!***************************************************************&	!								&	!								&	!	D I A L O G U E    F U N C T I O N    N E E D E D	&	!								&	!	          C O M M O N    V A R I A B L E S		&	!								&	!								&	\ COM TRUE%							&	     ,FALSE%		! Logical constants !			&	     ,ASK.DIR%							&	     ,ASK.LE      VEL%						&	     ,LONG.FORM%						&	     ,QUERY.SPLIT%						&	     ,NO.ASK.SELECT%						&	     ,PRINT.NEXT.HELP%		! Dialogue function variables !	&	!								&	!	COMMON region needed for multiple copies of the		&	!	DIALOGUE function and its support routines.		&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denot      e library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&930	\ DIM TEXT.LINES$(3),						&	      LINE.LEVEL%(3),						&	      FINISHED.LINE%(3)						&	!								&	!	Arrays for building text output lines.			&931	\ DIM T2652%(64)						&	!								&	!	Justification work array.				&932	\ DIM #12%, HELP.INDEX%(16383),					&		      ASK.HELP$( 8191) = 64				&	!								&	!	Quer      y help text arrays.					&933	\ DIM #11,SUBSTITUTE.TEXT$(99%)=128				&	!								&	!	Substitute text array					&934	\ DIM ASK.RANGE(1)						&	!								&	!	Dialogue function range checking boundary values	&25000	!$**************************************************************&	!								&	!								&	!	G E N E R A L    D I A L O G U E    F U N C T I O N	&	!								&	!								&	!								&	!	Version:	V01					&	!	Edit level:	03					&	!	Edit date:	08-Feb-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIA      L	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!	V01.01A	012079	  WJB	Add QUERY.SPLIT% flag and	&	!				  split query processing	&	!	V01.02B	013179	  WJB	Add NO.ASK.SELECT% flag and	&	!				  no selection processing	&	!	V01.03A 020879	  WJB	Clear NO.ASK.SELECT% on ESC	&	!				  response			&	!				Clear QUERY.SPLIT% on ESC	&	!				  response			&	!	V01.03B 020879	  WJB	Move reset of QUERY.SPLIT% and	&	!				  NO.ASK.SELECT% to end of	&	!				  function      			&	!								&	!***************************************************************&	!								&	!								&	! USAGE FORMAT	:						&	!								&	! FN.ASK%( QUERY.NUM% ,						&	!	   DEFAULT$ ,						&	!	   VALID$ ,						&	!	   RANGE.CHK% ,						&	!	   QUERY.LEVEL% )					&	!								&	!								&	! INPUTS:							&	!								&	! QUERY.NUM%	Index into HELP.INDEX% for the associated query	&	!		  text.						&	!								&	! DEFAULT$	the default value to be displayed with the	&	!		prompt; NULL string if there is no default.	&      	!								&	! VALID$	a valid response list or a valid response	&	!		type; NULL string if no editing is to be done.	&	!		A valid response list must begin with a slash	&	!		and elements in the list are separated by a	&	!		slash (e.g. /CREATE/EDIT/DELETE ).		&	!		Valid response types are the following:		&	!			""- any text is accepted		&	!			Y - yes/no				&	!			A - alphanumeric			&	!			D - decimal				&	!			I - integer				&	!								&	! RANGE.CHK%	flag to enable length or range check on response&	!		TRUE% to ena      ble checking, FALSE% otherwise.	&	!		Response types behave as follows:		&	!								&	!			Response	Length	     Range	&	!			   ""		  YES	       NO	&	!			    A             YES          NO	&	!			    Y		   NO	       NO	&	!			    D              NO         YES	&	!			    I		   NO         YES	&	!			    /		   NO          NO	&	!								&	!		The "length" checking parameter is placed in	&	!		ASK.RANGE(0).  The low range boundary goes in	&	!		ASK.RANGE(0) and the high range boundary goes	&	!		ASK.RANGE(1).					&	!							      	&	! QUERY.LEVEL%	level at which current query is processed.	&	!								&	!								&	! RETURNS:							&	!								&	! The function returns the following values:			&	!								&	!	1 - if the ESCAPE key is the response			&	!	2 - if CTRL-Z is the response				&	!	3 - if YES is the response when YES/NO is required	&	!	4 - if NO is the response when YES/NO is required	&	!	n - where n is the number of the element in the 	&	!	    list + 2 if a valid response list was specified	&	!	3 - for all other responses				&	!		      						&	! The following are also returned:				&	!								&	!	ASK.RESP$	the user response as typed		&	!			If the user types simply <CR>, then	&	!			contains the DEFAULT$ value.		&	!								&	!	ASK.CVT$	the response with all blanks and tabs	&	!			suppressed and lower case converted	&	!			to upper case; expanded if the user 	&	!			response identifies an element from	&	!			a list of valid responses		&	!								&	!	ASK.NUM%	the value of the response if an 	&	!			integer is required			&	!								&	!	ASK.NUM		the       value of the response if any	&	!			decimal value is valid			&	!								&	!	ASK.ITEM%	the position of the selected item in	 01.01A&&	!			a list matching (first element is 1)	 01.01A&	!								 01.02A&	!								&	! EXTERNAL FLAGS:						&	!								&	! LONG.FORM%		If TRUE%, causes the PROMPT text to 	&	!			automatically appear for every use of	&	!			FN.ASK%					&	!								&	! PRINT.NEXT.HELP%	If TRUE%, causes the help text for	&	!			the current call to FN.ASK% to be	&	!			printed out automatically; the flag is	      &	!			reset to FALSE.				&	!								&	! QUERY.SPLIT%		If TRUE%, causes the query prompt to	 01.01A&	!			appear on the line above where the	 01.01A&	!			response will be entered.  The flag is	 01.01A&	!			reset to FALSE%.			 01.01A&	!								 01.02A&	! NO.ASK.SELECT%	If TRUE%, and the "/" selection type of  01.02A&	!			processing is used, the returned value 	 01.02A&	!			is 3, and ASK.ITEM% contains the index	 01.02A&	!			number of the selected item from the	 01.02A&	!			list (numbering from 1).  The flag is      	 01.02A&	!			reset to FALSE%.			 01.02A&	!								&	! DESCRIPTION:							&	!								&	!	The function prints the prompt string with the		&	!	default value, if specified, enclosed in angle		&	!	brackets. The response is edited as indicated. If	&	!	invalid, the prompt is repeated; if valid, the return	&	!	is set and the function exits. The help text is 	&	!	printed and the prompt repeated if the response		&	!	is "?".							&	!								&	!	According to the QUERY.LEVEL% value, all text is printed&	!	with (4%*(QU      ERY.LEVEL%-1%)) spaces to indent it to the	&	!	proper position.  Margining on the right hand side is	&	!	performed to column 80.					&	!								&	!***************************************************************&								       !&	DEF FN.ASK%(QUERY.NUM%,DEFAULT$,VALID$,RANGE.CHK%,QUERY.LEVEL%)	&								       !&		\ ON ERROR GO TO 25130					&		\ ASK.DIR% = +1%					&		\ ASK.LEVEL% = QUERY.LEVEL%				&		!							&		!	Set up standard default error trap.		&		!	Set the starting direction for justification	&		!	  fill      ing.					&		!	Save the query level for later processing.	&		!							&		\ IF LONG.FORM%						&		  OR PRINT.NEXT.HELP%					&		  THEN							&			  PRINT.NEXT.HELP% = FALSE%			&			\ TE% = FN.PRINT.HELP.TEXT%(QUERY.NUM%,		&						    QUERY.LEVEL%)	&		!							&		!	If printing long form, or next prompt gets help	&		!	  anyway, then preface prompt with help text.	&25010		\ FN.ASK% = 3%						&		\ PRINT							&		\ PRINT FN.LEVEL$(QUERY.LEVEL%)				&		     + FN.SUB.TEXT$(					&				ASK.HELP$(HELP.INDEX%(2%*QUERY.NUM%)));	      &		\ PRINT " <";						&			DEFAULT$;					&			">";						&				IF DEFAULT$ <> ""			&		\ PRINT		IF QUERY.SPLIT% = TRUE%			!01.01A&		\ PRINT FN.LEVEL$(QUERY.LEVEL%);			!01.01A&				IF QUERY.SPLIT% = TRUE%			!01.01A&		\ QUERY.SPLIT% = FALSE%					!01.01A&		\ INPUT LINE ASK.RESP$					&		\ IF RIGHT(ASK.RESP$,LEN(ASK.RESP$)) = CHR$(27%)	&		  THEN							&			  FN.ASK% = 1%					&			\ NO.ASK.SELECT%,				!01.03A&			  QUERY.SPLIT%	  = FALSE%			!01.03A&			\ PRINT						&			\ GO TO 25199					&		!							&		!	Print prompt with de      fault, if specified,	&		!		enclosed in angle brackets.		&		!	If response is ESCAPE, set return and exit.	&25011		\ ASK.RESP$ = DEFAULT$	IF EDIT$(ASK.RESP$,4%) = ""	&		!							&		!	Set the default text answer.			&		!							&		!	NOTE   NOTE   NOTE   NOTE   NOTE		&		!							&		!	Statements 25012 through 25019 are reserved for &		!	 user insertion of such items as "hidden"	&		!	 switches.					&25020		\ ASK.CVT$ = EDIT$(ASK.RESP$,38%)	! 2% + 4% + 32%	&		\ IF ASK.CVT$ = ""					&		  THEN							&			  PRINT						&		      	\ PRINT FN.LEVEL$(ASK.LEVEL%);			&				"% Input required"			&			\ GO TO 25010					&		!							&		!	Set default value if needed.			&		!	Discard all spaces, tabs, and excess characters;&		!		convert lower to upper case.		&		!	If no input data results,			&		!		Print error message; repeat the prompt.	&25030		\ IF ASK.CVT$ = "?" 					&		  THEN							&			  TE% = FN.PRINT.HELP.TEXT%(QUERY.NUM%,		&						    QUERY.LEVEL%)	&			\ GO TO 25010					&		!							&		!	If response is "?", print HELP text.		&25040		\ GO TO 2504      5	IF VALID$ <> ""				&		\ ASK.CVT$ = EDIT$(ASK.RESP$,(2%+4%+32%))		&		\ GO TO 25199	IF RANGE.CHK% = FALSE%			&				OR LEN(ASK.CVT$) <= ASK.RANGE(0%)	&		!							&		!	Skip to next if not "" type response.		&		!	Converted form has CRLF removed only.		&		!	Accept anything if not length checking.		&		!	Accept it if not too long.			&25042		\ PRINT							&		\ PRINT FN.LEVEL$(ASK.LEVEL%);				&			"% Response exceeds maximum length (>";		&			NUM1$(ASK.RANGE(0%));				&			" characters)"					&		\ GO TO 25010						&		!			      				&		!	Signal response string too long			&25045		\ GO TO 25060	IF VALID$ <> "A"			&		\ GO TO 25042	IF  RANGE.CHK% = TRUE%			&				AND LEN(ASK.CVT$) > ASK.RANGE(0%)	&		\ FOR ASK.T1% = 1% TO LEN(ASK.CVT$)			&			\ ASK.CHR$ = MID(ASK.CVT$,ASK.T1%,1%)		&			\ IF ASK.CHR$ < "0"				&			  OR ASK.CHR$ > "Z"				&			  OR (ASK.CHR$ > "9" AND ASK.CHR$ < "A")	&			  THEN						&				  PRINT					&				\ PRINT FN.LEVEL$(ASK.LEVEL%);		&					"% Alphanumeric required"	&				\ GO TO 25010				&		!							&		!	Skip if not "A" type res      ponse.			&		!	Check for and process too long a response.	&		!	Otherwise, scan all characters in response.	&		!		Check character to see if it is number	&		!		  or letter				&		!		If not, signal error and try again.	&25050		\ NEXT ASK.T1%						&		\ GO TO 25199						&		!							&		!	End of scanning loop.				&		!	If we reach here, then response is valid so we	&		!	  accept.					&25060		\ GO TO 25080	IF  VALID$ <> "D"			&				AND VALID$ <> "I"			&		\ ASK.NUM = VAL(ASK.CVT$)				&		\ GO TO 25070	IF VALID$ <> "D"			&      		!							&		!	Skip if not numeric type response.		&		!	Convert to numeric form.			&		!	Skip if not integer response.			&25065		\ GO TO 25199  IF RANGE.CHK% = FALSE%			&			       OR (    (ASK.RANGE(0%) <= ASK.NUM      )	&				   AND (ASK.NUM       <= ASK.RANGE(1%)))&		\ PRINT							&		\ PRINT FN.LEVEL$(ASK.LEVEL%);				&			"% Number out of range (";			&			NUM1$(ASK.RANGE(0%));				&			":";						&			NUM1$(ASK.RANGE(1%));				&			")"						&		\ GO TO 25010						&		!							&		!	Accept number if no range checking, o      r in range.&		!	Process out of range errors.			&25070		\ GO TO 25075	IF ASK.NUM = INT(ASK.NUM)		&		!							&		!	Check for proper integer format.		&		!	Error in conversion will be caught by error 	&		!	  Trapper.					&25071		\ PRINT							&		\ PRINT FN.LEVEL$(ASK.LEVEL%);				&			"% Integer required"				&		\ GO TO 25010						&		!							&		!	Check for integer response.			&		!	If not, signal with error message and try again.&25075		\ ASK.NUM% = INT(ASK.NUM)				&		\ GO TO 25065	IF VALID$ = "I"				&		!							&		!      	Convert to integer result.			&		!	For "I", go perform range checking for		&		!	  acceptance.					&25080		\ VALID$ = "/YES/NO"	IF VALID$ = "Y"			&		!							&		!	If YES or NO is required, set up VALID$ as a	&		!	list to validate against.			&25090		\ ASK.T2% = INSTR(1%,VALID$,("/"+ASK.CVT$))		&		\ IF ASK.T2% = 0%					&		  THEN							&			  PRINT						&			\ PRINT FN.LEVEL$(ASK.LEVEL%);			&				"% Invalid response"			&			\ GO TO 25010					&		  ELSE							&			  ASK.T1% =					&			      INSTR((ASK.T2%+1%),VALID$,("/      "+ASK.CVT$))	&			\ IF ASK.T1% <> 0%				&			  THEN						&				  PRINT					&				\ PRINT FN.LEVEL$(ASK.LEVEL%);		&					"% Response not unique"		&				\ GO TO 25010				&		!							&		!	Search valid string for matches to the response.&		!		The response can be a substring of a 	&		!		list element.				&		!	If no match or more than one, the response is	&		!		invalid; repeat the prompt.		&		!	If only one match is found, the response is	&		!	  valid.					&25100		\ ASK.T3%,						&		  ASK.ITEM% = 0%					&		!							&		!	In      itialize accumulator and position pointer.	&25110		\ ASK.T3% = INSTR((ASK.T3%+1%),VALID$,"/")		&		\ ASK.ITEM% = ASK.ITEM% + 1%				&		\ GO TO 25110	IF ASK.T2% <> ASK.T3%			&		!							&		!	Find which list item the response matches.	&		!							&		\ ASK.T1% = INSTR((ASK.T3%+1%),VALID$,"/")		&		\ ASK.LEN% = LEN(VALID$)-ASK.T3%			&			IF ASK.T1% = 0%			! Last item	&		\ ASK.LEN% = ASK.T1% - ASK.T3% - 1%	IF ASK.T1% <> 0%&		\ ASK.CVT$ = MID(VALID$,(ASK.T3%+1%),ASK.LEN%)		&		\ FN.ASK% = ASK.ITEM% + 2%				&		\ FN.ASK%       = 3%	IF NO.ASK.SELECT%			!01.02A&		\ GO TO 25199						&		!							&		!	Determine length of list item.			&		!	Equate the converted string to the list item.	&		!	Set the return to the item number + 2.		&25120		!*******************************************************&		!							&		!							&		!	D I A L O G U E    F U N C T I O N		&		!							&		!	    E R R O R    H A N D L I N G		&		!							&		!							&		!*******************************************************&25130		\ IF ERR = 11%						&		  THEN							&			  FN.AS      K% = 2%					&			\ RESUME 25199					&		!							&		!	We get an EOF error if the response is CTRL-Z.	&		!	Set return and exit.				&25131		\ RESUME 25071	IF ERL = 25075%				&		!							&		!	Catch integer too long error.			&25140		\ IF  ERR = 52%						&		  AND ERL = 25060%					&		  THEN							&			  PRINT						&			\ PRINT FN.LEVEL$(ASK.LEVEL%);			&				"% Numeric required"			&			\ RESUME 25010					&		!							&		!	We get an illegal number error if we don't get	&		!	a valid numeric response when I, P, or D is	&		!	sp      ecified as the valid type. Repeat the prompt.	&25149		\ GO TO 19900						&		!							&		!	For all unaccounted for errors, go to the error	&		!	routine for the calling program.		&25199		\ ON ERROR GO TO 19000					&		\ QUERY.SPLIT%,						!01.03B&		  NO.ASK.SELECT% = FALSE%				!01.03B&	\ FNEND								&	!								&	!		Reset the default error trap.			&	!		Clear the QUERY.SPLIT% and NO.ASK.SELECT% flags  01.03B&	!	Exit.							&26000	!$**************************************************************&	!								&	!					      			&	!	P R O C E S S    A N D    P R I N T    T E X T		&	!								&	!		       B L O C K				&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.PRINT.BLOCK%( CHAN% , INDX% )	&	!								      &	!	INPUT:	CHAN%	- channel number of file to print to	&	!		INDX%	- entry in HELP.INDX%() for block to	&	!			    process.				&	!								&	!	LOCAL:	T2600%	- working variable			&	!		T2601%	-    "        "				&	!		T2600$	- working string			&	!		T2601$	-    "        "				&	!								&	!								&	!	Each line of the block of text in ASK.HELP$() indicated	&	!	by INDX% is pulled out, substituted for, and then 	&	!	printed out on file CHAN%.				&	!								&	!	Lines ending in "-" are not terminated with CR-LF.	&	!	Inst      ead, the next line continues at the end of the	&	!	previous one.						&	!								&	!								&	!***************************************************************&								       !&	DEF FN.PRINT.BLOCK%(CHAN%,INDX%)				&								       !&		\ T2601% = INDX%+INDX%					&		\ TE% = FN.RESET.PTRS%					&		\ FOR T2600% = HELP.INDEX%(T2601%)			&		           TO (HELP.INDEX%(T2601%)			&			      +HELP.INDEX%(T2601%+1%)-1%)		&		!							&		!	Reset processing of text.			&		!	Print all lines in the block.			&		!							&			\ T2600      $ = FN.SUB.TEXT$(ASK.HELP$(T2600%))	&			\ T2601$ = RIGHT(T2600$,LEN(T2600$))		&			\ PRINT #CHAN%, LEFT(T2600$,(LEN(T2600$)-1%));	&			\ PRINT #CHAN%, T2601$				&				IF T2601$ <> "-"			&		\ NEXT T2600%						&		!		Get the next text line.			&		!		Pick off trailing character.		&		!		Print first part of line.		&		!		If not continuation, print trailing	&		!		  character plus terminator.		&		!	End of scanning loop.				&	\ FNEND								&26050	!$**************************************************************&	!							      	&	!								&	!	P R O C E S S    T E X T    S T R I N G			&	!								&	!		  S U B S T I T U T I O N S			&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.SUB.TEXT$( TXT$ )			&	!					      			&	!	INPUT:	TXT$	- source text string to be processed	&	!								&	!	RETURNS:	- resulting text string, after all	&	!			  substitutions have been made.		&	!								&	!	LOCAL:	T2610$	- working string			&	!		T2610%	- working variable			&	!		T2611%	-    "       "				&	!		T2612%	-    "       "				&	!								&	!								&	!	The given line of text is scanned for the "\\xx" text	&	!	substitution key.  If found, the two (2) digits "xx"	&	!	are converted into an index into SUBSTITUTE.TEXT$().	&	!	The text string in       SUBSTITUTE.TEXT$(xx) is used to	&	!	replace the "\\xx" key.					&	!								&	!	When all substitutions have been made, a check will be	&	!	performed to see if any new substitutions were entered	&	!	into the string during the previous pass.  If so, then	&	!	The operation will be repeated.				&	!								&	!	The recursive substitution operation will be repeated	&	!	up to 5 times.  If more are called for, they will be	&	!	ignored and the function will end processing.		&	!								&	!******************************      *********************************&								       !&	DEF FN.SUB.TEXT$(TXT$)						&								       !&		\ T2610$ = TXT$						&		\ T2612% = 0%						&		!							&		!	Get original text input string.			&		!	Reset recursion limit counter.			&26060		\ T2610% = 1%						&		!							&		!	Set search pointer to start of string.		&26070		\ T2610% = INSTR(T2610%,T2610$,"\\")			&		\ GO TO 26090	IF T2610% = 0%				&		\ T2611% = VAL(MID(T2610$,(T2610%+2%),2%))		&		!							&		!	Search for substitute key.			&		!	Skip if none found.      				&		!	Compute the index value.			&		!							&		\ T2610$ =  LEFT(T2610$,(T2610%-1%))			&			 + SUBSTITUTE.TEXT$(T2611%)			&			 + RIGHT(T2610$,(T2610%+4%))			&		\ T2610% = T2610% + LEN(SUBSTITUTE.TEXT$(T2611%))	&		\ GO TO 26070						&		!							&		!	Make the substitution.				&		!	Advance search pointer past new insert area	&		!	Go back for more substitutions.			&26090		\ T2612% = T2612% + 1%					&		\ GO TO 26060	IF  T2612% < 5%				&				AND INSTR(1%,T2610$,"\\") <> 0%		&		!							&		!	Advance recursion counte      r.			&		!	Go back for another pass if not at limit and	&		!	  more substitutions called for.		&		!							&		\ FN.SUB.TEXT$ = T2610$					&		!							&		!	Pass out final result to caller.		&		!							&	\ FNEND								&26100	!$**************************************************************&	!								&	!								&	!	A D V A N C E    T O P    L I N E    P O I N T E R	&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIA      L	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.ADV.TOP.LINE%			&	!								&	!	RETURNS:	- TOP.LINE% is incremented, modulo 4.	&	!			  The new buffer slot is also cleared.	&	!								&	!								&	!***************************************************************&								       !&	DEF FN.ADV.TOP.LINE%						&								       !&		\ TOP.      LINE% = (TOP.LINE% + 1%) AND 3%			&		\ TEXT.LINE$(TOP.LINE%) = ""				&		\ LINE.LEVEL%(TOP.LINE%) = ASK.LEVEL%			&		!							&		!	Perform the increment, module 4.		&		!	Clear the new buffer slot for more action.	&		!	Assign a level to the line.			&		!							&	\ FNEND								&26150	!$**************************************************************&	!								&	!								&	!	A D V A N C E    B O T T O M     L I N E    P T R	&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79		      		&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.ADV.BOTTOM.LINE%			&	!								&	!	RETURNS:	- increments BOTTOM.LINE%, module 4.	&	!			  the current slot is marked un-finished&	!								&	!								&	!***************************************************************&								             !&	DEF FN.ADV.BOTTOM.LINE%						&								       !&		\ FINISHED.LINE%(BOTTOM.LINE%) = FALSE%			&		\ BOTTOM.LINE% = (BOTTOM.LINE% + 1%) AND 3%		&		!							&		!	Clear the bottom slot to un-finished state.	&		!	Increment pointer, module 4.			&		!							&	\ FNEND								&26200	!$**************************************************************&	!								&	!								&	!	R E S E T    L I N E    P O I N T E R S			&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Aut      hor(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.RESET.PTRS%				&	!								&	!	RETURNS:	- both pointers point to the first	&	!			  element in the ring buffer.  All	&	!			  finished line flags are reset.	&	!								&	!	LOCAL:	T2620%	- working variable			&	!								&	!								&	!****      ***********************************************************&								       !&	DEF FN.RESET.PTRS%						&								       !&		\ TOP.LINE%,						&		  BOTTOM.LINE% = 0%					&		\ FINISHED.LINE%(T2620%) = FALSE%			&			FOR T2620% = 0% TO 3%				&		\ TEXT.LINE$(0%) = ""					&		\ ASK.MARGIN% = 80% - LEN(FN.LEVEL$(ASK.LEVEL%))	&		\ LINE.LEVEL%(0%) = ASK.LEVEL%				&		\ ASK.DIR% = +1%	IF ASK.DIR% = 0%		!BL8-03&		!							&		!	Reset the pointers to the first slot in the	&		!	  ring buffer.					&		!	Clear all finished line f      lags in the buffer.	&		!	Clear the first slot text area.			&		!	Set the allowed length of the justification area&		!	Make sure ASK.DIR% is properly setup.		 BL8-03&		!							&	\ FNEND								&26250	!$**************************************************************&	!								&	!								&	!	P R I N T    F I N I S H E D    L I N E S		&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	        ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.PRINT.FINISHED.LINES%( CHAN% )	&	!								&	!	INPUT:	CHAN%	- number of channel to print line on.	&	!								&	!	RETURNS:	- BOTTOM.LINE% is adjusted to the next	&	!			  un-finished line slot in the buffer.	&	!								&	!								&	!***************************************************************&								       !&	D      EF FN.PRINT.FINISHED.LINES%(CHAN%)				&								       !&		\ WHILE FINISHED.LINE%(BOTTOM.LINE%) = TRUE%		&			\ PRINT #CHAN%,					&				FN.LEVEL$(LINE.LEVEL%(BOTTOM.LINE%))	&			      + TEXT.LINE$(BOTTOM.LINE%)		&			\ TE% = FN.ADV.BOTTOM.LINE%			&		\ NEXT							&		!							&		!	For all finished lines at the bottom of the	&		!	  buffer, print them and then advance to the	&		!	  slot.						&		!							&	\ FNEND								&26300	!$**************************************************************&	!								&	!								&	!	C       O M P L E T E    C U R R E N T    L I N E		&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!								&	!	USAGE FORMAT:	FN.COMPLETE.LINE%			&	!								&	!	RETURNS:	- text line pointed to by TOP.LINE% is	&	!			        marked as finished.			&	!								&	!								&	!***************************************************************&								       !&	DEF FN.COMPLETE.LINE%						&								       !&		\ FINISHED.LINE%(TOP.LINE%) = TRUE%			&		!							&		!	Mark the line as finished.			&		!							&	\ FNEND								&26350	!$**************************************************************&	!								&	!								&	!	A D D    T E X T    L I N E    T O    B L O C K		&	!								&	!		 W I T H    J U S T I F Y I N G			&	!								&	!								&	!	Ver      sion:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.ADD.LINE%( C% , TXT$ )		&	!								&	!	INPUT:	C%	- channel where finished lines are	&	!			  printed.				&	!		TXT$	- text string to add to block of text	&	!						      		&	!								&	!	If the input text string begins with "<", then a BREAK	&	!	is performed, followed by insertion of the text string	&	!	directly into the buffer.				&	!	If the text string is empty, the perform a BREAK and	&	!	insert a blank line (paragraphing).			&	!	Otherwise, peel off words from the text string, one-at-	&	!	a-time and add them to the current line.		&	!								&	!	In all cases, print all finished lines before exiting.	&	!								&	!								&	!************************************************      ***************&								       !&	DEF FN.ADD.LINE%(C%,TXT$)					&								       !&		\ T2635$ = TXT$						&		\ T2635$ = EDIT$(T2635$,16%)				&			IF ASCII(TXT$) <> ASCII("<")			&		\ IF T2635$ = ""					&		  OR ASCII(T2635$) = ASCII("<")				&		  THEN							&			  TE% = FN.PERFORM.BREAK%			&			\ TEXT.LINE$(TOP.LINE%) = " "	IF T2635$ = ""	&			\ TEXT.LINE$(TOP.LINE%) = RIGHT(T2635$,2%)	&				IF T2635$ <> ""				&			\ TE% = FN.COMPLETE.LINE%			&			      + FN.ADV.TOP.LINE%			&			\ GO TO 26380					&		!							&		!	Get th      e source text string for processing.	&		!	  converting all SPACES and TABs to single SPACE&		!	  unless line is in literal blocking.		&		!	If empty or BLANK, or beginning with "<",	&		!	  then perform BREAK, fill current line with	&		!	  BLANK if text string is "", or text string	&		!	  data.  Complete the line and then go to	&		!	  finish processing.				&26370		\ WHILE LEN(T2635$) <> 0%				&			\ T2635$ = EDIT$(T2635$,8%)			&			\ T2635% = INSTR(1%,T2635$," ")			&			\ T2635% = LEN(T2635$)+1%	IF T2635% = 0%	&      			\ TE% = FN.PACK.WORD%(LEFT(T2635$,(T2635%-1%)))	&			\ T2635$ = RIGHT(T2635$,(T2635%+1%))		&		\ NEXT							&		!							&		!	Peel words so long as there are some left.	&		!		Remove leading SPACEs.			&		!		Find the next SPACE.			&		!		Assume end of string if only one word 	&		!		  left.					&		!		Peel the word and pack it.		&		!		Remove word from string.		&		!	End of processing loop.				&26380		\ TE% = FN.PRINT.FINISHED.LINES%(C%)			&		!							&		!	Complete action by printed what is ready to	&		!	  print.			      		&		!							&	\ FNEND								&26400	!$**************************************************************&	!								&	!								&	!	P E R F O R M    B R E A K    I N    B L O C K		&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************      &	!								&	!								&	!	USAGE FORMAT:	FN.PERFORM.BREAK%			&	!								&	!	RETURNS:	- If current line not finished, marks	&	!			  it as finished, then advances to next	&	!			  line.					&	!								&	!								&	!***************************************************************&								       !&	DEF FN.PERFORM.BREAK%						&								       !&		\ TE% = FN.COMPLETE.LINE%				&		      + FN.ADV.TOP.LINE%				&			IF TEXT.LINE$(TOP.LINE%) <> ""			&		!							&		!	If current line not finished, then perform	&		!	  BREAK by       completing line and advancing ptr.	&		!							&	\ FNEND								&26450	!$**************************************************************&	!								&	!								&	!	P A C K    W O R D    O N    L I N E			&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************      ************************&	!								&	!								&	!	USAGE FORMAT:	FN.PACK.WORD% ( WRD$ )			&	!								&	!	INPUT:	WRD$	- new word to add to current line.	&	!								&	!								&	!	If new word causes line to be longer than 64 characters	&	!	when added, then line is justified and completed before	&	!	continuing.  New word is then added to current line.	&	!								&	!								&	!***************************************************************&								       !&	DEF FN.PACK.WORD%(WRD$)						&								       !&		\ TE%       = FN.JUSTIFY.LINE%				&		      + FN.COMPLETE.LINE%				&		      + FN.ADV.TOP.LINE%				&			IF LEN( TEXT.LINE$(TOP.LINE%)			&			       +" "					&			       + WRD$		     ) > ASK.MARGIN%	&		\ IF TEXT.LINE$(TOP.LINE%) = ""				&		  THEN							&			  TEXT.LINE$(TOP.LINE%) = WRD$			&		  ELSE							&			  TEXT.LINE$(TOP.LINE%) = TEXT.LINE$(TOP.LINE%)	&						+ " "			&						+ WRD$			&		!							&		!	If overflow will occur, justify and complete	&		!	  current line before adding new word.		&26499	FNEND								&26500	!$******      ********************************************************&	!								&	!								&	!	J U S T I F Y    T O P    T E X T    L I N E		&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.JUST      IFY.LINE%			&	!								&	!	RETURNS:	- top line in buffer is justified	&	!			  to length of 64 characters.		&	!								&	!	LOCAL:	T2650$	- working string			&	!		T2650%	- working variable			&	!		T2651%  -    "       "				&	!		T2652%  -    "       "				&	!		T2653%  -    "       "     			&	!		T2652%()- working variable array		&	!								&	!								&	!	The external variable, ASK.DIR%, must be initialized	&	!	to a value of +1% before using this routine.  The value	&	!	of ASK.DIR% will alternate between +1 and -1,       		&	!	controlling the direction of expansion during jusitifi-	&	!	cation action.						&	!								&	!								&	!***************************************************************&								       !&	DEF FN.JUSTIFY.LINE%						&								       !&		\ TE% = FN.FILL.AFTER.SPECIAL.CHARS%			&		!							&		!	First, we add spaces after .;:? or the		&		!	  exclamation point.				&26510		\ T2650$ = TEXT.LINE$(TOP.LINE%)			&		\ GO TO 26549	IF LEN(T2650$) >= ASK.MARGIN%		&		\ T2650% = 1%						&		\ T2651% = 0%						&		!							&	      	!	Get the target text string.			&		!	Exit if all ready justified.			&		!	Otherwise, set constants to find and count	&		!	  words on line.				&26520		\ T2650% = INSTR((T2650%+2%),T2650$," ")		&		\ IF T2650% <> 0%					&		  THEN							&			  T2651% = T2651% + 1%				&			\ T2652%(T2651%) = T2650%			&			\ GO TO 26520					&		!							&		!	Find next space.				&		!	If found, add to word pointer array and try 	&		!	  again for more words.				&26525		\ IF T2651% = 0%					&		  THEN							&			  PRINT "Can't justify line       - "			&			       +T2650$					&			\ GO TO 26549					&		!							&		!	Flag as error if no spaces to justify with	&26530		\ IF ASK.DIR% < 0%					&		  THEN							&			  T2652% = T2651%				&			\ T2653% =     1%				&		  ELSE							&			  T2652% =     1%				&			\ T2653% = T2651%				&		!							&		!	Set loop control constants according to 	&		!	  direction of filling.				&26535		\ FOR T2650% = T2652% TO T2653% STEP ASK.DIR%		&			\ T2650$ =  LEFT(T2650$,(T2652%(T2650%)-1%))	&				 + " "					&				 + RIGHT(T2650$, T2652%(T      2650%)    )	&			\ T2652%(T2654%) = T2652%(T2654%) + 1%		&				FOR T2654% = T2650% TO T2651%		&			\ GO TO 26540	IF LEN(T2650$) >= ASK.MARGIN%	&		\ NEXT T2650%						&		\ GO TO 26535						&		!							&		!	Loop on all words in string.			&		!		Insert a space for current word.	&		!		Update word entry in pointer array.	&		!		Skip out if finished.			&		!	End of insertion loop.				&		!	Go back for more until done.			&26540		\ TEXT.LINE$(TOP.LINE%) = T2650$			&		\ ASK.DIR% = -ASK.DIR%					&		!							&		!	Restore line t      o text buffer.			&		!	Reverse direction for next justification pass.	&26549	FNEND								&26550	!$**************************************************************&	!								&	!								&	!								&	!	F I L L   I N    E X T R A    S P A C E S    A F T E R	&	!								&	!		S P E C I A L    P U N C T U A T I O N		&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------      ------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.FILL.AFTER.SPECIAL.CHARS%		&	!								&	!	RETURNS:	- the top line in the text buffer has	&	!			  been expanded, if possible, by adding	&	!			  SPACEs after .;:? or the exclamation	&	!			  point characters			&	!								&	!	LOCAL:	T2655$	- working string			&	!		T2655%	- working variable			&	!		T2656%  -    "       "				&	!		T2657%  -          "       "				&	!								&	!								&	!***************************************************************&								       !&	DEF FN.FILL.AFTER.SPECIAL.CHARS%				&								       !&		\ T2655$ = TEXT.LINE$(TOP.LINE%)			&		\ GO TO 26599	IF LEN(T2655$) >= 64%			&		\ T2655% = 1%						&		!							&		!	Get text string to process.			&		!	Skip out if all ready justified.		&		!	Otherwise, initialize search pointer.		&26570		\ T2655% = INSTR((T2655%+2%),T2655$," ")		&		\ GO TO 26590	IF T2655% = 0%				&		\ GO TO 26570	IF INS      TR(1%,				&					".;:!?",			&					MID(T2655$,(T2655%-1%),1%)) = 0%&		!							&		!	Search for next word separation.		&		!	If none, the skip to finish.			&		!	If separation not preceeded by special char,	&		!	  then skip and continue searching.		&		!							&		\ FOR T2656% = 2% TO 3%					&			\ T2657% = ASCII(EDIT$(MID(T2655$,		&						   (T2655%-T2656%),	&						   1%            ),32%))&			\ GOTO 26570	IF T2657% < 65%			&					OR T2657% > 90%			&		\ NEXT T2656%						&		\ T2655$ =  LEFT(T2655$,(T2655%-1%))			&			 +       " "						&			 + RIGHT(T2655$, T2655%    )			&		\ GO TO 26570						&		!							&		!	Check to make sure that preceeding two (2)	&		!	  characters were alphabetic letters.  If not,	&		!	  do not insert space.  Otherwise, insert the	&		!	  SPACE and go back for more.			&26590		\ TEXT.LINE$(TOP.LINE%) = T2655$			&		!							&		!	Replace text line with updated version.		&26599	FNEND								&26600	!$**************************************************************&	!								&	!								&	!	P R O C E S S    A N D    P R       I N T    H E L P		&	!								&	!		  T E X T    P R I N T O U T			&	!								&	!								&	!	Version:	V01					&	!	Edit level:	01					&	!	Edit date:	24-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!	V01.01	012479	  WJB	FN.SUB.TEXT$ function moved to	&	!				correct position in stmt 26600	&	!								&	!***************************************************************&	!								&	!		      						&	!	USAGE FORMAT:	FN.PRINT.HELP.TEXT% ( INDX% ,		&	!					      LVL%   )		&	!								&	!	INPUT:	INDX%	- entry in HELP.INDEX% for block to	&	!			  process				&	!		LVL%	- level for the current query process	&	!								&	!	LOCAL:	T2660%	- working variable			&	!		T2661%	-    "        "				&	!		T2660$	- working string			&	!								&	!								&	!	Each line of the block of text in ASK.HELP$() indicated	&	!	by INDX%, is pulled out and processed.  Substitution	&	!	takes place, followed by insertion or packing,       with the	&	!	final result being printed on the terminal.		&	!								&	!	If a given line segment ends in "-", a continuation	&	!	is made by appending the next line segment read-in to	&	!	the current segment.  When no more continuation occurs,	&	!	normal processing resumes.				&	!								&	!***************************************************************&								       !&	DEF FN.PRINT.HELP.TEXT%(INDX%,LVL%)				&								       !&		\ T2661% = INDX%+INDX%					&		\ ASK.LEVEL% = LVL%					&		\ PRINT							&		\ TE%       = FN.RESET.PTRS%					&		\ T2660$ = ""						&		!							&		!	Set query index.				&		!	Set the current level.				&		!	Preface with blank line before text begins.	&		!	Reset for processing.				&		!	Clear the line accumulator.			&		!							&		\ FOR T2660% = (HELP.INDEX%(T2661%)+1%)			&			    TO (HELP.INDEX%(T2661%)			&			       +HELP.INDEX%(T2661%+1%)-1%)		&			\ T2660$ = T2660$ 				&				 + ASK.HELP$(T2660%)			!V01.01&			\ IF RIGHT(T2660$,LEN(T2660$)) = "-"		&			  THEN						&				  T2660$ = LEFT(T2660$,(LEN(T2660$      )-1%))&			  ELSE						&				  TE% = FN.ADD.LINE%(0%,		!V01.01&					     FN.SUB.TEXT$(T2660$) )	!V01.01&				\ T2660$ = ""				&		!							&		!	For all lines in the query text block.		&		!		Accumulate next line segment after	&		!		  substitution.				&		!		If line ends in "-",			&		!		then remove the "-" and go back for	&		!	 	  next segment.				&		!		Otherwise, add line to printout.	&		!		  Clear the segment accumulator.	&26630		\ NEXT T2660%						&		\ TE% = FN.PERFORM.BREAK%				&		      + FN.PRINT.FINISHED.LINE      S%(0%)			&		!							&		!	Force out any remaining unprinted text.		&		!							&	\ FNEND								&26650	!$**************************************************************&	!								&	!								&	!	R E T U R N    L E V E L    I N D E N T A T I O N	&	!								&	!								&	!	Version:	V01					&	!	Edit level:	00					&	!	Edit date:	15-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!								      &	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.LEVEL$( LVL% )			&	!								&	!	INPUT:	LVL%	- level of associated text string.	&	!								&	!	RETURNS:	- string of SPACEs of length:		&	!								&	!				4*(LVL%-1%)			&	!								&	!								&	!***************************************************************&								       !&	DEF FN.LEVEL$(LVL%) = SPACE$(4%*(LVL%-1%))			&26700	!$**************************************************************&	!								&	!      								&	!	S E T U P    D I A L O G U E    F U N C T I O N		&	!								&	!	C O N T R O L    A N D    W O R K     F I L E S		&	!								&	!								&	!	Version:	V01					&	!	Edit level:	01					&	!	Edit date:	01-Feb-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!	V01.01A	020179	  WJB	Fix the name of the virtual	&	!				array file for SUBSTITUTE.TEXT$	&	!								&	!*********************      ******************************************&	!								&	!								&	!	USAGE FORMAT:	FN.SETUP.DIALOGUE% ( FILENAME$ )	&	!								&	!	INPUT:	FILENAME$	- contains the file name 	&	!				  (and optional device code)	&	!				  of the dialogue help text file&	!								&	!	LOCAL:	T2670$	- working string			&	!								&	!								&	!	The virtual array cover file is opened by this function	&	!	and the maximum query number is retrieved.		&	!								&	!	The logical constants TRUE% and FALSE% are set by this	&	!	function, an      d a virtual array cover file is setup for	&	!	SUBSTITUTE.TEXT$().					&	!								&	!								&	!***************************************************************&								       !&	DEF FN.SETUP.DIALOGUE%(FILENAME$)				&								       !&		\ T2670$ = FILENAME$					&		\ T2670$ = T2670$					&			 + ".VIR"	UNLESS INSTR(1%,FILENAME$,".")	&		\ T2670$ = "SY:"					&			 + T2670$	UNLESS INSTR(1%,FILENAME$,":")	&		!							&		!	Get target file name.				&		!	Default extension if required			&		!	Default device if required			&	      	!							&		\ OPEN T2670$ FOR INPUT AS FILE 12%			&			,ORGANIZATION	VIRTUAL				&			,ACCESS		READ				&		\ ASK.MAX.QUERY% = HELP.INDEX%(0%)			&		\ ASK.LEVEL% = 1%					&		!							&		!	Open the selected help text file.		&		!	Assign the highest query number.		&		!	Preset justification direction.			&		!							&		\  FALSE% =  0%						&		\   TRUE% = -1%						&		!							&		!	Set logical constants.				&		!							&		\ OPEN "SUBTXTVIR.TMP" FOR OUTPUT AS FILE 11%		!01.01A&			,TEMPORARY					&			,ORGANIZATION VIRTUAL				&      		!							&		!	Open the SUBTITUTE.TEXT$() virtual array.	&		!							&	\ FNEND								&26750	!$**************************************************************&	!								&	!								&	!	R E T U R N    F I R S T    L I N E    O F    A		&	!								&	!		  Q U E R Y       B L O C K			&	!								&	!								&	!	Version:	V01					&	!	Edit level:	01					&	!	Edit date:	28-Jan-79				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579      	  WJB	Initial Release			&	!	V01.01	012879	  WJB	Have the function take into	&	!				  account the "-" continuation	&	!				  convention.			&	!				This means the function returns &	!				  the first "logical" line in	&	!				  the indicated block.		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.TEXT.LINE$( QUERY.NUM% )		&	!								&	!	INPUT:	QUERY.NUM%	- index number to query block	&	!				    of text			&	!								&	!	RETURNS:	- first line       of specified query block	&	!								&	!	LOCAL:	T2675%	- working variable			 V01.01&	!		T2675$	- working text string			 V01.01&	!								&	!								&	!	This function is useful for fetching single lines of	&	!	text from the help text virtual array, items such as	&	!	command lines for spawning.				&	!								&	!								&	!***************************************************************&								       !&	DEF FN.TEXT.LINE$(QUERY.NUM%) 					&								       !&		\ T2675% = HELP.INDEX%(2% * QUERY.NUM%)			!V01.01&		\       T2675$ = ASK.HELP$(T2675%)				!V01.01&		!							 V01.01&		!	Get first segment of line.			 V01.01&		!							 V01.01&		\ WHILE RIGHT(T2675$,LEN(T2675$)) = "-"			!V01.01&			\ T2675% = T2675% + 1%				!V01.01&			\ T2675$ = LEFT(T2675$,(LEN(T2675$)-1%))	!V01.01&				 + ASK.HELP$(T2675%)			!V01.01&		\ NEXT							!V01.01&		!							 V01.01&		!	While the accumulating text line is terminated	 V01.01&		!	  by the "-" continuation delimiter,		 V01.01&		!		Advance to the next line in ASK.HELP$	 V01.01&		!		Add to the accu      mulating text string	 V01.01&		!		  after stripping off the "-"		 V01.01&		!	Repeat until no more continuation.		 V01.01&		!							 V01.01&		\ FN.TEXT.LINE$ = T2675$				!V01.01&		!							 V01.01&		!	Pass result out to caller			 V01.01&		!							 V01.01&	\ FNEND								!V01.01&26850	!$**************************************************************&	!								&	!								&	!	G E T    B L O C K    L E N G T H			&	!								&	!								&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	08-Feb-79				&	!	Author      (s):	WJB					&	!								&	!	VER/ED	 DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	020879	  WJB	Initial Release			&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.BLOCK.LENGTH% ( QUERY.NUM% )		&	!								&	!	INPUT:	QUERY.NUM%		- block number		&	!								&	!	RETURN:				- returns the number of	&	!					  logical lines in the	&	!					- returns 0 if no such  &	!					  block, or no lines in &	!					        block			&	!								&	!	LOCAL:	T2685%	- working variable			&	!		T2686%	-    "        "				&	!		T2687%  -    "        "				&	!		T2688%  -    "        "				&	!		T2685$  - working text string			&	!								&	!								&	!***************************************************************&								       !&	DEF FN.BLOCK.LENGTH%(QUERY.NUM%)				&								       !&		\ T2685% = HELP.INDEX%( 2% * QUERY.NUM%      )		&		\ T2686% = HELP.INDEX%((2% * QUERY.NUM%) + 1%)		&		!							&		!	Get pointer to query block.			&		!	Get numbe      r of physical lines in block		&		!							&		\ T2687%,						&		  T2688% = 1%						&		!							&		!	Initialize physical and logical line counters	&		!							&		\ IF T2686% < 1%					&		  THEN							&			  T2688% = 0%					&			\ GO TO 26870					&		!							&		!	If the block does not exist, or there are no	&		!	  lines in the block, force a 0 return.		&26860		\ T2685$ = ASK.HELP$(T2685%)				&		\ WHILE RIGHT(T2685$, LEN(T2685$)) = "-"		&			\ T2685% = T2685% + 1%				&			\ T2687% = T2697% + 1%				&			\ T2685$ = ASK.HEL      P$(T2685%)			&		\ NEXT							&		!							&		!	Get next line from block.			&		!	While line(s) are continuation marked,		&		!		Advance pointer to next line.		&		!		Count lines/block processed.		&		!		Get next line for checking.		&		!	End of continuation scanning loop.		&		!							&		\ T2685% = T2685% + 1%					&		\ T2687% = T2687% + 1%					&		!							&		!	Advance pointer to next line.			&		!	count lines/block processed.			&		!							&		\ IF T2687% < T2686%					&		  THEN							&			  T2688% = T2688% + 1%				&			\       GO TO 26860					&		!							&		!	If we have more lines left in block, count on	&		!	  logical lines processed and go back for more	&		!	  processing.					&26870		\ FN.BLOCK.LENGTH% = T2688%				&		!							&		!	Pass out final result.				&		!							&	\ FNEND								&26950	!$**************************************************************&	!								&	!								&	!	G E T    L I N E     F R O M      B L O C K		&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	19-Feb-79				&	!	Author(s):      	WJB					&	!								&	!	VER/ED	 DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	020879	  WJB	Initial Release			&	!	V01.01	021979	  WJB	Correct termination in search	&	!				for (nth-1) line before required&	!				line.				&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.TEXT.LIST% ( QUERY.NUM% , LINE.CT% )	&	!								&	!	INPUT:	QUERY.NUM%		- block number of block &	!					  to be searched	&	!		LINE.      CT%		- logical line # in	&	!					  block to retrieve	&	!								&	!	RETURN:				- TRUE% if line found,	&	!					  text line returned in	&	!					  ASK.RESP$		&	!					- FALSE% if no such blk	&	!					  or logical line not in&	!					  block			&	!								&	!	LOCAL:	T2695%	- working variable			&	!		T2696%	-    "        "				&	!		T2697%  -    "        "				&	!		T2698%  -    "        "				&	!		T2695$	-    "	      "				&	!								&	!								&	!***************************************************************&								             !&	DEF FN.TEXT.LIST%(QUERY.NUM%,LINE.CT%)				&								       !&		\ FN.TEXT.LIST% = TRUE%					&		\ T2695% = HELP.INDEX%( 2% * QUERY.NUM%    )		&		\ T2696% = HELP.INDEX%((2% * QUERY.NUM%)+1%)		&		!							&		!	Preset return to success.			&		!	Get pointer to data lines.			&		!	Get count of physical lines in block		&		!							&		\ T2697% = 1%						&		!							&		!	Set physical lines processed counter		&		!							&		\ IF T2696% < 1%					&		  THEN							&			  FN.TEXT.LIST% = FALSE%			&			\ GO TO 26999					&		!	      						&		!	If no such block exists, or there are no lines	&		!	  in the block, then return failure.		&26960		\ FOR T2698% = 1% TO (LINE.CT%-1%)			&			\ T2695$ = ASK.HELP$(T2695%)			&			\ WHILE RIGHT(T2695$,LEN(T2695$)) = "-"		&				\ T2695% = T2695% + 1%			&				\ T2697% = T2697% + 1%			&				\ T2695$ = ASK.HELP$(T2695%)		&			\ NEXT						&			\ T2695% = T2695% + 1%				&			\ T2697% = T2697% + 1%				&			\ IF T2697% > T2696%				!01.01A&			  THEN						&				  FN.TEXT.LIST% = FALSE%		&				\ GO TO 26999				&		!							      &		!	For all lines up to 1 less than desired line:	&		!		Get current data line.			&		!		While continuation in progress:		&		!			Advance data line ptr.		&		!			Count lines processed.		&		!			Get next data line.		&		!			If all physical lines in block	&		!			  process, then return failure.	&26970		\ NEXT T2698%						&		!							&		!	End of pre-scanning loop			&		!							&		\ ASK.RESP$ = ASK.HELP$(T2695%)				&		\ WHILE RIGHT(ASK.RESP$, LEN(ASK.RESP$)) = "-"		&			\ T2695% = T2695% + 1%				&			\ ASK.RESP$ = 					&   H  				LEFT(ASK.RESP$, (LEN(ASK.RESP$)-1%) )	&			      + ASK.HELP$(T2695%)			&		\ NEXT							&		!							&		!	Start return string with first data line.	&		!	While continuation in progress:			&		!		Advance data line ptr			&		!		Append next data line to response string&		!	End of continuation processing loop		&26999	\ FNEND								&H          '`;kQÁ› 8$        ; COPYRIGHT	1977, DIGITAL EQUIPMENT CORP.,  MAYNARD, MASS.;; THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE; ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION; OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEMS, EXCEPT; AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC.;; THE INFORMATION IN THIS DOCUMENT 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 RELIABILTY;       OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.;;;;;;	SUBPROGRAM TO RETURN THE DEVICE, UNIT, AND FILE ID FOR A FILE;;;;	BASIC+2	 	CALL(STRING$,BLOCK%,ERR%);;	where 	STRING$= the file name string;		BLOCK%= the last allocated block in the file;		ERR%    =the error code- a negative value indicates an;			  	error condition.;				-1 MEANS THE COMMAND STRING INTERPRETER FAILED;				-2 MEANS THE OPEN FAILED;				 0 MEANS SUCCESS;;;	LINKAGE INFORMATION - ;		R5	- (BASIC+2)LINKAGE = ADDRESS OF THE (ARGUMENT       COUNT) ;		@2(R5)	- HOLDS THE ADDRESS OF THE STRING;		(@2(R5)+2)- THIS ADDRESS HOLDS THE LENGTH OF THE STRING;		@4(R5)	- HOLDS THE LAST BLOCK ALLOCATED;		@6(R5)	- ERROR ARGUMENT;;	ALL REGISTERS ARE USED IN THIS ROUTINE - THE CONTENTS OF R0-R4 ARE;	VOLITILE.;	.PAGE;	.TITLE	FIXIT	.MCALL	CSI$,CSI$1,CSI$2	.MCALL	FINIT$,NMBLK$,FDBDF$,FSRSZ$,FDOP$A	.MCALL	OPEN$U,CLOSE$	.LIST MEB;	CSI$				; SET UP THE CONTROL BLOCK	.EVENCSIBLK:	.BLKB	C.SIZE			; ALLOCATE THE CONTROL BLOCK	.EVENSWITCH:	.WORD				;INITIALIZE ONCE SWITC      HSTORE:	.BLKB	34.			;FILE NAME STRIPPED OF BLANKSBUFFER:	.BLKB	80.			; BUFFER FOR FILE;FDB::	FDBDF$	FDOP$A	12	FSRSZ$	1FIXIT::	FINIT$1$:	MOV	2(R5),R4		;STRING ADDRESS;	MOV	#STORE,R1		;	MOV	(R4),R0			;	MOV	2(R4),R2		;	CLR	R32$:	CMPB	(R0),#32.		;	BEQ	3$			;	MOVB	(R0),(R1)+		;	INC R33$:	INC	R0			;	SOB	R2,2$			;	MOV	#-1,@6(R5)		; ERROR IS -1 FOR THIS POINT	CSI$1	#CSIBLK,#STORE,R3	; CALL THE SYNTAX SCANNER	BCS	55$			; ERROR	CSI$2	#CSIBLK,OUTPUT		; CALL THE ACTUAL PARSER	BCS	55$			; ERROR	MOV	#CSIBLK+C.DSDS,R2	; P   b  OINT TO DATASET DESCRIPTOR	MOV	#FDB,R0			;ADDRESS OF FDB	DEC	@6(R5)			; ERROR IS -2 FOR THIS STAGE	OPEN$U	R0,,R2,,#BUFFER,80.	; OPEN THE FILE	BCS	55$			; OPEN FAILED	MOV	@4(R5),F.EFBK+2(R0)	; PUT THE END OF FILE BLOCK IN	MOV	#400,F.FFBY(R0)		; THE WHOLE LAST BLOCK IS USED	CLOSE$	R0			; CLOSE IT	CLR	@6(R5)			; EVERYTHING IS OK55$:	RTS	PC			;RETURN	.END b         „0 “Á› 8$        1	!***************************************************************&	!								&	!								&	!	T R A N S A C T I O N   P R O C E S S O R		&	!								&	!	D E F I N I T I O N   U T IL I T Y			&	!								&	!								&	!								&	!	Program:	TPDEF					&	!	Version:	1					&	!	Edit Level:	T					&	!	Edit date:	16-AUG-78				&	!	Author(s):	GW					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		             C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$*****************************      *********************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	1.01AA	3/1/79	  CP	Exit if TPDEF is not being	 1.01AA&	!				run from TT0: or batch (VTnn).	 1.01AA&	!								 1.01AB&	!	1.01AB	3/7/79	  CP	Eliminate @[1,2]TPDEF. Spawn	 1.01AB&	!				DCL to execute TEMP.CMD commands.1.01AB&	!				Also add prompt for maximum	 1.01AB      &	!				number of TSTs concurrently	 1.01AB&	!				permitted in the cache.		 1.01AB&	!								&	!***************************************************************&100	!***************************************************************&	!								&	!								&	!	P R O G R A M   D E S C R I P T I O N			&	!								&	!								&	!    The TPDEF utility allows the user to CREATE a  transac-	&	!    tion  processor,  DELETE  a transaction processor, EDIT	&	!    the parameters defining a transaction  processor,  SHOW	&	!    o      r  PRINT the parameters defining a transaction proces-	&	!    sor, RENAME the transaction processor, COPY  the  tran-	&	!    saction  processor,  and  INDEX the defined transaction	&	!    processors.						&	!    								&	!    If the function is CREATE, a record for the transaction	&	!    processor  being  defined is created in the transaction	&	!    processors file, TPDEF.TPF.  A unique transaction  pro-	&	!    cessor  number  has  to  be assigned to the transaction	&	!    processor and is saved in  the  t      ransaction  processors	&	!    File  record.  The TPDEF query program directs the user	&	!    in the specification of the general characteristics  of	&	!    the  transaction processor.  From the information obta-	&	!    ined, a file of Macro equate  statements  defining  the	&	!    common  data  areas  is created, named according to the	&	!    transaction processor (processor.MAC).  TPDEF spawns	 1.01AB&	!    tasks to assemble  the  modules  processor.MAC		 1.01AB&	!    and  TPSCOM.MAC  together,  and to lin      k			 1.01AB&	!    the resulting object  module  (processor.OBJ)  with  no	&	!    header  or  stack,  and to delete the object module.  A	&	!    similar set of commands produce the  TIM  region  file,	&	!    processor.TIM.    The   transaction  processor-specific	&	!    files to be used by the  transaction  processor  System	&	!    Information  Utilities are created by TPDEF as follows:	&	!         [1,300]processor.STA - Station Definition File	&	!         [1,300]processor.TRA - Transaction Definition File	&      	!         [1,300]processor.FIL - User Files Definition File	&	!         [1,300]processor.WOR - Work Class Definition File	&	!         [1,300]processor.AUT - User Authorization File	&	!    								&	!    If the function is DELETE, the  transaction  processors	&	!    file  record corresponding to the transaction processor	&	!    specified is deleted.  DCL is spawned to			 1.01AB&	!    delete the files previously cre-				 1.01AB&	!    ated (processor.MAC,TSK,TIM,STA,TRA,FIL,WOR, and AUT).	&	!    								&	!          If a transaction processor is being EDITed, the  dialo-	&	!    gue  is  the same as for CREATE, except that the previ-	&	!    ously specified value is displayed with each  question.	&	!    The  old values are contained in the file processor.MAC	&	!    and in the transaction processors file record.  If  the	&	!    user  enters a new value in response to a question, the	&	!    appropriate update is made.  The  spawned commands  	 1.01AB&	!    are the same as for CREATE.				 1.01AB&	!    								&	!    If SH      OW or PRINT is  specified,  the  current  list  of	&	!    transaction  processor  definition  parameters from the	&	!    source file, processor.MAC, and the transaction proces-	&	!    sors  file  record  is  printed  with an explanation of	&	!    each.							&	!    								&	!    If RENAME is specified, the names  of  the  transaction	&	!    processor  record  and  all  its  associated  files are	&	!    changed.  							&	!    								&	!    If COPY is specified, the transaction processor  record	&	!    and        its  associated  data  files are copied with a new	&	!    name.							&	!    								&	!    If INDEX is specified, a list of the  defined  transac-	&	!    tion  processors  and  their unique identifiers is pro-	&	!    duced on the terminal.					&	!    								&	!    When the TPDEF query program exits, control returns  to	&	!    the  command file (TPDEF.CMD) which causes the indirect	&	!    command file (TEMP.CMD) created by the TPDEF  program	&	!    to execute.  The file TEMP.CMD is then deleted.		&	!				      				&	!								&	!***************************************************************&300	!***************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		equate macro file input			&	!	    2		equate macro file outut			&	!	    3		listing device				&	!	    4		definition files			&	!	    5		application file TPDEF.TPF input/o      utput	&	!	    6		command file TEMP.CMD output		&	!			Channel 6 is no longer used		 1.01AB&	!	    7		command file TEMP.LNK output		&	!								&	!***************************************************************&400	!***************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ACCOUNT$		UIC for application files	&      	!	ACCOUNT1$		UIC for APFIL file		&	!	ASK.CVT$		converted response		&	!	ASK.HELP$()		help text for prompts		&	!	ASK.NUM%		integer response		&	!	BEGLABEL%		index of first label		&	!	COMMAND$		selected command		&	!	CRASHLABEL%		index of crash recovery prompt	&	!	CRLF$			carriage return - line feed	&	!	ENDLABEL%		index of last label		&	!	EXT$()			file extensions			&	!	FALSE%			used for spawn routines		 1.01AB&	!	FILE.END$		end of file marker		&	!	FILLER$			remainder of TP record		&	!	I%			looping parameter		&	      !	LABEL$()		labels for equates		&	!	MIN%()			minimum allowed values		&	!	MAX%()			maximum allowed values		&	!	MESSAGELABEL%		label for message size		&	!	NAME$			transaction processor name	&	!	NEWNAME$		new transaction processor name	&	!	NEWRECORD%		index of first free record	&	!	OLDNAME$		old transaction processor name	&	!	OLDRECORD%		index of current record		&	!	PROMPT$()		prompts				&	!	RECORD$			current record			&	!	SLAVELABEL%		label for link slave prompt	&	!	STATUS%			TP status			&	!	TEMP$			temporary       string storage	 1.01AB&	!	TRUE%			used for spawn routines		 1.01AB&	!	T2900%,T2900%(),T2900$	Used for FN.CHECK.TT0%.		 1.01AA&	!	UNIQUE%			unique identifier		&	!	VALUE$()		current value of label		&	!	VER.EDIT.NUM$		version/edit number for program	&	!	VIRTUAL$()		element in the application file	&	!	W's			working storage			&	!								&	!								&	!***************************************************************&700	!***************************************************************&	!								&	!								&	!		S U       B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	10100		print 2 empty comment lines		&	!	10140		print 1 empty comment line		&	!	20000		spawn task with DCL command line	 1.01AB&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!			      					&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	15020	FN.ID%		compute ID number		&	!	15100	FN.TEXT		print comment text line		&	!	15300	FN.LOOKUP	look up TP			&	!	25001	FN.ASK		dialog function			&	!	29000	FN.CHECK.TT0%	Returns zero if ANALYSIS is not	 1.01AA&	!				being run from TT0: or batch.	 1.01AA&	!								&	!***************************************************************&800	!*********************************************************      ******&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!***************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 de      note IMAGE statements.			&	!								&	!***************************************************************&910	\ DIM LABEL$(17), PROMPT$(17), ASK.HELP$(17), MIN%(17),		&		MAX%(17), VALUE$(17), EXT$(9)				&920	\ DIM #5, VIRTUAL$(84)=64					&950	\ MAP (TPDEF) RECORD$=64					&	\ MAP (TPDEF) NAME$=6%, STATUS%, FILLER$=54%, UNIQUE%		&960	\ MAP (STAMAP) STATION$=7, PRIORITY$=1, STAFILL$=926		&	\ MAP (TRAMAP) TRANSACTION$=6, TRAFILL$=2066			&	\ MAP (AUTMAP) AUTHORIZATION$=20, AUTFILL$=420			&	!								&	!	Define the k      eys for the various definition files.	&1000	!***************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GOTO 19000						&	!								&	!	Set up standard error trap.				&1005	\ IF FN.CHECK.TT0% = 0						!1.01AA&	  THEN PRINT							!1.01AA&	\	PRINT "? TPDEF must be run from TT0: or batch."		!1.01AA&	\	GOTO 32767						!1.01AA&	!		      						 1.01AA&	!	If ANALYSIS is not being run from TT0: or batch,	 1.01AA&	!	print error message and exit.				 1.01AA&1010	\ VER.EDIT.NUM$ = "V1.0"					&	!								&	!	Assign current version-edit number			&1020	\ PRINT								&	\ PRINT "TPDEF " ; VER.EDIT.NUM$				&	\ PRINT "Transaction processor definition utility"		&	!								&	!	Output program herald number.				&1050	\ ACCOUNT$ = "[1,300]"						&	\ ACCOUNT1$ = "[1,1]"						&	\ CRLF$ = CHR$(13%) + CHR$(10%)					&	\ FILE.END$ = "######"						&	\ EXT$(1%) = "      .MAC"						&	\ EXT$(2%) = ".FDF"						&	\ EXT$(3%) = ".TSK"						&	\ EXT$(4%) = ".TIM"						&	\ EXT$(5%) = ".STA"						&	\ EXT$(6%) = ".TRA"						&	\ EXT$(7%) = ".FIL"						&	\ EXT$(8%) = ".WOR"						&	\ EXT$(9%) = ".AUT"						&	\ TRUE% = -1%							!1.01AB&	\ FALSE% = 0%							!1.01AB&	\ BREED.TASK$ = "DCL..."					!1.01AB&	\ BREED.DEBUG% = FALSE%						!1.01AB&	\ BREED.NOSPAWN% = FALSE%					!1.01AB&	\ BREED.RETURN% = TRUE%						!1.01AB&	!								&	!	Define the accounts for the files.			&	!	Define the number       of system labels.			&	!	Define the carriage return - line feed sequence.	&	!	Define the end of file mark				&	!	Define the file extensions.				&	!	Set values for true and false.				 1.01AB&	!	Set parameters for spawning routine: the task to spawn	 1.01AB&	!	is DCL, no debug mode, execute spawn, and return on	 1.01AB&	!	error.							 1.01AB&1250	\ I% = 1%							&	\ ASK.HELP$(I%) = "Enter one of the following commands:"	&		+ CRLF$ + CRLF$ + "	COPY" + CRLF$ + "	CREATE"	&		+ CRLF$ + "	DELETE" + CRLF$ + "	EDIT"       + CRLF$	&		+ "	EXIT" + CRLF$ + "	INDEX" + CRLF$		&		+ "	PRINT" + CRLF$ + "	RENAME" + CRLF$		&		+ "	SHOW"						&	\ I% = I% + 1%							&	\ ASK.HELP$(I%) = "Enter the name of an existing transaction "	&		+ "processor.  A processor  name consists" + CRLF$	&		+ "of 1 to 6 alphanumeric characters."			&	\ I% = I% + 1%							&	\ ASK.HELP$(I%) = "Enter a 1 to 6 alphanumeric character "	&		+ "transaction processor name.  This must not" + CRLF$	&		+ "be an existing transaction processor name."		&	\ I% = I% + 1%							      &	\ BEGLABEL% = I%						&	\ LABEL$(I%)  = "SGTDTM"					&	\ PROMPT$(I%)  = "Maximum number of transaction types"		&	\ ASK.HELP$(I%) = "Specify  the number of  transaction types "	&		+ " (<=64)  that can be  defined for this" + CRLF$	&		+ "transaction processor."				&	\ MAX%(I%) = 64%						&	\ MIN%(I%) = 1%							&	\ I% = I% + 1%							&	\ LABEL$(I%)  = "SGCTM"						&	\ PROMPT$(I%)  = "Maximum number of concurrent transaction "	&		+ "instances"						&	\ ASK.HELP$(I%) = "Specify the maximum number of transacti      on "	&		+ "instances (<=64) that can be active at" + CRLF$	&		+ "one time."						&	\ MAX%(I%) = 64%						&	\ MIN%(I%) = 1%							&	\ I% = I% + 1%							&	\ LABEL$(I%)  = "SGTERM"					&	\ PROMPT$(I%)  = "Maximum number of application terminals"	&	\ ASK.HELP$(I%) = "Specify the maximum number of devices <= 64)"&		+ " that can be  defined as application" + CRLF$	&		+ "terminals for the transaction processor."		&	\ MAX%(I%) = 64%						&	\ MIN%(I%) = 0%							&	\ I% = I% + 1%							&	\ LABEL$(I%)  = "SGUTST"				      	&	\ PROMPT$(I%)  = "Maximum number of user TSTs"			&	\ ASK.HELP$(I%) = "Specify  the  maximum  number of TSTs  (<="	&		+ "256)  that  can  be  included  in  the" + CRLF$	&		+ "transaction processor."				&	\ MAX%(I%) = 256%						&	\ MIN%(I%) = 1%							&	\ I% = I% + 1%							!1.01AB&	\ LABEL$(I%) = "SGTST"						!1.01AB&	\ PROMPT$(I%) = "Maximum number of concurrently active TSTs"	!1.01AB&	\ ASK.HELP$(I%) = "Specify the number of TSTs (<=8) that can be"!1.01AB&				+ " active at one time."		!1.01AB&	\ MAX%(I%      ) = 8%							!1.01AB&	\ MIN%(I%) = 1%							!1.01AB&	\ I% = I% + 1%							&	\ LABEL$(I%) = "SGMSLK"						&	\ PROMPT$(I%) = "Maximum number of master link stations"	&	\ ASK.HELP$(I%) = "Specify  the  maximum  possible  number  "	&		+ "(<=10)  of   connections  between  this" + CRLF$	&		+ "transaction processor and  an IBM system and  "	&		+ "between this processor and another" + CRLF$		&		+ "transaction processor."				&	\ MAX%(I%) = 10%						&	\ MIN%(I%) = 0%							&	\ I% = I% + 1%							&	\ LABEL$(I%) = "SG      SLLK"						&	\ PROMPT$(I%) = "Maximum number of slave link stations"		&	\ ASK.HELP$(I%) = "Specify  the  maximum number  of  "		&		+ "transaction  instances  (<=64)  that  can  run"	&		+ CRLF$							&		+ "concurrently when  these instances  have  been "	&		+ "initiated by  another transaction" + CRLF$		&		+ "processor."						&	\ MAX%(I%) = 64%						&	\ MIN%(I%) = 0%							&	\ SLAVELABEL% = I%						&	\ I% = I% + 1%							&	\ LABEL$(I%) = "SGMGLK"						&	\ PROMPT$(I%) = "Maximum size of receive link message"	      	&	\ ASK.HELP$(I%) = "Specify the  size  (in bytes;  <=512)  of "	&		+ "the  largest station message that  the" + CRLF$	&		+ "processor can receive from another transaction "	&		+ "processor."						&	\ MAX%(I%) = 512%						&	\ MIN%(I%) = 0%							&	\ MESSAGELABEL% = I%						&	\ I% = I% + 1%							&	\ LABEL$(I%) = "SGSBBT"						&	\ PROMPT$(I%) = "Maximum number of submit batch stations"	&	\ ASK.HELP$(I%) = "Specify the number of  batch queues  (<=1)"	&		+ "  that can be  associated by  means of" + CRLF$	&		+       "submit batch stations with the transaction processor"&	\ MAX%(I%) = 1%							&	\ MIN%(I%) = 0%							&	\ I% = I% + 1%							&	\ LABEL$(I%) = "SGSLBT"						&	\ PROMPT$(I%) = "Maximum number of slave batch stations"	&	\ ASK.HELP$(I%) = "Specify  the maximum  number  of  "		&		+ "transaction  instances  (<=16)  that  can  run"	&		+ CRLF$							&		+ "concurrently when  these  instances  have been "	&		+ "initiated  by  a  program in  the" + CRLF$		&		+ "support enviroment."					&	\ MAX%(I%) = 16%						&	\ MIN      %(I%) = 0%							&	\ I% = I% + 1%							&	\ LABEL$(I%)  = "SGNMBX"					&	\ PROMPT$(I%)  = "Maximum number of mailbox stations"		&	\ ASK.HELP$(I%) = "Specify the maximum number of stations "	&		+ "(<=10) that can be defined as mailboxes."		&	\ MAX%(I%) = 10%						&	\ MIN%(I%) = 0%							&	\ I% = I% + 1%							&	\ LABEL$(I%) = "SGFILE"						&	\ PROMPT$(I%) = "Maximum number of application data files"	&	\ ASK.HELP$(I%) = "Specify the maximum number of application "	&		+ "data files (<=64)  that can be used by"       + CRLF$	&		+ "this transaction processor."				&	\ MAX%(I%) = 64%						&	\ MIN%(I%) = 0%							&	\ I% = I% + 1%							&	\ LABEL$(I%) = "SGSLOT"						&	\ PROMPT$(I%) = "Maximum size of a transaction slot [64 byte "	&		+ "blocks]"						&	\ ASK.HELP$(I%) = "Specify  the  maximum  amount of  space,  "	&		+ "in  64-byte blocks,  allowed for  each" + CRLF$	&		+ "transaction slot.  Each slot includes a station "	&		+ "message, the TST work space, and" + CRLF$		&		+ "the system workspace."				&	\ MAX%(I%) = 1024%		      				&	\ MIN%(I%) = 1%							&	\ I% = I% + 1%							&	\ LABEL$(I%) = "SGACRC"						&	\ PROMPT$(I%) = "Automatic crash recovery"			&	\ ASK.HELP$(I%) = "Answer YES to enable automatic recovery "	&		+ "from a crash. Otherwise answer NO."			&	\ MAX%(I%) = 32767%						&	\ MIN%(I%) = -32767%						&	\ CRASHLABEL% = I%						&	\ ENDLABEL% = I%						&	!								&	!	Define the prompts, labels, help text, maximum and	&	!	minimum values for the parameters. Record the special	&	!	labels.							&1350	! OPEN "TEMP.CMD" FOR O      UTPUT AS FILE #6%			 1.01AB&	\ OPEN ACCOUNT1$ + "TPDEF.TPF" FOR INPUT AS FILE #5%,		&		 ORGANIZATION VIRTUAL			 		&	!								&	!	Open the application definition file.			&1400	!***************************************************************&	!								&	!								&	!	S T A R T   O F   D I A L O G				&	!								&	!								&	!***************************************************************&	!								&	\ W% = FN.ASK%("Command","EXIT",				&		"/CREATE/EDIT/SHOW/PRINT/DELETE/INDEX/RENAME/COPY/EXIT",&		0%,1%,1%)					      	&	\ GOTO 1400 IF W% = 1%						&	\ GOTO 32000 IF ((W% = 2%) OR (ASK.CVT$ = "EXIT"))		&	\ NEWRECORD% = -1%						&	\ COMMAND$ = ASK.CVT$						&	\ GOTO 1950 IF COMMAND$ = "CREATE"				&	!								&	!	Get the command. Repeat if response is ESCAPE. Exit if	&	!	response is ^Z or EXIT. Initialize the free record	&	!	pointer. Save the command. Skip if CREATE		&1450	!***************************************************************&	!								&	!								&	!	I N D E X   P R O C E S S I N G				&	!								&	!								&	!****      ***********************************************************&	\ IF COMMAND$ = "INDEX" THEN PRINT FOR I% = 1% TO 5%		&	\ PRINT "NAME		 ID"					&	\ PRINT								&	\ W% = FN.LOOKUP%("")						&	\ PRINT FOR I% = 1% TO 5%					&	\ GOTO 1400							&	!								&	!	If the command is INDEX print the list. The printing is	&	!	actually done by the lookup routine. Go back for the	&	!	next command.						&1500	\ ON FN.ASK%("Old transaction processor name","","A",6%,2%,1%)	&		GOTO 1400,32000,1550					&	!								&	!	Prompt for       the old transaction name.			&	!	Branch on ESC, ^Z, Other				&1550	\ OLDNAME$ = ASK.CVT$						&	\ OLDRECORD% = FN.LOOKUP%(OLDNAME$)				&	\ IF OLDRECORD% < 0% THEN PRINT					&	\ PRINT "% Transaction processor not defined"			&	\ GOTO 1500							&	!								&	!	Save the response. Check if it is defined. If not its 	&	!	an error.						&1600	\ W$ = VIRTUAL$(OLDRECORD%)					&	\ RECORD$ = W$ + STRING$(64%-LEN(W$),0%)			&	\ GOTO 1700 IF ((COMMAND$ <> "DELETE")				&		 AND (COMMAND$ <> "RENAME"))				&	\ IF STATUS% <>       0% THEN PRINT					&	\ PRINT "% Transaction processor is currently installed"	&	\ GOTO 1500							&	!								&	!	Get the old record. Skip if the command is not DELETE	&	!	or RENAME. If the transaction processor is installed,	&	!	its an error. Go reprompt.				&1650	\ GOTO 1950 IF COMMAND$ <> "DELETE"				&	\ FOR I% = 1% TO 9%						!1.01AB&	\	BREED.COMMAND$ = COMMAND$ + " " + ACCOUNT$ + OLDNAME$ +	!1.01AB&		 EXT$(I%) + ";*"					!1.01AB&	\ 	GOSUB 20000						!1.01AB&	\	PRINT '% Failed to "' + BREED.COMMAND$ + '"'      		!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	\ NEXT I%							!1.01AB&	\ VIRTUAL$(OLDRECORD%) = ""					&	\ GOTO 32000							&	!								&	!	Skip if command is RENAME				&	!	Spawn DCL to delete TP's [1,300] files. Print error	 1.01AB&	!	error message on failure.				 1.01AB&	!	Delete the record and exit.				&1700	\ GOTO 1950 IF COMMAND$ = "COPY"				&	\ NEWNAME$ = OLDNAME$						&	\ NEWRECORD% = OLDRECORD%					&	\ OPEN ACCOUNT$ + OLDNAME$+ ".MAC" FOR INPUT AS FILE #1%	&	!								&	!	Skip if command is COPY. T      herefore doing EDIT or lists.	&	!	Temporarily make the old and new records the same.	&	!	Open the old equate file.				&1750	\ LINPUT #1%, W$						&	\ W% = INSTR(1%,W$,"=")						&	\ GOTO 1750 IF W% = 0%						&	\ W1$ = EDIT$(LEFT(W$,W%-2%),2%+4%+32%)				&	\ GOTO 1800 IF W1$ = LABEL$(I%) FOR I% = BEGLABEL% TO ENDLABEL%	&	\ GOTO 1750							&	!								&	!	Read a line from the equate file. Ignore it unless it	&	!	contains one of our labels. Loop till the file is empty.&	!	The loop will terminate with an error con      dition.	&1800	\ W$ = RIGHT(W$,W%+1%)						&	\ W% = INSTR(1%,W$,";")						&	\ W$ = LEFT(W$,W%-1%) IF W%<>0%					&	\ W% = INSTR(1%,W$,".")						&	\ W$ = LEFT(W$,W%-1%) IF W% <> 0%				&	\ VALUE$(I%) = EDIT$(W$,2%+4%)					&	\ GOTO 1750							&	!								&	!	Unpack and save the value associated with this label.	&	!	Loop back for the next line in the file.		&1850	\ CLOSE #1%							&	\ IF VALUE$(CRASHLABEL%) = "SY"					&		THEN VALUE$(CRASHLABEL%) = "YES"			&		ELSE VALUE$(CRASHLABEL%) = "NO"				&	!								&	!	Close       the source file. Get the old values for default	&	!	journals. Adjust the crash recovery value.		&1900	!***************************************************************&	!								&	!								&	!	S H O W + P R I N T   P R O C E S S I N G		&	!								&	!								&	!***************************************************************&	\ GOTO 2250 IF COMMAND$ = "EDIT"				&	\ W$ = "TI:" 							&	\ W$ = "CL:" IF COMMAND$ = "PRINT"				&	\ OPEN W$ FOR OUTPUT AS FILE #3%				&	\ PRINT #3% FOR I% = 1% TO 5%					&	\ PRINT #3%,       "Definition of Transaction Processor - " + 	&		OLDNAME$						&	\ PRINT #3% FOR I% = 1% TO 2%					&	\ PRINT #3%, PROMPT$(I%);TAB(65);VALUE$(I%)			&		FOR I% = BEGLABEL% TO ENDLABEL%				&	\ PRINT #3% FOR I% = 1% TO 5%					&	\ CLOSE #3%							&	\ GOTO 1400							&	!								&	!	If a listing was requested, list it on the appropriate	&	!	device and go back for a new command.			&1950	\ ON FN.ASK%("New transaction processor name","","A",6%,3%,1%)	&		GOTO 2000,32000,2050					&	!								&	!	Ask for the new name. Branc      h on ESC, ^Z, OTHER		&2000	\ IF COMMAND$ = "CREATE" GOTO 1400 ELSE GOTO 1500		&	!								&	!	Escape processing. For create return to the command	&	!	prompt. For everything else return to the old TP prompt.&2050	\ IF INSTR(1%,"NONE/DONE/ALL/",ASK.CVT$+"/") <> 0% THEN PRINT	&	\ PRINT "% NONE, DONE and ALL are invalid transaction processor"&		; " names."						&	\ GOTO 1950							&	!								&	!	If the new name is one of the reserved ones, tell the	&	!	user and reprompt.					&2080	\ NEWNAME$ = ASK.CVT$						&	\       IF FN.LOOKUP%(NEWNAME$) <> -1% THEN PRINT			&	\ PRINT "% Transaction processor is already defined"		&	\ GOTO 1950							&	!								&	!	Save the response. Check if it already exists. If	&	!	it does its an error.					&2100	!***************************************************************&	!								&	!								&	!	R E N A M E   P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ NAME$ = NEWNAME$						&	\ IF COMMAND$ = "RENAME" THEN VIRTUAL$(OLDRECORD%      ) = RECORD$	&	\ FOR I% = 1% TO 9%						!1.01AB&	\	BREED.COMMAND$ = COMMAND$ + " " + ACCOUNT$ + OLDNAME$ +	!1.01AB&		EXT$(I%) + " " + ACCOUNT$ + NEWNAME$ + EXT$(I%)		!1.01AB&	\ 	GOSUB 20000						!1.01AB&	\	PRINT '% Failed to "' + BREED.COMMAND$ + '"'		!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	\ NEXT I%							!1.01AB&	\ GOTO 32000							&	!								&	!	Change the record name. If we are renaming, put the	&	!	rename commands for the files into the command file.	&	!	Go exit							&2120	!*********************      ******************************************&	!								&	!								&	!	C R E A T E + C O P Y   P R O C E S S I N G		&	!								&	!								&	!***************************************************************&	\ IF NEWRECORD% = -1% THEN NEWRECORD% = ENDRECORD% 	 	&	\ IF ENDRECORD% <> 84% THEN VIRTUAL$(NEWRECORD%+1%) = FILE.END$	&		ELSE PRINT						&	\ PRINT "% Maximum number of transaction processors have been "	&		; "specified"						&	\ GOTO 1400							&	!								&	!	If there were no empty records, use the end rec      ord.	&	!	Add another end record.					&	!	If there is no room, say so and go back for a new	&	!	command.						&2150	\ UNIQUE% = FN.ID%(NEWRECORD%)					&	\ STATUS% = 0%							&	\ IF COMMAND$ = "CREATE" THEN FILLER$ = STRING$(54%,0%)		&		ELSE VIRTUAL$(NEWRECORD%) = RECORD$			&	\ GOTO 3150							&	!								&	!	Come here for CREATE and COPY. Set up the new record.	&	!	If command is CREATE then clear the rest of the record.	&	!	If command is COPY write the new record and skip.	&2200	\ VALUE$(I%) = "" FOR I% = BEG      LABEL% TO ENDLABEL%		&	\ VALUE$(CRASHLABEL%) = "NO"					&	!								&	!	Initialize the values					&2250	\ I% = BEGLABEL%						&	!								&	!	Set the looping parameter to point to the start of the	&	!	prompt list.						&2300	\ GOTO 2320 IF I% <> MESSAGELABEL%				&	\ GOTO 2320 IF VALUE$(SLAVELABEL%) <> "0"			&	\ ASK.CVT$ = "0"						&	\ GOTO 2450							&	!								&	!	If there are no slave link stations, then the max	&	!	received message size is 0.				&2320	\ W$ = "I"							&	\ W$ = "Y" IF I% = CRASHLABEL%					&      	\ ON FN.ASK%(PROMPT$(I%),VALUE$(I%),W$,MAX%(I%),I%,1%)		&		GOTO 2350,32000,2400,2400				&	!								&	!	Ask the prompt associated with a label.			&	!	Branch on ESC, ^Z, OK, OK				&2350	\ I% = I% - 1%							&	\ GOTO 2350 IF ((I% = MESSAGELABEL%) AND			&		(VALUE$(SLAVELABEL%) = "0"))				&	\ GOTO 2300 IF I% >= BEGLABEL%					&	\ GOTO 1950 IF COMMAND$ = "CREATE"				&	\ GOTO 1500							&	!								&	!	Come here if ESC was typed. Back up one prompt. If we	&	!	were at the first prompt go back to the appropriate	&	!	      prompt. If we back up to the received message size	&	!	question and it was skipped then back up one more.	&2400	\ IF ASK.NUM% < MIN%(I%) THEN PRINT				&	\ PRINT "% Minimum valid respose is" ; NUM$(MIN%(I%))		&	\ GOTO 2300							&	!								&	!	If the response was less then the minimum, report an	&	!	error and go to reprompt.				&2450	\ VALUE$(I%) = ASK.CVT$						&	\ IF I% < ENDLABEL% THEN I% = I% + 1%				&	\ GOTO 2300							&	!								&	!	Save the value in the current value array. If this is	&	!	not the last       prompt loop.				&2800	\ IF VALUE$(CRASHLABEL%) = "NO" THEN VALUE$(CRASHLABEL%) = "0"	&		ELSE VALUE$(CRASHLABEL%) = "SY.CRC"			&	!								&	!	Reset the crash recovery value for the mac file		&3000	!***************************************************************&	!								&	!								&	!  D I A L O G   F I N I S H E D    -   W R I T E   F I L E S	&	!								&	!								&	!***************************************************************&	!								&	\ PRINT '3000'							 !XXXX&	\ VIRTUAL$(NEWRECORD%) = RECORD$		      		&	\ CLOSE #5%							&	\ OPEN ACCOUNT$ + NEWNAME$ +".MAC" FOR OUTPUT AS FILE #2%	&	!								&	!	Write the new record to the application file.		&	!	Close the application file and open a new macro file.	&	!								&3050	\ PRINT #2%, ".TITLE	TPDEF modifiable equates for system ";	&		"tailoring"						&	\ PRINT #2%, '.IDENT	"' ; VER.EDIT.NUM$ ; '"'		&	\ GOSUB 10100 FOR I% = 1% TO 3%					&	\ W% = FN.TEXT%("                        COPYRIGHT (C) 1978 BY",&		"")							&	\ W% = FN.TEXT%("            DIGITAL EQUIPMEN      T CORPORATION,",	&		" MAYNARD, MASS.")					&	\ GOSUB 10100							&	\ W% = FN.TEXT%("THIS SOFTWARE IS FURNISHED UNDER A LICENSE",	&		" AND MAY BE USED AND  COPIED")				&	\ W% = FN.TEXT%("ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  ",	&		"SUCH  LICENSE AND WITH THE")				&	\ W% = FN.TEXT%("INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  ",	&		"THIS SOFTWARE OR  ANY  OTHER")				&	\ W% = FN.TEXT%("COPIES  THEREOF MAY NOT BE PROVIDED OR ",	&		"OTHERWISE MADE AVAILABLE TO ANY")			&	\ W% = FN.TEXT%("OTHER PERSON.  NO TIT      LE TO AND OWNERSHIP OF",	&		"  THE  SOFTWARE  IS  HEREBY")				&	\ W% = FN.TEXT%("TRANSFERRED.","")				&	\ GOSUB 10100							&	\ W% = FN.TEXT%("THE INFORMATION IN THIS SOFTWARE IS SUBJECT ",	&		"TO CHANGE  WITHOUT  NOTICE")				&	\ W% = FN.TEXT%("AND  SHOULD  NOT  BE  CONSTRUED  AS  A ",	&		"COMMITMENT BY DIGITAL EQUIPMENT")			&	\ W% = FN.TEXT%("CORPORATION.","")				&	\ GOSUB 10100							&	\ W% = FN.TEXT%("DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE",&		" OR  RELIABILITY  OF  ITS")				&	\ W% = FN.TEXT%("SOF      TWARE ON EQUIPMENT WHICH IS NOT SUPPLIED ",	&		"BY DIGITAL.")						&	\ GOSUB 10100 FOR I% = 1% TO 2%					&	\ W% = FN.TEXT%("Module:		TPDEF Variables","")	&	\ GOSUB 10140							&	\ W% = FN.TEXT%("Version:	" + VER.EDIT.NUM$,"")		&	\ GOSUB 10140							&	\ W% = FN.TEXT%("Date:		",DATE$(0))			&	\ GOSUB 10100							&	\ W% = FN.TEXT%("This module contains:","")			&	\ W% = FN.TEXT%("1. The TPDEF specifiable equates for TPGEN",	&		"")							&	\ GOSUB 10100							&	\ PRINT #2%, CHR$(12%)						&	!								&	!	Print the       first page of the macro file. This includes	&	!	the TITLE, IDENT, Copyright, and description.		&3100	\ PRINT #2%, ".SBTTL	Equates for TPDEF"			&	\ PRINT #2%							&	\ PRINT #2%, "	.RADIX	10"					&	\ PRINT #2%							&	\ PRINT #2%, LABEL$(I%) ; "	=	" ; VALUE$(I%) ;	&		 "	; " ; PROMPT$(I%)				&		 FOR I% = BEGLABEL% TO ENDLABEL%			&	\ PRINT #2%							&	\ PRINT #2%, "SGACTM	=	SGTERM	;Maximum number of "	&		; "concurrently active terminals"			&	\ PRINT #2%							&	\ PRINT #2%, "	.RADIX"						&	\ PRINT #2%, CHR$(      12%)						&	\ CLOSE #2%							&	!								&	!	Print the second page (all the equates) and close the	&	!	file.							&3150	\ PRINT '3150'								!XXXX&	\ IF COMMAND$ <> "EDIT" THEN W$ = ACCOUNT$ + NEWNAME$		&	\ I% = 5%							&	\ OPEN W$ + EXT$(5%) FOR OUTPUT AS FILE #4%,			&		ORGANIZATION INDEXED VARIABLE,				&		MAP STAMAP, RECORDSIZE 934,				&		PRIMARY KEY STATION$,					&		ALTERNATE KEY PRIORITY$ DUPLICATES CHANGES		&	\ CLOSE #4%							&	\ I% = 6%							&	\ OPEN W$ + EXT$(6%) FOR OUTPUT AS FILE #4%,			&		ORG      ANIZATION INDEXED VARIABLE,				&		MAP TRAMAP, RECORDSIZE 2072,				&		PRIMARY KEY TRANSACTION$				&	\ CLOSE #4%							&	\ I% = 7%							&	\ OPEN W$ + EXT$(7%) FOR OUTPUT AS FILE #4%,			&		ORGANIZATION INDEXED FIXED,				&		MAP TRAMAP, RECORDSIZE 58,				&		PRIMARY KEY TRANSACTION$				&	\ CLOSE #4%							&	\ I% = 8%							&	\ OPEN W$ + EXT$(8%) FOR OUTPUT AS FILE #4%,			&		ORGANIZATION INDEXED VARIABLE,				&		MAP TRAMAP, RECORDSIZE 420,				&		PRIMARY KEY TRANSACTION$				&	\ CLOSE #4%							&	\ I% = 9%							&	\       OPEN W$ + EXT$(9%) FOR OUTPUT AS FILE #4%,			&		ORGANIZATION INDEXED VARIABLE,				&		MAP AUTMAP, RECORDSIZE 440,				&		PRIMARY KEY AUTHORIZATION$				&	\ CLOSE #4%							&	!								&	!	If we are creating a new application then we must also	&	!	create all the associated definition files.		&3200	!***************************************************************&	!								&	!								&	!	C O P Y   P R O C E S S I N G				&	!								&	!								&	!***************************************************************&	\ PR      INT '3200'							 !XXXX&	\ IF COMMAND$ = "COPY"						!1.01AB&	  THEN								!1.01AB&	     FOR I% = 1% TO 2%						!1.01AB&	\	BREED.COMMAND$ = COMMAND$ + " " + ACCOUNT$ + OLDNAME$ +	!1.01AB&		EXT$(I%) + " " + ACCOUNT$ + NEWNAME$ + EXT$(I%)		!1.01AB&	\ 	GOSUB 20000						!1.01AB&	\	PRINT '% Failed to "' + BREED.COMMAND$ + '"'		!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	\    NEXT I%							!1.01AB&	\    FOR I% = 3% TO 4%						!1.01AB&	\	BREED.COMMAND$ = "COPY/CO " + " " + ACCOUNT$ + OLDNAME$	!1.01AB&		+ EXT$(      I%) + " " + ACCOUNT$ + NEWNAME$ + EXT$(I%)	!1.01AB&	\ 	GOSUB 20000						!1.01AB&	\	PRINT '% Failed to "' + BREED.COMMAND$ + '"'		!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	\    NEXT I%							!1.01AB&	\    FOR I% = 5% TO 9%						!1.01AB&	\	BREED.COMMAND$ = 'MERGE ' + ACCOUNT$ + OLDNAME$ +	!1.01AB&		EXT$(I%) + "/INDEXED/KEY:NUMBER:1 " + ACCOUNT$ + 	!1.01AB&		NEWNAME$ + EXT$(I%) + '/INDEXED'			!1.01AB&	\ 	GOSUB 20000						!1.01AB&	\	PRINT '% Failed to "' + BREED.COMMAND$ + '"'		!1.01AB&		  IF BREED.ERROR%       <> 1%					!1.01AB&	\    NEXT I%							!1.01AB&	\ GOTO 3350							&	!								&	!	If copying do it. Use the COPY command for sequential 	&	!	files and the MERGE command for indexed files.		&3250	!***************************************************************&	!								&	!								&	!	C R E A T E   P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ PRINT '3250'							 !XXXXX&	\ IF COMMAND$ = "CREATE"					!1.01AB&	  THEN  							!1.01AB&	   BREED.CO      MMAND$ = "INS [1,54]FDFBLD/TASK=FDFBLD"		!1.01AB&	\  TEMP$ = BREED.TASK$						!1.01AB&	\  BREED.TASK$ = 'MCR...'					!1.01AB&	\  GOSUB 20000							!1.01AB&	\  PRINT '% Failed to "' + BREED.COMMAND$ + '"'			!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	!								 1.01AB&	\ PRINT 'INS' 							 !XXX&	\  BREED.COMMAND$ = "RUN FDFBLD"				!1.01AB&	\  BREED.TASK$ = 'FDFBLD'					!1.01AB&	\  GOSUB 20000							!1.01AB&	\  PRINT '%Failed to "' + BREED.COMMAND$ + '"'			!1.01AB&		IF BREED.ERROR% <> 1%					!1.01AB&	!				      				&	\ PRINT 'RUN'							 !XXX&	\  BREED.COMMAND$ = "REM FDFBLD"				!1.01AB&	\  BREED.TASK$ = 'MCR...'					!1.01AB&	\  GOSUB 20000							!1.01AB&	\  PRINT '% Failed to "' + BREED.COMMAND$ + '"'			!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	\  BREED.TASK$ = TEMP$						!1.01AB&	!								 1.01AB&	\PRINT 'REM'							 !XXX&	\  BREED.COMMAND$ = "RENAME " + ACCOUNT$ +"NONE.FDF " 		!1.01AB&		+ ACCOUNT$ + NEWNAME$ + ".FDF"				!1.01AB&	\  GOSUB 20000							!1.01AB&	\  PRINT '% Failed to "' + BREED.COMMAND$ + '"'	      		!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	!								&	!	If command is CREATE we must also create the FDF file.	&	!	FDFBLD is INStalled, RUN, and REMoved to create		&	!	NONE.FDF which is RENAMEd to <tpname>.FDF.		&3300	\PRINT 'MAC'	!XXXX&	\ BREED.COMMAND$ = "MACRO/OBJECT:TEMP [1,1]RMSMAC/LI+" 		!1.01AB&	  + ACCOUNT$ + NEWNAME$ + "+[24,10]TPSCOM"			!1.01AB&	\ GOSUB 20000							!1.01AB&	\ PRINT '% Failed to "' + BREED.COMMAND$ + '"'			!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	!								 1.01AB&	\ BRE      ED.COMMAND$ = "MACRO/OBJECT:TEMP.CTX " + ACCOUNT$ + 	!1.01AB&		  NEWNAME$ + "+[24,10]TIMCTX"					&	\ GOSUB 20000							!1.01AB&	\ PRINT '% Failed to "' + BREED.COMMAND$ + '"'			!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	!								 1.01AB&	\ OPEN "TEMP.LNK" FOR OUTPUT AS FILE #7%			&	\ PRINT #7%, ACCOUNT$ ; NEWNAME$ ; "/-HD=TEMP"			&	\ PRINT #7%, "/"						&	\ PRINT #7%, "STACK=0"						&	\ PRINT #7%, "UNITS=0"						&	\ PRINT #7%, "/"						&	\ PRINT #7%, ACCOUNT$ ; NEWNAME$ ; 				&		".TIM/PR:5/-CP=TEMP.CTX,      [1,1]TPMLIB.STB"		&	\ PRINT #7%, "[1,24]MGRLIB/LB:TIMMAN:TIMCAL:TIMACT:TIMDAT"	&	\ PRINT #7%, "/"						&	\ PRINT #7%, "UNITS=11"						&	\ PRINT #7%, "ASG=SY:8:9:10"					&	\ PRINT #7%, "WNDWS=2"						&	\ PRINT #7%, "STACK=100"					&	\ PRINT #7%, "//"						&	\ CLOSE #7%							&	!								&	\ BREED.COMMAND$ = "TKB @TEMP.LNK"				!1.01AB&	\ TEMP$ = BREED.TASK$						!1.01AB&	\ BREED.TASK$ = 'MCR...'					!1.01AB&	\ GOSUB 20000							!1.01AB&	\ BREED.COMMAND$ = 'LINK @TEMP.LNK'				!1.01AB&	\ PRINT '% Failed to "' +       BREED.COMMAND$ + '"'			!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	\ BREED.TASK$ = TEMP$						!1.01AB&	!								 1.01AB&	\ BREED.COMMAND$ = "DELETE TEMP.*;*"				!1.01AB&	\ GOSUB 20000							!1.01AB&	\ PRINT '% Failed to "' + BREED.COMMAND$ + '"'			!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	!								&	!	Fill in the control files with the commands to do the	&	!	assemblies and task builds. MCR is spawned because	 1.01AB&	!	the LINK command does not wait for TKB to finish	 1.01AB&	!	before exitting and r      eturning status.			 1.01AB&3350	\ BREED.COMMAND$ = "SET PROTECTION " + ACCOUNT$ + NEWNAME$ +	!1.01AB&		".* (SYSTEM:RWED,OWN:RWED,GROUP:RWED,WORLD:RWED)"	!1.01AB&	\ GOSUB 20000							!1.01AB&	\ PRINT '% Failed to "' + BREED.COMMAND$ + '"'			!1.01AB&		  IF BREED.ERROR% <> 1%					!1.01AB&	\ GOTO 32000							&	!								&	!	Set the protection for the world and go exit.		&10000	!***************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	      !								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&10100	!***************************************************************&	!								&	!	P R I N T   T W O   C O M M E N T    L I N E S		&	!								&	!								&	!	This subroutine will print two empty comment lines in	&	!	in the macro file. The file is opened on channel 2.	&	!	A second enty point (10140) will print a single line	&	!								&	!*****************************************      **********************&	!								&	\ PRINT #2%,";"							&	!								&	!	Print one comment line.					&10140	\ PRINT #2%,";"							&	!								&	!	Print a second line.					&10160	\ RETURN							&15000	!***************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15020	!*****************************************      **********************&	!								&	!	C O M P U T E   I D   N U M B E R			&	!								&	!	USAGE FORMAT:			FN.ID%(RECORD%)		&	!								&	!	INPUT:				RECORD% = record number	&	!								&	!	RETURNS:			ID number		&	!								&	!	This function computes the unique number (ID) from the	&	!	record number. This number will always be equivelant to	&	!	3 characters RAD50.					&	!								&	!***************************************************************&	!								&	DEF FN.ID%(RECORD%) = 1641% + (RECORD%/26%)*14% + RECORD%      	&15100	!***************************************************************&	!								&	!	P R I N T   C O M M E N T    T E X T   L I N E		&	!								&	!								&	!								&	!	USAGE FORMAT:	FN.TEXT%(STRING1$,STRING2$)		&	!								&	!	RETURNS:	NONE					&	!								&	!	INPUT:		NONE					&	!								&	!								&	!								&	!	This function is used to print a comment line for a	&	!	macro file. The file is assumed opened on channel 2.	&	!	The line is:						&	!	;	STRING1$+STRING2$				&	!	Two strings are used as one stri      ng exceeds a line	&	!	in this program.					&	!								&	!***************************************************************&	!								&	DEF FN.TEXT%(STRING1$,STRING2$)					&	!								&15120	\ PRINT #2%, "; " ; STRING1$ ; STRING2$				&	!								&	!	Print the line.						&15149	FNEND								&15300	!***************************************************************&	!								&	!   L O O K   U P   T R A N S A C T I O N    P R O C E S S O R	&	!								&	!								&	!	USAGE FORMAT:		FN.LOOKUP%(TESTNAME$)		&	!								&	!      	INPUT:			NEWRECORD = -1% IF UNKNOWN	&	!								&	!	RETURNS:		RECORD NUMBER (-1 IF NONE)	&	!				IF -1 THEN:			&	!				   NEWRECORD% = FIRST FREE	&	!						RECORD NUMBER	&	!				   ENDRECORD% = RECORD NUMBER	&	!						OF END RECORD	&	!								&	!	This function will find the the record corresponding	&	!	to transaction processor TESTNAME$ and returns the	&	!	record number. If it fails it returns -1. It then also	&	!	returns the record number of the first free record and	&	!	the record number of the end record.			&      	!								&	!	If the argument is a null the function will list	&	!	the found transaction processors and their unique	&	!	identifiers						&	!								&	!***************************************************************&	!								&	DEF FN.LOOKUP%(TESTNAME$)					&15320	\ FN.LOOKUP% = -1%						&	\ FOR I% = 0% TO 84%						&		\ W$ = LEFT(VIRTUAL$(I%),6%)				&		\ GOTO 15390 IF W$ = FILE.END$				&		\ GOTO 15340 IF TESTNAME$ <> ""				&		\ PRINT W$ ; "		" ; RAD$(FN.ID%(I%)) IF W$ <> ""&		\ GOTO 15380						&	!								&	      !	Initilize the result. Loop over all the records. Get	&	!	the name. If its the end exit. If there is no test	&	!	name we are listing it but only if there is a record.	&15340		\ IF W$ = TESTNAME$ THEN FN.LOOKUP% = I%		&		\ GOTO 15399						&	!								&	!	If we find a match, set the result equal to the record	&	!	number and exit						&15360		\ IF W$ = "" THEN IF NEWRECORD% = -1% THEN		&			NEWRECORD% = I%					&	!								&	!	Save a pointer to the first free record			&15380	\ NEXT I%							&	!								&	!	Loop			      				&15390	\ ENDRECORD% = I%						&	!								&	!	Record the last record number				&15399	FNEND								&19000	!***************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19050	\ IF ERR = 11% AND ERL = 1750% THEN RESUME 1850%		&	!								&	!	We get an EOF error when we are finished reading the	&	!	equate macro file.					&19100	\ IF ERR = 136%       AND ERL = 1350% THEN PRINT			&	\ PRINT "% Transaction processor file is currently in use. "	&		+ "Access temporarilly denied."				&	\ RESUME 32000							&	!								&	!	Someone is using the TPF file. Come back later.		&19150	\ IF ERR = 3% AND ERL = 1900% THEN PRINT			&	\ PRINT "% Listing device is unavailable"			&	\ RESUME 1550							&	!								&	!	The console listing device is not currently available.	&19250	\ IF ERR = 5% AND ERL = 1700% THEN PRINT			&	\ PRINT "% Can't find file " ; ACCOUNT$ ; OLDNAME$ ; ".      MAC"	&	\ IF COMMAND$ = "EDIT" THEN RESUME 2200 ELSE RESUME 1400	&	!								&	!	If the mac file doesn't exist, say so. If we were	&	!	editing we will continue with no defaults. Otherwise	&	!	we were listing so go back for a new command.		&19850	\ IF ERL = 3150% THEN PRINT 					&	\ PRINT "? Error while creating file " ; W$ ; EXT$(I%)		&	!								&	!	Trouble creating one of the definition files. Tell the	&	!	user and exit by falling through.			&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ER      ROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!***************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!***************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	      !								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ CLOSE #5%							!1.01AB&	\ PRINT FOR I% = 1% TO 3%					&	!								&	!	Come here for all exits. Close all open files.		&	!	Add some blank lines to the terminal.			&32767	!$**************************************   Â   ************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDÂ          “<}þvÁ› 8$        	.TITLE	TPSTAT - Statistics sampling program	.IDENT	/V1.10A/	.ENABL	LC	.NLIST	BEX;; COPYRIGHT (C) 1979; 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; T      O AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN; IN DEC.;; THE INFORMATION IN THIS DOCUMENT 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.;;;;	MODULE:		TPSTAT;	;	VERSION		V1.0A;;	AUTHOR:		BRIAN DOYLE;	;	DATE:		OCTOBER 1977;;	THIS MODULE CONATINS:;;		ALL STATISTIC SAMPLING ROUTINES FOR TPSTAT UTILITY;;;;	MODIFIED       BY:;;;;;	BRIAN DOYLE;;		SPR # 252419	FEB 9, 79	BJD-1	# SUB-LINKS IS A BYTE;;;	RICHARD TREADWAY		** RT001;;		FIXED TO RUN ONLY FROM TT0: FOR RELEASE V1.1 OF TRAX;	.PAGE	.SBTTL	MACRO CALLS;****************************************************;;;	M A C R O    C A L L S ;;;****************************************************;	.MCALL	DIR$,WDBBK$,RDBBK$,ATRG$,CRAW$,GTIM$,WRITE$	.MCALL	SCBDF$,PKTDF$,UCBDF$,DCBDF$	.MCALL	STSE$,MRKT$,EXIT$S,ASRDF$,WAIT$,EXST$,EXST$S	.MCALL	FDBDF$,FDAT$A,FDRC$A,FDOP$A,FINIT$,FDBK$A	.M      CALL	SPEAK	.MCALL	OPEN$W,CLOSE$,PUT$,FDBF$A	.MCALL	FSRSZ$,FDBF$A,OPEN$R,GET$,NMBLK$	.MCALL	QIOW$,INH$S,ENB$S	.MCALL	SWITCH,RETURN;;;	Global equates for readability;;CR	=	10.		;Line feedLF	=	13.		;Carriage return;;	UCBDF$					;UCB offset definitions	PKTDF$					;I/O packet definitions	DCBDF$					;DCB offset definitions	SCBDF$					;SCB offset definitions	ASRDF$					;Make the KT registers known to compiler	.PAGE	.SBTTL	TABLES & EXEC CALL DPBs	.PSECT	DATSTA,D,RW,REL,GBL,CON;**************************************      ***************************;;;	TABLES OF TRANSACTION PROCESSORS AND THEIR ID'S;;;*****************************************************************;ANAME:	.BLKW	72.;ID:	.BLKW	24.;;;*************************************************;;;	E X E C U T I V E    C A L L    D P B    B L O C K S;;;*************************************************;WINDOW:	WDBBK$	0,,,0,,WS.64B!WS.WRT!WS.MAP!WS.RED;Window definition block;REGION:	RDBBK$	128.,COM001,,RS.DEL!RS.ATT!RS.RED!RS.WRT	;Region definiton block;ATTACH:	ATRG$	REGION      				;Attach region call;CREATE:	CRAW$	WINDOW				;Create window and attach it;EX:	EXST$	1				;EXIT with status;MARKT:	MRKT$	MARK1,MARK2,MARK3		;Mark time call;;	These values may be changed with GBLDEF statements.  The given values;	are for user use.  These GBLDEFs are used solely for the convenience ;	of the RTE.;MARK1	==	1				;Event flagMARK2	==	0				;Time interval magnitudeMARK3	==	3				;Time interval unit;;;TIME:	GTIM$					;Get time call;TYPE:	QIOW$	IO.WBT,13.,1,1,IOSTAT,,<PBUF,100.,0>;WAIT:	STSE$	1				;W      ait for event flag call;BUFFER:	.BLKB	512.				;Sample file record buffer	.PAGE	.SBTTL	REGISTER USAGE;****************************************************;;;		R E G I S T E R    U S A G E ;;;****************************************************;;	Global usage in sampling section;;	R0	base addresses of TPS data structures (TDT,SCB,etc);	R4	# of samples yet to be taken;	R5	base address of record in buffer;;	These are the principle uses, sometimes used for other purposes;	after saving the appropriate registers.;      	.PAGE	.SBTTL	I/O DEFINITIONS;******************************************************;;;	I / O    I N I T I A L I Z A T I O N;;;******************************************************;ALLOCB	==	200.			;EXTENSION QUANTITY;;	One can not extend a file with context switching inhibited, i.e.;	during a sampling.  Therefore, we use this value which is big ;	enough for any sample.  An extend is done when apprpopriate;	during the wait between samples.  A GBLDEF may be used to change this ;	value.;;FDBO:	FDBDF$	FDAT$A	      R.FIX,,32.,ALLOCB,ALLOCB	FDRC$A	FD.RWM	FDBK$A	BUFFER,512.,,,IOSTAT	FDOP$A	1,DSDO,DFNBO,FO.WRT;;	Standard fixed-length records which will contain the sample data;DSDO:	.WORD	0,DEV			;Data Set Descriptor	.WORD	0,UIC	.WORD	0,NAME;DFNBO:	NMBLK$	,SMP,,SY;;FDBI:	FDBDF$	FDRC$A	,BIFFER,64.		FDOP$A	1,DSDI,,FO.RD	FDBF$A	,,1	;DSDI:	.WORD	3	.WORD	DEVI	.WORD	5.	.WORD	UICI	.WORD	9.	.WORD	SPECI;;		The data set descriptor block;DEVI:	.ASCII	/SY:/UICI:	.ASCII	/[1,1]/SPECI:	.ASCII	/TPDEF.TPF/;;		The transaction processor def      inition file specification;	FSRSZ$	1,,DATSTA	.PAGE	.SBTTL	PROGRAM CONSTANTS;******************************************************;;;	PROGRAM CONSTANTS AND ERROR MESSAGES;;;******************************************************;	.EVENDEVICE:	.WORD			;Device being sought in disk queuesLOUNIT:	.BYTE			;Current unit being sought in disk queuesHIUNIT:	.BYTE			;Highest unit defined for device - disk queuesQUESIZ:	.WORD			;Counter - # packets in a disk queueQUEBUF:	.BLKB	32.		;Temporary storage for disk queue dat      aZZ:	.WORD			;Temporary storageSS:	.WORD			;Temporary StorageTT:	.WORD			;Temporary StorageRETADD:	.WORD			;Temporary storageAA:	.WORD			;Temporary variableBB:	.WORD			;Temporary variable;SNUM:	.WORD			;# of samples to be takenSINT:	.WORD			;Sample interval;DEV:	.BLKB	6		;Device nameUIC:	.BLKB	10.		;UIC 		- for sample fileNAME:	.BLKB	20.		;Name;IOSTAT:	.BLKW	2		;I/O status blockACTRM:	.WORD			;Counter for # of active terminalsCLOSE:	.WORD			;I/O closed flagBLOCKO:	.WORD			;Counter for tracking extends;JUMP:      	.WORD	NEXT1	.WORD	MBOX	.WORD	NEXT1	.WORD	TST	.WORD	SUBAT	.WORD	MLINK	.WORD	SLINK	.WORD	SLBAT	.WORD	NEXT1;;	ABOVE IS THE JUMP TABLE FOR SCB TYPES	.PAGE	.SBTTL	ERROR MESSAGES;*******************************************************************;;;	E R R O R    M E S S A G E S ;;;*******************************************************************;PBUF1:	.BYTE	LF,LF,CR	.ASCII	/? FATAL Directive error - error code is -/FIELD5:	.BLKB	6;S.BUF1	=	. - PBUF1	;Size of message;;		Directive error message;PBUF2:	.BYTE	LF,      CR	.ASCII	/Location /LOC1:	.BLKB	6	.BYTE	LF,LF,CR;S.BUF2	=	. - PBUF2	;Size of message;;		Location message for I/O or Directive errors;PBUF:	.BYTE	LF,LF,CR	.ASCII	/? Unexpected FATAL error in TPSTAT/	.BYTE	LF,CR	.ASCII	/The FCS error code is -/FIELD1:	.BLKB	6	.BYTE	LF,LF,CR;S.BUF3	=	. - PBUF	;Size of message;;		I/O error message;MESS1:	.BYTE	LF,LF,CR	.ASCII	/? FATAL error - Invalid Terminal SCB/	.BYTE	LF,LF,CRSMESS1	=	. - MESS1;;		Miscellaneous error messages;MESS3:	.BYTE	CR,LF,LF	.ASCII	/% Invalid response       - a file name is needed./	.BYTE	CR,LF,LFSMESS3	=	. - MESS3;BADTP:	.BYTE	CR,LF,LF	.ASCII	/% invalid Transaction Processor name/	.BYTE	CR,LFS.BAD	=	. - BADTP	.PAGE	.SBTTL	DIALOG CONSTANTS;****************************************************************;;;	DIALOG CONSTANTS;;;****************************************************************;;	Help texts for the 4 questions;HEL1:	.ASCII	/Specify the 6 character name /	.ASCII	/of the transaction processor /	.BYTE	CR,LF	.ASCII	/which you wish to sample./	.BYTE	CR,L      FS.HEL1	=	. - HEL1;;HEL2:	.ASCII	/ Specify the number of minutes between samples./	.BYTE	CR,LFS.HEL2	=	. - HEL2;;HEL3:	.ASCII	/Specify the number of samples to be taken./	.BYTE	CR,LFS.HEL3	=	. - HEL3;;HEL4:	.ASCII	/Specify the name of the file which/	.ASCII	/ will hold the sample data./	.BYTE	CR,LFS.HEL4	=	. - HEL4;;	Prompt texts for the 4 questions;PRO1:	.ASCII	/Transaction Processor name/S.PRO1	=	. - PRO1;PRO2:	.ASCII	/Interval between samples/S.PRO2	=	. - PRO2;PRO3:	.ASCII	/Number of samples/S.PRO3	=	. -       PRO3;PRO4:	.ASCII	/Output file name/S.PRO4	=	. - PRO4	.PAGE;*******************************************************************;;;	Defaults for the 4 questions;	& Input file buffer;;*******************************************************************;D1:	.ASCII	/? /	.BYTE	0,0S.D1	=	4;D2:	.ASCII	/? /	.BYTE	0,0S.D2	=	4;D3:	.ASCII	/? /	.BYTE	0,0S.D3	=	4;	.ODDDEF4:	.ASCII	/</TPNAME:	.BLKB	6				;Transaction processor name	.ASCII	/.SMP>? /S.DEF4	=	. - DEF4;;	.EVENBIFFER: .BLKW	32.;;		The record buffer for the inp      ut file;	.PAGE	.SBTTL	HERALD QIO;***************************************************************;;;	H E R A L D    M E S S A G E;;;***************************************************************;TYPE1:	QIOW$	IO.WBT,13.,1,1,IOSTAT,,<TTMESS,S.TTMES,0>;;			Type on Channel 13 (TI:) the herald message;HERA:	.BYTE	LF,LF,CR	.ASCII	/TPSTAT V1.0/ 	.BYTE	CR,LF,LF	.ASCII	/The TRAX Software Statistics Sampler/	.BYTE	CR,LF,LFS.HERA	=	. - HERA;EXMESS:	.BYTE	LF,LF,CR	.ASCII	/	TPSTAT - All the requested samples have been /      	.ASCII	/taken./	.BYTE	LF,LF,CR;S.EXMES	= 	. - EXMESS;;TTMESS:	.BYTE	LF,LF,CR	.ASCII	/       TPSTAT - must be run from TT0:/	.BYTE	LF,LF,CRS.TTMES:	. - TTMESS	.PAGE	.SBTTL	CONSTRUCT TP TABLES;*******************************************************************;;;	B U I L D    T H E    T A B L E S ;;;*******************************************************************;	.PSECT	CODSTA,I,RO,REL,GBL,CONBEGIN:: 	CALL	CHKTT0			; CHECK THAT REQESTOR IS AT TT0	BCC	3$			; IF C CLEAR THEN YES	DIR$	#TYPE1,ERR		; PRINT TH      E ERROR MESSAGE	JMP	EXI			; AND EXIT3$:	MOV	#HERA,TYPE1+Q.IOPL	; SET UP HERALD MESSAGE	MOV	#S.HERA,TYPE1+Q.IOPL+2	; AND SIZE FOR QIO	DIR$	#TYPE1,ERR;;			Print the program herald message ;	FINIT$	OPEN$R	#FDBI,,,,#BIFFER,#64.,ERROR	MOV	#64.,<FDBI+F.RSIZ>;;		Basic+2 creates this file as a virtual file and so gives it;		a record size of 512 bytes corresponding to Block I/O ;		operations, however, the records are really 64 bytes long ;		and FCS requires this true record size.;	MOV	#24.,R0	MOV	#ANAME,R1	MOV	#ID,R      2	MOV	#35.,R4;;		Load the registers with the table base addresses, table length,;		and EOF marker.;1$:	MOV	#BIFFER,R3	MOV	R0,-(SP)	GET$	#FDBI,,,ERROR	MOV	(SP)+,R0;;		Load the address of the record buffer and get a record;	CMPB	(R3),R4	BEQ	50$;;;		Check for EOF;	MOV	62.(R3),(R2)+	MOV	(R3)+,(R1)+	MOV	(R3)+,(R1)+	MOV	(R3)+,(R1)+	SOB	R0,1$;;		If not EOF, store the TP name and ID in the tables and get ;		next record if there is room in the table;50$:	CLOSE$	#FDBI,ERROR	.PAGE	.SBTTL	DIALOG CODE;******************      **************************************************;;;	D I A L O G ;;;********************************************************************;DIALOG:	SPEAK	#PRO1,#S.PRO1,#D1,#S.D1,#-1,#HEL1,#S.HEL1,R0,SS,,DIALOG,EXI,ERR;						;						Get TP name;	MOV	#24.,R5				;# OF table entries	MOV	#ANAME,R1			;Base address of table	MOV	#ID,R3				;Base address of ID table	MOV	R0,TT				;Save address of answer	MOV	R1,ZZ				;Save address of table entries;MAT:	MOV	SS,R2				;# Characters to R265$:	CMPB	(R0)+,(R1)+			;Compare to ta      ble	BEQ	64$				;Tentative match	JMP	MISS				;No match to this entry64$:	SOB	R2,65$				;Continue to match	JMP	GOTIT				;A match;;MISS:	MOV	TT,R0				;Reset answer address	ADD	#6,ZZ				;Get next table entry	MOV	ZZ,R1				;	TST	(R3)+				;Get next ID	SOB	R5,MAT				;Loop through table;	MOV	#BADTP,TYPE1+Q.IOPL		;Tailor error message	MOV	#S.BAD,TYPE1+Q.IOPL+2		; "	DIR$	#TYPE1,ERR			;Print error message	JMP	DIALOG				;Try again;;GOTIT:	MOV	(R3),REGION+R.GNAM+2		;Store TP ID 	MOV	TT,R0				;Get TP name address	MOV	(R0)      +,TPNAME			;Store TP name	MOV	(R0)+,TPNAME+2			; "	MOV	(R0)+,TPNAME+4			; ";	.PAGE;*************************************************************;;;	M O R E    D I A L O G ;;;**********************************************************;NO.2:	SPEAK	#PRO2,#S.PRO2,#D2,#S.D2,#0,#HEL2,#S.HEL2,SINT,,,DIALOG,EXI,ERR;;						;Get sample interval;	MOV	SINT,MARKT+M.KTMG		;Tailor MARK TIME directive;;;NO.3:	SPEAK	#PRO3,#S.PRO3,#D3,#S.D3,#0,#HEL3,#S.HEL3,SNUM,,,NO.2,EXI,ERR;;						 Get number of samples;;NO.4:SPEAK #PRO4,#      S.PRO4,#DEF4,#S.DEF4,#-1,#HEL4,#S.HEL4,AA,BB,,NO.3,EXI,ERR;;						 Get output file name;	.PAGE;;***********************************************************;;;	P R O C E S S    O U T P U T    F I L E    N A M E ;;;***********************************************************;	CLR	DSDO				;Clear UIC	CLR	DSDO+4				;	CLR	DSDO+10				;	MOV	AA,R0				;Address of spec to R0	MOV	BB,R1				;Length of field to R1;1$:	CMPB	(R0)+,#':			;Device terminator present?	BEQ	2$				;Yes	SOB	R1,1$				;No, continue scan;15$:	MOV	AA,R0      				;Address of remaining stuff to R0	MOV	BB,R1				;Length of remaining stuff to R117$:	CMPB	(R0)+,#']			;UIC terminator present?	BEQ	20$				;Yes	SOB	R1,17$				;No, continue scan;;40$:	MOV	AA,R0				;Address of remaining stuff to R0	MOV	BB,R1				;Length of remaining stuff to R1	MOV	#NAME,R2			;Address of name field to R2	TST	R1				;Must be a name	BEQ	BADNAM				;Invalid name;45$:	CMPB	(R0),#40			;Is character a blank?	BEQ	46$				;Yes, ignore it	MOVB	(R0),(R2)+	INC	DSDO+10				;Add to byte count46$:	TSTB	(R0)+	      			;Get next byte	SOB	R1,45$				;Loop through name	JMP	TPTEMP				;End of dialog;;2$:	MOV	#DEV,R1				;Address of device field to R1	MOV	AA,R0				;Address of dialog field to R04$:	MOVB	(R0),(R1)+			;Transfer a byte	INC	DSDO				;Add to the byte count	CMPB	(R0)+,#':			;End of field?	BNE	4$				;Transfer whole field -test if done;10$:	MOV	R0,AA				;Update pointer	SUB	DSDO,BB				;Update length	BR	15$				;Process next field;20$:	MOV	#UIC,R1				;Address of UIC field to R1	MOV	AA,R0				;Address of dialog field to R02      2$:	MOVB	(R0),(R1)+			;Transfer a byte	INC	DSDO+4				;Add to the byte count	CMPB	(R0)+,#']			;End of field?	BNE	22$				;Branch if more in field;30$:	MOV	R0,AA				;Update pointer	SUB	DSDO+4,BB			;Update length	BR	40$				;Process next field;EXI:	EXST$S	#<2+8.*26.>			;CTRL Z EXIT;;BADNAM:	MOV	#MESS3,TYPE1+Q.IOPL		;TAILOR ERROR MESSAGE	MOV	#SMESS3,TYPE1+Q.IOPL+2		;	DIR$	#TYPE1,ERR			;PRINT ERROR MESSAGE	JMP	NO.4				;TRY AGAIN	.PAGE	.SBTTL	SAMPLING STARTS HERE;****************************************************      **************;;;	S  A  M  P  L  I  N  G        S  E  C  T  I  O  N  ;;;******************************************************************;	.PAGE	.SBTTL	ATTACHS & OPENS;*****************************************************;;	INITIALIZATION AND MAPPING TO COMMON REGION;;;******************************************************;TPTEMP::OPEN$W	#FDBO,,,,,,ERROR	;OPEN THE SAMPLING FILE;	DIR$	#ATTACH,ERR		;ATTACH TO TPS COMMON REGION	MOV	<REGION+R.GSIZ>,R3	;SAVE REGION SIZE	MOV	<REGION+R.GID>,<WINDOW+W.NRID>	;REGIO      N IDENTIFIER TO WDB;	MOV	SNUM,R4			;SET UP SAMPLE COUNT;	CMP	#200,R3			;IS REGION > 4K	BMI	5$			;BRANCH IF IT IS;	MOV	R3,<WINDOW+W.NSIZ>	;SET UP WINDOW SIZE	DIR$	#CREATE,ERR		;CREATE WINDOW #0	BR	MAPPED;;5$:	MOV	#200,<WINDOW+W.NSIZ>		;1ST 4K MAPPED	MOV	#200,<WINDOW+W.NLEN>		;4K LENGTH	DIR$	#CREATE,ERR			;CREATE WINDOW #0;	MOVB	#1,<WINDOW+W.NAPR>		;APR 1	MOV	#200,<WINDOW+W.NSIZ>		;TO WINDOW WDB	MOV	#201,<WINDOW+W.NOFF>		;OFFSET OF 4K	CLR	WINDOW + W.NLEN			;RESET LENGTH PARAMETER IN WDB	DIR$	#CREATE,ERR			;CR      EATE WINDOW #1;MAPPED:	MOV	#BUFFER,R5			;INITIALIZE REOCRD BUFFER	.PAGE	.SBTTL	SAMPLE THE TP;***********************************************************************;;;	HEADER RECORD;;;*************************************************************************;LOOPED:	INH$S					;INHIBIT CONTEXT SWITCHING	CLR	CODE(R5)			;SET RECORD CODE	MOV	R4,SAMPNO(R5)			;SET SAMPLE #	MOV	SNUM,TOTNO(R5)			;SET TOTAL # OF SAMPLES	MOV	R5,TIME+2			;SET UP TIME BUFFER	ADD	#YEAR,TIME+2			;	DIR$	#TIME,ERR			;GET DATE & TIME	MOV	TPN      AME,TNAME(R5)		;GET TP NAME	MOV	TPNAME+2,<TNAME+2>(R5)	MOV	TPNAME+4,<TNAME+4>(R5)	MOV	SINT,INTVAL(R5)			;GET SAMPLE INTERVAL	JSR	PC,WRITIT			;WRITE THE RECORD;;;	CACHE RECORD;	MOV	#2,CODE(R5)			;SET RECORD CODE	MOV	#77406,@#UISDR3			;INITIALIZE KT REG.	MOV	$BASE,@#UISAR3			;BASE OF CACHE TO KT	MOV	#60000,R0			;USE R0 TO REFERENCE CACHE	MOV	P.NUM(R0),CALLS(R5)		;# OF CACHE CALLS	MOV	P.HIT(R0),HITS(R5)		;# OF HITS	MOV	P.FET(R0),FETCH(R5)		;# OF FETCHS	MOV	P.FAIL(R0),FAIL(R5)		;# THAT FAILED	MOV	$SIZE,SIZE(R5)      			;SIZE OF CACHE	MOV	P.DEAD(R0),DEAD(R5)		;AMOUNT IN USE	MOV	P.ALLOC(R0),LOCKD(R5)		;AMOUNT ALLOCATED	JSR	PC,WRITIT			;WRITE A RECORD	.PAGE;***************************************************************;;;	QUE RECORD;;;****************************************************************;	MOV	#"DB,DEVICE			;The device mnemonic	JSR	PC,QUELEN			;Get queue length for that device	JSR	PC,WRITIT			;Write first que record;	MOV	#"DM,DEVICE			;The device mnemonic	JSR	PC,QUELEN			;Get queue length for that device	JSR	PC      ,WRITIT			;Write the second record;	MOV	#"DR,DEVICE			;The device mnemonic	JSR	PC,QUELEN			;Get queue length for that device	JSR	PC,WRITIT			;Write the third record;	JMP	GENER				;Go to next unit	.PAGE;*********************************************************************;;;	Q U E U E    S C A N N I N G    R O U T I N E ;;;***********************************************************************;QUELEN:	SWITCH$	DONQUE				;Go to kernel mode	MOV	R5,-(SP)			;SAVE THE REGISTERS	MOV	R4,-(SP)			;	MOV	R3,-(SP)			;	MO      V	R2,-(SP)			;	MOV	R1,-(SP)			;	MOV	R0,-(SP)			;;	CLRB	QUESIZ				;INITIALIZE QUEUESIZE COUNTER	MOV	$DEVHD,R0			;POINTS TO DCB LIST	MOV	R0,R1				;GET 1ST DCB ADDRESS;1$:	CMP	D.NAM(R1),DEVICE		;IS IT A MATCH?	BEQ	2$				;YES	MOV	D.LNK(R1),R1			;GET NEXT DCB ADDRESS	BEQ	10$				;ERROR - DEVICE NOT FOUND	BR	1$				;TRY AGAIN;2$:	MOV	D.UCB(R1),R2			;UCB POINTER TO R2	MOVB	D.UNIT(R1),LOUNIT		;CURRENT UNIT #	MOVB	D.UNIT+1(R1),HIUNIT		;HIGHEST UNIT #;5$:	MOV	U.SCB(R2),R3			;SCB POINTER TO R3	MOV	S.LHD(R3),R4			;QUE LI      ST HEAD TO R4	MOV	S.LHD+2(R3),R5			;LAST LIST ENTRY TO R5	CLRB	QUESIZ				;ZERO QUEUELENGTH COUNTER;3$:	TST	R4				;IS QUEUE EMPTY?	BEQ	4$				;YES	INCB 	QUESIZ				;INCREMENT QUEUE COUNT	CMP	R4,R5				;END OF QUEUE?	BEQ	4$				;YES	MOV	I.LNK(R4),R4			;GET POINTER TO NEXT ENTRY	BR	3$				;LOOP THROUGH THE QUEUE;4$:	CLR	R5				;	MOVB	LOUNIT,R5			;CURRENT UNIT # TO R5	ADD	#4,R5				;+ 4 TO R5 TO GET OFFSET IN RECORD	ADD	#QUEBUF,R5			;BASE ADDRESS OF QUEUE BUFFER TO R5	MOVB	QUESIZ,(R5)			;STORE QUEUE LENGTH IN TEMP BUF      FER	INCB	LOUNIT				;GET NEXT UNIT;	CMPB	HIUNIT,LOUNIT			;GOT ALL UNITS FOR DEVICE?	BMI	10$				;YES	ADD	D.UCBL(R1),R2			;POINT TO NEXT UCB	BR	5$				;LOOP THROUGH UNITS FOR DEVICE	.PAGE10$:	MOV	#3,QUEBUF			;RECORD CODE	MOV	DEVICE,QUEBUF+2			;DEVICE MNEMONIC	MOV	(SP)+,R0			;RESTORE REGISTERS	MOV	(SP)+,R1			;	MOV	(SP)+,R2			;	MOV	(SP)+,R3			;	MOV	(SP)+,R4			;	MOV	(SP),R5				;	MOV	#16.,R0				;32 BYTES TO MOVE	MOV	#QUEBUF,R1			;ADDRESS OF TEMP BUFFER TO R1;15$:	MOV	(R1),(R5)+			;MOVE BUFFER	CLR	(R1)+				;CLEAR BU      FFER AS WELL	SOB	R0,15$				;;	MOV	(SP)+,R5			;RESTORE R5 PERMANENTLY;;AAA:	RETURN					;EXIT KERNEL MODEDONQUE:	RTS	PC				;	.PAGE;******************************************************************;;;	GENERAL DATA;;;******************************************************************;GENER:	MOV	#4,CODE(R5)			;SET RECORD CODE	MOV	.CRFIL,FCREAT(R5)		;COLLECT # CREATED FILES	MOV	.ERFIL,FDELET(R5)		;COLLECT # DELETED FILES;	SWITCH$	ENDPER				;GO TO KERNEL APRS FOR NEXT STAT	MOV	$TCPU1,CPUUSE(R5)		;COLLECT CPU USAGE      	MOV	$TCPU2,CPUUSE+2(R5)		;	RTS	PC				;EXIT SYSTEM STATEENDPER:	MOV	.EXRST,EXREST(R5)		;COLLECT # EXC. RESTARTS;	JSR	PC,WRITIT			;WRITE A RECORD	.PAGE;*********************************************************************;;;	DATA FILE RECORDS;;**********************************************************************;	MOV	.ACFTB,R0			;BASE ADDRESS FILE TABLE	MOV	.ACFSZ,R1			;# OF FILE TABLE ENTRIES50$:	MOV	#5,CODE(R5)			;SET RECORD CODE	MOV	F.FID(R0),FINAME(R5)		;FILE NAME COLLECTED	MOV	<F.FID+2>(R0),<FINAME+2>(      R5)	; "	MOV	<F.FID+4>(R0),<FINAME+4>(R5)	; "	MOV	F.NLOK(R0),LOCREC(R5)		;COL 3 OF LOCKED RECORDS	MOV	F.NGET(R0),READ(R5)		;COL # OF READS	MOV	F.NINS(R0),INSERT(R5)		;COL # OF INSERTS	MOV	F.NUPD(R0),UPDATE(R5)		;COL # OF UPDATES	MOV	F.NDEL(R0),DELETE(R5)		;COL # OF DELETES	JSR	PC,WRITIT			;WRITE A RECORD;	ADD	#F.SIZE,R0			;INCREMENT TO NEXT ENTRY	TST	F.IMP(R0)			;END OF REAL TABLE?	BEQ	51$				;YES	SOB	R1,50$				;GET NEXT TABLE ENTRY;;;	TRANSACTION RECORDS;51$:	MOV	.TDTBA,R0			;BASE ADDRESS TRANSACTION TAB.	M      OV	.TDTSZ,R1			;# OF TDT ENTRIES100$:	MOV	#6,CODE(R5)			;SET RECORD SIZE	MOV	T.NAM(R0),TRNAME(R5)		;TRAN NAME COLLECTED	MOV	<CT.NAM+2>(R0),<TRNAME+2>(R5)	; "	MOV	<CT.NAM+4>(R0),<TRNAME+4>(R5)	; "	MOV	T.NTR(R0),REQTRA(R5)		;# OF TIMES REQUESTED	MOVB	T.ERR(R0),ERRTRA(R5)		;SYSTEM ERROR COUNT	CLRB	ERRTRA+1(R5)			;	MOV	T.MFZ(R0),MAXSIZ(R5)		;MINIMUM UNUSED W/S	JSR	PC,WRITIT			;WRITE A RECORD	ADD	#T.TDTSZ,R0			;INCREMENT TO NEXT ENTRY	SOB	R1,100$				;GET NEXT TABLE ENTRY	.PAGE;***********************************      *****************************;;;	NON-TERMINAL STATION RECORDS;;;*****************************************************************;	MOV	#<JUMP+SY.BSL+2>,R3	;START AT END OF TABLELOPTYP:	TST	-(R3)			;DECREMENT TO NEXT ENTRY	MOV	#60000,R0			;R0 HAS BASE SCB ADDRESS	MOV	.SCBTZ,R1		;CODED # OF ENTRIES	ASR	R1			;DIVIDE BY 2	INC	R1			;2N-2 => N;	MOV	#77406,@#UISDR3	MOV	.SCBTA,R2	MOV	@R2,@#UISAR3		;MAP TO NON TERM SCB;LOOP:	JMP	@(R3)			;CHECK SCB;NEXT1:	SOB	R1,LOOP			;LOOP THROUGH SCBNEXT2:	CMP	#JUMP,R3		;THROUGH T      ABLE?	BMI	LOPTYP				;NO	JMP	TERSCB			;ON TO NEXT RECORD TYPE;;;	TST  SCB SAMPLING;TST:	CMPB	S.TYP(R0),#SY.TST		;IS IT A TST STATION	BEQ	1$				;YES	ADD	#64.,R0				;GET NEXT ONE	JMP	NEXT1				;NO;1$:	MOV	#7,CODE(R5)		;TST CODE IS 7	MOV	S.TLOD(R0),LOATST(R5)		;# TIMES LOADED	MOVB	S.FLOD(R0),FAITST(R5)		;# TIMES FAILED TO LOAD	CLRB	FAITST+1(R5)			;	MOVB	S.MCOP(R0),MAXTST(R5)		;MAX # COPIES	CLRB	S.MCOP(R0)			;RESET CELL FOR EXECUTION MGR	CLRB	MAXTST+1(R5)			;	MOV	S.TSTA(R0),ABOTST(R5)		;# ABORTED - INTERNAL ERROR      	MOVB	S.CML(R0),COPTST(R5)		;# COPIES IN USE AT SAMPLE TIME	CLRB	COPTST+1(R5)			;	MOV	S.IO(R0),IOTST(R5)		;# OF I/O REQUESTS	MOV	S.HLOK(R0),LOCTST(R5)		;# OF LOCKED RECORDS ENCOUNTERED	JSR	PC,COMMON	JMP	NEXT1;;	MAILBOX SCB SAMPLING;MBOX:	CMPB	S.TYP(R0),#SY.MBX	;IS IT A MAILBOX	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#8.,CODE(R5)		;MAILBOX CODE IS 8	JSR	PC,COMMON		;ONLY COMMON STATISTICS	JMP	NEXT1			;GET NEXT STATION	.PAGE;************************************************************      ;;;	SUBMIT BATCH SCB SAMPLING;;;****************************************************************;SUBAT:	CMPB	S.TYP(R0),#SY.BSU	;IS IT A SUBMIT BATCH STATION	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#11.,CODE(R5)		;SUBMIT BATCH IS 11	JSR	PC,COMMON		;ONLY COMMON STATISTICS	JMP	NEXT1			;GET NEXT STATION;;	SLAVE BATCH SCB SAMPLING;SLBAT:	CMPB	S.TYP(R0),#SY.BSL	;IS IT A SLAVE BATCH STATION	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#12.,CODE(R5)		;SLAVE BATCH IS 12      	JSR	PC,COMMON		;ONLY COMMON STATISTICS	JMP	NEXT1			;GET NEXT STATION	.PAGE;****************************************************************;;;	MASTER LINK SCB SAMPLING;;;********************************************************************;MLINK:	CMPB	S.TYP(R0),#SY.LMA	;IS IT A MASTER LINK	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#9.,CODE(R5)		;MASTER LINK IS 9	MOV	S.TOTL(R0),TOTEXC(R5)	;TOTAL # OF EXCHANGES	MOV	S.ACEX(R0),ACTEXC(R5)	;# ACTIVE EXCHANGES	MOV	S.WCNT(R0),LINWAT(R5)	;#       WAITS FOR SUB-LINK	MOV	S.TTIL(R0),SLAVIN(R5)	;TOTAL SLAVE TXN	MOVB	S.NSL(R0),SUBLIN(R5)	;# OF SUB-LINKS;	JSR	PC,COMMON		;GET THE COMMON STATISTICS	JMP	NEXT1			;GET NEXT STATION;;	SLAVE LINK SCB SAMPLING;SLINK:	CMPB	S.TYP(R0),#SY.LSL	;IS IT A LINK SLAVE	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#10.,CODE(R5)		;SLAVE LINK IS 10	MOV	R0,-(SP)		;SAVE KT	MOV	S.SBA(R0),R0		;GET STATS BLOCK ADDRESS	MOV	O.TOTS(R0),TLEX(R5)	;TOTAL LINK EXCHANGES	MOV	O.ACES(R0),ACEX(R5)	;ACTIVE EXCHANGES	MOV	O.      TTIS(R0),TOTBEG(R5)	;TOTAL TXNS BEGUN	MOV	O.ACTS(R0),ACTTR(R5)	;ACTIVE TXNS	MOV	O.PERR(R0),DOSCON(R5)	;PERMANENT ERRORS - DISCONNECTS;	MOV	(SP)+,R0		;RESET KT	JSR	PC,WRITIT		;WRITE OUT THE RECORD	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT2			;GET NEXT STATION	.PAGE;********************************************************************;;;	C O M M O N    S T A T I O N    R O U T I N E ;;;********************************************************************;PUT:COMMON:	MOV	S.NAM(R0),STNAME(R5)		;COLLECT STATION NAME	MO      V	<S.NAM+2>(R0),<STNAME+2>(R5)	; "	MOV	<S.NAM+4>(R0),<STNAME+4>(R5)	; "	MOVB	S.MCT(R0),QUESTA(R5)		;COLLECT # MESSAGES QUEUED	CLRB	QUESTA+1(R5)			;	MOV	S.TOT(R0),TOTQUE(R5)	MOV	S.TRST(R0),INISTA(R5)		;COLLECT # TRANS. INITIATED	MOVB	S.TABO(R0),ABOSTA(R5)		;COLLECT # TRANS. ABORTED	CLRB	ABOSTA+1(R5)			;	MOVB	S.TINV(R0),ILLSTA(R5)		;COLLECT # OF ILLEGAL/INVALID	CLRB	ILLSTA+1(R5)			;	JSR	PC,WRITIT			;WRITE A RECORD	ADD	#64.,R0				;GET NEXT SCB	RTS	PC	.PAGE;******************************************************      ****************8;;;;	TERMINAL STATION RECORDS;;;***********************************************************************;TERSCB:	MOV	.SCBTT,R3	MOV	@R3,@#UISAR3	MOV	#60000,R0			;BASE ADDRESS OF TERM SCB	MOV	.SCBTS,R1			;2N-2 WHERE N TERM STATIONS	ASR	R1				;DIVIDE BY 2	INC 	R1				;2N-2 => N	CLR	ACTRM				;INITIALIZE ACTIVE TERM COUNTER;TERM:	CMPB	S.TYP(R0),#SY.TIM		;IS SCB A TERMINAL	BEQ	5$				;YES IF EQUAL	CMPB	S.TYP(R0),#0			;END OF DEFINED STATIONS	BEQ	TERSUM				;YES;	CMP	R0,#100000			;OVERFLOW OF REGION	B      MI	1$				;REALLY INVALID STATION	BR	TERSUM				;OVERFLOW1$:	JMP	TIMERR				;GO TO ERROR ROUTINE;5$:	MOV	#14.,CODE(R5)			;SET RECORD CODE	CMP	#SS.ECL,S.STAT(R0)		;STATION CLOSED?	BEQ	6$				;THEN NOT CONNECTED	CMP	#SS.NOP,S.STAT(R0)		;STATION NOT INITIALIZED?	BEQ	6$				;TERMINAL NOT CONNECTED	INC	ACTRM				;INCREMENT COUNTER;6$:	MOVB	S.ABOT(R0),OPABO(R5)		;COLLECT ABORTS BY OPER.	CLRB	OPABO+1(R5)			;	MOVB	S.ABPT(R0),TSTABO(R5)		;COLLECT ABORTS BY TST	CLRB	TSTABO+1(R5)			;	JSR	PC,COMMON			;COLLECT COMMON STATION       STATS	ADD	#64.,R0				;GET NEXT SCB	SOB	R1,TERM				;PROCESS NEXT TERM SCB	.PAGE;*************************************************************************;;;	SUMMARY OF TERMINAL STATIONS RECORD;;;*************************************************************************;TERSUM:	MOV	#20.,CODE(R5)			;SET RECORD CODE	MOV	.MXTRM,R2			;# OF TERMS DEFINED	SUB	ACTRM,R2			;SUB # OF CONNECTED TERMS	MOV	R2,INIALL(R5)			;COLLECT # TERMS NOT INITIALIZED	MOV	ACTRM,CONALL(R5)		;COLLECT # TERMS CONNECTED	MOVB	.TMTRA,RETALL(R      5)		;COLLECT # OF RE-TRANSMITS	CLRB	RETALL+1(R5)			;	MOVB	.TMNCA,ALUNW(R5)		;COLLECT # LACKED RESOURCE	CLRB	ALUNW+1(R5)			;	MOVB	.TMNNT,ALNET(R5)		;COLLECT # LACKED NETWORK RES.	CLRB	ALNET+1(R5)			;	MOVB	.TMNCX,ALCON(R5)		;COLLECT # LACKED CONTEXT BUFFER	CLRB	ALCON+1(R5)			;	CLR	ALCACH(R5)			;0 CACHE RESOURCE - SEE STACOM;;	MOV	.TMIBF,ALNUM(R5)		;# OF INPUT PACKETS;	MOV	.TMICT,ALBYTE(R5)		;DOUBLE PRECISION TOTAL BYTES IN;	MOV	<.TMICT+2>,<ALBYTE+2>(R5)	;INPUT PACKETS;	MOV	.TMOVF,ALOVFL(R5)		;OVERFLOW COUNTER       FOR PACKETS;	JSR	PC,WRITIT			;WRITE A RECORD	.PAGE	.SBTTL	MESSAGE RECORD;********************************************************;;;	MESSAGE RECORD;;;********************************************************;MESDUM:	MOV	#21.,CODE(R5)			;MESSAGE REOCRD CODE	JSR	PC,WRITIT			;WRITE OUT RECORD WHICH AT						;THIS POINT IS A DUMMY	.PAGE	.SBTTL	SAMPLE LOOP CONTROL;************************************************************************;;;	C O N T R O L    B L O C K ;;;*********************************************      ****************************;;	DEC	R4				;DECREMENT SAMPLE COUNT	BEQ	NOMORE				;SKIP NEXT FEW IF DONE	DIR$	#MARKT,ERR			;MARK TIME TO NEXT SAMPLE	ENB$S					;ENABLE CONTEXT SWITCHING	DIR$	#WAIT,ERR			;WAIT UNTIL NEXT SAMPLE TIME	CMP	BLOCKO,#<ALLOCB/2>	;NEED AN EXTENSION?	BMI	1$			;NO;	MOV	#ALLOCB,R0		;GET # LEFT	SUB	BLOCKO,R0		;	CLR	BLOCKO			;RESET EXTENSION COUNTER	SUB	R0,BLOCKO		;ALLOW FOR WHAT IS LEFT	MOV	#FDBO,R0		;FDB TO R0	MOV	#ALLOCB,R1		;EXTEND QUANTITY TO R1	MOV	#<128. + 2 + 1>,R2	;MASK WORD	CALL .E      XTND			;EXTEND FILE;1$:	JMP	LOOPED				;PROCESS NEXT SAMPLE;;NOMORE:	INC	CLOSE				;MARK THAT FILES ARE BEING CLOSED	ENB$S					;ENABLE CONTEXT SWITCHING	JSR	PC,ENDOF			;WRITE LAST BLOCK	CLOSE$	#FDBO,ERROR			;CLOSE FILE;	MOV	#EXMESS,TYPE+Q.IOPL		;TELL USER WE ARE DONE	MOV	#S.EXMES,TYPE+Q.IOPL+2		;	DIR$	#TYPE				;;;OUT:	TST	CLOSE				;ERROR IN FILE CLOSE?	BNE	5$				;IF YES, DON'T GET INTO LOOP	ENB$S					;ENABLE CONTEXT SWITCHING	JSR	PC,ENDOF			;WRITE LAST BLOCK	CLOSE$	#FDBO,ERROR			;CLOSE FILE IF NOT ALREADY DON      E5$:	DIR$	#EX				;END OF PROGRAM	.PAGE	.SBTTL	ERROR REPORTING;********************************************************************;;;	E R R O R    R E P O R T I N G ;;;********************************************************************;;ERROR:	NEGB	F.ERR(R0)			;COMPLEMENT ERROR CODE	CLR	R1	MOVB	F.ERR(R0),R1			;ERROR CODE TO R1	CLR	R2				;DON'T ZERO SUPPRESS	MOV	#FIELD1,R0			;ADDRESS ASCII FORM ERR CODE	JSR	PC,$CBDMG			;CONVERT BINARY TO ASCII	MOV	#PBUF,TYPE+Q.IOPL		;TAILOR QIOW$ DIRECTIVE	MOV	#S.BUF3,TYPE+      Q.IOPL+2		;	";	ENB$S	;	DIR$	#TYPE,ERR			;TYPE I/O ERROR MESSAGE	JMP	LOC				;GO PRINT ERROR LOCATION;;ERR:	MOV	$DSW,R1				;DIRECTIVE STATUS TO R1	NEG	R1				;COMPLEMENT IT	MOV	#FIELD5,R0			;ADDRESS ASCII FORM DIR STATUS	CLR	R2				;ZERO SUPPRESS ASCII FORM	JSR	PC,$CBDMG			;CONVERT BINARY TO ASCII	MOV	#PBUF1,TYPE+Q.IOPL		;TAILOR DIRECTIVE ERROR MESSAGE	MOV	#S.BUF1,TYPE+Q.IOPL+2		;	";	ENB$S;	DIR$	#TYPE				;TYPE DIRECTIVE ERROR MESSAGE;LOC:	MOV	(SP)+,R1			;NEXT INST. LOC ADDRESS TO R1	MOV	#LOC1,R0			;LOCATION OF       ASCII VERSION	INC 	R2				;DO NOT ZERO SUPPRESS	JSR	PC,$CBOMG			;CONVERT BINARY TO OCTAL ADDRESS	MOV	#PBUF2,TYPE+Q.IOPL		;TAILOR QIOW$ DIRECTIVE	MOV	#S.BUF2,TYPE+Q.IOPL+2		;	"MESS:	ENB$S	DIR$	#TYPE				;TYPE LOCATION OF ERROR;	MOV	#2,EX+2				;SET TO ERROR EXIT	DIR$	#EX				;GET OUT;;TIMERR:	MOV	#MESS1,TYPE+Q.IOPL		;TAILOR QIOW$ DIRECTIVE	MOV	#SMESS1,TYPE+Q.IOPL+2		;	"	BR	MESS				;PRINT TERM SCB ERROR MESSAGE	.PAGE	.SBTTL	BLOCK I/O ROUTINE;**********************************************************;;;		W R I T E          A    B L O C K ;;;**********************************************************;WRITIT:	CMP	R5,#BUFFER+512.-32.		;IS BLOCK FULL?	BMI	SKIP				;BRANCH IF BLOCK NOT FULL;ENDOF:	MOV	R0,-(SP)	WRITE$	#FDBO,,,,,#IOSTAT,,ERROR	;WRITE A BLOCK	MOV	(SP)+,R0	INC	BLOCKO			;COUNT BLOCKS USED10$:	CMPB	IOSTAT,#0			;IS BLOCK I/O DONE?	BEQ	10$				;NO	MOV	#BUFFER-32.,R5			;RESET POINTER INTO BLOCK;	MOV	R0,-(SP)			;SAVE DESTROYED REGISTERS	MOV	R1,-(SP)			;	CLR	R0				;START OF BLOCK	MOV	#16.,R1				;16 RECORDS IN BLOCK1$:	MOV	#     "??,BUFFER(R0)			;MOVE NO RECORD INDICATOR IN	ADD	#32.,R0				;GO TO NEXT RECORD	SOB	R1,1$				;LOOP THROUGH BLOCK	MOV	(SP)+,R1			;RESET REGISTERS	MOV	(SP)+,R0			;;;SKIP:	ADD	#32.,R5				;INCREMENT POINTER TO NEXT RECORD6$:	RTS	PC				;GO BACK TO PROGRAM	.END	BEGIN          •¸Q"SÁ› 8$        ÁXÀO                ú       ´¤ L                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        •M8  Eyø   Ey * 4}øH
 4}
I ë~ Rÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           RN 	      . 	.MACRO	SPEAK,A,BB,C,D,E,F,G,H,I,J,K,L,M,N,O,P 	.IIF	B,N,	CLR	-(SP) 	.IIF	NB,N,	MOV	N,-(SP)ÿ 	.IIF	B,O,	CLR	-(SP) 	.IIF	NB,O,	MOV	O,-(SP)ÿ 	.IIF	B,P,	CLR	-(SP) 	.IIF	NB,P,	MOV	P,-(SP)ÿ ;ÿ 	.IIF	B,A,	CLR	-(SP) 	.IIF	NB,A,	MOV	A,-(SP)ÿ 	.IIF	B,BB,	CLR	-(SP)ÿ 	.IIF	NB,BB,	MOV	BB,-(SP)ÿ 	.IIF	B,C,	CLR	-(SP) 	.IIF	NB,C,	MOV	C,-(SP)ÿ 	.IIF	B,D,	CLR	-(SP) 	.IIF	NB,D,	MOV	D,-(SP)ÿ ;ÿ 	.IIF	B,E,	CLR	-(SP) 	.IIF	NB,E,	MOV	E,-(SP)ÿ 	.IIF	B,F,	CLR	-(SP) 	.IIF	NB,F,	MOV	F,-(SP)ÿ       	.IIF	B,G,	CLR	-(SP) 	.IIF	NB,G,	MOV	G,-(SP)F ;H
 	CLR	-(SP)
 	CLR	-(SP)
 	CLR	-(SP) 	JSR	PC,TALK	 	BCC	.+12P ;  	ADD 	#32,SP	 	JSR	PC,MI ;B 	CMP	(SP),#-1ÿ	 	BNE	.+12, 	ADD	#32,SP. 	JMP	K ;O 	CMP	(SP),#0	 	BNE	.+12, 	ADD	#32,SP. 	JMP	L ;O 	MOV	4(SP),H 	.IIF	NB,I,	MOV	2(SP),II 	.IIF	NB,J,	MOV	(SP),J 	ADD	#32,SPR 	.ENDM     °O       3 	.MACRO	TLKDF$		;DEFINES TALK CONTROL BLOCK OFFSETSÿ ;ÿD ;	Note that these offsets are globally defined, but don't follow theB ;	naming convention.  That      's because we want these to be mnemonic,= ;	but all reasonable standard names are used by the M+ group.B ;.& TLPRM	==	0		;THE PROMPT STRING POINTER& TLPRML	==	2		;THE PROMPT STRING LENGTH ;J' TLDEF	==	4		;THE DEFAULT STRING POINTER#' TLDEFL	==	6		;THE DEFAULT STRING LENGTHB ;	% TLHLP	==	10		;THE HELP STRING POINTERA% TLHLPL	==	12		;THE HELP STRING LENGTH. ;R7 TLTYP	==	14		;THE TYPE OF RESPONSE EXPECTED STORED HEREe 				;0 FOR A NUMBERr 				;+ FOR A LIST SEARCH" 				;- FOR A USER SPECIFIED STRING ;h(       TLSTYP	==	15		;SUB-TYPE OF RESPONSE TYPE+ 				;IF TYPE IS 0, SUB-TYPE 0 IS ANY NUMBERd3 				;	     , SUB-TYPE <> 0 IS A NON-NEGATIVE NUMBERG8 				;IF TYPE IS 1, SUB-TYPE 1 IS YES/NO - STRING IN TALK7 				;            , SUB-TYPE <> 1 IS USER SPECIFIED LSITE ;L' TLANS	==	16		;THE ANSWER STRING POINTERE) 				; (OR THE BINARY NUMBER IF TYPE WAS 0 ' TLANSL	==	20		;THE ANSWER STRING LENGTHE ;  ;P' TLSTAT	==	22		;THE STATUS OF THE ANSWERN 				; 0  IF CTRL-Z 				;-1 IF ESC 				;+1 IF STRINGC$ 				;+N IF NTH L      IST ELEMENT SELECTED ; , TLLISS	==	24		;ADDRESS OF 1ST STRING IN LIST ;S# TLSIZE	==	26		;# OF STRINGS IN LIST> ;ID ;	These offsets must be defined once in a program.  They are used by1 ;	TALKC to get around in the TALK data structure.S ;S 	.ENDM	TLKDF$      O       2 	.MACRO	TALK$,PROMPT,DEFAULT,HELP,TYPE,SUBTYP,LIST ; J ;	To beautify the macro code line certain naming conventions are followed: ;	E ;	All parameters must be less than 5 characters.  If cccc is a string G ;	parameter name, S.cccc i      s assumed to be equated to the length of thatE	 ;	string.T ;G6 ;	Type should be 	0	- if a numeric response is desiredD ;		      	+	- if a match to a member of a list of strings is desired- ;			-	- if a user-specified string is desirede ; E ;	Sub-type of +1 for a numeric response restricts answer to strictly , ;		positive integers.	G ;	Sub-type of 0 for a numeric response restricts answer to non-negative  ;		integers.E ;	Sub-type of -1 for a numeric response restricts answer to any valide ;		integer.c       ; C ;	Sub-type +1 for a list response restricts response to YES/NO, thes  ;	string list is in talk itself./ ;	Sub-type 0 uses a user-specified string list.r ; D ;	If the user response is incompatible with the type code, TALK willA ;	print an error message and re-prompt.  This will continue untilr; ;	an acceptable type of response is obtained from the user.  ;e ;  	.EVEN ;s 	.IF NDF	TLANS 	.MCALL	TLKDF$ 	TLKDF$			;DEFINE TALK OFFSETS ;a 	.ENDC% $$$PC1	=	.		;IDENTIFYY START OF BLOCKe+ 	.BLKW	TLSIZE	      	;DEFINE A TALK CONTROL BLOCKr" $$$PC2	=	.		;STORE FOR FINAL RESET ;h ;  ;t* .	=	$$$PC1 + TLPRM	;SPECIFY PROMPT ADDRESS 	.WORD	'PROMPT'i1 .	=	$$$PC1 + TLPRML	;SPECIFY PROMPT STRING LENGTHo 	.WORD	S.'PROMPT'y ;c ;,+ .	=	$$$PC1 + TLDEF	;SPECIFY DEFAULT ADDRESSr 	.WORD	'DEFAULT'2 .	=	$$$PC1 + TLDEFL	;SPECIFY DEFAULT STRING LENGTH 	.WORD	S.'DEFAULT' ;  ;e( .	=	$$$PC1 + TLHLP	;SPECIFY HELP ADDRESS 	.WORD	'HELP'	/ .	=	$$$PC1 + TLHLPL	;SPECIFY HELP STRING LENGTHI 	.WORD	S.'HELP'  ;C ; 6 .	=	$$$PC1 +       TLLISS	;SPECIFY LIST STRINGS TOTAL LENGTH 	.IIF	DF	LIST		.WORD	'LIST'  ;  ; 0 .	=	$$$PC1 + TLTYP	;SPECIFY EXPECTED ANSWER TYPE 	.BYTE	'TYPE'	/ .	=	$$$PC1 + TLSTYP	;SPECIFY SUB-TYPE OF ANSWER. 	.BYTE	'SUBTYP'  ; % .	=	$$$PC2 			;RESET POSITION COUNTER  	.ENDM	TALK$     O       # 	.MACRO	TALK$R,BLOCK,POINTER,LENGTHN ;E: ;	TALK$R allows dynamic respecification of default strings ;E? 	MOV	'POINTER','BLOCK'+TLDEF		;RESPECIFY DEFAULT STRING ADDRESSI> 	MOV	'LENGTH','BLOCK'+TLDEFL		;RESPECIFY DEFAULT       STRING LENGTH 	.ENDM	TALK$R      O        	.MACRO	LPUT$,TEXT,LENGTH,ERROR  	.MCALL	DIR$ ;P= ;	LPUT$ allows programmer to write messages to user terminal S@ ;	(and to log file, if selected) outside the context of a dialog  ;	but using the TALKC directives ;T7 	MOV	'TEXT',HELP+Q.IOPL	;SPECIFY ADDRESS OF TEXT TO QIOT: 	MOV	'LENGTH',HELP+Q.IOPL+2	;SPECIFY LENGTH OF TEXT TO QIO1 	DIR$	#HELP,ERROR		;USE TALKC HELP QIO FOR OUTPUTY ;F@ ;	Note logging will take place if TLKLOG is set to 1, just as in ;	      the context of a dialog. ;$ 	.ENDM	LPUT$     "O       # 	.MACRO	SPEAK$,CTLBLK,ESC,CTRLZ,ERR 5 	MOV	#'CTLBLK',R5			;R5 POINTS TO TALK DATA STRUCTURE / 	CALL	TALKC				;CALL THE 'TALK CLEARLY' ROUTINEi 						;TO ACTUALLY DO DIALOG" 	BCC	.+6				;ANY DIRECTIVE ERRORS?' 	JMP	'ERR'				;YES, GO TO ERROR ROUTINEO ;E1 	TST	TLSTAT(R5)			;WAS ESC OR CTRLZ THE RESPONSE?N 	BMI	.+6				;YES, IT WAS ESC  	BEQ	.+10				;YES, IT WAS CTRL-Z0 	BR	.+12				;NO, NORMAL RESPONSE - TO ;MAIN FLOW ;i1 	JMP	'ESC'				;JUMP TO U      SER SPECIFIED ESC ROUTINE 6 	JMP	'CTRLZ'				;JUMP TO USER SPECIFIED CTRL-Z ROUTINE ;SG ;	User main line code begins again here, R5 still points to the controlLF ;	block.  All registers but R5 have been preserved.  The control blockI ;	contains a Basic+2 string descriptor if the answer is a string.  If theTJ ;	answer is a number, the control block contains the binary number (again, ;	it is analogous to Basic+2.) ;IK ;	In addition, if a list of strings was specified for matching, the control'G ;	block cont      ains the number of the list element selected and the stringPJ ;	pointer points to the whole, programmer-specified, matched list element,L ;	NOT to the user specified subset of the list element which gave the match. ;eG ;	Please note that the 3 jumps for ESC, CTRL-Z, and directive error are  ;	JUMPs, not JSRs. ;w 	.ENDM	SPEAK$ the control block contains the binary number (again, ;	it is analogous to Basic+2.) ;IK ;	In addition, if a list of strings was specified for matching, the control'G ;	block cont          e_M^Á› 8$         e_M    >Æ   ¯”L  a8Y@  +"¶'@   +"æf@  ¢(Ðz@  é) @  é)è&@  ð)µW@   ð)Õz@  Ô2 d@  ©nL`@  4}ÀD@  ´‰à8@    ©  @  ¼©Î@  ¼©b"@  ¼©e"@  ¼©f"@   ¼©2g@  ¤ªª%@  ¤ªòy@  Îªª%@  Îªòy@   ÿª°@  «¯@  «•@  «"@  «E`@   «)x@  ó«,}@  ó«€@  ^¬ª%@  ^¬òy@       (.e_MhŽp  hH
    (Ž                  
DEBUG	V1.00C

TST Debug Util & ity
?   TST filenamePlease enter the  L file specification which represents th r e TST you wish to debug.Logical file n ˜       ame<DONE>? Please enter a logical file ¾  name which your TST references.File s ä pecification "  ø  ø "Please enter the file specification t o associate with the logical file name D.Logging device<TI:>? Please enter the j file specification you wish to use fo r logging purposes.Message filePlease  ¶enter the file specification of the fi Üle from which your TST will
derive me ssages.Workspace file<NONE>? Please en (ter the file specification of the file N from which your TST will      
derive work tspace.% Invalid file specification.% R šesponse exceeds maximum length.% Respo Ànse must be alphanumeric.% File not fo æund.% Privilege violation - access den ied.% File can not be opened.% No defa 2ult.P          F F                     @ @        \ \    †       † † †SY:.TSK  Ž Ž÷   ÷%   æ  Ô2 d©nL`Ô2 d©nL`  œ  ÿˆ÷    ÷    &
&
&
æ/ æ æ+ æ  Ô2 d
¼©Î¼©2g¼©2gó«,}/ $+  Âæÿÿæ; æO &
&
&
÷	  †Æe ÷	î      —#ÿÿ 
; 4}ÀD èÆe w °ÿ—#  Æe w l· þû· öû·öû Æe ÀìûÁ  ÂâûÂ%! †À w ¦ÂÀ  ó«,} (  4w î”ˆ~÷Àû  À  Á  ÷	  ê‡À6ð  (  ó«€ó«,}ó«€´‰à8"6&ó«,} Zð  , f&æ …÷	  Æe …ð À w  ó«€«E`&  €zf&æ …÷	  Æe …÷    ÷m    ÷   «¯¼©Î¼©2g"ó«€$¼©2g(¼©b" ¦  Â Á  Ñ•  ƒ~&
&
&
æŠ æ æ› æ  ¼©f"¼©f"Š $›  Ìæÿÿæ£ æ; &
&
&
÷	  †Æe ÷	ä—#ÿÿ 
£ 4}ÀD òÆe w ¦þ—#  Æe w b· ôú· ìú·ìú Æe ÷% Þú      ÀÚúÐ¥D Ð¥O Ð¥N È¥E  >w è ÷% ¶ú†À¨w ŒÀªúÁ  Â úÈ¥0  ¨ ¼©f" dƒÀ¨w €È¥: ‚È¥@ ö‚È¥[ óƒ”’~&
&
&
 ¨ ŠæÞ æ æ+ æ æÿÿæù æL &
&
&
÷	   Þ + ù (4}ÀD °†Æe ÷	—#ÿÿÆe w àþ—#  Æe w ” Ö· &ú· ú·úÆe ÀúÁ  Â
úÂ%! † ¼©2g üÀ„w ÎÂÀ„w ”ˆ~À  Áäù÷	  í‡ „„¼©2g&´‰à8 "÷	Ö‡w |þÀ  ð f&æ …÷	  Æe  ¤ªª%$«¯ H…f&æ …÷	  Æe …&
&
&
æEæ æ «""E nSæ æÿÿæZæI &
&
&
÷	  †Æe ÷	< SZ4      }ÀD ”—#ÿÿÆe w ôý—#  Æe w º· Lù·  ºDù·DùÆe À:ùÁ  Â0ùÂ%! †À,w ô” ¤ªòy", à‚~À  Áù÷	  ó‡À  ð  ( ðù, f&æ ¤ªòy´‰à8¤ªª%¤ªòy  …÷	  Æe …ð À,Á  ñ%   w  
«•,¤ªª%"+"æf ,Üw æÀ  ð 
f&æ …÷	  Æe …&
 Îªª% «¯ R&
&
æ£æ æ+ æ æÿÿæ¯æZ &
&
&
 
£+ ¯ x÷	  †Æe ÷	J—#ÿÿÆe w ˜þ—#  Æe  4}ÀD žw È· Zø· Rø·RøÆe ÀHøÁ  Â>øÂ% "Îªòy Ä! †À2w ÂÀ2w J”ˆ~À  Áø÷	 
22"Îªòy ê  í‡À        ð  ( ðø, f&æ …÷	  Æe  ´‰à8
Îªª%Îªòy$«E` …ð À2Á  ñ%   w Þñ%   w  2Îªª%+"æf"+"¶' 6Äw ÜÀ  ð 
f&æ …÷	  Æe …&
 ^¬ª% «¯ \&
&
æ	æ ææ æÿÿææ[ &
&
&
 
	 ‚÷	  †Æe ÷	@—#ÿÿÆe w ”þ—#  Æe  4}ÀD ¨w ¾ · P÷· H÷·H÷Æe 7Š  À:÷Á  Â ÿª°&^¬òy Î0÷Â%! †À<w ô ÷% ÷Ð¥N Ð¥O 	Ð¥ < ôN È¥E ·Š  ‡ Àúö”—~À  Áìö÷	  Þ‡ ÿª°^¬òy&´‰à8 	À  ð  ( ðØö, f&æ …÷	  Æe …ð ^¬ª%
^¬òy       «E` @	 À<Á  ñ%   w ² ñ%   w ˜ w  
<^¬ª%+"æf+"¶' f	° ‡ ÖÀ  ð 
f&æ …÷	  Æe …À ¤ªª% «¯ Œ	  ð 
f&æ …÷	  Æe …À  ð 
 Îªª%«¯"^¬ª% ²	f&æ …÷	  Æe …æ æÿˆÌ÷z   «¯&z(Ô2 d©nL` Ø	÷   *÷—  ÷"  Ô2 d©nL` —Ô2 d©nL` ê	  #÷¹  ÷   Ô2 d©nL` 
¹Ô2 d©nL` ø	  ÷Ù  ÷  Ô2 d©nL` 
ÙÔ2 d©nL` 
  ÷ê  ÷&  Ô2 d©nL` 
êÔ2 d©nL` 
  ÷  ÷  Ô2 d©      nL` 
Ô2 d©nL` "
  ÷)  ÷  Ô2 d©nL` 
)Ô2 d©nL` 0
   æ  ÿˆæ  ÿˆæ  ÿˆH Áò Ä À Ô2 d©nL` 
a8YÔ2 da8Yò  R
  ‘’”&
&
&
æÞ æ æ+ æ æÿÿæù  ¼©f"Þ + (ù  x
æL &
&
&
÷	  †Æe ÷	  —#ÿÿÆe w ªÿ 4}ÀD ©   ž
—#  Æe w   · Põ· Hõ·HõÆe À>õ  ©   Ä
Á8õÁ%! †ÀH
w üþÁÀH
w DÿÄ  E” H
H
$¼©2g ê
BÀõ÷	  ì‡÷	 ‡ ×-    ± À  ð     ´‰à8¼©f"¼©e""¼©f"&¼©2g(ð)µW ðìô  0
  0
  ÷mÞô  ÷e    ¡ ‡  ð)Õz       é) é)è&¼©2g¢(Ðz¼©f"             e_MNÁ› 8$        DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 3      1						.TITLE	DBULOG - TST DEBUG DIALOGUE      2						.IDENT	/1.0C01/      3      4      5					;	THIS ROUTINE PERFORMS THE USER DIALOG FOR THE TST DEBUG UTILITY      6      7      8					;	THE CALLING SEQUENCE IS 	CALL DBULOG      9     10					;     11					;     12					;	M O D I F I C A T I O N   H I S T O R Y   L O G     13					;     14					;     15					;     16					;	VER/ED	DATE		AUTHOR		EXPLANATION     17					;	------	----		------		---      --------     18					;     19					;	1.0C01	19-FEB-79	LBB		SPR - 21184 -     20					;						MAKE "<NONE>" DEFAULT ANSWER     21					;						  TO "WORKSPACE FILE" QUERY     22					;     23					;     24					;     25     26     27						.MCALL	SPEAK     28						.MCALL	$GNCAL,$FBCAL,$RBCAL,DIR$,EXST$S     29						.MCALL	FAB$B,FAB$E     30	000000					$FBCAL     31	000000					$RBCAL     32	000000					$GNCAL     33     34     35						.ENABL	LC     36     37     38	000000	000000 			RESL:	.WORD	0     39	000002	000000 			      RES:	.WORD	0     40	000004	000000 			RT:	.WORD	0     41	000006	   015 	   012 		HEADER:	.BYTE	15,12     42	000010	   104 	   105 	   102 		.ASCII	/DEBUG	V1.00C/	000013	   125 	   107 	   011	000016	   126 	   061 	   056	000021	   060 	   060 	   103     43	000024	   015 	   012 	   015 		.BYTE	15,12,15,12	000027	   012     44	000030	   124 	   123 	   124 		.ASCII	/TST Debug Utility/	000033	   040 	   104 	   145	000036	   142 	   165 	   147	000041	   040 	   125 	   164	000044	   151 	   154 	   151	0000      47	   164 	   171     45	000051	   015 	   012 			.BYTE	15,12     46		000045 			HEADL	=.-HEADER     47	000053	   077 	   040 		ND:	.ASCII	/? /     48	000055	   000 	   000 			.BYTE	0,0DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 3-1     49		000004 			NDL	=.-ND     50	000057	   124 	   123 	   124 	P1:	.ASCII	/TST filename/	000062	   040 	   146 	   151	000065	   154 	   145 	   156	000070	   141 	   155 	   145     51		000014 			PL1	=.-P1     52	000073	   120 	   154 	   145 	H1:	.ASCII	/      Please enter the file specification which represents the/	000076	   141 	   163 	   145	000101	   040 	   145 	   156	000104	   164 	   145 	   162	000107	   040 	   164 	   150	000112	   145 	   040 	   146	000115	   151 	   154 	   145	000120	   040 	   163 	   160	000123	   145 	   143 	   151	000126	   146 	   151 	   143	000131	   141 	   164 	   151	000134	   157 	   156 	   040	000137	   167 	   150 	   151	000142	   143 	   150 	   040	000145	   162 	   145 	   160	000150	   162 	   145 	   163	0001      53	   145 	   156 	   164	000156	   163 	   040 	   164	000161	   150 	   145     53	000163	   040 	   124 	   123 		.ASCII	/ TST you wish to debug./	000166	   124 	   040 	   171	000171	   157 	   165 	   040	000174	   167 	   151 	   163	000177	   150 	   040 	   164	000202	   157 	   040 	   144	000205	   145 	   142 	   165	000210	   147 	   056     54		000117 			HL1	=.-H1     55	000212	   114 	   157 	   147 	P2:	.ASCII	/Logical file name/	000215	   151 	   143 	   141	000220	   154 	   040 	   146	000      223	   151 	   154 	   145	000226	   040 	   156 	   141	000231	   155 	   145     56		000021 			PL2	=.-P2     57	000233	   074 	   104 	   117 	D2:	.ASCII	/<DONE>? /	000236	   116 	   105 	   076	000241	   077 	   040     58		000010 			DL2	=.-D2     59	000243	   120 	   154 	   145 	H2:	.ASCII	/Please enter a logical file name which your TST references./	000246	   141 	   163 	   145	000251	   040 	   145 	   156	000254	   164 	   145 	   162	000257	   040 	   141 	   040	000262	   154 	   157 	   147	0002      65	   151 	   143 	   141	000270	   154 	   040 	   146	000273	   151 	   154 	   145	000276	   040 	   156 	   141	000301	   155 	   145 	   040	000304	   167 	   150 	   151DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 3-2	000307	   143 	   150 	   040	000312	   171 	   157 	   165	000315	   162 	   040 	   124	000320	   123 	   124 	   040	000323	   162 	   145 	   146	000326	   145 	   162 	   145	000331	   156 	   143 	   145	000334	   163 	   056     60		000073 			HL2	=.-H2     61	00      0336				P3:     62	000336	   106 	   151 	   154 	P7:	.ASCII	/File specification "/	000341	   145 	   040 	   163	000344	   160 	   145 	   143	000347	   151 	   146 	   151	000352	   143 	   141 	   164	000355	   151 	   157 	   156	000360	   040 	   042     63		000024 			PL3	=.-P3     64	000362				P7V:	.BLKB	6     65	000370	   042 				.ASCII	/"/     66		000033 			PL7	=.-P7     67	000371	   120 	   154 	   145 	H3:	.ASCII	/Please enter the file specification to associate with the/	000374	   141 	   163 	         145	000377	   040 	   145 	   156	000402	   164 	   145 	   162	000405	   040 	   164 	   150	000410	   145 	   040 	   146	000413	   151 	   154 	   145	000416	   040 	   163 	   160	000421	   145 	   143 	   151	000424	   146 	   151 	   143	000427	   141 	   164 	   151	000432	   157 	   156 	   040	000435	   164 	   157 	   040	000440	   141 	   163 	   163	000443	   157 	   143 	   151	000446	   141 	   164 	   145	000451	   040 	   167 	   151	000454	   164 	   150 	   040	000457	   164 	   150 	   1      45     68	000462	   040 	   154 	   157 		.ASCII	/ logical file name./	000465	   147 	   151 	   143	000470	   141 	   154 	   040	000473	   146 	   151 	   154	000476	   145 	   040 	   156	000501	   141 	   155 	   145	000504	   056     69		000114 			HL3	=.-H3     70	000505	   114 	   157 	   147 	P4:	.ASCII	/Logging device/	000510	   147 	   151 	   156	000513	   147 	   040 	   144	000516	   145 	   166 	   151	000521	   143 	   145     71		000016 			PL4	=.-P4     72	000523	   074 	   124 	   111 	D4:	.      ASCII	/<TI:>? /	000526	   072 	   076 	   077	000531	   040DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 3-3     73		000007 			DL4	=.-D4     74	000532	   120 	   154 	   145 	H4:	.ASCII	/Please enter the file specification you wish to use for/	000535	   141 	   163 	   145	000540	   040 	   145 	   156	000543	   164 	   145 	   162	000546	   040 	   164 	   150	000551	   145 	   040 	   146	000554	   151 	   154 	   145	000557	   040 	   163 	   160	000562	   145 	   143 	   151	000565	         146 	   151 	   143	000570	   141 	   164 	   151	000573	   157 	   156 	   040	000576	   171 	   157 	   165	000601	   040 	   167 	   151	000604	   163 	   150 	   040	000607	   164 	   157 	   040	000612	   165 	   163 	   145	000615	   040 	   146 	   157	000620	   162     75	000621	   040 	   154 	   157 		.ASCII	/ logging purposes./	000624	   147 	   147 	   151	000627	   156 	   147 	   040	000632	   160 	   165 	   162	000635	   160 	   157 	   163	000640	   145 	   163 	   056     76		000111 			HL4      	=.-H4     77	000643	   115 	   145 	   163 	P5:	.ASCII	/Message file/	000646	   163 	   141 	   147	000651	   145 	   040 	   146	000654	   151 	   154 	   145     78		000014 			PL5	=.-P5     79	000657	   120 	   154 	   145 	H5:	.ASCII	/Please enter the file specification of the file from which/	000662	   141 	   163 	   145	000665	   040 	   145 	   156	000670	   164 	   145 	   162	000673	   040 	   164 	   150	000676	   145 	   040 	   146	000701	   151 	   154 	   145	000704	   040 	   163 	   160	000      707	   145 	   143 	   151	000712	   146 	   151 	   143	000715	   141 	   164 	   151	000720	   157 	   156 	   040	000723	   157 	   146 	   040	000726	   164 	   150 	   145	000731	   040 	   146 	   151	000734	   154 	   145 	   040	000737	   146 	   162 	   157	000742	   155 	   040 	   167	000745	   150 	   151 	   143	000750	   150     80	000751	   040 	   171 	   157 		.ASCII	/ your TST will/	000754	   165 	   162 	   040	000757	   124 	   123 	   124	000762	   040 	   167 	   151	000765	   154 	         154DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 3-4     81	000767	   015 	   012 			.BYTE	15,12     82	000771	   144 	   145 	   162 		.ASCII	/derive messages./	000774	   151 	   166 	   145	000777	   040 	   155 	   145	001002	   163 	   163 	   141	001005	   147 	   145 	   163	001010	   056     83		000132 			HL5	=.-H5     84	001011	   127 	   157 	   162 	P6:	.ASCII	/Workspace file/	001014	   153 	   163 	   160	001017	   141 	   143 	   145	001022	   040 	   146 	   151	001025	   154       	   145     85		000016 			PL6	=.-P6     86	001027	   074 	   116 	   117 	D6:	.ASCII	/<NONE>? /	001032	   116 	   105 	   076	001035	   077 	   040     87		000010 			DL6	=.-D6     88	001037	   120 	   154 	   145 	H6:	.ASCII	/Please enter the file specification of the file from which/	001042	   141 	   163 	   145	001045	   040 	   145 	   156	001050	   164 	   145 	   162	001053	   040 	   164 	   150	001056	   145 	   040 	   146	001061	   151 	   154 	   145	001064	   040 	   163 	   160	001067	   145 	         143 	   151	001072	   146 	   151 	   143	001075	   141 	   164 	   151	001100	   157 	   156 	   040	001103	   157 	   146 	   040	001106	   164 	   150 	   145	001111	   040 	   146 	   151	001114	   154 	   145 	   040	001117	   146 	   162 	   157	001122	   155 	   040 	   167	001125	   150 	   151 	   143	001130	   150     89	001131	   040 	   171 	   157 		.ASCII	/ your TST will/	001134	   165 	   162 	   040	001137	   124 	   123 	   124	001142	   040 	   167 	   151	001145	   154 	   154     90	00      1147	   015 	   012 			.BYTE	15,12     91	001151	   144 	   145 	   162 		.ASCII	/derive workspace./	001154	   151 	   166 	   145	001157	   040 	   167 	   157	001162	   162 	   153 	   163	001165	   160 	   141 	   143	001170	   145 	   056     92		000133 			HL6	=.-H6     93	001172	   045 	   040 	   111 	ER.BDF:	.ASCII	/% Invalid file specification./	001175	   156 	   166 	   141	001200	   154 	   151 	   144	001203	   040 	   146 	   151	001206	   154 	   145 	   040	001211	   163 	   160 	   145DBULOG       - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 3-5	001214	   143 	   151 	   146	001217	   151 	   143 	   141	001222	   164 	   151 	   157	001225	   156 	   056     94		000035 			EL.BDF	=.-ER.BDF     95	001227	   045 	   040 	   122 	ER.TOL:	.ASCII	/% Response exceeds maximum length./	001232	   145 	   163 	   160	001235	   157 	   156 	   163	001240	   145 	   040 	   145	001243	   170 	   143 	   145	001246	   145 	   144 	   163	001251	   040 	   155 	   141	001254	   170 	   151 	   155	0012      57	   165 	   155 	   040	001262	   154 	   145 	   156	001265	   147 	   164 	   150	001270	   056     96		000042 			EL.TOL	=.-ER.TOL     97	001271	   045 	   040 	   122 	ER.NAL:	.ASCII	/% Response must be alphanumeric./	001274	   145 	   163 	   160	001277	   157 	   156 	   163	001302	   145 	   040 	   155	001305	   165 	   163 	   164	001310	   040 	   142 	   145	001313	   040 	   141 	   154	001316	   160 	   150 	   141	001321	   156 	   165 	   155	001324	   145 	   162 	   151	001327	   143 	   0      56     98		000040 			EL.NAL	=.-ER.NAL     99	001331	   045 	   040 	   106 	ER.FNF:	.ASCII	/% File not found./	001334	   151 	   154 	   145	001337	   040 	   156 	   157	001342	   164 	   040 	   146	001345	   157 	   165 	   156	001350	   144 	   056    100		000021 			EL.FNF	=.-ER.FNF    101	001352	   045 	   040 	   120 	ER.PRV:	.ASCII	/% Privilege violation - access denied./	001355	   162 	   151 	   166	001360	   151 	   154 	   145	001363	   147 	   145 	   040	001366	   166 	   151 	   157	001371	         154 	   141 	   164	001374	   151 	   157 	   156	001377	   040 	   055 	   040	001402	   141 	   143 	   143	001405	   145 	   163 	   163	001410	   040 	   144 	   145	001413	   156 	   151 	   145	001416	   144 	   056    102		000046 			EL.PRV	=.-ER.PRV    103	001420	   045 	   040 	   106 	ER.NOP:	.ASCII	/% File can not be opened./	001423	   151 	   154 	   145	001426	   040 	   143 	   141	001431	   156 	   040 	   156	001434	   157 	   164 	   040	001437	   142 	   145 	   040DBULOG - TST DEBUG DIALO      GUE	MACRO M1110  19-FEB-79 12:58  PAGE 3-6	001442	   157 	   160 	   145	001445	   156 	   145 	   144	001450	   056    104		000031 			EL.NOP	=.-ER.NOP    105	001451	   045 	   040 	   116 	ER.NDF:	.ASCII	/% No default./	001454	   157 	   040 	   144	001457	   145 	   146 	   141	001462	   165 	   154 	   164	001465	   056    106		000015 			EL.NDF	=.-ER.NDF    107						.EVENDBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 4    109    110    111	001466				TSTFAB:	FAB$B    112	001606					F$LCH	      6    113	001606					F$DNA	DFNAM    114	001606					F$DNS	DFSZE    115	001606					FAB$E    116    117					;    118	001606	   123 	   131 	   072 	DFNAM:	.ASCII	/SY:.TSK/	001611	   056 	   124 	   123	001614	   113    119		000007 			DFSZE = .-DFNAM    120						.EVEN    121					;    122	001616				DBULOG::    123	001616	012767 	000006'	000000C		MOV	#HEADER,HELP+Q.IOPL    124	001624	012767 	000045 	000000C		MOV	#HEADL,HELP+Q.IOPL+2    125	001632					DIR$	#HELP		; PRINT OUT THE PROGRAM HEADER    126	001640				Q1:          127	001640	012767 	000000G	000000G		MOV	#$FLBUF,$FLPTR	; POINT TO THE STRING BUFFER AREA    128	001646	016767 	000000G	000000G		MOV	$FLPTR,$TSTAD	; THE TST STRING WILL GO HERE    129    130					;	Ask the 'TST filename' question    131    132	001654					SPEAK	#P1,#PL1,#ND,#NDL,#-1,#H1,#HL1,RES,RESL,RT,Q1,EX,ER    133    134	002022	016700 	175754 			MOV	RES,R0		; POINT TO THE RESPONSE    135	002026	016701 	000000G			MOV	$TSTAD,R1	; POINT TO WHERE IT IS SUPPOSED TO GO    136	002032	016702 	175742 			MOV	RES      L,R2		; THIS IS THE LENGTH OF THE STRING    137	002036	022702 	000041 			CMP	#33.,R2		; IS THE STRING TOO LONG?    138	002042	103004 				BHIS	5$		; NO    139	002044				4$:    140	002044	012700 	001640'			MOV	#Q1,R0		; RETURN FROM ERROR REPORT    141	002050	000167 	002646 			JMP	BADFIL		; IT HAS GOT TO BE A BAD FILE STRING IF > 33.    142	002054				5$:    143	002054	005702 				TST	R2		; NO RESPONSE    144	002056	001004 				BNE	6$		; NOPE    145	002060	012700 	001640'			MOV	#Q1,R0		; RETURN FROM ERROR REPORT          146	002064	000167 	002756 			JMP	NODEFL		; REPORT IT    147	002070				6$:    148	002070	112021 				MOVB	(R0)+,(R1)+	; TRANSFER IT    149	002072	077210 				SOB	R2,5$		; TRANSFER TIL DONE    150	002074	016767 	175700 	000000G		MOV	RESL,$TSTSZ	; SET UP THE SIZE OF THE STRING    151	002102	016700 	000000G			MOV	$TSTAD,R0	; POINT R0 TO THE STRING    152	002106	016701 	000000G			MOV	$TSTSZ,R1	; SIZE OF STRING TO BE VALIDATED    153	002112	004767 	000000G			CALL	VALID		; SEE IF THE FILE STRING IS VALID    154	0      02116	103752 				BCS	4$		; IT WASN'T    155	002120	012700 	001466'			MOV	#TSTFAB,R0	; SEE IF THE TST FILE IS THERE    156	002124					$STORE	$TSTAD,FNA,R0	; SET FILE STRING IN FAB    157	002132					$STORE	$TSTSZ,FNS,R0    158	002140					$OPEN	R0		; OPEN THE FILE TO SEE IF IT IS THERE    159	002164					$COMPARE #0,STS,R0	; DID THE OPEN SUCCEED    160	002170	003004 				BGT	10$		;YES - THEN EVERYTHING O.K.    161	002172	012700 	001640'			MOV	#Q1,R0		; OTHERWISE - PRINT ERROR MESSAGE    162	002176	000167 	002572       			JMP	NOFILE    163					;DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 4-1    164	002202				10$:	$CLOSE	R0		; CLOSE THE FILEDBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 5    166	002226				Q2:    167	002226	012767 	000000G	000000G		MOV	#$FLBUF,$FLPTR	; POINT TO THE STRING BASE    168	002234	066767 	000000G	000000G		ADD	$TSTSZ,$FLPTR	; UPDATE THE STRING BUFFER AREA POINTER    169	002242	012767 	000000G	000000G		MOV	#$FLETB,$FLETF	; POINT TO THE FIRST FREE ENTRY IN FILE T      ABLE    170    171	002250				Q2A:    172	002250	012702 	000006 			MOV	#6,R2		;SET NAME TO BLANKS    173	002254	016701 	000000G			MOV	$FLETF,R1    174	002260	112721 	000040 		10$:	MOVB	#' ,(R1)+    175	002264	077203 				SOB	R2,10$    176					;    177					;	Ask the 'Logical file name' question.    178    179	002266					SPEAK	#P2,#PL2,#D2,#DL2,#-1,#H2,#HL2,RES,RESL,RT,Q1,EX,ER    180    181    182	002434	022767 	000004 	175336 		CMP	#4.,RESL	; COULD IT BE 'DONE'?    183	002442	001020 				BNE	30$		; NO CHANCE          184	002444	016700 	175332 			MOV	RES,R0		; POINT TO THE STRING    185	002450	122720 	000104 			CMPB	#'D,(R0)+	; COULD IT BE 'DONE'?    186	002454	001013 				BNE	30$		; NO CHANCE    187	002456	122720 	000117 			CMPB	#'O,(R0)+	; COULD IT BE 'DONE'?    188	002462	001010 				BNE	30$		; NO CHANCE    189	002464	122720 	000116 			CMPB	#'N,(R0)+	;    190	002470	001005 				BNE	30$    191	002472	122710 	000105 			CMPB	#'E,(R0)    192	002476	001002 				BNE	30$    193	002500	000167 	000350 			JMP	Q4		; 'DONE' WAS THE       RESPONSE    194	002504				30$:    195	002504	022767 	000006 	175266 		CMP	#6,RESL		; CAN ONLY BE UP TO 6 CHARACTERS    196	002512	103004 				BHIS	40$		; IT IS OK    197	002514	012700 	002250'			MOV	#Q2A,R0		; SET UP TO RETURN FROM THE ERROR REPORT    198	002520	000167 	002214 			JMP	TOLONG		; REPORT THE ERROR    199	002524				40$:    200	002524	016700 	175252 			MOV	RES,R0		; POINT TO THE STRING    201	002530	016701 	000000G			MOV	$FLETF,R1	; POINT TO WHERE IT IS SUPPOSED TO GO    202	002534	016702 	175240       			MOV	RESL,R2		; LENGTH TO TRANSFER    203	002540				45$:    204	002540	122710 	000060 			CMPB	#60,(R0)	; NUMERIC?    205	002544	101404 				BLOS	46$		; MIGHT BE    206	002546				47$:    207	002546	012700 	002250'			MOV	#Q2A,R0		; SET UP FOR RETURN FROM ERROR REPORT    208	002552	000167 	002200 			JMP	NALPHA		; REPORT THE 'NOT ALPHANUMERIC' ERROR    209	002556				46$:    210	002556	122710 	000072 			CMPB	#72,(R0)	; NUMERIC?    211	002562	101006 				BHI	49$		; YES    212	002564	122710 	000100 			CMPB	#100,(      R0)	; ALPHA?    213	002570	101366 				BHI	47$		; NO, SO ITS INVALID    214	002572	122710 	000133 			CMPB	#133,(R0)	; ALPHA?    215	002576	101763 				BLOS	47$		; NO, SO ITS INVALID    216	002600				49$:    217	002600	112021 				MOVB	(R0)+,(R1)+	; TRANSFER    218	002602	077222 				SOB	R2,45$		; UNTIL DONE    219DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 6    221	002604				Q3:    222					;	Ask the 'File specification' question.    223    224	002604					SPEAK	#P3,#PL3,#ND,#NDL,#-1,#H3,#HL3,      RES,RESL,RT,Q2A,EX,ER    225    226	002752	016700 	175024 			MOV	RES,R0		; POINT TO THE RESPONSE    227	002756	016701 	000000G			MOV	$FLPTR,R1	; POINT TO WHERE IT IS SUPPOSED TO GO    228	002762	016702 	175012 			MOV	RESL,R2		; THIS IS THE LENGTH OF THE STRING    229	002766	022702 	000041 			CMP	#33.,R2		; IS THE STRING TOO LONG    230	002772	103004 				BHIS	50$		; NOT TOO LONG    231	002774				55$:    232	002774	012700 	002604'			MOV	#Q3,R0		; RETURN FROM ERROR REPORT    233	003000	000167 	001716 			JMP	BA      DFIL		; REPORT THE BAD FILE STRING ERROR    234	003004				50$:    235	003004	005702 				TST	R2		; NO RESPONSE    236	003006	001004 				BNE	52$		; NOPE    237	003010	012700 	002604'			MOV	#Q3,R0		; RETURN FROM ERROR REPORT    238	003014	000167 	002026 			JMP	NODEFL		; REPORT TI    239	003020				52$:    240	003020	112021 				MOVB	(R0)+,(R1)+	; TRANSFER    241	003022	077210 				SOB	R2,50$		; UNTIL DONE    242	003024	016700 	000000G			MOV	$FLPTR,R0	; POINT TO ALLEGED FILE STRING    243	003030	016701 	174744 			      MOV	RESL,R1		; SET UP THE LENGTH    244	003034	004767 	000000G			CALL	VALID		; SEE IF ITS A VALID FILE STRING    245	003040	103755 				BCS	55$		; NOPE    246	003042	004767 	002326 			CALL	FILENT		; ENTER FILE IN TABLE    247	003046	103402 				BCS	Q4		; CONTINUE IF NO MORE SAPCE    248	003050	000167 	177174 			JMP	Q2A		; ASK AGAINDBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 7    250	003054				Q4:    251	003054	012700 	000000G			MOV	#$LDFAB,R0	; POINT TO THE LOGGING DEVICE FAB    252	003060      					$COMPARE	#0,IFI,R0    253	003064	001424 				BEQ	60$		; THE LOGGING DEVICE HAS NOT BEEN OPENED    254	003066					$CLOSE	R0		; CLOSE THE LOGGING DEVICE FILE    255	003112					$ERASE	R0		; DELETE THE FILE    256	003136				60$:    257					;	Ask the 'Logging device' question.    258    259	003136					SPEAK	#P4,#PL4,#D4,#DL4,#-1,#H4,#HL4,RES,RESL,RT,Q2,EX,ER    260    261	003304	016700 	174472 			MOV	RES,R0		; POINT TO THE STRING    262	003310	012701 	000000G			MOV	#$LDSTR,R1	; POINT TO WHERE THE STRING IS T      O GO    263	003314	016702 	174460 			MOV	RESL,R2		; SET UP THE LENGTH OF THE STRING    264	003320	022702 	000041 			CMP	#33.,R2		; SEE IF IT IS BAD ALREADY    265	003324	103004 				BHIS	65$		; ITS OK    266	003326	012700 	003054'		62$:	MOV	#Q4,R0		; SET UP RETURN FROM ERROR REPORT    267	003332	000167 	001364 			JMP	BADFIL		; REPORT THE 'BAD FILE STRING ERROR    268	003336				65$:    269	003336	112021 				MOVB	(R0)+,(R1)+	; TRANSFER    270	003340	077202 				SOB	R2,65$		; UNTIL DONE    271	003342	012700 	000      000G			MOV	#$LDSTR,R0	; POINT TO THE FILE STRING    272	003346	016701 	174426 			MOV	RESL,R1		; GET THE LENGTH    273	003352	004767 	000000G			CALL	VALID		; SEE IF ITS A VALID FILE STRIGN    274	003356	103763 				BCS	62$		; IT WASN'T    275	003360	012700 	000000G			MOV	#$LDFAB,R0	; POINT TO THE FAB    276	003364					$STORE	#$LDSTR,FNA,R0	; POINT TO THE FILE STRING    277	003372					$STORE	RESL,FNS,R0	; SET UP THE SIZE OF THE FILE STRING    278	003400					$CREATE	R0	; OPEN IT    279	003424					$COMPARE	#0,ST      S,R0 ;OPERATION SUCCESSFUL?    280	003430	003014 				BGT	Q5		;YES - CONTINUE    281	003432				LDERR:    282	003432	012700 	003054'			MOV	#Q4,R0		; SET UP RETURN FROM THE ERROR REPORT    283	003436	012701 	000000G			MOV	#$LDFAB,R1	; POINT TO THE FAB    284	003442					$COMPARE	#ER$PRV,STS,R1    285	003450	001002 				BNE	70$		; NOT A PRIVILEGE VIOLATION    286	003452	000167 	001334 			JMP	PRIVER		; REPORT THE PRIVILEGE ERROR    287	003456				70$:    288	003456	000167 	001346 			JMP	NOOPEN		; GENERIC 'CAN'T OPE      N FILE' ERRORDBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 8    290	003462				Q5:    291	003462	012700 	000000G			MOV	#$MFFAB,R0	; POINT TO THE MESSAGE FILE FAB    292	003466					$COMPARE	#0,IFI,R0    293	003472	001412 				BEQ	75$		; THE MESSAGE FILE HAS NOT BEEN OPENED    294	003474					$CLOSE	R0		; CLOSE IT    295	003520				75$:    296					;	Ask the 'Message file' question.    297    298	003520					SPEAK	#P5,#PL5,#ND,#NDL,#-1,#H5,#HL5,RES,RESL,RT,Q4,EX,ER    299    300	003666	016700 	174      110 			MOV	RES,R0		; POINT TO THE STRING    301	003672	012701 	000000G			MOV	#$MFSTR,R1	; POINT TO WHERE THE STRING IS TO GO    302	003676	016702 	174076 			MOV	RESL,R2		; LENGTH OF STRING    303	003702	022702 	000041 			CMP	#33.,R2		; STRING TOO LONG    304	003706	103004 				BHIS	80$		; NOPE    305	003710				77$:    306	003710	012700 	003462'			MOV	#Q5,R0		; SET UP RETURN FROM ERROR REPORT    307	003714	000167 	001002 			JMP	BADFIL		; REPORT THE ERROR    308	003720				80$:    309	003720	005702 				TST	R2		      ; NO RESPONSE?    310	003722	001004 				BNE	82$		; NOPE    311	003724	012700 	003462'			MOV	#Q5,R0		; RETURN FROM ERROR REPORT    312	003730	000167 	001112 			JMP	NODEFL		; REPORT IT    313	003734				82$:    314	003734	112021 				MOVB	(R0)+,(R1)+	; TRANSFER    315	003736	077210 				SOB	R2,80$		; UNTIL DONE    316	003740	012700 	000000G			MOV	#$MFSTR,R0	; POINT TO THE STRING    317	003744	016701 	174030 			MOV	RESL,R1		; LENGTH OF STRING    318	003750	004767 	000000G			CALL	VALID		; SEE IF ITS VALID    319	0      03754	103755 				BCS	77$		; NOPE    320	003756	012700 	000000G			MOV	#$MFFAB,R0	; POINT TO THE FAB    321	003762					$STORE	#$MFSTR,FNA,R0	; STORE THE STRING ADDRESS    322	003770					$STORE	RESL,FNS,R0	; STORE THE STRING LENGTH    323	003776					$OPEN	R0	; OPEN THE MESSAGE FILE    324	004022					$COMPARE	#0,STS,R0    325	004026	003022 				BGT	Q6		;CONTINUE IF OPERATION SUCCEEDED    326	004030				MFERR:    327	004030	012700 	003462'			MOV	#Q5,R0		; SET UP RETURN FROM THE ERROR REPORT    328	004034	012701 	0      00000G			MOV	#$MFFAB,R1	; POINT TO THE FAB    329	004040					$COMPARE	#ER$PRV,STS,R1    330	004046	001002 				BNE	85$		; NOT A PRIVILEGED ERROR    331	004050	000167 	000736 			JMP	PRIVER		; REPORT THE PRIVILEGE ERROR    332	004054				85$:    333	004054					$COMPARE	#ER$FNF,STS,R1    334	004062	001002 				BNE	90$		; NOT A 'FILE NOT FOUND' ERROR    335	004064	000167 	000704 			JMP	NOFILE		; REPORT THE 'FILE NOT FOUND' ERROR    336	004070				90$:    337	004070	000167 	000734 			JMP	NOOPEN		; GENERIC 'CAN'T OPE      N FILE ERROR    338    339DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 9    341	004074				Q6:    342	004074	012700 	000000G			MOV	#$WFFAB,R0	; POINT TO THE WORKSPACE FILE FAB    343	004100					$COMPARE	#0,IFI,R0    344	004104	001412 				BEQ	95$		; THE WORKSPACE FILE HAS NOT BEEN OPENED    345	004106					$CLOSE	R0		; CLOSE IT    346	004132				95$:    347					;	Ask the 'Workspace file' question.    348    349	004132					SPEAK	#P6,#PL6,#D6,#DL6,#-1,#H6,#HL6,RES,RESL,RT,Q5,EX,ER    350    351          352	004300	105067 	000000G			CLRB	$NOWF		; INITIALIZE - 'NONE' NOT SELECTED    353	004304	016700 	173472 			MOV	RES,R0		; POINT TO THE STRING    354	004310	012701 	000000G			MOV	#$WFSTR,R1	; POINT TO WHERE THE STRING IS TO GO    355	004314	016702 	173460 			MOV	RESL,R2		; LENGTH OF STRING    356	004320	022702 	000041 			CMP	#33.,R2		; STRING TOO LONG    357	004324	103004 				BHIS	100$		; NOPE    358	004326				102$:    359	004326	012700 	004074'			MOV	#Q6,R0		; SET UP RETURN FROM ERROR REPORT    360	0043      32	000167 	000364 			JMP	BADFIL		; REPORT THE ERROR    361	004336				100$:    362	004336	022767 	000004 	173434 		CMP	#4.,RESL	; COULD IT BE 'NONE'?    363	004344	001021 				BNE	105$		; NO CHANCE    364	004346	122720 	000116 			CMPB	#'N,(R0)+	; COULD IT BE 'NONE'?    365	004352	001014 				BNE	104$		; NO CHANCE    366	004354	122720 	000117 			CMPB	#'O,(R0)+	; COULD IT BE 'NONE'?    367	004360	001011 				BNE	104$		; NO CHANCE    368	004362	122720 	000116 			CMPB	#'N,(R0)+	;    369	004366	001006 				BNE	104$          370	004370	122710 	000105 			CMPB	#'E,(R0)    371	004374	001003 				BNE	104$    372	004376	105267 	000000G			INCB	$NOWF		; 'NONE' WAS THE RESPONSE    373	004402	000207 				RETURN    374	004404				104$:    375	004404	016700 	173372 			MOV	RES,R0		; RESET POINTER TO STRING    376	004410				105$:    377	004410	112021 				MOVB	(R0)+,(R1)+	; TRANSFER    378	004412	077227 				SOB	R2,100$		; UNTIL DONE    379	004414	012700 	000000G			MOV	#$WFSTR,R0	; POINT TO THE STRING    380	004420	016701 	173354 			MOV	RESL,R      1		; LENGTH OF STRING    381	004424	004767 	000000G			CALL	VALID		; SEE IF ITS VALID    382	004430	103736 				BCS	102$		; NOPE    383	004432	012700 	000000G			MOV	#$WFFAB,R0	; POINT TO THE FAB    384	004436					$STORE	#$WFSTR,FNA,R0	; STORE THE STRING ADDRESS    385	004444					$STORE	RESL,FNS,R0	; STORE THE STRING LENGTH    386	004452					$OPEN	R0	; OPEN THE WORKSPACE FILE    387	004476					$COMPARE	#0,STS,R0    388	004502	003022 				BGT	DONE    389	004504				WFERR:    390	004504	012700 	004074'			MOV	#Q6,R      0		; SET UP RETURN FROM THE ERROR REPORT    391	004510	012701 	000000G			MOV	#$WFFAB,R1	; POINT TO THE FAB    392	004514					$COMPARE	#ER$PRV,STS,R1    393	004522	001002 				BNE	110$		; NOT A PRIVILEGED ERROR    394	004524	000167 	000262 			JMP	PRIVER		; REPORT THE PRIVILEGE ERROR    395	004530				110$:    396	004530					$COMPARE	#ER$FNF,STS,R1    397	004536	001002 				BNE	120$		; NOT A 'FILE NOT FOUND' ERRORDBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 9-1    398	004540	000167 	000230 			      JMP	NOFILE		; REPORT THE 'FILE NOT FOUND' ERROR    399	004544				120$:    400	004544	000167 	000260 			JMP	NOOPEN		; GENERIC 'CAN'T OPEN FILE ERROR    401	004550				DONE:    402	004550	000207 				RETURN			; GO BACK TO WHO CALLED YOU    403    404	004552	005726 			EX:	TST	(SP)+		; CLEAR STACK FROM THE CALL TO US    405	004554	012700 	000000G			MOV	#$LDFAB,R0	; POINT THE THE LOGGING FILE    406	004560					$COMPARE	#0,IFI,R0    407	004564	001412 				BEQ	200$		; NOT OPEN    408	004566					$CLOSE	R0		; CLOSE IT          409	004612				200$:    410	004612	012700 	000000G			MOV	#$MFFAB,R0	; POINT TO THE MESSAGE FILE FAB    411	004616					$COMPARE	#0,IFI,R0    412	004622	001412 				BEQ	210$		; NOT OPEN    413	004624					$CLOSE  R0		; CLOSE IT    414	004650				210$:    415	004650	012700 	000000G			MOV	#$WFFAB,R0	; POINT TO THE WORDSPACE FILE FAB    416	004654					$COMPARE	#0,IFI,R0    417	004660	001412 				BEQ	220$		; NOT OPEN    418	004662					$CLOSE	R0		; CLOSE IT    419	004706				220$:    420	004706					EXST$S	#EX$SUC		;       EXIT WITH SUCCESS STATUS    421    422	004720	000714 			ER:	BR	EX		; THIS SHOULD NOT OCCUR    423    424	004722				BADFIL:    425	004722	012767 	001172'	000000C		MOV	#ER.BDF,HELP+Q.IOPL    426									; SET UP THE ERROR MESSAGE    427	004730	012767 	000035 	000000C		MOV	#EL.BDF,HELP+Q.IOPL+2    428									; SET UP THE LENGTH OF THE ERROR MESSAGE    429	004736	000452 				BR	ERRPRT		; PRINT IT    430	004740				TOLONG:    431	004740	012767 	001227'	000000C		MOV	#ER.TOL,HELP+Q.IOPL    432	004746	012767 	000042       	000000C		MOV	#EL.TOL,HELP+Q.IOPL+2    433	004754	000443 				BR	ERRPRT    434	004756				NALPHA:    435	004756	012767 	001271'	000000C		MOV	#ER.NAL,HELP+Q.IOPL    436	004764	012767 	000040 	000000C		MOV	#EL.NAL,HELP+Q.IOPL+2    437	004772	000434 				BR	ERRPRT    438	004774				NOFILE:    439	004774	012767 	001331'	000000C		MOV	#ER.FNF,HELP+Q.IOPL    440	005002	012767 	000021 	000000C		MOV	#EL.FNF,HELP+Q.IOPL+2    441	005010	000425 				BR	ERRPRT    442	005012				PRIVER:    443	005012	012767 	001352'	000000C		      MOV	#ER.PRV,HELP+Q.IOPL    444	005020	012767 	000046 	000000C		MOV	#EL.PRV,HELP+Q.IOPL+2    445	005026	000416 				BR	ERRPRT    446	005030				NOOPEN:    447	005030	012767 	001420'	000000C		MOV	#ER.NOP,HELP+Q.IOPL    448	005036	012767 	000031 	000000C		MOV	#EL.NOP,HELP+Q.IOPL+2    449	005044	000407 				BR	ERRPRT    450	005046				NODEFL:    451	005046	012767 	001451'	000000C		MOV	#ER.NDF,HELP+Q.IOPL    452	005054	012767 	000015 	000000C		MOV	#EL.NDF,HELP+Q.IOPL+2    453	005062	000400 				BR	ERRPRT    454	00506      4				ERRPRT:DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 9-2    455	005064					DIR$	#BLANK    456	005072					DIR$	#HELP    457	005100					DIR$	#BLANK    458	005106	000110 				JMP	@R0		; PRINT A BLANK LINE, THE ERROR MESSAGE    459									; AND RETURN TO THE LOCATION POINTED TO BY R0    460					;    461					;    462					;	THIS ROUTINE WILL ASK THE 'File specification' question    463					;    464					;	INPUTS    465					;    466					;		R2	ADDRESS OF THE LOGICAL NAME    467					;    468			      		;	OUTPUTS    469					;    470					;    471					;		R0	POINTS TO THE RESPONSE FILE STRING    472					;		R1	CONTAINS THE LENGTH OF THE RESPONSE FILE STRING    473					;    474    475    476    477	005110				Q7::    478	005110	012701 	000362'			MOV	#P7V,R1		; POINT TO THE VARIABLE PART OF THE PROMPT    479	005114	012704 	000006 			MOV	#6,R4		;MOVE 6 CHARACTERS    480	005120	016700 	000000G			MOV	$FLETF,R0	;POINT AT FREE ENTRY IN FILE TABLE    481					;    482	005124	111221 			10$:	MOVB	(R2),(R1)+	;MOVE THE NA      ME    483	005126	112220 				MOVB	(R2)+,(R0)+	;    484	005130	077403 				SOB	R4,10$    485	005132					SPEAK	#P7,#PL7,#ND,#NDL,#-1,#H3,#HL3,RES,RESL,RT,Q7,$EX,$EX    486	005300	016700 	172476 			MOV	RES,R0		; POINT TO THE STRING    487	005304	016701 	172470 			MOV	RESL,R1		; LENGTH OF THE STRING    488	005310	022701 	000041 			CMP	#33.,R1		; TOO LONG?    489	005314	103004 				BHIS	150$		; NOPE    490	005316				140$:    491	005316	012700 	005110'			MOV	#Q7,R0		; SET UP RETURN AFTER ERROR REPORT    492	005322	0      00167 	177374 			JMP	BADFIL		; REPORT THE 'Bad file string' ERROR    493	005326				150$:    494	005326	005701 				TST	R1		; NO RESPONSE?    495	005330	001004 				BNE	155$		; RESPONSE    496	005332	012700 	005110'			MOV	#Q7,R0		; SET UP RETURN AFTER ERROR REPORT    497	005336	000167 	177504 			JMP	NODEFL		; REPORT THE ERROR    498	005342				155$:    499	005342	016704 	000000G			MOV	$FLPTR,R4	;MOVE THE FILE STRING    500	005346	010105 				MOV	R1,R5    501	005350	112024 			160$:	MOVB	(R0)+,(R4)+    502	005352	      077502 				SOB	R5,160$    503					;    504	005354	016700 	172422 			MOV	RES,R0		;RESTORE THE POINTER    505	005360	004767 	000000G			CALL	VALID		; SEE IF IT IS A VALID FILE STRING    506	005364	103754 				BCS	140$		; IT WASN'T    507	005366	004767 	000002 			CALL	FILENT    508	005372	000207 				RETURN			; IT WAS SO RETURNDBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 10    510					;    511					;	ENTER FILE SPECIFICATION IN THE FILE TABLE    512					;    513	005374				FILENT:    514	005374	0      26727 	000000G	000000G		CMP	$FLETF,#$FLETE	; HAVE WE DONE ALL OF THEM?    515	005402	000261 				SEC			; ASSUME SO    516	005404	001423 				BEQ	10$		; YES    517	005406	016700 	000000G			MOV	$FLETF,R0	; POINT TO THE PRESENT FILE TABLE ENTRY    518	005412	016760 	000000G	000000G		MOV	$FLPTR,F.PNAM(R0)	; SET UP POINTER TO THE FILE STRING    519	005420	016760 	172354 	000000G		MOV	RESL,F.PSZE(R0)	; SET UP LENGTH OF THE FILE STRING    520	005426	005060 	000000G			CLR	F.ID(R0)	; RESET BUFFER REGION ID    521	0054      32	005060 	000000G			CLR	F.IFI(R0)	; RESET IFI INDICATOR    522	005436	066767 	172336 	000000G		ADD	RESL,$FLPTR	; UPDATE THE FILE STRING BUFFER POINTER    523	005444	062767 	000000G	000000G		ADD	#FTBSZ,$FLETF	; POINT TO THE NEXT FREE FILE TABLE ENTRY    524	005452	000241 				CLC    525	005454	000207 			10$:	RETURN    526    527		001616'				.END	DBULOGDBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 10-1SYMBOL TABLEBADFIL  004722R  	FB$MDI= 000010   	NODEFL  005046R  	PL4   = 000016   	$JFN  =       000000BLANK = ****** GX	FB$MKD= 004000   	NOFILE  004774R  	PL5   = 000014   	$JNL  = 000000DBULOG  001616RG 	FB$NEF= 001000   	NOOPEN  005030R  	PL6   = 000016   	$LCH  = 000006DFNAM   001606R  	FB$NIL= 000100   	O$ALQ = 000012   	PL7   = 000033   	$LDFAB= ****** GXDFSZE = 000007   	FB$POS= 000010   	O$ALQ0= 000012   	PRIVER  005012R  	$LDSTR= ****** GXDL2   = 000010   	FB$PRN= 000004   	O$ALQ1= 000014   	P1      000057R  	$MFFAB= ****** GXDL4   = 000007   	FB$PUT= 000001   	O$BID = 000000   	P2      0002      12R  	$MFSTR= ****** GXDL6   = 000010   	FB$REA= 000042   	O$BKS = 000061   	P3      000336R  	$MRN0 = 000000DONE    004550R  	FB$REC= 000001   	O$BLN = 000001   	P4      000505R  	$MRN1 = 000000D2      000233R  	FB$REL= 000020   	O$BLS = 000056   	P5      000643R  	$MRS  = 000000D4      000523R  	FB$RWC= 000002   	O$BPA = 000032   	P6      001011R  	$NAM  = 000000D6      001027R  	FB$RWO= 000001   	O$BPS = 000034   	P7      000336R  	$NOWF = ****** GXEL.BDF= 000035   	FB$SDI= 000020   	O$CTX = 000002   	P7      V     000362R  	$ORG  = 000000EL.FNF= 000021   	FB$SEQ= 000000   	O$DEQ = 000016   	Q.IOPL= ****** GX	$RAT  = 000000EL.NAL= 000040   	FB$SQD= 000040   	O$DEV = 000062   	Q1      001640R  	$RFM  = 000002EL.NDF= 000015   	FB$STM= 000004   	O$DNA = 000052   	Q2      002226R  	$RMCLO= ****** GEL.NOP= 000031   	FB$SUP= 000400   	O$DNS = 000055   	Q2A     002250R  	$RMCRE= ****** GEL.PRV= 000046   	FB$TMD= 006000   	O$FAC = 000020   	Q3      002604R  	$RMERA= ****** GEL.TOL= 000042   	FB$TMP= 002000   	O$FBDB= 00      0106   	Q4      003054R  	$RMOPE= ****** GER      004720R  	FB$TRM= 000004   	O$FBD0= 000102   	Q5      003462R  	$RMSIA= ****** GERRPRT  005064R  	FB$TRN= 000020   	O$FBD1= 000104   	Q6      004074R  	$RTV  = 000000ER$FNF= ****** GX	FB$UDF= 000000   	O$FIOS= 000114   	Q7      005110RG 	$SHR  = 000002ER$PRV= ****** GX	FB$UPD= 000010   	O$FIO2= 000116   	RES     000002R  	$STS  = 000000ER.BDF  001172R  	FB$VAR= 000002   	O$FNA = 000050   	RESL    000000R  	$STV  = 000000ER.FNF  001331R  	FB$VFC= 000003   	O$      FNS = 000054   	RT      000004R  	$TSTAD= ****** GXER.NAL  001271R  	FB$WAT= 000004   	O$FOP = 000022   	TALK  = ****** GX	$TSTSZ= ****** GXER.NDF  001451R  	FB$WRI= 000015   	O$FOVL= 000110   	TOLONG  004740R  	$WFFAB= ****** GXER.NOP  001420R  	FB$WRT= 000041   	O$FPAR= 000112   	TSTFAB  001466R  	$WFSTR= ****** GXER.PRV  001352R  	FILENT  005374R  	O$FSZ = 000060   	VALID = ****** GX	$XAB  = 000000ER.TOL  001227R  	FTBSZ = ****** GX	O$FT0 = 000070   	WFERR   004504R  	$$$OST= 000005EX      004552R  	F.ID        = ****** GX	O$FT1 = 000072   	$ALQ0 = 000000   	..TAB1= 001466REX$ERR= 000002   	F.IFI = ****** GX	O$FT2 = 000074   	$ALQ1 = 000000   	..TAB2= 001466REX$SEV= 000004   	F.PNAM= ****** GX	O$FT3 = 000076   	$BID  = 000003   	..TMP0= 000000EX$SUC= 000001   	F.PSZE= ****** GX	O$FT4 = 000100   	$BKS  = 000000   	...ARG= 000000EX$WAR= 000000   	HEADER  000006R  	O$IFI = 000004   	$BLS  = 000000   	...ERR= 000000FB$ACK= 000100   	HEADL = 000045   	O$ISID= 000004   	$BPA  = 000000   	...FAB= 000000FB$BID= 000003         	HELP  = ****** GX	O$JNL = 000044   	$BPS  = 000000   	...LCB= 000000FB$BIO= 000040   	HL1   = 000117   	O$LCH = 000063   	$CTX  = 000000   	...LEN= 000002FB$BLK= 000010   	HL2   = 000073   	O$MRN = 000040   	$DEQ  = 000000   	...NAM= 000000FB$BLN= 000120   	HL3   = 000114   	O$MRN0= 000040   	$DEV  = 000000   	...NUM= 000001FB$CCL= 000002   	HL4   = 000111   	O$MRN1= 000042   	$DNA  = 001606R  	...PC1= 001606RFB$CR = 000002   	HL5   = 000132   	O$MRS = 000036   	$DNS  = 000007   	...POO= 000000FB$CTG= 000      200   	HL6   = 000133   	O$NAM = 000046   	$EX   = ****** GX	...RAB= 000000FB$DBM= 000100   	H1      000073R  	O$ORG = 000025   	$FAC  = 000002   	...RMS= 000000FB$DEL= 000004   	H2      000243R  	O$RAT = 000026   	$FLBUF= ****** GX	...SEQ= 000001FB$DIR= 000060   	H3      000371R  	O$RFM = 000027   	$FLETB= ****** GX	...SIZ= 000000FB$DLK= 000020   	H4      000532R  	O$RTV = 000024   	$FLETE= ****** GX	...TAB= 001466RFB$FID= 010000   	H5      000657R  	O$SHR = 000021   	$FLETF= ****** GX	...TBL= 000000FB$FIX      = 000001   	H6      001037R  	O$STS = 000006   	$FLPTR= ****** GX	...TMP= 000060FB$FMX= 000100   	LDERR   003432R  	O$STV = 000010   	$FNA  = 000000   	...TPC= 000120FB$FTN= 000001   	MFERR   004030R  	O$XAB = 000030   	$FNS  = 000000   	...TYP= 000067FB$GET= 000002   	NALPHA  004756R  	PL1   = 000014   	$FOP  = 000000   	...XAB= 000000FB$IDX= 000040   	ND      000053R  	PL2   = 000021   	$FSZ  = 000000   	...XXX= 000000FB$JNL= 000040   	NDL   = 000004   	PL3   = 000024   	$IFI  = 000000. ABS.	000000	   000            	005456	   001DBULOG - TST DEBUG DIALOGUE	MACRO M1110  19-FEB-79 12:58  PAGE 10-2SYMBOL TABLEERRORS DETECTED:  0
VIRTUAL MEMORY USED:  10855 WORDS  ( 43 PAGES)DYNAMIC MEMORY:  12484 WORDS  ( 48 PAGES)ELAPSED TIME:  00:02:17DBULOG,DBULOG/-SP=[1,1]RMSMAC/ML,[113,10]TPUMC/ML,DBULOG           æwÓf“Á› 8$Ô€      20000	!$**************************************************************&	!								&	!								&	!	B R E E D     S U B R O U T I N E			&	!								&	!								&	!	This entry is simply a placeholder for statement #	&	!	20000 for those programs using the SYSGEN dialogue	&	!	functions, but not using the BREED processing subr.	&	!								&	!								&	!***************************************************************&480	!$**************************************************************&	!								&	!								&	!	V A R I A       B L E S    A N D    A R R A Y S    U S E D	&	!								&	!	I N    T H E    D I A L O G U E    S Y S T E M		&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ASK.CVT$		Dialogue function cleaned up	&	!				  response			&	!	ASK.DIR%		Direction flag for justification&	!				  routine fill-in		&	!	ASK.LEVEL%		Level at which the current query&	!				  is working at.		&	!	ASK.MARGIN%		Right hand margin setting for	&	!				  text justifying.		&	!	ASK.NUM			Dialogue function n      umeric	&	!				  response			&	!	ASK.NUM%		Dialogue function integer	&	!				  response			&	!	ASK.RANGE()		Range checking boundary values	&	!	ASK.RESP$		Dialogue function user typed	&	!				  response			&	!	BOTTOM.LINE%		Pointer to current output slot	&	!				  in text line buffer		&	!	FINISHED.LINE%()	=TRUE if associated text line is&	!				  ready for printing		&	!	LINE.LEVEL%()		Level at which this line will	&	!				  be built.			&	!	LONG.FORM%		=TRUE to cause help text to be	&	!				  printed before first typin      g of&	!				  prompt for each query		&	!	PRINT.NEXT.HELP%	Help text printed initially for	&	!				  next prompt, then reset	&	!	TEXT.LINE$()		Array for processing text lines	&	!				  for printing			&	!	TOP.LINE%		Pointer to current input slot in&	!				  text line buffer.		&	!								&	!***************************************************************&730	!***************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!	I N    T H E    D I       A L O G U E     S Y S T E M		&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	20000		BREED a Kernel Task			&	!	ASTO50		ASCII to RAD50 Conversion		&	!	SPAWN		SPAWN a Kernel Task			&	!								&	!***************************************************************&780	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!	I N    T H E    D I A L O G U E    S Y S T E M		&      	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------	------------------------------  &	!								&	!	26350	ADD.LINE%	Add given line to text buffer,	&	!				  using text substitution and	&	!				  justification			&	!	26150	ADV.BOTTOM.LINE%Advance output pointer to text	&	!				  line buffer			&	!	26100	ADV.TOP.LINE%	Advance input pointer to text	&	!				  line buffer			&	!	25000	ASK%		SYSGEN version of the Dialogue	&	!				  function			&	!	26300	COMPLETE.LINE%	Complete the top line in the	&	!				  text       buffer			&	!	26800	EXECUTE.BLOCK%	Execute block of text through	&	!				  BREED				&	!	26550	FILL.AFTER.SPECIAL.CHARS%			&	!				Adds SPACE after occurance of	&	!				  .;:? or exclamation point	&	!				  punctuation characters.	&	!	26500	JUSTIFY.LINE%	Justify top line in text buffer	&	!				  to be 64 characters long	&	!	26550	LEVEL$		Returns string of SPACEs for	&	!				  printing to the current level	&	!	26450	PACK.WORD%	Pack new word into current text	&	!				  line				&	!	26400	PERFORM.BREAK%	Cause break in       justification	&	!				  operation.			&	!	26000	PRINT.BLOCK%	Print block of text on given	&	!				  channel with text substitution&	!	26250	PRINT.FINISHED.LINES%				&	!				Print all finished lines at	&	!				  bottom of text line buffer	&	!	26600	PRINT.HELP.TEXT%Print help text for dialogue	&	!				  function query		&	!	26200	RESET.PTRS%	Reset for text line processing	&	!	26050	SUB.TEXT$	Perform text substitution on	&	!				  given text string		&	!	26750	TEXT.LINE$	Returns first text line in a	&	!				  query text       block.		&	!								&	!***************************************************************&899	!***************************************************************&	!								&	!								&	!	D I A L O G U E    F U N C T I O N    N E E D E D	&	!								&	!	          C O M M O N    V A R I A B L E S		&	!								&	!								&	\ COM TRUE%							&	     ,FALSE%		! Logical constants !			&	     ,ASK.DIR%							&	     ,ASK.LEVEL%						&	     ,LONG.FORM%						&	     ,PRINT.NEXT.HELP%		! Dialogue function variables !	&	!								      &	!	COMMON region needed for multiple copies of the		&	!	DIALOGUE function and its support routines.		&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!*********************      ******************************************&930	\ DIM TEXT.LINES$(3),						&	      LINE.LEVEL%(3),						&	      FINISHED.LINE%(3)						&	!								&	!	Arrays for building text output lines.			&931	\ DIM T2652%(64)						&	!								&	!	Justification work array.				&932	\ DIM #12%, HELP.INDEX%(16383),					&		      ASK.HELP$( 8191) = 64				&	!								&	!	Query help text arrays.					&933	\ DIM #11,SUBSTITUTE.TEXT$(99%)=128				&	!								&	!	Substitute text array					&934	\ DIM ASK.RANGE(1)						&	!								&	!	Dial      ogue function range checking boundary values	&25000	!$**************************************************************&	!								&	!								&	!	S Y S G E N    D I A L O G U E    F U N C T I O N	&	!								&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	01					 BL7-01&	!	Edit date:	10-Apr-78				 BL7-01&	!	Author(s):	C. VEDOE, WJB				&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!	BL7-00	040778	        WJB	Add check for illegal integer	 BL7-00&	!				  at conv. in stmt. 25070	 BL7-00&	!	BL7-01	041078	  WJB	Remove "P" input type.		 BL7-01&	!								&	!***************************************************************&	!								&	!								&	! USAGE FORMAT	:						&	!								&	! FN.ASK%( QUERY.NUM% ,						&	!	   DEFAULT$ ,						&	!	   VALID$ ,						&	!	   RANGE.CHK% ,						&	!	   QUERY.LEVEL% )					&	!								&	!								&	! INPUTS:							&	!								&	! QUERY.NUM%	Index into HELP.INDEX% for the associated query	      &	!		  text.						&	!								&	! DEFAULT$	the default value to be displayed with the	&	!		prompt; NULL string if there is no default.	&	!								&	! VALID$	a valid response list or a valid response	&	!		type; NULL string if no editing is to be done.	&	!		A valid response list must begin with a slash	&	!		and elements in the list are separated by a	&	!		slash (e.g. /CREATE/EDIT/DELETE ).		&	!		Valid response types are the following:		&	!			""- any text is accepted		&	!			Y - yes/no				&	!			A - alphanumeric	      		&	!			D - decimal				&	!			I - integer				&	!								&	! RANGE.CHK%	flag to enable length or range check on response&	!		TRUE% to enable checking, FALSE% otherwise.	&	!		Response types behave as follows:		&	!								&	!			Response	Length	     Range	&	!			   ""		  YES	       NO	&	!			    A             YES          NO	&	!			    Y		   NO	       NO	&	!			    D              NO         YES	&	!			    I		   NO         YES	&	!								&	!		The "length" checking parameter is placed in	&	!		ASK.RANGE(0).  The low ran      ge boundary goes in	&	!		ASK.RANGE(0) and the high range boundary goes	&	!		ASK.RANGE(1).					&	!								&	! QUERY.LEVEL%	level at which current query is processed.	&	!								&	!								&	! RETURNS:							&	!								&	! The function returns the following values:			&	!								&	!	1 - if the ESCAPE key is the response			&	!	2 - if CTRL-Z is the response				&	!	3 - if YES is the response when YES/NO is required	&	!	4 - if NO is the response when YES/NO is required	&	!	n - where n is the number of the element       in the 	&	!	    list + 2 if a valid response list was specified	&	!	3 - for all other responses				&	!								&	! The following are also returned:				&	!								&	!	ASK.RESP$	the user response as typed		&	!			If the user types simply <CR>, then	&	!			contains the DEFAULT$ value.		&	!								&	!	ASK.CVT$	the response with all blanks and tabs	&	!			suppressed and lower case converted	&	!			to upper case; expanded if the user 	&	!			response identifies an element from	&	!			a list of valid responses		&	!						      		&	!	ASK.NUM%	the value of the response if an 	&	!			integer is required			&	!								&	!	ASK.NUM		the value of the response if any	&	!			decimal value is valid			&	!								&	!								&	! EXTERNAL FLAGS:						&	!								&	! LONG.FORM%		If TRUE%, causes the PROMPT text to 	&	!			automatically appear for every use of	&	!			FN.ASK%					&	!								&	! PRINT.NEXT.HELP%	If TRUE%, causes the help text for	&	!			the current call to FN.ASK% to be	&	!			printed out automatically; the flag is	&	!			reset to FALSE.		      		&	!								&	!								&	! DESCRIPTION:							&	!								&	!	The function prints the prompt string with the		&	!	default value, if specified, enclosed in angle		&	!	brackets. The response is edited as indicated. If	&	!	invalid, the prompt is repeated; if valid, the return	&	!	is set and the function exits. The help text is 	&	!	printed and the prompt repeated if the response		&	!	is "?".							&	!								&	!	According to the QUERY.LEVEL% value, all text is printed&	!	with (4%*(QUERY.LEVEL%-1%)) spaces to i      ndent it to the	&	!	proper position.  Margining on the right hand side is	&	!	performed to column 80.					&	!								&	!***************************************************************&								       !&	DEF FN.ASK%(QUERY.NUM%,DEFAULT$,VALID$,RANGE.CHK%,QUERY.LEVEL%)	&								       !&		\ ON ERROR GO TO 25130					&		\ ASK.DIR% = +1%					&		\ ASK.LEVEL% = QUERY.LEVEL%				&		!							&		!	Set up standard default error trap.		&		!	Set the starting direction for justification	&		!	  filling.					&		!	Save the quer      y level for later processing.	&		!							&		\ IF LONG.FORM%						&		  OR PRINT.NEXT.HELP%					&		  THEN							&			  PRINT.NEXT.HELP% = FALSE%			&			\ TE% = FN.PRINT.HELP.TEXT%(QUERY.NUM%,		&						    QUERY.LEVEL%)	&		!							&		!	If printing long form, or next prompt gets help	&		!	  anyway, then preface prompt with help text.	&25010		\ FN.ASK% = 3%						&		\ PRINT							&		\ PRINT FN.LEVEL$(QUERY.LEVEL%)				&		     + FN.SUB.TEXT$(					&				ASK.HELP$(HELP.INDEX%(2%*QUERY.NUM%)));	&		\ PRINT " <";						&			D      EFAULT$;					&			">";						&				IF DEFAULT$ <> ""			&		\ INPUT LINE ASK.RESP$					&		\ IF RIGHT(ASK.RESP$,LEN(ASK.RESP$)) = CHR$(27%)	&		  THEN							&			  FN.ASK% = 1%					&			\ PRINT						&			\ GO TO 25199					&		!							&		!	Print prompt with default, if specified,	&		!		enclosed in angle brackets.		&		!	If response is ESCAPE, set return and exit.	&25011		\ ASK.RESP$ = DEFAULT$	IF EDIT$(ASK.RESP$,4%) = ""	&		!							&		!	Set the default text answer.			&		!							&		!	NOTE   NOTE   NOTE   NOTE   NOTE		&		      !							&		!	Statements 25012 through 25019 are reserved for &		!	 user insertion of such items as "hidden"	&		!	 switches.					&25020		\ ASK.CVT$ = EDIT$(ASK.RESP$,38%)	! 2% + 4% + 32%	&		\ IF ASK.CVT$ = ""					&		  THEN							&			  PRINT						&			\ PRINT FN.LEVEL$(ASK.LEVEL%);			&				"% Input required"			&			\ GO TO 25010					&		!							&		!	Set default value if needed.			&		!	Discard all spaces, tabs, and excess characters;&		!		convert lower to upper case.		&		!	If no input data results,			&		!		Print e      rror message; repeat the prompt.	&25030		\ IF ASK.CVT$ = "?" 					&		  THEN							&			  TE% = FN.PRINT.HELP.TEXT%(QUERY.NUM%,		&						    QUERY.LEVEL%)	&			\ GO TO 25010					&		!							&		!	If response is "?", print HELP text.		&25040		\ GO TO 25045	IF VALID$ <> ""				&		\ ASK.CVT$ = EDIT$(ASK.RESP$,4%)			&		\ GO TO 25199	IF RANGE.CHK% = FALSE%			&				OR LEN(ASK.CVT$) <= ASK.RANGE(0%)	&		!							&		!	Skip to next if not "" type response.		&		!	Converted form has CRLF removed only.		&		!	Accept anything if n      ot length checking.		&		!	Accept it if not too long.			&25042		\ PRINT							&		\ PRINT FN.LEVEL$(ASK.LEVEL%);				&			"% Response exceeds maximum length (>";		&			NUM1$(ASK.RANGE(0%));				&			" characters)"					&		\ GO TO 25010						&		!							&		!	Signal response string too long			&25045		\ GO TO 25060	IF VALID$ <> "A"			&		\ GO TO 25042	IF  RANGE.CHK% = TRUE%			&				AND LEN(ASK.CVT$) > ASK.RANGE(0%)	&		\ FOR ASK.T1% = 1% TO LEN(ASK.CVT$)			&			\ ASK.CHR$ = MID(ASK.CVT$,ASK.T1%,1%)		&			\ IF ASK.CHR$ < "0"      				&			  OR ASK.CHR$ > "Z"				&			  OR (ASK.CHR$ > "9" AND ASK.CHR$ < "A")	&			  THEN						&				  PRINT					&				\ PRINT FN.LEVEL$(ASK.LEVEL%);		&					"% Alphanumeric required"	&				\ GO TO 25010				&		!							&		!	Skip if not "A" type response.			&		!	Check for and process too long a response.	&		!	Otherwise, scan all characters in response.	&		!		Check character to see if it is number	&		!		  or letter				&		!		If not, signal error and try again.	&25050		\ NEXT ASK.T1%						&		\ GO TO 25199						&		!				      			&		!	End of scanning loop.				&		!	If we reach here, then response is valid so we	&		!	  accept.					&25060		\ GO TO 25080	IF  VALID$ <> "D"			&				AND VALID$ <> "I"			&		\ ASK.NUM = VAL(ASK.CVT$)				&		\ GO TO 25070	IF VALID$ <> "D"			&		!							&		!	Skip if not numeric type response.		&		!	Convert to numeric form.			&		!	Skip if not integer response.			&25065		\ GO TO 25199  IF RANGE.CHK% = FALSE%			&			       OR (    (ASK.RANGE(0%) <= ASK.NUM      )	&				   AND (ASK.NUM       <= ASK.RANGE(1%)))&		\ PR      INT							&		\ PRINT FN.LEVEL$(ASK.LEVEL%);				&			"% Number out of range (";			&			NUM1$(ASK.RANGE(0%));				&			":";						&			NUM1$(ASK.RANGE(1%));				&			")"						&		\ GO TO 25010						&		!							&		!	Accept number if no range checking, or in range.&		!	Process out of range errors.			&25070		\ GO TO 25075	IF ASK.NUM = INT(ASK.NUM)		&		!							 BL7-00&		!	Check for proper integer format.		 BL7-00&		!	Error in conversion will be caught by error 	 BL7-00&		!	  Trapper.					 BL7-00&25071		\ PRINT							!BL7-0      0&		\ PRINT FN.LEVEL$(ASK.LEVEL%);				&			"% Integer required"				&		\ GO TO 25010						&		!							&		!	Check for integer response.			&		!	If not, signal with error message and try again.&25075		\ ASK.NUM% = INT(ASK.NUM)				&		\ GO TO 25065	IF VALID$ = "I"				&		!							&		!	Convert to integer result.			&		!	For "I", go perform range checking for		&		!	  acceptance.					&25080		\ VALID$ = "/YES/NO"	IF VALID$ = "Y"			&		!							&		!	If YES or NO is required, set up VALID$ as a	&		!	list to validate against.	      		&25090		\ ASK.T2% = INSTR(1%,VALID$,("/"+ASK.CVT$))		&		\ IF ASK.T2% = 0%					&		  THEN							&			  PRINT						&			\ PRINT FN.LEVEL$(ASK.LEVEL%);			&				"% Invalid response"			&			\ GO TO 25010					&		  ELSE							&			  ASK.T1% =					&			      INSTR((ASK.T2%+1%),VALID$,("/"+ASK.CVT$))	&			\ IF ASK.T1% <> 0%				&			  THEN						&				  PRINT					&				\ PRINT FN.LEVEL$(ASK.LEVEL%);		&					"% Response not unique"		&				\ GO TO 25010				&		!							&		!	Search valid string for matches to the response.&		!		The r      esponse can be a substring of a 	&		!		list element.				&		!	If no match or more than one, the response is	&		!		invalid; repeat the prompt.		&		!	If only one match is found, the response is	&		!	  valid.					&25100		\ ASK.T3%,						&		  ASK.ITEM% = 0%					&		!							&		!	Initialize accumulator and position pointer.	&25110		\ ASK.T3% = INSTR((ASK.T3%+1%),VALID$,"/")		&		\ ASK.ITEM% = ASK.ITEM% + 1%				&		\ GO TO 25110	IF ASK.T2% <> ASK.T3%			&		!							&		!	Find which list item the response matches.	&		!			      				&		\ ASK.T1% = INSTR((ASK.T3%+1%),VALID$,"/")		&		\ ASK.LEN% = LEN(VALID$)-ASK.T3%			&			IF ASK.T1% = 0%			! Last item	&		\ ASK.LEN% = ASK.T1% - ASK.T3% - 1%	IF ASK.T1% <> 0%&		\ ASK.CVT$ = MID(VALID$,(ASK.T3%+1%),ASK.LEN%)		&		\ FN.ASK% = ASK.ITEM% + 2%				&		\ GO TO 25199						&		!							&		!	Determine length of list item.			&		!	Equate the converted string to the list item.	&		!	Set the return to the item number + 2.		&25120		!*******************************************************&		!							&		!				      			&		!	D I A L O G U E    F U N C T I O N		&		!							&		!	    E R R O R    H A N D L I N G		&		!							&		!							&		!*******************************************************&25130		\ IF ERR = 11%						&		  THEN							&			  FN.ASK% = 2%					&			\ RESUME 25199					&		!							&		!	We get an EOF error if the response is CTRL-Z.	&		!	Set return and exit.				&25131		\ RESUME 25071	IF ERL = 25075%				!BL7-00&		!							 BL7-00&		!	Catch integer too long error.			 BL7-00&25140		\ IF  ERR = 52%						&		  AND ERL =       25060%					&		  THEN							&			  PRINT						&			\ PRINT FN.LEVEL$(ASK.LEVEL%);			&				"% Numeric required"			&			\ RESUME 25010					&		!							&		!	We get an illegal number error if we don't get	&		!	a valid numeric response when I, P, or D is	&		!	specified as the valid type. Repeat the prompt.	&25149		\ GO TO 19900						&		!							&		!	For all unaccounted for errors, go to the error	&		!	routine for the calling program.		&25199		\ ON ERROR GO TO 19000					&	\ FNEND								&	!								&	!		Reset the default       error trap.			&	!	Exit.							&26000	!$**************************************************************&	!								&	!								&	!	P R O C E S S    A N D    P R I N T    T E X T		&	!								&	!		       B L O C K				&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!******************      *********************************************&	!								&	!								&	!	USAGE FORMAT:	FN.PRINT.BLOCK%( CHAN% , INDX% )	&	!								&	!	INPUT:	CHAN%	- channel number of file to print to	&	!		INDX%	- entry in HELP.INDX%() for block to	&	!			    process.				&	!								&	!	LOCAL:	T2600%	- working variable			&	!		T2601%	-    "        "				&	!		T2600$	- working string			&	!		T2601$	-    "        "				&	!								&	!								&	!	Each line of the block of text in ASK.HELP$() indicated	&	!	by INDX% is pulled out, substi      tuted for, and then 	&	!	printed out on file CHAN%.				&	!								&	!	Lines ending in "-" are not terminated with CR-LF.	&	!	Instead, the next line continues at the end of the	&	!	previous one.						&	!								&	!								&	!***************************************************************&								       !&	DEF FN.PRINT.BLOCK%(CHAN%,INDX%)				&								       !&		\ T2601% = INDX%+INDX%					&		\ TE% = FN.RESET.PTRS%					&		\ FOR T2600% = HELP.INDEX%(T2601%)			&		           TO (HELP.INDEX%(T2601%)			&			      +HE      LP.INDEX%(T2601%+1%)-1%)		&		!							&		!	Reset processing of text.			&		!	Print all lines in the block.			&		!							&			\ T2600$ = FN.SUB.TEXT$(ASK.HELP$(T2600%))	&			\ T2601$ = RIGHT(T2600$,LEN(T2600$))		&			\ PRINT #CHAN%, LEFT(T2600$,(LEN(T2600$)-1%));	&			\ PRINT #CHAN%, T2601$				&				IF T2601$ <> "-"			&		\ NEXT T2600%						&		!		Get the next text line.			&		!		Pick off trailing character.		&		!		Print first part of line.		&		!		If not continuation, print trailing	&		!		  character plus terminator.	      	&		!	End of scanning loop.				&	\ FNEND								&26050	!$**************************************************************&	!								&	!								&	!	P R O C E S S    T E X T    S T R I N G			&	!								&	!		  S U B S T I T U T I O N S			&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								      &	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.SUB.TEXT$( TXT$ )			&	!								&	!	INPUT:	TXT$	- source text string to be processed	&	!								&	!	RETURNS:	- resulting text string, after all	&	!			  substitutions have been made.		&	!								&	!	LOCAL:	T2610$	- working string			&	!		T2610%	- working variable			&	!		T2611%	-    "       "				&	!		T2612%	-    "       "				&	!								&	!								&	!	The given line of text is scanned for the "\\xx" text	      &	!	substitution key.  If found, the two (2) digits "xx"	&	!	are converted into an index into SUBSTITUTE.TEXT$().	&	!	The text string in SUBSTITUTE.TEXT$(xx) is used to	&	!	replace the "\\xx" key.					&	!								&	!	When all substitutions have been made, a check will be	&	!	performed to see if any new substitutions were entered	&	!	into the string during the previous pass.  If so, then	&	!	The operation will be repeated.				&	!								&	!	The recursive substitution operation will be repeated	&	!	up to 5 tim      es.  If more are called for, they will be	&	!	ignored and the function will end processing.		&	!								&	!***************************************************************&								       !&	DEF FN.SUB.TEXT$(TXT$)						&								       !&		\ T2610$ = TXT$						&		\ T2612% = 0%						&		!							&		!	Get original text input string.			&		!	Reset recursion limit counter.			&26060		\ T2610% = 1%						&		!							&		!	Set search pointer to start of string.		&26070		\ T2610% = INSTR(T2610%,T2610$,"\\")			&		\ GO TO 260      90	IF T2610% = 0%				&		\ T2611% = VAL(MID(T2610$,(T2610%+2%),2%))		&		!							&		!	Search for substitute key.			&		!	Skip if none found.				&		!	Compute the index value.			&		!							&		\ T2610$ =  LEFT(T2610$,(T2610%-1%))			&			 + SUBSTITUTE.TEXT$(T2611%)			&			 + RIGHT(T2610$,(T2610%+4%))			&		\ T2610% = T2610% + LEN(SUBSTITUTE.TEXT$(T2611%))	&		\ GO TO 26070						&		!							&		!	Make the substitution.				&		!	Advance search pointer past new insert area	&		!	Go back for more substitutions.			&26090		\ T2      612% = T2612% + 1%					&		\ GO TO 26060	IF  T2612% < 5%				&				AND INSTR(1%,T2610$,"\\") <> 0%		&		!							&		!	Advance recursion counter.			&		!	Go back for another pass if not at limit and	&		!	  more substitutions called for.		&		!							&		\ FN.SUB.TEXT$ = T2610$					&		!							&		!	Pass out final result to caller.		&		!							&	\ FNEND								&26100	!$**************************************************************&	!								&	!								&	!	A D V A N C E    T O P    L I N E    P O I N T E R	&	!								&	      !								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.ADV.TOP.LINE%			&	!								&	!	RETURNS:	- TOP.LINE% is incremented, modulo 4.	&	!			  The new buffer slot is also cleared.	&	!								&	!      								&	!***************************************************************&								       !&	DEF FN.ADV.TOP.LINE%						&								       !&		\ TOP.LINE% = (TOP.LINE% + 1%) AND 3%			&		\ TEXT.LINE$(TOP.LINE%) = ""				&		\ LINE.LEVEL%(TOP.LINE%) = ASK.LEVEL%			&		!							&		!	Perform the increment, module 4.		&		!	Clear the new buffer slot for more action.	&		!	Assign a level to the line.			&		!							&	\ FNEND								&26150	!$**************************************************************&	!								&	!								&      	!	A D V A N C E    B O T T O M     L I N E    P T R	&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.ADV.BOTTOM.LINE%			&	!								&	!	RETURNS:	- increments BOTTOM.LINE%, m      odule 4.	&	!			  the current slot is marked un-finished&	!								&	!								&	!***************************************************************&								       !&	DEF FN.ADV.BOTTOM.LINE%						&								       !&		\ FINISHED.LINE%(BOTTOM.LINE%) = FALSE%			&		\ BOTTOM.LINE% = (BOTTOM.LINE% + 1%) AND 3%		&		!							&		!	Clear the bottom slot to un-finished state.	&		!	Increment pointer, module 4.			&		!							&	\ FNEND								&26200	!$**************************************************************&	!								&	!		      						&	!	R E S E T    L I N E    P O I N T E R S			&	!								&	!								&	!	Version:	BL8					&	!	Edit level:	03					&	!	Edit date:	16-Aug-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!	BL8-03  081678	  WJB	Fix initializtion of ASK.DIR%	 BL8-03&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.RESET.PTRS      %				&	!								&	!	RETURNS:	- both pointers point to the first	&	!			  element in the ring buffer.  All	&	!			  finished line flags are reset.	&	!								&	!	LOCAL:	T2620%	- working variable			&	!								&	!								&	!***************************************************************&								       !&	DEF FN.RESET.PTRS%						&								       !&		\ TOP.LINE%,						&		  BOTTOM.LINE% = 0%					&		\ FINISHED.LINE%(T2620%) = FALSE%			&			FOR T2620% = 0% TO 3%				&		\ TEXT.LINE$(0%) = ""					&		\ ASK.MARGIN% = 80% -       LEN(FN.LEVEL$(ASK.LEVEL%))	&		\ LINE.LEVEL%(0%) = ASK.LEVEL%				&		\ ASK.DIR% = +1%	IF ASK.DIR% = 0%		!BL8-03&		!							&		!	Reset the pointers to the first slot in the	&		!	  ring buffer.					&		!	Clear all finished line flags in the buffer.	&		!	Clear the first slot text area.			&		!	Set the allowed length of the justification area&		!	Make sure ASK.DIR% is properly setup.		 BL8-03&		!							&	\ FNEND								&26250	!$**************************************************************&	!								&	!								&	!	P       R I N T    F I N I S H E D    L I N E S		&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.PRINT.FINISHED.LINES%( CHAN% )	&	!								&	!	INPUT:	CHAN%	- number of channel to       print line on.	&	!								&	!	RETURNS:	- BOTTOM.LINE% is adjusted to the next	&	!			  un-finished line slot in the buffer.	&	!								&	!								&	!***************************************************************&								       !&	DEF FN.PRINT.FINISHED.LINES%(CHAN%)				&								       !&		\ WHILE FINISHED.LINE%(BOTTOM.LINE%) = TRUE%		&			\ PRINT #CHAN%,					&				FN.LEVEL$(LINE.LEVEL%(BOTTOM.LINE%))	&			      + TEXT.LINE$(BOTTOM.LINE%)		&			\ TE% = FN.ADV.BOTTOM.LINE%			&		\ NEXT							&		!							&		!	For all       finished lines at the bottom of the	&		!	  buffer, print them and then advance to the	&		!	  slot.						&		!							&	\ FNEND								&26300	!$**************************************************************&	!								&	!								&	!	C O M P L E T E    C U R R E N T    L I N E		&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Fi      eld Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!								&	!	USAGE FORMAT:	FN.COMPLETE.LINE%			&	!								&	!	RETURNS:	- text line pointed to by TOP.LINE% is	&	!			  marked as finished.			&	!								&	!								&	!***************************************************************&								       !&	DEF FN.COMPLETE.LINE%						&								       !&		\ FINISHED.LINE%(TOP.LINE%) = TRUE%			&		!							&		!	Mark the line as finished.			&		!							&	\       FNEND								&26350	!$**************************************************************&	!								&	!								&	!	A D D    T E X T    L I N E    T O    B L O C K		&	!								&	!		 W I T H    J U S T I F Y I N G			&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!********************      *******************************************&	!								&	!								&	!	USAGE FORMAT:	FN.ADD.LINE%( C% , TXT$ )		&	!								&	!	INPUT:	C%	- channel where finished lines are	&	!			  printed.				&	!		TXT$	- text string to add to block of text	&	!								&	!								&	!	If the input text string begins with "<", then a BREAK	&	!	is performed, followed by insertion of the text string	&	!	directly into the buffer.				&	!	If the text string is empty, the perform a BREAK and	&	!	insert a blank line (paragraphing).			&	      !	Otherwise, peel off words from the text string, one-at-	&	!	a-time and add them to the current line.		&	!								&	!	In all cases, print all finished lines before exiting.	&	!								&	!								&	!***************************************************************&								       !&	DEF FN.ADD.LINE%(C%,TXT$)					&								       !&		\ T2635$ = TXT$						&		\ T2635$ = EDIT$(T2635$,16%)				&			IF ASCII(TXT$) <> ASCII("<")			&		\ IF T2635$ = ""					&		  OR ASCII(T2635$) = ASCII("<")				&		  THEN							&			  TE% =       FN.PERFORM.BREAK%			&			\ TEXT.LINE$(TOP.LINE%) = " "	IF T2635$ = ""	&			\ TEXT.LINE$(TOP.LINE%) = RIGHT(T2635$,2%)	&				IF T2635$ <> ""				&			\ TE% = FN.COMPLETE.LINE%			&			      + FN.ADV.TOP.LINE%			&			\ GO TO 26380					&		!							&		!	Get the source text string for processing.	&		!	  converting all SPACES and TABs to single SPACE&		!	  unless line is in literal blocking.		&		!	If empty or BLANK, or beginning with "<",	&		!	  then perform BREAK, fill current line with	&		!	  BLANK if text string is "",       or text string	&		!	  data.  Complete the line and then go to	&		!	  finish processing.				&26370		\ WHILE LEN(T2635$) <> 0%				&			\ T2635$ = EDIT$(T2635$,8%)			&			\ T2635% = INSTR(1%,T2635$," ")			&			\ T2635% = LEN(T2635$)+1%	IF T2635% = 0%	&			\ TE% = FN.PACK.WORD%(LEFT(T2635$,(T2635%-1%)))	&			\ T2635$ = RIGHT(T2635$,(T2635%+1%))		&		\ NEXT							&		!							&		!	Peel words so long as there are some left.	&		!		Remove leading SPACEs.			&		!		Find the next SPACE.			&		!		Assume end of string if only on      e word 	&		!		  left.					&		!		Peel the word and pack it.		&		!		Remove word from string.		&		!	End of processing loop.				&26380		\ TE% = FN.PRINT.FINISHED.LINES%(C%)			&		!							&		!	Complete action by printed what is ready to	&		!	  print.					&		!							&	\ FNEND								&26400	!$**************************************************************&	!								&	!								&	!	P E R F O R M    B R E A K    I N    B L O C K		&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78      				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.PERFORM.BREAK%			&	!								&	!	RETURNS:	- If current line not finished, marks	&	!			  it as finished, then advances to next	&	!			  line.					&	!								&	!								&	!**********************************************      *****************&								       !&	DEF FN.PERFORM.BREAK%						&								       !&		\ TE% = FN.COMPLETE.LINE%				&		      + FN.ADV.TOP.LINE%				&			IF TEXT.LINE$(TOP.LINE%) <> ""			&		!							&		!	If current line not finished, then perform	&		!	  BREAK by completing line and advancing ptr.	&		!							&	\ FNEND								&26450	!$**************************************************************&	!								&	!								&	!	P A C K    W O R D    O N    L I N E			&	!								&	!								&	!	Version:	BL6					&	!	Edit level:      	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.PACK.WORD% ( WRD$ )			&	!								&	!	INPUT:	WRD$	- new word to add to current line.	&	!								&	!								&	!	If new word causes line to be longer than 64 characters	&	!	when added,       then line is justified and completed before	&	!	continuing.  New word is then added to current line.	&	!								&	!								&	!***************************************************************&								       !&	DEF FN.PACK.WORD%(WRD$)						&								       !&		\ TE% = FN.JUSTIFY.LINE%				&		      + FN.COMPLETE.LINE%				&		      + FN.ADV.TOP.LINE%				&			IF LEN( TEXT.LINE$(TOP.LINE%)			&			       +" "					&			       + WRD$		     ) > ASK.MARGIN%	&		\ IF TEXT.LINE$(TOP.LINE%) = ""				&		  THEN							&			  TEXT.LIN      E$(TOP.LINE%) = WRD$			&		  ELSE							&			  TEXT.LINE$(TOP.LINE%) = TEXT.LINE$(TOP.LINE%)	&						+ " "			&						+ WRD$			&		!							&		!	If overflow will occur, justify and complete	&		!	  current line before adding new word.		&26499	FNEND								&26500	!$**************************************************************&	!								&	!								&	!	J U S T I F Y    T O P    T E X T    L I N E		&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!	      							&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.JUSTIFY.LINE%			&	!								&	!	RETURNS:	- top line in buffer is justified	&	!			  to length of 64 characters.		&	!								&	!	LOCAL:	T2650$	- working string			&	!		T2650%	- working variable			&	!		T2651%  -    "       "				&	!		T2652%  -    "             "				&	!		T2653%  -    "       "     			&	!		T2652%()- working variable array		&	!								&	!								&	!	The external variable, ASK.DIR%, must be initialized	&	!	to a value of +1% before using this routine.  The value	&	!	of ASK.DIR% will alternate between +1 and -1, 		&	!	controlling the direction of expansion during jusitifi-	&	!	cation action.						&	!								&	!								&	!***************************************************************&								       !&	DEF FN.JUSTIFY.LINE%						&								       !&		\       TE% = FN.FILL.AFTER.SPECIAL.CHARS%			&		!							&		!	First, we add spaces after .;:? or the		&		!	  exclamation point.				&26510		\ T2650$ = TEXT.LINE$(TOP.LINE%)			&		\ GO TO 26549	IF LEN(T2650$) >= ASK.MARGIN%		&		\ T2650% = 1%						&		\ T2651% = 0%						&		!							&		!	Get the target text string.			&		!	Exit if all ready justified.			&		!	Otherwise, set constants to find and count	&		!	  words on line.				&26520		\ T2650% = INSTR((T2650%+2%),T2650$," ")		&		\ IF T2650% <> 0%					&		  THEN							&			  T2      651% = T2651% + 1%				&			\ T2652%(T2651%) = T2650%			&			\ GO TO 26520					&		!							&		!	Find next space.				&		!	If found, add to word pointer array and try 	&		!	  again for more words.				&26525		\ IF T2651% = 0%					&		  THEN							&			  PRINT "Can't justify line - "			&			       +T2650$					&			\ GO TO 26549					&		!							&		!	Flag as error if no spaces to justify with	&26530		\ IF ASK.DIR% < 0%					&		  THEN							&			  T2652% = T2651%				&			\ T2653% =     1%				&		  ELSE							&			  T2652% =           1%				&			\ T2653% = T2651%				&		!							&		!	Set loop control constants according to 	&		!	  direction of filling.				&26535		\ FOR T2650% = T2652% TO T2653% STEP ASK.DIR%		&			\ T2650$ =  LEFT(T2650$,(T2652%(T2650%)-1%))	&				 + " "					&				 + RIGHT(T2650$, T2652%(T2650%)    )	&			\ T2652%(T2654%) = T2652%(T2654%) + 1%		&				FOR T2654% = T2650% TO T2651%		&			\ GO TO 26540	IF LEN(T2650$) >= ASK.MARGIN%	&		\ NEXT T2650%						&		\ GO TO 26535						&		!							&		!	Loop on all words in string.			&		!		Inse      rt a space for current word.	&		!		Update word entry in pointer array.	&		!		Skip out if finished.			&		!	End of insertion loop.				&		!	Go back for more until done.			&26540		\ TEXT.LINE$(TOP.LINE%) = T2650$			&		\ ASK.DIR% = -ASK.DIR%					&		!							&		!	Restore line to text buffer.			&		!	Reverse direction for next justification pass.	&26549	FNEND								&26550	!$**************************************************************&	!								&	!								&	!								&	!	F I L L   I N    E X T R A    S P A C E S          A F T E R	&	!								&	!		S P E C I A L    P U N C T U A T I O N		&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.FILL.AFTER.SPECIAL.CHARS%		&	!								&	!	RETURNS:	- the       top line in the text buffer has	&	!			  been expanded, if possible, by adding	&	!			  SPACEs after .;:? or the exclamation	&	!			  point characters			&	!								&	!	LOCAL:	T2655$	- working string			&	!		T2655%	- working variable			&	!		T2656%  -    "       "				&	!		T2657%  -    "       "				&	!								&	!								&	!***************************************************************&								       !&	DEF FN.FILL.AFTER.SPECIAL.CHARS%				&								       !&		\ T2655$ = TEXT.LINE$(TOP.LINE%)			&		\ GO TO 26599	IF L      EN(T2655$) >= 64%			&		\ T2655% = 1%						&		!							&		!	Get text string to process.			&		!	Skip out if all ready justified.		&		!	Otherwise, initialize search pointer.		&26570		\ T2655% = INSTR((T2655%+2%),T2655$," ")		&		\ GO TO 26590	IF T2655% = 0%				&		\ GO TO 26570	IF INSTR(1%,				&					".;:!?",			&					MID(T2655$,(T2655%-1%),1%)) = 0%&		!							&		!	Search for next word separation.		&		!	If none, the skip to finish.			&		!	If separation not preceeded by special char,	&		!	  then skip and continue se      arching.		&		!							&		\ FOR T2656% = 2% TO 3%					&			\ T2657% = ASCII(EDIT$(MID(T2655$,		&						   (T2655%-T2656%),	&						   1%            ),32%))&			\ GOTO 26570	IF T2657% < 65%			&					OR T2657% > 90%			&		\ NEXT T2656%						&		\ T2655$ =  LEFT(T2655$,(T2655%-1%))			&			 + " "						&			 + RIGHT(T2655$, T2655%    )			&		\ GO TO 26570						&		!							&		!	Check to make sure that preceeding two (2)	&		!	  characters were alphabetic letters.  If not,	&		!	  do not insert space.  Otherwise, insert the	&		!      	  SPACE and go back for more.			&26590		\ TEXT.LINE$(TOP.LINE%) = T2655$			&		!							&		!	Replace text line with updated version.		&26599	FNEND								&26600	!$***************************************************************&	!								&	!								&	!	P R O C E S S    A N D    P R I N T    H E L P		&	!								&	!		  T E X T    P R I N T O U T			&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	00					&	!	Edit date:	01-Mar-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	      ------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!	BL7-00  030178	  WJB   Add continuation capability to	&	!				  line segment read-in.		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.PRINT.HELP.TEXT% ( INDX% ,		&	!					      LVL%   )		&	!								&	!	INPUT:	INDX%	- entry in HELP.INDEX% for block to	&	!			  process				&	!		LVL%	- level for the current query process	&	!								&	!	LO      CAL:	T2660%	- working variable			&	!		T2661%	-    "        "				&	!		T2660$	- working string			&	!								&	!								&	!	Each line of the block of text in ASK.HELP$() indicated	&	!	by INDX%, is pulled out and processed.  Substitution	&	!	takes place, followed by insertion or packing, with the	&	!	final result being printed on the terminal.		&	!								&	!	If a given line segment ends in "-", a continuation	&	!	is made by appending the next line segment read-in to	&	!	the current segment.  When no more conti      nuation occurs,	&	!	normal processing resumes.				&	!								&	!***************************************************************&								       !&	DEF FN.PRINT.HELP.TEXT%(INDX%,LVL%)				&								       !&		\ T2661% = INDX%+INDX%					&		\ ASK.LEVEL% = LVL%					&		\ PRINT							&		\ TE% = FN.RESET.PTRS%					&		\ T2660$ = ""						&		!							&		!	Set query index.				&		!	Set the current level.				&		!	Preface with blank line before text begins.	&		!	Reset for processing.				&		!	Clear the line accumulator.			&		      !							&		\ FOR T2660% = (HELP.INDEX%(T2661%)+1%)			&			    TO (HELP.INDEX%(T2661%)			&			       +HELP.INDEX%(T2661%+1%)-1%)		&			\ T2660$ = T2660$ 				&				 + FN.SUB.TEXT$(ASK.HELP$(T2660%))	&			\ IF RIGHT(T2660$,LEN(T2660$)) = "-"		&			  THEN						&				  T2660$ = LEFT(T2660$,(LEN(T2660$)-1%))&			  ELSE						&				  TE% = FN.ADD.LINE%(0%,T2660$)		&				\ T2660$ = ""				&		!							&		!	For all lines in the query text block.		&		!		Accumulate next line segment after	&		!		  substitution.				&		!		If line ends       in "-",			&		!		then remove the "-" and go back for	&		!	 	  next segment.				&		!		Otherwise, add line to printout.	&		!		  Clear the segment accumulator.	&26630		\ NEXT T2660%						&		\ TE% = FN.PERFORM.BREAK%				&		      + FN.PRINT.FINISHED.LINES%(0%)			&		!							&		!	Force out any remaining unprinted text.		&		!							&	\ FNEND								&26650	!$**************************************************************&	!								&	!								&	!	R E T U R N    L E V E L    I N D E N T A T I O N	&	!								&	!								      &	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.LEVEL$( LVL% )			&	!								&	!	INPUT:	LVL%	- level of associated text string.	&	!								&	!	RETURNS:	- string of SPACEs of length:		&	!								&      	!				4*(LVL%-1%)			&	!								&	!								&	!***************************************************************&								       !&	DEF FN.LEVEL$(LVL%) = SPACE$(4%*(LVL%-1%))			&26700	!$**************************************************************&	!								&	!								&	!	S E T U P    S Y S G E N    D I A L O G U E		&	!								&	!		   F U N C T I O N				&	!								&	!								&	!	Version:	BL8					 BL8-00&	!	Edit level:	00					&	!	Edit date:	09-Jun-78				 BL8-00&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	IN      ITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!	BL7-00	042878	  WJB	Add "LB:" to file spec for	 BL7-00&	!				  SGNDLGHLP.VIR file.		 BL7-00&	!	BL8-00	060978	  WJB   Preset ASK.LEVEL% to 1		 BL8-00&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.SETUP.DIALOGUE%			&	!								&	!								&	!	The virtual array cover file is opened by this function	&	!	and the maximu      m query number is retrieved.		&	!								&	!								&	!***************************************************************&								       !&	DEF FN.SETUP.DIALOGUE%						&								       !&		\ OPEN "LB:[200,200]SGNDLGHLP.VIR" FOR INPUT AS FILE 12%!BL7-00&			,ORGANIZATION	VIRTUAL				&			,ACCESS		READ				&		\ ASK.MAX.QUERY% = HELP.INDEX%(0%)			&		\ ASK.LEVEL% = 1%					!BL8-00&		\  FALSE% =  0%						&		\   TRUE% = -1%						&		\ VER.EDIT.NUM$ = ASK.HELP$(HELP.INDEX%(2%*6%))		&		\ OPEN "SUBSTIT.VIR" FOR OUTPUT AS FILE       11%		&			,TEMPORARY					&			,ORGANIZATION VIRTUAL				&		!							&		!	Open the file for business.			&		!	Get the maximum query # for later validations.	&		!	Preset the indentation level.			 BL8-00&		!	Set logical constants.				&		!	Set the Base Level #.				&		!	Open the SUBTITUTE.TEXT$() virtual array.	&		!							&	\ FNEND								&26750	!$**************************************************************&	!								&	!								&	!	R E T U R N    F I R S T    L I N E    O F    A		&	!								&	!		  Q U E R Y             B L O C K			&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.TEXT.LINE$( QUERY.NUM% )		&	!								&	!	INPUT:	QUERY.NUM%	- index number to query block	&	!				    of text			&	      !								&	!	RETURNS:	- first line of specified query block	&	!								&	!								&	!	This function is useful for fetching single lines of	&	!	text from the help text virtual array, items such as	&	!	command lines for spawning.				&	!								&	!								&	!***************************************************************&								       !&	DEF FN.TEXT.LINE$(QUERY.NUM%) =					&		ASK.HELP$(HELP.INDEX%(2%*QUERY.NUM%))			&	!								&	!	Get the first text line from the specified query block.	&26800	!$***************      ***********************************************&	!								&	!								&	!	P R O C E S S    A N D    E X E C U T E    T E X T	&	!								&	!		       B L O C K				&	!								&	!								&	!	Version:	BL6					&	!	Edit level:	00					&	!	Edit date:	06-Feb-78				&	!	Author(s):	AJS					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL6-00  020678    WJB   Field Test Release I		&	!								&	!***************************************************************&	!				      				&	!								&	!	USAGE FORMAT:	FN.EXEC.BLOCK%( TASK$ , INDX% , CONT%)	&	!								&	!	INPUT:	TASK$ - TASK TO SPAWN WITH COMMANDS WITHIN THE	&	!			BLOCK					&	!		INDX%	- entry in HELP.INDX%() for block to	&	!			    process.				&	!		CONT% - TRUE% if execution of block is to 	&	!			continue after an error on any command	&	!			within the block. FALSE% if execution	&	!			should be terminated on any error.	&	!			(error = any non-success status)	&	!								&	!	RETURN:	Most severe status from block executed.		&	!	      							&	!	LOCAL:	T2600%	- working variable			&	!		T2601%	-    "        "				&	!		T2602%	- continue execution decision variable	&	!		T2601$	- working string			&	!								&	!								&	!	Each line of the block of text in ASK.HELP$() indicated	&	!	by INDX% is pulled out, substituted for, and then 	&	!	executed by the task specified by TASK$.		&	!								&	!	Lines ending in "-" are not terminated with CR-LF.	&	!	Instead, the next line continues at the end of the	&	!	previous one.						&	!								&	!								&	!*      **************************************************************&								       !&	DEF FN.EXEC.BLOCK%(TASK$,INDX%,CONT%)				&								       !&		\ T2601% = INDX%+INDX%					&		\ T2602% = CONT%					&		\ CONT% = 1%						&		\ BREED.RETURN%=TRUE%					&		\ BREED.ERROR%=1%					&		\ BREED.TASK$=TASK$					&		\ TE% = FN.RESET.PTRS%					&		\ T2601$=""						& 		\ FOR T2600% = HELP.INDEX%(T2601%)+EXEC.SKIP%		&		           TO (HELP.INDEX%(T2601%)			&			      +HELP.INDEX%(T2601%+1%)-1%)		&			\ BREED.COMMAND$="" UNLESS T2601$      ="+"		&		!							&		!	Reset processing of text.			&		!	Execute all lines in the block.			&26820			\ BREED.COMMAND$ = BREED.COMMAND$+		&			    EDIT$(FN.SUB.TEXT$(ASK.HELP$(T2600%)),132%)	&			\ GOTO 26830 IF ASCII(BREED.COMMAND$)=ASCII(";")&				     OR EDIT$(BREED.COMMAND$,-1%) = ""	&			\ T2601$ =					&			    RIGHT(BREED.COMMAND$,LEN(BREED.COMMAND$))	&			\ GOSUB 20000 UNLESS T2601$="+"			&			\ BREED.COMMAND$ = LEFT(BREED.COMMAND$,		&				LEN(BREED.COMMAND$)-1%) IF T2601$="+"	&26830			\ CONT%=BREED.ERROR%				&	      			UNLESS ((BREED.ERROR% AND 7%) <		&					(CONT% AND 6%)) OR		&					(((CONT% AND 7%)=0%) AND 	&					((BREED.ERROR% AND 7%)=1%))	&			\ GOTO 26849 IF ((CONT% AND 7%)<>1%) AND	&					(T2602%=FALSE%)			&		\ NEXT T2600%						&		!							&		!		Get the next text line.			&		!		Pick off trailing character.		&		!		Execute the line unless the		&		!		last character was an accumulate line	&		!		before executing character (+).		&		!		Set up the return status.		&		!		Exit the routine if error and he/she	&		!		specified that       we should not go on.	&		!	End of scanning loop.				&26849	\ FN.EXEC.BLOCK%=CONT%						&	\ EXEC.SKIP%=0%							&	\ FNEND								&26900	!$**************************************************************&	!								&	!								&	!	U N L O C K     A     F I L E				&	!								&	!								&	!	Version:	BL7					&	!	Edit level:	 00					&	!	Edit date:	11-Apr-78				&	!	Author(s):	WJB					&	!								&	!	VER/ED	 DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL7-00	041178	  WJB	Initial Re      lease			&	!	V1.1A00	23-May-79 KMR	Changed spawned task name from	 1.1A00&	!				  ...PIP to MCR....		 1.1A00&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.UNLOCK.FILE% ( FIL$ )		&	!								&	!	INPUT:	FIL$	- file specification text string	&	!								&	!	RETURN:		- success/failure status code from PIP	&	!			  /UN operation on file.		&	!								&	!								&	!***************************************************************&								       !&	   Ö  DEF FN.UNLOCK.FILE%(FIL$)					&								       !&		\ BREED.TASK$ = "MCR..."				!1.1A00&		\ BREED.COMMAND$ = "PIP "				&				 + EDIT$(FIL$,2%+4%+32%)		&				 +"/UN"					&		\ BREED.RETURN% = TRUE%					&		\ GO SUB 20000						&		\ FN.UNLOCK.FILE% = BREED.ERROR%			&		!							&		!	MCR is the task.				 1.1A00&		!	Make up the command.				&		!	Set up for return even on error.		&		!	Perform the command.				&		!	Pass out the result to caller.			&								       !&	\ FNEND								&Ö         œwÆ“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETACN					&	!	Version:	01					&	!	Edit level:	02					&	!	Edit date:	16-FEB-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Co      pyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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 DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!***************************************************************&20	!$**      ************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BJD001	JAN 15,79  BJD	LIST - CAN'T ESC AFTER OPENING	&	!				LISTING FILE - GET FILE NOT OPEN&	!								&	!								&	!	BJD002  FEB 28 79  BJD  USE MCR... FOR SPAWNING		&	!								&	!	LBB001	JUN 5  79  LBB  SET PROTECTION ON ACCOUNT FILE	&	!				  -       V1.1			&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&	!								&	!	Allow the user to add, delete, modify or list accounts	&	!	This is all done to the TPS account file.  At the end	&	!	of the job, if EXIT was typed, this information		&	!	is used to produce       an updated RSX account file.		&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	1		TPS account file			&	!	2		the list of accounts			&	!	13		Terminal I/O				&	!								&	!		RSX account file is handled through spawns	&	!								&	!								&	!***************************************************************&      400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			temporary working variable	&	!	ASK.CVT$		string dialog response		&	!	ASK.RANGE()		limits size of dialog response	&	!	COMMAND$		command line for task being BRED&	!	FUNCTION%		flag for controlling branching	&	!				  based on function selected	&	!	GROUP$			      ascii version of dialog		&	!				  specified group code		&	!	JUNK$			filler in MAP			&	!	LINE.COUNT%		line counter for page control on&	!				  report			&	!	MAP.DEVICE$		logon system device		&	!	MAP.FIRST.NAME$		MAP version of first name	&	!	MAP.LAST.NAME$		MAP version of last name	&	!	MAP.LOGON.I%		4 fields not used by us, used by&	!				  11M account prog		&	!	MAP.PASSWORD$		MAP version of password		&	!	MEMBER$			ascii version of dialog		&	!				  specified member code		&	!	N%			tmeporary working variable	&	!      	OPEN%			flag to tell if report file is	&	!				  open				&	!	PADDED.GROUP$		group$ padded out to 3		&	!				  characters			&	!	PADDED.MEMBER$		member$ padded out to 3		&	!				  characters			&	!	PRINT.PASSWORD%		flag to control printing of	&	!				  passwords			&	!	RETURN%			=1 if errors in BRED task should&	!				  not be fatal			&	!	S%			temporary working variable	&	!	SANITY%			# of users of this UFD - for	&	!				  sanity check			&	!	SUBSTITUTE.TEXT$()	substitution array for dialog	&	!				  function			&	!	T$	      		temporary working variable	&	!	T%			temporary working variable	&	!	TASK$			name of installed task to be	&	!				  BRED				&	!	UFD.FLAG%		flag - controls creation of UFD	&	!	UIC$			padded dialog UIC - full 6	&	!				  characters			&	!	YEK$			KEY - uic field padded out	&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!      	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	20001		BREED an installed task			&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	25000	FN.*		SYSGEN dialog functions		&	!      								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimen      sion declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&951	\ MAP (ACCOUN)		YEK$=6,					&				MAP.PASSWORD$=6,			&				MAP.LAST.NAME$=14,			&				MAP.FIRST.NAME$=12,			&				MAP.LOGON.1%,				&				MAP.LOGON.2%,				&				MAP.LOGON.3%,				&				MAP.LOGON.4%,				&				MAP.DEVICE$=4,				&				JUNK$=78				&	!								&	!	The map for the ac      count files				&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&	!								&	\ A%= FN.SETUP.DIALOGUE%					&	!								&	!	Initialize the dialog function				&1500	!$**************************************************************&	!                                                                     &	!                                                               &	! 	OPEN THE PROPER ACCOUNT FILE				&	!                                                               &	!                                                               &	!***************************************************************&1501	\ OPEN "[200,201]TPSACNT.DAT" FOR INPUT AS FILE #1%,		&		ORGANIZATION INDEXED FIXED,				&		ACCESS MODIFY, ALLOW READ,				&		MAP ACCOUN,						&		RECORDSIZE       128						&	\ GO TO 2000							&	!								&	!	Try to OPEN the indexed version, go to dialog if 	&	!	it is there						&1800	\ OPEN "[200,201]TPSACNT.DAT" FOR OUTPUT AS FILE #1%,		&		ORGANIZATION INDEXED FIXED,				&		ACCESS MODIFY, ALLOW READ,				&		MAP ACCOUN,						&		PRIMARY YEK$ DUPLICATES,				&		RECORDSIZE 128						&	!								&	!	We could not find the file, therefore create a new one	&	!								&1850	\ PRINT								&	\ PRINT "We are creating a new account file!"			&	\ PRINT								&	!								&	!	Notify us      er that no old account file could be found	&2000	!$**************************************************************&	!                                                               &	!                                                               &	! 	D I A L O G    -    MENU SELECTION			&	!                                                               &	!                                                               &	!***************************************************************&2001	\ ON FN.ASK%(270%,"E      XIT","/ADD/DELETE/EDIT/LIST/EXIT",FALSE%,1%)&		GO TO 32100, 32200, 2050, 2051, 2052, 6000, 32000	&	!								&	!	Branch on the selection					&2050	\ FUNCTION%= 1%							&	\ GO TO 2500							&	!								&	!	Set up the code for future testing			&2051	\ FUNCTION%= 2%							&	\ GO TO 2500							&	!								&	!	Delete function						&2052	\ FUNCTION%= 3%							&	\ GO TO 2500							&	!								&	!	Modify function						&2500	!$**************************************************************&	!                                                                     &	!                                                               &	! 	G E T    A C C O U N T    #				&	!                                                               &	!                                                               &	!***************************************************************&2501	\ ASK.RANGE(0)= 7						&	\ ON FN.ASK%(271%,"","",TRUE%,1%)				&		GO TO 2000, 32200, 2550					&	!								&	!	Branch on ESC, CTRL-Z, UIC				&2550	\ N%= INSTR(1%,ASK.CVT$,",      ")					&	\ GO TO 2600	IF N%= 0%					&	\ GROUP$= LEFT(ASK.CVT$,N%-1%)					&	\ MEMBER$= RIGHT(ASK.CVT$,N%+1%)				&	\ T%= VAL(GROUP$)						&	\ T%= VAL(MEMBER$)						&	\ PADDED.GROUP$= STRING$(3%-LEN(GROUP$),48%) + GROUP$		&	\ PADDED.MEMBER$= STRING$(3%-LEN(MEMBER$),48%) + MEMBER$	&	\ UIC$= PADDED.GROUP$ + PADDED.MEMBER$				&	\ GO TO 5000	IF FUNCTION%= 3%				&	\ GO TO 4000	IF FUNCTION%= 2%				&	\ GO TO 3000							&	!								&	!	Put together the padded UIC				&2600	\ PRINT								&	\ PRINT "% UIC must have a com      ma!"				&	\ PRINT								&	\ GO TO 2500							&	!								&	!	Error message for bad UIC				&2700	\ PRINT								&	\ PRINT "% Format is n,m ."					&	\ PRINT								&	\ GO TO 2500							&	!								&	!	Error message for bad UIC spec				&3000	!$**************************************************************&	!                                                               &	!                                                               &	! 	ADD AN ACCOUNT						&	!                                                                     &	!                                                               &	!***************************************************************&3001	\ ASK.RANGE(0)=6						&	\ UFD.FLAG%= 1%							&	\ ON FN.ASK%(272%,"","A",TRUE%,2%)				&		GO TO 2500,32200, 3050					&	!								&	!	Branch on ESC, CTRL-Z, pssword				&3050	\ GET #1%, KEY#0 EQ UIC$					&3060	\ GO TO 3500	IF MAP.PASSWORD$= ASK.CVT$			&	\ UFD.FLAG%= 0%							&	\ GET #1%							&	\ GO TO 3075	IF UIC$ <> MAP.GROUP$+MAP.MEMBER$		&	\ GO TO 3060						      	&	!								&	!	Read sequentially through all entries for that 		&	!	UIC.  Give an error indication if a record 		&	!	already exists for that UIC and password.		&3075	\ MAP.PASSWORD$= ASK.CVT$					&	!								&	!	The record does not exist so allow the addition		&	!	Store the password					&3100	\ ASK.RANGE(0)= 14						&	\ ON FN.ASK%(273%,"","A",TRUE%,2%)				&		GO TO 3000, 32200, 3150					&	!								&	!	Brach on ESC, CTRL-Z, or last name			&3150	\ MAP.LAST.NAME$= ASK.CVT$					&	!								&	!	Store the response	      				&3200	\ ASK.RANGE(0)= 12						&	\ ON FN.ASK%(274%,"","A",TRUE%,2%)				&		GO TO 3100, 32200, 3250					&	!								&	!	Branch on ESC, CTRL-Z, first name			&3250	\ MAP.FIRST.NAME$= ASK.CVT$					&	!								&	!	Store the first name					&3300	\ ASK.RANGE(0)= 4						&	\ ON FN.ASK%(275%,"SY","A",TRUE%,2%)				&		GO TO 3200, 32200, 3350					&	!								&	!	Branch on ESC, CTRL-Z, System device			&3350	\ T%= INSTR(1%,ASK.CVT$,":")					&	\ ASK.CVT$= LEFT(ASK.CVT$,T%-1%)	IF T% > 0%		&	\ T$= EDIT$(ASK.CVT$,2%)					&	\ S      %= LEN(T$)							&	\ T%= 4% - S%							&	\ MAP.DEVICE$= T$ + STRING$(T%,48%)				&	!								&	!	Store the response					&3400	\ YEK$= PADDED.GROUP$ + PADDED.MEMBER$				&	\ PUT #1%						 	&	!								&	\ GO TO 2500	IF UFD.FLAG%= 0%				&	\ PRINT								&	\ UFD.FLAG%= 0%							&	\ TASK$= "MCR..."						&	\ COMMAND$= "UFD " + EDIT$(MAP.DEVICE$ + ":[" + GROUP$ +	&			"," + MEMBER$ + "]",2%)				&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Put the record and create a UFD for the user      		&	!	if needed						&	!								&	\ GO TO 2500							&	!								&	!	Go accept more additions				&3500	\ PRINT								&	\ PRINT "% A record for that account & password already exists!"&	\ GO TO 2500							&	!								&	!	Error message if user tries to create an existing account&4000	!$**************************************************************&	!                                                               &	!                                                               &	! 	DELETE AN ACCOUNT					&	!                                                                     &	!                                                               &	!***************************************************************&4001	\ SANITY.TOO%= 0%						&4002	\ GET #1%, KEY #0 EQ UIC$					&	\ GO TO 4004							&4003	\ GET #1%							&4004	\ GO TO 4005	IF UIC$ <> YEK$					&	\ SANITY.TOO%= SANITY.TOO% + 1%					&	\ GO TO 4003							&	!								&	!	Determine if only one is present			&4005	\ SANITY%= 0%							&	\ GET #1%, KEY#0 EQ UIC$					&	\ SAN      ITY%= 1%							&	!								&	!	Make sure the record is there to be deleted		&4007	\ SUBSTITUTE.TEXT$(1%)= MAP.PASSWORD$				&	\ ON FN.ASK%(276%,"YES","Y",FALSE%,2%)				&		GO TO 2500, 32200, 4015, 4010				&	!								&	!	Branch on ESC, CTRL-Z, YES, NO				&4010	\ GET #1%							&	\ GO TO 4200	IF UIC$ <> YEK$					&	\ SANITY%= SANITY% + 1%						&	\ GO TO 4007							&	!								&	!	Try next record for the proper password			&	!	Error if no match to specified UIC & password		&	!	Otherwise, keep trying till UIC is exhau      sted		&4015	\ GO TO 4030		IF SANITY.TOO% <> 1%			&	\ ON FN.ASK%(277%,"YES","Y",FALSE%,2%)				&		GO TO 4000, 32200, 4020, 4030				&	!								&	!	Branch on ESC, CTRL-Z, Yes, No				&4020	\ GO TO 4100		IF SANITY% > 1%				&	\ TASK$= "MCR..."						&	\ COMMAND$= "PIP [" + PADDED.GROUP$ + "," + PADDED.MEMBER$ +	&				"]*.*;*/DE"				&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Deletion of files and directory not permitted if other 	&	!	users for this account					&	!	Otherwise, dele      te his files				&4025	\ TASK$= "MCR..."						&	\ COMMAND$= "PIP [0,0]" + PADDED.GROUP$ +  PADDED.MEMBER$ +	&				".DIR;1/DE"				&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Delete his directory					&4030	\ DELETE #1%							&	!								&	!	Delete his account file entry				&4050	\ GO TO 2500							&	!								&	!	Go process further deletes				&4100	\ PRINT								&	\ PRINT "There are other users for this UFD."			&	\ PRINT "Therefore, the files and UFD must remain!"		&	\ PRINT	      							&	\ GO TO 4030							&	!								&	!	A sanity check is made on the request to delete files	&	!	and directories.  This message prints if delete access	&	!	 is denied.						&4200	\ PRINT								&	\ PRINT "% A record for that account does not exist!"		&	\ PRINT								&	\ GO TO 2500							&	!								&	!	Error message if user tries to delete a non-existent	&	!	account.						&	!								&	!	This same routine is used by other error conditions	&	!	See 19001						&5000	!$**************************************      ************************&	!                                                               &	!                                                               &	! 	MODIFY AN ACCOUNT ENTRY					&	!                                                               &	!                                                               &	!***************************************************************&5001	\ GET #1%, KEY#0 EQ UIC$					&	!								&	!	Get to first record for that UIC			&5005	\ SUBSTITUTE.TEXT$(1%)= MAP.PASSWO      RD$ 				&	\ ON FN.ASK%(278%,"YES","Y",FALSE%,2%)				&		GO TO 2500, 32200, 5015, 5010				&	!								&	!	Branch on ESC, CTRL-Z, Yes, No				&5010	\ GET #1%							&	\ GO TO 4200	IF YEK$ <> UIC$					&	\ GO TO 5005							&	!								&	!	Keep trying to locate the entry 			&	!	Print an error message if there is no such record	&5015	\ PRINT								&	\ PRINT "The existing entry is:"				&	\ PRINT LEFT(YEK$,3%) + "," + RIGHT(YEK$,4%);TAB(10%);		&		MAP.FIRST.NAME$;TAB(25%);				&		MAP.LAST.NAME$;TAB(40%);				&		MAP.PASSWO      RD$;TAB(50%);					&		MAP.DEVICE$						&	!								&	!	Print the existing entry				&5025	\ ASK.RANGE(0)= 14						&	\ ON FN.ASK%(279%,MAP.LAST.NAME$,"A",TRUE%,2%)			&		GO TO 5000, 32200, 5030					&	!								&	!	Branch on ESC, CTRL-Z, Last name			&5030	\ MAP.LAST.NAME$= ASK.CVT$					&	!								&	!Store the response						&5050	\ ASK.RANGE(0)= 12						&	\ ON FN.ASK%(280%,MAP.FIRST.NAME$,"A",TRUE%,2%)			&		GO TO 5025, 32200, 5055					&	!								&	!	Branch on ESC, CTRL-Z, First name			&5055	\ MAP.FIRST.NAME$= ASK.C      VT$					&	!								&	!	Store the first name					&5075	\ ASK.RANGE(0)= 6						&	\ ON FN.ASK%(281%,MAP.PASSWORD$,"A",TRUE%,2%)			&		GO TO 5050, 32200, 5080					&	!								&	!	Branch on ESC, CTRL-Z, Password				&5080	\ MAP.PASSWORD$= ASK.CVT$					&	!								&	!	Store the response					&5100	\ ASK.RANGE(0)= 4						&	\ ON FN.ASK%(282%,MAP.DEVICE$,"A",TRUE%,2%)			&		GO TO 5075, 32200, 5105					&	!								&	!	Branch on ESC, CTRL-Z, Device				&5105	\ T%= INSTR(1%,ASK.CVT$,":")					&	\ ASK.CVT$= LEFT(ASK.CVT$,T%-1%)	      IF T% > 0%		&	\ T$= EDIT$(ASK.CVT$,2%)					&	\ S%= LEN(T$)							&	\ T%= 4% - S%							&	\ MAP.DEVICE$= T$ + STRING$(T%,48%)				&	!								&	!	Store the device specification				&5200	\ UPDATE #1%							&	\ GO TO 2500							&	!								&	!	Go to modify more records				&6000	!$**************************************************************&	!                                                               &	!                                                               &	! 	LIST THE ACCOUNT FILE					&	!                                                                     &	!                                                               &	!***************************************************************&6001	\ RESTORE #1%, KEY#0						&	\ CLOSE #2%							&	\ LINE.COUNT%= 100%						&	\ ASK.RANGE(0)= 33						&	\ ON FN.ASK%(283%,"LP:","",TRUE%,2%)				&		GO TO 2000, 32200, 6005					&	!								&	!	Branch on ESC, CTRL-Z, Device spec			&6005	!!!\ GO TO 6025	IF OPEN%= 1%			;BJD001		&	\ ASK.CVT$= EDIT$ (ASK.CVT$,2%+4%+32%)				&	\ O      PEN ASK.CVT$ FOR OUTPUT AS FILE #2%				&	!!!\ OPEN%= 1%					;BJD001		&	!								&	!	Open the output file					&6025	\ ON FN.ASK%(284%,"YES","Y",FALSE%,2%)				&		GO TO 6000, 32200, 6030, 6035				&	!								&	!	Branch on ESC, CTRL-Z, Password response		&6030	\ PRINT.PASSWORD%= TRUE%					&	\ GO TO 6050							&	!								&	!	Print the passwords on the list				&6035	\ PRINT.PASSWORD%= FALSE%					&	\ GO TO 6050							&	!								&	!	Don't print the passwords				&6050	!	POSITION AT BEGINNING					&	!								&	\ GET #1      %							&	\ GOSUB 6200	IF LINE.COUNT% > 60%				&	\ PRINT #2%, LEFT(YEK$,3%) + "," + RIGHT(YEK$,4%);TAB(10%);	&			MAP.FIRST.NAME$;TAB(25%);			&			MAP.LAST.NAME$;TAB(40%);			&			MAP.DEVICE$;TAB(50%);				&	\ PRINT #2%, MAP.PASSWORD$	IF PRINT.PASSWORD%= TRUE%	&	\ PRINT #2%			IF PRINT.PASSWORD%= FALSE%	&	\ LINE.COUNT%= LINE.COUNT% + 1%					&	\ GO TO 6050							&	!								&	!	Print the entries one by one				&6200	\ LINE.COUNT%= 3%						&	\ PRINT #2%, CHR$(12%)						&	\ PRINT #2%, TAB(20%);" TRAX Account File List      ing", DATE$(0%)	&	\ PRINT #2%							&		\ PRINT #2%, "Account #";TAB(10%);			&			"First Name";TAB(25%);				&			"Last Name";TAB(40%);				&			"Device";TAB(50%);				&	\ PRINT #2%, "Password"		IF PRINT.PASSWORD%= TRUE%	&	\ PRINT #2%			IF PRINT.PASSWORD%= FALSE%	&	\ PRINT #2%							&	\ RETURN							&	!								&	!	Print the Heading					&6300	\ CLOSE #2%							&	\ OPEN%= 0%							&	\ GO TO 2000							&	!								&	!	Close the listing file and return to the function question&6400	\ PRINT								&	\ PRINT "% Invalid f      ile specification - can't open file."	&	\ PRINT								&	\ GO TO 6000							&	!								&	!	Error message for bad file spec				&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O       N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15001	\ DEF FN.LOGIN%							&	\ ON ERROR GO TO 15010						&	\ FN.LOGIN%= 0%							&	\ GET #1%, KEY#0 EQ "001001"					&	\ GO TO 15020							&	!								&	!	Test if 1,1 is there					&15010	\ ON ERROR GO TO 19000						&	\ PRINT								&	\ PRINT "% You may not EXIT until a 1,1 account is established."&	\ PRINT "  Your system will not boot correctly witho      ut it."	&	\ PRINT								&	\ FN.LOGIN%= 1%							&	\ RESUME 15020							&	!								&	!	Print the error message  & return status		&15020	\ FNEND								&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19001	\ RESUME 1800		IF ERR= 5 AND ERL= 1501			&	\ RESUME 3075		IF ERR= 155  AND ERL= 3050		&	\ RESUME 3075		IF ERR= 11   AND       ERL= 3060		&	\ RESUME 4200		IF ERR= 155  AND ERL= 4005		&	\ RESUME 4200		IF ERR= 11   AND ERL= 4010		&	\ RESUME 4005		IF ERR= 11   AND ERL=4003		&	\ RESUME 4200		IF ERR= 155  AND ERL= 4002		&	\ RESUME 4200		IF ERR= 155  AND ERL= 5001		&	\ RESUME 6400		IF ERL= 6005				&	\ RESUME 6300		IF ERR= 11   AND ERL= 6050		&	\ RESUME 4200		IF ERR= 11   AND ERL= 5010		&	\ RESUME 4200		IF ERR= 11   AND ERL= 4010		&	\ RESUME 2700		IF ERR= 52   AND ERL= 2550		&	!								&	!	Process expected file handling errors- otherwise       go 	&	!	to unexpected error routine				&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For all unaccounted for errors, 			&	!	Use standard error trapping routine			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&32000	!$***************************************************      ***********&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32001	\ A%= FN.LOGIN%							&	\ GO TO 2000		IF A% <> 0%				&	\ CLOSE #1%							&	\ CLOSE #2%							&32050	\ PRINT								&	\ PRINT "Logins are temporarily disabled!"			&	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /NOLOGON"					&	\ GOSUB	20001							&	!								&	!	Disable logins so no weird messages appear due to 	&	!	locked RSX account file					&	      !								&	\ TASK$= "MCR..."						&	\ COMMAND$= "CNV [0,0]RSX11.SYS;2=[200,201]TPSACNT.DAT"	&	\ GOSUB 20001							&	!								&	!	Convert TPS account file to sequential organization	&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "PIP [0,0]RSX11.SYS;1/DE"				&	\ GOSUB	20001							&	!								&	!	Delete the old RSX account file				&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "PIP [0,0]RSX11.SYS;1=[0,0]RSX11.SYS;2/RE"		&	\ GOSUB 20001							&	!								&	!								&	!	Convert the file to sequential				&	!	      							&	\ TASK$ = "MCR..."						!V1.1&	\ COMMAND$ = "PIP [200,201]TPSACNT.DAT;*/PR/WO/GR/OW"		!V1.1&	\ GOSUB 20001							!V1.1&	!								 V1.1&	!	Deny all access to account file.			 V1.1&	!								 V1.1&	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /LOGON"					&	\ GOSUB	20001							&	\ PRINT "Logins are now enabled!"				&	!								&	!	RE-enable logins					&	!								&32075	!								&	\ CALL EXITS2 (1%,0%)						&32100	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (1%,27%)						&	!								&	!	Exit on initial       ESC					&32200	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ LT$= CHR$(10%)+CHR$(13%)					&	\ PRINT								&	\ PRINT "% CTRL-Z is treated by this utility as a panic exit."	&	\ PRINT								&	\ PRINT "% Any changes made during this Account session are"	&	+ LT$ + "permanently recorded on a file.  However, they will"	&	+ LT$ + "not become effective for logins until you select"	&	+ LT$ + "the EXIT Account command at some later time."		&	\ PRINT								&	\ CALL EXITS2 (2%,26%)						&	!								&	!	Exit on CTRL-Z						&3     2767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ CALL EXITS2 (1%,0%)						&	\ END         áyìrþvÁ› 8$        	.TITLE	STAROT - Statistics report root module	.IDENT	/V1.1A/	.SBTTL	MACRO CALLS & GLOBAL CONTROL CONSTANTS	.ENABL LC	.NLIST	BEX	.PAGE;; COPYRIGHT (C) 1979; 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 AN      D 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 DOCUMENT 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.;;;;	MODULE: 	STAROT;;	VERSION:	V1.0A;;	AUTHOR:		BRIAN DOYLE;;;;	MODIFIED BY:;;	RICHARD TREADWAY		** RT001;;		FIXED TO RUN       FROM TT0: ONLY FOR V1.1 OF TRAX;	.PAGE	.MCALL	EXST$,FINIT$,FSRSZ$,DIR$,QIOW$	.MCALL	FDBDF$,FDAT$A,FDOP$A,FDBF$A,FDRC$A,FDBK$A,NMBLK$	.PSECT	DATROT,D,REL,GBL,CON,RWEX:	EXST$	1;SAMPLE::	.WORDSUMMAR::	.WORD;IOSTAT::	.BLKW	2		;GLOBAL STATUS BLOCK	.PAGE	.SBTTL	I/O DEFINITIONS;******************************************************************;;;	I / O    D E F I N I T I O N S ;;;*******************************************************************;	.EVEN;FDB1::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	BUF1,512.,,,IOSTAT	FDOP$A	      1,DSD1,DFNB1,FO.RD;;	This describes the 1st copy of the input sample file;;FDB2::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	BUF2,512.,,,IOSTAT	FDOP$A	2,DSD1,DFNB1,FO.RD;;	This describes the 2nd copy of the input sample file;;FDB3::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	BUF3,512.,,,IOSTAT	FDOP$A	3,DSD3,,FO.WRT	FDAT$A	R.FIX,,512.;;;	This describes the processed output sample file;;FDB4::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	BUF4,512.,,,IOSTAT	FDOP$A	4,DSD4,,FO.WRT	FDAT$A	R.FIX,,512.;;	This describes the minmax file;FDB5::	FDBDF$	FDAT$A	R.VAR      ,FD.CR	FDRC$A	FDOP$A	5,DSD5,DFNB5,FO.WRT	FDBF$A;;	This describes the report file;;DSD3::	.WORD	3	.WORD	DEV3	.WORD	7	.WORD	UIC3	.WORD	13	.WORD	NAME3;;	The DSD for file #3;;DSD4::	.WORD	3	.WORD	DEV4	.WORD	7	.WORD	UIC4	.WORD	13	.WORD	NAME4;;	The DSD for file #4;DSD5::	.WORD	5	.WORD	DEV5	.WORD	11	.WORD	UIC5	.WORD	41	.WORD	NAME5;;;DEV3::	.ASCII	/SY:/UIC3::	.ASCII	/[1,300]/NAME3::	.ASCII	/STAREP1.TMP/;;DEV4::	.ASCII	/SY:/UIC4::	.ASCII	/[1,300]/NAME4::	.ASCII	/STAREP2.TMP/;;;DEV5::	.BLKB	5UIC5::	.BLKB	9.NAME5::	.B      LKB	33.;;	.EVENDFNB1::	NMBLK$	,SMP,,SYDFNB5::	NMBLK$	,LST,,SY;	.pageDSD1::	.WORD	.WORD	DEV1	.WORD	.WORD	UIC1	.WORD	.WORD	NAME1;DEV1::	.ASCII	/      /UIC1::	.ASCII	/          /NAME1::	.ASCII	/                    /;BUF3::	.BLKB	512.		;The I/O buffer for file #3BUF4::	.BLKB	512.		;The I/O buffer for file #4;CR	=	15		;CARRIAGE RETURNLF	=	12		;LINE FEED;HERA:	.BYTE	CR,LF,LF	.ASCII	/STAREP V1.1/	.BYTE	CR,LF,LF	.ASCII	/Prints the Software Statistics Report/	.BYTE	CR,LF,LFSHERA	=	. - HERA;;TTMESS:	.BYTE	CR,LF,LF	.A      SCII	/        STAREP - must be run from TT0:/	.BYTE	CR,LF,LFS.TTMES:	. - TTMESS;;	.EVENTRUMP:	QIOW$	IO.WBT,13.,32.,,IOSTAT,,<TTMESS,S.TTMES,0>;;	The qio for the herald;	FSRSZ$	1,,DATROT	.PAGE	.SBTTL	OVERLAY CONTROL CODE	.PSECT	CODROT,REL,I,GBL,CON,ROSTART::		FINIT$;	CALL	CHKTT0				; CHECK THAT REQUEST IS FROM TT0	BCC	10$				; IF C CLEAR THEN AT TT0	DIR$	#TRUMP				; PRINT THE TT0 ERROR MESSAGE	BR	5$				; AND EXIT10$:	MOV	#HERA,TRUMP+Q.IOPL		; SET HERALD MESSAGE 	MOV	#SHERA,TRUMP+Q.IOPL+2		; AND SIZE IN QIO D   ^  PB;	DIR$	#TRUMP				;PRINT THE PROGRAM HERALD;	JSR	PC,DIA			;PERFORM THE DIALOG;	JSR	PC,COMPUT		;PERFORM THE COMPUTATIONS;	JSR	PC,OPEN			;OPEN THE REPORT FILES;	TST	SAMPLE			;SAMPLE REPORT?	BEQ	1$			;NO	JSR	PC,SAM			;YES;1$:	TST	SUMMAR			;SUMMARY REPORT?	BEQ	2$			;NO	JSR	PC,SUM			;YES;2$:		JSR	PC,CLOSE		;CLOSE THE REPORT FILES5$:	DIR$	#EX	.END	START^         Êe„ÌÁ› 8$¸      DDATA,DDATA/-SP=[1,1]RMSMAC/ML,[113,10]DDATAFNDNAM,FNDNAM/-SP=[113,10]FNDNAMDBULOG,DBULOG/-SP=[1,1]RMSMAC/ML,[113,10]TPUMC/ML,DBULOGTALK,TALK/-SP=[113,10]TALKVALID,VALID/-SP=[113,10]VALIDDTROOT,DTROOT/-SP=[1,1]RMSMAC/ML,[113,10]DTROOTSTDLNE,STDLNE/-SP=[1,1]RMSMAC/ML,[113,10]STDLNEOPEN,OPEN/-SP=[1,1]RMSMAC/ML,[113,10]OPENRECOP,RECOP/-SP=[1,1]RMSMAC/ML,[113,10]RECOPSNDMSG,SNDMSG/-SP=[1,1]RMSMAC/ML,[113,10]SNDMSGABTTRN,ABTTRN/-SP=[113,10]ABTTRNGETSRC,GETSRC/-SP=[113,10]GETSRCROUTE,ROUTE/-SP=[113,10]ROUTETSTINT   X   ,TSTINT/-SP=[1,1]RMSMAC/ML,[113,10]TSTINTRMROOT,RMROOT/-SP=[1,1]RMSMAC/ML,[113,10]RMROOTX          €„:^Á› 8$         €„:    >Æ   ¯”L  K	VN@  a	ày@   ¬
……@  ^H@  à`;@  ë%Ý@  q:ày@   ƒ:Ì@  «:€@  ´:¢‘@  ÖK @  N  @   VNÀÁ@  µW@@  ÜYUž@  	aày@  üa°"@   
bp@  
bÐz@  bø@  bp@  :dH@   çtà8@  çtµW@  çtBx@  Ayð‘@  z '@   Ú}Î@  Ú}> @  €Oq@  €ô‘@  º‰5M@   ²ŒÖK@  Ë’U<@  .”ÖK@  .”ìq@  .”Bx@   9©x‚@  s©À@  Îªª%@  Îªªp@  ÿª°@   «œ,@  «)x@  ó«,}@  ó«€@  ^¬ª%@   ^¬ªp@  c³N@      (Ò‹‘h€„:h  p©Ó(
 ¯”                                          À  
ð    Á  ñµ    	 ÎªªpÚ}Îbp Îªª%$ë%Ý&üa°" 2 ÷ \÷ Xæˆÿˆf&æ …÷	  Æe …  ˆ"«œ, X   w     Â`  Å`å¥- p  Â
Ô bøà`;
bÐz
bp$bp ~ ¦
÷‹  2‚À  …
EÅp  Á  ñµ    	 
ÿª°^¬ªpbp ^¬ª%$ë%Ý&üa°" ¤ ÷¸ê÷ ææˆÿˆf&æ …÷	  Æe … ¸ˆ"«œ, Ê     Ä`  Å`å¥- p  Ä
Ö bø
bÐz
bp bp p©Ó     •         q:ày	aày
a	ày²ŒÖK     ì  ì æ  ÿˆ†À    Á  Â  Ò•A Ò•A Ê•@ JÐw       p©Ó  s©Às©Àz '   w æ  ÿˆ‚ƒÃe? ×túÿÅe? WuúÿÃe  ¬
……K	VNAyð‘ K	VN 8Ca÷  ÷  ÷€ €OqçtBx€ô‘.”Bx F  ¦À  ÷	  w €OqçtµW
z '9©x‚ T  ‚æ  æ7ÿˆ†÷	  ÷ €OqçtµW 
€OqÜYUž j    7
 €Oqçtà8€ô‘.”ìq p  æ  æuÿˆ†  À ÀÐ Á€ÀP°
 €ô‘.”ÖK€ô‘ –üÿHˆ`Èe? ÈE? Ð  Ð Ð  Ð 
Ð  ^H^H ^H"^H  ¼&÷	  „À€À0
¼ÿÁ  ‚BP‚~7  „D c³NÚ}Î$Ë’U< âSÁ  Â  Ã  Ò”B~   †  Ã  Á  Ò”B~Âå   ó«€µW@ó«,}ÖK  N  (ƒ:Ì · æ  ÿˆ†À    ‡ 7
  æ  æuÿˆÄ Ayð‘ 
Ayð‘s©À€ô‘.”ÖK€ô‘ ,ÀÁp÷	  Å  Â  JÅ%d †Êd 2 Á À
pº‰5MË’U<:dH Rf÷	  Ååd Äed ì‡ %N%15S%VA %2N***%5 fº‰5M xSWorkspace Data               $      ´:¢‘VNÀÁ‚Ú}> «:€ ž  

Input Message Data ? 

Input Wor Äkspace Data ?  †         €„:NÁ› 8$        TSTINT	MACRO M1110  19-FEB-79 13:11TABLE OF CONTENTS     6-  233	DMPWKS - DUMP THE WORKSPACETSTINT	MACRO M1110  19-FEB-79 13:11  PAGE 2      1						.TITLE	TSTINT      2					.IDENT	"1.0C01"      3					;      4					;                         COPYRIGHT (C) 1979 BY      5					;             DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.      6					;      7					;      8					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED      9					; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICEN      SE AND WITH THE     10					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY  OTHER     11					; COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY     12					; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY     13					; TRANSFERRED.     14					;     15					;     16					; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE     17					; AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT     18					; CORPORATION      .     19					;     20					;     21					; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  RELIABILITY  OF  ITS     22					; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.     23					;     24					;     25					;     26					; MODULE:	TSTINT     27					;     28					; VERSION:	V01.00     29					;     30					; AUTHOR:	MIKE GARRY     31					;		LEE BARTON     32					;     33					; DATE:		19-FEB-79     34					;     35					;     36					;     37					;	M O D I F I C A T I O N   H I S T O R Y   L O G     38			      		;     39					;     40					;     41					;     42					;	VER/ED	DATE		AUTHOR		EXPLANATION     43					;	------	----		------		-----------     44					;	1.00C01	19-FEB-79	LBB		SPR 21184 -     45					;						MAKE "<NONE>" THE DEFAULT     46					;						ANSWER TO "WORKSPACE FILE" QUERY     47					;     48					;     49						.ENABL	LC     50						.MCALL	SPWN$,DIR$,CRRG$S,CRAW$S,CRVT$C,$FBCAL,$RBCAL,$GNCAL     51						.MCALL	QIOW$     52	000000					$RBCAL     53	000000					$FBCAL     54	000000					$GNCAL     55					;           56		000000 			$$$GBL=0     57					;TSTINT	MACRO M1110  19-FEB-79 13:11  PAGE 2-1     58	000000					SPWN$TSTINT	MACRO M1110  19-FEB-79 13:11  PAGE 3     60					;     61					;	ROUTINE TO INITIALIZE FOR A TST.     62					;     63					;	THE MESSSAGE AND WORKSPACE FILES ARE READ AND THE MESSAGE AREA     64					;	IS SET UP.     65					;     66	000032				TSTINT::     67	000032	012700 	000000G			MOV	#$MFRAB,R0	;POINT TO MESSAGE FILE RAB     68	000036	005002 				CLR	R2		;RESET CHARACTER COUNT     69	000040					      $STORE	#TERBUF,UBF,R0	;SET UP INITIAL BUFFER ADDRESS     70	000046	012701 	000000G		20$:	MOV	#$MFFAB,R1	;POINT AT MESSAGE FILE FAB     71	000052					$TESTBITS #FB$TRM,DEV,R1 ;IS THIS A TERMINAL?     72	000060	001411 				BEQ	25$		;NO - CONTINUE     73	000062	012767 	001240'	001134 		MOV	#MESPRM,PRMQIO+Q.IOPL ;OTHERWISE - SET UP FOR PROMPT     74	000070	012767 	000030 	001130 		MOV	#MESPLN,PRMQIO+Q.IOPL+2     75	000076					DIR$	#PRMQIO		;PROMPT FOR MESSAGE DATA     76	000104				25$:	$GET	R0		;GET A RECORD FRO      M THE MESSAGE FILE     77	000130					$FETCH	R1,STS,R0	;DID THIS SUCCEED?     78	000134	002002 				BGE	30$		;YES - CONTINUE     79	000136	000167 	000000G			JMP	DEXIT     80	000142				30$:	$FETCH	R3,RSZ,R0	;GET RECORD SIZE     81	000146	001413 				BEQ	35$		;LEAVE IF NO MESSAGE     82	000150	060302 				ADD	R3,R2		;UPDATE CHARACTER COUNT     83	000152					$FETCH	R5,RBF,R0	;GET BUFFER ADDRESS     84	000156	060305 				ADD	R3,R5		;POINT PAST LAST CHARACTER     85	000160	122745 	000055 			CMPB	#'-,-(R5)	;IS LAST CH      ARACTER A '-'     86	000164	001004 				BNE	35$		;NO - THEN MESSAGE COMPLETE     87	000166					$STORE	R5,UBF,R0	;RESET USER BUFFER ADDRESS     88	000172	005302 				DEC	R2		;REDUCE CHARACTER COUNT     89	000174	000724 				BR	20$		;AND READ ANOTHER RECORD     90					;     91	000176	010246 			35$:	MOV	R2,-(SP)	;SAVE THE CHARACTER COUNT     92	000200	005004 				CLR	R4		;RESET WORKSPACE CHARACTER COUNT     93					;     94	000202	105767 	000000G			TSTB	$NOWF		;WORKSPACE SPECIFIED?     95	000206	101062 				BHI	50$	      	;NO - THEN LEAVE     96	000210	012700 	000000G			MOV	#$WFRAB,R0	;POINT AT WORKSPACE FILE RAB     97	000214	005205 				INC	R5		;RESET LAST ADDRESS     98	000216	006005 				ROR	R5		;ROUND UP ADDRESS TO NEXT WORD     99	000220	005505 				ADC	R5    100	000222	006305 				ASL	R5    101	000224					$STORE	R5,UBF,R0	;SET UP INITIAL BUFFER AREA    102	000230	012701 	000000G		45$:	MOV	#$WFFAB,R1	;POINT AT FAB    103	000234					$TESTBITS #FB$TRM,DEV,R1 ;IS THIS A TERMINAL?    104	000242	001411 				BEQ	47$		;NO - THEN       CONTINUE    105	000244	012767 	001270'	000752 		MOV	#WRKPRM,PRMQIO+Q.IOPL ;SET UP FOR PROMPT    106	000252	012767 	000032 	000746 		MOV	#WRKPLN,PRMQIO+Q.IOPL+2    107	000260					DIR$	#PRMQIO		;PROMPT FOR WORKSPACE DATA    108	000266				47$:	$GET	R0		;GET A RECORD    109	000312					$FETCH	R1,STS,R0	;DID THIS SUCCEED    110	000316	002416 				BLT	50$		;NO - LEAVE    111	000320				40$:	$FETCH	R3,RSZ,R0	;GET SIZE OF THE RECORD    112	000324	001413 				BEQ	50$		;LEAVE IF NO RECORD    113	000326	060304 				ADD	R3,      R4		;UPDATE CHARACTER COUNT    114	000330					$FETCH	R5,RBF,R0	;GET BUFFER ADDRESS    115	000334	060305 				ADD	R3,R5		;POINT PAST LAST CHARACTER    116	000336	122745 	000055 			CMPB	#'-,-(R5)	;IS THE LAST CHARACTER A '-'TSTINT	MACRO M1110  19-FEB-79 13:11  PAGE 3-1    117	000342	001004 				BNE	50$		;NO - THEN LEAVE    118	000344					$STORE	R5,UBF,R0	;UPDATE BUFFER ADDRESS    119	000350	005304 				DEC	R4		;REDUCE CHARACTER COUNT    120	000352	000726 				BR	45$		;AND READ ANOTHER RECORD    121					;TSTINT	      MACRO M1110  19-FEB-79 13:11  PAGE 4    123	000354				50$:	CRVT$C	INAST,OUAST,ATAST,VTRLEN    124	000362	103003 				BCC	10$    125	000364	016700 	000000G			MOV	$DSW,R0    126	000370	000000 				HALT    127	000372	016701 	000000G		10$:	MOV	$DSW,R1		;GET VIRTUAL TERMINAL NUMBER    128	000376	012702 	000000G			MOV	#SUFFIX,R2	;SET UP TST NAME    129	000402	112722 	000101 			MOVB	#'A,(R2)+	;NAME IS 'TSTAAn' WHERE 'n' IS THE    130	000406	112722 	000101 			MOVB	#'A,(R2)+	;VIRTUAL TERMINAL NUMBER    131	000412	1127      12 	000100 			MOVB	#'@,(R2)    132	000416	150112 				BISB	R1,(R2)    133	000420	010167 	000000C			MOV	R1,A.LUNU+ASSLUN ;SET VIRTUAL TERMINAL NUMBER IN ASSIGN LUN DPB    134	000424	010167 	000030G			MOV	R1,SPAWN+S.PWVT	;AND IN SPAWN DPB    135	000430					DIR$	#ASSLUN		;ASSIGN LUN TO VIRTUAL TERMINALTSTINT	MACRO M1110  19-FEB-79 13:11  PAGE 5    137					;    138					;	NOW SET UP THE REGION FOR THE MESSAGE AND WORKSPACE.    139					;    140					;	THE TST WILL ATTACH TO THIS REGION ON INITIALIZATION.    141			      		;    142	000436	012602 				MOV	(SP)+,R2	;RESTORE CHARCTER COUNT    143	000440	010203 				MOV	R2,R3		;GET SIZEOF MESSAGE(IN BYTES) IN R3    144	000442	062703 	000077 			ADD	#77,R3		;CONVERT TO 32 WORD BLOCKS    145	000446	072327 	177772 			ASH	#-6,R3    146	000452	010405 				MOV	R4,R5		;GET SIZE OF WORKSPACE(IN BYTES)    147	000454	062705 	000077 			ADD	#77,R5		;CONVERT TO 32 WORD BLOCKS    148	000460	072527 	177772 			ASH	#-6,R5    149	000464	062703 	000002 			ADD	#2,R3		;ADD ON TWO BLOCKS FOR CONTEXT ARE      A    150	000470	060503 				ADD	R5,R3		;R3 NOW HAS SIZE OF REQUIRED REGION    151					;    152	000472	010367 	000000C			MOV	R3,TSTREG+R.GSIZ ;INSERT SIZE IN THE REGION DESC. BLOCK    153	000476	010367 	000000C			MOV	R3,TSTWND+W.NSIZ ;AND IN THE WINDOW DESC. BLOCK    154	000502	012767 	100014 	000000C		MOV	#^RTST,TSTREG+R.GNAM ;SET UP THE REGION NAME    155	000510	010246 				MOV	R2,-(SP)    156	000512	012700 	000000G			MOV	#SUFFIX,R0	;CONVERT THE SUFFIX TO RAD50    157	000516	004767 	000000G			CALL	$CAT5    1      58	000522	010167 	000000C			MOV	R1,TSTREG+R.GNAM+2 ;SET SUFFIX IN REGION DESC. BLOCK    159	000526	012602 				MOV	(SP)+,R2    160					;    161	000530					CRRG$S	#TSTREG		;CREATE THE REGION    162	000542	103002 				BCC	50$		;CONTINUE - IF NO ERROR    163	000544	004767 	000000G			CALL	NODYMM		;REPORT - NO DYNAMIC MEMORY    164	000550	016767 	000000C	000000C	50$:	MOV	TSTREG+R.GID,TSTWND+W.NRID ;MOVE IN REGION ID.    165	000556	005067 	000000C			CLR	TSTWND+W.NLEN	;CLEAR DEFAULT LENGTH    166	000562					CRAW$S	#      TSTWND		;MAP ONTO THE REGION    167	000574	103001 				BCC	60$		;CONTINUE IF NO ERROR    168	000576	000000 				HALT    169	000600				60$:    170					;    171					;	NOW SET UP THE TST CONTEXT AREA    172					;    173	000600	012700 	140000 			MOV	#140000,R0	;USE R0 AS A POINTER INTO CONTEXT AREA    174	000604	010005 				MOV	R0,R5    175	000606	012720 	000001 			MOV	#1,(R0)+	;SET UP THE CONSTANT    176	000612	012701 	140200 			MOV	#140200,R1	;ADDRESS OF THE MESSAGE IS CONSTANT    177	000616	010120 				MOV	R1,(R      0)+	;MOVE IN ADDRESS OF THE MESSAGE    178	000620	010410 				MOV	R4,(R0)		;SET UP WORKSPACE ADDRESS    179	000622	001410 				BEQ	65$		;SKIP - IF NO WORKSPACE    180	000624	005260 	177774 			INC	-4(R0)		;SET PARAMETRS TO TWO    181	000630	010110 				MOV	R1,(R0)		;ADDRESS OF WORKSPACE IS ADDRESS OF MESSAGE    182	000632	060210 				ADD	R2,(R0)		;PLUS SIZE OF MESSAGE(MOD 32 WORD)    183	000634	062710 	000077 			ADD	#77,(R0)    184	000640	042710 	000077 			BIC	#77,(R0)    185	000644	012003 			65$:	MOV	(R0)+,R3	;      SAVE WORKSPACE ADDRESS    186	000646	016720 	000000G			MOV	DBNAM,(R0)+	;MOVE IN MY NAME AS EXECUTION MNG. NAME    187	000652	016720 	000002G			MOV	DBNAM+2,(R0)+    188	000656	016720 	000000G			MOV	DBNAM,(R0)+	;MOVE IN MY NAME AS DATA MNG. NAME    189	000662	016720 	000002G			MOV	DBNAM+2,(R0)+    190	000666	005020 				CLR	(R0)+		;E.M. CONTEXT BLOCK IS ZERO    191	000670	012720 	000002 			MOV	#2,(R0)+	;D.M. CONTEXT BLOCK IS 2    192	000674	010446 				MOV	R4,-(SP)	;SAVE R4    193	000676	004767 	000000G			CALL	      ..CLSM		;CALCULATE THE CHECKSUMTSTINT	MACRO M1110  19-FEB-79 13:11  PAGE 5-1    194	000702	012604 				MOV	(SP)+,R4	;RESTORE R4    195					;    196	000704	012700 	140200 			MOV	#140200,R0	;NOW TRANSFER THE MESSAGE DATA    197	000710	005060 	177674 			CLR	-104(R0)	;FIRST RESET TRACE INDICATOR    198	000714	012701 	000000G			MOV	#TERBUF,R1	;POINT AT MESSAGE    199	000720	006202 				ASR	R2		;CONVERT MESSAGE SIZE TO WORDS    200	000722	001403 				BEQ	75$		;LEAVE - IF NO MESSAGE    201	000724	005502 				ADC	R2          202	000726	012120 			70$:	MOV	(R1)+,(R0)+	;MOVE THE DATA    203	000730	077202 				SOB	R2,70$    204					;    205	000732	010467 	000000G		75$:	MOV	R4,WSSIZE	;SAVE SIZE OF WORKSPACE    206	000736	006204 				ASR	R4		;CONVERT THE SIZE TO WORDS    207	000740	005504 				ADC	R4    208	000742	001402 				BEQ	85$		;SKIP - IF NO WORKSPACE    209	000744	012123 			80$:	MOV	(R1)+,(R3)+	;MOVE THE DATA    210	000746	077402 				SOB	R4,80$    211					;    212					;    213	000750	016701 	000000G		85$:	MOV	$TSTSZ,R1	;MOVE TH      E FILE NAME SPEC. INTO THE INSTALL LINE    214	000754	012702 	000000G			MOV	#NAME,R2	;POINT AT DESTINATION    215	000760	016703 	000000G			MOV	$TSTAD,R3	;AND AT SOURCE ADDRESSES    216	000764	112322 			15$:	MOVB	(R3)+,(R2)+	;MOVE THE DATA    217	000766	077102 				SOB	R1,15$    218					;    219	000770	012703 	000000G			MOV	#LEND,R3	;NOW MOVE THE REMAINDER OF THE LINE    220	000774	012701 	000000G			MOV	#LSZ,R1    221	001000	112322 			17$:	MOVB	(R3)+,(R2)+	;MOVE THE DATA    222	001002	077102 				SOB	R1,17$          223					;    224	001004	162702 	000000G			SUB	#INSCMD,R2	;CACULATE THE LENGTH OF THE COMMAND LINE    225	001010	010267 	000026G			MOV	R2,SPAWN+S.PWCL	;STORE IN THE SPAWN DPB    226					;    227	001014					DIR$	#SPAWN		;SPAWN THE TST    228	001022	103003 				BCC	20$    229	001024	016700 	000000G			MOV	$DSW,R0    230	001030	000000 				HALT    231	001032	000207 			20$:	RETURNTSTINT	MACRO M1110  19-FEB-79 13:11  PAGE 6DMPWKS - DUMP THE WORKSPACE    233					.SBTTL	DMPWKS - DUMP THE WORKSPACE    234					;    23      5	001034				DMPWKS::    236	001034	005067 	000000C			CLR	TSTWND+W.NLEN	;MAP TO THE MESSAGE/W/S    237	001040					CRAW$S	#TSTWND    238					;    239	001052	016704 	140004 			MOV	140004,R4	;GET ADDRESS OF THE W/S    240	001056	001432 				BEQ	100$		;LEAVE IF NO W/S    241					;    242	001060	012701 	001160'			MOV	#WKHDR,R1	;PRINT OUT THE HEADER    243	001064	004767 	000000G			CALL	VARLNE    244					;    245	001070	016705 	000000G			MOV	WSSIZE,R5	;GET SIZE OF W/S    246					;    247	001074	012702 	000000G		5$:	      MOV	#PARAM,R2	;POINT AT PARAMETER LIST    248	001100	010512 				MOV	R5,(R2)		;    249	001102	022705 	000144 			CMP	#100.,R5	;PRINT 100 CHARACTERS/LINE    250	001106	103002 				BHIS	10$    251	001110	012712 	000144 			MOV	#100.,(R2)    252	001114	010462 	000002 		10$:	MOV	R4,2(R2)	;SET ADDRESS IN PARAMETER LIST    253	001120	012701 	001146'			MOV	#DTLNE,R1	;POINT AT LINE TEMPLATE    254	001124	004767 	000000G			CALL	VARLNE		;WRITE TO THE LOG    255					;    256	001130	162705 	000144 			SUB	#100.,R5	;ANY MORE       LEFT?    257	001134	003403 				BLE	100$		;NO - THEN LEAVE    258	001136	062704 	000144 			ADD	#100.,R4	;UPDATE ADDRESS    259	001142	000754 				BR	5$		;AND TRY AGAIN    260					;    261	001144	000207 			100$:	RETURN    262					;    263	001146	   045 	   116 	   045 	DTLNE:	.ASCIZ	/%N%15S%VA/	001151	   061 	   065 	   123	001154	   045 	   126 	   101	001157	   000    264					;    265	001160	   045 	   062 	   116 	WKHDR:	.ASCIZ	/%2N***%5SWorkspace Data/	001163	   052 	   052 	   052	001166	   045 	   065 	         123	001171	   127 	   157 	   162	001174	   153 	   163 	   160	001177	   141 	   143 	   145	001202	   040 	   104 	   141	001205	   164 	   141 	   000    266					;TSTINT	MACRO M1110  19-FEB-79 13:11  PAGE 7DMPWKS - DUMP THE WORKSPACE    268					;    269	001210				PRMQIO:	QIOW$	IO.WLB,LUN1,TEREFN,,IOSB,,<0,0,'$>    270					;    271	001240	   015 	   012 	   012 	MESPRM:	.ASCII	<15><12><12>/Input Message Data ? /	001243	   111 	   156 	   160	001246	   165 	   164 	   040	001251	   115 	   145 	   163	      001254	   163 	   141 	   147	001257	   145 	   040 	   104	001262	   141 	   164 	   141	001265	   040 	   077 	   040    272		000030 			MESPLN = . - MESPRM    273						.EVEN    274	001270	   015 	   012 	   012 	WRKPRM:	.ASCII	<15><12><12>/Input Workspace Data ? /	001273	   111 	   156 	   160	001276	   165 	   164 	   040	001301	   127 	   157 	   162	001304	   153 	   163 	   160	001307	   141 	   143 	   145	001312	   040 	   104 	   141	001315	   164 	   141 	   040	001320	   077 	   040    275		00003      2 			WRKPLN = . - WRKPRM    276		000001 				.ENDTSTINT	MACRO M1110  19-FEB-79 13:11  PAGE 7-1SYMBOL TABLEASSLUN= ****** GX	LUN1  = ****** GX	Q.IOPR= 000007   	TEREFN= ****** GX	$RMGET= ****** GATAST = ****** GX	MESPLN= 000030   	Q.IOSB= 000010   	TSTINT  000032RG 	$RMSIA= ****** GA.LUNU= ****** GX	MESPRM  001240R  	R.GID = ****** GX	TSTREG= ****** GX	$TSTAD= ****** GXC.RVAA= 000006   	NAME  = ****** GX	R.GNAM= ****** GX	TSTWND= ****** GX	$TSTSZ= ****** GXC.RVIA= 000002   	NODYMM= ****** GX	R.GSIZ= ****** G      X	VARLNE= ****** GX	$WFFAB= ****** GXC.RVML= 000010   	OUAST = ****** GX	SPAWN = ****** GX	VTRLEN= ****** GX	$WFRAB= ****** GXC.RVOA= 000004   	O$DEV = ****** GX	SUFFIX= ****** GX	WKHDR   001160R  	$$$   = 000000R     002DBNAM = ****** GX	O$RBF = ****** GX	S.PWCA= 000024   	WRKPLN= 000032   	$$$ARG= 000003DEXIT = ****** GX	O$RSZ = ****** GX	S.PWCL= 000026   	WRKPRM  001270R  	$$$GBL= 000000DMPWKS  001034RG 	O$STS = ****** GX	S.PWEA= 000020   	WSSIZE= ****** GX	$$$OST= 000014DTLNE   001146R  	O$UBF = ******       GX	S.PWEF= 000016   	W.NLEN= ****** GX	$$$T1 = 000000FB$TRM= ****** GX	PARAM = ****** GX	S.PWES= 000022   	W.NRID= ****** GX	..CLSM= ****** GXINAST = ****** GX	PRMQIO  001210R  	S.PWTN= 000002   	W.NSIZ= ****** GX	..TMP0= 000000INSCMD= ****** GX	Q.IOAE= 000012   	S.PWUG= 000015   	$CAT5 = ****** GX	...ERR= 000000IOSB  = ****** GX	Q.IOEF= 000006   	S.PWUM= 000014   	$DSW  = ****** GX	...LEN= 000002IO.WLB= ****** GX	Q.IOFN= 000002   	S.PWVT= 000030   	$MFFAB= ****** GX	...NUM= 000001LEND  = ****** GX	Q.IOLU=    ~  000004   	S.PWXX= 000006   	$MFRAB= ****** GX	...TMP= 000005LSZ   = ****** GX	Q.IOPL= 000014   	TERBUF= ****** GX	$NOWF = ****** GX	...TYP= 000005. ABS.	000000	   000      	001322	   001$DPB$$	000012	   002ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  7480 WORDS  ( 30 PAGES)DYNAMIC MEMORY:  8260 WORDS  ( 31 PAGES)ELAPSED TIME:  00:00:31TSTINT,TSTINT/-SP=[1,1]RMSMAC/ML,[113,10]TSTINT~         Õ} dÌÁ› 8$     0   RMROOT,RMROOT/-SP=[1,1]RMSMAC/ML,[113,10]RMROOT 0          šr,`^Á› 8$         šr,`    tŽ0À   ¯”L  NH ª%ÕzHP  ¢(ÐzH é) H
 é)è&H ì)µWH  ð)µWH  ð)ÕzH ò)ÕzH fOP}H iO(xH nOH…H   ªpÕzHP D©b@  D©Åb@  D©íb@  G©]\@   G©…\@  G©­\@  J©$@  J©E$@  J©m$@   e©P@  e©-P@  i©{@  i©Å{@  i©í{@   ¹©…\@  ¹©­\@  Ý©Ý@  Ý©‚@  Ý©-‚@   («$@  («E$@  («m$@  U«Ý@  U«‚@   U«-‚@  «)x@  ¬Ý@  ¬@  ¬-@       (êÖKhèNhpäyÝfhæ¼©Îhî ¼©b"hF¼©e"hæ¼©f"hD¼©2ghZ¤ªvhà ¤ªª%h  ¤ªªphð ¤ªòyhà§ªµWh\Îªª%hP  Îªªph      @Îªòyhÿª°hC^¬ª%h  ^¬ªph ^¬òyh"«»{è€«¹{è «·{èè«½{è 
­YTè 
­WTìN ¯”    
­WT        («$       D©b       G©]\         i©{       J©$ 0  0    U«Ý (  (    Ý©Ý 8  8    ¬Ý       («m$       D©íb       G©­\ $  $    i©í{       J©m$ 4  4    U«-‚ ,  ,    Ý©-‚ L  L    ¹©­\ <  <    ¬- D  D    e©-P       («E$       D©Åb       G©…\ "  "    i©Å{ 
        
    J©E$ 2  2    U«‚ *  *    Ý©‚ :  :    ¬ B  B    e©P J  J    ¹©…\          P                                  
  
         &  &                P  P P          `  `                      Z  Z         v  v     h       h      P          °  °                      ª  ª         Æ  Æ     h       h ð  ð P                       à      à              @ @P                                b b     Š   P      P   P                                ² ²            C C     Z Z    h hSY:.TXT  è èp p  Š          šr,`NÁ› 8$        RMROOT	MACRO M1110  19-FEB-79 13:15  PAGE 2      1						.TITLE	RMROOT      2					.IDENT	"V1.00"      3					;      4					;                         COPYRIGHT (C) 1979 BY      5					;             DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.      6					;      7					;      8					; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPIED      9					; ONLY  IN  ACCORDANCE  WITH  THE  TERMS  OF  SUCH  LICENSE AND WITH THE     10					; INCLUSION OF THE ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE OR  ANY        OTHER     11					; COPIES  THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY     12					; OTHER PERSON.  NO TITLE TO AND OWNERSHIP OF  THE  SOFTWARE  IS  HEREBY     13					; TRANSFERRED.     14					;     15					;     16					; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE  WITHOUT  NOTICE     17					; AND  SHOULD  NOT  BE  CONSTRUED  AS  A COMMITMENT BY DIGITAL EQUIPMENT     18					; CORPORATION.     19					;     20					;     21					; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR  REL      IABILITY  OF  ITS     22					; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.     23					;     24					;     25					;     26					; MODULE:	RMROOT - TRAX TST DEBUG     27					;     28					; VERSION:	V01.00     29					;     30					; AUTHOR:	MIKE GARRY     31					;		LEE BARTON     32					;     33					; DATE:		19-FEB-79     34					;     35					;     36					;     37					;	M O D I F I C A T I O N   H I S T O R Y   L O G     38					;     39					;     40					;     41					;     42					;	VER/ED	DATE		AUTHOR		      EXPLANATION     43					;	------	----		------		-----------     44					;	1.00C01	19-FEB-79	LBB		SPR 21184 -     45					;						MAKE "<NONE>" DEFAULT ANSWER TO     46					;						"WORKSPACE FILE" QUERY     47					;     48					;     49						.MCALL	RAB$B,RAB$E,FAB$B,FAB$E     50					;     51					;	LOGICAL ASSIGNMENTS     52					;     53		000004 			LUN4 = 4     54		000005 			LUN5 = 5     55		000006 			LUN6 = 6RMROOT	MACRO M1110  19-FEB-79 13:15  PAGE 3     57					;     58					;	STRUCTURE OF THE FILE TABLE     59		      			;     60		000000 			F.LNAM == 0		;LOGICAL FILE NAME     61		000006 			F.PNAM == 6		;ADDRESS OF PHYSICAL FILE STRING     62		000010 			F.PSZE == 10		;SIZE OF FILE STRING     63		000012 			F.ID   == 12		;ID OF BUFFER REGION     64		000014 			F.RSZE == 14		;SIZE OF BUFFER REGION     65		000016 			F.IFI == 16		;IFI INDICATOR FOR THE FILE     66		000020 			FTBSZ == 20		;SIZE OF A TABLE ENTRY     67					;     68					;	CHANNEL TABLE ENTRY     69					;     70		000000 			L.NUM == 0		;CHANNEL NUMBER     71		000002       			L.ISI == 2		;INTERNAL STREAM IDENTIFIER     72		000004 			L.FTB == 4		;FILE TABLE ENTRY     73		000006 			CHNLSZ == 6     74					;     75					;	ALLOCATE THE POOL SPACE FOR RMS     76					;     77						.MCALL	POOL$B,POOL$E     78					;     79	000000					POOL$B     80	000000					P$FAB	15     81	001320					P$RAB	12     82	000600					P$BDB	50.     83	001750					P$IDX	25.     84	003600					P$RABX	25,150.,5     85	017024					P$BUF	4096.     86	010000					POOL$E     87					;     88					;	SPECIFY TYPE OF RMS AC      CESS     89					;     90						.MCALL	ORG$     91					;     92	000000					ORG$	SEQ,<CRE,PUT,GET,UPD>     93	000000					ORG$	IDX,<CRE,PUT,GET,FIN,UPD,DEL>     94	000000					ORG$	REL,<CRE,PUT,GET,UPD,DEL,FIN>     95					;     96					;	RABS AND FABS     97					;     98		000012 			NOFLS = 10.     99		000024 			NOCHNS = 20.    100					;    101						.EVEN    102	000000				$LDFAB::    103	000000					FAB$B    104	000120					F$LCH	LUN4    105	000120					F$FAC	FB$PUT    106	000120					FAB$E    107		000120 			FABSZE ==       .-$LDFAB    108					;    109	000120				$MFFAB::    110	000120					FAB$B    111	000240					F$DNA	DFNAM		;DEFAULT NAME STRING    112	000240					F$DNS	DFSZE		;DEFAULT NAME SIZE    113	000240					F$LCH	LUN5RMROOT	MACRO M1110  19-FEB-79 13:15  PAGE 3-1    114	000240					FAB$E    115					;    116	000240				$WFFAB::    117	000240					FAB$B    118	000360					F$DNA	DFNAM    119	000360					F$DNS	DFSZE    120	000360					F$LCH	LUN6    121	000360					FAB$E    122					;    123	000360				$LDRAB::    124	000360					RAB$B          125	000500					R$FAB	$LDFAB    126	000500					R$RAC	RB$SEQ    127	000500					R$RBF	$LDBFF    128	000500					R$USZ	$LDBSZ    129	000500					RAB$E    130					;    131		000120 			RABSZE == .-$LDRAB    132					;    133	000500				$MFRAB::    134	000500					RAB$B    135	000620					R$FAB	$MFFAB    136	000620					R$RAC	RB$SEQ    137	000620					R$USZ	256.    138	000620					RAB$E    139					;    140	000620				$WFRAB::    141	000620					RAB$B    142	000740					R$FAB	$WFFAB    143	000740					R$RAC	RB$SEQ    144	000      740					R$USZ	256.    145	000740					RAB$E    146					;    147					;	BUFFER AREAS AND SCRATCH STORAGE    148					;    149	000740				$LDBFF::.BLKW	256.		;BUFFER FOR LOGGING FILE    150		001000 			$LDBSZ = .-$LDBFF    151					;    152	001740				$LDSTR::.BLKB	33.    153					;    154	002001				$MFSTR::.BLKB	33.    155					;    156	002042				$WFSTR::.BLKB	33.    157					;    158	002103	   000 			$NOWF::	.BYTE	0		;"NO WORKSPACE FILE"    159					;    160						.EVEN    161	002104	000000 			$FLETF::.WORD	0		;CURRENT       FILE TABLE ENTRY POINTER    162					;    163	002106				$FLETB::.BLKB	NOFLS*FTBSZ    164		002346'			$FLETE==.    165					;    166						.EVEN    167	002346				STDPRM::.BLKW	4		;STANDARD LINE PARAMETER LIST    168					;    169	002356				$FLBUF::.BLKB	<NOFLS+1>*33.    170						.EVENRMROOT	MACRO M1110  19-FEB-79 13:15  PAGE 3-2    171					;    172	003132	000000 			$FLPTR::.WORD	0		;FIRST FREE BYTE IN $FLBUF    173					;    174						.EVEN    175	003134				$LGNAM::.BLKW	6		;BUFFER FOR A LOGICAL FILE NAME    176	      				;    177	003150	   123 	   131 	   072 	DFNAM:	.ASCII	/SY:.TXT/	003153	   056 	   124 	   130	003156	   124    178		000007 			DFSZE = .-DFNAM    179					;    180						.EVEN    181	003160				CHNLST::.BLKB	<NOCHNS*CHNLSZ>    182					;    183	003350	003160'			CHNLEN::.WORD	CHNLST    184		000001 				.ENDRMROOT	MACRO M1110  19-FEB-79 13:15  PAGE 3-3SYMBOL TABLEBD$BLN= 000024   	F.LNAM= 000000 G 	O$LCH = 000063   	RB$LOC= 000100   	$DNS  = 000007CHNLEN  003350RG 	F.PNAM= 000006 G 	O$MBC = 000040   	RB$LOK= 0      00040   	$DUP  = 000000CHNLST  003160RG 	F.PSZE= 000010 G 	O$MBF = 000037   	RB$MAS= 000002   	$FAB  = 000240RCHNLSZ= 000006 G 	F.RSZE= 000014 G 	O$MRN = 000040   	RB$NKC= 000001   	$FAC  = 000002DFNAM   003150R  	ID$BLN= 000060   	O$MRN0= 000040   	RB$NK3= 000002   	$FIN2E= ****** GDFSZE = 000007   	IF$BLN= 000060   	O$MRN1= 000042   	RB$NW1= 000040   	$FIN3E= ****** GFABSZE= 000120 G 	IR$BLN= 000040   	O$MRS = 000036   	RB$ORG= 000004   	$FLBUF  002356RGFB$ACK= 000100   	LUN4  = 000004   	O$NAM = 000046         	RB$RAH= 000400   	$FLETB  002106RGFB$BID= 000003   	LUN5  = 000005   	O$ORG = 000025   	RB$RFA= 000002   	$FLETE= 002346RGFB$BIO= 000040   	LUN6  = 000006   	O$RAC = 000020   	RB$RLK= 000004   	$FLETF  002104RGFB$BLK= 000010   	L.FTB = 000004 G 	O$RASY= 000120   	RB$SEQ= 000000   	$FLPTR  003132RGFB$BLN= 000120   	L.ISI = 000002 G 	O$RAT = 000026   	RB$UIF= 020000   	$FNA  = 000000FB$CCL= 000002   	L.NUM = 000000 G 	O$RBDB= 000106   	RB$ULK= 000040   	$FNS  = 000000FB$CR = 000002   	NOCHNS= 000024   	O$RB      D0= 000102   	RB$WAT= 000004   	$FOP  = 000000FB$CTG= 000200   	NOFLS = 000012   	O$RBD1= 000104   	RB$WBH= 001000   	$FSZ  = 000000FB$DBM= 000100   	O$ALQ = 000012   	O$RBF = 000032   	RB$X1A= 000100   	$GET1E= ****** GFB$DEL= 000004   	O$ALQ0= 000012   	O$RFA = 000012   	RB$X2A= 000200   	$GET2E= ****** GFB$DIR= 000060   	O$ALQ1= 000014   	O$RFM = 000027   	STDPRM  002346RG 	$GET3E= ****** GFB$DLK= 000020   	O$BID = 000000   	O$RHB = 000042   	TV$CLO= 000020   	$IDX1 = 000031FB$FID= 010000   	O$BKS = 0000      61   	O$RIOS= 000114   	TV$CON= 000030   	$IFI  = 000000FB$FIX= 000001   	O$BKT = 000046   	O$RIO2= 000116   	TV$CRE= 000010   	$ISI  = 000000FB$FMX= 000100   	O$BKT0= 000046   	O$ROP = 000022   	TV$DEL= 000100   	$JFN  = 000000FB$FTN= 000001   	O$BKT1= 000050   	O$ROVL= 000110   	TV$DIS= 000040   	$JNL  = 000000FB$GET= 000002   	O$BLN = 000001   	O$RPAR= 000112   	TV$FIN= 000110   	$KBF  = 000000FB$IDX= 000040   	O$BLS = 000056   	O$RSZ = 000030   	TV$GET= 000050   	$KRF  = 000000FB$JNL= 000040   	O$BPA =       000032   	O$RTV = 000024   	TV$OPE= 000000   	$KSZ  = 000000FB$MDI= 000010   	O$BPS = 000034   	O$RT0 = 000054   	TV$PUT= 000060   	$LCH  = 000006FB$MKD= 004000   	O$CTX = 000002   	O$RT1 = 000056   	TV$UPD= 000070   	$LDBFF  000740RGFB$NEF= 001000   	O$DEQ = 000016   	O$RT10= 000100   	$ALQ0 = 000000   	$LDBSZ= 001000FB$NIL= 000100   	O$DEV = 000062   	O$RT2 = 000060   	$ALQ1 = 000000   	$LDFAB  000000RGFB$POS= 000010   	O$DNA = 000052   	O$RT3 = 000062   	$BDB  = 000062   	$LDRAB  000360RGFB$PRN= 000004         	O$DNS = 000055   	O$RT4 = 000064   	$BID  = 000001   	$LDSTR  001740RGFB$PUT= 000001   	O$FAB = 000044   	O$RT5 = 000066   	$BKS  = 000000   	$LGNAM  003134RGFB$REA= 000042   	O$FAC = 000020   	O$RT6 = 000070   	$BKT0 = 000000   	$LSN  = 000000FB$REC= 000001   	O$FBDB= 000106   	O$RT7 = 000072   	$BKT1 = 000000   	$MBC  = 000000FB$REL= 000020   	O$FBD0= 000102   	O$RT8 = 000074   	$BLS  = 000000   	$MBF  = 000000FB$RWC= 000002   	O$FBD1= 000104   	O$RT9 = 000076   	$BPA  = 000000   	$MFFAB  000120RGFB$RWO      = 000001   	O$FIOS= 000114   	O$SHR = 000021   	$BPS  = 000000   	$MFRAB  000500RGFB$SDI= 000020   	O$FIO2= 000116   	O$STS = 000006   	$BUF  = 010000   	$MFSTR  002001RGFB$SEQ= 000000   	O$FNA = 000050   	O$STV = 000010   	$CLO1E= ****** G 	$MRN0 = 000000FB$SQD= 000040   	O$FNS = 000054   	O$UBF = 000026   	$CLO2E= ****** G 	$MRN1 = 000000FB$STM= 000004   	O$FOP = 000022   	O$USZ = 000024   	$CLO3E= ****** G 	$MRS  = 000000FB$SUP= 000400   	O$FOVL= 000110   	O$XAB = 000030   	$CON1E= ****** G 	$NAM  = 0000      00FB$TMD= 006000   	O$FPAR= 000112   	RABSZE= 000120 G 	$CON2E= ****** G 	$NOWF   002103RGFB$TMP= 002000   	O$FSZ = 000060   	RB$ASY= 000200   	$CON3E= ****** G 	$OPE1E= ****** GFB$TRM= 000004   	O$FT0 = 000070   	RB$BID= 000001   	$CRE1E= ****** G 	$OPE2E= ****** GFB$TRN= 000020   	O$FT1 = 000072   	RB$BK1= 000010   	$CRE2E= ****** G 	$OPE3E= ****** GFB$UDF= 000000   	O$FT2 = 000074   	RB$BK3= 000020   	$CRE3E= ****** G 	$ORG  = 000000FB$UPD= 000010   	O$FT3 = 000076   	RB$BLL= 000240   	$CTX  = 000000   	      $ORG$ = 000002FB$VAR= 000002   	O$FT4 = 000100   	RB$BLN= 000120   	$DEL2E= ****** G 	$PUT1E= ****** GFB$VFC= 000003   	O$IFI = 000004   	RB$EOF= 000001   	$DEL3E= ****** G 	$PUT2E= ****** GFB$WAT= 000004   	O$ISI = 000004   	RB$FDL= 010000   	$DEQ  = 000000   	$PUT3E= ****** GFB$WRI= 000015   	O$ISID= 000004   	RB$HSH= 000010   	$DEV  = 000000   	$RAB  = 000014FB$WRT= 000041   	O$JNL = 000044   	RB$KEY= 000001   	$DIS1E= ****** G 	$RAC  = 000000FTBSZ = 000020 G 	O$KBF = 000034   	RB$KGE= 002000   	$DIS2E=       ****** G 	$RAT  = 000000F.ID  = 000012 G 	O$KRF = 000036   	RB$KGT= 004000   	$DIS3E= ****** G 	$RBF  = 000000F.IFI = 000016 G 	O$KSZ = 000021   	RB$LOA= 000020   	$DNA  = 003150R  	$RBX1 = 000031RMROOT	MACRO M1110  19-FEB-79 13:15  PAGE 3-4SYMBOL TABLE$RBX2 = 000226   	$SHR  = 000002   	$USZ  = 000400   	..$$01= 000000R     007	...RAB= 000000$RBX3 = 000005   	$STS  = 000000   	$WFFAB  000240RG 	...ARG= 000000   	...RMS= 000000$RFA  = 000000   	$STV  = 000000   	$WFRAB  000620RG 	...ERR= 000000   	...SEQ=       000001$RFM  = 000002   	$TYP$ = 000001   	$WFSTR  002042RG 	...FAB= 000000   	...SIZ= 000000$RHB  = 000000   	$UBF  = 000000   	$XAB  = 000000   	...LCB= 000000   	...TAB= 000620R$RMSIA= ****** G 	$UPD1E= ****** G 	..RBLN= 000000   	...NAM= 000000   	...TBL= 000000$ROP  = 000000   	$UPD2E= ****** G 	..TAB1= 000620R  	...PC1= 000740R  	...TPC= 000240$RSZ  = 000000   	$UPD3E= ****** G 	..TAB2= 000620R  	...POO= 000000   	...XAB= 000000$RTV  = 000000. ABS.	000000	   000      	003352	   001$RMS15	003600	   002$     RMS13	002240	   003$RMS11	001750	   004$RMS17	017024	   005$$RMS3	010000	   006$$RMS1	000116	   007ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  8709 WORDS  ( 35 PAGES)DYNAMIC MEMORY:  10372 WORDS  ( 39 PAGES)ELAPSED TIME:  00:02:15RMROOT,RMROOT/-SP=[1,1]RMSMAC/ML,[113,10]RMROOT         áyìrŽ{Á› 8$        STAROT.MAC;2/AU:80.=STAROT.MAC;1/-BF\-2,5	.IDENT	/V1.1A/	.SBTTL	MACRO CALLS & GLOBAL CONTROL CONSTANTS	.ENABL LC	.NLIST	BEX	.PAGE;; COPYRIGHT (C) 1979; 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 DOCUMENT 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.;;;;	MODULE: 	STAROT;;	VERSION:	V1.0A;;	AUTHOR:		BRIAN DOYLE;;;;	MODIFIED BY:;;	RICHARD TREADWAY		** RT001;;		FIXED TO RUN FROM       TT0: ONLY FOR V1.1 OF TRAX;	.PAGE%-137,137,/;* RT001/	.ASCII	/STAREP V1.1/-143,146;TTMESS:	.BYTE	CR,LF,LF	.ASCII	/        STAREP - must be run from TT0:/	.BYTE	CR,LF,LFS.TTMES =	. - TTMESS;;	.EVENTRUMP:	QIOW$	IO.WBT,13.,32.,,IOSTAT,,<TTMESS,S.TTMES,0>-154,154START::		FINIT$;	CALL	CHKTT0				; CHECK THAT REQUEST IS FROM TT0	BCC	10$				; IF C CLEAR THEN AT TT0	DIR$	#TRUMP				; PRINT THE TT0 ERROR MESSAGE	BR	5$				; AND EXIT10$:	MOV	#HERA,TRUMP+Q.IOPL		; SET HERALD MESSAGE 	MOV	#SHERA,TRUMP+Q.IOPL+2		; AND SIZE   B    IN QIO DPB-172,1722$:		JSR	PC,CLOSE		;CLOSE THE REPORT FILES5$:/ B          e_M°xÁ› 8$        -2,9	.IDENT	/1.0C01/;;                         COPYRIGHT (C) 1979 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 I      NFORMATION 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.;;;; MODULE:	DBULOG - TRAX TST DEBUG;; VERSION:	V01.00;; AUTHOR:	MIKE GARRY;		LEE BARTON;; DATE:		19-FEB-79;;;;;;	THIS ROUTINE PERFORMS THE USER DIALOG FOR THE TST DEBUG UTILITY;;	THE CALLING SEQUENCE IS 	CALL DBULOG;;;;;	M O D I       F I C A T I O N   H I S T O R Y   L O G;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;;	1.0C01	19-FEB-79	LBB		SPR - 21184 -;						MAKE "<NONE>" DEFAULT ANSWER;						  TO "WORKSPACE FILE" QUERY;;;-27,27	.ASCII	/DEBUG	V1.00C/-70D6:	.ASCII	/<NONE>? /DL6	=.-D6-332,334	SPEAK	#P6,#PL6,#D6,#DL6,#-1,#H6,#HL6,RES,RESL,RT,Q5,EX,ER	CLRB	$NOWF		; INITIALIZE - 'NONE' NOT SELECTED-344,346	CMP	#4.,RESL	; COULD IT BE 'NONE'?	BNE	105$		; NO CHANCE	CMPB	#'N,(R0)+	; COULD IT BE 'NONE'?	BNE	104$		; NO    Ì   CHANCE	CMPB	#'O,(R0)+	; COULD IT BE 'NONE'?	BNE	104$		; NO CHANCE	CMPB	#'N,(R0)+	;	BNE	104$	CMPB	#'E,(R0)	BNE	104$	INCB	$NOWF		; 'NONE' WAS THE RESPONSE	RETURN104$:	MOV	RES,R0		; RESET POINTER TO STRING/ Ì          €„:°xÁ› 8$        -1.IDENT	"1.0C01";;                         COPYRIGHT (C) 1979 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 INFO      RMATION 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.;;;; MODULE:	TSTINT;; VERSION:	V01.00;; AUTHOR:	MIKE GARRY;		LEE BARTON;; DATE:		19-FEB-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;	1.00C01	19-FEB-79   š   	LBB		SPR 21184 -;						MAKE "<NONE>" THE DEFAULT;						ANSWER TO "WORKSPACE FILE" QUERY;;-46	TSTB	$NOWF		;WORKSPACE SPECIFIED?	BHI	50$		;NO - THEN LEAVE/š          šr,`°xÁ› 8$        -1.IDENT	"V1.00";;                         COPYRIGHT (C) 1979 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 INFOR      MATION 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.;;;; MODULE:	RMROOT - TRAX TST DEBUG;; VERSION:	V01.00;; AUTHOR:	MIKE GARRY;		LEE BARTON;; DATE:		19-FEB-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;	1   ’   .00C01	19-FEB-79	LBB		SPR 21184 -;						MAKE "<NONE>" DEFAULT ANSWER TO;						"WORKSPACE FILE" QUERY;;-110$NOWF::	.BYTE	0		;"NO WORKSPACE FILE";/ ’          “<}Ž{Á› 8$        TPSTAT.MAC;2/AU:80.=TPSTAT.MAC;1/-BF\-2,9	.IDENT	/V1.10A/	.ENABL	LC	.NLIST	BEX;; COPYRIGHT (C) 1979; 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 A      ND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN; IN DEC.;; THE INFORMATION IN THIS DOCUMENT 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.;;;;	MODULE:		TPSTAT;	;	VERSION		V1.0A;;	AUTHOR:		BRIAN DOYLE;	;	DATE:		OCTOBER 1977;;	THIS MODULE CONATINS:;;		ALL STATISTIC SAMPLING ROUTINES FOR TPSTAT UTILITY;;;;	MODIFIED BY:      ;;;;;	BRIAN DOYLE;;		SPR # 252419	FEB 9, 79	BJD-1	# SUB-LINKS IS A BYTE;;;	RICHARD TREADWAY		** RT001;;		FIXED TO RUN ONLY FROM TT0: FOR RELEASE V1.1 OF TRAX;	.PAGE%-360,360,/; *RT001/TYPE1:	QIOW$	IO.WBT,13.,1,1,IOSTAT,,<TTMESS,S.TTMES,0>-365,365	.ASCII	/TPSTAT V1.1/-376;;TTMESS:	.BYTE	LF,LF,CR	.ASCII	/       TPSTAT - must be run from TT0:/	.BYTE	LF,LF,CRS.TTMES =	. - TTMESS-388,388BEGIN:: 	CALL	CHKTT0			; CHECK THAT REQESTOR IS AT TT0	BCC	3$			; IF C CLEAR THEN YES	DIR$	#TYPE1,ERR		; PRINT THE ERROR MESSAG   ˆ   E	JMP	EXI			; AND EXIT3$:	MOV	#HERA,TYPE1+Q.IOPL	; SET UP HERALD MESSAGE	MOV	#S.HERA,TYPE1+Q.IOPL+2	; AND SIZE FOR QIO	DIR$	#TYPE1,ERR/ ˆ          œw»z“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	XXXXXX					&	!	Version:	VV					&	!	Edit level:	EE					&	!	Edit date:	DD-MMM-YY				&	!	Author(s):	AAA					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1977 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$******************      ********************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$*********************************************************      *****&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		      &	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!*******************************      ********************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denot      e library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error       trap			&1100	\ A%= FN.SETUP.DIALOGUE%					&	!								&	!	Set up sysgen dialog function				&1400	\ LONG.FORM%= FALSE%						&2000	!$**************************************************************&	!                                                               &	!                                                               &	! 	DIALOG							&	!                                                               &	!                                                               &	!**********************************      *****************************&	!								&2001	\ GO TO 2500		IF FAST%= 1%				&	!								&	\ T%= FN.EXEC.BLOCK%("MCR...",290%,FALSE%)			&	\ T%= FN.EXEC.BLOCK%("AUTOZP",295%,FALSE%)			&	\ T%= FN.EXEC.BLOCK%("MCR...",296%,FALSE%)			&	!								&	!	Set up .TSK image & run the autozapper			&	!	AUTOZP must run separately so that setsys waits for	&	!	its exit.  If run by mcr..., then we get status from	&	!	run command and try the remove to soon			&2375	\ GO TO 2500	IF SKIP.IT% = 1%				&	\ ASK.RANGE(0)= 6						&	\ ON       FN.ASK%(246%,"","A",TRUE%,1%)				&		GO TO 2000, 32200, 2400					&	!								&	!	Branch on ESC, CTRL-Z, Exec name			&2400	\ SYSTEM.NAME$= ASK.CVT$					&2500	\ FOR I%= 1% TO 6%						&2505	\ TEMP$= MID (SYSTEM.NAME$,I%,1%)				&	\ T%= ASCII(TEMP$)						&	\ AR$(I%)= EDIT$( FN.INT.TO.OCT$(T%), 2%)		&	\ NEXT I%							&	!								&	!	GET ARRAY OF ASCII VALUES				&	!	FOR AUTOZAPPER						& 2550	\ FOR I%= 3% TO 8%						&		\ SUBSTITUTE.TEXT$(I%)= AR$(I%-2%)			&	\ NEXT I%							&	!								&	\ SUBSTITUTE.TEXT$(1%)= EDIT$(      SYSTEM.NAME$,2%)			&	\ SUBSTITUTE.TEXT$(2%)= FN.ADDRESS$				&	!								&	!	Set up substitution variables				&2575	\ OPEN "[200,201]SYSZAP.CMD" FOR OUTPUT AS FILE #5%		&	\ T%= FN.PRINT.BLOCK%(5%,291%)					&	\ CLOSE #5%							&	!								&	!	Write out the zap file for the system name		&2600	\ T%= FN.EXEC.BLOCK%("MCR...",292%,FALSE%)			&	\ T%= FN.EXEC.BLOCK%("MCR...",293%,FALSE%)			&	!								&	!	Execute the zap file for the system name		&	!	Create the system name.sys file ,etc   & clean up	&2700	\ GO TO 32000	      						&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***********************      ****************************************&15001	\ DEF FN.ADDRESS$						&	\ ON ERROR GO TO 15050						&	\ B$= "[1,34]KERNEL.MAP"					&	\ C$= "$CURNM"							&15002	\ OPEN B$ FOR INPUT AS FILE #5%					&15005	\ LINPUT #5%, MAP.LINE$						&	\ MAP.LINE$= EDIT$(MAP.LINE$,2%+4%+32%)				&	\ T%= INSTR(1%,MAP.LINE$,C$)					&	\ GO TO 15005	IF T%= 0%					&15010	\ T$= RIGHT(MAP.LINE$,T%+6%)					&	\ T%= INSTR (1%,T$,"-R")					&	\ T$= LEFT (T$,T%-1%)						&	\ T$= EDIT$(T$,2%+4%+32%)					&	\ CLOSE #5%							&	\ FN.ADDRESS$ =       T$						&	\ GO TO 15080							&	!								&	!	Locate the address of $CURNM by reading the map		&15050	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ PRINT "? FATAL error in SETSYS"				&	\ PRINT								&	\ PRINT "The kernel image does not contain the system name cell."&	\ PRINT								&	\ CALL EXITS2 (2%,0%)						&	!								&15080	\ ON ERROR GO TO 19000						&	\ FNEND								&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N       G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!**************************************************************      *&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ CALL EXITS2(1%,0%)						&	!								&	!	Regular exit   z  						&32100	\ CALL EXITS2(1%,27%)						&	!								&	!	ESC exit						&32200	\ CALL EXITS2(2%,26%)						&	!								&	!	CTRL-Z EXIT						&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END z         œwL^“Á› 8$        15200	!$**************************************************************&	!                                                               &	!                                                               &	! 	Real to Octal Conversion				&	!                                                               &	!                                                               &	!***************************************************************&15201	DEF FN.REAL.TO.OCT$(A)						&	\ D$= ""							&	!								&	\ LOW= A						   ê  	&15205	\ FOR L%= 5% TO 0%   STEP -1%					&		\ C= ABS(8%**L%)						&		\ D= LOW/C						&		\ D%= D							&		\ LOW= LOW- D%*C					&		\ D$= D$ + NUM1$(D%)					&	\ NEXT L%							&	!								&	!	Convert the low order part to Octal			&15207	\ FOR L%= 5% TO 1%   STEP -1%					&		\ GO TO 15210	IF LEFT(D$,1%) <> "0"			&		\ D$= RIGHT(D$,2%)					&	\ NEXT L%							&	!								&	!	Suppress leading zeroes					&15210	\ FN.REAL.TO.OCT$= D$						&	\ FNEND								&	!								&	!	Return converted answer					&ê         qûN“Á› 8$        1	!***************************************************************&	!								&	!								&	!	C R A S H   D U M P    A N A L Y S I S           	&	!								&	!								&	!								&	!	Program:	ANALYS.B2S				&	!	Version:	01					&	!	Edit level:	02					&	!	Edit date:	29-JUN-77				&	!	Author(s):	C.PAUL					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			&	!								&	!						      		&	!								&	!    (C) Copyright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided or otherwise made available to any  other  person	&	!    except  for use on such system and to one who agrees to	&	!    these licen      se terms.  Title to  and  ownership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!**********************************************      *****************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/02	10/26/77  CP	Insert code to spawn CDA	&	!								&	!	BL8-01	7/28/78	  CP	Do not automatically spool	 BL8-01&	!				output file. Permit only LP:	 BL8-01&	!				as output device (w/o other	 BL8-01&	!				file specificatio      n)		 BL8-01&	!								&	!	BL8-02	8/10/78   CP	Default file specifications are	 BL8-02&	!				the last valid file spec	 BL8-02&	!				entered. If a device spec is	 BL8-02&	!				present in the input file spec	 BL8-02&	!				then use that device for the	 BL8-02&	!				KERNEL.STB file.		 BL8-02&	!								&	!	BL8-03	8/21/78	  CP	Copy dump file before analysis	 BL8-03&	!				and correct misspelling of	 BL8-03&	!				SPAWN.ERROR% variable.		 BL8-03&	!								&	!	1.01AA	3/1/79	  CP	Spawn MCR... instead of ...PIP.	 1.01AA      &	!				Exit if ANALYSIS is not being	 1.01AA&	!				run from TT0: or batch (VTnn).	 1.01AA&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&	!								&	!	The ANALYSIS program carries on a dialog with the	&	!	user to obtain file specifications to direct the TPS	      &	!	crash dump analyser.  CDA is then spawned and given 	&	!	a command line of the form				&	!								&	!		CDA [output file][,copy file]=input file/ALL	&	!								&	!	Note that either an output file or a copy file must	&	!	be specified.						&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMEN      T				&	!	---------	--------------------------------------  &	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!	ASK.      HELP$(8)		Holds help text used by the	&	!				  dialog function, FN.ASK%	&	!	ASK.CVT$		Holds user's file specification	&	!				  with spaces removed		&	!	INFILE$			Holds user's input file spec	&	!	OUTFILE$		Holds user's output file spec	&	!	COPYFILE$		Holds user's copy file spec	&	!	VALID%			Parameter for FILESP subprogram &	!				  As input, VALID%=7 indicates	&	!				  that filename, account, and	&	!				  device specifications are	&	!				  valid components for FILESP	&	!				  to scan. The sum of the com-	&	!	      			  ponents FILESP found is	&	!				  returned in VALID%: 1 for	&	!				  filename, 2 for account, and	&	!				  4 for device.			&	!	ERROR%			Parameter for FILESP. Returned	&	!				  as non-zero if error was	&	!				  found in file spec by FILESP.	&	!								&	!	T2900%,T2900%(),T2900$	Used for FN.CHECK.TT0%.		 1.01AA&	!								 1.01AA&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N       E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!	FILESP		MACRO-11 routine that checks validity	&	!			  of a file specification		&	!								&	!	20001		BASIC  routine to spawn a task		&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	      !	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!	25001	FN.ASK%		Queries user, accepts user's	&	!				  response, handles errors	&	!								&	!	29000	FN.CHECK.TT0%	Returns zero if ANALYSIS is not	 1.01AA&	!				being run from TT0: or batch.	 1.01AA&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&      	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***********************************************      ****************&	!								&	\ DIM ASK.HELP$(8)						&	!							!	Help text array						&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								& 	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1005	\ IF FN.CHECK.TT0% = 0						!1.01AA&	  THEN PRINT							!1.01AA&	\	PRINT "? ANALYSIS must be run fro      m TT0: or batch."	!1.01AA&	\	GOTO 32767						!1.01AA&	!								 1.01AA&	!	If ANALYSIS is not being run from TT0: or batch,	 1.01AA&	!	print error message and exit.				 1.01AA&1010	\ VER.EDIT.NUM$ = "V1.0"					!BL8-01&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "ANALYSIS ";  VER.EDIT.NUM$; "   "			&	\ PRINT "Crash Dump Analysis Utility"				!BL8-01&	\ PRINT								&	!								&	!	Output program herald messages				&1125	!$***********************************************      ***************&	!								&	!								&	!	I N I T I A L I Z A T I O N				&	!								&	!								&	!***************************************************************&	!								&	\ ASK.HELP$(0) = "Specify the device or file containing th"	&		       + "e dump to be analysed.  The default file"	&	\ ASK.HELP$(1) = "name is [1,1]CRASH.CDA;1." 			&	\ ASK.HELP$(2) = "Specify the device or file to which the "	&		       + "analysis output should be written.   The"	&	\ ASK.HELP$(3) = "default file extension is LST.   If t      his"	&		       + " utility is being run solely to copy the"	&	\ ASK.HELP$(4) = "file respond with NONE."			&	\ ASK.HELP$(5) = "Specify the file to which the dump shoul"	&		       + "d be copied."					&	\ IFILE$       = "[1,1]CRASH.CDA;1"				!BL8-02&	\ OFILE$       = "LP:"						!BL8-02&	\ CFILE$       = "NONE"						!BL8-02&	!								&	!	Initialize help text array and input, output, and	&	!	copy file specifications.				& 1130	!$**************************************************************&	!								&	!						      		&	!	Q U E R Y   # 1 :  I N P U T   F I L E   S P E C	&	!								&		!								&	!***************************************************************&	!								&	\ ON FN.ASK%("Input specification",IFILE$,"",32767%,0%,2%)	!BL8-02&		GOTO 1130,	!on ESCAPE repeat question		&		     1500,	!on CTRL Z exit ANALYSIS routine	&		     1140	!otherwise continue			&	!								&	!	Ask user for input file specification			&1140	\ INFILE$=ASK.CVT$	!Save input file name			&	\ TEMPFILE$=ASK.CVT$						!BL8-02&	\ VALID% = 7%							&	\       CALL FILESP(INFILE$,VALID%,ERROR%)				&	\ IF ERROR%<>0%							& 	  THEN								&		PRINT "% Invalid file specification"			&	\	GOTO 1130						&	  ELSE								&	  IF (VALID%<>1%) AND (VALID%<>3%)AND(VALID%<>5%) AND (VALID%<>7%)&	  THEN								&		PRINT "% Filename must be specified"			&	\	GOTO 1130						&	!								&	!	Temporarily store input file specification.		&	!	Check for valid file, account, and device. Error	& 	! 	status of user file specification is returned in ERROR% &	! 	The sum of file specificatioon       components found is 	&	!	returned in VALID%. Components are 1 for filename,	&	!	2 for account, and 4 for device.			&1160	\ IFILE$ = TEMPFILE$						!BL8-02&	\ IF (VALID%=4%) OR (VALID%=5%) OR (VALID%=7%)			!BL8-02&	  THEN								!BL8-02&		STBDEVICE$ = LEFT$(INFILE$,POS(INFILE$,":",3))		!BL8-02&	  ELSE								!BL8-02&		STBDEVICE$ = ""						!BL8-02&	!								 BL8-02&	!	Get new input file specification default.		 BL8-02&	!	If a device was part of the input file spec, then	 BL8-02&	!	use that device to obtain th      e KERNEL.STB file.		 BL8-02&1200	!$**************************************************************&	!								&	!								&	!	Q U E R Y  # 2 :  O U T P U T   F I L E   S P E C	&	!								&	!								&	!***************************************************************&	!								&	\ ON FN.ASK%("Output specification",OFILE$,"",32767%,2%,3%)	!BL8-02&		GOTO 1130,	!on ESCAPE repeat 1st query		&		     1500,	!on CTRL Z exit ANALYSIS RTE		&		     1220	!otherwise continue.			&	!								&	!	Ask user for output file specific      ation			&1220	\ OUTFILE$=ASK.CVT$						&	\ TEMPFILE$ = ASK.CVT$						!BL8-02&	\ IF OUTFILE$="NONE"						&	  THEN								&		OUTFILE$=""						& 	\	GOTO 1300						&	!								&	!	If filename = "NONE" then goto query #3			&1240	\ VALID%=7%							&	\ CALL FILESP(OUTFILE$,VALID%,ERROR%)				&	\ IF ERROR%<>0							& 	  THEN								& 		GOTO 1260						!BL8-01&	  ELSE								&	  IF (VALID%=2) OR (VALID%=6)					& 	  THEN								&		PRINT "% File must be specified with account"		&	\	GOTO 1200						&	!								&	!	Check for       validity of filename and optional account	&	!	and device specifcations				&1250	\ IF (VALID%<>4%) OR (LEFT$(OUTFILE$,2%)="LP")			!BL8-01&	  THEN								!BL8-01&		GOTO 1270						!BL8-01&	!								!BL8-01&	!	If only a device is specified, and that device is not	!BL8-01&	!	LP: then print error message and reprompt.		!BL8-01&1260	\ PRINT"% Invalid file specification"				!BL8-01&	\ GOTO 1200							!BL8-01&1270	\ IF (VALID%<>4%) 						!BL8-01&	  THEN								!BL8-01&		OUTFILE$ = OUTFILE$ + "/-SP"				!BL8-01&	!			      					 BL8-01&	!	If output file isn't 'LP:' then append no-spool switch.	 BL8-01&1300	!$**************************************************************&	!								&	!								&	!	Q U E R Y  # 3 :   C O P Y   F I L E   S P E C		&	!								&	!								&	!***************************************************************&	!								&	\ OFILE$ = TEMPFILE$						!BL8-02&	\ ON FN.ASK%("Copy specification","NONE","",32767%,5%,1%)	&		GOTO 1200,	!on ESCAPE repeat 2nd query		&		     1500,	!on CTRL Z exit ANALYSIS ROUTINE	&		           1320	!otherwise continue			&	!								&	!	Get new output file specification default.		 BL8-02&	!	Ask user for copy file specification			&1320	\ COPYFILE$=ASK.CVT$	!Save copy file name			&	\ VALID%=7							&	\ CALL FILESP(COPYFILE$,VALID%,ERROR%)				&	\ IF ERROR%<>0							& 	  THEN 								&		PRINT"% Invalid file specification"			&	\ 	GOTO 1300						&	  ELSE								&	  IF (VALID%=2%) OR (VALID%=4%) OR (VALID%=6%) 			&	  THEN 								&		PRINT"% Filename must be specified"			&	\	GOTO 1300						&	!	Check for       validity of filename and optional account	&	!	and device specifications				&1330	\ IF COPYFILE$="NONE"						& 	  THEN								& 		IF OUTFILE$=""						&		THEN							&			PRINT"% Neither output nor copy file specified"	&	\		GOTO 1200					&		ELSE	COPYFILE$=""					&	!								&	!	If no copy file or output file was specified, 		&	!	repeat last 2 questions.				&	!								&1400	!$************************************************************** BL8-03&	!								&	!								&	!	SPAWN PIP TO COPY DUMP FILE IF NECESSARY		&      	!								&	!								&	!***************************************************************&	!								&	\ IF COPYFILE$ = "" THEN GOTO 1450				&	!	If not necessary to copy dump file, goto done		&1410	\ TASK$ = "MCR..."						!BL8-03&	!								 1.01AA&	\ COMMAND$ = "PIP " + COPYFILE$ + "/NV=" + INFILE$		&	\ RETURN% = 1%							&	\ GOSUB 20001							&	\ IF SPAWN.ERROR% > 1%						!BL8-03&	  THEN								&		PRINT "% ANALYSIS FAILED TO COPY THE INPUT FILE"	&	!								&	!	Copy the input file					&1450	!$*****************      ********************************************* BL8-03&	!								&	!								&	!	S P A W N   C D A   W I T H   C O M M A N D   L I N E	&	!								&	!								&	!***************************************************************&	!								&	\ IF OUTFILE$ = ""						&	  THEN GOTO 1500						!BL8-03&	!								&	!	If no analysis list file specified, skip analysis	&	!	and goto copy dump file					&1455	\ TASK$ = "...INS"						!BL8-03&	\ COMMAND$ = "INS $TPSCDA/TASK=TPSCDA"				&	\ RETURN% = 1%							&	\ GOSUB 20001							&      	\ IF (SPAWN.ERROR%>1%)						&	  THEN								&		PRINT "% FAILED TO INSTALL ANALYSIS TASK"		&	\	GOTO 1500						!BL8-03&	!								&	!	Spawn MCR INSTALLation of TPSCDA task. On error		&	!	skip analysis of dump, and goto copy of dump		&1460	\ TASK$ = "TPSCDA"						!BL8-03&	\ COMMAND$="TPSCDA "+ OUTFILE$ + "=" + STBDEVICE$ + 		!BL8-02&		"[1,54]KERNEL/STB," + INFILE$ + "/ALL"			!BL8-02&	\ GOSUB 20001							&	\ IF (SPAWN.ERROR%>1%)						&	  THEN 								&		PRINT "% FATAL ANALYSIS ERROR ENCOUNTERED"		&	!								&	!      	Spawn TPSCDA to perform analysis only. If necessary	&	!	the dump file is copied below. 				&1470	\ TASK$ = "MCR..."						!BL8-03&	\ COMMAND$ = "REM TPSCDA"					&	\ GOSUB 20001							&	!								&	!	Remove TPSCDA task.					&	!								&1500	\ GOTO 32767							&	!								&	!	Exit.							&	!								&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!******      *********************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!*************      **************************************************&19900	\ PRINT								&	\ PRINT "?Unexpected FATAL error in XXXXXX"			&	\ PRINT "Error is"; ERR; " at line"; ERL			&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ RESUME 32767							&	!								&	!	For all unaccounted for errors, print the line and	&	!	error number, as supplied by the BASIC-PLUS II		&	!	variables, ERR and ERL.  Close all open files and	&	!	exit through the END statement.				&20001	!$**************************************************************&	!			      					&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S   T   S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ ENDT         >€  “Á› 8$        	!	1.01AA	3/1/79	  CP	Exit if ANALYSIS is not being	 1.01AA&	!				run from TT0: or batch (VTnn).	 1.01AA&	!	T2900%,T2900%(),T2900$	Used for FN.CHECK.TT0%.		 1.01AA&	!								 1.01AA&	!	29000	FN.CHECK.TT0%	Returns zero if ANALYSIS is not	 1.01AA&	!				being run from TT0: or batch.	 1.01AA&1005	\ IF FN.CHECK.TT0% = 0						!1.01AA&	  THEN PRINT							!1.01AA&	\	PRINT "? ANALYSIS must be run from TT0: or batch."	!1.01AA&	\	GOTO 32767						!1.01AA&	!								 1.01AA&	!	If ANALYSIS is not being run from TT0: or ba   :   tch,	 1.01AA&	!	print error message and exit.				 1.01AA& :          ÚJ^“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	XXXXXX					&	!	Version:	VV					&	!	Edit level:	EE					&	!	Edit date:	DD-MMM-YY				&	!	Author(s):	AAA					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O       D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$*********************      *****************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$*************************************************************      *&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!		      						&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!************************************      ***************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote libra      ry dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIM	REFERENCE$(50%)=24%	!The reference specification	&		,REF.CHANGE.CODE$(50%)=1%!The reference change code	&		,TAPE$(20%)= 2%		!The tape code			&		,BURO$(20%)= 1%		!The build control code		&	!								&	!	Set up the arrays					&1000	!$**************************************************************&	!								&	!		      						&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1010	\ VER.EDIT.NUM$ = "01-00"					&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "BUREAUCRAT	"; VER.EDIT.NUM$; "   ";			&	\ PRINT								&	\ PRINT "generates Kit Addition paperwork"			&	\ PRINT								&	!								&	!	Output program heral      d messages				&1500	!$**************************************************************&	!                                                               &	!                                                               &	! 	Initialization						&	!                                                               &	!                                                               &	!***************************************************************&1501	\ T%= FN.SETUP.DIALOGUE%("[1,1]BUROCRAT")				&	\ VALID.LIST$= FN.TE      XT.LINE$(11%)				&	\ VALID.GROUP$= FN.TEXT.LINE$(12%)				&	\ VALID.TAPE$= FN.TEXT.LINE$(13%)				&	\ VALID.BURO$= FN.TEXT.LINE$(14%)				&	\ VALID.REF.CHANGE$= FN.TEXT.LINE$(15%)				&	\ REF.LIMIT%= 50%						&	\ PRESENT%= 1%							&	\ TODAY.DATE$= DATE$(0%)					&	!								&	!	Initialize constants & Dialog file			&1800	!$**************************************************************&	!                                                               &	!                                                                     &	! 	Dialog							&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ T%= FN.PRINT.BLOCK%(0%,10%)					&	\ FOR N1%= 1% TO 25%						&		\ SUBSTITUTE.TEXT$(N1%)= ""				&	\ NEXT N1%							&	\ GO TO 2001		! Disk question not used at present	&1901	\ ASK.RANGE(0)=5						&	\ ON FN.ASK%(32%,"","",TRUE%,1%)				&		GO TO 1800,32000, 1910					&	!								&	!	Dete      rmine the source disk for copybl			&1910	\ SOURCE.DISK$= ASK.CVT$					&	\ GO TO 2001							&2001	\  ON FN.ASK%(23%,"",VALID.LIST$,FALSE%,1%)				&		GO TO 1800, 32000, 2100,2200,2300,2400,2500,2600,2700	&	!								&	!	Determine the various types of modules to be generated	&2100	\ BASE%= 0%							&	\ FILES%= 5%							&	\ GO TO 3000							&2200	\ BASE%= 10%							&	\ FILES%= 5%							&	\ GO TO 3000							&2300	\ BASE%= 20%							&	\ FILES%= 4%							&	\ GO TO 3000							&2400	\ BASE%= 30%							&	\ FILES%= 5%		      					&	\ GO TO 3000							&2500	\ BASE%= 40%							&	\ FILES%= 4%							&	\ GO TO 3000							&2600	\ BASE%= 50%							&	\ FILES%= 5%							&	\ GO TO 3000							&2700	\ BASE%= 60%							&	\ FILES%= 3%							&	\ GO TO 3000							&	!								&	!	 Specify the Base array index & # of files for various	&	!	components						&3000	!$**************************************************************&	!                                                               &	!                                                                     &	! 	Other Questions						&	!                                                               &	!                                                               &	!***************************************************************&3001	\ ASK.RANGE(0)= 6						&	\ ON FN.ASK%(24%,"","",TRUE%,2%)				&		GO TO 2001, 32000, 3010					&	!								&	!	Determine Component skeleton name			&3010	\ MODULE$= ASK.CVT$						&	\ T$= "[1,1]" + MODULE$ + "FRM.BUR"					&	\ S$= "[1,1]" + MODULE$ + "BAT.BUR"					&	\ CLOSE #1%				      			&	\ CLOSE #2%							&3011	\ OPEN T$ FOR OUTPUT AS FILE #1%				&3012	\ OPEN S$ FOR OUTPUT AS FILE #2%				&	\ GO TO 3100							&	!								&	!	Open the printed form file & the batch stream submission file&3100	\ ASK.RANGE(0)= 3						&	\ ON FN.ASK%(25%,"","",TRUE%,2%)				&		GO TO 3000, 32000, 3110					&	!								&	!	Determine Group UFD					&3101	!								&	\ T%= FN.REALLY.OCTAL%(ASK.CVT$)				&	\ GO TO 3110		IF T% = 1%				&	\ PRINT								&	\ PRINT "% You did not specify a valid UFD group code.  Try again."&	      \ PRINT								&	\ GO TO 3100							&	!								&	!	Validate Octal group code				&	!								&3110	\ GROUP.UIC$= ASK.CVT$						&	\ GO TO 3200							&	!								&	!	Store Group UFD						&3200	\ ASK.RANGE(0)= 22%						&	\ ON FN.ASK%(26%,"","",TRUE%,2%)				&		GO TO 3100, 32000, 3210					&	!								&	!	Determine Author					&3210	\ AUTHOR$= ASK.CVT$						&	\ GO TO 3250							&	!								&	!	Store author						&3250	\ ASK.RANGE(0)=1						&	\ NO.ASK.SELECT%= TRUE%						&	\ ON FN.ASK%(31%,"",VALID.GROUP$,TRUE%,2%)				&	      	GO TO 3200, 32000, 3251					&	!								&	!	Determine Group code					&3251	\ GROUP$= ASK.CVT$						&3255	!$**************************************************************&	!								&	!								&	!	Special Questions					&	!								&	!								&	!***************************************************************&	!								&3300	\ FOR K%= 1% TO FILES%						&		\ TAPE$(K%)= ""						&		\ BURO$(K%)= ""						&	\ NEXT K%							&	!								&	!	Clear out array						&3305	\ FOR K%= 1% TO FILES%						&3307		\ ASK.RANGE(0)= 2	      				&		\ SUBSTITUTE.TEXT$(21%)= FN.STUFF.ARRAY$(K%,21%)	&		\ NO.ASK.SELECT%= TRUE%					&		\ ON FN.ASK%(27%,"",VALID.TAPE$,TRUE%,3%)		&			GO TO 3310, 32000, 3320				&		!							&		!	Detrermine tape code for each file		&		!							&3310		\ K%= K% - 1% 						&		\ GO TO 3250	IF K% <= 0%				&		\ GO TO 3307						&		!							&		!	ESC processing					&3320		\ TAPE$(K%)= ASK.CVT$					&3330		\ ASK.RANGE(0)= 1					&		\ NO.ASK.SELECT%= TRUE%					&		\ ON FN.ASK%(28%,"A Base",VALID.BURO$,TRUE%,3%)		&			GO TO 3307,32000, 3340      				&		!							&		!	Determine Buro code				&3340		\ BURO$(K%)= ASK.CVT$					&		\ BURO$(K%)= " " 	IF ASK.CVT$= "ABASE"		&		!							&		!	Store Buro code					&3350	\ NEXT K%							&	!								&	!	Loop through all files for this class of modules	&3400	\ FOR K% = 1% TO REF.LIMIT%					&		\ REFERENCE$(K%)= ""					&		\ REF.CHANGE.CODE$(K%)= ""				&	\ NEXT K%							&	\ L%= 1%							&	\ REF.START%= 2%*(102%+BASE%)					&	\ REF1.START%= 2%*(103%+BASE%)					&	\ R.START%= HELP.INDEX%(REF.START%)				&	\ R.LENGTH%= HELP.IND      EX%(REF.START%+ 1%)			&	\ S.START%= HELP.INDEX%(REF1.START%)				&	\ S.LENGTH%= HELP.INDEX%(REF1.START%+1%)			&	\ T%= FN.PRINT.BLOCK%(0%,51%)					&3402	\ T$= ""							&	\ S$= ""							&	\ T$= ASK.HELP$(R.START%+L%-1%)	IF L% <= R.LENGTH%		&	\ S$= ASK.HELP$(S.START%+L%-1%)	IF L% <= S.LENGTH%		&	\ GO TO 3405	IF T$= "DONE"					&	!								&	\ TEMP$= T$							&	\ T$= FN.SUBSTIT.ANS$(MODULE$,"ZZZ")				&	\ REFERENCE$(L%)= EDIT$(TEMP$,2%)				&	\ REF.CHANGE.CODE$(L%)= EDIT$(S$,2%)				&	!								&	\ SUBSTITUTE.TEXT$(18      %)= REFERENCE$(L%)				&	\ SUBSTITUTE.TEXT$(19%)= REF.CHANGE.CODE$(L%)			&	\ T3%= FN.PAD.IT%(18%,15%)					&	\ T%= FN.PRINT.BLOCK%(0%,52%)					&	\ L%= L%+1%							&	\ GO TO 3402							&	!								&	!	Process the canned references				&3405	\ ASK.RANGE(0)= 24						&	\ ON FN.ASK%(29%,"DONE","",TRUE%,3%)				&		GO TO 3407, 32000, 3410					&	!								&	!	Determine references for built component		&3407	\ GO TO 3305	IF L%= 1%					&	\ L%= L% - 1%							&	\ GO TO 3405							&3410	\ GO TO 3500		IF ASK.CVT$= "DONE"			&	\       REFERENCE$(L%)= ASK.CVT$					&	\ GO TO 3450							&	!								&	!	Store refence of built component			&3450	\ NO.ASK.SELECT%= TRUE%						&	\ ON FN.ASK%(30%,"",VALID.REF.CODE$,FALSE%,3%)			&		GO TO 3405, 32000, 3470					&	!								&	!	Determine refernce change effect on built component	&3470	\ REF.CHANGE.CODE$(L%)= ASK.CVT$				&	\ L%= L% + 1%							&	\ GO TO 3405							&	!								&	!	Store ref change code & try for more references		&3500	!$**************************************************************&	!                                                                     &	!                                                               &	! 								&	!                                                               &	!                                                               &	!***************************************************************&4000	!$**************************************************************&	!                                                               &	!                                                                     &	! 	Setup up arrays & process files				&	!                                                               &	!                                                               &	!***************************************************************&	\ T%= FN.PRINT.BLOCK%(2%,95%)					&	\ T%= FN.PRINT.BLOCK%(2%,60%)					&4001	\ FOR I%= 1%  TO FILES%				&		!							&		\ FOR J%= 1% TO 25%					&			\ SUBSTITUTE.TEXT$(J%)= FN.STUFF.ARRAY$(I%,J%)	&				IF J% <> 10% AND J% <> 11%		&			\ SUBSTITUTE.TEXT$(J      %)= TAPE$(I%)		&				IF J% = 10%				&			\ SUBSTITUTE.TEXT$(J%)= BURO$(I%)		&				IF J%= 11%				&		\ NEXT J%						&		\ T%= FN.PAD.IT%(1%,6%)					&		\ T%= FN.PAD.IT%(5%,9%)					&		\ T%= FN.PAD.IT%(7%,3%)					&		\ T%= FN.PAD.IT%(15%,18%)				&		!							&		!	Stuff array for this file with the dialog values&		!							&		\ T%= FN.PRINT.BLOCK%(1%,41%)				&		\ T%= FN.PRINT.BLOCK%(2%,61%)				&		!							&		!	Prepare bulk of report & batch stream for file i&		!							&		\ GO TO 4060	IF SUBSTITUTE.TEXT$(12%) = "YES"	&		\       T%= FN.PRINT.BLOCK%(2%,67%)				&		\ T%= FN.PRINT.BLOCK%(2%,62%)	IF SUBSTITUTE.TEXT$(13%) = "YES"&		\ T%= FN.PRINT.BLOCK%(2%,63%)	IF SUBSTITUTE.TEXT$(13%)<> "YES"&		!							&		\ T%= FN.PRINT.BLOCK%(2%,64%)	IF SUBSTITUTE.TEXT$(16%)= "YES"&		\ T%= FN.PRINT.BLOCK%(2%,65%)	IF SUBSTITUTE.TEXT$(16%)<> "YES"&		!							&		!	Generate Build/Rebuild  command specifications	&		!							&4050		\ GO TO 4060	IF I% <> FILES%			&		\ FOR K%= 1% TO 50%					&			!						&			\ S%= 0%					&			\ S%= PRESENT%	IF REFERENCE$(K%) <> ""		      &			\ SUBSTITUTE.TEXT$(19%)= REFERENCE$(K%)		&			\ SUBSTITUTE.TEXT$(20%)= REF.CHANGE.CODE$(K%)	&			\ T%= FN.PRINT.BLOCK%(1%,42%)	IF S%= PRESENT%	&			\ T%= FN.PRINT.BLOCK%(2%,66%)	IF S%= PRESENT%	&			!						&			!	Specify references			&			!						&4060		\ NEXT K%						&		!							&	\ NEXT I%							&5000	!$**************************************************************&	!                                                               &	!                                                               &	! 	Run CLMGR,      SURVEYBL, &COPYBL				&	!                                                               &	!                                                               &	!***************************************************************&5001	\ SUBSTITUTE.TEXT$(1%)= EDIT$(SUBSTITUTE.TEXT$(1%),2%)		&	\ T%= FN.PRINT.BLOCK%(2%,70%)					&	\ T%= FN.PRINT.BLOCK%(2%,71%)					&	\ T%= FN.PRINT.BLOCK%(2%,99%)					&6001	\ T$= "[1,1]" + MODULE$ + "SVY.BUR"					&	\ CLOSE #4%							&	\ OPEN T$ FOR OUTPUT AS FILE #4%				&	\ T%= FN.PRINT.BL      OCK%(4%,95%)					&	\ T%= FN.PRINT.BLOCK%(4%,80%)					&	\ T%= FN.PRINT.BLOCK%(4%,81%)					&	\ T%= FN.PRINT.BLOCK%(4%,99%)					&6500	\ T$= "[1,1]" + MODULE$ + "CPB.BUR"						&	\ CLOSE #3%							&	\ OPEN T$ FOR OUTPUT AS FILE #3%				&	\ T%= FN.PRINT.BLOCK%(3%,95%)					&	\ T%= FN.PRINT.BLOCK%(3%,90%)					&	\ T%= FN.PRINT.BLOCK%(3%,100%+BASE%+4%)				&	\ T%= FN.PRINT.BLOCK%(3%,99%)					&	!								&	!	Generate the Copybl batch stream			&7000	!$**************************************************************&	!                                                                     &	!                                                               &	! 	Clean-up						&	!                                                               &	!                                                               &	!***************************************************************&7001									&	\ T%= FN.PRINT.BLOCK%(1%,53%)					&	\ FOR M%= 1% TO 5%						&		\ CLOSE #M%						&	\ NEXT M%							&	!								&	!	Close all files						&7005	\ T%= FN.PRINT.B      LOCK%(0%,53%)					&7006	\ GATE%= FALSE%							&	\ T%= FN.EXEC.BLOCK%("DCL...",54%,GATE%)			&	\ GO TO 1800							&	!								&	!	Tell user where his files are & return for another module&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**********************************************      ****************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15001	!$**************************************************************&	!                                                               &	!                                                               &	! 	Array stuffer						&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	!	ZZZ => MODULE$						&	!	YYY => GROUP.UIC$					&	!	XXX => TODAY.DATE$					&	!	WWW => AUTHOR$						&	!	VVV => GROUP$						&	!	TTT => CLMGR.CODE$					&	!	SSS => SOURCE.DISK$					&	!								&	\ DEF FN.STUFF.ARRAY$(I%,J%)					&15005	\ TT%= 101% + BASE%						&	\ T1%= I% 							&	!								&	\ DLG.START%= HELP.INDEX%(2%*TT%)				&	\ DLG.LENGTH%= HELP.INDEX%(2%*TT%+1%)				&15      007	\ TEMP1$= ASK.HELP$( DLG.START%+J%-1%)	IF (J%-1%)< DLG.LENGTH%	&15008	\ FOR Q%= 1% TO T1%						&		\ T3%= INSTR(1%,TEMP1$,"#")				&		\ TEMP1$= RIGHT(TEMP1$,T3%+1%)				&	\ NEXT Q%							&15009	\ T3%= INSTR(1%,TEMP1$,"#")					&	\ TEMP1$= LEFT(TEMP1$,T3%-1%)	IF T3% > 1%			&	\ TEMP$= EDIT$(TEMP1$,128%)					&15010	\ W$= FN.SUBSTIT.ANS$(MODULE$,"ZZZ")				&	\ W$= FN.SUBSTIT.ANS$(GROUP.UIC$,"YYY")				&	\ W$= FN.SUBSTIT.ANS$(TODAY.DATE$,"XXX")			&	\ W$= FN.SUBSTIT.ANS$(AUTHOR$,"WWW")				&	\ W$= FN.SUBSTIT.ANS$(GR      OUP$,"VVV")				&	\ W$= FN.SUBSTIT.ANS$(CLMGR.CODE$,"TTT")			&	\ W$= FN.SUBSTIT.ANS$(SOURCE.DISK$,"SSS")			&	\ FN.STUFF.ARRAY$= TEMP$					&15051	\ FNEND								&15075	\ DEF FN.SUBSTIT.ANS$(MODULE$,THE.STRING$)			&	\ T%= INSTR(1%,TEMP$,THE.STRING$)				&	\ T1$,T2$= ""							&	\ T1$= LEFT(TEMP$,T%-1%)	IF T% > 0%			&	\ T2$= RIGHT(TEMP$,T%+3%)	IF T% > 0%			&	\ TEMP$= T1$ + MODULE$ + T2$	IF T% > 0%			&	\ FN.SUBSTIT.ANS$= ""						&	\ FNEND								&	!								&	!	Substitute a parameter					&	!								&15500	\ DEF FN.      PAD.IT%(T%,L%)						&15501	\ T2$= EDIT$(SUBSTITUTE.TEXT$(T%),2%)				&	\ T1%= LEN (T2$)						&	\ T2%= L%-T1%							&	\ T1$= ""							&	\ T1$= STRING$(T2%,32%)		IF T2% > 0%			&	\ SUBSTITUTE.TEXT$(T%)= T2$ + T1$				&	\ FN.PAD.IT%= 0%						&	\ FNEND								&	!								&	!	Pad out substitute text strings to fixed length		&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!************************      ***************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$******************************************      ********************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D     O    „   F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END„          qvkQÁ› 8$        	.TITLE	RCLEAN	.IDENT	"V1.01A";;                         COPYRIGHT (C) 1979 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.;;;; MODULE:	RCLEAN;; VERSION:	V01.01A;; AUTHOR:	TONY SUKIENNIK;		LEE BARTON;; DATE:		16-MAR-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;      	V1.01A	16-MAR-79	LBB		LBB001 - COMMAND FOR ERROR;						PROCESSING TASK BEGINS AT;						CHANGED LOCATION;	.MCALL	DIR$,$STORE,$CLOSE;;	THIS ROUTINE IS UNCONDITIONALLY CALLED TO CLEAN UP;CLEAN::	MOV	#"RC,ERRTYP	; GENERAL LOGICAL PROGRAM ERROR	MOV	#RECER,R0	; POINT TO NAME OF ERROR PROCESSING TASK	MOV	#RECNAM,R1	; POINT TO COMMAND			;LBB001	MOV	#RECERL,R2	; LENGTH OF COMMAND	CALL	ENCODE		; CHANGE THE TERMINATORS	MOV	R2,STATUS	; SET UP ERROR STATUS TO RECOVR DIALOGUE PROGRAM	CLR	TABMAP		; MAP TABLES AT THE BEGI      NNING	DIR$	#MAPTAB		; MAP THE TABLES	MOV	#TABLE+40,R4	; POINT TO THE ENDING TIME FOR THE VOLUME	MOV	#LASTIM,R5	; POINT TO THE LAST TIME ENCOUNTERED FOR A SLOT	MOV	#6,R0		; PREPARE TO MOVE 6 WORDS OF TIME INFO10$:	MOV	(R5)+,(R4)+	; MOVE SOME TIME INFO	SOB	R0,10$		; UNTIL DONE	MOV	OPENED,R2	; GET THE NUMBER OF FILES CURRENTLY OPEN	BEQ	30$		; IF NO FILES ARE OPEN, DON'T CLOSE ANY	MOV	#LUNTAB,R3	; POINT TO THE LUN TABLE	MOV	#FAB,R1		; POINT TO THE FAB20$:	$STORE	LUT.IF(R3),IFI,R1	; STORE THE IFI IN THE FAB	$CLO   z   SE	#FAB		; CLOSE THE FILE	ADD	#LUT.SZ,R3	; POINT TO THE NEXT OPEN LUN	SOB	R2,20$		; CLOSE IT IF IT IS OPEN30$:	RETURN	.ENDz          Kq˜:kQÁ› 8$        	.TITLE	RECIO I/O MODULE	.IDENT	/01/.IDENT	"V01.01A";;                         COPYRIGHT (C) 1979 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  I      S  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.;;;; MODULE:	RECIO;; VERSION:	V01.01;; AUTHOR:	TONY SUKIENNIK;		LEE BARTON;; DATE:		7-FEB-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		-      -----		-----------;	V01.01	7-FEB-79	LBB		V1.1 CHANGE - HAVE MCR;						SPAWN RECERR (NOW CALLED "REC");						- LBB001;;	.MCALL	RDBBK$,WDBBK$,EXST$S	.MCALL	MAP$;;; SET UP ALL THE REQION AND WINDOW DESCRIPTORS;;SLRDB::	RDBBK$	1024.,RCSLOT,GEN,<RS.RED!RS.WRT!RS.DEL!RS.ATT>,0				; REGION DESCRIPTOR BLOCK FOR THE SLOT REGIONSLWDB::	WDBBK$	6,128.,,,0,<WS.MAP!WS.WRT!WS.64B>				; WINDOW DESCRIPTOR BLOCK FOR THE SLOT REGIONTBRDB::	RDBBK$	,RECCOM,,<RS.RED!RS.WRT>				; REGION DESCRIPTOR BLOCK FOR THE TABLE REGIONTBWDB:      :	WDBBK$	7,128.,,,16.,<WS.MAP!WS.WRT!WS.64B>				; WINDOW DESCRIPTOR BLOCK FOR THE TABLE REGIONMAPSLT::MAP$	SLWDB		; DPB FOR SLOT MAPPINGMAPTAB::MAP$	TBWDB		; DPB FOR TABLE MAPPING;;; INITIALIZE ALL THE RMS DATA STRUCTURES;;SLOT	==	140000		; SLOT MAPPED AT 140000SEQNUM	==	SLOT+34		; RECORD SEQUENCE NUMBER IN SLOTVALSTR	==	SLOT+52		; ADDRESS OF VALIDATION STRING IN SLOTOPEN	==	100.		; 100. FILES CAN BE OPEN AT ONE TIMEKEYS	==	32.		; AN INDEXED FILE CAN HAVE MAX OF 32. KEYSTABLE	==	160000		; SELECTION CRITERIO      N TABLES MAPPED AT 160000SLMPLN	==	SLWDB+W.NLEN	; OFFSET USED TO DEFAULT MAPPING SIZESLTMAP	==	SLWDB+W.NOFF	; USED TO MAP SLOT TABMAP	==	TBWDB+W.NOFF	; USED TO MAP SELECTION CRITERION TABLESNUMPRO	==	TABLE+64.	; ADDRESS OF NUMBER OF TP'S BEING RECOVEREDPRONAM	==	SLOT+2		; TRANSACTION PROCESSOR NAME IN SLOTYEAR	==	SLOT+74		; OFFSET OF YEAR IN SLOTDAY	==	SLOT+42		; OFFSET OF DAY IN SLOTBASFIL	==	SLOT+16		; OFFSET OF FILE TABLE BASE IN SLOTFIL.DV	==	0		; OFFSET OF DEVICE IN FILE TABLEFIL.UN	==	2		; OFFSET OF U      NIT NUMBER IN FILE TABLEFIL.FI	==	4		; OFFSET OF FILE ID IN FILE TABLEFIL.LU	==	12		; OFFSET OF LUN NUMBER IN FILE TABLEFIL.PO	==	14		; OFFSET OF KEY POSITION IN FILE TABLEFIL.SZ	==	16		; OFFSET OF KEY SIZE IN FILE TABLE	.MCALL	ORG$,POOL$B,$INIT	.MCALL	$GNCAL,FAB$B,RAB$B,XAB$B,NAM$B	.MCALL	$FBCAL,$RBCAL	$GNCAL	$FBCAL	$RBCAL	ORG$	IDX,<DEL,FIN,GET,PUT,UPD>	ORG$	REL,<DEL,FIN,GET,PUT,UPD>	ORG$	SEQ,<DEL,FIN,GET,PUT,UPD>	POOL$B	P$BDB	4	P$FAB	OPEN	P$RAB	1	P$RABX	1,KEYS,KEYS	P$IDX	KEYS	POOL$EFAB::	FAB$B	F$FAC	FB$DE      L!FB$GET!FB$PUT!FB$UPD	F$BPA	BUFADD	F$BPS	BUFSIZ	F$XAB	XAB	F$FOP	FB$FID!FB$DLK	F$NAM	NAM	FAB$ERAB::	RAB$B	R$ROP	RB$EOF	R$FAB	FAB	RAB$ENAM::	NAM$B	NAM$EXAB::	XAB$B XB$KEY	XAB$ELUNTAB::	.BLKW	OPEN*5		; ALLOCATE 5 WORDS FOR EACH OPEN FILELUT.SZ	==	5*2		; SIZE OF LUN TABLE ENTRYLUT.CR	==	0		; CURRENTLY OPEN OFFSETLUT.IF	==	2		; IFI ASSOCIATED WITH LUNLUT.AC	==	4		; ACCESS COUNT OR USAGE WORDLUT.FL	==	6		; FILE NUMBERLUT.PR	==	7		; TP NUMBERLUT.OR	==	10		; FILE ORGANIZATION;;; LOCAL AND GLOBAL DATA;;BUFADD::.BLK      B	40000		; THIS BLOCK IS THE RMS BUFFERBUFSIZ	==	.-BUFADD	; SIZE OF RMS BUFFERSOPENED::.WORD	0		; NUMBER OF FILES OPENED AT PRESENT TIMEREADTP::.WORD	0		; IO FUNCTION USED TO READ JOURNAL				; IO.RVB FOR DISK				; IO.RLB FOR TAPE;;	BEGINNING OF BLOCK TO BE SENT TO ERROR PROCESSING TASK;RECNAM::.ASCII	/REC /		; TASK NAME OF RECERR			;LBB001ERRTYP::.ASCII	/**/		; TYPE OF ERROR BEING REPORTED TO THE ERROR				; ERROR REPORTING TASKSTATUS::.WORD	0		; STATUS WORDRETRY::	.WORD	0		; RETRY COUNT FOR JOURNAL IOERRHIS      ::.BYTE	0,0		; ERROR HISTORY FOR JOURNAL IOSEQUEN::.WORD	0		; SEQUENCE NUMBER OF RECORD WE NOW EXPECTSLTLEN::.WORD	0		; LENGTH OF SLOT CURRENTLY BEING READREMAIN::.WORD	0		; AMMOUNT OF SLOT LEFT TO READBLOCKL::.WORD	0		; DISK JOURNAL BLOCK NUMBER (LOW 16 BITS)BLOCKH::.WORD	0		; DISK JOURNAL BLOCK NUMBER (HIGH BITS)LBLOCK::.WORD	0		; DISK JOURNAL BLOCK NUMBER (LOW 16 BITS)HBLOCK::.WORD	0		; DISK JOURNAL BLOCK NUMBER (HIGH BITS)				; THE PRECEDING TWO WORDS ARE USED TO RELOAD				; THE DISK BLOCK NUMBER FOR SO      ME RETRY ATTEMPTDEVICE::.ASCII	/**/		; DEVICE NAMEUNITNM::.WORD	0		; UNIT NUMBERDISK::	.WORD	0		; TAPE OR DISK FLAG WORDIOSTAT::.BLKW	2		; IO STATUS FOR VARIOUS QIO MACROSPRONUM::.WORD	0		; PROCESSOR NUMBERFILNUM::.WORD	0		; FILE NUMBER WITHIN PROCESSORLASTIM::.BLKW	6		; CURRENT RECORD'S TIME SAVED HEREESCCHG::.BYTE	0		; CODE CHARACTER FOR ESCCRCHG::	.BYTE	0		; CODE CHARACTER FOR CRRECERL	==	.-RECNAM	; LENGTH OF ERROR INFO TO BE PASSED TO 	;LBB001				; REC (RECER)				;LBB001;;	END OF BLOCK TO BE SENT TO ERR      OR PROCESSING TASK;RECER::	.RAD50	/MCR.../	; MCR... IS SPAWNED WITH TASKNAME "REC"	;LBB001LSTSEQ::.WORD	0		; SEQUENCE NUMBER OF LAST RECORD READRECIO::	$INIT			; INITIALIZE RMS-11	CALL	INIT		; DO ALL THE INITIALIZATION PROCESSING	BCS	OUT		; IT DIDN'T GO EXACTLY AS PLANNED	CALL	PROCES		; PROCESS THE TAPEOUT:	CALL	CLEAN		; CLEAN UP REGARDLESS OF WHAT PROCES DID	EXST$S	STATUS		; EXIT WITH STATUSENCODE::	CLRB	ESCCHG	CLRB	CRCHG		; CLEAR THE CODES	MOV	R0,-(SP)	MOV	R1,-(SP)	; SAVE SOME REGISTERS	MOV	R3,-(SP)	MOV	#      40,R3		; START AT 40 FOR CHARACTER NOT IN STRING5$:	MOV	#RECNAM,R0	; POINT TO THE STARTING ADDRESS		;LBB001	MOV	#RECERL-2,R1	; THIS MANY COMPARES10$:	CMPB	(R0)+,R3	; IS IT IN THE STRING?	BNE	15$		; NO	INC	R3		; YES, SEE IF NEXT ONE IS	BR	5$		; TRY AGAIN15$:	SOB	R1,10$		; CHECK THEM ALL	TSTB	ESCCHG		; DONE THIS ONCE ALREADY	BNE	20$		; YES	MOVB	R3,ESCCHG	; PUT IN THE ESCAPE CODE	INC	R3		; TRY NEXT CHARACTER	BR	5$		; DO IT20$:	MOVB	R3,CRCHG	; DO IT FOR CARRIAGE RETURN	MOV	#33,R3		; CHECK FOR ESCAPE	MOV	#RECNAM      ,R0						;LBB001	MOV	#RECERL-2,R130$:	CMPB	(R0),R3		; IS CHARACTER A ESCAPE?	BNE	35$		; NO	MOVB	ESCCHG,(R0)	; CHANGE IT TO THE CODED CHARACTER35$:	INC	R0		; POINT TO NEXT CHARACTERE	SOB	R1,30$	MOV	#12,R3		; CHECK FOR CR	MOV	#RECNAM,R0						;LBB001	MOV	#RECERL-2,R140$:	CMPB	(R0),R3		; IS CHARACTER A CARRIAGE RETURN	BNE	45$		; NO	MOVB	CRCHG,(R0)	; CHANGE IT TO THE CODED CHARACTER45$:	INC	R0		; POINT TO NEXT CHAR	SOB	R1,40$	MOV	(SP)+,R3	MOV	(SP)+,R1	MOV	(SP)+,R0	CALL	SPAWNM	; SPAWN THE ERROR PROCESSOR	MOV	R0,-      (SP)	MOV	R1,-(SP)	MOV	R3,-(SP)	MOVB	ESCCHG,R3	; GET THE ESCAPE CODE47$:	MOV	#RECNAM,R0						;LBB001	MOV	#RECERL-2,R1	; MOVE THE CONTEXT ADDRESS AND SIZE50$:	CMPB	(R0),R3		; SHOULD THIS BE A TERMINATOR?	BNE	55$		; NO	CMPB	R3,ESCCHG	; ESCAPE?	BNE	54$		; NO	MOVB	#33,(R0)	; YES	BR	55$54$:	MOVB	#12,(R0)	; IT IS A CR55$:	INC	R0		; POINT TO THE NEXT CHARACTER	SOB	R1,50$		; UNTIL DONE	CMPB	ESCCHG,R3	; CHECKING ESCAPES?	BNE	60$		; NO	MOVB	CRCHG,R3	; DO CR's NOW	BR	47$		; DO THEM60$:	MOV	(SP)+,R3	MOV	(SP)+,R1	MOV	(SP      )+,R0	RETURN	.END	RECIO           œ	 `“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	AUTORP					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	15-APR-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$******************      ********************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	2		Used for report				&	!	13		Terminal output				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!			      					&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A$			temporary working variable	&	!	A%			TWV				&	!	B$			TWV				&	!	B%			TWV				&	!	CPU$			string of cpu type		&	!	FUN.JUMP2%		value for special processing	&	!				  jump routine			&	!	J%			loop variable			&	!	LINE.COUNT%		# lines printed on the page so	&	!				  far				&	!	M%			TWV				&	!	N%			TWV				&	!	NOT.SUPPORTED		flag for handling non-supported	&	!				  devices			&	!	P%			TWV				&	!	Q%			loop variable			&      	!	S%			TWV				&	!	START%			defines start of non-controller	&	!				  devices in assingment table	&	!	T%			TWV				&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	10900		Dispatcher sub-routine for special	&	!			device-d      ependent report lines		&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	????	FN.INT.TO.OCT$	Converts integer to octal string&	!								&	!***************************************************************&800	!$*      *************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&	!								&	!	Note that a lot gets appended in here			&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines       930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard       default error trap			&7000	!$**************************************************************&	!                                                               &	!                                                               &	! 	A U T O S I Z E    R E P O R T 				&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&7005	\ O      PEN "CL:" FOR OUTPUT AS FILE #2%				&	!								&	\ GOSUB 7700							&	!								&	!	Heading lines						&	!								&	\ CPU$= NUM1$(TAB.CPU%)						&	\ PRINT #2%,"You are building for a PDP-11/";CPU$;		&		" with ";2%*TAB.SIZE%;"K bytes of memory."		&	\ PRINT #2%							&	!								&	\ PRINT #2%,"CPU OPTIONS:"					&		\ PRINT #2%, "A floating point processor is ";		&		\ PRINT #2%, "not ";	IF TAB.FPP%= 0%			&		\ PRINT #2%, "present."					&		!							&		\ PRINT #2%, "Parity checking is ";			&		\ PRINT #2%, "not ";	IF       TAB.PARITY%= 0%		&		\ PRINT #2%, "present."					&		!							&		\ PRINT #2%, "Cache memory is ";			&		\ PRINT #2%, "not ";	IF TAB.CACHE%= 0%		&		\ PRINT #2%, "present."					&		!							&		\ PRINT #2%, "The extended memory option is ";		&		\ PRINT #2%, "not ";	IF TAB.KT11%= 0%		&		\ PRINT #2%, "present."					&		!							&		\ PRINT #2%, "The line frequency is ";NUM1$(TAB.HERTZ%);"."&		!							&	!								&	\ PRINT #2%							&	!								&	\ PRINT #2%, "The highest assigned vector is ";			&				FN.INT.TO.OCT$(TAB.HIGH      %)		&	\ PRINT #2%							&	\ PRINT #2%, "This configuration will ";			&	\ PRINT #2%, "not ";		IF TAB.TPS%= 0%			&	\ PRINT #2%, "support a TRAX system."				&	!								&	\ LINE.COUNT%= 100%						&	!								&	!	Print the CPU page which includes the CPU type, the memory &	!	size, the CPU options, the highest vector used, and a	&	!	declaration about the system's ability to support a TPS &	!	system.							&7100	!$**************************************************************&	!								&	!								&	! T H E    D E       V I C E    S E C T I O N   O F    R E P O R T	&	!								&	!								&	!****************************************************************&	!								&	!								&	\ GOSUB 7260							&	!								&	!	Do controllers						&	!								&	\ START%= 5%							&	\ FOR I%= START% TO TABLE.SIZE%					&		!							&		\ GO TO 7150		IF NO.OF.DEVICES%(I%) = 0%	&		\ GOSUB 7700		IF LINE.COUNT%>52%		&		!							&		!	Go to header routine if necessary		&		!							&		\ PRINT #2%, DEV.NAME$(I%) 				&		\ PRINT #2%						&		\ PRINT #2%, "Ther      e are ";NO.OF.DEVICES%(I%);		&			" of these devices. "				&		!							&		\ GO TO 7130	IF NO.OF.DEVICES%(I%) = 0%		&		!							&		\ PRINT #2%						&		\ PRINT #2%, "They are assigned ";			&			"hardware priority ";PRIORITY$(I%);"."		&		!							&		\ GO TO 7400		IF I% = 8% 	!If printer	&		\ A$= FN.INT.TO.OCT$(FIRST.CSR%(I%))			&		\ PRINT #2%,"The first CSR address assigned to these ";	&			"devices is ";A$;"."				&		\ A$= FN.INT.TO.OCT$(VECTOR%(I%))			&		\ PRINT #2%, 						&		"The first vector address assigned to t      hese devices ";	&			"is ";A$;"."					&		!							&7125		\ PRINT #2%						&		\ PRINT #2%, "Each unit occupies ";CSR.LENGTH%(I%);	&			"bytes in the I/O page."			&		\ PRINT #2%, "Also, it uses ";				&			VECTOR.LENGTH%(I%);"bytes in low memory for ";	&			"vectored interrupts."				&		!							&		\ PRINT #2%						&		\ FUN.JUMP2%= QUESTION%(I%)				&		\ GOSUB 10900						&		!							&		!	Go to special routine to ask special questions	&		!							&		\ NOT.SUPPORTED%= 0%					&		\ NOT.SUPPORTED%= 1%	IF ((TAB.CPU%= 34%) AND      		&			(TPS.CLASS%(I%)= 1%))				&		\ NOT.SUPPORTED%= 1%	IF ((TAB.CPU%=70%) AND		&			(TPS.CLASS%(I%)= 2%))				&		!							&		!	Flag non-supported devices			&		!							&		\ PRINT #2%		IF TPS.CLASS%(I%) = 0%		&		\ PRINT #2%,"WARNING - This type of device is not supported ";&			"by TRAX."					&				IF TPS.CLASS%(I%) = 0% 			&		\ PRINT #2%,"WARNING - This device is not supported on"	&				+ " this processor."			&			IF NOT.SUPPORTED%= 1%				&		!							&		!							&7130		\ LINE.COUNT%= LINE.COUNT% + 13%			&		\ LINE.COU      NT%= LINE.COUNT% + 2% 	IF TPS.CLASS%(I%)=0%&		\ PRINT #2%						&		\ PRINT #2%						&		\ LINE.COUNT%= LINE.COUNT% - 7%	 IF NO.OF.DEVICES%(I%)=0%&		!							&		!	Update line count and print some spacers	&7150	\ NEXT I%							&	\ CLOSE #2%							&	\ GO TO 32767							&	!								&	!	Loop through the devices, exit when done		&7200	!$**************************************************************&	!								&	!								&	!	D E V I C E - S P E C I F I C    R E P O R T    L I N E S&	!								&	!								&	!************      ****************************************************&	!								&	!	The line printers					&	!								&	\ N%= 0%							&	\ M%= NO.OF.DEVICES%(I%)					&	\ A%= SPECIAL2%(I%)						&	!								&	\ FOR Q%= 14% TO 0%	STEP -1%				&		\ B%= A% AND 2%**Q%					&		\ N%= N% + 1%		IF B% <> 0%			&	\ NEXT Q%							&	!								&	!	Convert bit code for LA 180 to B+2 convenient form	&	!								&	\ PRINT #2%,N%;" of your ";M%;" printers are LA180 units."	&	\ LINE.COUNT%= LINE.COUNT% + 1%					&	\ GO TO 10910							&	!								&	!***      ***********************************************************	&7220	!								&	!	DMC devices						&	!								&	\ M%= 0%							&	\ N%= 0%							&	\ P%= 0%							&	\ A%= SPECIAL0%(I%)						&	\ B%= SPECIAL1%(I%)						&	!								&	\ FOR Q%= 7% TO 0%	STEP -1%				&		\ C%= A%/ 4**Q%						&		\ D%= B%/ 4**Q%						&		\ C%= C% AND 3%						&		\ D%= D% AND 3%						&		\ M%= M% + 1%		IF C%= 1%			&		\ M%= M% + 1%		IF D%= 1%			&		\ N%= N% + 1%		IF C%= 2%			&		\ N%= N% + 1%		IF D%= 2%			&		\ P%= P% + 1%		IF C%= 3%			&		\ P%= P      % + 1%		IF D%= 3%			&	\ NEXT Q%							&	!								&	!	Convert the coded values to convenient forms		&	!								&	\ PRINT #2%,"Of your ";NO.OF.DEVICES%(I%);" DMC11 units, ";	&		M%;" are full duplex, "					&	\ PRINT #2%, TAB(25);N%;" are half duplex and the primary unit"	&	\ PRINT #2%, TAB(25);P%;" are half duplex and secondary units."	&	\ LINE.COUNT%= LINE.COUNT% + 3%					&	\ GO TO 10910							&	!								&	!***************************************************************&7230	!								&	!	DUP devices						&	!	      							&	\ PRINT	#2%,"There are ";SPECIAL1%(I%);" DUP units in your ";	&		"applications environment."				&	\ PRINT	#2%							&	\ PRINT #2%,"There are ";SPECIAL0%(I%);" DUP units in your ";	&		"TRAX/3271 environment."				&	\ PRINT #2%							&	\ PRINT #2%,"There are ";SPECIAL2%(I%);" DUP units in your ";	&		"TRAX/2780 environment."				&	\ LINE.COUNT%= LINE.COUNT% + 5%					&	\ GO TO 10910							&	!								&	!*******************************************************************&7240	!$***************************      ***********************************&	!								&	!								&	!	DZ11 REPORT LINES					&	!								&	!								&	!***************************************************************&	!								&	\ PRINT #2%,"There are ";SPECIAL4%(I%);" DZ11 units in your ";	&			"applications environment."			&	\ PRINT	#2%							&	\ PRINT #2%,"There are ";SPECIAL0%(I%);" DZ11 units in your ";	&		"support environment."					&	\ PRINT #2%							&	\ LINE.COUNT%= LINE.COUNT% + 4%					&	!								&	!	Print # in S.E.						&	!								&	\ GO TO 7      242	IF SPECIAL0%(I%)= 0%				&7241	\ PRINT #2%,"The first S.E. DZ has ";NUM1$(SPECIAL2%(I%));" terminals."&	\ PRINT	#2%							&	\ LINE.COUNT%= LINE.COUNT% + 2%					&	!								&	!	Terminals on DZ #1					&7242	\ GO TO 7243	IF SPECIAL0%(I%) < 2%				&	\ PRINT #2%,"The second S.E. DZ has ";NUM1$(SPECIAL3%(I%));" terminals."&	\ PRINT	#2%							&	\ LINE.COUNT%= LINE.COUNT% + 1%					&	!								&	!	Terminals on DZ #2					&7243	\ GO TO 7245	IF SPECIAL0%(I%)= 0%				&	\ PRINT #2%,"These DZ11 units ";				&	\ PRINT #2%,"d      o not ";		IF SPECIAL1%(I%) = 0%		&	\ PRINT #2%,"have remote terminal (modem) capabilities."	&	\ PRINT #2%							&	\ LINE.COUNT%= LINE.COUNT% + 2%					&	!								&	!	Do they have dial-up lines				&	!								&	\ GO TO 7245	IF SPECIAL1%(I%)= 0%				&	\ PRINT #2%,"These units must be set at ";NUM1$(SPECIAL1%(I%));	&			"baud."						&	\ PRINT #2%							&	\ LINE.COUNT%= LINE.COUNT% + 2%					&	!								&	!	Speed for dial-up lines					&7245	\ GO TO 10910							&7250	!$************************************************      **************&	!                                                               &	!                                                               &	! 	RK06/07 DISK DRIVES					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ M%= 0%							&	\ A%= SPECIAL0%(I%)						&	\ FOR Q%= 1% TO 8%						&	\ M%= M% + 1% 	IF (SPECIAL0%(I%) AND 2%**Q%) <> 0%		&	\       NEXT Q%							&	!								&!	\ PRINT #2%, M%;" of your ";NO.OF.DEVICES%(I%);" RK disk drives ";&!				"are RK07 units."			&!	\ LINE.COUNT%= LINE.COUNT% + 1%					&	\ GO TO 10910							&	!								&	!	Special line for RK type disks				&	!	All mention of RK06 units is to be deleted - 6-1-78	&	!	All the processing code is being left in - just the 	&	!	printing lines are being deleted			&7260	!$**************************************************************&	!                                                                     &	!                                                               &	! 	PRINT CONTROLLER DATA					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ FOR Q%= 1% TO 4%						&		\ GO TO 7265	IF (( Q%= 4%) AND (CPU%<> 70%) AND	&				    (NO.OF.DEVICES%(Q%)= 0%))		&		\ GOSUB 7700		IF LINE.COUNT% > 52%		&		\ PRINT #2%						&		\ PRINT #2%, EDIT$(DEV.N      AME$(Q%),16%);" is ";		&		\ PRINT #2%, "not ";	IF NO.OF.DEVICES%(Q%) = 0%	&		\ PRINT #2%, "present."					&		\ GO TO 7265		IF NO.OF.DEVICES%(Q%) = 0%	&		!							&		!	Is it present					&		!							&		\ UNIT.TYPE$= "RP05/06"	IF SPECIAL0%(Q%)= 1%		&		\ UNIT.TYPE$= "TU16 formatter" IF SPECIAL0%(Q%)= 2%		&		\ UNIT.TYPE$= "RM03"		IF SPECIAL0%(Q%)= 3%		&		!							&		\ PRINT #2%, "This controller has ";NO.OF.DEVICES%(Q%);	&			"units of the ";UNIT.TYPE$;" type."			&		!							&		!	Print the type of device on controller      		&		!							&		\ A$= FN.INT.TO.OCT$(FIRST.CSR%(Q%))			&		\ B$= FN.INT.TO.OCT$(VECTOR%(Q%))			&		\ PRINT #2%,"Its CSR address is ";A$;"."		&		\ PRINT #2%,"Its vector address is ";B$;"."		&		!							&		!	Where is it					&		!							&		\ M%= 0%						&		\ FOR J%= 1% TO 8%					&			\ M%= M% + 1%	IF (SPECIAL1%(Q%) AND 2%**J%) <> 0%&		\ NEXT J%						&		!							&		\ PRINT #2%						&		\ PRINT #2%,M%;" of your drives are RP06 units."	&					IF UNIT.TYPE$= "RP05/06"		&		!							&		!	How many drives are RP06			&		!						      	&		\ T%= SPECIAL2%(Q%) AND 255%				&		\ S%= SWAP%(SPECIAL2%(Q%)) AND 255%			&		\ PRINT #2%, "Formatter #0 has ";T%;" tape drives."	&			IF( NO.OF.DEVICES%(Q%)> 0%) AND (SPECIAL0%(Q%)= 2%)&		\ PRINT #2%, "Formatter #1 has ";S%;" tape drives."	&			IF( NO.OF.DEVICES%(Q%)> 1%) AND (SPECIAL0%(Q%)=2%)&		!							&		!	Formatter & slave drive description		&7265	\ NEXT Q%							&	\ LINE.COUNT%= 100%						&	!								&	!	Special RH70 controller lines				&	!								&	\ RETURN							&7400	!$*****************************      *********************************&	!                                                               &	!                                                               &	! 	Subsidiary routines					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ PRINT #2%,"The CSR address assigned to the primary printer is ";&	\ PRINT #2%,FN.INT.TO.OCT$(SPECIAL0%(I%      ));"."			&	\ PRINT #2%,"The first CSR address for your secondary printers is ";&		IF NO.OF.DEVICES%(I%) > 1%				&	\ PRINT #2%,FN.INT.TO.OCT$(FIRST.CSR%(I%));"."			&		IF NO.OF.DEVICES%(I%) > 1%				&	\ PRINT	#2%							&	\ PRINT #2%,"The vector address assigned to the primary printer is ";&	\ PRINT #2%,FN.INT.TO.OCT$(SPECIAL1%(I%));"."			&	\ PRINT #2%,"The first vector assigned to your secondary printers is ";&		IF NO.OF.DEVICES%(I%) > 1%				&	\ PRINT #2%,FN.INT.TO.OCT$(VECTOR%(I%));"."			&		IF NO.OF.DEVICES%(      I%) > 1%				&	\ PRINT	#2%							&	\ GO TO 7125							&	!								&	!	The first printer is in a different location from the 	&	!	rest							&7700	!$**************************************************************&	!                                                               &	!                                                               &	! 	P R I N T    R E P O R T    H E A D I N G S 		&	!                                                               &	!                                                                     &	!***************************************************************&	!								&	\ PRINT #2%, CHR$(12%)						&	\ PRINT #2%,TAB(20);						&		"TRAX System Configuration Report",DATE$(0%)		&	\ LINE.COUNT%= 4%						&	\ PRINT #2%							&	\ PRINT #2%, SYSTEM.HERALD$					&	\ PRINT #2%							&	\ RETURN							&	!								&	!	Print the heading for the autosize report, reset the line&	!	count and RETURN					&10000	!$**************************************************************&	!								&	!								&	!	S U B       R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&10900	!$**************************************************************&	!                                                               &	!                                                               &	! 	S P E C I A L    R E P O R T    P R O C E S S I N G	&	!                                                               &	!                                                                     &	!***************************************************************&	\ ON FUN.JUMP2%	GOTO	10910,		! Tricky exit		&				7200,		! Printer		&				7220,		! DMC			&				7230,		! DUP			&				7240,		! DZ			&				7250		! RK			&	!								&	!	This routine directs to correct block of report printing&	!	for each device type					&10910	\ RETURN							&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C       A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	ERROR HANDLING						&	!								&	!								&	!***************************************************************&19900	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ ON ERROR GO TO 0						&	!								&20000	!$**************************************************************&	!								   ü  &	!								&	!	TPS LIBRARY SUB- ROUTINES				&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%,0%)						&32767	\ CLOSE #T% FOR T%= 1% TO 12%					&	\ CALL EXITS2(1%,0%)						&	\ ENDü         šr,`kQÁ› 8$        	.TITLE	RMROOT.IDENT	"V1.00";;                         COPYRIGHT (C) 1979 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.;;;; MODULE:	RMROOT - TRAX TST DEBUG;; VERSION:	V01.00;; AUTHOR:	MIKE GARRY;		LEE BARTON;; DATE:		19-FEB-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		--      ---------;	1.00C01	19-FEB-79	LBB		SPR 21184 -;						MAKE "<NONE>" DEFAULT ANSWER TO;						"WORKSPACE FILE" QUERY;;	.MCALL	RAB$B,RAB$E,FAB$B,FAB$E;;	LOGICAL ASSIGNMENTS;LUN4 = 4LUN5 = 5LUN6 = 6.PAGE;;	STRUCTURE OF THE FILE TABLE;F.LNAM == 0		;LOGICAL FILE NAMEF.PNAM == 6		;ADDRESS OF PHYSICAL FILE STRINGF.PSZE == 10		;SIZE OF FILE STRINGF.ID   == 12		;ID OF BUFFER REGIONF.RSZE == 14		;SIZE OF BUFFER REGIONF.IFI == 16		;IFI INDICATOR FOR THE FILEFTBSZ == 20		;SIZE OF A TABLE ENTRY;;	CHANNEL TABLE ENTRY;L.NUM       == 0		;CHANNEL NUMBERL.ISI == 2		;INTERNAL STREAM IDENTIFIERL.FTB == 4		;FILE TABLE ENTRYCHNLSZ == 6;;	ALLOCATE THE POOL SPACE FOR RMS;	.MCALL	POOL$B,POOL$E;	POOL$B	P$FAB	15	P$RAB	12	P$BDB	50.	P$IDX	25.	P$RABX	25,150.,5	P$BUF	4096.	POOL$E;;	SPECIFY TYPE OF RMS ACCESS;	.MCALL	ORG$;	ORG$	SEQ,<CRE,PUT,GET,UPD>	ORG$	IDX,<CRE,PUT,GET,FIN,UPD,DEL>	ORG$	REL,<CRE,PUT,GET,UPD,DEL,FIN>;;	RABS AND FABS;NOFLS = 10.NOCHNS = 20.;	.EVEN$LDFAB::	FAB$B	F$LCH	LUN4	F$FAC	FB$PUT	FAB$EFABSZE == .-$LDFAB;$MFFAB::	FAB$B	F$DNA	DFN      AM		;DEFAULT NAME STRING	F$DNS	DFSZE		;DEFAULT NAME SIZE	F$LCH	LUN5	FAB$E;$WFFAB::	FAB$B	F$DNA	DFNAM	F$DNS	DFSZE	F$LCH	LUN6	FAB$E;$LDRAB::	RAB$B	R$FAB	$LDFAB	R$RAC	RB$SEQ	R$RBF	$LDBFF	R$USZ	$LDBSZ	RAB$E;RABSZE == .-$LDRAB;$MFRAB::	RAB$B	R$FAB	$MFFAB	R$RAC	RB$SEQ	R$USZ	256.	RAB$E;$WFRAB::	RAB$B	R$FAB	$WFFAB	R$RAC	RB$SEQ	R$USZ	256.	RAB$E;;	BUFFER AREAS AND SCRATCH STORAGE;$LDBFF::.BLKW	256.		;BUFFER FOR LOGGING FILE$LDBSZ = .-$LDBFF;$LDSTR::.BLKB	33.;$MFSTR::.BLKB	33.;$WFSTR::.BLKB	33.;$NOWF::	.BYTE	0		;"NO W   ”  ORKSPACE FILE"			;LBB001;	.EVEN$FLETF::.WORD	0		;CURRENT FILE TABLE ENTRY POINTER;$FLETB::.BLKB	NOFLS*FTBSZ$FLETE==.;	.EVENSTDPRM::.BLKW	4		;STANDARD LINE PARAMETER LIST;$FLBUF::.BLKB	<NOFLS+1>*33.	.EVEN;$FLPTR::.WORD	0		;FIRST FREE BYTE IN $FLBUF;	.EVEN$LGNAM::.BLKW	6		;BUFFER FOR A LOGICAL FILE NAME;DFNAM:	.ASCII	/SY:.TXT/DFSZE = .-DFNAM;	.EVENCHNLST::.BLKB	<NOCHNS*CHNLSZ>;CHNLEN::.WORD	CHNLST	.END ”         (ŸkQÁ› 8$-      .IDENT	"V1.01A";;                         COPYRIGHT (C) 1979 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 INFORM   Ú  ATION 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.;;;; MODULE:	XXXXXX;; VERSION:	V01.01A;; AUTHOR:	AAA;; DATE:		DD-MMM-YY;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;;Ú         qÛrkQÁ› 8$        	.TITLE	RCPROC - RECOVR PROCESSING MODULE	.IDENT	"V1.01A";;                         COPYRIGHT (C) 1979 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  SOFTWA      RE  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.;;;; MODULE:	RCPROC;; VERSION:	V01.01A;; AUTHOR:	TONY SUKIENNIK;		LEE BARTON;; DATE:		16-MAR-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------      	----		------		-----------;	V1.01A	16-MAR-79	LBB		LBB001 - START OF RECER COMMAND;						LINE HAS CHANGED;;	.MCALL	DIR$,$OPEN,$CONNECT,$DISCONNECT,$CLOSE,$STORE,$RETURN	.MCALL	$SET,$FIND,$DELETE,$PUT,$UPDATE,$FETCH,$COMPARECURFIL:	.WORD	0		; CURRENT FILE LUN TABLE POINTERFILBAS:	.WORD	0		; FILE TABLE BASELUNNUM:	.WORD	0		; LUN NUMBER ON WHICH TO OPEN FILEPROCES::	CLR	R0		; GET A SLOT RECORD	MOV	#"RO,ERRTYP	; RECOVR NORMAL IO BEING REQUESTED	CALL	JUREAD	BCC	10$		; READ THE NEXT JOURNAL RECORD AND GET OUT				;       IF UNSUCCESSFUL	JMP	DONE		; STATUS WILL BE SET UP WITH THE PROPER ERROR				; AT THIS POINT.  IT COULD BE SIMPLY EOF.10$:	CALL	SELECT		; CHECK THIS RECORD AGAINST THE SELECTION				; CRITERION (TIME AND TP)	BCS	PROCES		; GET THE NEXT SLOT, IF NOT SELECTED.15$:	CALL	SETFIL		; SEE IF THE PRESENT RECORD IS TO BE PROCESSED				; AND IF IT IS SET UP THE FILE TO BE OPERATED ON	BCS	20$		; NOTHING TO BE DONE ON THIS FILE.	MOV	CURFIL,R3	; POINT TO CURRENT FILE	CALL	OPERAT		; DO THE REQUIRED OPERATIONS ON THE FILE.20$:      	CALL	GETSYS		; SET UP THE NEXT DATA RECORD IN THE SLOT	BCS	PROCES		; IF THERE IS NONE, GET THE NEXT SLOT	BR	15$		; SEE IF THIS RECORD IS TO BE PROCESSEDDONE:	RETURNSELECT:	MOV	#LASTIM,R3	; POINT TO THE TIME OF THE LAST SLOT	MOV	#YEAR,R4	; POINT TO THE YEAR IN THE SLOT	CMP	(R4)+,(R3)+	; YEAR OK?	BLT	5$		; THIS IS AN OLD JOURNAL TAPE NOW	BHI	10$		; HIGHER THAN MEANS OK	CMP	(R4)+,(R3)+	; MONTH OK?	BLT	5$		; DITTO AS IN YEAR	BHI	10$		; HIGHER THAN MEANS OK	MOV	#DAY,R4		; POINT TO THE DAY IN THE SLOT	CMP	(R4)+,      (R3)+	; DAY OK?	BLT	5$		; DITTO AS IN MONTH	BHI	10$		; HIGHER THAN MEANS OK	CMP	(R4)+,(R3)+	; HOUR OK?	BLT	5$		; DITTO AS IN DAY	BHI	10$		; HIGHER THAN MEANS OK	CMP	(R4)+,(R3)+	; MINUTE OK?	BLT	5$		; DITTO AS IN HOUR	BHI	10$		; HIGHER THAN MEANS OK	CMP	(R4)+,(R3)+	; SECOND OK?	BLT	5$		; DITTO AS IN MINUTE	TST	RETRY		; DID WE HAVE DIFFICULTY READING?	BEQ	10$		; NO EVERYTHING IS NORMAL;;	WHEN WE FALL THROUGH TO HERE, WE HAVE FOUND A GAP IN THE TAPE;	WE MUST NOTIFY THE USER OF THIS FACT AND LET HIM/HER MAKE;	A       DECISION TO GO ON OR NOT.;	MOV	#"RG,ERRTYP	; RECOVR FOUND GAP	MOV	#RECER,R0	; SPAWN RECOVR	MOV	#RECNAM,R1	; POINT TO THE CONTEXT			;LBB001	MOV	#RECERL,R2	; LENGTH OF CONTEXT BLOCK	CALL	ENCODE		; CHANGE THE TERMINATORS	CMP	#EX$SUC,R2	; CONTINUE?	BEQ	10$		; YES	TST	(SP)+		; CLEAR STACK FROM CALL	MOV	#19.,STATUS	; RECOVR TERMINATED AT USER REQUEST	SEC	RETURN			; GET OUT, REPORT WRITING IS ALL THAT'S LEFT5$:	TST	(SP)+		; CLEAR STACK FROM CALL	MOV	#18.,STATUS	; UNUSUAL END OF FILE ON DEVICE	SEC	RETURN			; TO MA      IN LINE AS WE HAVE FINISHED THIS TAPE10$:	CLR	TABMAP		; SET UP TO MAP BEGINNING OF TABLES	DIR$	#MAPTAB		; MAP TABLES AT THE START	MOV	NUMPRO,R2	; SEE HOW MANY PROCESSORS WERE SELECTED	MOV	#NUMPRO,R5	; SET UP TO COMPARE PROCESSOR NAMES15$:	TST	(R5)+		; POINT TO PROCESSOR NAME	MOV	#PRONAM,R4	; POINT TO PROCESSOR NAME IN SLOT	CMP	(R4)+,(R5)+	; MATCH?	BNE	20$		; NO	CMP	(R4)+,(R5)+	; MATCH?	BNE	20$		; NO	CMP	(R4)+,(R5)+	; MATCH?	BEQ	30$		; YES, THIS WAS A SELECTED PROCESSOR20$:	SOB	R2,15$		; TRY NEXT TABLE ENTRY      	BR	100$		; NO MATCH30$:	MOV	NUMPRO,R4	; GET THE NUMBER OF PROCESSORS SELECTED	SUB	R2,R4		; GET THE INDEX OF THE PROCESSOR 	MOV	R4,PRONUM	; SAVE THE PROCESSOR NUMBER	ASH	#4,R4		; MULTIPLY BY 16	ADD	#4,R4		; OFFSET TO FILE TABLES	MOV	R4,TABMAP	; SET UP TO MAP TABLES	MOV	#TABLE,R5	; POINT TO ENDING TIME	MOV	#YEAR,R4				; POINT TO YEAR AND MONTH IN SLOT	MOV	#LASTIM,R3	; POINT TO THE CURRENT RECORD'S TIME	CMP	(R5)+,(R4)	; COMPARE ENDING TIME TO SLOT TIME	BLO	110$		; WE ARE DONE	MOV	(R4)+,(R3)+	; SAVE THE TIME F      OR LATER CONSISTENCY CHECKS	CMP	(R5)+,(R4)	; COMPARE MONTH	BLO	110$		; WE ARE DONE	MOV	(R4)+,(R3)+	; SAVE FOR CONSISTENCY CHECKS	MOV	#DAY,R4		; POINT TO DAY,HOUR,MINUTE	CMP	(R5)+,(R4)	; COMPARE DAY	BLO	110$		; WE ARE DONE	MOV	(R4)+,(R3)+	; SAVE FOR CONSISTENCY CHECKS	CMP	(R5)+,(R4)	; COMPARE HOUR	BLO	110$		; WE ARE DONE	MOV	(R4)+,(R3)+	; SAVE FOR CONSISTENCY CHECKS	CMP	(R5)+,(R4)	; COMPARE MINUTE	BLO	110$		; WE ARE DONE	MOV	(R4)+,(R3)+	; SAVE FOR CONSISTENCY CHECKS	MOV	(R4)+,(R3)+	; SAVE THE SECONDS TOO	MOV      	BASFIL,FILBAS	; SET UP THE FILE TABLE BASE	CALL	SETSYS		; SET UP THE SYSTEM WORKSPACE	BCS	100$		; NO STAGED DATA RECORDS IN THE WORKSPACE	DIR$	#MAPTAB		; MAP TABLES AT FILE TABLE FOR THIS PROCESSOR	CLC			; SUCCESS	RETURN100$:	SEC	RETURN110$:	MOV	#20.,STATUS		; DATE/TIME DELIMETER REACHED	TST	(SP)+		; CLEAR STACK FROM CALL	JMP	DONE		; GET OUT OF THE PROCESSING MODULESETFIL:	CMPB	#VS.INS,V.TYP(R5)				; INSERT?	BEQ	10$		; YES	CMPB	#VS.UPD,V.TYP(R5)				; UPDATE?	BEQ	10$		; YES	CMPB	#VS.DEL,V.TYP(R5)				; DELET      E?	BEQ	10$		; YES	JMP	100$		; WE ARE NOT INTERESTED IN IT10$:	MOV	V.RFTE(R5),R1	; GET THE FILE TABLE ENTRY POINTER	SUB	FILBAS,R1	; ADJUST FOR THE FILE TABLE BASE	CLR	R0		; SET UP FOR DIVIDE	DIV	#F.SIZE,R0	; ADJUST FOR LENGTH OF ENTRIES IN FILE TABLE	MOV	R0,FILNUM	; SAVE THE FILE NUMBER	MUL	#20,R0		; FIND ENTRY IN SELECTION FILE TABLE	ADD	#TABLE,R1	; POINT R1 DIRECTLY TO THE FILE ENTRY	MOV	R1,R0		; PUT IT IN R0	TST	(R0)		; WAS THIS FILE SELECTED FOR RECOVERY?	BNE	15$		; YES	JMP	100$		; NO;;;	SET UP THE FILE       FOR PROCESSING;;15$:	MOV	#LUNTAB,R1	; POINT TO THE LUN TABLE	TST	FIL.LU(R0)	; HAS THE FILE BEEN OPENED?	BEQ	20$		; NO	$DISCONNECT	#RAB	; DISCONNECT THE CURRENT STREAM	CLR	@CURFIL		; NO CURRENTLY CONNECTED FILE ANYMORE	MOV	FIL.LU(R0),LUNNUM	; LUN NUMBER ON WHICH FILE IS OPEN	JMP	50$		; GO SET IT UP20$:	CMP	#OPEN,OPENED	; MAXIMUM NUMBER OF FILES OPENED?	BLOS	25$		; YES	TST	OPENED		; ANY FILES OPENED?	BEQ	30$		; NO	$DISCONNECT	#RAB	; DISCONNECT THE CURRENT STREAM	BR	30$		; AND THEN OPEN THE FILE;;;	USE THE LEA      ST RECENTLY USED ALGORITHM TO DEACCESS A FILE;	SO THIS ONE CAN BE OPENED;;25$:	$DISCONNECT	#RAB	; DISCONNECT THE CURRENT FILE	CLR	@CURFIL		; THERE IS NO LONGER A CURRENT FILE	CLR	CURFIL		; USE CURFIL TO LOCATE THE LEAST				; RECENTLY USED FILE	MOV	OPENED,R2	; SET UP TO STEP THROUGH THE LUN TABLE500$:	CMP	CURFIL,LUT.AC(R1)	; TEST THE RECENTLY OPENED COUNT, THE HIGHER				; THE NUMBER, THE LESS RECENTLY USED IS THE FILE	BHIS	510$		; LESS OR SAME HAS ALREADY BEEN FOUND	MOV	LUT.AC(R1),CURFIL	; THIS IS THE PRESEN      T HIGHEST	MOV	R1,R3		; SAVE THE POINTER	MOV	#OPEN+3,LUNNUM	SUB	R2,LUNNUM	; THIS IS THE LUN NUMBER WE WILL FREE UP510$:	ADD	#LUT.SZ,R1	; POINT TO NEXT LUN TABLE ENTRY	SOB	R2,500$		; CHECK ALL LUN TABLE ENTRIES	MOV	#FAB,R1		; POINT TO THE FAB	$STORE	LUT.IF(R3),IFI,R1	; STORE THE IFI 	BEQ	40$		; IF IT WASN'T OPEN, DON'T CLOSE IT	$CLOSE	#FAB		; CLOSE THE FILE	CLR	LUT.IF(R3)	; NO IFI FOR THIS LUN ANYMORE	MOV	TABMAP,-(SP)	; SAVE OUR PRESENT TABLE MAPPING CONTEXT	CLR	TABMAP		; SET UP TO MAP THE TABLES	MOVB	LUT.PR(      R3),R2	; THE NUMBER OF THE PROCESSOR	ASH	#4,R2		; NUMBER OF BLOCKS INTO TABLE	ADD	#4,R2		; PLUS TABLE HEADERS	MOV	R2,TABMAP	; SET UP TO MAP THE FILE TABLE FOR THE PROCESSOR	DIR$	#MAPTAB		; MAP THE TABLES FOR THE PROCESSOR OF THE CLOSED				; FILE	MOVB	LUT.FL(R3),R2	; FILE NUMBER	ASH	#4,R2		; LENGTH OF EACH FILE TABLE ENTRY	ADD	#TABLE,R2	; TABLE MAPPED AT 'TABLE'	CLR	FIL.LU(R2)	; ASSIGNED TO NO LUN ANYMORE	CLR	FIL.PO(R2)	CLR	FIL.SZ(R2)	; CLEAR OUT ANY KEY INFORMATION	MOV	(SP)+,TABMAP	; GET OLD TABLE MAPPING C      ONTEXT	DIR$	#MAPTAB		; MAP THE TABLES FOR THE PROCESSOR OF THE FILE				; TO BE OPENED	BR	40$		; WE ARE SET UP TO OPEN THE NEW FILE ON LUNNUM30$:	MOV	OPENED,R2	; NUMBER OF FILES CURRENTLY OPENED	MUL	#LUT.SZ,R2	; OFFSET TO LUN TABLE ENTRY	ADD	#LUNTAB,R3	; POINT INTO THE LUN TABLE	MOV	R3,R2		; USE R3 TO POINT TO THE LUN TABLE ENTRY	INC	OPENED		; NUMBER OF FILES OPENED PLUS ONE	MOV	OPENED,LUNNUM	ADD	#2,LUNNUM	; LUN NUMBER WE ARE USING40$:	MOV	#NAM,R1		; POINT TO THE NAM BLOCK	MOV	(R0)+,O$DVI(R1)	; DEVICE	MOV	(R      0)+,O$DVI+2(R1)	; UNIT	MOV	(R0)+,O$FID(R1)	MOV	(R0)+,O$FID+2(R1)	MOV	(R0)+,O$FID+4(R1); FILE ID	MOV	#FAB,R1		; POINT TO THE FILE ACCESS BLOCK	MOVB	LUNNUM,O$LCH(R1); LUN TO USE FOR THE OPEN	$OPEN	#FAB,#OPNERR	; OPEN THE FILE				; IF ERROR, WE DELSELECT THE FILE AND GET OUT	MOV	O$IFI(R1),LUT.IF(R3)	; SAVE THE IFI	MOVB	FILNUM,LUT.FL(R3)	; FILE NUMBER WITHIN PROCESSOR	MOVB	PRONUM,LUT.PR(R3)	; PROCESSOR NUMBER WITHIN SYSTEM	MOVB	O$ORG(R1),LUT.OR(R3)	; FILE ORGANIZATION	MOV	LUNNUM,(R0)+	; SAVE THE LUN NUMBER	MOV	      #XAB,R1		; POINT TO THE EXTENDED ATTRIBUTES BLOCK	MOV	O$POS(R1),(R0)+	; SAVE THE KEY POSITION	MOV	O$SIZ(R1),(R0)+	; SAVE THE KEY SIZE	MOV	#LUNTAB,R1	; POINT TO THE LUN TABLE	SUB	#20,R0		; POINT BACK TO THE FILE TABLE ENTRY50$:	MOV	LUNNUM,R2	; LUN NUMBER WE WISH TO CONNECCT	SUB	#3,R2		; ADJUST FOR STARTING LUN NUMBER	MUL	#LUT.SZ,R2	; OFFSET TO THE PROPER ENTRY	MOV	R3,R2		; GET THE RESULT INTO R2	ADD	R1,R2		; LUN TABLE BASE	COM	(R2)		; THIS IS THE CURRENT FILE	MOV	R2,CURFIL	; SO WE CAN DISCONNECT IT LATER	MOV      	#FAB,R3		; POINT TO THE FAB	MOV	LUT.IF(R2),O$IFI(R3)	; LETS ACCESS THE PROPER FILE	CLR	LUT.AC(R2)	; INITIALIZE THE USAGE COUNT	$CONNECT	#RAB	; GET AN ACCESS STREAM GOING	MOV	OPENED,R2	; SET UP TO STEP THROUGH THE TABLE60$:	INC	LUT.AC(R1)	; UPDATE THE ACCESS COUNT FOR EACH FILE	ADD	#LUT.SZ,R1	; POINT TO THE NEXT ENTRY	SOB	R2,60$		; FOR ALL PRESENTLY OPEN FILES	CLC			; READY TO ACCESS THIS FILE	RETURN100$:SETOUT:	SEC	RETURN			; FILE NOT SELECTED OR OPERATION NOT MEANINGFULOPERAT:	MOV	#RAB,R1		; POINT TO THE       RAB	TST	LUT.OR(R3)	; ORGANIZATION SEQUENTIAL	BNE	10$		; NO	JMP	SEQ		; YES10$:	CMP	#FB$IDX,LUT.OR(R3)	; ORGANIZATION INDEXED?	BNE	20$		; NO	JMP	IDX		; YES20$:	CMP	#FB$REL,LUT.OR(R3)	; ORGANIZATION RELATIVE?	BEQ	REL		; YES	JMP	OUT		; MEANINGLESS RECORDREL:	CMPB	#VS.INS,V.TYP(R5)	; INSERT(PUT) OPERATION?	BEQ	RELPUT		; YES	CMPB	#VS.UPD,V.TYP(R5)	; UPDATE OPERATION?	BEQ	RELUPD		; YESRELDEL:	$STORE	#RB$RFA,RAC,R1	; RFA ACCESS	$STORE	V.RRFA(R5),RFA,R1	$FIND	#RAB,#RMSERR	; FIND THE RECORD	$DELETE	#RAB,#RMSERR	; DEL      ETE THE RECORD	JMP	OUT		; DONERELPUT:	$STORE	#RB$KEY,RAC,R1	; KEY ACCESS	MOV	#V.RRFA,O$KBF(R1)	ADD	R5,O$KBF(R1)	; POINT TO THE KEY	MOVB	#4,O$KSZ(R1)	; KEY SIZE FOR RELATIVE FILES	MOV	V.RSIZ(R5),O$RSZ(R1)	; RECORD SIZE	MOV	#V.RSIZ+2,O$RBF(R1)	ADD	R5,O$RBF(R1)	; RECORD BUFFER	$PUT	#RAB,#RMSERR	; PUT THE RECORD OUT	JMP	OUT		; DONERELUPD:	$STORE	#RB$KEY,RAC,R1	; KEY ACCESS	$STORE	V.RRFA(R5),RFA,R1	; STORE THE RFA	$FIND	#RAB,#RMSERR	; FIND THE PROPER RECORD	MOV	V.RSIZ(R5),O$RSZ(R1)	; RECORD SIZE	MOV	#V.RSIZ+2,O$      RBF(R1)	ADD	R5,O$RBF(R1)	; BUFFER ADDRESS	$UPDATE	#RAB,#RMSERR	; UPDATE THE RECORD	JMP	OUT		; DONEIDX:	CMPB	#VS.INS,V.TYP(R5)	; INSERT(PUT) OPERATION?	BEQ	IDXPUT		; YES	CMPB	#VS.UPD,V.TYP(R5)	; UPDATE OPERATION	BEQ	IDXUPD		; YESIDXDEL:	$STORE	#RB$KEY,RAC,R1	; KEY ACCESS	MOV	FIL.PO(R0),O$KBF(R1)	ADD	#V.RSIZ+2,O$KBF(R1)	ADD	R4,O$KBF(R1)	; BUFFER ADDRESS	MOVB	FIL.SZ(R0),O$KSZ(R1)	; KEY SIZE	$FIND	#RAB,#RMSERR	$DELETE	#RAB,#RMSERR	; FIND THE RECORD AND DELETE IT	JMP	OUT		; DONEIDXPUT:	$STORE	#RB$KEY,RAC,R1	; KE      Y ACCESS	MOV	#V.RSIZ+2,O$RBF(R1)	ADD	R5,O$RBF(R1)	; BUFFER ADDRESS	MOV	V.RSIZ(R5),O$RSZ(R1)	; RECORD SIZE	$PUT	#RAB,#RMSERR	JMP	OUT		; PUT THE RECORD AND GET OUTIDXUPD:	$STORE	#RB$KEY,RAC,R1	; KEY ACCESS	MOV	FIL.PO(R0),O$KBF(R1)	ADD	#V.RSIZ+2,O$KBF(R1)	ADD	R5,O$KBF(R1)	; KEY BUFFER	MOVB	FIL.SZ(R0),O$KSZ(R1)	; KEY SIZE	$FIND	#RAB,#RMSERR		; FIND THE RECORD	MOV	#V.RSIZ+2,O$RBF(R1)	ADD	R5,O$RBF(R1)	; RECORD BUFFER	MOV	V.RSIZ(R5),O$RSZ(R1)	; RECORD SIZE	$UPDATE	#RAB,#RMSERR	; DO THE UPDATE	JMP	OUT		; DONESEQ:	C      MPB	#VS.INS,V.TYP(R5)	; INSERT(PUT) OPERATION?	BEQ	SEQPUT		; YESSEQUPD:	$STORE	#RB$RFA,RAC,R1	; RFA ACCESS	$STORE	V.RRFA(R5),RFA,R1	; STORE THE RFA	$FIND	#RAB,#RMSERR	; FIND THE RECORD	MOV	#V.RSIZ+2,O$RBF(R1)	ADD	R5,O$RBF(R1)	; RECORD BUFFER	MOV	V.RSIZ(R5),O$RSZ(R1)	; RECORD SIZE	$UPDATE	#RAB,#RMSERR	; DO THE UPDATE	JMP	OUT		; DONESEQPUT:	$STORE	#RB$SEQ,RAC,R1	; SEQUENTIAL ACCESS	MOV	V.RSIZ(R5),O$RSZ(R1)	; RECORD SIZE	MOV	#V.RSIZ+2,O$RBF(R1)	ADD	R5,O$RBF(R1)	; RECORD BUFFER ADDRESS	$PUT	#RAB,#RMSERR	; PUT T      HE RECORD OUT (CONNECT POSITIONED TO EOF)	JMP	OUT		; DONEOUT:	CLC	RETURNRMSERR:	MOV	#"RR,ERRTYP	; ERROR OCCURED DURING RMS RECORD PROCESSING	MOV	#ERRRET,22(SP)	; WE WANT TO CLEAN UP AT ERRRET	BR	COMERR		; COMMON CODEOPNERR:	MOV	#"RF,ERRTYP	; ERROR OCCURED DURING RMS OPEN ON SOME FILE	MOV	#OPNRET,22(SP)	; WE WANT TO CLEAN UP AT OPNRETCOMERR:	MOV	2(R5),R0	; POINT TO THE PROPER CONTROL BLOCK	$FETCH	IOSTAT,STS,R0	$FETCH	IOSTAT+2,STV,R0	; PUT THE RMS ERROR INTO THE IO STATUS BLOCK	MOV	#RECER,R0	; POINT TO NAME O      F THE ERROR PROCESSING TASK	MOV	#RECNAM,R1	; COMMAND STRING			;LBB001	MOV	#RECERL,R2	; LENGTH OF COMMAND STRING	CALL	ENCODE		; CHANGE THE TERMINATORS AND CALL THE REPORTER	$RETURNERRRET:	ADD	#6,SP		; DO WHAT RMS DOES	MOV	(SP)+,R5	; DO WHAT RMS DOES	BR	OUT		; WE ARE DONEOPNRET:	ADD	#6,SP		; DO WHAT RMS DOES	MOV	(SP)+,R5	; DO WHAT RMS DOES	MOV	#77777,LUT.AC(R3); IF THE OPEN FAILED WE WANT TO MAKE THIS A				; LEAST RECENTLY USED LUN SO IT WILL BE USED 				; WHEN A FREE LUN IS NEEDED.	JMP	SETOUT		; RETURN AND I   >   NDICATE THAT NO OPERATION SHOULD				; BE DONE ON THE FILE	.END>          ÚAlkQÁ› 8$        	.TITLE JUREAD - READ A SLOT FROM THE JOURNAL FILE	.IDENT	"V1.01A";;                         COPYRIGHT (C) 1979 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  TH      E  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.;;;; MODULE:	JUREAD;; VERSION:	V01.01A;; AUTHOR:	TONY SUKIENNIK;		LEE BARTON;; DATE:		16-MAR-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATIO      N;	------	----		------		-----------;	V1.01A	16-MAR-79	LBB		LBB001 - START OF RECER COMMAND;						STRING HAS CHANGED;;;;	THIS ROUTINE WILL READ A SLOT FROM THE JOURNAL FILE AND PLACE IT;	IN THE REGION MAPPED AT 'SLOT'.;;	INPUTS:;;		R0	=	0	RETURN ONLY SLOT RECORD;		R0	=	1	RETURN ONLY LOG RECORD;		R0	=	-1	RETURN ANY TYPE OF RECORD;;	OUTPUTS:;;		CARRY SET IF NO RECORD OF THE DESIRED TYPE APPEARED ON THE TAPE;		CARRY CLEAR AND BEGINNING OF RECORD MAPPED AT 'SLOT';;;	LOCAL SYMBOLS;SLTREC	=	2		; INDICATOR FOR A SL      OT RECORDSCAN:	.WORD	0		; COUNTER FOR DISK SCAN	.MCALL	QIOW$,DIR$QIOW:	QIOW$	IO.RVB,2,1,,IOSTAT,,<SLOT,8192.,,,,>JUREAD::	CLR	SCAN		; NO SCAN DONE AT THIS POINT	CLR	RETRY		; CLEAR THE RETRY COUNT	MOV	R0,-(SP)	; SAVE RECORD TYPE INDICATORREDISK:	MOVB	#IS.SUC,ERRHIS	MOVB	#IS.SUC,ERRHIS+1; ERROR HISTORY IS INITIALIALLY ALL SUCCESS	MOV	BLOCKL,LBLOCK	MOV	BLOCKH,HBLOCK	; SAVE THE STARTING DISK BLOCK NUMBERREREAD:	CLR	SLTMAP	CLR	SLMPLN		; MAP THE DEFAULT SIZE	DIR$	#MAPSLT		; MAP TO BEGINNING OF TABLES REGION	MOV	#      177777,REMAIN	; THIS WILL INDICATE AN ERROR ON THE INIT. READ	MOV	#QIOW,R0	; POINT TO THE DPB	MOV	READTP,Q.IOFN(R0)	; DO THE PROPER TYPE OF READ 	TST	DISK		; IS THIS A DISK?	BEQ	FIVE		; NO	MOV	#1000,Q.IOPL+2(R0)	; READ ONLY THE BEGINNING OF THE SLOTDREAD:	MOV	BLOCKH,Q.IOPL+6(R0)	MOV	BLOCKL,Q.IOPL+10(R0)	; PUT IN THE BLOCK NUMBER TO READFIVE:5$:	DIR$	#QIOW		; DO THE READ FROM JOURNAL	CMPB	#IS.SUC,IOSTAT	; READ SUCCESSFUL	BEQ	10$		; YES	JMP	ERREAD		; NO10$:	CMP	#"TR,VALSTR	; SEE IF THIS IS THE FIRST RECORD IN       A SLOT	BNE	15$		; IT ISN'T	CMP	#"AX,VALSTR+2	; CONTINUE THE VALIDATION	BEQ	20$		; IT IS THE FIRST RECORD IN A SLOT15$:	CMP	#1000,SCAN	; HAVE WE SCANNED ENOUGH	BNE	17$		; NOT YET	JMP	ERROUT		; WE ARE DONE WITH THIS DISK17$:	ADD	#1,BLOCKL	; STEP UP A BLOCK UNTIL WE FIND A SLOT	ADC	BLOCKH		; HIGH BITS TOO IF NECESSARY	INC	SCAN		; INC THE TIME OUT COUNT	BR	REDISK		; TRY AGAIN20$:	TST	DISK		; IS IT DISK?	BEQ	30$		; NO	CMP	#177777,REMAIN	; SMALL READ?	BNE	30$		; NO	MOV	SLOT+M.BSZ,REMAIN	; GET THE LENGTH OF THE S      LOT	CMP	#8192.,REMAIN	; TEST THE LENGTH OF THE SLOT	BLOS	25$		; IF SLOT IS 8K BYTES OR MORE	MOV	REMAIN,Q.IOPL+2(R0)	; PUT LENGTH TO READ IN	BR	DREAD		; READ THE RIGHT LENGTH25$:	MOV	#8192.,Q.IOPL+2(R0)	; READ 8K BYTES	BR	DREAD		; DO IT30$:	MOV	SLOT+M.BSZ,REMAIN	; GET THE LENGTH OF THE SLOT	MOV	REMAIN,SLTLEN		; SAVE ITCONTIN:	SUB	#8192.,REMAIN	; SEE IF MORE SHOULD BE READ	BLE	DONE		; NO MORE TO READ	ADD	#16.,BLOCKL	; INCREMENT THE BLOCK FOR DISK	ADC	BLOCKH		; IF HIGH BITS AFFECTED	ADD	#128.,SLTMAP	; MAP THE       NEXT 4K OF THE SLOT REGION	TST	(SP)		; SEE WHAT TYPE OF RECORD IS DESIRED	BEQ	5$		; THE FULL RECORD IS DESIRED	MOV	#1,SLTMAP	; PUT THE EXTRANEOUS DATA 1 BLOCK UP IN HIS/HER				; REGION5$:	CLR	SLMPLN		; MAP THE DEFAULT SIZE	DIR$	#MAPSLT		; MAP THE SLOT REGION AT THE NEXT 4K	TST	DISK		; DISK?	BEQ	10$		; NO	MOV	REMAIN,Q.IOPL(R0)	; READ THE REMAINING SLOT	CMP	#8192.,REMAIN	; GREATER THAN 8K BYTES LEFT	BHI	7$		; NO	MOV	#8192.,Q.IOPL(R0)	; READ 8K BYTES7$:	MOV	BLOCKH,Q.IOPL+6(R0)	MOV	BLOCKL,Q.IOPL+10(R0)	; MOV TH      E BLOCK NUMBER IN10$:	DIR$	#QIOW		; DO THE READ	CMPB	#IS.SUC,IOSTAT	; READ SUCCESSFUL?	BEQ	CONTIN		; YES	JMP	ERREAD		; NODONE:	TST	DISK		; DISK?	BEQ	30$		; NO	ADD	#8192.,REMAIN	; WE WILL FIND OUT HOW MANY DISK BLOCKS WE				; READ.	MOV	REMAIN,R1	SWAB	R1	BIC	#177001,R1	; ISOLATE THE NUMBER OF BLOCKS READ	ROR	R1		; ROLL RIGHT TO GET THE RIGHT NUMBER OF BLOCKS	ADD	R1,BLOCKL	ADC	BLOCKH		; ADD THE NUMBER OF BLOCKS READ	BIC	#177000,REMAIN	BEQ	30$		; PARTIAL BLOCK READ IN	ADD	#1,BLOCKL	; PARTIAL BLOCK READ	ADC	BLOC      KH		; HIGH BITS AFFECTED MAYBE30$:	MOV	(SP),R0		; RESTORE RECORD TYPE INDICATOR	CLR	SLTMAP		; MAP THE SLOT AT THE BEGINNING	CLR	SLMPLN		; MAP THE DEFAULT SIZE	DIR$	#MAPSLT		; MAP IT	CMP	SEQUEN,SEQNUM	; DOES THE SEQUENCE NUMBER MATCH?	BLO	SEQERR		; IF NOT EQUAL IT IS TOO HIGH, ERROR PROCESSING				; REQUIRED.	BEQ	35$		; RIGHT ONE	CMP	SEQNUM,LSTSEQ	; IS THE LOW SEQUENCE NUMBER THE SAME AS THE				; LAST RECORD READ	BEQ	ERROUT		; IF IT IS, WE ARE DONE WITH THE TAPE	JMP	REREAD		; TOO LOW TRY FOR NEXT ONE35$:	INC	      SEQUEN		; NEXT SEQUENCE NUMBER SHOULD BE....	MOV	SEQNUM,LSTSEQ	; SAVE THE SUCCESSFULLY READ SEQUENCE NUMBER	TST	R0		; WHAT TYPE OF RECORD DO THEY WANT?	BLT	OK		; ANY TYPE OF RECORD WILL DO	BNE	40$		; LOOKING FOR A LOG RECORD	CMP	#SLTREC,SLOT	; IS THIS A SLOT RECORD?	BEQ	OK		; YES, AND THAT SATISFIES THE REQUEST	JMP	REREAD		; TRY AGAIN40$:	CMP	#SLTREC,SLOT	; IS THIS A SLOT RECORD?	BNE	OK		; NO, IT IS OK	JMP	REREAD		; TRY AGAINOK:	CLCOUT:	DEC	(SP)+		; RESTORE STACK POINTER WITHOUT AFFECTING 				; CARRY CONDIT      ION CODE.	RETURN;;	INTERFACE TO THE ERROR PROCESSING TASK;ERREAD:	MOV	RETRY,R0	; RETRY COUNT	MOVB	IOSTAT,ERRHIS(R0)				; SET UP AN ERROR HISTORY	MOV	#RECER,R0	; POINT TO TASK NAME TO SPAWN	MOV	#RECNAM,R1	; POINT TO COMMAND STRING		;LBB001	MOV	#RECERL,R2	; COMMAND LINE LENGTH	CALL	ENCODE		; CHANGE TERMINATORS	MOV	R2,R1		; SAVE STATUS IN R1	ASR	R1	ASR	R1	ASR	R1		; SHIFT THE STATUS OUT	MOV	R1,RETRY	; INDICATE THE NUMBER OF TIMES WE HAVE RETRIED	BIC	#177730,R2	; CLEAR OUT THE TOP PART OF THE STATUS	CMP	#EX$SUC,      R2	; RETRY THE OPERATION?	BNE	50$		; NO	TST	DISK		; DISK?	BNE	60$		; YES, WE MUST RESET THE BLOCK NUMBER TO READ	CLR	LSTSEQ		; SO WE CAN GET TO THE RECORD WE WANT WE ASSUME				; WE HAVEN'T READ ANYTHING YET	JMP	REREAD		; NO, TRY TO READ THE SAME RECORD60$:	MOV	LBLOCK,BLOCKL	MOV	HBLOCK,BLOCKH	; RESTORE THE ALLEGED BEGINNING BLOCK NUMBER	JMP	REDISK		; TRY TO READ THE SAME RECORD50$:	CMP	#EX$ERR,R2	; BAD DATA ERROR OR SOMETHING?	BNE	70$		; NO	TST	DISK		; DISK?	BNE	80$		; YES	INC	SEQUEN		; WE WILL TRY FOR THE N      EXT RECORD	JMP	REREAD		; TRY AGAIN, IF IT HAPPENS AGAIN, THE ERROR				; PROCESSOR WILL KICK OUT (RETRY IS NON-ZERO)80$:	ADD	#1,BLOCKL	; WE WILL TRY TO KEEP READING THE DISK	ADC	BLOCKH		; UNTIL WE FIND ANOTHER SLOT				; ALL SLOTS MUST APPEAR CONTIGUOUSLY ON THE				; DISK, SEQUENCE ERRORS WILL INDICATE BAD				; BLOCK ERRORS WHICH OCCURED BETWEEN WRITE				; AND READ.	JMP	REDISK		; TRY AGAIN70$:	CMP	#EX$SEV,R2	; SEVERE ERROR?	BEQ	ERROUT		; END OF TAPE.	CMP	#EX$WAR,R2	; WARNING	BEQ	OK		; THEY WANT TO CONTINUE AF   Â   TER SEQUENCE HIGH	BR	ERROUT		; NO OTHER ALTERNATIVE AT THIS POINT IN TIMESEQERR:	MOV	#IS.PND,IOSTAT	; HIGH SEQUENCE ERROR	BR	ERREAD		; PROCESS ITERROUT:	SEC	BR	OUT		; RETURN WITH CARRY SET 	.ENDÂ          œwš‹“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETVMR					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	16-FEB-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1977 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&	!								&	!	This progra      m applies the partition definition commands,	&	!	the driver load commands, the terminal setup commands,	&	!	the conditionally installed task commands, and the 	&	!	unconditionally installed commands to the clean SYS	&	!	image for the user's target system.  It makes sure	&	!	the task is in a state to run VMR and then uses that 	&	!	program to implement these commands.			&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	      !								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	1			used for each of the command 	&	!				files				&	!	13			terminal I/O			&	!	15			virtual termianl I/O		&	!								&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	--      --			------------------------------  &	!								&	!	A$			temporary working variable	&	!	BUFFER$			Map var for set buffer command	&	!	COUNT%			identifies terminal command	&	!				  group				&	!	CRT$			Map var for set crt command	&	!	DISABLE.PRINT%		suppress printing of login files&	!	EX.FLAG%		status code of exited spawned	&	!				  task				&	!	FILE$			stripped system name		&	!	IN.FLAG%		non-zero if VT input needed	&	!	INPUT.SWITCH%		=3 if no input expected		&	!	LINE$			response read form VT		&	!	LOGIN.HERALD$      		look for this to strip on HELLO	&	!	LOWER$			Map var for set lower command	&	!	OUT.FLAG%		non-zero if VT output		&	!	POINTER%		identifies file being processed	&	!	R%			temporary working variable	&	!	REMOTE$			Map variable for set remote com.&	!	S%			temporary working variable	&	!	SLAVE$			Mpa variable for set slave com.	&	!	SPEED$			Map variable for set speed com.	&	!	SUBSET$			phase label for trace		&	!	TASK$			installed task to spawn		&	!	TASK.PAR%()		Array for get task parameter	&	!				  call				&	!	TT      .NUM$			Map var for terminal #		&	!	VMR.LINE$		line of input for VMR		&	!	VT.CMD$			command line for installed task	&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!	10000		process virtual terminal I/O		&	!	10200		print trace line      s			&	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	28000	a whole set	the virtual terminal functions	&	!	???	FN.INT.TO.OCT$	transform integer ot octal string&	!								&	!**************************************      *************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote libra      ry dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIM	TASK.PAR%(17)						&	!								&	!	Array for get task call					&951	\ MAP	(TERM)		TT.NUM$=5,				&				BUFFER$=20,				&				CRT$=20,				&				LOWER$=20,				&				SPEED$=25,				&				REMOTE$=20,				&				SLAVE$=20				&	!								&	!	Map for the terminal command file			&1000	!$*****************************************      *********************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1400	\ COUNT%= 1%							&	\ POINTER%= 0%							&	\ LOGIN.HERALD$= "RSX11M+"					&	\ TRUE%= -1%							&	\ FALSE%= -1%							&	!								&	!	Initialize variables					&	!	define the current login herald so it can be removed	&1500	\ TASK$= "MCR..      ."						&	\ COMMAND$= "SET /LOGON"					&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Make sure we can log in					&2000	\ FILE$= EDIT$(SYSTEM.NAME$,2%) 				&	!								&	!	This task is spawned with the system name.		&	!	The file containing the commands is <system name>.MCR	&2100	!$**************************************************************&	!                                                               &	!                                                               &	      !	TASK SPAWNING LOGIC					&	!                                                               &	!                                                               &	!***************************************************************&	!								&2110	\ TASK$= "MCR..."						&	\ VT.CMD$= "HELLO 1/1" 						&	\ INPUT.SWITCH%=  3%						&	\ DISABLE.PRINT%= 1%						&	\ GOSUB 10000							&	\ DISABLE.PRINT%= 0%						&	!								&	!	Login to 1,1   - error if it wants input		&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= T$		      					&	\ GOSUB 20001							&	!								&	\ COMMAND$= S$							&	\ GOSUB 20001							&	!								&	!	Assign the proper disk to the virtual terminal		&	!								&	\ TASK$= "MCR..."						&	\ VT.CMD$= "SET /UIC=[1,54]"					&	\ INPUT.SWITCH%= 3%						&	\ GOSUB 10000							&	!								&	!	VMR wants to use the default UIC and stuff is in [1,54]	&	!	So set it.						&	!								&	\ TASK$= "...INS"						&	\ VT.CMD$= "INS [1,54]VMR"					&	\ INPUT.SWITCH%= 3%						&	\ GOSUB 10000							&	!								&	!	VMR is not installed i      n user system			&	!								&	\ TASK$= "MCR..."						&	\ VT.CMD$= "VMR"						&	\ INPUT.SWITCH%= 2%						&	\ POINTER%= 0%							&	\ GOSUB 10000							&	\ GO TO 8180							&	!								&	!	Run VMR get input from 8100				&	!								&2115	\ TASK$= "MCR..."						&	\ VT.CMD$= "SET /UIC=[1,1]"					&	\ INPUT.SWITCH%= 3%						&	\ GOSUB 10000							&	!								&	!	Reset to the setup uic					&	!								&	\ TASK$= "MCR..."						&	\ VT.CMD$= "REM ...VMR"						&	\ INPUT.SWITCH%= 3%						&	\ GOSUB 10000							&	!								&	!	R      emove VMR						&	!								&	\ GO TO 32000							&	!								&	!	Done							&2105	\ A%= FN.VT.CREATE%						&	\ A$= FN.INT.TO.OCT$(A%)					&	\ T$= "ASN SY:=SY:/TERM=VT" + A$ +":"				&	\ S$= "ASN LB:=LB:/TERM=VT" + A$ + ":"				&	!								&	!	Create the virtual terminal				&	!	All the tasks go to MCRDSP				&	!	Form the VT assign statement				&3000	!$**************************************************************&	!                                                               &	!                                                                     &	! 	FILE  OPENING ROUTINES					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ GO TO 5001		IF REDO.TER%= 1%			&	\ OPEN "[200,201]" + FILE$ + ".PAR" FOR INPUT AS FILE #1%	&	\ POINTER%= 1%							&	\ GO TO 10001							&	!								&	!	Get the partition file					&4000	\ CLOSE #1%							&	\ SUBSET$= "Partition definition       "				&	\ GOSUB 10200							&	!								&	\ GO TO 5000	IF ((TEST.MASK% AND 2%) <> 0%)			&	\ OPEN "[200,201]" + FILE$ + ".DRV" FOR INPUT AS FILE #1%	&	\ POINTER%= 2%							&	\ GO TO 8150							&	!								&	!	Get the driver file					&5000	\ CLOSE #1%							&	\ SUBSET$= "Driver installation "				&	\ GOSUB 10200							&	!								&5001	\ GO TO 6000	IF ((TEST.MASK% AND 4%) <> 0%)			&	\ OPEN "[200,201]" + FILE$ + ".TER" FOR INPUT AS FILE #1%,	&		ORGANIZATION INDEXED FIXED,				&		ACCESS READ, ALLOW NONE,				&		MAP TE      RM,						&		RECORDSIZE 130,						&		PRIMARY TT.NUM$						&	\ POINTER%= 3%							&	\ GO TO 8100							&	!								&	!	Get the terminal setup file				&6000	\ CLOSE #1%							&	\ SUBSET$= "Terminal definition "				&	\ GOSUB 10200							&	\ GO TO 8175		IF REDO.TER%= 1%			&	!								&	\ GO TO 7000	IF ((TEST.MASK% AND 8%) <> 0%)			&	\ OPEN "[200,201]TRAX11.TAS" FOR INPUT AS FILE #1%		&	\ POINTER%= 4%							&	\ GO TO 8150							&	!								&	!	Get the permanently installed tasks file		&7000	\ CLOSE #1%							&!	\ SU      BSET$= "Partition specific task installation "	&!	\ GOSUB 10200							&	!								&	\ GO TO 8175	IF ((TEST.MASK% AND 16%) <> 0%)			&	\ OPEN "[200,201]" + FILE$ + ".INS" FOR INPUT AS FILE #1%	&	\ POINTER%= 5%							&	\ GO TO 8150							&	!								&	!	Get the tasks conditionally installed			&8000	!$**************************************************************&	!                                                               &	!                                                               &	! 	STRIP OFF THE T      ERMINAL COMMANDS				&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ GET #1%		IF COUNT%= 1%				&	\ VMR.LINE$= SPEED$	IF COUNT%= 1%				&	\ VMR.LINE$= BUFFER$	IF COUNT%= 2%				&	\ VMR.LINE$= CRT$	IF COUNT%= 3%				&	\ VMR.LINE$= SLAVE$	IF COUNT%= 4%				&	\ VMR.LINE$= REMOTE$	IF COUNT%= 5%				&	\ VMR.LINE$= LOWER$	IF COUNT%= 6%				&	\ VMR.LINE$= "SET       /MCR=TT0:" 	IF ((COUNT%= 7%)	&				AND  (EDIT$(TT.NUM$,2%)= "TT0:"))	&	\ COUNT%= COUNT% + 1%						&	\ COUNT%= 1%		IF COUNT%= 8%				&	\ GO TO 8000		IF EDIT$(VMR.LINE$,2%) = ""		&	\ A%= FN.VT.WRITE.TO%(VMR.LINE$)				&	\ GO TO 10001							&	!								&	!	Get the terminal commands				&	!	There are 6 of them on a record				&8100	\ GO TO 8000	IF INPUT.SWITCH%= 2% AND POINTER%= 3%		&	\ GO TO 8150	IF INPUT.SWITCH%= 2% AND POINTER% <> 0%		&	\ POINTER%= 1%							&	\ VMR.LINE$="[1,54]" + FILE$					&	\ A%= FN.VT.WRITE.T      O%(VMR.LINE$)				&	\ GO TO 3000							&	!								&	!	Send the file name to VMR				&8150	\ LINPUT #1%, VMR.LINE$						&	\ GO TO 8150	IF EDIT$(VMR.LINE$,2%)= ""			&	\ A%= FN.VT.WRITE.TO% (VMR.LINE$)				&	\ GO TO 10001							&	!								&	!								&	!	Get a command line for VMR				&8175	\ A%= FN.VT.EOF%						&	\ GO TO 10001							&8180	\ CLOSE #1%							&	\ GO TO 2115		IF REDO.TER%= 1%			&	\ SUBSET$= "Task installation "		&	\ GOSUB 10200			IF VMR.DIED% <> 1%		&	\ GO TO 2115							&	!								&	!	At end of VMR -       send equivlent of CTRL-Z		&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ A%= FN.TASK.INIT%(TASK$)					&	!								&	!	Initialize the task					&10001	\ GO TO 10050		IF OUT.FLAG% <> 0%			&	\ GO TO 10075		IF IN.FLAG%  <> 0%			&	\ GO TO 10100		IF EX.FLAG%  <> 0%			&	\ SLEEP       1							&	\ GO TO 10001							&	!								&	!	Check what kind of I/O needs looking after		&	!	If nothing has happened, wait 1 second and try again	&10050	\ LINE$= FN.READ.RESPONSE$					&	\ GO TO 10001		IF DISABLE.PRINT%= 1%			&	\ T%= INSTR(1%,LINE$,"VMR>")					&	\ S%= INSTR(1%,LINE$,"ENTER FI")				&	\ R%= INSTR(1%,LINE$,LOGIN.HERALD$)				&	\ GO TO 10001	IF T% > 0% OR S% > 0% OR R% > 0%		&	!								&	!	If it is just a prompt - in.flag will be set		&	!	Don't print expected prompts				&	!								&	!								&	\       T%= INSTR(1%,LINE$,"VMR")					&	\ LINE$= LEFT(LINE$,T%-1%) + RIGHT(LINE$,T%+3%)	IF T% > 0%	&	\ GO TO 10001	IF EDIT$(LINE$,2%+4%)= ""			&	\ PRINT								&	\ PRINT "% Error for the command:	" + VMR.LINE$		&	\ PRINT								&	\ PRINT LINE$							&	\ PRINT								&	\ GO TO 10001							&	!								&	!	Read the response line.  				&	!	print the response to the user.				&	!	if it is an error					&10075	\ ON INPUT.SWITCH%	GO TO 8100, 8100, 10077			&	!								&	!	Determine if input is expected, error if it is not	&100      77	\ PRINT								&	\ PRINT VT.CMD$							&	\ PRINT								&	\ PRINT								&	\ PRINT "? FATAL error - Spawned task wants input."		&	\ PRINT								&	\ CLOSE #1%							&	\ CALL EXITS2(2%,0%)						&	!								&	!	None of the spawned tasks should want input - fatal error if &	!	one does						&10100	\ RETURN		IF EX.FLAG% <= 2%				&	\ GO TO 10125		IF VT.CMD$= "VMR"	&	\ PRINT								&	\ PRINT "? FATAL error - spawned task exited with error status."&	\ PRINT "	The bad command line is:"			&	\ PRINT "	";VT.CMD$					      &	\ PRINT								&	\ CLOSE #1%							&	\ CALL EXITS2(2%,0%)						&	!								&	!	Go get next command line if exit with success		&	!	Otherwise, print fatal error message & exit with failure&10125	\ PRINT								&	\ PRINT "? FATAL error - your system is not usable, it will not"	&	\ PRINT "	BOOT.  We will continue through the remaining"	&	\ PRINT "	phases in order to set up as much as possible "	&	\ PRINT "	automatically.  Your software specialist can "	&	\ PRINT "	correct the problem and then use the RENEW "	&      	\ PRINT "	command to get a system which will BOOT."	&	\ PRINT								&	\ VMR.DIED%= 1%							&	\ RETURN							&	!								&	!	Message if VMR does not find a needed file		&10200	\ PRINT								&	\ PRINT SUBSET$;"is complete."					&	\ PRINT								&	\ RETURN							&	!								&	!	Print the trace messages				&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								      &	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19001	\ RESUME 4000		IF ERR= 11 AND POINTER%= 1%		&	\ RESUME 5000		IF ERR= 11 AND POINTER%= 2%		&	\ RESUME 6000		IF ERR= 11 AND POINTER%= 3%		&	\ RESUME 7000		IF ERR= 11 AND POINTER%= 4%		&	\ RESUME 8175		IF ER      R= 11				&	!								&	!	At EOF for 1 file, go get next file			&	!	When done, exit						&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&      25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32001	\ CLOSE #1%							&	\ A%= FN.VT.DONE%						&	\ CALL   Ž    EXITS2 (1%,0%)						&	!								&	!	Close the command file					&	!	Delete the virtual terminal				&	!	Exit with success status				&32767	\ ENDŽ          œwÚ}“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	XXXXXX					&	!	Version:	VV					&	!	Edit level:	EE					&	!	Edit date:	DD-MMM-YY				&	!	Author(s):	AAA					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1977 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$******************      ********************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$*********************************************************      *****&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		      &	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!*******************************      ********************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&951 	\ MAP	(TERM)		TT.NUM$=5,				&				BUFFER$=20,				&				CRT$=20,				&				LOWER$=20,				&				SPEED$=25,				&				REMOTE$=20,				&				SLAVE$=20				&	!								&	!	The Map for the terminal setup commands			&900	!$******************************************      ********************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIM TASK.PAR%(17)						&	!								&	!	Array for GET TASK PARAMETER call			&1000	!$*******************      *******************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ A%= FN.SETUP.DIALOGUE%					&	\ LONG.FORM%= FALSE%						&	!								&	!	Set up standard default error trap			&1400	\ FILE.NAME$= "[200,201]" + SYSTEM.NAME$ + ".TER"		&	\ FILE.NAME$= EDIT$(FILE.NAME$,2%)				&	!								&	!								&	\ OPEN FILE.NAME$ AS FILE #1%,					&		OR      GANIZATION INDEXED FIXED,				&		ACCESS MODIFY, ALLOW NONE,				&		MAP TERM, RECORDSIZE 130,				&		PRIMARY TT.NUM$ NODUPLICATES				&	!								&	!	Open the system named terminal command file.  Use an existing &	!	one if present.  If not, create a new one.		&	!								&1410	\ TERM.NUM$= "TT0:"						&	\ GET #1%, KEY#0 EQ TERM.NUM$					&	\ DELETE #1%							&	!								&	!	If tt0 block is there, delete it			&1415	\ SLAVE$= "SET /NOSLAVE=TT0:"					&	\ REMOTE$= ""							&	\ BUFFER$= "SET /BUF=TT0:132."					&	\ SPEED$      = "" 							&	\ LOWER$= "SET /LOWER=TT0:"					&	\ CRT$= "SET /NOCRT=TT0:"					&	\ TT.NUM$= "TT0:"						&	\ PUT #1%							&	!								&	!	Force the  tt0 block to pre-defined values		&1420	\ T%= 0%							&	\ LONG.FORM%= S.SYSGEN.LONG.FORM%				&	!								&	!	Dummy line to provide line number to SETCOM		&2000	!$**************************************************************&	!                                                               &	!                                                               &	! 	SPEC      IFY TERMINAL COMMANDS				&	!                                                               &	!                                                               &	!***************************************************************&2001	\ TEMP.S.E.TERMINAL.NUM% = S.E.TERMINAL.NUM% - 1%			&				IF FIRST.TIME%= 0%			&	\ FIRST.TIME%= 1%						&	!								&	!	Correct the terminal number to exclude tt0:		&	!								&	\ LIST$= "/ADD/DELETE/EDIT/DISPLAY/COPY/STEAL/EXIT"	&	\ ON FN.ASK%(201%,"EXIT",LIST$,FALSE%,1%)			&		GO TO       32100, 32200, 2010, 2020, 2030, 2040, 2050, 2075, 32000&	!								&	!	Branch on the various commands				&2010	\ FUNCTION%= 1%							&	\ GO TO 2100							&	!								&	!	The create function					&2020	\ FUNCTION%= 2%							&	\ GO TO 2100							&	!								&	!	The delete function					&2030	\ FUNCTION%= 3%							&	\ GO TO 2100							&	!								&	!	The modify function					&2040	\ FUNCTION%= 4%							&	\ GO TO 2100							&	!								&	!	The display function					&2050	\ FUNCTION%= 5%							&	\ GO TO 4000							&	!			      					&	!	The copy function					&2075	\ CLOSE #1%							&	\ ASK.RANGE(0)= 33						&	\ ON FN.ASK% ( 131%,"","",TRUE%,2%)				&		GO TO 1400, 32200, 2077					&	!								&	!	Determine system to steal from				&2077	\ T1%= INSTR(1%,ASK.CVT$,"[")					&	\ T2%= INSTR(1%,ASK.CVT$,"]")					&	\ GO TO 2078		IF T1% >  0%				&	\ T1$= ""							&	\ T1$= LEFT (ASK.CVT$,T1%-1%)		IF T1% > 0%		&	\ T2$= "[200,201]"						&	\ T3$= RIGHT (ASK.CVT$,T2%+1%)					&	\ ASK.CVT$= T1$ + T2$ + T3$ 						&	!								&2078	\ TASK$= "...PIP"					      	&	\ COMMAND$= "PIP " + FILE.NAME$ + "/NV=" + EDIT$(ASK.CVT$,2%)	&		+ ".TER"						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	\ HOLD.STATUS%= SPAWN.ERROR%					&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /UIC=[1,1]"					&	\ GOSUB 20001							&	!								&	!	Re-set default						&	!								&	\ GO TO 1400	IF HOLD.STATUS%=1%				&	\ PRINT								&	\ PRINT "% We are unable to transfer that file - try again!"	&	\ PRINT								&	\ GO TO 2075							&	!								&	!	Steal the terminal s      etup file from the named system	&	!	Print an error message and try agian if unable to steal it&2100	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= 20						&	\ ON FN.ASK%(202%,"","I",TRUE%,2%)				&		GO TO 2000, 32200, 2110					&	!								&	!	The terminal number					&2110	\ A%= FN.REALLY.OCTAL%(ASK.NUM%)				&	\ GO TO 2111	IF A%= 1%					&	\ GOSUB 10600							&	\ GO TO 2100							&	!								&	!	Validate that the number is octal			&2111	\ T%= ASK.NUM%/10%						&	\ T1%= ASK.NUM%- T%*10%						&	\ T2%= T%*8% + T1%						&      	\ GO TO 2112		IF ASK.NUM% <> 0%			&	\ GO TO 2112		IF FUNCTION% = 4%			&	\ PRINT								&	\ PRINT "% TT0: may only be DISPLAYed."				&	\ PRINT								&	\ GO TO 2100							&	!								&	!	Error message if he tries to alter TT0:			&2112	\ GO TO 2113	IF T2% <= TEMP.S.E.TERMINAL.NUM%			&	\ GOSUB 10620							&	\ GO TO 2100							&	!								&	!	Validate that number is in range			&	!								&2113	\ TERM.NUM$= "TT" + NUM1$(ASK.NUM%) + ":"			&	\ TERM.NUM%= ASK.NUM%						&	\ GO TO 2200	IF FUNCTION%= 1%				&	\ GO TO 23      00	IF FUNCTION%= 2%				&	\ GO TO 2400	IF FUNCTION%= 3%				&	\ GO TO 3000	IF FUNCTION%= 4%				&	\ GO TO 32000							&	!								&	!	Convert the terminal number into the KEY format and branch to &	!	the proper routine.					&2200	\ GET #1%, KEY#0 EQ TERM.NUM$					&	!								&	\ PRINT								&	\ PRINT "% Commands for that terminal already exist."		&	\ PRINT								&	\ GO TO 2100							&	!								&	!	Make sure no record exists for this terminal block	&2210	\ GOSUB 10100							&	\ GOSUB 10200							&	\ GO TO 2100	      	IF ESCAPE%= 1%				&	!								&	!	Blank out the map and ask the questions which are common with&	!	modify							&2220	\ TT.NUM$= TERM.NUM$						&	\ PUT #1%							&	\ GO TO 2000							&	!								&	!	Put out the new record.  Chances are that he will want to &	!	COPY it so go to 2000 instead of 2100.			&2300	\ GET #1%, KEY#0 EQ TERM.NUM$					&	!								&	\ DELETE #1%							&	\ GO TO 2100							&	!								&	!	Delete the specified record and let him continue deleting&2310	\ PRINT 							&	\ PRINT "% The are no c      ommands for the terminal you specified."	&	\ PRINT								&	\ GO TO 2100							&	!								&	!	This is the error message for an attempted delete of a 	&	!	non-existent record					&2400	\ GET #1%, KEY#0 EQ TERM.NUM$					&	!								&	!	Get the commands to be modified				&2410	\ GOSUB 10200							&	\ GO TO 2100		IF ESCAPE%= 1%				&	!								&	!	Ask the questions which are common with CREATE		&2420	\ UPDATE #1%							&	\ GO TO 2100							&	!								&	!	Update the record using the new responses		&	!	Allow the use      r to continue modifying			&2430	\ PRINT								&	\ PRINT	"% There are no commands to modify for the specified terminal."&	\ PRINT								&	\ GO TO 2100							&	!								&	!	Error message if he tries to modify a non-existing record.&3000	!$**************************************************************&	!                                                               &	!                                                               &	! 	DISPLAY THE TERMINAL CHARACTERISTICS			&	!                                                                     &	!                                                               &	!***************************************************************&3001	\ GET #1%, KEY#0 EQ TERM.NUM$					&	!								&	\ DL11%= 0%							&	\ DL11%= 1%	IF TT.TYPE%(TERM.NUM%) = 1%			&	!								&	\ T$= "not "							&	\ T1%= INSTR(1%,LOWER$,"NO")					&	\ T2%= INSTR(1%,REMOTE$,"NO")					&	\ T3%= INSTR(1%,SLAVE$,"NO")					&	\ T4%= INSTR(1%,CRT$,"NO")					&	\ T5%= INSTR(1%,SPEED$,":") 					&	\ T6%= INSTR(1%,BUFFER$,"      :") 					&	\ T7%= INSTR(T5%+1%,SPEED$,":")					&	!								&	\ P.SPEED$= RIGHT(SPEED$,T5%+1%)				&	\ P.SPEED$= LEFT (P.SPEED$,T7%-1%)				&	\ P.BUF$=   RIGHT(BUFFER$,T6%+1%)				&	!								&	\ PRINT								&	\ PRINT	TERM.NUM$;" has the following characteristics:"		&	\ PRINT								&	\ PRINT CHR$(9%);"It is a DL11 device."		IF DL11%= 1%	&	\ PRINT CHR$(9%);"It is a DZ11 device."		IF DL11%= 0%	&	\ PRINT								&	\ PRINT	CHR$(9%);"Its speed is ";P.SPEED$;"."	IF DL11%= 0%	&	\ PRINT CHR$(9%);"Its width is ";P.BUF$		      		&	!								&	\ PRINT CHR$(9%);"It is ";					&	\ PRINT T$;			IF T4% > 0%			&	\ PRINT "a CRT device."						&	!								&	\ PRINT CHR$(9%);"It is ";					&	\ PRINT T$;			IF T1% > 0%			&	\ PRINT "set to lower case."					&	!								&	\ PRINT CHR$(9%);"It is ";			IF DL11%= 0%	&	\ PRINT T$;			IF ((T2% > 0%) AND (DL11%= 0%))	&	\ PRINT "a remote device."			IF DL11%= 0%	&	!								&	\ PRINT CHR$(9%);"It is ";					&	\ PRINT T$;			IF T3% > 0%			&	\ PRINT "a slaved device."					&	!								&	\ PRINT								&	\ PRINT					      			&	\ GO TO 2100							&	!								&	!	Print out all the terminal characteristics for the selected&	!	terminal number.					&3100	\ PRINT								&	\ PRINT "% There are no commands for that terminal."		&	\ PRINT								&	\ GO TO 2100							&	!								&	!	Error message if user tries to list a non-existent block&4000	!$**************************************************************&	!                                                               &	!                                                                     &	! 	COPY TERMINAL BLOCKS					&	!                                                               &	!                                                               &	!***************************************************************&4001	\ ASK.RANGE(0)= 0						&	\ ASK.RANGE(1)= 20%						&	\ ON FN.ASK%(209%,"","I",TRUE%,2%)				&		GO TO 2000, 32200, 4010					&	!								&	!	Determine Terminal image to be used as a template	&4010	\ A%= FN.REALLY.OCTAL%(ASK.NUM%)				&	\ GO TO 4012	IF A%= 1%					&	\ GOSUB 10600						      	&	\ GO TO 4001							&	!								&	!	Validate octal response					&4012	\ OLD.TERM.NUM$= "TT" + NUM1$(ASK.NUM%) + ":"			&	\ OLD.TERM.NUM%= ASK.NUM%					&	!								&	!	Save response						&4020	\ ASK.RANGE(0)= 3						&	\ ON FN.ASK%(210%,"","",TRUE%,2%)				&		GO TO 4000, 32200, 4030					&	!								&	!	Determine terminal record to be created			&4030	\ GO TO 4040	IF ASK.CVT$= "ALL"				&	\ T%= VAL(ASK.CVT$)						&	\ A%= FN.REALLY.OCTAL%(T%)					&	\ GO TO 4036	IF A%= 1%					&	!								&4035	\ PRINT								&	\ PRINT       "% Only ALL or an octal number from 0 to 20 are allowed."&	\ PRINT								&	\ GO TO 4020							&	!								&	!	Invalid response  error message				&4036	\ GOSUB 4038							&	\ GO TO 4050	IF T% <= LIMIT%					&	\ PRINT								&	\ PRINT "% New terminal number is not configured into system."	&	\ PRINT								&	\ GO TO 4020							&4038	\ LIMIT%= TEMP.S.E.TERMINAL.NUM%					&	\ LIMIT%= LIMIT% + 2%		IF TEMP.S.E.TERMINAL.NUM% => 8%	&	\ LIMIT%= LIMIT% + 2%		IF TEMP.S.E.TERMINAL.NUM% => 16%	&	\ LIMIT%= LIMIT% + 2%		IF       TEMP.S.E.TERMINAL.NUM% => 24%	&	\ LIMIT%= LIMIT% + 2%		IF TEMP.S.E.TERMINAL.NUM% => 32%	&	\ RETURN							&	!								&	!	Common decimal -octal conversion for copy		&4040	\ GOSUB 4038							&	\ FOR I%= 1% TO LIMIT%    					&		\ NEW.TERM.NUM$= "TT" + NUM1$(I%) + ":"			&		\ T%= OLD.TERM.NUM%					&		\ T1%= T%/10%						&		\ T2%= T% - T1%*10%					&		\ T3%= T1%*8% + T2%					&		!							&		\ GOSUB 4100	IF ((TT.TYPE%(I%)=TT.TYPE%(T3%))&					AND (NEW.TERM.NUM$ <> OLD.TERM.NUM$)&					AND (NEW.TERM.NUM$ <> "TT8:")	&					      AND (NEW.TERM.NUM$ <> "TT9:")	&					AND (NEW.TERM.NUM$ <> "TT18:")	&					AND (NEW.TERM.NUM$ <> "TT19:")	&					AND (NEW.TERM.NUM$ <> "TT28:")	&					AND (NEW.TERM.NUM$ <> "TT29:")	&					AND (NEW.TERM.NUM$ <> "TT38:")	&					AND (NEW.TERM.NUM$ <> "TT39:"))	&	\ NEXT I%							&	\ GO TO 2000							&	!								&	!	Copy all terminal commands from tt0			&4050	\ NEW.TERM.NUM$= "TT" + ASK.CVT$ + ":"				&	\ NEW.TERM.NUM%= VAL(ASK.CVT$)					&	\ T%= OLD.TERM.NUM%						&	\ T1%= T%/10%							&	\ T2%= T% - T1%*10%						&	\ T3      %= T1%*8% + T2%						&	!								&	\ S%= NEW.TERM.NUM%						&	\ S1%= S%/10%							&	\ S2%= S% - S1%*10%						&	\ S3%= S1%*8% + S2%						&	!								&	\ GO TO 4060	IF TT.TYPE%(S3%) <> TT.TYPE%(T3%)&	\ GOSUB 4100							&	\ GO TO 4000							&	!								&	!	Copy 1 terminal						&4060	\ PRINT								&	\ PRINT	"% Old & new terminals are of incompatible type."	&	\ PRINT								&	\ GO TO 4000							&	!								&	!	Must be both DZ or both DL				&4100	\ FIND #1%, KEY#0 EQ NEW.TERM.NUM$				&	\ DELETE #1%							&4101	\ GET       #1%, KEY#0 EQ OLD.TERM.NUM$				&	\ TT.NUM$= NEW.TERM.NUM$					&	\ GOSUB 10050							&	\ PUT #1%							&	\ RETURN							&	!								&	!	Copy terminal block and continue copying		&4200	\ PRINT								&	\ PRINT "% The specified template block does not exist."	&	\ PRINT								&	\ GO TO 4000							&	!								&	!	Error message for non-existent template			&4300	\ PRINT								&	\ PRINT "% The target terminal already has existing commands."	&	\ PRINT								&	\ GO TO 4000							&	!								&	!	Error message if targ      et block exists			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&10050	\ T%= LEN (OLD.TERM.NUM$)					&	!								&	!	Determine size of old terminal numnber			&	!								&	\ T$= BUFFER$							&	\ GOSUB 10060							&	\ BUFFER$= T$							&	!								&	\ T$= CRT$							&	\ GOSUB 10060					      		&	\ CRT$= T$							&	!								&	\ T$= LOWER$							&	\ GOSUB 10060							&	\ LOWER$= T$							&	!								&	\ T$= SPEED$							&	\ GOSUB 10060		IF T$ <> ""				&	\ SPEED$= T$		IF T$ <> ""				&	!								&	\ T$= REMOTE$							&	\ GOSUB 10060		IF T$ <> ""				&	\ REMOTE$= T$		IF T$ <> ""				&	!								&	\ T$= SLAVE$							&	\ GOSUB 10060							&	\ SLAVE$= T$							&	!								&	\ RETURN							&	!								&	!	Substitute new terminal number in old field		&	!	& return						&10060	\ T1%= INSTR (1%,T$,OLD.TERM.NUM$)		      		&	\ T1$= LEFT (T$,T1%-1%)						&	\ T2$= RIGHT (T$,T1%+T%)					&	\ T$= T1$ + NEW.TERM.NUM$ + T2$					&	\ RETURN							&	!								&	!	Actually does the substitution				&10100	\ BUFFER$= ""							&	\ CRT$= ""							&	\ LOWER$= ""							&	\ SPEED$= ""							&	\ REMOTE$= ""							&	\ SLAVE$= ""							&	\ RETURN							&	!								&	!	Clear the map for a new record.  This is to facilitate	&	!	the sub-routine below.					&10200	!$**************************************************************&	!                                                                     &	!                                                               &	! 	QUESTIONS COMMON TO CREATE AND MODIFY			&	!                                                               &	!                                                               &	!***************************************************************&10201	\ ESCAPE%= 0%							&	\ T%= TERM.NUM%							&	\ T1%= T%/10%							&	\ T2%= T% - T1%*10%						&	\ T3%= T1%*8% + T2%						&	!								&	\ DL11%= 0%							&	      \ DL11%= 1%	IF TT.TYPE%(T3%) = 1%			&10205	\ IF DL11%= 1%	THEN	SPEED$= ""				&		\ REMOTE$= ""						&		\ PRINT							&		\ PRINT "This terminal is a DL11 terminal."		&		\ PRINT "You may not set the speed or set it to remote."&		\ PRINT							&		!							&	!	Cautionary message if DL11				&10207	\ GO TO 10225	IF DL11%= 1%					&	\ T%= INSTR(1%,SPEED$,":")					&	\ S%= INSTR(T%+1%,SPEED$,":")					&	\ DEFAULT$= "2400"						&	\ DEFAULT$= RIGHT (SPEED$,T%+1%)	IF FUNCTION%=3% AND T%> 0%&	\ DEFAULT$= RIGHT (SPEED$,S%+1%      )	IF FUNCTION%=3% AND S%> 0%&	\ LIST$= "/0/110/150/300/1200/2400/4800/9600/600"		&	\ ON FN.ASK%(203%,DEFAULT$,LIST$,FALSE%,3%)			&	GOTO 10210,32200,10220,10220,10220,10220,10220,10220,10220,10220,10220&	!								&	!	Specify terminal speed					&10210	\ ESCAPE%= 1%							&	\ RETURN							&	!								&	!	Process escape response					&10220	\ SPEED$= "SET /SPEED=" + TERM.NUM$  + ASK.CVT$	+ ":" + ASK.CVT$&	\ GO TO 10250							&	!								&	!	Store the response					&10225	\ SPEED$= ""							&	\ GO TO 10250							&10      250	\ T%= INSTR(1%,CRT$,"NO")					&	\ DEFAULT$= "YES"						&	\ DEFAULT$= "NO"	IF DL11%= 1%				&	\ DEFAULT$="NO"	IF FUNCTION%= 3% AND T% > 0%			&	\ ON FN.ASK%(204%,DEFAULT$,"Y",FALSE%,3%)			&		GO TO 10200, 32200, 10255, 10260			&	!								&	!	Determine if CRT					&10255	\ CRT$= "SET /CRT=" + TERM.NUM$					&	\ VT52%= 1%							&	\ GO TO 10270							&	!								&	! Yes, it is							&10260	\ CRT$= "SET /NOCRT=" + TERM.NUM$				&	\ VT52%= 0%							&	\ GO TO 10270							&	!								&	!	No, it isn't						&10270	\ T%=       INSTR(1%,BUFFER$,":")					&	\ DEFAULT$= "80"						&	\ DEFAULT$= "132"	IF VT52%= 0%				&	\ DEFAULT$= RIGHT(BUFFER$,T%+1%)	IF FUNCTION%=3% AND T% > 0%&	\ T%= INSTR(1%,DEFAULT$,".")					&	\ DEFAULT$= LEFT(DEFAULT$,T%-1%)	IF T% > 0%		&	\ ASK.RANGE(0)=40						&	\ ASK.RANGE(1)=132						&	\ ON FN.ASK%(205%,DEFAULT$,"I",TRUE%,3%)			&		GO TO 10250, 32200, 10275				&	!								&	!	Determine buffer size					&10275	\ BUFFER$= "SET /BUF=" + TERM.NUM$  + NUM1$(ASK.NUM%) + "."	&	!								&	!	Store response						&10280	\ T%      = INSTR(1%,LOWER$,"NO")					&	\ DEFAULT$= "YES"						&	\ DEFAULT$= "NO"	IF FUNCTION%= 3% AND T% <> 0%		&	\ ON FN.ASK%(206%,DEFAULT$,"Y",FALSE%,3%)			&		GO TO 10270, 32200, 10285, 10290			&	!								&	!	Determine if lower case					&10285	\ LOWER$= "SET /LOWER=" + TERM.NUM$				&	\ GO TO 10300							&	!								&	!	Store YES response					&10290	\ LOWER$= "SET /NOLOWER=" + TERM.NUM$				&	\ GO TO 10300							&	!								&	!	Store NO response					&10300	\ GO TO 10315	IF DL11%= 1%					&	\ T%= INSTR(1%,REMOTE$,"NO")	      				&	\ DEFAULT$= "NO"						&	\ DEFAULT$= "YES"	IF FUNCTION%= 3% AND T%= 0%		&	\ ON FN.ASK%(207%,DEFAULT$,"Y",FALSE%,3%)			&		GO TO 10280, 32200, 10305, 10310			&	!								&	!	Determine if remote device				&10305	\ REMOTE$= "SET /REMOTE=" + TERM.NUM$				&	\ GO TO 10320							&	!								&	!	Store YES response					&10315	\ REMOTE$= ""							&	\ GO TO 10320							&10310	\ REMOTE$= "SET /NOREMOTE=" + TERM.NUM$				&	\ GO TO 10320							&	!								&	!	Store NO response					&10320	\ T%= INSTR(1%,SLAVE$,"NO")					&      	\ DEFAULT$= "NO"						&	\ DEFAULT$= "YES"	IF FUNCTION%= 3% AND T%= 0%		&	\ ON FN.ASK%(208%,DEFAULT$,"Y",FALSE%,3%)			&		GO TO 10300, 32200, 10325, 10330			&	!								&	!	Determine if slaved					&10325	\ SLAVE$= "SET /SLAVE=" + TERM.NUM$				&	\ GO TO 10340							&	!								&	!	Store YES response					&10330	\ SLAVE$= "SET /NOSLAVE=" + TERM.NUM$				&	\ GO TO 10340							&	!								&	!	Store No response					&10340	\ RETURN							&10600	\ PRINT								&	\ PRINT "% Only octal numbers between 0 and 17 are allowed      ."	&	\ PRINT								&	\ RETURN							&	!								&	!	Error message for a non-octal terminal number		&10620	\ PRINT								&	\ PRINT "% You have exceeded the largest terminal number generated"&		+ " in your system."					&	\ PRINT								&	\ RETURN							&	!								&	!	Error number for too large a terminal number		&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!	      							&	!***************************************************************&15300	!$**************************************************************&	!                                                               &	!                                                               &	! 	Validate Octal response					&	!                                                               &	!                                                               &	!***************************************************************&153      01	\ DEF FN.REALLY.OCTAL%(A%)					&	\ FN.REALLY.OCTAL%= 0%						&	\ GO TO 15305	IF A% > 20%					&	\ GO TO 15305	IF A% < 0%					&	\ GO TO 15305	IF A%= 8%					&	\ GO TO 15305	IF A% = 9%					&	\ GO TO 15305	IF A% = 18%					&	\ GO TO 15305	IF A%= 19%					&	\ FN.REALLY.OCTAL%= 1%						&	!								&	!	Check that each of the digits really is octal		&15305	\ FNEND								&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	      &	!								&	!								&	!***************************************************************&19001	\ RESUME 4035		IF ERR= 52% AND ERL= 4030		&	\ RESUME 2210		IF ERL=2200 AND ERR=155			&	\ RESUME 2310		IF ERL=2300 AND ERR=155			&	\ RESUME 2430		IF ERL=2400 AND ERR=155			&	\ RESUME 3100		IF ERL=3001 AND ERR=155			&	\ RESUME 4200		IF ERL=4101 AND ERR=155			&	\ RESUME 4300		IF ERL=4101 AND ERR=153			&	\ RESUME 4101		IF ERL=4100 AND ERR=155			&	\ RESUME 1415		IF ERL=1410 AND ERR=155			&19900	\ PRINT								&	\ CLOSE       T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R       Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	!								&	\ CLOSE #1%							&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Successful exit						&32100	\ CLOSE #1%							&	\ CALL EXITS2 (1%, 27%)						&	!								&	!	ESC exit	   P  					&32200	\ CLOSE #1%							&	\ CALL EXITS2 (2%, 26%)						&	!								&	!	CTRL-Z exit						&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END P         êy°rkQÁ› 8$        	.TITLE	STJRN - SET UP AND READ A BLOCK FROM A JOURNAL VOLUME	.IDENT	"V1.01A";;                         COPYRIGHT (C) 1979 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 OWNER      SHIP 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.;;;; MODULE:	STJRN;; VERSION:	V01.01A;; AUTHOR:	TONY SUKIENNIK;		LEE BARTON;; DATE:		16-MAR-79;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		      EXPLANATION;	------	----		------		-----------;	V1.01A	16-MAR-79	LBB		LBB001 - START OF RECER COMMAND;						LINE HAS CHANGED;;;;;	INPUT CONDITIONS:;;		R0	-	CONTAINS DEVICE MNEMONIC;		R1	-	CONTAINS DEVICE UNIT NUMBER;;;	OUTPUT CONDITIONS:;;		CARRY CLEAR	-	HEADER RECORD RESIDES AT 'SLOT';;		CARRY SET	-	ERROR CODE IN 'STATUS';;	.MCALL	GLUN$S,ALUN$S,QIOW$,DIR$,MRKT$S,STSE$S;;;	GENERAL QIO DPB;;QIOW:	QIOW$	IO.ACR,2,1,,IOSTAT,,<FID,,,,100000,>;;	LOCAL DATA;BLOCK:	.BLKW	6.		; UTILITY BUFFER FOR GLUN$, ETC...FID:	.W      ORD	5,5,0		; FILE ID OF DISK JOURNAL FILE;;	SUBROUTINE LOGIC;$STJRN::	CLR	BLOCKH	MOV	#1,BLOCKL	; WE WILL TRY BLOCK 1 ON DISK FIRST	CLR	STATUS		; CAN'T HAVE AN ERROR BEFORE THIS	CLR	RETRY		; RETRY COUNT FOR ERRORS READING JOURNAL	MOVB	#IS.SUC,ERRHIS	MOVB	#IS.SUC,ERRHIS+1	; ERROR HISTORY IS INITIALIZED SUCCESS	ALUN$S	#2,R0,R1				; ASSIGN LUN 2 TO THE JOURNAL DEVICE	BCC	60$		; OK	JMP	ERR07		; NOT OK60$:	GLUN$S	#2.,#BLOCK	; GET LUN INFO ON THIS DEVICE	BCC	70$		; OK	JMP	ERR08		; NOT OK70$:	MOV	#IO.RLB,READTP	; R      EAD TYPE WILL BE INITIALED FOR TAPE IO	BIT	#10,BLOCK+4	; SEE IF THIS IS A DISK	BEQ	80$		; IT IS NOT	INC	DISK		; IT IS	MOV	#IO.RVB,READTP	; READ VIRTUAL BLOCK FOR DISKS	DIR$	#QIOW		; OPEN THE FILE ON THE DISK	BCS	75$		; DIRECTIVE FAILED	CMPB	#IS.SUC,IOSTAT	; OPERATION SUCCESSFUL?	BEQ	REREAD		; YES75$:	JMP	ERR09		; CAN'T FIND JOURNAL FILE ON DISK80$:	CMP	#"MM,BLOCK	; IS IT A TU16 DRIVE?	BNE	ERR17		; NO, IT IS AN INVALID JOURNAL DEVICE	MOV	#QIOW,R0	; POINT TO DPB	MOV	#IO.STC,Q.IOFN(R0)				; SET TAPE CHARACTERI      STICS	MOV	#4000,Q.IOPL(R0); 1600 BPI	DIR$	#QIOW		; SET THEM	MOV	#IO.DET,Q.IOFN(R0)				; DETACH THE TAPE (THIS MIGHT NOT BE FIRST TAPE)	MOV	#2,Q.IOLU(R0)	; TO LUN 2	DIR$	#QIOW		; DO IT	MOV	#IO.ATT,Q.IOFN(R0)				; ATTACH THE TAPE	DIR$	#QIOW		; DO IT	BCC	81$		; OK, SO FAR	JMP	ERR16		; FAILURE TO ATTACH TAPE JOURNAL81$:	CMP	#IS.SUC,IOSTAT	; SUCCESS?	BEQ	500$		; YES	JMP	ERR16		; FAILURE TO ATTACH TAPE JOURNAL500$:	MOV	#IO.RWD,Q.IOFN(R0)				; NEXT, LETS REWIND THE MAGTAPE	DIR$	#QIOW		; REWIND THE TAPE	CMP	#IS.SUC      ,IOSTAT	; SUCCESS?	BEQ	REREAD		; YES	JMP	ERREAD		; LET THE ERROR PROCESSOR TAKE CARE OF ITREREAD:	TST	DISK		; DISK?	BNE	82$		; YES	MOV	#IO.SEC,Q.IOFN(R0)				; SENSE TAPE CHARACTERISTICS	DIR$	#QIOW		; SENSE THEM	BIT	#20000,IOSTAT+2	; BOT?	BNE	82$		; YES	BIT	#1000,IOSTAT+2	; REWINDING?	BNE	505$		; YES	JMP	SEQERR		; MAKE HIM/HER REWIND IT505$:	MRKT$S	#1,#1,#2	; WAIT A SECOND	STSE$S	#1		; WAIT	BR	REREAD		; TRY AGAIN FOR BOT82$:	MOV	#QIOW,R0	; POINT TO THE QIO DPB	MOV	READTP,Q.IOFN(R0)	MOV	#SLOT,Q.IOPL(R0)	MOV	#      512.,Q.IOPL+2(R0)	MOV	BLOCKL,Q.IOPL+10(R0); SET UP THE DPB TO READ THE HEADER BLOCK	DIR$	#QIOW		; READ THE HEADER BLOCK FROM THE JOURNAL	BCS	85$		; DIRECTIVE FAILED	CMPB	#IS.SUC,IOSTAT	; READ SUCCESSFUL?	BNE	ERREAD		; NO	INC	BLOCKL		; SET UP TO READ THE REAL DATA ON THE DISK				; DO THIS UNCONDITIONALLY BECAUSE MAGTAPE				; WILL IGNORE IT.	BR	90$		; READ WAS SUCCESSFUL85$:	JMP	ERR10		; CAN'T READ HEADER RECORD90$:	MOV	#1,SEQUEN	; RECORD SEQUENCE NUMBER OF THE				; FIRST RECORD IS 1	CLC			; CARRY CLEAR FOR S      UCCESSOUT:	RETURNERR19:	INC	STATUS		; GAP FOUND IN DATA ON TAPEERR18:	INC	STATUS		; UNUSUAL END OF FILE ON TAPEERR17:	INC	STATUS		; NOT A VALID JOURNAL DEVICEERR16:	INC	STATUS		; FAILURE TO ATTACH JOURNAL TAPE DRIVEERR15:	INC	STATUS		; FAILURE TO MAP TABLES REGIONERR14:	INC	STATUS		; FATAL TERMINAL I/O ERRORERR13:	INC	STATUS		; USER SPECIFIED CTRL/Z TO PROMPTERR12:	INC	STATUS		; VOLUME OUT OF SEQUENCE OR SAME AS PREVIOUSERR11:	INC	STATUS		; NOT A JOURNAL FILEERR10:	INC	STATUS		; CAN'T READ JOURNAL HEADER RE      CORDERR09:	INC	STATUS		; CAN'T OPEN DISK JOURNAL FILEERR08:	INC	STATUS		; FAILURE TO GET LUN INFO ON JOURNAL DEVICEERR07:	INC	STATUS		; FAILURE TO ASSIGN LUN TO JOURNAL DEVICEERR06:	INC	STATUS		; FAILURE TO GET TASK PARAMETERSERR05:	INC	STATUS		; FAILURE TO ATTACH TABLES REGIONERR04:	INC	STATUS		; FAILURE TO MAP RMS BUFFERS REGIONERR03:	INC	STATUS		; FAILURE TO CREATE RMS BUFFERS REGIONERR02:	INC	STATUS		; FAILURE TO MAP SLOT REGIONERR01:	INC	STATUS		; FAILURE TO CREATE SLOT REGION	BR	ERREAD		; REPORT THE E      RROR;;	INTERFACE TO THE ERROR PROCESSING TASK;ERREAD:	MOV	RETRY,R0	; RETRY COUNT	MOVB	IOSTAT,ERRHIS(R0)				; SET UP AN ERROR HISTORY	MOV	#RECER,R0	; POINT TO TASK NAME TO SPAWN	MOV	#RECNAM,R1	; POINT TO COMMAND STRING		;LBB001	MOV	#RECERL,R2	; COMMAND LINE LENGTH	CALL	ENCODE		; CHANGE THE TERMINATORS	MOV	R2,R1		; SAVE STATUS IN R1	BIC	#177770,R2	; CLEAR OUT THE TOP PART OF THE STATUS	CMP	#EX$SUC,R2	; RETRY THE OPERATION?	BNE	ERROUT		; NO, UNRECOVERABLE	ASR	R2	ASR	R2	ASR	R2		; SHIFT OUT THE STATUS	MOV	R2,BLO     CKL	; SEE WHICH BLOCK TO RESUME AT	JMP	REREAD		; TRY THE READ AGAINERROUT:	CLR	STATUS		; WE HAVE ALREADY REPORTED THE ERROR	SEC	RETURN			; RETURN WITH CARRY SET, INDICATING FAILURESEQERR:	MOV	#IS.PND,IOSTAT	; HIGH SEQUENCE ERROR	BR	ERREAD		; PROCESS IT	.END          Œ^Á› 8$°   Œ    x    tŽèÁ   ¯”L  ,0~…@      (2  >€h  ¯”             ÀÀ æ& &æÿˆ÷- TT÷‹  ± ‡  & TT"& ,0~…  Œ          ŒNÁ› 8$°      CHECK FOR TT0: ON LUN 13	MACRO M1110  27-FEB-79 15:55  PAGE 1      1						.TITLE	CHECK FOR TT0: ON LUN 13      2						.IDENT	/V1.1A/      3						.ENABL	LC      4					;      5					;+      6					;      7					;      8					;	C H E C K    F O R    T T 0 :      9					;     10					;     11					;	Version:	V1.1A     12					;	Edit Level:	00     13					;	Edit Date:	27-Feb-79     14					;	Author(s):	KMR     15					;     16					;	VER/ED	DATE	INITIAL	REASON     17					;	------	--------- ---	-----------------------------      -----------     18					;	V1.1A00	27-Feb-79 KMR	Initial coding.     19					;     20					;     21					;***********************************************************************     22					;     23					;     24					;	USAGE FORMAT:	CALL CHKTT0     25					;     26					;	INPUT:		R0 contains the lun to check.     27					;			   if R0 is 0, lun 13. is checked.     28					;     29					;	OUTPUT:		R0 contains the status return from GLUN call.     30					;     31					;			C = 0 -> lun is assigned to TT0:     32					;			C =       1 -> lun is not assigned to TT0: or     33					;				   directive error (check R0)     34					;     35					;	The subroutine uses the GLUN macro to get the device name for     36					;	  the lun provided or 13 if lun 0 was specified. The C bit is     37					;	  set to indicate directive error or that the device on the     38					;	  requested lun is not TT0:     39					;     40					;     41					;-     42					;CHECK FOR TT0: ON LUN 13	MACRO M1110  27-FEB-79 15:55  PAGE 2     44						.MCALL	GLUN$S     45           46	000000				CHKTT0::     47	000000	005700 				TST	R0		; Is R0 equal to 0?     48	000002	001002 				BNE	10$		; If not, assume R0 contains a valid lun     49     50	000004	012700 	000015 			MOV	#13., R0	; R0 contained 0. This implies we check     51									;   lun 13.     52     53	000010				10$:	GLUN$S	R0, #DATA	; Call GLUN. Put the results in the buffer     54									;   at DATA.     55     56	000024	026767 	000016 	052124 		CMP	DATA+G.LUNA, "TT     57									; Compare the device name to "TT"     58           59	000032	001003 				BNE	20$		; If it is not equal, exit with C set.     60     61	000034	105767 	000000C			TSTB	DATA+G.LUNN	; Test the device number (and clear C).     62     63	000040	001401 				BEQ	30$		; If zero, exit immediately (C will be clear).     64     65	000042	000261 			20$:	SEC			; Errors pass through here and set C.     66     67	000044	000207 			30$:	RETURN			; Return to your caller.     68     69					;     70					;	BUFFER for GLUN call     71					;     72     73	000046				DATA:	.BLKW	6       ´   74     75		000001 				.ENDCHECK FOR TT0: ON LUN 13	MACRO M1110  27-FEB-79 15:55  PAGE 2-1SYMBOL TABLECHKTT0  000000RG 	G.LUCW= 000004   	G.LUNA= 000000   	G.LUNU= 000002   	$$$OST= 000014DATA    000046R  	G.LUFB= 000003   	G.LUNN= ****** GX. ABS.	000000	   000      	000062	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  567 WORDS  ( 3 PAGES)DYNAMIC MEMORY:  2980 WORDS  ( 11 PAGES)ELAPSED TIME:  00:00:04CHECKTT0,CHECKTT0=CHECKTT0 ´         ¥p“Á› 8$        811	\ COM	(VTSTRN)	TERMINAL.LINE.1$=79,			&				TERMINAL.LINE.2$=79,			&				VT.CMD$=79				&	!								&	!	These contain the command strings for the QIO call	&	!	They must have fixed addresses and so reside in common	&901	\ dim	ext.table$(25)=3,	ex.del$(10)=3,		task.param%(17)&	!								&	!	arrays used in program					&951	\ map(direc)	id1%,id2%,id3%,f1%,f2%,f3%,ext%,v%		&	!								&	!	map for directory file					&952	\ map (comman)	file.key$=18,					&			file.name$=9,					&			period$= 1,					&			extension$=3,			      		&			version$=4					&	!								&	!	map for file of files to be played with			&953	\ dim #3%,	tab.purge$(250)=18				&	!								&	!	virtual array of files to be purged			&954	\ dim #4%,	tab.kill$(250)=18				&	!								&	!	virtual array of files to be killed			&1000	\ on error go to 19000						&	\ print								&	\ print "CLEAN edits the user's directory file."		&	\ print								&	\ call gettsk by ref (task.par%(),error%)			&	\ member%= task.par%(7) and 255%				&	\ t%= swap% (task.par%(7))					&	\ group%= t% a      nd 255%						&	\ group$= fn.int.to.oct$(group%)				&	\ member$= fn.int.to.oct$(member%)				&	\ group$= right(group$,4%)					&	\ member$= right(member$,4%)					&	\ uic$= "[" + group$ + "," + member$ + "]"			&	\ print chr$(9);"You are working in ";group$;",";member$;"."	&	\ print								&	!								&	!	identify the user's UFD					&1020	\ go to 1023	if group% > 7%					&	\ t$= "What UFD to clean <" +  group$ + "," + member$  + ">"	&	\ print t$;							&	\ linput answer$						&	\ print								&	\ t$= edit$(answer$      ,2%+4%)					&	\ t%= instr(1%,t$,",")						&	\ go to 1021	if t% > 0%					&	\ go to 1021	if t$= ""					&	\ print								&	\ print "% Format is n,m   - try again."			&	\ print								&	\ go to 1020							&1021	\ go to 1023	if t$= ""					&	\ t%= instr (1%,answer$,",")					&	\ group$= left(answer$,t%-1%)					&	\ member$= right(answer$,t%+1%)					&	\ t1%= len(group$)						&	\ t2%= len(member$)						&	\ group$= string$(3%-t1%,48%) + group$				&	\ member$= string$(3%-t2%,48%) + member$			&	\ ufd$= group$ + member$	      				&	\ uic$= "[" + group$ + "," + member$ + "]"			&	!								&	!	allow user to clean another directory if he is privileged&1023	\ print "Use CTRL-Z to go from one question loop to the next."	&	\ print								&1024	\ print								&	\ input "Pip purge parameter <1> ";t%				&	\ purge$= "/PU:1"						&	\ purge$= "/PU:" + num1$(t%)	if t% > 1%			&	!								&	!	Get purge parameter					&1025	\ print								&	\ input "Extensions to delete";ex$				&	\ ex$= edit$(ex$,32%)						&	\ j%= instr(1%,ex$,".")						&	\ ex$= r      ight (ex$,j%+1%)	if j% > 0%			&	\ ex.del$(i%)= ex$						&	\ i%= i% + 1%							&	\ go to 1025	unless i%= 11%					&	!								&	!	determine extensions to be completely wiped out		&1030	\ ex.del$(i%)= "###"						&	\ i%= 0%							&	\ print								&	!								&	!	set end of table					&1035	\ input "Extensions to examine <ALL>";ex$			&	\ ex$= edit$(ex$,32%)						&	\ all%= 0%							&	\ all%= 1%	if ex$= ""					&	\ ext.table$(i%)= ex$						&	\ i%= i% + 1%							&	\ go to 1035	unless ((i%= 26%) or (all%= 1%))		&	!					      			&	!	determine extensions to examine				&1040	\ ext.table$(i%)= "###"						&	\ print								&	!								&	!	mark end of table					&1100	\ open "TEMP.1" for output as file #1%,			&		organization indexed fixed,				&		access modify, allow none,				&		recordsize 35, map comman,				&		primary file.key$ duplicates				&	!								&	\ open "[0,0]" + group$ + member$ + ".DIR" for input as file #2%,&		organization sequential fixed,				&		access read, allow write,				&		recordsize 16, map direc				&	!								&	!	open       the directory file and the pip command file	&	!								&	\ print								&	\ print "We'll be back eventually!"				&	\ print								&	!								&	!	print sarcastic message					&1200	\ get #2%							&	\ file.name$= rad$(f1%) + rad$(f2%) + rad$(f3%)			&	\ extension$= rad$(ext%)					&	\ period$= "."							&	\ T$= fn.int.to.oct$(v%)					&	\ version$= right (t$,3%)					&	\ file.key$= file.name$ + "." + extension$ + ";" + version$		&	\ go to 1200	if id1%= 0%					&	\ go to 1200	if ((v%>127%) or (v%<1%))			&	!								      &	!	construct the ascii file name				&	!	eliminate garbage in the directory			&1220	\ for i%= 0% to 10%						&		\ go to 1200	if extension$= ex.del$(i%)			&		\ go to 1230	if ex.del$(i%)= "###"			&	\ next i%							&	!								&	!	is this one of the extensions to be deleted		&	!	if yes, skip file - global delete will get it		&1230	\ go to 1300	if all%= 1%					&	\ for i%= 0% to 25%						&		\ go to 1300	if extension$= ext.table$(i%)			&		\ go to 1200	if ext.table$(i%)= "###"		&	\ next i%							&	\ go to 1200					      		&	!								&	!	keep on working only if this is one of the files	&	!	user wants to examine					&1300	\ put #1%							&	\ go to 1200							&	!								&	!	get the files to be studied quickly so we can 		&	!	get out of the directory				&2000	\ close #2%							&	\ restore #1%							&	\ l%= 0%							&	\ k%= 0%							&	\ open  "TEMP.1" for output as file #3%, virtual		&	\ open "TEMP.2"  for output as file #4%, virtual		&	\ first%= 0%							&	\ old.ver%= -10%						&	!								&	!	get out of directory file				&	!	r      eset command file to determine dispositions		&2050	\ go to 2100	if eof%= 1%					&	\ get #1%							&	!								&	!	get a record with a file to be studied			&2055	\ tt%= instr(1%,file.key$,";")					&	\ version$= right(file.key$,tt%+1%)				&	\ desc$   = left (file.key$,tt%-1%)				&	\ ver%= fn.oct.to.int%(version$)						&	\ desc$= file.name$ + period$ + extension$			&	!								&	!	massage data						&2056	\ go to 2075	if desc$= old.desc$				&	\ go to 2060	if first%= 0%					&	!								&	\ go to 2058	if old.ver%= s      tored%				&	\ temp1$= fn.int.to.oct$(old.ver%)				&	\ temp1$= fn.strip$(temp1$)					&	\ print "-";temp1$;						&	\ position%= position% + len(temp1$) + 1%			&2058	\ tabit$= string$(45%-position%,32%)				&	\ print tabit$;"Action (Kill,Purge,CR_Keep)";			&	\ input action$							&	\ action$= edit$(action$,32%)					&	\ tab.purge$(l%)= old.desc$	if action$= "P"			&	\ tab.kill$(k%)= old.desc$	if action$= "K"			&	\ l%= l% + 1%			if action$= "P"			&	\ k%= k% + 1%			if action$= "K"			&2060	\ go to 2100			if eof%= 1%      			&	\ position%= 0%							&	\ position%= len(desc$)						&	\ print desc$;							&	\ tabit$= string$(18%-position%,32%)				&	\ print tabit$;							&	\ position%= 25%						&	\ old.desc$= desc$						&	\ old.ver%= -10%						&	\ first%= 1%							&	!								&	!	on a break determine action				&	!	if action is needed, write out file to appropriate	&	!	virtual file						&	!	then print next file spec and update control fields	&2075	\ t%= 0%							&	\ t%= 1%	if (ver% <> (old.ver%+ 1%))			&	\ t1%= 0%							&	\ t2%= 0%      							&	\ t2%= 1%	if ((t%=1%) and (old.ver%<> -10%))		&	\ t3%= 0%							&	\ stored$= fn.int.to.oct$(stored%)				&	\ temp1$= fn.int.to.oct$(old.ver%)				&	\ t3%= 1%	if ((t2%= 1%) and (temp1$<>stored$))		&	!								&	\ temp2$= fn.int.to.oct$(ver%)					&	\ stored%= ver%			if t%= 1%			&	\ temp1$= fn.strip$(temp1$)					&	\ temp2$= fn.strip$(temp2$)					&	\ print "-";			if t3%= 1% and old.ver% <> -10%	&	\ print temp1$;			if t3%= 1% and old.ver% <> -10%	&	\ print ",";			if t2%= 1%			&	\ print temp2$;			if t%= 1%	      		&	\ position%= position% + len(temp2$)	if t%= 1%		&	\ position%= position% + len(temp1$)	if t2%= 1%		&	\ old.ver%= ver%						&	\ go to 2050							&	!								&	!	if a break in versions, print the extreme versions	&	!	then update version control fields			&2100	\ tab.purge$(l%)= "###"						&	\ tab.kill$(k%)= "###"						&	\ close#1%							&	\ print 							&	\ print "Type PROCEED to execute your commands";		&	\ input response$						&	\ go to 2500	if response$ <> "PROCEED"			&	\ a%= fn.vt.create%						&	!						      		&	\ a$= fn.int.to.oct$(a%)					&	\ a$= fn.strip$(a$)						&	\ command$= "ASN SY:=SY:/TERM=VT" + A$ + ":"			&	\ task$= "MCR..."						&	\ gosub 20001							&	!								&	\ command$= "INS LB0:[1,54]PIPANS/TASK=...CLN"			&	\ return%= 1%							&	\ gosub 20001							&	!								&	\ task$= "...CLN"						&	\ vt.cmd$= "CLN"						&	\ a%= fn.task.init%(task$)					&	\ l%= 0%							&	\ k%= 0%							&	\ go to 10001							&	!								&	!	does user really want to do this			&	!	if YES, initiate PIP over virtual terminal		&21      25	\ go to 2200	if ex.del$(m%)= "###"				&		\ pip$= uic$ + "*." + ex.del$(m%) + ";*/de"		&		\ pip$= edit$(pip$,2%)					&		\ a%= fn.vt.write.to%(pip$)				&		\ m%= m% + 1%						&	\ go to 10001							&	!								&	!	do all *.<ext> deleteions				&2200	\ go to 2300	if tab.kill$(l%)= "###"				&	\ command$= edit$( uic$ + tab.kill$(l%) + ";*/de" , 2%)		&	\ a%= fn.vt.write.to% (command$)				&	\ l%= l% + 1%							&	\ go to 10001							&	!								&	!	delete all files which user asked to have deleted	&2300	\ go to 2400	      if tab.purge$(k%)= "###"			&	\ command$= edit$( uic$ + tab.purge$(k%) + purge$ , 2%)		&	\ a%= fn.vt.write.to% (command$)				&	\ k%= k% + 1%							&	\ go to 10001							&	!								&	!	purge all files which the user asked to have purged	&2400	\ a%= fn.vt.eof%						&	\ sleep 10							&	\ a%= fn.vt.done%						&	!								&	!	send CTRL-Z to PIP					&	!	get rid of virtual terminal				&2500	\ close #t%	for t%= 1% to 12%				&	\ kill "TEMP.1"							&	\ kill "TEMP.2"							&	\ kill "TEMP.3"							&	\ task$= "MCR..."		      				&	\ command$= "REM ...CLN"					&	\ return%= 1%							&	\ gosub 20001							&2505	\ call exits2 (1%,0%)						&	!								&	!	exit							&10001	\ GO TO 10050		IF OUT.FLAG% <> 0%			&	\ GO TO 2125		IF IN.FLAG%  <> 0%			&	\ GO TO 10100		IF EX.FLAG%  <> 0%			&	\ SLEEP 1							&	\ GO TO 10001							&	!								&	!	Check what kind of I/O needs looking after		&	!	If nothing has happened, wait 1 second and try again	&10050	\ LINE$= FN.READ.RESPONSE$					&	\ T%= INSTR(1%,LINE$,"PIP>")				&	\ GO TO 10001	IF T% > 0% O      R S% > 0% OR R% > 0%		&	!								&	!	If it is just a prompt - in.flag will be set		&	!								&	!								&	\ T%= INSTR(1%,LINE$,"PIP")					&	\ LINE$= LEFT(LINE$,T%-1%) + RIGHT(LINE$,T%+3%)	IF T% > 0%	&	\ GO TO 10001	IF EDIT$(LINE$,2%)= ""				&	\ PRINT								&	\ PRINT "% Error "						&	\ PRINT								&	\ PRINT edit$(LINE$,128%)					&	\ PRINT								&	\ GO TO 10001							&	!								&	!	Read the response line.  				&	!	print the response to the user.		&10100	\ RETURN		IF EX% < 2%				&	\ PRINT								&	\ PRINT       "? FATAL error - spawned task exited with error status."&	\ PRINT "	The bad command line is:"			&	\ PRINT "	";command$					&	\ PRINT								&	\ CALL EXITS2(2%,0%)						&	!								&	!	Go get next command line if exit with success		&	!	Otherwise, print fatal error message & exit with failure&15100	!$**************************************************************&	!                                                               &	!                                                               &	! 	Octal to Inte      ger conversion				&	!                                                               &	!                                                               &	!***************************************************************&15101	\ DEF FN.OCT.TO.INT%(A$)					&	\ HIGH%= 0%							&	\ HIGH%= NOT 32767%	IF (LEN(A$)= 6 ) AND LEFT(A$,1%)= "1"	&	\ LOW$= A$							&	\ LOW$= RIGHT(A$,2%)	IF (LEN(A$)= 6) AND LEFT(A$,1%)= "1"	&	!								&	!	Separate out the signed part				&	!								&	\ D%= 0%							&	\ B%= LEN(A$)							&	\       FOR Z%= 0% TO 4%						&		\ GO TO 15110	IF B%- Z% <= 0%				&		\ C$= MID(A$,B%-Z%,1%)					&		\ D%= VAL(C$)*8%**Z% + D%	if  c$ <> " "		&	\ NEXT Z%							&	!								&	!	Convert the low part to an integer			&15110	\ FN.OCT.TO.INT%= HIGH% OR D%					&	\ FNEND								&	!								&	!	Put the bits back together				&15200	!$**************************************************************&	!                                                               &	!                                                               &	!       	Integer to Octal Conversion				&	!                                                               &	!                                                               &	!***************************************************************&15201	DEF FN.INT.TO.OCT$(A%)						&	\ D$= ""							&	\ HIGH$= "0"							&	\ HIGH$= "1"	IF (A% AND (NOT 32767%) ) <> 0%			&	\ LOW%= A% AND 32767%						&	!								&	!	Determine high order Octal digit			&	!	Separate off the low order				&15205	\ FOR Z%= 4% TO 0%   STEP -1%					&		\ C      %= 8%**Z%						&		\ D%= LOW%/C%						&		\ LOW%= LOW%- D%*C%					&		\ D$= D$ + NUM1$(D%)					&	\ NEXT Z%							&	!								&	!	Convert the low order part to Octal			&15207	\ D$= HIGH$ + D$						&15210	\ FN.INT.TO.OCT$= D$						&	\ FNEND								&	!								&	!	Return converted answer					&15300	def fn.strip$(a$)						&	\ t$= a$							&	\ for Z%= 1% to 6%						&		\ s%= 0%						&		\ s%= 1%	if left(t$,1%)= "0"			&		\ t$= right(t$,2%)		if s%= 1%		&		\ go to 15310			if s%= 0%		&	\ next Z%							&15310	\ fn.strip$= t      $							&	\ fnend								&19000	\ resume 2000	if err=11 and erl=1200				&	\ resume 1030	if err= 11 and erl=1025				&	\ resume 1040	if err=11 and erl=1035				&	\ resume 2500	if err=11 and erl= 2100				&	\ resume 2505	if err= 5 and erl= 2500				&	\ resume 2100	if err=11 and erl= 2058				&	\ if ((err=11 and (erl=2050))			&		or ( err=55 and erl= 2058) )				&		then 	eof%= 1%					&		\ file.name$= "??????"					&		\ resume 2055						&	!								&	!	handle end of file on various files			&19900	\ print								&	\ clos      e #t%	for t%= 1% to 12%				&	\ on error go to 0						&	!								&	!	unexpected error trap					&28001	!$**************************************************************&	!                                                               &	!                                                               &	! 	Spawn a task with a virtual terminal			&	!                                                               &	!                                                               &	!************************************      ***************************&	!								&	\ DEF  FN.TASK.INIT% (TASK$)				&	!								&	!								&	\ VT.A$= TASK$							&	\ VT.A$= LEFT(TASK$,6%)	IF LEN(TASK$) > 6%			&	\ CALL ASTO50 (LEFT(VT.A$,3%),TEMP1%,ASTO50.ERR1%)			&	\ CALL ASTO50 (RIGHT(VT.A$,4%),TEMP2%,ASTO50.ERR2%)		&	\ VT.NAME%(0)= TEMP1%						&	\ VT.NAME%(1)= TEMP2%						&	!								&	!	Convert the task name to RAD50 - truncate if necessary	&	!								&	\ EX.FLAG%,IN.FLAG%,OUT.FLAG%= 0%					&	\ EV.FLG%= 31%							&	\ CALL VTINIT BY REF (VT.NAME%(),E      V.FLG%,EX.FLAG%,IN.FLAG%,OUT.FLAG%,VT.CMD$,VT.ERR%)&	\ GO TO 28005	IF (ASTO50.ERR1% <> 0% ) OR (ASTO50.ERR2% <> 0%)&	\ GO TO 28005	IF VT.ERR% <> 1%				&	!								&	\ FN.TASK.INIT%= 1%						&28004	\ FNEND								&	!								&	!	Convert the task name to RAD50, spawn the task		&	!	pass the macro AST routines the addresses of various flags&28005	\ FN.TASK.INIT%= 0%						&	\ GO TO 28004							&	!								&	!	Notify main program that Initialization failed		&28008	DEF FN.VT.EOF%							&	\ CALL QIOEOF							&	\ FN.VT      .EOF%= 1%						&	\ FNEND								&	!								&	!	Force EOF						&28010	!$**************************************************************&	!                                                               &	!                                                               &	! 	Remove the virtual terminal				&	!                                                               &	!                                                               &	!***************************************************************&	!								&	      \ DEF FN.VT.DONE%						&	\ CALL VTREM(VT.ERR%)						&	\ GO TO 28012	IF VT.ERR% <> 1%				&	\ FN.VT.DONE%= 1%						&28011	\ FNEND								&	!								&	!	Remove the virtual terminal				&28012	\ FN.VT.DONE%= 0%						&	\ GO TO 28011							&	!								&	!	Error processing for cleanup routine			&28020	!$**************************************************************&	!                                                               &	!                                                               &	! 	Create a virtual       terminal				&	!                                                               &	!                                                               &	!***************************************************************&28021	\ DEF FN.VT.CREATE%						&	\ CALL VTMAKE(VTERM.NUM%)					&	\ FN.VT.CREATE%=VTERM.NUM%					&	\ FNEND								&	!								&	!	Create a virtual terminal				&28025	!$**************************************************************&	!                                                               &	!                                                                     &	! 	Write a command to the offspring			&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ DEF FN.VT.WRITE.TO% (LINE$)					&	!								&	\ VT.LENGTH%= LEN(LINE$)						&	\ TERMINAL.LINE.2$= LINE$					&	\ GO TO 28027	IF LINE$= ""					&	\ CALL QIOOUT BY REF (TERMINAL.LINE.2$,VT.LENGTH%)			&	\ I      N.FLAG%= IN.FLAG% - 1%						&	\ FN.VT.WRITE.TO%= 1%						&	\ GO TO 28028							&28027	\ CALL QIODUM 							&	\ IN.FLAG%= IN.FLAG% - 1%						&	\ FN.VT.WRITE.TO%= 1%						&	!								&	!	If null response, write with a special function code	&28028	\ FNEND								&	!								&	!	Write a line of command to the offspring task via a 	&	!	QIO to the virtual terminal driver.  			&28050	!$**************************************************************&	!                                                               &	!                                                                     &	! 	Read a response from the offspring			&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ DEF FN.READ.RESPONSE$						&28055	\ CALL QIOIN BY REF (TERMINAL.LINE.1$)				&	\ OUT.FLAG%= OUT.FLAG% - 1%						&	\ FN.READ.RESPONSE$= TERMINAL.LINE.1$				&	\ TERMINAL.LINE.1$= ""						&28056	\ FN      END								&32767	\ END           •M }kQÁ› 8$     Ô  	.MACRO	LPUT$,TEXT,LENGTH,ERROR	.MCALL	DIR$;;	LPUT$ allows programmer to write messages to user terminal ;	(and to log file, if selected) outside the context of a dialog;	but using the TALKC directives;	MOV	'TEXT',HELP+Q.IOPL	;SPECIFY ADDRESS OF TEXT TO QIO	MOV	'LENGTH',HELP+Q.IOPL+2	;SPECIFY LENGTH OF TEXT TO QIO	DIR$	#HELP,ERROR		;USE TALKC HELP QIO FOR OUTPUT;;	Note logging will take place if TLKLOG is set to 1, just as in;	the context of a dialog.;	.ENDM	LPUT$Ô         ë~ðkQÁ› 8$        	.ENABL	LC	.MACRO	TLKDF$		;DEFINES TALK CONTROL BLOCK OFFSETS;;	Note that these offsets are globally defined, but don't follow the;	naming convention.  That's because we want these to be mnemonic,;	but all reasonable standard names are used by the M+ group.;TLPRM	==	0		;THE PROMPT STRING POINTERTLPRML	==	2		;THE PROMPT STRING LENGTH;TLDEF	==	4		;THE DEFAULT STRING POINTERTLDEFL	==	6		;THE DEFAULT STRING LENGTH;TLHLP	==	10		;THE HELP STRING POINTERTLHLPL	==	12		;THE HELP STRING LENGTH;TLTYP	==	14		;THE TYPE       OF RESPONSE EXPECTED STORED HERE				;0 FOR A NUMBER				;+ FOR A LIST SEARCH				;- FOR A USER SPECIFIED STRING;TLSTYP	==	15		;SUB-TYPE OF RESPONSE TYPE				;IF TYPE IS 0, SUB-TYPE 0 IS ANY NUMBER				;	     , SUB-TYPE <> 0 IS A NON-NEGATIVE NUMBER				;IF TYPE IS 1, SUB-TYPE 1 IS YES/NO - STRING IN TALK				;            , SUB-TYPE <> 1 IS USER SPECIFIED LSIT;TLANS	==	16		;THE ANSWER STRING POINTER				; (OR THE BINARY NUMBER IF TYPE WAS 0TLANSL	==	20		;THE ANSWER STRING LENGTH;;TLSTAT	==	22		;THE STATUS OF THE AN   .  SWER				; 0  IF CTRL-Z				;-1 IF ESC				;+1 IF STRING				;+N IF NTH LIST ELEMENT SELECTED;TLLISS	==	24		;ADDRESS OF 1ST STRING IN LIST;TLSIZE	==	26		;# OF STRINGS IN LIST;;	These offsets must be defined once in a program.  They are used by;	TALKC to get around in the TALK data structure.;	.ENDM	TLKDF$.         _XEykQÁ› 8$ø      	.ENABL	LC	.MACRO	SPEAK$,CTLBLK,ESC,CTRLZ,ERR	MOV	#'CTLBLK',R5			;R5 POINTS TO TALK DATA STRUCTURE	CALL	TALKC				;CALL THE 'TALK CLEARLY' ROUTINE						;TO ACTUALLY DO DIALOG	BCC	.+6				;ANY DIRECTIVE ERRORS?	JMP	'ERR'				;YES, GO TO ERROR ROUTINE;	TST	TLSTAT(R5)			;WAS ESC OR CTRLZ THE RESPONSE?	BMI	.+6				;YES, IT WAS ESC	BEQ	.+10				;YES, IT WAS CTRL-Z	BR	.+12				;NO, NORMAL RESPONSE - TO ;MAIN FLOW;	JMP	'ESC'				;JUMP TO USER SPECIFIED ESC ROUTINE	JMP	'CTRLZ'				;JUMP TO USER SPECIFIED CTRL-Z ROUTINE;;	U      ser main line code begins again here, R5 still points to the control;	block.  All registers but R5 have been preserved.  The control block;	contains a Basic+2 string descriptor if the answer is a string.  If the;	answer is a number, the control block contains the binary number (again,;	it is analogous to Basic+2.);;	In addition, if a list of strings was specified for matching, the control;	block contains the number of the list element selected and the string;	pointer points to the whole, programmer-specifie   Ì   d, matched list element,;	NOT to the user specified subset of the list element which gave the match.;;	Please note that the 3 jumps for ESC, CTRL-Z, and directive error are;	JUMPs, not JSRs.;	.ENDM	SPEAK$Ì          4}GkQÁ› 8$     ê   	.MACRO	TALK$R,BLOCK,POINTER,LENGTH;;	TALK$R allows dynamic respecification of default strings;	MOV	'POINTER','BLOCK'+TLDEF		;RESPECIFY DEFAULT STRING ADDRESS	MOV	'LENGTH','BLOCK'+TLDEFL		;RESPECIFY DEFAULT STRING LENGTH	.ENDM	TALK$R ê          4}ÀDkQÁ› 8$        	.TITLE	TALKC	- THE MACRO DIALOG SUB-ROUTINE - VERSION 2;;	TALKC is for 'talk clearly', TALK is still the entry point for;	the version 1 routine.;	.SBTTL	TALK DATA DEFINITIONS	.ENABL	LC	.MCALL	DIR$,QIOW$;;	Local Macro definitions;	.MACRO	LOTPUT,DIRECT,ERROR;;	This macro does a QIO for terminal output (DIRECT) and if;	user switch is set, it will log this output on an already;	opened file  (LUN defined by task-builder);	DIR$	#'DIRECT','ERROR'		;DO THE TERMINAL OUTPUT;	TST	TLKLOG			;DOES PROGRAM WANT OUTPUT LO      GGED?	BEQ	.+32			;NO, ON TO TALK CODE	MOV	'DIRECT'+Q.IOPL,L'DIRECT'+Q.IOPL	;DETERMINE WHERE LOG 	MOV	'DIRECT'+Q.IOPL+2,L'DIRECT'+Q.IOPL+2	;OUTPUT IS	DIR$	#L'DIRECT','ERROR'	;YES, DO THE OUTPUT TO THE LOG FILE;	.ENDM	LOTPUT;;	.MACRO	LINPUT,DIRECT,ERROR;;	This macro does a QIO for terminal input (DIRECT) and if ;	user switch is set, it will log this input on an already;	opened file (lun defined by task-builder);	DIR$	#'DIRECT','ERROR'	;DO THE TERMINAL INPUT;	TST	TLKLOG			;DOES PROGRAM WANT OUTPUT LOGGED?	BEQ	      .+16			;NO, ON TO TALK CODE	MOV	IOSTAT+2,L'DIRECT'+Q.IOPL+2	; OUTPUT # CHARACTERS INPUT	DIR$	#L'DIRECT','ERROR'	;YES, DO THE OUTPUT TO THE LOG FILE;	.ENDM	LINPUT	.PAGE	.PSECT	TALKD,D,RW,GBL,REL,CON;;********************************************************;;;	D A T A    F O R    T A L K    R O U T I N E;;;******************************************************;CR	=	15			;CARRIAGE RETURNLF	=	12			;LINE FEEDFF	=	14			;FORM FEEDNL	=	0			;NULLESC	=	33			;ESCAPE CHAREACTERCTRLZ	=	32			;CTRL-Z CHARACTER;;;	Use glob      al definitions in task-build to specify LUN & function codes;;	GBLDEF=TLUN:lun #	in the task-build command file to specify the;	lun for terminal I/O;;	GBLDEF=LLUN:lun #        in the task-build command file to specify the;	lun for logging file;;	GBLDEF=TFUNC:num	where num is equal to either IO.WBT or IO.WVB;	This is only used for terminal I/O, logging QIO is always IO.WVB.;TEFN	==	30.			;NORMALLY EVENT FLAG 30					;IF A GLOBAL PATCH IS USED TO RE-DEFINE					;THIS, A TAS-BUILD DIAGNOSTIC WILL OCCUR.;;	These       values may be changed via GBLDEF staements at task build time;HELP::	QIOW$	TFUNC,TLUN,TEFN,,IOSTAT,,<0,0,0>	;HELP TEXT QIOBLANK::	QIOW$	TFUNC,TLUN,TEFN,,IOSTAT,,<BLANKL,2,0>	;BLANK LINE QIOPROM:	QIOW$	TFUNC,TLUN,TEFN,,IOSTAT,,<0,0,0>	;PROMPT QIO;LHELP::	QIOW$	IO.WVB,LLUN,TEFN,,IOSTAT,,<0,0,0>	;HELP TEXT QIOLBLANK::QIOW$	IO.WVB,LLUN,TEFN,,IOSTAT,,<BLANKL,2,0>	;BLANK LINE QIOLPROM:	QIOW$	IO.WVB,LLUN,TEFN,,IOSTAT,,<READBF,0,0>	;PROMPT QIO;READL:	QIOW$	IO.RVB,TLUN,TEFN,,IOSTAT,,<READBF,80.>	;READ LINE QIOLREADL      :	QIOW$	IO.WVB,LLUN,TEFN,,LSTAT,,<READBF,0,0> ;LOG A LINE OF INPUT;;	Note that READ with PROMPT can not be used, since TALK is to work;	on virtual terminals also.  This form of QIO does not work in that;	case.;;;	.NLIST	BEXERBUF:	.BYTE	CR,LF,LF	.ASCII	/% Invalid response - try again/	.BYTE	CR,LF,LF				;INVALID INPUT ERROR MESSAGE;S.ER	=	. - ERBUF;ER1:	.BYTE	CR,LF,LF	.ASCII	/% Response does not match any allowed list element./	.BYTE	CR,LF,LF				;Non-matching list elementS.ER1	=	. - ER1;;ER2:	.BYTE	CR,LF,LF	.      ASCII	/% Numeric response required/	.BYTE	CR,LF,LF				;Non-numeric response errorS.ER2	=	. - ER2;;ER3:	.BYTE	CR,LF,LF	.ASCII	/% Default response not allowed here/	.BYTE	CR,LF,LF				;No default response errorS.ER3	=	. - ER3;ER4:	.BYTE	CR,LF,LF	.ASCII	/% A non-negative integer is required./	.BYTE	CR,LF,LFS.ER4	=	. - ER4			;ERROR MESSAGE FOR NON-NEGATIVE NUMBERS;ER5:	.BYTE	CR,LF,LF	.ASCII	/% A strictly positive integer is required./	.BYTE	CR,LF,LF		S.ER5	=	. - ER5		;ERROR MESSAGE FOR STRICTLY POSITIVE NUMBER;;      YESNO:	.ASCIZ	/YES/	.ASCIZ	/NO/	.BYTE	ESC					;Canned YES/NO response;;;READBF:	.BLKB	80.			;BUFFER FOR INPUT MESSAGESTASH:	.BLKB	80.			;BUFFER FOR PROMPT + DEFAULT;	.EVENTLKLOG::	.WORD	0		;SWITCH TO CONTROL LOGGINGTLKPRT::	.WORD	0		;SWITCH TO CONTROL SUPPRESSION OF NON-					;PRINTING ASCII CHARACTERSTLKLWR::	.WORD	0		;SWITCH TO CONTROL LOWER ->UPPER CASE 					;CONVERSIONIOSTAT:	.BLKW	2			;I/O STATUS BLOCK FOR QIO'SLSTAT:	.BLKW	2			;I/O STTATUS BLOCK FOR LOG OF READ QIOTEMP:	.BLKW	2			;WORK AREA FOR INTEGER       CONVERSION;BLANKL:	.BYTE	CR,LF			;BLANK LINE BUFFER	.page	.psect	talki,ro,rel,gbl,con,i	.sbttl	macro dialog function code	.ENABL	LSB	.ENABL	LC;;***************************************************;;;	D I A L O G   F U N C T I O N;;;************************************************;;;	Linkage to this routine is via the SPEAK macro.  It uses R5;	to point to a TALK control block which describes the prompt,;	default, & help strings; specifies the nature of the response;	expected (string,number, one of a list of       pre-specified strings);;	It describes the output (string or number) and gives a coded;	description of the answer which identifies ESC & CTRL-Z conditions;	for the SPEAK macro to use and identifies which element in a list was;	chosen (if appropriate).;	If a list of pre-determined string responses is used, the control;	block also has the descriptor for that list;;;	ALL REGISTERS ARE PRESERVED.  R5 WAS ALTERED BY SPEAK MACRO, THOUGH.;;	Lun assignments for the terminal I/O , Log I/O and the I/O function;	code f      or terminal;	output (IO>WBT or IO.WVB) are each specified by task-build global ;	definitions.  See the Data PSECT above.;;	.PAGETALKC::	CALL	$SAVAL			;CO-ROUTINE TO SAVE R0-R5	LOTPUT	BLANK,375$		;PRINT A BLANK LINE;1$:	MOV	TLPRML(R5),R2		;LENGTH OF PROMPT STORED	MOV	#STASH,R1		;PROMPT + DEFAULT TARGET FIELD	MOV	TLPRM(R5),R0		;PROMPT STRING ADDRESS5$:	MOVB	(R0)+,(R1)+		;TRANSFER PROMPT STRING INTO BUFFER	SOB	R2,5$			;;	MOV	TLDEFL(R5),R2		;LENGTH OF DEFAULT STORED	BEQ	12$			;NO DEFAULT - SKIP THE SETUP	MOV	TL      DEF(R5),R0		;DEFAULT STRING ADDRESS					;R1 SET UP FROM PROMPT MOVE10$:	MOVB	(R0)+,(R1)+		;TRANSFER DEFAULT STRING INTO BUFFER	SOB	R2,10$			;;12$:	MOV	#STASH,PROM+Q.IOPL	;SET UP PROMPT POINTER	MOV	TLPRML(R5),PROM+Q.IOPL+2	;SET UP PROMPT QIO LENGTH	ADD	TLDEFL(R5),PROM+Q.IOPL+2	; TO BE SUM OF PROMPT + DEFAULT;;	This code takes the user specified prompt & default strings and assembles;	them in a work area used by the PROMPT QIO ;	MOV	#READBF,R1		;ADDRESS OF READ BUFFER	MOV	#40.,R2			;80 BYTES TO CLEAR15$:	MOV	      #"  ,(R1)+		;CLEAR READ BUFFER	SOB	R2,15$			;;	CLR	TLSTAT(R5)		;INITIALIZE RETURN STATUS TO  CTRL-Z	CLR	TLANSL(R5)		;INITIALIZE ANSWER LENGTH TO 0	MOV	#READBF,TLANS(R5)	;INITIALIZE ANSWER ADDRESS POINTER					;	FOR STRING RESPONSE;;	These instructions initialize internal work areas and final answer cells;	LOTPUT	PROM,375$		;PRINT THE PROMPT	LINPUT	READL,375$		;READ THE ANSWER	MOV	IOSTAT+2,R2		;TEMPORARY STORE FOR # CHARACTERS	MOV	IOSTAT,R1		;TEMPORARY STORE FOR TEMINATION CHAR	LOTPUT	BLANK,375$		;FORCE CR-LF       FOR NICE SPACING;	MOV	R2,IOSTAT+2		;RESTORE # OF CHARACTERS	MOV	R1,IOSTAT		;RESTORE TERMINATION CHARACTER	CMPB	IOSTAT+1,#ESC		;WAS RESPONSE AN ESC?	BNE	20$			;NO, TRY NEXT CASE	MOV	#-1,TLSTAT(R5)		;MARK STATUS AS ESC	JMP	350$			;EXIT TALK;20$:	CMPB	IOSTAT,#IE.EOF		;WAS RESPONSE CTRL-Z?	BNE	25$			;NO, ITS A REAL RESPONSE					;STATUS ALREADY SET	JMP	350$			;EXIT TALK;;	We have now printed the prompt, read the response, & processed;	possible ESC or CTRL-Z responses	.PAGE;25$:	MOV	#1,TLSTAT(R5)		;SET STATUS FO      R REAL RESPONSE	TST	R2			;NON-NULL RESPONSE?	BNE	40$			;YES, GO PROCESS IT					;NO - MOVE IN DEFAULT	CMP	TLDEFL(R5),#5		;NON-TRIVIAL RESPONSE?	BGE	27$			;OK - CONTINUE	JMP	430$			;NO - PROMPT AGAIN -- TOO FAR FOR BRANCH;27$:	MOV	TLDEFL(R5),R2		;STORE DEFAULT LENGTH	SUB	#4,R2			;SUBTRACT OFF FORMATTING CHARACTERS	MOV	R2,-(SP)		;SAVE TOTAL FOR NEXT STEP;	MOV	TLDEF(R5),R0		;DEFAULT STRING ADDRESS FOR SOURCE MOVE	INC	R0			;BUMP PAST 1ST DEFAULT CHARACTER - <	MOV	#READBF,R1		;READ BUFFER ADDRESS FOR TARGET OF MO      VE30$:	MOVB	(R0)+,(R1)+		;MOVE DEFAULT INTO READ BUFFER	SOB	R2,30$			;	MOV	(SP)+,R2		;RESET TOTAL LENGTH OF DEFAULTED ANSWER;;	The user took the default response.  The pre-specified default string;	is moved into the read buffer after stripping off the decoration.;;40$:	MOV	#READBF,R0		;R0 POINTS TO START OF FINAL MESSAGE	MOV	R0,R1			;FINAL MESSAGE IS GOING TO BE COMPRESSED					;SO WE CAN USE THE SAME WORK AREA FOR 					;THE STRIPPED MESSAGE45$:	TST	TLKPRT			;SKIP PRINTABLE CHARACTERS?	BNE	47$			;NO	CMPB	(R0      ),#41		;IS IT IN THE PRINTABLE ASCII RANGE?	BMI	55$			;NO, SKIP THE CHARACTER	CMPB	#176,(R0)		;	BMI	55$			;NO, SKIP THE CHARACTER;	47$:	TST	TLKLWR			;LOWER CASE CONVERSION SUPPRESSED?	BNE	50$			;YES	CMPB	(R0),#141		;IS IT LOWER CASE?	BMI	50$			;NO, DON'T CHANGE IT	CMPB	#172,(R0)		;	BMI	50$			;NO, DON'T CHANGE IT;	BICB	#40,(R0)		;YES, ITS LOWER CASE - CONVERT IT TO UPPER;50$:	MOVB	(R0),(R1)+		;SHIFT CHARACTER IN STRIPPED BUFFER	INC	TLANSL(R5)		;INCREMENT COUNT OF NON-STRIPPED CHAR.;55$:	TSTB	(R0)+			;GET NEX      T INPUT CHARACTER	SOB	R2,45$			;TRY FOR ANOTHER CHARACTER;	TST	TLANSL(R5)		;DID WE STRIP AWAY THE ENTIRE ANSWER?	BEQ	25$			;YES, TAKE DEFAULT - PROGRAMMER MUST					;MAKE SURE DEFAULT ENDS UP NON- ZERO;;	Using either the input response or the defaulted response, the answer;	is stripped of non-printing ASCII characters and lower case is ;	converted to upper case.  The final answer count is set up for;	string responses.	.PAGE;100$:	CMPB	READBF,#'?		;DID USER REQUEST HELP?	BNE	200$			;NO, TRY NEXT POSSIBILITY;	      LOTPUT	BLANK,375$		;PRINT A BLANK LINE FOR FORMATTING	MOV	TLHLP(R5),HELP+Q.IOPL	;ADDRESS OF HELP TEXT STRING	MOV	TLHLPL(R5),HELP+Q.IOPL+2	;LENGTH OF HELP TEXT TO QIO DPB	LOTPUT	HELP,375$		;PRINT HELP TEXT	LOTPUT	BLANK,375$		;PRINT A BLANK LINE FOR FORMATTING	LOTPUT	BLANK,375$		;PRINT A BLANK LINE FOR SPACING	JMP	1$			;SEE IF IT HELPED THE USER;;	The user asked for HELP.  We printed out the help text & reprompted him.;;200$:	TSTB	TLTYP(R5)		;IS AN INTEGER RESPONSE REQUIRED?	BNE	300$			;NO, TRY NEXT POSSIBILI      TY;	MOV	R5,-(SP)		;SAVE POINTER TO CONTROL BLOCK	MOV	TLANSL(R5),R4		;CONVERT ASCII STRING TO SIGNED NUMBER	MOV	#READBF,R5		;SET UP REGISTERS FOR SYSTEM CALL TO 	MOV	#TEMP,R3		;	JSR	PC,.DD2CT		;DO THE CONVERSION	MOV	(SP)+,R5		;RESET POINTER TO CONTROL BLOCK	BCC	205$			;CONVERSION WENT OK	JMP	420$			;ILLEGAL VALUE - PRINT ERROR & TRY AGAIN;205$:	TST	TEMP+2			;DETERMINE SIGN OF NUMBER	BGT	220$			;STRICTLY POSITIVE ALWAYS VALID	BEQ	210$			;0 ONLY OK IF SUB-TYPE IS 0 OR -	BMI	215$			;- ONLY OK IF SUB-TYPE IS  -	      JMP	375$			;SHOULD NEVER GET HERE;210$:	TSTB	TLSTYP(R5)		;IF SUB-TYPE IS 0 OR -1, 0 ANSWER IS OK	BLE	220$			;ITS OK	JMP	450$			;ERROR - STRICTLY POSITIVE NEEDED;215$:	TSTB	TLSTYP(R5)		;IF SUB-TYPE IS -1, - ANSWER IS OK	BMI	220$			;ITS OK	JMP	440$			;ERROR - NON-NEGATIVE NEEDED;;220$:	MOV	TEMP+2,TLANS(R5)	;STORE ANSWER	MOV	#2,TLANSL(R5)		;SET UP ANSWER LENGTH	BR	350$			;EXIT TALK;;	The answer is expected to be a number.  The response string is passed;	to a system routine which converts the ASCII string to a       signed binary;	number.  The return values  are set up & talk exits.	.PAGE;;300$:	BMI	350$			;IF MINUS, IT ISN'T A LIST RESPONSE					;IN THIS CASE IT WAS A STRING & W'ERE DONE	MOV	#YESNO,R0		;SET UP FOR ADDRESS OF INTERNAL YES/NO STRING	TSTB	TLSTYP(R5)		;SPECIAL YES/NO CASE?	BNE	307$			;YES	MOV	TLLISS(R5),R0		;ADDRESS OF 1ST LIST RESPONSE307$:	MOV	R0,R1			;COPY REGISTER VALUE	MOV	#1,R4			;INITIALIZE LIST COUNTER;310$:	MOV	#READBF,R2		;GET START OF RESPONSE STRING	MOV	TLANSL(R5),R3		;LET LENGTH OF RESPONSE ST      RING	CLR	TEMP			;INITIALIZE COUNTER FOR FINAL STRING LENGTH;315$:	CMPB	(R0)+,(R2)+		;COMPARE RESPONSE TO LIST ELEMENT	BNE	325$			;NO MATCH ON THIS ELEMENT - TRY NEXT	INC	TEMP			;INCREMENT LENGTH OF STRING	TSTB	(R0)			;END OF LIST STRING?	BEQ	320$			;YES	SOB	R3,315$			;POSSIBLE MATCH - KEEP MATCHING;317$:	TSTB	(R0)+			;DETERMINE FULL SSTRING LENGTH	BEQ	320$			;END OF STRING	INC	TEMP			;INCREMENT TOWARD FULL STRING COUNT	BR	317$			;LOOP THROUGH REMAINDER OF FIELD;320$:	MOV	R1,TLANS(R5)		;POINT TO WHOLE,PROGRA      MMER SPECIFIED STRING	MOV	R4,TLSTAT(R5)		;MATCHED - RETURN LIST # TO USER	MOV	TEMP,TLANSL(R5)		;MATCHED - RETURN FINAL STRING LENGTH	BR	350$			;EXIT TALK;325$:	TSTB	(R1)+			;SKIP TO NEXT LIST STRING	BNE	325$			;	MOV	R1,R0			;RESET TO START OF NEXT ELEMENT	INC	R4			;MARK FOR NEXT LIST ELEMENT	CMPB	(R1),#ESC		;END OF SET OF LIST STRINGS?	BNE	310$			;NO, TRY NEXT LIST STRING;	BR	410$			;NO MATCH ON ANY LIST ELEMENT - ERROR;;	The program expects some sub-set of some list element as the response;	this segment of       code does a match of the whole response to a sub-set;	of each string element.  A match occurs on the first matching sub-set;	it is the programmer's responsibility to make sure all sub-set matches;	will be unique.  If no match occurs on any list element, an error ;	message is printed & the user is prompted again.	.PAGE;350$:	CLC				;RETURN SUCCESS	RETURN				;RETURN IS THROUGH CO-ROUTINE SAVEAL;;375$:	SEC				;RETURN ERROR STATUS	RETURN				;RETURN IS THROUGH CO-ROUTINE SAVEAL;;;	Two 'returns' are processed he      re.  The successful conversation return;	and the failed return.  ;400$:	MOV	#ERBUF,HELP+Q.IOPL	;TAILOR QIO FOR ERROR TEXT	MOV	#S.ER,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT INVALID RESONSE MESSAGE	JMP	1$			;TRY AGAIN;410$:	MOV	#ER1,HELP+Q.IOPL	;TAILOR QIO FOR STRING ERROR	MOV	#S.ER1,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT ERROR MESSAGE	JMP	1$			;TRY AGAIN;420$:	MOV	#ER2,HELP+Q.IOPL	;TAILOR QIO FOR NON-NUMERIC ERROR MESSAGE	MOV	#S.ER2,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;	JMP	1$			;TRY AGAIN;430$:	MOV	#ER3,HE      LP+Q.IOPL	;TAILOR QIO FOR NO DEFAULT ERROR MESSAGE	MOV	#S.ER3,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT ERROR MESSAGE	JMP	1$			;TRY AGAIN;440$:	mov	#er4,help+q.iopl	;tailor qio for non-negative error message	MOV	#S.ER4,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT THE ERROR MESSAGE	JMP	1$			;TRY AGAIN;450$:	MOV	#ER5,HELP+Q.IOPL	;TAILOR QIO FOR STRICTLY POSITIVE ERROR	MOV	#S.ER5,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT THE ERROR MESSAGE	JMP	1$			;TRY AGAIN;;	These routines are the error message setup routines.  Th   l   ey tailor the;	QIO directive for the appropriate error text, print that text, & ;	try the input again.;	.ENDl          œwæ“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETDRV					&	!	Version:	01					&	!	Edit level:	01					&	!	Edit date:	DD-MMM-YY				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1977 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	1-1	9-FEB-79 BJD	DETERMINE SIZE OF DIREC		&	!					SPR # 252435		&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!*********************      ******************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!************************************************************      ***&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$*******************************************************      *******&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  --------------------      ----------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&901	\ DIM DRIVER.SIZE%(20)						&	!								&	!	Driver sizes are temporarily stored in this array	&	!	Used to decide if a LOAd command should be made		&1400	\ A%= 0%							&2000	!$*****      *********************************************************&	!                                                               &	!                                                               &	! 	SPECIFY 11M+ DRIVERS					&	!                                                               &	!                                                               &	!***************************************************************&	!								&	\ DRVPAR.SIZE%= 0%						&2005	\ FOR L%= 0% TO M.DRIVER.NUM%-1%				&		\ T%= FN.MAP.      SIZE(DRIVER.NAME$(L%))			&		\ DRIVER.SIZE%(L%)= T%					&		\ DRVPAR.SIZE%= DRVPAR.SIZE% + T%			&2006	\ NEXT L%							&	!								&	!	Determine the size of each map - 4K if no such map	&	!	Round to next multiple of 32				&	!	Store result as # of 32 word pieces			&	!	Incrememt driver partition size				&2100	\ FILE.NAME$= "[200,201]" + SYSTEM.NAME$ + ".DRV"		&	\ FILE.NAME$= EDIT$(FILE.NAME$,2%)				&	\ OPEN FILE.NAME$ FOR OUTPUT AS FILE #1%			&	!								&	!	Open the driver partition file				&2110	\ FOR L%= 0% TO       M.DRIVER.NUM% - 1%				&		\ DEVICE$= LEFT(DRIVER.NAME$(L%),2%)			&		\ PRINT #1%, "LOA " + DEVICE$ + ":/PAR=DRVPAR"		&				IF DRIVER.SIZE%(L%) > 0%		&2111	\ NEXT L%							&	\ CLOSE #1%							&	!								&	!	Create the file which loads the drivers via VMR		&3000	!$**************************************************************&	!                                                               &	!                                                               &	! 	ATS DRIVERS						&	!                                                                     &	!                                                               &	!***************************************************************&	!								&	\ ATS.DRVPAR.SIZE= 0						&3001	\ FOR L%= 0% TO ATS.DRIVER.NUM% - 1%				&		\ T= FN.MAP.SIZE(ATS.DRIVER.NAME$(L%))		&		\ ATS.DRVPAR.SIZE= ATS.DRVPAR.SIZE + T		&3005	\ NEXT L%							&	!								&	!	Compute the size of ATSDRV				&4000	!$**************************************************************&	!								&	!								&	!	MISCELLANEOUS       MAPS TO BE READ				&	!								&	!								&	!***************************************************************&	!								&	\ MTAACP.SIZE%= FN.MAP.SIZE("MTAACP")				&	\ SYSCOM.SIZE%= FN.MAP.SIZE("SYSCOM")				&	\ LDR.SIZE%  =  FN.MAP.SIZE("LDR")				&	\ TSTLIB.SIZE%= FN.MAP.SIZE("TSTLIB")				&	\ JOURNAL.SIZE%= FN.MAP.SIZE("JOURNL")				&	\ F11ACP.SIZE%= FN.MAP.SIZE("BIGFCP")				&	\ DIREC.SIZE%= FN.MAP.SIZE("DIRREC")				&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Determine sizes of miscellaneous items of variable s      ize	&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!*************************      **************************************&15100	!$**************************************************************&	!                                                               &	!                                                               &	! 	DETERMINE SIZE OF TASKS FROM MAP			&	!                                                               &	!                                                               &	!***************************************************************&	!								&15001	\ DEF FN.MAP.S      IZE(A$)						&	\ FN.MAP.SIZE= 0						&	\ ON ERROR GO TO 15050						&	\ B$= "[1,34]" + A$ + ".MAP"					&	\ B$= EDIT$(B$,2%)						&	\ OPEN B$ FOR INPUT AS FILE #5%					&15005	\ LINPUT #5%, MAP.LINE$						&	\ MAP.LINE$= EDIT$(MAP.LINE$,2%+4%+32%)				&	\ T%= INSTR(1%,MAP.LINE$,"TASKIMAGESIZE")			&	\ GO TO 15005	IF T%= 0%					&15010	\ T%= 1% + INSTR(1%,MAP.LINE$,":")				&	\ S%= INSTR(1%,MAP.LINE$,"WORDS")				&	\ GO TO 15075	IF (T%= 1%) OR (S%= 0%)				&	\ T$= MID(MAP.LINE$,T%,S%-T%)					&	\ T$= EDIT$(T$,2%+4%+32%      )					&	\ CLOSE #5%							&	\ FN.MAP.SIZE= VAL(T$)						&	\ GO TO 15080							&	!								&	!	Locate the line in the map file which has the		&	!	task image size.  Strip out the length of the 		&	!	image in words.  Convert it to an integer.		&15050	\ CLOSE #5%							&	\ RESUME 15075	IF ERR= 5 AND ERL= 15001			&	\ RESUME 15075	IF ERR= 11 AND ERL= 15005			&	\ RESUME 15075  IF ERR= 2 AND ERL= 15001			&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ ON ERROR GO TO 0						&	!								&	!	Errors can be no such file or EOF wit      hout finding key phrase&	!	Inthat case go to 15075					&	!	Anything else is a fatal error				&15075	\ FN.MAP.SIZE= 4096						&	\ FN.MAP.SIZE= 0	IF A$= "JOURNL"				&	\ GO TO 15080		IF A$= "JOURNL"				&	\ PRINT								&	\ PRINT "% We can't determine the size of ";B$;"."		&	\ PRINT "  We have assigned it a size of 4K words."		&	\ PRINT								&	\ CLOSE #5%							&	\ GO TO 15080							&	!								&	!	For these error conditions, return value of zero	&15080	\ ON ERROR GO TO 19000						&	\ FNEND								&19000	!$**      ************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P       S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!							   L  	&	!								&	!***************************************************************&	!								&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END L         ZŠ7x“Á› 8$€W   r   1010	\ VER.EDIT.NUM$ = "V1.1A"					!1.1A00&	!								 1.1A00&	!	Assign the current version/edit level #			 1.1A00&r          ë~<kQÁ› 8$        	.MACRO	TALK$,PROMPT,DEFAULT,HELP,TYPE,SUBTYP,LIST;;	To beautify the macro code line certain naming conventions are followed:;	;	All parameters must be less than 5 characters.  If cccc is a string;	parameter name, S.cccc is assumed to be equated to the length of that;	string.;;	Type should be 	0	- if a numeric response is desired;		      	+	- if a match to a member of a list of strings is desired;			-	- if a user-specified string is desired;;	Sub-type of +1 for a numeric response restricts answer to strictl      y ;		positive integers.;	Sub-type of 0 for a numeric response restricts answer to non-negative;		integers.;	Sub-type of -1 for a numeric response restricts answer to any valid;		integer.;;	Sub-type +1 for a list response restricts response to YES/NO, the;	string list is in talk itself.;	Sub-type 0 uses a user-specified string list.;;	If the user response is incompatible with the type code, TALK will;	print an error message and re-prompt.  This will continue until;	an acceptable type of response is obtained       from the user.;;	.EVEN;	.IF NDF	TLANS	.MCALL	TLKDF$	TLKDF$			;DEFINE TALK OFFSETS;	.ENDC$$$PC1	=	.		;IDENTIFYY START OF BLOCK	.BLKW	TLSIZE		;DEFINE A TALK CONTROL BLOCK$$$PC2	=	.		;STORE FOR FINAL RESET;;;.	=	$$$PC1 + TLPRM	;SPECIFY PROMPT ADDRESS	.WORD	'PROMPT'.	=	$$$PC1 + TLPRML	;SPECIFY PROMPT STRING LENGTH	.WORD	S.'PROMPT';;.	=	$$$PC1 + TLDEF	;SPECIFY DEFAULT ADDRESS	.WORD	'DEFAULT'.	=	$$$PC1 + TLDEFL	;SPECIFY DEFAULT STRING LENGTH	.WORD	S.'DEFAULT';;.	=	$$$PC1 + TLHLP	;SPECIFY HELP ADDRESS	.WORD	'HELP'   @  .	=	$$$PC1 + TLHLPL	;SPECIFY HELP STRING LENGTH	.WORD	S.'HELP';;.	=	$$$PC1 + TLLISS	;SPECIFY LIST STRINGS TOTAL LENGTH	.IIF	DF	LIST		.WORD	'LIST';;.	=	$$$PC1 + TLTYP	;SPECIFY EXPECTED ANSWER TYPE	.BYTE	'TYPE'.	=	$$$PC1 + TLSTYP	;SPECIFY SUB-TYPE OF ANSWER	.BYTE	'SUBTYP';.	=	$$$PC2 			;RESET POSITION COUNTER	.ENDM	TALK$@         œwç“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETBOO					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	16-FEB-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&	!								&	!	Implement t      he MCR BOOT command.  First find out the 	&	!	 name of the system to be booted.  Then shut down	&	!	the system gracefully.  Then do the BOOT.  If 		&	!	unsuccessful, allow user to retry/restart.		&	!	Worry about all little details for the user.		&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!								&	      !	12		SYSGEN Dialog file			&	!	13		Terminal I/O				&	!								&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			temporary working variable	&	!	ASK.RANGE()		controls allowed sizes of dialog&	!				  response			&	!	COMMAND$		comm      and line for BRED task	&	!	DEV$			Device spec for BOOT		&	!	FILE.NAME$		the file name of the system to	&	!				  be booted			&	!	RETURN%			=1 if errors in BRED task should&	!				  not be fatal			&	!	SYSUIC$			the uic from which to obtain	&	!				  privileged tasks		&	!	TASK$			name of installed task to be	&	!				  BRED				&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I       N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	20001		BREED an installed task			&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &      	!								&	!	25000	FN.*		SYSGEN Dialog functions		&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!	      							&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ MAP (AMAP)	LOTS.OF.SPACE$=512				&	!								&	!	Dummy map						&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!					      			&	!								&	!***************************************************************&1001	\ ON ERROR GO TO 19000						&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "ASN = "						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	\ PRINT								&	\ PRINT "% All local assignments on this terminal have been" +	&			" deleted."					&	\ PRINT								&	!								&	!	Dalete all assignments for on-line sysgen		&	!								&	\ A%= FN.SETUP.DIALOGUE%					&1900	\ AR%(0)= 0%							&	\ AR%(1)= 0%							&	\       CALL EMIT BY REF (AR%(),1%,0%)				&	\ SLEEP 2							&	\ PRINT								&	!								&	!	Emit status to the world				&2000	!$**************************************************************&	!                                                               &	!                                                               &	! 	B O O T    M O D U L E 					&	!                                                               &	!                                                               &	!****************************      ***********************************&2001	\ ASK.RANGE(0)= 33						&	\ ON FN.ASK%(251%,"TRAX","",TRUE%,1%)				&		GO TO 2001, 32000, 2005				&	!								&	!	Get the file name of the file to be booted in		&2005	\ FILE.NAME$= ASK.CVT$						&	\ CALL DECOMP (FILE.NAME$,DISK$,UIC$,F.NAME$,F.EXT$,VER$)	&	\ DISK$= "SY:"		IF DISK$= ""				&	\ UIC$= "[1,54]"	IF UIC$= ""				&	\ F.EXT$= "SYS"		IF F.EXT$= ""				&	\ BOOT.NAME$= DISK$ + UIC$ + F.NAME$ + "." + F.EXT$		&	!								&	!								&	!	Store the file name 					&	!	Get       the device spec if present				&	!								&	\ ON ERROR GO TO 2007						&2006	\ OPEN BOOT.NAME$ FOR INPUT AS FILE #3%,			&		ORGANIZATION SEQUENTIAL FIXED,				&		ACCESS READ, ALLOW READ,				&		MAP AMAP, RECORDSIZE 512				&	\ CLOSE #3%							&	\ RESUME 2010							&	!								&	!	See if the specified file is there			&2007	\ ON ERROR GO TO 19000						&	\ PRINT								&	\ PRINT "% We are unable to access the ";BOOT.NAME$;" file."	&	\ PRINT "  Please correct the problem & re-specify the name."	&	\ PRINT								&	\ R      ESUME 2001							&	!								&	!	Error message for bad boot file spec			&2010	\ ON ERROR GO TO 19000						&	\ PRINT								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	!								&	! Print the shut- down message					&2050	\ TASK$= "SETSHT"						&	\ COMMAND$= "SETSHT"						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	\ GO TO 2060	IF SPAWN.ERROR% = 1%				&	\ PRINT								&	\ PRINT "? FATAL error - shutdown was incomplete."		&	\ PRINT								&	\ CALL EXITS2 (2%,0%)						&	!								&	!	Spawn the ins      talled version of the shutup program	&	!	The user will respond to the standard shutup dialog	&	!	The system will shut-down and we will return here 	&	!	when that operation is complete				&2060	\ TASK$= "MCR..."						&	\ COMMAND$= "MOU " + DISK$ + "/OVR"				&	\ RETURN%= 1%							&	\ GOSUB 20001			IF DISK$ <> "SY:"		&	\ RETURN%= 0%							&	!								&	!	Shutup dismounted the system disk, we must remount it	&	!	in order to access the file to be booted in.		&2400	\ TASK$= "MCR..."						&	\ COMMAND$= "BOO " + BOO      T.NAME$					&	\ PRINT								&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Boot in the specified file				&2505	\ A%= FN.SETUP.DIALOGUE%					&	\ ON FN.ASK%(255%,"YES","Y",FALSE%,1%)				&		GO TO 2505, 2520, 2510, 2520				&	!								&	!	Ask if we should try again				&2510	\ GO TO 1900							&	!								&	!	Yes, we should try again				&2520	\ TASK$= "MCR..."						&	\ COMMAND$= "SET /MCR=TI:"					&	\ GOSUB 20001							&	!								&	\ COMMAND$= "@[1,2]STARTUP"					&	\ GOSUB 20001	      						&	!								&	!	No, we don't want to try again.  Then we must 		&	!	startup his system again.				&	\ GO TO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N       S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!****************************************************************&	!								&	!								&	!	ERROR REPORTING						&	!								&	!								&	!***************************************************************&19900	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ PRINT								&	\ ON ERROR GO TO 0						&	!								&	!	Unexpected error trap					&20000	!$*************      *************************************************&	!								&	!								&	!	TPS LIBRARY SUB-ROUTINES				&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!			      					&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	!								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (2%,26%)						&	!								&	!	CTRL-Z exit						&32010	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (1%, 27%)						&	!								&	!	User ESCed out of program				&32100	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (1%, 0%)						&	!								&	!	BOOT was not successful					&	!	exit with success anyway				&32767	!   ,  $**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************************&	!								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (1%, 0%)						&	\ END,         œwÑ“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETTRA					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	16-FEB-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1977 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&	!								&	!	This progra      m will transfer all non-system controlled	&	!	UFDs from a user specified old disk to the sysgen disk	&	!	It will create UFDs as needed.  The transfer is via PIP	&	!	and thus a trace listing of defective files will print.	&	!	A list of all system controlled UFDs prints on the users &	!	terminal.						&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	--------      -	--------------------------------------  &	!	13		Termianl I/O				&	!								&	!	All files transfers are done via PIP and UFD		&	!								&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			temporary working variable	&	!	ACCOUNT      .FILE%		flag controlling transfer of	&	!				  account file			&	!	ASK.RANGE()		limits size of dialog resposne	&	!	COMMAND$		command line for task being BRED&	!	DEVICE$			device where old files reside	&	!	EXT$			extension of file being examined&	!	EXT%			rad50 version of file extension	&	!	FILE.SPEC$		comamnd string for creating a	&	!				  UFD				&	!	FILE1%			rad50 version first 3 char of	&	!				  file name			&	!	FILE2%			rad50 version of 2nd 3 char of	&	!				  file name			&	!	FILE3%			rad50 version of 3rd 3	      	&	!				  characters of file name	&	!	I%			loop variable			&	!	ID1%			not used			&	!	ID2%			map field not used		&	!	ID3%			map field not used		&	!	LENGTH%			length of sysgen dialog text	&	!	MNEM1$			left digit of device spec	&	!	MNEM2$			2nd character of device spec	&	!	NAME$			name of file being examined	&	!	RETURN%			=1 if error in spawned task	&	!				  should not be fatal		&	!	SKIP.UFD$		constructed reserved UFD string	&	!				  for printing			&	!	STARTING.INDEX%		starting index of sysgen dialog	&	!				        text				&	!	TABLE$()		table of system reserved UFDs	&	!	TASK$			name of installed task to be	&	!				  BRED				&	!	UFD$			proper syntax for UFD being	&	!				  created/transferred		&	!	UNIT1$			1st digit of device unit spec	&	!	UNIT2$			2nd digit of device unit spec	&	!	V%			version of file			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&      	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	20001		BREED an installed task			&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	25000	FN.*		The       sysgen dialog package	&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 9      01-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&901	\ DIM	TABLE$(200)						&	!								&	!	Table of reserved system UFD values			&951	\ MAP (DIREC) ID1%,ID2%,ID3%,FILE1%,FILE2%,FILE3%,EXT%,V%	&	!								&	!	The map for the directory records			&1000	!$******************************************      ********************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1001	\ A%= FN.SETUP.DIALOGUE%					&	!								&	!	Initialize the dialog function				&1005	\ STARTING.INDEX%= HELP.INDEX%(2%*228%)				&	\ LENGTH%	 = HELP.INDEX%(2%*228% + 1%)			&1010	\ FOR I%= 0% TO LENGTH%-1%					&		\ TABLE$(I%)= LEFT(ASK.HELP      $(STARTING.INDEX% + I%),6%)	&1011	\ NEXT I%							&	\ TABLE$(I%+ 1%)= "******"					&	!								&	!	Initialize the table of reserved system UFDs		&	!	Get the values from the DIALOG file			&1400	\ A%= 0%							&1500	\ ASK.RANGE(0)= 5						&	\ ON FN.ASK%(212%,"SY1:","",TRUE%,1%)				&		GO TO 32100, 32200, 1505				&	!								&	!	Branch on ESC , CTRL-Z, old system disk name		&1505	\ DEVICE$= ASK.CVT$						&	\ T%= INSTR(1%,DEVICE$,":")					&	\ GO TO 1520	IF T% > 0%					&	\ PRINT								&	\ PRINT "% Device specifica      tion must have colon (:) !"		&	\ PRINT								&	\ GO TO 1500							&	!								&	!	Validate & store old system device spec			&1520	\ MNEM1$= LEFT(DEVICE$,1%)					&	\ MNEM2$= MID (DEVICE$,2%,1%)					&	\ UNIT1$= MID (DEVICE$,3%,1%)	IF LEN(DEVICE$) > 3%		&	\ UNIT2$= MID (DEVICE$,4%,1%)	IF LEN( DEVICE$)= 5%		&	\ GO TO 1522			IF MNEM1$<"A" OR MNEM1$>"Z"	&	\ GO TO 1522			IF MNEM2$<"A" OR MNEM2$>"Z"	&	\ GO TO 1522			IF ((UNIT1$<"0" OR UNIT1$>"9")	&					AND (LEN(DEVICE$) > 3%))	&	\ GO TO 1522			IF (UNIT2$<"0" OR UNI      T2$>"9")	&						AND LEN(DEVICE$)=5	&	\ GO TO 1525							&	!								&	!	Check format of device					&1522	\ PRINT								&	\ PRINT "% Device specification must have the form ddnn:"	&	\ PRINT "  where the nn is optional"				&	\ PRINT								&	\ GO TO 1500							&	!								&	!	Print out the error message for bad device spec		&1525	\ PRINT 							&	\ TASK$= "MCR..."						&	\ COMMAND$= "MOU " + DEVICE$ + "/OVR"				&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Mount the old devic      e					&	!								&	\ PRINT								&	\ ON FN.ASK%(213%,"YES","Y",FALSE%,1%)				&		GO TO 1500, 32200, 1530, 1535				&	!								&	!	Branch on ESC, CTRL-Z, Yes, No				&	!	Transfer account file					&1530	\ ACCOUNT.FILE%= 1%						&	\ GO TO 2000							&	!								&	!	Transfer the account files				&1535	\ ACCOUNT.FILE%= 0%						&	\ GO TO 2000							&	!								&	!	Don't transfer the account files			&2000	\ DIRECTORY$= DEVICE$ + "[0,0]000000.DIR;1"			&	\ OPEN DIRECTORY$ FOR INPUT AS FILE #1%,		&		ORGANIZATION SEQUENTI      AL FIXED,				&		RECORDSIZE 16,						&		ACCESS READ, ALLOW READ,				&		MAP DIREC						&	!								&	!	Open the directory file for directory files		&2025	\ A%= FN.PRINT.HELP.TEXT%(229%,1%)				&	!								&	!	Print description message				&2040	\ PRINT								&	\ PRINT								&	\ PRINT "The following UFDs will not be transferred:"		&	\ PRINT								&	\ FOR I%= 0% TO 200%						&		\ GO TO 2050	IF TABLE$(I%)= "******"			&		\ GO TO 2045	IF LEN(TABLE$(I%)) <> 6%		&		\ SKIP.UFD$= LEFT(TABLE$(I%),3%) + "," + RIGHT(TABLE      $(I%),4%)&		\ PRINT CHR$(9%);SKIP.UFD$				&2045	\ NEXT I%							&	\ PRINT								&	\ PRINT								&	!								&	!	List the UFDs not being transferred			&2050	\ GET #1%							&	\ NAME$= RAD$(FILE1%) + RAD$(FILE2%) 				&	\ EXT$= RAD$(EXT%)						&	\ GO TO 2050	IF EXT$ <> "DIR"				&	\ FOR I%= 1% TO 200%						&		\ GO TO 2050	IF TABLE$(I%)= NAME$			&		\ GO TO 2200	IF TABLE$(I%)= "******"			&	\ NEXT I%							&	\ GO TO 2050							&	!								&	!	Get a directory entry, it must be .DIR or ignore it	&	!	If it matches a       table entry (i.e. it's a reserved UFD)	&	!	also ignore it						&2200	\ PRINT								&	\ PRINT								&	\ PRINT "Creating UFD and transferring files for ";RAD$(FILE1%);&		",";RAD$(FILE2%)					&	!								&	!	Inform the user of our progress as well as provide a 	&	!	header for any error messages which may come out	&2250	\ UFD$= "[" + RAD$(FILE1%) + "," + RAD$(FILE2%) + "]"		&	\ FILE.SPEC$= "SY0:" + UFD$ + 					&			"/PRO=[RWED,RWED,RWED,R]"			&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "UFD " + FILE.SPEC$      					&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Create a UFD of the same size as the old one		&2300	\ TASK$= "MCR..."						&	\ COMMAND$= "PIP SY:" + UFD$ + "=" +				&			DEVICE$ + UFD$ + "*.*;*"			&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Transfer the users files				&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "PIP SY:" + UFD$ + "*.*;*/PR/FO"			&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Giv      e the guy full ownership				&2400	\ GO TO 2050							&3000	!$**************************************************************&	!                                                               &	!                                                               &	! 	TRANSFER ACCOUNT FILES					&	!                                                               &	!                                                               &	!***************************************************************&3001	\ GO TO 32000	IF ACC      OUNT.FILE%= 0%				&	\ PRINT								&	\ PRINT "Transferring the account files"			&	\ PRINT								&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "PIP SY:[200,201]TPSACNT.DAT/NV=" + 		&			DEVICE$ + "[200,201]TPSACNT.DAT"		&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	!	Transfer the real account file				&	!	The TPS account file will be generated from this file 	&	!	the first time the ACCOUNT program is run		&3010	\ GO TO 32000							&	!								&	!	End of job						&10000	!$*      *************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!****************************************      ***********************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19001	\ RESUME 3000		IF ERR= 11 AND ERL= 2050		&	!								&	!	Trap EOF on 000000.DIR and other errors			&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	      &	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&3200      0	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32001	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2 (1%, 0%)						&	!								&	!	Successful exit						&32100	\ CLOSE #T% FOR T%= 1% TO 12%					&	\ CALL EXITS2 (2%, 27%)						&	!								&	!	Exit on ESC						&32200	\ CLOSE #T% FOR T%= 1% TO 12%					&	\ CALL EXITS2 (2%, 26%)						&	!								&   j   	!	Exit on CTRL-Z						&32767	\ CALL EXITS2 (2%, 0%)						&	!								&	!	Unexpected error exit					&	\ ENDj          œw¬“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETBAD					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	16-FEB-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1977 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&	!								&	!	Spawn the B      AD program.  DCL can't do it.		&	!	We check for the validity of the device spec before 	&	!	this.							&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!								&	!	12		Sysgen dialog file			&	!	13		Terminal I/O				&	!								&	!								&	!***************************************************************&4      00	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			temporary working variable	&	!	ASK.CVT$		dialog string response		&	!	ASK.RANGE()		limits size of dialog responses	&	!	COMMAND$		command line for BRED task	&	!	DEVCIE.ERROR%		slkd				&	!	DEVICE$			stored device specification	&	!	DEVICE.ERROR%		<> 0 if bad d      evice specified	&	!	FILE.NAME$		file name for task image of task&	!				  being installed		&	!	GIVEN.COMMAND$		command line to be given to task&	!				  being installed and BRED	&	!	GIVEN.RETURN%		=1 if errors in installed and	&	!				  BRED task should not be fatal	&	!	L%			looping variable		&	!	N%			tmeporary working variable	&	!	TASK.NAME$		name under which to install a	&	!				  task				&	!	TEST.RESPONSE$()	holds characters of device spec	&	!				  for validation		&	!								&	!******************************      *********************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!	10000		Routine to validate device spec		&	!	20001		BREED an installed task			&	!								&	!***************************************************************&750	!*****************************************************      **********&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!	25000	FN.*		SYSGEN Dialog functions		&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!*******************************      ********************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$******************      ********************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1100	\ A%= FN.SETUP.DIALOGUE%					&	!								&	!	Setup for sysgen dialog function			&2000	\ ASK.RANGE(0)= 5						&	\ ON FN.ASK%(248%,"","",TRUE%,1%)				&		GO TO 32100, 32200, 2100				&	!								&	!	Branch on ESC, CTRL-      Z, device spec			&2100	\ GOSUB 10100							&	\ GO TO 2000	IF DEVICE.ERROR% <> 0%				&	\ DEVICE$= ASK.CVT$						&	!								&	!	Validate the user device response			&2200	\ TASK.NAME$= "...BAD"						&	\ FILE.NAME$= "BAD"						&	\ GIVEN.COMMAND$= "BAD " + DEVICE$				&	\ GIVEN.RETURN%= 1%						&	\ GOSUB 20050							&	\ GO TO 32767	IF RETURN.STATUS% <> 1%				&	\ GO TO 32000							&	!								&	!	Spawn BAD						&	!	If an error exit with status				&	!	If not an error, exit with status			&10000	!$*******************      *******************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&10100	\ A%= LEN(ASK.CVT$)						&	\ GO TO 10150	IF A% > 5%					&	\ N% = INSTR (1%,ASK.CVT$,":")					&	\ GO TO 10150	IF N% <> A%					&	\ FOR L%= 1% TO A%-1%						&		\ TEST.RESP$(L%)= MID(ASK.CVT$,L%,1%)			&	\ NEXT L%							&	!								&	!	Validate that length is < 6 ch      aracters			&	!	That last character is a :				&	!	Pick apart remaining characters				&10101	\ GO TO 10150	IF (TEST.RESP$(1) < "A") OR (TEST.RESP$(1) > "Z")&	\ GO TO 10150	IF (TEST.RESP$(2) < "A") OR (TEST.RESP$(2) > "Z")&	\ GO TO 10105	IF TEST.RESP$(3) = ""				&	\ GO TO 10150	IF (TEST.RESP$(3) < "0") OR (TEST.RESP$(3) > "7")&	\ GO TO 10105	IF TEST.RESP$(4) = ""				&	\ GO TO 10150	IF (TEST.RESP$(4) < "0") OR (TEST.RESP$(4) > "7")&10105	\ DEVICE.ERROR%= 0%						&	!								&	!	Must be of the form ddnn:				&1011      0	\ RETURN							&10150	\ PRINT								&	\ PRINT ASK.CVT$;" is a bad device specification."		&	\ PRINT								&	\ DEVICE.ERROR%= 1%						&	\ GO TO 10110							&	!								&	!	Print error message for bad device spec			&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************      ************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B       R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&20050	\ TASK$= "...INS"						&	\ COMMAND$= "INS [1,54]" + FILE.NAME$ + "/TASK=" +		&			TASK.NAME$					&	\ RETURN%= 0%							&	\ GOSUB 20001							&	!								&	\ TASK$= TASK.NAME$						&	\ COMMAND$= GIVEN.COMMAND$					&	\ RETURN%= GIVEN.RETURN%					&	\ GOSUB 20001							&	\ RETURN.STATUS%= SPAWN.ERROR%					&	\ RETURN%= 0%							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "REM " + T      ASK.NAME$					&	\ GOSUB 20001							&	!								&	\ RETURN							&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!*******************************************************      ********&	!								&	\ CLOSE #T% FOR T%= 1% TO 12%					&	\ CALL EXITS2(1%,0%)						&	!								&	!	Successful exit						&32100	\ CLOSE #T% FOR T%= 1% TO 12%					&	\ CALL EXITS2(1%,27%)						&	!								&	!	Escape exit						&32200	\ CLOSE #T% FOR T%= 1% TO 12%					&	\ CALL EXITS2(2%,26%)						&	!								&	!	CTRL-Z exit						&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!****************************   t   ***********************************&	!								&	\ CLOSE #T%	FOR T%= 1% TO 12%				&	\ CALL EXITS2(2%,0%)						&	\ ENDt          X"“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	AMPER					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	22-MAR-77				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!			C O P Y R I G H T			&	!								&	!								&	!								&	!    (C) Cop      yright 1977						&	!    Digital Equipment Corporation, Maynard, Massachusetts	&	!								&	!    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 pro-	&	!    vided 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  o      wnership  of  the	&	!    software shall at all times remain in DIGITAL.		&	!								&	!    The information in this software is subject  to  change	&	!    without notice and should not be construed as a commit-	&	!    ment by Digital Equipment Corporation.			&	!								&	!    DIGITAL assumes no responsibility for the use or relia-	&	!    bility  of  its  software on equipment that is not sup-	&	!    plied by DIGITAL.						&	!								&	!***************************************************************&20	!$****      **********************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!****      ***********************************************************&	!								&	!   To insert the ampersand continuation characters at the 	&	!   end of lines,to insert a blank comment line at the end of	&	!   each program line, to expand the headers of program 	&	!   sections from a single line to  the full block		&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	-      --------	--------------------------------------  &	!	    1		Primary data file input			&	!	    2		Primary data file output		&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	CHAR$			The character in the current 	&	!				      line now being examined.	&	!	COUNT%			Character count on the current  &	!				line with tabs expanded.	&	!	DEV$			The input file device		&	!	DEFI%			The number of tabs which must	&		!				be inserted on the current line	&	!	FILE.NAME$		The input file.name		&	!	FILE.EXT$		The input file extension	&	!	FILE$			The file to be formatted	&	!	FILE.2$			The output file name		&	!	LAST.CHAR$		The last character on a record	&	!	LENG%			Length of the current line	&	!	LENG%			Length of the current line	&	!	LINE2$			A blan      k comment line		&	!	LINE$			The line of text being edited	&	!	LINE$		The edited line			&	!	NULL$			Current line with spaces and	&	!				terminators deleted		&	!	POS%			The position counter for the line&	!	TAB%			The length of a horizontal tab	&	!	TEST%			Shows if line is a header line	&	!	UIC$			The input file UIC		&	!	V$			The input version number	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$*********      *****************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			      &	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S	      	&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!**************************************      *************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1020	\ PRINT								&	\ PRINT "AMPER "; 						&		 " formats Basic+2 programs"				&	\ PRINT								&	\ PRINT								&	!								&	!	Output program herald messages				&1100	\ LINPUT "File to be formatted";FILE.TMP$			&	\ FILE$= EDIT$(FILE.TMP$,2%+4%)					&	\ GOSUB 10100							&	\ FILE.EXT$= "B2S"	IF FILE.EXT$= ""			&	\ FILE$= FILE.NAME$ + "." + FILE.EXT$				&	\ FILE.1$= DEV$ + UIC$ + FILE$ + "      ;" + VER$			&	\ FILE.2$= DEV$ + UIC$ + FILE.NAME$ + "." + FILE.EXT$		&	!								&	!	Set up the output defaults				&	!								&	\ OPEN FILE.1$ FOR INPUT AS FILE#1%				&	\ OPEN FILE.2$ FOR OUTPUT AS FILE#2%				&	\ TAB%= 8%							&	!								&	\ FF$= CHR$(12%)						&	\ LINE1$= CHR$(9%) + 						& "!$**************************************************************&" &	\ LINE2$= CHR$(9%) +	 					& "!                                                               &" &	\ LINE3$= CHR$(9%) + 						& "!*******************      ********************************************&" &	!								&	!	Get file name to be formatted,				&	!	open files and initialize 				&	!	constants						&1200	\ LINPUT #1%, LINE$						&	\ NULL$= EDIT$(LINE$,2%+4%)					&1201	\ GO TO 1600 IF NULL$= ""					&	\ LENG% = LEN(LINE$)						&	!								&	!	Get a line, determine its length, if blank go to 1700	&	!								&	\ FOR I%= 1% TO 10%						&		\ LAST.CHAR$= MID(LINE$,LENG%,1%)				&		\ T%= 0%						&		\ T%= 1% IF ((LAST.CHAR$= "&") OR (LAST.CHAR$= CHR$(9)))&		\ LINE$=       LEFT(LINE$,LENG%-1%)   IF T%= 1%		&		\ LENG%= LENG% - 1%		IF T%= 1%		&	\ NEXT I%							&	!								&	!	If last char. is an & ,	 or tab				&	!	delete it and correct the length count			&	!								&1205	\ COUNT%= 0%							&	\ POS%=1%							&1300	\ CHAR$= MID(LINE$,POS%,1%)					&	\ COUNT%= COUNT% + 1%						&	\ GO TO 1400 IF CHAR$<>CHR$(9%)					&	\ COUNT%= ((COUNT%-1%)/TAB%)*TAB% + TAB%			&	!	Pad out tabs to correct printed length			&1400	\ POS%= POS% + 1%						&	\ GO TO 1300 IF POS%<LENG%+1%					&	\ GO TO 1600       IF INSTR(1%,LINE$,"\ END") <> 0%			&	\ GO TO 1600 IF INSTR(1%,LINE$,"\ SUBEND") <> 0%		&	\ DEFI%= 9% - (COUNT%/TAB%)					&	\ DEFI%= 0%	IF DEFI% < 0%					&	\ LINE$= LINE$ + STRING$(DEFI%,9%) + "&"			&	\ GO TO 1500							&	!								&	!	Add an & if line is >72 char. long or if it contains	&	!	"\ SUBEND" or "\ END", make no change			&	!	  Otherwise, pad the line out to			&	!	72 char. plus "&".					&1500	\ TEST%= INSTR(1%,LINE$,"!!")				&	\ GO TO 1600 IF TEST%= 0%					&	!								&	\ PRINT #2%, FF$						&	\ PRINT       #2%, LEFT(LINE$,(INSTR(1%,LINE$,CHR$(9%)))-1%)+ &		LINE1$							&	\ PRINT #2%, LINE2$						&	\ PRINT #2%, LINE2$						&	\ PRINT #2%, "	! " + 						&		RIGHT(LINE$,INSTR(1%,LINE$,CHR$(9%))+3%)	&	\ PRINT #2%, LINE2$						&	\ PRINT #2%, LINE2$						&	\ PRINT #2%, LINE3$						&	\ GO TO 1200							&	!								&	!	Expand header line to full block. Get next record.	&1600	\ PRINT #2%, LINE$						&	\ GO TO 1200							&	!								&	!	Print non-header,non-blank expanded record. Get next one&10000	!$*********************      *****************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&10100	\ M%= INSTR(1%,FILE$,":")					&	\ N%= INSTR(1%,FILE$,"[")					&	\ P%= INSTR(1%,FILE$,"]")					&	\ Q%= INSTR(1%,FILE$,".")					&	\ R%= INSTR(1%,FILE$,";")					&	\ S%= LEN(FILE$)						&	\ VER$= ""							&	\ FILE.EXT$= ""							&	\ FILE.NAME$= ""						&	\ UIC$= ""	      						&	\ DEV$= ""							&	!								&	\ VER$= RIGHT(FILE$,R%+1%)		IF R% > 0%		&	\ FILE$= LEFT(FILE$,R%-1%)		IF R% > 0%		&	\ FILE.EXT$= RIGHT(FILE$,Q%+1%)		IF Q% > 0%		&	\ FILE$= LEFT(FILE$,Q%-1%)		IF Q% > 0%		&	!								&	\ DEV$= LEFT(FILE$,M%)			IF M% > 0%		&	\ UIC$= MID(FILE$,N%,P%-N%+1%)		IF N% > 0%		&	\ FILE.NAME$= RIGHT(FILE$,M%+1%)				&	\ FILE.NAME$= RIGHT(FILE$,P%+1%)	IF P% > 0%		&	\ RETURN							&15000	!$**************************************************************&	!								&	!								&	!	F U N C       T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&	!								&	\ GO TO 32000 IF ERR= 11					&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR       GO TO 0						&	!								&	!	For all unaccounted for errors, print the line and	&	!	error number, as supplied by the BASIC-PLUS II		&	!	variables, ERR and ERL.  Close all open files and	&	!	exit through the END statement.				&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$********************************************   Æ  ******************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\ CLOSE #1%							&	\ CLOSE #2%							&32767	\ END Æ         œwòy“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	SETSTR					&	!	Version:	01					&	!	Edit level:	00					&	!	Edit date:	16-feb-78				&	!	Author(s):	BJD					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1977 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M       O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&	!								&	!	This progra      m uses the data in the shared common region	&	!	to decide what commands should be executed at startup 	&	!	time.  It then writes out these comamnds to the >MCR	&	!	file for use by the SETHID program.  See the spec for 	&	!	a complete list of the commands generated.		&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------      ------  &	!	1		MCR command file			&	!	13		terminal I/O				&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	A%			dummy - to fake a line 1400	&	!	FILE.NAME$		stripped system name		&	!	T1$			install TKTN			&	!	T10$			starts software       error logger	&	!	T11$			runs tpinit			&	!	T12$			sets the system disk public	&	!	T13$			runs the journaller		&	!	T2.5$			gets ATS going			&	!	T3$			sets logins enabled		&	!	T4$			skeleton for overlapped seek	&	!				  command			&	!	T5$			sleleton for set dcl commands	&	!	T6$			batch submit for user startup	&	!				  file				&	!	T7$			broadcast of on-air system	&	!				  message			&	!	T8$			start hardware error logger	&	!	T9$			overlapped seek command for RK	&	!				  disk				&	!								&	!**********************      *****************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!		      						&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&      	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	      !								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&1400	\ A%= 0%							&	!								&	!	Dummy line for interface with SETMAP			&2000	!$**************************************************************&	!                                                               &	!                                                               &	! 	STARTUP COMMAND DEFINITION				&	!                                                                     &	!                                                               &	!***************************************************************&2001	\ FILE.NAME$= EDIT$(SYSTEM.NAME$,2%)				&	\ OPEN "[200,201]" + FILE.NAME$ + ".MCR" FOR OUTPUT AS FILE #1%	&	!								&	!	Open the file which contains the commands		&2005		\ T1$= "INS [1,54]TKN/CKP=YES"					&		\ T2$= "INS [1,54]TKN/PAR=GEN/CKP=YES"				&	\ T2.5$= "RUN $NTI"						&	\ T2.7$= "INS LB0:[1,54]NTL/PAR=TP1PAR"				&	\ T      2.8$= "REM NTL..."						&	\ T3$= "SET /LOGON"						&	\ T4$= "SET /OVLP="						&	\ T5$= "SET /DCL=TT0:"						&	\ T6$= "SUB/NOP/PRIO:250 [1,2]" + EDIT$(SYSTEM.NAME$,2%) + ".BAT"&	\ T7$= "BRO ALL:" +						&		 SYSTEM.NAME$ + " " + EDIT$(S.HERALD.TEXT$,128%) + 	&			" is on the air."				&	\ T8$= "RUN ERRLOG"						&	\ T9$= "SET /OVLP=DMA"						&	\ T10$= "RUN $SERLOG/TASK=SERLOG"				&	\ T11$= "RUN $TPINIT/TASK=TPINIT"				&	\ T12$= "SET /PUB=SY:"						&	\ T13$= "RUN JNLDRV"						&!!!	\ T14$= "REM ...AT."						&!!!	\       T15$= "INS LB:[1,54]IND/PAR=GEN"				&	\ T16$= "RUN $RELOAD/TASK=CRASH1"				&	\ T18$= "RUN TPRTSK"					&	\ T19$= "SET /UIC=[1,1]"					&	\ T20$= "ASSIGN/QUEUE BATCH BAP0"				&	\ T21$= "INS [1,1]TPMLIB"					&	\ T22$= "INS [1,1]TSTLIB"					&	\ T23$= "RUN KMCLDR/UIC=[1,54]"					&	\ T24$= "REA KMCLDR 5 CO:"					&	\ T25$= "REA KMCLDR 5 NL:"					&	\ T26$= "RUN $RETURN/TASK=RETURN"					&	!								&	!	Initialize the command strings				&2100	\ PRINT #1%, T21$	IF NO.CON.TP% > 0%			&	\ PRINT #1%, T22$						&	\ PRINT #1      %, T19$						&	\ PRINT #1%, T1$	IF FULL.S.E.%= 1%			&	\ PRINT #1%, T2$	IF FULL.S.E.%= 0%			&	\ PRINT #1%, T12$						&	\ PRINT #1%, T8$						&	\ PRINT #1%, T10$	IF NO.CON.TP% > 0%			&	!								&	!	Install ATS communications and TKTN			&	!	Set the system device public				&	!	Run the error logger					&	!	Run the software error logger if TPs			&	!	Run the journaller if TPs				&2125	\ PRINT #1%, T4$ + DB.SEEK$(0%)	IF DB.SEEK$(0%) <> "" AND DB.CONT% > 0%&	\ PRINT #1%, T4$ + DB.SEEK$(1%) IF DB.SEEK$(1%) <> "" AND       DB.CONT% > 1%&	\ PRINT #1%, T4$ + DR.SEEK$(0%) IF DR.SEEK$(0%) <> "" AND DR.CONT% > 0%&	\ PRINT #1%, T4$ + DR.SEEK$(1%) IF DR.SEEK$(1%) <> "" AND DR.CONT% > 1%&	\ PRINT #1%, T9$	IF ((RK.NUM% > 0%) AND (CPU.TYPE%<> 70%))&	!								&	!	Set overlapped seeks ( RK06 not supported on 70)	&2200	\ PRINT #1%, T5$						&	!								&	!	Set tt0 to DCL						&2250	\ PRINT #1%, "@[1,2]QMGSTART"					&	!								&	!	Initialize QUEUE processing				&2350	!								&!!!	\ PRINT #1%, T14$						&!!!	\ PRINT #1%, T15$						&	\ PRINT       #1%, T6$						&!	\ PRINT #1%, T20$						&	!								&	!	Print the IND install commands				&	!	Submit user batch stream				&	!	Then assign BAP0 - this sequence makes sure that	&	!	the startup job gets going before any other job 	&	!	left over in the queue					&2375	\ PRINT #1%,T2.7$		IF NO.CON.TP% > 0%		&	\ PRINT #1%,T2.5$		IF NO.CON.TP% > 0%		&	\ PRINT #1%,T2.8$		IF NO.CON.TP% > 0%		&	\ PRINT #1%,T24$		IF NO.CON.TP% > 0%		&	\ PRINT #1%,T23$		IF NO.CON.TP% > 0%		&	\ PRINT #1%,T25$		IF NO.CON.TP% > 0%		&	\ PR      INT #1%,T11$						&	\ PRINT #1%,T16$		IF NO.CON.TP% > 0%		&	\ PRINT #1%,T13$		IF NO.CON.TP% > 0%		&	\ PRINT #1%,T18$		IF NO.CON.TP% > 0%		&	!								&	!	Print TPINIT & crash recovery commands			&2400	\ PRINT #1%, T3$						&	\ PRINT #1%, T20$						&	\ PRINT #1%, T7$						&	\ PRINT #1%, T26$						&	!								&	!	The assign must come after set logins			&	!	The broadcast message					&2500	\ CLOSE #1%							&	\ CALL EXITS2 (1%,0%)						&	!								&	!	Exit successfully					&10000	!$*******************************      *******************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000      	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	      !	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!		   F  						&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END F         »zœS“Á› 8$        1	!***************************************************************&	!								&	!								&	!	S Y S T E M    M O D I F I C A T I O N			&	!								&	!		P R O G R A M 					&	!								&	!								&	!								&	!	Program:	SYSMOD					&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					&	!	Edit date:	05-Mar-79				 1.1A00&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		             C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 OWNERSH      IP OF THE	&	!   SOFTWARE IS HEREBY TRANSFERRED.				&	!								&	!   THE INFORMATION  IN  THIS SOFTWARE  IS SUBJECT TO CHANGE	&	!   WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED AS  A COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$****************************      **********************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	BL1-00	24-Jul-78 KMR	Release.			&	!	V1.1A00	05-Mar-79 KMR	Added error check to MODSET	 1.1A00&	!				  call.				 1.1A00&	!								&	!***************************************************************&100	!$**************************************************************&	!						      		&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!	This utility is used to display and modify global	&	!	parameters used by the TPS system.  At present the	&	!	only such parameters are the Journal (Log) devices.	&	!	Two such devices may be specified.  The system writes	&	!	to the first device until it is full.  It then switches	&	!	to the second device, if there is one.  When the sec-	&	!	ond device is full, the system wil switch back to the	&	!	first device.  If only one device is spe      cified, the	&	!	system will wait until that device is again available.	&	!								&	!	This utility has two functions.  First it is used to	&	!	change the primary or secondary journal device.  If the	&	!	device is currently in use, the change does not occur	&	!	until the system switches back to it.  Secondly it is	&	!	used to show the two devices assigned to journalling	&	!	(logging) and which one is currently being used.	&	!								&	!	The actual work is done by sending messages to the	&	!	JNLDRV task.  The      se messages are used to request the	&	!	current status or a change in the journal devices.	&	!	All messages will be acknowledged by the JNLDRV task.	&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!	ASCII.ONE%		Value of the character '1'.	&	!	      ASCII.ZERO%		Value of the character '0'.	&	!	ASK.RESP$		Character string return from	&	!				  MODASK.			&	!	ASK.HELP$()		Array of long prompts.		&	!	DEVICE%()		Array used to translate device	&	!				  names to message format.	&	!	DEVICE.NAME$		The name of the device. (e.g.	&	!				  DB, MT).			&	!	DEVICE.NUMBER%		The device's unit number.	&	!	I%			Looping and temporary variable.	&	!	IE.INS%			The value returned by SEND	&	!				  directive when receiving task	&	!				  is not installed.		&	!	IE.ITS%			Value rece      ived from RECEIV	&	!				  directive when no messages are&	!				  pending.			&	!	IND%			Return value from directives,	&	!				  subprograms.			&	!	IS.SUC%			The value return by successfull	&	!				  directive execution.		&	!	J%			Looping variable.		&	!	JOURNAL.DEVICE$(,)	Array of current and 'on exit'	&	!				  journal device specifications.&	!	MESSAGE%()		Integer array for receiving from&	!				  system directives.		&	!	NULL.DEVICE$		Null device specification.	&	!	TASK%()			Array to hold the RAD-50	&	!				  equ      ivalent of 'JNLDRV'.	&	!	VALID.DEVICE$		A string containing the device	&	!				  specifications for valid	&	!				  journal devices.		&	!	VER.EDIT.NUM$		Current version-edit number.	&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!		      						&	!	ASNLUN		Assign a logical unit number.		&	!	ASTO50		Converts three characters to a RAD-50	&	!			  integer value.			&	!	MODDLG		Talk to the user and reqister their	&	!			  change requests.			&	!	MODEXT		Make changes to the journaling devices.	&	!	MODINT		Initialize the journaling device array.	&	!	MODSHO		Show the current state of the journal-	&	!			  ing devices.				&	!	RECEIV		Receive a message.			&	!	SEND		Send a message.				&	!								&	!**********************************************************      *****&800	!$**************************************************************&	!								&	!								&	!	C O M M O N    D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&810	\ COMMON (SYSMOD)	IS.SUC%,				&				IE.INS%,				&				IE.ITS%,				&				ERR.FLAG%,				&				ASCII.ZERO%,				&				ASCII.ONE%,				&				TASK%( 1% ),				&				ASK.RESP$			=  6%,	&				VALID.DEVICE$			= 19%,	&				JOURNAL.DEVICE$( 1%, 2% )	=  3%	&	!								&	! Setup all the common that we       need.				&820	\ COMMON (DEVICE)	NULL.DEVICE$			=  3%	&	!								&	! Set up the common area for the null device specification.	&830	\ COMMON (COMMND) COMMAND%					&	!								&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ CALL MODSET							&	\ GO TO 32000	IF ERR.FLAG%					!1.1A00&	!								 1.1A00&	!	Go do some checks       and set up common.			 1.1A00&	!	Go exit if error.					 1.1A00&2000	!$**************************************************************&	!                                                               &	!                                                               &	! 	GET CURRENT STATUS					&	!                                                               &	!                                                               &	!***************************************************************&2010	\ CALL MODINT				      			&	\ GO TO 32000	IF ERR.FLAG%					&	!								&	! Call the initialization routine.				&	! Go to the end if there was some problem.			&3000	!$**************************************************************&	!                                                               &	!                                                               &	! 	GET COMMAND						&	!                                                               &	!                                                               &	!*******************      ********************************************&3010	\ CALL MODDLG							&	\ ON COMMAND% GO TO	31100, 6000, 4000, 32000		&	!								&	! Get the next command.						&	! Branch on	^Z, EXIT, SHOW, Error.				&4000	!$**************************************************************&	!                                                               &	!                                                               &	! 	SHOW CURRENT STATUS					&	!                                                               &	!                                                                     &	!***************************************************************&4010	\ CALL MODSHO							&	\ GO TO 32000	IF ERR.FLAG%					&	\ GO TO 3010							&	!								&	! Call the routine that will list the current status of the	&	!	journaling devices.					&	! Go to the end if some problem occured while doing this.	&	! Go back for another command.					&6000	!$**************************************************************&	!                                                                     &	!                                                               &	! 	MAKE ALL THE NECESSARY CHANGES TO THE JOURNAL DEVICES.	&	!                                                               &	!                                                               &	!***************************************************************&6010	\ CALL MODEXT							&	\ GO TO 32000							&	!								&	! Call the routine that makes the change to the journaling	&	!	devices.						&	! All done.							&31100	!$**      ************************************************************&	!                                                               &	!                                                               &	! 	CONTROL Z'S  ARE HANDLED HERE				&	!                                                               &	!                                                               &	!***************************************************************&32000	!$**************************************************************&	!								&	   |  !								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END|         ŒÊÁ› 8$°   î   979	\ MAP (T2900)	T2900%(5%)					&	\ MAP (T2900)	T2900$	= 2%					&	!								&	!	This buffer is used by FN.CHECK.TT0% to hold returns	&	!	  from CALL GETLUN.					&29000	\ DEF FN.CHECK.TT0% = -1%					&	!								&	!	Set the value true.					&î          œSç“Á› 8$        1	!***************************************************************&	!								&	!								&	!	G E T    C O M M A N D    A N D    P R O C E S S	&	!								&	!		C H A N G E    C O M M A N D			&	!								&	!								&	!								&	SUB MODDLG			! Start sub-program here	&	!								&	!								&	!								&	!	Version:	V1.1A					 1.1A00&	!	Edit level:	00					 1.1A00&	!	Edit date:	05-Mar-79				 1.1A00&	!	Author(s):	KMR					&	!								&	!***************************************************************&11	!******************      *********************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGHT (c) 1978 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 OT      HERWISE 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!*********************      ******************************************&15	!***************************************************************&	!								&	!								&	!		C A L L    F O R M A T				&	!								&	!								&	!								&	!	CALL MODDLG						&	!								&	!	Arguments:						&	!								&	!	Name			Description			&	!	------------------	------------------------------- &	!								&	!	COMMAND%		The number of the command or	&	!				  for the root.			&	!					1 -> ^Z			&	!					2 -> EXIT command	&	!					3 -> SHOW command	&	!					4 -> Unexpected       Error	&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!	06/00	25-Jan-78 KMR	Base level 6.			&	!	06/01	27-Apr-78 KMR	Changed null device specifica-	&	!				  tion to <null><null><null>.	&	!	V1.1A00	05-Ma      r-79 KMR	SPR #22259			 1.1A00&	!				Modified journal device check-	 1.1A00&	!				  ing to provide better error	 1.1A00&	!				  handling.			 1.1A00&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	S U B - P R O G R A M    D E S C R I P T I O N		&	!								&	!	This sub-program communicates with the user.  It asks	&	!	him to enter the desired command.  If the command is	&	!	CHANGE, it is pr      ocessed within this subroutine.  If the	&	!	command is SHOW or EXIT a flag is passed back to the 	&	!	root telling it the command.				&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Used when validating that a device	&	!      			  exists on this system.		&	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!								&	!	V A R I A B L E S    A N D    A R R A Y S    U S E D	&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	ASCII.ONE%		Value of the character '1'.	&	!	ASCII.ZERO%		Value of the character '0'.	&	!	ASK.CVT$		The value of ASK.RESP$ after	&	!				  removing trailin      g spaces.	&	!	ASK.RESP$		String returned by the MODASK	&	!				  routine.			&	!	COMMAND%		Passed to MODDLG as the # of the&	!				  desired command.		&	!	DEVICE.NAME$		The name of the device requested&	!				  (e.g. MT, DB, DK).		&	!	DEVICE.NUMBER%		The number of the device (e.g.	&	!				  the 0 from MT0).		&	!	ERR.FLAG%		Flag used to notify root of	&	!				  errors in its branches.	&	!	I%			Looping variable.		&	!	IE.INS%			Directive SEND returns this	&	!				  value to indicate task not	&	!				  installed.			&	!      	IE.ITS%			Directive RECEIV returns this	&	!				  value if no messages are	&	!				  pending.			&	!	IND%			Used to receive error		&	!				  indications from system	&	!				  directives.			&	!	IS.SUC%			Directives return this value as	&	!				  indication of success.	&	!	J%			Looping variable.		&	!	JOURNAL.DEVICE$(,)	Matrix of existing and 'on exit'&	!				  journal devices.		&	!	NULL.DEVICE$		Null device specification.	&	!	PROMPT%			Number of current prompt.	&	!	RESPONSE%		Numeric value returned by MODASK&	!				        to indicate the user's	&	!				  response type.		&	!	T%			Looping variable.		&	!	TASK%()			Array which contains the RAD-50	&	!				  name of the target task for	&	!				  SEND.				&	!	VALID.DEVICE$		String of valid device		&	!				  specifications.		&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	      -----------	--------------------------------------	&	!								&	!	ASNLUN		Assign logical unit number.		&	!	MODASK		Dialogue prompting function for SYSMOD.	&	!	10000		Local subroutine to check journal	 1.1A00&	!			  device specifications and print	 1.1A00&	!			  error messages.			 1.1A00&	!								&	!***************************************************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								      &	!								&	!***************************************************************&810	\ COMMON (SYSMOD)	IS.SUC%,				&				IE.INS%,				&				IE.ITS%,				&				ERR.FLAG%,				&				ASCII.ZERO%,				&				ASCII.ONE%,				&				TASK%( 1% ),				&				ASK.RESP$			=  6%,	&				VALID.DEVICE$			= 19%,	!BL6-02&				JOURNAL.DEVICE$( 1%, 2% )	=  3%	&	!								&	! Setup all the common that we need.				&820	\ COMMON (DEVICE)	NULL.DEVICE$			=  3%	&	!								&	! Set up the common for the null device specification.		&830	\ COMMON (COMMND)       COMMAND%					&	!								&1000	!$**************************************************************&	!								&	!								&	!	M A I N    S U B - P R O G R A M    L O G I C		&	!								&	!								&	!***************************************************************&	!								&	\ ON ERROR GO TO 19000						&	!								&	!	Set up standard default error trap			&3000	!$**************************************************************&	!                                                               &	!                                                                     &	! 	GET COMMAND						&	!                                                               &	!                                                               &	!***************************************************************&3010	\ PROMPT% = 1%							&	\ CALL MODASK ( PROMPT%, ASK.RESP$, RESPONSE% )			&	\ ON RESPONSE%	GO TO 3010, 31100, 6000, 4000, 5000		&	!								&	! Set up the prompt number.					&	! Call our dialog program and request the first prompt.		&	! Branch on ESC      , ^Z, EXIT, SHOW, CHANGE.			&4000	!$**************************************************************&	!                                                               &	!                                                               &	! 	SET UP TO SEND BACK A REQUEST TO 'SHOW'			&	!                                                               &	!                                                               &	!***************************************************************&4010	\ COMMAND% = 3%							&	\ GO TO       32000							&	!								&	! Set the command to SHOW and then return.			&5000	!$**************************************************************&	!                                                               &	!                                                               &	! 	CHANGE JOURNALING DEVICES				&	!                                                               &	!                                                               &	!***************************************************************&5010	\       PROMPT% = 2%							&	\ CALL MODASK ( PROMPT%, ASK.RESP$, RESPONSE% )			&	\ ON RESPONSE%	GO TO	3010, 31100, 5020			&	!								&	! Set up the prompt number.					&	! Call our prompting subroutine for the second prompt.		&	! Branch on ESC, ^Z, Other.					&5020	\ GOSUB 10000							!1.1A00&	\ GO TO 5010	IF DEVICE.NUMBER% < 0%				!1.1A00&	!								 1.1A00&	!	Check the user's specification.				 1.1A00&	!								 1.1A00&	\ GO TO 5500							!1.1A00&		IF INTERNAL.DEVICE$ = JOURNAL.DEVICE$( I%, J% )		!1.1A00&			FOR J%       = 1% TO 2%				!1.1A00&				FOR I% = 1% TO 0% STEP -1%		!1.1A00&	!								 1.1A00&	!	If we find a match for the user's device specifications, 1.1A00&	!	  skip to ask for new device.				 1.1A00&	!								 1.1A00&	\ PRINT "% "; TRM$( ASK.RESP$ );				!1.1A00&			" not currently a journal device"		!1.1A00&	\ GO TO 5010							!1.1A00&	!								 1.1A00&	!	Tell the user that we didn't find his device.		 1.1A00&	!	Go prompt him for another device.			 1.1A00&5500	\ PROMPT% = 3%							&	\ CALL MODASK ( PROMPT%, ASK.RES      P$, RESPONSE% )			&	\ ON RESPONSE% GO TO	5010, 31100, 5510			&	!								&	! Set the prompt number.					&	! Call our prompting routine for the third prompt.		&	! Branch on ESC, ^Z, Other.					&5510	\ GOSUB 10000							!1.1A00&	\ GO TO 5500	IF DEVICE.NUMBER% < 0%				!1.1A00&	\ JOURNAL.DEVICE$( 1%, J% ) = INTERNAL.DEVICE$			!1.1A00&	!								 1.1A00&	!	Attempt to verify the device specification.		 1.1A00&	!	If not valid, go reprompt.				 1.1A00&	!	Set the new journal device.				 1.1A00&5520	\ PRINT 'This will       cause journaling to stop.'			&		IF  JOURNAL.DEVICE$( 1%, 1% ) = NULL.DEVICE$		&		AND JOURNAL.DEVICE$( 1%, 2% ) = NULL.DEVICE$		&	\ GO TO 3000							&	!								&	! Save the requested device name in the array.			&	! Tell the user if he has caused there to be no journaling	&	!	devices.						&	! Go get another command.					&6000	!$**************************************************************&	!                                                               &	!                                                                     &	! 	SET UP RETURN TO SHOW AN 'EXIT' COMMAND			&	!                                                               &	!                                                               &	!***************************************************************&6010	\ COMMAND% = 2%							&	\ GO TO 32000							&	!								&	! Set up the return for EXIT command, and return.		&10000	!$************************************************************** 1.1A00&	!								 1.1A00&	!								 1.1A00&	!	C H E C K    J O U R N A       L    D E V I C E		 1.1A00&	!								 1.1A00&	!								 1.1A00&	!*************************************************************** 1.1A00&								!	 1.1A00&	\ INTERNAL.DEVICE$ = TRM$( ASK.RESP$ )				!1.1A00&	\ DEVICE.NAME$ = CHR$(0%) + CHR$(0%)				!1.1A00&	\ DEVICE.NUMBER% = 0%						!1.1A00&	!								 1.1A00&	!	Remove any excess characters that the user may have	 1.1A00&	!	  typed.						 1.1A00&	!	Set up the default device name.				 1.1A00&	!	Set up the default device number.			 1.1A00&	!								 1.1A00&	\ GO       TO 10010	IF INTERNAL.DEVICE$ = "NONE"			!1.1A00&	!								 1.1A00&	!	If the user answered NONE then we can just go finish	 1.1A00&	!	  since we have set everything up correctly.		 1.1A00&	!								 1.1A00&	\ T1000% = INSTR( 1%, INTERNAL.DEVICE$, ":" )			!1.1A00&	\ INTERNAL.DEVICE$ = LEFT( INTERNAL.DEVICE$, T1000%-1% )	!1.1A00&			IF T1000% <> 0%					!1.1A00&	!								 1.1A00&	!	Check for the presence of a colon.			 1.1A00&	!	Remove the colon and anything to it's right.		 1.1A00&	!								 1.1A00&	\ GO TO 10      020	IF LEN( INTERNAL.DEVICE$ ) > 4%			!1.1A00&			OR LEN( INTERNAL.DEVICE$ ) < 2%			!1.1A00&	!								 1.1A00&	!	If the length, after removing any colon, is less than	 1.1A00&	!	  2 or greater than 4, we know the specification is	 1.1A00&	!	  not valid; go to the error exit.			 1.1A00&	!								 1.1A00&	\ DEVICE.NAME$ = LEFT( INTERNAL.DEVICE$, 2% )			!1.1A00&	\ GO TO 10020	IF INSTR( 1%, VALID.DEVICE$, "/"+DEVICE.NAME$ )	!1.1A00&				= 0%					!1.1A00&	!								 1.1A00&	!	Extract the expected device name from t      he specification. 1.1A00&	!	If the device is not in our list, exit with error.	 1.1A00&	!								 1.1A00&	\ DEVICE.NUMBER% = 0%	IF LEN( INTERNAL.DEVICE$ ) = 2%		!1.1A00&	\ DEVICE.NUMBER% = VAL( RIGHT( INTERNAL.DEVICE$, 3% ) )		!1.1A00&				IF LEN( INTERNAL.DEVICE$ ) > 2%		!1.1A00&	!								 1.1A00&	!	If no number was assigned, assume 0.			 1.1A00&	!	If a number was supplied, attempt to convert it to a	 1.1A00&	!	  number. (Note that this subroutine requires an error	 1.1A00&	!	  trap for a conversion error h      ere.)			 1.1A00&	!								 1.1A00&	\ CALL ASNLUN BY REF(	1%,					!1.1A00&				DEVICE.NAME$,				!1.1A00&				DEVICE.NUMBER%,				!1.1A00&				T1000%		)			!1.1A00&	\ GO TO 10020	IF T1000% <> 1%					!1.1A00&	!								 1.1A00&	!	Attempt to assign a lun to verify that the device	 1.1A00&	!	  exists on this system.				 1.1A00&	!	Go to the error exit if we were not successfull.	 1.1A00&10010	\ INTERNAL.DEVICE$ = DEVICE.NAME$ + CHR$( DEVICE.NUMBER% )	!1.1A00&	\ GO TO 10030							!1.1A00&	!								 1.1A00&	!	On success,       set up the special format of the device	 1.1A00&	!	  specification.					 1.1A00&	!	Go return.						 1.1A00&10020	\ PRINT "% "; TRM$( ASK.RESP$ );				!1.1A00&			" is not a valid journal device specification"	!1.1A00&	\ DEVICE.NUMBER% = -1%						!1.1A00&	!								 1.1A00&	!	Set the error indication.				 1.1A00&10030	\ RETURN							!1.1A00&	!								 1.1A00&	!	Return to the caller.					 1.1A00&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E       R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19010	\ RESUME 10020	IF ERR = 52%					!1.1A00&	!								 1.1A00&	!	If the error was in number conversion, resume at error.	 1.1A00&19020	\ COMMAND% = 4%							&	!								&	! Set the return for the root.					&19900	\ PRINT								&	\ CLOSE I% FOR I% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			      &31100	!$**************************************************************&	!                                                               &	!                                                               &	! 	CONTROL Z's ARE HANDLED HERE				&	!                                                               &	!                                                               &	!***************************************************************&31110	\ COMMAND% = 1%							&	\ PRINT								&	\ PRINT 'No Changes Can Be       Made'				&	\ PRINT								&	!								&	! Set the return as a control z.				&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32767	!$**************************************************************&	!								&	!								&	!	E N D    O F    S U B - P R O G R A M			&	!								&	!								&	!***************************************************   "   ************&	!								&	\ SUBEND "          œSC	kQÁ› 8$        	.PAGE	.TITLE	MODASK - SYSMOD DIALOG MODULE	.IDENT	/V1.1A00/	.ENABL	LC	.MCALL	QIOW$, DIR$, SPEAK, EXIT$S;;+;;	S Y S M O D    D I A L O G U E    F U N C T I O N;;;	VER/ED	DATE	INITIAL	REASON;	------	--------- ---	----------------------------------------;;	BL7-01	19-Apr-78 KMR	Took out SPEAK macro and TALK subroutine.;				  these are now included by use of a MACRO;				  library and a linkage.;	V1.100A	06-Mar-79 KMR	Changed the help text for old and new;				  device prompts.;;-;	.PAGE	.SBTTL	PROMPT DEFINITION       SECTION	.PSECT	CONSTN,D,RW,REL,GBL,CON	.NLIST	BEX;; PROMPTS ARE DEFINED HERE;P1:	.ASCII	/Command /		; THIS IS THE FIRST PROMPT.S.P1	=	. - P1			; LENGTH OF THE FIRST PROMPT.;P2:	.ASCII /Old Device/		; THIS IS THE SECOND PROMPT.S.P2	=	. - P2			; LENGTH OF THE SECOND PROMPT.;P3:	.ASCII /New Device/		; THIS IS THE THIRD PROMPT.S.P3	=	. - P3			; LENGTH OF THE THIRD PROMPT.;; THE FOLLOWING ARE THE DEFAULTS;D1:	.ASCII /<EXIT>? /		; 'COMMAND' DEFAULT.S.D1	=	. - D1			; LENGTH OF DEFAULT.;D2:	.ASCII /? /			; 'OLD DEV      ICE' DEFAULT.	.BYTE	0,0S.D2	= . - D2			; LENGTH OF THIS DEFAULT.;D3	= D2				; 'NEW DEVICE' DEFAULT IS THE SAME.S.D3	= S.D2				; SO IS THE LENGTH.;; HELP PROMPTS;H1:	.ASCII	/Specify the function to be performed./	; FIRST LINE.	.BYTE	CR,LF	.ASCII	/Valid responses are:/			; SECOND LINE.	.BYTE	CR,LF,CR,LF	.ASCII	/1.  CHANGE - change a journal device./	; THIRD LINE.	.BYTE	CR,LF	.ASCII	/2.  SHOW - display the journal devices./ ; 4TH LINE.	.BYTE	CR,LF	.ASCII	/3.  EXIT - make the changes and exit./	; 5TH LINE.	.BYT      E	CR,LFS.H1	=	. - H1			; GET THE LENGTH OF THIS GUY.;H2:	.ASCII	/Specify the name of the journal device that will be changed./	.BYTE	CR,LF				.ASCII	/A response of NONE is used to indicate the null device./	.BYTE	CR,LF			S.H2	=	. - H2			; CALCULATE THE LENGTH.;H3:	.ASCII	/Specify the name of the device that will replace the above/	.BYTE	CR,LF				.ASCII	/specified journal device. A response of NONE indicates a/	.BYTE	CR,LF				.ASCII	/null device./	.BYTE	CR,LF			S.H3	=	. - H3			; SET UP THE LENGTH OF THIS GUY      .;; VERIFICATION FIELDS.;L1:	.ASCII	/EXIT  /		; FIRST COMMAND	.ASCII	/SHOW  /		; SECOND COMMAND	.ASCII	/CHANGE/		; THIRD COMMANDN1	=	3			; NUMBER OF COMMANDSLE1	=	6			; MAXIMUM COMMAND LENGTH;; ERROR MESSAGES ;MESSAG:	.BYTE	CR,LF			; PUT OUT A BLANK LINE	.ASCII	/? FATAL directive error in Dialog module./	.BYTE	CR,LF			; ERROR MESSAGE.SIZE	=	. - MESSAG		; LENGTH OF ERROR MESSAGE.;; MESSAGE FOR INVALID RESPONSE;ZERERR:	.BYTE	CR,LF			; BLANK LINE	.ASCII	/% Invalid response./	; MESSAGE	.BYTE	CR,LF			; END THE L      INE	.BYTE	CR,LF			; BLANK LINESZER	= 	. - ZERERR		; LENGTH OF THIS MESSAGE;; END OF THE SETUP STUFF;	.PAGE;*********;;	SET UP DPB'S FOR THE ERROR MESSAGES. ;;*********;	.EVEN				; LINE YOURSELF UPDIRERR:	QIOW$	IO.WVB,13.,32.,,IOSTAT,,<MESSAG,SIZE,0>;INV:	QIOW$	IO.WLB,13. 32.,,IOSTAT,,<ZERERR,SZER,0>;;;*****;;	SET UP SOME TEMPORARY STORAGE AND LOCAL VALUES;;*****;AR:	.WORDLR:	.WORDR:	.WORDIOSTAT:	.WORDCR	= 15			; DEFINE A CARRIAGE RETURNLF	= 12			; DEFINE A LINE FEED	.PAGE	.SBTTL	PROMPTING SECTION	.PSECT	PRO      MPT,I,REL,GBL,CON,RO;********;;	THIS PROGRAM IS CALLED FROM BASIC+2 IN THE FOLLOWING FORM:;;		CALL MODASK  ( PROMPT%, RETURN$, RETURN% );;	THE ARGUMENTS ARE AS FOLLOWS:;;		PROMPT% - THE NUMBER OF THE DESIRED PROMPT;			1 -> COMMAND;			2 -> SHOW;			3 -> EXIT;		RETURN$ - THE STRING TYPED BY THE USER;		RETURN% - THE RETURN VALUE;			1 -> ESC WAS TYPED;			2 -> ^Z WAS TYPED;			3+ -> SUCCESS;			3 <= N <= NUMBER OF VALID RESPONSES;				NTH RESPONSE WAS TYPED.;;********;	.EVEN;;	SAVE THE REGISTERS WE WILL USE;MODASK::      MOV	R0,-(SP)	;SAVE REGISTER ZERO (WE USE IT)	MOV	R1,-(SP)	;SAVE REGISTER ONE (WE USE IT)	MOV	R2,-(SP)	;SAVE REGISTER TWO (WE USE IT)	MOV	R3,-(SP)	;SAVE REGISTER THREE (WE USE IT)	MOV	R4,-(SP)	;SAVE REGISTER FOUR (SPEAK USES IT)	MOV	R5,-(SP)	;SAVE REGISTER FIVE (FOR SPEAK & TALK);;	DECIDE WHICH PROMPT WE ARE AT AND BRANCH;	MOV	#1,@6(R5)	;ASSUME ESC IS RETURN	MOV	@2(R5),R0	;PUT PROMPT NUMBER IN R0	DEC	R0		; SUBTRACT ONE	ASL	R0		; MULTIPLY BY TWO	JMP	BRANCH(R0)	; JUMP THIS MANY PAST 'BRANCH';;	HERE WE DO THE A      CTUAL BRANCH;BRANCH:	BR	PRMPT1		; DO THE FIRST PROMPT	BR	PRMPT2		; DO THE SECOND PROMPT	BR	PRMPT3		; DO THE THIRD PROMPT;;	FIRST PROMPT;PRMPT1:	SPEAK #P1,#S.P1,#D1,#S.D1,#1,#H1,#S.H1,AR,LR,R,ESC,CZ,DE,#L1,#N1,#LE1		; USE THE SPEAK MACRO, LIST	BR	GOBACK;;	SECOND PROMPT;PRMPT2:	SPEAK	#P2,#S.P2,#D2,#S.D2,#-1,#H2,#S.H2,AR,LR,R,ESC,CZ,DE		; USE SPEAK MACRO - NO LIST, ALPHA RETURN	BR	GOBACK;;	THIRD PROMPT;PRMPT3:	SPEAK	#P3,#S.P3,#D3,#S.D3,#-1,#H3,#S.H3,AR,LR,R,ESC,CZ,DE		; USE SPEAK MACRO - NO LIST, ALPHA RETURN	      BR	GOBACK		; WE ARE DONE. GO BACK.ESC:	MOV	#-1, R		; MAKE THE RESPONSE A -1.	BR	GOBACK		; THEN CONTINUE AS FOR OTHER RESPONSES.CZ:	CLR	R		; MAKE CONTROL Z A ZERO RESPONSE.GOBACK:	MOV	(SP)+,R5	; RESTORE REGISTER FIVE AFTER IT WAS				;   DESTROYED BY SPEAK & TALK.	ADD	#2,R		; MOVE RESPONSE INTO RETURN RANGE	MOV	R,@6(R5)	; PUT THE RETURN NUMBER IN THE PROPER				; PLACE	CMP	R,#3		; IF THE RESPONSE WAS ESCAPE OR CONTROL	BLT	DONE		; Z, SKIP THE STRING PROCESSING	CMP	LR,#1		; IF THE STRING IS OF ZERO LENGTH	BLT	DO      NE		; SKIP THE STRING PROCESSING;;	RETURN STRING PROCESSING IS DONE HERE;	MOV	4(R5),R3	; PUT THE ADDRESS OF THE STRING ADDR.				;   IN REGISTER 3	CMP	LR,2(R3)	; COMPARE THE LENGTH OF THE RETURN STRING				;   WITH THE LENGTH WE HAVE AVAILABLE TO				;   TO RETURN IT TO.	BLE	5$		; SKIP THE ERROR HANDLING IF WE HAVE				;   ENOUGH ROOM.;;	HANDLE RETURN STRINGS THAT ARE TOO LONG HERE;	DIR$	#INV,DE		; PRINT OUT AN INVALID RESPONSE	BR	DONE		; GO BACK;;	PUT THE RETURNS IN THE RIGHT PLACES;5$:	MOV	LR,R0		; SAVE LENGT      H IN R0	MOV	AR,R1		; MOVE ADDRESS OF RETURNED STRING				; TO REGISTER 1	MOV	@4(R5),R2	; MOVE DESIRED STRING POSITION TO				; REGISTER 2;;	MOVE LOOP;10$:	MOVB	(R1)+,(R2)+	; MOVE NEXT BYTE	SOB	R0,10$		; BRANCH IF WE ARE NOT DONE;;	FILL THE REST OF THE STRING WITH BLANKS;	MOV	2(R3),R0	; MOVE DESTINATION LENGTH TO R0.	SUB	LR,R0		; SUBTRACT THE NUMBER IN THE RETURN				;   STRING FROM THIS TO SEE IF WE				;   MUST BLANK FILL	BEQ	DONE		; IF NO POSITIONS LEFT, DONE.;;	BLANK FILLING SECTION;15$:	MOVB	#40,(R2)+	; BUT   Ü   IN ANOTHER BLANK	SOB	R0,15$		; SUBTRACT ONE FROM THE COUNT	BR	DONE		; GO FINISH UP;;	HANDLE DIRECTIVE ERRORS HERE.;DE:	DIR$	#DIRERR		; PRINT OUT THE DIRECTIVE ERROR MESSAGE	EXIT$S			; GET OUT;;	RESTORE REGISTERS AND GET OUT;DONE:	MOV	(SP)+,R4	; RESTORE REGISTER FOUR THAT WAS				;   DESTROYED BY SPEAK	MOV	(SP)+,R3	; RESTORE REGISTER THREE	MOV	(SP)+,R2	; RESTORE REGISTER 2	MOV	(SP)+,R1	; RESTORE REGISTER 1	MOV	(SP)+,R0	; RESTORE REGISTER 0	RTS	PC		; RETURN TO CALLER;	.END Ü         4}8EkQÁ› 8$        	.TITLE	TALKC	- THE MACRO DIALOG SUB-ROUTINE - VERSION 2;;	TALKC is for 'talk clearly', TALK is still the entry point for;	the version 1 routine.;	.SBTTL	TALK DATA DEFINITIONS	.ENABL	LC	.MCALL	DIR$,QIOW$;;	Local Macro definitions;	.MACRO	LOTPUT,DIRECT,ERROR;;	This macro does a QIO for terminal output (DIRECT) and if;	user switch is set, it will log this output on an already;	opened file  (LUN defined by task-builder);	DIR$	#'DIRECT','ERROR'		;DO THE TERMINAL OUTPUT;	TST	TLKLOG			;DOES PROGRAM WANT OUTPUT LO      GGED?	BEQ	.+32			;NO, ON TO TALK CODE	MOV	'DIRECT'+Q.IOPL,L'DIRECT'+Q.IOPL	;DETERMINE WHERE LOG 	MOV	'DIRECT'+Q.IOPL+2,L'DIRECT'+Q.IOPL+2	;OUTPUT IS	DIR$	#L'DIRECT','ERROR'	;YES, DO THE OUTPUT TO THE LOG FILE;	.ENDM	LOTPUT;;	.MACRO	LINPUT,DIRECT,ERROR;;	This macro does a QIO for terminal input (DIRECT) and if ;	user switch is set, it will log this input on an already;	opened file (lun defined by task-builder);	DIR$	#'DIRECT','ERROR'	;DO THE TERMINAL INPUT;	TST	TLKLOG			;DOES PROGRAM WANT OUTPUT LOGGED?	BEQ	      .+16			;NO, ON TO TALK CODE	MOV	IOSTAT+2,L'DIRECT'+Q.IOPL+2	; OUTPUT # CHARACTERS INPUT	DIR$	#L'DIRECT','ERROR'	;YES, DO THE OUTPUT TO THE LOG FILE;	.ENDM	LINPUT	.PAGE	.PSECT	TALKD,D,RW,GBL,REL,CON;;********************************************************;;;	D A T A    F O R    T A L K    R O U T I N E;;;******************************************************;CR	=	15			;CARRIAGE RETURNLF	=	12			;LINE FEEDFF	=	14			;FORM FEEDNL	=	0			;NULLESC	=	33			;ESCAPE CHAREACTERCTRLZ	=	32			;CTRL-Z CHARACTER;;;	Use glob      al definitions in task-build to specify LUN & function codes;;	GBLDEF=TLUN:lun #	in the task-build command file to specify the;	lun for terminal I/O;;	GBLDEF=LLUN:lun #        in the task-build command file to specify the;	lun for logging file;;	GBLDEF=TFUNC:num	where num is equal to either IO.WBT or IO.WVB;	This is only used for terminal I/O, logging QIO is always IO.WVB.;TEFN	==	30.			;NORMALLY EVENT FLAG 30					;IF A GLOBAL PATCH IS USED TO RE-DEFINE					;THIS, A TAS-BUILD DIAGNOSTIC WILL OCCUR.;;	These       values may be changed via GBLDEF staements at task build time;HELP::	QIOW$	TFUNC,TLUN,TEFN,,IOSTAT,,<0,0,0>	;HELP TEXT QIOBLANK::	QIOW$	TFUNC,TLUN,TEFN,,IOSTAT,,<BLANKL,2,0>	;BLANK LINE QIOPROM:	QIOW$	TFUNC,TLUN,TEFN,,IOSTAT,,<0,0,0>	;PROMPT QIO;LHELP::	QIOW$	IO.WVB,LLUN,TEFN,,IOSTAT,,<0,0,0>	;HELP TEXT QIOLBLANK::QIOW$	IO.WVB,LLUN,TEFN,,IOSTAT,,<BLANKL,2,0>	;BLANK LINE QIOLPROM:	QIOW$	IO.WVB,LLUN,TEFN,,IOSTAT,,<READBF,0,0>	;PROMPT QIO;READL:	QIOW$	IO.RVB,TLUN,TEFN,,IOSTAT,,<READBF,80.>	;READ LINE QIOLREADL      :	QIOW$	IO.WVB,LLUN,TEFN,,LSTAT,,<READBF,0,0> ;LOG A LINE OF INPUT;;	Note that READ with PROMPT can not be used, since TALK is to work;	on virtual terminals also.  This form of QIO does not work in that;	case.;;;	.NLIST	BEXERBUF:	.BYTE	CR,LF,LF	.ASCII	/% Invalid response - try again/	.BYTE	CR,LF,LF				;INVALID INPUT ERROR MESSAGE;S.ER	=	. - ERBUF;ER1:	.BYTE	CR,LF,LF	.ASCII	/% Response does not match any allowed list element./	.BYTE	CR,LF,LF				;Non-matching list elementS.ER1	=	. - ER1;;ER2:	.BYTE	CR,LF,LF	.      ASCII	/% Numeric response required/	.BYTE	CR,LF,LF				;Non-numeric response errorS.ER2	=	. - ER2;;ER3:	.BYTE	CR,LF,LF	.ASCII	/% Default response not allowed here/	.BYTE	CR,LF,LF				;No default response errorS.ER3	=	. - ER3;ER4:	.BYTE	CR,LF,LF	.ASCII	/% A non-negative integer is required./	.BYTE	CR,LF,LFS.ER4	=	. - ER4			;ERROR MESSAGE FOR NON-NEGATIVE NUMBERS;ER5:	.BYTE	CR,LF,LF	.ASCII	/% A strictly positive integer is required./	.BYTE	CR,LF,LF		S.ER5	=	. - ER5		;ERROR MESSAGE FOR STRICTLY POSITIVE NUMBER;;      YESNO:	.ASCIZ	/YES/	.ASCIZ	/NO/	.BYTE	ESC					;Canned YES/NO response;;;READBF:	.BLKB	80.			;BUFFER FOR INPUT MESSAGESTASH:	.BLKB	80.			;BUFFER FOR PROMPT + DEFAULT;	.EVENTLKLOG::	.WORD	0		;SWITCH TO CONTROL LOGGINGTLKPRT::	.WORD	0		;SWITCH TO CONTROL SUPPRESSION OF NON-					;PRINTING ASCII CHARACTERSTLKLWR::	.WORD	0		;SWITCH TO CONTROL LOWER ->UPPER CASE 					;CONVERSIONIOSTAT:	.BLKW	2			;I/O STATUS BLOCK FOR QIO'SLSTAT:	.BLKW	2			;I/O STTATUS BLOCK FOR LOG OF READ QIOTEMP:	.BLKW	2			;WORK AREA FOR INTEGER       CONVERSION;BLANKL:	.BYTE	CR,LF			;BLANK LINE BUFFER	.page	.psect	talki,ro,rel,gbl,con,i	.sbttl	macro dialog function code	.ENABL	LSB	.ENABL	LC;;***************************************************;;;	D I A L O G   F U N C T I O N;;;************************************************;;;	Linkage to this routine is via the SPEAK macro.  It uses R5;	to point to a TALK control block which describes the prompt,;	default, & help strings; specifies the nature of the response;	expected (string,number, one of a list of       pre-specified strings);;	It describes the output (string or number) and gives a coded;	description of the answer which identifies ESC & CTRL-Z conditions;	for the SPEAK macro to use and identifies which element in a list was;	chosen (if appropriate).;	If a list of pre-determined string responses is used, the control;	block also has the descriptor for that list;;;	ALL REGISTERS ARE PRESERVED.  R5 WAS ALTERED BY SPEAK MACRO, THOUGH.;;	Lun assignments for the terminal I/O , Log I/O and the I/O function;	code f      or terminal;	output (IO>WBT or IO.WVB) are each specified by task-build global ;	definitions.  See the Data PSECT above.;;	.PAGETALKC::	CALL	$SAVAL			;CO-ROUTINE TO SAVE R0-R5	LOTPUT	BLANK,375$		;PRINT A BLANK LINE;1$:	MOV	TLPRML(R5),R2		;LENGTH OF PROMPT STORED	MOV	#STASH,R1		;PROMPT + DEFAULT TARGET FIELD	MOV	TLPRM(R5),R0		;PROMPT STRING ADDRESS5$:	MOVB	(R0)+,(R1)+		;TRANSFER PROMPT STRING INTO BUFFER	SOB	R2,5$			;;	MOV	TLDEFL(R5),R2		;LENGTH OF DEFAULT STORED	BEQ	12$			;NO DEFAULT - SKIP THE SETUP	MOV	TL      DEF(R5),R0		;DEFAULT STRING ADDRESS					;R1 SET UP FROM PROMPT MOVE10$:	MOVB	(R0)+,(R1)+		;TRANSFER DEFAULT STRING INTO BUFFER	SOB	R2,10$			;;12$:	MOV	#STASH,PROM+Q.IOPL	;SET UP PROMPT POINTER	MOV	TLPRML(R5),PROM+Q.IOPL+2	;SET UP PROMPT QIO LENGTH	ADD	TLDEFL(R5),PROM+Q.IOPL+2	; TO BE SUM OF PROMPT + DEFAULT;;	This code takes the user specified prompt & default strings and assembles;	them in a work area used by the PROMPT QIO ;	MOV	#READBF,R1		;ADDRESS OF READ BUFFER	MOV	#40.,R2			;80 BYTES TO CLEAR15$:	MOV	      #"  ,(R1)+		;CLEAR READ BUFFER	SOB	R2,15$			;;	CLR	TLSTAT(R5)		;INITIALIZE RETURN STATUS TO  CTRL-Z	CLR	TLANSL(R5)		;INITIALIZE ANSWER LENGTH TO 0	MOV	#READBF,TLANS(R5)	;INITIALIZE ANSWER ADDRESS POINTER					;	FOR STRING RESPONSE;;	These instructions initialize internal work areas and final answer cells;	LOTPUT	PROM,375$		;PRINT THE PROMPT	LINPUT	READL,375$		;READ THE ANSWER	MOV	IOSTAT+2,R2		;TEMPORARY STORE FOR # CHARACTERS	MOV	IOSTAT,R1		;TEMPORARY STORE FOR TEMINATION CHAR	LOTPUT	BLANK,375$		;FORCE CR-LF       FOR NICE SPACING;	MOV	R2,IOSTAT+2		;RESTORE # OF CHARACTERS	MOV	R1,IOSTAT		;RESTORE TERMINATION CHARACTER	CMPB	IOSTAT+1,#ESC		;WAS RESPONSE AN ESC?	BNE	20$			;NO, TRY NEXT CASE	MOV	#-1,TLSTAT(R5)		;MARK STATUS AS ESC	JMP	350$			;EXIT TALK;20$:	CMPB	IOSTAT,#IE.EOF		;WAS RESPONSE CTRL-Z?	BNE	25$			;NO, ITS A REAL RESPONSE					;STATUS ALREADY SET	JMP	350$			;EXIT TALK;;	We have now printed the prompt, read the response, & processed;	possible ESC or CTRL-Z responses	.PAGE;25$:	MOV	#1,TLSTAT(R5)		;SET STATUS FO      R REAL RESPONSE	TST	R2			;NON-NULL RESPONSE?	BNE	40$			;YES, GO PROCESS IT					;NO - MOVE IN DEFAULT	CMP	TLDEFL(R5),#5		;NON-TRIVIAL RESPONSE?	BGE	27$			;OK - CONTINUE	JMP	430$			;NO - PROMPT AGAIN -- TOO FAR FOR BRANCH;27$:	MOV	TLDEFL(R5),R2		;STORE DEFAULT LENGTH	SUB	#4,R2			;SUBTRACT OFF FORMATTING CHARACTERS	MOV	R2,-(SP)		;SAVE TOTAL FOR NEXT STEP;	MOV	TLDEF(R5),R0		;DEFAULT STRING ADDRESS FOR SOURCE MOVE	INC	R0			;BUMP PAST 1ST DEFAULT CHARACTER - <	MOV	#READBF,R1		;READ BUFFER ADDRESS FOR TARGET OF MO      VE30$:	MOVB	(R0)+,(R1)+		;MOVE DEFAULT INTO READ BUFFER	SOB	R2,30$			;	MOV	(SP)+,R2		;RESET TOTAL LENGTH OF DEFAULTED ANSWER;;	The user took the default response.  The pre-specified default string;	is moved into the read buffer after stripping off the decoration.;;40$:	MOV	#READBF,R0		;R0 POINTS TO START OF FINAL MESSAGE	MOV	R0,R1			;FINAL MESSAGE IS GOING TO BE COMPRESSED					;SO WE CAN USE THE SAME WORK AREA FOR 					;THE STRIPPED MESSAGE45$:	TST	TLKPRT			;SKIP PRINTABLE CHARACTERS?	BNE	47$			;NO	CMPB	(R0      ),#41		;IS IT IN THE PRINTABLE ASCII RANGE?	BMI	55$			;NO, SKIP THE CHARACTER	CMPB	#176,(R0)		;	BMI	55$			;NO, SKIP THE CHARACTER;	47$:	TST	TLKLWR			;LOWER CASE CONVERSION SUPPRESSED?	BNE	50$			;YES	CMPB	(R0),#141		;IS IT LOWER CASE?	BMI	50$			;NO, DON'T CHANGE IT	CMPB	#172,(R0)		;	BMI	50$			;NO, DON'T CHANGE IT;	BICB	#40,(R0)		;YES, ITS LOWER CASE - CONVERT IT TO UPPER;50$:	MOVB	(R0),(R1)+		;SHIFT CHARACTER IN STRIPPED BUFFER	INC	TLANSL(R5)		;INCREMENT COUNT OF NON-STRIPPED CHAR.;55$:	TSTB	(R0)+			;GET NEX      T INPUT CHARACTER	SOB	R2,45$			;TRY FOR ANOTHER CHARACTER;	TST	TLANSL(R5)		;DID WE STRIP AWAY THE ENTIRE ANSWER?	BEQ	25$			;YES, TAKE DEFAULT - PROGRAMMER MUST					;MAKE SURE DEFAULT ENDS UP NON- ZERO;;	Using either the input response or the defaulted response, the answer;	is stripped of non-printing ASCII characters and lower case is ;	converted to upper case.  The final answer count is set up for;	string responses.	.PAGE;100$:	CMPB	READBF,#'?		;DID USER REQUEST HELP?	BNE	200$			;NO, TRY NEXT POSSIBILITY;	      LOTPUT	BLANK,375$		;PRINT A BLANK LINE FOR FORMATTING	MOV	TLHLP(R5),HELP+Q.IOPL	;ADDRESS OF HELP TEXT STRING	MOV	TLHLPL(R5),HELP+Q.IOPL+2	;LENGTH OF HELP TEXT TO QIO DPB	LOTPUT	HELP,375$		;PRINT HELP TEXT	LOTPUT	BLANK,375$		;PRINT A BLANK LINE FOR FORMATTING	LOTPUT	BLANK,375$		;PRINT A BLANK LINE FOR SPACING	JMP	1$			;SEE IF IT HELPED THE USER;;	The user asked for HELP.  We printed out the help text & reprompted him.;;200$:	TSTB	TLTYP(R5)		;IS AN INTEGER RESPONSE REQUIRED?	BNE	300$			;NO, TRY NEXT POSSIBILI      TY;	MOV	R5,-(SP)		;SAVE POINTER TO CONTROL BLOCK	MOV	TLANSL(R5),R4		;CONVERT ASCII STRING TO SIGNED NUMBER	MOV	#READBF,R5		;SET UP REGISTERS FOR SYSTEM CALL TO 	MOV	#TEMP,R3		;	JSR	PC,.DD2CT		;DO THE CONVERSION	MOV	(SP)+,R5		;RESET POINTER TO CONTROL BLOCK	BCC	205$			;CONVERSION WENT OK	JMP	420$			;ILLEGAL VALUE - PRINT ERROR & TRY AGAIN;205$:	TST	TEMP+2			;DETERMINE SIGN OF NUMBER	BGT	220$			;STRICTLY POSITIVE ALWAYS VALID	BEQ	210$			;0 ONLY OK IF SUB-TYPE IS 0 OR -	BMI	215$			;- ONLY OK IF SUB-TYPE IS  -	      JMP	375$			;SHOULD NEVER GET HERE;210$:	TSTB	TLSTYP(R5)		;IF SUB-TYPE IS 0 OR -1, 0 ANSWER IS OK	BLE	220$			;ITS OK	JMP	450$			;ERROR - STRICTLY POSITIVE NEEDED;215$:	TSTB	TLSTYP(R5)		;IF SUB-TYPE IS -1, - ANSWER IS OK	BMI	220$			;ITS OK	JMP	440$			;ERROR - NON-NEGATIVE NEEDED;;220$:	MOV	TEMP+2,TLANS(R5)	;STORE ANSWER	MOV	#2,TLANSL(R5)		;SET UP ANSWER LENGTH	BR	350$			;EXIT TALK;;	The answer is expected to be a number.  The response string is passed;	to a system routine which converts the ASCII string to a       signed binary;	number.  The return values  are set up & talk exits.	.PAGE;;300$:	BMI	350$			;IF MINUS, IT ISN'T A LIST RESPONSE					;IN THIS CASE IT WAS A STRING & W'ERE DONE	MOV	#YESNO,R0		;SET UP FOR ADDRESS OF INTERNAL YES/NO STRING	TSTB	TLSTYP(R5)		;SPECIAL YES/NO CASE?	BNE	307$			;YES	MOV	TLLISS(R5),R0		;ADDRESS OF 1ST LIST RESPONSE307$:	MOV	R0,R1			;COPY REGISTER VALUE	MOV	#1,R4			;INITIALIZE LIST COUNTER;310$:	MOV	#READBF,R2		;GET START OF RESPONSE STRING	MOV	TLANSL(R5),R3		;LET LENGTH OF RESPONSE ST      RING	CLR	TEMP			;INITIALIZE COUNTER FOR FINAL STRING LENGTH;315$:	CMPB	(R0)+,(R2)+		;COMPARE RESPONSE TO LIST ELEMENT	BNE	325$			;NO MATCH ON THIS ELEMENT - TRY NEXT	INC	TEMP			;INCREMENT LENGTH OF STRING	TSTB	(R0)			;END OF LIST STRING?	BEQ	320$			;YES	SOB	R3,315$			;POSSIBLE MATCH - KEEP MATCHING;317$:	TSTB	(R0)+			;DETERMINE FULL SSTRING LENGTH	BEQ	320$			;END OF STRING	INC	TEMP			;INCREMENT TOWARD FULL STRING COUNT	BR	317$			;LOOP THROUGH REMAINDER OF FIELD;320$:	MOV	R1,TLANS(R5)		;POINT TO WHOLE,PROGRA      MMER SPECIFIED STRING	MOV	R4,TLSTAT(R5)		;MATCHED - RETURN LIST # TO USER	MOV	TEMP,TLANSL(R5)		;MATCHED - RETURN FINAL STRING LENGTH	BR	350$			;EXIT TALK;325$:	TSTB	(R1)+			;SKIP TO NEXT LIST STRING	BNE	325$			;	MOV	R1,R0			;RESET TO START OF NEXT ELEMENT	INC	R4			;MARK FOR NEXT LIST ELEMENT	CMPB	(R1),#ESC		;END OF SET OF LIST STRINGS?	BNE	310$			;NO, TRY NEXT LIST STRING;	BR	410$			;NO MATCH ON ANY LIST ELEMENT - ERROR;;	The program expects some sub-set of some list element as the response;	this segment of       code does a match of the whole response to a sub-set;	of each string element.  A match occurs on the first matching sub-set;	it is the programmer's responsibility to make sure all sub-set matches;	will be unique.  If no match occurs on any list element, an error ;	message is printed & the user is prompted again.	.PAGE;350$:	CLC				;RETURN SUCCESS	RETURN				;RETURN IS THROUGH CO-ROUTINE SAVEAL;;375$:	SEC				;RETURN ERROR STATUS	RETURN				;RETURN IS THROUGH CO-ROUTINE SAVEAL;;;	Two 'returns' are processed he      re.  The successful conversation return;	and the failed return.  ;400$:	MOV	#ERBUF,HELP+Q.IOPL	;TAILOR QIO FOR ERROR TEXT	MOV	#S.ER,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT INVALID RESONSE MESSAGE	JMP	1$			;TRY AGAIN;410$:	MOV	#ER1,HELP+Q.IOPL	;TAILOR QIO FOR STRING ERROR	MOV	#S.ER1,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT ERROR MESSAGE	JMP	1$			;TRY AGAIN;420$:	MOV	#ER2,HELP+Q.IOPL	;TAILOR QIO FOR NON-NUMERIC ERROR MESSAGE	MOV	#S.ER2,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;	JMP	1$			;TRY AGAIN;430$:	MOV	#ER3,HE      LP+Q.IOPL	;TAILOR QIO FOR NO DEFAULT ERROR MESSAGE	MOV	#S.ER3,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT ERROR MESSAGE	JMP	1$			;TRY AGAIN;440$:	mov	#er4,help+q.iopl	;tailor qio for non-negative error message	MOV	#S.ER4,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT THE ERROR MESSAGE	JMP	1$			;TRY AGAIN;450$:	MOV	#ER5,HELP+Q.IOPL	;TAILOR QIO FOR STRICTLY POSITIVE ERROR	MOV	#S.ER5,HELP+Q.IOPL+2	;	LOTPUT	HELP,375$		;PRINT THE ERROR MESSAGE	JMP	1$			;TRY AGAIN;;	These routines are the error message setup routines.  Th   l   ey tailor the;	QIO directive for the appropriate error text, print that text, & ;	try the input again.;	.ENDl          œwu~“Á› 8$        1	!***************************************************************&	!								&	!								&	!	P R O G R A M    T I T L E				&	!								&	!								&	!								&	!	Program:	XXXXXX					&	!	Version:	VV					&	!	Edit level:	EE					&	!	Edit date:	DD-MMM-YY				&	!	Author(s):	AAA					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!								&	!								&	!		     COPYRIGH      T (c) 1978 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$**************************************************************&	!								&	!								&	!	M O       D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!								&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I O N			&	!								&	!								&	!***************************************************************&300	!$*********************      *****************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!	    1		Command terminal input/output		&	!	    2		Primary data file input			&	!	    3		Primary data file output		&	!	    4		Listing file				&	!								&	!***************************************************************&400	!$*************************************************************      *&	!								&	!								&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!		      						&	!								&	!								&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!************************************      ***************************&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote libra      ry dimension declarations.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&951	\ MAP	(CALTIM)	C.INIT%,				&				TIME%(8),				&				KERNEL.NAME$=6,				&				HOLD.SPACE$=10				&	!								&	!	The map for the common region				&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!************      ***************************************************&	!								&	\ ON ERROR GO TO 19000						&	\ ASK.HELP$(1)= "Type in the date in the format dd-mmm-yy."	&	\ ASK.HELP$(5)= "Type in the time in the format hh:mm."		&	!								&	!	Set up standard default error trap			&1500	\ REGION%(1)= 2%						&	\ REGION%(2)= 20%*40%**2% + 9%*40% + 13%			&	\ REGION%(3)= 5%*40%**2%					&	\ REGION%(4)= 0%						&	\ REGION%(5)= 0%						&	\ REGION%(6)= 32%+8%+4%+2%+1%					&	\ REGION%(7)= 0%						&	\ CALL CRRG BY REF (REGION%(),DIR      %)				&	\ GO TO 1510	IF DIR% = 1%					&	!								&	\ PRINT								&	\ PRINT "? Create region directive failed"			&	\ PRINT								&	\ CALL EXITS2(2%,0%)						&	!								&	!	Create region - print error message if necessary	&1510	\ WINDOW%(0)= 7%						&	\ WINDOW%(0)= SWAP% (WINDOW%(0%))				&	\ WINDOW%(1)= 0%						&	\ WINDOW%(2)= 2%						&	\ WINDOW%(3)= 0%						&	\ WINDOW%(4)= 0%						&	\ WONDOW%(5)= 0%						&	\ WINDOW%(6)= 128%+8%+4%+2%+1%					&	\ CALL CRAW BY REF (WINDOW%(),DIR%)				&	\ GO TO 1520	IF DIR%= 1      %					&	!								&	\ PRINT								&	\ PRINT "? Map window directive failed"				&	\ PRINT								&	\ CALL EXITS2(2%,0%)						&	!								&	!	Map window - print error message if necessary		&1520	\ C.INIT%= 0%							&	!								&	!	Tell SETCAL that SETTIM is calling			&2001	\ PROMPT$= "Date"						&	\ HELP.IND%= 1%							&	\ HELP.CNT%= 1%							&	\ DEFAULT$= DATE$(0%)						&	\ ON FN.ASK%(PROMPT$,DEFAULT$,"",HELP.IND%,HELP.CNT%)			&		GO TO 2001, 32200, 2010					&	!								&	!	Determine the date					&2010	\ C.DATE$      = EDIT$(ASK.CVT$,2%)					&	\ ON (FN.CHK.DATE%(C.DATE$) + 2%) GO TO 2020, 2030		&	!								&	!	Validate the date					&2020	\ TIME%(0)= YEAR%						&	\ TIME%(1)= MONTH%						&	\ TIME%(2)= DAY%						&	\ GO TO 3000							&	!								&	!	Stuff the 11M format parameters into the array		&2030	\ PRINT								&	\ PRINT "% Invalid Date - The correct format is dd-mmm-yy."	&	\ PRINT								&	\ GO TO 2001							&	!								&	!	An invalid date was specified				&3000	\ PROMPT$= "Time"						&	\ HELP.IND%= 5%							&	\ HELP.CN      T%= 1%							&	\ DEFAULT$= TIME$(0%)						&	\ ON FN.ASK% (PROMPT$,DEFAULT$,"",HELP.IND%,HELP.CNT%)		&		GO TO 2001, 32200, 3010					&	!								&	!	Determine the time					&3010	\ C.TIME$= EDIT$(ASK.CVT$,2%)					&	\ ON (FN.CHK.TIME% (C.TIME$) + 2%) GO TO 3020, 3030		&	!								&	!	Validate the time					&3020	\ TIME%(3%)= HOUR%						&	\ TIME%(4%)= MINUTE%						&	\ TIME%(5%)= 0%			! Seconds are always started at 0&	\ GO TO 4000							&	!								&	!	Stuff the 11M format time parameters into common	&3030	\ PRINT		      						&	\ PRINT "% Invalid time - the correct format is hh:mm."		&	\ PRINT								&	\ GO TO 3000							&	!								&	!	Invalid time error message				&4000	\ TASK$= "MCR..."						&	\ COMMAND$= "INS [1,54]SETCAL/TASK=CALSET"			&	\ GOSUB 20001							&	!								&	\ TASK$= "CALSET"						&	\ COMMAND$= "CALSET"						&	\ RETURN%= 1%							&	\ GOSUB 20001							&	\ RETURN%= 0%							&	!								&	\ TASK$= "MCR..."						&	\ COMMAND$= "REM CALSET"					&	\ GOSUB 20001							&	!								&	!	Spawn the calendar clock program      			&	!	Ignore error status on exit				&5000	\ EDIT.DATE$= EDIT$(C.DATE$,2%)					&	\ EDIT.TIME$= EDIT$(C.TIME$,2%)					&	\ NEW.TIME$= EDIT.TIME$ + " " + EDIT.DATE$			&	\ COMMAND$= "TIM " + NEW.TIME$					&	\ GOSUB 20001							&	!								&	!	Update the Kernel clock					&6000	\ GO TO 32000							&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!*********      ******************************************************&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!								&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!****************      ***********************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!***************************************************************&25000	!$**********************************      ****************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&32001	\ CALL EXITS2 (1%,0%)						&	!								&	!	Exit with success					&32200	\ CALL EXITS2 (2%,0%)		   ,  				&	!								&	!	Exit with error status  - CTRL-Z exit			&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END,         Kq"“Á› 8$        1	!***************************************************************&	!								&	!								&	!		R E C E R    -     RECOVR IO ERROR PROCESSOR	&	!								&	!								&	!								&	!	Program:	RECER					&	!	Version:	V1.1					&	!	Edit level:	00					&	!	Edit date:	19-MAR-79				&	!	Author(s):	AJS					&	!			LBB					&	!								&	!***************************************************************&11	!***************************************************************&	!								&	!								&	!		       C O P Y R I G H T			&	!						      		&	!								&	!		     COPYRIGHT (c) 1978, 1979 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 COMMIT-	&	!   MENT BY DIGITAL EQUIPMENT CORPORATION.			&	!								&	!   DIGITAL ASSUMES NO  RESPONSIBILITY FOR THE USE OR RELIA-	&	!   BILITY  OF  ITS  SOFTWARE ON EQUIPMENT WHICH IS NOT SUP-	&	!   PLIED BY DIGITAL.						&	!								&	!***************************************************************&20	!$*******************************************************      *******&	!								&	!								&	!	M O D I F I C A T I O N    H I S T O R Y    L O G	&	!								&	!								&	!								&	!  	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/01	10-MAR-78 AJS	INITIAL VERSION			&	!	V1.1/0	19-MAR-79 LBB	ADJUST CONTXT MAP FOR "RECNAM"	&	!								&	!***************************************************************&100	!$**************************************************************&	!								&	!								&	!	P R O G R A M    D E S C R I P T I       O N			&	!								&	!								&	!***************************************************************&	!								&	!	This program will be passed error and other context	&	!	information from the RECOVR IO processing task (RECIO)	&	!	This information will be interpreted, the user will be	&	!	notified of any problems that are occurring, the user	&	!	will be asked, if necessary, to alleviate any problems,	&	!	and this task will then exit with status which will 	&	!	inform RECIO to abort, retry, or resume the IO as	&	!      	required.						&	!								&	!***************************************************************&300	!$**************************************************************&	!								&	!								&	!	C H A N N E L     A S S I G N M E N T S			&	!								&	!								&	!								&	!	CHANNEL #	ASSIGNMENT				&	!	---------	--------------------------------------  &	!								&	!***************************************************************&400	!$**************************************************************&	!								&	!							      	&	!	V A R I A B L E S   A N D     A R R A Y S    U S E D    &	!								&	!								&	!								&	!	NAME			DESCRIPTION			&	!	----			------------------------------  &	!								&	!	T%			Temporary working variable	&	!	VER.EDIT.NUM$		Holds version/edit # for this	&	!				  program.			&	!								&	!***************************************************************&700	!$**************************************************************&	!								&	!								&	!		S U B R O U T I N E S    U S E D		&	!								&	!								&	!		      						&	!	NAME/LINE #	DESCRIPTION				&	!	-----------	--------------------------------------  &	!								&	!								&	!***************************************************************&750	!***************************************************************&	!								&	!								&	!		F U N C T I O N S    U S E D			&	!								&	!								&	!								&	!	LINE#	NAME		DESCRIPTION			&	!	-----	--------------  ------------------------------- &	!								&	!								&	!**********************************************************      *****&800	!$**************************************************************&	!								&	!								&	!	C O M M O N     D E C L A R A T I O N S			&	!								&	!								&	!***************************************************************&900	!$**************************************************************&	!								&	!								&	!	D I M E N S I O N     D E C L A R A T I O N S		&	!								&	!								&	!								&	!	Lines 901-929 denote local dimension declarations.	&	!	Lines 930-949 denote library dimension declarati      ons.	&	!	Lines 950-979 denote MAP statements.			&	!	Lines 980-999 denote IMAGE statements.			&	!								&	!***************************************************************&915	DIM FILEID%(4%)							&	!								&	!	This is the array in which the device, unit, and file	&	!	ID is passed back from a call to FILEID.		&918	DIM RDB%(7%)							&	\ DIM WDB%(7%)							&	!								&	!	Region and window descriptor blocks for the memory	&	!	management directives.					&920	DIM TASK%(1%)							&	!								&	!	RAD50 task name       array used as argument to SPAWN		&930	DIM ASK.HELP$(16%)						&	!								&	!	Dimension the long prompts array.			&950	MAP (FYLE)	LOGICAL.NAME$=6,				&			FLAGS$=1,					&			FILE.NUM$=1,					&			MAX.CONCURRENT%,				&			NUM.KEYS%,					&			MAX.KEY.LENGTH%,				&			INTERVAL$=1,					&			FILL$=1,					&			SPEC.LENGTH$=1,					&			SPECIFICATION$=33,				&			FILL$=8						&	!								&	!	File record map						&960	\ MAP (APPL)		RECORD$=64				&	\ DIM #3,		VIRTUAL$(16383)=64			&	\ MAP (APPL)		APP.NAME$=6,				&				APP.STATUS%,      				&				APP.PART$=4,				&				APP.COMMON%,				&				APP.TRACUM%,				&				APP.FILKEY%,				&				APP.FILCUM%,				&				APP.PARBAS%,				&				APP.INSCUM%,				&				APP.FILL$=38,				&				APP.NUMBER$=2				&	!								&	!	Application file map.					&970	MAP (CRITRN) FILEBLOCKS%(63%,7%)				&	\ MAP (CRITRN) 	TIME%(7%),					&			S.TIME%(7%),					&			E.TIME%(7%),					&			R.TIME%(7%),					&			NUM.PROCESSOR%,					&			TP.NAMES$(15)=8,				&			REPORT.FILE.LEN$=1,				&			REPORT.FILE$=33,				&			REC.VOLUME$=5,					&			SLACK$=25				      	&	!								&	!	This MAP and COMMON block defines the window to be used	&	!	to access the selection criterion tables.		&980	\ MAP	(CONTXT)	CONTEXT$=80				&	\ MAP	(CONTXT)	CHARACT$(79)=1				&	\ MAP	(CONTXT)	RECNAM$=4,				!V1.1&				ERRTYP$=2,				&				STATUS%,				&				RETRY%,					&				ERRHIS%,				&				SEQUEN%,				&				SLTLEN%,				&				REMAIN%,				&				BLOCKL%,				&				BLOCKH%,				&				LBLOCK%,				&				HBLOCK%,				&				DEVICE$=2,				&				UNITNM%,				&				DISK%,					&				IOSTAT1%,				&				IOSTAT2%,				&				PRONU      M%,				&				FILNUM%,				&				CR.YEAR%,				&				CR.MONTH%,				&				CR.DAY%,				&				CR.HOUR%,				&				CR.MINUTE%,				&				CR.SECOND%,				&				ESCCHG$=1,				&				CRCHG$=1,				&				END$=2					&	!								&	!	This MAP describes the context information from RECIO.	&985	\ MAP (ERRORS)		IE.BLK%,				&				IE.DNR%,				&				IE.OFL%,				&				IE.VER%,				&				IE.BBE%,				&				IE.DAO%,				&				IE.EOF%,				&				IE.EOT%,				&				IE.EOV%,				&				IE.FHE%,				&				EX.SUC%,				&				EX.WAR%,				&				EX.ERR%,				&				EX.SEV%,			      	&				IS.PND%,				&				END.OF.ERRORS%				&	!								&	!	These are the codes for the errors possible during I/O	&990	\ MAP (MESS)		RMS.ERROR$=2,				&				FILL$=4,				&				FILL$=6,				&				FILL$=1,				&				ERROR.TEXT$=60				&	\ MAP (MESS)		RMS.ERROR%				&	!								&	!	This is the map for the DATATRIEVE RMS error messages.	&1000	!$**************************************************************&	!								&	!								&	!	M A I N      P R O G R A M     L O G I C		&	!								&	!								&	!****************************      ***********************************&	!								&	\ ON ERROR GO TO 19000						&	\ CALL GETMCR BY REF (CONTEXT$,SPAWN.STATUS%)			&	\ GOTO 1030 IF SPAWN.STATUS%>=1%				&	!								&	!	Set up standard default error trap			&	!	Get the context information.				&	!	If it is not around, tell them it is an error.		&1010	\ VER.EDIT.NUM$ = "V1.0"					&	!								&	!	Assign the current version/edit level #			&1020	\ PRINT								&	\ PRINT "RECER	"; VER.EDIT.NUM$; "   "				&	\ PRINT								&	\ PRINT "? This program is not a       RUNable utility."		&	\ PRINT								&	\ SPAWN.STATUS%=EX.ERR%						&	\ GOTO 32000							&	!								&	!	Output program herald messages				&1030	\ ON ERROR GOTO 19000						&	\ FOR T%=0% TO SPAWN.STATUS%-1%					&		\ CHARACT$(T%)=CHR$(27%) IF CHARACT$(T%)=ESCCHG$	&		\ CHARACT$(T%)=CHR$(10%) IF CHARACT$(T%)=CRCHG$		&	\ NEXT T%							&	\ GOTO 1040 IF (ERRTYP$="SI") OR (ERRTYP$="SO")			&	\ RDB%(1%)=260%							&	\ CALL ASTO50("REC",Z%,ZZ%)					&	\ RDB%(2%)=Z%							&	\ CALL ASTO50("COM",Z%,ZZ%)					&	\ RDB%(3%)=Z%      							&	\ CALL ASTO50("GEN",Z%,ZZ%)					&	\ RDB%(4%)=Z%							&	\ RDB%(5%)=0%							&	\ RDB%(6%)=8%+2%+1%						&	\ RDB%(7%)=0%							&	\ CALL ATRG BY REF (RDB%(),ERROR%)				&	\ WDB%(0%)=SWAP%(7%)						&	\ WDB%(2%)=16%							&	\ WDB%(3%)=RDB%(0%)						&	\ WDB%(4%)=0%							&	\ WDB%(5%)=16%							&	\ WDB%(6%)=256%+128%+2%						&	\ CALL CRAW BY REF (WDB%(),ERROR%)				&	!								&	!	Attach the TABLES region.				&1040	\ CR$=CHR$(10%)+CHR$(13%)					&	\ ASK.HELP$(1%)=						&"Please place the journal device on lin      e.  If the journal device is a magnetic"&+CR$+									&"tape, please ensure that it is at beginning of tape."			&+CR$+									&"Respond with CONTINUE or QUIT."					&	\ ASK.HELP$(2%)=						&"Because of a bad block on the journal volume, or for some unknown reason,"&+CR$+									&"there is a gap in the journal data.  This situation could compromise the"&+CR$+									&"integrity of your data base.  It is your decision whether to continue the"&+CR$+									&"the recovery or to quit at this point."				&+CR$      +									&"Respond with CONTINUE or QUIT."					&1050	\ CALL RCERSM(IE.BLK%)						&	\ GOTO 1060 IF DEBUG%=0%					&	\ PRINT "ERRTYP$", ERRTYP$					&	\ PRINT "STATUS%", STATUS%					&	\ PRINT "RETRY%", RETRY%					&	\ PRINT "ERRHIS%", ERRHIS%					&	\ PRINT "SEQUEN%,", SEQUEN%					&	\ PRINT "SLTLEN%", SLTLEN%					&	\ PRINT "REMAIN%", REMAIN%					&	\ PRINT "BLOCKL%", BLOCKL%					&	\ PRINT "BLOCKH%", BLOCKH%					&	\ PRINT "LBLOCK%", LBLOCK%					&	\ PRINT "HBLOCK%", HBLOCK%					&	\ PRINT "DEVICE$", DEVICE$					&	\       PRINT "UNITNM%", UNITNM%					&	\ PRINT "DISK%", DISK%						&	\ PRINT "IOSTAT1%", IOSTAT1%					&	\ PRINT "IOSTAT2%", IOSTAT2%					&	\ PRINT "PRONUM%", PRONUM%					&	\ PRINT "FILNUM%", FILNUM%					&	\ PRINT "CURRENT RECORD'S TIME",CR.YEAR%,CR.MONTH%,CR.DAY%,	&					CR.HOUR%,CR.MINUTE%,CR.SECOND%	&	\ GOTO 32000							&1060	\ ERRTYP%=1% IF ERRTYP$="SI"					&	\ ERRTYP%=2% IF ERRTYP$="SO"					&	\ ERRTYP%=3% IF ERRTYP$="RI"					&	\ ERRTYP%=4% IF ERRTYP$="RO"					&	\ ERRTYP%=5% IF ERRTYP$="RR"					&	\ ERRTYP%=6% IF       ERRTYP$="RC"					&	\ ERRTYP%=7% IF ERRTYP$="RF"					&	\ ERRTYP%=8% IF ERRTYP$="RG"					&	\ FIRST.ERROR%=ERRHIS% AND 255%					&	\ SECOND.ERROR%=SWAP%(ERRHIS%) AND 255%				&	\ CURRENT.ERROR%=IOSTAT1% AND 255%				&	\ CURRENT.ERROR%=IE.DNR% IF CURRENT.ERROR%=IE.FHE%		& 	\ ON ERRTYP% GOSUB 11000,11100,11000,11100,11300,11500,11300,	&				11700					&	\ GOTO 32000							&	!								&	!	Dispatch to the proper routine depending on when the	&	!	error occured.						&	!								&	!		SI	SHOLOG/RECRP initialization		&	!		SO      	SHOLOG/RECRP I/O			&	!		RI	Recovr initialization			&	!		RO	Recovr I/O				&	!		RR	Recovr record processing		&	!		RC	Recovr exit processing			&	!		RF	Recovr file processing			&	!		RG	Recovr gap in tape			&10000	!$**************************************************************&	!								&	!								&	!	S U B R O U T I N E S    L O C A L     T O		&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&11000	\ GOTO 11500 IF STATUS%<>0%		      			&	\ RETRY%=0%							&	\ GOTO 13000 IF (CURRENT.ERROR%=IE.DNR%) OR			&			(CURRENT.ERROR%=IS.PND%)			&	\ GOTO 14000 UNLESS (CURRENT.ERROR%=IE.VER%) AND (DISK%<>0%)	&	\ GOTO 14000 IF BLOCKL%=10%					&	\ RETRY%=BLOCKL%+1%						&	\ SPAWN.STATUS%=EX.SUC%						&	\ RETURN							&	!								&	!	For any initialization processing, only three conditions&	!	can prevail.  The device is not ready or is not at 	&	!	beginning of tape and we prompt the user to put the 	&	!	device back on line.  Some other error occured and       we	&	!	report it and tell them this is a bad tape.		&	!	Journal is a disk and the header block was bad, try	&	!	next block maximum of 10 times.				&11100	\ GOTO 13000 IF (CURRENT.ERROR%=IE.DNR%)			&	\ RETRY%=RETRY%+1%						&	\ GOTO 11110 IF (CURRENT.ERROR%=IS.PND%) AND			&				((RETRY%=1%) OR (DISK%<>0%))		&	\ GOTO 13000 IF (CURRENT.ERROR%=IS.PND%) AND (DISK%=0%)		&	\ GOTO 14000 IF RETRY%>1%					&	\ RETRY%=0% IF DISK%<>0%					&	\ SPAWN.STATUS%=EX.SEV%						&	\ SPAWN.STATUS%=EX.ERR% IF (CURRENT.ERROR%=IE.VER      %)		&	\ SPAWN.STATUS%=EX.ERR% IF (CURRENT.ERROR%=IE.BBE%)		&	\ RETURN							&	!								&	!	Device not ready will always be a users choice.		&	!	Anything else will up the retry count.			&	!	Gap in tape has been found is sequences error occurs	&	!		on disk or for the second time on magtape.	&	!	First sequence error on magtape will request them to	&	!		put it at BOT.					&	!	Assume end of tape will be implied.			&	!	If its a bad block we will try the recovery procedures.	&11110	\ CONTINUE%=EX.WAR%						&	\ QUI      T%=EX.SEV%							&	\ GOTO 11710							&	!								&	!	If the user wishes to continue after a sequence high,	&	!		EX.WAR% will use the current record.		&11300	\ ON ERROR GOTO 11310						&	\ WDB%(4%)=0%							&	\ CALL MAPWIN BY REF (WDB%(),T%)				&	\ TP.NAME$=EDIT$(TP.NAMES$(PRONUM%),2%)				&	\ OPEN "LB0:[1,300]"+TP.NAME$+".FIL" FOR INPUT AS FILE #2,	&			ORGANIZATION INDEXED, FIXED,			&			ACCESS MODIFY, ALLOW READ,			&			MAP FYLE,					&			PRIMARY KEY LOGICAL.NAME$			&	\ LOGICAL.NAME$=""						&	\ GET #2, KEY #0       GE LOGICAL.NAME$				&	\ FOR T%=0% TO FILNUM%-1%					&		\ GET #2						&	\ NEXT T%							&11305	\ CLOSE 2%							&	\ WDB%(4%)=4%+(PRONUM%*16%)					&	\ CALL MAPWIN BY REF (WDB%(),T%)				&	\ GOTO 11320							&	!								&	!	For any RMS error we must get the PROCESSOR name and	&	!	the FILENAME for which the failure occured.		&11310	\ SPECIFICATION$="UNDETERMINED"					&	\ RESUME 11305							&	!								&	!	Any error here simply means that we could not determine	&	!	the file name.						&11320	\ FILEBLOCKS%(FILNUM%,      0%)=0% IF ERRTYP$="RF"			&	\ ON ERROR GOTO 11330						&	\ OPEN "[1,2]QUERY.MSG" FOR INPUT AS FILE #2,			&			ORGANIZATION INDEXED, FIXED,			&			ACCESS READ, ALLOW MODIFY,			&			MAP MESS,					&			PRIMARY KEY RMS.ERROR$				&	\ LET RMS.ERROR%=IOSTAT1%					&	\ GET #2, KEY #0 EQ RMS.ERROR$					&11325	\ CLOSE #2							&	\ GOTO 11340							&	!								&	!	Deselect the file if the error occured during a file	&	!	open.							&	!	Get the text for the RMS error involved.		&11330	\ ERROR.TEXT$="Consult documentation for       error number."		&	\ RMS.ERROR%=IOSTAT1%						&	\ RESUME 11325							&	!								&	!	Any error here means we couldn't get the error text.	&11340	\ PRINT								&	\ PRINT "% "+ERROR.TEXT$+" (";RMS.ERROR%;")"			&	\ PRINT "	Transaction processor - "+TP.NAME$		&	\ PRINT "	File - "+SPECIFICATION$				&	\ PRINT "	File de-selected from RECOVERY" IF ERRTYP$="RF"	&	\ SPAWN.STATUS%=EX.SUC%						&	\ RETURN							&	!								&	!	Print the error message.				&11500	\ SPAWN.STATUS%=1%						&	\ RETRY%=0%							&	\ RETURN IF ST      ATUS%=0%						&	\ PRINT								&	\ PRINT "? Failure to create region for journal data"+CR$+	&		"	GEN partition too small on this system image."	&			IF (STATUS%=1%) OR (STATUS%=2%)			&	\ PRINT "? Failure to read recovery selection criterion"	&			IF (STATUS%=5%) OR (STATUS%=15%)		&	\ PRINT "? Failure to gain access to journal device"		&			IF (STATUS%=7%) OR (STATUS%=16%)		&	\ PRINT "? Device specified is not in the configuration"	&			IF (STATUS%=8%) OR (STATUS%=17%)		&	\ PRINT "? Failure in opening disk journ      al file"		&			IF (STATUS%=9%)					&	\ PRINT "? Failure in reading journal header record"		&			IF (STATUS%=10%)				&	\ PRINT "? Volume specified is not a TRAX journal volume"	&			IF (STATUS%=11%)				&	\ PRINT "? Volume out of sequence or same as previous"		&			IF (STATUS%=12%)				&	\ PRINT "CTRL/Z implies NO in this situation" 			&			IF (STATUS%=13%)				&	\ PRINT "? Terminal error please try again"			&			IF (STATUS%=14%)				&	\ PRINT "% Journal volume terminated via data consistency check"&			IF (STATUS%=18%      )				&	\ PRINT "? Gap encountered on journal volume, RECOVERY terminated"&			IF (STATUS%=19%)				&	\ PRINT "Specified date and time delimeter has been reached"	&			IF (STATUS%=20%)				&	\ SPAWN.STATUS%=2% IF STATUS%=20%				&	\ SPAWN.STATUS%=2% IF STATUS%=19%				&	\ SPAWN.STATUS%=2% IF ERRTYP$="SI"				&	\ SPAWN.STATUS%=2% IF ERRTYP$="RI"				&	\ RETURN							&	!								&	!	PRINT OUT THE ERROR MESSAGE IF APPROPRIATE.		&11700	\ DEFAULT$="QUIT"							&	\ CONTINUE%=EX.SUC%						&	\ QUIT%=EX.SEV%							&11710	\ PR      OMPT$="Gap found in journal data.  CONTINUE or QUIT"	&	\ HINDEX%=2%							&	\ GOTO 13090							&	!								&	!	Ask them whether they wish to continue with the		&	!	RECOVERY in the event we find a gap in the data.	&13000	\ PROMPT$="Please place "+DEVICE$+NUM1$(UNITNM%)+": on line"	&	\ PROMPT$=PROMPT$+" at BOT" IF DISK%=0%				&	\ DEFAULT$="CONTINUE"						&	\ HINDEX%=1%							&	\ CONTINUE%=EX.SUC%						&	\ QUIT%=EX.SEV%							&	\ GOTO 13090							&	!								&	!	Simple device off line error.				&13090	\ VALID$="      /CONTINUE/QUIT/"					&	\ ON FN.ASK%(PROMPT$,DEFAULT$,VALID$,0%,HINDEX%,1%) GOTO 13090,	&						13100,13110,13120	&	!								&	!	This is the general CONTINUE or QUIT question.		&13100	\ PRINT								&	\ PRINT "% Control/Z is not allowed on this command."		&	\ GOTO 13090							&13110	\ SPAWN.STATUS%=CONTINUE%					&	\ RETURN							&	!								&	!	The user has supposedly made a decision to continue	&	!	and has prepared the device, if necessary.		&13120	\ SPAWN.STATUS%=QUIT%						&	\ RETURN							&	!								&	!	Th      e user wants to QUIT processing this tape		&14000	\ ERROR.TEXT$="I/O error "+NUM1$(CURRENT.ERROR% OR (-256%))	&	\ ERROR.TEXT$="Logical block number too high" IF 		&		CURRENT.ERROR%=IE.BLK%					&	\ ERROR.TEXT$="Device not ready" IF				&		CURRENT.ERROR%=IE.DNR%					&	\ ERROR.TEXT$="Device not in system" IF				&		CURRENT.ERROR%=IE.OFL%					&	\ ERROR.TEXT$="Parity error on device" IF			&		CURRENT.ERROR%=IE.VER%					&	\ ERROR.TEXT$="Bad block on device" IF 				&		CURRENT.ERROR%=IE.BBE%					&	\ ERROR.TEXT$="Magta      pe record too large" IF			&		CURRENT.ERROR%=IE.DAO%					&	\ ERROR.TEXT$="End of file mark detected on magtape" IF		&		CURRENT.ERROR%=IE.EOF%					&	\ ERROR.TEXT$="End of tape reached on magtape" IF		&		CURRENT.ERROR%=IE.EOT%					&	\ ERROR.TEXT$="End of volume detected on magtape" IF		&		CURRENT.ERROR%=IE.EOV%					&	\ ERROR.TEXT$="Fatal hardware error on device" IF		&		CURRENT.ERROR%=IE.FHE%					&	\ PRINT "? "+ERROR.TEXT$					&	\ PRINT "	Processing terminated on ";DEVICE$;		&			NUM1$(UNITNM%);":"				&	\ SPAWN      .STATUS%=EX.SEV%						&	\ RETRY%=0%							&	\ RETURN							&	!								&	!	If we have no recourse, we come here to report the 	&	!	error and exit.						&15000	!$**************************************************************&	!								&	!								&	!	F U N C T I O N S     L O C A L     T O			&	!								&	!		T H I S     P R O G R A M			&	!								&	!								&	!***************************************************************&19000	!$**************************************************************&	!								&	!					      			&	!	S T A N D A R D     E R R O R    H A N D L I N G	&	!								&	!								&	!***************************************************************&19900	\ PRINT								&	\ CLOSE T% FOR T% = 1% TO 12%					&	\ ON ERROR GO TO 0						&	!								&	!	For unexpected errors,  close all files and go to	&	!	  system default error dump out.			&20000	!$**************************************************************&	!								&	!								&	!	T P S    L I B R A R Y     S U B R O U T I N E S	&	!								&	!								&	!*********      ******************************************************&25000	!$**************************************************************&	!								&	!								&	!	T P S     L I B R A R Y    F U N C T I O N S		&	!								&	!								&	!***************************************************************&32000	!$**************************************************************&	!								&	!								&	!	E N D    O F    P R O C E S S I N G			&	!								&	!								&	!***************************************************************&	\      CALL EXITS2(SPAWN.STATUS%,RETRY%)				&32767	!$**************************************************************&	!								&	!								&	!	E N D     O F    P R O G R A M     			&	!								&	!								&	!***************************************************************&	!								&	\ END         ôy¶pkQÁ› 8$        .TITLE	STTRAN.IDENT	"V1.0";;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	STTRAN;; VERSION:	V01.00;; AUTHOR:	DAVE LYONS;		GILBERT WOLSKY;; DATE:		SEP 7,1978;	.PAGE;;;	M O D I F I C A T I O N    H I S T O R Y   L O G;;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------  ----		------		-------      ----;;	1.0B	28-JAN-79	S.K. HARRIS	SKH001 - SPRS 21799,;							 T227029;						"RC" returned incorrectly;;	.PAGE; LIBRARY ROUTINE TO INITIATE A TRANSACTION FROM A SUPPORT; ENVIRONMENT TASK. TASK 'TPVRFY' IS SPAWNED TO SEARCH THE; TRANSACTION PROCESSOR DEFINITION FILE FOR THE NAMED; TRANSACTION AND PREPARE AN INITIATING MESSAGE. ;; ON ENTRY:	R5=PTR TO ARGUMENT LIST;; ARGUMENT LIST:;	WD.00	PARAMETER COUNT;	WD.01	PTR TO TRANSACTION PROCESSOR NAME;	WD.02	PTR TO NAME OF TRANSACTION TO BE INITIATED;	WD.03	ADDRESS O      F 1ST BYTE IN MESSAGE BUFFER;	WD.04	PTR TO LENGTH OF MESSAGE BUFFER (IN BYTES);	WD.05	PTR TO RETURN BUFFER (15 WORDS);	WD.06	PTR TO STATUS WORD;;; RETURN:	C BIT CLEAR = NORMAL RETURN;;		REPLY MESSAGE FROM TRANSACTION PROCESSOR HAS BEEN;		PLACED IN RETURN BUFFER SPECIFIED BY CALLER.;;		C BIT SET IF ERROR RETURN;;		STATUS WORD CONTAINS ERROR CODE;;; THIS ROUTINE WILL SPAWN 'TPVRFY' WITH TASK NAME THE SAME AS THE CURRENT; TASK EXCEPT THAT THE FIRST TWO LETERS HAVE BEEN REPLACED BY "ZZ"; IT THEN SENDS IT THE FO      LLOWING MESSAGE:;;	WD.00	TRANSACTION PROCESSOR NAME (3 WORDS);	WD.03	RESERVED;	WD.04	TRANSACTION NAME (3 WORDS);	WD.07	BUFFER ADDRESS;	WD.08	BUFFER LENGTH;; THE SPAWNED TASK (IF SUCCESSFUL) WILL RESPOND WITH THE FOLLOWING MESSAGE:;;	WD.00	CONTEXT BLOCK ADDRESS;	WD.01	START COMMAND;	WD.02	THIS TASK NAME (RAD50 - 2 WORDS);	WD.04	TRANSACTION NAME (3 WORDS);	WD.07	BUFFER ADDRESS;	WD.08	BUFFER LENGTH;	WD.09	BATCH MANAGER NAME (RAD50 - 2 WORDS);; THE ROUTINE DISABLES CHECKPOINTING AND FORWARDS THE ABOVE MESSAGE T      O THE; BATCH MANAGER. WHEN THE BATCH MANAGER RESPONDS THE ROUTINE RE-ENABLES; CHECPOINTING AND PROCESSES THE RESPONSE.;.PAGE	.MCALL	SDAT$,SRDA$S,DIR$,STSE$S,CLEF$S,RCVD$S,SETF$S,ASTX$S	.MCALL	SPWN$,DSCP$S,ENCP$S,GTSK$,WSIG$S	.MCALL	DRERR$	.MCALL	USTP$S,RCST$S;	DRERR$;SPEXEV	=	1		;EVENT FLAG FOR SPAWNED TASK EXIT;SPAWN:	SPWN$	DCL...,,,,,SPEXEV,,STAT,CMND,LNGTHCMND:	.ASCII	@RUN/TASK:@NAME:	.ASCII	@ABCDEF@	.ASCII	@ $TPVRFY@LNGTH	=	. - CMND	.EVEN;GTASK:	GTSK$	STATSTAT:	.BLKW	8.		;EXIT STATUS BLOCK (OR TASK BUFF      ER)	.BLKW	8.		;EXTEND FOR TASK PARAMETERS;				;1ST WORD HAS EXIT STATUS OF SPAWNED TASK;SNDDAT:	SDAT$	,SEBUFF		;SEND DATA DPBREBUFF:	.BLKW	2		;RECEIVE BUFFERSEBUFF:	.BLKW	13.		;SEND BUFFER;;STTRAN::	TST	(R5)+		;SKIP THE COUNT	MOV	(R5)+,R1	;GET PTR TO TRANSACTION PROCESSOR NAME	MOV	#SEBUFF,R3	;GET PTR TO SEND BUFFER	MOV	#6,R2		;INITIALIZE COUNTER10$:	MOVB	(R1)+,(R3)+	;MOVE TP NAME INTO SEND BUFFER	SOB	R2,10$		;LOOP UNTIL DONE	TST	(R3)+		;SKIP A WORD	MOV	(R5)+,R0	;GET POINTER TO TRANSACTION NAME	MOV	#6,R2		;I      NITIALIZE COUNTER15$:	MOVB	(R0)+,(R3)+	;MOVE THE NAME	SOB	R2,15$		;LOOP	MOV	(R5)+,(R3)+	;BUFFER ADDRESS	MOV	@(R5)+,(R3)+	;BUFFER LENGTH	DIR$	#GTASK		;GET THE TASK PARAMETERS	MOV	STAT,R1		;GET FIRST PART OF TASK NAME	CLR	R0		;DOUBLE PRECISION	DIV	#50,R0		;REMOVE FIRST 2 CHARACTERS	ADD	#123220,R1	;ADD A LEADING "ZZ"	MOV	R1,SNDDAT+S.DATN ;STORE NAME IN SEND COMMAND	MOV	#NAME,R0	;GET POINTER FOR TASK NAME	CALL	$C5TA		;CONVERT IT TO ASCII	MOV	STAT+2,R1	;SECOND WORD	MOV	R1,SNDDAT+S.DATN+2 ;NEEDED FOR SEND COMMAND      	CALL	$C5TA		;CONVERT IT ALSO	MOV	(R5)+,R3	;GET ADDRESS OF RETURN BUFFER100$:	DIR$	#SPAWN		;SPAWN THE TASK	CALL	CHKERR		;CHECK THE DIRECTIVE CALL	BCS	100$		;TRY AGAIN110$:	SRDA$S	#RECAST		;DECLARE RECEIVE AST	CALL	CHKERR		;CHECK DIRECTIVE	BCS	110$		;TRY AGAIN105$:	DIR$	#SNDDAT		;SEND THE MESSAGE	CALL	CHKERR		;CHECK IT OUT	BCS	105$		;TRY AGAIN	STSE$S	#SPEXEV		;WAIT FOR EVENT FLAG TO BE SET	CMP	STAT,#IS.SUC	;WAS IT A GOOD EXIT	BNE	ERROR		;NO. TROUBLE	CALL	RECWAT		;RECEIVE	DSCP$S			;DISABLE CHECKPOINTING	MOV	S      EBUFF+18.,SNDDAT+S.DATN ;SET BATCH MANAGER NAME	MOV	SEBUFF+20.,SNDDAT+S.DATN+2 ;TO SEND TO120$:	DIR$	#SNDDAT		;SEND THE MESSAGE	CALL	CHKERR		;CHECK IT	BCS	120$		;TRY AGAIN;16$:	CALL	RECWAT		;RECEIVE	ENCP$S			;RE-ENABLE CHECKPOINTING17$:	CMP	SEBUFF,#"RD	;IS TRANSACTION DONE	BNE	18$		;BRANCH IF TRANSACTION ALL DONE	CALL	RECWAT		;RECEIVE18$:	SRDA$S			;DISABLE RECEIVE AST	CMP	SEBUFF,#"RC	;WAS IT A GOOD RETURN	BEQ	19$		;YES	MOV	SEBUFF+2,@(R5)	;GET ERROR CODE	BR	ERR1		;ERROR RETURN19$:	MOV	#24.,R1		;INITIALIZE CO      UNTER				*** SKH001	MOV	#SEBUFF+2,R2	;GET PTR TO TXN PROCESSOR MESSAGE		*** SKH00120$:	MOVB	(R2)+,(R3)+	;MOVE MESSAGE INTO CALLERS BUFFER	SOB	R1,20$		;LOOP UNTIL DONE	MOV	#IS.SUC,@(R5)	;SET CALLER STATUS WORD TO SUCCESS	CLC			;GOOD RETURN	BR	RET		;GO BACK; RECWAT - RECEIVE OR WAIT TO RECEIVE ROUTINE;RECWAT:10$:	RCVD$S	,#REBUFF	;RECEIVE THE DATA	CMPB	$DSW,#IS.SUC	;DID WE	BEQ	20$		;YES	RCST$S	,#REBUFF	;TRY AGAIN OR STOP	CMPB	$DSW,#IS.SUC	;GOT IT	BNE	10$		;NO20$:	RETURN;; RECEIVE AST SERVICE ROUTINE TO RECEIV      E A MESSAGE FROM SPAWNED TASK; 'TPVRFY' AND FROM TXN PROCESSOR.;RECAST:	USTP$S			;UNSTOP OOURSELF	ASTX$S			;AST EXIT;; CHECK DIRECTIVE ERROR;CHKERR:	BCC	RET		;SKIP IF OK	CMPB	$DSW,#IE.UPN	;INSUFFICIENT DYNAMIC MEMORY	BEQ	5$		;YES. TRY AGAIN	CMPB	$DSW,#IE.INS	;TASK NOT INSTALLED YET	BNE	10$		;NO. ERROR	CLEF$S	#SPEXEV		;CHECK IF FLAG IS SET 	CMPB	$DSW,IS.SET	;DID IT EXIT ALREADY	BEQ	30$		;YES. TROUBLE5$:	WSIG$S			;WAIT	BR	ERR1		;CARRY ON10$:	MOV	#-4*10,STAT	;SET THE STATUS30$:	TST	(SP)+		;CLEAN UP THE STACK;;     ; ERROR PROCESSING;ERROR:	MOVB	STAT,R3		;GET 'TPVRFY' ERROR CODE 	BIC	#7,R3		;GET RID OF STATUS LEVEL	CMP	R3,#-64.	;IS IT 64	BNE	10$		;NO	MOV	#-60.,R3	;CHANGE TO 6010$:	MOV	R3,@(R5)	;GIVE IT TO THE CALLERERR1:	SEC			;FLAG AN ERROR	ENCP$S			;MAKE SURE CHECPOINTABLERET:	RETURN	.END	          “<}kQÁ› 8$        	.TITLE	TPSTAT - Statistics sampling program	.IDENT	/V1.10A/	.ENABL	LC	.NLIST	BEX;; COPYRIGHT (C) 1979; 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; T      O AND OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN; IN DEC.;; THE INFORMATION IN THIS DOCUMENT 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.;;;;	MODULE:		TPSTAT;	;	VERSION		V1.0A;;	AUTHOR:		BRIAN DOYLE;	;	DATE:		OCTOBER 1977;;	THIS MODULE CONATINS:;;		ALL STATISTIC SAMPLING ROUTINES FOR TPSTAT UTILITY;;;;	MODIFIED       BY:;;;;;	BRIAN DOYLE;;		SPR # 252419	FEB 9, 79	BJD-1	# SUB-LINKS IS A BYTE;;;	RICHARD TREADWAY		** RT001;;		FIXED TO RUN ONLY FROM TT0: FOR RELEASE V1.1 OF TRAX;	.PAGE	.SBTTL	MACRO CALLS;****************************************************;;;	M A C R O    C A L L S;;;****************************************************;	.MCALL	DIR$,WDBBK$,RDBBK$,ATRG$,CRAW$,GTIM$,WRITE$	.MCALL	SCBDF$,PKTDF$,UCBDF$,DCBDF$	.MCALL	STSE$,MRKT$,EXIT$S,ASRDF$,WAIT$,EXST$,EXST$S	.MCALL	FDBDF$,FDAT$A,FDRC$A,FDOP$A,FINIT$,FDBK$A	.MC      ALL	SPEAK	.MCALL	OPEN$W,CLOSE$,PUT$,FDBF$A	.MCALL	FSRSZ$,FDBF$A,OPEN$R,GET$,NMBLK$	.MCALL	QIOW$,INH$S,ENB$S	.MCALL	SWITCH,RETURN;;;	Global equates for readability;;CR	=	10.		;Line feedLF	=	13.		;Carriage return;;	UCBDF$					;UCB offset definitions	PKTDF$					;I/O packet definitions	DCBDF$					;DCB offset definitions	SCBDF$					;SCB offset definitions	ASRDF$					;Make the KT registers known to compiler	.PAGE	.SBTTL	TABLES & EXEC CALL DPBs	.PSECT	DATSTA,D,RW,REL,GBL,CON;***************************************      **************************;;;	TABLES OF TRANSACTION PROCESSORS AND THEIR ID'S;;;*****************************************************************;ANAME:	.BLKW	72.;ID:	.BLKW	24.;;;*************************************************;;;	E X E C U T I V E    C A L L    D P B    B L O C K S;;;*************************************************;WINDOW:	WDBBK$	0,,,0,,WS.64B!WS.WRT!WS.MAP!WS.RED;Window definition block;REGION:	RDBBK$	128.,COM001,,RS.DEL!RS.ATT!RS.RED!RS.WRT	;Region definiton block;ATTACH:	ATRG$	REGION	      			;Attach region call;CREATE:	CRAW$	WINDOW				;Create window and attach it;EX:	EXST$	1				;EXIT with status;MARKT:	MRKT$	MARK1,MARK2,MARK3		;Mark time call;;	These values may be changed with GBLDEF statements.  The given values;	are for user use.  These GBLDEFs are used solely for the convenience;	of the RTE.;MARK1	==	1				;Event flagMARK2	==	0				;Time interval magnitudeMARK3	==	3				;Time interval unit;;;TIME:	GTIM$					;Get time call;TYPE:	QIOW$	IO.WBT,13.,1,1,IOSTAT,,<PBUF,100.,0>;WAIT:	STSE$	1				;Wai      t for event flag call;BUFFER:	.BLKB	512.				;Sample file record buffer	.PAGE	.SBTTL	REGISTER USAGE;****************************************************;;;		R E G I S T E R    U S A G E;;;****************************************************;;	Global usage in sampling section;;	R0	base addresses of TPS data structures (TDT,SCB,etc);	R4	# of samples yet to be taken;	R5	base address of record in buffer;;	These are the principle uses, sometimes used for other purposes;	after saving the appropriate registers.;	.P      AGE	.SBTTL	I/O DEFINITIONS;******************************************************;;;	I / O    I N I T I A L I Z A T I O N;;;******************************************************;ALLOCB	==	200.			;EXTENSION QUANTITY;;	One can not extend a file with context switching inhibited, i.e.;	during a sampling.  Therefore, we use this value which is big;	enough for any sample.  An extend is done when apprpopriate;	during the wait between samples.  A GBLDEF may be used to change this;	value.;;FDBO:	FDBDF$	FDAT$A	R.FIX      ,,32.,ALLOCB,ALLOCB	FDRC$A	FD.RWM	FDBK$A	BUFFER,512.,,,IOSTAT	FDOP$A	1,DSDO,DFNBO,FO.WRT;;	Standard fixed-length records which will contain the sample data;DSDO:	.WORD	0,DEV			;Data Set Descriptor	.WORD	0,UIC	.WORD	0,NAME;DFNBO:	NMBLK$	,SMP,,SY;;FDBI:	FDBDF$	FDRC$A	,BIFFER,64.	FDOP$A	1,DSDI,,FO.RD	FDBF$A	,,1;DSDI:	.WORD	3	.WORD	DEVI	.WORD	5.	.WORD	UICI	.WORD	9.	.WORD	SPECI;;		The data set descriptor block;DEVI:	.ASCII	/SY:/UICI:	.ASCII	/[1,1]/SPECI:	.ASCII	/TPDEF.TPF/;;		The transaction processor definition       file specification;	FSRSZ$	1,,DATSTA	.PAGE	.SBTTL	PROGRAM CONSTANTS;******************************************************;;;	PROGRAM CONSTANTS AND ERROR MESSAGES;;;******************************************************;	.EVENDEVICE:	.WORD			;Device being sought in disk queuesLOUNIT:	.BYTE			;Current unit being sought in disk queuesHIUNIT:	.BYTE			;Highest unit defined for device - disk queuesQUESIZ:	.WORD			;Counter - # packets in a disk queueQUEBUF:	.BLKB	32.		;Temporary storage for disk queue dataZZ:	.W      ORD			;Temporary storageSS:	.WORD			;Temporary StorageTT:	.WORD			;Temporary StorageRETADD:	.WORD			;Temporary storageAA:	.WORD			;Temporary variableBB:	.WORD			;Temporary variable;SNUM:	.WORD			;# of samples to be takenSINT:	.WORD			;Sample interval;DEV:	.BLKB	6		;Device nameUIC:	.BLKB	10.		;UIC 		- for sample fileNAME:	.BLKB	20.		;Name;IOSTAT:	.BLKW	2		;I/O status blockACTRM:	.WORD			;Counter for # of active terminalsCLOSE:	.WORD			;I/O closed flagBLOCKO:	.WORD			;Counter for tracking extends;JUMP:	.WORD	      NEXT1	.WORD	MBOX	.WORD	NEXT1	.WORD	TST	.WORD	SUBAT	.WORD	MLINK	.WORD	SLINK	.WORD	SLBAT	.WORD	NEXT1;;	ABOVE IS THE JUMP TABLE FOR SCB TYPES	.PAGE	.SBTTL	ERROR MESSAGES;*******************************************************************;;;	E R R O R    M E S S A G E S;;;*******************************************************************;PBUF1:	.BYTE	LF,LF,CR	.ASCII	/? FATAL Directive error - error code is -/FIELD5:	.BLKB	6;S.BUF1	=	. - PBUF1	;Size of message;;		Directive error message;PBUF2:	.BYTE	LF,CR	.ASCI      I	/Location /LOC1:	.BLKB	6	.BYTE	LF,LF,CR;S.BUF2	=	. - PBUF2	;Size of message;;		Location message for I/O or Directive errors;PBUF:	.BYTE	LF,LF,CR	.ASCII	/? Unexpected FATAL error in TPSTAT/	.BYTE	LF,CR	.ASCII	/The FCS error code is -/FIELD1:	.BLKB	6	.BYTE	LF,LF,CR;S.BUF3	=	. - PBUF	;Size of message;;		I/O error message;MESS1:	.BYTE	LF,LF,CR	.ASCII	/? FATAL error - Invalid Terminal SCB/	.BYTE	LF,LF,CRSMESS1	=	. - MESS1;;		Miscellaneous error messages;MESS3:	.BYTE	CR,LF,LF	.ASCII	/% Invalid response - a file       name is needed./	.BYTE	CR,LF,LFSMESS3	=	. - MESS3;BADTP:	.BYTE	CR,LF,LF	.ASCII	/% invalid Transaction Processor name/	.BYTE	CR,LFS.BAD	=	. - BADTP	.PAGE	.SBTTL	DIALOG CONSTANTS;****************************************************************;;;	DIALOG CONSTANTS;;;****************************************************************;;	Help texts for the 4 questions;HEL1:	.ASCII	/Specify the 6 character name /	.ASCII	/of the transaction processor /	.BYTE	CR,LF	.ASCII	/which you wish to sample./	.BYTE	CR,LFS.HEL1	      =	. - HEL1;;HEL2:	.ASCII	/ Specify the number of minutes between samples./	.BYTE	CR,LFS.HEL2	=	. - HEL2;;HEL3:	.ASCII	/Specify the number of samples to be taken./	.BYTE	CR,LFS.HEL3	=	. - HEL3;;HEL4:	.ASCII	/Specify the name of the file which/	.ASCII	/ will hold the sample data./	.BYTE	CR,LFS.HEL4	=	. - HEL4;;	Prompt texts for the 4 questions;PRO1:	.ASCII	/Transaction Processor name/S.PRO1	=	. - PRO1;PRO2:	.ASCII	/Interval between samples/S.PRO2	=	. - PRO2;PRO3:	.ASCII	/Number of samples/S.PRO3	=	. - PRO3;PR      O4:	.ASCII	/Output file name/S.PRO4	=	. - PRO4	.PAGE;*******************************************************************;;;	Defaults for the 4 questions;	& Input file buffer;;*******************************************************************;D1:	.ASCII	/? /	.BYTE	0,0S.D1	=	4;D2:	.ASCII	/? /	.BYTE	0,0S.D2	=	4;D3:	.ASCII	/? /	.BYTE	0,0S.D3	=	4;	.ODDDEF4:	.ASCII	/</TPNAME:	.BLKB	6				;Transaction processor name	.ASCII	/.SMP>? /S.DEF4	=	. - DEF4;;	.EVENBIFFER: .BLKW	32.;;		The record buffer for the input file;      	.PAGE	.SBTTL	HERALD QIO;***************************************************************;;;	H E R A L D    M E S S A G E;;;***************************************************************;TYPE1:	QIOW$	IO.WBT,13.,1,1,IOSTAT,,<TTMESS,S.TTMES,0>			; *RT001;										;**-1;			Type on Channel 13 (TI:) the herald message;HERA:	.BYTE	LF,LF,CR	.ASCII	/TPSTAT V1.1/							; *RT001	.BYTE	CR,LF,LF							;**-1	.ASCII	/The TRAX Software Statistics Sampler/	.BYTE	CR,LF,LFS.HERA	=	. - HERA;EXMESS:	.BYTE	LF,LF,CR	.ASCII	/	TP      STAT - All the requested samples have been /	.ASCII	/taken./	.BYTE	LF,LF,CR;S.EXMES	= 	. - EXMESS;										; *RT001;										; *RT001										; *RT001TTMESS:										; *RT001	.BYTE	LF,LF,CR							; *RT001	.ASCII	/       TPSTAT - must be run from TT0: or batch/				; *RT001	.BYTE	LF,LF,CR							; *RT001										; *RT001S.TTMES =	. - TTMESS							; *RT001	.PAGE	.SBTTL	CONSTRUCT TP TABLES;*******************************************************************;;;	B U I L D    T H E    T A B L E S;;;************      *******************************************************;	.PSECT	CODSTA,I,RO,REL,GBL,CONBEGIN:: 									; *RT001	CALL	CHKTT0			; CHECK THAT REQESTOR IS AT TT0		; *RT001	BCC	3$			; IF C CLEAR THEN YES			; *RT001										; *RT001	DIR$	#TYPE1,ERR		; PRINT THE ERROR MESSAGE		; *RT001	JMP	EXI			; AND EXIT				; *RT001										; *RT0013$:										; *RT001	MOV	#HERA,TYPE1+Q.IOPL	; SET UP HERALD MESSAGE			; *RT001	MOV	#S.HERA,TYPE1+Q.IOPL+2	; AND SIZE FOR QIO			; *RT001										; *RT001	DIR$	#TYPE1,ERR							; *      RT001;										;**-1;			Print the program herald message;	FINIT$	OPEN$R	#FDBI,,,,#BIFFER,#64.,ERROR	MOV	#64.,<FDBI+F.RSIZ>;;		Basic+2 creates this file as a virtual file and so gives it;		a record size of 512 bytes corresponding to Block I/O;		operations, however, the records are really 64 bytes long;		and FCS requires this true record size.;	MOV	#24.,R0	MOV	#ANAME,R1	MOV	#ID,R2	MOV	#35.,R4;;		Load the registers with the table base addresses, table length,;		and EOF marker.;1$:	MOV	#BIFFER,R3	MOV	R0,-(SP)	      GET$	#FDBI,,,ERROR	MOV	(SP)+,R0;;		Load the address of the record buffer and get a record;	CMPB	(R3),R4	BEQ	50$;;;		Check for EOF;	MOV	62.(R3),(R2)+	MOV	(R3)+,(R1)+	MOV	(R3)+,(R1)+	MOV	(R3)+,(R1)+	SOB	R0,1$;;		If not EOF, store the TP name and ID in the tables and get;		next record if there is room in the table;50$:	CLOSE$	#FDBI,ERROR	.PAGE	.SBTTL	DIALOG CODE;********************************************************************;;;	D I A L O G;;;****************************************************************      ****;DIALOG:	SPEAK	#PRO1,#S.PRO1,#D1,#S.D1,#-1,#HEL1,#S.HEL1,R0,SS,,DIALOG,EXI,ERR;;						Get TP name;	MOV	#24.,R5				;# OF table entries	MOV	#ANAME,R1			;Base address of table	MOV	#ID,R3				;Base address of ID table	MOV	R0,TT				;Save address of answer	MOV	R1,ZZ				;Save address of table entries;MAT:	MOV	SS,R2				;# Characters to R265$:	CMPB	(R0)+,(R1)+			;Compare to table	BEQ	64$				;Tentative match	JMP	MISS				;No match to this entry64$:	SOB	R2,65$				;Continue to match	JMP	GOTIT				;A match;;MISS:	MOV	T      T,R0				;Reset answer address	ADD	#6,ZZ				;Get next table entry	MOV	ZZ,R1				;	TST	(R3)+				;Get next ID	SOB	R5,MAT				;Loop through table;	MOV	#BADTP,TYPE1+Q.IOPL		;Tailor error message	MOV	#S.BAD,TYPE1+Q.IOPL+2		; "	DIR$	#TYPE1,ERR			;Print error message	JMP	DIALOG				;Try again;;GOTIT:	MOV	(R3),REGION+R.GNAM+2		;Store TP ID	MOV	TT,R0				;Get TP name address	MOV	(R0)+,TPNAME			;Store TP name	MOV	(R0)+,TPNAME+2			; "	MOV	(R0)+,TPNAME+4			; ";	.PAGE;*********************************************************      ****;;;	M O R E    D I A L O G;;;**********************************************************;NO.2:	SPEAK	#PRO2,#S.PRO2,#D2,#S.D2,#0,#HEL2,#S.HEL2,SINT,,,DIALOG,EXI,ERR;;						;Get sample interval;	MOV	SINT,MARKT+M.KTMG		;Tailor MARK TIME directive;;;NO.3:	SPEAK	#PRO3,#S.PRO3,#D3,#S.D3,#0,#HEL3,#S.HEL3,SNUM,,,NO.2,EXI,ERR;;						 Get number of samples;;NO.4:SPEAK #PRO4,#S.PRO4,#DEF4,#S.DEF4,#-1,#HEL4,#S.HEL4,AA,BB,,NO.3,EXI,ERR;;						 Get output file name;	.PAGE;;*********************************************      **************;;;	P R O C E S S    O U T P U T    F I L E    N A M E;;;***********************************************************;	CLR	DSDO				;Clear UIC	CLR	DSDO+4				;	CLR	DSDO+10				;	MOV	AA,R0				;Address of spec to R0	MOV	BB,R1				;Length of field to R1;1$:	CMPB	(R0)+,#':			;Device terminator present?	BEQ	2$				;Yes	SOB	R1,1$				;No, continue scan;15$:	MOV	AA,R0				;Address of remaining stuff to R0	MOV	BB,R1				;Length of remaining stuff to R117$:	CMPB	(R0)+,#']			;UIC terminator present?	BEQ	20$				;      Yes	SOB	R1,17$				;No, continue scan;;40$:	MOV	AA,R0				;Address of remaining stuff to R0	MOV	BB,R1				;Length of remaining stuff to R1	MOV	#NAME,R2			;Address of name field to R2	TST	R1				;Must be a name	BEQ	BADNAM				;Invalid name;45$:	CMPB	(R0),#40			;Is character a blank?	BEQ	46$				;Yes, ignore it	MOVB	(R0),(R2)+	INC	DSDO+10				;Add to byte count46$:	TSTB	(R0)+				;Get next byte	SOB	R1,45$				;Loop through name	JMP	TPTEMP				;End of dialog;;2$:	MOV	#DEV,R1				;Address of device field to R1	MOV	AA,R0		      		;Address of dialog field to R04$:	MOVB	(R0),(R1)+			;Transfer a byte	INC	DSDO				;Add to the byte count	CMPB	(R0)+,#':			;End of field?	BNE	4$				;Transfer whole field -test if done;10$:	MOV	R0,AA				;Update pointer	SUB	DSDO,BB				;Update length	BR	15$				;Process next field;20$:	MOV	#UIC,R1				;Address of UIC field to R1	MOV	AA,R0				;Address of dialog field to R022$:	MOVB	(R0),(R1)+			;Transfer a byte	INC	DSDO+4				;Add to the byte count	CMPB	(R0)+,#']			;End of field?	BNE	22$				;Branch if more in fiel      d;30$:	MOV	R0,AA				;Update pointer	SUB	DSDO+4,BB			;Update length	BR	40$				;Process next field;EXI:	EXST$S	#<2+8.*26.>			;CTRL Z EXIT;;BADNAM:	MOV	#MESS3,TYPE1+Q.IOPL		;TAILOR ERROR MESSAGE	MOV	#SMESS3,TYPE1+Q.IOPL+2		;	DIR$	#TYPE1,ERR			;PRINT ERROR MESSAGE	JMP	NO.4				;TRY AGAIN	.PAGE	.SBTTL	SAMPLING STARTS HERE;******************************************************************;;;	S  A  M  P  L  I  N  G        S  E  C  T  I  O  N;;;******************************************************************;	.PAG      E	.SBTTL	ATTACHS & OPENS;*****************************************************;;	INITIALIZATION AND MAPPING TO COMMON REGION;;;******************************************************;TPTEMP::OPEN$W	#FDBO,,,,,,ERROR	;OPEN THE SAMPLING FILE;	DIR$	#ATTACH,ERR		;ATTACH TO TPS COMMON REGION	MOV	<REGION+R.GSIZ>,R3	;SAVE REGION SIZE	MOV	<REGION+R.GID>,<WINDOW+W.NRID>	;REGION IDENTIFIER TO WDB;	MOV	SNUM,R4			;SET UP SAMPLE COUNT;	CMP	#200,R3			;IS REGION > 4K	BMI	5$			;BRANCH IF IT IS;	MOV	R3,<WINDOW+W.NSIZ>	;SET UP       WINDOW SIZE	DIR$	#CREATE,ERR		;CREATE WINDOW #0	BR	MAPPED;;5$:	MOV	#200,<WINDOW+W.NSIZ>		;1ST 4K MAPPED	MOV	#200,<WINDOW+W.NLEN>		;4K LENGTH	DIR$	#CREATE,ERR			;CREATE WINDOW #0;	MOVB	#1,<WINDOW+W.NAPR>		;APR 1	MOV	#200,<WINDOW+W.NSIZ>		;TO WINDOW WDB	MOV	#201,<WINDOW+W.NOFF>		;OFFSET OF 4K	CLR	WINDOW + W.NLEN			;RESET LENGTH PARAMETER IN WDB	DIR$	#CREATE,ERR			;CREATE WINDOW #1;MAPPED:	MOV	#BUFFER,R5			;INITIALIZE REOCRD BUFFER	.PAGE	.SBTTL	SAMPLE THE TP;***************************************************      ********************;;;	HEADER RECORD;;;*************************************************************************;LOOPED:	INH$S					;INHIBIT CONTEXT SWITCHING	CLR	CODE(R5)			;SET RECORD CODE	MOV	R4,SAMPNO(R5)			;SET SAMPLE #	MOV	SNUM,TOTNO(R5)			;SET TOTAL # OF SAMPLES	MOV	R5,TIME+2			;SET UP TIME BUFFER	ADD	#YEAR,TIME+2			;	DIR$	#TIME,ERR			;GET DATE & TIME	MOV	TPNAME,TNAME(R5)		;GET TP NAME	MOV	TPNAME+2,<TNAME+2>(R5)	MOV	TPNAME+4,<TNAME+4>(R5)	MOV	SINT,INTVAL(R5)			;GET SAMPLE INTERVAL	JSR	PC,WRITIT			;WR      ITE THE RECORD;;;	CACHE RECORD;	MOV	#2,CODE(R5)			;SET RECORD CODE	MOV	#77406,@#UISDR3			;INITIALIZE KT REG.	MOV	$BASE,@#UISAR3			;BASE OF CACHE TO KT	MOV	#60000,R0			;USE R0 TO REFERENCE CACHE	MOV	P.NUM(R0),CALLS(R5)		;# OF CACHE CALLS	MOV	P.HIT(R0),HITS(R5)		;# OF HITS	MOV	P.FET(R0),FETCH(R5)		;# OF FETCHS	MOV	P.FAIL(R0),FAIL(R5)		;# THAT FAILED	MOV	$SIZE,SIZE(R5)			;SIZE OF CACHE	MOV	P.DEAD(R0),DEAD(R5)		;AMOUNT IN USE	MOV	P.ALLOC(R0),LOCKD(R5)		;AMOUNT ALLOCATED	JSR	PC,WRITIT			;WRITE A RECORD	.PAGE;***      ************************************************************;;;	QUE RECORD;;;****************************************************************;	MOV	#"DB,DEVICE			;The device mnemonic	JSR	PC,QUELEN			;Get queue length for that device	JSR	PC,WRITIT			;Write first que record;	MOV	#"DM,DEVICE			;The device mnemonic	JSR	PC,QUELEN			;Get queue length for that device	JSR	PC,WRITIT			;Write the second record;	MOV	#"DR,DEVICE			;The device mnemonic	JSR	PC,QUELEN			;Get queue length for that device	JSR	PC,WRITIT			;Wr      ite the third record;	JMP	GENER				;Go to next unit	.PAGE;*********************************************************************;;;	Q U E U E    S C A N N I N G    R O U T I N E;;;***********************************************************************;QUELEN:	SWITCH$	DONQUE				;Go to kernel mode	MOV	R5,-(SP)			;SAVE THE REGISTERS	MOV	R4,-(SP)			;	MOV	R3,-(SP)			;	MOV	R2,-(SP)			;	MOV	R1,-(SP)			;	MOV	R0,-(SP)			;;	CLRB	QUESIZ				;INITIALIZE QUEUESIZE COUNTER	MOV	$DEVHD,R0			;POINTS TO DCB LIST	MOV	R0,R1				;      GET 1ST DCB ADDRESS;1$:	CMP	D.NAM(R1),DEVICE		;IS IT A MATCH?	BEQ	2$				;YES	MOV	D.LNK(R1),R1			;GET NEXT DCB ADDRESS	BEQ	10$				;ERROR - DEVICE NOT FOUND	BR	1$				;TRY AGAIN;2$:	MOV	D.UCB(R1),R2			;UCB POINTER TO R2	MOVB	D.UNIT(R1),LOUNIT		;CURRENT UNIT #	MOVB	D.UNIT+1(R1),HIUNIT		;HIGHEST UNIT #;5$:	MOV	U.SCB(R2),R3			;SCB POINTER TO R3	MOV	S.LHD(R3),R4			;QUE LIST HEAD TO R4	MOV	S.LHD+2(R3),R5			;LAST LIST ENTRY TO R5	CLRB	QUESIZ				;ZERO QUEUELENGTH COUNTER;3$:	TST	R4				;IS QUEUE EMPTY?	BEQ	4$				;YES	      INCB 	QUESIZ				;INCREMENT QUEUE COUNT	CMP	R4,R5				;END OF QUEUE?	BEQ	4$				;YES	MOV	I.LNK(R4),R4			;GET POINTER TO NEXT ENTRY	BR	3$				;LOOP THROUGH THE QUEUE;4$:	CLR	R5				;	MOVB	LOUNIT,R5			;CURRENT UNIT # TO R5	ADD	#4,R5				;+ 4 TO R5 TO GET OFFSET IN RECORD	ADD	#QUEBUF,R5			;BASE ADDRESS OF QUEUE BUFFER TO R5	MOVB	QUESIZ,(R5)			;STORE QUEUE LENGTH IN TEMP BUFFER	INCB	LOUNIT				;GET NEXT UNIT;	CMPB	HIUNIT,LOUNIT			;GOT ALL UNITS FOR DEVICE?	BMI	10$				;YES	ADD	D.UCBL(R1),R2			;POINT TO NEXT UCB	BR	5$		      		;LOOP THROUGH UNITS FOR DEVICE	.PAGE10$:	MOV	#3,QUEBUF			;RECORD CODE	MOV	DEVICE,QUEBUF+2			;DEVICE MNEMONIC	MOV	(SP)+,R0			;RESTORE REGISTERS	MOV	(SP)+,R1			;	MOV	(SP)+,R2			;	MOV	(SP)+,R3			;	MOV	(SP)+,R4			;	MOV	(SP),R5				;	MOV	#16.,R0				;32 BYTES TO MOVE	MOV	#QUEBUF,R1			;ADDRESS OF TEMP BUFFER TO R1;15$:	MOV	(R1),(R5)+			;MOVE BUFFER	CLR	(R1)+				;CLEAR BUFFER AS WELL	SOB	R0,15$				;;	MOV	(SP)+,R5			;RESTORE R5 PERMANENTLY;;AAA:	RETURN					;EXIT KERNEL MODEDONQUE:	RTS	PC				;	.PAGE;****************      **************************************************;;;	GENERAL DATA;;;******************************************************************;GENER:	MOV	#4,CODE(R5)			;SET RECORD CODE	MOV	.CRFIL,FCREAT(R5)		;COLLECT # CREATED FILES	MOV	.ERFIL,FDELET(R5)		;COLLECT # DELETED FILES;	SWITCH$	ENDPER				;GO TO KERNEL APRS FOR NEXT STAT	MOV	$TCPU1,CPUUSE(R5)		;COLLECT CPU USAGE	MOV	$TCPU2,CPUUSE+2(R5)		;	RTS	PC				;EXIT SYSTEM STATEENDPER:	MOV	.EXRST,EXREST(R5)		;COLLECT # EXC. RESTARTS;	JSR	PC,WRITIT			;WRITE A RECORD	      .PAGE;*********************************************************************;;;	DATA FILE RECORDS;;**********************************************************************;	MOV	.ACFTB,R0			;BASE ADDRESS FILE TABLE	MOV	.ACFSZ,R1			;# OF FILE TABLE ENTRIES50$:	MOV	#5,CODE(R5)			;SET RECORD CODE	MOV	F.FID(R0),FINAME(R5)		;FILE NAME COLLECTED	MOV	<F.FID+2>(R0),<FINAME+2>(R5)	; "	MOV	<F.FID+4>(R0),<FINAME+4>(R5)	; "	MOV	F.NLOK(R0),LOCREC(R5)		;COL 3 OF LOCKED RECORDS	MOV	F.NGET(R0),READ(R5)		;COL # OF READS	MOV	F.N      INS(R0),INSERT(R5)		;COL # OF INSERTS	MOV	F.NUPD(R0),UPDATE(R5)		;COL # OF UPDATES	MOV	F.NDEL(R0),DELETE(R5)		;COL # OF DELETES	JSR	PC,WRITIT			;WRITE A RECORD;	ADD	#F.SIZE,R0			;INCREMENT TO NEXT ENTRY	TST	F.IMP(R0)			;END OF REAL TABLE?	BEQ	51$				;YES	SOB	R1,50$				;GET NEXT TABLE ENTRY;;;	TRANSACTION RECORDS;51$:	MOV	.TDTBA,R0			;BASE ADDRESS TRANSACTION TAB.	MOV	.TDTSZ,R1			;# OF TDT ENTRIES100$:	MOV	#6,CODE(R5)			;SET RECORD SIZE	MOV	T.NAM(R0),TRNAME(R5)		;TRAN NAME COLLECTED	MOV	<CT.NAM+2>(R0),<TRNAM      E+2>(R5)	; "	MOV	<CT.NAM+4>(R0),<TRNAME+4>(R5)	; "	MOV	T.NTR(R0),REQTRA(R5)		;# OF TIMES REQUESTED	MOVB	T.ERR(R0),ERRTRA(R5)		;SYSTEM ERROR COUNT	CLRB	ERRTRA+1(R5)			;	MOV	T.MFZ(R0),MAXSIZ(R5)		;MINIMUM UNUSED W/S	JSR	PC,WRITIT			;WRITE A RECORD	ADD	#T.TDTSZ,R0			;INCREMENT TO NEXT ENTRY	SOB	R1,100$				;GET NEXT TABLE ENTRY	.PAGE;****************************************************************;;;	NON-TERMINAL STATION RECORDS;;;*****************************************************************;	MOV	#<JUMP+SY.      BSL+2>,R3	;START AT END OF TABLELOPTYP:	TST	-(R3)			;DECREMENT TO NEXT ENTRY	MOV	#60000,R0			;R0 HAS BASE SCB ADDRESS	MOV	.SCBTZ,R1		;CODED # OF ENTRIES	ASR	R1			;DIVIDE BY 2	INC	R1			;2N-2 => N;	MOV	#77406,@#UISDR3	MOV	.SCBTA,R2	MOV	@R2,@#UISAR3		;MAP TO NON TERM SCB;LOOP:	JMP	@(R3)			;CHECK SCB;NEXT1:	SOB	R1,LOOP			;LOOP THROUGH SCBNEXT2:	CMP	#JUMP,R3		;THROUGH TABLE?	BMI	LOPTYP				;NO	JMP	TERSCB			;ON TO NEXT RECORD TYPE;;;	TST  SCB SAMPLING;TST:	CMPB	S.TYP(R0),#SY.TST		;IS IT A TST STATION	BEQ	1$				;YE      S	ADD	#64.,R0				;GET NEXT ONE	JMP	NEXT1				;NO;1$:	MOV	#7,CODE(R5)		;TST CODE IS 7	MOV	S.TLOD(R0),LOATST(R5)		;# TIMES LOADED	MOVB	S.FLOD(R0),FAITST(R5)		;# TIMES FAILED TO LOAD	CLRB	FAITST+1(R5)			;	MOVB	S.MCOP(R0),MAXTST(R5)		;MAX # COPIES	CLRB	S.MCOP(R0)			;RESET CELL FOR EXECUTION MGR	CLRB	MAXTST+1(R5)			;	MOV	S.TSTA(R0),ABOTST(R5)		;# ABORTED - INTERNAL ERROR	MOVB	S.CML(R0),COPTST(R5)		;# COPIES IN USE AT SAMPLE TIME	CLRB	COPTST+1(R5)			;	MOV	S.IO(R0),IOTST(R5)		;# OF I/O REQUESTS	MOV	S.HLOK(R0),LOCTS      T(R5)		;# OF LOCKED RECORDS ENCOUNTERED	JSR	PC,COMMON	JMP	NEXT1;;	MAILBOX SCB SAMPLING;MBOX:	CMPB	S.TYP(R0),#SY.MBX	;IS IT A MAILBOX	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#8.,CODE(R5)		;MAILBOX CODE IS 8	JSR	PC,COMMON		;ONLY COMMON STATISTICS	JMP	NEXT1			;GET NEXT STATION	.PAGE;************************************************************;;;	SUBMIT BATCH SCB SAMPLING;;;****************************************************************;SUBAT:	CMPB	S.TYP(R0),#SY.BSU	;IS IT A SUBMIT BA      TCH STATION	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#11.,CODE(R5)		;SUBMIT BATCH IS 11	JSR	PC,COMMON		;ONLY COMMON STATISTICS	JMP	NEXT1			;GET NEXT STATION;;	SLAVE BATCH SCB SAMPLING;SLBAT:	CMPB	S.TYP(R0),#SY.BSL	;IS IT A SLAVE BATCH STATION	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#12.,CODE(R5)		;SLAVE BATCH IS 12	JSR	PC,COMMON		;ONLY COMMON STATISTICS	JMP	NEXT1			;GET NEXT STATION	.PAGE;****************************************************************;;;	M      ASTER LINK SCB SAMPLING;;;********************************************************************;MLINK:	CMPB	S.TYP(R0),#SY.LMA	;IS IT A MASTER LINK	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#9.,CODE(R5)		;MASTER LINK IS 9	MOV	S.TOTL(R0),TOTEXC(R5)	;TOTAL # OF EXCHANGES	MOV	S.ACEX(R0),ACTEXC(R5)	;# ACTIVE EXCHANGES	MOV	S.WCNT(R0),LINWAT(R5)	;# WAITS FOR SUB-LINK	MOV	S.TTIL(R0),SLAVIN(R5)	;TOTAL SLAVE TXN	MOVB	S.NSL(R0),SUBLIN(R5)	;# OF SUB-LINKS;	JSR	PC,COMMON		;GET THE COMMON STATISTIC      S	JMP	NEXT1			;GET NEXT STATION;;	SLAVE LINK SCB SAMPLING;SLINK:	CMPB	S.TYP(R0),#SY.LSL	;IS IT A LINK SLAVE	BEQ	1$			;YES	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT1			;NO;1$:	MOV	#10.,CODE(R5)		;SLAVE LINK IS 10	MOV	R0,-(SP)		;SAVE KT	MOV	S.SBA(R0),R0		;GET STATS BLOCK ADDRESS	MOV	O.TOTS(R0),TLEX(R5)	;TOTAL LINK EXCHANGES	MOV	O.ACES(R0),ACEX(R5)	;ACTIVE EXCHANGES	MOV	O.TTIS(R0),TOTBEG(R5)	;TOTAL TXNS BEGUN	MOV	O.ACTS(R0),ACTTR(R5)	;ACTIVE TXNS	MOV	O.PERR(R0),DOSCON(R5)	;PERMANENT ERRORS - DISCONNECTS;	MOV	(SP)+,      R0		;RESET KT	JSR	PC,WRITIT		;WRITE OUT THE RECORD	ADD	#64.,R0			;GET NEXT ONE	JMP	NEXT2			;GET NEXT STATION	.PAGE;********************************************************************;;;	C O M M O N    S T A T I O N    R O U T I N E;;;********************************************************************;PUT:COMMON:	MOV	S.NAM(R0),STNAME(R5)		;COLLECT STATION NAME	MOV	<S.NAM+2>(R0),<STNAME+2>(R5)	; "	MOV	<S.NAM+4>(R0),<STNAME+4>(R5)	; "	MOVB	S.MCT(R0),QUESTA(R5)		;COLLECT # MESSAGES QUEUED	CLRB	QUESTA+1(R5)			      ;	MOV	S.TOT(R0),TOTQUE(R5)	MOV	S.TRST(R0),INISTA(R5)		;COLLECT # TRANS. INITIATED	MOVB	S.TABO(R0),ABOSTA(R5)		;COLLECT # TRANS. ABORTED	CLRB	ABOSTA+1(R5)			;	MOVB	S.TINV(R0),ILLSTA(R5)		;COLLECT # OF ILLEGAL/INVALID	CLRB	ILLSTA+1(R5)			;	JSR	PC,WRITIT			;WRITE A RECORD	ADD	#64.,R0				;GET NEXT SCB	RTS	PC	.PAGE;**********************************************************************8;;;;	TERMINAL STATION RECORDS;;;***********************************************************************;TERSCB:	MOV	.SCBTT,R3	MOV      	@R3,@#UISAR3	MOV	#60000,R0			;BASE ADDRESS OF TERM SCB	MOV	.SCBTS,R1			;2N-2 WHERE N TERM STATIONS	ASR	R1				;DIVIDE BY 2	INC 	R1				;2N-2 => N	CLR	ACTRM				;INITIALIZE ACTIVE TERM COUNTER;TERM:	CMPB	S.TYP(R0),#SY.TIM		;IS SCB A TERMINAL	BEQ	5$				;YES IF EQUAL	CMPB	S.TYP(R0),#0			;END OF DEFINED STATIONS	BEQ	TERSUM				;YES;	CMP	R0,#100000			;OVERFLOW OF REGION	BMI	1$				;REALLY INVALID STATION	BR	TERSUM				;OVERFLOW1$:	JMP	TIMERR				;GO TO ERROR ROUTINE;5$:	MOV	#14.,CODE(R5)			;SET RECORD CODE	CMP	#SS.ECL      ,S.STAT(R0)		;STATION CLOSED?	BEQ	6$				;THEN NOT CONNECTED	CMP	#SS.NOP,S.STAT(R0)		;STATION NOT INITIALIZED?	BEQ	6$				;TERMINAL NOT CONNECTED	INC	ACTRM				;INCREMENT COUNTER;6$:	MOVB	S.ABOT(R0),OPABO(R5)		;COLLECT ABORTS BY OPER.	CLRB	OPABO+1(R5)			;	MOVB	S.ABPT(R0),TSTABO(R5)		;COLLECT ABORTS BY TST	CLRB	TSTABO+1(R5)			;	JSR	PC,COMMON			;COLLECT COMMON STATION STATS	ADD	#64.,R0				;GET NEXT SCB	SOB	R1,TERM				;PROCESS NEXT TERM SCB	.PAGE;*******************************************************************      ******;;;	SUMMARY OF TERMINAL STATIONS RECORD;;;*************************************************************************;TERSUM:	MOV	#20.,CODE(R5)			;SET RECORD CODE	MOV	.MXTRM,R2			;# OF TERMS DEFINED	SUB	ACTRM,R2			;SUB # OF CONNECTED TERMS	MOV	R2,INIALL(R5)			;COLLECT # TERMS NOT INITIALIZED	MOV	ACTRM,CONALL(R5)		;COLLECT # TERMS CONNECTED	MOVB	.TMTRA,RETALL(R5)		;COLLECT # OF RE-TRANSMITS	CLRB	RETALL+1(R5)			;	MOVB	.TMNCA,ALUNW(R5)		;COLLECT # LACKED RESOURCE	CLRB	ALUNW+1(R5)			;	MOVB	.TMNNT,ALNET(R5)	      	;COLLECT # LACKED NETWORK RES.	CLRB	ALNET+1(R5)			;	MOVB	.TMNCX,ALCON(R5)		;COLLECT # LACKED CONTEXT BUFFER	CLRB	ALCON+1(R5)			;	CLR	ALCACH(R5)			;0 CACHE RESOURCE - SEE STACOM;;	MOV	.TMIBF,ALNUM(R5)		;# OF INPUT PACKETS;	MOV	.TMICT,ALBYTE(R5)		;DOUBLE PRECISION TOTAL BYTES IN;	MOV	<.TMICT+2>,<ALBYTE+2>(R5)	;INPUT PACKETS;	MOV	.TMOVF,ALOVFL(R5)		;OVERFLOW COUNTER FOR PACKETS;	JSR	PC,WRITIT			;WRITE A RECORD	.PAGE	.SBTTL	MESSAGE RECORD;********************************************************;;;	MESSAGE RECO      RD;;;********************************************************;MESDUM:	MOV	#21.,CODE(R5)			;MESSAGE REOCRD CODE	JSR	PC,WRITIT			;WRITE OUT RECORD WHICH AT						;THIS POINT IS A DUMMY	.PAGE	.SBTTL	SAMPLE LOOP CONTROL;************************************************************************;;;	C O N T R O L    B L O C K;;;*************************************************************************;;	DEC	R4				;DECREMENT SAMPLE COUNT	BEQ	NOMORE				;SKIP NEXT FEW IF DONE	DIR$	#MARKT,ERR			;MARK TIME TO NEXT SAMPLE	E      NB$S					;ENABLE CONTEXT SWITCHING	DIR$	#WAIT,ERR			;WAIT UNTIL NEXT SAMPLE TIME	CMP	BLOCKO,#<ALLOCB/2>	;NEED AN EXTENSION?	BMI	1$			;NO;	MOV	#ALLOCB,R0		;GET # LEFT	SUB	BLOCKO,R0		;	CLR	BLOCKO			;RESET EXTENSION COUNTER	SUB	R0,BLOCKO		;ALLOW FOR WHAT IS LEFT	MOV	#FDBO,R0		;FDB TO R0	MOV	#ALLOCB,R1		;EXTEND QUANTITY TO R1	MOV	#<128. + 2 + 1>,R2	;MASK WORD	CALL .EXTND			;EXTEND FILE;1$:	JMP	LOOPED				;PROCESS NEXT SAMPLE;;NOMORE:	INC	CLOSE				;MARK THAT FILES ARE BEING CLOSED	ENB$S					;ENABLE CONTEXT SWITCH      ING	JSR	PC,ENDOF			;WRITE LAST BLOCK	CLOSE$	#FDBO,ERROR			;CLOSE FILE;	MOV	#EXMESS,TYPE+Q.IOPL		;TELL USER WE ARE DONE	MOV	#S.EXMES,TYPE+Q.IOPL+2		;	DIR$	#TYPE				;;;OUT:	TST	CLOSE				;ERROR IN FILE CLOSE?	BNE	5$				;IF YES, DON'T GET INTO LOOP	ENB$S					;ENABLE CONTEXT SWITCHING	JSR	PC,ENDOF			;WRITE LAST BLOCK	CLOSE$	#FDBO,ERROR			;CLOSE FILE IF NOT ALREADY DONE5$:	DIR$	#EX				;END OF PROGRAM	.PAGE	.SBTTL	ERROR REPORTING;********************************************************************;;;	E R R O R          R E P O R T I N G;;;********************************************************************;;ERROR:	NEGB	F.ERR(R0)			;COMPLEMENT ERROR CODE	CLR	R1	MOVB	F.ERR(R0),R1			;ERROR CODE TO R1	CLR	R2				;DON'T ZERO SUPPRESS	MOV	#FIELD1,R0			;ADDRESS ASCII FORM ERR CODE	JSR	PC,$CBDMG			;CONVERT BINARY TO ASCII	MOV	#PBUF,TYPE+Q.IOPL		;TAILOR QIOW$ DIRECTIVE	MOV	#S.BUF3,TYPE+Q.IOPL+2		;	";	ENB$S;	DIR$	#TYPE,ERR			;TYPE I/O ERROR MESSAGE	JMP	LOC				;GO PRINT ERROR LOCATION;;ERR:	MOV	$DSW,R1				;DIRECTIVE STATUS TO R1	NEG	      R1				;COMPLEMENT IT	MOV	#FIELD5,R0			;ADDRESS ASCII FORM DIR STATUS	CLR	R2				;ZERO SUPPRESS ASCII FORM	JSR	PC,$CBDMG			;CONVERT BINARY TO ASCII	MOV	#PBUF1,TYPE+Q.IOPL		;TAILOR DIRECTIVE ERROR MESSAGE	MOV	#S.BUF1,TYPE+Q.IOPL+2		;	";	ENB$S;	DIR$	#TYPE				;TYPE DIRECTIVE ERROR MESSAGE;LOC:	MOV	(SP)+,R1			;NEXT INST. LOC ADDRESS TO R1	MOV	#LOC1,R0			;LOCATION OF ASCII VERSION	INC 	R2				;DO NOT ZERO SUPPRESS	JSR	PC,$CBOMG			;CONVERT BINARY TO OCTAL ADDRESS	MOV	#PBUF2,TYPE+Q.IOPL		;TAILOR QIOW$ DIRECTIVE	MOV	#      S.BUF2,TYPE+Q.IOPL+2		;	"MESS:	ENB$S	DIR$	#TYPE				;TYPE LOCATION OF ERROR;	MOV	#2,EX+2				;SET TO ERROR EXIT	DIR$	#EX				;GET OUT;;TIMERR:	MOV	#MESS1,TYPE+Q.IOPL		;TAILOR QIOW$ DIRECTIVE	MOV	#SMESS1,TYPE+Q.IOPL+2		;	"	BR	MESS				;PRINT TERM SCB ERROR MESSAGE	.PAGE	.SBTTL	BLOCK I/O ROUTINE;**********************************************************;;;		W R I T E    A    B L O C K;;;**********************************************************;WRITIT:	CMP	R5,#BUFFER+512.-32.		;IS BLOCK FULL?	BMI	SKIP				;BRANCH       IF BLOCK NOT FULL;ENDOF:	MOV	R0,-(SP)	WRITE$	#FDBO,,,,,#IOSTAT,,ERROR	;WRITE A BLOCK	MOV	(SP)+,R0	INC	BLOCKO			;COUNT BLOCKS USED10$:	CMPB	IOSTAT,#0			;IS BLOCK I/O DONE?	BEQ	10$				;NO	MOV	#BUFFER-32.,R5			;RESET POINTER INTO BLOCK;	MOV	R0,-(SP)			;SAVE DESTROYED REGISTERS	MOV	R1,-(SP)			;	CLR	R0				;START OF BLOCK	MOV	#16.,R1				;16 RECORDS IN BLOCK1$:	MOV	#"??,BUFFER(R0)			;MOVE NO RECORD INDICATOR IN	ADD	#32.,R0				;GO TO NEXT RECORD	SOB	R1,1$				;LOOP THROUGH BLOCK	MOV	(SP)+,R1			;RESET REGISTERS	MOV	(   p   SP)+,R0			;;;SKIP:	ADD	#32.,R5				;INCREMENT POINTER TO NEXT RECORD6$:	RTS	PC				;GO BACK TO PROGRAM	.END	BEGIN p          áyìrkQÁ› 8$        	.TITLE	STAROT - Statistics report root module	.IDENT	/V1.1A/	.SBTTL	MACRO CALLS & GLOBAL CONTROL CONSTANTS	.ENABL LC	.NLIST	BEX	.PAGE;; COPYRIGHT (C) 1979; 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 AN      D 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 DOCUMENT 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.;;;;	MODULE: 	STAROT;;	VERSION:	V1.0A;;	AUTHOR:		BRIAN DOYLE;;;;	MODIFIED BY:;;	RICHARD TREADWAY		** RT001;;		FIXED TO RUN       FROM TT0: ONLY FOR V1.1 OF TRAX;	.PAGE	.MCALL	EXST$,FINIT$,FSRSZ$,DIR$,QIOW$	.MCALL	FDBDF$,FDAT$A,FDOP$A,FDBF$A,FDRC$A,FDBK$A,NMBLK$	.PSECT	DATROT,D,REL,GBL,CON,RWEX:	EXST$	1;SAMPLE::	.WORDSUMMAR::	.WORD;IOSTAT::	.BLKW	2		;GLOBAL STATUS BLOCK	.PAGE	.SBTTL	I/O DEFINITIONS;******************************************************************;;;	I / O    D E F I N I T I O N S;;;*******************************************************************;	.EVEN;FDB1::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	BUF1,512.,,,IOSTAT	FDOP$A	1      ,DSD1,DFNB1,FO.RD;;	This describes the 1st copy of the input sample file;;FDB2::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	BUF2,512.,,,IOSTAT	FDOP$A	2,DSD1,DFNB1,FO.RD;;	This describes the 2nd copy of the input sample file;;FDB3::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	BUF3,512.,,,IOSTAT	FDOP$A	3,DSD3,,FO.WRT	FDAT$A	R.FIX,,512.;;;	This describes the processed output sample file;;FDB4::	FDBDF$	FDRC$A	FD.RWM	FDBK$A	BUF4,512.,,,IOSTAT	FDOP$A	4,DSD4,,FO.WRT	FDAT$A	R.FIX,,512.;;	This describes the minmax file;FDB5::	FDBDF$	FDAT$A	R.VAR,      FD.CR	FDRC$A	FDOP$A	5,DSD5,DFNB5,FO.WRT	FDBF$A;;	This describes the report file;;DSD3::	.WORD	3	.WORD	DEV3	.WORD	7	.WORD	UIC3	.WORD	13	.WORD	NAME3;;	The DSD for file #3;;DSD4::	.WORD	3	.WORD	DEV4	.WORD	7	.WORD	UIC4	.WORD	13	.WORD	NAME4;;	The DSD for file #4;DSD5::	.WORD	5	.WORD	DEV5	.WORD	11	.WORD	UIC5	.WORD	41	.WORD	NAME5;;;DEV3::	.ASCII	/SY:/UIC3::	.ASCII	/[1,300]/NAME3::	.ASCII	/STAREP1.TMP/;;DEV4::	.ASCII	/SY:/UIC4::	.ASCII	/[1,300]/NAME4::	.ASCII	/STAREP2.TMP/;;;DEV5::	.BLKB	5UIC5::	.BLKB	9.NAME5::	.BL      KB	33.;;	.EVENDFNB1::	NMBLK$	,SMP,,SYDFNB5::	NMBLK$	,LST,,SY;	.pageDSD1::	.WORD	.WORD	DEV1	.WORD	.WORD	UIC1	.WORD	.WORD	NAME1;DEV1::	.ASCII	/      /UIC1::	.ASCII	/          /NAME1::	.ASCII	/                    /;BUF3::	.BLKB	512.		;The I/O buffer for file #3BUF4::	.BLKB	512.		;The I/O buffer for file #4;CR	=	15		;CARRIAGE RETURNLF	=	12		;LINE FEED;HERA:	.BYTE	CR,LF,LF	.ASCII	/STAREP V1.1/							;* RT001	.BYTE	CR,LF,LF							;**-1	.ASCII	/Prints the Software Statistics Report/	.BYTE	CR,LF,LFSHERA	=	. - HERA;      ;										;* RT001										;* RT001TTMESS:										;* RT001	.BYTE	CR,LF,LF							;* RT001	.ASCII	/        STAREP - must be run from TT0: or batch/		;* RT001	.BYTE	CR,LF,LF							;* RT001										;* RT001S.TTMES =	. - TTMESS							;* RT001;										;* RT001;										;* RT001	.EVEN									;* RT001TRUMP:	QIOW$	IO.WBT,13.,32.,,IOSTAT,,<TTMESS,S.TTMES,0>			;* RT001;										;**-4;	The qio for the herald;	FSRSZ$	1,,DATROT	.PAGE	.SBTTL	OVERLAY CONTROL CODE	.PSECT	CODROT,REL,I,GBL,CON,ROSTART::										;*       RT001	FINIT$									;* RT001;										;* RT001										;* RT001	CALL	CHKTT0				; CHECK THAT REQUEST IS FROM TT0;* RT001	BCC	10$				; IF C CLEAR THEN AT TT0	;* RT001										;* RT001	DIR$	#TRUMP				; PRINT THE TT0 ERROR MESSAGE	;* RT001	BR	5$				; AND EXIT			;* RT001										;* RT00110$:										;* RT001	MOV	#HERA,TRUMP+Q.IOPL		; SET HERALD MESSAGE 		;* RT001	MOV	#SHERA,TRUMP+Q.IOPL+2		; AND SIZE IN QIO DPB		;* RT001;										;**-1	DIR$	#TRUMP				;PRINT THE PROGRAM HERALD;	JSR	PC,DIA			;PERFORM THE DI   P  ALOG;	JSR	PC,COMPUT		;PERFORM THE COMPUTATIONS;	JSR	PC,OPEN			;OPEN THE REPORT FILES;	TST	SAMPLE			;SAMPLE REPORT?	BEQ	1$			;NO	JSR	PC,SAM			;YES;1$:	TST	SUMMAR			;SUMMARY REPORT?	BEQ	2$			;NO	JSR	PC,SUM			;YES;2$:										;* RT001	JSR	PC,CLOSE		;CLOSE THE REPORT FILES			;* RT0015$:										;* RT001	DIR$	#EX								;**-1	.END	START P         )/“Á› 8$À+      25000	!***************************************************************&	!								&	!								&	!	D I A L O G    F U N C T I O N   -  B R I E F    F O R M&	!								&	!								&	!***************************************************************&	!								&	!	USAGE FORMAT:						&	!		FN.ASK%(PROMPT$,DEFAULT$,VALID$,HELP.IND%,HELP.CNT%)&	!								&	!	INPUTS:							&	!		PROMPT$ - 	The prompt string to be printed &	!				at the user terminal; a question&	!				mark is added.			&	!								&	!		DEFAULT$ - 	The default v      alue to be dis-	&	!				played with the prompt; NULL	&	!				string if there is no default.	&	!								&	!		VALID$ - 	A valid response list or a valid&	!				response type.The valid types 	&	!				are :				&	!				I - integer			&	!				NULL string - alphanumeric 	&	!					response is stripped of &	!					blanks, tabs,CR, & LF.	&	!					Also lower case will be	&	!					converted to upper case.&	!				A response list has the form	&	!				  /item1/item2/.../itemn/	&	!				The number following each item	&	!				is added to 2      ; the sum is the 	&	!				value of FN.ASK%.  Any initial 	&	!				segment of a correct response 	&	!				will generate the full correct	&	!				response.			&	!								&	!		HELP.IND% -     The element of array ASK.HELP$  &	!			    	containing the first line of the&	!				help text for this question.	&	!								&	!		HELP.CNT% - 	The number of lines of help text&	!				for this question.		&	!								&	!								&	!	RETURNS :						&	!		The function returns the following values:	&	!			1- if the ESC key is the response	      &	!			2- if CTRL-Z key is the response	&	!			2+n - for the nth element in the list	&	!			3- for all for all other conditions	&	!								&	!		The following are also returned:		&	!			ASK.RESP$ 	the user response	&	!			ASK.CVT$	the edited user response&	!			ASK.NUM%	the response value if	&	!					an integer was specified&	!								&	!								&	!	DESCRIPTION :						&	!		The function prints the prompt string with the	&	!		default value , if specified, enclosed in angle	&	!		brackets.  The response is edited as in      dicated	&	!		If invalid, the prompt is repeated; if valid, 	&	!		the return is set and the function exits.  The	&	!		help text is repeated and the prompt repeated 	&	!		if the response is "?".				&	!	CAUTION :						&	!	This is a stripped down version of the dialog function	&	!	which is needed in those utilities which must run in 8k	&	!	It looks the same to the user, but has considerably 	&	!	less functionality and requires more care on the part of&	!	of the programmer.					&25001	DEF FN.ASK%(PROMPT$,DEFAULT      $,VALID$,HELP.IND%,HELP.CNT%)	&	\ ON ERROR GO TO 25100						&25005	\ PRINT								&	\ FN.ASK%= 1%							&	!								&	!	Define the function and set the error trap.		&25010	\ PRINT PROMPT$; " <" + DEFAULT$ + ">";				&	\ INPUT LINE ASK.RESP$						&	\ PRINT		IF RIGHT (ASK.RESP$,LEN(ASK.RESP$))= CHR$(27%)	&	\ GO TO 25090	IF RIGHT(ASK.RESP$,LEN(ASK.RESP$))= CHR$(27%)	&	!								&	!	Print the prompt and default,get the response,branch if &	!	it contained an ESC character.				&25020	\ ASK.CVT$= EDIT$(ASK.RESP$,2%+4      %+32%)				&	\ ASK.CVT$= DEFAULT$	IF ASK.CVT$= ""				&	\ FN.ASK%= 3%							&	!								&	!	Edit the response,convert UC to LC,strip blanks,LF,etc  &	!	and supply the default if required.			&25030	\ GO TO 25040	IF ASK.CVT$<>"?"				&	\ PRINT								&	\ PRINT ASK.HELP$(I%)	FOR I%= HELP.IND% 			&					TO HELP.IND%+HELP.CNT%-1%	&	\ GO TO 25005							&	!								&	!	Print the help text if the response was a question mark.&25040	\ GO TO 25050	IF VALID$<> "I"					&	\ ASK.NUM%= VAL(ASK.CVT$)					&	\ GO TO 25090							&	      !								&	!	Convert the ASCII number to an integer if an integer 	&	!	response is required.					&25050	\ GO TO 25090	IF VALID$= ""					&	\ N%= INSTR(1%, VALID$,ASK.CVT$)				&	\ GO TO 25125	IF N%= 0%					&	\ N1%= INSTR(N%+1%,VALID$,"/") -1%				&	\ ASK.CVT$= MID(VALID$,N%,N1%-N%)				&	\ ITEM$= MID(VALID$,N1%,1%)					&	\ FN.ASK%= ASCII(ITEM$) - 46%					&	!								&	!	For an alphanumeric response,the typed response may be  &	!	any initial segment of a correct response.		&	!	Locate the matching full response an      d assign its 	&	!	list number(integer).					&25090	\ ON ERROR GO TO 19000						&	\ FNEND								&	!								&	!	Reset error trap and return to main program.		&25100	\ IF ERR=11%	THEN FN.ASK%= 2%				&	\ PRINT								&	\ RESUME 25090							&	!								&	!	If CTRL-Z was the response, FN.ASK%=2%			&25110	\ IF ERR= 52%	THEN PRINT "% Numeric required"			&	\ RESUME 25010							&	!								&	!	If alphanumeric was given and an integer is required,	&	!	print the error message and try again.			&25120	\ GO TO 19900							   Ä   &	!								&25125	\ PRINT "% Invalid response"					&	\ GO TO 25010							&	!								&	!	If the response is matched to a list and no match is    &	!	found, print an error message and try again.		& Ä          œ	7_kQÁ› 8$        	.TITLE	AUTOSIZE MACRO MODULE - MAPS I/O PAGE	.IDENT	/V01/	.SBTTL	MACRO CALLS & DEFINITIONS	.NLIST	BEX	.ENABL	LC	.MCALL	WDBBK$,RDBBK$,DIR$,CRAW$,DTRG$,CRRG$,EXST$S	.MCALL	ATRG$,MRKT$,WTSE$,QIOW$,INH$S,ENB$S	.MACRO	SIZE,A,C,D,E,F;;	<A>	BASE ADDRESS FOR THIS TYPE OF UNIT;	<C>	CELL TO HOLD COUNT OF UNITS PRESENT;	<D>	# OF I/O PAGE SLOTS TO CHECK;	<E>	SIZE OF SLOTS;	<F>	LABEL OF SPECIAL PROCESSING ROUTINE;	MOV	A,R0			;R0 HAS BASE ADDRESS	MOV	C,R1			;R1 HAS ANSWER ADDRESS;	.IIF NB, D,	MOV	D,R2			;R2 HAS # TO CHE      CK	.IIF B,  D,	MOV	#1,R2			;DEFAULT IS 1;	.IIF NB, E,	MOV	E,R3			;R3 HAS SIZE OF SLOTS	.IIF B,  E, 	MOV	#10,R3			;DEFAULT IS 10 (8);	.IIF NB, F,	MOV	F,-(SP)			;STORE ROUTINE ADDRESS ON STACK	.IIF B,  F,	MOV	#0,-(SP)		;TRICKY EXIT;	JSR	PC,FINDEM		;GO TO COMMON ROUTINEI;	TST	(SP)+			;RESET STACK	.ENDM	SIZE;	.PAGE	.PSECT	DATIO,D,REL,GBL,CON,RW	.SBTTL	DPB & INTERNAL CONSTANTS;********************************************************************;;;	INTERNAL DATA CONSTANTS;;;***************************************      ****************************;ATTACH:	CRRG$	REGION			;ATTACH REGION DIRECTIVECREATE:	CRAW$	WINDOW			;CREATE WINDOW DIRECTIVEDETACH:	DTRG$	REGION			;DETACH REGION DIRECTIVE;REGION:	RDBBK$	128.,AUTOSZ,GEN,<RS.RED!RS.WRT!RS.DEL!RS.ATT>,0;					 REGION DEFINITION BLOCK FOR AUTOSIZERWINDOW:	WDBBK$	3,128.,,0,0,<WS.WRT!WS.MAP>;					 WINDOW DEFINITION BLOCK FOR AUTOSIZER;;SSTPNT::.WORD	ENDMEM			;NON-EXISTENT MEMORY	.WORD	0	.WORD	0	.WORD	0			;SSTEXT:	.WORD	ENDMEM			;RESERVED INSTRUCTION TRAP	.WORD	0	.WORD	0	.WORD	0			      ;FLOATING POINT TRAP;;TIME:	MRKT$	1,1,1			;MARK TIME FOR 1 TICK;WAIT:	WTSE$	1			;EVENT FLAG TO WAIT FOR;;TYPE:	QIOW$	IO.WBT,13.,32.,,IOSTAT,,<MESS,SMESS,0>;					 CONSOLE I/O DIRECTIVE;;MESS:	.BYTE	10.,13.	.ASCII	/Directive error in AUTOIO /	.BYTE	10.,13.	.ASCII	/Location /LOC:	.BLKB	6	.BYTE	10.,13.	.ASCII	/DSW code -/DSW:	.BLKB	6	.BYTE	10.,13.SMESS	=	. - MESS;;	.EVENSYSID::	.WORD	0			;IF 1 - TRAX DEV SYSTEM IDSTAT1:	.WORD	2			;EXIT WITH ERROR STATUSSTATUS:	.WORD	1			;EXIT WITH STATUS CONSTANTIOSTAT:	.BLKW	2      			;I/O STATUS BLOCK;ADDRES:	.WORD	176700			;ADDRESSES OF RH70 CONTROLLERS	.WORD	172440			;	.WORD	176300			;	.WORD	172040			;;	.PSECT	AUTO,RW,D,REL,GBL,CON	.SBTTL	THE COMMON REGION SHARED WITH AUTOSZCPU:	.BLKW				;CPU TYPEMEMSIZ:	.BLKW				;COUNTER FOR MEMORY SIZECACHE:	.BLKW				;MARK ABSENCE OF CACHENOFPP:	.BLKW				;MARK ABSENCE OF FLOATING POINT PROC.;LCLNUM:	.BLKW				;LINE CLOCK COUNTPCLNUM:	.BLKW				;PROGRAMMABLE CLOCK COUNTLPNUM:	.BLKW				;LINE PRINTER COUNTDLNUM:	.BLKW				;DL COUNTDVNUM:	.BLKW				;DV C      OUNTRKNUM:	.BLKW	8.			;RK DRIVE COUNTDMNUM:	.BLKW				;DM11-BB MODEM CONTROLLERSDRNUM:	.BLKW				;DR11DLANUM:	.BLKW				;DL11A,BCRNUM:	.BLKW				;CARD READERCPNUM:	.BLKW				;CARD PUNCHDCNUM:	.BLKW				;DC11;ARCON1:	.BLKW	64.			;FIRST DISK ARRAYARCON2:	.BLKW	64.			;SECOND DISK ARRAYARCON3:	.BLKW	64.			;THIRD DISK ARRAYARCON4:	.BLKW	64.			;FOURTH DISK ARRAY;TYPE1:	.BLKW				;IDENTIFY RH70 CONTROLLER TYPETYPE2:	.BLKW				;TYPE3:	.BLKW				;TYPE4:	.BLKW				;;ARFLOA:	.BLKW	20.			;FLOATING GADGET STORAGE REGION;ARTS03:	.      BLKW	10			;TS03 ARRAY;ID:	.BLKW				;SYSTEM I/D;SIZE	= 	. - <CPU + 2>		;SIZE OF VSECT	.PAGE	.PSECT	CODIO,I,REL,GBL,CON,RO	.SBTTL	MAIN PROGRAM CONTROL LOOP;*****************************************************************;;;	MAIN PROGRAM - PLAS + CALLS TO VARIOUS SUB-ROUTINES;;;*****************************************************************;START::	DIR$	#ATTACH,ERR		;ATTACH REGION DIRECTIVE	MOV	REGION,WINDOW+6		;TRANSFER THE REGION ID	DIR$	#CREATE,ERR		;MAP WINDOW;;	MOV	#SIZE,R0		;VSECT SIZE TO R0	MOV	#<CPU      +2>,R1		;VSECT BASE ADDRESS TO R1;1$:	MOVB	#0,(R1)+		;CLEAR A LOCATION	SOB	R0,1$			;LOOP THROUGH VSECT;;;	THE ABOVE ROUTINE IS MEANT TO CLEAR THE VSECT FOR USE BY THIS PROGRAM;;	CMP	#1,SYSID		;IS THIS TRAX DEV SYS	BNE	2$			;NO	INC	ID			;YES, TELL THE WORLD;2$:	INH$S				;INHIBIT CONTEXT SWITCHING	JSR	PC,TSTMEM		;FIND MEMORY SIZE	ENB$S				;ENABLE CONTEXT SWITCHING;	JSR	PC,TSTCAC		;CACHE MEMORY PRESENT?	JSR	PC,TSTFPP		;FLOATING POINT PROCESSOR PRESENT?	JSR	PC,RH70			;RH70 CONTROLLERS TESTED	JSR	PC,FLOAT		;MAP       FLOATING ADDRESS SPACE;	SIZE	#175000,#DVNUM,#4,#40	;TEST DV11 UNITS;	JSR	PC,TS03			;TEST TS03;	SIZE	#177514,#LPNUM		;PRINCIPAL LINE PRINTER	SIZE	#164004,#LPNUM,#7,#4	;SECONDARY LINE PRINTERS;	SIZE	#177560,#DLNUM		;CONSOLE TERMINAL	SIZE	#175610,#DLNUM,#30	;OTHER DL11-C,D;	JSR	PC,RK06			;TEST RK06/07 UNITS;	SIZE	#172410,#DRNUM		;TEST DR11;	SIZE	#176500,#DLANUM,#8.	;TEST OTHER DK UNITS	.PAGE;*************************************************************;;;	MORE SUB-ROUTINE CALLS		;;;****************************      *******************************;	SIZE	#172600,#CRNUM,,#64.	;TEST CARD READER;	SIZE	#172700,#CPNUM,,#64.	;TEST CARD PUNCH;	SIZE	#170500,#DMNUM,,#20	;DM11 MODEM CONTROLLERS;	SIZE	#177546,#LCLNUM		;LINE CLOCK	SIZE	#172540,#PCLNUM		;PROGRAMMABLE CLOCK;	SIZE	#174000,#DCNUM,#40	;DC11 UNITS;	DIR$	#DETACH,ERR		;DETACH FROM REGION	EXST$S	STATUS			;EXIT WITH SUCCESS STATUS	.PAGE	.SBTTL	ERROR, WAIT, & GENERALIZED TESTER ROUTINES;****************************************************************;;;	ERROR ROUTINE, WAIT RO      UTINE, & ROUTINE WHICH TELLS IF ;	A DEVICE IS PRESENT;;;********************************************************************;ERR:		MOV	$DSW,R1			;SAVE DSW RETURN	NEG	R1			;COMPLEMENT THE RESULT	CLR	R2			;ZERO SUPPRESS	MOV	#DSW,R0			;ANSWER GOES HERE	JSR	PC,$CBDMG		;CONVERT TO ASCII	MOV	(SP)+,R1		;GET LOCATION	INC 	R2			;DON'T ZERO SUPPRESS	MOV	#LOC,R0			;	JSR	PC,$CBOMG		;CONVERT LOCATION TO ASCII	DIR$	#TYPE			;	EXST$S	STAT1			;EXIT WITH ERROR STATUS;;HOLDON:	DIR$	#TIME			;WAIT FOR 10 TICKS	DIR$	#WAIT			;	RT      S	PC			;RETURN;;FINDEM:	MOV	#TRAPED,SSTPNT		;TRAP OUT HERE IF NON-EXISTENT DEVICE	MOV	#TRAPED,SSTPNT		;;GETMOR:	TST	(R0)			;TEST IF A UNIT IS THERE;	TST	2(SP)			;IS THERE A SPECIAL ROUTINE?	BEQ	KEEPON			;NO	JMP	@2(SP)			;YES - GO TO SPECIAL ROUTINE;KEEPON:	INC	(R1)			;IF IT IS - BUMP COUNTER	ADD	R3,R0			;BUMP TO NEXT DEVICE	SOB	R2,GETMOR		;TEST SPECIFIED # OF UNITSGETOUT:	RTS	PC			;DONE;TRAPED:	CMP 	(SP)+,(SP)+		;RESET STACK AFTER TRAP	BR	GETOUT			;EXIT	.PAGE	.SBTTL	CPU FEATURES SUB-ROUTINES;***************      **************************************************;;;	CPU FEATURES;;;*****************************************************************;TSTMEM:	MOV	#ENDMEM,SSTPNT		;SPECIFY NEW MEMORY SST TRAP ADDRESS	MOV	#ENDMEM,SSTEXT		;	MOV	@#177654,-(SP)		;SAVE USER KT	MOV	#0,@#177654		;ASR 7 WILL TEST FOR MEMORY PRESENT;1$:	TSTB	@#140001		;IS THAT BLOCK OF 64 BYTES PRESENT?	INC	MEMSIZ			;YES, INCREMENT MEMORY SIZE COUNTER	INC	@#177654		;BUMP UP TO NEXT BLOCK OF MEMORY	BR	1$			;AND TEST THAT ONE;;ENDMEM:	ADD	#4,SP			;RES      ET STACK	MOV	(SP)+,@#177654		;RESET USER KT	RTS	PC			;RETURN TO MAIN-LINE;;;****************************************************************;;TSTCAC:	MOV	#CACTRP,SSTPNT		;SPECIFY SST TRAP ADDRESS	MOV	#CACTRP,SSTEXT		;	TST	@#177752		;HIT/MISS REGISTER PRESENT?	RTS	PC			;REURN TO MAIN LINE;;CACTRP::INC	CACHE			;MARK THAT NO CACHE IS PRESENT	RTI				;;;;*****************************************************************;;TSTFPP:	MOV	#RESTRP,SSTPNT		;GO HERE IF NO FPP	MOV	#RESTRP,SSTEXT		;	ADDD	%0,%1			;TRY A FLOA      TING POINT INSTRUCTION	RTS	PC			;RETURN TO MAIN LINE;;RESTRP::INC	NOFPP			;MARK THAT NO FPP IS PRESENT	RTI	.PAGE	.SBTTL	FLOATING ADDRESS SUB-ROUTINES;******************************************************************;;;	FLOATING ADDRESS DEVICES;;;******************************************************************;FLOAT:	MOV	#160010,R0		;START OF FLOATING ADDRESSES TO R0	CLR	R1			;COUNTER THROUGH FLOATING TABLE	MOV	#TRAP,SSTPNT		;WHERE TO GO IF NON-EXISTENT MEMORY	MOV	#TRAP,SSTEXT		;;1$:	TST	(R0)			;IS DEVICE       THERE?	INC	ARFLOA(R1)		;INCREMENT DEVICE COUNTER	ADD	#10,R0			;POP TO NEXT POSSIBLE LOCATION	BR	1$			;TRY NEXT POSSIBLE LOCATION;TRAP:	CMP	R1,#0				;COMING TO DH11	BEQ	EXGAP				;YES- MAYBE EXTRA GAP;OK:	CMP	R1,#22.			;ARE WE THROUGH ALL FLOATING DEVICES?	BEQ	3$			;YES	TST	(R1)+	DEC	ARFLOA(R1)		;CORRECT THE DEVICE COUNT	RTI				;NO, GO BACK FOR MORE;3$:	CMP	(SP)+,(SP)+		;RESET STACK	ASR	ARFLOA+2		;CORRECT DH11 COUNT	RTS	PC			;RETURN TO MAIN PROGRAM;;;	SPECIAL PROCESSING FOR DH11;EXGAP::	MOV	R0,R2			;SET UP A       TEMPORARY REGISTER	BIC	#177760,R2		;OUT OF ALIGNMENT?	BNE	OK			;ALIGNED;4$:	ADD	#10,R3			;FORCE ALIGNMENT	BR	OK			;CONTINUE	.PAGE	.SBTTL	CONTROLLER TYPE DETERMINATION;*******************************************************************;;;	DETERMINE CONTROLLER TYPE;;;*******************************************************************;RH70:	MOV	#4,R4			;4 CONTROLLERS	CLR	R3			;INITIALIZE R3	MOV	#ARCON1,R2		;STARTING DATA BLOCK ADDRESS	MOV	#7$,SSTPNT		;IF NOT THERE, TRAP OUT HERE	MOV	#7$,SSTEXT		;;5$:	MOV	R2,-      (SP)		;SAVE R2	MOV	ADDRES(R3),R0		;POINT TO CONTROLLER CSR BLOCK	BIT	26(R0),#40000		;IS IT A TAPE?	BEQ	1$			;NO	BR	2$			;YES;1$:	INC	TYPE1(R3)		;MARK IT AS A DISK	JSR	PC,DISK			;FIND OUT WHAT KIND	BR	3$			;GO FOR NEXT CONTROLLER;2$:	DEC	TYPE1(R3)		;MARK IT AS A TAPE	JSR	PC,TAPE			;FIND OUT WHAT KIND & HOW MANY	BR	3$			;GO FOR NEXT CONTROLLER;3$:	TST	(R3)+			;SET UP FOR NEXT CONTROLLER	MOV	(SP)+,R2		;RESTORE R2	ADD	#128.,R2		;	SOB	R4,5$			;LOOP THROUGH 4 CONTROLLERS;6$:	RTS	PC			;END OF ROUTINE;7$:	CMP	(SP)+      ,(SP)+		;RESET STACK AFTER TRAP FOR NON-EXIST	BR	3$			;DEVICE & GO TO NEXT DEVICE	.PAGE	.SBTTL	DISK CONTROLLER ROUTINE;**************************************************************;;;	THIS ROUTINE WILL TEST AN RH70 DISK CONTROLLER TO FIND OUT ;	WHAT ITS CHARACTERISTCIS ARE;;;***************************************************************;;	R0	- CONTAINS BASE ADDRESS OF CONTROLLER;	R1	- INDEXES THROUGH THE DRIVE UNITS;	R2	- POINTS TO THE DATA BLOCK FOR THIS CONTROLLER;;	OFFSETS;		0(R0)	- CSR1 REGISTER - FUN      CTION CODES;		2(R0)	- WORDS TO READ;		4(R0)	- MEMORY ADDRESS FOR TRANSFER;		6(R0)	- SECTOR, TRACK SPECIFICATION;		10(R0)	- CSR2 REGISTER - UNIT SELECT - NON-EXISTENT DRIVE;		26(R0)	- DRIVE TYPE REGISTER;		34(R0)	- DESIRED CYLINDER REGISTER;DISK:	MOV	#7,R1			;8 POSSIBLE UNITS;NEXTD:	BIC	#7,10(R0)		;SELECT A UNIT	BIS	R1,10(R0)		;;	BIC	#76,(R0)		;	BIS	#1,(R0)		;INITIATE A READ;INTERR::1$:	JSR	PC,HOLDON		;WAIT AWHILE	BIT	#200,(R0)		;READ DONE	BEQ	1$			;NO;					 YES	BIT	#10000,10(R0)		;NON-EXISTENT DRIVE	BNE	5$	      		;YES;3$:	MOV	26(R0),(R2)		;STORE IT IN DATA FIELD4$:	TST	(R2)+			;BUMP TO NEXT LOCATION	DEC	R1			;DECREMENT # OF DRIVES	TST	R1			;MORE DRIVES	BPL	NEXTD			;YES	RTS	PC			;RETURN TO MAIN PROGRAM;;5$:	CLR	(R2)			;INDICATE NON-EXISTENCE TO MAIN PROG	BR	4$			;	.PAGE	.SBTTL	TAPE CONTROLLER ROUTINE;*******************************************************************;;;;	THE COMMENTS HERE ARE ALMOST IDENTICAL TO THOSE ON THE RH70 ;	DISK CONTROLLER ROUTINE;;	THE ONLY DIFFERENCE IS THAT R3 TRACKS THE SLAVE UNITS (TRA      NSPORT);	WHILE R1 TRACKS THE MASTER UNITS (FORMATTER);;******************************************************************;TAPE:	MOV	R3,-(SP)	;SAVE R3	MOV	#7,R1		;8 POSSIBLE TAPE FORMATTERS	MOV	#7,R3		;8 POSSIBLE TRANSPORTS ON EACH FORMATTER;NEXTT:	BIC	#7,10(R0)	;SELECT A FORMATTER	BIS	R1,10(R0)	;;	BIC	#7,32(R0)	;SELECT A TRANSPORT	BIS	R3,32(R0)	;;	BIC	#76,(R0)	;INITIATE A READ	BIS	#1,(R0)	;;;1$:	JSR	PC,HOLDON	;WAIT AWHILE	BIT	#200,(R0)	;READ COMPLETE?	BEQ	1$		;NO;	BIT	#10000,10(R0)	;NON-EXISTENT DRIVE?	BNE	      2$		;YES	MOV	26(R0),(R2)	;MARK TRANSPORT AS PRESENT;2$:	TST	(R2)+		;POP TO NEXT STORAGE LOCATION	DEC	R3		;GET NEXT TRANSPORT	TST	R3		;	BPL	NEXTT		;IF THERE IS ONE;	MOV	#7,R3		;START NEXT FORMATTER	DEC	R1		;	TST	R1		;MORE FORMATTERS?	BPL	NEXTT		;YES;	MOV	(SP)+,R3	;RESTORE R3	RTS	PC		;RETURN TO MAIN PROGRAM	.PAGE	.SBTTL	TS03 ROUTINE;******************************************************************;;;	TS03 TAPE DRIVE ROUTINE;;;*****************************************************************;TS03:	MOV	#TSTRAP      ,SSTPNT	;SET UP TRAP	MOV	#TSTRAP,SSTEXT	;	TST	@#172520	;IS IT PRESENT?	MOV	#ARTS03,R0	;PASS ADDRESS OF SOTRAGE ARRAY	MOV	#7,R1		;PASS # OF UNITS TO CHECK	JSR	PC,TS031	;DETERMINE # OF UNITS	RTS	PC		;RETURN TO MAIN LINE;;TSTRAP:	CMP	(SP)+,(SP)+	;RESET STACK	RTS	PC		;RETURN TO MAIN LINE;;;	THIS ROUTINE RETURNS THE NUMBER OF TS03 UNITS ON THE CONTROLLER;;;	R0 - POINTS TO THE STROAGE BUFFER FOR THE RESULTS;;TS031:	MOV	#10000,@#172522		;CLEAR THE DRIVE	BIC	#3416,@#172522		;CLEAR UNIT & FUNCTION FIELDS;	MOV	R1,R3	      		;CONTENTS OF R1 TO BE TEMP CHANGED	ASH	#8.,R3			;SHIFTED 8 PLACES	BIS	R3,@#172522		;SET THE UNIT	BIS	#15.,@#172522		;SET THE REWIND FUNCTION;1$:	JSR	PC,HOLDON		;WAIT AWHILE	BIT	#200,@#172522		;IS REWIND COMPLETE?	BEQ	1$			;NO;	BIT	#100,@#172520		;NON-EXISTENT UNIT?	BEQ	2$			;YES;	MOV	#1,(R0)			;MARK ITS EXISTENCE2$:	TST	(R0)+			;BUMP TO NEXT COUNTER	DEC	R1			;TEST NEXT UNIT	TST	R1			;IF MORE, DO IT AGAIN	BPL	TS031			;MORE!;	RTS	PC			;RETURN TO MAIN PROGRAM	.PAGE	.SBTTL	RK06/07 SPECIAL ROUTINE;************      **************************************************;;;	TEST RK06/07;;;*************************************************************;RK06:	MOV	#1$,SSTPNT		;NEW TRAP ADDRESS	MOV	#1$,SSTEXT		;	TST	@#177440		;IS CONTROLLER THERE?	JSR	PC,RK07			;IDENTIFY DRIVE TYPES	MOV	#40,@#177450		;CLEAR DRIVE - ESSENTIAL ON RK07!!!	RTS	PC			;RETURN;1$:	CMP	(SP)+,(SP)+		;RESET STACK - CONTROLLER NOT THERE	RTS	PC			;RETURN TO MAIN LINE;;RK07:	MOV	#177440,R0		;BASE ADDRESS OF CSR TO R0	MOV	#10,R1			;8 DRIVES TO TEST	MOV	#RKNUM,R      2		;BASE ADDRESS OF ANSWER ARRAY TO R2;2$:	MOV	#40,10(R0)		;CLEAR SUB-SYSTEM	MOV	R1,10(R0)		;SPECIFY UNIT NUMBER	DEC	10(R0)			;CORRECT FOR SOB SHIFTED VALUE	MOV	#1,(R0)			;ISSUE SELECT DRIVE FUNCTION;1$:	TSTB	(R0)			;WAIT FOR SERIAL MESSAGE	BPL	1$			;;	BIT	#10000,10(R0)		;DRIVE EXISTS?	BNE	6$			;NO	BIT	#400,12(R0)		;IS IT AN RK07?	BEQ	5$			;NO	INC	(R2)			;2 IF ITS AN RK075$:	INC	(R2)			;1 IF ITS AN RK066$:	TST	(R2)+			;BUMP TO NEXT CELL	SOB	R1,2$			;LOOP THROUGH DRIVES	RTS	PC			;WHEN ALL DRIVES ARE TESTED,       RETURN;	.END 	START           •ÄQdÁ› 8$P   R  SET /UIC=[113,10]LBR [113,10]TPUMC/CR::::MACLBR [113,10]TPUMC.MLB/IN=[113,10]SPEAK.MACLBR [113,10]TPUMC.MLB/IN=[113,10]TLKDAT.MACLBR [113,10]TPUMC.MLB/IN=[113,10]TLKDF.MACLBR [113,10]TPUMC.MLB/IN=[113,10]NEWSPEAK.MACLBR [113,10]TPUMC.MLB/IN=[113,10]LPUT.MACLBR [113,10]TPUMC.MLB/IN=[113,10]TALKR.MACPIP [113,10]TPUMC.MLB/PUSET /UIC=[1,1] R         |…C^“Á› 8$ô&      26900	!$**************************************************************&	!								&	!								&	!	U N L O C K     A     F I L E				&	!								&	!								&	!	Version:	BL9					 BL9-01&	!	Edit level:	01					 BL9-01&	!	Edit date:	22-Mar-79				 BL9-01&	!	Author(s):	WJB					&	!			KMR					 BL9-01&	!								&	!	VER/ED	 DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	V01.00	011579	  WJB	Initial Release			&	!	BL9-01	22-Mar-79 KMR	Changed spawns to PIP to spawns	 BL9-01&	!				  to MCR.      ..			 BL9-01&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.UNLOCK.FILE% ( FIL$ )		&	!								&	!	INPUT:	FIL$	- file specification text string	&	!								&	!	RETURN:		- success/failure status code from PIP	&	!			  /UN operation on file.		&	!								&	!								&	!***************************************************************&								       !&	DEF FN.UNLOCK.FILE%(FIL$)					&								       !&		\ BREED.TASK$ = "MCR..."				!BL9-01&		\ BREED   p  .COMMAND$ = "PIP "				&				 + EDIT$(FIL$,2%+4%+32%)		&				 +"/UN"					&		\ BREED.RETURN% = TRUE%					&		\ GO SUB 20000						&		\ FN.UNLOCK.FILE% = BREED.ERROR%			&		!							&		!	PIP is the task.				&		!	Make up the command.				&		!	Set up for return even on error.		&		!	Perform the command.				&		!	Pass out the result to caller.			&								       !&	\ FNEND								&p         œwþvkQÁ› 8$        	.TITLE	SETSAV	- SAVE & HARDSAVE FOR TRAX	.IDENT	/V 1.1/	.MCALL	DIR$,EXST$S,QIOW$,STSE$S	.MCALL	GTSK$,MRKT$,TALK$,SPEAK$,SPWN$	.NLIST	BEX	.NLIST	CND	.ENABL	LC;;	SPAWNING MACRO FOR MCR COMMAND LINES;	.MACRO	DO.IT$,TASK,ADDRESS,LENGTH,ERROR	.IIF NB, TASK,		MOV	#'TASK',R2		;SPECIFY TASK TO HANDLE COMMAND	.IIF NB,ADDRESS,	MOV	#'ADDRESS',R0		;ADDRESS OF COMMAND	.IIF NB,LENGTH,		MOV	#'LENGTH',R1		;LENGTH OF COMMAND TO R1;	CALL	SPAWN			;SPAWN THE COMMAND	BCC	.+6			;IF ERROR - GO DIE IN A NOISY WAY	JMP	'ERROR'			;I      F ERROR - GO DIE IN NOISY WAY;	.ENDM	DO.IT$;;	.MACRO	WRITE$,VARAB,?D	MOV	#'VARAB',MESSAG+Q.IOPL	;START OF MESSAGE	MOV	#S.'VARAB',MESSAG+Q.IOPL+2	;LENGTH OF MESSAGE	DIR$	#MESSAG,D		;WRITE THE MESSAGE	STSE$S	#QIOEFN				;WAIT FOR QIO TO FINISH	BR	.+4				;DONE;D:	BPT					;CAN'T DO MESSAGE - END OF WORLD	.ENDM	WRITE$;;	SLEEP MACRO;	.MACRO	SLEEP	DIR$	#MRKT,FATAL5			;MARK TIME FOR 3 SECONDS	STSE$S	#MRKEFN				;& WAIT	.ENDM	SLEEP	.PSECT	DATA,RW,D,REL,CON	.PAGE;********************************************************      ****;;;	TASKS, COMMAND LINES, & LENGTHS;;;*******************************************************;TASK0:	.RAD50	/MCR.../		;TASK 0TASK1:	.RAD50	/SETSHT/		;TASK 1TASK2:	.RAD50	/MCR.../		;TASK 2;			TASK3:	.RAD50	/MCR.../		;TASK 3TASK4:	.RAD50	/MCR.../		;TASK 4TASK5:	.RAD50	/MCR.../		;TASK 5TASK6:	.RAD50	/MCR.../		;TASK 6TASK7:	.RAD50	/MCR.../		;TASK 7TASK8:	.RAD50	/...SAV/		;TASK 8TASK9:	.RAD50	/MCR.../		;TASK 9TASK10:	.RAD50	/MCR.../		;TASK 10TASK11:	.RAD50	/MCR.../		;TASK 11TASK12:	.RAD50	/MCR.../		;TASK 12T      ASK13:	.RAD50	/MCR.../		;TASK 13TASK14:	.RAD50	/MCR.../		;TASK 14	.RAD50	/DEAD  /		;END OF TABLE;;COM0:	.ASCII	/ASN =              /	;TASK 0COM1:	.ASCII	/SETSHT             /	;TASK 1COM2:	.ASCII	\SET /UIC=[1,1]     \	;TASK 2;			COM3:	.ASCII	/REA KMCLDR 5 NL0:  /	;TASK 3COM4:	.ASCII	\SET /MCR=TI:       \	;TASK 4COM5:	.ASCII	\SET /NOPUB=SY0:    \	;TASK 5COM6:	.ASCII	/DMO SY0:           /	;TASK 6COM7:	.ASCII	/REM TKTN           /	;TASK 7COM8:	.ASCII	/SAV                /	;TASK 8COM9:	.ASCII	\MOU SY0:/OVR             \	;TASK 10COM10:	.ASCII	\SET /DCL=TI:       \   ;TASK 11COM11:	.ASCII	/IND @[1,2]STARTUP  /	;TASK 12;;	.EVENLEN0:	.WORD	COMLEN			;TASK 0LEN1:	.WORD	COMLEN			;TASK 1LEN2:	.WORD	COMLEN			;TASK 2;			LEN3:	.WORD	COMLEN			;TASK 3LEN4:	.WORD	COMLEN			;TASK 4LEN5:	.WORD	COMLEN			;TASK 5LEN6:	.WORD	COMLEN			;TASK 6LEN7:	.WORD	COMLEN			;TASK 7LEN8:	.WORD	COMLEN			;TASK 8LEN9:	.WORD	COMLEN			;TASK 9LEN10:	.WORD	COMLEN			;TASK 10LEN11:	.WORD	COMLEN			;TASK 11LEN12:	.WORD	COMLEN			;TASK 12;COMLEN	=	19.	.PAGE;*********      ************************************************;;;	DIALOG CONSTANTS;;;**********************************************************;PRO1:	.ASCII	/Do you want to SAVE again /S.PRO1	= . - PRO1;PRO2:	.ASCII	/Do you want to HARDSAVE again /S.PRO2	= . - PRO2;;	Prompt texts for the retry question asked if SAVE/HARDSAVE dies;D1:	.ASCII	/<No>? /S.D1	= . - D1;;	Default for retry question;H1:	.ASCII	/If you answer YES, you must somehow have corrected the /	.ASCII	/problem.  We will restart the SAVE procedure./	.BYTE	CR      ,LF,LF	.ASCII	/If you answer NO, we will re-initialize your system./S.H1	=	. - H1;H2:	.ASCII	/If you answer YES, you must somehow have corrected the /	.ASCII	/problem.  We will restart the HARDSAVE procedure./	.BYTE	CR,LF,LF	.ASCII	/If you answer NO, we will re-initialize your system./S.H2	=	. - H2;;	Help text for the retry question;	.PAGE;*************************************************************;;;	ERROR MESSAGES;;;**********************************************************;MES1:	.BYTE	CR,LF,LF	.ASCII	/      ? FATAL error - shutdown did not complete./	.BYTE	CR,LF,LFS.MES1	= . - MES1;;	Fatal error message if shutdown is incomplete;MES2:	.BYTE	CR,LF,LF	.ASCII	/? FATAL error - spawned task exited with error status./	.BYTE	CR,LF,LFS.MES2	=	. - MES2;;	Fatal error message if a spawned command failed;MES3:	.BYTE	CR,LF,LF	.ASCII	/ESC is not allowed here./	.BYTE	CR,LF,LFS.MES3	= . - MES3;MES4:	.BYTE	CR,LF,LF	.ASCII	/CTRL-Z is not allowed here./	.BYTE	CR,LF,LFS.MES4	= . - MES4;;MES5:	.BYTE	CR,LF,LF	.ASCII	/? FATAL direct      ive error in SETSAV./	.BYTE	CR,LF,LFS.MES5	=	. - MES5;;MES6:	.BYTE	CR,LF,LF	.ASCII	/% All local assignments have been deleted./	.BYTE	CR,LF,LFS.MES6	=	. - MES6;;MES7:	.BYTE	CR,LF,LF	.ASCII	/? FATAL error - BASLIN may not be SAVEd./	.BYTE	CR,LF,LFS.MES7	=	. - MES7	.PAGE;********************************************************;;;	DPB & CONTROL BLOCKS;;;********************************************************;	.EVENMRKT:	MRKT$	MRKEFN,3,2			;SLEEP FOR THREE SECONDS;WHATTS:	GTSK$	TASKPR				;GET TASK PARAMETERS;T      ASKPR:	.BLKW	16.				;PARAMETER BLOCK FOR GET TASK CALL;MESSAG:	QIOW$	IO.WBT,5,QIOEFN,,IOSTAT,,<0,0,0>;QIO FOR ERROR MESSAGES;SPDPB:	SPWN$	,,,,,SPEFN,,EXS			;SPAWN DPB;TALK1:	TALK$	PRO1,D1,H1,1,1			;RETRY QUESTION FOR SAVE;TALK2:	TALK$	PRO2,D1,H2,1,1			;RETRY QUESTION FOR HARDSAVE;;MRKEFN	=	5				;MARK TIME EVENT FLAGQIOEFN	=	6				;QIO EVENT FLAGSPEFN	=	7				;SPAWN EVENT FLAG;IOSTAT:	.BLKW	2				;QIO IO STATUS BLOCKEXS:	.BLKW	10				;EXIT WITH STATUS BLOCK;HARDSV:	.WORD	0				;FLAG CELL FOR HARDSAVE;CR	=	15				;      CARRIAGE RETURNLF	=	12				;LINE FEED;DEFTAS	=	4				;DEFAULT TASK STRING LENGTHDEFADD	=	19.				;DEFAULT COMMAND ADDRESS LENGTHDEFLEN	=	2				;SIZE OF LENGTH CELLS	.PAGE	.PSECT	CODE,I,REL,CON;***********************************************************;;;	MAIN LINE CODE;;;********************************************************;START:	CLC					;DEBUG;;	WE ARE NOT GOING TO KERNEL MODE TO EXAMINE $CURNM;	WE ARE NOT CHANGING ANYTHING AND THE CELL WE ARE LOOKING AT;	IS STATIC ACROSS THE LIFE OF THE SYSTEM.;;;	CMP	$C      URNM  ,#"BA			;IS IT BASE-LINE SYSTEM;	BNE	1$				;NO- ITS OK;	CMP	$CURNM+2,#"SL			;;	BNE	1$				;;	CMP	$CURNM+4,#"IN			;;	BNE	1$				;;	WRITE$	MES7				;WRITE OUT ERROR IF BASLINE IS SAVED;	EXST$S	#2				;EXIT WITH ERROR STATUS;1$:	AGAIN:	DIR$	#WHATTS,FATAL5			;GET TASK PARAMETERS	CMP	TASKPR+2,#^RHSV			;IS IT HARD SAVE?	BNE	10$				;NO;	MOVB	#'/,COM8+4		;TAILOR SAVE COMMAND	MOVB	#'W,COM8+5		;	MOVB	#'B,COM8+6			;	MOV	#1,HARDSV			;FLAG A HARDSAVE IN PROGRESS;;10$:	DO.IT$	TASK0, COM0, LEN0, FATAL2	;DELETE ASSIGNMEN      TS	WRITE$	MES6				;TELL USER ASSIGNMENTS ARE GONE	SLEEP;	DO.IT$	,,,FATAL1			;SPAWN SETSHT;	MOV	#TASK2,R2			;SET UP FOR LOOP THROUGH COMMANDS	MOV	#COM2,R0			;	MOV	#LEN2,R1			;	MOV	#4,R5				;4 COMMANDS TO DO;PRELOP:	DO.IT$	,,,FATAL2			;	SOB	R5,PRELOP			;LOOP THROUGH INITIAL COMMANDS;	SLEEP	DO.IT$	,,,FATAL2			;REMOVE TKTN	SLEEP;	DO.IT$	,,,BOMBED			;SAVE		EXST$S	#1				;IT WORKED - EXIT;;	IF SAVE IS SUCCESSFUL PROGRAM EITHER RETURNS HERE OR IS ABORTED IF;	RUNNING ABOVE 124K.  IF UNSUCCESSFUL, CONTROL TRANSFERS T      O RECOVERY;	STUFF BELOW	.PAGE;*************************************************************;;;	A FAILED SAVE/HARDSAVE COMES HERE;;;************************************************************;BOMBED:	DO.IT$	,,,FATAL2			;MOUNT COMMAND	DO.IT$	,,,FATAL2			;SET TO DCL;QUERY:	TST	HARDSV				;A HARDSAVE OPERATION?	BNE	RETRY2				;ASK A DIFFERENT QUESTION;	SPEAK$	TALK1,FATAL3,FATAL4,FATAL5	;ASK SAVE RETRY QUESTION	BR	ANSWER				;COMMON ROUTINE TO PROCESS ANSWER;RETRY2:	SPEAK$	TALK2,FATAL3,FATAL4,FATAL5	;ASK HARDSAVE       RETRY QUESTION;;ANSWER:	CMP	TLSTAT(R5),#1			;WAS ANSWER NO?	BNE	1$				;ANSWER WAS YES - RETRY AGAIN;	DO.IT$	,,,FATAL2			;SPAWN INDIRECT	EXST$S	#1				;EXIT WITH SUCCESS;1$:	JMP	AGAIN				;RETRY;*************************************************************;;;	ERROR HANDLING ROUTINES;;;************************************************************;FATAL1:	WRITE$	MES1				;SHUTDOWN FAILED	EXST$S	#2				;EXIT WITH ERROR;FATAL2:	WRITE$	MES2				;ERROR IN SPAWNED TASK	EXST$S	#2				;EXIT WITH ERROR;FATAL3:	WRITE$	MES3			      	;ESC OUT OF QUESTION	JMP	QUERY				;RETRY QUESTION;FATAL4:	WRITE$	MES4				;CTRL-Z OUT OF QUESTON	JMP	QUERY				;RETRY QUESTION;FATAL5:	WRITE$	MES5				;DIRECTIVE ERROR	EXST$S	#2				;EXIT WITH ERROR;;	FATAL6 IS NOT USED  -  MES6 IS JUST A COMMENT ON CONSOLE;FATAL7:	WRITE$	MES7				;BASLIN BEING SAVED	EXST$S	#2				;EXIT WITH ERROR	.PAGE;*******************************************************;;;	SPAWNING SUB-ROUTINE;;;*****************************************************;SPAWN:	MOV	(R2),SPDPB+S.PWTN		;SET UP SPAW      N DPB	MOV	2(R2),SPDPB+S.PWTN+2		;	MOV	R0,SPDPB+S.PWCA	MOV	(R1),SPDPB+S.PWCL	DIR$	#SPDPB				;SPAWN DIRECTIVE	BCS	1$				;SPAWN FAILED - RETURN C-SET;	STSE$S	#SPEFN				;WAIT FOR TASK TO FINISH	CMP	#EX$SUC,EXS			;WAS STATUS SUCCESS?	BNE	1$				;NO - EXIT C-SET2$:	CLC					;EXIT WITH SUCCESS5$:	ADD	#DEFTAS,R2		;BUMP TO PROBABLE NEXT	ADD	#DEFADD,R0		;BUMP TO PROBABLE NEXT LENGTH	ADD	#DEFLEN,R1		;BUMP TO NEXT LENGTH	RETURN;1$:	CMP	#0,EXS				;EXIT WITH NO STATUS	BNE	3$				;ERROR STATUS - FATAL	CMP	2(R2),#^RSAV			;WAS   \    TASK SAV	BEQ	2$				;YES- 0 STATUS IS OK3$:	SEC					;EXIT WITH ERROR	BR	5$				;	.END 	START \          œw:dÌÁ› 8$“   ¬   OLD [113,10]SETPARAPPEND [113,10]SGNPRCTXTAPPEND [113,10]SETCOMAPPEND [113,10]SETMAPAPPEND [113,10]SETOCTAPPEND [111,5]SBREEDCOM [113,24]SETPAR/OBJREP [113,34]SETPAR.LSTEXI¬          ™w“Á› 8$¡E      15700	!$**************************************************************&	!								&	!								&	!	C H E C K    S E Q U E N C E    K E Y			&	!								&	!								&	!								&	!	Version:	01					&	!	Edit level:	01					 BL1-01&	!	Edit date:	18-May-78				 BL1-01&	!	Author(s):	KMR					&	!								&	!	VER/ED	DATE	INITIAL	REASON				&	!	------	------	  ---	------------------------------- &	!	01/00	03-May-78 KMR	Initial coding.			&	!	01/01	18-May-78 KMR	Change length of sequential part BL1-01&	!				  of key from a total       of 6	 BL1-01&	!				  digits to a total of 5 digits. BL1-01&	!								&	!***************************************************************&	!								&	!								&	!	USAGE FORMAT:	FN.SEQUENCE.KEY.VALID%( KEY$ )		&	!								&	!	INPUT:		KEY$ - This is the full sequence key	&	!			  that the function checks.		&	!								&	!	RETURNS:	The return value is TRUE% if the se-	&	!			  quence key was valid, FALSE% other-	&	!			  wise.					&	!								&	!	LOCAL:		NUMBER.FN$ - Local value used for	&	!			  holding the sequential       number.	&	!								&	!			DIGIT.TOTAL% - This value is used to	&	!			  keep the weighted sum of the digits	&	!			  of the SEQUENCE.NUMBER$.		&	!								&	!	This function strips off the sequence number that	&	!	  appears at the end of sequential key and assures that	&	!	  it has a valid check digit. If the check digit is OK	&	!	  the function will return with a value of TRUE%. If	&	!	  the check digit does not check, the return value of	&	!	  the function will be FALSE%.				&	!								&	!********************      *******************************************&	!								&	\ DEF FN.SEQUENCE.KEY.VALID%( KEY$ )				&	!								&	!	Define the function.					&	!								&		\ FN.SEQUENCE.KEY.VALID% = TRUE%			&		\ DIGIT.TOTAL% = 0%					&		\ NUMBER.FN$ = MID( KEY$, LEN(KEY$) - 4%, 5% )		!BL1-01&		!							&		!	Assume that the sequence key will be valid.	&		!	Set our running total to zero.			&		!	Extract the sequence number from the key.	&		!							&		\ DIGIT.TOTAL%	= DIGIT.TOTAL%				&				+ I.FN%					&				* VAL(	MID(	NUMBER.FN$,		&		   ¸  				6%-I.FN%,		!BL1-01&						1% ) )			&			FOR I.FN% = 5% TO 1% STEP -1%			!BL1-01&		!							&		!	Sum up the weighted digits of the sequence	&		!	 number.					&		!							&		\ DIGIT.TOTAL% = FN.MOD11%( DIGIT.TOTAL% )		&		\ DIGIT.TOTAL% = 0%	IF DIGIT.TOTAL% = 11%		&		\ FN.SEQUENCE.KEY.VALID% = FALSE%			&			IF DIGIT.TOTAL% <> 0%				&		!							&		!	Return a value of FALSE% if the number didn't	&		!	  check.					&		!							&	\ FNEND								& ¸         šwkQÁ› 8$        	.TITLE	TTCHK - CHECK TERMINAL	.ENABL	LC	.IDENT	/V1.1A00/	.PSECT DATA,RW,D,LCLTTEMW:	.MCALL	QIOW$	QIOW$	IO.WLB, 13., 32.,,IOSTAT,,<0,0,0>TTEM1:	.BYTE	13.,10.	.ASCII	/? /UTLNAM::	.ASCII	/SERDAY/	.ASCII	/ must be run from TT0: or batch/	.BYTE	13., 10.STTEM1	== . - TTEM1TTEM2:	.BYTE	13.,10.	.ASCII	/? GETLUN directive error -/TTDE:	.BLKB	6	.BYTE	13.,10.STTEM2	== . - TTEM2	.EVEN	.PAGE	.PSECT CODE,RO,I,LCL	.MCALL	DIR$, EXST$STTCHK::	CLR	R0		; Set to check lun 13.	CALL	CHKTT0		; Call the standard routine for				;         checking lun 13.	BCC	RET		; If carry is clear, just return.	MOV	$DSW, R1	; Move the DSW to R1.	TST	R1		; Test R1 for error.	BLE	10$		; We had a directive error, go handle.	MOV	#TTEM1, TTEMW+Q.IOPL	MOV	#STTEM1, TTEMW+Q.IOPL+2				; Move the message information to the				;   QIOW DPB.	BR	20$		; Go print the message.10$:	NEG	R1		; Make the error positive.	MOV	#TTDE, R0	; Put the address of where the error				;   goes into R0.	CALL	$CBDMG		; Convert the error to decimal and				;   place in the message buffer.	   þ   MOV	#TTEM2, TTEMW+Q.IOPL	MOV	#STTEM2, TTEMW+Q.IOPL+2				; Move the buffer parameters into the				;   QIOW DPB.20$:	DIR$	#TTEMW		; Write out whichever message we should.	EXST$S	#EX$SEV		; Exit with severe status.RET:	RETURN			; Return to the caller.	.END þ          /È¿rÁ› 8$        .UC.PS 58,100;.F .J;.LM 30;.RM 90;.skip 2.C T R A X   D E M O.skip 2.C U S E R ' S   G U I D E.skip 2.C B Y   A B R A H A M   L E D E R M A N.SKIP 3.C 1. INTRODUCTION:.SKIP 2TRAXDEMO is a privileged task that displays information about what is goingon in a TRAX system. The display usually runs continuously on a video terminalwith cursor control such as the VT52 video terminal. It can optionallybe run from a hardcopy terminal (not fully implemented yet), in which case all the information that would normally       be displayed on the video screen is instead written out toa file..skip 1TRAXDEMO has been designed to be useful to both the system operator/programmeras a system debugging aid, and to the application user who is just interestedin seeing what is going on in his TRAX system..skip 1The TRAXDEMO task is capable of showing five different displays, these are :.skip 1.indent 151. SUMMARY DISPLAY.indent 152. MESSAGE DISPLAY.indent 153. TST     DISPLAY.indent 154. TRANSACTION DISPLAY.indent 155. CORE/CACHE USAGE DIS      PLAY.skip 2The TRAXDEMO display consists of two parts. The first part of the display (top two lines of the screen) containing the date, time, cpu usage,pool and cache stats is updated every second. The second part of the display is one of the above listed displays. It is updated at userspecified intervals (default = every 10 seconds)..skip 2In addition, there is a sixth display - HELP, which gives the user a brief explanation of each of the commands which he has availableto communicate with TRAXDEMO..skip 1      This set of commands allows the user to switch among the different displays and control other program options which are discussed in detail in section 5. A reproduction of each of the displays together with a detailed explanation of the information that is presented in each can be found in section 6..skip 2.lm 36.indent -6NOTE: There is a non privileged version of the TRAXDEMO program calledSMPDEM which does not access any system data structures and can therefore berun in a non-TRAX environment if one just       wishes to get a feeling for what onecan expect to see when running TRAXDEMO..page.skip 1.lm 302. REQUIREMENTS:.SKIP 2The dynamic version of TRAXDEMO runs on a VT52 video terminal..skip 1TRAXDEMO runs on a TRAX system. The task is overlaid and requires 6K words to run in. In addition, if the hardcopy option is desired, a copy of the HRDCPY task image will also be needed. The HRDCPY task is non-privileged andrequires 6K words to operate. The HRDCPY task is initiated by the TRAXDEMO task.At present both tasks       should reside in UIC [300,30]..skip 2IMPLEMENTATION NOTE:.SKIP 1Both the TRAXDEMO and HRDCPY tasks have been built checkpointable. Inter-task synchronization is handled by having each of the two tasks when readyunstop the other task and then stop itself. This approach has worked on the11/70 and does not work on the 11/34..skip 1Currently, BUFFER is 256. bytes in length. If ODT is not used then there is probably enough room to expand the region size to about 1024. bytes. This isdesirable since it will allow       an entire display to be output to the screen atonce, as opposed to the 3 or 4 times the buffer must currently be flushedbefore a display is output..skip 1Currently, the names used in communication between the two tasks are DEMO andHRDCPY. In addition, a region called BUFFER is created which contains thedata being displayed on the screen. It might be a good idea to modify the two tasks so the task names and region name are dependent on the terminal atask is running on.This would allow multiple versions of th      e TRAXDEMO program to run at the sametime..skip 1One other note, with regard to the PRINT option, is that if one does not wishto use this option, one can remove the statement "$$PRI=0" from the TXDEMO modulewhich will cause all PRINT related code not be assembled..skip 1When running TRAXDEMO one should bear in mind that the program utilizes substantialsystem resources to obtain the information it needs to display. In order tominimize this cost, it is recommended that the frequency of display update beabout       once a minute. This should especially be so if the hardcopy option is beingused..skip 2The following files are needed in order to create the TRAXDEMO task image:.skip 1.nf nj.lm 401.  TXDEMO.OBJ2.  MISC.OBJ3.  QUESUM.OBJ4.  MEMSUM.OBJ5.  APPSUM.OBJ6.  DSKSUM.OBJ7.  MSGE.OBJ8.  TST.OBJ9.  TRANS.OBJ10. MEMINI.OBJ11. MEMGET.OBJ12. MEMOUT.OBJ13. HELP.OBJ.skip 114. TXDEMO.CMD15. TXDEMO.ODL.skip 1and if the HRDCPY option is desired you will also need:.skip 116. HRDCPY.OBJ17. HRDCPY.CMD.lm 30.f .j.skip 33. BENEFIT      S OF USING TRAXDEMO.SKIP 2TRAXDEMO is a task designed to allow either an operator or user to view the current state of the TRAX operating system. The SUMMARY display isparticularly useful in providing a global view of what is happening in differentareas of the system and how system resources are being utilized. If trouble is spotted in a certain area the user can switch to one of the more detailed displays to get a better look at what is wrong..skip 2There are a number of specific instances in which TRAXDEM      O can help to locatecertain system lockout problems or bugs in application and/or system-level software..skip 1.lm 40.INDENT -31. Bugs and other situations that cause exhaustion of system dynamic memory (resulting in unexplained system hangs) may be detected and more easily reproducedand diagnosed..skip 1.indent -32. Task checkpointing and swapping may be monitored -- and in systems with limited memory, deadlock conditions may often be more easily diagnosed..skip 1.indent -33. Because TRAXDEMO provides a re      al-time view of the free space on a number ofdisk storage devices, it may be used to monitor situations where online storage is at a premium or where some program is running wild..skip 1.indent -34. Cache usage may be monitored with particular attention being paid to thehit percentage (the percent of the time that the information requested fromthe cache is already there), and the lock percentage (what part of the cachecontains information that can't be removed)..skip 1A low hit percentage and/or high lock p      ercentage may indicate software problems,or the need for allocation of a larger cache..skip 1.indent -35. The various TRAX sampling displays may be used to get a feel for the performance of a newtransaction processing system during its implementation stage when it is still relatively easy to make design corrections that willimprove the overall performance of the transaction processor..skip 3.lm 304. RUNNING TRAXDEMO:.skip 1In order to run TRAXDEMO one should type the DCL command :.skip 1.indent 15RUN/TASK:D      EMO [300,30]TXDEMO.TSK.skip 1TRAXDEMO then prompts you for the name of the application which you wishdisplayed. Once you have entered the application name, the SUMMARY display appears automatically.If you wish to exit TRAXDEMO without entering the application name, a CTRL-Cfollowed by a return is the only way to do so. (CTRL-C is processed by the TRAXDEMO program since the system does not process any terminal input when aterminal is attached).If you wish to enter anycommand, hit the return key and wait till       you receive a prompt. Once you receivethe prompt, which appears on the left margin of the bottom line of the screen,you can enter any of the commands that are described in the following section..skip 1If you have selected the hardcopy option, the file DEMO.LOG will contain youroutput..page5. COMMANDS:.skip 2The TRAXDEMO program allows the user to communicate with it through a series ofcommands. The TRAXDEMO user communicates with the TRAXDEMO task by hitting the return key which temporarily halts the execu      tion of the program and sends thecursor to the bottom of the screen, where the text "COMMAND ?" followed by theprompt (:) tells the user that TRAXDEMO is ready to accept a command..skip 1A list of the commands that are available to the user and a brief explanationof each can be obtained by typing the command : HE.skip 1.lm 36.indent -6NOTE: Only the two letter abbreviation for each command specified below will beunderstood by TRAXDEMO..skip 3.lm 40.nf.njAP   -   Change the application being displayed..brCY         -   Cycles through all the displays..brEX   -   Exit TRAXDEMO program..brFR n -   Alters update frequency of main display..br         (n is approximately number of seconds .br         between updates.).brHE   -   Shows this HELP display..brME   -   Switch to the core/cache memory utili-.br         zation displays..brMS   -   Switch to the MESSAGE display..brNC   -   Cancel cycle option..brNP   -   Turn-off print option..brPR   -   Turn-on print option..brSU   -   Switch back to the SUMMARY display..brTR         -   Switch to TRANSACTION display..brTS   -   Switch to TST display..PAGE.fill.j.LM 30.SKIP 16. EXPLANATION OF OUTPUT:.skip 2The figures appearing in this section have been reproduced from actual runs ofthe TRAXDEMO program (using the PRINT option) with the RTE driving 24 terminalson the 11/70..skip 2.C SUMMARY DISPLAY:.skip 2.NF .NJ;.LM20;.RM 100;                                                                    *******************************************************************************      ***TRA      X DEMO***          UP :01 HRS           14-FEB-79 20:01:36      **      *HRDCPY*    CPU:77%    POOL=498:1190:35    CACHE=18:24:58  31:83      **                                                                            **                        *** SUMMARY DISPLAY ***                             **                                                                            **       PROCESSORS:            TRANS.  RUN:  21         MESSAGES:            **       PRINT:                                                     ACTIVE:   7     **       ACT. PROC:   1         TSTS:                        ON DISK:  25     **       ACT. JOBS:   0              LOADED:   6              MEMORY:  30%    **      WAIT. JOBS:   0              IN USE:   5                              **                                   QUEUED:   0         APP. FILES:          **       BATCH:                      MEMORY:   7%               OPEN:    6    **       ACT. PROC:   1                                        READS:   25    **       AC      T. JOBS:   0         STATIONS:                     WRITES:   25    **      WAIT. JOBS:   0            TERMINAL:  24                HITS:    0    **                                      TST:  35                              **                                 OUT ONLY:   0         FREE BLOCKS:         **       TASKS:                       OTHER:   0                SY0 : (DB0)   **          ACTIVE:  17                                         DB0 : 175302  **          MEMORY:  80K        FORMS:                                DB1 : 85719   **             OUT:   0            IN CACHE:   1 (0)                          **          MEMORY:   0K             MEMORY:   5%                             **                                                                            **                                                                            *******************************************************************************.F .J;.LM 20;.RM 90.SKIP 1.C - FIGURE 1 -.C SUMMARY DISPLAY.SKIP 3.lm 30The top two lin      es of the screen are updated every second and are always displayed independently of which other display the user haschosen.The following information is displayed in the top two lines of the screen as we go across each of the lines:.skip 2.lm 40.indent -10*** TRAX DEMO *** - This is a fixed message which can be replaced by any message that the user wishes to have displayed, such as the name of the installationthat TRAXDEMO is running on..skip 1(NOTE: It may be of interest to modify TRAXDEMO to allow the user       to enter this messageat run time. Currently the only way of changing this message would be to change theascii string in the MACRO program.Another alternative might be to modify TRAXDEMO so that it automatically displayssystem name and system size.).skip 2.indent -10UP   :01 HRS - Tells you how long TRAXDEMO has been running..skip 1(Once the information becomes available this field should be modified to displayhow long the TRAX system has been up.).skip 2.indent -1014-FEB-79  20:01:36 - Displays current dat      e and time..skip 2.indent -10Going now to the second line,.skip 2.indent -10*HRDCPY* - This is the name of the task at the head of the active task list which is scheduled to run right after TRAXDEMO. Note that in a one second intervalmany tasks are swapped in and out of the CPU, so that the information displayedin this field should only be used to get a general feeling as to which tasksare using the CPU the most (task keeps reappearing in the display). The display* IDLE * appears when no task is scheduled t      o run next..skip 2.indent -10CPU: 77% - This number is a measure of CPU utilization and tells you what percentof the time the CPU was in use, as opposed to being idle (waiting for I/Ocompletion,etc.) during the past second..brThe CPU utilization percentage is derived by comparing the number of times theidle loop counter was incremented during the past second against the number oftimes that the idle loop counter would be incremented during a one second intervalin a totally idle system. Note that CPU utilizat      ion in an idle system in which TRAXDEMOis the only active task can run as high as 20-30% (figures are just a guess)..SKIP 1In order for TRAXDEMO to be able to calculate CPU usage percentages the propercalibration value must be entered in the TXDEMO command file as GLOBALDEF $$CPU.Currently the calibration values used (in octal) are 22 for the 11/34 and 70 forthe 11/70. A calibration number of 22 indicates that the idle loop counter isincremented 2**16 * 22 times in one minute. Bryan Doyle has written a rout      ine which will obtain this calibration value on site. He should be contacted in orderthat this value be incorporated into the TXDEMO command file..skip 2.indent -10POOL = 498:1190:35  - Looks at three important measures of dynamic poolutilization, where:.skip 1.lm 52.indent -7498  = the size of the largest free block in the POOL (in words);.skip 1.indent -71190 = the total number of free words in the pool.skip 1.indent -735   = the total number of fragments in the POOL free list..skip 2.lm 40.indent -10CACH      E = 18:24:58  31:83  - Looks at five statistics of cache utilization, where:.skip 1.lm 52.indent -718   = the percentage of the cache that is dead (not being utilized)..skip 1.indent -724   = the percentage of the cache that is unlocked (there is something therebut it can be removed.).skip 1.indent -758   = the percentage of the cache that is locked (can't be removed)..skip 2.indent -731   = the number of calls made to the cache since the last time this part ofthe display was updated..skip 1.indent -783   =       the percentage of these calls which were hits (the information requiredwas already in the cache and did not have to be read in from disk)..lm 40.skip 2The message "NO CALLS" will appear instead of the above two statistics if thecache was not accessed during the past second..skip 3.lm 37.indent -7NOTE:  The percentage of the cache that is locked is calculated by subtractingfrom 100 the percentage of the cache that is dead and the percentage that is unlocked. There is a known bug (see Mike Garry) which resul      ts in inaccurate databeing kept on cache usage, as a consequence of that total cache usage greaterthan 100% to be displayed at times..skip 2.lm 30Before I begin there is one point I would like to make clear. The TRAXDEMO program displays system resource information such as number of disk free blocks,pool statistics, cpu usage statistics, etc.All this TRAX related information is displayed on a per application basis. The"AP" command allows the user to switch among two different applications thatmight be runni      ng concurrently..skip 2The remainder of the display in figure 1 is the SUMMARY display. As wasmentioned earlier the SUMMARY display is the display that you get when the TRAXDEMO program is initiated. Its main purpose is to provide the user with amonitoring capability of several system resource utilization areas..skip 2Let us now take a look at the information displayed in the SUMMARY display..skip 21. PROCESSOR INFORMATION:.skip 1.lm 35For the BATCH and PRINT processors the number of active processors, acti      ve jobsand waiting jobs is displayed. In the case of PRINT processors, the number ofactive processors corresponds to the number of line printers available for use.Waiting jobs are jobs ready to run as soon as a processor becomes available.Waiting jobs do not include jobs submitted with a /AFTER parameter since thesejobs are not ready to run at this time..skip 2.indent -52. TASK INFORMATION:.skip 1The number of active tasks (in core) and how much memory they occupy, and thenumber of tasks which are active an      d swapped out of core and their memoryrequirements is displayed..skip 2.indent -53. TRANSACTION INFORMATION:.skip 1The number of transaction instances that are running is displayed. If forexample you have four users running a CHANGE transaction, and one user isrunning the DELETE transaction, then the number of transactions running is goingto be 5..skip 1The number of running transactions is determined by calculating the number of non-free CCBs. (total CCBs available - CCBs on free list)..skip 2.indent -54.       TST INFORMATION:.skip 1The number of TSTs loaded (occupying an area of the cache), the number of those TSTs loaded which are in use (active), the number of TSTs queued (they are waiting for some cache areato be freed in order to be able to run), and the percentage of the cache that istaken up by the loaded TSTs is displayed..skip 1Note that the number of TSTS loaded includes all TSTS in the LRU list whichtherefore may include TSTs which are no longer in use and which can be removedif cache space is needed b      y someone else..skip 1The number of TSTs queued has been determined by going through each TST SCBand adding together the number of TSTs queued (offset S.LINK) at each station..skip 2.indent -55. STATIONS:.skip 1Number of active terminals, TSTs and output only stations is displayed. Number of all other stations is also displayed (i.e. mailbox, link, etc.)..skip 1Criteria used for determining whether a station is active is whether the ST.NATbit of S.FLG is clear..skip 2.indent -56. FORMS:.skip 1The number of       forms in the LRU list and what percentage of the cache they occupyis displayed.The number of forms in the LRU list which are in use is displayed in parenthesis..skip 2.indent -57. MESSAGES:.skip 1The number of active messages in the LRU list and what percentage of the cache they occupy is displayed.The number of messages on disk is displayed..skip 1In order to obtain the number of messages on disk the following method was used:.skip 1First offset S.SLT of each non-free CCB was looked at to see if it pointed       to the BDB of a message that is on disk. Then offset S.FST of each TST station waslooked at to see if it pointed to the BDB of a message on disk. In addition offset B.LINK in the BDB was followed to access all the BDBS queued to the givenTST station..skip 2.indent -58. FILES:.skip 1I/O to application files is monitored. Information displayed includes the numberof files that are open, and the number of reads, writes, and hits on locked records. The figures displayed for reads, writes, and hits represent the       numberof reads, writes, and hits performed since the last time the SUMMARY display wasshown. They are not cumulative figures..skip 2.indent -59. FREE BLOCKS:.skip 1The first line of this section of the display shows which device the SY: disk isdirected to. The rest of the display lists the number of free blocks of storageavailable on DB, DM, and DR (in that order) devices. There is room in the displayfor data on up to four devices. (One can get up to six devices displayed if youallow the display to go all       the way to the bottom of the screen. Bear in mind though that hitting the return key in order to get the prompt will wipe out thebottom two lines.).PAGE.SKIP 3.C MEMORY USAGE DISPLAY.SKIP 3.NF .NJ;.LM 20;.RM 100;*******************************************************************************      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 19:34:10      **      * IDLE *    CPU:40%    POOL=498:1084:41    CACHE=1:9:90  132:59       **                                                                                  **                      *** CORE UTILIZATION DISPLAY ***                      **                                                                            **      0*******32******64******96******128*****160*****192*****224*****      **           >)))--)<>)) ()(-)>   (---))))()()-))-----)---) >> ) ><>          **           TJNN C  FTT  B C L     C  DDE D T TT   C T     SH D Q B          **           TNTT E  1PS  A O P     O  AMX A I      A       ER E M A          **           :L.. P  1M      T  S B P     M  TRC T M AA   C A     RD M G P          **            DQD O  ALL  L R 0     A  AAA A A AA   A       LC O . 0          **            RIC O  CII  I T       A  AAA A A DA   A 6     OP   .            **            VOP L  PBB  B S       A  AAA A A PP   A 6     GY   .            **      0*******32******64******96******128*****160*****192*****224*****      **                                                                            **      256*****288*****320*****352*****384*****416*****448**      ***480*****      **                                                                            **                                                                            **                                                                            **                                                                            **                                                                            **                                                                            **                                                                                  **      256*****288*****320*****352*****384*****416*****448*****480*****      *******************************************************************************.F .J;.LM 30;.RM 90;.SKIP 3.C - FIGURE 2 -.C CORE USAGE DISPLAY.skip 3The MEMORY display provides the user with a dynamically changing view of COREand CACHE usage. For best results it is recommended that one issue the command"FR 0" before requesting the MEMORY display..skip 1On typing the "ME"       command TXDEMO will ask the user to choose among severaldifferent display options..skip 1First, the user will be asked:.skip 1.INDENT 10CORE OR CACHE DISPLAY <CORE>?.SKIP 1Hitting the return key will display the core display (figure 2) which displaysactive tasks, non-active fixed tasks, loaded common areas, and loaded device drivers..page.nf .nj;.lm 20;.rm 100;*******************************************************************************      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 19:35:0      3      **      * IDLE *    CPU:46%    POOL=498:1460:38    CACHE=11:30:59  11:81      **                                                                            **              *** CACHE (TST & FORMS) UTILIZATION DISPLAY ***                **                                                                            **      0*******4*******8*******12******16******20******24******28******      **           (---)              (========)            [=] ()          (=      **             S                           E                 D   E                  **             E                     O                 S   O                  **             L                     0                 0   0                  **             I                     0                 0   0                  **             N                     3                 1   0                  **             P                     T                 T   T                  **      0*******4*******8*******12******16******20*******24******28      *****      **                                                                            **      32******36******40******44******48******52******56******60******      **      =)          <========>        (===)          (====)                   **      S                E              C               D                     **      I                O              I               I                     **      V                0              V               0                     **      R                0                    R               0                     **      F                3              F               1                     **      Y                T              Y               T                     **      32******36******40******44******48******52******56******60******      *******************************************************************************.skip 3.c- FIGURE 3 _.cCACHE USAGE DISPLAY.skip 3.f .j;.lm 30;.rm 90;If the cache display is desired (figure 3), then the user should type "CA"      in response to the previous question. If the CACHE display is chosen the nextquestion will be:.skip 1.indent 10INCLUDE FORMS YES OR NO <NO>?.SKIP 1If you answer no (or hit return), only TSTs will be displayed. If you answeryes then the cache display will show both TSTs and FORMS..skip 1TSTS and FORMS displayed include all TSTS and FORMS that appear in the LRUlist (up to a maximum of 48 TSTS and FORMS is displayed)..skip 1The final question asked is:.indent 10.SKIP 1FULL OR LOWER HALF OF MEMORY DISPLAY (F/H)       <F>?.SKIP 1This question gives the user the option of seeing all CORE/CACHE memory, or justlooking at the lower half of memory. The main advantage of only looking at half of of memory is that since TXDEMO only has to display half of memory the areadisplayed can be shown twice as large as would otherwise be possible. Figure 2looks only at the lower half of core (a 640K words system). If the full optionhad been chosen in figure 2 then the entire display would have appeared on the left halfof the top of the d      isplay. Figure 2 indicates that perhaps one more magnificationfactor might be useful on the CORE display. Bottom half of display is still not used.y the HALF optionFor the CACHE display the HALF optionis not really needed since there are not as many objects appearing in the cacheat once and also since the entire cache is normally used, it is desirable to beable to look at the whole cache area..skip 2The arrow heads and arrow body used indicate information about the object beingdisplayed..skip 1For the core       display, there are three types of arrow heads used:.skip 1.nf .nj.lm 40(------)     =     COMMON PARTITION<------>     =     ACTIVE TASK[------]     =     NOT ACTIVE TASK.indent -10and two types of bodies:<======>     =     FIXED TASK<------>     =     DYNAMICALLY ALLOCATED TASK.f .j.lm 30For the CACHE display, the arrowhead indicates whether we are looking at aTST or a FORM, where:.nf .nj;.lm 40<------>     =     A TST(------)     =     A FORM.f .j;.lm 30and the body of the arrow indicates whether the FORM       or TST is active or not,where:.nf .nj;.lm 40<======>     =     A NON-ACTIVE TST<------>     =     AN ACTIVE TST.f .j;.lm 30One final remark is that the scale used is in K words..PAGE.SKIP 3.C MESSAGE DISPLAY.SKIP 3.NF .NJ;.LM 20;.RM 100;*******************************************************************************      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:45      **      * IDLE *    CPU:30%    POOL=498:896:37     CACHE=13:16:71  12:25      **                                                                                  **                          *** MESSAGE DISPLAY ***                           **  TRANS.    SOURCE     STAT                        TIME    #  RTES          **   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   **                                                                            **  ENTORD    TERM13    EO003T    SLOT    NACT     19:59:00     1       192   **  CHNCST    TERM11    CIVRFY    SLOT    NACT     20:01:42     2        42         **  RCVSTK    TERM27    RS001T    SLOT    NACT     20:01:15     1        14   **  ENTORD    TERM05    EO003T    SLOT    NACT     19:57:38     0       192   **  ENTORD    TERM29    EO001T    SLOT    NACT     20:01:23     0       192   **  ENTORD    TERM28    EO003T    SLOT    NACT     19:59:11     1       192   **  ENTORD    TERM31    EO002T    SLOT    NACT     20:01:35     0       192   **  ENTORD    TERM04    EO003T    SLOT    NACT     19:59:04     1       192   **                                                                                  **                                                                            **                                                                            **                                                                            **                                                                            **                                                                            **                                                                                  **                                                                            **                                                                            *******************************************************************************.J .F;.LM 20;.RM 100;.SKIP 3.C - FIGURE 4 -.C MESSAGE DISPLAY.PAGE.SKIP 3.C TST DISPLAY.SKIP 3.NJ .NF;.LM 20;.RM 100;*******************************************************************************      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:15            **      * IDLE *    CPU:45%    POOL=498:1084:33    CACHE=20:24:56  14:71      **                                                                            **                            *** TST DISPLAY ***                             **   STAT               QUEUED     MESGS     TST     TIMES     TIMES    I/O   **   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   **                                                                            **  EO002T       2         0               0       116      305       110       0   **  EO003T       2         0        11       162      138        16       0   **  RS001T       1         0         0        76       49        15       0   **                                                                            **                                                                            **                                                                            **                                                                                  **                                                                            **                                                                            **                                                                            **                                                                            **                                                                            **                                                                            **                                                                                  **                                                                            **                                                                            **                                                                            *******************************************************************************.C- FIGURE 5 -.C TST DISPLAY.PAGE.SKIP 3.C TRANSACTION DISPLAY.SKIP 3.NF .NJ;.LM 20;.RM 100;*****************************************************      **************************      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:58      **      * IDLE *    CPU:55%    POOL=404:708:38     CACHE=12:8:80  14:57       **                                                                            **                          *** TRANSACTION DISPLAY ***                       **     TRAN        NUMBER      TIMES       TERM        SEQUENCE      ACTIVE   **     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    **                                                                                  **    CHNCST         1            29      011V62           431        NO      **    DPYSTK         2            93      003V62           433        YES     **                                        005V62           434        YES     **    ENTORD        20           774      006V62           403        NO      **                                        009V62           432        YES     **                                        013V62                 393        NO      **                                        008V62           423        YES     **                                        012V62           402        NO      **                                        015V62           415        NO      **                                        032V62           420        NO      **                                        029V62           426        YES     **                                        001V62           409        NO      **           ô                                  016V62           430        NO      **                                        014V62           400        NO      **                                        002V62           411        NO      **                                                                            **                                                                            *******************************************************************************.C- FIGURE 6 -.C TRANSACTION DISPLAYô         /È[Á› 8$        




 
 
                                                   T R A X   D E M O
 
 
                                                U S E R ' S   G U I D E
 
 
                                         B Y   A B R A H A M   L E D E R M A N
 
 
 
                                                    1. INTRODUCTION:
 
 
                              TRAXDEMO is a  privileged  task  that  displays  information
                              about  what  is  going  on  in  a  TRAX system.  The d      isplay
                              usually runs continuously on a video  terminal  with  cursor
                              control  such as the VT52 video terminal.  It can optionally
                              be run from a hardcopy terminal (not fully implemented yet),
                              in  which  case  all  the information that would normally be
                              displayed on the video screen is instead written  out  to  a
                              file.
 
                                    TRAXDEMO  has  been designed to be useful to both the system
                              operator/programmer as a system debugging aid,  and  to  the
                              application  user  who  is just interested in seeing what is
                              going on in his TRAX system.
 
                              The TRAXDEMO task  is  capable  of  showing  five  different
                              displays, these are :
 
                                                   1.  SUMMARY DISPLAY
                                             2.  MESSAGE DISPLAY
                                             3.  TST DISPLAY
                                             4.  TRANSACTION DISPLAY
                                             5.  CORE/CACHE USAGE DISPLAY
 
 
                              The  TRAXDEMO display consists of two parts.  The first part
                              of the display (top two lines of the screen) containing  the
                                    date, time, cpu usage, pool and cache stats is updated every
                              second.  The second part of the display is one of the  above
                              listed  displays.  It is updated at user specified intervals
                              (default = every 10 seconds).
 
 
                              In addition, there is a sixth display -  HELP,  which  gives
                              the  user  a brief explanation of each of the commands whic      h
                              he has available to communicate with TRAXDEMO.
 
                              This set of commands allows the user  to  switch  among  the
                              different  displays  and control other program options which
                              are discussed in detail in section  5.   A  reproduction  of
                              each of the displays together with a detailed explanation of
                              the information that is presen      ted in each can  be  found  in
                              section 6.

                                                                                              Page 2



                              NOTE:   There  is  a  non privileged version of the TRAXDEMO
                                    program called SMPDEM which does not access any system
                                    data structures and can therefore be run in a non-TRAX
                                    environment if       one just wishes to get  a  feeling  for
                                    what one can expect to see when running TRAXDEMO.

                                                                                              Page 3



 
                              2.  REQUIREMENTS:
 
 
                              The  dynamic  version  of  TRAXDEMO  runs  on  a  VT52 video
                              terminal.
 
                              TRAXDEMO runs on a TRAX system.  The task  is  ov      erlaid  and
                              requires  6K  words  to run in. In addition, if the hardcopy
                              option is desired, a copy of the HRDCPY task image will also
                              be  needed.   The HRDCPY task is non-privileged and requires
                              6K words to operate.  The HRDCPY task is  initiated  by  the
                              TRAXDEMO  task.   At present both tasks should reside in UIC
                              [300,30].      
 
 
                              IMPLEMENTATION NOTE:
 
                              Both  the  TRAXDEMO  and  HRDCPY  tasks  have   been   built
                              checkpointable.   Inter-task  synchronization  is handled by
                              having each of the two tasks when  ready  unstop  the  other
                              task  and then stop itself.  This approach has worked on the
                              11/70 and does not work on the 11/34.
 
                                    Currently, BUFFER is 256.  bytes in length.  If ODT  is  not
                              used then there is probably enough room to expand the region
                              size to about 1024.  bytes.  This is desirable since it will
                              allow  an entire display to be output to the screen at once,
                              as opposed to the 3 or 4 times the buffer must currently  be
                              flushed before a display is out      put.
 
                              Currently,  the  names used in communication between the two
                              tasks are DEMO and HRDCPY.  In  addition,  a  region  called
                              BUFFER is created which contains the data being displayed on
                              the screen.  It might be a good idea to modify the two tasks
                              so  the  task  names  and  region  name are dependent on the
                              terminal a ta      sk is running on.  This  would  allow  multiple
                              versions of the TRAXDEMO program to run at the same time.
 
                              One  other note, with regard to the PRINT option, is that if
                              one does not wish to use this option,  one  can  remove  the
                              statement  "$$PRI=0" from the TXDEMO module which will cause
                              all PRINT related code not be assembled.
 
                                    When running TRAXDEMO one  should  bear  in  mind  that  the
                              program  utilizes substantial system resources to obtain the
                              information it needs to display.  In order to minimize  this
                              cost, it is recommended that the frequency of display update
                              be about once a minute.  This should especially be so if the
                              hardcopy option is being used.
 
 
                                    The  following  files  are  needed  in  order  to create the
                              TRAXDEMO task image:
 
                                        1.  TXDEMO.OBJ
                                        2.  MISC.OBJ
                                        3.  QUESUM.OBJ

                                                                                              Page 4



                                        4.  MEMSUM.OBJ
                                              5.  APPSUM.OBJ
                                        6.  DSKSUM.OBJ
                                        7.  MSGE.OBJ
                                        8.  TST.OBJ
                                        9.  TRANS.OBJ
                                        10. MEMINI.OBJ
                                        11. MEMGET.OBJ
                                        12. MEMOUT.OBJ
                                        13. HELP.OBJ
 
                                        14. TXDEM      O.CMD
                                        15. TXDEMO.ODL
 
                                        and if the HRDCPY option is desired you will also
                                        need:
 
                                        16. HRDCPY.OBJ
                                        17. HRDCPY.CMD
 
 
 
                              3.  BENEFITS OF USING TRAXDEMO
 
 
                              TRAXDEMO  is  a task designed to allow either an operator or
                                    user to view the current state of the TRAX operating system.
                              The  SUMMARY  display  is particularly useful in providing a
                              global view of what is happening in different areas  of  the
                              system  and  how  system  resources  are being utilized.  If
                              trouble is spotted in a certain area the user can switch  to
                              one  of  the  more detailed displays to get a       better look at
                              what is wrong.
 
 
                              There are a number of specific instances in  which  TRAXDEMO
                              can  help  to locate certain system lockout problems or bugs
                              in application and/or system-level software.
 
                                     1.  Bugs and other situations that  cause  exhaustion
                                        of system dynamic memory (resulting in unexplaine      d
                                        system hangs) may  be  detected  and  more  easily
                                        reproduced and diagnosed.
 
                                     2.   Task checkpointing and swapping may be monitored
                                        -- and in systems with  limited  memory,  deadlock
                                        conditions may often be more easily diagnosed.
 
                                     3.  Because TRAXDEMO provides a rea      l-time view of the
                                        free space on a number of disk storage devices, it
                                        may  be  used  to  monitor situations where online
                                        storage is at a premium or where some  program  is
                                        running wild.
 
                                     4.   Cache  usage  may  be  monitored with particular
                                        attention being paid to th      e  hit  percentage  (the
                                        percent of the time that the information requested
                                        from the cache is already  there),  and  the  lock

                                                                                              Page 5



                                        percentage   (what  part  of  the  cache  contains
                                        information that can't be removed).
 
                                              A low hit percentage and/or high  lock  percentage
                                        may  indicate  software  problems, or the need for
                                        allocation of a larger cache.
 
                                     5.  The various TRAX sampling displays may be used to
                                        get   a   feel   for  the  performance  of  a  new
                                        transaction   processing   system    during    it      s
                                        implementation  stage  when it is still relatively
                                        easy to make design corrections that will  improve
                                        the   overall   performance   of  the  transaction
                                        processor.
 
 
 
                              4.  RUNNING TRAXDEMO:
 
                              In order to run TRAXDEMO one should type the DCL command :
 
                                                   RUN/TASK:DEMO [300,30]TXDEMO.TSK
 
                              TRAXDEMO then prompts you for the name  of  the  application
                              which  you  wish  displayed.   Once  you  have  entered  the
                              application name, the SUMMARY display appears automatically.
                              If   you   wish   to  exit  TRAXDEMO  without  entering  the
                              application name, a CTRL-C followed by a return is the        only
                              way  to  do so. (CTRL-C is processed by the TRAXDEMO program
                              since the system does not process any terminal input when  a
                              terminal  is  attached).   If you wish to enter any command,
                              hit the return key and wait till you receive a prompt.  Once
                              you  receive the prompt, which appears on the left margin of
                              the bottom line       of the screen, you  can  enter  any  of  the
                              commands that are described in the following section.
 
                              If  you have selected the hardcopy option, the file DEMO.LOG
                              will contain your output.

                                                                                              Page 6



                              5.  COMMANDS:
 
 
                              The TRAXDEMO program allows the user       to communicate with  it
                              through   a   series   of   commands.    The  TRAXDEMO  user
                              communicates with the TRAXDEMO task by  hitting  the  return
                              key which temporarily halts the execution of the program and
                              sends the cursor to the bottom of the screen, where the text
                              "COMMAND  ?"  followed by the prompt (:) tells the user that
                                    TRAXDEMO is ready to accept a command.
 
                              A list of the commands that are available to the user and  a
                              brief  explanation  of  each  can  be obtained by typing the
                              command :  HE
 
                              NOTE:  Only the two letter  abbreviation  for  each  command
                                    specified below will be understood by TRAXDEMO.
 
 
 
                                        AP   -         Change the application being displayed.
                                        CY   -   Cycles through all the displays.
                                        EX   -   Exit TRAXDEMO program.
                                        FR n -   Alters update frequency of main display.
                                                 (n is approximately number of seconds
                                                 between updates.)
                                        HE   -   Shows this HELP d      isplay.
                                        ME   -   Switch to the core/cache memory utili-
                                                 zation displays.
                                        MS   -   Switch to the MESSAGE display.
                                        NC   -   Cancel cycle option.
                                        NP   -   Turn-off print option.
                                        PR   -   Turn-on print option.
                                        SU   -   S      witch back to the SUMMARY display.
                                        TR   -   Switch to TRANSACTION display.
                                        TS   -   Switch to TST display.

                                                                                              Page 7



 
                              6.  EXPLANATION OF OUTPUT:
 
 
                              The  figures  appearing in this section have been reproduced
                              from actual runs of th      e TRAXDEMO program  (using  the  PRINT
                              option) with the RTE driving 24 terminals on the 11/70.
 
 
                                                    SUMMARY DISPLAY:
 
 
                     
                     
                    ******************************************************************************
                    *      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:36      *
                    *      *HRDCPY*    CPU:77%    POOL=49      8:1190:35    CACHE=18:24:58  31:83      *
                    *                                                                            *
                    *                        *** SUMMARY DISPLAY ***                             *
                    *                                                                            *
                    *       PROCESSORS:            TRANS.  RUN:  21         MESSAGES:            *
                    *       PRINT:                                                     ACTIVE:   7     *
                    *       ACT. PROC:   1         TSTS:                        ON DISK:  25     *
                    *       ACT. JOBS:   0              LOADED:   6              MEMORY:  30%    *
                    *      WAIT. JOBS:   0              IN USE:   5                              *
                    *                                   QUEUED:   0         APP. FILES:          *
                    *       BATCH:                      MEMORY:   7%                     OPEN:    6    *
                    *       ACT. PROC:   1                                        READS:   25    *
                    *       ACT. JOBS:   0         STATIONS:                     WRITES:   25    *
                    *      WAIT. JOBS:   0            TERMINAL:  24                HITS:    0    *
                    *                                      TST:  35                              *
                    *                                 OUT ONLY:   0         FREE BLOCKS:               *
                    *       TASKS:                       OTHER:   0                SY0 : (DB0)   *
                    *          ACTIVE:  17                                         DB0 : 175302  *
                    *          MEMORY:  80K        FORMS:                          DB1 : 85719   *
                    *             OUT:   0            IN CACHE:   1 (0)                          *
                    *          MEMORY:   0K             MEMORY:   5%                             *
                          *                                                                            *
                    *                                                                            *
                    ******************************************************************************
 
                                                 - FIGURE 1 -
                                               SUMMARY DISPLAY
 
 
 
                              The top two lines of the screen are updated ever      y second and
                              are always displayed independently of  which  other  display
                              the user has chosen.  The following information is displayed
                              in the top two lines of the screen as we go across  each  of
                              the lines:
 
 
                              ***  TRAX  DEMO  ***  - This is a fixed message which can be
                                        replaced by any message that the  user  wi      shes  to
                                        have   displayed,   such   as   the  name  of  the
                                        installation that TRAXDEMO is running on.

                                                                                              Page 8



                                        (NOTE:  It may be of interest to  modify  TRAXDEMO
                                        to  allow  the  user  to enter this message at run
                                              time.  Currently the only  way  of  changing  this
                                        message would be to change the ascii string in the
                                        MACRO program.  Another alternative  might  be  to
                                        modify  TRAXDEMO so that it automatically displays
                                        system name and system size.)
 
 
                              UP :01 HRS - Tells you how long TRAXDEMO has been running.
 
                                              (Once the information becomes available this field
                                        should  be  modified  to display how long the TRAX
                                        system has been up.)
 
 
                              14-FEB-79 20:01:36 - Displays current date and time.
 
 
                              Going now to the second line,
 
 
                              *HRDCPY* - This is the name of the task at the head  of  the
                                              active  task  list which is scheduled to run right
                                        after  TRAXDEMO.   Note  that  in  a  one   second
                                        interval  many tasks are swapped in and out of the
                                        CPU, so that the  information  displayed  in  this
                                        field should only be used to get a general feeling
                                        as to which tasks are using t      he CPU the most (task
                                        keeps  reappearing in the display).  The display *
                                        IDLE * appears when no task is  scheduled  to  run
                                        next.
 
 
                              CPU:   77% - This number is a measure of CPU utilization and
                                        tells you what percent of the time the CPU was  in
                                        use,  as  opposed  to  being       idle (waiting for I/O
                                        completion,etc.) during the past second.
                                        The  CPU  utilization  percentage  is  derived  by
                                        comparing  the  number  of  times  the  idle  loop
                                        counter was incremented  during  the  past  second
                                        against  the  number  of  times that the idle loop
                                              counter would be incremented during a  one  second
                                        interval  in a totally idle system.  Note that CPU
                                        utilization in an idle system in which TRAXDEMO is
                                        the  only  active  task  can run as high as 20-30%
                                        (figures are just a guess).
 
                                        In order for TRAXDEMO to be able to calculate  CPU
                                              usage  percentages  the  proper  calibration value
                                        must be entered in  the  TXDEMO  command  file  as
                                        GLOBALDEF $$CPU.  Currently the calibration values
                                        used (in octal) are 22 for the 11/34  and  70  for
                                        the  11/70.   A calibration number of 22 indicates
                                        that the idle loop counter is       incremented 2**16  *
                                        22 times in one minute.  Bryan Doyle has written a
                                        routine which will obtain this  calibration  value
                                        on  site.   He  should  be contacted in order that

                                                                                              Page 9



                                        this value be incorporated into the TXDEMO command
                                              file.
 
 
                              POOL  =  498:1190:35  - Looks at three important measures of
                                        dynamic pool utilization, where:
 
                                             498 = the size of the largest free  block  in
                                                    the POOL (in words);
 
                                             1190  = the total number of free words in the
                                                          pool
 
                                             35 = the total number  of  fragments  in  the
                                                    POOL free list.
 
 
                              CACHE  =  18:24:58 31:83 - Looks at five statistics of cache
                                        utilization, where:
 
                                             18 = the percentage of the cache that is dead
                                                    (not being utilized).
       
                                             24  =  the  percentage  of  the cache that is
                                                    unlocked (there is something there but
                                                    it can be removed.)
 
                                             58  =  the  percentage  of  the cache that is
                                                    locked (can't be removed).
 
 
                                             31 = the number of calls ma      de  to  the  cache
                                                    since  the  last time this part of the
                                                    display was updated.
 
                                             83 = the percentage of these calls which were
                                                    hits  (the  information  required  was
                                                    already in the cache and did not  have
                                                          to be read in from disk).
 
 
                                        The  message "NO CALLS" will appear instead of the
                                        above two statistics if the cache was not accessed
                                        during the past second.
 
 
 
                              NOTE:   The  percentage  of  the  cache  that  is  locked is
                                     calculated by subtracting from 100 the percentage  of
                                           the  cache  that  is  dead and the percentage that is
                                     unlocked.  There is a  known  bug  (see  Mike  Garry)
                                     which  results in inaccurate data being kept on cache
                                     usage, as a consequence of  that  total  cache  usage
                                     greater than 100% to be displayed at times.
 
 
                              Before  I  begin  there  is  one  point I would like to ma      ke
                              clear.   The  TRAXDEMO  program  displays  system   resource

                                                                                             Page 10



                              information  such  as  number  of  disk  free  blocks,  pool
                              statistics,  cpu  usage  statistics,  etc.   All  this  TRAX
                              related information is displayed on a per application basis.
                                    The "AP"  command  allows  the  user  to  switch  among  two
                              different applications that might be running concurrently.
 
 
                              The  remainder  of  the  display  in figure 1 is the SUMMARY
                              display.  As was mentioned earlier the  SUMMARY  display  is
                              the  display  that  you  get  when  the  TRAXDEMO program is
                              initiated.  Its main purpose is to provide the       user  with  a
                              monitoring capability of several system resource utilization
                              areas.
 
 
                              Let us now take a look at the information displayed  in  the
                              SUMMARY display.
 
 
                              1.  PROCESSOR INFORMATION:
 
                                   For the BATCH and PRINT processors the number of active
                                   processors, active jobs and       waiting jobs is  displayed.
                                   In  the  case of PRINT processors, the number of active
                                   processors corresponds to the number of  line  printers
                                   available  for use.  Waiting jobs are jobs ready to run
                                   as soon as a processor becomes available.  Waiting jobs
                                   do  not  include jobs submitted with a /AFTER parameter
                                         since these jobs are not ready to run at this time.
 
 
                              2.  TASK INFORMATION:
 
                                   The number of active  tasks  (in  core)  and  how  much
                                   memory  they  occupy, and the number of tasks which are
                                   active  and  swapped  out  of  core  and  their  memory
                                   requirements is displayed.
 
 
                              3.  TRANS      ACTION INFORMATION:
 
                                   The number of transaction instances that are running is
                                   displayed.  If for example you have four users  running
                                   a  CHANGE  transaction,  and  one  user  is running the
                                   DELETE transaction, then  the  number  of  transactions
                                   running is going to be 5.
 
                                   The  number  of  run      ning  transactions is determined by
                                   calculating the number of non-free CCBs.   (total  CCBs
                                   available - CCBs on free list).
 
 
                              4.  TST INFORMATION:
 
                                   The  number  of  TSTs  loaded (occupying an area of the
                                   cache), the number of those TSTs loaded  which  are  in
                                   use  (active),  the  number  of  TS      Ts  queued (they are
                                   waiting for some cache area to be freed in order to  be

                                                                                             Page 11



                                   able  to  run), and the percentage of the cache that is
                                   taken up by the loaded TSTs is displayed.
 
                                   Note that the number of TSTS loaded includes  all  TSTS
                                         in  the LRU list which therefore may include TSTs which
                                   are no longer in use and which can be removed if  cache
                                   space is needed by someone else.
 
                                   The  number of TSTs queued has been determined by going
                                   through each TST SCB and adding together the number  of
                                   TSTs queued (offset S.LINK) at each station.
 
 
                                    5.  STATIONS:
 
                                   Number  of  active  terminals,  TSTs  and  output  only
                                   stations is displayed.  Number of all other stations is
                                   also displayed (i.e.  mailbox, link, etc.).
 
                                   Criteria  used  for  determining  whether  a station is
                                   active is whether the ST.NAT bit of S.FLG is clear.
 
 
                                    6.  FORMS:
 
                                   The number of forms in the LRU list and what percentage
                                   of  the  cache they occupy is displayed.  The number of
                                   forms in the LRU list which are in use is displayed  in
                                   parenthesis.
 
 
                              7.  MESSAGES:
 
                                   The  number of active messages in the LRU list and what
                                         percentage of the cache they occupy is displayed.   The
                                   number of messages on disk is displayed.
 
                                   In  order  to obtain the number of messages on disk the
                                   following method was used:
 
                                   First offset S.SLT of each non-free CCB was  looked  at
                                   to see if it pointed to the BDB of a message that is on
                                         disk.  Then offset S.FST of each TST station was looked
                                   at  to  see  if  it  pointed to the BDB of a message on
                                   disk.   In  addition  offset  B.LINK  in  the  BDB  was
                                   followed to access all the BDBS queued to the given TST
                                   station.
 
 
                              8.  FILES:
 
                                   I/O to application  files        is  monitored.   Information
                                   displayed  includes  the number of files that are open,
                                   and the number of reads, writes,  and  hits  on  locked
                                   records.   The figures displayed for reads, writes, and
                                   hits represent the number of reads,  writes,  and  hits
                                   performed  since  the last time the SUMMARY display was
                                         shown.  They are not cumulative figures.

                                                                                             Page 12



                              9.  FREE BLOCKS:
 
                                   The first line of this section  of  the  display  shows
                                   which  device  the SY: disk is directed to. The rest of
                                   the display lists the number of free blocks of  storage
                                         available  on  DB,  DM, and DR (in that order) devices.
                                   There is room in the display for data  on  up  to  four
                                   devices.   (One  can get up to six devices displayed if
                                   you allow the display to go all the way to  the  bottom
                                   of  the  screen.   Bear in mind though that hitting the
                                   return key in order to get the pro      mpt will wipe out the
                                   bottom two lines.)

                                                                                             Page 13



 
 
 
                                                    MEMORY USAGE DISPLAY
 
 
 
                     
                    ******************************************************************************
                    *      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 19:34:10      *
                          *      * IDLE *    CPU:40%    POOL=498:1084:41    CACHE=1:9:90  132:59       *
                    *                                                                            *
                    *                      *** CORE UTILIZATION DISPLAY ***                      *
                    *                                                                            *
                    *      0*******32******64******96******128*****160*****192*****224*****      *
                          *           >)))--)<>)) ()(-)>   (---))))()()-))-----)---) >> ) ><>          *
                    *           TJNN C  FTT  B C L     C  DDE D T TT   C T     SH D Q B          *
                    *           TNTT E  1PS  A O P     O  AMX A I      A       ER E M A          *
                    *           :L.. P  1MT  S B P     M  TRC T M AA   C A     RD M G P          *
                    *            DQD O  ALL  L R 0     A  AAA A A AA   A       LC O . 0          *
                    *                  RIC O  CII  I T       A  AAA A A DA   A 6     OP   .            *
                    *            VOP L  PBB  B S       A  AAA A A PP   A 6     GY   .            *
                    *      0*******32******64******96******128*****160*****192*****224*****      *
                    *                                                                            *
                    *      256*****288*****320*****352*****384*****416*****448*****480*****      *
                    *                                                                                  *
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                    *                                                                                  *
                    *                                                                            *
                    *      256*****288*****320*****352*****384*****416*****448*****480*****      *
                    ******************************************************************************
 
 
 
                                                      - FIGURE 2 -
                                                   CORE USAGE DISPLAY
 
 
 
                                    The MEMORY display provides  the  user  with  a  dynamically
                              changing  view of CORE and CACHE usage.  For best results it
                              is recommended that one issue  the  command  "FR  0"  before
                              requesting the MEMORY display.
 
                              On  typing  the  "ME"  command  TXDEMO  will ask the user to
                              choose among several different display options.
 
                                    First, the user will be asked:
 
                                        CORE OR CACHE DISPLAY <CORE>?
 
                              Hitting the return key will display the core display (figure
                              2)  which  displays  active  tasks,  non-active fixed tasks,
                              loaded common areas, and loaded device drivers.

                                                                                             Page 14



                           
                    ******************************************************************************
                    *      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 19:35:03      *
                    *      * IDLE *    CPU:46%    POOL=498:1460:38    CACHE=11:30:59  11:81      *
                    *                                                                            *
                    *              *** CACHE (TST  FORMS) UTILIZATION DISPLAY ***                      *
                    *                                                                            *
                    *      0*******4*******8*******12******16******20******24******28******      *
                    *           (---)              (========)            [=] ()          (=      *
                    *             S                     E                 D   E                  *
                    *             E                     O                 S   O                  *
                          *             L                     0                 0   0                  *
                    *             I                     0                 0   0                  *
                    *             N                     3                 1   0                  *
                    *             P                     T                 T   T                  *
                    *      0*******4*******8*******12******16******20*******24******28*****      *
                          *                                                                            *
                    *      32******36******40******44******48******52******56******60******      *
                    *      =)          <========>        (===)          (====)                   *
                    *      S                E              C               D                     *
                    *      I                O              I               I                     *
                    *      V                      0              V               0                     *
                    *      R                0              R               0                     *
                    *      F                3              F               1                     *
                    *      Y                T              Y               T                     *
                    *      32******36******40******44******48******52******56******60******      *
                    ************************      ******************************************************
 
 
 
                                                      - FIGURE 3  
                                                  CACHE USAGE DISPLAY
 
 
 
                              If  the  cache  display is desired (figure 3), then the user
                              should type "CA" in response to the previous  question.   If
                              the CACHE display is chosen the next question will be:
 
                                              INCLUDE FORMS YES OR NO <NO>?
 
                              If  you  answer  no  (or  hit  return),  only  TSTs  will be
                              displayed.  If you answer yes then the  cache  display  will
                              show both TSTs and FORMS.
 
                              TSTS  and  FORMS  displayed  include all TSTS and FORMS that
                              appear in the LRU list (up to a maximum of 48 TSTS and FORMS
                              is dis      played).
 
                              The final question asked is:
 
                              FULL OR LOWER HALF OF MEMORY DISPLAY (F/H) <F>?
 
                              This  question  gives  the  user  the  option  of seeing all
                              CORE/CACHE memory, or just looking  at  the  lower  half  of
                              memory.   The  main  advantage of only looking at half of of
                              memory is that since TXDEMO only  has  to  displ      ay  half  of
                              memory  the  area  displayed  can be shown twice as large as

                                                                                             Page 15



                              would otherwise be possible.  Figure 2  looks  only  at  the
                              lower  half  of  core  (a  640K  words system).  If the full
                              option had been chosen in figure 2 then the  entire  display
                                    would  have  appeared  on  the  left  half of the top of the
                              display.   Figure  2  indicates  that   perhaps   one   more
                              magnification  factor  might  be useful on the CORE display.
                              Bottom half of display is still not used.y the  HALF  option
                              For  the  CACHE display the HALF option is not really needed
                              since there are not as many objects appea      ring in  the  cache
                              at once and also since the entire cache is normally used, it
                              is desirable to be able to look at the whole cache area.
 
 
                              The arrow heads and arrow  body  used  indicate  information
                              about the object being displayed.
 
                              For  the  core display, there are three types of arrow heads
                              used:
 
                                              (------)     =     COMMON PARTITION
                                         
                                        <------>     =     ACTIVE TASK
                                         
                                        [------]     =     NOT ACTIVE TASK
                                         
                                         
                              and two types of bodies:
                                         
                                              <======>     =     FIXED TASK
                                         
                                        <------>     =     DYNAMICALLY ALLOCATED TASK
                                         
                              For  the  CACHE  display, the arrowhead indicates whether we
                              are looking at a TST or a FORM, where:
                                         
                                        <------>     =     A TST
                                               
                                        (------)     =     A FORM
                                         
                              and  the body of the arrow indicates whether the FORM or TST
                              is active or not, where:
                                         
                                        <======>     =     A NON-ACTIVE TST
                                         
                                        <------>     =     AN ACTIVE TST
                                               
                              One final remark is that the scale used is in K words.

                                                                                             Page 16



 
 
 
                                                    MESSAGE DISPLAY
 
 
 
                     
                    ******************************************************************************
                    *      ***TRAX DEMO***          UP :01 HRS                 14-FEB-79 20:01:45      *
                    *      * IDLE *    CPU:30%    POOL=498:896:37     CACHE=13:16:71  12:25      *
                    *                                                                            *
                    *                          *** MESSAGE DISPLAY ***                           *
                    *  TRANS.    SOURCE     STAT                        TIME       RTES          *
                    *   NAME    STATION     NAME     TYPE   STATUS     QUE      UED    TO GO    SIZE   *
                    *                                                                            *
                    *  ENTORD    TERM13    EO003T    SLOT    NACT     19:59:00     1       192   *
                    *  CHNCST    TERM11    CIVRFY    SLOT    NACT     20:01:42     2        42   *
                    *  RCVSTK    TERM27    RS001T    SLOT    NACT     20:01:15     1        14   *
                    *  ENTORD    TERM05    EO003T    SLOT    NACT     19:57:38     0             192   *
                    *  ENTORD    TERM29    EO001T    SLOT    NACT     20:01:23     0       192   *
                    *  ENTORD    TERM28    EO003T    SLOT    NACT     19:59:11     1       192   *
                    *  ENTORD    TERM31    EO002T    SLOT    NACT     20:01:35     0       192   *
                    *  ENTORD    TERM04    EO003T    SLOT    NACT     19:59:04     1       192   *
                    *                                                                            *      
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                          *                                                                            *
                    *                                                                            *
                    *                                                                            *
                    ******************************************************************************
 
 
 
                                                      - FIGURE 4 -
                                                          MESSAGE DISPLAY

                                                                                             Page 17



 
 
 
                                                      TST DISPLAY
 
 
 
                     
                    ******************************************************************************
                    *      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:15      *
                    *      * IDLE *    CPU:45%    POOL=498:1084:33          CACHE=20:24:56  14:71      *
                    *                                                                            *
                    *                            *** TST DISPLAY ***                             *
                    *   STAT               QUEUED     MESGS     TST     TIMES     TIMES    I/O   *
                    *   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
                    *                                                                                  *
                    *  EO002T       2         0         0       116      305       110       0   *
                    *  EO003T       2         0        11       162      138        16       0   *
                    *  RS001T       1         0         0        76       49        15       0   *
                    *                                                                            *
                    *                                                                                  *
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                          *                                                                            *
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                    *                                                                            *
                          *                                                                            *
                    *                                                                            *
                    ******************************************************************************
                                                      - FIGURE 5 -
                                                      TST DISPLAY

                                                                                                   Page 18



 
 
 
                                                  TRANSACTION DISPLAY
 
 
 
                     
                    ******************************************************************************
                    *      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:58      *
                    *      * IDLE *    CPU:55%    POOL=404:708:38     CACHE=12:8:80  14:57       *
                    *                                                                                  *
                    *                          *** TRANSACTION DISPLAY ***                       *
                    *     TRAN        NUMBER      TIMES       TERM        SEQUENCE      ACTIVE   *
                    *     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
                    *                                                                            *
                    *    CHNCST         1            29      011V62           431        NO            *
                    *    DPYSTK         2            93      003V62           433        YES     *
                    *                                        005V62           434        YES     *
                    *    ENTORD        20           774      006V62           403        NO      *
                    *                                        009V62           432        YES     *
                    *                                        013V62           393        NO      *
                          *                                        008V62           423        YES     *
                    *                                        012V62           402        NO      *
                    *                                        015V62           415        NO      *
                    *                                        032V62           420        NO      *
                    *                                        029V62           426        YES     *
                          *                                        001V62           409        NO      *
                    *                                        016V62           430        NO      *
                    *                                        014V62           400        NO      *
                    *                                        002V62           411        NO      *
                    *                                                                            *
                    *             L                                                                    *
                    ******************************************************************************
                                                      - FIGURE 6 -
                                                  TRANSACTION DISPLAY
                     
L         Ä€W!kQÁ› 8$        	.TITLE	DEMO PROGRAM FOR TRAX (ROOT MODULE)	.SBTTL	MCALLS - DIRECTIVE DPBS	.NLIST	BEX;****************************************;;	ASSEMBLY CONTROL VARIABLES;;****************************************	$$PRI=0;**************************************************;;	M A C R O   C A L L S;;**************************************************	.MCALL	ALUN$,CLEF$,CRAW$,CRRG$,DIR$	.MCALL	GTIM$,MRKT$,RCVD$,SDAT$	.MCALL	SPWN$,STOP$,STSE$,USTP$	.MCALL	ASTX$S,ENB$S,EXIT$S,INH$S,SWITCH$	.MCALL	QIOW$,QIOW$C,QIO$C	.MCALL	ASRDF$,      HDRDF$,PCBDF$,RDBBK$,WDBBK$;**************************************************;;	D I R E C T I V E   D P B   B L O C K S;;**************************************************ALUN:	ALUN$	1,TI,0		;ASSIGN LOGICAL UNIT NUMBER TO TERMINALCLEAR:	CLEF$	6		;CLEAR EVENT FLAGGETIME:	GTIM$	TIMBUF		;GET TIMEMRKTIM:	MRKT$	2,1,2		;MARK TIME (ONE SECOND)STOP:	STSE$	2		;STOP AND WAIT FOR EVENT FLAG;*******************************************************************;;	D I R E C T I V E S   F O R   H A R D C O P Y   O P T I O       N;;*******************************************************************	.IF  DF	$$PRIWINDOW:	CRAW$	WDB		;CREATE A WINDOW AND ATTACH TO ITREGION:	CRRG$	RDB		;CREATE A SHARED DATA REGIONSEND:	SDAT$	HRDCPY,DAT+4	;SEND DATASPAWN:	SPWN$	HRDCPY,,,300,30	;SPAWN HARDCOPY TASKSPAWN2:	SPWN$	...INS,,,300,30,4,,,CMDLIN,CMDLEN  ;SPAWN HARDCOPY TASKSTOP1:	STOP$			;STOP OURSELVESUSTOP:	USTP$	HRDCPY		;UNSTOP THE HARDCOPY TASKWAIT:	MRKT$	,1,1		;WAIT ONE TICK	.ENDC;**************************; CURSOR CONTROL CHARACTERS;*******      *******************	ESC=33			;ESCAPE CHARACTER	CD=131			;CURSOR DISPLAY	ES=112			;ERASE TO END OF SCREEN	EL=113			;ERASE TO THE END OF THE LINE	HO=110			;HOME CURSOR;***********************************;;	O U T P U T   D P B S;;***********************************OUTPUT:: QIOW$ 	IO.WAL,1,12,0,STATUS,,<0,0,0>	DSFUN=OUTPUT+Q.IOFN	;ADDRESS OF FUNCTION CODE	BUFPTR==OUTPUT+Q.IOPL	;ADDRESS OF OUTPUT BUFFER	BUFCTR==OUTPUT+Q.IOPL+2	;ADDRESS OF BYTES IN BUFFER	IOATA:	QIOW$	IO.ATA,1,1,,,,<CMDAST>	;ATTACH TERMINALIOCLR:      	QIOW$	IO.WAL,1,1,,,,<CLRSCR,6> ;CLEAR SCREEN	.PAGE	;*******************************************	;		.SBTTL	DATA AREA	;	;*******************************************CLRSCR:	.ASCII	<ESC><HO><0><ESC><ES><0> ;SEND CURSOR HOME AND CLEAR SCREENTIT1:	.ASCII 	<ESC><CD><31.+1.><0><31.+7.>/***TRAX DEMO***/<1>	.EVENSTATUS: .BLKW	2CMDFLG:	.WORD	0DSPFLG:	.WORD	0	;COUNT DOWN TO UPDATE MAIN DISPLAYUPD.FR:	.WORD	12DS.TYP:	.WORD	1	;KEEPS TRACK OF CURRENT DISPLAYPRT.OK:: .WORD	0CYCLE::	.WORD	0		;FLAG TO INDICATE THAT WE WANT       TO CYCLE THROUGH				;ALL DISPLAYSOF.RD::	.WORD	0OF.WRT::.WORD	0OF.HIT::.WORD	0;; DISPLAY BUFFER :;	.IF  NDF  $$PRIBUFF::	.BLKW	200	.ENDC;************************; DEFINE SYMBOLIC OFFSETS;************************	ASRDF$	HDRDF$	PCBDF$	.PAGE	;***************************************	;		.SBTTL	ONE TIME ONLY CODE	;	;***************************************;*******************; CREATE REGION CODE;*******************	.IF  DF  $$PRIRDB:	RDBBK$	4,BUFFER,,<RS.ATT!RS.RED!RS.WRT>WDB:	WDBBK$	1,,,0,,<WS.64B!WS.MAP!WS.RED!W      S.WRT>DEMO:	DIR$	#REGION,DIRERR		;CREATE A REGION FOR CHARACTER BUFFER	CLR	WDB+W.NLEN		;CLEAR WINDOW LENGTH	MOV	RDB+R.GSIZ,WDB+W.NSIZ	;GET REGION SIZE INTO WINDOW DESCRIPTOR	MOV	RDB+R.GID,WDB+W.NRID	;MOVE THE REGION ID INTO WINDOW BUFFER	DIR$	#WINDOW,DIRERR		;CREATE ADDRESS WINDOW	MOV	#20000,BUFPTR		;POINT TO REGION WHERE BUFFER HAS JUST					;BEEN CREATED	.IFFDEMO:		MOV	#BUFF,BUFPTR		;POINT TO BUFFER	.ENDC;; ATTACH TERMINAL, CLEAR SCREEN & FIND PARTITION NAME;	DIR$ 	#ALUN,DIRERR		;ASSIGN LOGICAL UNIT NUMBER       TO TERMINAL	DIR$	#IOATA,DIRERR		;ATTACH TERMINAL	DIR$	#IOCLR,DIRERR		;CLEAR THE SCREEN	CALL	PARNME			;GET PARTITION NAME	CALL	QUEINI			;INITIALIZE QUEUE STUFF	BR	LOOP	.PAGE	;***************************************	;		.SBTTL	SPAWN PRINT TASK	;	;***************************************	.IF  DF  $$PRICMDLIN:	.ASCII	#INS [300,30]HRDCPY/RUN=REM/TASK=HRDCPY#<15>	.EVENCMDLEN=.-CMDLINPRTFLG:	.WORD	0		;KEEPS TRACK OF USER PRINT OPTION				;(IF PRTFLG=1 THEN HARDCOPY)PRINT:	TST	PRTFLG	BNE	10$	DIR$	#SPAWN		;SPAWN THE H      ARDCOPY TASK	CMP	$DSW,#IS.SUC	;WERE WE SUCCESSFUL	BEQ	5$		;YES - BRANCH	DIR$	#SPAWN2,DIRERR	;NO - TASK MUST NOT BE INSTALLED SO 				;INSTALL IT	DIR$	#STOP1,DIRERR	;WAIT FOR ACKNOWLEDGEMENT5$:	DIR$	#SEND		;PASS HARDCOPY DEMO TASK NAME	CMP	$DSW,#IS.SUC	BNE	5$	CALL	UNSTOP		;UNSTOP THE HARDCOPY ROUTINE	DIR$	#STOP1,DIRERR	;WAIT FOR HARDCOPY TO FINISH	MOV	#1,PRTFLG	;SET FLAG TO INDICATE THAT HARDCOPY TASK 				;HAS BEEN INITIALIZED10$:	RETURN	.ENDC;; **- UNSTP - ROUTINE UNSTOPS THE HARDCOPY TASK:;UNSTOP:20$:	DIR$	      #USTOP		;UNSTOP HARDCOPY	CMP	$DSW,#IE.ITS	;IS HARDCOPY STOPPED?	BNE	25$		;IF NE - NO	DIR$	#WAIT,DIRERR	;WAIT ONE TICK BEFORE TRYING AGAIN	BR	20$25$:	RETURN	.PAGE	;*********************************	;		.SBTTL	MAIN LOOP	;	;*********************************	.ENABL	LSBLOOP:	CALL	SCRTOP		;UPDATE TOP TWO LINES OF DISPLAY	TST	DSPFLG		;DO WE WANT ONE OF THE SPECIAL DISPLAYS	BNE	35$		;IF NE NO	CMP	#1,DS.TYP	;WHICH DISPLAY DO WE WANT	BNE	10$		;IF NE THEN ITS NOT SUMMARY DISPLAY	CALL	QUESUM		;OUTPUT QUEUE MANAGER SECTI      ON OF SUMMARY DISPLAY	CALL	MEMSUM		;OUTPUT MEMORY USAGE SECTION OF SUMMARY DISPLAY	CALL	APPSUM		;OUTPUT APPLICATION SECTION OF SUMMARY DISPLAY	CALL	DSKSUM		;OUTPUT DISK FREE SPACE SECTION OF SUMMARY DISPLAY	BR	30$10$:	CMP	#2,DS.TYP	;DO WE WANT THE MESSAGE DISPLAY	BNE	11$	CALL	MSGE		;OUTPUT THE MESSAGE DISPLAY	BR	30$11$:	CMP	#3,DS.TYP	;DO WE WANT THE TST DISPLAY	BNE 	12$	CALL	TSTDSP		;OUTPUT THE TST DISPLAY	BR	30$12$:	CMP	#4,DS.TYP	;DO WE WANT THE TRANSACTION DISPLAY?	BNE	13$	CALL	TRANS	BR	30$13$:	CMP	#5,DS.      TYP	;DO WE WANT THE MEMORY DISPLAY?	BNE	30$	TST	CYCLE		;IF IN CYCLING MODE WANT TO INITIALIZE				;MEMORY DISPLAY	BEQ	14$	CALL	MEMINI14$:	CALL	MEM		;OUTPUT THE MEMORY DISPLAY30$:	TST	DSPFLG		;DID WE JUST UPDATE SPECIAL DISPLAY	BNE	35$		;IF NE -NO	MOV	#1,PRT.OK	;SET UP FLAG SO THAT OUTBUF CAN SIGNAL				;TO HARDCOPY	TST	CYCLE		;ARE WE CYCLING THROUGH THE DIFFERENT DISPLAYS	BEQ	35$		;IF EQ - NO	INC	DS.TYP		;GO TO NEXT DISPLAY	CMP	DS.TYP,#6	;DID WE DO LAST DISPLAY?	BNE	35$	MOV	#1,DS.TYP	;GO BACK TO FIRST DISPLAY      35$:	CALL	OUTBUF		;OUTPUT REMAINDER OF BUFFER	TST	CMDFLG		;HAS USER REQUESTED A COMMAND	BEQ	40$		;IF EQ NO	CLR	CMDFLG		;RESET THE COMMAND FLAG	CALL	CMDS		;GO PROCESS COMMAND40$:	DEC	DSPFLG		;CONTINUE COUNTDOWN FOR NEXT DISPLAY UPDATE	BGE	45$	MOV	UPD.FR,DSPFLG	;START COUNTDOWN FOR NEXT DISPLAY UPDATE45$:	DIR$	#STOP,DIRERR	;WAIT AND STOP FOR ONE SECOND TO BE UP	JMP	LOOP		.DSABL	LSB	.PAGE;; **- SCRTOP-ROUTINE THAT RUNS THROUGH THE ONE SECOND DYNAMICALLY UPDATED SECTION;            OF DISPLAY.;SCRTOP:	DIR$	#MRK      TIM,DIRERR		;WAIT ONE SECOND BEFORE RESTARTING THIS ROUTINE	MOV	#TIT1,R3	;DISPLAY FIXED PART OF HEADER		CALL	OUTLIN	CALL	DSTIM		;DISPLAY CURRENT TIME	CALL	UPTIME		;DISPLAY HOW LONG DEMO IS BEEN RUNNING	CALL	NXTTSK		;DISPLAY NAME OF NEXT TASK	CALL	CPUCNT		;DISPLAY CPU USAGE PERCENTAGE	CALL	POOLIN		;DISPLAY POOL INFORMATION	CALL	CACHE		;DISPLAY CACHE INFORMATION	RETURN	.PAGE	;***********************************************************************	;		.SBTTL	OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY	;	      ;***********************************************************************MSG:	.ASCII	/APPLICATION NAME?/<1>	.EVENMSG1:	.ASCII	/APPLICATION NOT FOUND! APPLICATION NAME?/<1>	.EVENPARADR:	.WORD	0PARNME:	MOV	#1,R0		;SPECIFY THAT WE WANT A REPLY	MOV	#MSG,R1		;POINT TO MESSAGE	CALL	COMMUN		;SEND MESSAGE TO USER5$:	INH$S			;INHIBIT CONTEXT SWITCHING; GET ADDRESS OF PARTITION HEAD	SWITCH$	6$		;GO INTO KERNEL MODE	MOV	$PARHD,PARADR	;SAVE ADDRESS	RETURN;; THIS SECTION LOOKS THROUGH EACH PARTITION DESCRIPTION BLOCK.; A      NY PARTITION WITH STARTING 3 LETTERS  "TPn", WHERE n RANGES; FROM 1 TO 8, IS THEN EXAMINED TO SEE IF IT IS THE PARTITION; WE WANT.;6$:	SWITCH$	9$		;GO INTO KERNEL MODE7$:	MOV	PARADR,R4	;PARADR	ALWAYS POINTS TO THE NEXT PARTITION TO				;BE LOOKED AT	SUB	#P.LNK,R4	;POINT TO THE TOP OF DESCRIPTOR BLOCK	MOV	P.LNK(R4),PARADR  ;SAVE ADDRESS OF PARTITION TO BE LOOKED AT 				  ;NEXT IF NECESSARY	MOV	P.REL(R4),COM.AD  ;SAVE ADDRESS OF COMMON AREA IN CASE THIS IS				  ;THE RIGHT PARTITION	CMP	P.NAM(R4),#^RTP1  ;IS TH      IS THE RIGHT TYPE OF PARTITION	BLT	71$		;NO!	CMP	P.NAM(R4),#^RTP8	BLE	8$		;YES : TP1 <= P.NAM(R4) <= TP871$:	TST	PARADR		;HAVE WE LOOKED AT THE LAST PARTITION?	BNE	7$		;IF NE-NO, LETS LOOK AT THE NEXT PARTITION	MOV	#-1,PARADR	;INDICATE THAT WE CAN'T FIND ANY MORE PARTITIONS8$:	RETURN			;FINISHED WITH KERNEL MODE9$:	TST	PARADR		;DID WE EXIT BECAUSE OF ERROR?	BLT	25$		;IF NEGATIVE - YES; LETS LOOK AT COMMON AREA FOR THS PARTITION TO SEE IF ITS THE RIGHT ONE.	MOV	#77406,UISDR3	MOV	COM.AD,UISAR3	;MAP INTO EXTEN      DED MEMORY	CMP	RECBUF,60000	;IS THIS THE PARTITION WE WANT?	BNE	6$	CMP	RECBUF+2,60002	BNE	6$	CMP	RECBUF+4,60004	BNE	6$; FOUND PARTITION WANTED!	MOV	60000+$BASE,CADR  ;STORE BASE ADDRESS OF THE CACHE FOR LATER USE	MOV	60000+$SIZE,CSIZE ;STORE CACHE SIZE FOR LATER USE25$:	ENB$S			;ENABLE CONTEXT SWITCHING	TST	PARADR		;DID WE LEAVE BECAUSE OF ERROR?	BGE	30$		;IF GE - NO;; PARTITION TO MATCH APPLICATION NAME NOT FOUND.; SEND ERROR MESSAGE TO USER.;	MOV	#1,R0		;WANT REPLY	MOV	#MSG1,R1	;POINT TO MESSAGE	CALL	COMM      UN	BR	5$30$:	RETURN			;AND WE ARE FINISHED	.PAGE	;****************************************************	;		.SBTTL	BATCH/PRINT QUEUES INITIALIZATIONS	;	;****************************************************	.MCALL	FDBDF$,FDOP$A,FDRC$A,FDBK$A,FSRSZ$	.MCALL	FINIT$	QFLUN	=3;; QUEUE FILE FDB :;QFDB:: 	FDBDF$			;ALLOCATE FILE DESCRIPTOR BLOCK	FDRC$A	FD.RWM		;INDICATE THAT BLOCK I/O OPERATIONS ARE				;TO BE PERFORMED	FDBK$A	,512.		;ALLOCATE BUFFER SPACE	FDOP$A	QFLUN,,,FO.RD!FA.SHR 	FSRSZ$	0;; EXECUTIVE MACRO CALLS;	      .MCALL	RSUM$,RCST$,USTP$;; DIRECTIVE DPBS;RSUM:	RSUM$	QMG...		;DPB TO RESUME QUEUE MANAGERSDAT:	SDAT$	QMG...,SNDBUF	;DPB TO SEND REQUEST TO QUEUE MANAGERRCVD:	RCVD$	QMG...,RCVBUF	;DPB TO RECEIVE DATA BACK FROM QUEUE MANAGERUSTP:	USTP$	QMG...		;DPB TO UNSTOP QUEUE MANAGERSNDBUF:	.BYTE	26,0		;REQUEST PACKET FOR QMG...				;F.C. = 26 = GET QUEUE FILE INFORMATIONRCVBUF:	.BLKW	15.		;RECEIVE BUFFER FROM QMG...RCVDT==RCVBUF+4QUE.ST:: .WORD	2		;INDICATES STATUS OF QUEUE MANAGER				; 0=RUNNING				; 1=STOPPED DURING D      EMO EXECUTION				; 2=STOPPED BEFORE DEMO STARTED;; CHECK THAT QUEUE MANAGER IS ACTIVE.; ASK QUEUE MANAGER WHERE QUEUE FILE IS.;QUEINI::	DIR$	#RSUM		;RESUME QUEUE MANAGER	CMP	$DSW,#IE.ITS	;WE SHOULD GET TASK NOT SUSPENDED	BNE	10$			TST	QUE.ST		;IF QUE.ST=0 THEN QUEUE MANAGER ALREADY RUNNING.				;DO NOTHING.	BEQ	20$	DIR$	#SDAT,DIRERR	;SEND DATA TO QUEUE MANAGER	DIR$	#USTP,DIRERR	;UNSTOP QUEUE MANAGER5$:	DIR$	#RCVD		;RECEIVE DATA OR STOP	CMP	$DSW,#IE.ITS	;DATA RECEIVED?	BEQ	5$		;IF NOT - TRY AGAIN	CMP	#1,QUE.S      T	;IF EQ=1 FILE SYSTEM INITIALIZED PREVIOUSLY	BEQ	6$		;AND THERE IS NO NEED TO DO IT AGAIN	FINIT$			;INITIALIZE FILE SYSTEM6$:	CLR	QUE.ST		;INDICATE THAT QUEUE MANAGER IS ACTIVE	BR	20$;; QUEUE MANAGER NOT ACTIVE;10$:	CMP	$DSW,#IE.ACT	;IS QUEUE MANAGER ACTIVE?	BEQ	15$		;IF EQ - NO	CALL	DIRERR		;PROCESS IT AS A DIRECTIVE ERROR15$:	CMP	#2,QUE.ST	;WAS QUEUE MANAGER ACTIVE BEFORE?	BEQ	20$		;IF EQ-NO	MOV	#1,QUE.ST	;INDICATE THAT QUEUE MANAGER HAS STOPPED DURING				;PROGRAM EXECUTION20$:	RETURN	.PAGE	;************      *****************************	;		.SBTTL	DISPLAY DATE AND TIME	;	;*****************************************;; **-DSTIM-DISPLAY CURRENT TIME OF DAY;TIMBUF:	.BLKW	10TIMLOC:	.ASCIZ	<ESC><CD><31.+1.><0><31.+53.>TIMMSG:	.BLKW	23		;TIME AND DATE DISPLAYDSTIM:	INH$S			;INHIBIT CONTEXT SWITCHING	DIR$	#GETIME,DIRERR	;GET TIME PARAMETERS	SWITCH$	10$		;SWITCH TO SYSTEM STATE	MOV	$TCPU0,NEWCP0	;READ VALUE OF IDLE LOOP COUNTER	MOV	$TCPU1,NEWCP1	RETURN10$:	ENB$S			;ENABLE CONTEXT SWITCHING AGAIN	MOV	TIMBUF+G.TISC,NEWSEC ;      GET THE SECOND COUNT THIS TIME	MOV	#TIMMSG,R0	;CONVERSION BUFFER	MOV	R0,R3		;SAVE ITS ADDR	MOV	#TIMBUF,R1	;TIME PARAMETERS	CALL	$DAT		;CONVERT DATE	MOVB	#' ,(R0)+	;INSERT A SPACE	MOV	#3,R2		;CONVERT ASCII OF	CALL	$TIM		;HOURS, MINS, AND SEC	MOVB	#1,(R0)		;INSERT LINE TERMINATOR	MOV	#TIMLOC,R3	;POINT TO OUTPUT STRING	CALL	OUTLIN		;OUTPUT CURRENT TIME	RETURN	.PAGE	;********************************************************	;		.SBTTL	DISPLAY TOTAL UPTIME FOR TRAX DEMO	;	;*****************************************      ***************;; ADD UP THE SECONDS TO 360 THEN UPDATE THE 10TH HOUR COUNTER.; WHENEVER THAT OVERFLOWS UPDATE THE HOUR COUNTER AND DISPLAY; THE LINE.;;; NEW ALGORITHM FOR SECOND UPDATES -- IT LOOKS AT THE SECOND COUNT; THIS TIME AND COMPARES WITH THE SECOND COUNT LAST TIME, ADJUSTING; FOR PASSING GO (60 SECONDS).  THIS DIFFERENCE IS HOW MUCH TIME HAS; PASSED.  THIS MAKES THE UPTIME ALGORITHM SELF-CORRECTING AS LONG; AS RMDEMO'S MARK-TIME TAKES LESS THEN 60 SECS TO COMPLETE (E.G.; PRESSING COPY ON A VT52 WI      TH COPIER) YET PEOPLE PLAYING WITH THE; TIME COMMAND CANNOT AFFECT THE UPTIME COUNT BY MORE THAN A MINUTE; EVERY TIME THEY PLAY (SO THEY SHOULD'T BOTHER).;*************************************************************************;;	WHEN THE INFORMATION BECOMES AVAILABLE A MODIFICATION THAT SHOULD;	BE MADE TO THIS SECTION IS TOO REPLACE TOTAL UPTIME OF TRAX DEMO ;	WITH TOTAL UPTIME FOR THE SYSTEM.;;*************************************************************************SEC:	.WORD	-60.		;SECONDS COUNT DOWN FO      R TENTHS OF HOUROLDSEC:	.WORD	0		;SECONDS OF MINUTES LAST TIME THRUNEWSEC:	.WORD   0		;SECONDS OF MINUTES THIS TIME THRUMIN:	.WORD	0		;TENTHS OF HOUR ACCUMULATORHOURS:	.WORD	0		;HOURSUPTIM:	.ASCII	<ESC><CD><31.+1><0><31.+32.>/UP /UPNUM:	.BLKB	10.		;LEAVE ROOM FOR HOURS AND TENTHSHRM:	.ASCII	/ HRS/<1>	;THE END OF MESSAGE	.EVENUPTIME:	MOV	NEWSEC,R1	;PICK UP THIS TIMES SECONDS	CMP	R1,OLDSEC	;HAS THE SECOND HAND PASSED THE 12	BGE	5$		;IF GE NO;; THE SKINNY HAND HAS PASSED THE 12, ADJUST IT;	ADD	#60.,R15$:	SUB	O      LDSEC,R1	;HOW LONG HAS IT BEEN	MOV	NEWSEC,OLDSEC	;SAVE THIS  FOR LAST	ADD	R1,SEC		;COUNT DOWN	BMI	10$		;IF NOT TO ZERO YET					SUB	#60.,SEC	;RESET THE TIMER FOR 1 MINUTE			INC	MIN		;ADD ANOTHER MINUTE	CMP	#60.,MIN	;UP THERE YET	BNE	10$		;IF NE NO	INC	HOURS		;ONE MORE HOUR	CLR	MIN		;NO TENTHS10$:	MOV	#UPNUM,R0	;THIS IS WHERE WE CONVERT INTO	MOV	HOURS,R1	;DO THE HOURS	BEQ	15$		;NO HOURS, SKIP IT	CLR	R2		;WATCH OUT FOR LEADING ZEROS	CALL	$CBDMG15$:	MOVB	#':,(R0)+	;INSERT THE COLON	MOV	MIN,R1		;GET THE NUMBER O      F MINUTES	CMP	#10.,MIN	;CHECK IF YOU ARE GOING TO HAVE A LEADING ZERO	BLE	20$		;NOT GOING TO HAVE LEADING ZERO	MOVB	#'0,(R0)+	;INSERT THE LEADING ZERO20$:	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG	CLRB	(R0)		;TERMINATE STRING	MOV	#UPTIM,R3	;SEND OUT STRING	CALL	OUTLIN	RETURN			;						.PAGE	;*********************************************************	;		.SBTTL	DISPLAY NAME OF NEXT RUNNABLE TASK	;	;*********************************************************TSKLOC:	.ASCII	<ESC><CD><31.+2.><0><31.+7.>"*"TSKNAM:	      .ASCII	/      */<1>EXETSK:	.BLKW	2LSTTSK:	.ASCII	/XXXX/		;INITIALIZE TO SOMETHINGNXTTSK:	.ENABL	LSB								 											MOV	#EXETSK,R5	;POINT TO NEXT RUNNABLE TASK BUFFER	SWITCH$	110$		;SWITCH TO SYSTEM STATE	MOV	$RQSCH,R0	;IS THERE A RESCHEDULE REQUEST?	BNE	40$		;IF NE YES	MOV	$TKTCB,R0	;ELSE, GET OUR OWN TCB ADDRESS40$:	TST	T.ACTL(R0)	;IS THIS THE NULL TASK?					BEQ	65$		;IF EQ YES						CMP	R0,$TKTCB	;ARE WE LOOKING AT OURSELVES?				BEQ	60$		;IF EQ YES -- IGNORE IT				 										 											TST	T.STAT(R0)	      ;IS THE TASK BLOCKED?	BNE	60$		;IF NE YES	TST	T.ASTL(R0)	;IS AN AST QUEUED FOR THE TASK?	BEQ	50$		;IF EQ NO	BIT	#T2.AST!T2.DST,T.ST2(R0)  ;IN AST OR AST'S DISABLED?	BEQ	80$		;IF EQ NO					50$:	BIT	#T2.STP!T2.SPN,T.ST2(R0)  ;IS TASK STOPPED OR SUSPENDED?		BNE	60$		;IF NE YES	BIT	#T2.WFR,T.ST2(R0)  ;IS TASK IN WAITFOR STATE?	BEQ	80$		;IF EQ NO						MOV	T.PCB(R0),R4	;GET TASK'S PCB ADDRESS					MOV	P.HDR(R4),R4	;GET TASK'S HEADER ADDRESS	BIT	H.EFLM(R4),@H.EFLM+2(R4)  ;IS THE WAITFOR SATISFIED?	BNE	80$		;IF NE Y      ES					60$:	MOV	T.ACTL(R0),R0	;GET TCB ADDRESS OF NEXT TASK IN ATL			BR	40$		;SEE IF IT IS NEXT TO EXECUTE65$:	CLR	(R5)+		;STORE BLANKS AS CURRENT TASK NAME			CLR	(R5)		;						;	BR	100$		; 										 										80$:	MOV	T.NAM(R0),(R5)+	;STORE TASK NAME	MOV	T.NAM+2(R0),(R5)+  ; 										 										100$:	RETURN																			110$:	MOV	#LSTTSK,R4	;POINT TO LAST RUNNABLE TASK NAME	MOV	#EXETSK,R5	;AND TO THIS TASK NAME	CMP	(R5)+,(R4)+	;IS IT THE SAME TASK?	BNE	120$		;IF NE NO	CMP	(R5),(R4)	;	BEQ	130$		;IF EQ       YES 										 										120$:	MOV	#LSTTSK,R4	;POINT TO STORAGE AREA	MOV	#EXETSK,R5		MOV	(R5),(R4)	;SAVE NAME OF DISPLAYED TASK	MOV	2(R5),2(R4)	;	TST	(R5)		;IS IT THE NULL TASK?	BNE	125$		;IF NE NO	TST	2(R5)	BNE	125$		;IF NE NO	MOV	#" I,TSKNAM	;DISPLAY  "* IDLE *"	MOV	#"DL,TSKNAM+2	MOV	#"E ,TSKNAM+4	BR	130$		; 										125$:	MOV	#TSKNAM,R0	;GET CONVERSION BUFFER ADDRESS	MOV	(R5)+,R1	;GET FIRST HALF OF TASK NAME 											CALL	$C5TA		;CONVERT TO ASCII AND STORE	MOV	(R5)+,R1	;GET LAST HALF	CALL	$C5TA		;CON      VERT AND STORE 										 										130$:	MOV	#TSKLOC,R3	;POINT TO OUTPUT PACKET	CALL	OUTLIN 	RETURN	.DSABL	LSB								 											.PAGE	;*******************************************	;		.SBTTL	DISPLAY CPU USAGE COUNT	;	;*******************************************CPULOC:	.ASCII	<ESC><CD><31.+2.><0><31.+19.>CPUMSG:	.ASCII	/CPU:        /	.EVENTICKMN:	.WORD	0	;NUMBER OF TICKS IN A MINUTEOTICKS:	.WORD	0	;LAST TICK VALUETICKS:	.WORD	0	;TICK DIFFERENCE SINCE LAST TIMELPSTCK:	.WORD	0	;LOOPS PER TICKOLDCP0:	.WORD	0OL      DCP1:	.WORD	0NEWCP0:	.WORD	0NEWCP1:	.WORD	0CPUCNT:;; CALCULATE NUMBER OF TICKS PER MINUTE:;	MOV	TIMBUF+G.TICP,R0  ;GET TICK FREQUENCY (PER MINUTE)	MUL	#60.,R0		;AND MULTIPLY BY 60 SEC/MIN	MOV	R1,TICKMN	;SAVE VALUE;; CALCULATE NUMBER OF TIMES IDLE LOOP COUNTER ; IS INCREMENTED IN ONE TICK.;	MOV	#$$CPU,R0	;$$CPU CONTAINS NUMBER OF TIMES IDLE	CLR	R1		;COUNTER OVERFLOWS/MINUTE	DIV	TICKMN,R0	;DOUBLE PRECISION R0,R1 WHEN DIVIDED BY				;TICKS/MINUTE CONVERTS TO NUMBER OF TIMES				;IDLE LOOP IS INCREMENTED IN ONE S      ECOND.	MOV	R0,LPSTCK	;STORE VALUE;; CALCULATE TICKS ELAPSED SINCE BEGINNING OF MINUTE;	MOV	TIMBUF+G.TISC,R1  ;GET CURRENT SECOND	MUL	TIMBUF+G.TICP,R1  ;MULTIPLY BY NUMBER OF TICKS/SEC.	ADD	TIMBUF+G.TICT,R1  ;AND ADD TICKS SINCE LAST MINUTE	MOV	R1,R0		;MAKE A COPY	SUB	OTICKS,R0	;GET TIME ELAPSED (IN TICKS) SINCE				;LAST TIME	BGT	5$		;IF GT- THEN HAVEN'T PASSED MINUTE	ADD	TICKMN,R0	;ADD # OF TICKS IN MINUTE TO GET POSITIVE				;NUMBER5$:	MOV	R1,OTICKS	;CAN NOW SAVE CURRENT TICK VALUE FOR NEXT TIME	MOV	R0,TICK      S	;ALSO SAVE TICKS SINCE LAST TIME;; CALCULATE CHANGE IN IDLE LOOP COUNTER VALUE;	MOV	NEWCP0,R1	;GET LOW ORDER PART OF COUNTER	MOV	NEWCP1,R0	;AND MIDDLE BITS OF COUNTER	SUB	OLDCP0,R1	;CALCULATE TIMES THROUGH LOOP	SBC	R0	SUB	OLDCP1,R0	MOV	NEWCP0,OLDCP0	;SAVE VALUES FOR NEXT TIME	MOV	NEWCP1,OLDCP1;; CALCULATE CPU UTILIZATION PERCENTAGE;	DIV	TICKS,R0	;DIVIDE TOTAL TICKS SINCE LAST TIME INTO				;TIMES THROUGH IDLE LOOP.	CLR	R1	MUL	#100.,R0	;MULTIPLY BY 100. SINCE WE WANT A PERCENTAGE	DIV	LPSTCK,R0	;NOW DIVIDE B      Y 100% IDLE VALUE TO GET IDLE %	MOV	#100.,R1	;100 - IDLE % = CPU UTILIZATION PERCENTAGE	SUB	R0,R1;; OUTPUT RESULT:;	CMP	R1,#100.	;IF CPU >100% THEN SOMETHING WRONG SO SHOW 0	BGT	9$		;(FIRST TIME THROUGH THIS ROUTINE)	TST	R1	BGE	10$9$:	CLR	R110$:	MOV	#CPUMSG+4,R0	;POINT TO DISPLAY AREA	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG		;CONVERT TO DECIMAL	MOVB	#'%,(R0)+	;INSERT PERCENTAGE SIGN	MOVB	#' ,(R0)+	MOVB	#' ,(R0)+	MOVB	#1,(R0)		;AND FIELD TERMINATOR	MOV	#CPULOC,R3	;POSITION POINTER	CALL	OUTLIN		;DISPLAY       CPU COUNT	RETURN	.PAGE	;********************************************	;		.SBTTL	DISPLAY POOL INFORMATION	;	;********************************************;; **-DISPLAY THE DECIMAL NUMBER OF WORDS IN THE;	LARGEST POOL BLOCK, THE DECIMAL NUMBER OF;	FREE WORDS IN POOL, AND THE NUMBER OF;	FREE BLOCKS IN POOL;POOL:	.BLKW	3		;RAW DATA ON POOL STATISTICSMAXBS:	.WORD	0		;MAX CONTIGUOUS BLOCKS IN POOLTOTALS:	.WORD	0		;TOTAL FREE WORDS IN POOLFRAGS:	.WORD	0		;NUMBER OF POOL FRAGMENTSPOOLOC:	.ASCII	<ESC><CD><31.+2><0><31      .+30.> ;POSITION CURSORPOOLMG:	.ASCII	/POOL=                  /  ;POOL STATISTICSPOOLIN:	MOV	#POOL,R1	;POINT TO POOL RAW DATA BUFFER	CLR	(R1)+		;CLEAR NUMBER OF FRAGMENTS	CLR	(R1)+		;CLEAR TOTAL POOL	CLR	(R1)		;CLEAR MAXIMUM PIECE	SWITCH$	32$		;SWITCH TO SYSTEM STATE	MOV	#$CRAVL,R4	;GET ADDRESS OF POOL LISTHEAD	BR	31$		;BRANCH INTO LOOP20$:	CMP	(R1),2(R4)	;IS MAX > THIS BLOCK?	BHIS	30$		;IF HIS YES	MOV	2(R4),(R1)	;NO, SET NEW MAX30$:	ADD	2(R4),-(R1)	;ADD THIS SPACE TO TOTAL	INC	-(R1)		;INCREMENT NUMBER OF P      OOL FRAGMENTS	CMP	(R1)+,(R1)+	;POINT R1 TO END OF RAW DATA BUFFER31$:	MOV	(R4),R4		;GET ADDR OF NEXT BLOCK	BNE	20$		;IF NE MORE TO EXAMINE	RETURN			;ELSE, RETURN TO TASK STATE32$:	MOV	#POOLMG+5,R0	;POINT INTO POOL DISPLAY BUFFER				MOV	#POOL+4,R4	;POINT INTO RAW DATA BUFFER	MOV	(R4),MAXBS	;STORE NEW MAXIMUM BLOCK VALUE	MOV	(R4),R1		;AND PUT A COPY IN R1	ASR	R1		;CONVERT TO WORDS	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG		;CONVERT TO DECIMAL	MOVB	#':,(R0)+	;STORE FIELD TERMINATOR	MOV	-(R4),TOTALS	;STORE N      EW TOTAL POOL VALUE	MOV	(R4),R1		;AND PUT A COPY IN R1	ASR	R1		;CONVERT TO WORDS	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG		;CONVERT TO DECIMAL	MOVB	#':,(R0)+	;STORE FIELD TERMINATOR	MOV	-(R4),FRAGS	;STORE NEW POOL FRAGMENTS VALUE	MOV	(R4),R1		;AND PUT A COPY IN R1	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG		;CONVERT TO DECIMAL	MOVB	#' ,(R0)+	;INSERT SOME SPACES	MOVB	#' ,(R0)+	MOVB	#1,(R0)		;INSERT LINE TERMINATOR	MOV	#POOLOC,R3	;POSITION POINTER TO OUTPUT STRING	CALL	OUTLIN	RETURN			;																.      PAGE	;***********************************************	;		.SBTTL	DISPLAY CACHE INFORMATION	;	;***********************************************;; **- DISPLAYS THE FOLLOWING INFORMATION ABOUT THE CACHE;;	1. PERCENT OF THE CACHE THAT IS DEAD;	2. PERCENT OF THE CACHE THAT IS UNLOCKED;	3. PERCENT OF THE CACHE THAT IS LOCKED;	4. NUMBER OF CALLS MADE TO THE CACHE SINCE THE LAST TIME THIS ;	   ROUTINE WAS RUN;	5. PERCENT OF THESE CALLS WHICH WERE HITS;DEAD:	.WORD 	0UNLCKD: .WORD	0LOCKED:	.WORD	0CALLS:	.WORD	0TCALLS:	      .WORD	0HITS:	.WORD	0THITS:	.WORD	0COM.AD:: .WORD	0		;ADDRESS OF THE BASE OF THE COMMON AREACADR::	.WORD	0		;ADDRESS OF THE BASE OF THE CACHECSIZE::	.WORD	1000CACLOC:	.ASCII	<ESC><CD><31.+2.><0><31.+50.>	;POSITION CURSORCACHMG:	.ASCII	/CACHE=                       /	;CACHE STATISTICSNCALLS:	.ASCII	/ NO CALLS/<1>CACHE:	INH$S			;INHIBIT CONTEXT SWITCHING	MOV	CADR,UISAR3	;MAP INTO CACHE	MOV	#77406,UISDR3	MOV	60000+P.DEAD,R0	;GET AMOUNT OF DEAD STORAGE	MOV	CSIZE,R2	;SET UP DIVISOR PARAMETER	CALL	PRCNT		;CALCULAT      E THE PERCENTAGE	MOV	R0,DEAD		;STORE THE RESULT	MOV     60000+P.ALLOC,R0 ;GET AMOUNT OF UNLOCKED SPACE	CALL	PRCNT	MOV	R0,UNLCKD	;STORE RESULT	MOV	#100.,LOCKED	;START WITH 100%	SUB	DEAD,LOCKED	;SUBTRACT DEAD STORAGE PERCENTAGE	SUB	UNLCKD,LOCKED	;SUBTRACT UNLOCKED STORAGE PERCENTAGE	TST	LOCKED		;IF LOCKED IS NEGATIVE THEN WE HAVE A				;ROUNDING ERROR WHICH WE JUST PATCH UP	BGE	5$	CLR	LOCKED	DEC	UNLCKD5$:	MOV	60000+P.HIT,R0	;GET NUMBER OF HITS	SUB	THITS,R0	;SUBTRACT TOTAL LAST TIME TO GET TOTAL SINCE THEN	MOV	      60000+P.HIT,THITS ;SAVE FOR NEXT TIME	MOV	60000+P.NUM,R2	;GET NUMBER OF CALLS	SUB	TCALLS,R2	;GET NUMBER THIS TIME	MOV	R2,CALLS	;SAVE FOR OUTPUT	MOV	60000+P.NUM,TCALLS ;SAVE FOR NEXT TIME	ENB$S			;ENABLE CONTEXT SWITCHING	CALL	PRCNT		;CALCULATE HIT PERCENTAGE	MOV	R0,HITS		;STORE RESULT	MOV	#CACHMG+6,R0	;POINT INTO CACHE DISPLAY BUFFER	MOV	DEAD,R1		;NOW WE ARE GOING TO CONVERT TO OUTPUT FORMAT	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG		;CONVERT TO DECIMAL	MOVB	#':,(R0)+	;INSERT FIELD SEPARATOR											MO      V	UNLCKD,R1	;	CLR	R2		;	CALL	$CBDMG		;	MOVB	#':,(R0)+	;	MOV	LOCKED,R1	;	CLR	R2		;	CALL	$CBDMG		;	TST	CALLS		;SEE IF ANY CALLS WERE MADE	BEQ	10$		;IF EQ THEN CLEANUP	MOVB	#' ,(R0)+	MOVB	#' ,(R0)+	MOV	CALLS,R1	;	CLR	R2		;	CALL	$CBDMG		;	MOVB	#':,(R0)+	;	MOV	HITS,R1		;	CLR	R2	CALL	$CBDMG	MOVB	#' ,(R0)+	;ERASE SOME SPACES	MOVB	#' ,(R0)+	MOVB	#' ,(R0)+	MOVB	#' ,(R0)+10$:	MOVB	#1,(R0)		;INSERT LINE TERMINATOR	MOV	#CACLOC,R3	;POSITION POINTER	CALL	OUTLIN	TST	CALLS		;DO WE WANT TO PUT OUT THE "NO CALLS" MESSAGE?	BN      E	15$		;IF NE - NO	MOV	#NCALLS,R3	;POINT TO MESSAGE	CALL	OUTLIN15$:	RETURN	.PAGE	;************************************	;		.SBTTL	I/O ROUTINES	;	;************************************;; **-OUTLIN -OUTPUT STRING TO DISPLAY BUFFER;; INPUTS:;;	R3=ADDRESS OF OUTPUT STRING;; NOTE:	THE <1> BIT IS TREATED AS A SPECIAL CHARACTER. IT SERVES AS A;	STRING DELIMITER, AND WHEN IT IS ENCOUNTERED OUTLIN STOPS PROCESSING;	THE STRING.;OUTLIN:: MOV	R2,-(SP)	;SAVE CONTENTS OF R210$:	MOVB	(R3)+,R2	;NEXT CHARACTER TO OUTPUT	CMP	#      1,R2		;SEE IF WE REACHED THE END OF THE STRING	BEQ	20$		;IF EQ YES	CALL	OUTCHR		;OUTPUT THE CHARACTER	BR	10$		;GO BACK FOR MORE	20$:	MOV	(SP)+,R2	;RESTORE R2	RETURN;; **-OUTCHR -OUTPUT CHARACTER TO DISPLAY BUFFER;; INPUTS:;;	R2=CHARACTER TO BE OUTPUT;OUTCHR:	MOVB	R2,@BUFPTR	;INSERT BYTE IN BUFFER	INC	BUFPTR		;BUMP BUFFER POINTER	INC     BUFCTR		;AND BYTE COUNT	CMP 	#256.,BUFCTR	;BUFFER FULL?	BHI	10$		;IF HI NO	CALL	OUTBUF		;DISPLAY BUFFER10$:	RETURN	.PAGE;; **-OUTBUF -OUTPUT DISPLAY BUFFER;; INPUTS:;;	BUFCT      R=NUMBER OF BYTES TO OUTPUT;	.ENABL	LSB	DAT:	.BLKW	15.OUTBUF::	.IF  DF  $$PRI	MOV	#20000,BUFPTR	;BUFFER IS IN EXTENDED MEMORY	.IFF	MOV	#BUFF,BUFPTR	.ENDC	DIR$	#OUTPUT		;OUTPUT THE BUFFER TO THE SCREEN	.IF  DF  $$PRI	TST	DSPFLG		;HAVE WE UPDATED ONE OF SPECIAL DISPLAYS	BNE	5$	TST	PRTFLG		;DO WE WANT TO UPDATE BUFFER FOR HARDCOPY?	BEQ	5$		;IF EQ THEN NO	MOV	#1,DAT+4	;SET CODE FOR UPDATE	MOV	BUFCTR,DAT+6	;PASS TO PRINT NO. OF CHARACTERS IN BUFFER	DIR$	#SEND,DIRERR	;PASS THE INFORMATION TO THE HARDCOPY TASK	CAL      L	UNSTOP		;UNSTOP THE HARDCOPY TASK	DIR$	#STOP1,DIRERR	;STOP OURSELVES UNTIL HARDCOPY IS FINISHED5$:	TST	PRT.OK		;IS HARDCOPY BUFFER READY TO BE OUTPUT?	BEQ	10$		;IF EQ NO	TST	PRTFLG		;DO WE WANT A HARDCOPY?	BEQ	10$	MOV	#2,DAT+4	;SET PRINT CODE	DIR$	#SEND,DIRERR	;PASS THE INFORMATION TO THE HARDCOPY TASK	CALL	UNSTOP		;UNSTOP THE HARDCOPY TASK	DIR$	#STOP1,DIRERR	;STOP OURSELVES UNTIL HARDCOPY IS FINISHED10$:	CLR	PRT.OK		;DON'T WANT TO GO THROUGH THIS NEXT TIME	.ENDC	CLR	BUFCTR		;CLEAR BUFFER BYTE COUNT	RETUR      N	.DSABL	LSB	.PAGE	;**************************************************	;		.SBTTL	COMMAND PROCESSOR ROUTINES	;	;**************************************************;; **-CMDAST-AST WHICH IS CALLED IF AN IO EVENT IS COMPLETED. IT SETS A FLAG ;	    WHICH TELLS MAIN PROGRAM THAT USER WOULD LIKE TO REQUEST A COMMAND.;AST.ST:	.BLKW	2CMDAST:	CMPB	#3,(SP)		;IS THERE A CONTROL C IN BUFFER?	BNE	5$	EXIT$S5$:	MOV	#1,CMDFLG	;SET COMMAND FLAG	TST	(SP)+		;REMOVE TRAP DEPENDENT PARAMETER FROM STACK	ASTX$S			;EXIT AST;; **-CM      DS-ROUTINE TO PROCESS USER COMMANDS;;; ERROR MESSAGES:;PROMPT:	.ASCII	/COMMAND ?/<1>	.EVENERR1:	.ASCII	/ILLEGAL COMMAND! COMMAND?/<1>	.EVENERR2:	.ASCII	/PRINT OPTION NOT IMPLEMENTED./<1>	.EVEN	.ENABL	LSBCMDS:	MOV	#1,R0		;WANT A REPLY	MOV	#PROMPT,R1	;POINT TO "COMMAND"	CALL	COMMUN		;ASK USER FOR HIS COMMAND	CMP	#"HE,RECBUF	;DOES USER WANT THE HELP DISPLAY?	BNE	5$		;IF NE-NO	CALL	HELP		;DISPLAY HELP INFORMATION	CALL	OUTBUF	BR	CMDS		;GO BACK AND ASK FOR ANOTHER COMMAND5$:	CMP	#"AP,RECBUF	;DOES USER WANT TO SWI      TCH TO ANOTHER APPLICATION?	BNE	10$	CALL	PARNME		;GET NEW PARTITION NAME AND MAPPING ADDRESS	JMP	99$10$:	CMP	#"PR,RECBUF	;DO WE WANT PRINT OPTION	BNE	11$	.IF  NDF  $$PRI; TELL USER THAT PRINT COMMAND NOT IMPLEMENTED	CLR	R0		;NO REPLY NEEDED	MOV	#ERR2,R1	;POINT TO ERROR MESSAGE	CALL	COMMUN	BR	CMDS	.ENDC	.IF  DF  $$PRI	CALL	PRINT		;SPAWN THE PRINT TASK	JMP	99$	.ENDC11$:	CMP	#"NP,RECBUF	;ARE WE CANCELLING PRINT OPTION?	BNE	12$	CLR	PRTFLG		;CANCEL PRINT OPTION	.IF  DF  $$PRI	MOV	#3,DAT+4	;SET EXIT FUNCTION CODE      	DIR$	#SEND,DIRERR	;TELL HRDCPY TASK TO EXIT	CALL	UNSTOP		;UNSTOP THE PRINT TASK	.ENDC	JMP	99$12$:	CMP	#"FR,RECBUF	;DOES USER WANT TO CHANGE UPDATE FREQUENCY OF DISPLAY	BNE	16$;; PROCESS FREQUENCY OF DISPLAY UPPDATE CHANGE;	MOV	#RECBUF,R0	;POINT TO ARGUMENT	ADD	#3,R0	CLR	R314$:	MOVB	(R0)+,R1	;GET A DIGIT	SUB	#60,R1		;CONVERT FROM ASCII	TST	R1	BLT	15$		;IF LT THEN NOT A NUMBER	CMP	R1,#9.			BGT	15$		;IF GT THEN NOT A NUMBER EITHER		MUL	#12,R3		;RAIZE NUMBER ONE POWER OF TEN	ADD	R1,R3		;THEN ADD NEW UNITS	BR	1      4$15$:	MOV	R3,UPD.FR	;REPLACE WITH NEW FREQUENCY	BR	99$16$:	CMP	#"EX,RECBUF	;DO WE WANT TO EXIT THE PROGRAM	BNE	20$		;IF NE NO	.IF  DF  $$PRI	TST	PRTFLG		;IS THE HARDCOPY TASK SPAWNED?	BEQ	161$		;IF EQ THEN ITS NOT - NO NEED TO STOP IT	MOV	#3,DAT+4	;SET UP CODE FOR PRINT TO EXIT	DIR$	#SEND,DIRERR	CALL	UNSTOP		;UNSTOP THE HARDCOPY TASK	.ENDC161$:	EXIT$S20$:	CMP	#"ME,RECBUF	;DO WE WANT TO SEE TST MEMORY DISPLAY?	BNE	21$	MOV	#5,DS.TYP	;SET UP DISPLAY TYPE FLAG	CALL	MEMINI		;INITIALIZE MEMORY BORDERS	BR	99$21$:      	CMP	#"SU,RECBUF	;DO WE WANT SUMMARY DISPLAY?	BNE	22$	MOV	#1,DS.TYP	BR	99$22$:	CMP	#"MS,RECBUF	;DO WE WANT THE MESSAGE DISPLAY?	BNE	23$	MOV	#2,DS.TYP	BR	99$23$:	CMP	#"TS,RECBUF	;DO WE WANT TST DISPLAY?	BNE	24$	MOV	#3,DS.TYP	BR	99$24$:	CMP	#"TR,RECBUF	;DO WE WANT TRANSACTION DISPLAY?	BNE	25$	CALL	TRINIT		;CALL THE INITIALIZATION ROUTINE	MOV	#4,DS.TYP	BR	99$25$:	CMP	#"CY,RECBUF	;DO WE WANT TO CYCLE THROUGH DISPLAYS	BNE	26$	MOV	#1,DS.TYP	;START WITH SUMMARY DISPLAY	INC	CYCLE		;SET CYCLE FLAG	BR	99$26$:	CMP	#"N      C,RECBUF	;DO WE WANT THE NO CYCLE OPTION?	BNE	30$			CLR	CYCLE		;CLEAR CYCLING MODE FLAG	MOV	#1,DS.TYP	;DEFAULTS TO SUMMARY DISPLAY	BR	99$30$:	MOV	#1,R0		;WANT A REPLY	MOV	#ERR1,R1	;POINT TO ERROR MESSAGE				;(COMMAND WAS NOT A LEGAL COMMAND.)	CALL	COMMUN	JMP	5$99$:	MOV	#1,DSPFLG	;SET UP FLAG SO DISPLAY CHANGES RIGHT AWAY.	RETURN	.PAGE	;***************************************************	;		.SBTTL	COMMUNICATION WITH USER ROUTINE	;	;***************************************************;; **-COMMUN-OUTPUTS A MES      SAGE TO USER & AND IF REQUIRED ACCEPTS A REPLY.;; INPUTS:;;	R0 = REPLY FLAG;	     IF R0 = 1 MESSAGES REQUIRES A REPLY;;	R1 = POINTER TO STARTING ADDRESS OF MESSAGE;; OUTPUT:;;	RECBUF CONTAINS USER'S REPLY TO MESSAGE;; NOTE:;;	IF TERMINAL IS CURSOR CONTROLLED MESSAGE IS OUTPUT STARTING ON COLUMN 1;	OF ROW 23 AND CURSOR IS THEN POSITIONED TO COLUMN 1 OF ROW 24 TO ACCEPT;	THE REPLY.;	.ENABL	LSBIO:	QIOW$	,1,1TERFLG:	.WORD	0		;IF = 1 THEN NOT A CURSOR CONTROLLED DEVICERECBUF:: .BLKW	4LINE23:	.ASCIZ	<ESC><CD><31.      +23.><0><31.+1><ESC><ES>LINE24:	.ASCIZ	<ESC><CD><31.+24.><0><31.+1>/: /COMMUN:: ;; POSITION CURSOR:;	TST	TERFLG			;IS TERMINAL CURSOR CONTROLLED?	BNE	10$			;IF NE-NO	MOV	#IO.WAL,IO+Q.IOFN	;SET I/O FUNCTION TO WRITE ALL	MOV	#LINE23,IO+Q.IOPL	;INSERT ADDRESS OF CURSOR CONTROL 					;CHARACTERS INTO DPB	MOV	#8.,IO+Q.IOPL+2		;AND NUMBER OF CHARACTERS	DIR$	#IO,DIRERR		;POSITION CURSOR;; DETERMINE OUTPUT MESSAGE SIZE;10$:	CLR	R2		;INITIALIZE COUNTER	MOV	R1,IO+Q.IOPL	;SAVE POINTER TO OUTPUT MESSAGE15$:	INC 	R2		;ON      E MORE CHARACTER	CMPB	(R1)+,#1	;HAVE WE REACHED THE END OF THE MESSAGE?	BNE	15$		;IF NE - NO	DEC	R2		;COUNTED ONE TOO MANY;; OUTPUT MESSAGE;	MOV	R2,IO+Q.IOPL+2	;INSERT SIZE OF MESSAGE INTO DPB	TST	TERFLG		;IS TERMINAL CURSOR CONTROLLED?	BEQ	20$		;IF EQ - YES	MOV	#IO.WVB,IO+Q.IOFN ;SET FUNCTION NAME	MOVB	#'0,IO+Q.IOPL+4	;TWO LINE FEEDS AND CARRIAGE RETURN20$:	DIR$	#IO,DIRERR	;OUTPUT MESSAGE;; GET REPLY;	TST	R0		;DO WE NEED A REPLY?	BEQ	99$		;IF EQ - NO	MOV	#"  ,RECBUF	;CLEAN UP	MOV	#"  ,RECBUF+2		MOV	#"  ,RE      CBUF+4	TST	TERFLG		;IS TERMINAL CURSOR CONTROLLED?	BNE	30$		;IF NE - NO;; POSITION CURSOR;	MOV	#LINE24,IO+Q.IOPL ;ADDRESS OF CURSOR CONTROL CHARACTERS	MOV	#6,IO+Q.IOPL+2	;NUMBER OF CHARACTERS	DIR$	#IO,DIRERR	;POSITION CURSOR30$:	MOV	#IO.RVB,IO+Q.IOFN ;READ VIRTUAL BLOCK - FOR NON CURSOR CONTROLLED40$:	MOV	#RECBUF,IO+Q.IOPL ;ADDRESS OF REPLY BUFFER	MOV	#10,IO+Q.IOPL+2	;SIZE OF REPLY MESSAGE	DIR$	#IO,DIRERR	;ASK FOR THE REPLY99$:	RETURN	.PAGE	;*******************************************	;		.SBTTL	DIRECTIVE ER      ROR ROUTINE	;	;*******************************************MESS:	.ASCII	/? FATAL DIRECTIVE ERROR - ERROR CODE IS - /ERRNUM:	.BLKB	6	.ASCII	/  LOCATION: /LOCNUM:	.BLKB	6SIZE=.-MESSDIRERR:: MOV	$DSW,R1		;DIRECTIVE STATUS TO R1	NEG	R1		;COMPLEMENT IT	MOV	#ERRNUM,R0	;POINT TO OUTPUT BUFFER DIRECTIVE STATUS	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG		;CONVERT BINARY TO ASCII	MOV	(SP)+,R1	;NEXT INSTR. LOCATION ADDRESS TO R1	MOV	#LOCNUM,R0	;POINT TO OUTPUT BUFFER	INC	R2		;DO NOT ZERO SUPPRESS	CALL	$CBOMG		;CONVER      T BINARY TO OCTAL ADDRESS	QIOW$C	IO.WAL,1,1,0,STATUS,,<MESS,SIZE>	EXIT$S	.PAGE	;*********************************************	;		.SBTTL	MISCELLANEOUS ROUTINES	;	;*********************************************;; **- JSTFY-CONVERTS A NUMBER TO ITS ASCII OUTPUT EQUIVALENT, RIGHT ;           JUSTIFYING THE NUMBER IN THE OUTPUT FIELD.;; INPUTS:;;	R0=POINTER TO STARTING ADDRESS OF THE OUTPUT FIELD;	R1=NUMBER TO BE CONVERTED;; NOTE: ROUTINE WILL ONLY RIGHT JUSTIFY NUMBERS UP TO 4 DECIMAL DIGITS IN LENGTH;	.ENABL	LS      BJSTFY1::	CMP	#10000.,R1	;IS IT FIVE DIGITS	BLE	10$		;YES - SO GO ON	MOVB	#' ,(R0)+	;CLEAR THE 10000'S SPACEJSTFY::	CMP	#1000.,R1	;IS IT 4 DIGITS?	BLE	10$		;YES, SO GO ON	MOVB	#' ,(R0)+	;CLEAR THE 1000'S SPACE	CMP	#100.,R1	;IS IT 3 DIGITS?	BLE	10$	MOVB 	#' ,(R0)+	CMP	#10.,R1		;IS IT 2 DIGITS?	BLE 	10$	MOVB	#' ,(R0)+	TST	R1		;IS IT AT LEAST 1 DIGIT?	BNE	10$	MOVB	#'0,(R0)+	BR	15$10$:	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG		;CONVERT TO ASCII15$:	RETURN;; **-PRCNT -INTERNAL ROUTINE TO CALCULATE PERCENTAGE      S;; INPUTS:;;	R0=DIVIDEND;	R2=DIVISOR;; OUTPUTS:;;	R0=QUOTIENT;PRCNT::	MOV	#100.,R1	;SET UP FOR MULTIPLICATION	CALL	$MUL		;MULTIPLY BY 100. SO LATER CAN GET PERCENTAGE	MOV	R1,R0		;SWITCH INTO DIVIDEND REGISTER	MOV	R2,R1		;GET DIVISOR	CALL	$DIV		;DO THE DIVISION	RETURN;; **-ACBD-THIS ROUTINE PROVIDES THE KT AND BIAS ADDRESSES OF A SYSTEM BDB;; INPUTS:;; 	R1=BDB ADDRESS;; OUTPUTS:;;	R4=KT ADDRESS;;	R5=BIAS;ACBD::	CLR	R4		;RESET R4	MOV	R1,R5		;MOV BDB ADDRESS TO R5	ASHC	#10.,R4		;GET PAGE VALUE IN R4	ASH	#-10.   N   ,R5	;BIAS IS NOW IN R5	BIC	#177700,R5	;CLEAR OUT ANY GARBAGE	RETURN	.END 	DEMON          Ä€W!NÁ› 8$        DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16TABLE OF CONTENTS     4-    2	MCALLS - DIRECTIVE DPBS     5-  120	DATA AREA     6-  175	ONE TIME ONLY CODE     7-  235	SPAWN PRINT TASK     8-  310	MAIN LOOP    10-  420	OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    11-  532	BATCH/PRINT QUEUES INITIALIZATIONS    12-  649	DISPLAY DATE AND TIME    13-  699	DISPLAY TOTAL UPTIME FOR TRAX DEMO    14-  785	DISPLAY NAME OF NEXT RUNNABLE TASK    15-  882	DISPLAY CPU USAGE COUNT    16- 1020	DISPLAY       POOL INFORMATION    17- 1091	DISPLAY CACHE INFORMATION    18- 1223	I/O ROUTINES    20- 1349	COMMAND PROCESSOR ROUTINES    21- 1559	COMMUNICATION WITH USER ROUTINE    22- 1681	DIRECTIVE ERROR ROUTINE    23- 1719	MISCELLANEOUS ROUTINESDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 4      1						.TITLE	DEMO PROGRAM FOR TRAX (ROOT MODULE)      2						.SBTTL	MCALLS - DIRECTIVE DPBS      3						.NLIST	BEX      4      5      6					;****************************************      7					;      8	      				;	ASSEMBLY CONTROL VARIABLES      9					;     10					;****************************************     11     12     13		000000 				$$PRI=0     14     15     16     17					;**************************************************     18					;     19					;	M A C R O   C A L L S     20					;     21					;**************************************************     22     23     24						.MCALL	ALUN$,CLEF$,CRAW$,CRRG$,DIR$     25						.MCALL	GTIM$,MRKT$,RCVD$,SDAT$     26						.MCALL	SPWN$,STOP$,STSE$,USTP$     27     28			      			.MCALL	ASTX$S,ENB$S,EXIT$S,INH$S,SWITCH$     29     30						.MCALL	QIOW$,QIOW$C,QIO$C     31     32						.MCALL	ASRDF$,HDRDF$,PCBDF$,RDBBK$,WDBBK$     33     34     35     36					;**************************************************     37					;     38					;	D I R E C T I V E   D P B   B L O C K S     39					;     40					;**************************************************     41     42     43	000000				ALUN:	ALUN$	1,TI,0		;ASSIGN LOGICAL UNIT NUMBER TO TERMINAL     44     45	000010				CLEAR:	CLEF$	6		;CLEA      R EVENT FLAG     46     47	000014				GETIME:	GTIM$	TIMBUF		;GET TIME     48     49	000020				MRKTIM:	MRKT$	2,1,2		;MARK TIME (ONE SECOND)     50     51	000032				STOP:	STSE$	2		;STOP AND WAIT FOR EVENT FLAG     52     53     54     55     56					;*******************************************************************     57					;DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 4-1MCALLS - DIRECTIVE DPBS     58					;	D I R E C T I V E S   F O R   H A R D C O P Y   O P T I O N     59					;           60					;*******************************************************************     61     62     63						.IF  DF	$$PRI     64     65     66	000036				WINDOW:	CRAW$	WDB		;CREATE A WINDOW AND ATTACH TO IT     67     68	000042				REGION:	CRRG$	RDB		;CREATE A SHARED DATA REGION     69     70	000046				SEND:	SDAT$	HRDCPY,DAT+4	;SEND DATA     71     72	000060				SPAWN:	SPWN$	HRDCPY,,,300,30	;SPAWN HARDCOPY TASK     73     74	000112				SPAWN2:	SPWN$	...INS,,,300,30,4,,,CMDLIN,CMDLEN  ;SPAWN HARDCOPY TASK     75     7      6	000144				STOP1:	STOP$			;STOP OURSELVES     77     78	000146				USTOP:	USTP$	HRDCPY		;UNSTOP THE HARDCOPY TASK     79     80	000154				WAIT:	MRKT$	,1,1		;WAIT ONE TICK     81     82						.ENDC     83     84     85     86					;**************************     87					; CURSOR CONTROL CHARACTERS     88					;**************************     89     90		000033 				ESC=33			;ESCAPE CHARACTER     91		000131 				CD=131			;CURSOR DISPLAY     92		000112 				ES=112			;ERASE TO END OF SCREEN     93		000113 				EL=113			;      ERASE TO THE END OF THE LINE     94		000110 				HO=110			;HOME CURSOR     95     96     97					;***********************************     98					;     99					;	O U T P U T   D P B S    100					;    101					;***********************************    102    103    104	000166				OUTPUT:: QIOW$ 	IO.WAL,1,12,0,STATUS,,<0,0,0>    105    106		000170'				DSFUN=OUTPUT+Q.IOFN	;ADDRESS OF FUNCTION CODE    107		000202'				BUFPTR==OUTPUT+Q.IOPL	;ADDRESS OF OUTPUT BUFFER    108		000204'				BUFCTR==OUTPUT+Q.IOPL+2	;ADDRESS OF       BYTES IN BUFFER    109    110    111	000216				IOATA:	QIOW$	IO.ATA,1,1,,,,<CMDAST>	;ATTACH TERMINAL    112    113	000246				IOCLR:	QIOW$	IO.WAL,1,1,,,,<CLRSCR,6> ;CLEAR SCREEN    114DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 4-2MCALLS - DIRECTIVE DPBS    115DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 5MCALLS - DIRECTIVE DPBS    117    118						;*******************************************    119						;    120							.SBTTL	DATA AREA    121    122						;    123	      					;*******************************************    124    125    126    127	000276	   033 	   110 	   000 	CLRSCR:	.ASCII	<ESC><HO><0><ESC><ES><0> ;SEND CURSOR HOME AND CLEAR SCREEN    128	000304	   033 	   131 	   040 	TIT1:	.ASCII 	<ESC><CD><31.+1.><0><31.+7.>/***TRAX DEMO***/<1>    129    130    131						.EVEN    132    133    134	000332				STATUS: .BLKW	2    135    136	000336	000000 			CMDFLG:	.WORD	0    137	000340	000000 			DSPFLG:	.WORD	0	;COUNT DOWN TO UPDATE MAIN DISPLAY    138	000342	000012 			UP      D.FR:	.WORD	12    139	000344	000001 			DS.TYP:	.WORD	1	;KEEPS TRACK OF CURRENT DISPLAY    140	000346	000000 			PRT.OK:: .WORD	0    141	000350	000000 			CYCLE::	.WORD	0		;FLAG TO INDICATE THAT WE WANT TO CYCLE THROUGH    142									;ALL DISPLAYS    143    144    145	000352	000000 			OF.RD::	.WORD	0    146	000354	000000 			OF.WRT::.WORD	0    147	000356	000000 			OF.HIT::.WORD	0    148    149    150					;    151					; DISPLAY BUFFER :    152					;    153    154						.IF  NDF  $$PRI    155    156					BUFF::	.B      LKW	200    157    158						.ENDC    159    160    161    162					;************************    163					; DEFINE SYMBOLIC OFFSETS    164					;************************    165    166	000360					ASRDF$    167	000360					HDRDF$    168	000360					PCBDF$    169    170DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 6DATA AREA    172    173						;***************************************    174						;    175							.SBTTL	ONE TIME ONLY CODE    176						;    177						;*********************************      ******    178    179    180    181    182					;*******************    183					; CREATE REGION CODE    184					;*******************    185    186						.IF  DF  $$PRI    187    188    189	000360				RDB:	RDBBK$	4,BUFFER,,<RS.ATT!RS.RED!RS.WRT>    190    191	000400				WDB:	WDBBK$	1,,,0,,<WS.64B!WS.MAP!WS.RED!WS.WRT>    192    193    194    195	000420				DEMO:	DIR$	#REGION,DIRERR		;CREATE A REGION FOR CHARACTER BUFFER    196    197	000434	005067 	177752 			CLR	WDB+W.NLEN		;CLEAR WINDOW LENGTH    198    199	00044      0	016767 	177716 	177736 		MOV	RDB+R.GSIZ,WDB+W.NSIZ	;GET REGION SIZE INTO WINDOW DESCRIPTOR    200	000446	016767 	177706 	177732 		MOV	RDB+R.GID,WDB+W.NRID	;MOVE THE REGION ID INTO WINDOW BUFFER    201    202	000454					DIR$	#WINDOW,DIRERR		;CREATE ADDRESS WINDOW    203    204	000470	012767 	020000 	177504 		MOV	#20000,BUFPTR		;POINT TO REGION WHERE BUFFER HAS JUST    205										;BEEN CREATED    206    207						.IFF    208    209					DEMO:    210    211						MOV	#BUFF,BUFPTR		;POINT TO BUFFER    212    2      13						.ENDC    214    215    216    217					;    218					; ATTACH TERMINAL, CLEAR SCREEN & FIND PARTITION NAME    219					;    220    221    222	000476					DIR$ 	#ALUN,DIRERR		;ASSIGN LOGICAL UNIT NUMBER TO TERMINAL    223	000512					DIR$	#IOATA,DIRERR		;ATTACH TERMINAL    224	000526					DIR$	#IOCLR,DIRERR		;CLEAR THE SCREEN    225    226	000542					CALL	PARNME			;GET PARTITION NAME    227	000546					CALL	QUEINI			;INITIALIZE QUEUE STUFF    228	000552	000515 				BR	LOOPDEMO PROGRAM FOR TRAX (ROOT MOD	MAC      RO M1110  14-FEB-79 12:16  PAGE 6-1ONE TIME ONLY CODE    229    230    231DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 7ONE TIME ONLY CODE    233						;***************************************    234						;    235							.SBTTL	SPAWN PRINT TASK    236						;    237						;***************************************    238    239    240						.IF  DF  $$PRI    241    242	000554	   111 	   116 	   123 	CMDLIN:	.ASCII	#INS [300,30]HRDCPY/RUN=REM/TASK=HRDCPY#<15>    243						.EVEN    244		000050       			CMDLEN=.-CMDLIN    245    246	000624	000000 			PRTFLG:	.WORD	0		;KEEPS TRACK OF USER PRINT OPTION    247									;(IF PRTFLG=1 THEN HARDCOPY)    248    249    250    251	000626	005767 	177772 		PRINT:	TST	PRTFLG    252	000632	001045 				BNE	10$    253    254    255	000634					DIR$	#SPAWN		;SPAWN THE HARDCOPY TASK    256	000642	026727 	000000G	000000G		CMP	$DSW,#IS.SUC	;WERE WE SUCCESSFUL    257	000650	001414 				BEQ	5$		;YES - BRANCH    258    259	000652					DIR$	#SPAWN2,DIRERR	;NO - TASK MUST NOT BE INS      TALLED SO    260									;INSTALL IT    261    262    263	000666					DIR$	#STOP1,DIRERR	;WAIT FOR ACKNOWLEDGEMENT    264    265    266    267	000702				5$:	DIR$	#SEND		;PASS HARDCOPY DEMO TASK NAME    268	000710	026727 	000000G	000000G		CMP	$DSW,#IS.SUC    269	000716	001371 				BNE	5$    270    271    272	000720					CALL	UNSTOP		;UNSTOP THE HARDCOPY ROUTINE    273	000724					DIR$	#STOP1,DIRERR	;WAIT FOR HARDCOPY TO FINISH    274    275    276    277	000740	012767 	000001 	177656 		MOV	#1,PRTFLG	;SET FLAG TO       INDICATE THAT HARDCOPY TASK    278									;HAS BEEN INITIALIZED    279    280    281	000746				10$:	RETURN    282    283						.ENDC    284    285    286    287					;    288					; **- UNSTP - ROUTINE UNSTOPS THE HARDCOPY TASK:    289					;DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 7-1SPAWN PRINT TASK    290    291	000750				UNSTOP:    292    293    294	000750				20$:	DIR$	#USTOP		;UNSTOP HARDCOPY    295	000756	026727 	000000G	000000G		CMP	$DSW,#IE.ITS	;IS HARDCOPY STOPPED?    296	0      00764	001007 				BNE	25$		;IF NE - NO    297    298	000766					DIR$	#WAIT,DIRERR	;WAIT ONE TICK BEFORE TRYING AGAIN    299	001002	000762 				BR	20$    300    301	001004				25$:	RETURN    302    303    304DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 8SPAWN PRINT TASK    306    307    308						;*********************************    309						;    310							.SBTTL	MAIN LOOP    311						;    312						;*********************************    313    314						.ENABL	LSB    315    316    317	00100      6				LOOP:	CALL	SCRTOP		;UPDATE TOP TWO LINES OF DISPLAY    318    319	001012	005767 	177322 			TST	DSPFLG		;DO WE WANT ONE OF THE SPECIAL DISPLAYS    320	001016	001077 				BNE	35$		;IF NE NO    321    322	001020	022767 	000001 	177316 		CMP	#1,DS.TYP	;WHICH DISPLAY DO WE WANT    323	001026	001011 				BNE	10$		;IF NE THEN ITS NOT SUMMARY DISPLAY    324    325	001030					CALL	QUESUM		;OUTPUT QUEUE MANAGER SECTION OF SUMMARY DISPLAY    326	001034					CALL	MEMSUM		;OUTPUT MEMORY USAGE SECTION OF SUMMARY DISPLA      Y    327	001040					CALL	APPSUM		;OUTPUT APPLICATION SECTION OF SUMMARY DISPLAY    328	001044					CALL	DSKSUM		;OUTPUT DISK FREE SPACE SECTION OF SUMMARY DISPLAY    329    330	001050	000440 				BR	30$    331    332	001052	022767 	000002 	177264 	10$:	CMP	#2,DS.TYP	;DO WE WANT THE MESSAGE DISPLAY    333	001060	001003 				BNE	11$    334	001062					CALL	MSGE		;OUTPUT THE MESSAGE DISPLAY    335	001066	000431 				BR	30$    336    337	001070	022767 	000003 	177246 	11$:	CMP	#3,DS.TYP	;DO WE WANT THE TST DISPLAY          338	001076	001003 				BNE 	12$    339	001100					CALL	TSTDSP		;OUTPUT THE TST DISPLAY    340	001104	000422 				BR	30$    341    342	001106	022767 	000004 	177230 	12$:	CMP	#4,DS.TYP	;DO WE WANT THE TRANSACTION DISPLAY?    343	001114	001003 				BNE	13$    344	001116					CALL	TRANS    345	001122	000413 				BR	30$    346    347	001124	022767 	000005 	177212 	13$:	CMP	#5,DS.TYP	;DO WE WANT THE MEMORY DISPLAY?    348	001132	001007 				BNE	30$    349    350	001134	005767 	177210 			TST	CYCLE		;IF IN CYCLING MOD      E WANT TO INITIALIZE    351									;MEMORY DISPLAY    352	001140	001402 				BEQ	14$    353    354	001142					CALL	MEMINI    355    356	001146				14$:	CALL	MEM		;OUTPUT THE MEMORY DISPLAY    357    358    359	001152	005767 	177162 		30$:	TST	DSPFLG		;DID WE JUST UPDATE SPECIAL DISPLAY    360	001156	001017 				BNE	35$		;IF NE -NO    361    362	001160	012767 	000001 	177160 		MOV	#1,PRT.OK	;SET UP FLAG SO THAT OUTBUF CAN SIGNALDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 8-1MAIN LOOP          363									;TO HARDCOPY    364    365    366	001166	005767 	177156 			TST	CYCLE		;ARE WE CYCLING THROUGH THE DIFFERENT DISPLAYS    367	001172	001411 				BEQ	35$		;IF EQ - NO    368    369	001174	005267 	177144 			INC	DS.TYP		;GO TO NEXT DISPLAY    370	001200	026727 	177140 	000006 		CMP	DS.TYP,#6	;DID WE DO LAST DISPLAY?    371	001206	001003 				BNE	35$    372    373	001210	012767 	000001 	177126 		MOV	#1,DS.TYP	;GO BACK TO FIRST DISPLAY    374    375	001216				35$:	CALL	OUTBUF		;OUTPUT REMAINDER OF BUFFE      R    376    377	001222	005767 	177110 			TST	CMDFLG		;HAS USER REQUESTED A COMMAND    378	001226	001404 				BEQ	40$		;IF EQ NO    379    380	001230	005067 	177102 			CLR	CMDFLG		;RESET THE COMMAND FLAG    381	001234					CALL	CMDS		;GO PROCESS COMMAND    382    383	001240	005367 	177074 		40$:	DEC	DSPFLG		;CONTINUE COUNTDOWN FOR NEXT DISPLAY UPDATE    384	001244	002003 				BGE	45$    385    386	001246	016767 	177070 	177064 		MOV	UPD.FR,DSPFLG	;START COUNTDOWN FOR NEXT DISPLAY UPDATE    387    388	001254				      45$:	DIR$	#STOP,DIRERR	;WAIT AND STOP FOR ONE SECOND TO BE UP    389	001270	000167 	177512 			JMP	LOOP    390    391						.DSABL	LSB    392DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 9MAIN LOOP    394					;    395					; **- SCRTOP-ROUTINE THAT RUNS THROUGH THE ONE SECOND DYNAMICALLY UPDATED SECTION    396					;            OF DISPLAY.    397					;    398    399	001274				SCRTOP:    400	001274					DIR$	#MRKTIM,DIRERR		;WAIT ONE SECOND BEFORE RESTARTING THIS ROUTINE    401    402	001310      	012703 	000304'			MOV	#TIT1,R3	;DISPLAY FIXED PART OF HEADER    403	001314					CALL	OUTLIN    404    405	001320					CALL	DSTIM		;DISPLAY CURRENT TIME    406	001324					CALL	UPTIME		;DISPLAY HOW LONG DEMO IS BEEN RUNNING    407	001330					CALL	NXTTSK		;DISPLAY NAME OF NEXT TASK    408	001334					CALL	CPUCNT		;DISPLAY CPU USAGE PERCENTAGE    409	001340					CALL	POOLIN		;DISPLAY POOL INFORMATION    410	001344					CALL	CACHE		;DISPLAY CACHE INFORMATION    411    412	001350					RETURN    413DEMO PROGRAM FOR TR      AX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 10MAIN LOOP    415    416    417						;***********************************************************************    418						;    419    420							.SBTTL	OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    421						;    422						;***********************************************************************    423    424    425	001352	   101 	   120 	   120 	MSG:	.ASCII	/APPLICATION NAME?/<1>    426						.EVEN    427    428    429	001374	   101 	   120 	   120 	MSG1:      	.ASCII	/APPLICATION NOT FOUND! APPLICATION NAME?/<1>    430						.EVEN    431    432	001446	000000 			PARADR:	.WORD	0    433    434    435	001450				PARNME:    436    437	001450	012700 	000001 			MOV	#1,R0		;SPECIFY THAT WE WANT A REPLY    438	001454	012701 	001352'			MOV	#MSG,R1		;POINT TO MESSAGE    439	001460					CALL	COMMUN		;SEND MESSAGE TO USER    440    441    442	001464				5$:	INH$S			;INHIBIT CONTEXT SWITCHING    443    444    445					; GET ADDRESS OF PARTITION HEAD    446    447	001500					SWITCH      $	6$		;GO INTO KERNEL MODE    448	001504	016767 	000000G	177734 		MOV	$PARHD,PARADR	;SAVE ADDRESS    449	001512					RETURN    450    451					;    452					; THIS SECTION LOOKS THROUGH EACH PARTITION DESCRIPTION BLOCK.    453					; ANY PARTITION WITH STARTING 3 LETTERS  "TPN", WHERE N RANGES    454					; FROM 1 TO 8, IS THEN EXAMINED TO SEE IF IT IS THE PARTITION    455					; WE WANT.    456					;    457    458    459    460	001514				6$:	SWITCH$	9$		;GO INTO KERNEL MODE    461    462	001520	016704 	177722 		      7$:	MOV	PARADR,R4	;PARADR	ALWAYS POINTS TO THE NEXT PARTITION TO    463									;BE LOOKED AT    464    465	001524	162704 	000000 			SUB	#P.LNK,R4	;POINT TO THE TOP OF DESCRIPTOR BLOCK    466	001530	016467 	000000 	177710 		MOV	P.LNK(R4),PARADR  ;SAVE ADDRESS OF PARTITION TO BE LOOKED AT    467									  ;NEXT IF NECESSARY    468	001536	016467 	000014 	002356 		MOV	P.REL(R4),COM.AD  ;SAVE ADDRESS OF COMMON AREA IN CASE THIS IS    469									  ;THE RIGHT PARTITION    470    471	001544	026427 	000004 	077637       		CMP	P.NAM(R4),#^RTP1  ;IS THIS THE RIGHT TYPE OF PARTITIONDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 10-1OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    472	001552	002404 				BLT	71$		;NO!    473    474	001554	026427 	000004 	077646 		CMP	P.NAM(R4),#^RTP8    475	001562	003406 				BLE	8$		;YES : TP1 <= P.NAM(R4) <= TP8    476    477	001564	005767 	177656 		71$:	TST	PARADR		;HAVE WE LOOKED AT THE LAST PARTITION?    478	001570	001353 				BNE	7$		;IF NE-NO, LETS LOOK AT THE NEX      T PARTITION    479    480	001572	012767 	177777 	177646 		MOV	#-1,PARADR	;INDICATE THAT WE CAN'T FIND ANY MORE PARTITIONS    481    482	001600				8$:	RETURN			;FINISHED WITH KERNEL MODE    483    484	001602	005767 	177640 		9$:	TST	PARADR		;DID WE EXIT BECAUSE OF ERROR?    485	001606	002430 				BLT	25$		;IF NEGATIVE - YES    486    487    488					; LETS LOOK AT COMMON AREA FOR THS PARTITION TO SEE IF ITS THE RIGHT ONE.    489    490	001610	012767 	077406 	177606 		MOV	#77406,UISDR3    491	001616	016767 	002      300 	177646 		MOV	COM.AD,UISAR3	;MAP INTO EXTENDED MEMORY    492    493    494	001624	026767 	004202 	060000 		CMP	RECBUF,60000	;IS THIS THE PARTITION WE WANT?    495	001632	001330 				BNE	6$    496	001634	026767 	004174 	060002 		CMP	RECBUF+2,60002    497	001642	001324 				BNE	6$    498	001644	026767 	004166 	060004 		CMP	RECBUF+4,60004    499	001652	001320 				BNE	6$    500    501    502					; FOUND PARTITION WANTED!    503    504	001654	016767 	060000G	002242 		MOV	60000+$BASE,CADR  ;STORE BASE ADDRESS O      F THE CACHE FOR LATER USE    505	001662	016767 	060000G	002236 		MOV	60000+$SIZE,CSIZE ;STORE CACHE SIZE FOR LATER USE    506    507    508	001670				25$:	ENB$S			;ENABLE CONTEXT SWITCHING    509    510	001702	005767 	177540 			TST	PARADR		;DID WE LEAVE BECAUSE OF ERROR?    511	001706	002007 				BGE	30$		;IF GE - NO    512    513					;    514					; PARTITION TO MATCH APPLICATION NAME NOT FOUND.    515					; SEND ERROR MESSAGE TO USER.    516					;    517    518    519	001710	012700 	000001 			MOV	#1,R0		;WA      NT REPLY    520	001714	012701 	001374'			MOV	#MSG1,R1	;POINT TO MESSAGE    521	001720					CALL	COMMUN    522	001724	000657 				BR	5$    523    524    525	001726				30$:	RETURN			;AND WE ARE FINISHED    526DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 11OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    528    529    530						;****************************************************    531						;    532							.SBTTL	BATCH/PRINT QUEUES INITIALIZATIONS    533						;    534						;**********      ******************************************    535    536    537    538    539						.MCALL	FDBDF$,FDOP$A,FDRC$A,FDBK$A,FSRSZ$    540						.MCALL	FINIT$    541    542    543		000003 				QFLUN	=3    544    545    546					;    547					; QUEUE FILE FDB :    548					;    549    550	001730				QFDB:: 	FDBDF$			;ALLOCATE FILE DESCRIPTOR BLOCK    551	002070					FDRC$A	FD.RWM		;INDICATE THAT BLOCK I/O OPERATIONS ARE    552									;TO BE PERFORMED    553	002070					FDBK$A	,512.		;ALLOCATE BUFFER SPACE    554	002070			      		FDOP$A	QFLUN,,,FO.RD!FA.SHR    555    556	002070					FSRSZ$	0    557    558    559    560    561					;    562					; EXECUTIVE MACRO CALLS    563					;    564    565						.MCALL	RSUM$,RCST$,USTP$    566    567    568					;    569					; DIRECTIVE DPBS    570					;    571    572    573	002070				RSUM:	RSUM$	QMG...		;DPB TO RESUME QUEUE MANAGER    574	002076				SDAT:	SDAT$	QMG...,SNDBUF	;DPB TO SEND REQUEST TO QUEUE MANAGER    575	002110				RCVD:	RCVD$	QMG...,RCVBUF	;DPB TO RECEIVE DATA BACK FROM QUEUE MANAGE      R    576	002120				USTP:	USTP$	QMG...		;DPB TO UNSTOP QUEUE MANAGER    577    578    579    580	002126	   026 	   000 		SNDBUF:	.BYTE	26,0		;REQUEST PACKET FOR QMG...    581									;F.C. = 26 = GET QUEUE FILE INFORMATION    582	002130				RCVBUF:	.BLKW	15.		;RECEIVE BUFFER FROM QMG...    583		002134'			RCVDT==RCVBUF+4    584DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 11-1BATCH/PRINT QUEUES INITIALIZATIONS    585    586    587	002166	000002 			QUE.ST:: .WORD	2		;INDICATES STATUS OF QU      EUE MANAGER    588									; 0=RUNNING    589									; 1=STOPPED DURING DEMO EXECUTION    590									; 2=STOPPED BEFORE DEMO STARTED    591    592					;    593					; CHECK THAT QUEUE MANAGER IS ACTIVE.    594					; ASK QUEUE MANAGER WHERE QUEUE FILE IS.    595					;    596    597    598	002170				QUEINI::    599    600    601	002170					DIR$	#RSUM		;RESUME QUEUE MANAGER    602	002176	026727 	000000G	000000G		CMP	$DSW,#IE.ITS	;WE SHOULD GET TASK NOT SUSPENDED    603	002204	001037 				BNE	10$    604    605	      002206	005767 	177754 			TST	QUE.ST		;IF QUE.ST=0 THEN QUEUE MANAGER ALREADY RUNNING.    606									;DO NOTHING.    607	002212	001451 				BEQ	20$    608    609    610	002214					DIR$	#SDAT,DIRERR	;SEND DATA TO QUEUE MANAGER    611	002230					DIR$	#USTP,DIRERR	;UNSTOP QUEUE MANAGER    612    613	002244				5$:	DIR$	#RCVD		;RECEIVE DATA OR STOP    614	002252	026727 	000000G	000000G		CMP	$DSW,#IE.ITS	;DATA RECEIVED?    615	002260	001771 				BEQ	5$		;IF NOT - TRY AGAIN    616    617	002262	022767 	000001 	17767      6 		CMP	#1,QUE.ST	;IF EQ=1 FILE SYSTEM INITIALIZED PREVIOUSLY    618	002270	001402 				BEQ	6$		;AND THERE IS NO NEED TO DO IT AGAIN    619    620	002272					FINIT$			;INITIALIZE FILE SYSTEM    621    622	002276	005067 	177664 		6$:	CLR	QUE.ST		;INDICATE THAT QUEUE MANAGER IS ACTIVE    623	002302	000415 				BR	20$    624    625    626					;    627					; QUEUE MANAGER NOT ACTIVE    628					;    629    630	002304	026727 	000000G	000000G	10$:	CMP	$DSW,#IE.ACT	;IS QUEUE MANAGER ACTIVE?    631	002312	001402 				B      EQ	15$		;IF EQ - NO    632    633	002314					CALL	DIRERR		;PROCESS IT AS A DIRECTIVE ERROR    634    635	002320	022767 	000002 	177640 	15$:	CMP	#2,QUE.ST	;WAS QUEUE MANAGER ACTIVE BEFORE?    636	002326	001403 				BEQ	20$		;IF EQ-NO    637    638	002330	012767 	000001 	177630 		MOV	#1,QUE.ST	;INDICATE THAT QUEUE MANAGER HAS STOPPED DURING    639									;PROGRAM EXECUTION    640    641	002336				20$:	RETURNDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 11-2BATCH/PRINT QUEUES INITIALIZAT      IONS    642DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 12BATCH/PRINT QUEUES INITIALIZATIONS    644    645    646    647						;*****************************************    648						;    649							.SBTTL	DISPLAY DATE AND TIME    650						;    651						;*****************************************    652    653    654    655					;    656					; **-DSTIM-DISPLAY CURRENT TIME OF DAY    657					;    658    659	002340				TIMBUF:	.BLKW	10    660    661	002360	   033 	   131 	   040 	TIMLOC:	.ASC      IZ	<ESC><CD><31.+1.><0><31.+53.>    662	002366				TIMMSG:	.BLKW	23		;TIME AND DATE DISPLAY    663    664    665	002434				DSTIM:    666    667    668	002434					INH$S			;INHIBIT CONTEXT SWITCHING    669	002450					DIR$	#GETIME,DIRERR	;GET TIME PARAMETERS    670    671	002464					SWITCH$	10$		;SWITCH TO SYSTEM STATE    672	002470	016767 	000000G	000704 		MOV	$TCPU0,NEWCP0	;READ VALUE OF IDLE LOOP COUNTER    673	002476	016767 	000000G	000700 		MOV	$TCPU1,NEWCP1    674	002504					RETURN    675    676	002506			      	10$:	ENB$S			;ENABLE CONTEXT SWITCHING AGAIN    677    678    679	002520	016767 	177626 	000054 		MOV	TIMBUF+G.TISC,NEWSEC ;GET THE SECOND COUNT THIS TIME    680    681	002526	012700 	002366'			MOV	#TIMMSG,R0	;CONVERSION BUFFER    682	002532	010003 				MOV	R0,R3		;SAVE ITS ADDR    683	002534	012701 	002340'			MOV	#TIMBUF,R1	;TIME PARAMETERS    684	002540					CALL	$DAT		;CONVERT DATE    685	002544	112720 	000040 			MOVB	#' ,(R0)+	;INSERT A SPACE    686	002550	012702 	000003 			MOV	#3,R2		;CONVERT ASCII OF          687	002554					CALL	$TIM		;HOURS, MINS, AND SEC    688	002560	112710 	000001 			MOVB	#1,(R0)		;INSERT LINE TERMINATOR    689	002564	012703 	002360'			MOV	#TIMLOC,R3	;POINT TO OUTPUT STRING    690	002570					CALL	OUTLIN		;OUTPUT CURRENT TIME    691	002574					RETURN    692    693DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 13DISPLAY DATE AND TIME    695    696    697						;********************************************************    698						;    699							.SBTTL	DISPLAY TOTAL UPTIME       FOR TRAX DEMO    700						;    701						;********************************************************    702    703    704    705					;    706					; ADD UP THE SECONDS TO 360 THEN UPDATE THE 10TH HOUR COUNTER.    707					; WHENEVER THAT OVERFLOWS UPDATE THE HOUR COUNTER AND DISPLAY    708					; THE LINE.    709					;    710					;    711					; NEW ALGORITHM FOR SECOND UPDATES -- IT LOOKS AT THE SECOND COUNT    712					; THIS TIME AND COMPARES WITH THE SECOND COUNT LAST TIME, ADJUSTING    713					; FOR PASSING GO       (60 SECONDS).  THIS DIFFERENCE IS HOW MUCH TIME HAS    714					; PASSED.  THIS MAKES THE UPTIME ALGORITHM SELF-CORRECTING AS LONG    715					; AS RMDEMO'S MARK-TIME TAKES LESS THEN 60 SECS TO COMPLETE (E.G.    716					; PRESSING COPY ON A VT52 WITH COPIER) YET PEOPLE PLAYING WITH THE    717					; TIME COMMAND CANNOT AFFECT THE UPTIME COUNT BY MORE THAN A MINUTE    718					; EVERY TIME THEY PLAY (SO THEY SHOULD'T BOTHER).    719    720    721					;************************************************************      *************    722					;    723					;	WHEN THE INFORMATION BECOMES AVAILABLE A MODIFICATION THAT SHOULD    724					;	BE MADE TO THIS SECTION IS TOO REPLACE TOTAL UPTIME OF TRAX DEMO    725					;	WITH TOTAL UPTIME FOR THE SYSTEM.    726					;    727					;*************************************************************************    728    729	002576	177704 			SEC:	.WORD	-60.		;SECONDS COUNT DOWN FOR TENTHS OF HOUR    730	002600	000000 			OLDSEC:	.WORD	0		;SECONDS OF MINUTES LAST TIME THRU    731	002602	00000      0 			NEWSEC:	.WORD   0		;SECONDS OF MINUTES THIS TIME THRU    732	002604	000000 			MIN:	.WORD	0		;TENTHS OF HOUR ACCUMULATOR    733	002606	000000 			HOURS:	.WORD	0		;HOURS    734    735	002610	   033 	   131 	   040 	UPTIM:	.ASCII	<ESC><CD><31.+1><0><31.+32.>/UP /    736	002620				UPNUM:	.BLKB	10.		;LEAVE ROOM FOR HOURS AND TENTHS    737	002632	   040 	   110 	   122 	HRM:	.ASCII	/ HRS/<1>	;THE END OF MESSAGE    738    739    740						.EVEN    741	002640	016701 	177736 		UPTIME:	MOV	NEWSEC,R1	;PICK UP THIS       TIMES SECONDS    742	002644	020167 	177730 			CMP	R1,OLDSEC	;HAS THE SECOND HAND PASSED THE 12    743	002650	002002 				BGE	5$		;IF GE NO    744					;    745					; THE SKINNY HAND HAS PASSED THE 12, ADJUST IT    746					;    747	002652	062701 	000074 			ADD	#60.,R1    748	002656	166701 	177716 		5$:	SUB	OLDSEC,R1	;HOW LONG HAS IT BEEN    749	002662	016767 	177714 	177710 		MOV	NEWSEC,OLDSEC	;SAVE THIS  FOR LAST    750	002670	060167 	177702 			ADD	R1,SEC		;COUNT DOWN    751	002674	100415 				BMI	10$		;IF NOT       TO ZERO YETDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 13-1DISPLAY TOTAL UPTIME FOR TRAX DEMO    752	002676	162767 	000074 	177672 		SUB	#60.,SEC	;RESET THE TIMER FOR 1 MINUTE    753	002704	005267 	177674 			INC	MIN		;ADD ANOTHER MINUTE    754	002710	022767 	000074 	177666 		CMP	#60.,MIN	;UP THERE YET    755	002716	001004 				BNE	10$		;IF NE NO    756	002720	005267 	177662 			INC	HOURS		;ONE MORE HOUR    757	002724	005067 	177654 			CLR	MIN		;NO TENTHS    758    759	002730	012700 	0      02620'		10$:	MOV	#UPNUM,R0	;THIS IS WHERE WE CONVERT INTO    760	002734	016701 	177646 			MOV	HOURS,R1	;DO THE HOURS    761	002740	001403 				BEQ	15$		;NO HOURS, SKIP IT    762	002742	005002 				CLR	R2		;WATCH OUT FOR LEADING ZEROS    763	002744					CALL	$CBDMG    764    765	002750	112720 	000072 		15$:	MOVB	#':,(R0)+	;INSERT THE COLON    766	002754	016701 	177624 			MOV	MIN,R1		;GET THE NUMBER OF MINUTES    767	002760	022767 	000012 	177616 		CMP	#10.,MIN	;CHECK IF YOU ARE GOING TO HAVE A LEADING ZERO    7      68	002766	003402 				BLE	20$		;NOT GOING TO HAVE LEADING ZERO    769	002770	112720 	000060 			MOVB	#'0,(R0)+	;INSERT THE LEADING ZERO    770    771	002774	005002 			20$:	CLR	R2		;SUPPRESS LEADING ZEROES    772	002776					CALL	$CBDMG    773	003002	105010 				CLRB	(R0)		;TERMINATE STRING    774	003004	012703 	002610'			MOV	#UPTIM,R3	;SEND OUT STRING    775	003010					CALL	OUTLIN    776    777	003014					RETURN			;    778    779DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 14DISPLAY TOTAL       UPTIME FOR TRAX DEMO    781    782    783						;*********************************************************    784						;    785							.SBTTL	DISPLAY NAME OF NEXT RUNNABLE TASK    786						;    787						;*********************************************************    788    789    790    791    792	003016	   033 	   131 	   041 	TSKLOC:	.ASCII	<ESC><CD><31.+2.><0><31.+7.>"*"    793	003024	   040 	   040 	   040 	TSKNAM:	.ASCII	/      */<1>    794	003034				EXETSK:	.BLKW	2    795	003040	   130 	   130 	   130 	L      STTSK:	.ASCII	/XXXX/		;INITIALIZE TO SOMETHING    796    797    798	003044				NXTTSK:    799    800						.ENABL	LSB    801    802	003044	012705 	003034'			MOV	#EXETSK,R5	;POINT TO NEXT RUNNABLE TASK BUFFER    803	003050					SWITCH$	110$		;SWITCH TO SYSTEM STATE    804	003054	016700 	000000G			MOV	$RQSCH,R0	;IS THERE A RESCHEDULE REQUEST?    805	003060	001002 				BNE	40$		;IF NE YES    806	003062	016700 	000000G			MOV	$TKTCB,R0	;ELSE, GET OUR OWN TCB ADDRESS    807	003066	005760 	000000G		40$:	TST	T.ACTL(R0)      	;IS THIS THE NULL TASK?    808	003072	001440 				BEQ	65$		;IF EQ YES    809	003074	020067 	000000G			CMP	R0,$TKTCB	;ARE WE LOOKING AT OURSELVES?    810	003100	001432 				BEQ	60$		;IF EQ YES -- IGNORE IT    811    812    813	003102	005760 	000000G			TST	T.STAT(R0)	;IS THE TASK BLOCKED?    814	003106	001027 				BNE	60$		;IF NE YES    815	003110	005760 	000000G			TST	T.ASTL(R0)	;IS AN AST QUEUED FOR THE TASK?    816	003114	001404 				BEQ	50$		;IF EQ NO    817	003116	032760 	000000C	000000G		BIT	#T2.AST!T2.DST      ,T.ST2(R0)  ;IN AST OR AST'S DISABLED?    818	003124	001426 				BEQ	80$		;IF EQ NO    819	003126	032760 	000000C	000000G	50$:	BIT	#T2.STP!T2.SPN,T.ST2(R0)  ;IS TASK STOPPED OR SUSPENDED?    820	003134	001014 				BNE	60$		;IF NE YES    821	003136	032760 	000000G	000000G		BIT	#T2.WFR,T.ST2(R0)  ;IS TASK IN WAITFOR STATE?    822	003144	001416 				BEQ	80$		;IF EQ NO    823	003146	016004 	000000G			MOV	T.PCB(R0),R4	;GET TASK'S PCB ADDRESS    824	003152	016404 	000000G			MOV	P.HDR(R4),R4	;GET TASK'S HEADER ADDRES      S    825	003156	036474 	000004 	000006 		BIT	H.EFLM(R4),@H.EFLM+2(R4)  ;IS THE WAITFOR SATISFIED?    826	003164	001006 				BNE	80$		;IF NE YES    827	003166	016000 	000000G		60$:	MOV	T.ACTL(R0),R0	;GET TCB ADDRESS OF NEXT TASK IN ATL    828	003172	000735 				BR	40$		;SEE IF IT IS NEXT TO EXECUTE    829	003174	005025 			65$:	CLR	(R5)+		;STORE BLANKS AS CURRENT TASK NAME    830	003176	005015 				CLR	(R5)		;						;    831	003200	000404 				BR	100$		;    832    833    834	003202	016025 	000000G		80$:	MOV	T.NAM(      R0),(R5)+	;STORE TASK NAME    835	003206	016025 	000002G			MOV	T.NAM+2(R0),(R5)+  ;    836    837DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 14-1DISPLAY NAME OF NEXT RUNNABLE TASK    838	003212				100$:	RETURN    839    840	003214	012704 	003040'		110$:	MOV	#LSTTSK,R4	;POINT TO LAST RUNNABLE TASK NAME    841	003220	012705 	003034'			MOV	#EXETSK,R5	;AND TO THIS TASK NAME    842	003224	022524 				CMP	(R5)+,(R4)+	;IS IT THE SAME TASK?    843	003226	001002 				BNE	120$		;IF NE NO    844	      003230	021514 				CMP	(R5),(R4)	;    845	003232	001437 				BEQ	130$		;IF EQ YES    846    847    848	003234	012704 	003040'		120$:	MOV	#LSTTSK,R4	;POINT TO STORAGE AREA    849	003240	012705 	003034'			MOV	#EXETSK,R5    850	003244	011514 				MOV	(R5),(R4)	;SAVE NAME OF DISPLAYED TASK    851	003246	016564 	000002 	000002 		MOV	2(R5),2(R4)	;    852	003254	005715 				TST	(R5)		;IS IT THE NULL TASK?    853	003256	001015 				BNE	125$		;IF NE NO    854	003260	005765 	000002 			TST	2(R5)    855	003264	001012 				BN      E	125$		;IF NE NO    856	003266	012767 	044440 	177530 		MOV	#" I,TSKNAM	;DISPLAY  "* IDLE *"    857	003274	012767 	046104 	177524 		MOV	#"DL,TSKNAM+2    858	003302	012767 	020105 	177520 		MOV	#"E ,TSKNAM+4    859	003310	000410 				BR	130$		;    860    861	003312	012700 	003024'		125$:	MOV	#TSKNAM,R0	;GET CONVERSION BUFFER ADDRESS    862	003316	012501 				MOV	(R5)+,R1	;GET FIRST HALF OF TASK NAME    863    864	003320					CALL	$C5TA		;CONVERT TO ASCII AND STORE    865	003324	012501 				MOV	(R5)+,R1	;GET LAS      T HALF    866	003326					CALL	$C5TA		;CONVERT AND STORE    867    868    869	003332	012703 	003016'		130$:	MOV	#TSKLOC,R3	;POINT TO OUTPUT PACKET    870	003336					CALL	OUTLIN    871	003342					RETURN    872    873    874						.DSABL	LSB    875    876DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 15DISPLAY NAME OF NEXT RUNNABLE TASK    878    879    880						;*******************************************    881						;    882							.SBTTL	DISPLAY CPU USAGE COUNT    883						;    884						;      *******************************************    885    886    887    888	003344	   033 	   131 	   041 	CPULOC:	.ASCII	<ESC><CD><31.+2.><0><31.+19.>    889    890	003351	   103 	   120 	   125 	CPUMSG:	.ASCII	/CPU:        /    891						.EVEN    892    893    894	003366	000000 			TICKMN:	.WORD	0	;NUMBER OF TICKS IN A MINUTE    895	003370	000000 			OTICKS:	.WORD	0	;LAST TICK VALUE    896	003372	000000 			TICKS:	.WORD	0	;TICK DIFFERENCE SINCE LAST TIME    897	003374	000000 			LPSTCK:	.WORD	0	;LOOPS PER TICK          898	003376	000000 			OLDCP0:	.WORD	0    899	003400	000000 			OLDCP1:	.WORD	0    900	003402	000000 			NEWCP0:	.WORD	0    901	003404	000000 			NEWCP1:	.WORD	0    902    903    904	003406				CPUCNT:    905    906    907    908					;    909					; CALCULATE NUMBER OF TICKS PER MINUTE:    910					;    911    912    913	003406	016700 	176744 			MOV	TIMBUF+G.TICP,R0  ;GET TICK FREQUENCY (PER MINUTE)    914	003412	070027 	000074 			MUL	#60.,R0		;AND MULTIPLY BY 60 SEC/MIN    915	003416	010167 	177744 			MOV	R1,TICKM      N	;SAVE VALUE    916    917    918					;    919					; CALCULATE NUMBER OF TIMES IDLE LOOP COUNTER    920					; IS INCREMENTED IN ONE TICK.    921					;    922    923	003422	012700 	000000G			MOV	#$$CPU,R0	;$$CPU CONTAINS NUMBER OF TIMES IDLE    924	003426	005001 				CLR	R1		;COUNTER OVERFLOWS/MINUTE    925    926	003430	071067 	177732 			DIV	TICKMN,R0	;DOUBLE PRECISION R0,R1 WHEN DIVIDED BY    927									;TICKS/MINUTE CONVERTS TO NUMBER OF TIMES    928									;IDLE LOOP IS INCREMENTED IN ONE SECOND.    92      9    930	003434	010067 	177734 			MOV	R0,LPSTCK	;STORE VALUE    931    932    933					;    934					; CALCULATE TICKS ELAPSED SINCE BEGINNING OF MINUTEDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 15-1DISPLAY CPU USAGE COUNT    935					;    936    937	003440	016701 	176706 			MOV	TIMBUF+G.TISC,R1  ;GET CURRENT SECOND    938	003444	070167 	176706 			MUL	TIMBUF+G.TICP,R1  ;MULTIPLY BY NUMBER OF TICKS/SEC.    939	003450	066701 	176700 			ADD	TIMBUF+G.TICT,R1  ;AND ADD TICKS SINCE LAST MINU      TE    940    941    942    943    944	003454	010100 				MOV	R1,R0		;MAKE A COPY    945	003456	166700 	177706 			SUB	OTICKS,R0	;GET TIME ELAPSED (IN TICKS) SINCE    946									;LAST TIME    947	003462	003002 				BGT	5$		;IF GT- THEN HAVEN'T PASSED MINUTE    948    949	003464	066700 	177676 			ADD	TICKMN,R0	;ADD # OF TICKS IN MINUTE TO GET POSITIVE    950									;NUMBER    951	003470	010167 	177674 		5$:	MOV	R1,OTICKS	;CAN NOW SAVE CURRENT TICK VALUE FOR NEXT TIME    952    953	003474	010067 	177672 			MOV	      R0,TICKS	;ALSO SAVE TICKS SINCE LAST TIME    954    955    956					;    957					; CALCULATE CHANGE IN IDLE LOOP COUNTER VALUE    958					;    959    960	003500	016701 	177676 			MOV	NEWCP0,R1	;GET LOW ORDER PART OF COUNTER    961	003504	016700 	177674 			MOV	NEWCP1,R0	;AND MIDDLE BITS OF COUNTER    962    963	003510	166701 	177662 			SUB	OLDCP0,R1	;CALCULATE TIMES THROUGH LOOP    964	003514	005600 				SBC	R0    965	003516	166700 	177656 			SUB	OLDCP1,R0    966    967	003522	016767 	177654 	177646 		MOV	NEWC      P0,OLDCP0	;SAVE VALUES FOR NEXT TIME    968	003530	016767 	177650 	177642 		MOV	NEWCP1,OLDCP1    969    970    971    972    973					;    974					; CALCULATE CPU UTILIZATION PERCENTAGE    975					;    976    977    978	003536	071067 	177630 			DIV	TICKS,R0	;DIVIDE TOTAL TICKS SINCE LAST TIME INTO    979									;TIMES THROUGH IDLE LOOP.    980	003542	005001 				CLR	R1    981	003544	070027 	000144 			MUL	#100.,R0	;MULTIPLY BY 100. SINCE WE WANT A PERCENTAGE    982	003550	071067 	177620 			DIV	LPSTCK,R0	;NOW       DIVIDE BY 100% IDLE VALUE TO GET IDLE %    983    984	003554	012701 	000144 			MOV	#100.,R1	;100 - IDLE % = CPU UTILIZATION PERCENTAGE    985	003560	160001 				SUB	R0,R1    986    987    988					;    989					; OUTPUT RESULT:    990					;    991DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 15-2DISPLAY CPU USAGE COUNT    992    993	003562	020127 	000144 			CMP	R1,#100.	;IF CPU >100% THEN SOMETHING WRONG SO SHOW 0    994	003566	003002 				BGT	9$		;(FIRST TIME THROUGH THIS ROUTINE)    995	      003570	005701 				TST	R1    996	003572	002001 				BGE	10$    997    998    999	003574	005001 			9$:	CLR	R1   1000   1001   1002	003576	012700 	003355'		10$:	MOV	#CPUMSG+4,R0	;POINT TO DISPLAY AREA   1003	003602	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1004	003604					CALL	$CBDMG		;CONVERT TO DECIMAL   1005	003610	112720 	000045 			MOVB	#'%,(R0)+	;INSERT PERCENTAGE SIGN   1006	003614	112720 	000040 			MOVB	#' ,(R0)+   1007	003620	112720 	000040 			MOVB	#' ,(R0)+   1008	003624	112710 	000001 			MOVB	#1,(      R0)		;AND FIELD TERMINATOR   1009	003630	012703 	003344'			MOV	#CPULOC,R3	;POSITION POINTER   1010	003634					CALL	OUTLIN		;DISPLAY CPU COUNT   1011   1012	003640					RETURN   1013   1014DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 16DISPLAY CPU USAGE COUNT   1016   1017   1018						;********************************************   1019						;   1020							.SBTTL	DISPLAY POOL INFORMATION   1021						;   1022						;********************************************   1023   1024   1025   1026	      				;   1027					; **-DISPLAY THE DECIMAL NUMBER OF WORDS IN THE   1028					;	LARGEST POOL BLOCK, THE DECIMAL NUMBER OF   1029					;	FREE WORDS IN POOL, AND THE NUMBER OF   1030					;	FREE BLOCKS IN POOL   1031					;   1032   1033	003642				POOL:	.BLKW	3		;RAW DATA ON POOL STATISTICS   1034	003650	000000 			MAXBS:	.WORD	0		;MAX CONTIGUOUS BLOCKS IN POOL   1035	003652	000000 			TOTALS:	.WORD	0		;TOTAL FREE WORDS IN POOL   1036	003654	000000 			FRAGS:	.WORD	0		;NUMBER OF POOL FRAGMENTS   1037   1038	003656	         033 	   131 	   041 	POOLOC:	.ASCII	<ESC><CD><31.+2><0><31.+30.> ;POSITION CURSOR   1039	003663	   120 	   117 	   117 	POOLMG:	.ASCII	/POOL=                  /  ;POOL STATISTICS   1040   1041   1042	003712	012701 	003642'		POOLIN:	MOV	#POOL,R1	;POINT TO POOL RAW DATA BUFFER   1043	003716	005021 				CLR	(R1)+		;CLEAR NUMBER OF FRAGMENTS   1044	003720	005021 				CLR	(R1)+		;CLEAR TOTAL POOL   1045	003722	005011 				CLR	(R1)		;CLEAR MAXIMUM PIECE   1046	003724					SWITCH$	32$		;SWITCH TO SYSTEM STATE   1047	      003730	012704 	000000G			MOV	#$CRAVL,R4	;GET ADDRESS OF POOL LISTHEAD   1048	003734	000411 				BR	31$		;BRANCH INTO LOOP   1049	003736	021164 	000002 		20$:	CMP	(R1),2(R4)	;IS MAX > THIS BLOCK?   1050	003742	103002 				BHIS	30$		;IF HIS YES   1051	003744	016411 	000002 			MOV	2(R4),(R1)	;NO, SET NEW MAX   1052	003750	066441 	000002 		30$:	ADD	2(R4),-(R1)	;ADD THIS SPACE TO TOTAL   1053	003754	005241 				INC	-(R1)		;INCREMENT NUMBER OF POOL FRAGMENTS   1054	003756	022121 				CMP	(R1)+,(R1)+	;POINT R1 TO END       OF RAW DATA BUFFER   1055	003760	011404 			31$:	MOV	(R4),R4		;GET ADDR OF NEXT BLOCK   1056	003762	001365 				BNE	20$		;IF NE MORE TO EXAMINE   1057	003764					RETURN			;ELSE, RETURN TO TASK STATE   1058   1059	003766	012700 	003670'		32$:	MOV	#POOLMG+5,R0	;POINT INTO POOL DISPLAY BUFFER   1060	003772	012704 	003646'			MOV	#POOL+4,R4	;POINT INTO RAW DATA BUFFER   1061	003776	011467 	177646 			MOV	(R4),MAXBS	;STORE NEW MAXIMUM BLOCK VALUE   1062	004002	011401 				MOV	(R4),R1		;AND PUT A COPY IN R1   1063	004      004	006201 				ASR	R1		;CONVERT TO WORDS   1064	004006	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1065	004010					CALL	$CBDMG		;CONVERT TO DECIMAL   1066	004014	112720 	000072 			MOVB	#':,(R0)+	;STORE FIELD TERMINATOR   1067	004020	014467 	177626 			MOV	-(R4),TOTALS	;STORE NEW TOTAL POOL VALUE   1068	004024	011401 				MOV	(R4),R1		;AND PUT A COPY IN R1   1069	004026	006201 				ASR	R1		;CONVERT TO WORDS   1070	004030	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1071	004032					CALL	$CBDMG		;CONVERT TO DE      CIMAL   1072	004036	112720 	000072 			MOVB	#':,(R0)+	;STORE FIELD TERMINATORDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 16-1DISPLAY POOL INFORMATION   1073	004042	014467 	177606 			MOV	-(R4),FRAGS	;STORE NEW POOL FRAGMENTS VALUE   1074	004046	011401 				MOV	(R4),R1		;AND PUT A COPY IN R1   1075	004050	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1076	004052					CALL	$CBDMG		;CONVERT TO DECIMAL   1077	004056	112720 	000040 			MOVB	#' ,(R0)+	;INSERT SOME SPACES   1078	004062	112720 	0      00040 			MOVB	#' ,(R0)+   1079	004066	112710 	000001 			MOVB	#1,(R0)		;INSERT LINE TERMINATOR   1080	004072	012703 	003656'			MOV	#POOLOC,R3	;POSITION POINTER TO OUTPUT STRING   1081	004076					CALL	OUTLIN   1082   1083	004102					RETURN			;   1084   1085DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 17DISPLAY POOL INFORMATION   1087   1088   1089						;***********************************************   1090						;   1091							.SBTTL	DISPLAY CACHE INFORMATION   1092						;   1093						;      ***********************************************   1094   1095   1096					;   1097					; **- DISPLAYS THE FOLLOWING INFORMATION ABOUT THE CACHE   1098					;   1099					;	1. PERCENT OF THE CACHE THAT IS DEAD   1100					;	2. PERCENT OF THE CACHE THAT IS UNLOCKED   1101					;	3. PERCENT OF THE CACHE THAT IS LOCKED   1102					;	4. NUMBER OF CALLS MADE TO THE CACHE SINCE THE LAST TIME THIS   1103					;	   ROUTINE WAS RUN   1104					;	5. PERCENT OF THESE CALLS WHICH WERE HITS   1105					;   1106   1107   1108	0041      04	000000 			DEAD:	.WORD 	0   1109	004106	000000 			UNLCKD: .WORD	0   1110	004110	000000 			LOCKED:	.WORD	0   1111	004112	000000 			CALLS:	.WORD	0   1112	004114	000000 			TCALLS:	.WORD	0   1113	004116	000000 			HITS:	.WORD	0   1114	004120	000000 			THITS:	.WORD	0   1115   1116	004122	000000 			COM.AD:: .WORD	0		;ADDRESS OF THE BASE OF THE COMMON AREA   1117	004124	000000 			CADR::	.WORD	0		;ADDRESS OF THE BASE OF THE CACHE   1118	004126	001000 			CSIZE::	.WORD	1000   1119   1120	004130	   033 	   131 	   04      1 	CACLOC:	.ASCII	<ESC><CD><31.+2.><0><31.+50.>	;POSITION CURSOR   1121	004135	   103 	   101 	   103 	CACHMG:	.ASCII	/CACHE=                       /	;CACHE STATISTICS   1122   1123	004172	   040 	   116 	   117 	NCALLS:	.ASCII	/ NO CALLS/<1>   1124   1125   1126   1127	004204				CACHE:   1128   1129	004204					INH$S			;INHIBIT CONTEXT SWITCHING   1130	004220	016767 	177700 	177646 		MOV	CADR,UISAR3	;MAP INTO CACHE   1131	004226	012767 	077406 	177606 		MOV	#77406,UISDR3   1132   1133   1134	004234	016700 	      060000G			MOV	60000+P.DEAD,R0	;GET AMOUNT OF DEAD STORAGE   1135	004240	016702 	177662 			MOV	CSIZE,R2	;SET UP DIVISOR PARAMETER   1136	004244					CALL	PRCNT		;CALCULATE THE PERCENTAGE   1137	004250	010067 	177630 			MOV	R0,DEAD		;STORE THE RESULT   1138   1139	004254	016700 	060000G			MOV     60000+P.ALLOC,R0 ;GET AMOUNT OF UNLOCKED SPACE   1140	004260					CALL	PRCNT   1141	004264	010067 	177616 			MOV	R0,UNLCKD	;STORE RESULT   1142   1143	004270	012767 	000144 	177612 		MOV	#100.,LOCKED	;START WITH 100%D      EMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 17-1DISPLAY CACHE INFORMATION   1144	004276	166767 	177602 	177604 		SUB	DEAD,LOCKED	;SUBTRACT DEAD STORAGE PERCENTAGE   1145	004304	166767 	177576 	177576 		SUB	UNLCKD,LOCKED	;SUBTRACT UNLOCKED STORAGE PERCENTAGE   1146   1147	004312	005767 	177572 			TST	LOCKED		;IF LOCKED IS NEGATIVE THEN WE HAVE A   1148									;ROUNDING ERROR WHICH WE JUST PATCH UP   1149	004316	002004 				BGE	5$   1150   1151	004320	005067 	177564 			CLR	LOCKED   1152	      004324	005367 	177556 			DEC	UNLCKD   1153   1154	004330	016700 	060000G		5$:	MOV	60000+P.HIT,R0	;GET NUMBER OF HITS   1155	004334	166700 	177560 			SUB	THITS,R0	;SUBTRACT TOTAL LAST TIME TO GET TOTAL SINCE THEN   1156	004340	016767 	060000G	177552 		MOV	60000+P.HIT,THITS ;SAVE FOR NEXT TIME   1157   1158	004346	016702 	060000G			MOV	60000+P.NUM,R2	;GET NUMBER OF CALLS   1159	004352	166702 	177536 			SUB	TCALLS,R2	;GET NUMBER THIS TIME   1160	004356	010267 	177530 			MOV	R2,CALLS	;SAVE FOR OUTPUT   1161	004      362	016767 	060000G	177524 		MOV	60000+P.NUM,TCALLS ;SAVE FOR NEXT TIME   1162   1163	004370					ENB$S			;ENABLE CONTEXT SWITCHING   1164   1165	004402					CALL	PRCNT		;CALCULATE HIT PERCENTAGE   1166	004406	010067 	177504 			MOV	R0,HITS		;STORE RESULT   1167   1168	004412	012700 	004143'			MOV	#CACHMG+6,R0	;POINT INTO CACHE DISPLAY BUFFER   1169   1170	004416	016701 	177462 			MOV	DEAD,R1		;NOW WE ARE GOING TO CONVERT TO OUTPUT FORMAT   1171	004422	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1172	004424	      				CALL	$CBDMG		;CONVERT TO DECIMAL   1173	004430	112720 	000072 			MOVB	#':,(R0)+	;INSERT FIELD SEPARATOR   1174   1175	004434	016701 	177446 			MOV	UNLCKD,R1	;   1176	004440	005002 				CLR	R2		;   1177	004442					CALL	$CBDMG		;   1178	004446	112720 	000072 			MOVB	#':,(R0)+	;   1179   1180	004452	016701 	177432 			MOV	LOCKED,R1	;   1181	004456	005002 				CLR	R2		;   1182	004460					CALL	$CBDMG		;   1183	004464	005767 	177422 			TST	CALLS		;SEE IF ANY CALLS WERE MADE   1184	004470	001430 				BEQ	10$		;IF       EQ THEN CLEANUP   1185   1186	004472	112720 	000040 			MOVB	#' ,(R0)+   1187	004476	112720 	000040 			MOVB	#' ,(R0)+   1188   1189   1190	004502	016701 	177404 			MOV	CALLS,R1	;   1191	004506	005002 				CLR	R2		;   1192	004510					CALL	$CBDMG		;   1193	004514	112720 	000072 			MOVB	#':,(R0)+	;   1194   1195	004520	016701 	177372 			MOV	HITS,R1		;   1196	004524	005002 				CLR	R2   1197	004526					CALL	$CBDMG   1198   1199	004532	112720 	000040 			MOVB	#' ,(R0)+	;ERASE SOME SPACES   1200	004536	112720 	000040       			MOVB	#' ,(R0)+DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 17-2DISPLAY CACHE INFORMATION   1201	004542	112720 	000040 			MOVB	#' ,(R0)+   1202	004546	112720 	000040 			MOVB	#' ,(R0)+   1203   1204	004552	112710 	000001 		10$:	MOVB	#1,(R0)		;INSERT LINE TERMINATOR   1205	004556	012703 	004130'			MOV	#CACLOC,R3	;POSITION POINTER   1206	004562					CALL	OUTLIN   1207   1208	004566	005767 	177320 			TST	CALLS		;DO WE WANT TO PUT OUT THE "NO CALLS" MESSAGE?   1209	004572	001004 				BNE	      15$		;IF NE - NO   1210   1211	004574	012703 	004172'			MOV	#NCALLS,R3	;POINT TO MESSAGE   1212	004600					CALL	OUTLIN   1213   1214   1215	004604				15$:	RETURN   1216   1217DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 18DISPLAY CACHE INFORMATION   1219   1220   1221						;************************************   1222						;   1223							.SBTTL	I/O ROUTINES   1224						;   1225						;************************************   1226   1227   1228   1229   1230					;   1231					; **-OUTLIN -O      UTPUT STRING TO DISPLAY BUFFER   1232					;   1233					; INPUTS:   1234					;   1235					;	R3=ADDRESS OF OUTPUT STRING   1236					;   1237					; NOTE:	THE <1> BIT IS TREATED AS A SPECIAL CHARACTER. IT SERVES AS A   1238					;	STRING DELIMITER, AND WHEN IT IS ENCOUNTERED OUTLIN STOPS PROCESSING   1239					;	THE STRING.   1240					;   1241   1242	004606	010246 			OUTLIN:: MOV	R2,-(SP)	;SAVE CONTENTS OF R2   1243   1244	004610	112302 			10$:	MOVB	(R3)+,R2	;NEXT CHARACTER TO OUTPUT   1245	004612	022702 	000001       			CMP	#1,R2		;SEE IF WE REACHED THE END OF THE STRING   1246	004616	001403 				BEQ	20$		;IF EQ YES   1247	004620					CALL	OUTCHR		;OUTPUT THE CHARACTER   1248	004624	000771 				BR	10$		;GO BACK FOR MORE   1249   1250	004626	012602 			20$:	MOV	(SP)+,R2	;RESTORE R2   1251	004630					RETURN   1252   1253   1254   1255					;   1256					; **-OUTCHR -OUTPUT CHARACTER TO DISPLAY BUFFER   1257					;   1258					; INPUTS:   1259					;   1260					;	R2=CHARACTER TO BE OUTPUT   1261					;   1262   1263   1264	004632	11      0277 	173344 		OUTCHR:	MOVB	R2,@BUFPTR	;INSERT BYTE IN BUFFER   1265	004636	005267 	173340 			INC	BUFPTR		;BUMP BUFFER POINTER   1266	004642	005267 	173336 			INC     BUFCTR		;AND BYTE COUNT   1267	004646	022767 	000400 	173330 		CMP 	#256.,BUFCTR	;BUFFER FULL?   1268	004654	101002 				BHI	10$		;IF HI NO   1269	004656					CALL	OUTBUF		;DISPLAY BUFFER   1270	004662				10$:	RETURN   1271   1272DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 19I/O ROUTINES   1274   1275   1276					;   1277	      				; **-OUTBUF -OUTPUT DISPLAY BUFFER   1278					;   1279					; INPUTS:   1280					;   1281					;	BUFCTR=NUMBER OF BYTES TO OUTPUT   1282					;   1283   1284						.ENABL	LSB   1285   1286   1287	004664					DAT:	.BLKW	15.   1288   1289   1290	004722				OUTBUF::   1291   1292						.IF  DF  $$PRI   1293   1294	004722	012767 	020000 	173252 		MOV	#20000,BUFPTR	;BUFFER IS IN EXTENDED MEMORY   1295   1296						.IFF   1297   1298						MOV	#BUFF,BUFPTR   1299   1300						.ENDC   1301   1302	004730					DIR$	#OUTPUT      		;OUTPUT THE BUFFER TO THE SCREEN   1303   1304   1305						.IF  DF  $$PRI   1306   1307   1308	004736	005767 	173376 			TST	DSPFLG		;HAVE WE UPDATED ONE OF SPECIAL DISPLAYS   1309	004742	001027 				BNE	5$   1310   1311	004744	005767 	173654 			TST	PRTFLG		;DO WE WANT TO UPDATE BUFFER FOR HARDCOPY?   1312	004750	001424 				BEQ	5$		;IF EQ THEN NO   1313   1314	004752	012767 	000001 	177710 		MOV	#1,DAT+4	;SET CODE FOR UPDATE   1315	004760	016767 	173220 	177704 		MOV	BUFCTR,DAT+6	;PASS TO PRINT NO. OF CHARA      CTERS IN BUFFER   1316	004766					DIR$	#SEND,DIRERR	;PASS THE INFORMATION TO THE HARDCOPY TASK   1317	005002					CALL	UNSTOP		;UNSTOP THE HARDCOPY TASK   1318	005006					DIR$	#STOP1,DIRERR	;STOP OURSELVES UNTIL HARDCOPY IS FINISHED   1319   1320   1321   1322	005022	005767 	173320 		5$:	TST	PRT.OK		;IS HARDCOPY BUFFER READY TO BE OUTPUT?   1323	005026	001424 				BEQ	10$		;IF EQ NO   1324	005030	005767 	173570 			TST	PRTFLG		;DO WE WANT A HARDCOPY?   1325	005034	001421 				BEQ	10$   1326   1327	005036	012767       	000002 	177624 		MOV	#2,DAT+4	;SET PRINT CODE   1328	005044					DIR$	#SEND,DIRERR	;PASS THE INFORMATION TO THE HARDCOPY TASK   1329	005060					CALL	UNSTOP		;UNSTOP THE HARDCOPY TASK   1330	005064					DIR$	#STOP1,DIRERR	;STOP OURSELVES UNTIL HARDCOPY IS FINISHEDDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 19-1I/O ROUTINES   1331   1332   1333	005100	005067 	173242 		10$:	CLR	PRT.OK		;DON'T WANT TO GO THROUGH THIS NEXT TIME   1334   1335   1336						.ENDC   1337   1338	005104	005067 	      173074 			CLR	BUFCTR		;CLEAR BUFFER BYTE COUNT   1339	005110					RETURN   1340   1341						.DSABL	LSB   1342   1343DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 20I/O ROUTINES   1345   1346   1347						;**************************************************   1348						;   1349							.SBTTL	COMMAND PROCESSOR ROUTINES   1350						;   1351						;**************************************************   1352   1353   1354   1355					;   1356					; **-CMDAST-AST WHICH IS CALLED IF AN IO EVENT IS CO      MPLETED. IT SETS A FLAG   1357					;	    WHICH TELLS MAIN PROGRAM THAT USER WOULD LIKE TO REQUEST A COMMAND.   1358					;   1359   1360	005112				AST.ST:	.BLKW	2   1361   1362	005116	122716 	000003 		CMDAST:	CMPB	#3,(SP)		;IS THERE A CONTROL C IN BUFFER?   1363	005122	001003 				BNE	5$   1364	005124					EXIT$S   1365   1366	005132	012767 	000001 	173176 	5$:	MOV	#1,CMDFLG	;SET COMMAND FLAG   1367	005140	005726 				TST	(SP)+		;REMOVE TRAP DEPENDENT PARAMETER FROM STACK   1368	005142					ASTX$S			;EXIT AST         1369   1370   1371					;   1372					; **-CMDS-ROUTINE TO PROCESS USER COMMANDS   1373					;   1374   1375   1376					;   1377					; ERROR MESSAGES:   1378					;   1379   1380   1381	005150	   103 	   117 	   115 	PROMPT:	.ASCII	/COMMAND ?/<1>   1382						.EVEN   1383   1384   1385	005162	   111 	   114 	   114 	ERR1:	.ASCII	/ILLEGAL COMMAND! COMMAND?/<1>   1386						.EVEN   1387   1388   1389	005214	   120 	   122 	   111 	ERR2:	.ASCII	/PRINT OPTION NOT IMPLEMENTED./<1>   1390						.EVEN   1391   1392   139      3   1394						.ENABL	LSB   1395   1396   1397   1398	005252				CMDS:   1399	005252	012700 	000001 			MOV	#1,R0		;WANT A REPLY   1400	005256	012701 	005150'			MOV	#PROMPT,R1	;POINT TO "COMMAND"   1401	005262					CALL	COMMUN		;ASK USER FOR HIS COMMANDDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 20-1COMMAND PROCESSOR ROUTINES   1402   1403   1404	005266	022767 	042510 	000536 		CMP	#"HE,RECBUF	;DOES USER WANT THE HELP DISPLAY?   1405	005274	001005 				BNE	5$		;IF NE-NO   1406	005276					      CALL	HELP		;DISPLAY HELP INFORMATION   1407	005302					CALL	OUTBUF   1408	005306	000761 				BR	CMDS		;GO BACK AND ASK FOR ANOTHER COMMAND   1409   1410   1411	005310	022767 	050101 	000514 	5$:	CMP	#"AP,RECBUF	;DOES USER WANT TO SWITCH TO ANOTHER APPLICATION?   1412	005316	001004 				BNE	10$   1413	005320					CALL	PARNME		;GET NEW PARTITION NAME AND MAPPING ADDRESS   1414	005324	000167 	000440 			JMP	99$   1415   1416	005330	022767 	051120 	000474 	10$:	CMP	#"PR,RECBUF	;DO WE WANT PRINT OPTION   1417	005336      	001004 				BNE	11$   1418   1419   1420						.IF  NDF  $$PRI   1421   1422					; TELL USER THAT PRINT COMMAND NOT IMPLEMENTED   1423   1424						CLR	R0		;NO REPLY NEEDED   1425						MOV	#ERR2,R1	;POINT TO ERROR MESSAGE   1426						CALL	COMMUN   1427						BR	CMDS   1428   1429   1430						.ENDC   1431   1432   1433						.IF  DF  $$PRI   1434	005340					CALL	PRINT		;SPAWN THE PRINT TASK   1435	005344	000167 	000420 			JMP	99$   1436						.ENDC   1437   1438   1439	005350	022767 	050116 	000454 	11$:	CMP	#"NP      ,RECBUF	;ARE WE CANCELLING PRINT OPTION?   1440	005356	001017 				BNE	12$   1441	005360	005067 	173240 			CLR	PRTFLG		;CANCEL PRINT OPTION   1442   1443						.IF  DF  $$PRI   1444	005364	012767 	000003 	177276 		MOV	#3,DAT+4	;SET EXIT FUNCTION CODE   1445	005372					DIR$	#SEND,DIRERR	;TELL HRDCPY TASK TO EXIT   1446	005406					CALL	UNSTOP		;UNSTOP THE PRINT TASK   1447						.ENDC   1448   1449   1450	005412	000167 	000352 			JMP	99$   1451   1452	005416	022767 	051106 	000406 	12$:	CMP	#"FR,RECBUF	;DOES USE      R WANT TO CHANGE UPDATE FREQUENCY OF DISPLAY   1453	005424	001024 				BNE	16$   1454   1455   1456   1457					;   1458					; PROCESS FREQUENCY OF DISPLAY UPPDATE CHANGEDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 20-2COMMAND PROCESSOR ROUTINES   1459					;   1460   1461	005426	012700 	006032'			MOV	#RECBUF,R0	;POINT TO ARGUMENT   1462	005432	062700 	000003 			ADD	#3,R0   1463	005436	005003 				CLR	R3   1464   1465	005440	112001 			14$:	MOVB	(R0)+,R1	;GET A DIGIT   1466	005442	162701 	      000060 			SUB	#60,R1		;CONVERT FROM ASCII   1467	005446	005701 				TST	R1   1468	005450	002407 				BLT	15$		;IF LT THEN NOT A NUMBER   1469	005452	020127 	000011 			CMP	R1,#9.   1470	005456	003004 				BGT	15$		;IF GT THEN NOT A NUMBER EITHER   1471   1472	005460	070327 	000012 			MUL	#12,R3		;RAIZE NUMBER ONE POWER OF TEN   1473	005464	060103 				ADD	R1,R3		;THEN ADD NEW UNITS   1474	005466	000764 				BR	14$   1475   1476	005470	010367 	172646 		15$:	MOV	R3,UPD.FR	;REPLACE WITH NEW FREQUENCY   1477	005474	0      00535 				BR	99$   1478   1479   1480   1481	005476	022767 	054105 	000326 	16$:	CMP	#"EX,RECBUF	;DO WE WANT TO EXIT THE PROGRAM   1482	005504	001021 				BNE	20$		;IF NE NO   1483   1484   1485						.IF  DF  $$PRI   1486   1487	005506	005767 	173112 			TST	PRTFLG		;IS THE HARDCOPY TASK SPAWNED?   1488	005512	001413 				BEQ	161$		;IF EQ THEN ITS NOT - NO NEED TO STOP IT   1489   1490	005514	012767 	000003 	177146 		MOV	#3,DAT+4	;SET UP CODE FOR PRINT TO EXIT   1491	005522					DIR$	#SEND,DIRERR   1492	005536	      				CALL	UNSTOP		;UNSTOP THE HARDCOPY TASK   1493   1494						.ENDC   1495   1496	005542				161$:	EXIT$S   1497   1498   1499	005550	022767 	042515 	000254 	20$:	CMP	#"ME,RECBUF	;DO WE WANT TO SEE TST MEMORY DISPLAY?   1500	005556	001006 				BNE	21$   1501	005560	012767 	000005 	172556 		MOV	#5,DS.TYP	;SET UP DISPLAY TYPE FLAG   1502	005566					CALL	MEMINI		;INITIALIZE MEMORY BORDERS   1503	005572	000476 				BR	99$   1504   1505   1506	005574	022767 	052523 	000230 	21$:	CMP	#"SU,RECBUF	;DO WE WANT SUMMARY       DISPLAY?   1507	005602	001004 				BNE	22$   1508	005604	012767 	000001 	172532 		MOV	#1,DS.TYP   1509	005612	000466 				BR	99$   1510   1511	005614	022767 	051515 	000210 	22$:	CMP	#"MS,RECBUF	;DO WE WANT THE MESSAGE DISPLAY?   1512	005622	001004 				BNE	23$   1513	005624	012767 	000002 	172512 		MOV	#2,DS.TYP   1514	005632	000456 				BR	99$   1515DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 20-3COMMAND PROCESSOR ROUTINES   1516	005634	022767 	051524 	000170 	23$:	CMP	#"TS,RECBUF	;DO       WE WANT TST DISPLAY?   1517	005642	001004 				BNE	24$   1518	005644	012767 	000003 	172472 		MOV	#3,DS.TYP   1519	005652	000446 				BR	99$   1520   1521	005654	022767 	051124 	000150 	24$:	CMP	#"TR,RECBUF	;DO WE WANT TRANSACTION DISPLAY?   1522	005662	001006 				BNE	25$   1523	005664					CALL	TRINIT		;CALL THE INITIALIZATION ROUTINE   1524	005670	012767 	000004 	172446 		MOV	#4,DS.TYP   1525	005676	000434 				BR	99$   1526   1527   1528	005700	022767 	054503 	000124 	25$:	CMP	#"CY,RECBUF	;DO WE WANT TO CYCL      E THROUGH DISPLAYS   1529	005706	001006 				BNE	26$   1530	005710	012767 	000001 	172426 		MOV	#1,DS.TYP	;START WITH SUMMARY DISPLAY   1531	005716	005267 	172426 			INC	CYCLE		;SET CYCLE FLAG   1532	005722	000422 				BR	99$   1533   1534	005724	022767 	041516 	000100 	26$:	CMP	#"NC,RECBUF	;DO WE WANT THE NO CYCLE OPTION?   1535	005732	001006 				BNE	30$   1536   1537	005734	005067 	172410 			CLR	CYCLE		;CLEAR CYCLING MODE FLAG   1538   1539	005740	012767 	000001 	172376 		MOV	#1,DS.TYP	;DEFAULTS TO SUMMARY       DISPLAY   1540	005746	000410 				BR	99$   1541   1542	005750	012700 	000001 		30$:	MOV	#1,R0		;WANT A REPLY   1543	005754	012701 	005162'			MOV	#ERR1,R1	;POINT TO ERROR MESSAGE   1544									;(COMMAND WAS NOT A LEGAL COMMAND.)   1545   1546	005760					CALL	COMMUN   1547	005764	000167 	177320 			JMP	5$   1548   1549   1550	005770	012767 	000001 	172342 	99$:	MOV	#1,DSPFLG	;SET UP FLAG SO DISPLAY CHANGES RIGHT AWAY.   1551	005776					RETURN   1552   1553DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79       12:16  PAGE 21COMMAND PROCESSOR ROUTINES   1555   1556   1557						;***************************************************   1558						;   1559							.SBTTL	COMMUNICATION WITH USER ROUTINE   1560						;   1561						;***************************************************   1562   1563   1564   1565   1566					;   1567					; **-COMMUN-OUTPUTS A MESSAGE TO USER & AND IF REQUIRED ACCEPTS A REPLY.   1568					;   1569					; INPUTS:   1570					;   1571					;	R0 = REPLY FLAG   1572					;	     IF R0 = 1 MESSAGES REQUIRES       A REPLY   1573					;   1574					;	R1 = POINTER TO STARTING ADDRESS OF MESSAGE   1575					;   1576					; OUTPUT:   1577					;   1578					;	RECBUF CONTAINS USER'S REPLY TO MESSAGE   1579					;   1580					; NOTE:   1581					;   1582					;	IF TERMINAL IS CURSOR CONTROLLED MESSAGE IS OUTPUT STARTING ON COLUMN 1   1583					;	OF ROW 23 AND CURSOR IS THEN POSITIONED TO COLUMN 1 OF ROW 24 TO ACCEPT   1584					;	THE REPLY.   1585					;   1586   1587						.ENABL	LSB   1588   1589   1590	006000				IO:	QIOW$	,1,1   159      1	006030	000000 			TERFLG:	.WORD	0		;IF = 1 THEN NOT A CURSOR CONTROLLED DEVICE   1592	006032				RECBUF:: .BLKW	4   1593	006042	   033 	   131 	   066 	LINE23:	.ASCIZ	<ESC><CD><31.+23.><0><31.+1><ESC><ES>   1594	006052	   033 	   131 	   067 	LINE24:	.ASCIZ	<ESC><CD><31.+24.><0><31.+1>/: /   1595   1596   1597	006062				COMMUN::   1598   1599					;   1600					; POSITION CURSOR:   1601					;   1602	006062	005767 	177742 			TST	TERFLG			;IS TERMINAL CURSOR CONTROLLED?   1603	006066	001017 				BNE	10$			;IF NE      -NO   1604   1605   1606	006070	012767 	000000G	177704 		MOV	#IO.WAL,IO+Q.IOFN	;SET I/O FUNCTION TO WRITE ALL   1607	006076	012767 	006042'	177710 		MOV	#LINE23,IO+Q.IOPL	;INSERT ADDRESS OF CURSOR CONTROL   1608										;CHARACTERS INTO DPB   1609	006104	012767 	000010 	177704 		MOV	#8.,IO+Q.IOPL+2		;AND NUMBER OF CHARACTERS   1610	006112					DIR$	#IO,DIRERR		;POSITION CURSOR   1611DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 21-1COMMUNICATION WITH USER ROUTINE   1612					;   1613			      		; DETERMINE OUTPUT MESSAGE SIZE   1614					;   1615   1616	006126	005002 			10$:	CLR	R2		;INITIALIZE COUNTER   1617	006130	010167 	177660 			MOV	R1,IO+Q.IOPL	;SAVE POINTER TO OUTPUT MESSAGE   1618   1619	006134	005202 			15$:	INC 	R2		;ONE MORE CHARACTER   1620	006136	122127 	000001 			CMPB	(R1)+,#1	;HAVE WE REACHED THE END OF THE MESSAGE?   1621	006142	001374 				BNE	15$		;IF NE - NO   1622   1623	006144	005302 				DEC	R2		;COUNTED ONE TOO MANY   1624   1625   1626					;   1627					; OUTPUT MESSAGE   162      8					;   1629	006146	010267 	177644 			MOV	R2,IO+Q.IOPL+2	;INSERT SIZE OF MESSAGE INTO DPB   1630   1631	006152	005767 	177652 			TST	TERFLG		;IS TERMINAL CURSOR CONTROLLED?   1632	006156	001406 				BEQ	20$		;IF EQ - YES   1633   1634	006160	012767 	000000G	177614 		MOV	#IO.WVB,IO+Q.IOFN ;SET FUNCTION NAME   1635	006166	112767 	000060 	177624 		MOVB	#'0,IO+Q.IOPL+4	;TWO LINE FEEDS AND CARRIAGE RETURN   1636   1637	006174				20$:	DIR$	#IO,DIRERR	;OUTPUT MESSAGE   1638   1639   1640   1641					;   1642					;       GET REPLY   1643					;   1644   1645	006210	005700 				TST	R0		;DO WE NEED A REPLY?   1646	006212	001447 				BEQ	99$		;IF EQ - NO   1647   1648   1649	006214	012767 	020040 	177610 		MOV	#"  ,RECBUF	;CLEAN UP   1650	006222	012767 	020040 	177604 		MOV	#"  ,RECBUF+2   1651	006230	012767 	020040 	177600 		MOV	#"  ,RECBUF+4   1652   1653	006236	005767 	177566 			TST	TERFLG		;IS TERMINAL CURSOR CONTROLLED?   1654   1655	006242	001014 				BNE	30$		;IF NE - NO   1656   1657					;   1658					; POSITION CURSOR   1      659					;   1660   1661	006244	012767 	006052'	177542 		MOV	#LINE24,IO+Q.IOPL ;ADDRESS OF CURSOR CONTROL CHARACTERS   1662	006252	012767 	000006 	177536 		MOV	#6,IO+Q.IOPL+2	;NUMBER OF CHARACTERS   1663	006260					DIR$	#IO,DIRERR	;POSITION CURSOR   1664   1665   1666	006274	012767 	000000G	177500 	30$:	MOV	#IO.RVB,IO+Q.IOFN ;READ VIRTUAL BLOCK - FOR NON CURSOR CONTROLLED   1667   1668	006302	012767 	006032'	177504 	40$:	MOV	#RECBUF,IO+Q.IOPL ;ADDRESS OF REPLY BUFFERDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M11      10  14-FEB-79 12:16  PAGE 21-2COMMUNICATION WITH USER ROUTINE   1669	006310	012767 	000010 	177500 		MOV	#10,IO+Q.IOPL+2	;SIZE OF REPLY MESSAGE   1670   1671	006316					DIR$	#IO,DIRERR	;ASK FOR THE REPLY   1672   1673   1674	006332				99$:   1675	006332					RETURNDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 22COMMUNICATION WITH USER ROUTINE   1677   1678   1679						;*******************************************   1680						;   1681							.SBTTL	DIRECTIVE ERROR ROUTINE   1682						;   1      683						;*******************************************   1684   1685   1686   1687   1688   1689	006334	   077 	   040 	   106 	MESS:	.ASCII	/? FATAL DIRECTIVE ERROR - ERROR CODE IS - /   1690	006406				ERRNUM:	.BLKB	6   1691   1692	006414	   040 	   040 	   114 		.ASCII	/  LOCATION: /   1693	006430				LOCNUM:	.BLKB	6   1694   1695		000102 			SIZE=.-MESS   1696   1697   1698   1699	006436	016701 	000000G		DIRERR:: MOV	$DSW,R1		;DIRECTIVE STATUS TO R1   1700	006442	005401 				NEG	R1		;COMPLEMENT IT   1701	006      444	012700 	006406'			MOV	#ERRNUM,R0	;POINT TO OUTPUT BUFFER DIRECTIVE STATUS   1702	006450	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1703	006452					CALL	$CBDMG		;CONVERT BINARY TO ASCII   1704   1705	006456	012601 				MOV	(SP)+,R1	;NEXT INSTR. LOCATION ADDRESS TO R1   1706	006460	012700 	006430'			MOV	#LOCNUM,R0	;POINT TO OUTPUT BUFFER   1707	006464	005202 				INC	R2		;DO NOT ZERO SUPPRESS   1708	006466					CALL	$CBOMG		;CONVERT BINARY TO OCTAL ADDRESS   1709   1710	006472					QIOW$C	IO.WAL,1,1,0,STAT      US,,<MESS,SIZE>   1711	006500					EXIT$S   1712   1713DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 23DIRECTIVE ERROR ROUTINE   1715   1716   1717						;*********************************************   1718						;   1719							.SBTTL	MISCELLANEOUS ROUTINES   1720						;   1721						;*********************************************   1722   1723   1724					;   1725					; **- JSTFY-CONVERTS A NUMBER TO ITS ASCII OUTPUT EQUIVALENT, RIGHT   1726					;           JUSTIFYING THE NUMBER IN THE OUT      PUT FIELD.   1727					;   1728					; INPUTS:   1729					;   1730					;	R0=POINTER TO STARTING ADDRESS OF THE OUTPUT FIELD   1731					;	R1=NUMBER TO BE CONVERTED   1732					;   1733					; NOTE: ROUTINE WILL ONLY RIGHT JUSTIFY NUMBERS UP TO 4 DECIMAL DIGITS IN LENGTH   1734					;   1735   1736   1737						.ENABL	LSB   1738   1739   1740	006506				JSTFY1::   1741   1742	006506	022701 	023420 			CMP	#10000.,R1	;IS IT FIVE DIGITS   1743	006512	003426 				BLE	10$		;YES - SO GO ON   1744	006514	112720 	000040 			M      OVB	#' ,(R0)+	;CLEAR THE 10000'S SPACE   1745   1746   1747	006520				JSTFY::   1748   1749	006520	022701 	001750 			CMP	#1000.,R1	;IS IT 4 DIGITS?   1750	006524	003421 				BLE	10$		;YES, SO GO ON   1751	006526	112720 	000040 			MOVB	#' ,(R0)+	;CLEAR THE 1000'S SPACE   1752   1753	006532	022701 	000144 			CMP	#100.,R1	;IS IT 3 DIGITS?   1754	006536	003414 				BLE	10$   1755	006540	112720 	000040 			MOVB 	#' ,(R0)+   1756   1757	006544	022701 	000012 			CMP	#10.,R1		;IS IT 2 DIGITS?   1758	006550	003407 				      BLE 	10$   1759	006552	112720 	000040 			MOVB	#' ,(R0)+   1760   1761	006556	005701 				TST	R1		;IS IT AT LEAST 1 DIGIT?   1762	006560	001003 				BNE	10$   1763	006562	112720 	000060 			MOVB	#'0,(R0)+   1764	006566	000403 				BR	15$   1765   1766	006570	005002 			10$:	CLR	R2		;SUPPRESS LEADING ZEROES   1767	006572					CALL	$CBDMG		;CONVERT TO ASCII   1768	006576				15$:	RETURN   1769   1770   1771DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 23-1MISCELLANEOUS ROUTINES   1772   1773				      	;   1774					; **-PRCNT -INTERNAL ROUTINE TO CALCULATE PERCENTAGES   1775					;   1776					; INPUTS:   1777					;   1778					;	R0=DIVIDEND   1779					;	R2=DIVISOR   1780					;   1781					; OUTPUTS:   1782					;   1783					;	R0=QUOTIENT   1784					;   1785   1786	006600	012701 	000144 		PRCNT::	MOV	#100.,R1	;SET UP FOR MULTIPLICATION   1787	006604					CALL	$MUL		;MULTIPLY BY 100. SO LATER CAN GET PERCENTAGE   1788	006610	010100 				MOV	R1,R0		;SWITCH INTO DIVIDEND REGISTER   1789	006612	010201 				MOV	R2,R1      		;GET DIVISOR   1790	006614					CALL	$DIV		;DO THE DIVISION   1791	006620					RETURN   1792   1793   1794					;   1795					; **-ACBD-THIS ROUTINE PROVIDES THE KT AND BIAS ADDRESSES OF A SYSTEM BDB   1796					;   1797					; INPUTS:   1798					;   1799					; 	R1=BDB ADDRESS   1800					;   1801					; OUTPUTS:   1802					;   1803					;	R4=KT ADDRESS   1804					;   1805					;	R5=BIAS   1806					;   1807   1808	006622	005004 			ACBD::	CLR	R4		;RESET R4   1809	006624	010105 				MOV	R1,R5		;MOV BDB ADDRESS TO R5         1810	006626	073427 	000012 			ASHC	#10.,R4		;GET PAGE VALUE IN R4   1811	006632	072527 	177766 			ASH	#-10.,R5	;BIAS IS NOW IN R5   1812	006636	042705 	177700 			BIC	#177700,R5	;CLEAR OUT ANY GARBAGE   1813	006642					RETURN   1814   1815   1816   1817		000420'				.END 	DEMODEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 23-2SYMBOL TABLEACBD    006622RG 	C.RRBA= 000002   	F.FFBY= 000014   	H.IPC   000016   	L$$11R= 000000ALUN    000000R  	DAT     004664R  	F.FNAM= 000110   	H.IPS   0000      14   	MAXBS   003650RAPPSUM= ****** GX	DEAD    004104R  	F.FNB = 000102   	H.ISP   000020   	MEM   = ****** GXAST.ST  005112R  	DEMO    000420R  	F.FTYP= 000116   	H.LUN   000076   	MEMINI= ****** GXAS.DEL= 000010   	DIRERR  006436RG 	F.FVER= 000120   	H.NLUN  000074   	MEMSUM= ****** GXAS.EXT= 000004   	DSFUN = 000170R  	F.HIBK= 000004   	H.NML   000061   	MESS    006334RAS.RED= 000001   	DSKSUM= ****** GX	F.LUN = 000042   	H.ODVA  000022   	MIN     002604RAS.WRT= 000002   	DSPFLG  000340R  	F.MBCT= 000054         	H.ODVL  000024   	MRKTIM  000020RA$$CHK= 000000   	DSTIM   002434R  	F.MBC1= 000055   	H.OVLY  000054   	MSG     001352RA$$CPS= 000000   	DS.TYP  000344R  	F.MBFG= 000056   	H.PFVA  000032   	MSGE  = ****** GXA$$NSI= 000000   	D$$IAG= 000000   	F.NRBD= 000024   	H.RCVA  000036   	MSG1    001374RA$$PRI= 000000   	D$$ISK= 000000   	F.NREC= 000030   	H.RRVA  000062   	M$$CRB= 000124A$$TRP= 000000   	D$$L11= 000001   	F.OVBS= 000030   	H.SPRI  000060   	M$$CRX= 000000A.IOC   000003   	D$$SHF= 000000   	F.RA      CC= 000016   	H.TKVA  000026   	M$$EXT= 000000A.LGTH= 000014   	D$$WCK= 000000   	F.RATT= 000001   	H.TKVL  000030   	M$$FCS= 000000A.LULU= 000002   	D$$YNC= 000000   	F.RCNM= 000034   	H.VEXT  000056   	M$$K11= 000000A.LUNA= 000004   	D$$YNM= 000000   	F.RCTL= 000017   	H.WND   000044   	M$$MGE= 000000A.LUNU= 000006   	D$$ZMD= 000000   	F.RSIZ= 000002   	IE.ACT= ****** GX	M$$MUP= 000000A.MPCT  000011   	D$$Z11= 000004   	F.RTYP= 000000   	IE.ITS= ****** GX	M$$NET= 000000A.PCB   000012   	EL    = 000113   	      F.SEQN= 000100   	IO      006000R  	M$$OVR= 000000A.PCBL  000000   	ERRNUM  006406R  	F.SPDV= 000072   	IOATA   000216R  	M$$XLN= 000400A.PRI   000002   	ERR1    005162R  	F.SPUN= 000074   	IOCLR   000246R  	M.KTAE= 000010A.STAT  000010   	ERR2    005214R  	F.STBK= 000036   	IO.ATA= ****** GX	M.KTEF= 000002A.TCB   000004   	ES    = 000112   	F.UNIT= 000136   	IO.RVB= ****** GX	M.KTMG= 000004A.TCBL  000006   	ESC   = 000033   	F.URBD= 000020   	IO.WAL= ****** GX	M.KTUN= 000006BUFCTR= 000204RG 	EXETSK  003034      R  	F.VBN = 000064   	IO.WVB= ****** GX	NCALLS  004172RBUFPTR= 000202RG 	E$$DVC= 000000   	F.VBSZ= 000060   	IS.SUC= ****** GX	NEWCP0  003402RCACHE   004204R  	E$$NSI= 000000   	GETIME  000014R  	I$$RAR= 000000   	NEWCP1  003404RCACHMG  004135R  	E$$PER= 000000   	G$$TPP= 000000   	I$$RDN= 000000   	NEWSEC  002602RCACLOC  004130R  	E$$XPR= 000000   	G$$TTK= 000000   	JSTFY   006520RG 	NXTTSK  003044RCADR    004124RG 	FA.SHR= ****** GX	G.TIBA= 000002   	JSTFY1  006506RG 	N$$CON= 000500CALLS   004112R  	FD.RW      M= ****** GX	G.TICP= 000016   	K$$CNT= 177546   	N$$LDV= 000001CD    = 000131   	FO.RD = ****** GX	G.TICT= 000014   	K$$CSR= 177546   	N$$MOV= 000011CLEAR   000010R  	FRAGS   003654R  	G.TIDA= 000004   	K$$IEN= 000115   	N$$MXM= 001100CLRSCR  000276R  	F$$LPP= 000000   	G.TIHR= 000006   	K$$LDC= 000001   	N$$TMO= 000012CMDAST  005116R  	F$$LVL= 000001   	G.TIMI= 000010   	K$$TPS= 000074   	N$$UMR= 000024CMDFLG  000336R  	F.ACTL= 000076   	G.TIMO= 000002   	LD$DB = 000000   	N.DID = 000024CMDLEN= 000050   	F      .ALOC= 000040   	G.TISC= 000012   	LD$DR = 000000   	N.DVNM= 000032CMDLIN  000554R  	F.BBFS= 000062   	G.TIYR= 000000   	LD$LP = 000000   	N.FID = 000000CMDS    005252R  	F.BDB = 000070   	HELP  = ****** GX	LD$MM = 000000   	N.FNAM= 000006COMMUN  006062RG 	F.BGBC= 000057   	HITS    004116R  	LD$NT = 000000   	N.FTYP= 000014COM.AD  004122RG 	F.BKDN= 000026   	HO    = 000110   	LD$RH = 000000   	N.FVER= 000016CPUCNT  003406R  	F.BKDS= 000020   	HOURS   002606R  	LD$TT = 000000   	N.NEXT= 000022CPULOC  003344R        	F.BKEF= 000050   	HRM     002632R  	LD$VT = 000000   	N.STAT= 000020CPUMSG  003351R  	F.BKP1= 000051   	H$$RTZ= 000074   	LD$XM = 000000   	N.UNIT= 000034CSIZE   004126RG 	F.BKST= 000024   	H.CSP   000000   	LINE23  006042R  	OF.HIT  000356RGCYCLE   000350RG 	F.BKVB= 000064   	H.CUIC  000010   	LINE24  006052R  	OF.RD   000352RGC$$CDA= 000002   	F.CHR = 000075   	H.DSW   000046   	LOCKED  004110R  	OF.WRT  000354RGC$$CKP= 000000   	F.CNTG= 000034   	H.DUIC  000012   	LOCNUM  006430R  	OLDCP0  003376RC$$C      SR= 177440   	F.DFNB= 000046   	H.EFLM  000004   	LOOP    001006R  	OLDCP1  003400RC$$LIS= 000000   	F.DSPT= 000044   	H.EFSV  000040   	LPSTCK  003374R  	OLDSEC  002600RC$$ORE= 002000   	F.DVNM= 000134   	H.FCS   000050   	LSTTSK  003040R  	OTICKS  003370RC$$RSH= 177564   	F.EFBK= 000010   	H.FORT  000052   	L$$ASG= 000000   	OUTBUF  004722RGC$$RUN= 000000   	F.EFN = 000050   	H.FPSA  000042   	L$$DRV= 000000   	OUTCHR  004632RC$$XDB= 000000   	F.EOBB= 000032   	H.FPVA  000034   	L$$LDR= 000000   	OUTLIN        004606RGC.LEEF= 000002   	F.ERR = 000052   	H.GARD  000072   	L$$PTO= 000037   	OUTPUT  000166RGC.RABA= 000002   	F.FACC= 000043   	H.HDLN  000002   	L$$P11= 000001   	OV$DB = 000000DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 23-3SYMBOL TABLEOV$DR = 000000   	QUE.ST  002166RG 	SNDBUF  002126R  	T$$HLD= 000000   	WAIT    000154RO$$LAP= 000000   	Q$$OPT= 000017   	SPAWN   000060R  	T$$J16= 000003   	WDB     000400RPARADR  001446R  	Q.IOAE= 000012   	SPAWN2  000112R  	T$$KMG= 000000   	      WINDOW  000036RPARNME  001450R  	Q.IOEF= 000006   	STATUS  000332R  	T$$LWC= 000000   	WS.CRW= 100000POOL    003642R  	Q.IOFN= 000002   	STOP    000032R  	T$$PS = 000000   	WS.DEL= 000010POOLIN  003712R  	Q.IOLU= 000004   	STOP1   000144R  	T$$RAX= 000000   	WS.ELW= 020000POOLMG  003663R  	Q.IOPL= 000014   	S$$ECC= 000000   	T$$RNE= 000000   	WS.EXT= 000004POOLOC  003656R  	Q.IOPR= 000007   	S$$WPC= 000036   	T$$RPR= 000000   	WS.MAP= 000200PRCNT   006600RG 	Q.IOSB= 000010   	S$$WPR= 000005   	T$$RST= 00000      0   	WS.RCX= 000100PRINT   000626R  	RCVBUF  002130R  	S$$YSZ= 050000   	T$$RUB= 000000   	WS.RED= 000001PROMPT  005150R  	RCVD    002110R  	S.BFHD= 000020   	T$$SMC= 000000   	WS.RRF= 010000PRTFLG  000624R  	RCVDT = 002134RG 	S.DABA= 000006   	T$$SYN= 000000   	WS.UNM= 040000PRT.OK  000346RG 	RDB     000360R  	S.DAEF= 000010   	T$$TRW= 000000   	WS.WRT= 000002PS.APR= 000007   	RECBUF  006032RG 	S.DATN= 000002   	T$$UTB= 000000   	WS.64B= 000400PS.CHK= 010000   	REGION  000042R  	S.FATT= 000016   	T$$VBF= 0      00000   	W.BATT  000006PS.CKP= 040000   	RSUM    002070R  	S.FDB = 000140   	T$$ZAN= 000300   	W.BFPD  000014PS.CKR= 020000   	RS.ATT= 000040   	S.FNAM= 000006   	T$$18S= 000000   	W.BHVR  000004PS.COM= 000200   	RS.CRR= 100000   	S.FNB = 000036   	T.ACTL= ****** GX	W.BLGH  000020PS.DEL= 000010   	RS.DEL= 000010   	S.FNBW= 000017   	T.ASTL= ****** GX	W.BLPD  000016PS.DRV= 000020   	RS.EXT= 000004   	S.FNTY= 000004   	T.NAM = ****** GX	W.BLVR  000002PS.FXD= 004000   	RS.MDL= 000200   	S.FTYP= 000002   	T.PCB       = ****** GX	W.BNPD  000015PS.LIO= 001000   	RS.NDL= 000100   	S.NFEN= 000020   	T.STAT= ****** GX	W.BOFF  000012PS.NSF= 000400   	RS.NEX= 000020   	S.PWCA= 000024   	T.ST2 = ****** GX	W.BPCB  000000PS.OUT= 100000   	RS.RED= 000001   	S.PWCL= 000026   	T2.AST= ****** GX	W.BSIZ  000010PS.PER= 002000   	RS.UNM= 040000   	S.PWEA= 000020   	T2.DST= ****** GX	W.NAPR= 000001PS.PIC= 000100   	RS.WRT= 000002   	S.PWEF= 000016   	T2.SPN= ****** GX	W.NBAS= 000002PS.SYS= 000040   	R$$DSP= 000000   	S.PWES= 000022   	T      2.STP= ****** GX	W.NID = 000000P$$D70= 000000   	R$$EXV= 000000   	S.PWTN= 000002   	T2.WFR= ****** GX	W.NLEN= 000012P$$LAS= 000000   	R$$HDV= 000000   	S.PWUG= 000015   	UISAR0= 177640   	W.NLGH= 000020P$$OFF= 000000   	R$$H11= 000003   	S.PWUM= 000014   	UISAR1= 177642   	W.NOFF= 000010P$$RFL= 000000   	R$$JPO= 000000   	S.PWVT= 000030   	UISAR2= 177644   	W.NRID= 000006P$$RTY= 000000   	R$$JP1= 000003   	S.PWXX= 000006   	UISAR3= 177646   	W.NSIZ= 000004P$$TPT= 000000   	R$$LKL= 000001   	S.TSEF= 000002         	UISAR4= 177650   	W.NSRB= 000016P.ALLO= ****** GX	R$$MOF= 000000   	TCALLS  004114R  	UISAR5= 177652   	W.NSTS= 000014P.BLKS  000016   	R$$MPL= 000000   	TERFLG  006030R  	UISAR6= 177654   	X$$M11= 000002P.BUSY  000024   	R$$M11= 000003   	THITS   004120R  	UISAR7= 177656   	$BASE = ****** GXP.DEAD= ****** GX	R$$NDC= 000006   	TICKMN  003366R  	UISDR0= 177600   	$CBDMG= ****** GXP.HDR = ****** GX	R$$NDH= 000226   	TICKS   003372R  	UISDR1= 177602   	$CBOMG= ****** GXP.HIT = ****** GX	R$$NDL= 000001   	TI      MBUF  002340R  	UISDR2= 177604   	$CRAVL= ****** GXP.IOC   000003   	R$$SND= 000000   	TIMLOC  002360R  	UISDR3= 177606   	$CXDBL= ****** GXP.LNK   000000   	R$$STP= 000000   	TIMMSG  002366R  	UISDR4= 177610   	$C5TA = ****** GXP.MAIN  000012   	R$$11M= 000000   	TIT1    000304R  	UISDR5= 177612   	$DAT  = ****** GXP.NAM   000004   	R.GID = 000000   	TOTALS  003652R  	UISDR6= 177614   	$DIV  = ****** GXP.NUM = ****** GX	R.GLGH= 000020   	TRANS = ****** GX	UISDR7= 177616   	$DSW  = ****** GXP.OWN   000026         	R.GNAM= 000004   	TRINIT= ****** GX	UNLCKD  004106R  	$MUL  = ****** GXP.PRI   000002   	R.GPAR= 000010   	TSKLOC  003016R  	UNSTOP  000750R  	$PARHD= ****** GXP.REL   000014   	R.GPRO= 000016   	TSKNAM  003024R  	UPD.FR  000342R  	$RQSCH= ****** GXP.SIZE  000016   	R.GSIZ= 000002   	TSTDSP= ****** GX	UPNUM   002620R  	$SIZE = ****** GXP.STAT  000030   	R.GSTS= 000014   	T$$ACR= 000000   	UPTIM   002610R  	$TCPU0= ****** GXP.SUB   000010   	R.SUTN= 000002   	T$$BTW= 000000   	UPTIME  002640R  	$TCPU1= ***      *** GXP.SWSZ  000022   	R.VDBA= 000006   	T$$BUF= 000000   	USTOP   000146R  	$TIM  = ****** GXP.TCB   000026   	R.VDTN= 000002   	T$$CCA= 000000   	USTP    002120R  	$TKTCB= ****** GXP.WAIT  000020   	SCRTOP  001274R  	T$$CCO= 000000   	U.STTN= 000002   	$$CPU = ****** GXQFDB    001730RG 	SDAT    002076R  	T$$CTR= 000000   	V$$CTR= 001000   	$$PRI = 000000QFLUN = 000003   	SEC     002576R  	T$$ESC= 000000   	V$$TLD= 000120   	$$$   = 000000R     003QUEINI  002170RG 	SEND    000046R  	T$$GMC= 000000   	V$$T      LM= 000205   	$$$ARG= 000002QUESUM= ****** GX	SIZE  = 000102   	T$$GTS= 000000   	V$$TRM= 000000   	$$$OST= 000010DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  14-FEB-79 12:16  PAGE 23-4SYMBOL TABLE$$$R4 = 000000   	$$$T2 = 000004R  	.FSRCB= ****** G 	...PC2= 002070R  	...TPC= 000020$$$T1 = 000067   	.FINIT= ****** G 	...PC1= 001730R. ABS.	000102	   000      	006644	   001$$FSR1	000000	   002$DPB$$	000030	   003ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  9889 WORDS  ( 39 PAGES)DYNAMIC MEMORY:  11428 WORDS  (   Z    43 PAGES)ELAPSED TIME:  00:03:19DEMOPR,DEMOPR.LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,DEMOPRZ          Ä€W!l^Á› 8$     j  	.ROOT	A-*(B)A:	.FCTR	DEMOPR-MISCB:	.FCTR	C,D,E,F,G,H,I,J,KC:	.FCTR	QUESUM-LB0:[1,24]QMG/LB:QMGSYMD:	.FCTR	MEMSUM-X1-X2E:	.FCTR	APPSUM-X1-X2F:	.FCTR	DSKSUM-X1G:	.FCTR	MSG34-X1-X2H:	.FCTR	TRAN34-X2-X1I:	.FCTR	TST34-X1-X2J:	.FCTR	MEMINI-MEM2-MEMOUT-X1-X2K:	.FCTR	HELPX1:	.FCTR	LB0:[1,54]KERNEL.STB/SSX2:	.FCTR	LB0:[1,1]TPSCOM.STB/SSX:	.FCTR	LB0:[1,1]TPSODT/DA	.ENDj         Ä€W!ÌÁ› 8$     D   TXDEMO  /PR /CP, TXDEMO/-SP /MA  =TXDEMO /MPGBLDEF=$$CPU:22WNDWS=1//D          Ä€W!€Á› 8$            –,    ÿÇÿÇW        O                                                                                                                                                                                                           ž£       2                                                                                                                                                                                                                                                                                 SY  SY  SY  SY  TI  CL  OV                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              Ž tŽ€»ÀÀðž£Ž¢                  Z   °³  ô³            Œ  ²J  ²J  ²J  ²J  –O  lM  ²J   ôX  ÿÇ      Š                8   €»tŽ  ?€                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  €»      TI   =n§     ‡ uŽ£7~£GÔ4YF¬  Ô4Y      À            |³ƒ:      À     ú£(   ƒ…Ô4Y       
 h£                    Ü¬                L£         H J Y  &***TRAX DEMO***         
               ÎZ&    #              ƒ  æ°¢ÿˆ†÷	7
êÿ÷ÎÿÞÿ÷ÆÿÚÿæ¬¢ÿˆ†÷	æ÷  DÿæŽ¢ÿˆ†÷	Ôæ£ÿˆ†÷	Èæ4£ÿˆ†÷	¼÷	Â÷	MINS [3      00,30]HRDCPY/RUN=REM/TASK=HRDCPY   ÷úÿ%æ¾¢ÿˆ×-ò[ æØ¢ÿˆ†÷	hæò¢ÿˆ†÷	\æ´¢ÿˆ×-Ì[ ù÷	 æò¢ÿˆ†÷	>÷ ®ÿ‡ æô¢ÿˆ×-¦[øÿæú¢ÿˆ†÷	ò‡ ÷	² ÷Òþ?÷% Îþ	÷	V÷	Z÷	^÷	b ÷% ´þ÷	\÷% ¦þ÷	f÷% ˜þ÷	H÷% Šþ÷ˆþ÷	L÷	P÷rþ÷ pþ÷nþ	·
dþ×-`þ ÷ Vþ÷	@÷Hþ7
Bþ÷	
÷
<þ÷8þ4þæ¨¢ÿˆ†÷	f
w Jÿæž¢ÿˆ†÷	V
ÃR£÷	¶÷	H÷	È÷	H÷	&÷	æ÷	œ‡ APPLICATION NAME?APPLICATION NOT FOUND! APPLICATION NAME?   À Áx¥÷	þþˆÎ¥÷• E]‡ þˆÚ¥÷”fÜÿ‡ þˆ¦ÄÒÿÄå  7  Èÿ7 î- Ÿ- ¦      ÷®ÿë÷ÿÿ¦ÿ‡ ÷ ÿ÷jY÷À„Y÷-‚Ø¹Ø÷-|Ò¹Ô÷-vÌ¹Ð÷<º¢÷8ºžþˆP¦7ŠÃ\‡ ÷`ÿÀ ÁŠ¥÷	^¯‡                                 !                                                            /Ol|³GOl|³ä¦  KOl|³æ¦…Ol|³                                æÆ¦ÿˆ×-Yøÿ÷ìÿ)æÌ¦ÿˆ†÷	†æÞ¦ÿˆ†÷	zæÖ¦ÿˆ×-êXøÿù÷% ¾ÿ÷	¸7
´ÿ×-ÐXùÿ÷	N÷%  ÿ÷ ˜ÿ‡                 Y  T                                       þˆ¶§÷• ][‡ æš¢ÿˆ†÷	êþˆÔ§÷P[Ä÷L[À‡ þˆÞ§7Š5[‡ ÷–ÿ, À„§Án§÷	`
Ð•  Â ÷	‚
È•       Ã~§÷	
‡ Äÿ        Y  ?UP            HRS ÁÞÿw ØÿÁe< ÁíÎÿ÷ÌÿÈÿw`Âÿ÷å< ºÿ·
¼ÿ÷%< ¶ÿ·
²ÿ7
¬ÿÀ¨Á¦ÿ
÷	0	Ð•: Á”ÿ÷%
 ŽÿÐ•0 
÷		ŠÃ¨÷	z‡ Y! &*      *    XXXXÅª¨þˆ©ÀVZÀJZð*  7 @Zð ð ð5 À ð5  ð5  &  <=   * Ý

  ‡ Ä®¨Åª¨T%L#Ä®¨Åª¨Lt  Íõ 
÷ IXÿ÷DLTÿ÷E PÿÀ¢¨A÷	cA÷	ŠcÃœ¨÷	¤‡ Y! 2CPU:                         Àäýp< wäÿÀ 
7rÚÿ7ÜÿÁÆýwpÆýÁmÀý@ÀíÆÿÀm¾ÿw¼ÿ7ºÿÁ¾ÿÀ¼ÿÁí²ÿ€Àí®ÿ÷¬ÿ¦ÿ÷¨ÿ¢ÿ7r˜ÿ
pd 7rÿÁd à      W d Á
À{©
÷	Ð•% Ð•  Ð•  È• Ãr©÷	æ‡             Y! =POOL=                  Á0ª

	
þˆ„ªÄL	t" †	 !m ¡
Q$õ‡ ÀFªÄ4ª7¦ÿ
÷	Ð•: 7–ÿ
÷	úÐ•: 7†ÿ
÷	êÐ•  Ð•  È• Ã<ª÷	D‡                    Y! QCACHE=                        NO CALLSþˆ«÷• õW‡ ÷Àÿ‚T÷\TÀæ´Â²ÿ÷	Ø7˜ÿÀÚ´÷	Ì7Žÿ÷d Šÿ÷í‚ÿ„ÿ÷í~ÿ~ÿ÷zÿ7
tÿ÷
nÿÀ¦´Àípÿ÷ž´jÿÂ–´Âí^ÿ·Xÿ÷Š´Tÿþˆ«7ŠƒW‡ ÷	z7DÿÀñªÁ2ÿ
÷	 Ð•: Á&ÿ
÷	òÐ•: Áÿ
÷	ä÷ÿÐ•  Ð•  Áÿ
÷	ÌÐ•: Áúþ
÷	¾Ð•  Ð•  Ð•  Ð•  È• Ãæª      ÷	 ÷ÐþÃ«÷	 ‡ ¦Â”Â% ÷	 ù‚‡ ¿äö·
àö·
Þö÷% Øö‚÷	  ‡                               ÷  ªöæ£ÿˆ÷þö÷¬÷÷ Èÿ÷öÄÿæ´¢ÿˆ†÷	÷	â÷æò¢ÿˆ†÷	÷Ðö÷x÷÷ ”ÿæ´¢ÿˆ†÷	î÷	´÷æò¢ÿˆ†÷	Þ7
¢ö7
<ö‡     Î¥ æ3ÿˆ÷ ~öÖæsÿˆCOMMAND ?ILLEGAL COMMAND! COMMAND?PRINT OPTION NOT IMPLEMENTED.À Áö¬÷	|÷%HE^÷	 ÷	ÿñ÷%APL÷	Tøw  ÷%PR<÷	²öw ÷%NP,7
 ö÷ ¾þæ´¢ÿˆ†÷	÷	Þöw ê ÷%FRÀ¨®Àe 
”Áå0 ÁW 	 ×p
 C`ô÷¦õ]÷%EXÖ ÷Jö÷ fþæ´¢ÿˆ†÷	À÷	†öæ3ÿˆ÷%ME¬ ÷       nõ÷	8>÷%SU˜ ÷ Zõ6÷%MSˆ ÷ Jõ.÷%TSx ÷ :õ&÷%TRh ÷	ê÷ &õ÷%CYT ÷ õ·
õ÷%NC@ 7
õ÷ þôÀ Á ­÷	> w Ðþ÷ âô‡                               Y6  J Y7  :  ÷âÿ÷Äÿ÷°®Èÿ÷ ÄÿæŽ®ÿˆ†÷	È 
w°ÿ‚
W¤ üÂ
·¤ÿ÷ªÿ÷ Œÿ÷•0 ”ÿæŽ®ÿˆ†÷	– À'÷  ˆÿ÷  „ÿ÷  €ÿ÷vÿ÷¸®bÿ÷ ^ÿæŽ®ÿˆ†÷	b ÷ @ÿ÷¨®Dÿ÷ @ÿæŽ®ÿˆ†÷	D ‡ ? FATAL DIRECTIVE ERROR - ERROR CODE IS -         LOCATION:       ÁvPÀ”¯
÷	êÀ¦¯‚
÷	êæÔ²ÿˆæ3ÿˆÁ%'Ð•  Á%èÐ•  Á%d Ð•  Á%
 Ð•  Á      Ð•0 
÷	š‡ Ád ÷	ºl@÷	Ìl‡ 
Ew
 WuöÿÅEÀÿ‡                                                                       ÷dú(O÷^ú$O÷e€ O÷öN÷òNÀ2°Á  
Á
ýÀÜ¯Àíê¯Á  ÷	6lð• 2°ÀÔ¯ÀíÐ¯Á  ÷	lð• 2°€ `ó÷¸¯–ÿ7
ÿ‡ ÁŠÿÀˆÿñ¥ 2°	·
zÿ÷e  vÿñ‹2°ï 
‡       7
öÿ÷ÆùŠN÷Àù†N÷e€ €N÷B¯àÿ÷ÜÿÜÿ÷m8¯ÖÿÀ%ÿ·
Èÿ‡ ÷–ùZN÷ùVN÷e€ PN÷-²ÿ²ÿÄªÿ÷e ¤ÿ7 `8Nê÷¥ ”Îæ÷Œÿ·
†ÿ÷ê®‚ÿ÷~ÿ~ÿ÷mà®xÿÖ7

N‡ æ
æ
*æ
+
æ2æ3ÁE ÿæÂÎE ‚w	t…ŠÂ ‚†Á€Ð•- ŠƒÐŠÂÕ0 @A÷	      èjW 	 ƒÁe `fÃŠ
ÀÂ€Ã€ÂE ÷	Ôÿ”• ‡ JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECw	òD…&&÷	` Ð•- ÎeÁe+²P”P”P”Ð•- $w	ÄDÅ … ƒ÷	& Ð•.  ÀÀÀ c e÷	@jÀ
…Ð•: ÷	
 Å
ù
Â÷	ÒþB‡   h£  j¯B         ×'& ÿÿæ1ÿˆ ‡ ß	X³†´Êºß	X³’´ðµß	X³ž´Àµß	X³ª´Âµß	X³¶´Â¶ß	X³Â´â»ß	X³Â´Ä»ß	X³Î´Ê¶ß	X³Ú´@·ß	X³Ú´»ß	X³æ´
¸¦  Þ5 Îe ‡w	Ü ¦…
 Bv
 ÷	x


ò ÊE ÷	 	‡‚ Ê5 îù‚‡ Ã, û	 æ    °³¯³  ÿÿ                            ÿÿ                          z´    ì²       2µô´w	T Á( B ‰

C ƒàƒ
ò ñ€€B BÂe ¦æ?ÿˆ‡± B ñÿÿ( 1
< ‡ &æf… Þ	ƒ„…‡ &æ¦ff…
 Þ	‚ƒ„…‡ ‡     œ†´  z´œµ`  z´’´œµü   z´ž´œµÔ  z´ª´œµl  z´¶´œµ  z´Â´œµ4
  z´Î´#œµT  z´Ú´%œµP  z´æ´-œµ¨  z´†´  ¦Ê5 ‚ ú‚‡ ò û¦¦‚
 Ž 
Ê5 ùÊU Ž ‚öÖ‚åÊE ¡ Ê5 @-&
¦ÎE ð&
&
¦ ¦ fÅ, &Ã‹DÄe æÎ f  ææÿˆ	‡Ã‹
æ æ)ÿˆÌ‹€ÊU ± ‡                                                                                                             Y"  J  Y# 8*** SUMMARY DISPLAY ***Y% 'PROCESSORS:Y& 'PRINT:Y' 'ACT. PROC:    Y( 'ACT. JOBS:     Y) &WAIT. JOBS:    Y+ 'BATCH:Y, 'ACT. PROC:    Y- 'ACT. JOBS:     Y. &WAIT. JOBS:     Y% *QUEUEY& )MANAGERY' )STOPPED Y) 'PRINT:Y* &WAIT. JOBS:     Y, 'BATCH:Y- &WAIT. JOBS:                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      ÷	8ì÷% 0ìw ˆ Àê¦7àë7ÞëÁ¨¦Àf¦ðÆ¶ ÷	ÚðÊû
 °

 ÷Æ¶¸ýÀ Á ÷	¶ÁeÆ¶w¦ý÷ \ÁÆ¶÷	X÷~ ìµ ¶÷Ì ¶÷ @ÁÆ¶÷	<÷b 2¶F¶÷° Z¶Àf¦÷	¦Ãœµ÷	ªð÷–ëÃÂµ÷	œðÃ`¶÷	’ð÷% |ë÷†úû÷‚úû÷Àú$û      ÷¼ú ûÃ„¶÷	jð‡      7
öÿ7
ôÿ÷ ðÿÀýð  ðµ   ðµ@  ·
Îÿð
 ·
ÆÿÀe ÷
ÀÿéÀÁ´ÿ÷	âóÀÁ¬ÿ÷	Øóƒ 7
¢ÿ÷ žÿÀ°üð  ðµ   ðµ@  
Åe
 D÷	 ·
pÿùÀe ÷
hÿæÀÁ^ÿ÷	Šóƒ & 
 ÑÀÅÊ¸`ŠÄ 7! 7 ÁÊ¸÷	 €‡           Àf¦p Àf¦ð  æ‚¼°  4 Îe °6 ð~¼ ÷	Œ†w žþ÷	¨×-Àÿ ÷¸ÿ¸ÿ‡ &æ  
 †€m ¡ Î
øæ f
ÀAN ‡ã€
ö
 ÷–%‡ w	P÷ð * 8 w ´ ðµ  ðµ ) ÷	fðµ   ð¥   ÷	6†øÿÿ  Bà÷	X&œ* ÷	
„&
ðµ # ðµ!  ðµ ) &ÎeP æÂ( Âe Ê¦æðµ       # &æ•&Ä ð> €Åe > ÍE €÷	L†•p* ÷	Žw Îw	€öÁ( w zñB ÷	öð8 w rðµðÿ w €ðµ # ðµ  ðµôÿ w lœ  Ä¥ †w LÄ
0
 ð * 0
 0
 0
 ð 
 0
 0
4 0
6 ðÅÿ) ÁeB ÷	8†w ò ÷	ªñ  ðµ  w ì ±
  ðµ  ð( 8 ðe$ 8 2 &À( Áe ÷	Ž€R‡p8 q
 ÷	Î N‡0
 ð  ðµ  #0  0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð ð•   00  0  ÷	j0
@ ‡ ÷	 ð•Õÿ* 0
@ ÷	´„ðµ # &
&æµ &Ä ÷	¶†‡ ð•Ùÿ* ÷	øð•Ëÿ* ± ‡ ð•Äÿ* ôð•Õÿ* öð•Ôÿ* òð•Óÿ* îðµ        w P÷	JÕeB Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä ðµ   ðµH # ÍÕ@ …& 0
 ðµ # Õü Õ÷
 
÷	Ú‡0 @ ° Æe
 Ei‡°
6 ðµ   ðÿ ðµ # ð 
 ðµ@ # ðÿ? ðµ@ # 0 4 0
 6 ðµ  Bðµ # :ðµ   ðµA # 	ðÕ@ ) 0
 ð 
 )÷	4†æ ð¥öÿ* * ÷	Xþ°* ðµ@ # 0l  ðµ # 	ð•   ð•  02  ðµ  8 ÷	>÷	† ‡  ðµ!  ðµ   p0 p2 ‡ w	ó÷	Ú‡Ä 0,0  w 8÷	,‡÷	è‡ w	ðò w Ä w ° ± ðµ =  p! †Õ•^ ú‡ 8 Áe       2 
‡ ð‹* ± ‡  8 AÁe 
fÕœ" Šœ( Ã  ÕUÿˆ†CÉ—& ð•ÿÿ+ ‡ Å( Åe$ &Ä %
Ä
ý„‡ 0Š+ æ1ÿˆÅ( Åe Ã÷	ÿß%ÿÿ& ïp’* w rÿ÷	 øfœ( Á  fæ)ÿˆ‡fæÿˆ‡‡ ÷	Nÿðµ  8 2 Áe &À( ÷	€ €0
 0
 0
8 0
B 0
 0
 0
 0Š) ðÅ # ‡ ÷	æþðµ ) ÷	!‡f¦æ÷	Þ†ƒ‚„÷	º	‡òÆe ðÅ ) ÷	Bÿðe 6 p4 ÷	d0ž8 * ÷	¦þ‡ w	BñÁe ÁE ƒ ‡ÀúÊ„D`Ä ÊÁbˆl „ ˆl r ‡ w	 ñ

B€Áe ÁE !s  
‚ÂÅs-  ƒÅÀïÂÅ Csà Ãl ÈÀ¡       ± ‡ w	¶ðfB C 	œ" ¦æ&æÿˆ	‡÷	l †Â  ÃSYîð& * ‡ Å° p0 p2 q 1 0Š= ðµ   f&
&Îe< ð < æƒ
Á ÷	¦Æe ð < ð• * ‡ Á( Áe œ" f¦æÿˆ‡DC’B A ‡ 14  16  12  Áe p ðµ  l2 l0 p ‡ ðµ  ) ðµ  ð¥   ’¤ð¥   ’¤ðµ = ’¤° 0  ð¥   0  l °  ƒ0  ‡ ðµ  ðe 6 p4 ÷	Ž†8 ÷	Rÿ± ‡ ÷	†ü÷	Œ÷	Æ‡‡ ÷	nõ†‡ ð8 ðµ  	ðµ  ð ¡ ‡ ð•Öÿ* ± ‡ ð * ÷	˜ü  
4 6 Åå   Ã÷	Bü‡ðe 6 p4 ‡ ð& * ‡ &4 &6       ðµ   ÷	Œ ÷	à ‡°6 °4 ÷	’ w l Ä% °6 °4 ðµ   .
 ì6 )ƒ
ð 
l0 Á
ü° w ¾ÿ4 6 ÷	î °6 °4 ‡÷	: ðµ ) 04  06 
 0
 ð* ± ‡  ì0 ðe 6 p4 ÷‡ ÷	þþðµ   ÷	Øÿ‡ ÷	* ‡ðµ ) 	 l0 ì , ¡ ‡ ð•öÿ* ± ‡ ðÅ ) ÷	$ ‡‚ð ðÕ ) ¡ ‡ ð•öÿ* ðÕ ) ± ‡ 0,4  0,6 
 ‡ 0,  0,
  ƒf¦ 
 ÷	  ‚í†‡ p  °  ƒ÷	 ÷†‡ ¡ ‡ w	Ní  Á 

ì ì +Â% 
÷	¶úÕeB 
Á ÁÁU €Á5 ÁU UÁ‹åÕ Ä ÷	¦ú
‡pl  p &
Nœ °e ‡ ð•×ÿ* ± ‡ É¥ÿÿ± ‡ æ1      ÿˆ‡ Ä Ä ÷	BúU•Õ4 6 Åå w Núw	”ì÷	$ú
ÕUÄ ÷	6ú‡ ÷	HúB fÁe p `p w ªù                                                                                                                                                                                                                                                                                                                                                                                                                                      Y1 'TASKS:Y2 *ACTIVE:     Y3 *MEMORY:    KY4 -OUT:    Y5 *MEMORY:    K        7
ôÿ7
òÿ7
ðÿ7
îÿþˆN¶ÃVÄ ó ó5 € ö÷ LVóÄ& & ŽŽ
Žó5  ·
®ÿ·e¨ÿã·
¨ÿ·e¢ÿÞ‡ À´µÁ”ÿ÷	„ùÀÒµÁŒÿ÷	xùÀÄµÁzÿ
÷	dùÀâµÁjÿ
÷	PùÃœµ÷	~õ‡                                                                                                                                                                                                                                                                           Y"  JY# 8*** SUMMARY DISPLAY ***÷	( ÷	ä ÷	Ø÷	f‡   Y% >TRANS.  RUN:      7
âÿþˆüµ÷• M‡ ÷àô¤I÷Úô I÷e€ šIÀrªÀí€ªÁ  ÷	ÌfÁ’ A `À
û7¢ÿþˆ:¶7ŠÙL‡ ÀæµÁÿ÷	˜ùÃÔµ÷	Æõ‡         Y* WAPP. FILES:Y+ ^ OPEN:     Y, ] READS:     Y- \WRITES:     Y. ^ HITS:      7
 ÿ7
žÿ7
œÿ7
šÿþˆÈ¶÷• KL‡ ÷ôØH÷ôÔH÷e€ ÎH÷¤H÷ H÷œHÀ¨©Á¦©ðµ `7`¢HÂ( ÂeV Âe —¬@ ·
6ÿ
7`‚H·
(ÿ÷ÔÈvHù7l`ÿ7l`ÿ7l`ÿ7l`ÿÀe Á
ÒþˆZ·7Š¹K‡ ÁôþÀìà÷êþìÀ„¶÷	bøÁÞþÀ ìà÷ÔþøëÀ•¶÷	JøÁÈþÀêëà÷¾þâëÀ      ¥¶÷	2øÀs¶Á¦þ÷	&øÃX¶÷	^ô‡                     Y' > TSTS: Y( C LOADED:     Y) C IN USE:     Y* C QUEUED:     Y+ C MEMORY:    % Y% W MESSAGES: Y& \ ACTIVE:     Y' [ ON DISK:     Y( \ MEMORY:    % Y3 > FORMS: Y4 A IN CACHE:         Y5 C MEMORY:    % 7
ÿ7
ÿ7
ÿ7

ÿ7
ÿ7
ÿ7
ÿ7
ÿ7
 ÿ7
þþ7
7
7
 7
þþˆè¸÷• +J‡ ÷öñ¸F÷F÷ŒF÷ˆFÁ§C÷ØñšF÷	÷7a’FÅå õ‹	`·
–þwm`–þõ‹`·
ˆþõ¥ 	`·
€þwm`~þõ¥ 	`
·
rþwm`pþõ‹`·
dþA`C Í÷	¢÷÷	Ò÷÷0F+ÁŠÆ÷	œö÷ZñF7aFõµ @·
(þA      @ð÷¥ iÆ	·
(÷¥ qÆ·
 	÷¥ OÆ·
÷mVÆðýw  ÿ÷	¤ö÷	÷À`ù÷	:ö÷øð¸E7a´Eõµ @î·
Æýëþˆº7ŠI‡ Àå·Á¨ý÷	ÊõÀ÷·Ážý÷	¾õÀ	¸Á”ý÷	²õÀŽýÂ°ð÷	Öõ7‚ýÀ¸Ázý÷	–õÃÌ·÷	ÄñÀ?¸Áhý÷	‚õÀR¸Á^ý÷	võÀXýÂtð÷	šõ7LýÀd¸ÁDý÷	ZõÃ"¸÷	ˆñÀ‡¸Á2ý÷	FõÀŒ¸Ð•( Á$ý
÷	üöÈ•) ÀýÂ.ð÷	Tõ7ýÀ¸Áý÷	õÃk¸÷	Bñ‡         Y- > STATIONS: Y. A TERMINAL:     Y/ F TST:     Y0 A OUT ONLY:     Y1 D OTHER:      ÀûºÁ–ÿ÷	œôÀ
»ÁŒÿ÷	ôÀ»Á‚ÿ÷	„ôÀ/»Áxÿ÷	xôÃÜº÷	¦ð‡                                                   SY                 Y0 WFREE BLOCKS:Ã°µ÷	Jö÷•1 þˆ¶ÃzVó%SY Ã  ùÃ ÅÃ Å û÷œ ®ÿÃ  ÷ ¢ÿ‡ ÷SYÿ÷•  Œÿ÷ ˆÿ÷	ä ÷DBzÿ÷	 ÷DMpÿ÷	 ÷DRfÿ÷	 ‡ 7
`ÿþˆn¶ÃRÃ  ó-Jÿ ù÷ Rÿ÷œ <ÿ÷œ 7ÿ÷@ÿ‡ ÷:ÿ;þˆÌ¶Ã0ÿÄ.ÿôµ@  ·
ÿ !·
ÿø÷ ÿ	7  ÿ  7 ôþ 7  äþ7" àþ÷l äþ‡ ÷Úþ7
Ôþ÷	& ·ŠÀþ÷­¼þ»þw Šÿ‡ Y1 ^     :        ×­êÿ6 3Àò¶ÐŒþ÷  Þÿ÷  Üÿ÷  Øÿ÷  ÔÿÁrþ
÷	€úÀø¶÷fþÐ•( ÐbþÐ_þÁ\þ
÷	`úÈ•) Á¢µ
÷	 Ãì¶÷	ªô·Š€ÿ‡ w	ÔüÄ'Å
 ÂÅU D$†BA ÷	P &Â       (÷	 ÅU Â  ÀBQ÷	úÂ Ð•* Â
ü‡ & 

Î†Á`@€`ÃBöÖ‡ æÃ  & 
ÂA@ ‡€ã‚
Ã
÷Öƒ‡                                                                                                                                                                                                                                                                                                                                                                                                                             Y"  J  Y# :*** MESSAGE DISPLAY ***Y$ "TRANS.    SOURCE     STATY$ STIME    #  RTESY% #NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE Y' "                                                                            DO YOU WANT TO SEE REMAINDER OF DISPLAY <NO>?  Ãœµ÷	Jõ÷•' rÿþˆÜ¶÷• 7L‡ ÷¢H÷	,ú÷	\ú÷ºHÁÉø÷	&ù÷äó¤H7a Hõµ @÷	R ÷.ÿ õ¥ 	@äA@è÷	Pù÷	ºùÀ`ù÷	æø÷¤ódH7a`Hõµ @î÷	 ÷îþéþˆ`·7Š³K‡ ‡ æ@Hæ>Hw@6HÀž¨÷hó.H €7 €Âþ7€¾þ7€ºþðµ @÷ME      Æþ÷SSÂþ÷SL¸þ÷OT´þ×½^¨ ÷AC¬þ÷•T ¨þ÷NA þ÷CTœþÀv¶Á$`Â ÷	žú÷6¨›þ÷Õ0 •þÀŠ¶Á8¨÷	ä÷÷.¨¨G÷üÇJþ÷øÇFþ÷ôÇBþÀ¨Àe0 7 `†G÷Ü§4þ÷Ø§0þ÷Ô§,þþˆ<¸7Š×J‡ ÷%6  þ ÷ *ë÷	ô÷$ë&fÀ Á’¶÷	\ö€÷¥Y :ö7
ÎýÃœµ÷	–ó÷•& ¾ýÃ@¶÷	ˆó·Š²ýþˆœ¸÷• wJ‡ ·G·G‡                                                                                                                                                                                                                                                             Y"  J  Y# :*** TRANSACTION DISPLAY ***Y$ %TRAN        NUMBER      TIMES       TERM        SEQUENCE      ACTIVEY% %NAME       RUNNING      RQSTD       NAME         NUMBER        TST? Y' $                                  Y' H                                                                                                                                                                                                                                                                                  ¸¶                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            š·        DETAILED OR BRIEF DISPLAY <BRIEF>?   7
úÿÀ Áž»÷	ìò×­ÐòD ·
âÿ‡ ÷¸¶°û÷š·¬ÿ÷„ç÷ Èÿþˆ¼÷• G‡ ÷	nô÷	ØôÀ(Â¸¶`· zûJ, `r,` r,` Âe ï„
÷	<ãJ `r` r` ÷e >û
÷	Ôþˆl¼7Š§F‡ Ãœµ÷	 ï÷•' àù÷•' ú×-û¸¶z×-ûÆ¶÷	jÅ¸¶wÂùw ¾ùw ºùÀj¶A ÷	*óÀx¶A ÷	ó÷¥6 ”ù÷	,÷¦æ÷¥Y Ðñw ž ÃX¶÷	.ïD
 7 –ù7 ’ù7 ŽùÀ”¶ô Áe 
÷	(Ð•  
 ÷	´òô ÷YEvù÷•S rù÷NOhù÷•  dù÷¥6 <ù÷	¬÷¥Y VñÃ€¶÷	¸î·Šúø·Šù÷Zþ¾Åe w!"úw ÿ‡ Ä2
 ²
 r
` ¦ òþ Ä      òøý
 ÖƒËìý÷þ#Ãâý÷e Üý
3 ` 3`
 3
 ð`³
 æÈA7`ÂAóz¢ óv¢ ór¢ ·¬A‡   À¸¶ÁÆ¶	¢1¬  1¬  1¬  1¬  1¬  =wrøw nøw jøw føw bøw
 ^øw Zø	1  1  1  1  1
 
 1  È$øð"ø ðø ðø ðø ðø
 ðø ·
Pÿ@Áe w âø§÷@ÿ7
:ÿw 8ÿ‡ DO YOU WANT TO SEE REMAINING TRANSACTIONS <NO>?÷ vä÷	^í÷pä÷•Y šï
À ÁÈ¾÷	¤ï÷¥Y †ï
Ãœµ÷	èì÷•' (÷÷•' J÷‡ w	
õÄ'Å
 ÂÅU D$†BA ÷	P &Â (÷	 ÅU Â  ÀBQ÷	PòÂ Ð•* Â
ü‡ & 

Î      †Á`@€`ÃBöÖ‡ æÃ  & 
ÂA@ ‡€ã‚
Ã
÷Öƒ‡                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   Y"  J  Y# <*** TST DISPLAY ***Y$ #STATY$ 6QUEUED     MESGS     TST     TIMES     TIMES    I/OY% #NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQY' "                                                                            DO YOU WANT TO SEE REMAINDER OF DISPLAY <NO>?Ãœµ÷	Bõ÷•' tÿþˆä¶÷• /L‡ Àÿ÷	&ú÷	Vú÷´H÷¥ É÷÷‹#Éô÷	 ÷@ÿïþˆ·7ŠûK‡ ‡ ÷âÈ0ÿ÷ÞÈ,ÿ÷ÚÈ(ÿÀZ¶ÁñÈ÷	¦øÀd¶ÁàÈ÷	šøÀn¶ÁÂÈ÷	ŽøÀx¶ÁÖÈ÷	‚øÀ‚¶ÁÒÈ÷	vøÀŒ¶ÁÈÈÁE€ÿ÷	føÀ”¶Á¾È÷	ZøþˆŽ·7Š…K‡ ÷%6 ¸þ ÷ Øë      ÷	Àô÷Òë&fÀ Áœ¶÷	
÷€÷¥Y èö7
†þÃœµ÷	Dô÷•& vþÃJ¶÷	6ô·Šjþþˆî·÷• %K‡ ‡                                                                                                                                                                                                                                                                                                                                                                                                                                                   Y"  J  Y# 6*** CORE UTILIZATION DISPLAY ***Y# 3*** CACHE (TSTS) UTILIZATION DISPLAY ***Y# 0*** CACHE (TSTS & FORMS) UTILIZATION DISPLAY ***Y% & **************************************************************** Y. & ****************************************************************   6¶               CORE OR CACHE DISPLAY <CORE>?FULL OR LOWER HALF OF MEMORY DISPLAY (F/H) <F>?INCLUDE FORMS YES OR NO <NO>?÷2ì÷ †ÿ7
€ÿ)À ÁÔ¶÷	b÷÷ nÿ÷%CA>÷·
bÿÀ Á"·÷	D÷÷¥Y &÷·
JÿÀ Áò¶÷	,÷7
8ÿ÷¥H       
÷·
,ÿ÷% (ÿ÷4óÿþˆÀ·÷ðTÿ‡ ÷ÿ·úþÂöþÂ
¡ Ã ƒ
‚ý‚
÷æþÃå Ãå ÂÃ
ý·Èþ÷å ÌþÁÈþÁ
 
À€
Á
ü7¸þ÷6¶¨þ÷ ¦þ7
¤þÀšþÁœþ
÷	tùÐ•* È•* ÷e ‚þ÷m|þ‚þ÷
|þ÷% vþ÷~¶jþå÷hþâ÷% ÌýÃœµ÷	¦ó×-`þ Ã¦µ	×-Rþ ÃÌµÃúµ÷	‚ó÷% šýÃ0¶÷	tó÷- ŒýÃ0¶÷	fó÷/ ÆýÃx¶÷	Xó÷7 ¸ýÃx¶÷	Jó‡                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               ÷% ¸û÷	  7
êÿÂÌ¸÷% ¢û÷	"÷	¬÷	&‡ þˆ¼ÅÌ¸Äj  ^4½  ù 
5

 ô5€  
5  5  õ 
 8ô5   
  Þô5€  è       ô5  õ  õ:  õ   õU 
 7!ªPÄõ  õ  ó5 € õU 
 ó5  õU 
 5   ·
ÿÅe ÷%0 ÿÀ¾w >ÿ‡ Âüþ÷Ì¸øþÅôþõ5 
 w àþw Üþ@Àe ÁÐþ¦÷	°PÁÈþ÷	¨P‚÷e ÀþÂ
â‡ þˆd¼÷• ¯F‡ ÷zî<CÁš£C÷nî0C÷	¦ó7a(CÅå õ¥ 	`$J`ÊíPîr` ò 
 õ‹`òU 
 w`øBòLÃ òHÃ òDÃ Âe ·
Fþ×-Bþ0 A`C Ëþˆä¼7Š/F‡ ‡ þˆò¼÷• !F‡ ÷ìí¬BÁƒC÷àí B÷	ó7a˜BÅå õ‹	@7Àÿ÷	ôó÷	$ô÷‚B.÷¥ áÂ÷õ­öÂ
@óõ­ðÂ@ïõ-ìÂ@ëJ@Êí’ír@ ò¦Â ò¢Â òžÂ õ‹@òU 
 Âe ·
”ý×-ý0 A@C ¹þˆ–½7Š}E‡ ‡           Y& &                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       À Áä½Â  Ñ  Â
üÀ
ø÷ù‡ ÷% †ù÷	ÈÅÌ¸Ãxù@@m       Àm*õ÷$õ&õ€÷
 õüÀ%€ w æ ÷•[ Øû÷•] Óû÷•- Îûõµ 
 ÷•< ¾û÷•> ¹ûõµ 
 ÷•( ªû÷•) ¥ûõµ 
 ÷•= ˜ûÀä½DÄmÀô÷ºô¼ô„÷
¶ôü aÈ¥  €
ÐnûA Ámšô÷”ô–ô÷
ôüÁ
ÐRûûàKûA Ámvô÷pôrô÷
lôüDÄm`ô÷Zô\ô„÷
Vôüaw È w Ä w À ÷	f Åe ÷
vøw øþ÷::¤ ÷::  ÷::œ ÁôÁmô÷ôô÷
ôü÷ôÁÁ%€ ÷	 ÷•& ¾úÀä½÷	( ÷•0 °úÀ$¾÷	 ‡ ÀJÃÂ Áed¾	”Áe€ Â
û‡ ÷	& Ãœ½÷	øèÁ Àe@ ÷	 ·
rúÃœ½÷	àèÁ
ô‡ Â¢½Ã  Ã
ý‡               ÀÌ¸ÁØ¸Â¬÷Â
	"4wÜÿw Øÿw Ôÿw Ðÿw Ìÿw
 Èÿ	1  1  1        1  1
 
 Èšÿð˜ÿ ð”ÿ ðÿ ðŒÿ ðˆÿ
 ·
„ÿ@Áe Â
Å÷vÿ7
pÿw nÿ‡                                                                                                                                                                                                                                                                                                                                                                                                                                                       Y"  JY# >*** HELP DISPLAY ***Y% 5THE FOLLOWING COMMANDS ARE AVAILABLE:Y' ( ¶AP   -   CHANGE THE APPLICATION BEING DISPLAYED. L¶CY   -   CYCLES THROUGH ALL THE DISPLAYS.j¶EX   -   EXIT DEMO PROGRAM.ž¶FR N -   ALTER UPDATE FREQUENCY OF MAIN DISPLAY. Â¶HE   -   SHOWS THIS HELP DISPLAY.·ME   -   SWITCH TO THE CORE/CACHE MEMORY UTILIZATION DISPLAY.,·ME   -   SWITCH TO THE MESSAGE DISPLAY.L·NC   -   CANCEL CYCLE OPTION.n·NP   -   TURN-OFF PRINT OPTION.·PR   -   TURN-ON PRINT OPTION. ¾·SU   -   S      WITCH BACK TO THE SUMMARY MODULE.è·TR   -   SWITCH TO TRANSACTION DISPLAY.  TS   -   SWITCH TO TST DISPLAY.÷( ØýÃœµ÷	üóÃìµÅÃe ÷	îó·Š¾ýÃæµ÷	âóCó÷ 8ë÷	 ô‡                                                                                                                                                                                                                                                                                                                                                                     ØxÕ€Á› 8$            –,    ??u u     @ O                                                                                                                                                                                                           p                                                                                                                                                                                                                                                                                        SY  SY  SY  SY  TI  CL  TI  CL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ’ VÏ³ÀÀðp’                  ^   Ì                  úM  úM  úM  úM  .^  BP  .^  BP   @”  ?  u   €t                   Ï³VÀ]Õ(                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                Ï³      
 Ð                    H J Y  (***TRAX DEMO***           
    INS [300,30]HRDCPY/RUN=REM/TASK=HRDCPY    ÎZ&    #              ƒ  æÒÿˆ7
ðÿ÷Ôÿäÿ÷ÌÿàÿæÖÿˆæÚÿˆ÷	æâÿˆææÿˆæ ÿˆæÿˆ÷	æÿˆ÷ @(ÿÃ´÷	 æÿˆ÷	¨ ÷Lÿ4÷% Hÿ	÷	ˆ÷	ø
÷	ò
÷	ò
'÷% .ÿ÷	Þ
 ÷%  ÿ÷	Ú
÷% ÿ÷	Ê
÷% ÿ÷¬
÷	ª
÷	¨
÷% ìþ÷	–
÷Þþ÷       Üþ÷	²÷Ìþ7
Æþ÷	^÷Àþ÷
ºþ÷¶þ²þæ&ÿˆw Tÿæ*ÿˆÃº÷	@÷	÷	æ÷	`÷	z÷	¾÷	Z‡                               æ4ÿˆÖæsÿˆæ:ÿˆ×-˜ûøÿæªÿˆõ‡ 7- úÿ7- öÿ‡ æ@ÿˆw èÿ                                !                                                            /Ol|³GOl|³2  ‹Ol|³4…Ol|³                               æÿˆ×-Êúøÿ÷	Šæÿˆ†÷	~æ,ÿˆ†÷	ræ$ÿˆ†÷	f×-šú ö÷	´‡                 Y  V                                       æ–æ=ÿˆ÷Àÿ, À¬Á–÷	`	Ð•  Â ÷	‚	È•       Ã¦÷	v‡ Äÿ        Y  AUP            HRS ÁÞÿw ØÿÁe< ÁíÎÿ÷ÌÿÈÿw`Âÿ÷å< ºÿ·
¼ÿ÷%< ¶ÿ·
²ÿ7
¬ÿÀÁ¦ÿ
÷	0Ð•: Á”ÿ÷%
 ŽÿÐ•0 
÷	ŠÃ÷	æ‡ Y! ( *TASK01* Ãš÷	Ì‡ Y! 2CPU:  %   À  ÀøÿÂöÿ÷	˜À½
÷	ÄÃ´÷	–‡             Y! =POOL=                Áê

	
ÄÈ	t" †	 !m ¡
Q$õÀ Äî7®ÿ
÷	XÐ•: 7žÿ
÷	FÐ•: 7Žÿ
÷	6È• Ãö÷	‡                  Y! QCACHE=                       À  ÂÔÿ÷	° 7¼ÿÀ€÷	¤ 7²ÿ÷d ®ÿ÷í¦ÿ¨ÿ÷í¢ÿ¢ÿÀ( Àí¢ÿ÷( œÿÂ@ Âíÿ·Šÿ÷@ †ÿ÷	      j 7€ÿÀ™Ánÿ
÷	Ð•: Ábÿ
÷	‚Ð•: ÁVÿ
÷	t÷NÿÐ•  Ð•  Ð•  È•  Á8ÿ
÷	TÐ•: Á.ÿ
÷	FÈ• ÃŽ÷	 ‡ Ád ÷	œ@÷	®‡ ¦Â”÷	 ûÂ% ÷	
 õ÷	~ ‚‡ ¿üù·
øù·
öù÷% ðù‚÷	 ‡ ÷ @àùæ’ÿˆ÷ú÷ú÷ †û÷Æù‚ûæXÿˆ÷	žûæbÿˆ÷îù÷Þù÷ ^ûædÿˆ÷	|ûænÿˆ7
Ìù7
Šù‡ 
÷	€ÿ‡     Î¥ æ3ÿˆ÷  ùÖæsÿˆY7   J: Y6  K ILLEGAL COMMAND!                  æpÿˆ÷  âÿ÷  Þÿ÷  Úÿæˆÿˆ÷%SUÊÿ÷ >ù÷ 4ùz÷%MS´ÿ÷ (ù÷ ùo÷%TSžÿ÷ ù÷ ùd÷%TRˆÿ7
’ÿ÷ øø÷ îø÷¥A sÿT·
zÿQ÷%MEbÿ	      ÷ Öø÷ Ìø7
zD÷%HEHÿ÷	nw Pÿ;÷%PR6ÿ÷ ¢ø3÷%NP&ÿ7
”ø,÷%FRÿÀ`	Àe 
”Áå0 ÁW 	 ×p
 C`ô÷jø÷%APèþ÷	ú÷%EXÚþ
÷ Îùæ ÿˆæ3ÿˆ‡ æªÿˆw ÌþÁ%èÐ•  Á%d Ð•  Á%
 Ð•  ÁÐ•0 
÷	Ð‡ È  ð   ð   
÷	¸‡                               Y6   Y7  :  ÷äÿ÷Æÿ÷Êÿ÷ Æÿæî
ÿˆ†÷	¬ÿ
w²ÿ‚
W¤ üÂ
·¦ÿ÷¬ÿ÷ Žÿ÷•0 –ÿæî
ÿˆ†÷	zÿÀ'÷  Šÿ÷  †ÿ÷  ‚ÿ÷xÿ÷dÿ÷ `ÿæî
ÿˆ†÷	Fÿ÷ Bÿ÷Fÿ÷ Tôæî
ÿˆ†÷	(ÿ‡ ÊÎ@ Ò( Ö Ú0 Þ   @äê:dOÀð:dPÀö:d    :dQÀY"        J  Y# =*** SUMMARY DISPLAY ***Ãü÷	Tü÷	¤÷	TæÂÿˆ‡  @       €    Y% >TRANS.  RUN:    8Y' > TSTS:Y( C LOADED:     Y) C IN USE:   6 Y* C QUEUED:     Y+ C MEMORY:    % Y- > STATIONS:Y. A TERMINAL:     Y/ F TST:     Y0 A OUT ONLY:     Y1 D OTHER:     Y% W MESSAGES:Y& \ ACTIVE:     Y' [ ON DISK:     Y( \ MEMORY:    % Y3 > FORMS:Y4 A IN CACHE:     Y5 C MEMORY:    % Y* W FILES: Y+ ^ OPEN:   7 Y, ] READS: 325 Y- \ WRITES: 100  À€Á`þ÷	ÈüÀ¤ÁVþ÷	¼üÀ¶ÁLþ÷	°üÃR÷	€úÀ      ÛÁ:þ÷	œüÀêÁ0þ÷	üÀþÁ&þ÷	„üÀÁþ÷	xüÃ½÷	HúÀ1Á
þ÷	düÀDÁ þ÷	XüÀVÁöý÷	LüÃ÷	úÀxÁäý÷	8üÀŠÁÚý÷	,üÃ]÷	üù‡ ‡ ‡     ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ æ
æ
*æ
+
æ2æ3ÁE ÿæÂÎE ‚w	º…ŠÂ ‚†Á€Ð•- ŠƒÐŠÂÕ0 @A÷	*W 	 ƒÁe `fÃŠ
ÀÂ€Ã€ÂE ÷	Ôÿ”• ‡ JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECw	8D…&&÷	` Ð•- ÎeÁe)P”P”P”Ð•- $w	
DÅ … ƒ÷	& Ð•.  ÀÀÀ c e÷	‚À
…Ð•: ÷	
 Å
ù
Â÷	ÒþB‡ 7u TI   Ô4Y      À                  ƒGÔ4Y\  ƒ      $	          )      …ÕÀ]…Ô4Y  Ð  œ( 0       GÔ4Y\  ƒGÔ4Y\  ƒ  Ð  >	
 +         	 Ð  `	         GÔ4Y\    Ð  H	                  ÌË  ÿÿ                            ÿÿ                         &æ  
 †€m ¡ Î
øæ f
ÀAN ‡ã€
ö
 ÷–%‡ w	T Á( B ‰

C ƒàƒ
ò ñ€€B BÂe ¦æ?ÿˆ‡± B ñÿÿ( 1
< ‡ &æf… Þ	ƒ„…‡ &æ¦ff…
 Þ	‚ƒ„…‡                                                       ÿÿ    p    ÿÿ      œœœœœœœœœ                  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ&JRb  Z                                                            ÿ           °  ´         gF gÂ &&&H&&&&01234567SWAMLHCQFX BGIRVED   $6FV\b}~ \/'"%
^_@><$=CQ.;-+*,BEFGKLNOPRSVWX  ÎÈÎÈÈ
bn~†(ÚŠ¦ ®¸h"DàÈ~¨F¤<Ìö7
xþ7
ÿÆÆÜ÷zþÀÿ7 ÿ7Xþ7Ê÷dþ"÷¼þ ÿ÷	šÀOD÷	–ÀT:÷	Ž÷Dþ€æbæ?ÿˆ‡À–þ7þ÷	ÈÀŒþ7þ÷	¼7
¶þ&
æì ÷8¨þ÷þ
€7
þ÷	ú      Àœ
÷	üý†7Š†þ÷•ÿÿþ÷	ª÷àý 
w ¸÷	¦÷	¦1‡Âw	¼Ú‡DÄeìw	¬å†Ä%  ‡ÄeÜDlî÷	
‚
w ÄÀœÃÅ5 WÂ4  Ôû@Â÷	tZ† ˆÀœ
÷	fý† ÷‹éý÷	(;‡t6 Â÷	,3‡ ÷	4 ÂÃÄ®ýD÷	À#ÄEøÿÀ =÷	V ‘Àe0,÷	LÄÃÅ€ýí6@÷	* ÄèüÄàüÄdý‚
÷	H(ÆÜ÷.ýrý÷fý÷:^ýw ²þÀ ?÷	üÆÜ÷ýPý÷	ê7
.ýÀ•_ ÷	è7Š+ý

7Š"ý7
 ý÷	\w	|Ô‡Â÷	y (·Šý÷¥ ýüwòüƒå7Šìü÷• äü÷•þÿÜü
ÝÄ! ³76ÌüìÀ À Â
7¬ü7ºüwµü7œü7šüÀ% ÷5 Œü
éf÷	      
ù	|¬÷	œ·Š…ü÷	÷‹}ü÷bü^ü7Šqü÷mXüRü÷NüNü÷	ÀDü÷	ˆÀQü€ œ÷	úÄ.ü
7Š6ü7
4üw ÿ÷	º÷íüüá÷	$ ‚b‚
‚
·üÜ÷	 ‚ù÷	 ’Á

B`ñ÷	†÷% æûÂÜû‡ ÃÅÒûDáÄå À _÷	† &÷	pÀ•> ÷	|€€÷	`w ˆþ ú ˆÂ7û7Šªû÷• £û7Šžû÷U ðú÷‹–û÷E äú÷	 ÷	zæØúæÒú÷nû÷
hû÷>ûæeÿˆ÷¼úòè bû  À• 7Rû7ŠLûÀGûÇÂÄ 0×­5û Ç÷‹.ûÄ·Š&û÷U xúË·pú·nú7Þ÷‹û÷‹û²÷‹û÷	,ÅNú÷‹õú#Äðú÷• çúw)êúÄ t! Äå úÄTEÕwú7‘Áúô
Á´
„Äe0B7ªú÷	TÀ¢ú÷	PÀ: ÷	N@÷	      È ·Rú·Lú·Fú÷MP|ú÷•ÿÿyú¬÷ODnúøæüçæcÿˆ÷òç.ú·ìç·
Lú÷BENú7ŠMú–÷IOBú÷IL:úÞ÷FP2ú	÷EM*ú÷TR"ú·âù÷• úw øþÂ7pùÃwfù÷¥ ýù
÷òù÷¾ù úÀ÷	 ÷	¸æ
÷	h÷	¼÷	`÷	ÎŽ
Î% øò÷	  À ÁæÂFRÀ
ý‡ &JRbjZ÷	Fæ3ÿˆ ˆ÷	P÷	ý÷	fú÷	@÷	ý÷	Vú÷	0÷	ô 	@÷	@‘À÷	ô÷	4ñ
÷	÷	Ð ‚Äœø÷@ù,ù÷	Âõ÷Âæˆø·øø·zøÆèf&æ¦fæâø¦w	>¼€ ÷&ºøw	0¶·Èø€‚ƒ„…† ¶øÄ 4 $üâø Äå ÷‡ 
<$ ÔÄ% ù†‡ Ä! ‚Ä¡ ‡ ± ‡ ÷	èÿ‡ôÿÿ6„‡ 
÷	êÿ      û‡„
ûÄ% í‡4 4$ô ÔâÀvø7`\ø÷-XøÊ÷ƒ ÷	Ø Á´÷@@@PÀ¬÷@
@‡ Àe Àm.øðÂ7’÷ÃwŒ÷ÅŠ÷À*øàwø‡ ÷	Æ Àø÷	HÀø€ œ÷	º Áø@fù	|…‡ ÷‹ì÷
Ämä÷7à÷7ŠÚ÷‚
‡ æÃÒ÷ÃÃÃÄ`ÃÃÄ`ƒî

÷	’ À¥0 ‚À¥7 ‡ÀEøÿÄÄÄ`‚
ðA	 AåÁÑ‹ùÕ± … Ãr÷·t÷€†À’À‡ ÂÀ^÷÷\÷ÃP÷À5þÿ‘‡ À
÷	 À ÷ P÷7`÷æ÷·H÷æžÿˆü‡æ)ÿˆ‡ ÷.÷÷	Þÿ÷‹6÷€w výÀ0÷ÀE€ÿ÷&÷À÷ 
 w	Zÿþ‡À•$ ÷	¢ÿ a  z Àå  À¥  À•+ ‡ fÿˆ… &Î%Ü%‚Î%`"‡À$ ÷	jÿÎ% 	ƒ€ÀåÜ€ œÒÀU  ¦
N,ð‚      Ñû€@ìî€Àe0 ÷	6ÿ@œåë÷Üõ	„÷	Î NÀe0,÷	ÿ€7ÀõÃ Äþÿ	7
²õ7®õÃ ÄÿÿÀ &Äe  
N@Ä
üÀe0 ÷	ÜþÃ
óÀ•  Öw ÎþD6’Œ†÷	 ÷	ºþÀ ÷	´þÀ•  îÅ Âì@æ f
ÀAN ‡ã€
ö
 ÷–%À  Àe  Àe Àe	 Àe	 ÷	dþÅ
Þ‡ @(  ÄŒõ 
æÿÿ  
‚,6‚ì6B ‚Ðó€‡ €À÷                                                                                                                                                                                                                                    Ä€W!^Á› 8$         ÕÀ]    tŽ€»   ¯”L  Ðz@  z@   Ä%x@  <&%t@  ô' q@  Ô2 d@  $9Ì@   $9s;@  ´:a	@  ´:òs@  ´:ô@  ´:2“@   T;z@  R  @  Ry:@  Rz@  ?T@@   ahïL@  dhl@  hhÐ@  hh`;@  nhH…@   mz@  ÑxZ@  ÙüX@  €@  aì@   aìy@  nH@  p@  s<}@  s ‚@   ‚L	@  ‚@  ‚Ny@  ‚ðy@  ‚Â@   ©ˆw@  :©@  :©Ï_@  J©¼	@  P©\@   [©(}@  a© }@  i©€‰@  s©À@  Ýª K@   A«Äq@  ¡«@w@  Á«H£@  ã«fg@  ã«gg@   é«@Q@  ë«z}@  û¬Hg@  ù¯üX@  °úp@       (      ¤º h’Îòh„ Î2gh‚ ì€phT %–Th2%,¯hRÁH£hV«ÈKhè z""h ŒAh)hPŒA‡)hFÌ^|3hî Ì^ qhê Ì^¤’hì  aÎhÒ	avLh†	a\ghv Óf Zh€äfc±hæ  4k€hØmy:hxm²hvq h\KqÎh þ¬¯yì  p©Ó(     (             TI   =à     ‡ u 7ð  à$ (ð  & GÔ4Y¸	  Ô4Y 
¸	 <  < À            |³ƒ:  V  V À     l(   ƒ…Ô4Y          l&´:ô | 
 Ú                       N
       Ú ´:a	"N
 ¢             ¾          H J Y         
´:ô¾  È &***TRAX DEMO***  Þ  Þ     
               ÎZ&    #               ƒ  æ" ÿˆ†÷	7
êÿ÷ÎÿÞÿ÷Æÿ "  *Úÿæ ÿˆ†÷	æ÷  Dÿæ  ÿˆ†÷	ÔæŽ ÿˆ    &Ž  P†÷	Èæ¦ ÿˆ†÷	¼÷	Â÷	MINS [300,3 ¦  v0]HRDCPY/RUN=REM/TASK=HRDCPY  ” ”  ÷úÿ%æ0 ÿˆ×-    æJ ÿˆ†÷	hæd  0 s©ÀT;zJ (d  ºÿˆ†÷	\æ& ÿˆ×-    ù÷	 æd ÿˆ†÷	> & s©ÀT;z d  à÷ ®ÿ‡ æf ÿˆ×-    æl ÿˆ†÷	ò‡  f s©À$9s;l  ÷	² ÷Òþ?÷% Îþ	÷	  ÷	  ÷	  ÷	   ÷%       mzRz Ðz$z , ´þ÷	  ÷% ¦þ÷	  ÷% ˜þ÷	   ?T@€(ÑxZ R÷% Šþ÷ˆþ÷	  ÷	  ÷rþ÷ pþ÷ Ry:R   xnþ	·
dþ×-`þ ÷ Vþ÷	@÷Hþ7
Bþ÷	 ž
÷
<þ÷8þ4þæ ÿˆ†÷	f
w Jÿæ ÿˆ†  $  Ä÷	V
ÃÄ ÷	¶÷	H÷	È÷	H÷	&÷	æ÷	œ‡  
Ä  êAPPLICATION NAME?APPLICATION NOT FOUN D! APPLICATION NAME?  & &  À Áê÷	þþˆ@÷•   ‡ þˆL÷  Üÿ‡  ê@P©\ L$A«Äq Lþˆ‚ÄÒÿÄå  7  Èÿ7 î- Ÿ- ¦ ‚ r÷®ÿë÷ÿÿ¦ÿ‡ ÷ ÿ÷†ÿ÷À¦ÿ÷-‚       †ÿ$¦ÿ ˜ `Ø÷-|`Ô÷-v`Ð÷ `¢÷ `žþˆÂ7Š  ```©ˆw ` Á«H£ `&Â ¾  ‡ ÷`ÿÀ Áü÷	^¯‡  P©\ü æ æ  ‚<&%t è è   ú ú  ô' qÄ%x
 8 8/Ol|³GOl|³V  KOl|³X…Ol|³  VX v v æ8ÿˆ×-    ÷ìÿ)æ>ÿˆ†÷	†æP 8s©À$9s;>(P œÿˆ†÷	zæHÿˆ×-    ù÷% ¾ÿ÷	  7
´ÿ Hs©À$9s;$ù¯üX Â×-    ÷	N÷%  ÿ÷ ˜ÿ‡  s©À
$9Ì ð ðY  T    þˆ(÷•   ‡ æ ÿˆ†÷	êþˆF÷  Ä÷   (P©\ F"ã«fg(ã«      gg BÀ‡ þˆP7Š  ‡ ÷–ÿ, ÀöÁà÷	  Ð•   
PP©\ö à$a© } hÂ ÷	  È• Ãð÷	
‡ Äÿ        Y  ?U 
é«@Qð ŽP   š š HRS     ÁÞÿw ØÿÁe< ÁíÎÿ÷ÌÿÈÿw`Âÿ÷å< ºÿ·
 Æ¼ÿ÷%< ¶ÿ·
²ÿ7
¬ÿÀÁ¦ÿ
÷	  Ð•:  $:© ìÁ”ÿ÷%
 ŽÿÐ•0 
÷	  ŠÃˆ÷	z‡ Y!  :©ˆ &*      *     XXXXÅþˆŒÀ  À  ð   7   ð   
Œ¡«@wë«z}aì"ë«z}(s<} Fð  ð5    ð5   aìy‚L	‚
s ‚‚ðy‚Ny
 Z  ð5        <=     Ý

       s ‚
‚Âs ‚phhÐ"aì €   ‡ Ä ÅT%L#Ä ÅL nHnH  " & ¦t  Íõ 
÷ IXÿ÷DLTÿ÷E PÿÀ ÌA÷	  A÷	  Ã÷	¤‡ Y! 2CPU:      
[©(}[©(} ò     ö ö                Àäýp< wäÿÀ  
7rÚÿ "û¬Hg 7ÜÿÁÆýwpÆýÁmÀý@ÀíÆÿÀm¾ÿw¼ÿ7ºÿÁ B¾ÿÀ¼ÿÁí²ÿ€Àí®ÿ÷¬ÿ¦ÿ÷¨ÿ¢ÿ7r˜ÿ
pd  h7rÿÁd àW d Á
Àí
÷	  Ð•% Ð• í":© Ž  Ð•  È• Ãä÷	æ‡  ä ¨ ¨      Y! =POOL=                  Á¢ (¢ Î

	
þˆ      öÄ  	t" †	 !m ¡
Q$õ öJ©¼	 ô‡ À¸Ä¦7¦ÿ
÷	  Ð•: 7–ÿ
 ¸¦:© ÷	  Ð•: 7†ÿ
÷	  Ð•  Ð•  È• Ã®÷	 :©:©&® @D‡                    Y! QCACHE=    f                     NO CALLSþˆ÷•  $ Œ  ‡ ÷Àÿ¦ÿ÷†ÿÀ `Â²ÿ÷	Ø7˜ÿÀ `÷	 P©\¦ÿ†ÿdhl `&ahïL ` ²Ì7Žÿ÷d Šÿ÷í‚ÿ„ÿ÷í~ÿ~ÿ÷zÿ7
tÿ÷
nÿ ØÀ `Àípÿ÷ `jÿÂ `Âí^ÿ·Xÿ÷ `Tÿþˆ	7Š hh`; `hh`; `nhH… ` nhH… `&	 þ  ‡ ÷	z7DÿÀcÁ2ÿ
÷	  Ð•: Á&ÿ
÷	 P©\c:© $	        Ð•: Áÿ
÷	  ÷ÿÐ•  Ð•  Áÿ
÷	 :©:© J	  Ð•: Áúþ
÷	  Ð•  Ð•  Ð•  Ð•  È• Ã :©:© p	X÷	 ÷ÐþÃz÷	 ‡ ¦Â”Â% ÷	 ù Xz –	‚‡ ¿äö·
àö·
Þö÷% Øö‚÷	  ‡   Ò	 Ò	÷  ªöæv ÿˆ÷þö÷¬÷÷ Èÿ÷öÄÿæ v  ø	& ÿˆ†÷	÷	â÷æd ÿˆ†÷	÷Ðö÷x÷ & d  
÷ ”ÿæ& ÿˆ†÷	î÷	´÷æd ÿˆ†÷	Þ7
¢ö & d  D
7
<ö‡   N
 N
Î¥ æ3ÿˆ÷ ~öÖæsÿˆCOMMAND ?IL t
LEGAL COMMAND! COMMAND?PRINT OPTION N š
OT IMPLEMENTED.À Áh
÷	|÷%HE^÷	 h
 À
  ÷	ÿñ÷%      APL÷	Tøw  ÷%PR<÷	²öw  Ô2 d æ
÷%NP,7
 ö÷ ¾þæ& ÿˆ†÷	÷	Þöw  &  ê ÷%FRÀÀe 
”Áå0 ÁW 	 ×p  2
 C`ô÷¦õ]÷%EXÖ ÷Jö÷ fþæ& ÿˆ &&  X†÷	À÷	†öæ3ÿˆ÷%ME¬ ÷ nõ÷	  >÷% $Ry: ~SU˜ ÷ Zõ6÷%MSˆ ÷ Jõ.÷%TSx  ¤÷ :õ&÷%TRh ÷	  ÷ &õ÷%CYT ÷ ÙüX Ê õ·
õ÷%NC@ 7
õ÷ þôÀ Ár
 (r
 ð÷	> w Ðþ÷ âô‡                          " "Y6  J Y7  :  ÷âÿ÷  Äÿ÷"Èÿ÷  ´:ô"" HÄÿæ ÿˆ†÷	È 
w°ÿ‚
W¤ ü      Â
·¤ÿ÷ªÿ   n÷  Œÿ÷•0 ”ÿæ ÿˆ†÷	– À'÷  ˆÿ÷ ´:2“  ”  „ÿ÷  €ÿ÷vÿ÷*bÿ÷ ^ÿæ ÿˆ†÷	 *"  ºb ÷  @ÿ÷Dÿ÷ @ÿæ ÿˆ†÷	D ‡ ? FA ´:òs  àTAL DIRECTIVE ERROR - ERROR CODE IS -      LOCATION:    Á  À
÷	  À‚
÷	   s©À:©:©Ï_ p©Ó         Ú   ÜB          ´:ô    Ú     Ü     : :æ  ÿˆæ3ÿˆÁ%'Ð•  Á%èÐ•  Á%d  p©Ó   `Ð•  Á%
 Ð•  ÁÐ•0 
÷	  ‡ Ád ÷	  :© †  @÷	  ‡ 
Ew
 WuöÿÅEÀÿ      ‡  Ýª Ki©€‰           »RÀkQÁ› 8$        	.TITLE	MISCELLANEOUS ROUTINES USED BY TRAX DEMO	.SBTTL	CCBNXT - RETURNS NEXT CCB IN USE	.MCALL	ASRDF$	ASRDF$;; CCBINI: CALLED TO EXECUTE ONE TIME ONLY CODE NEEDED TO GENERATE A;	  LIST OF CCBS IN USE.;; CCBNXT: RETURNS ADDRESS OF THE NEXT CCB IN USE;;; OUTPUT: UISAR3 POINTS TO COMMON AREA;	  R0 IS OFFSET FROM THE BASE OF THE COMMON AREA OF THE CCB;              IF R0 = 0 NO MORE CCBS IN USE;; NOTE:	THIS ROUTINE ASSUMES THAT WHEN IT IS CALLED, THE CALLING;	PROGRAM IS IN CONTEXT INHIBITED MODE.;;CCBFRE:	.BLK      B	66.CNTER:	.WORD	0CCBPNT:	.WORD	0CCBINI::	MOV	COM.AD,UISAR3	;MAP TO THE COMMON AREA	MOV	COM.AD,UISAR4	;USE TWO PARS SO CAN MAP TO 8K	ADD	#200,UISAR4	MOV	#77406,UISDR3	MOV	#77406,UISDR4;; CLEAR CCB FREE TABLE:;	MOV	#CCBFRE,R0	;POINT TO BEGINNING OF TABLE	MOV	#32.,R1		;SET UP COUNTER1$:	CLR	(R0)+	SOB	R1,1$;; CALCULATE NUMBER OF CCBS;	MOV	60000+.ACTTB,R0	;GET END OF CCB AREA	SUB	60000+.CCBBA,R0	;SUBTRACT BEGINNING AREA	MOV	#C.CSIZE,R1	;AND DIVIDE BY CCB SIZE TO OBTAIN	CALL	$DIV		;NUMBER OF CCBS	MOVB	#2,CCBFRE      (R0)	;INDICATE THAT WE ARE AT END OF CCBS;; FIND OUT WHICH CCBS ARE FREE;	MOV	60000+.CCBLH,R0	;POINT TO THE FIRST CCB IN THE FREE LIST	BEQ	6$		;IF EQ - THEN NO FREE CCBS5$:	MOV	R0,R2		;KEEP A COPY OF IT SINCE R0 WILL BE CLOBBERED	SUB	60000+.CCBBA,R0	;SUBTRACT BASE OF CCB	MOV	#C.CSIZE,R1	;FIND OUT WHICH CCB THIS IS	CALL	$DIV		;(THIRD,EIGHTH,ETC.)	MOVB	#1,CCBFRE(R0)	;SET BYTE TO INDICATE THAT THIS CCB IS FREE	MOV	60000(R2),R0	;GET NEXT FREE CCB	BNE	5$		;IF NE- THEN MORE FREE CCBS6$:	MOV	60000+.CCBBA,CCBPNT ;K      EEP A POINTER TO NEXT CCB TO BE RETURNED	CLR	CNTER		;INITIALIZE CCB COUNTER	RETURNCCBNXT::	MOV	CNTER,R1	;GET OFFSET OF BYTE	MOV	CCBPNT,R0	;POINT TO CCB	CMPB	#2,CCBFRE(R1)	;ARE WE AT THE END OF CCBS?	BEQ	11$		;IF EQ - YES	INC	CNTER		;UPDATE FOR NEXT TIME	ADD	#C.CSIZE,CCBPNT	;ALSO POINTER	TSTB	CCBFRE(R1)	;IS CCB FREE?	BEQ	12$		;IF EQ - NOT FREE AND WE CAN RETURN	BR	CCBNXT		;CCB NOT FREE SO GO BACK AND LOOK AT NEXT ONE11$:	CLR	R012$:	RETURN	.PAGE	.SBTTL	SCBNXT - RETURNS THE ADDRESS OF THE SCB FOR THE NEXT ACTI      VE STATION;; SCBINI: PERFORMS ONE TIME ONLY INITIALIZATIONS;; SCBNXT: RETURNS KT ADDRESS OF NEXT ACTIVE SCB;; OUTPUT: UISAR4 POINTS TO SCB;         IF UISAR4 = 0 THEN NO MORE ACTIVE SCBS;; NOTE:	THIS ROUTINE ASSUMES THAT WHEN IT IS CALLED THE CALLING PROGRAM;	IS IN CONTEXT SWITCHING INHIBITED MODE.;TERM.F:	.WORD	0PNTR:	.WORD	0END:	.WORD	0SCBINI::	CLR	TERM.F	MOV	COM.AD,UISAR3	;MAP TO COMMON AREA	MOV	COM.AD,UISAR4	ADD	#200,UISAR4; LOOK AT NON-TERMINAL SCBS	MOV	60000+.SCBTA,PNTR ;POINT TO BASE OF ALPHA TABLE	M      OV	PNTR,END	ADD	60000+.SCBTZ,END	;AND ADD TABLE SIZE TO GET ENDING 					;ADDRESS OF TABLE.	CMP	#777,R0			;DO WE WANT TERMINAL SCBS	BNE	5$			;IF NE - YES	INC	TERM.F			;SET FLAG SO WHEN WE FINISH GOING					;THROUGH NON-TERMINAL SCBS WE'LL					;SKIP TERMINAL ONES5$:	RETURNSCBNXT::	MOV	COM.AD,UISAR3		;POINT TO THE COMMON AREA	MOV	COM.AD,UISAR4	ADD	#200,UISAR4	CMP	PNTR,END	;ARE WE PAST THE END OF THE TABLE?	BGT	10$		;IF GT - YES	MOV	PNTR,R4		;POINT TO NEXT ENTRY IN ALPHA TABLE	ADD	#2,PNTR		;POINT TO NEXT ENTRY F      OR NEXT TIME												MOV	60000(R4),UISAR4 ;MAP TO SCB	BEQ	SCBNXT		;IF EQ - NO SCB FOR THIS ENTRY IN ALPHA TABLE	CMPB	#ST.NAT,100000+S.SAT ;IS STATION INACTIVE?	BEQ	SCBNXT		;LETS TRY AGAIN	BR	99$		;WE ARE ALL SET SO LETS RETURN10$:	TST	TERM.F		;DID WE LOOK AT TERMINAL STATIONS YET?	BNE	90$		;IF NE - YES	INC	TERM.F		;SET (LOOKED AT) TERMINAL FLAG; NOW PROCESS TERMINAL SCBS:	MOV	60000+.SCBTT,PNTR	MOV	PNTR,END	ADD	60000+.SCBTS,END	BR	SCBNXT		;JUMP BACK INTO MAIN LOOP90$:	CLR	UISAR4		;INDICATE THAT NO MORE SC      BS AROUND99$:	RETURN	.END           •  NÁ› 8$     æ  .MAIN.	MACRO M1110  25-JAN-79 09:14  PAGE 1      1		000010 				A=10      2		000020 				B=20      3		000030 				C=30      4      5	000000	012700 	000060 			MOV	#A+B+C,R0      6		000001 				.END.MAIN.	MACRO M1110  25-JAN-79 09:14  PAGE 1-1SYMBOL TABLEA     = 000010   	B     = 000020   	C     = 000030. ABS.	000000	   000      	000004	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  69 WORDS  ( 1 PAGES)DYNAMIC MEMORY:  2980 WORDS  ( 11 PAGES)ELAPSED TIME:  00:00:03ABE,ABE.LST/-SP=ABEæ         z)T^Á› 8$         zzQ    ¯”L  U(k@  ŒAh)@  avL@       (ˆz)Th& p©Ó(
 ¯”             Y"  J  Y# =*** SUMMARY DISPLAY *** & Ã  ÷	  ÷	¤÷	     
avLU(k p©Ó                6  6 æ  ÿˆ‡  @       €    Y% >T p©Ó   \ RANS.  RUN:  h  h    8Y' > TSTS:Y( C LOADED:     Y) C Ž  IN USE:   6 Y* C QUEUED:     Y+ C M ´ EMORY:    % Y- > STATIONS:Y. A TERM Ú INAL:     Y/ F TST:     Y0 A OUT ONL  Y:     Y1 D OTHER:     Y% W MESSAGE &S:Y& \ ACTIVE:     Y' [       ON DISK:     L Y( \ MEMORY:    % Y3 > FORMS:Y4 A r IN CACHE:     Y5 C MEMORY:    % Y*  ˜W FILES: Y+ ^ OPEN:   7 Y, ] READS:  ¾325 Y- \ WRITES: 100   Ö ÖÀ„ Á`þ÷	  À¨ ÁVþ÷	  Àº ÁLþ÷	  Ã „ ŒAh)¨ ŒAh)º &ŒAh) üV ÷	  Àß Á:þ÷	  Àî Á0þ÷	  ÀÁ&þ V avLß ŒAh)î  ŒAh)$ "÷	  ÀÁþ÷	  ÃÁ ÷	  À5Á
þ÷	  À ŒAh)
ŒAh)Á avL5&ŒAh) HHÁ þ÷	  ÀZÁöý÷	  Ã÷	  À|Áäý HŒAh)ZŒAh) avL$| n÷	  ÀŽÁÚý÷	  Ãa÷	  ‡        ŒAh)
ŽŒAh)aavL           €m^Á› 8$         	±Œ:    ¯”L  r	ø/@  %,¯@  ‘ø“@   ,{:@  z""@  zÀ¨@  z¸«@  2ø/@   ÐOÀ@  !!ø“@  r!¸«@  É2Ú@  x:¸«@   vQX@  rh !@  "qS@  ”sLq@  çtà8@   çtµW@  çtBx@  az€}@  €¬±@  nH@   p@  t@  »„1	@  »„ñ@  bS@   Ô’xQ@  Ô’Lq@  Ô’Ræ@  .”ìq@  .”Bx@   ó«F@  à¯vQ@      (°                                      "qSÐOÀ
”sLqbS            Ô’RæÔ’xQÔ’Lq
r	ø/  
‘ø“            ÷    ÷ 2ø/  !!ø“
 x:¸«%,¯»„1	    ª  2   ÷`    j Ã »„ñà¯vQ`
vQXaz€}j  @   ×,  #÷,   Ã  õÃ ó«Ft
nHnH vQXt Z   ÷    ÷tb  ‡ ÷   prh !
»„1	tbÉ2ÚvQX n         ÷   çtµW zÀ¨
z"" x     ÷     çtà8 .”ìq
  çtBx €         7
  À  ·
  .”BxzÀ¨
z""€¬±É2Ú ”   Àå `   ø‡              €¬±,{:z¸«z""z¸«z"" ®    r!¸«  ª         €mNÁ› 8$        .MAIN.	MACRO M1110  29-JAN-79 13:49TABLE OF CONTENTS     3-    1	COUNT NUMBER OF TSTS QUEUED TO MEMORY.MAIN.	MACRO M1110  29-JAN-79 13:49  PAGE 3COUNT NUMBER OF TSTS QUEUED TO MEMORY      1						.SBTTL	COUNT NUMBER OF TSTS QUEUED TO MEMORY      2      3      4					;      5					;      6					; NOTE:	THIS SECTION OF CODE IS ONLY TEMPORARY. ITS PURPOSE IS TO OBTAIN      7					;	THE POINTER TO THE FIRST CONTEXT BLOCK OF TSTS QUEUED TO MEMORY.      8					;      9					;	CODE ASSUMES THAT POINTER TO TSTS QUEUED I      S AT OFFSET (622+342)     10					;	IN THE PARTITION IN WHICH THE QUEUE MANAGER RUNS.     11					;     12					;	ONCE THE LISTHEAD TO TSTS QUEUED IS PUT INTO THE COMMON AREA IT     13					;	WILL NOT BE NECESSARY TO GET AT THE POINTER BY LOOKING INTO THE     14					; 	EXECUTION MANAGER CODE.     15					;     16					;     17     18     19     20     21	000000	000000G	000000G	000000 	RDB:	RDBBK$	,ECX001,,<RS.RED>	000006	000000G     22A    23	000010	000000G	000003 	000000 	WDB:	WDBBK$	3,,,0,,<WS.64B!WS.MAP!WS.RED      >	000016	000000 	000000 	000000	000024	000000C     24     25     26					;     27					; DIRECTIVES:     28					;     29A    30	000026	000000G	000000'		ATRG:	ATRG$	RDB		;ATTACH TO EXECUTION MANAGER CONTEXT BLOCK REGION     31A    32	000032	000000G	000010'		CRAW:	CRAW$	WDB		;CREATE ADDRESS WINDOW     33A    34	000036	000000G	000000'		DTRG:	DTRG$	RDB		;DETACH REGION     35A    36	000042	000000G	000010'		ELAW:	ELAW$	WDB		;ELIMINATE ADDRESS WINDOW     37     38     39     40     41	000046	000000G				INH$S			;INHI      BIT CONTEXT SWITCHING     42     43	000050	016767 	000000G	000000G		MOV	COM.AD,UISAR3	;POINT TO THE COMMON AREA     44	000056	012767 	077406 	000000G		MOV	#77406,UISDR3     45     46	000064	016767 	060002G	000000G		MOV	60000+.EXMAN+2,MANAG ;GET NAME OF EXECUTION MANAGER     47     48     49					;     50					; GO THROUGH TCBS UNTIL YOU FIND THE ONE FOR THE EXECUTION MANAGER:     51					;     52     53A    54	000072	000000G	000152'			SWITCH$	20$			;SWITCH TO KERNEL MODE.MAIN.	MACRO M1110  29-JAN-79 13:49  PA      GE 3-1COUNT NUMBER OF TSTS QUEUED TO MEMORY     55     56     57	000076	012703 	000000C			MOV	#$TSKHD-T.TCBL,R3 	;POINTER TO FIRST TCB     58     59	000102	026327 	000000G	021403 	10$:	CMP	T.NAM(R3),#^REXC  	;DO WE HAVE TCB OF EXECUTION MANAGER?     60	000110	001004 				BNE	11$		  	;NO     61	000112	026367 	000002G	000000G		CMP	T.NAM+2(R3),MANAG     62	000120	001403 				BEQ	12$		  	;YES     63     64	000122	016303 	000000G		11$:	MOV	T.TCBL(R3),R3		;POINT TO NEXT TCB     65	000126	001365 				BNE	10$			;GO BA      CK AND TRY AGAIN     66     67	000130	016303 	000000G		12$:	MOV	T.PCB(R3),R3		;POINT TO PARTITION CONTROL BLOCK     68	000134	016367 	000000G	000000G		MOV	P.REL(R3),UISAR3	;MAP UISAR3 TO EXECUTION MANAGER PARTITION     69	000142	016767 	061164 	000000G		MOV	60000+1164,HEADER	;GET TSTS QUEUED HEADER     70     71     72	000150	000207 				RETURN     73     74     75     76					;     77					; NOTE:	WE HAVE NOW FINISHED WITH TEMPORARY CODE AND WILL NOW PROCEED TO     78					;	MAP TO EXECUTION MANAGER CONTEXT BL      OCK REGION.     79					;     80					;     81     82     83					;     84					; MAP TO EXECUTION MANAGER CONTEXT BLOCK REGION:     85					;     86     87	000152	016767 	000000G	000000C	20$:	MOV	MANAG,RDB+R.GNAM+2	;INSERT NAME OF REGIONA    88	000160	000000G	000000 	000000G		DIR$	#ATRG,DIRERR		;ATTACH TO REGION     89     90	000166	016767 	000000C	000000C		MOV	RDB+R.GID,WDB+W.NRID	;GET REGION ID     91	000174	016767 	000000C	000000C		MOV	RDB+R.GSIZ,WDB+W.NSIZ	;AND REGION SIZE     92A    93	000202	000000G	00000      0 	000000G		DIR$	#CRAW,DIRERR		;CREATE WINDOW     94     95     96     97					;     98					; GO THROUGH THE CONTEXT BLOCKS:     99					;    100    101    102    103	000210	005067 	000000G			CLR	TST.QD    104	000214	016700 	000000G			MOV	HEADER,R0		;POINT TO THE FIRST TST QUEUED    105    106    107	000220	001407 			30$:	BEQ	50$			;IF EQ - NO MORE TSTS QUEUED    108	000222	005267 	000000G			INC	TST.QD			;ONE MORE TST QUEUED    109	000226	162700 	060000 			SUB	#60000,R0		;GO FROM VIRTUAL 140000 TO VIRTUAL 600      00    110	000232	016000 	000000G			MOV	C.LINK(R0),R0		;POINT TO THE NEXT TST QUEUED TO MEMORY    111	000236	000770 				BR	30$.MAIN.	MACRO M1110  29-JAN-79 13:49  PAGE 3-2COUNT NUMBER OF TSTS QUEUED TO MEMORY    112    113    114	000240	000207 			50$:	RETURN    115    116    117    118					;    119					; DETACH REGION    120					;    121    122A   123	000242	000000G	000000 	000000G		DIR$S	#DTRG,DIRERR		;DETACH WINDOWA   124	000250	000000G	000000 	000000G		DIR$S	#ELAW,DIRERR		;ELIMINATE ADDRESS WINDOW    125      	000256	000000G				ENB$S				;ENABLE CONTEXT SWITCHING    126    127E     0.MAIN.	MACRO M1110  29-JAN-79 13:49  PAGE 3-3SYMBOL TABLEATRG    000026R  	DTRG    000036R  	MANAG = ****** GX	SWITCH= ****** GX	WDBBK$= ****** GXATRG$ = ****** GX	DTRG$ = ****** GX	P.REL = ****** GX	TST.QD= ****** GX	WS.MAP= ****** GXCOM.AD= ****** GX	ECX001= ****** GX	RDB     000000R  	T.NAM = ****** GX	WS.RED= ****** GXCRAW    000032R  	ELAW    000042R  	RDBBK$= ****** GX	T.PCB = ****** GX	WS.64B= ****** GXCRAW$ = ****** GX	ELAW$       = ****** GX	RS.RED= ****** GX	T.TCBL= ****** GX	W.NRID= ****** GXC.LINK= ****** GX	ENB$S = ****** GX	R.GID = ****** GX	UISAR3= ****** GX	W.NSIZ= ****** GXDIRERR= ****** GX	HEADER= ****** GX	R.GNAM= ****** GX	UISDR3= ****** GX	$TSKHD= ****** GXDIR$  = ****** GX	INH$S = ****** GX	R.GSIZ= ****** GX	WDB     000010R  	.EXMAN= ****** GXDIR$S = ****** GX. ABS.	000000	   000      	000260	   001ERRORS DETECTED:  11
VIRTUAL MEMORY USED:  356 WORDS  ( 2 PAGES)DYNAMIC MEMORY:  2980 WORDS  ( 11 PAGES)ELAPSED TIME:  00:   4   00:10TSTQUE,TSTQUE.LST/-SP=TPMMC/ML,EXEMC/ML,TSTQUE 4          mz^Á› 8$         zzQ    tŽ€»   ¯”L  â)sE@  â)ÌG@   â)2H@  ä)½‹@  å)Û%@  æ)ÐW@  ó)[}@   õ)üX@  ŒAh)@  æ[à8@  avL@  4k€@   mÌx@  mïy@  my:@  m²@  ±n\@   ±nÖK@  ±nµW@  ±này@  ³nP@  ³nÖK@   q @  Ýª K@  „¯½`@  h±ì&@  Õ±à@   ™²`;@      (4mzh.¯”             Y"  J  Y# 8*** SUMMARY DISPLAY *** & Y% 'PROCESSORS:Y& 'PRINT:Y' 'ACT. P L ROC:    Y( 'ACT. JOBS:  d  d     Y) &WAIT. JOBS:    Y+ 'BATCH:Y, Š  'ACT. PROC:    Y- 'ACT. JOBS:  ª  ª     Y. &W      AIT. JOBS:     Y% *QUEUEY Ð & )MANAGERY' )STOPPED  è  è Y) 'PRINT:Y* &WAIT. JOBS:       Y, 'BATCH:Y- &WAIT. JOBS:  $ $       * *      . .÷	  ÷%   w ˆ À  7  7 my:m²q 4k€ä)½‹ H  Á  À  ð 4k€õ)üX4k€æ)ÐWæ[à8
4k€ Z*  ÷	  ðÊû °
 ÷*¸ýÀ Á *ó)[}
h±ì&å)Û% å)Û% * x  ÷	  Áe*w¦ý÷ \Á*÷	X÷~ P d ÷ ±nÖKÝª K**$P &d  žÌ x ÷ @Á*÷	<÷b – ª ÷° ¾ À  ÷	 x *– ª "¾ &4k€       Ä  Ã  ÷	  ÷  Ã& ÷	  ÃÄ ÷	 „¯½`  avLm²& avL Ä  ä  ÷%   ÷†úû÷‚úû÷Àú$û÷¼ú ûÃè  avL
m²(è  
÷	  ‡      7
öÿ7
ôÿ÷ ðÿÀýð  ðµ avL$±nµW 0    ðµ    ·
Îÿð  ·
ÆÿÀe  ÷
Àÿé mïy±nàymÌx±này³nP"³nÖK VÀÁ´ÿ÷	  ÀÁ¬ÿ÷	  ƒ 7
¢ÿ÷ žÿÀ°üð ŒAh)ŒAh) |  ðµ    ðµ    
Åe  D÷	 ·
pÿ ±nµW
mïy±nàymÌx±này±n\ ¢ùÀe  ÷
hÿæÀÁ^ÿ÷	  ƒ & 
 ÑÀÅ.` ±nÖKŒAh)&. ÈŠÄ 7! 7 Á.÷	 €‡  . ê ê  À   ”     p À  ð   ææ°    Îe ° 4k€â)sE 4k€â)sEæ â)2H  ðâ  ÷	  †w žþ÷	  ×-Àÿ ÷¸ÿ¸ÿ‡  â)2H â
â)ÌGÕ±à™²`;  ”          mzNÁ› 8$        SUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07TABLE OF CONTENTS     4-    2	ASCII	DISPLAY     5-   91	MAIN LOOP     7-  245	DOPRO-COUNT NUMBER OF ACTIVE PROCESSORS & JOBS     8-  294	DOQUE-COUNT NUMBER OF WAITING JOBS     9-  334	MISCELLANEOUS ROUTINESSUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07  PAGE 4      1						.TITLE	SUMMARY REPORT - PART 1 - BATCH & PRINT PROCESSOR INFORMATION      2						.SBTTL	ASCII	DISPLAY      3						.NLIST	BEX      4      5      6		000033 				ESC=3      3      7		000112 				ES=112      8		000131 				CD=131      9     10	000000	   033 	   131 	   042 	TIT:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR     11	000005	   033 	   112 	   000 		.ASCII	<ESC><ES><0><0>		;ERASE TO END OF SCREEN     12	000011	   033 	   131 	   043 		.ASCII	<ESC><CD><31.+4.><0><31.+25.>	;POSITION CURSOR     13	000016	   052 	   052 	   052 		.ASCII	/*** SUMMARY DISPLAY ***/<1>     14     15	000046	   033 	   131 	   045 	DISP:	.ASCII	<ESC><CD><31.+6.><0><31.+8.>     16	000053      	   120 	   122 	   117 		.ASCII	/PROCESSORS:/     17     18	000066	   033 	   131 	   046 		.ASCII	<ESC><CD><31.+7.><0><31.+8.>     19	000073	   120 	   122 	   111 		.ASCII	/PRINT:/     20     21	000101	   033 	   131 	   047 		.ASCII	<ESC><CD><31.+8.><0><31.+8.>     22	000106	   101 	   103 	   124 		.ASCII	/ACT. PROC:/     23						.EVEN     24     25	000120	   040 	   040 	   040 	PRT.PR:	.ASCII	/    /     26     27	000124	   033 	   131 	   050 		.ASCII	<ESC><CD><31.+9.><0><31.+8.>     28	000131	   101       	   103 	   124 		.ASCII	/ACT. JOBS:/     29						.EVEN     30	000144	   040 	   040 	   040 	PRT.AC:	.ASCII	/    /     31     32	000150	   033 	   131 	   051 		.ASCII	<ESC><CD><31.+10.><0><31.+7.>     33	000155	   127 	   101 	   111 		.ASCII	/WAIT. JOBS:/     34						.EVEN     35	000170	   040 	   040 	   040 	PRT.WT:	.ASCII	/    /     36     37     38     39	000174	   033 	   131 	   053 		.ASCII	<ESC><CD><31.+12.><0><31.+8.>     40	000201	   102 	   101 	   124 		.ASCII	/BATCH:/     41     42	000207	         033 	   131 	   054 		.ASCII	<ESC><CD><31.+13.><0><31.+8.>     43	000214	   101 	   103 	   124 		.ASCII	/ACT. PROC:/     44						.EVEN     45	000226	   040 	   040 	   040 	BAT.PR:	.ASCII	/    /     46     47	000232	   033 	   131 	   055 		.ASCII	<ESC><CD><31.+14.><0><31.+8.>     48	000237	   101 	   103 	   124 		.ASCII	/ACT. JOBS:/     49						.EVEN     50	000252	   040 	   040 	   040 	BAT.AC:	.ASCII	/    /     51     52	000256	   033 	   131 	   056 		.ASCII	<ESC><CD><31.+15.><0><31.+7.>     53	0002      63	   127 	   101 	   111 		.ASCII	/WAIT. JOBS:/     54						.EVEN     55	000276	   040 	   040 	   040 	BAT.WT:	.ASCIZ	/    /<1>     56     57SUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07  PAGE 4-1ASCII	DISPLAY     58     59					;     60					; QUEUE MANAGER STOPPED DISPLAY:     61					;     62     63	000304	   033 	   131 	   045 	DISP1:	.ASCII	<ESC><CD><31.+6.><0><31.+11.>     64	000311	   121 	   125 	   105 		.ASCII	/QUEUE/     65	000316	   033 	   131 	   046 		.ASCII	<ESC><CD><31.+7.><      0><31.+10.>     66	000323	   115 	   101 	   116 		.ASCII	/MANAGER/     67	000332	   033 	   131 	   047 		.ASCII	<ESC><CD><31.+8.><0><31.+10.>     68	000337	   123 	   124 	   117 		.ASCII	/STOPPED/<1>     69						.EVEN     70     71     72	000350	   033 	   131 	   051 	DISP2:	.ASCII	<ESC><CD><31.+10.><0><31.+8.>     73	000355	   120 	   122 	   111 		.ASCII	/PRINT:/     74     75	000363	   033 	   131 	   052 		.ASCII	<ESC><CD><31.+11.><0><31.+7.>     76	000370	   127 	   101 	   111 		.ASCII	/WAIT. JOBS      :/     77						.EVEN     78	000404	   040 	   040 	   040 	PR.WT1:	.ASCII	/    /     79     80	000410	   033 	   131 	   054 		.ASCII	<ESC><CD><31.+13.><0><31.+8.>     81	000415	   102 	   101 	   124 		.ASCII	/BATCH:/     82     83	000423	   033 	   131 	   055 		.ASCII	<ESC><CD><31.+14.><0><31.+7.>     84	000430	   127 	   101 	   111 		.ASCII	/WAIT. JOBS:/     85						.EVEN     86	000444	   040 	   040 	   040 	BT.WT1:	.ASCIZ	/    /<1>     87     88     89SUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-      JAN-79 10:07  PAGE 5MAIN LOOP     91						.SBTTL	MAIN LOOP     92     93						.MCALL	OFID$,CLOSE$,READ$,WAIT$     94     95	000452				PAGE1:	.BLKB	1000     96	001452	000000 			QCB:	.WORD	0     97	001454	000000 			SYCB:	.WORD	0     98     99	001456				PAGE2:	.BLKB	1000    100    101    102    103	002456				QUESUM::    104    105    106	002456					CALL	QUEINI		;CALL ROUTINE TO VERIFY THAT QUEUE MANAGER    107									;IS STILL ACTIVE.    108    109	002462	022767 	000002 	000000G		CMP	#2,QUE.ST	;IF QUE.ST=2 TH      EN QUEUE MANAGER IS NOT ACTIVE    110									;AND WE DON'T KNOW WHERE TO GET QUEUE FILE NAME.    111    112    113	002470	001002 				BNE	10$    114	002472	000167 	000210 			JMP	OUTDSP		;GO AND OUTPUT DISPLAY    115    116    117    118					;    119					; GET QUEUE FILE FILENAME BLOCK FROM RECEIVE DATA BUFFER    120					;    121    122    123	002476	012700 	000000G		10$:	MOV	#RCVDT,R0	;POINT TO RECEIVE DATA BUFFER    124	002502	012067 	000000C			MOV	(R0)+,QFDB+F.DVNM ;DEVICE NAME    125	002506	012067 	00000      0C			MOV	(R0)+,QFDB+F.UNIT ;UNIT NUMBER    126	002512	012701 	000000C			MOV	#QFDB+F.FNB+N.FID,R1 ;POINT TO FILE ID    127	002516	012021 				MOV	(R0)+,(R1)+	;COPY IT    128	002520	012021 				MOV	(R0)+,(R1)+    129	002522	012021 				MOV	(R0)+,(R1)+    130    131    132	002524	012700 	000000G			MOV	#QFDB,R0	;GET FDB ADDRESS    133	002530	012760 	000452'	000000G		MOV	#PAGE1,F.STBK(R0) ;SET ADDRESS OF STATISTICS BUFFER    134    135    136	002536					OFID$			;OPEN QUEUE FILE FOR READ    137    138	002542	016760       	175712 	000002G		MOV	PAGE1+6,F.EFBK+2(R0) ;SET EOF BLOCK NUMBER = HIGHEST    139	002550	005260 	000002G			INC	F.EFBK+2(R0)	;ALLOCATED BLOCK NUMBER + 1    140    141    142					;    143					; SET THE STARTING ADDRESS FOR EACH TYPE OF CONTROL BLOCK    144					;    145    146	002554	012767 	000452'	176670 		MOV	#PAGE1,QCB	;QCBS START AT THE TOP OF THE PAGE    147	002562	012700 	000020 			MOV	#16.,R0		;TAKE 16. QCBSSUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07  PAGE 5-1MAIN LOOP    148	002566	0      12701 	000000G			MOV	#Q.QLEN,R1	;AND MULTIPLY BY THE SIZE OF CONTROL BLOCK    149	002572					CALL	$MUL		;TO GET OFFSET WITHIN PAGE TO START OF SYCBS    150	002576	062701 	000452'			ADD	#PAGE1,R1	;ADD STARTING BUFFER ADDRESS    151	002602	010167 	176646 			MOV	R1,SYCB		;SAVE RESULT    152    153    154    155					;    156					; PRINT PROCESSOR :    157					;    158    159	002606	012767 	000001 	000534 		MOV	#1,PAGENO+2	;PRINT QCBS &SYCBS IN FIRST PAGE    160	002614	012701 	000452'			MOV	#PAGE1,R1	;USE FIRST       BUFFER    161	002620					CALL	RDPAGE		;READ FIRST PAGE    162    163	002624	004367 	000176 			JSR 	R3,DOPRO	;GET NUMBER OF ACTIVE PROCESSORS &    164									;ACTIVE JOBS    165	002630	000120'				PRT.PR    166	002632	000144'				PRT.AC    167    168    169	002634	004367 	000314 			JSR	R3,DOQUE	;COUNT NUMBER OF WAITING JOBS    170	002640	000170'				PRT.WT    171    172    173					;    174					; BATCH PROCESSOR:    175					;    176    177	002642	012767 	000002 	000500 		MOV	#2,PAGENO+2	;DO THE SAME FOR BATCH P      ROCESSOR    178	002650	012701 	000452'			MOV	#PAGE1,R1    179	002654					CALL	RDPAGE    180    181	002660	004367 	000142 			JSR	R3,DOPRO    182    183	002664	000226'				BAT.PR    184	002666	000252'				BAT.AC    185    186	002670	004367 	000260 			JSR	R3,DOQUE    187	002674	000276'				BAT.WT    188    189    190    191    192					;    193					; CLOSE FILE:    194					;    195    196	002676				IOERR:    197    198	002676					CLOSE$	#QFDB    199SUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07  PAG      E 6MAIN LOOP    201    202    203    204					;    205					; OUTPUT DISPLAY:    206					;    207    208	002706				OUTDSP:    209    210    211	002706	012703 	000000'			MOV	#TIT,R3    212	002712					CALL	OUTLIN		;OUTPUT TITLE    213    214	002716	005767 	000000G			TST	QUE.ST		;IF QUE.ST=0 QUEUE MANAGER IS RUNNING AND WE    215									;SHOW NORMAL DISPLAY.    216	002722	001005 				BNE	10$    217    218	002724	012703 	000046'			MOV	#DISP,R3    219	002730					CALL	OUTLIN		;OUTPUT REST OF NORMAL DISPLAY    220	0      02734	000430 				BR	50$		;FINISHED    221    222    223	002736	012703 	000304'		10$:	MOV	#DISP1,R3	;    224	002742					CALL	OUTLIN		;DISPLAY "QUEUE MANAGER STOPPED" MESSAGE    225    226	002746	022767 	000001 	000000G		CMP	#1,QUE.ST	;IF QUE.ST=1 QUEUE MANAGER NOT ACTIVE    227									;(CAN STILL DISPLAY INFORMATION ON WAITING JOBS)    228	002754	001020 				BNE	50$		;IF NE THEN NOTHING ELSE TO DO!    229    230	002756	016767 	175206 	175420 		MOV	PRT.WT,PR.WT1	;TRANSFER NUMBER OF WAITING JOBS TO MODIFIED          231									;DISPLAY AREA    232	002764	016767 	175202 	175414 		MOV	PRT.WT+2,PR.WT1+2    233	002772	016767 	175300 	175444 		MOV	BAT.WT,BT.WT1    234	003000	016767 	175274 	175440 		MOV	BAT.WT+2,BT.WT1+2    235    236	003006	012703 	000350'			MOV	#DISP2,R3    237	003012					CALL	OUTLIN		;DISPLAY NUMBER OF WAITING JOBS    238    239    240	003016				50$:	RETURN    241    242    243SUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07  PAGE 7DOPRO-COUNT NUMBER OF ACTIVE PROCESSORS & JOBS    245					      	.SBTTL	DOPRO-COUNT NUMBER OF ACTIVE PROCESSORS & JOBS    246    247    248	003020	000000 			PROC:	.WORD	0    249	003022	000000 			JOBS:	.WORD	0    250	003024	000020 			CNTR:	.WORD	16.    251    252    253	003026				DOPRO:    254	003026	005067 	177766 			CLR	PROC    255	003032	005067 	177764 			CLR	JOBS    256	003036	012767 	000020 	177760 		MOV	#16.,CNTR    257	003044	016700 	176404 			MOV	SYCB,R0	;POINT TO THE FIRST SYCB    258    259    260	003050	005760 	000000G		5$:	TST	Q.QNAM(R0)	;IS THIS SYCB IN USE?          261	003054	001417 				BEQ	90$		;NO - JUMP    262    263	003056	132760 	000000G	000000G		BITB	#QQ.STO,Q.QST(R0) ;IS PROCESSOR STOPPED?    264	003064	001013 				BNE	90$		;YES - JUMP TO END OF LOOP    265    266	003066	132760 	000000G	000000G		BITB	#QQ.SMD,Q.QST(R0) ;IS PROCESSOR MARKED FOR DELETE?    267	003074	001007 				BNE	90$		;YES - JUMP TO END OF LOOP    268    269	003076	005267 	177716 			INC	PROC		;WE HAVE ONE MORE ACTIVE PROCESSOR    270    271	003102	005760 	000000G			TST	Q.SCJ(R0)	;IS PROCESSOR       IDLE?    272	003106	001402 				BEQ	90$		;YES - JUMP    273	003110	005267 	177706 			INC	JOBS		;ONE MORE ACTIVE JOB    274    275    276	003114	062700 	000000G		90$:	ADD	#Q.SLEN,R0	;GET TO NEXT SYCB    277	003120	005367 	177700 			DEC	CNTR		;ONE LESS TO LOOK AT    278	003124	001351 				BNE	5$		;IF NE - MORE TO LOOK AT    279    280	003126	012300 				MOV	(R3)+,R0	;POINTER TO OUTPUT PACKET    281	003130	016701 	177664 			MOV	PROC,R1		;GET NUMBER OF ACTIVE PROCESSORS    282	003134					CALL	JSTFY		;CONVERT TO A      SCII - RIGHT JUSTIFIED    283    284	003140	012300 				MOV	(R3)+,R0	;DO THE SAME FOR ACTIVE JOBS    285	003142	016701 	177654 			MOV	JOBS,R1    286	003146					CALL	JSTFY    287    288    289	003152	000203 				RTS 	R3    290    291    292SUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07  PAGE 8DOQUE-COUNT NUMBER OF WAITING JOBS    294						.SBTTL	DOQUE-COUNT NUMBER OF WAITING JOBS    295    296    297	003154				DOQUE:    298	003154	005067 	177642 			CLR	JOBS    299	003160	012767 	000020 	177636 	      	MOV	#16.,CNTR    300	003166	016700 	176260 			MOV	QCB,R0		;POINT TO FIRST QCB    301    302    303	003172	005760 	000000G		5$:	TST	Q.QNAM(R0)	;IS THIS QCB IN USE?    304	003176	001422 				BEQ	90$		;NO - JUMP    305    306	003200	132760 	000000G	000000G		BITB	#QQ.STO,Q.QST(R0) ;IS QUEUE STOPPED?    307	003206	001016 				BNE	90$		;YES - JUMP TO END OF LOOP    308	003210	132760 	000000G	000000G		BITB	#QQ.SMD,Q.QST(R0) ;IS QUEUE MARKED FOR DELETION?    309	003216	001012 				BNE	90$		;YES - JUMP TO END OF LOOP          310    311	003220	010005 				MOV	R0,R5		;POINT TO QUEUE HEADER    312	003222	062705 	000000G			ADD	#Q.QCJL,R5	;AND TO CLOSED JOBS LISTHEAD    313    314	003226	011504 			10$:	MOV	@R5,R4		;POINT TO CLOSED JOB    315	003230	001405 				BEQ	90$		;IF EQ - NO MORE JOBS IN THE QUEUE    316	003232					CALL	RDNODE		;READ JOB ENTRY NODE    317	003236	005267 	177560 			INC	JOBS		;ONE MORE JOB    318	003242	000771 				BR	10$    319    320	003244	062700 	000000G		90$:	ADD	#Q.QLEN,R0	;LOOK AT NEXT QCB    321	003250	00      5367 	177550 			DEC	CNTR    322	003254	001346 				BNE	5$		;IF NE - MORE QCBS TO LOOK AT    323    324    325	003256	012300 				MOV	(R3)+,R0	;POINTER TO OUTPUT AREA    326	003260	016701 	177536 			MOV	JOBS,R1    327	003264					CALL	JSTFY    328    329    330	003270	000203 				RTS	R3    331    332SUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07  PAGE 9MISCELLANEOUS ROUTINES    334						.SBTTL	MISCELLANEOUS ROUTINES    335    336    337    338					;    339					; **-RDNODE-READ JOB ENTRY NODE IN QU      EUE FILE    340					;    341					; INPUTS:    342					;    343					;	R4 = VIRTUAL ADDRESS OF NODE    344					;    345					; OUTPUTS:    346					;    347					;	R5 = REAL ADDRESS OF NODE    348					;    349    350    351	003272				RDNODE:    352    353	003272	010046 				MOV	R0,-(SP)	;SAVE R0    354	003274	005000 				CLR	R0    355	003276	150400 				BISB	R4,R0		;GET WORD OFFSET IN BLOCK    356	003300	006300 				ASL	R0		;MAKE IT INTO BYTES    357	003302	012705 	001456'			MOV	#PAGE2,R5	;GET STARTING PAGE ADDRESS          358	003306	060005 				ADD	R0,R5		;AND ADD OFFSET FROM TOP TO GET REAL    359									;ADDRESS IN PAGE2 BUFFER    360    361    362					;    363					; NOW WE MUST GET PAGE NO. AND SEE IF ITS ALREADY IN MEMORY.    364					; IF NOT WE WILL HAVE TO READ IT FROM THE QUEUE FILE.    365					;    366    367	003310	105004 				CLRB	R4    368	003312	000304 				SWAB	R4		;GET PAGE NO. INTO LOW BYTE    369	003314	020467 	000032 			CMP	R4,CURPAG	;IS THE PAGE WE NEED ALREADY IN MEMORY?    370	003320	001406 				BEQ	10$		      ;IF EQ - YES    371    372	003322	010467 	000022 			MOV	R4,PAGENO+2	;LOAD THE NUMBER OF BLOCK WE WANT    373	003326	012701 	001456'			MOV	#PAGE2,R1    374	003332					CALL	RDPAGE		;READ PAGE WE NEED    375    376	003336	012600 			10$:	MOV	(SP)+,R0	;RESTORE R0    377    378	003340					RETURN    379    380    381    382    383					;    384					;**-RDPAGE-READ ONE PAGE FROM THE QUEUE FILE    385					;    386					; INPUTS:    387					;    388					;	R1 = ADDRESS OF BUFFER THAT WE ARE GOING TO USE    389					;          390					;	PAGENO+2 = VIRTUAL BLOCK NUMBER THAT WE WANT TO READSUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07  PAGE 9-1MISCELLANEOUS ROUTINES    391					;    392    393    394	003342				IOSTAT:	.BLKW	2    395	003346				PAGENO:	.BLKW	2    396	003352	000000 			CURPAG:	.WORD	0    397    398    399	003354				RDPAGE:    400    401	003354	012700 	000000G			MOV	#QFDB,R0	;POINT TO QFDB    402	003360	010160 	000002G			MOV	R1,F.BKDS+2(R0)	;POINT TO THE DESIRED BUFFER?    403    404	003364					READ$	#QFD      B,,#1000,#PAGENO,,#IOSTAT    405    406	003432	103002 				BCC	10$		;IF CLEAR - NO ERROR    407    408	003434	000167 	177236 			JMP	IOERR    409    410	003440				10$:	WAIT$    411    412	003444	026727 	177700 	000002 		CMP	PAGENO+2,#2	;DID WE JUST READ FIRST OR SECOND PAGE    413	003452	003403 				BLE	99$		;IF LE - YES SO SKIP    414    415	003454	016767 	177670 	177670 		MOV	PAGENO+2,CURPAG	;SAVE CURRENT PAGE NUMBER    416									;(SO WE DON'T REREAD IT IF NEED SAME PAGE    417									;PAGE NEXT TIME)          418    419	003462				99$:	RETURN    420    421		000001 				.ENDSUMMARY REPORT - PART 1 - BATCH	MACRO M1110  19-JAN-79 10:07  PAGE 9-2SYMBOL TABLEA$$CHK= 000000   	E$$XPR= 000000   	L$$11R= 000000   	QCB     001452R  	TIT     000000RA$$CPS= 000000   	F$$LPP= 000000   	M$$CRB= 000124   	QFDB  = ****** GX	T$$ACR= 000000A$$NSI= 000000   	F$$LVL= 000001   	M$$CRX= 000000   	QQ.SMD= ****** GX	T$$BTW= 000000A$$PRI= 000000   	F.BKDS= ****** GX	M$$EXT= 000000   	QQ.STO= ****** GX	T$$BUF= 000000A$$TRP= 000000   	F.B      KST= ****** GX	M$$FCS= 000000   	QUEINI= ****** GX	T$$CCA= 000000BAT.AC  000252R  	F.BKVB= ****** GX	M$$K11= 000000   	QUESUM  002456RG 	T$$CCO= 000000BAT.PR  000226R  	F.DVNM= ****** GX	M$$MGE= 000000   	QUE.ST= ****** GX	T$$CTR= 000000BAT.WT  000276R  	F.EFBK= ****** GX	M$$MUP= 000000   	Q$$OPT= 000017   	T$$ESC= 000000BT.WT1  000444R  	F.FNB = ****** GX	M$$NET= 000000   	Q.QCJL= ****** GX	T$$GMC= 000000CD    = 000131   	F.STBK= ****** GX	M$$OVR= 000000   	Q.QLEN= ****** GX	T$$GTS= 000000CNTR    003024R        	F.UNIT= ****** GX	M$$XLN= 000400   	Q.QNAM= ****** GX	T$$HLD= 000000CURPAG  003352R  	G$$TPP= 000000   	N$$CON= 000500   	Q.QST = ****** GX	T$$J16= 000003C$$CDA= 000002   	G$$TTK= 000000   	N$$LDV= 000001   	Q.SCJ = ****** GX	T$$KMG= 000000C$$CKP= 000000   	H$$RTZ= 000074   	N$$MOV= 000011   	Q.SLEN= ****** GX	T$$LWC= 000000C$$CSR= 177440   	IOERR   002676R  	N$$MXM= 001100   	RCVDT = ****** GX	T$$PS = 000000C$$LIS= 000000   	IOSTAT  003342R  	N$$TMO= 000012   	RDNODE  003272R  	T$$RAX= 000000C$$ORE= 00200      0   	I$$RAR= 000000   	N$$UMR= 000024   	RDPAGE  003354R  	T$$RNE= 000000C$$RSH= 177564   	I$$RDN= 000000   	N.FID = ****** GX	R$$DSP= 000000   	T$$RPR= 000000C$$RUN= 000000   	JOBS    003022R  	OUTDSP  002706R  	R$$EXV= 000000   	T$$RST= 000000C$$XDB= 000000   	JSTFY = ****** GX	OUTLIN= ****** GX	R$$HDV= 000000   	T$$RUB= 000000DISP    000046R  	K$$CNT= 177546   	OV$DB = 000000   	R$$H11= 000003   	T$$SMC= 000000DISP1   000304R  	K$$CSR= 177546   	OV$DR = 000000   	R$$JPO= 000000   	T$$SYN= 000000DISP2   0      00350R  	K$$IEN= 000115   	O$$LAP= 000000   	R$$JP1= 000003   	T$$TRW= 000000DOPRO   003026R  	K$$LDC= 000001   	PAGENO  003346R  	R$$LKL= 000001   	T$$UTB= 000000DOQUE   003154R  	K$$TPS= 000074   	PAGE1   000452R  	R$$MOF= 000000   	T$$VBF= 000000D$$IAG= 000000   	LD$DB = 000000   	PAGE2   001456R  	R$$MPL= 000000   	T$$ZAN= 000300D$$ISK= 000000   	LD$DR = 000000   	PAR$$$= 000027   	R$$M11= 000003   	T$$18S= 000000D$$L11= 000001   	LD$LP = 000000   	PROC    003020R  	R$$NDC= 000006   	V$$CTR= 001000D$$SH      F= 000000   	LD$MM = 000000   	PRT.AC  000144R  	R$$NDH= 000226   	V$$TLD= 000120D$$WCK= 000000   	LD$NT = 000000   	PRT.PR  000120R  	R$$NDL= 000001   	V$$TLM= 000205D$$YNC= 000000   	LD$RH = 000000   	PRT.WT  000170R  	R$$SND= 000000   	V$$TRM= 000000D$$YNM= 000000   	LD$TT = 000000   	PR.WT1  000404R  	R$$STP= 000000   	X$$M11= 000002D$$ZMD= 000000   	LD$VT = 000000   	P$$D70= 000000   	R$$11M= 000000   	$MUL  = ****** GXD$$Z11= 000004   	LD$XM = 000000   	P$$LAS= 000000   	SYCB    001454R  	$$$R4 = 0000      00ES    = 000112   	L$$ASG= 000000   	P$$OFF= 000000   	S$$ECC= 000000   	.CLOSE= ****** GESC   = 000033   	L$$DRV= 000000   	P$$RFL= 000000   	S$$WPC= 000036   	.OPFID= ****** GE$$DVC= 000000   	L$$LDR= 000000   	P$$RTY= 000000   	S$$WPR= 000005   	.READ = ****** GE$$NSI= 000000   	L$$PTO= 000037   	P$$TPT= 000000   	S$$YSZ= 050000   	.WAIT = ****** GE$$PER= 000000   	L$$P11= 000001. ABS.	000000	   000      	003464	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  3918 WORDS  ( 16 PAGES)DYNAMIC MEMORY:  509   d   2 WORDS  ( 19 PAGES)ELAPSED TIME:  00:00:28QUESUM,QUESUM.LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,QUESUMd          •  ÌÁ› 8$     ö  ;; THIS IS A FILE TO BUILD A MAPPED VERSION OF RMDEMO; FOR THE VT52 CRT DISPLAY.;; THE SYMBOL F$LNUM DEFINES THE NUMBER OF FILL CHARACTERS OUTPUT; DURING THE DIRECT CURSOR POSITIONING.  FOR A 2400 BAUD VT05 IT; SHOULD BE 5, FOR A VT52 OF ANY SPEED 0.  IT MAY BE ADJUSTED TO; ANY VALUE THAT IS APPROPRIATE FOR YOUR TERMINAL.;RMD52/PR/MM/AL/CP,RMD52/-SP=RMDEMO[300,30]LKLSTLB0:[1,1]EXELIB/LBLB0:[1,54]KERNEL.STB/SS/PAR=GEN:0:20000PRI=225TASK=RMDEMOEXTTSK=512STACK=64GBLDEF=F$LNUM:0ASG=TI:1,TI:2UNITS=2// ö         	~3ÌÁ› 8$@   (  	.ENABLE SUBSTITUTION	.ASKS DEV What device is the archive tape mounted on	.SETN LEN <STRLEN>	.SETN LENM1 LEN	.DEC LENM1	.SETS COLON DEV[LEN:LEN]	.IF COLON NE ":" .GOTO CONT	.SETS DEV DEV[1:LENM1].CONT:	INI/DENS:1600 'DEV': ABE	MOU/OV:ID/DENS:1600 'DEV':	ARCHIVE *.* 'DEV':ABE.BKT	DIS 'DEV': ABE (         €xQÁ› 8$        DSKTST.TSK;3   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     10-JAN-79   08:37



PARTITION NAME : GEN   
IDENTIFICATION : V1.0  
TASK  UIC      : [300,30]
STACK    LIMITS: 120222 121221 001000 00512.
ODT XFR ADDRESS: 145320
PRG XFR ADDRESS: 121630
TASK ATTRIBUTES: PR              
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 6944. WORDS
TASK ADDRESS LIMITS: 120000 153023
R-W DISK BLK LIMITS: 000002 000035 000034 00028.

*** ROOT SEGMENT: DEMO34


R/W MEM  LIMITS:       120000 153023 033024 13844.
DISK BLK LIMITS: 000002 000035 000034 00028.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 121222 015106 06726.
                          121222 006120 03152. DEMO   V1.0   DEMO34.OBJ;21
                          127342 003174 01660. SUMMAR        QUESUM.OBJ;3
                          132536 000374 00252. SUMRY2        MEMSUM.      OBJ;7
                          133132 000706 00454. DISPLA V1.0   DSKSUM.OBJ;6
                          134040 001444 00804. HELP          HELP.OBJ;1
                          135504 000012 00010. .MAIN.        INCLDE.OBJ;5
                          135516 000216 00142. CBTA   04.2   SYSLIB.OLB;17
                          135734 000126 00086. CDDMG  00     SYSLIB.OLB;17
                          136062 000246 00166. EDDAT  02     SYSLIB.OLB;17
$DPB$$:(RW,I,LCL,REL,CON) 136330 000030 00024.
                                136330 000030 00024. DEMO   V1.0   DEMO34.OBJ;21
$$FSR1:(RW,D,GBL,REL,OVR) 136360 000000 00000.
                          136360 000000 00000. DEMO   V1.0   DEMO34.OBJ;21
                          136360 000000 00000. FCSFSR 0303MS SYSLIB.OLB;17
$$FSR2:(RW,D,GBL,REL,CON) 136360 000104 00068.
                          136360 000104 00068. FCSFSR 0303MS SYSLIB.OLB;17
$$RESL:(RW,I,LCL,REL,CON) 136464 005650 02984.
                          136464 000320 00208. CLOSE  0112S  SYSLIB.OL      B;17
                          137004 000104 00068. FINIT  0102MS SYSLIB.OLB;17
                          137110 000000 00000. FCSFSR 0303MS SYSLIB.OLB;17
                          137110 001552 00874. OPFID  0125S  SYSLIB.OLB;17
                          140662 000046 00038. READ   0102MS SYSLIB.OLB;17
                          140730 000022 00018. WAITU  0100MS SYSLIB.OLB;17
                          140752 000024 00020. SAVRG  03     SYSLIB.OLB;17
                          140776 000100 00064. DAR      ITH 0004   SYSLIB.OLB;17
                          141076 000034 00028. SAVR1  0101   SYSLIB.OLB;17
                          141132 000034 00028. ANSPAD 0100MS SYSLIB.OLB;17
                          141166 000020 00016. BKRG   0100MS SYSLIB.OLB;17
                          141206 000014 00012. COMMON 0101MS SYSLIB.OLB;17
                          141222 000126 00086. XQIOI  0102MS SYSLIB.OLB;17
                          141350 000132 00090. WAITI  0102MS SYSLIB.OLB;17
DSKTST.TSK;3   MEMORY ALLOCAT      ION MAP  TKB             PAGE 2
DEMO34               10-JAN-79   08:37



                          141502 000112 00074. RSTFDB 0102S  SYSLIB.OLB;17
                          141614 000126 00086. WTWAIT 0100S  SYSLIB.OLB;17
                          141742 000240 00160. RQLCB  03     SYSLIB.OLB;17
                          142202 000270 00184. ASSLUN 0113MS SYSLIB.OLB;17
                          142472 000062 00050. BDBREC 0100MS SYSLIB.OLB;17
                          142554 000134 00092. RETADR       0102MS SYSLIB.OLB;17
                          142710 000074 00060. RDWAIT 0102S  SYSLIB.OLB;17
                          143004 000160 00112. RDWRIT 0104MS SYSLIB.OLB;17
                          143164 000312 00202. RWLONG 0002MS SYSLIB.OLB;17
                          143476 000154 00108. EOFCHK 0100MS SYSLIB.OLB;17
                          143652 000304 00196. CKALOC 0104MS SYSLIB.OLB;17
                          144156 000022 00018. WATNOD 0100MS SYSLIB.OLB;17
                          144200       000044 00036. RWBLK  0101S  SYSLIB.OLB;17
                          144244 000032 00026. CONTRL 100MS  SYSLIB.OLB;17
                          144276 000036 00030. WATSET 0101MS SYSLIB.OLB;17
$$$ODT:(RW,I,GBL,REL,OVR) 144334 006466 03382.
                          144334 006466 03382. ODTRSX M04    TPSODT.OBJ;11



GLOBAL SYMBOLS:

ACBD   127270-R  MEM    135504-R  QE.NFS 000113    QS.FFO 000200    Q.JMXP 000026    TS.OUT 000400    $MUL   017224    
ALL.TR 126002-R  MEMSUM 132662-R  QE.NJE 000145          QS.FNF 000001    Q.JNAM 000004    T.ACTL 000052    $OTSV  000052    
APPSUM 135514-R  MSGE   135506-R  QE.NPS 000127    QS.FSA 000040    Q.JNPP 000024    T.ASTL 000016    $PARHD 006314    
BUFCTR 121424-R  N.FID  000000    QE.NP0 000130    QS.FSD 000100    Q.JPRI 000034    T.NAM  000006    $RLCB  141742-R  
BUFPTR 121422-R  N.OVPT 000054    QE.NVT 000144    QS.FSF 000010    Q.JQ   000010    T.PCB  000046    $RQCB  142044-R  
CADR   124744-R  OUTBUF 125414-R  QE.OFL 000122    QS.FSI 000020    Q.JQL        000033    T.STAT 000032    $RQSCH 001554    
COMMUN 126542-R  OUTLIN 125336-R  QE.OJD 000002    QS.FSJ 000004    Q.JSEQ 000002    T.ST2  000034    $SAVRG 140752-R  
COM.AD 124742-R  OUTPUT 121406-R  QE.PRI 000053    QS.SBA 000200    Q.JSY  000012    T.TCBL 000030    $SIZE  000174    
CPU.CL 124430-R  PRCNT  127246-R  QE.QDF 000106    QS.SHJ 000004    Q.JTI  000016    T2.AST 100000    $TIM   136204-R  
CSIZE  124746-R  PRT.OK 121566-R  QE.QEA 000100    QS.SLC 000020    Q.JUIC 000014    T2.DST 040000    $      TKTCB 001546    
DIRERR 127116-R  PUTNUM 127312-R  QE.QMD 000104    QS.SMD 000100    Q.QASS 000006    T2.SPN 000004    $TSKHD 006320    
DSKSUM 133200-R  P.ALLO 000030    QE.QNE 000102    QS.STO 000040    Q.QCJL 000012    T2.STP 000020    $VEXT  000056    
ERAFLG 126000-R  P.DEAD 000024    QE.RED 000124    QS.SWI 000010    Q.QHJL 000016    T2.WFR 000001    .ASLUN 142202-R  
FA.SHR 000040    P.HDR  000032    QE.REQ 000131    QS.SXE 000002    Q.QLEN 000020    $BASE  000172    .CLOSE 136464-R  
FD.RWM 000      001    P.HIT  000020    QE.ROP 000115    QUESUM 131650-R  Q.QNAM 000000    $CBDAT 135516-R  .CTRL  144244-R  
FO.RD  000001    P.NUM  000016    QE.SDF 000107    Q.FATT 000011    Q.QNUM 000005    $CBDMG 135524-R  .FATAL 141220-R  
F.BKDS 000020    P.SIZE 000016    QE.SEA 000101    Q.FCPN 000030    Q.QOJL 000010    $CBDSG 135532-R  .FINIT 137004-R  
F.BKST 000024    QE.BDT 000120    QE.SEX 000001    Q.FDEV 000006    Q.QST  000004    $CBOMG 135540-R  .FSRCB 136360-R  
F.BKVB 000064    QE.BQN 000134    QE.S      MD 000105    Q.FFN  000014    Q.QTJL 000014    $CBOSG 135546-R  .FSRPT 000050    
F.DVNM 000134    QE.BSN 000077    QE.SNE 000103    Q.FJ   000004    Q.SASS 000006    $CBTA  135576-R  .MBFCT 136460-R  
F.EFBK 000010    QE.DIR 000117    QE.TYP 000110    Q.FLNK 000000    Q.SCJ  000012    $CBTMG 135554-R  .ODTL1 144572-R  
F.FNB  000102    QE.DNE 000121    QE.UNL 000123    Q.FNC  000026    Q.SFL  000016    $CBVER 135540-R  .ODTL2 144574-R  
F.STBK 000036    QE.IAR 000116    QFDB   123110-R  Q.FNCP 000027          Q.SFO  000017    $CDDMG 135734-R  .OPFID 137110-R  
F.UNIT 000136    QE.IDB 000133    QF.ADE 000200    Q.FSEQ 000002    Q.SLEN 000020    $CRAVL 006256    .READ  140662-R  
HELP   135414-R  QE.IFC 000001    QJ.ABL 000040    Q.FUFD 000012    Q.SNAM 000000    $CXDBL 001551    .SAVR1 141076-R  
IE.ITS 177770    QE.IID 000150    QJ.AFL 000100    Q.JAFT 000030    Q.SNUM 000005    $C5TA  006524    .WAIT  140730-R  
IO.ATA 001410    QE.IJS 000146    QJ.AHJ 000004    Q.JATT 000035    Q.SST  000004    $DAT   13      6126-R  ..ALC1 143722-R  
IO.RVB 010400    QE.INM 000151    QJ.ALC 000020    Q.JCFI 000022    Q.SUCB 000010    $DDIV  141034-R  ..ALOC 143652-R  
IO.WAL 000410    QE.IO  000114    QJ.ARE 000200    Q.JFI  000020    Q.SUIC 000014    $DEVHD 006264    ..ALUN 142206-R  
IO.WVB 011000    QE.JEA 000111    QJ.AWI 000010    Q.JFO  000037    RCVDT  123314-R  $DIV   017256    ..ANSP 141132-R  
IS.SET 000002    QE.JNE 000112    QQ.SBA 000200    Q.JLFI 000022    TRANS  135512-R  $DMUL  140776-R  ..BDRC 142472-R  
I      S.SUC 000001    QE.MEX 000132    QQ.SMD 000100    Q.JLNK 000000    TSTDSP 135510-R  $DSW   000046    ..BKRG 141166-R  
JSTFY  127166-R  QE.NAV 000125    QQ.STO 000040    Q.JLPP 000036    TS.EXE 100000    $LDRPT 006316    ..CTRL 144250-R  
DSKTST.TSK;3   MEMORY ALLOCATION MAP  TKB             PAGE 3
DEMO34               10-JAN-79   08:37



..EFCK 143476-R  ..FCSX 141206-R  ..RBLK 144200-R  ..RWAT 142710-R  ..WAEF 141432-R  ..WBLK 144206-R  ..WTW1 141620-R  
..EFC1 143504-R  ..FINI 137014-R  ..RFDB       141502-R  ..RWCK 143004-R  ..WAIT 141412-R  ..WTRD 143056-R  ..XQIO 141222-R  
..EXTD 143752-R  ..IDPB 141320-R  ..RTAD 142554-R  ..RWLG 143164-R  ..WAND 144156-R  ..WTWA 141614-R  ..XQI1 141240-R  
..EXT1 144026-R  ..QIOW 141362-R  ..RWAC 142732-R  ..SEFB 143554-R  ..WAST 144276-R  ..WTWD 141614-R  




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 39502.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 33   4   28. WORDS (13. PAGES)

    ELAPSED TIME:00:00:16
4          zNÁ› 8$        DISPLAY DISK USAGE LEVELS - SUM	MACRO M1110  22-JAN-79 14:20TABLE OF CONTENTS     4-    2	INITIALIZATIONS     5-   18	GET NUMBER OF FREE BLOCKS ON MOUNTED DISKS     6-   98	GO THROUGH DEVICE QUEUES     7-  175	DISK FREE BLOCK INFORMATIONDISPLAY DISK USAGE LEVELS - SUM	MACRO M1110  22-JAN-79 14:20  PAGE 4      1						.TITLE	DISPLAY DISK USAGE LEVELS - SUMMARY REPORT PART 4      2						.SBTTL	INITIALIZATIONS      3						.NLIST	BEX      4      5      6						.MCALL	DCBDF$,F11DF$,UCBDF$,SWITCH$      7      8            9	000000					DCBDF$     10	000000					F11DF$     11	000000					UCBDF$     12     13		000033 				ESC=33     14		000131 				CD=131     15     16DISPLAY DISK USAGE LEVELS - SUM	MACRO M1110  22-JAN-79 14:20  PAGE 5GET NUMBER OF FREE BLOCKS ON MOUNTED DISKS     18						.SBTTL	GET NUMBER OF FREE BLOCKS ON MOUNTED DISKS     19     20     21	000000	054523 			DEVNME:	.WORD	"SY     22	000002	   000 			LOUNIT:	.BYTE	0     23	000003	   000 			HIUNIT:	.BYTE	0     24	000004	000001 			REDIR:	.WORD	1     25	000006				      FRBLK:	.BLKW	2     26	000012	000000 			RED.NM:	.WORD	0     27	000014	000000 			RED.UN:	.WORD	0     28	000016	000000 			MNTD:	.WORD	0     29	000020	000000 			DCB:	.WORD	0     30	000022	000000 			UCB:	.WORD	0     31     32     33     34     35	000024	   033 	   131 	   060 	TIT:	.ASCII	<ESC><CD><31.+17.><0><31.+56.>     36	000031	   106 	   122 	   105 		.ASCII	/FREE BLOCKS:/<1>     37     38     39	000046				DSKSUM::     40     41	000046	012703 	000024'			MOV	#TIT,R3		;POINT TO TITLE     42	000052					CALL	O      UTLIN		;DISPLAY TITLE     43	000056	112767 	000061 	000436 		MOVB	#31.+18.,POS+2	;RESET POINTER TO ROW OF DISPLAY     44     45     46     47					;     48					; FIND THE SY0: DISK     49					;     50     51	000064					SWITCH$	90$		;SWITCH TO KERNEL MODE     52	000070	016703 	000000G			MOV	$DEVHD,R3	;POINT AT FIRST DCB     53     54	000074	022763 	054523 	000004 	10$:	CMP	#"SY,D.NAM(R3)	;IS DEVICE SY?     55	000102	001403 				BEQ	20$		;IF EQ-YES     56	000104	016303 	000000 			MOV	D.LNK(R3),R3	;POINT TO NEXT       DCB     57	000110	001371 				BNE	10$		;IF NE-THEN MORE DCBS     58     59	000112	016303 	000002 		20$:	MOV	D.UCB(R3),R3	;POINT TO START OF UCB     60     61     62	000116	010305 			30$:	MOV	R3,R5		;SAVE IT     63	000120	016303 	000002 			MOV	U.RED(R3),R3	;REDIRECTED?     64	000124	020305 				CMP	R3,R5     65	000126	001373 				BNE	30$		;YES!     66     67	000130	116367 	000006 	177656 		MOVB	U.UNIT(R3),RED.UN ;GET UNIT NUMBER     68	000136	016303 	000000 			MOV	U.DCB(R3),R3	;GET BACK TO DCB TO GET DEVICE NA      ME     69	000142	016367 	000004 	177642 		MOV	D.NAM(R3),RED.NM;STORE DEVICE NAME     70     71	000150					RETURN     72     73     74	000152				90$:DISPLAY DISK USAGE LEVELS - SUM	MACRO M1110  22-JAN-79 14:20  PAGE 5-1GET NUMBER OF FREE BLOCKS ON MOUNTED DISKS     75     76	000152	012767 	054523 	177620 		MOV	#"SY,DEVNME	;GET SYSTEM DEVICE NAME     77	000160	112767 	000000 	177614 		MOVB	#0,LOUNIT	;AND UNIT NUMBER     78	000166	012767 	000001 	177610 		MOV	#1,REDIR	;SYSTEM DISK ALWAYS REDIRECTED.     79	00      0174					CALL	DSPFBL		;DISPLAY THE FREE BLOCK INFORMATION     80     81     82					;     83					; FIND THE FREE BLOCKS OF REMAINING DISKS     84					;     85     86	000200	012767 	041104 	177572 		MOV	#"DB,DEVNME	;GO THROUGH DB TYPE DISKS     87	000206					CALL	DEVICE     88	000212	012767 	046504 	177560 		MOV	#"DM,DEVNME	;GO THROUGH DM TYPE DISKS     89	000220					CALL	DEVICE     90	000224	012767 	051104 	177546 		MOV	#"DR,DEVNME	;GO THROUGH DR TYPE DISKS     91	000232					CALL	DEVICE     92     93     94	      000236					RETURN     95     96DISPLAY DISK USAGE LEVELS - SUM	MACRO M1110  22-JAN-79 14:20  PAGE 6GO THROUGH DEVICE QUEUES     98						.SBTTL	GO THROUGH DEVICE QUEUES     99    100	000240				DEVICE:    101    102	000240	005067 	177540 			CLR	REDIR		;CLEAR THE REDIRECTED INDICATOR FLAG    103	000244					SWITCH$	30$		;SWITCH TO KERNEL MODE    104    105	000250	012703 	000000G			MOV	#$DEVHD,R3	;POINT TO DEVICE LISTHEAD    106    107	000254	016303 	000000 		10$:	MOV	D.LNK(R3),R3	;POINT TO NEXT DEVICE ON THE L      INKED LIST    108	000260	001415 				BEQ	25$		;IF EQ - NO DEVICES OF THIS TYPE    109    110	000262	026763 	177512 	000004 		CMP	DEVNME,D.NAM(R3) ;IS THIS THE DEVICE WE ARE LOOKING FOR?    111	000270	001371 				BNE	10$		;IF NE - THEN TRY NEXT DEVICE    112    113    114	000272	016367 	000002 	177522 		MOV	D.UCB(R3),UCB	;AND POINTER TO UCB    115	000300	116367 	000006 	177474 		MOVB	D.UNIT(R3),LOUNIT ;GET CURRENT UNIT NUMBER    116	000306	116367 	000007 	177467 		MOVB	D.UNIT+1(R3),HIUNIT ;GET HIGHEST UNIT NUM      BER    117    118	000314	010367 	177500 		25$:	MOV	R3,DCB		;SAVE POINTER TO DCB    119    120	000320					RETURN    121    122    123	000322	005767 	177472 		30$:	TST	DCB		;DO WE HAVE ANY DEVICES OF THIS TYPE    124	000326	001473 				BEQ	99$		;IF NOT - SKIP CODE    125    126	000330				35$:	SWITCH$	90$		;SWITCH TO KERNEL MODE    127	000334	016703 	177460 			MOV	DCB,R3		;POINT TO DCB    128	000340	016704 	177456 			MOV	UCB,R4		;POINT TO UCB    129	000344	132764 	000100 	000005 		BITB	#US.MNT,U.STS(R4) ;IS UNI      T MOUNTED?    130	000352	001036 				BNE	75$		;IF NE-NO    131    132	000354	005267 	177436 			INC	MNTD		;SET FLAG    133    134	000360	010405 			40$:	MOV	R4,R5		;SAVE UCB ADDRESS    135	000362	016404 	000002 			MOV	U.RED(R4),R4	;REDIRECTED?    136	000366	020405 				CMP	R4,R5    137	000370	001403 				BEQ	45$		;IF EQ-NO    138    139	000372	005267 	177406 			INC 	REDIR		;SET REDIRECTION FLAG    140	000376	000770 				BR	40$		;GO BACK    141    142	000400	005767 	177400 		45$:	TST	REDIR		;WAS UNIT REDIRECTED?          143	000404	001411 				BEQ	50$		;IF EQ-NO    144    145	000406	116467 	000006 	177400 		MOVB	U.UNIT(R4),RED.UN ;GET REDIRECTION UNIT NUMBER    146	000414	016404 	000000 			MOV	U.DCB(R4),R4	;GET BACK TO DCB    147	000420	016467 	000004 	177364 		MOV	D.NAM(R4),RED.NM;GET NAME OF REDIRECTED DEVICE    148	000426	000410 				BR	75$    149    150	000430	016404 	000034 		50$:	MOV	U.VCB(R4),R4	;POINT TO VCB    151	000434	116467 	000040 	177344 		MOVB	V.FRBK(R4),FRBLK ;GET NUMBER OF FREE BLOCK    152	000442	016467 	      000042 	177340 		MOV	V.LRUC+1(R4),FRBLK+2    153    154	000450	066367 	000010 	177344 	75$:	ADD	D.UCBL(R3),UCB	;POINT TO NEXT DCBDISPLAY DISK USAGE LEVELS - SUM	MACRO M1110  22-JAN-79 14:20  PAGE 6-1GO THROUGH DEVICE QUEUES    155	000456					RETURN    156    157    158	000460				90$:    159	000460	005767 	177332 			TST	MNTD		;WAS LAST UNIT WE LOOKED AT MOUNTED?    160	000464	001404 				BEQ	95$		;IF EQ-NOT MOUNTED    161	000466	005067 	177324 			CLR	MNTD		;CLEAR THE SPECIAL FLAG    162    163	000472					CAL      L	DSPFBL		;DISPLAY FREE BLOCK INFO    164    165	000476	105267 	177300 		95$:	INCB	LOUNIT		;LOOK AT NEXT UNIT    166    167	000502	126767 	177274 	177273 		CMPB	LOUNIT,HIUNIT	;ARE WE FINISHED?    168	000510	003002 				BGT	99$		;IF GT- THEN FINISHED    169    170	000512	000167 	177612 			JMP	35$    171    172	000516				99$:	RETURN    173DISPLAY DISK USAGE LEVELS - SUM	MACRO M1110  22-JAN-79 14:20  PAGE 7DISK FREE BLOCK INFORMATION    175						.SBTTL	DISK FREE BLOCK INFORMATION    176    177    178	000520	         033 	   131 	   061 	POS:	.ASCIZ	<ESC><CD><31.+18.><0><31.+63.>    179	000526	   040 	   040 	   040 		.ASCII	/    :        /<1>    180    181    182	000544				DSPFBL:    183    184    185	000544	122767 	000066 	177750 		CMPB	#31.+23.,POS+2	;ARE WE AT THE BOTTOM OF THE SCREEN?    186									;(DISPLAYS ONLY 5 DEVICES.)    187	000552	002063 				BGE	25$		;IF GE - YES!    188    189    190	000554	012700 	000526'			MOV	#POS+6,R0	;POINT TO DISPLAY AREA    191	000560	016720 	177214 			MOV 	DEVNME,(R0)+	;GET DEVI      CE NAME INTO OUTPUT STRING    192    193	000564	012767 	020040 	177736 		MOV	#"  ,POS+10	;DO SOME CLEANING UP    194	000572	012767 	020040 	177734 		MOV	#"  ,POS+14    195	000600	012767 	020040 	177730 		MOV	#"  ,POS+16    196	000606	012767 	020040 	177724 		MOV	#"  ,POS+20    197    198	000614	116701 	177162 			MOVB	LOUNIT,R1	;UNIT NUMBER TO BE CONVERTED TO ASCII    199	000620	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    200	000622					CALL	$CBOMG		;CONVERT TO OCTAL-ASCII    201    202	000626	012700 	000      534'			MOV	#POS+14,R0	;POINT TO DISPLAY AREA    203    204	000632	005767 	177146 			TST	REDIR		;IS THIS A REDIRECTED DISK?    205	000636	001416 				BEQ	10$		;IF EQ-NO    206    207	000640	112720 	000050 			MOVB	#'(,(R0)+	;OUTPUT REDIRECTED DISK NAME    208	000644	116720 	177142 			MOVB	RED.NM,(R0)+    209	000650	116720 	177137 			MOVB	1+RED.NM,(R0)+    210	000654	016701 	177134 			MOV	RED.UN,R1	;AND UNIT NUMBER    211	000660	005002 				CLR 	R2		;SUPPRESS LEADING ZEROES    212	000662					CALL	$CBOMG		;CONVER      T TO OCTAL ASCII    213    214	000666	112710 	000051 			MOVB	#'),(R0)	;AND CLOSING PARENTHESIS    215	000672	000405 				BR	20$    216    217	000674	012701 	000006'		10$:	MOV	#FRBLK,R1	;POINT TO FREE BLOCK 2-WORD BUFFER    218	000700	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    219	000702					CALL	$CDDMG		;CONVERT TO ASCII    220    221	000706	012703 	000520'		20$:	MOV	#POS,R3		;POINT TO DISPLAY    222	000712					CALL	OUTLIN		;OUTPUT DISPLAY LINE    223	000716	105267 	177600 			INCB	2+POS		;POINT TO NEXT D      ISPLAY LINE    224    225	000722				25$:	RETURN    226    227    228		000001 				.ENDDISPLAY DISK USAGE LEVELS - SUM	MACRO M1110  22-JAN-79 14:20  PAGE 7-1SYMBOL TABLEA$$CHK= 000000   	E$$NSI= 000000   	L$$11R= 000000   	S$$YSZ= 050000   	U.ACP = 000032A$$CPS= 000000   	E$$PER= 000000   	L.CNT   000005   	S.STBK= 000012   	U.ATT   000022A$$NSI= 000000   	E$$XPR= 000000   	L.LGTH  000010   	TIT     000024R  	U.BUF   000024A$$PRI= 000000   	FC.CEF= 020000   	L.LNK   000000   	T$$ACR= 000000   	U.CBF = 000032      A$$TRP= 000000   	FC.DIR= 040000   	L.VB1   000004   	T$$BTW= 000000   	U.CLI   177772CD    = 000131   	FC.FCO= 010000   	L.WI1   000002   	T$$BUF= 000000   	U.CNT   000030C$$CDA= 000002   	FC.WAC= 100000   	MNTD    000016R  	T$$CCA= 000000   	U.CTL   000004C$$CKP= 000000   	FRBLK   000006R  	M$$CRB= 000124   	T$$CCO= 000000   	U.CW1   000010C$$CSR= 177440   	F$$LPP= 000000   	M$$CRX= 000000   	T$$CTR= 000000   	U.CW2   000012C$$LIS= 000000   	F$$LVL= 000001   	M$$EXT= 000000   	T$$ESC= 000000   	U.CW3   00      0014C$$ORE= 002000   	F.DREF  000036   	M$$FCS= 000000   	T$$GMC= 000000   	U.CW4   000016C$$RSH= 177564   	F.DRNM  000040   	M$$K11= 000000   	T$$GTS= 000000   	U.DCB   000000C$$RUN= 000000   	F.FEXT  000042   	M$$MGE= 000000   	T$$HLD= 000000   	U.IAST  000034C$$XDB= 000000   	F.FNUM  000002   	M$$MUP= 000000   	T$$J16= 000003   	U.KRB1= 000042DCB     000020R  	F.FOWN  000010   	M$$NET= 000000   	T$$KMG= 000000   	U.LUIC  177774DEVICE  000240R  	F.FPRO  000012   	M$$OVR= 000000   	T$$LWC= 000000   	U.OAST        000036DEVNME  000000R  	F.FSEQ  000004   	M$$XLN= 000400   	T$$PS = 000000   	U.OCNT  000006DSKSUM  000046RG 	F.FSQN  000007   	N$$CON= 000500   	T$$RAX= 000000   	U.OWN   177776DSPFBL  000544R  	F.FVBN  000044   	N$$LDV= 000001   	T$$RNE= 000000   	U.PKT   000030DV.CCL= 000002   	F.HDLB  000016   	N$$MOV= 000011   	T$$RPR= 000000   	U.PRM = 000036DV.COM= 020000   	F.LBN   000022   	N$$MXM= 001100   	T$$RST= 000000   	U.PTCB  000032DV.DIR= 000010   	F.LGTH  000052   	N$$TMO= 000012   	T$$RUB= 000000   	U.      RED   000002DV.F11= 040000   	F.LINK  000000   	N$$UMR= 000024   	T$$SMC= 000000   	U.SCB   000020DV.ISP= 002000   	F.LKL   000050   	OUTLIN= ****** GX	T$$SYN= 000000   	U.STS   000005DV.MNT= 100000   	F.NACS  000032   	OV$DB = 000000   	T$$TRW= 000000   	U.ST2   000007DV.MXD= 000100   	F.NLCK  000033   	OV$DR = 000000   	T$$UTB= 000000   	U.UIC = 000052DV.OSP= 004000   	F.NWAC  000034   	O$$LAP= 000000   	T$$VBF= 000000   	U.UNIT  000006DV.PSE= 010000   	F.SCHA  000015   	POS     000520R  	T$$ZAN= 000300         	U.VCB = 000034DV.REC= 000001   	F.SIZE  000026   	P$$D70= 000000   	T$$18S= 000000   	U2.AT.= 000020DV.SDI= 000020   	F.STAT  000034   	P$$LAS= 000000   	UCB     000022R  	U2.CRT= 002000DV.SQD= 000040   	F.UCHA  000014   	P$$OFF= 000000   	UC.ALG= 000200   	U2.DH1= 100000DV.SWL= 001000   	G$$TPP= 000000   	P$$RFL= 000000   	UC.ATT= 000010   	U2.DJ1= 040000DV.TTY= 000004   	G$$TTK= 000000   	P$$RTY= 000000   	UC.KIL= 000004   	U2.DZ1= 000100DV.UMD= 000200   	HIUNIT  000003R  	P$$TPT= 000000   	UC.LGH= 0000      03   	U2.ESC= 001000D$$IAG= 000000   	H$$RTZ= 000074   	Q$$OPT= 000017   	UC.NPR= 000100   	U2.HLD= 000040D$$ISK= 000000   	I$$RAR= 000000   	REDIR   000004R  	UC.PWF= 000020   	U2.LOG= 000400D$$L11= 000001   	I$$RDN= 000000   	RED.NM  000012R  	UC.QUE= 000040   	U2.LWC= 000001D$$SHF= 000000   	K$$CNT= 177546   	RED.UN  000014R  	US.ABO= 000001   	U2.L3S= 000004D$$WCK= 000000   	K$$CSR= 177546   	R$$DSP= 000000   	US.BSY= 000200   	U2.L8S= 010000D$$YNC= 000000   	K$$IEN= 000115   	R$$EXV= 000000   	US.CRW=       000004   	U2.NEC= 004000D$$YNM= 000000   	K$$LDC= 000001   	R$$HDV= 000000   	US.DSB= 000010   	U2.PRV= 000010D$$ZMD= 000000   	K$$TPS= 000074   	R$$H11= 000003   	US.ECH= 000002   	U2.RMT= 020000D$$Z11= 000004   	LD$DB = 000000   	R$$JPO= 000000   	US.FOR= 000040   	U2.R04= 100000D.DSP   000012   	LD$DR = 000000   	R$$JP1= 000003   	US.FRK= 000002   	U2.SLV= 000200D.LNK   000000   	LD$LP = 000000   	R$$LKL= 000001   	US.LAB= 000004   	U2.VT5= 000002D.MSK   000014   	LD$MM = 000000   	R$$MOF= 000000   	US.M      DE= 000002   	U2.7CH= 010000D.NAM   000004   	LD$NT = 000000   	R$$MPL= 000000   	US.MDM= 000020   	U3.DBF= 000002D.PCB   000034   	LD$RH = 000000   	R$$M11= 000003   	US.MNT= 000100   	VC.BMW= 000002D.UCB   000002   	LD$TT = 000000   	R$$NDC= 000006   	US.OFL= 000001   	VC.IFW= 000001D.UCBL  000010   	LD$VT = 000000   	R$$NDH= 000226   	US.OUT= 000001   	V$$CTR= 001000D.UNIT  000006   	LD$XM = 000000   	R$$NDL= 000001   	US.PUB= 000004   	V$$TLD= 000120D.VCAN= 000002   	LOUNIT  000002R  	R$$SND= 000000   	      US.RED= 000002   	V$$TLM= 000205D.VINI= 000000   	L$$ASG= 000000   	R$$STP= 000000   	US.SHR= 000001   	V$$TRM= 000000D.VOUT= 000004   	L$$DRV= 000000   	R$$11M= 000000   	US.SPU= 000002   	V.FCB   000004D.VPWF= 000006   	L$$LDR= 000000   	S$$ECC= 000000   	US.UMD= 000010   	V.FFNU  000061ESC   = 000033   	L$$PTO= 000037   	S$$WPC= 000036   	US.WCK= 000010   	V.FIEX  000023E$$DVC= 000000   	L$$P11= 000001   	S$$WPR= 000005   	U.AAST  000040   	V.FMAX  000014DISPLAY DISK USAGE LEVELS - SUM	MACRO M1110  22-J      AN-79 14:20  PAGE 7-2SYMBOL TABLEV.FPRO  000034   	V.SBCL  000017   	V.VOWN  000026   	WI.LCK= 004000   	W.VBN   000002V.FRBK  000040   	V.SBLB  000022   	V.VPRO  000030   	WI.RDV= 000400   	W.WISZ  000003V.IBLB  000010   	V.SBSZ  000020   	V.WISZ  000016   	WI.WRV= 001000   	X$$M11= 000002V.IBSZ  000011   	V.STAT  000060   	WI.BPS= 100000   	W.CTL   000000   	$CBOMG= ****** GXV.IFWI  000002   	V.TRCT  000000   	WI.DLK= 010000   	W.FCB   000006   	$CDDMG= ****** GXV.LABL  000044   	V.VCHA  000032   	WI.EXL=   l   040000   	W.LKL   000010   	$DEVHD= ****** GXV.LGTH  000062   	V.VFSQ  000036   	WI.EXT= 002000   	W.RTRV  000012   	$$$R4 = 000000V.LRUC  000041. ABS.	177776	   000      	000724	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  5370 WORDS  ( 21 PAGES)DYNAMIC MEMORY:  6148 WORDS  ( 23 PAGES)ELAPSED TIME:  00:00:12DSKSUM,DSKSUM=TPMMC/ML,EXEMC/ML,KERMC/PA:1,DSKSUMl         R@ÎkQÁ› 8$        	.TITLE	DISPLAY GENERATION MODULE FOR MEMORY UTILIZATION DISPLAY	.SBTTL	INITIALIZATIONS	ESC=33	CD=131	ES=112	HO=110	EL=113CLEAN:	.ASCII	<ESC><CD><31.+7.><0><31.+9.><ESC><EL><1>OUT:	.ASCIZ	<ESC><CD><0><0><0><0><1>POS:	.ASCIZ	<ESC><CD><31.+7.><0><31.+9.>BUF:	.BLKW	32.ENDBUF:	.BYTE	1,1TABLE::		.WORD	0	.WORD	100	.ASCII	/TASK01/	.WORD	0	.WORD	200	.WORD	10	.ASCII	/TASK02/	.WORD	0	.WORD	210	.WORD	200	.ASCII	/TASK03/	.WORD	0	.WORD	1000	.WORD	10	.ASCII	/TASK04/	.WORD	0	.WORD	1010	.WORD	10	.ASCII	/TASK05/	.WORD 0PNTR      ::	.WORD	.	.PAGE	.SBTTL	CLEAR SCREENMEM3::	MOVB	#31.+7.,CLEAN+2	;POINT TO FIRST LINE TO BE CLEANED UP10$:	MOV	#CLEAN,R3	;POINT TO OUTPUT PACKAGE	CALL	OUTLIN	INCB	CLEAN+2		;GO TO NEXT LINE	CMPB	CLEAN+2,#31.+13. ;ARE WE THRU CLEANING FIRST HALF OF DISPLAY?	BNE	20$		;IF NE-NO	MOVB	#31.+16.,CLEAN+2 ;POINT TO SECOND HALF20$:	CMPB	CLEAN+2,#31.+22. ;ARE WE THRU WITH THE ENTIRE DISPLAY?	BNE	10$		;IF NE - NO	.PAGE	.SBTTL	PUT TOGETHER AND DISPLAY ARROWS	CALL	SORT		;SORT TABLE IN ASCENDING ORDER;; MACRO TO CONVERT MEM      ORY 32. WORD UNITS IN ARG INTO; SCREEN SPACES IN THE X-DIMENSION.;	.MACRO	CNVR	ARG,?A	ADD	SYSRND,ARG	MOV	SYSHFT,SYSTMPA:	ASR	ARG	DEC	SYSTMP	BNE	A	.ENDM	;; CONVERT ADDRESS AND SIZE OF EACH TASK INTO SCREEN SPACES.;	CLR	MEMFLG		;CLEAR FLAG	MOV	#TABLE,R5	;POINT TO FIRST TABLE ENTRY	CALL	CLNBUF		;CLEAN THE BUFFERLOOP:	MOV	#BUF,R0		;POINT TO BEGINNING OF BUFFER	MOV	(R5),R4		;GET STARTING ADDRESS OF TASK	CNVR	R4		;CONVERT IT TO MEMORY SPACES	ADD	R4,R0		;ADD DISTANCE TO START OF TASK	MOV	2(R5),R1	;GET SIZE OF TASK      	CNVR	R1		;CONVERT IT TO SCREEN SPACES	BNE	9$		;IF NE-THEN SIZE IS NOT ZERO	INC	R1		;MAKE IT AT LEAST ONE UNIT LONG9$:	MOVB	#'<,R2		;INSERT LEFT END OF ARROW10$:	CMP	#ENDBUF,R0	;IS THIS TASK IN LOW HALF OF MEMORY?	BGT	30$		;IF GT-IT IS	TST	MEMFLG		;IF IN HIGH PART OF MEMORY WERE WE THERE LAST TIME?	BNE	25$		;IF NE YES	MOVB	#31.+7.,POS+2	;MOVE CURSOR TO TOP ARROW LINE	MOV	#POS,R3		;POINT TO BUFFER	CALL	OUTLIN		;OUTPUT THE BUFFER	MOVB	#31.+12.,POS+2	;MOVE CURSOR TO BOTTOM ARROW LINE	MOV	#POS,R3		;POINT TO BUF      FER	CALL	OUTLIN		;OUTPUT THE BUFFER	CALL	CLNBUF		;CLEAN THE BUFFER	INC	MEMFLG		;SET FLAG TO INDICATE THAT WE HAVE PASSED THROUGH				;HERE25$:	SUB	#64.,R0		CMP	R0,#64.		;ARE WE OFF THE SCREEN?	BGE	55$		;IF GE - YES30$:	MOVB	R2,(R0)+	;INSERT CHARACTER INTO BUFFER	DEC	R1		;ONE LESS CHARACTER TO FINISH THIS ARROW	BEQ	50$		;IF EQ WE ARE DONE	CMP	#1,R1		;IS THERE ONLY ONE CHARACTER LEFT	BNE	35$		;IF NE-NO	MOVB	#'>,R2		;IF ONE CHARACTER LEFT THEN INSERT THE RIGHT 				;END OF ARROW	BR	10$		;GO BACK AND INSERT IT35$      :	MOVB	#'=,R2		;BUILD BODY OF ARROW	BR	10$50$:	ADD	#14,R5		;POINT TO NEXT TABLE ENTRY	CMP	R5,PNTR		;HAVE WE REACHED THE END OF THE TABLE?	BEQ	55$		;IF EQ YES	JMP	LOOP55$:	MOVB	#31.+16.,POS+2	;MOVE CURSOR TO TOP ARROW LINE	MOV	#POS,R3		;POINT TO BUFFER	CALL	OUTLIN		;OUTPUT THE BUFFER	MOVB	#31.+21.,POS+2	;MOVE CURSOR TO BOTTOM ARROW LINE	MOV	#POS,R3		;POINT TO BUFFER	CALL	OUTLIN	.PAGE	.SBTTL	DISPLAY TASK NAME	CLR	MEMFLG	MOV	#TABLE,R5LOOP1:	MOV	4(R5),BUF	;GET TASK NAME	MOV	6(R5),BUF+2		MOV	10(R5),BUF+4	MOV	#"        ,BUF+6	MOV	2(R5),R1	;GET SIZE OF TASK	CNVR	R1	ASR	R1		;DIVIDE BY TWO TO FIND MIDPOINT	MOV	(R5),R4	CNVR	R4	ADD	R4,R1	CMP	#64.,R1		;SHOULD WE GO DOWN TO SECOND HALF OF MEMORY?	BGT	10$		;IF GT -NO	INC	MEMFLG		;SET MEMFLG	SUB	#64.,R1	CMP	R1,#64.		;ARE WE OFF THE SCREEN	BGE	20$		;IF GE - YES10$:	ADD	#50,R1		;REMEMBER THAT CURSOR COLUMN 8=50	MOVB	R1,OUT+4	CALL	OUTVER	ADD	#14,R5		;POINT TO NEXT TABLE ENTRY	CMP	R5,PNTR		;HAVE WE REACHED THE END OF THE TABLE?	BEQ	20$		;IF EQ-YES	JMP	LOOP120$:	MOV	#"::,BUF	;OUTPUT M      EMORY FENCE	MOV	#"::,BUF+2	MOV	#"::,BUF+4	MOV	MEMSIZ,R1	CNVR	R1	SUB	#64.,R1	ADD	#50,R1	MOVB	R1,OUT+4	CALL	OUTVER	RETURN	.PAGE	.SBTTL	MISCELLANEOUS ROUTINES;; **-CLNBUF-INTERNAL ROUTINE TO THIS MODULE. USED TO CLEAN A 64 BYTE BUFFER;CLNBUF:	MOV	#BUF,R4		;POINT TO BEGINNING OF BUFFER	10$:	MOVB	#' ,(R4)+	;CLEAN ONE SPACE	CMPB	(R4),#1		;HAVE WE FOUND THE END BUFFER TERMINATOR?	BNE	10$	RETURN;; **-OUTVER-ROUTINE THAT VERTICALLY OUTPUTS A SIX CHARACTER NAME;           TO THE SCREEN;; INPUTS: ;;	BUF=ADDRESS OF FIR      ST CHARACTER TO BE DISPLAYED;;	OUT+4=CONTAINS COLUMN NUMBER THAT NAME SHOULD BE OUTPUT ON;OUTVER:	MOV	#BUF,R0		;POINT TO TASK NAME	TST	MEMFLG		;ARE WE ON TOP OR BOTTOM HALF OF SCREEN?	BNE	2$		;IF NE-ON BOTTOM HALF	MOVB	#31.+7.,OUT+2	;POSITION CURSOR TO RIGHT ROW	BR	5$2$:	MOVB	#31.+16.,OUT+25$:	CMPB	(R0),#' 	;DO WE HAVE A SPACE	BEQ	10$		;IF EQ WE ARE FINISHED	MOVB	(R0)+,OUT+5	;PUT THE CHARACTER TO BE DISPLAYED INTO BUFFER	MOV	#OUT,R3		;POINTER TO OUTPUT PACKAGE	CALL	OUTLIN		;DISPLAY THE CHARACTER	INCB	OUT+2	      	;GO DOWN ONE ROW	BR	5$		;GO BACK AND PUT ANOTHER CHARACTER10$:	RETURN	.PAGE	.SBTTL	SORT TABLE ROUTINE;; **-SORT-SORT TSTS IN ORDER OF STARTING ADDRESS;TEMP:	.BLKW	6SRTFLG:	.WORD	0SORT:	MOV	#TABLE,R0	;INITIALIZE POINTERS TO FIRST TWO TABLE ELEMENTS	MOV	#TABLE+14,R1LOOP2:	CMP	(R0),(R1)	;COMPARE TST STARTING ADDRESSES	BLE	10$		;IF LE - THEN TWO ENTRIES ALREADY IN ORDER	MOV	(R1),TEMP	;SWITCH THE TWO TABLE ENTRIES	MOV	2(R1),TEMP+2	MOV	4(R1),TEMP+4	MOV	6(R1),TEMP+6	MOV	10(R1),TEMP+10	MOV	12(R1),TEMP+12	MOV	(R0),      (R1)	MOV	2(R0),2(R1)	MOV	4(R0),4(R1)	MOV	6(R0),6(R1)	MOV	10(R0),10(R1)	MOV	12(R0),12(R1)	MOV	TEMP,(R0)	MOV	TEMP+2,2(R0)	MOV	TEMP+4,4(R0)	MOV	TEMP+6,6(R0)	MOV	TEMP+10,10(R0)	MOV	TEMP+12,12(R0)	INC	SRTFLG		;KEEP TRACK OF WHETHER ANY CHANGES WERE MADE10$:	MOV	R1,R0		;MOVE DOWN TO NEXT TRANSACTION NAME	ADD	#14,R1	CMP	R1,PNTR		;HAVE WE REACHED THE END OF THE TABLE?	BLT	LOOP2		;IF LT-NO	TST	SRTFLG		;HAS ANY RE-ARRANGING BEEN DONE?	BEQ	99$		;IF EQ NO CHANGES WERE MADE AND WE ARE FINISHED	CLR	SRTFLG	JMP	SORT99$:	RE      TURN	.END               U  ÌÁ› 8$        CPU/DA,CPU/-SP =CPU           ŒrÂßÌÁ› 8$ K   è  ;; THIS IS A FILE TO BUILD A MAPPED VERSION OF RMDEMO; FOR THE VT52 CRT DISPLAY.;; THE SYMBOL F$LNUM DEFINES THE NUMBER OF FILL CHARACTERS OUTPUT; DURING THE DIRECT CURSOR POSITIONING.  FOR A 2400 BAUD VT05 IT; SHOULD BE 5, FOR A VT52 OF ANY SPEED 0.  IT MAY BE ADJUSTED TO; ANY VALUE THAT IS APPROPRIATE FOR YOUR TERMINAL.;RMD52/PR/MM/AL/CP=RMD52[1,24]MCR/LB:LKLST[1,1]EXELIB/LB[1,54]KERNEL.STB/SS/PAR=GEN:0:20000PRI=225TASK=RMDEMOEXTTSK=512STACK=64GBLDEF=F$LNUM:0ASG=TI:1,TI:2UNITS=2// è         Õ˜bl^Á› 8$     Þ   	.ROOT	A-*(B)A:	.FCTR	DEMO-TEST-MEMTST-INCB:	.FCTR	TSK,SUMMRY,C,HELP,D,E,MSG,TS,TRC:	.FCTR	QUE2-[1,24]QMG/LB:QMGSYMD:	.FCTR	MEM1-MEM3E:	.FCTR	SUM4-DEVXXXMSG:	.FCTR	MSGX-MSGTSTTS:	.FCTR	TST-TSTXXXTR:	.FCTR	TRANS-TRANXX	.ENDÞ          R©`ÌÁ› 8$     º   MEMORY  /PR /CP, MEMORY/-SP /MA  =DEMOPR,MISC,MEMINI,MEM2,MEMOUT,MEMINCLB0:[1,24]QMG/LB:QMGSYM,LB0:[1,54]KERNEL.STB/SS,LB0:[1,1]TPSCOM.STB/SS,LB0:[1,1]TPSODT/DA,/GBLDEF=$$CPU:70WNDWS=1//º          ¸Q"SÁ› 8$        ÁXÀN 	   4 2           ã       Lœ ´                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ì   J	   s	  É d , õ Z @ r!¸«	 @ „! g ¢ ""è¨  ""¸« Œ 5( t ]( Ì –,	   –,"€	 Ú x:¸« ÚxQ   Naf¾Z
 ð hf   æ[g 2 ˆšw€p daz€}
 ° u~ ¤  ”Ó ú H  Õãx 6 €»s 
€[y â2€‹S ¬ e©AK þ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           ˆN 	      A 	.MACRO	ASRDF$		; DEFINE HARDWARE REGISTERS FOR KT-11(USER SPACE)ÿ ;ÿ UISAR0 = 177640ÿ UISAR1 = 177642ÿ UISAR2 = 177644ÿ UISAR3 = 177646ÿ UISAR4 = 177650ÿ UISAR5 = 177652ÿ UISAR6 = 177654ÿ UISAR7 = 177656ÿ UISDR0 = 177600ÿ UISDR1 = 177602ÿ UISDR2 = 177604ÿ UISDR3 = 177606ÿ UISDR4 = 177610ÿ UISDR5 = 177612ÿ UISDR6 = 177614ÿ UISDR7 = 177616ÿ .ENDM	ASRDF$     ^ N 	       	.MACRO	PUSH	LISTÿ 	.IRP	RX,<LIST>ÿ 	MOV	RX,-(SP)ÿ 	.ENDM 	.ENDM	PUSHÿ     Z N 	       	.MACR      O	POP	LIST 	.IRP	RX,<LIST>	 	MOV	(SP)+,RXE 	.ENDM
 	.ENDM	POP     b N 	       	.MACRO	DFENT	ARG1 	.IF	DF	DEBUG= ..'ARG:: JMP	.$'ARG7 	.ENDC 	.ENDM	DFENT     h N 	       	.MACRO	ENTPT	ARG  	.IF	DF	DEBUGÿ .$'ARG:: 	.IFFÿ ..'ARG:: 	.ENDC 	.ENDM	ENTPT     Ø N 	       	.MACRO	TSTRT$	CBA,NPC,CSZ 	MOV	R0,-(SP)I 	.IIF DIF <CBA>,R0	MOV	CBA,R0ÿ( 	MOV	R0,C.SP(R0)	;SAVE THE STACK POINTER 	ADD	CSZ,C.SP(R0)U 	MOV	NPC,(R0)	;SAVE NEW PC 	JSR	PC,$TSTRT 	.ENDM	TSTRT$P     T N 	       	.MACRO	TS      USP$		 	MOV	R0,-(SP)< 	JSR	PC,$TSUSP 	.ENDM	TSUSP$      v N 	       	.MACRO	TRESM$	CBA 	MOV	R0,-(SP)F 	.IIF DIF <CBA>,R0	MOV	CBA,R07 	JSR	PC,$TRESM 	.ENDM	TRESM$      R N 	       	.MACRO	TTRMN$ 	MOV	R0,-(SP)A 	JSR	PC,$TTRMN 	.ENDM	TTRMN$      P N 	       	.MACRO	$DELAY 	MOV	R0,-(SP)A 	CALL	.DELAY 	.ENDM	$DELAYI     Œ N 	       	.MACRO	MAP	A,B,C. 	.IF EQ A-3T 	MOV	B,UISAR3R 	MOV	#60000,C( 	.IFFM 	MOV	B,UISAR4V 	MOV	#100000,C 	.ENDC 	.ENDM     f N 	       	.MACRO	INH$S,?A       	EMT	376 	.WORD	A 	MOVB	#1,$CXDBLU 	RETURNM A: 	.ENDM	INH$S     ` N 	       	.MACRO	ENB$SV 	EMT	376 	.WORD	.+10C 	CLRB	$CXDBL 	RETURNR 	.ENDM	ENB$S     : N 	       	.MACRO	GENCB	A,XR
 A:	.BLKW	X 	.ENDM     ÖN 	       	.MACRO	GENTTB,A,?B  	.MCALL	ASRDF$ 	ASRDF$D 	.MCALL	QIO$ 	.WORD	0 	.WORD	0
 	.WORD	.-2 	.WORD	0
 	.BLKW	15. 	.WORD	0
 	.WORD	.-2% 	.RAD50	/ABCDEF/		; MANAGER TASK NAME0 	.WORD	A 	.WORD	$..SSTR0 	.WORD	$..INH			; CONTEXT SWITCH INHIBIT ADDRESS 	QIO$	IO.RLB,,,,,$AS      TSVT $..CTP:O 	MOV	#0,@#UISAR0 	MOV	#0,@#UISAR2 	JMP	..TPCHS $..INH:  	EMT	376 	.WORD	B 	MOVB	#1,$CXDBL.	 B:	RETURN  $..SST:D 	.REPT	7 	.WORD	$..CTPS 	.ENDR 	.ENDM     @ N 	       	.MACRO	SWITCH	A 	EMT	376 	.WORD	A 	.ENDM     <N 	       	.MACRO	POINT0 	MOV	R1,-(SP)	;SAVE R1) 	MOV	$TTBAD,R0	;GET BASE ADDRESS OF CACHE & 	MOV	T.DFP(R0),UISAR3 ;MOVE INTO ASR 3 	CLR	R0		;RESET R0 	ASHC	#10.,R0		;GET PAGE IN R0% 	ADD	R0,UISAR3	;POINT AT BASE OF PAGEH' 	MOV	#600,R0		;MAKE R0 POINT AT ADDR      ESST 	ASHC	#6,R0		; 	MOV	(SP)+,R1M 	.ENDM     ` N 	       	.MACRO	CMAP	A 	MOV	$TTBAD,AB 	MOV	T.DFP(A),UISAR3 	MOV	#60000,AT 	.ENDM     ŒN 	      ( 	.MACRO	ERR$S	P1,P2,P3,P4,P5,P6,P7,P8,?A 	.MCALL	SDAT$S,SERR6 ;. 	MOV	R0,-(SP)  	MOV	$TTBAD,R0% 	ADD	#T.RB+4,R0	;POINT AT SEND BUFFER1 	MOV	R0,-(SP)01 	MOV	@$TTBAD,(R0)+	;MOVE IN CONTEXT BLOCK ADDRESS  	SERR	P1,P2,P3,P4,P5,P6,P7,P8E 	MOV	(SP)+,R0.4 	SDAT$S	#...SER,R0	;SEND THE BUFFER TO THE ERROR LOG 	BCS	A ;V 	TSUSP$			;WAIT FOR REPLY  A:       	MOV	(SP)+,R0R 	.ENDM     LN 	      % 	.MACRO	ERR$A	P1,P2,P3,P4,P5,P6,P7,P8M 	.MCALL	SDAT$S,SERRD 	MOV	R0,-(SP)M. 	MOV	$TTBAD,R0	;GET THREAD TABLE BLOCK ADDRESS% 	ADD	#T.RB+4,R0	;POINT AT SEND BUFFERL 	MOV	R0,-(SP) % 	CLR	(R0)+		;INDICATE NO REPLY NEEDEDD 	SERR	P1,P2,P3,P4,P5,P6,P7,P8E 	MOV	(SP)+,R0P 	SDAT$S	#...SER,R0 	MOV	(SP)+,R0T 	.ENDM     –N 	      $ 	.MACRO	SERR	P1,P2,P3,P4,P5,P6,P7,P87 	MOV	P1,(R0)+	;FIRST PARAMETER IS REQUIRED (ERROR CODE)  	.IF NB <P2>( 	MOV	P2,(R0)+	;MOVE IN ASR      0 IF SPECIFIED 	.IFFN2 	MOV	UISAR0,(R0)+	;OTHERWISE MOVE IN CURRENT VALUE 	.ENDC 	.IRP	X,<P3,P4,P5,P6,P7,P8>R 	.IF NB <X>V- 	MOV	X,(R0)+		;IF PARAMETER SPECIFIED MOVE ITD 	.IFF4) 	CLR	(R0)+		;OTHERWISE SET PARAMETER NULL  	.ENDC 	.ENDR 	.ENDM     ªN 	       	.MACRO	TMMAC$ ;P ;	TIM MACROS ;P, ;	TIMDF$ - TIM MAPPING REGISTERS AND WINDOWS3 ;	FRMDF$ - FORMAT RECORD FIELD AND FLAG DEFINITIONS65 ;	ACTDF$ - TIM ACTION CODE FIELD AND FLAG DEFINITIONSO( ;	FQMDF$ - FQM FIELD AND FLAG DEFINTIONSA ;	TNXD      F$	- TIM'S TERMINAL INDEX RECORD FIELD AND FLAG DEFINITIONSN, ;	TMEDF$  - TIM'S FLAGS FOR ERROR PROCESSING+ ;	ATSDF$  - ATS SYMBOLS DEFINED FOR TIM/TPSE ;  	.ENDM     (N 	       	.MACRO	TIMDF$ ;R% ;	TIM'S MAPPING REGISTERS AND WINDOWSR ;.3 .MRCM0=177640		;APPLICATION COMMON BLOCK 0 (UISAR0)R3 .MRCM1=177642		;APPLICATION COMMON BLOCK 1 (UISAR1) 3 .MRLIB=177644		;TPM LIBRARY                (UISAR2) $ .MRSCB=177646		;SCB  			    (UISAR3)+ .MRFRC=177644		;FORMAT RECORD		    (UISAR2)A* .MRINB=177650		;IN      PUT BUFFER		    (UISAR4)+ .MROTB=177642		;OUTPUT BUFFER		    (UISAR1)$" .MRTDB=177650		;TDB			    (UISAR4)0 .MRFRX=177644		;FORMAT INDEX RECORD	    (UISAR2)2 .MRTNX=177650		;TERMINAL INDEX RECORD     (UISAR4) .WNLIB=40000		;TPM LIBRARY .WNSCB=60000		;SCB .WNFRC=40000		;FORMAT RECORD .WNINB=100000		;INPUT BUFFER .WNOTB=20000		;OUTPUT BUFFER .WNTDB=100000		;TDB4" .WNFRX=40000		;FORMAT INDEX RECORD) .WNTNX=100000		;TERMINAL INDEX RECORD      .DRCM0=177600		;(UISDR0) .DRCM1=177602		;(UISDR1) .DRLIB=177      604		;(UISDR2) .DRSCB=177606		;(UISDR3) .DRFRC=177604		;(UISDR2) .DRINB=177610		;(UISDR4) .DROTB=177602		;(UISDR1) .DRTDB=177610		;(UISDR4) .DRFRX=177604		;(UISDR2) .DRTNX=177610		;(UISDR4) 	.ENDM     TN 	       	.MACRO	FRMDF$ ;S* ;	FORMAT RECORD FIELD AND FLAG DEFINITIONS ;W6 F.OUT=24		;DISPLACEMENT TO START OF TIM OUTPUT SECTION6 F.INPT=26		;DISPLACEMENT TO START OF TIM INPUT SECTION6 F.RPLY=22		;DISPLACEMENT TO START OF TIM REPLY SECTION. F.MSZ=30		;MAXIMUM INPUT MESSAGE SIZE IN BYTES% F.FQ      MZ=32		;MAXIMUM FQM SIZE IN BYTESU7 F.ATSZ=34		;DISPLACEMENT TO SIZE OF ATAM OUTPUT SECTION)) F.FMRZ=36		;FORMAT RECORD LENGTH IN BYTES;8 F.ATST=44		;DISPLACEMENT TO START OF ATAM OUTPUT SECTION FS.FRM=1		;FORMAT MODE ENABLE. FS.MNU=2		;MENU MODE ENABLEC FS.NOE=4		;NO INPUT EXPECTED FS.FQM=10		;AN FQM REQUIRED  ;S ;	FUNCTION KEY DEFINITIONS ;N FK.ABT=07		;ABORT FUNCTION KEY FK.ENT=41		;ENTER FUNCTION KEY$ FK.ACK=42		;ACKNOWLEDGE FUNCTION KEY* FK.CLZ=43		;INITIAL OPERATION FUNCTION KEY# FK.ERE=44		;      END REPEAT FUNCTION KEYE 	.ENDM     TN 	       	.MACRO	ACTDF$ ;O0 ;	TIM'S ACTION CODE FIELDS AND FLAGS DEFINITIONS ;G C.END=0			;END OF CODES; C.CPY=2			;COPYT C.TIME=4		;TIMET C.DATE=6		;DATE1# C.TRID=10		;INSERT TRANSACTION TYPEN C.STID=12		;INSERT STATION NAMEU C.USER=14		;USER FUNCTIONF C.DIAG=16		;DIAGNOSTIC- C.TRAN=20		;TRANSACTION TYPE FIELD IDENTIFIERC C.FILL=22		;FILL CHARACTER C.LIT=24		;LITERAL# C.TRMN=26		;SPECIFIC TRANSACTION IDZ C.MENU=30		;MENU C.KEY=32		;KEY+ CS.CHK=200		;C      HECK AUTHORIZATION FOR C.TRANN! CS.DAT=100		;DATA ALSO FOR C.TRAN$' CS.MNU=040		;MENU FIELD USED FOR C.TRANS 	.ENDM     šN 	       	.MACRO	FQMDF$ ;.' ;	TIM'S FQM FIELDS AND FLAG DEFINITIONS6 ;D MTYPE=0		;TYPE DISPLACEMENTS MFLGS=1		;MODIFIER DISPLACEMENTS! MCODE=2		;CODE FIELD DISPLACEMENTT MDATA=8.	;START OF DATAT MABRT='A	;ABORT FLAG  MCLOZ='C	;CLOSE TRANSACTION FLAG MCTIN='P	;PROCEED FLAG MRPRT='R	;REPORT TYPE FLAG MSTPT='H	;STOP REPEAT FLAG MTRAN='X	;EXCHANGE TYPE FLAG MRENT='E	;RE-ENTER       DATAA 	.ENDM     †N 	       	.MACRO	TNXDF$ ;L8 ;	TIM'S TERMINAL INDEX RECORD FIELD AND FLAG DEFINITIONS ;N# THTN=0		;HTN DISPLACEMENT IN RECORD " TNAME=2		;TERM NAME FIELD IN INDEX$ TRMD=9.		;RESOURCE MANAGER ULA FIELD% TDMD=8.		;DIALOGUE MANAGER ULA FIELD	  TFLGS=10.	;FLAGS WORDS% TLGTH=12.	;LENGTH OF INDIVIDUAL ENTRYA  HLGTH=8.	;LENGTH OF HEADER ENTRY TN.PRT=1	;PRINTER SIBLING FLAG 	.ENDM     ŒN 	       	.MACRO	TMEDF$ ;=" ;	TIM'S FLAGS FOR ERROR PROCESSING ;E$ TS.SCB=400!TS.WAT ;SCB IS VA      LID FLAG0 TS.BYT=1000	;DATA EXISTS IN MESSAGE R0 HAS COUNT! TS.SST=2000	;SENDING STATION NAME  TS.FQM=4000!TS.WAT ;FQM HEADER N% TS.WAT=100000	;WAIT FOR SEND COMPLETEM ;M* ERRDAT=14.	;OFFSET FOR ERROR DATA (TS.BYT)- ER.NRE=10.	;FORM NAME NOT RECOGNIZED INTERNALD ;		;TIM ERRORF 	.ENDM     ”N 	       	.MACRO	ATSDF$ ;N! ;	ATS SYMBOLS DEFINED FOR TIM/TPST ;  ;	VT62 RELATED SYMBOLS ;L0 FKOP=87.	;OP CODE FOR FUNCTION KEY SEGMENT (127)( MEOP=84.	;OP CODE FOR MENU SEGMENT (124)) INOP=80.	;OP CODE FOR IN      PUT SEGMENT (120)1( RTOP=27.	;OP CODE FOR RETRANSMIT COMMAND ;S ;	DIP COMMAND HEADER BITSM ; ) CBS=2		;COMMAND BUFFER SIZE FIELD PRESENT0% PCBT=4		;ERROR STATUS RETURNED IN DIPT HCEBIT=8.	;HARD COPY ERROR ;. ;	DIP DOP PACKET INFORMATION PT1=1		;PACKET TYPE FOR DIPI DOP=1		;DOP PACKET TYPE  DOPN=3		;LENGTH OF DOP ;N# ;	ATS CODES FOR RESOURCE MANAGEMENT  ;  ;T SRVTYP=3	;SRVTYPE FIELD  ;8 RESTY=112	;RESOURCE TYPE 	.ENDMNT (127)( MEOP=84.	;OP CODE FOR MENU SEGMENT (124)) INOP=80.	;OP CODE FOR IN          #¸Q"SÁ› 8$        ÁXÀN               @ +     (- Ø                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        Ÿ   « ¶â& T  À3 z	 H Þ
 2 J!
 Hw* ( ²2 ,œ5 ’ b;% > ’G † \K 
zK (aT  zd  Ìe N :w, n z}) ºƒ! ìÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           ¶M  	      	.MACRO	ABODF$,L,B S.COAD='B'0. S.CSGF='B'2. S.CBPT='B'4. S.CIOT='B'6. S.CILI='B'8. S.CEMT='B'10.ÿ S.CTRP='B'12.ÿ S.CFLT='B'14.ÿ S.CSST='B'16.ÿ S.CAST='B'18.ÿ S.CABO='B'20.ÿ S.CLRF='B'22.ÿ S.CCRF='B'24.ÿ S.IOMG='B'26.ÿ S.PRTY='B'28.ÿ S.CPMD='B'30.ÿ S.CELV='B'32.ÿ T.NDNR='B'0ÿ T.NDSE='B'2ÿ T.NCWF='B'4ÿ T.NCRE='B'6ÿ T.NDMO='B'8. T.NLDN='B'12.ÿ T.NLUP='B'14.ÿ 	.MACRO	ABODF$	X,Y 	.ENDM 	.ENDM     
M  	      	.MACRO 	CLKDF$,L,Bÿ C.MRKT='B'0ÿ C.SCHD='B'2ÿ C.SS      HT='B'4 C.SYST='B'6. C.SYTK='B'8. C.CSTP='B'10.. 	.ASECT' .=0  C.LNK:'L' .BLKW	1T C.RQT:'L' .BLKB	1. C.EFN:'L' .BLKB	1. C.TCB:'L' .BLKW	1T C.TIM:'L' .BLKW	2'	 .=C.TIM+4T C.AST:'L' .BLKW	1' C.SRC:'L' .BLKW	1ÿ C.DST:'L' .BLKW	1.	 .=C.TIM+4ÿ C.RSI:'L' .BLKW	2. C.UIC:'L' .BLKW	1V	 .=C.TIM+4. 	.BLKW	2 	.BLKW	1	 .=C.TIM+4F C.SUB:'L' .BLKW	1ÿ C.AR5:'L' .BLKW	1L	 	.BLKW	1  C.LGTH='B'.ÿ 	.PSECT	 	.MACRO	CLKDF$	X,Y 	.ENDM 	.ENDM     TM  	      	.MACRO	CUCDF$	X,Y 	.ASECT.
 .=	U.CW2+2 U.      ACUR:'X	.BLKW	1T U.NSYN:'X	.BLKB	1. U.NSYC:'X	.BLKB	1.
 .=	U.VCB+2 U.PHDR:'X	.BLKW	1T U.RCHK:'X	.BLKW	1.	 U.QSYN:'X  U.RCAC:'X	.BLKW	1  U.RBUF:'X	.BLKW	2  U.RCNT:'X	.BLKW	1T U.SVC:'X	.BLKW	1	 U.TXCT:'XL U.INTP:'X	.BLKW	1L U.SYNC:'X	.BLKB	1+ U.MPN:'X	.BLKB	1 U.RFRK:'X	.BLKW	1K U.RFPC:'X	.BLKW	1. U.RFR5:'X	.BLKW	1= U.RFR4:'X	.BLKW	1  U.RFCT='Y	U.TXCT+1 	.PSECT  U2.HDX='Y	100000 U2.LIN='Y	 40000 U2.CTS='Y	 20000 U2.SWC='Y	 10000 U2.ONL='Y	  4000 U2.HPT='Y   1000 U2.HRC='Y	   400 U2.RCV      ='Y	   200 U2.ACU='Y	   100 U2.MPT='Y	    40 U2.FTM='Y	    20 U2.SFL='Y	    10 U2.RFK='Y	     4 U2.SYC='Y	     3 U2.TXA='Y	     2 U2.SNC='Y      1 US.SYN='Y	1T U3.LOK='Y	100000 U3.RPD='Y	   400 U3.RAC='Y	   200 U3.SND='Y	     1 	.MACRO	CUCDF$	A,B 	.ENDM 	.ENDM     4M  	      	.MACRO	CVCDF$	X,Y 	.ASECTK	 .=	V.IFWI4 V.CPRT:'X	.BLKW	1T V.CLUN:'X	.BLKB	1C V.CMPN:'X	.BLKB	10 V.CSTS:'X	.BLKW	1  V.CST1:'X	.BLKB	12 V.CNID:'X	.BLKB	1O V.CUCB:'X	.BLKW	1T V.CMPL:'X	.BLKW	1' V.CNPN:'X	.BLK      W	1	 V.CMBC:'X	.BLKW	1  V.CRED:'X	.BLKW	1  V.CNHD:'X	.BLKW	10 V.CTBL:'X	.BLKW	1  V.CRBL:'X	.BLKW	12 V.NXHD:'X	.BLKW	1T V.CDBC:'X	.BLKW	1C V.CIAD:'X	.BLKW	1' V.CICT:'X	.BLKW	10 V.CSAD:'X	.BLKW	10 V.CSCT:'X	.BLKW	1  V.CMXI:'X	.BLKW	1. V.CMXO:'X	.BLKW	1. V.CTDH:'X	.BLKW	1  V.CTDT:'X	.BLKW	1	 V.CSTQ:'X	.BLKW	2K V.CLMT:'X	.BLKB	1T V.CTMA:'X	.BLKB	1N V.CLMR:'X	.BLKB	1N V.CRMA:'X	.BLKB	1S V.CMCT:'X	.BLKW	21 V.CRPC:'X	.BLKB	1D V.CRPL:'X	.BLKB	1B V.CRTM:'X	.BLKW	1L V.CREP:'X	.BLKW	1N V.CBCC      :'X	.BLKW	1C V.CDCC:'X	.BLKW	1D V.CURH:'X	.BLKW	1D V.CDLE:'X	.BLKW	1L V.COVR:'X	.BLKW	1L V.CRST:'X	.BLKW	1D V.CALF:'X	.BLKW	1C V.CREA:'X	.BLKB	1D 	.BLKB	1 	.IF DF	C$$ACU V.CTPN:'X	.BLKB	12.K 	.ENDC V.CLEN:'X	.BLKW	1. 	.PSECTB 	 VS.SEL='Y	100000 VS.FIN='Y	 40000 VS.REP='Y  20000 VS.RTR='Y	 10000 VS.STK='Y	  4000 VS.STR='Y	  2000 VS.ACK='Y	  1000 VS.NAK='Y	   400 VS.MPT='Y	   200 VS.DIS='Y    200 VS.CTL='Y	   100 VS.DAT='Y	    40 VS.SYN='Y	    20 VS.POL='Y	    10 VS.ONL='Y	     4       VS.BOO='Y	     2 VS.TRN='Y	     1 	.MACRO	CVCDF$	A,B 	.ENDM 	.ENDM     êM  	      	.MACRO	DCBDF$,L,B,SYSDEFA 	.ASECTK .=0  D.LNK:'L' .BLKW	1  D.UCB:'L' .BLKW	1$ D.NAM:'L' .BLKW	1K D.UNIT:'L' .BLKB 1 	.BLKB	1 D.UCBL:'L' .BLKW 1 D.DSP:'L' .BLKW	1S D.MSK:'L' .BLKW	1R 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 D.PCB:'L' .BLKW	1N 	.PSECT4 D.VINI='B'0	 D.VCAN='B'2S D.VOUT='B'4S D.VPWF='B'60 	.IF NB	SYSDEF 	.IF DF	M$$NET D.VINT='B'14 	.IFF0 D.VINT='B'10 	.      ENDC 	.ENDC 	.MACRO	DCBDF$,X,Y,Z 	.ENDM 	.ENDM     M  	      	.MACRO	DEVDF$,L,B 	.MCALL	DCBDF$ 	DCBDF$	<L>,<B>. 	.MCALL	UCBDF$ 	UCBDF$	<L>,<B>  	.MCALL	SCBDF$ 	SCBDF$	<L>,<B>K 	.MCALL	KRBDF$ 	KRBDF$	<L>,<B>1 	.MCALL	CTBDF$ 	CTBDF$	<L>,<B>B 	.MCALL	LCBDF$ 	LCBDF$	<L>,<B>W 	.MACRO	DEVDF$,X,Y 	.ENDM 	.ENDM     àM  	      	.MACRO	EMBDF$,L,B EC.INI='B'40 EC.DVC='B'1' EC.DTO='B'140' EC.NSI='B'141S EC.LOA='B'40 EC.UNL='B'10 EC.MPE='B'2$ EC.PWR='B'42 EC.SSM='B'47 	.ASECT' .=0.       E.SIZE:'L' .BLKW 1 E.CODE:'L' .BLKB 1	 	 .BLKB 1  E.TIME:'L' .BLKB 6 E.SEQ:'L'.BLKW 1 E.ABM:'L'.BLKW 1	 .=E.ABM+2B E.VCTR:'L' .BLKB 1 E.LOST:'L' .BLKB 1 E.OPS:'L'.BLKW 1 E.OPC:'L'  .BLKW 1	 .=E.ABM+2K E.RTRY:'L' .BLKB 2	 	 .BLKB 1  E.IOC:'L'.BLKB 1 E.TASK:'L' .BLKW 2 E.PAR:'L'.BLKW 1 E.UIC:'L'.BLKW 1 E.UCB:'L'.BLKW 1 E.FCN:'L'.BLKB 2 E.PRM:'L'.BLKW 1	 	 .BLKW 6  E.RCNT:'L' .BLKB 1	 	 .BLKB 1C E.REGS='B'.  E.LGTH='B'.  .=E.TIME+<9.*2>M E.WHY:'L'.BLKW	1 .=.+2C E.NAME:'L'.BLKW	1' 	.PS      ECT. 	.MACRO	EMBDF$	X,Y 	.ENDM 	.ENDM     M  	      	.MACRO	F11DF$ 	.ASECT. .=01 V.TRCT:	.BLKW	11 V.IFWI:	.BLKW	1C 	.IF	DF,R$$11D V.STD:	.BLKW	1 	.ENDC V.FCB:	.BLKW	2 V.IBLB:	.BLKB	1  V.IBSZ:	.BLKB	1Y 	.BLKW	1 V.FMAX:	.BLKW	1. V.WISZ:	.BLKB	1. V.SBCL:	.BLKB	1  V.SBSZ:	.BLKW	1  V.SBLB:	.BLKB	1  V.FIEX:	.BLKB	1  	.BLKW	1 	.IF	DF,R$$11M V.VOWN:	.BLKW	1  V.VPRO:	.BLKW	1L V.VCHA:	.BLKW	1  	.IFTF V.FPRO:	.BLKW	1  	.IFTI V.VFSQ:	.BLKW	1: 	.IFFW 	.BLKW	1 	.ENDC V.FRBK:	.BLKB	1S       V.LRUC:	.BLKB	1D 	.BLKW	1 	.IF	DF,R$$11D ! R$$MPL  V.LABL:	.BLKB	12.$ 	.ENDC V.STAT:	.BLKB	1	
 	VC.IFW=	1
 	VC.BMW=	2 V.FFNU:	.BLKB	1D V.LGTH:. W 	.ASECTC .=0C F.LINK:	.BLKW	1B 	.IF	DF,R$$11D F.FEXT:	.BLKW	1L F.STD:	.BLKW	1 	.ENDC F.FNUM:	.BLKW	1  F.FSEQ:	.BLKW	1  	.BLKB	1 F.FSQN:	.BLKB	1B F.FOWN:	.BLKW	1B F.FPRO:	.BLKW	1  F.UCHA:	.BLKB	1. F.SCHA:	.BLKB	1. F.HDLB:	.BLKW	2. F.LBN:	.BLKW	2 F.SIZE:	.BLKW	2B F.NACS:	.BLKB	1. F.NLCK:	.BLKB	1. 	S.STBK=.-F.LBN. F.STAT:R F.NWAC:	.B      LKB	1R 	.BLKB	1 	FC.WAC=100000 	FC.DIR=40000R 	FC.CEF=20000	 	FC.FCO=10000N F.DREF:	.BLKW	1	 F.DRNM:	.BLKW	1V 	.IF	DF,R$$11M F.FEXT:	.BLKW	1H 	.ENDC F.FVBN:	.BLKW	2. F.LKL:	.BLKW	1 F.LGTH:$ 	.ASECTE .=0B W.CTL:	.BLKW	1 	WI.RDV=400C 	WI.WRV=1000 	WI.EXT=2000 	WI.LCK=4000 	WI.DLK=10000B 	WI.EXL=40000	 	WI.BPS=100000 	.IF	DF,R$$11M W.VBN:	.BLKB	1 W.WISZ:	.BLKB	1. 	.BLKW	1 W.FCB:	.BLKW	1 	.ENDC 	.IF	DF,R$$11D W.FCB:	.BLKW	1 W.STD:	.BLKW	1 W.VBN:	.BLKB	1 W.WISZ:	.BLKB	1. 	.BLKW      	1 	.ENDC W.LKL:	.BLKW	1 W.RTRV:F 	.ASECT0 .=0F L.LNK:	.BLKW	1 L.WI1:	.BLKW	1 	.IF	DF,R$$11D L.STD:	.BLKW	1 L.VB1:	.BLKW	2 L.VB2:	.BLKW	2 L.CNT:	.BLKB	1 	.BLKB	1 	.IFFK L.VB1:	.BLKB	1 L.CNT:	.BLKB	1 	.BLKW	1 	.ENDC L.LGTH:D 	.PSECTW 	.MACRO	F11DF$ 	.ENDM	F11DF$C 	.ENDM	F11DF$=     fM  	      	.MACRO	HDRDF$,L,B 	.ASECT, .=0M H.CSP:'L'.BLKW	1 H.HDLN:'L'.BLKW	1. H.EFLM:'L'.BLKW	2W H.CUIC:'L'.BLKW	1, H.DUIC:'L'.BLKW	1W H.IPS:'L'.BLKW	1 H.IPC:'L'.BLKW	1 H.ISP:'L'.BLKW	1 H.OD      VA:'L'.BLKW	1. H.ODVL:'L'.BLKW	1V H.TKVA:'L'.BLKW	1  H.TKVL:'L'.BLKW	1I H.PFVA:'L'.BLKW	1, H.FPVA:'L'.BLKW	1W H.RCVA:'L'.BLKW	1  H.EFSV:'L'.BLKW	1N H.FPSA:'L'.BLKW	11 H.WND:'L'.BLKW	1 H.DSW:'L'.BLKW	1 H.FCS:'L'.BLKW	1 H.FORT:'L'.BLKW	1S H.OVLY:'L'.BLKW	1$ H.VEXT:'L'.BLKW	1. H.SPRI:'L'.BLKB	1  H.NML:'L'.BLKB	1 H.RRVA:'L'.BLKW	1C 	.BLKW	3 H.GARD:'L'.BLKW	1. H.NLUN:'L'.BLKW	1. H.LUN:'L'.BLKW	2 .=0C W.BPCB:'L'.BLKW	1C W.BLVR:'L'.BLKW	1: W.BHVR:'L'.BLKW	1L W.BATT:'L'.BLKW	1. W.BSIZ:'L'      .BLKW	1B W.BOFF:'L'.BLKW	1B W.BFPD:'L'.BLKB	1B W.BNPD:'L'.BLKB	1B W.BLPD:'L'.BLKW	1B
 W.BLGH:'L' 	.PSECTK 	.MACRO	HDRDF$	X,Y 	.ENDM 	.ENDM     ôM  	      	.MACRO HWDDF$,L,B MPCSR='B'177746L MPAR='B'172100 PIRQ='B'177772 PR0='B'0	 PR1='B'40Y
 PR4='B'200
 PR5='B'240
 PR6='B'300
 PR7='B'340 PS='B'177776 SWR='B'177570A TPS='B'177564. 	.IF DF	E$$EAE AC='B'177302 MQ='B'177304 SC='B'177310 	.ENDC 	.IF DF	M$$MGE KDSAR0='B'172360 KDSDR0='B'172320 KISAR0='B'172340 KISAR5='B'172352 KISAR6      ='B'172354 KISAR7='B'172356 KISDR0='B'172300 KISDR6='B'172314 KISDR7='B'172316 SISDR0='B'172200 UDSAR0='B'177660 UDSDR0='B'177620 UISAR0='B'177640 UISAR4='B'177650 UISAR5='B'177652 UISAR6='B'177654 UISAR7='B'177656 UISDR0='B'177600 UISDR4='B'177610 UISDR5='B'177612 UISDR6='B'177614 UISDR7='B'177616 UBMPR='B'170200A CMODE='B'140000  PMODE='B'30000 SR0='B'177572Q SR3='B'172516' 	.ENDC FE.EXT='B'1F FE.MUP='B'2D FE.EXV='B'40 FE.DRV='B'10 FE.PLA='B'20 FE.CAL='B'40 FE.PKT='B'100I FE      .EXP='B'200  FE.LSI='B'4006 FE.OFF='B'1000 FE.CEX='B'200003 FE.MXT='B'400003 FE.NLG='B'100000 	.MACRO	HWDDF$	X,Y 	.ENDM 	.ENDM     „M  	      	.MACRO	KRBDF$,L,B,SYSDEF5 	.ASECT2 .=177772 K.PRI:'L' .BLKB	1' K.VCT:'L' .BLKB	17 K.CON:'L' .BLKB	16 K.IOC:'L' .BLKB	12 K.STS:'L' .BLKW	1  K.CSR:'L' .BLKW	1B K.OFF:'L' .BLKW	1D K.HPU:'L' .BLKB	1= 	.BLKB	1 K.OWN:'L' .BLKW	1= K.CRQ:'L' .BLKW	2  K.URM:'L' .BLKW	1P 	.PSECTE KS.OFL='B'1E KS.MOF='B'2E KS.UOP='B'4E KS.MBC='B'10 KS.SDX='B'20       KS.POE='B'40 KS.UCB='B'1006 KS.DIP='B'2000 	.ASECT' .=177762 S.PRI:'L' .BLKB	1E S.VCT:'L' .BLKB	1A S.CON:'L' .BLKB	1N 	.BLKB	1 	.BLKW	1 S.CSR:'L' .BLKW	1R 	.BLKW	1 	.BLKB	1 	.BLKB	1 S.OWN:'L' .BLKW	1B 	.PSECT. : 	.MACRO	KRBDF$,X,Y,Z 	.ENDM 	.ENDM     M  	      	.MACRO	LBLDF$	L,B 	.ASECTB .=0B R$LNAM:'L'.BLKW	2D R$LSA:'L' .BLKW	1= R$LHGV:'L'.BLKW	1L R$LMXV:'L'.BLKW	1L R$LLDZ:'L'.BLKW	1L R$LMXZ:'L'.BLKW	1E R$LOFF:'L'.BLKW	1M R$LWND:'L'.BLKW	1' R$LSEG:'L'.BLKW	1S R$LFLG:'L'      .BLKW	1' R$LDAT:'L'.BLKW	36 R$LSIZ:'L'.BLKW	0. LD$ACC='B'100000 LD$RSV='B'040000 LD$REL='B'000004 .=0. L$BTSK:'L'.BLKW	2. L$BPAR:'L'.BLKW	2. L$BSA:'L' .BLKW	1. L$BHGV:'L'.BLKW	1. L$BMXV:'L'.BLKW	1B L$BLDZ:'L'.BLKW	1: L$BMXZ:'L'.BLKW	1Y L$BOFF:'L'.BLKW	1  L$BWND:'L'.BLKW	1. L$BSEG:'L'.BLKW	1. L$BFLG:'L'.BLKW	1M L$BDAT:'L'.BLKW	3:! L$BLIB:'L'.BLKW	<7.*<R$LSIZ/2>>+1$ L$BPRI:'L'.BLKW	1$ L$BXFR:'L'.BLKW	1$ L$BEXT:'L'.BLKW	1$ L$BSGL:'L'.BLKW	1$ L$BHRB:'L'.BLKW	1$ L$BBLK:'L'.BLKW	1$ L$BLUN      :'L'.BLKW	1$ 	.BLKW	<512.-.>/2$ L$BASG:'L'.BLKW	0D TS$PIC='B'100000 TS$NHD='B'040000 TS$ACP='B'020000 TS$PMD='B'010000 TS$SLV='B'004000 TS$NSD='B'002000 TS$NET='B'001000 TS$PRV='B'000400 TS$CMP='B'000200 TS$CHK='B'000100 TS$RES='B'000040 	.PSECT' 	.MACRO	LBLDF$	X,Y 	.ENDM 	.ENDM     ð M  	      	.MACRO	LCBDF$,L,B 	.ASECTK .=0  L.LNK:'L' .BLKW 1* L.NAM:'L' .BLKW 1P L.UNIT:'L' .BLKB 1 L.TYPE:'L' .BLKB 1 L.UCB:'L' .BLKW	1S L.ASG:'L' .BLKW 1H L.LGTH='B'.-L.LNKB 	.PSECTK 	.MACRO	LC      BDF$,X,Y 	.ENDM 	.ENDM     öM  	      	.MACRO	MTADF$,L,B 	.ASECT  .=0D V.TCNT:'L' .BLKW 1 V.NXT:'L' .BLKW 1' V.MVL:'L' .BLKW 10 V.UVL:'L' .BLKW 10 V.ATL:'L' .BLKW 10 V.UCB:'L' .BLKW 1  V.RVOL:'L' .BLKB 1 V.MOU:'L' .BLKB 1R V.TCHR:'L' .BLKW 1 V.SEQN:'L' .BLKW 1 V.SECN:'L' .BLKW 1 V.TPOS:'L' .BLKB 1 V.PSTA:'L' .BLKB 1 V.TIMO:'L' .BLKW 1 V.STS:'L' .BLKW 3: V.SPAR:'L' .BLKW 1 V.BLKL:'B' .BLKW 1 V.RECL:'B' .BLKW 1 V.FNAM:'L' .BLKW 3 V.FTYP:'L' .BLKW 1 V.FVER:'L' .BLKW 1 V.CDAT:'L' .      BLKW 2 V.EDAT:'L' .BLKW 2 V.BLKC:'L' .BLKW 2 V.RTYP:'L' .BLKB 1 V.FATT:'L' .BLKB 1 V.WIND:'L' .BLKW 6 S.VSCB=. 	.PSECT: 	.ASECT  .=0. 	W.CTL:	.BLKW 1  	V.WINC=V.WIND+W.CTL 	.PSECTB 	.ASECT. .=0' 	.IF	DF	R$$11M M.NXT:'L' .BLKW 1C 	.ENDC M.UIC:'L' .BLKW 1. M.CH:'L' .BLKW 1 M.PROT:'L' .BLKW 1 	.IF	NDF	R$$11M'	 		.BLKW 2  M.NXT:'L' .BLKW 1  	.ENDC M.RVOL:'L' .BLKB 1 M.STAT:'L' .BLKB 1 M.VIDP:'L' .BLKW 1 M.UCB:'L' .BLKW 1' S.MVL=.3 	.PSECT' 	.ASECT1 .=0V L.NXT:'L' .BLKW 1D L.VOL1      :'L' .BLKB 1 L.VOL2:'L' .BLKB 1 L.VID1:'L' .BLKB 6 L.VID2:'L' .BLKB 6 S.UVL=.L 	.PSECTI VM.OLD	='B'	200. VM.BYP	='B'	100  VM.ULB	='B'	40 VM.FSC	='B'	20 VM.EXC	='B'	10 VP.RM	='B'	2 VP.WM	='B'	4 VP.SM	='B'	10$ VP.MOU	='B'	20 VP.RWD	='B'	40 VP.VFY	='B'	VP.RWD VP.POS	='B'	1001 	VP.TO=1 WI.RDV	='B'	400N WI.WRV	='B'	1000 WI.EXT	='B'	2000 WI.LCK	='B'	4000 MS.VER	='B'	200  MS.RID	='B'	1B MS.NMO	='B'	2. MS.TMO	='B'	4L MS.EXP	='B'	10 MO.OVR	='B'	1  MO.UIC	='B'	2  MO.PRO	='B'	4  MO.160	=      'B'	10 	.ENDM     @M  	      	.MACRO	PCBDF$	L,B,SYSDEF2 	.ASECTB .=0. P.LNK:'L'.BLKW	1 P.PRI:'L'.BLKB	1 P.IOC:'L'.BLKB	1 P.NAM:'L'.BLKW	2 P.SUB:'L'.BLKW	1 P.MAIN:'L'.BLKW	1' 	.IF NB	SYSDEF 	.IF NDF	M$$MGE$	 P.HDR:'L'B 	.ENDC 	.IFTF P.REL:'L'.BLKW	1
 P.BLKS:'L' P.SIZE:'L'.BLKW	1O P.WAIT:'L'.BLKW	1N P.SWSZ:'L'.BLKW	1  P.BUSY:'L'.BLKB	2I	 P.OWN:'L'0 P.TCB:'L'.BLKW	1 P.STAT:'L'.BLKW	1  	.IFT= 	.IF DF	M$$MGE P.HDR:'L' .BLKW 1	 	.ENDC P.PRO:'L' .BLKW 1= P.ATT:'L' .BLKW 2	 	.IF NDF	P      $$LAS0 P.LGTH='B'P.PRO  	.IFF  P.LGTH='B'.D 	.ENDC 	.IFF  	.PSECT  PS.OUT='B'100000 PS.CKP='B'40000L PS.CKR='B'20000L PS.CHK='B'10000L PS.FXD='B'4000 PS.PER='B'2000 PS.LIO='B'1000 PS.NSF='B'400F PS.COM='B'200. PS.PIC='B'100C PS.SYS='B'40 PS.DRV='B'20 PS.DEL='B'10 PS.APR='B'7	 	.ASECTT .=0B A.PCBL:'L'.BLKW	1B A.PRI:'L'.BLKB	1 A.IOC:'L'.BLKB	1 A.TCB:'L'.BLKW	1 A.TCBL:'L'.BLKW	1	 A.STAT:'L'.BLKB	1	 A.MPCT:'L'.BLKB	1B A.PCB:'L'.BLKW	1 A.LGTH='B'.  	.PSECT: AS.DEL='B'10 AS.EXT='      B'4A AS.WRT='B'2' AS.RED='B'1  	.ENDC 	.MACRO	PCBDF$	X,Y,Z 	.ENDM 	.ENDM     öM  	      	.MACRO	PKTDF$,L,B,SYSDEF0 	.ASECTK .=177774 A.KSR5:'L' .BLKW 1 A.DQSR:'L' .BLKW 1 	.BLKW	1 A.CBL:'L' .BLKW	1C A.BYT:'L' .BLKW	1' A.AST:'L' .BLKW	10 A.NPR:'L' .BLKW	1D A.PRM:'L' .BLKW	1' .=0. O.LNK:'L'.BLKW	1 O.MCRL:'L'.BLKW	1R O.PTCB:'L'.BLKW	1: O.AST:'L'.BLKW	1 O.EFN:'L'.BLKW	1 O.ESB:'L'.BLKW	1 O.STAT:'L'.BLKW	8. O.LGTH='B'.B 	.ASECTL .=0W I.LNK:'L' .BLKW	1. I.PRI:'L' .BLKB	10 I.EFN:'L      ' .BLKB	1W I.TCB:'L' .BLKW	1' I.LN2:'L' .BLKW	1	 I.UCB:'L' .BLKW	1M I.FCN:'L' .BLKW	1  I.IOSB:'L' .BLKW	1 	.BLKW	1 	.BLKW	1 I.AST:'L' .BLKW	1S I.PRM:'L' .BLKW	1Q 	.BLKW	6 	.BLKW	1 I.ATTL='B'.L 	.IF DF	R$$DSP 	.BLKW	2 	.ENDC 	.IF NB	SYSDEF I.LGTH='B'.B 	.ENDC 	.PSECT  	.MACRO	PKTDF$	X,Y,Z 	.ENDM 	.ENDM    JM  	      	.MACRO	SCBDF$,L,B,SYSDEF. 	.IF NB	SYSDEF 	.ASECT  .=0: S.LHD:'L' .BLKW	2' 	.IF DF	M$$PRO S.URM:'L' .BLKW	1  	.ENDC S.FRK:'L' .BLKW	1. 	.BLKW	1 	.BLKW	1 	.BL      KW	1 	.IF DF	L$$DRV S.KS5:'L' .BLKW	1L 	.ENDC S.PKT:'L' .BLKW	1	 S.CTM:'L' .BLKB	1	 S.ITM:'L' .BLKB	1W S.STS:'L' .BLKB	1W 	.BLKB	1 S.ST2:'L' .BLKW	1: S.KRB:'L' .BLKW	1W S.RCNT:'L'.BLKB	1L S.ROFF:'L'.BLKB	1D S.BMSV:'L'.BLKW	1C S.BMSK:'L'.BLKW	1. S.KTB:'L' .BLKW	1  	.PSECT  	.IFF	 S2.EIP='B'1  S2.ENB='B'2M S2.LOG='B'4  S2.MAD='B'10 S2.DAD='B'20 S2.LDS='B'40 S2.SOP='B'100  S2.CON='B'200L S2.SIP='B'400F 	.ASECTO .=0R M.LNK:'L'  .BLKW 1 M.UMRA:'L' .BLKW 1 M.UMRN:'L' .BLKW 1 M.UMVL      :'L' .BLKW 1 M.UMVH:'L' .BLKB 1 M.BFVH:'L' .BLKB 1 M.BFVL:'L' .BLKW 1 M.LGTH='B'.	 	.ENDC 	.PSECTK 	.MACRO	SCBDF$,X,Y,Z 	.ENDM 	.ENDM    ^M  	      	.MACRO	TCBDF$,L,B,SYSDEF' 	.ASECTL .=0O T.LNK:'L' .BLKW	1M T.PRI:'L' .BLKB	1M T.IOC:'L' .BLKB	1T T.CPCB:'L' .BLKW 1 T.NAM:'L' .BLKW	2P T.RCVL:'L' .BLKW 2 T.ASTL:'L' .BLKW 2 T.EFLG:'L' .BLKW 2 T.UCB:'L' .BLKW	12 T.TCBL:'L' .BLKW 1 T.STAT:'L' .BLKW 1 T.ST2:'L' .BLKW 1R T.ST3:'L' .BLKW 11 T.DPRI:'L' .BLKB 1 T.LBN:'L' .BLKB	31 T.LDV:      'L' .BLKW	11 T.PCB:'L' .BLKW	11 T.MXSZ:'L' .BLKW 1 T.ACTL:'L' .BLKW 1 $$$=.H T.ATT:'L' .BLKW 2S T.OFF:'L' .BLKW 1$ 	.BLKB 1 T.SRCT:'L' .BLKB 1 T.RRFL:'L' .BLKW 2 	.IF NDF	P$$LAS' .=$$$C 	.ENDC 	.IF NB	SYSDEF $$$=.. T.OCBH:'L' .BLKW 2 T.RDCT:'L' .BLKW 1 	.BLKW	1 	.IF NDF	P$$OFF  .=$$$P 	.ENDC T.LGTH='B'. 
 T.EXT='B'0 	.IFF  TS.EXE='B'100000 TS.RDN='B'40000	 TS.MSG='B'20000L TS.NRP='B'10000. TS.RUN='B'4000 TS.OUT='B'400T TS.CKP='B'200  TS.CKR='B'100B TS.BLK='B'177777 T2.AST='B'      100000 T2.DST='B'40000  T2.CHK='B'20000' T2.CKD='B'10000L T2.SEF='B'4000 T2.FXD='B'2000 T2.TIO='B'1000 T2.CAF='B'400. T2.HLT='B'200' T2.ABO='B'100R T2.STP='B'40 T2.STP='B'20 T2.SPN='B'10 T2.SPN='B'4N T2.WFR='B'2= T2.WFR='B'1' T3.ACP='B'100000 T3.PMD='B'40000W T3.REM='B'20000F T3.PRV='B'10000C T3.MCR='B'4000 T3.SLV='B'2000 T3.CLI='B'1000 T3.RST='B'400' T3.NSD='B'200' T3.CAL='B'100P T3.ROV='B'40 T3.NET='B'20 	.ENDC 	.PSECTS 	.MACRO	TCBDF$	X,Y,Z 	.ENDM 	.ENDM     RM  	            	.MACRO	UCBDF$,L,B 	.ASECT2 .=177772 U.CLI:'L' .BLKW	10 U.LUIC:'L' .BLKW 1 U.OWN:'L' .BLKW 1T U.DCB:'L' .BLKW	1' U.RED:'L' .BLKW	10 U.CTL:'L' .BLKB	1  U.STS:'L' .BLKB	1P U.UNIT:'L' .BLKB 1 U.ST2:'L' .BLKB	1W U.CW1:'L' .BLKW	1' U.CW2:'L' .BLKW	10 U.CW3:'L' .BLKW	1  U.CW4:'L' .BLKW	13 U.SCB:'L' .BLKW	1M U.ATT:'L' .BLKW	1' U.BUF:'L' .BLKW	10 	.BLKW	1 U.CNT:'L' .BLKW	1' U.ACP='B'U.CNT+2 U.VCB='B'U.CNT+4 U.CBF='B'U.CNT+2 U.PRM='B'U.CNT+6 U.UIC='B'U.CNT+<9.*2>M U.KRB1='B'U.CNT+12 .=U.UN      IT U.OCNT:'L'.BLKB	1. .=U.CNT= U.PKT:'L'.BLKW	1 U.PTCB:'L'.BLKW	1' U.IAST:'L'.BLKW	1  U.OAST:'L'.BLKW	1  U.AAST:'L'.BLKW	1  	.PSECT  DV.REC='B'1K DV.CCL='B'2L DV.TTY='B'4. DV.DIR='B'10 DV.SDI='B'20 DV.SQD='B'40 DV.MXD='B'100  DV.UMD='B'200	 DV.SWL='B'1000 DV.ISP='B'2000 DV.OSP='B'4000 DV.PSE='B'10000. DV.COM='B'20000  DV.F11='B'400000 DV.MNT='B'100000 U2.DH1='B'100000 U2.DJ1='B'40000C U2.RMT='B'20000B U2.L8S='B'10000R U2.NEC='B'4000 U2.CRT='B'2000 U2.ESC='B'1000 U2.LOG='B'400N       U2.SLV='B'200B U2.DZ1='B'100= U2.HLD='B'40 U2.AT.='B'20 U2.PRV='B'10 U2.L3S='B'4	 U2.VT5='B'2' U2.LWC='B'1A U2.R04='B'100000 U2.7CH='B'10000' U3.DBF='B'2' UC.ALG='B'200. UC.NPR='B'100  UC.QUE='B'40 UC.PWF='B'20 UC.ATT='B'10 UC.KIL='B'40 UC.LGH='B'3' US.BSY='B'200' US.MNT='B'100' US.FOR='B'40 US.MDM='B'20 US.ABO='B'1  US.MDE='B'20 US.WCK='B'10 US.SPU='B'21 US.DSB='B'10 US.CRW='B'4C US.ECH='B'20 US.OUT='B'1' US.FRK='B'2N US.SHR='B'12 US.LAB='B'4  US.OFL='B'10 US.RED='B'20       US.PUB='B'4' US.UMD='B'10 	.MACRO	UCBDF$,X,Y 	.ENDM 	.ENDM     M  	      	.MACRO	ITBDF$	L,B,SYSDEFL 	.IF DF	A$$TRP 	.MCALL	PKTDF$ 	PKTDF$0 	.ENDC 	.ASECT  	.=0 X.LNK:'L' .BLKW	1' X.JSR:'L' JSR	R5,@#0 X.PSW:'L' .BLKB	1' 	.BLKB	1 X.ISR:'L' .BLKW	1'
 X.FORK:'L' 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.BLKW	1 	.IF DF	M$$MGE X.REL:'L' .BLKW	1' 	.ENDC X.DSI:'L' .BLKW	1' X.TCB:'L' .BLKW	1S 	.IF NB	SYSDEF 	.IF DF	A$$TRP 	.BLKW	1 X.AST:'L' .BLKB	A.PRM2 	.ENDC X.VEC:'L' .BLKW	10 X.VPC:'L' .BLK      W	1P	 X.LEN:'L'S 	.ENDC 	.PSECTR .MACRO	ITBDF$	X,Y,Z  .ENDM	ITBDF$ .ENDM	ITBDF$     JM  	      	.MACRO	CTBDF$,L,B,SYSDEFC 	.ASECT$ .=177756 L.CLK:'L' .BLKW	8. L.ICB:'L' .BLKW	1K L.LNK:'L' .BLKW	1	 L.NAM:'L' .BLKW	1B L.DCB:'L' .BLKW	1. L.NUM:'L' .BLKB	1. L.STS:'L' .BLKB	1  L.KRB:'L' .BLKW	1  	.PSECT  LS.CLK='B'1E LS.MDC='B'2B LS.CBL='B'4C LS.CIN='B'10 	.MACRO	CTBDF$,X,Y,Z 	.ENDM 	.ENDM    hN        	.MACRO	TCBDF$,L,B,SYSDEFK 	.ASECT  .=0C T.LNK:'L' .BLKW	10 T.PRI:'L' .BLK      B	1P T.IOC:'L' .BLKB	1C T.CPCB:'L' .BLKW 1 T.NAM:'L' .BLKW	2	 T.RCVL:'L' .BLKW 2 T.ASTL:'L' .BLKW 2 T.EFLG:'L' .BLKW 2 T.UCB:'L' .BLKW	1= T.TCBL:'L' .BLKW 1 T.STAT:'L' .BLKW 1 T.ST2:'L' .BLKW 1B T.ST3:'L' .BLKW 1B T.DPRI:'L' .BLKB 1 T.LBN:'L' .BLKB	3B T.LDV:'L' .BLKW	1B T.PCB:'L' .BLKW	1B T.MXSZ:'L' .BLKW 1 T.ACTL:'L' .BLKW 1 $$$=.S T.ATT:'L' .BLKW 2' T.OFF:'L' .BLKW 1$ 	.BLKB 1 T.SRCT:'L' .BLKB 1 T.RRFL:'L' .BLKW 2 	.IF NDF	P$$LASK .=$$$C 	.ENDC 	.IF NB	SYSDEF $$$=.. T.OCBH:'L'       .BLKW 2 T.RDCT:'L' .BLKW 1 T.SAST:'L' .BLKW 1 	.IF NDF	P$$OFF  .=$$$' 	.ENDC T.LGTH='B'.'
 T.EXT='B'0 	.IFF' TS.EXE='B'100000 TS.RDN='B'40000L TS.MSG='B'20000T TS.NRP='B'10000. TS.RUN='B'4000 TS.OUT='B'400K TS.CKP='B'200' TS.CKR='B'100: TS.BLK='B'177777 T2.AST='B'100000 T2.DST='B'40000  T2.CHK='B'200001 T2.CKD='B'10000W T2.SEF='B'4000 T2.FXD='B'2000 T2.TIO='B'1000 T2.CAF='B'400. T2.HLT='B'2001 T2.ABO='B'100L T2.STP='B'40 T2.STP='B'20 T2.SPN='B'10 T2.SPN='B'4  T2.WFR='B'2H T2      .WFR='B'1  T3.ACP='B'100000 T3.PMD='B'40000W T3.REM='B'20000F T3.PRV='B'10000C T3.MCR='B'4000 T3.SLV='B'2000 T3.CLI='B'1000 T3.RST='B'400' T3.NSD='B'200' T3.CAL='B'100P T3.ROV='B'40 T3.NET='B'20 	.ENDC 	.PSECTS 	.MACRO	TCBDF$	X,Y,Z 	.ENDM 	.ENDM     hN        	.MACRO	TCBDF$,L,B,SYSDEF  	.ASECT' .=01 T.LNK:'L' .BLKW	1  T.PRI:'L' .BLKB	1F T.IOC:'L' .BLKB	1' T.CPCB:'L' .BLKW 1 T.NAM:'L' .BLKW	2  T.RCVL:'L' .BLKW 2 T.ASTL:'L' .BLKW 2 T.EFLG:'L' .BLKW 2 T.UCB:'L' .BLKW	1' T.TCBL      :'L' .BLKW 1 T.STAT:'L' .BLKW 1 T.ST2:'L' .BLKW 1R T.ST3:'L' .BLKW 1V T.DPRI:'L' .BLKB 1 T.LBN:'L' .BLKB	30 T.LDV:'L' .BLKW	1  T.PCB:'L' .BLKW	1N T.MXSZ:'L' .BLKW 1 T.ACTL:'L' .BLKW 1 $$$=.T T.ATT:'L' .BLKW 2S T.OFF:'L' .BLKW 1$ 	.BLKB 1 T.SRCT:'L' .BLKB 1 T.RRFL:'L' .BLKW 2 	.IF NDF	P$$LAS  .=$$$C 	.ENDC 	.IF NB	SYSDEF $$$=.. T.OCBH:'L' .BLKW 2 T.RDCT:'L' .BLKW 1 T.SAST:'L' .BLKW 1 	.IF NDF	P$$OFF  .=$$$' 	.ENDC T.LGTH='B'.'
 T.EXT='B'0 	.IFF' TS.EXE='B'100000 TS.RDN='B'40000L       TS.MSG='B'20000T TS.NRP='B'10000. TS.RUN='B'4000 TS.OUT='B'400K TS.CKP='B'200' TS.CKR='B'100: TS.BLK='B'177777 T2.AST='B'100000 T2.DST='B'40000  T2.CHK='B'200001 T2.CKD='B'10000W T2.SEF='B'4000 T2.FXD='B'2000 T2.TIO='B'1000 T2.CAF='B'400. T2.HLT='B'2001 T2.ABO='B'100L T2.STP='B'40 T2.STP='B'20 T2.SPN='B'10 T2.SPN='B'4  T2.WFR='B'2H T2.WFR='B'1  T3.ACP='B'100000 T3.PMD='B'40000W T3.REM='B'20000F T3.PRV='B'10000C T3.MCR='B'4000 T3.SLV='B'2000 T3.CLI='B'1000 T3.RST='B'400' T3.N      SD='B'200' T3.CAL='B'100P T3.ROV='B'40 T3.NET='B'20 	.ENDC 	.PSECTS 	.MACRO	TCBDF$	X,Y,Z 	.ENDM 	.ENDM     jN        	.MACRO	SCBDF$,L,B,SYSDEF  	.IF NB	SYSDEF 	.ASECT' .=00 S.LHD:'L' .BLKW	2  	.IF DF	M$$PRO S.URM:'L' .BLKW	1C 	.ENDC S.FRK:'L' .BLKW	1  	.BLKW	1 	.BLKW	1 	.BLKW	1 	.IF DF	L$$DRV S.KS5:'L' .BLKW	1' 	.ENDC S.PKT:'L' .BLKW	1' S.CTM:'L' .BLKB	10 S.ITM:'L' .BLKB	1W S.STS:'L' .BLKB	1  	.BLKB	1 S.ST2:'L' .BLKW	10 S.KRB:'L' .BLKW	1  S.RCNT:'L'.BLKB	1R S.ROFF:'L'.BLK      B	1' S.BMSV:'L'.BLKW	10 S.BMSK:'L'.BLKW	13 S.KTB:'L' .BLKW	1  	.PSECT  	.IFF	 S2.EIP='B'1  S2.ENB='B'2M S2.LOG='B'4  S2.MAD='B'10 S2.DAD='B'20 S2.LDS='B'40 S2.SOP='B'100' S2.DRL='B'100L S2.CON='B'200F S2.SIP='B'400R S2.ATN='B'1000 	.ASECT. .=0L M.LNK:'L'  .BLKW 1 M.UMRA:'L' .BLKW 1 M.UMRN:'L' .BLKW 1 M.UMVL:'L' .BLKW 1 M.UMVH:'L' .BLKB 1 M.BFVH:'L' .BLKB 1 M.BFVL:'L' .BLKW 1 M.LGTH='B'.L 	.ENDC 	.PSECTB 	.MACRO	SCBDF$,X,Y,Z 	.ENDM 	.ENDMW	1  S.RCNT:'L'.BLKB	1R S.ROFF:'L'.BLK          	 2ÌÁ› 8$     ‚  ARCHIVE DEMO34.OBJ MM0:DEMO34.OBJARCHIVE QUESUM.OBJ MM0:QUESUM.OBJARCHIVE	MEMSUM.OBJ MM0:MEMSUM.OBJARCHIVE APPSUM.OBJ MM0:APPSUM.OBJARCHIVE DSKSUM.OBJ MM0:DSKSUM.OBJARCHIVE MEMINI.OBJ MM0:MEMINI.OBJARCHIVE HELP.OBJ MM0:HELP.OBJARCHIVE TRAN34.OBJ MM0:TRAN34.OBJARCHIVE MSG34.OBJ MM0:MSG34.OBJARCHIVE INCLDE.OBJ MM0:INCLDE.OBJARCHIVE DEMOXX.CMD MM0:DEMOXX.CMDARCHIVE DEMO.ODL MM0:DEMO.ODL‚         ÕÀ]^Á› 8$         Ñ –    ¯”L  `  HY  !  HK 8"  HJ  ;"  H Ä%x@  <&%t@  ô' q@  Ô2 d@   X4  HH $9s;@  ´:a	@  ´:òs@  ´:ô@   ´:2“@  T;œw@  T;z@  Rø€@  RÀÁ@   R@Î@  ?T@@  ahïL@  dhl@  hh`;@   nhH@  nhH…@  z)T@  zÀÁ@  z@Î@   z€Ô@  ÑxZ@  €@  :©@  J©¼	@   a© }@  i©€‰@  s©À@  Ýª K@  é«@Q@   ù¯üX@  °úp@      (&	,2²hÎÎòh  Î2gh %–Th|U„¯h z""hLŒAh)h aÎhavLhØa\gh  äfL	hääfc±hB  \gÕZh44k€hq<h’KqÎhfp©Ó( þ¬¯yì            (Œ                
 4               H J Y  (*** ´:ô4  & TRAX DEMO***   8  8       
    INS [300,30]HRDCPY/RUN=REM ^ /TASK=HRDCPY    ÎZ&    #           „     ƒ    p©Ó     7l      l      Œ  Œ æ  ÿˆ7
ðÿ÷Ôÿäÿ÷Ìÿàÿ p©Ó   p©Ó   u|      |      ¢  ¢ æ ÿˆ p©Ó  p©Ó    TI        ¨  ¨ æ ÿˆ÷	ú p©Ó  p©Ó   kä     ä     ²  ² æ ÿˆ p©Ó  p©Ó          ¸  ¸ æ ÿˆ p©Ó  p©Ó   |³ƒ:  $  $ À           D (        D      ¾  ¾ æ ÿˆ p©Ó  p©Ó2  2 GÔ4YÊ   
    Ê     Ä  Ä æ2 ÿˆ×-    ù p©Ó2 s©ÀT;z p©Ó<  < )       Ò  Ò æ< ÿˆ p©Ó<  p©Ó@  @        Ø  Ø æ@ ÿˆ÷ @(ÿÃ ÷	ì p©Ó@   p©ÓD  D         ‚           ´:a	    ‚     ì  ì æD ÿˆ÷	¨ ÷Bÿ4÷% >ÿ	÷	  ÷	  ÷	  ÷	 p©ÓD z)T"z@Î&zÀÁ   '÷% $ÿ÷	   ÷% ÿ÷	  ÷% ÿ z€Ô?T@ € 8÷	  ÷% úþ÷  ÷	  ÷	  ÷% âþ ÑxZRø€RÀÁ R@Î ^÷	  ÷Ôþ÷       Òþ÷	ž÷Âþ7
¼þ÷	N÷ Ô2 d „¶þ÷
°þ÷¬þ¨þ  p©Ó\  \ )       ” ”æ\ ÿˆw Tÿ p©Ó\  p©Ó`  `            ž žæ` ÿˆÃ ÷	,÷	|÷	Ò÷	L÷	f÷	ª÷	F p©Ó`   Ä‡   p©Ój  j !       ä äæj ÿˆ p©Ój  p©Ón  n K    Æ 
    Æ     ê êæn ÿˆæsÿˆ7-  úÿ7- öÿ‡  p©Ón nhHnhH  p©Óv  v     4   ö( 0        ´:ô    4     ö      æv ÿˆw èÿ p©Óv     ‚<&%t     0 0  ô' qÄ%x
 n n/Ol|³GOl|³Œ  ‹O      l|³Ž…Ol|³  ŒŽ ¬ ¬ænÿˆ×-    ÷	Žætÿˆ†÷	‚æ†ÿˆ† ns©À$9s;t$† Ò÷	væ~ÿˆ†÷	j×-    ö÷	  ‡  
~s©ÀT;œwù¯üX    Y  V   , ,æðæ=ÿˆ÷Àÿ, ÀÁð÷	  Ð•  Â  ðð a© } R÷	  È• Ã ÷	v‡ Äÿ        Y  AUP  é«@Q  € € HRS  † †ÁÞÿw ØÿÁe< ÁíÎÿ÷ÌÿÈÿw`Âÿ÷å< ºÿ·
 ¬¼ÿ÷%< ¶ÿ·
²ÿ7
¬ÿÀvÁ¦ÿ
÷	  Ð•:  v$:© ÒÁ”ÿ÷%
 ŽÿÐ•0 
÷	  ŠÃn÷	æ‡ Y!  :©n ø( *TASK01* Ãô÷	Ì‡ Y! 2CPU:  %    ô À        ÀøÿÂöÿ÷	˜À
÷	  Ã÷	–‡  :©" J J      Y! =POOL=                ÁD
 &D p
	
Ä  	t" †	 !m ¡
Q$õÀZÄ 
J©¼	&Z –H7®ÿ
÷	  Ð•: 7žÿ
÷	  Ð•:  H:©$:© ¼7Žÿ
÷	  È• ÃP÷	‡              :©P â     Y! QCACHE=                        À  ÂÔÿ÷	° 7¼ÿÀ  ÷	¤ 7²ÿ÷d ®ÿ÷í dhlahïL .¦ÿ¨ÿ÷í¢ÿ¢ÿÀ  Àí¢ÿ÷  œÿÂ  Âíÿ·Šÿ÷ hh`;hh`;nhH… T  †ÿ÷	j 7€ÿÀóÁnÿ
÷	  Ð•: Ábÿ
÷	 nhH…ó:© z  Ð•: ÁVÿ
÷	  ÷      NÿÐ•  Ð•  Ð•  È•   :©:©  Á8ÿ
÷	  Ð•: Á.ÿ
÷	  È• Ãè÷	 ‡  :©:©"è ÆÁd ÷	  @÷	  ‡ ¦Â”÷	” ûÂ% ÷	 
Ýª Ki©€‰ ì
 õ÷	‚ ‚‡ ¿ú·
ú·

ú÷% ú‚÷	 ‡  ÷ @ôùæ  ÿˆ÷ú÷ú÷ šû÷Úù–û    p©ÓŽ  Ž GÔ4YÊ   
    Ê     6 6æŽ ÿˆ p©ÓŽ  p©Ó˜  ˜ )       < <æ˜ ÿˆ p©Ó˜  p©Óœ  œ        B Bæœ ÿˆ÷öù÷æù÷ pû p©Óœ  p©Ó     GÔ4YÊ   
    Ê     Z Zæ  ÿˆ p©Ó   p©Óª  ª )       ` `æª ÿˆ p©Ó      ª  p©Ó®  ®        f fæ® ÿˆ7
Òù7
šù‡ 
÷	|ÿ‡  p©Ó®  ‚ ‚Î¥ æ3ÿˆ÷ ¦ùÖæsÿˆY7   J: Y ¨6  K ILLEGAL COMMAND!  Î Î    p©Ó²  ²     4   œ
 +        ´:ô    4     œ     Ð Ðæ² ÿˆ÷  âÿ÷  Þÿ÷  Úÿ p©Ó²  p©ÓÊ  Ê    	 4   ¾          ´:òs    4     ¾     è èæÊ ÿˆ÷%SUÊÿ÷ Dù÷ :ùz÷%MS´ÿ÷ p©ÓÊ   .ù÷ $ùo÷%TSžÿ÷ ù÷ ùd÷%TR 4ˆÿ7
’ÿ÷ þø÷ ôø÷¥A sÿT·
zÿQ÷%ME Zbÿ	÷ Üø÷ Òø7
  D÷%HEHÿ÷	  w Pÿ Rø€      $Ô2 d €;÷%PR6ÿ÷ ¨ø3÷%NP&ÿ7
šø,÷%FRÿ ¦À¾Àe 
”Áå0 ÁW 	 ×p
 C`ô÷ ¾ Ìpø÷%APèþ÷	ú÷%EXÚþ
÷ Þù  p©Óâ  â GÔ4YÊ   
    Ê     ì ìæâ ÿˆæ3ÿˆ‡  p©Óâ  p©Óì  ì     4   ¦          ´:ô    4     ¦     ú úæì ÿˆw ÌþÁ%èÐ•  Á%d Ð•  Á%
 Ð• p©Óì     ÁÐ•0 
÷	  ‡ È  ð   ð   
 :© F÷	  ‡                        :© n nY6   Y7  :  ÷äÿ÷  Æÿ÷nÊÿ÷ Æÿ ´:ô n ”æLÿˆ†÷	¬ÿ
w²ÿ‚
W¤ üÂ
·¦ÿ÷   ®   ¬ÿ L º÷  Žÿ÷•0 –ÿæLÿˆ†÷	zÿÀ'÷  Šÿ÷   ´:2“L à†ÿ÷  ‚ÿ÷xÿ÷tdÿ÷ `ÿæLÿˆ†÷	Fÿ t L 	÷  Bÿ÷fFÿ÷  æLÿˆ†÷	(ÿ‡  ´:òsf L ®          zkQÁ› 8$        	.TITLE	DISPLAY DISK USAGE LEVELS - SUMMARY REPORT PART 4	.SBTTL	INITIALIZATIONS	.NLIST	BEX	.MCALL	DCBDF$,F11DF$,UCBDF$,SWITCH$	DCBDF$	F11DF$	UCBDF$	ESC=33	CD=131	.PAGE	.SBTTL	GET NUMBER OF FREE BLOCKS ON MOUNTED DISKSDEVNME:	.WORD	"SYLOUNIT:	.BYTE	0HIUNIT:	.BYTE	0REDIR:	.WORD	1FRBLK:	.BLKW	2RED.NM:	.WORD	0RED.UN:	.WORD	0MNTD:	.WORD	0DCB:	.WORD	0UCB:	.WORD	0TIT:	.ASCII	<ESC><CD><31.+17.><0><31.+56.>	.ASCII	/FREE BLOCKS:/<1>DSKSUM::	MOV	#TIT,R3		;POINT TO TITLE	CALL	OUTLIN		;DISPLAY TITLE	MOVB	#31.+18.,POS+2      	;RESET POINTER TO ROW OF DISPLAY;; FIND THE SY0: DISK;	SWITCH$	90$		;SWITCH TO KERNEL MODE	MOV	$DEVHD,R3	;POINT AT FIRST DCB10$:	CMP	#"SY,D.NAM(R3)	;IS DEVICE SY?	BEQ	20$		;IF EQ-YES	MOV	D.LNK(R3),R3	;POINT TO NEXT DCB	BNE	10$		;IF NE-THEN MORE DCBS20$:	MOV	D.UCB(R3),R3	;POINT TO START OF UCB30$:	MOV	R3,R5		;SAVE IT	MOV	U.RED(R3),R3	;REDIRECTED?	CMP	R3,R5	BNE	30$		;YES!	MOVB	U.UNIT(R3),RED.UN ;GET UNIT NUMBER	MOV	U.DCB(R3),R3	;GET BACK TO DCB TO GET DEVICE NAME	MOV	D.NAM(R3),RED.NM;STORE DEVICE NAME	RETURN      90$:	MOV	#"SY,DEVNME	;GET SYSTEM DEVICE NAME	MOVB	#0,LOUNIT	;AND UNIT NUMBER	MOV	#1,REDIR	;SYSTEM DISK ALWAYS REDIRECTED.	CALL	DSPFBL		;DISPLAY THE FREE BLOCK INFORMATION;; FIND THE FREE BLOCKS OF REMAINING DISKS;	MOV	#"DB,DEVNME	;GO THROUGH DB TYPE DISKS	CALL	DEVICE	MOV	#"DM,DEVNME	;GO THROUGH DM TYPE DISKS	CALL	DEVICE	MOV	#"DR,DEVNME	;GO THROUGH DR TYPE DISKS	CALL	DEVICE	RETURN	.PAGE	.SBTTL	GO THROUGH DEVICE QUEUESDEVICE:	CLR	REDIR		;CLEAR THE REDIRECTED INDICATOR FLAG	SWITCH$	30$		;SWITCH TO KERNEL MODE	      MOV	#$DEVHD,R3	;POINT TO DEVICE LISTHEAD10$:	MOV	D.LNK(R3),R3	;POINT TO NEXT DEVICE ON THE LINKED LIST	BEQ	25$		;IF EQ - NO DEVICES OF THIS TYPE	CMP	DEVNME,D.NAM(R3) ;IS THIS THE DEVICE WE ARE LOOKING FOR?	BNE	10$		;IF NE - THEN TRY NEXT DEVICE		MOV	D.UCB(R3),UCB	;AND POINTER TO UCB	MOVB	D.UNIT(R3),LOUNIT ;GET CURRENT UNIT NUMBER	MOVB	D.UNIT+1(R3),HIUNIT ;GET HIGHEST UNIT NUMBER25$:	MOV	R3,DCB		;SAVE POINTER TO DCB	RETURN30$:	TST	DCB		;DO WE HAVE ANY DEVICES OF THIS TYPE	BEQ	99$		;IF NOT - SKIP CODE35$:	SWI      TCH$	90$		;SWITCH TO KERNEL MODE	MOV	DCB,R3		;POINT TO DCB	MOV	UCB,R4		;POINT TO UCB	BITB	#US.MNT,U.STS(R4) ;IS UNIT MOUNTED?	BNE	75$		;IF NE-NO	INC	MNTD		;SET FLAG40$:	MOV	R4,R5		;SAVE UCB ADDRESS	MOV	U.RED(R4),R4	;REDIRECTED?	CMP	R4,R5	BEQ	45$		;IF EQ-NO	INC 	REDIR		;SET REDIRECTION FLAG	BR	40$		;GO BACK45$:	TST	REDIR		;WAS UNIT REDIRECTED?	BEQ	50$		;IF EQ-NO	MOVB	U.UNIT(R4),RED.UN ;GET REDIRECTION UNIT NUMBER	MOV	U.DCB(R4),R4	;GET BACK TO DCB	MOV	D.NAM(R4),RED.NM;GET NAME OF REDIRECTED DEVICE	BR	75$50$:	      MOV	U.VCB(R4),R4	;POINT TO VCB	MOVB	V.FRBK(R4),FRBLK ;GET NUMBER OF FREE BLOCK	MOV	V.LRUC+1(R4),FRBLK+275$:	ADD	D.UCBL(R3),UCB	;POINT TO NEXT DCB	RETURN90$:	TST	MNTD		;WAS LAST UNIT WE LOOKED AT MOUNTED?	BEQ	95$		;IF EQ-NOT MOUNTED	CLR	MNTD		;CLEAR THE SPECIAL FLAG	CALL	DSPFBL		;DISPLAY FREE BLOCK INFO95$:	INCB	LOUNIT		;LOOK AT NEXT UNIT	CMPB	LOUNIT,HIUNIT	;ARE WE FINISHED?	BGT	99$		;IF GT- THEN FINISHED	JMP	35$99$:	RETURN	.PAGE	.SBTTL	DISK FREE BLOCK INFORMATIONPOS:	.ASCIZ	<ESC><CD><31.+18.><0><31.+63.>	.A      SCII	/    :        /<1>DSPFBL:	CMPB	POS+2,#31.+23.	;ARE WE AT THE BOTTOM OF THE SCREEN?				;(DISPLAYS ONLY 5 DEVICES.)	BGE	25$		;IF GE - YES!	MOV	#POS+6,R0	;POINT TO DISPLAY AREA	MOV 	DEVNME,(R0)+	;GET DEVICE NAME INTO OUTPUT STRING	MOV	#"  ,POS+10	;DO SOME CLEANING UP		MOV	#"  ,POS+14	MOV	#"  ,POS+16	MOV	#"  ,POS+20	MOVB	LOUNIT,R1	;UNIT NUMBER TO BE CONVERTED TO ASCII	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBOMG		;CONVERT TO OCTAL-ASCII	MOV	#POS+14,R0	;POINT TO DISPLAY AREA	TST	REDIR		;IS THIS A REDIRECTED   ò   DISK?	BEQ	10$		;IF EQ-NO	MOVB	#'(,(R0)+	;OUTPUT REDIRECTED DISK NAME	MOVB	RED.NM,(R0)+	MOVB	1+RED.NM,(R0)+	MOV	RED.UN,R1	;AND UNIT NUMBER	CLR 	R2		;SUPPRESS LEADING ZEROES	CALL	$CBOMG		;CONVERT TO OCTAL ASCII	MOVB	#'),(R0)	;AND CLOSING PARENTHESIS	BR	20$10$:	MOV	#FRBLK,R1	;POINT TO FREE BLOCK 2-WORD BUFFER	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CDDMG		;CONVERT TO ASCII20$:	MOV	#POS,R3		;POINT TO DISPLAY	CALL	OUTLIN		;OUTPUT DISPLAY LINE	INCB	2+POS		;POINT TO NEXT DISPLAY LINE25$:	RETURN	.END ò         z^Á› 8$         {áe    tŽ€»   ¯”L  avL@  :©Ï_@   <©@  e©ÄŠ@      (Ôzh& ¯”             SY     
  
           Y0 WFREE BLOCKS:Ã ÷	  ÷• " &avL 0 1 þˆj Ã  ó%SY Ã  ùÃ ÅÃ Å  
j e©ÄŠ V û÷œ ®ÿÃ  ÷ ¢ÿ‡ ÷SYÿ÷•  Œÿ÷ ˆÿ | ÷	ä ÷DBzÿ÷	 ÷DMpÿ÷	 ÷DRfÿ÷	 ‡ 7
 ¢ `ÿþˆÒ Ã  Ã  ó-Jÿ ù÷ Rÿ÷œ <ÿ÷œ Ò e©ÄŠ È  7ÿ÷@ÿ‡ ÷:ÿ;þˆ0Ã0ÿÄ.ÿôµ@  ·
 0 î ÿ !·
ÿø÷ ÿ	7  ÿ  7  ôþ 7  äþ7" àþ÷l äþ‡ ÷Úþ7
Ôþ :÷	& ·ŠÀþ÷­¼þ»þw    È   Šÿ‡ Y1 ^     :      `   ×­êÿ6 3ÀVÐŒþ÷  Þÿ÷  Üÿ÷  Øÿ V †÷  ÔÿÁrþ
÷	  À\÷fþÐ•( ÐbþÐ_þ :©Ï_\ ¬Á\þ
÷	  È•) Á 
÷	  ÃP÷	  ·Š€ÿ :©Ï_ <© P$avL Ò‡  È          •  ^Á› 8$     H    	±Œ:    ¯”L      (     (            TI         H          •  xQÁ› 8$        ABE.TSK;3   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     8-JAN-79   15:55



PARTITION NAME : GEN   
IDENTIFICATION : M05.01
TASK  UIC      : [300,30]
STACK    LIMITS: 000202 001201 001000 00512.
ODT XFR ADDRESS: 002120
PRG XFR ADDRESS: 001216
TASK ATTRIBUTES: DA              
TOTAL ADDRESS WINDOWS: 1.
TASK  IMAGE  SIZE  : 1824. WORDS
TASK ADDRESS LIMITS: 000000 007007
R-W DISK BLK LIMITS: 000002 000011 000010 00008.

*** ROOT SEGMENT: ABE   


R/W MEM  LIMITS: 000      000 007007 007010 03592.
DISK BLK LIMITS: 000002 000011 000010 00008.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 001202 000032 00026.
                          001202 000032 00026. .MAIN.        ABE.OBJ;2
$$$ODT:(RW,I,GBL,REL,OVR) 001234 005552 02922.
                          001234 005552 02922. ODTRSX M05.01 ODT.OBJ;3



GLOBAL SYMBOLS:

.ODTL1      001474-R  .ODTL2 001476-R  




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 315.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 512. WORDS (2. PAGES)

    ELAPSED TIME:00:00:04
          U  xQÁ› 8$        CPU.TSK;3   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     11-JAN-79   10:12



PARTITION NAME : GEN   
IDENTIFICATION : M05.01
TASK  UIC      : [300,30]
STACK    LIMITS: 000202 001201 001000 00512.
ODT XFR ADDRESS: 002350
PRG XFR ADDRESS: 001244
TASK ATTRIBUTES: DA              
TOTAL ADDRESS WINDOWS: 1.
TASK  IMAGE  SIZE  : 1888. WORDS
TASK ADDRESS LIMITS: 000000 007237
R-W DISK BLK LIMITS: 000002 000011 000010 00008.

*** ROOT SEGMENT: CPU   


R/W MEM  LIMITS: 00      0000 007237 007240 03744.
DISK BLK LIMITS: 000002 000011 000010 00008.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 001202 000244 00164.
                          001202 000244 00164. .MAIN.        CPU.OBJ;4
$DPB$$:(RW,I,LCL,REL,CON) 001446 000016 00014.
                          001446 000016 00014. .MAIN.        CPU.OBJ;4
$$$ODT:(RW,I,GBL,REL,OVR) 0014   –  64 005552 02922.
                          001464 005552 02922. ODTRSX M05.01 ODT.OBJ;3



GLOBAL SYMBOLS:

.ODTL1 001724-R  .ODTL2 001726-R  




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 368.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 512. WORDS (2. PAGES)

    ELAPSED TIME:00:00:03
–         mzkQÁ› 8$        	.TITLE	SUMMARY REPORT - PART 1 - BATCH & PRINT PROCESSOR INFORMATION	.SBTTL	ASCII	DISPLAY	.NLIST	BEX	ESC=33	ES=112	CD=131TIT:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR	.ASCII	<ESC><ES><0><0>		;ERASE TO END OF SCREEN	.ASCII	<ESC><CD><31.+4.><0><31.+25.>	;POSITION CURSOR	.ASCII	/*** SUMMARY DISPLAY ***/<1>DISP:	.ASCII	<ESC><CD><31.+6.><0><31.+8.>	.ASCII	/PROCESSORS:/	.ASCII	<ESC><CD><31.+7.><0><31.+8.>	.ASCII	/PRINT:/	.ASCII	<ESC><CD><31.+8.><0><31.+8.>	.ASCII	/ACT. PROC:/	.EVENPRT.PR:	.ASCII	/          /	.ASCII	<ESC><CD><31.+9.><0><31.+8.>	.ASCII	/ACT. JOBS:/	.EVENPRT.AC:	.ASCII	/    /	.ASCII	<ESC><CD><31.+10.><0><31.+7.>	.ASCII	/WAIT. JOBS:/	.EVENPRT.WT:	.ASCII	/    /	.ASCII	<ESC><CD><31.+12.><0><31.+8.>	.ASCII	/BATCH:/	.ASCII	<ESC><CD><31.+13.><0><31.+8.>	.ASCII	/ACT. PROC:/	.EVENBAT.PR:	.ASCII	/    /	.ASCII	<ESC><CD><31.+14.><0><31.+8.>	.ASCII	/ACT. JOBS:/	.EVENBAT.AC:	.ASCII	/    /	.ASCII	<ESC><CD><31.+15.><0><31.+7.>	.ASCII	/WAIT. JOBS:/	.EVENBAT.WT:	.ASCIZ	/    /<1>;; QUEUE MANAGER STOPPED DISPLAY:      ;DISP1:	.ASCII	<ESC><CD><31.+6.><0><31.+11.>	.ASCII	/QUEUE/	.ASCII	<ESC><CD><31.+7.><0><31.+10.>	.ASCII	/MANAGER/	.ASCII	<ESC><CD><31.+8.><0><31.+10.>	.ASCII	/STOPPED/<1>	.EVENDISP2:	.ASCII	<ESC><CD><31.+10.><0><31.+8.>	.ASCII	/PRINT:/	.ASCII	<ESC><CD><31.+11.><0><31.+7.>	.ASCII	/WAIT. JOBS:/	.EVENPR.WT1:	.ASCII	/    /	.ASCII	<ESC><CD><31.+13.><0><31.+8.>	.ASCII	/BATCH:/	.ASCII	<ESC><CD><31.+14.><0><31.+7.>	.ASCII	/WAIT. JOBS:/	.EVENBT.WT1:	.ASCIZ	/    /<1>	.PAGE	.SBTTL	MAIN LOOP	.MCALL	OFID$,CLOSE$,READ$,W      AIT$PAGE1:	.BLKB	1000QCB:	.WORD	0SYCB:	.WORD	0PAGE2:	.BLKB	1000QUESUM::	CALL	QUEINI		;CALL ROUTINE TO VERIFY THAT QUEUE MANAGER				;IS STILL ACTIVE.	CMP	#2,QUE.ST	;IF QUE.ST=2 THEN QUEUE MANAGER IS NOT ACTIVE				;AND WE DON'T KNOW WHERE TO GET QUEUE FILE NAME.	BNE	10$	JMP	OUTDSP		;GO AND OUTPUT DISPLAY;; GET QUEUE FILE FILENAME BLOCK FROM RECEIVE DATA BUFFER;10$:	MOV	#RCVDT,R0	;POINT TO RECEIVE DATA BUFFER	MOV	(R0)+,QFDB+F.DVNM ;DEVICE NAME	MOV	(R0)+,QFDB+F.UNIT ;UNIT NUMBER	MOV	#QFDB+F.FNB+N.FID,R1 ;POINT       TO FILE ID	MOV	(R0)+,(R1)+	;COPY IT	MOV	(R0)+,(R1)+	MOV	(R0)+,(R1)+	MOV	#QFDB,R0	;GET FDB ADDRESS	MOV	#PAGE1,F.STBK(R0) ;SET ADDRESS OF STATISTICS BUFFER	OFID$			;OPEN QUEUE FILE FOR READ	MOV	PAGE1+6,F.EFBK+2(R0) ;SET EOF BLOCK NUMBER = HIGHEST	INC	F.EFBK+2(R0)	;ALLOCATED BLOCK NUMBER + 1;; SET THE STARTING ADDRESS FOR EACH TYPE OF CONTROL BLOCK;	MOV	#PAGE1,QCB	;QCBS START AT THE TOP OF THE PAGE	MOV	#16.,R0		;TAKE 16. QCBS	MOV	#Q.QLEN,R1	;AND MULTIPLY BY THE SIZE OF CONTROL BLOCK	CALL	$MUL		;TO GET OFFSET W      ITHIN PAGE TO START OF SYCBS	ADD	#PAGE1,R1	;ADD STARTING BUFFER ADDRESS	MOV	R1,SYCB		;SAVE RESULT;; PRINT PROCESSOR :;	MOV	#1,PAGENO+2	;PRINT QCBS &SYCBS IN FIRST PAGE	MOV	#PAGE1,R1	;USE FIRST BUFFER	CALL	RDPAGE		;READ FIRST PAGE	JSR 	R3,DOPRO	;GET NUMBER OF ACTIVE PROCESSORS & 				;ACTIVE JOBS	PRT.PR	PRT.AC	JSR	R3,DOQUE	;COUNT NUMBER OF WAITING JOBS	PRT.WT;; BATCH PROCESSOR:;	MOV	#2,PAGENO+2	;DO THE SAME FOR BATCH PROCESSOR	MOV	#PAGE1,R1	CALL	RDPAGE	JSR	R3,DOPRO	BAT.PR	BAT.AC	JSR	R3,DOQUE	BAT.WT;; CLOSE FI      LE:;IOERR:	CLOSE$	#QFDB	.PAGE;; OUTPUT DISPLAY:;OUTDSP:	MOV	#TIT,R3	CALL	OUTLIN		;OUTPUT TITLE	TST	QUE.ST		;IF QUE.ST=0 QUEUE MANAGER IS RUNNING AND WE				;SHOW NORMAL DISPLAY.	BNE	10$	MOV	#DISP,R3	CALL	OUTLIN		;OUTPUT REST OF NORMAL DISPLAY	BR	50$		;FINISHED10$:	MOV	#DISP1,R3	;	CALL	OUTLIN		;DISPLAY "QUEUE MANAGER STOPPED" MESSAGE	CMP	#1,QUE.ST	;IF QUE.ST=1 QUEUE MANAGER NOT ACTIVE				;(CAN STILL DISPLAY INFORMATION ON WAITING JOBS)	BNE	50$		;IF NE THEN NOTHING ELSE TO DO!	MOV	PRT.WT,PR.WT1	;TRANSFER NUMBE      R OF WAITING JOBS TO MODIFIED 				;DISPLAY AREA	MOV	PRT.WT+2,PR.WT1+2	MOV	BAT.WT,BT.WT1	MOV	BAT.WT+2,BT.WT1+2	MOV	#DISP2,R3	CALL	OUTLIN		;DISPLAY NUMBER OF WAITING JOBS50$:	RETURN	.PAGE	.SBTTL	DOPRO-COUNT NUMBER OF ACTIVE PROCESSORS & JOBSPROC:	.WORD	0JOBS:	.WORD	0CNTR:	.WORD	16.DOPRO:	CLR	PROC	CLR	JOBS	MOV	#16.,CNTR	MOV	SYCB,R0	;POINT TO THE FIRST SYCB5$:	TST	Q.QNAM(R0)	;IS THIS SYCB IN USE?	BEQ	90$		;NO - JUMP	BITB	#QQ.STO,Q.QST(R0) ;IS PROCESSOR STOPPED?	BNE	90$		;YES - JUMP TO END OF LOOP	BITB	#QQ.SMD,Q      .QST(R0) ;IS PROCESSOR MARKED FOR DELETE?	BNE	90$		;YES - JUMP TO END OF LOOP	INC	PROC		;WE HAVE ONE MORE ACTIVE PROCESSOR	TST	Q.SCJ(R0)	;IS PROCESSOR IDLE?	BEQ	90$		;YES - JUMP	INC	JOBS		;ONE MORE ACTIVE JOB90$:	ADD	#Q.SLEN,R0	;GET TO NEXT SYCB	DEC	CNTR		;ONE LESS TO LOOK AT	BNE	5$		;IF NE - MORE TO LOOK AT	MOV	(R3)+,R0	;POINTER TO OUTPUT PACKET	MOV	PROC,R1		;GET NUMBER OF ACTIVE PROCESSORS	CALL	JSTFY		;CONVERT TO ASCII - RIGHT JUSTIFIED	MOV	(R3)+,R0	;DO THE SAME FOR ACTIVE JOBS	MOV	JOBS,R1	CALL	JSTFY	RTS       	R3	.PAGE	.SBTTL	DOQUE-COUNT NUMBER OF WAITING JOBSDOQUE:	CLR	JOBS	MOV	#16.,CNTR	MOV	QCB,R0		;POINT TO FIRST QCB5$:	TST	Q.QNAM(R0)	;IS THIS QCB IN USE?	BEQ	90$		;NO - JUMP	BITB	#QQ.STO,Q.QST(R0) ;IS QUEUE STOPPED?	BNE	90$		;YES - JUMP TO END OF LOOP	BITB	#QQ.SMD,Q.QST(R0) ;IS QUEUE MARKED FOR DELETION?	BNE	90$		;YES - JUMP TO END OF LOOP	MOV	R0,R5		;POINT TO QUEUE HEADER	ADD	#Q.QCJL,R5	;AND TO CLOSED JOBS LISTHEAD10$:	MOV	@R5,R4		;POINT TO CLOSED JOB	BEQ	90$		;IF EQ - NO MORE JOBS IN THE QUEUE	CALL	RDNODE		      ;READ JOB ENTRY NODE	INC	JOBS		;ONE MORE JOB	BR	10$90$:	ADD	#Q.QLEN,R0	;LOOK AT NEXT QCB	DEC	CNTR	BNE	5$		;IF NE - MORE QCBS TO LOOK AT 	MOV	(R3)+,R0	;POINTER TO OUTPUT AREA	MOV	JOBS,R1	CALL	JSTFY	RTS	R3	.PAGE	.SBTTL	MISCELLANEOUS ROUTINES;; **-RDNODE-READ JOB ENTRY NODE IN QUEUE FILE;; INPUTS:;;	R4 = VIRTUAL ADDRESS OF NODE;; OUTPUTS:;;	R5 = REAL ADDRESS OF NODE;RDNODE:	MOV	R0,-(SP)	;SAVE R0	CLR	R0	BISB	R4,R0		;GET WORD OFFSET IN BLOCK	ASL	R0		;MAKE IT INTO BYTES	MOV	#PAGE2,R5	;GET STARTING PAGE ADDRESS	AD      D	R0,R5		;AND ADD OFFSET FROM TOP TO GET REAL 				;ADDRESS IN PAGE2 BUFFER;; NOW WE MUST GET PAGE NO. AND SEE IF ITS ALREADY IN MEMORY.; IF NOT WE WILL HAVE TO READ IT FROM THE QUEUE FILE.;	CLRB	R4	SWAB	R4		;GET PAGE NO. INTO LOW BYTE	CMP	R4,CURPAG	;IS THE PAGE WE NEED ALREADY IN MEMORY?	BEQ	10$		;IF EQ - YES	MOV	R4,PAGENO+2	;LOAD THE NUMBER OF BLOCK WE WANT	MOV	#PAGE2,R1		CALL	RDPAGE		;READ PAGE WE NEED10$:	MOV	(SP)+,R0	;RESTORE R0	RETURN;;**-RDPAGE-READ ONE PAGE FROM THE QUEUE FILE;; INPUTS:;;	R1 = ADDRES      S OF BUFFER THAT WE ARE GOING TO USE;;	PAGENO+2 = VIRTUAL BLOCK NUMBER THAT WE WANT TO READ;IOSTAT:	.BLKW	2PAGENO:	.BLKW	2CURPAG:	.WORD	0RDPAGE:	MOV	#QFDB,R0	;POINT TO QFDB	MOV	R1,F.BKDS+2(R0)	;POINT TO THE DESIRED BUFFER?	READ$	#QFDB,,#1000,#PAGENO,,#IOSTAT		BCC	10$		;IF CLEAR - NO ERROR	JMP	IOERR10$:	WAIT$	CMP	PAGENO+2,#2	;DID WE JUST READ FIRST OR SECOND PAGE	BLE	99$		;IF LE - YES SO SKIP	MOV	PAGENO+2,CURPAG	;SAVE CURRENT PAGE NUMBER 				;(SO WE DON'T REREAD IT IF NEED SAME PAGE				;PAGE NEXT TIME)99$:	R      ETURN	.END              RzkQÁ› 8$        	.TITLE	SUMRY2 -TASK MEMORY USAGE-	.SBTTL	INITIALIZATIONS - ASCII DISPLAY STRINGS	.MCALL	SWITCH$	ESC=	33	CD=	131	ES=	112;; TASK MEMORY USAGE;TSKLOC:	.ASCII	<ESC><CD><31.+18.><0><31.+8.>	.ASCII	/TASKS:/	.ASCII	<ESC><CD><31.+19.><0><31.+11.>	.ASCII	/ACTIVE:/	.EVENTSK.AC:	.BLKW	2	.ASCII	<ESC><CD><31.+20.><0><31.+11.>	.ASCII	/MEMORY:/	.EVENTSK.M1:	.ASCII	/    K/	.ASCII	<ESC><CD><31.+21.><0><31.+14.>	.ASCII	/OUT:/	.EVENTSK.OU:	.BLKW	2	.ASCII	<ESC><CD><31.+22.><0><31.+11.>	.ASCII	/MEMORY:/	.EVENTSK.M2:	.ASCII	/          K/	.BYTE 1	.EVEN	.PAGE	.SBTTL	DISPLAY TASKS IN AND OUT OF MEMORY WITH MEMORY USAGE;; DISPLAY THE NUMBER OF ACTIVE TASKS OUT OF MEMORY AND THEIR TOTAL; SIZE, AND THE NUMBER OF TASKS IN MEMORY WITH THEIR TOTAL SIZE.;INM:	.WORD	0INN:	.WORD	0OUTM:	.WORD	0OUTN:	.WORD	0MEMSUM::;; INITIALIZE THE COUNTERS;	CLR	INM		;MEMORY FOR IN TASKS	CLR	INN		;NUMBER OF TASKS IN	CLR	OUTM		;MEMORY FOR TASKS OUT	CLR	OUTN		;NUMBER OF TASKS OUT;; NOW SCAN TASK LIST AND LOOK FOR ACTIVE TASKS;	SWITCH$	40$		;SWITCH TO SYSTEM STATE	MOV      	#$TSKHD-T.TCBL,R3 ;FIRST POINTER10$:	MOV	R3,R4		;SET UP FOR NEXT TCB	MOV	T.TCBL(R4),R3	;GET NEXT TCB ADDRESS	TST	T.TCBL(R3)	;IS IT THE NULL TASK?					BEQ	30$		;IF EQ YES						BIT	#TS.EXE,T.STAT(R3) ;IS TASK NOT ACTIVE	BNE	10$		;IF NE YES	CMP	R3,$LDRPT	;IS IT LOADR	BEQ	10$		;IF EQ YES, SKIP IT	MOV	T.PCB(R3),R4	;GET PCB ADDRESS	MOV	P.SIZE(R4),-(SP)	ASR	(SP)		;MAKE IT 64.WORD UNIT	INC	(SP)		;ROUND IT UP A LITTLE	ASR	(SP)		;NOW 128. WORD UNITS	BIT	#TS.OUT,T.STAT(R3) ;IS IT IN MEMORY	BNE	20$		;IF NE NO;; TASK I      S IN MEMORY;	INC	INN		;ONE MORE TASK IN MEMORY	ADD	(SP)+,INM	;MORE MEMORY IN 128. WORD UNITS	BR	10$		;GO BACK FOR MORE;; TASK IS NOT IN MEMORY;20$:	INC	OUTN		;MORE OUT OF MEMORY	ADD	(SP)+,OUTM	;MORE MEMORY	BR	10$		;GO BACK FOR MORE30$:	RETURN			;NO MORE LEFT TO DO -- FOUND NULL				;TASK;; HERE WE ARE OUT OF SYSTEM STATE. WE WILL CONVERT THE NUMBERS JUST ; OBTAINED TO ASCII AND RIGHT JUSTIFY THEM IN OUR OUTPUT FIELD;40$:	MOV	#TSK.AC,R0	;LOCATION FOR NUMBER OF IN TASKS	MOV	INN,R1		;NUMBER OF IN TASKS	CALL	JST      FY		;CONVERT TO ASCII-AND JUSTIFY	MOV	#TSK.OU,R0	;LOCATION FOR NUMBER OF OUT TASKS	MOV	OUTN,R1		;NUMBER OF OUT TASKS	CALL	JSTFY		;CONVERT TO ASCII-AND JUSTIFY	MOV	#TSK.M1,R0	;LOCATION FOR MEMORY USAGE OF IN TASKS	MOV	INM,R1		;THE AMOUNT OF MEMORY IN 128. WORD				;UNITS	ASR	R1		;256 WORD UNITS	ASR	R1		;512 WORD UNITS	INC	R1		;SORT OF ROUND	ASR	R1		;1024 WORD UNITS	CALL	JSTFY	MOV	#TSK.M2,R0	;LOCATION FOR MEMORY USAGE OF OUT TASKS	MOV	OUTM,R1		;MEMORY FOR OUT TASKS	ASR	R1		;256 WORD UNITS	ASR	R1		;512 WORD UNI   ”   TS	INC	R1		;SORT OF ROUNTD	ASR	R1		;1024 WORD UNITS	CALL	JSTFY	MOV	#TSKLOC,R3	;POINT TO OUTPUT PACKET	CALL	OUTLIN		;OUTPUT MEMORY USAGE	RETURN	.END ”          s:LN^Á› 8$@          Rs:^Á› 8$     ’    	±Œ:    ¯”L      ( Ðzh zh
  Ô2 dh Rzh ?T@h mzh ÑxZh  ÙüXh  €h ¯”             ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡  ’          R©`xQÁ› 8$        MEMORY.TSK;17   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     13-FEB-79   22:33



PARTITION NAME : GEN   
IDENTIFICATION : V1.0  
TASK  UIC      : [300,30]
STACK    LIMITS: 120222 121221 001000 00512.
ODT XFR ADDRESS: 141720
PRG XFR ADDRESS: 121642
TASK ATTRIBUTES: CP,PR             
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 6048. WORDS
TASK ADDRESS LIMITS: 120000 147423
R-W DISK BLK LIMITS: 000002 000031 000030 00024.

*** ROOT SEGMENT: DEMOPR


R/W MEM  LIMI      TS: 120000 147423 027424 12052.
DISK BLK LIMITS: 000002 000031 000030 00024.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 121222 017172 07802.
                          121222 006610 03464. DEMO   V1.0   DEMOPR.OBJ;4
                          130032 000556 00366. MISCEL V1.0   MISC.OBJ;3
                          130610 001454 00812. INITIA V1.0   MEMINI.      OBJ;5
                          132264 002320 01232. MEMORY V1.0   MEM2.OBJ;10
                          134604 003102 01602. GENERA V1.0   MEMOUT.OBJ;10
                          137706 000022 00018. .MAIN.        MEMINC.OBJ;2
                          137730 000216 00142. CBTA   04.2   SYSLIB.OLB;17
                          140146 000246 00166. EDDAT  02     SYSLIB.OLB;17
$DPB$$:(RW,I,LCL,REL,CON) 140414 000030 00024.
                          140414 000030 00024. DEMO   V1.0   DEMOPR.OBJ;4
$$FSR      1:(RW,D,GBL,REL,OVR) 140444 000000 00000.
                          140444 000000 00000. DEMO   V1.0   DEMOPR.OBJ;4
                          140444 000000 00000. FCSFSR 0303MS SYSLIB.OLB;17
$$FSR2:(RW,D,GBL,REL,CON) 140444 000104 00068.
                          140444 000104 00068. FCSFSR 0303MS SYSLIB.OLB;17
$$RESL:(RW,I,LCL,REL,CON) 140550 000164 00116.
                          140550 000104 00068. FINIT  0102MS SYSLIB.OLB;17
                          140654 000000 00000. FCSFSR 0303MS SYSLIB.OL      B;17
                          140654 000024 00020. SAVRG  03     SYSLIB.OLB;17
                          140700 000034 00028. SAVR1  0101   SYSLIB.OLB;17
$$$ODT:(RW,I,GBL,REL,OVR) 140734 006466 03382.
                          140734 006466 03382. ODTRSX M04    TPSODT.OBJ;11



GLOBAL SYMBOLS:

ACBD   130010-R  B.ADDR 000016    B.LUN  000011    CADR   125346-R  COM.AD 125344-R  C.CSIZ 000040    FA.SHR 000040    
APPSUM 137722-R  B.HVBN 000012    B.LVBN 000014    CCBINI 130140-R  COUNT  133370-R        DIRERR 127624-R  FD.RWM 000001    
BUFCTR 121426-R  B.LINK 000022    B.SIZE 000020    CCBNXT 130316-R  CSIZE  125350-R  DSKSUM 137720-R  FO.RD  000001    
BUFPTR 121424-R  B.LRUF 000004    B.USE  000013    COMMUN 127250-R  CYCLE  121572-R  D.NAM  000004    FRMLUN 000010    
MEMORY.TSK;17   MEMORY ALLOCATION MAP  TKB             PAGE 2
DEMOPR               13-FEB-79   22:33



HELP   137712-R  P.NUM  000016    QE.SDF 000107    QUEINI 123412-R  Q.QCJL 000012    TABLE  132264-R  $LDRPT 006316    
IE      .ACT 177771    QE.BDT 000120    QE.SEA 000101    QUESUM 137714-R  Q.QHJL 000016    TRANS  137710-R  $MUL   017224    
IE.ITS 177770    QE.BQN 000134    QE.SEX 000001    QUE.ST 123410-R  Q.QLEN 000020    TRINIT 137706-R  $OTSV  000052    
IO.ATA 001410    QE.BSN 000077    QE.SMD 000105    Q.FATT 000011    Q.QNAM 000000    TSTDSP 137726-R  $PARHD 006314    
IO.RVB 010400    QE.DIR 000117    QE.SNE 000103    Q.FCPN 000030    Q.QNUM 000005    TS.EXE 100000    $RQSCH 001554    
IO.WAL 000410    QE.DNE 000121          QE.TYP 000110    Q.FDEV 000006    Q.QOJL 000010    T.ACTL 000052    $SAVRG 140654-R  
IO.WVB 011000    QE.IAR 000116    QE.UNL 000123    Q.FFN  000014    Q.QST  000004    T.ASTL 000016    $SIZE  000174    
IS.SUC 000001    QE.IDB 000133    QFDB   123152-R  Q.FJ   000004    Q.QTJL 000014    T.NAM  000006    $SYSIZ 006416    
JSTFY  127706-R  QE.IFC 000001    QF.ADE 000200    Q.FLNK 000000    Q.SASS 000006    T.PCB  000046    $TCPU0 001574    
JSTFY1 127674-R  QE.IID 000150    QJ.ABL 000040    Q.FNC        000026    Q.SCJ  000012    T.STAT 000032    $TCPU1 001576    
MEM    133374-R  QE.IJS 000146    QJ.AFL 000100    Q.FNCP 000027    Q.SFL  000016    T.ST2  000034    $TIM   140270-R  
MEMHLF 131300-R  QE.INM 000151    QJ.AHJ 000004    Q.FSEQ 000002    Q.SFO  000017    T2.AST 100000    $TKTCB 001546    
MEMINI 131450-R  QE.IO  000114    QJ.ALC 000020    Q.FUFD 000012    Q.SLEN 000020    T2.DST 040000    $VEXT  000056    
MEMOUT 136520-R  QE.JEA 000111    QJ.ARE 000200    Q.JAFT 000030    Q.SNAM 000000    T      2.FXD 002000    $$CPU  000070    
MEMSIZ 131264-R  QE.JNE 000112    QJ.AWI 000010    Q.JATT 000035    Q.SNUM 000005    T2.SPN 000004    .ACTTB 000204    
MEMSUM 137716-R  QE.MEX 000132    QQ.SBA 000200    Q.JCFI 000022    Q.SST  000004    T2.STP 000020    .CCBBA 000226    
MEMTYP 131302-R  QE.NAV 000125    QQ.SMD 000100    Q.JFI  000020    Q.SUCB 000010    T2.WFR 000001    .CCBLH 000222    
MSGE   137724-R  QE.NFS 000113    QQ.STO 000040    Q.JFO  000037    Q.SUIC 000014    $BASE  000172    .FINIT 14055      0-R  
N.OVPT 000054    QE.NJE 000145    QS.FFO 000200    Q.JLFI 000022    RCVDT  123356-R  $CBDAT 137730-R  .FSRCB 140444-R  
OF.HIT 121600-R  QE.NPS 000127    QS.FNF 000001    Q.JLNK 000000    RECBUF 127220-R  $CBDMG 137736-R  .FSRPT 000050    
OF.RD  121574-R  QE.NP0 000130    QS.FSA 000040    Q.JLPP 000036    SCBINI 130372-R  $CBDSG 137744-R  .MBFCT 140544-R  
OF.WRT 121576-R  QE.NVT 000144    QS.FSD 000100    Q.JMXP 000026    SCBNXT 130456-R  $CBOMG 137752-R  .ODTL1 141172-R  
OUTBUF 126144-R  QE.O      FL 000122    QS.FSF 000010    Q.JNAM 000004    ST.NAT 000004    $CBOSG 137760-R  .ODTL2 141174-R  
OUTLIN 126030-R  QE.OJD 000002    QS.FSI 000020    Q.JNPP 000024    SYSHFT 131272-R  $CBTA  140010-R  .SAVR1 140700-R  
OUTPUT 121410-R  QE.PRI 000053    QS.FSJ 000004    Q.JPRI 000034    SYSRND 131274-R  $CBTMG 137766-R  .SCBTA 000156    
PRCNT  127766-R  QE.QDF 000106    QS.SBA 000200    Q.JQ   000010    SYSTMP 131276-R  $CBVER 137752-R  .SCBTS 000166    
PRT.OK 121570-R  QE.QEA 000100    QS.SHJ 000004          Q.JQL  000033    SY.TST 000006    $CRAVL 006256    .SCBTT 000164    
P.ALLO 000030    QE.QMD 000104    QS.SLC 000020    Q.JSEQ 000002    S.LBN  000052    $CXDBL 001551    .SCBTZ 000160    
P.DEAD 000024    QE.QNE 000102    QS.SMD 000100    Q.JSY  000012    S.LDV  000060    $C5TA  006524    ..FINI 140560-R  
P.HDR  000032    QE.RED 000124    QS.STO 000040    Q.JTI  000016    S.NAM  000000    $DAT   140212-R  
P.HIT  000020    QE.REQ 000131    QS.SWI 000010    Q.JUIC 000014    S.SAT  000014    $DIV   01   v  7256    
P.LRUF 000010    QE.ROP 000115    QS.SXE 000002    Q.QASS 000006    S.TYP  000017    $DSW   000046    




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 40254.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 2816. WORDS (11. PAGES)

    ELAPSED TIME:00:00:23
 v         ÐzÌÁ› 8$     *   MAC TPMMC/LIB+EXEMC/LIB+APPSUMLINK @DEMO70*          ÄLày^Á› 8$     ’   ÄLày    €À     ¯”L  p@  s ‚@   ‚|@  r©ý@  ªò@  ³ªë~@  Á«¼,@   ë«z}@  ë«½’@      (j ¯ª„h ¬ÄLh:  ¯”             ‡þˆ  ÷  ÷-    w   Á  w  ñU   ³ªë~ë«z}³ªë~ë«½’ë«z}"³ªë~ "     A  ñU  À  °
 ‡ þˆh ÷-    7
 ‚|s ‚
pªòh "ë«z}$³ªë~ H   Á  ñE    A  ñE  ÷  ÷	 ³ªë~ë«z}‚|s ‚pÁ«¼, f   ‡  r©ý ’         ŒrÀßxQÁ› 8$        RMD52.TSK;2   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     15-JAN-79   10:33



TASK    NAME   : RMDEMO
PARTITION NAME : GEN   
IDENTIFICATION : X03.04
TASK  UIC      : [300,30]
TASK  PRIORITY : 225.
STACK    LIMITS: 120152 120351 000200 00128.
PRG XFR ADDRESS: 121464
TASK ATTRIBUTES: AL,CP,PR            
TOTAL ADDRESS WINDOWS: 1.
TASK   EXTENSION   : 512. WORDS
TASK  IMAGE  SIZE  : 2496. WORDS
TOTAL  TASK  SIZE  : 3008. WORDS
TASK ADDRESS LIMITS: 120000 131557
R-W D      ISK BLK LIMITS: 000002 000013 000012 00010.

*** ROOT SEGMENT: RMDEMO


R/W MEM  LIMITS: 120000 131557 011560 04976.
DISK BLK LIMITS: 000002 000013 000012 00010.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 120352 011062 04658.
                          120352 010076 04158. RMDEMO X03.04 RMDEMO.OBJ;5
                          130450 000152 00106. LKLS      T  02     LKLST.OBJ;3
$$RESL:(RW,I,LCL,REL,CON) 131434 000124 00084.



GLOBAL SYMBOLS:

DV.F11 040000    TS.EXE 100000    T.TCBL 000030    T3.PRV 010000    U2.VT5 000002    $LDRPT 006316    $TKTCB 001546    
D.NAM  000004    TS.OUT 000400    T.UCB  000026    US.MNT 000100    W.BLVR 000002    $LOCKL 130452-R  $TKWSE 033342    
D.UCB  000002    T.ACTL 000052    T2.AST 100000    U.CW1  000010    $CRAVL 006256    $LSTLK 006252    $TSKHD 006320    
F$LNUM 000000    T.ASTL 000016    T2.CKD 010000    U.      CW2  000012    $C5TA  006524    $PARHD 006314    $UNLKL 130542-R  
H.EFLM 000004    T.NAM  000006    T2.DST 040000    U.RED  000002    $DEVHD 006264    $RQSCH 001554    
H.WND  000044    T.PCB  000046    T2.FXD 002000    U.STS  000005    $DIV   017256    $SCDVT 016156    
IO.ATT 001400    T.STAT 000032    T2.SPN 000004    U.UNIT 000006    $DRDSE 033262    $SIGFL 006244    
IO.WVB 011000    T.ST2  000034    T2.STP 000020    U.VCB  000034    $ERRSQ 006406    $SYSID 006216    
P.HDR  000032    T.ST3  0000   º  36    T2.WFR 000001    U2.PRV 000010    $HEADR 001552    $SYSIZ 006416    




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 12312.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 1280. WORDS (5. PAGES)

RMD52.TSK;2   MEMORY ALLOCATION MAP  TKB             PAGE 2
RMDEMO               15-JAN-79   10:33



    ELAPSED TIME:00:00:07
º         ÕÀ]NÁ› 8$        TRAX DEMO	MACRO M1110  05-FEB-79 15:26TABLE OF CONTENTS     1-    2	INITIALIZATIONS     2-   41	ONE TIME ONLY CODE     3-  126	MAIN LOOP     4-  248	OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY     5-  273	BATCH/PRINT QUEUES INITIALIZATIONS     6-  350	DISPLAY DATE AND TIME     7-  380	DISPLAY TOTAL UPTIME FOR RMDEMO     8-  449	NAMES OF NEXT TASK AND TST     9-  463	DISPLAY CPU USAGE COUNT    10-  490	DISPLAY POOL INFORMATION    11-  551	DISPLAY CACHE INFORMATION    12-  670	I/O ROUTINES    13-  788      	COMMAND PROCESSOR ROUTINES    14-  926	MISCELLANEOUS ROUTINES    15-  987	COMMUNICATION WITH USER ROUTINETRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 1      1					.TITLE	TRAX DEMO      2						.SBTTL	INITIALIZATIONS      3      4						.MCALL	ALUN$C,ASTX$S,DIR$      5						.MCALL	EXIT$S,MRKT$C,QIO$C,QIOW$      6						.MCALL	STSE$C,WTSE$C,GTIM$S,RDAF$C      7						.MCALL	DSAR$S,ENAR$S,QIOW$C      8						.MCALL	SETF$C,CLEF$C,SRDA$C,RCVD$C,SDAT$C      9						.MCALL	CNCT$C,SPWN$C,STOP$C,USTP$C     10						.MCAL      L	WSIG$C,RCST$C     11						.MCALL	MRKT$     12     13     14		000000 				$$PRI=0     15					;     16					; CURSOR CONTROL CHARACTERS     17					;     18     19		000033 				ESC==33			;ESCAPE CHARACTER     20		000131 				CD==131			;CURSOR DISPLAY     21		000112 				ES==112			;ERASE TO END OF SCREEN     22		000113 				EL==113			;ERASE TO END OF LINE     23		000110 				HO==110			;HOME CURSOR     24     25     26     27					;     28					; OUTPUT DPB'S     29					;     30     31	000000				OUTPUT:: QIOW$ 	IO.WAL,      1,12,0,STATUS,,<0,0,0>     32     33		000002'				DSFUN=OUTPUT+Q.IOFN	;ADDRESS OF FUNCTION CODE     34		000014'				BUFPTR==OUTPUT+Q.IOPL	;ADDRESS OF OUTPUT BUFFER     35		000016'				BUFCTR==OUTPUT+Q.IOPL+2	;ADDRESS OF BYTES IN BUFFER     36     37     38	000030				WAIT1:	MRKT$	,1,1		;WAIT ONE TICK     39TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 2ONE TIME ONLY CODE     41						.SBTTL	ONE TIME ONLY CODE     42     43     44	000042	   033 	   110 	   000 	TIT:	.BYTE	ESC,HO,0,ESC,ES,0 ;SEND CURSOR HOME AND C      LEAR SCREEN	000045	   033 	   112 	   000     45	000050	   033 	   131 	   040 	TIT1:	.ASCIZ	<ESC><CD><31.+1.><0><31.+9.>/***TRAX DEMO***/<1>	000053	   000 	   050 	   052	000056	   052 	   052 	   124	000061	   122 	   101 	   130	000064	   040 	   104 	   105	000067	   115 	   117 	   052	000072	   052 	   052 	   001	000075	   000     46     47     48     49					;POS:	.ASCII	<ESC><CD><31.+23.><0><0><31.+9.>     50     51	000076				STATUS: .BLKW	2     52     53	000102	000000 			PRTFLG:	.WORD	0     54	0001      04	000000 			CMDFLG:	.WORD	0     55	000106	000000 			DSPFLG:	.WORD	0     56	000110	000012 			UPD.FR:	.WORD	12     57	000112	000001 			DS.TYP:	.WORD	1     58	000114	000000 			PRT.OK:: .WORD	0     59     60     61					;     62					; CREATE REGION MACROS     63					;     64     65						.MCALL	RDBBK$,WDBBK$,CRRG$C,CRAW$C     66     67	000116	   111 	   116 	   123 	CMDLIN:	.ASCIZ	#INS [300,30]HRDCPY/RUN=REM/TASK=HRDCPY#<15>	000121	   040 	   133 	   063	000124	   060 	   060 	   054	000127	   063 	   060 	   13      5	000132	   110 	   122 	   104	000135	   103 	   120 	   131	000140	   057 	   122 	   125	000143	   116 	   075 	   122	000146	   105 	   115 	   057	000151	   124 	   101 	   123	000154	   113 	   075 	   110	000157	   122 	   104 	   103	000162	   120 	   131 	   015	000165	   000     68					;CMDLIN:	.ASCII	/RUN PRINT/<15>     69		000050 			CMDLEN= .-CMDLIN     70     71     72	000166				RDB:	RDBBK$	4,BUFFER,,<RS.ATT!RS.RED!RS.WRT>     73     74	000206				WDB:	WDBBK$	2,,,0,,<WS.64B!WS.MAP!WS.RED!WS.WRT>           75     76	000226				DEMO:	CRRG$C	RDB		;CREATE A REGION FOR CHARACTER BUFFERTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 2-1ONE TIME ONLY CODE     77     78	000234	005067 	177760 			CLR	WDB+W.NLEN	;CLEAR WINDOW LENGTH     79     80	000240	016767 	177724 	177744 		MOV	RDB+R.GSIZ,WDB+W.NSIZ	;GET REGION SIZE INTO WINDOW DESCRIPTOR     81	000246	016767 	177714 	177740 		MOV	RDB+R.GID,WDB+W.NRID	;MOVE THE REGION ID INTO WINDOW BUFFER     82     83	000254					CRAW$C	WDB		;CREATE ADDRESS WINDOW     84     85	      000262					ALUN$C	1,TI,0		;ASSIGN LOGICAL UNIT NUMBER TO TERMINAL     86     87     88					;	CALL	PARNME		;GET PARTITION NAME     89	000270	004767 	001004 			CALL	QUEINI		;INITIALIZE QUEUE FILE  ROUTINE     90     91						.IF	DF  $$PRI     92     93     94					;     95					; START PRINT TASK RUNNING     96					;     97     98	000274					CLEF$C	6     99    100    101					;	SPWN$C	...INS,,,300,30,4,,,CMDLIN,CMDLEN ;START THE PRINT TASK    102    103	000302					SPWN$C	HRDCPY,,,300,30    104    105	000310					S      TOP$C			;WAIT FOR ACKNOWLEDGEMENT    106    107	000316					SDAT$C	HRDCPY,DAT+4	;PASS PRINT THE TASK NAME    108    109	000324	004767 	000432 			CALL	UNSTP		;UNSTOP HRDCPY    110    111	000330					STOP$C			;WAIT FOR REPPLY    112    113    114						.ENDC    115    116    117    118	000336	012767 	040000 	177450 		MOV	#40000,BUFPTR	;POINT TO REGION WHERE BUFFER HAS JUST BEEN CREATED    119	000344	012703 	000042'			MOV	#TIT,R3		;POINT TO BUFFER TO BE OUTPUT    120	000350	004767 	002400 			CALL	OUTLIN		;OUTPUT       THE BUFFER    121    122	000354					QIO$C	IO.ATA,1,3,,,,<CMDAST>    123    124TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 3MAIN LOOP    126						.SBTTL	MAIN LOOP    127    128						.ENABL	LSB    129    130    131	000362	004767 	000250 		LOOP:	CALL	SCRTOP		;UPDATE TOP TWO LINES OF DISPLAY    132    133	000366	005767 	177514 			TST	DSPFLG		;DO WE WANT ONE OF THE SPECIAL DISPLAYS    134	000372	001064 				BNE	30$		;IF NE NO    135    136	000374	022767 	000001 	177510 		CMP	#1,DS.TYP	;WHICH DISPLAY DO WE WANT          137	000402	001011 				BNE	10$		;IF NE THEN ITS NOT SUMMARY DISPLAY    138	000404	004767 	000000G			CALL	SUMMRY		;OUTPUT SUMMARY DISPLAY    139	000410	004767 	000000G			CALL	SUM3    140	000414	004767 	000000G			CALL	SUM1    141	000420	004767 	000000G			CALL	SUM4    142	000424	000447 				BR	30$    143    144	000426	022767 	000002 	177456 	10$:	CMP	#2,DS.TYP	;DO WE WANT THE MESSAGE DISPLAY    145	000434	001003 				BNE	15$    146	000436	004767 	000000G			CALL	MSGE		;OUTPUT THE MESSAGE DISPLAY    147	000442	0      00440 				BR	30$    148    149	000444	022767 	000003 	177440 	15$:	CMP	#3,DS.TYP	;DO WE WANT THE TST DISPLAY?    150	000452	001003 				BNE	16$    151	000454	004767 	000000G			CALL	TSTDSP		;OUTPUT THE TST DISPLAY    152	000460	000431 				BR	30$    153    154	000462	022767 	000004 	177422 	16$:	CMP	#4,DS.TYP	;DO WE WANT THE TRANSACTION DISPLAY?    155	000470	001003 				BNE	17$    156	000472	004767 	000000G			CALL	TRANS    157	000476	000422 				BR	30$    158    159	000500	022767 	000005 	177404 	17$:	CMP	#5,DS      .TYP	;DO WE WANT THE MEMORY DISPLAY?    160	000506	001010 				BNE	18$    161    162	000510	005767 	000000G			TST	MEMTYP		;DO WE NEED TO INITIALIZE?    163	000514	001002 				BNE	84$    164    165	000516	004767 	000000G			CALL	MEM1    166	000522	004767 	000000G		84$:	CALL	MEM3    167    168	000526	000406 				BR	30$    169    170    171    172	000530	022767 	000006 	177354 	18$:	CMP	#6,DS.TYP	;DO WE WANT THE HELP DISPLAY?    173	000536	001002 				BNE	30$		;IF NE - NO    174    175	000540	004767 	000000G			CALL      	HELP    176    177    178	000544	005767 	177336 		30$:	TST	DSPFLG		;DID WE JUST UPDATE SPECIAL DISPLAY    179	000550	001003 				BNE	31$		;IF NE -NO    180	000552	012767 	000001 	177334 		MOV	#1,PRT.OK	;SET UP FLAG TO TELL OUTBUF THAT SCREEN IS FULL    181	000560	004767 	002262 		31$:	CALL	OUTBUF		;OUTPUT REMAINDER OF BUFFER    182	000564	005767 	177314 			TST	CMDFLG		;HAS USER REQUESTED A COMMANDTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 3-1MAIN LOOP    183	000570	001404 				BEQ	45$		;IF EQ NO    184	00      0572	005067 	177306 		40$:	CLR	CMDFLG		;CLEAR THE COMMAND FLAG    185	000576	004767 	002536 			CALL	CMDS		;GO PROCESS COMMAND    186    187	000602	005767 	177300 		45$:	TST	DSPFLG		;DID WE JUST OUTPUT SPECIAL DISPLAY    188	000606	001403 				BEQ	50$		;IF EQ YES    189	000610	005367 	177272 			DEC	DSPFLG		;CONTINUE COUNTDOWN FOR NEXT DISPLAY UPDATE    190	000614	000403 				BR	55$    191    192	000616	016767 	177266 	177262 	50$:	MOV	UPD.FR,DSPFLG	;START COUNTDOWN FOR NEXT DISPLAY UPDATE    193    194	000624	      			55$:	WTSE$C	2    195    196    197	000632	000167 	177524 			JMP	LOOP    198    199						.DSABL	LSB    200    201    202    203					;    204					; **- SCRTOP-ROUTINE THAT RUNS THROUGH THE ONE SECOND DYNAMICALLY UPDATED SECTION    205					;            OF DISPLAY.    206					;    207    208	000636				SCRTOP:	MRKT$C	2,1,2		;IN ANOTHER SECOND AST WILL BE ENTERED AGAIN    209	000644	012703 	000050'			MOV	#TIT1,R3    210	000650	004767 	002100 			CALL	OUTLIN    211	000654	004767 	000620 			CALL	DSTIM		;DISPLAY C      URRENT TIME    212	000660	004767 	000746 			CALL	UPTIME		;DISPLAY HOW LONG DEMO IS BEEN RUNNING    213	000664	004767 	001140 			CALL	NXTTSK		;DISPLAY NAME OF NEXT TASK    214	000670	004767 	001172 			CALL	CPUCNT		;DISPLAY CPU USAGE COUNT    215	000674	004767 	001276 			CALL	POOLIN		;DISPLAY POOL INFORMATION    216	000700	004767 	001532 			CALL	CACHE		;DISPLAY CACHE INFORMATION    217    218	000704	000207 				RETURN    219    220    221					;    222					; **-PRTAST- AST WHICH IS CALLED WHEN DEMO RECEIVES A M      ESSAGE FROM PRINT TASK    223					;    224    225	000706				DAT:	.BLKW	15.    226    227	000744				PRTAST::    228    229	000744					USTP$C	DEMO		;UNSTOP THIS TASK    230	000752	005726 				TST	(SP)+    231	000754					ASTX$S    232    233    234    235	000762				UNSTP:    236    237	000762				L7:	USTP$C	HRDCPY		;UNSTOP THE HRDCPY TASK    238	000770	026767 	000000G	000000G		CMP	$DSW,IE.ITS	;IS HARDCOPY STOPPED    239	000776	001004 				BNE	L8		;IF NE - NOTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 3-2MAIN LO      OP    240	001000					DIR$	#WAIT1		;WAIT FOR ONE BEFORE TRYING AGAIN    241	001006	000765 				BR	L7    242    243	001010	000207 			L8:	RETURN    244    245    246TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 4OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    248						.SBTTL	OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    249    250    251	001012				PARNME:    252    253    254	001012				MSG1:    255	001012				NAM:    256	001012	026467 	000000G	177772 		CMP	P.NAM(R4),NAM	;SEE IF FIRST HALF OF NAMES       MATCH    257	001020	026467 	000002G	177766 		CMP	P.NAM+2(R4),NAM+2 ;SEE IF SECOND HALF OF NAMES MATCH    258    259    260					;	INH$S			;INHIBIT CONTEXT SWITCHING    261					;	MOV	P.REL(R4),UISAR3 ;MAP INTO EXTENDED MEMORY    262					;	MOV	60000+$BASE,CADR ;STORE BASE ADDRESS OF THE CACHE FOR LATER USE    263					;	MOV	$SIZE,CSIZE	;STORE CACHE SIZE FOR LATER USE    264					;	ENB$S			;ENABLE CONTEXT SWITCHING AGAIN    265    266	001026	000207 				RETURN			;AND WE ARE FINISHED    267    268	001030				ERROR:	      QIOW$C	IO.WAL,1,1,0,STATUS,,<MSG1,40.,'0>    269	001036	000167 	177750 			JMP	PARNME    270    271TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 5BATCH/PRINT QUEUES INITIALIZATIONS    273						.SBTTL	BATCH/PRINT QUEUES INITIALIZATIONS    274    275    276						.MCALL	FDBDF$,FDOP$A,FDRC$A,FDBK$A,FSRSZ$    277						.MCALL	FINIT$    278    279    280		000003 				QFLUN=3    281    282    283					;    284					; QUEUE FILE FDB :    285					;    286    287	001042				QFDB:: 	FDBDF$			;ALLOCATE FILE DESCRIPTOR BLOCK          288	001202					FDRC$A	FD.RWM		;INDICATE THAT BLOCK I/O OPERATIONS ARE    289									;TO BE PERFORMED    290	001202					FDBK$A	,512.		;ALLOCATE BUFFER SPACE    291	001202					FDOP$A	QFLUN,,,FO.RD!FA.SHR    292    293	001202					FSRSZ$	0    294    295    296    297    298					;    299					; EXECUTIVE MACRO CALLS    300					;    301    302						.MCALL	RSUM$,RCST$,USTP$    303    304    305					;    306					; DIRECTIVE DPBS    307					;    308    309    310	001202				RSUM:	RSUM$	QMG...		;DPB TO RESUME QUEUE       MANAGER    311	001210				SDAT:	SDAT$	QMG...,SNDBUF	;DPB TO SEND REQUEST TO QUEUE MANAGER    312	001222				RCST:	RCST$	QMG...,RCVBUF	;DPB TO RECEIVE DATA BACK FROM QUEUE MANAGER    313	001232				USTP:	USTP$	QMG...		;DPB TO UNSTOP QUEUE MANAGER    314    315    316    317	001240	   026 	   000 		SNDBUF:	.BYTE	26,0		;REQUEST PACKET FOR QMG...    318									;F.C. = 26 = GET QUEUE FILE INFORMATION    319	001242				RCVBUF:	.BLKW	15.		;RECEIVE BUFFER FROM QMG...    320		001246'			RCVDAT==RCVBUF+4    321    322          323					;    324					; CHECK THAT QUEUE MANAGER IS ACTIVE.    325					; ASK QUEUE MANAGER WHERE QUEUE FILE IS.    326					;    327    328    329	001300				QUEINI:TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 5-1BATCH/PRINT QUEUES INITIALIZATIONS    330    331	001300					DIR$	#RSUM		;RESUME QUEUE MANAGER    332	001306	026727 	000000G	000000G		CMP	$DSW,#IE.ITS	;WE SHOULD GET TASK NOT SUSPENDED    333	001314	001402 				BEQ	5$		;IF EQ - OK    334	001316	004767 	002612 			CALL	DIRERR		;PROCESS IT AS A DIRECTIV      E ERROR    335    336	001322				5$:	DIR$	#SDAT,DIRERR	;SEND DATA TO QUEUE MANAGER    337	001336					DIR$	#USTP,DIRERR	;UNSTOP QUEUE MANAGER    338    339	001352				10$:	DIR$	#RCST,DIRERR	;RECEIVE DATA OR STOP    340	001366	026727 	000000G	000000G		CMP	$DSW,#IS.SET	;DATA RECEIVED?    341	001374	001766 				BEQ	10$		;IF NOT - TRY AGAIN    342    343	001376					FINIT$			;INITIALIZE FILE SYSTEM    344    345    346    347	001402	000207 				RETURN    348TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 6DISPLAY DATE       AND TIME    350						.SBTTL	DISPLAY DATE AND TIME    351    352					;    353					; **-DSTIM-DISPLAY CURRENT TIME OF DAY    354					;    355    356	001404				TIMBUF:	.BLKW	10    357    358	001424	   033 	   131 	   040 	TIMLOC:	.ASCIZ	<ESC><CD><31.+1.><0><31.+55.>	001427	   000 	   126 	   000    359	001432				TIMMSG:	.BLKW	23		;TIME AND DATE DISPLAY    360    361    362	001500				DSTIM:	GTIM$S	#TIMBUF		;GET TIME PARAMETERS    363    364	001512	016767 	177700 	000054 		MOV	TIMBUF+G.TISC,NEWSEC ;GET THE SECON      D COUNT THIS TIME    365    366	001520	012700 	001432'			MOV	#TIMMSG,R0	;CONVERSION BUFFER    367	001524	010003 				MOV	R0,R3		;SAVE ITS ADDR    368	001526	012701 	001404'			MOV	#TIMBUF,R1	;TIME PARAMETERS    369	001532	004767 	000000G			CALL	$DAT		;CONVERT DATE    370	001536	112720 	000040 			MOVB	#' ,(R0)+	;INSERT A SPACE    371	001542	012702 	000003 			MOV	#3,R2		;CONVERT ASCII OF    372	001546	004767 	000000G			CALL	$TIM		;HOURS, MINS, AND SEC    373	001552	112710 	000001 			MOVB	#1,(R0)		;INSERT LINE T      ERMINATOR    374	001556	012703 	001424'			MOV	#TIMLOC,R3	;POINT TO OUTPUT STRING    375	001562	004767 	001166 			CALL	OUTLIN		;OUTPUT CURRENT TIME    376	001566	000207 				RETURN    377    378TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 7DISPLAY TOTAL UPTIME FOR RMDEMO    380						.SBTTL	DISPLAY TOTAL UPTIME FOR RMDEMO    381    382					;    383					; ADD UP THE SECONDS TO 360 THEN UPDATE THE 10TH HOUR COUNTER.    384					; WHENEVER THAT OVERFLOWS UPDATE THE HOUR COUNTER AND DISPLAY    385					; THE LINE.          386					;    387					;    388					; NEW ALGORITHM FOR SECOND UPDATES -- IT LOOKS AT THE SECOND COUNT    389					; THIS TIME AND COMPARES WITH THE SECOND COUNT LAST TIME, ADJUSTING    390					; FOR PASSING GO (60 SECONDS).  THIS DIFFERENCE IS HOW MUCH TIME HAS    391					; PASSED.  THIS MAKES THE UPTIME ALGORITHM SELF-CORRECTING AS LONG    392					; AS RMDEMO'S MARK-TIME TAKES LESS THEN 60 SECS TO COMPLETE (E.G.    393					; PRESSING COPY ON A VT52 WITH COPIER) YET PEOPLE PLAYING WITH THE    394					; TIM      E COMMAND CANNOT AFFECT THE UPTIME COUNT BY MORE THAN A MINUTE    395					; EVERY TIME THEY PLAY (SO THEY SHOULD'T BOTHER).    396    397	001570	177704 			SEC:	.WORD	-60.		;SECONDS COUNT DOWN FOR TENTHS OF HOUR    398	001572	000000 			OLDSEC:	.WORD	0		;SECONDS OF MINUTES LAST TIME THRU    399	001574	000000 			NEWSEC:	.WORD   0		;SECONDS OF MINUTES THIS TIME THRU    400	001576	000000 			MIN:	.WORD	0		;TENTHS OF HOUR ACCUMULATOR    401	001600	000000 			HOURS:	.WORD	0		;HOURS    402    403	001602	   033 	   13      1 	   040 	UPTIM:	.ASCII	<ESC><CD><31.+1><0><31.+34.>/UP /	001605	   000 	   101 	   125	001610	   120 	   040    404	001612				UPNUM:	.BLKB	10.		;LEAVE ROOM FOR HOURS AND TENTHS    405	001624	   040 	   110 	   122 	HRM:	.ASCII	/ HRS/<1>	;THE END OF MESSAGE	001627	   123 	   001    406    407    408						.EVEN    409	001632	016701 	177736 		UPTIME:	MOV	NEWSEC,R1	;PICK UP THIS TIMES SECONDS    410	001636	020167 	177730 			CMP	R1,OLDSEC	;HAS THE SECOND HAND PASSED THE 12    411	001642	002002 				BGE	5$		;IF       GE NO    412					;    413					; THE SKINNY HAND HAS PASSED THE 12, ADJUST IT    414					;    415	001644	062701 	000074 			ADD	#60.,R1    416	001650	166701 	177716 		5$:	SUB	OLDSEC,R1	;HOW LONG HAS IT BEEN    417	001654	016767 	177714 	177710 		MOV	NEWSEC,OLDSEC	;SAVE THIS  FOR LAST    418	001662	060167 	177702 			ADD	R1,SEC		;COUNT DOWN    419	001666	100415 				BMI	10$		;IF NOT TO ZERO YET    420	001670	162767 	000074 	177672 		SUB	#60.,SEC	;RESET THE TIMER FOR 1 MINUTE    421	001676	005267 	177674 			INC	M      IN		;ADD ANOTHER MINUTE    422	001702	022767 	000074 	177666 		CMP	#60.,MIN	;UP THERE YET    423	001710	001004 				BNE	10$		;IF NE NO    424	001712	005267 	177662 			INC	HOURS		;ONE MORE HOUR    425	001716	005067 	177654 			CLR	MIN		;NO TENTHS    426    427	001722	012700 	001612'		10$:	MOV	#UPNUM,R0	;THIS IS WHERE WE CONVERT INTO    428	001726	016701 	177646 			MOV	HOURS,R1	;DO THE HOURS    429	001732	001403 				BEQ	15$		;NO HOURS, SKIP IT    430	001734	005002 				CLR	R2		;WATCH OUT FOR LEADING ZEROS    431      	001736	004767 	000000G			CALL	$CBDMG    432    433	001742	112720 	000072 		15$:	MOVB	#':,(R0)+	;INSERT THE COLONTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 7-1DISPLAY TOTAL UPTIME FOR RMDEMO    434	001746	016701 	177624 			MOV	MIN,R1		;GET THE NUMBER OF MINUTES    435	001752	022767 	000012 	177616 		CMP	#10.,MIN	;CHECK IF YOU ARE GOING TO HAVE A LEADING ZERO    436	001760	003402 				BLE	20$		;NOT GOING TO HAVE LEADING ZERO    437	001762	112720 	000060 			MOVB	#'0,(R0)+	;INSERT THE LEADING ZERO    438          439	001766	005002 			20$:	CLR	R2		;SUPPRESS LEADING ZEROES    440	001770	004767 	000000G			CALL	$CBDMG    441	001774	105010 				CLRB	(R0)		;TERMINATE STRING    442	001776	012703 	001602'			MOV	#UPTIM,R3	;SEND OUT STRING    443	002002	004767 	000746 			CALL	OUTLIN    444    445	002006	000207 			UPTEND:	RETURN    446    447TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 8NAMES OF NEXT TASK AND TST    449						.SBTTL	NAMES OF NEXT TASK AND TST    450    451    452	002010	   033 	   131 	   041 	TSKLOC:	.ASCIZ	<E      SC><CD><31.+2.><0><31.+9.>	002013	   000 	   050 	   000    453	002016	   052 	   124 	   101 	TSKNAM:	.ASCIZ	/*TASK01*/<1>	002021	   123 	   113 	   060	002024	   061 	   052 	   001	002027	   000    454    455    456    457	002030	012703 	002010'		NXTTSK:	MOV	#TSKLOC,R3    458	002034	004767 	000714 			CALL	OUTLIN    459	002040	000207 				RETURN    460    461TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 9DISPLAY CPU USAGE COUNT    463						.SBTTL	DISPLAY CPU USAGE COUNT    464    465    466	002042	   033 	         131 	   041 	CPULOC:	.ASCII	<ESC><CD><31.+2.><0><31.+19.>	002045	   000 	   062    467	002047	   103 	   120 	   125 	CPUMSG:	.ASCIZ	/CPU:  %/<1>	002052	   072 	   040 	   040	002055	   045 	   001 	   000    468    469	002060	000000 			TCPU:	.WORD	0    470	002062	000300 			CPU:	.WORD	300    471	002064	001000 			CPU.CL::.WORD	1000		;CALIBRATION VALUE    472    473					;GET CPU VALUES    474    475	002066	016700 	177770 		CPUCNT:	MOV	CPU,R0		;GET CURRENT CPU COUNT    476	002072	016702 	177766 			MOV	CPU.C      L,R2	;GET CALIBRATION VALUE INTO DIVISOR    477	002076	004767 	000630 			CALL	PRCNT		;CALCULATE CPU USAGE PERCENTAGE    478    479	002102	010001 				MOV	R0,R1		;PUT RESULT IN REGISTER NEEDED BY $CBDMG    480	002104	012700 	002053'			MOV	#CPUMSG+4,R0	;POINT TO DISPLAY AREA    481	002110	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    482	002112	004767 	000000G			CALL	$CBDMG		;CONVERT TO DECIMAL    483	002116	012703 	002042'			MOV	#CPULOC,R3	;POSITION POINTER    484	002122	004767 	000626 			CALL	OUTLIN		;DISPL      AY CPU COUNT    485    486	002126	000207 				RETURN    487    488TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 10DISPLAY POOL INFORMATION    490						.SBTTL	DISPLAY POOL INFORMATION    491    492					;    493					; **-DISPLAY THE DECIMAL NUMBER OF WORDS IN THE    494					;	LARGEST POOL BLOCK, THE DECIMAL NUMBER OF    495					;	FREE WORDS IN POOL, AND THE NUMBER OF    496					;	FREE BLOCKS IN POOL    497					;    498    499	002130				POOL:	.BLKW	3		;RAW DATA ON POOL STATISTICS    500	002136	000000 			MAXBS:	      .WORD	0		;MAX CONTIGUOUS BLOCKS IN POOL    501	002140	000000 			TOTALS:	.WORD	0		;TOTAL FREE WORDS IN POOL    502	002142	000000 			FRAGS:	.WORD	0		;NUMBER OF POOL FRAGMENTS    503    504	002144	   033 	   131 	   041 	POOLOC:	.ASCII	<ESC><CD><31.+2><0><31.+30.> ;POSITION CURSOR	002147	   000 	   075    505	002151	   120 	   117 	   117 	POOLMG:	.ASCII	/POOL=                /  ;POOL STATISTICS	002154	   114 	   075 	   040	002157	   040 	   040 	   040	002162	   040 	   040 	   040	002165	   040 	   040 	         040	002170	   040 	   040 	   040	002173	   040 	   040 	   040    506    507    508	002176	012701 	002130'		POOLIN:	MOV	#POOL,R1	;POINT TO POOL RAW DATA BUFFER    509	002202	005021 				CLR	(R1)+		;CLEAR NUMBER OF FRAGMENTS    510	002204	005021 				CLR	(R1)+		;CLEAR TOTAL POOL    511	002206	005011 				CLR	(R1)		;CLEAR MAXIMUM PIECE    512					;	CALL	$SWSTK,32$	;SWITCH TO SYSTEM STATE    513	002210	012704 	000000G			MOV	#$CRAVL,R4	;GET ADDRESS OF POOL LISTHEAD    514	002214	000411 				BR	31$		;BRANCH INTO LO      OP    515	002216	021164 	000002 		20$:	CMP	(R1),2(R4)	;IS MAX > THIS BLOCK?    516	002222	103002 				BHIS	30$		;IF HIS YES    517	002224	016411 	000002 			MOV	2(R4),(R1)	;NO, SET NEW MAX    518	002230	066441 	000002 		30$:	ADD	2(R4),-(R1)	;ADD THIS SPACE TO TOTAL    519	002234	005241 				INC	-(R1)		;INCREMENT NUMBER OF POOL FRAGMENTS    520	002236	022121 				CMP	(R1)+,(R1)+	;POINT R1 TO END OF RAW DATA BUFFER    521	002240	011404 			31$:	MOV	(R4),R4		;GET ADDR OF NEXT BLOCK    522	002242	001365 				BNE	20$	      	;IF NE MORE TO EXAMINE    523					;	RETURN			;ELSE, RETURN TO TASK STATE    524    525	002244	012700 	002156'		32$:	MOV	#POOLMG+5,R0	;POINT INTO POOL DISPLAY BUFFER			;**-1    526	002250	012704 	002134'			MOV	#POOL+4,R4	;POINT INTO RAW DATA BUFFER    527	002254	011467 	177656 			MOV	(R4),MAXBS	;STORE NEW MAXIMUM BLOCK VALUE    528	002260	011401 				MOV	(R4),R1		;AND PUT A COPY IN R1    529	002262	006201 				ASR	R1		;CONVERT TO WORDS    530	002264	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    531	002266	00      4767 	000000G			CALL	$CBDMG		;CONVERT TO DECIMAL    532	002272	112720 	000072 			MOVB	#':,(R0)+	;STORE FIELD TERMINATOR    533	002276	014467 	177636 			MOV	-(R4),TOTALS	;STORE NEW TOTAL POOL VALUE    534	002302	011401 				MOV	(R4),R1		;AND PUT A COPY IN R1    535	002304	006201 				ASR	R1		;CONVERT TO WORDS    536	002306	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    537	002310	004767 	000000G			CALL	$CBDMG		;CONVERT TO DECIMAL    538	002314	112720 	000072 			MOVB	#':,(R0)+	;STORE FIELD TERMINATOR    539	002      320	014467 	177616 			MOV	-(R4),FRAGS	;STORE NEW POOL FRAGMENTS VALUETRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 10-1DISPLAY POOL INFORMATION    540	002324	011401 				MOV	(R4),R1		;AND PUT A COPY IN R1    541	002326	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    542	002330	004767 	000000G			CALL	$CBDMG		;CONVERT TO DECIMAL    543	002334	112710 	000001 			MOVB	#1,(R0)		;INSERT LINE TERMINATOR    544	002340	012703 	002144'			MOV	#POOLOC,R3	;POSITION POINTER TO OUTPUT STRING    545	002344	004767 	000404 			C      ALL	OUTLIN    546    547	002350	000207 			POOEND:	RETURN			;    548															;**-1    549TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 11DISPLAY CACHE INFORMATION    551						.SBTTL	DISPLAY CACHE INFORMATION    552    553					;    554					; **- DISPLAYS THE FOLLOWING INFORMATION ABOUT THE CACHE    555					;    556					;	1. PERCENT OF THE CACHE THAT IS DEAD    557					;	2. PERCENT OF THE CACHE THAT IS UNLOCKED    558					;	3. PERCENT OF THE CACHE THAT IS LOCKED    559					;	4. NUMBER OF CALLS MADE TO TH      E CACHE SINCE THE LAST TIME THIS    560					;	   ROUTINE WAS RUN    561					;	5. PERCENT OF THESE CALLS WHICH WERE HITS    562					;    563    564    565	002352	000000 			DEAD:	.WORD 	0    566	002354	000000 			UNLCKD: .WORD	0    567	002356	000000 			LOCKED:	.WORD	0    568	002360	000000 			CALLS:	.WORD	0    569	002362	000000 			TCALLS:	.WORD	0    570	002364	000000 			HITS:	.WORD	0    571	002366	000000 			THITS:	.WORD	0    572    573	002370	000000 			CADR:	.WORD	0    574	002372	001000 			CSIZE:	.WORD	1000          575    576	002374	   033 	   131 	   041 	CACLOC:	.ASCII	<ESC><CD><31.+2.><0><31.+50.>	;POSITION CURSOR	002377	   000 	   121    577	002401	   103 	   101 	   103 	CACHMG:	.ASCII	/CACHE=                       /	;CACHE STATISTICS	002404	   110 	   105 	   075	002407	   040 	   040 	   040	002412	   040 	   040 	   040	002415	   040 	   040 	   040	002420	   040 	   040 	   040	002423	   040 	   040 	   040	002426	   040 	   040 	   040	002431	   040 	   040 	   040	002434	   040 	   040    578    579					;CA      CHE:	INH$S			;INHIBIT CONTEXT SWITCHING    580					;	MOV	CADR,UISAR3	;MAP INTO CACHE    581    582    583	002436	012700 	000000G		CACHE:	MOV	#P.DEAD,R0	;GET AMOUNT OF DEAD STORAGE    584	002442	016702 	177724 			MOV	CSIZE,R2	;SET UP DIVISOR PARAMETER    585	002446	004767 	000260 			CALL	PRCNT		;CALCULATE THE PERCENTAGE    586	002452	010067 	177674 			MOV	R0,DEAD		;STORE THE RESULT    587    588	002456	012700 	000000G			MOV     #P.ALLOC,R0	;GET AMOUNT OF UNLOCKED SPACE    589	002462	004767 	000244 			CALL	PR      CNT    590	002466	010067 	177662 			MOV	R0,UNLCKD	;STORE RESULT    591    592	002472	012767 	000144 	177656 		MOV	#100.,LOCKED	;START WITH 100%    593	002500	166767 	177646 	177650 		SUB	DEAD,LOCKED	;SUBTRACT DEAD STORAGE PERCENTAGE    594	002506	166767 	177642 	177642 		SUB	UNLCKD,LOCKED	;SUBTRACT UNLOCKED STORAGE PERCENTAGE    595    596    597	002514	012700 	000000G			MOV	#P.HIT,R0	;GET NUMBER OF HITSTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 11-1DISPLAY CACHE INFORMATION    598	002520	166700 	177642       			SUB	THITS,R0	;SUBTRACT TOTAL LAST TIME TO GET TOTAL SINCE THEN    599	002524	012767 	000000G	177634 		MOV	#P.HIT,THITS	;SAVE FOR NEXT TIME    600    601	002532	012702 	000000G			MOV	#P.NUM,R2	;GET NUMBER OF CALLS    602	002536	166702 	177620 			SUB	TCALLS,R2	;GET NUMBER THIS TIME    603	002542	010267 	177612 			MOV	R2,CALLS	;SAVE FOR OUTPUT    604	002546	012767 	000000G	177606 		MOV	#P.NUM,TCALLS	;SAVE FOR NEXT TIME    605    606	002554	004767 	000152 			CALL	PRCNT		;CALCULATE HIT PERCENTAGE    607	00256      0	010067 	177600 			MOV	R0,HITS		;STORE RESULT    608    609	002564	012700 	002407'			MOV	#CACHMG+6,R0	;POINT INTO CACHE DISPLAY BUFFER    610    611	002570	016701 	177556 			MOV	DEAD,R1		;NOW WE ARE GOING TO CONVERT TO OUTPUT FORMAT    612	002574	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    613	002576	004767 	000000G			CALL	$CBDMG		;CONVERT TO DECIMAL    614	002602	112720 	000072 			MOVB	#':,(R0)+	;INSERT FIELD SEPARATOR    615    616	002606	016701 	177542 			MOV	UNLCKD,R1	;    617	002612	005002 				CLR	      R2		;    618	002614	004767 	000000G			CALL	$CBDMG		;    619	002620	112720 	000072 			MOVB	#':,(R0)+	;    620    621	002624	016701 	177526 			MOV	LOCKED,R1	;    622	002630	005002 				CLR	R2		;    623	002632	004767 	000000G			CALL	$CBDMG		;    624    625	002636	005767 	177516 			TST	CALLS		;SEE IF ANY CALLS WERE MADE    626	002642	001424 				BEQ	10$		;IF EQ THEN CLEANUP    627    628	002644	112720 	000040 			MOVB	#' ,(R0)+	;INSERT SOME SPACING    629	002650	112720 	000040 			MOVB	#' ,(R0)+    630	002654	11272      0 	000040 			MOVB	#' ,(R0)+    631	002660	112710 	000040 			MOVB	#' ,(R0)    632    633	002664	016701 	177470 			MOV	CALLS,R1	;    634	002670	005002 				CLR	R2		;    635	002672	004767 	000000G			CALL	$CBDMG		;    636	002676	112720 	000072 			MOVB	#':,(R0)+	;    637    638	002702	016701 	177456 			MOV	HITS,R1		;    639	002706	005002 				CLR	R2    640	002710	004767 	000000G			CALL	$CBDMG    641	002714	112710 	000001 		10$:	MOVB	#1,(R0)		;INSERT LINE TERMINATOR    642	002720	012703 	002374'			MOV	#CACLOC,R3	;P      OSITION POINTER    643	002724	004767 	000024 			CALL	OUTLIN    644    645					;	ENB$S			;ENABLE CONTEXT SWITCHING    646	002730	000207 				RETURN    647    648    649					;    650					; **-PRCNT -INTERNAL ROUTINE TO CALCULATE PERCENTAGES    651					;    652					; INPUTS:    653					;    654					;	R0=DIVIDENDTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 11-2DISPLAY CACHE INFORMATION    655					;	R2=DIVISOR    656					;    657					; OUTPUTS:    658					;    659					;	R0=QUOTIENT    660					;    661    662	002      732	012701 	000144 		PRCNT:	MOV	#100.,R1	;SET UP FOR MULTIPLICATION    663	002736	004767 	000000G			CALL	$MUL		;MULTIPLY BY 100. SO LATER CAN GET PERCENTAGE    664	002742	010100 				MOV	R1,R0		;SWITCH INTO DIVIDEND REGISTER    665	002744	010201 				MOV	R2,R1		;GET DIVISOR    666	002746	004767 	000000G			CALL	$DIV		;DO THE DIVISION    667	002752	000207 				RETURN    668TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 12I/O ROUTINES    670						.SBTTL	I/O ROUTINES    671    672    673					;    674					; **-OUTLI      N -OUTPUT STRING TO DISPLAY BUFFER    675					;    676					; INPUTS:    677					;    678					;	R3=ADDRESS OF OUTPUT STRING    679					;    680					; NOTE: THE <0> BIT AND THE '$ BIT ARE SPECIAL CHARACTERS.    681					;       OUTLIN REPLACES <0> WITH SEVERAL FILL CHARACTERS.    682					;       '$ INDICATES THAT PROCESSING OF THE STRING SHOULD STOP.    683					;    684    685	002754	010246 			OUTLIN:: MOV	R2,-(SP)	;SAVE VALUE OF R2    686	002756	112302 			5$:	MOVB	(R3)+,R2	;NEXT CHARACTER TO OUTPUT    687	002      760	001003 				BNE	10$		;IF NE THEN NOT A FILL CHARACTER    688	002762	004767 	000220 			CALL 	OUTFIL		;OUTPUT FILL CHARACTER    689	002766	000773 				BR	5$		;GO BACK FOR MORE    690    691	002770	022702 	000001 		10$:	CMP	#1,R2		;SEE IF WE REACHED THE END OF THE STRING    692	002774	001403 				BEQ	20$		;IF EQ YES    693	002776	004767 	000012 			CALL	OUTCHR		;OUTPUT THE CHARACTER    694	003002	000765 				BR	5$		;GO BACK FOR MORE    695    696	003004	004767 	000176 		20$:	CALL	OUTFIL		;OUTPUT SOME FILL CHARA      CTERS    697	003010	012602 				MOV	(SP)+,R2	;RESTORE VALUE OF R2    698	003012	000207 				RETURN    699    700    701    702					;    703					; **-OUTCHR -OUTPUT CHARACTER TO DISPLAY BUFFER    704					;    705					; INPUTS:    706					;    707					;	R2=CHARACTER TO BE OUTPUT    708					;    709    710    711	003014	110277 	174774 		OUTCHR:	MOVB	R2,@BUFPTR	;INSERT BYTE IN BUFFER    712	003020	005267 	174770 			INC	BUFPTR		;BUMP BUFFER POINTER    713	003024	005267 	174766 			INC     BUFCTR		;AND BYTE COUNT          714	003030	022767 	000400 	174760 		CMP 	#256.,BUFCTR	;BUFFER FULL?    715	003036	101002 				BHI	10$		;IF HI NO    716	003040	004767 	000002 			CALL	OUTBUF		;DISPLAY BUFFER    717	003044	000207 			10$:	RETURN    718    719    720    721					;    722					; **-OUTBUF -OUTPUT DISPLAY BUFFER    723					;    724					; INPUTS:    725					;    726					;	BUFCTR=NUMBER OF BYTES TO OUTPUTTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 12-1I/O ROUTINES    727					;    728    729						.ENABL	LSB    730	003046	012767 	04      0000 	174740 	OUTBUF:: MOV	#40000,BUFPTR	;BUFFER IS IN EXTENDED MEMORY    731	003054					DIR$	#OUTPUT		;OUTPUT THE BUFFER TO THE SCREEN    732    733    734						.IF	DF  $$PRI    735    736	003062	005767 	175020 			TST	DSPFLG		;HAVE WE UPDATED ONE OF SPECIAL DISPLAYS    737	003066	001021 				BNE	5$    738    739	003070	005767 	175006 			TST	PRTFLG		;DO WE WANT TO UPDATE BUFFER FOR HARDCOPY?    740	003074	001416 				BEQ	5$		;IF EQ THEN NO    741    742	003076	012767 	000001 	175606 		MOV	#1,DAT+4	;SET CODE F      OR UPDATE    743	003104	016767 	174706 	175602 		MOV	BUFCTR,DAT+6	;PASS TO PRINT NO. OF CHARACTERS IN BUFFER    744    745    746	003112					SDAT$C	HRDCPY,DAT+4	;PASS THE INFO TO PRINT    747    748	003120	004767 	175636 			CALL	UNSTP		;UNSTOP HRDCPY    749    750	003124					STOP$C    751    752	003132	005767 	174756 		5$:	TST	PRT.OK		;IS HARDCOPY BUFFER READY TO BE OUTPUT?    753	003136	001416 				BEQ	10$		;IF EQ NO    754	003140	005767 	174736 			TST	PRTFLG		;DO WE WANT A HARDCOPY?    755	003144	001413 		      		BEQ	10$    756    757	003146	012767 	000002 	175536 		MOV	#2,DAT+4	;SET PRINT CODE    758    759    760	003154					SDAT$C	HRDCPY,DAT+4	;TELL PRINT TO PRINT OUT ITS BUFFER    761    762	003162	004767 	175574 			CALL	UNSTP		;UNSTOP HRDCPY    763    764	003166					STOP$C    765    766    767	003174	005067 	174714 		10$:	CLR	PRT.OK		;DON'T WANT TO GO THROUGH THIS NEXT TIME    768    769						.ENDC    770    771    772	003200	005067 	174612 			CLR	BUFCTR		;CLEAR BUFFER BYTE COUNT    773    774	003204	000207 		      		RETURN    775						.DSABL	LSB    776    777    778					;    779					; **- OUTFIL-OUTPUT FILL CHARACTERS TO BUFFER    780					;    781    782	003206	005002 			OUTFIL: CLR	R2		;SET FILL CHARACTER TO NULL    783	003210	004767 	177600 			CALL	OUTCHR		;OUTPUT A FILL CHARACTERTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 12-2I/O ROUTINES    784	003214	000207 				RETURN    785    786TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 13COMMAND PROCESSOR ROUTINES    788						.SBTTL	COMMAND PROCESSOR ROUTINES    789          790					;    791					; **-CMDAST-AST WHICH IS CALLED IF AN IO EVENT IS COMPLETED. IT SETS A FLAG    792					;	    WHICH TELLS MAIN PROGRAM THAT USER WOULD LIKE TO REQUEST A COMMAND.    793					;    794    795	003216				AST.ST:	.BLKW	2    796    797	003222				CMDAST:    798    799	003222	122716 	000003 			CMPB	#3,(SP)		;IS THERE A CONTROL C IN BUFFER?    800	003226	001003 				BNE	5$		;IF NE- NO    801	003230					EXIT$S    802    803    804	003236	012767 	000001 	174640 	5$:	MOV	#1,CMDFLG	;SET COMMAND FLAG          805	003244	005726 				TST	(SP)+		;REMOVE TRAP DEPENDENT PARAMETER FROM STACK    806	003246					ASTX$S			;EXIT AST    807    808    809					;    810					; **-CMDS-ROUTINE TO PROCESS USER COMMANDS    811					;    812    813    814	003254	   033 	   131 	   067 	PROMPT:	.BYTE	ESC,CD,<31.+24.>,<0>,<0>,<31.+1.>,ESC,ES	003257	   000 	   000 	   040	003262	   033 	   112    815	003264	   072 	   040 			.ASCII	/: /    816    817	003266	   033 	   131 	   066 	ERR1:	.ASCIZ	<ESC><CD><31.+23.><0><31.+1.><ESC><EL>	003      271	   000 	   040 	   033	003274	   113 	   000    818	003276	   111 	   114 	   114 		.ASCII	/ILLEGAL COMMAND!/	003301	   105 	   107 	   101	003304	   114 	   040 	   103	003307	   117 	   115 	   115	003312	   101 	   116 	   104	003315	   041    819    820	003316				CMDBUF: .BLKW 	10    821	003336	000000 			ALL.TR::.WORD 	0    822    823						.ENABL	LSB    824    825	003340				CMDS:	QIOW$C	IO.WAL,1,10,0,STATUS,,<PROMPT,12,'+> ;SEND USER THE PROMPT    826    827	003346	012767 	020040 	177742 		MOV	#"  ,      CMDBUF	;CLEAN THE DISPLAY BUFFER    828	003354	012767 	020040 	177736 		MOV	#"  ,CMDBUF+2	;    829	003362	012767 	020040 	177732 		MOV	#"  ,CMDBUF+4    830    831	003370					QIOW$C	IO.RVB,1,11,0,STATUS,,<CMDBUF,10>  ;READ COMMAND FROM USER    832    833	003376	022767 	052523 	177712 		CMP	#"SU,CMDBUF	;DO WE WANT SUMMARY DISPLAY    834	003404	001007 				BNE	10$    835	003406	012767 	000001 	174476 		MOV	#1,DS.TYP	;SET UP DISPLAY TYPE FLAGTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 13-1COMMAND PROCESSOR ROU      TINES    836	003414	012767 	000001 	174464 		MOV	#1,DSPFLG	;SET UP FLAG SO DISPLAY CHANGES RIGHT AWAY    837	003422	000572 				BR	20$    838    839	003424	022767 	051515 	177664 	10$:	CMP	#"MS,CMDBUF	;DO WE WANT MESSAGE DISPLAY    840	003432	001007 				BNE	11$		;IF NE TRY SOMETHING ELSE    841	003434	012767 	000002 	174450 		MOV	#2,DS.TYP	;SET UP DISPLAY TYPE FLAG    842	003442	012767 	000001 	174436 		MOV	#1,DSPFLG	;SET UP FLAG SO DISPLAY CHANGES RIGHT AWAY    843	003450	000557 				BR	20$    844    845	003      452	022767 	051524 	177636 	11$:	CMP	#"TS,CMDBUF	;DO WE WANT TST DISPLAY    846	003460	001007 				BNE	24$		;IF NE TRY SOMETHING ELSE    847	003462	012767 	000003 	174422 		MOV	#3,DS.TYP	;SET UP DISPLAY TYPE FLAG    848	003470	012767 	000001 	174410 		MOV	#1,DSPFLG	;SET UP FLAG SO DISPLAY CHANGES RIGHT AWAY    849	003476	000544 				BR	20$    850    851	003500	022767 	051124 	177610 	24$:	CMP	#"TR,CMDBUF	;DO WE WANT THE TRANSACTION DISPLAY?    852	003506	001017 				BNE	25$    853	003510	005067 	177622 			CLR	      ALL.TR		;CLEAR FLAG    854	003514	012767 	000004 	174370 		MOV	#4,DS.TYP	;SET UP DISPLAY TYPE FLAG    855	003522	012767 	000001 	174356 		MOV	#1,DSPFLG	;SET UP FLAG SO DISPLAY CHANGES RIGHT AWAY    856	003530	122767 	000101 	177563 		CMPB	#'A,CMDBUF+3	;DO WE WANT DETAILED TRANSACTION DISPLAY?    857	003536	001124 				BNE	20$		;IF NE-NO    858	003540	005267 	177572 			INC	ALL.TR		;SET FLAG TO DETAILED TRANSACTIONS    859	003544	000521 				BR	20$    860    861	003546	022767 	042515 	177542 	25$:	CMP	#"ME,CMDB      UF	;DO WE WANT THE MEMORY DISPLAY?    862	003554	001011 				BNE	18$    863	003556	012767 	000005 	174326 		MOV	#5,DS.TYP    864	003564	012767 	000001 	174314 		MOV	#1,DSPFLG    865	003572	005067 	000000G			CLR	MEMTYP    866	003576	000504 				BR	20$    867    868	003600	022767 	042510 	177510 	18$:	CMP	#"HE,CMDBUF	;DO WE WANT THE HELP DISPLAY?    869	003606	001005 				BNE	19$    870	003610	004767 	000000G			CALL	HELP    871	003614	000167 	177520 			JMP	CMDS    872	003620	000473 				BR	20$    873    874	00362      2	022767 	051120 	177466 	19$:	CMP	#"PR,CMDBUF	;DO WE WANT PRINT OPTION    875	003630	001004 				BNE	12$    876	003632	012767 	000001 	174242 		MOV	#1,PRTFLG	;SET PRINT OPTION FLAG    877	003640	000463 				BR	20$    878    879	003642	022767 	050116 	177446 	12$:	CMP	#"NP,CMDBUF	;ARE WE CANCELLING PRINT OPTION?    880	003650	001003 				BNE	13$    881	003652	005067 	174224 			CLR	PRTFLG		;CANCEL PRINT OPTION    882	003656	000454 				BR	20$    883    884	003660	022767 	051106 	177430 	13$:	CMP	#"FR,CMDBUF	;DOE      S USER WANT TO CHANGE UPDATE FREQUENCY OF DISPLAY    885	003666	001024 				BNE	16$    886    887	003670	012700 	003316'			MOV	#CMDBUF,R0	;POINT TO ARGUMENT    888	003674	062700 	000003 			ADD	#3,R0    889	003700	005003 				CLR	R3    890    891	003702	112001 			14$:	MOVB	(R0)+,R1	;GET A DIGIT    892	003704	162701 	000060 			SUB	#60,R1		;CONVERT FROM ASCIITRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 13-2COMMAND PROCESSOR ROUTINES    893	003710	005701 				TST	R1    894	003712	002407 				BLT	15$		;IF LT THEN N      OT A NUMBER    895	003714	020127 	000011 			CMP	R1,#9.    896	003720	003004 				BGT	15$		;IF GT THEN NOT A NUMBER EITHER    897    898	003722	070327 	000012 			MUL	#12,R3		;RAIZE NUMBER ONE POWER OF TEN    899	003726	060103 				ADD	R1,R3		;THEN ADD NEW UNITS    900	003730	000764 				BR	14$    901    902	003732	010367 	174152 		15$:	MOV	R3,UPD.FR	;REPLACE WITH NEW FREQUENCY    903	003736	000424 				BR	20$    904    905	003740	022767 	050101 	177350 	16$:	CMP	#"AP,CMDBUF	;DOES USER WANT TO CHANGE APPLICATIONS      ?    906	003746	001003 				BNE	21$    907	003750	004767 	175036 			CALL	PARNME		;GET NEW PARTITION NAME AND MAPPING ADDRESS    908	003754	000415 				BR	20$    909    910	003756	022767 	054105 	177332 	21$:	CMP	#"EX,CMDBUF	;DO WE WANT TO EXIT THE PROGRAM    911	003764	001012 				BNE	30$		;IF NE NO    912    913	003766	012767 	000003 	174716 		MOV	#3,DAT+4	;SET UP CODE FOR PRINT TO EXIT    914	003774					SDAT$C	HRDCPY,DAT+4	;TELL IT TO EXIT    915    916	004002					EXIT$S    917    918	004010	000207 			20$:	R      ETURN    919    920	004012				30$:	QIOW$C	IO.WAL,1,1,0,STATUS,,<ERR1,24.>    921	004020	000167 	177314 			JMP	CMDS    922    923    924TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 14MISCELLANEOUS ROUTINES    926						.SBTTL	MISCELLANEOUS ROUTINES    927    928    929						.ENABL	LSB    930    931    932					;    933					; **- JSTFY-CONVERTS A NUMBER TO ITS ASCII OUTPUT EQUIVALENT, RIGHT    934					;           JUSTIFYING THE NUMBER IN THE OUTPUT FIELD.    935					;    936					; INPUTS:    937					;    938		      			;	R0=POINTER TO STARTING ADDRESS OF THE OUTPUT FIELD    939					;	R1=NUMBER TO BE CONVERTED    940					;    941					; NOTE: ROUTINE WILL ONLY RIGHT JUSTIFY NUMBERS UP TO 4 DECIMAL DIGITS IN LENGTH    942					;    943    944	004024	022701 	001750 		JSTFY::	CMP	#1000.,R1	;IS IT 4 DIGITS?    945	004030	003421 				BLE	10$		;YES, SO GO ON    946	004032	112720 	000040 			MOVB	#' ,(R0)+	;CLEAR THE 1000'S SPACE    947    948	004036	022701 	000144 			CMP	#100.,R1	;IS IT 3 DIGITS?    949	004042	003414 				BLE	10$          950	004044	112720 	000040 			MOVB 	#' ,(R0)+    951    952	004050	022701 	000012 			CMP	#10.,R1		;IS IT 2 DIGITS?    953	004054	003407 				BLE 	10$    954	004056	112720 	000040 			MOVB	#' ,(R0)+    955    956	004062	005701 				TST	R1		;IS IT AT LEAST 1 DIGIT?    957	004064	001003 				BNE	10$    958	004066	112720 	000060 			MOVB	#'0,(R0)+    959	004072	000403 				BR	15$    960    961	004074	005002 			10$:	CLR	R2		;SUPPRESS LEADING ZEROES    962	004076	004767 	000000G			CALL	$CBDMG		;CONVERT TO ASCII    96      3	004102	000207 			15$:	RETURN    964    965    966    967    968					;    969					; **-PUTNUM-CONVERT A BINARY NUMBER TO ITS DECIMAL-ASCII FORM    970					;    971					; INPUTS:    972					;    973					;	R0=POINTER TO DISPLAY AREA TO PUT NUMBER IN    974					;    975					;	R1=NUMBER TO BE CONVERTED    976					;    977    978    979	004104				PUTNUM::    980	004104	012710 	020040 			MOV	#"  ,(R0)	;CLEAN DISPLAY AREA    981	004110	012760 	020040 	000002 		MOV	#"  ,2(R0)    982	004116	012760 	020040 	000004 	      	MOV	#"  ,4(R0)TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 14-1MISCELLANEOUS ROUTINES    983	004124	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    984	004126	004767 	000000G			CALL	$CBDMG		;CONVERT TO ASCII    985	004132	000207 				RETURNTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 15COMMUNICATION WITH USER ROUTINE    987						.SBTTL	COMMUNICATION WITH USER ROUTINE    988    989    990    991					;    992					; **-COMMUN-OUTPUTS A MESSAGE TO USER & AND IF REQUIRED ACCEPTS A REPLY.    993					;    994				      	; INPUTS:    995					;    996					;	R0 = REPLY FLAG    997					;	     IF R0 = 1 MESSAGES REQUIRES A REPLY    998					;    999					;	R1 = POINTER TO STARTING ADDRESS OF MESSAGE   1000					;   1001					; OUTPUT:   1002					;   1003					;	REPBUF CONTAINS USER'S REPLY TO MESSAGE   1004					;   1005					; NOTE:   1006					;   1007					;	IF TERMINAL IS CURSOR CONTROLLED MESSAGE IS OUTPUT STARTING ON COLUMN 1   1008					;	OF ROW 23 AND CURSOR IS THEN POSITIONED TO COLUMN 1 OF ROW 24 TO ACCEPT   1009					;	THE REP      LY.   1010					;   1011						.ENABL	LSB   1012   1013	004134				DIRERR::   1014   1015   1016   1017	004134				IO:	QIOW$	,1,1   1018	004164	000000 			TERFLG:	.WORD	0		;IF = 1 THEN NOT A CURSOR CONTROLLED DEVICE   1019	004166				RECBUF:: .BLKW	4   1020	004176	   033 	   131 	   066 	LINE23:	.ASCIZ	<ESC><CD><31.+23.><0><31.+1>	004201	   000 	   040 	   000   1021	004204	   033 	   131 	   067 	LINE24:	.ASCIZ	<ESC><CD><31.+24.><0><31.+1>/: /	004207	   000 	   040 	   072	004212	   040 	   000   1022   1023   1      024	004214				COMMUN::   1025   1026					;   1027					; POSITION CURSOR:   1028					;   1029	004214	005767 	177744 			TST	TERFLG			;IS TERMINAL CURSOR CONTROLLED?   1030	004220	001017 				BNE	10$			;IF NE-NO   1031   1032   1033	004222	012767 	000000G	177706 		MOV	#IO.WAL,IO+Q.IOFN	;SET I/O FUNCTION TO WRITE ALL   1034	004230	012767 	004176'	177712 		MOV	#LINE23,IO+Q.IOPL	;INSERT ADDRESS OF CURSOR CONTROL   1035										;CHARACTERS INTO DPB   1036	004236	012767 	000006 	177706 		MOV	#6,IO+Q.IOPL+2		;AND NU      MBER OF CHARACTERS   1037	004244					DIR$	#IO,DIRERR		;POSITION CURSOR   1038   1039					;   1040					; DETERMINE OUTPUT MESSAGE SIZETRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 15-1COMMUNICATION WITH USER ROUTINE   1041					;   1042   1043	004260	005002 			10$:	CLR	R2		;INITIALIZE COUNTER   1044	004262	010167 	177662 			MOV	R1,IO+Q.IOPL	;SAVE POINTER TO OUTPUT MESSAGE   1045   1046   1047	004266	005202 			15$:	INC 	R2		;ONE MORE CHARACTER   1048	004270	122127 	000001 			CMPB	(R1)+,#1	;HAVE WE REACHED THE       END OF THE MESSAGE?   1049	004274	001374 				BNE	15$		;IF NE - NO   1050   1051	004276	005302 				DEC	R2		;COUNTED ONE TOO MANY   1052   1053   1054					;   1055					; OUTPUT MESSAGE   1056					;   1057	004300	010267 	177646 			MOV	R2,IO+Q.IOPL+2	;INSERT SIZE OF MESSAGE INTO DPB   1058   1059	004304	005767 	177654 			TST	TERFLG		;IS TERMINAL CURSOR CONTROLLED?   1060	004310	001406 				BEQ	20$		;IF EQ - YES   1061   1062	004312	012767 	000000G	177616 		MOV	#IO.WVB,IO+Q.IOFN ;SET FUNCTION NAME   1063	004320	1      12767 	000060 	177626 		MOVB	#'0,IO+Q.IOPL+4	;TWO LINE FEEDS AND CARRIAGE RETURN   1064   1065	004326				20$:	DIR$	#IO,DIRERR	;OUTPUT MESSAGE   1066   1067   1068   1069					;   1070					; GET REPLY   1071					;   1072   1073	004342	005700 				TST	R0		;DO WE NEED A REPLY?   1074	004344	001447 				BEQ	99$		;IF EQ - NO   1075   1076	004346	012767 	020040 	177612 		MOV	#"  ,RECBUF   1077	004354	012767 	020040 	177606 		MOV	#"  ,RECBUF+2   1078	004362	012767 	020040 	177602 		MOV	#"  ,RECBUF+4   1079   1080	004      370	005767 	177570 			TST	TERFLG		;IS TERMINAL CURSOR CONTROLLED?   1081   1082	004374	001014 				BNE	30$		;IF NE - NO   1083   1084					;   1085					; POSITION CURSOR   1086					;   1087   1088	004376	012767 	004204'	177544 		MOV	#LINE24,IO+Q.IOPL ;ADDRESS OF CURSOR CONTROL CHARACTERS   1089	004404	012767 	000010 	177540 		MOV	#10,IO+Q.IOPL+2	;NUMBER OF CHARACTERS   1090	004412					DIR$	#IO,DIRERR	;POSITION CURSOR   1091   1092   1093	004426	012767 	000000G	177502 	30$:	MOV	#IO.RVB,IO+Q.IOFN ;READ VIRTUAL       BLOCK - FOR NON CURSOR CONTROLLED   1094   1095	004434	012767 	004166'	177506 	40$:	MOV	#RECBUF,IO+Q.IOPL ;ADDRESS OF REPLY BUFFER   1096	004442	012767 	000010 	000016 		MOV	#10,Q.IOPL+2	;SIZE OF REPLY MESSAGE   1097TRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 15-2COMMUNICATION WITH USER ROUTINE   1098	004450					DIR$	#IO,DIRERR	;ASK FOR THE REPLY   1099   1100   1101	004464				99$:   1102	004464	000207 				RETURN   1103   1104   1105		000226'				.END 	DEMOTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 15-3      SYMBOL TABLEALL.TR  003336RG 	F.CHR = 000075   	JSTFY   004024RG 	Q.IOEF= 000006   	S.PWES= 000022AST.ST  003216R  	F.CNTG= 000034   	LINE23  004176R  	Q.IOFN= 000002   	S.PWTN= 000002A.LULU= 000002   	F.DFNB= 000046   	LINE24  004204R  	Q.IOLU= 000004   	S.PWUG= 000015A.LUNA= 000004   	F.DSPT= 000044   	LOCKED  002356R  	Q.IOPL= 000014   	S.PWUM= 000014A.LUNU= 000006   	F.DVNM= 000134   	LOOP    000362R  	Q.IOPR= 000007   	S.PWVT= 000030BUFCTR= 000016RG 	F.EFBK= 000010   	L7      000762R  	Q.IOSB= 000010         	S.PWXX= 000006BUFPTR= 000014RG 	F.EFN = 000050   	L8      001010R  	RCST    001222R  	TCALLS  002362RCACHE   002436R  	F.EOBB= 000032   	MAXBS   002136R  	RCVBUF  001242R  	TCPU    002060RCACHMG  002401R  	F.ERR = 000052   	MEMTYP= ****** GX	RCVDAT= 001246RG 	TERFLG  004164RCACLOC  002374R  	F.FACC= 000043   	MEM1  = ****** GX	RDB     000166R  	THITS   002366RCADR    002370R  	F.FFBY= 000014   	MEM3  = ****** GX	RECBUF  004166RG 	TIMBUF  001404RCALLS   002360R  	F.FNAM= 000110   	MIN     001576R  	RSUM          001202R  	TIMLOC  001424RCD    = 000131 G 	F.FNB = 000102   	MSGE  = ****** GX	RS.ATT= 000040   	TIMMSG  001432RCMDAST  003222R  	F.FTYP= 000116   	MSG1    001012R  	RS.CRR= 100000   	TIT     000042RCMDBUF  003316R  	F.FVER= 000120   	M.KTAE= 000010   	RS.DEL= 000010   	TIT1    000050RCMDFLG  000104R  	F.HIBK= 000004   	M.KTEF= 000002   	RS.EXT= 000004   	TOTALS  002140RCMDLEN= 000050   	F.LUN = 000042   	M.KTMG= 000004   	RS.MDL= 000200   	TRANS = ****** GXCMDLIN  000116R  	F.MBCT= 000054   	M.KTUN= 00000      6   	RS.NDL= 000100   	TSKLOC  002010RCMDS    003340R  	F.MBC1= 000055   	NAM     001012R  	RS.NEX= 000020   	TSKNAM  002016RCOMMUN  004214RG 	F.MBFG= 000056   	NEWSEC  001574R  	RS.RED= 000001   	TSTDSP= ****** GXCPU     002062R  	F.NRBD= 000024   	NXTTSK  002030R  	RS.UNM= 040000   	UNLCKD  002354RCPUCNT  002066R  	F.NREC= 000030   	N.DID = 000024   	RS.WRT= 000002   	UNSTP   000762RCPULOC  002042R  	F.OVBS= 000030   	N.DVNM= 000032   	R.CSBF= 000006   	UPD.FR  000110RCPUMSG  002047R  	F.RACC= 000016   	N      .FID = 000000   	R.CSTN= 000002   	UPNUM   001612RCPU.CL  002064RG 	F.RATT= 000001   	N.FNAM= 000006   	R.GID = 000000   	UPTEND  002006RCSIZE   002372R  	F.RCNM= 000034   	N.FTYP= 000014   	R.GLGH= 000020   	UPTIM   001602RC.LEEF= 000002   	F.RCTL= 000017   	N.FVER= 000016   	R.GNAM= 000004   	UPTIME  001632RC.RABA= 000002   	F.RSIZ= 000002   	N.NEXT= 000022   	R.GPAR= 000010   	USTP    001232RC.RRBA= 000002   	F.RTYP= 000000   	N.STAT= 000020   	R.GPRO= 000016   	U.STTN= 000002DAT     000706R  	F.SEQN= 00      0100   	N.UNIT= 000034   	R.GSIZ= 000002   	WAIT1   000030RDEAD    002352R  	F.SPDV= 000072   	OLDSEC  001572R  	R.GSTS= 000014   	WDB     000206RDEMO    000226R  	F.SPUN= 000074   	OUTBUF  003046RG 	R.SUTN= 000002   	WS.CRW= 100000DIRERR  004134RG 	F.STBK= 000036   	OUTCHR  003014R  	SCRTOP  000636R  	WS.DEL= 000010DSFUN = 000002R  	F.UNIT= 000136   	OUTFIL  003206R  	SDAT    001210R  	WS.ELW= 020000DSPFLG  000106R  	F.URBD= 000020   	OUTLIN  002754RG 	SEC     001570R  	WS.EXT= 000004DSTIM   001500R  	F.VB      N = 000064   	OUTPUT  000000RG 	SNDBUF  001240R  	WS.MAP= 000200DS.TYP  000112R  	F.VBSZ= 000060   	PARNME  001012R  	STATUS  000076R  	WS.RCX= 000100EL    = 000113 G 	G.TICP= 000016   	POOEND  002350R  	SUMMRY= ****** GX	WS.RED= 000001ERROR   001030R  	G.TICT= 000014   	POOL    002130R  	SUM1  = ****** GX	WS.RRF= 010000ERR1    003266R  	G.TIDA= 000004   	POOLIN  002176R  	SUM3  = ****** GX	WS.UNM= 040000ES    = 000112 G 	G.TIHR= 000006   	POOLMG  002151R  	SUM4  = ****** GX	WS.WRT= 000002ESC   = 000033 G 	      G.TIMI= 000010   	POOLOC  002144R  	S.BFHD= 000020   	WS.64B= 000400FA.SHR= ****** GX	G.TIMO= 000002   	PRCNT   002732R  	S.DABA= 000006   	W.NAPR= 000001FD.RWM= ****** GX	G.TISC= 000012   	PROMPT  003254R  	S.DAEF= 000010   	W.NBAS= 000002FO.RD = ****** GX	G.TIYR= 000000   	PRTAST  000744RG 	S.DATN= 000002   	W.NID = 000000FRAGS   002142R  	HELP  = ****** GX	PRTFLG  000102R  	S.FATT= 000016   	W.NLEN= 000012F.ACTL= 000076   	HITS    002364R  	PRT.OK  000114RG 	S.FDB = 000140   	W.NLGH= 000020F.ALOC= 000040         	HO    = 000110 G 	PUTNUM  004104RG 	S.FNAM= 000006   	W.NOFF= 000010F.BBFS= 000062   	HOURS   001600R  	P.ALLO= ****** GX	S.FNB = 000036   	W.NRID= 000006F.BDB = 000070   	HRM     001624R  	P.DEAD= ****** GX	S.FNBW= 000017   	W.NSIZ= 000004F.BGBC= 000057   	IE.ITS= ****** GX	P.HIT = ****** GX	S.FNTY= 000004   	W.NSRB= 000016F.BKDN= 000026   	IO      004134R  	P.NAM = ****** GX	S.FTYP= 000002   	W.NSTS= 000014F.BKDS= 000020   	IO.ATA= ****** GX	P.NUM = ****** GX	S.NFEN= 000020   	W.TSEF= 000002F.BKEF= 00      0050   	IO.RVB= ****** GX	QFDB    001042RG 	S.PWCA= 000024   	$CBDMG= ****** GXF.BKP1= 000051   	IO.WAL= ****** GX	QFLUN = 000003   	S.PWCL= 000026   	$CRAVL= ****** GXF.BKST= 000024   	IO.WVB= ****** GX	QUEINI  001300R  	S.PWEA= 000020   	$DAT  = ****** GXF.BKVB= 000064   	IS.SET= ****** GX	Q.IOAE= 000012   	S.PWEF= 000016   	$DIV  = ****** GXTRAX DEMO	MACRO M1110  05-FEB-79 15:26  PAGE 15-4SYMBOL TABLE$DSW  = ****** GX	$$PRI = 000000   	$$$OST= 000020   	.FINIT= ****** G 	...PC2= 001202R$MUL  = ****** GX   ~  	$$$   = 000330R     002	$$$T1 = 000067   	.FSRCB= ****** G 	...TPC= 000020$TIM  = ****** GX	$$$ARG= 000000   	$$$T2 = 000014R     002	...PC1= 001042R. ABS.	000000	   000      	004466	   001$DPB$$	000360	   002$$FSR1	000000	   003ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  7815 WORDS  ( 31 PAGES)DYNAMIC MEMORY:  9316 WORDS  ( 35 PAGES)ELAPSED TIME:  00:01:56DEMO,DEMO.LST/-SP=DEMO ~         Õó`ÌÁ› 8$     ®   DEMOTS  /PR /CP, DEMOTS/-SP /MA  =DEMO34,TST34,MISC,INCLTS,LB0:[1,24]QMG/LB:QMGSYM,LB0:[1,54]KERNEL.STB/SS,LB0:[1,1]TPSCOM.STB/SS,LB0:[1,1]TPSODT/DA,/GBLDEF=$$CPU:70WNDWS=1//®          Õó`xQÁ› 8$        DEMOTS.TSK;2   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     12-FEB-79   21:27



PARTITION NAME : GEN   
IDENTIFICATION : V1.0  
TASK  UIC      : [300,30]
STACK    LIMITS: 120222 121221 001000 00512.
ODT XFR ADDRESS: 134026
PRG XFR ADDRESS: 121644
TASK ATTRIBUTES: CP,PR             
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 4544. WORDS
TASK ADDRESS LIMITS: 120000 141527
R-W DISK BLK LIMITS: 000002 000023 000022 00018.

*** ROOT SEGMENT: DEMO34


R/W MEM  LIMIT      S: 120000 141527 021530 09048.
DISK BLK LIMITS: 000002 000023 000022 00018.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 121222 011300 04800.
                          121222 006672 03514. DEMO   V1.0   DEMO34.OBJ;1
                          130114 001120 00592. TST    V1.0   TST34.OBJ;2
                          131234 000556 00366. MISCEL V1.0   MISC.OB      J;3
                          132012 000024 00020. .MAIN.        INCLTS.OBJ;1
                          132036 000216 00142. CBTA   04.2   SYSLIB.OLB;10
                          132254 000246 00166. EDDAT  02     SYSLIB.OLB;10
$DPB$$:(RW,I,LCL,REL,CON) 132522 000030 00024.
                          132522 000030 00024. DEMO   V1.0   DEMO34.OBJ;1
$$FSR1:(RW,D,GBL,REL,OVR) 132552 000000 00000.
                          132552 000000 00000. DEMO   V1.0   DEMO34.OBJ;1
                          132552 0      00000 00000. FCSFSR 0303MS SYSLIB.OLB;10
$$FSR2:(RW,D,GBL,REL,CON) 132552 000104 00068.
                          132552 000104 00068. FCSFSR 0303MS SYSLIB.OLB;10
$$RESL:(RW,I,LCL,REL,CON) 132656 000164 00116.
                          132656 000104 00068. FINIT  0102MS SYSLIB.OLB;10
                          132762 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
                          132762 000024 00020. SAVRG  03     SYSLIB.OLB;10
                          133006 000034 00028. SAVR1  0101   SYSLIB.OL      B;10
$$$ODT:(RW,I,GBL,REL,OVR) 133042 006466 03382.
                          133042 006466 03382. ODTRSX M04    TPSODT.OBJ;1



GLOBAL SYMBOLS:

ACBD   130072-R  CCBNXT 131520-R  DIRERR 127706-R  IE.ACT 177771    IS.SUC 000001    MSGE   132034-R  OUTLIN 126114-R  
APPSUM 132032-R  COMMUN 127332-R  DSKSUM 132030-R  IE.ITS 177770    JSTFY  127770-R  N.OVPT 000054    OUTPUT 121412-R  
BUFCTR 121430-R  COM.AD 125430-R  FA.SHR 000040    IO.ATA 001410    JSTFY1 127756-R  OF.HIT 121602-R  PRCNT  130050-      R  
BUFPTR 121426-R  CSIZE  125434-R  FD.RWM 000001    IO.RVB 010400    MEM    132012-R  OF.RD  121576-R  PRT.OK 121572-R  
CADR   125432-R  CYCLE  121574-R  FO.RD  000001    IO.WAL 000410    MEMINI 132016-R  OF.WRT 121600-R  P.ALLO 000030    
CCBINI 131342-R  C.CSIZ 000040    HELP   132022-R  IO.WVB 011000    MEMSUM 132026-R  OUTBUF 126172-R  P.DEAD 000024    
DEMOTS.TSK;2   MEMORY ALLOCATION MAP  TKB             PAGE 2
DEMO34               12-FEB-79   21:27



P.HDR  000032    QE.QDF 000106    Q      S.FSA 000040    Q.JCFI 000022    Q.SFL  000016    T.ACTL 000052    $OTSV  000052    
P.HIT  000020    QE.QEA 000100    QS.FSD 000100    Q.JFI  000020    Q.SFO  000017    T.ASTL 000016    $PARHD 006314    
P.NUM  000016    QE.QMD 000104    QS.FSF 000010    Q.JFO  000037    Q.SLEN 000020    T.NAM  000006    $RQSCH 001554    
QE.BDT 000120    QE.QNE 000102    QS.FSI 000020    Q.JLFI 000022    Q.SNAM 000000    T.PCB  000046    $SAVRG 132762-R  
QE.BQN 000134    QE.RED 000124    QS.FSJ 000004    Q.JLNK 00000      0    Q.SNUM 000005    T.STAT 000032    $SIZE  000174    
QE.BSN 000077    QE.REQ 000131    QS.SBA 000200    Q.JLPP 000036    Q.SST  000004    T.ST2  000034    $TCPU0 001574    
QE.DIR 000117    QE.ROP 000115    QS.SHJ 000004    Q.JMXP 000026    Q.SUCB 000010    T2.AST 100000    $TCPU1 001576    
QE.DNE 000121    QE.SDF 000107    QS.SLC 000020    Q.JNAM 000004    Q.SUIC 000014    T2.DST 040000    $TIM   132376-R  
QE.IAR 000116    QE.SEA 000101    QS.SMD 000100    Q.JNPP 000024    RCVDT  123442-R  T2.SPN       000004    $TKTCB 001546    
QE.IDB 000133    QE.SEX 000001    QS.STO 000040    Q.JPRI 000034    RECBUF 127302-R  T2.STP 000020    $VEXT  000056    
QE.IFC 000001    QE.SMD 000105    QS.SWI 000010    Q.JQ   000010    SCBINI 131574-R  T2.WFR 000001    $$CPU  000070    
QE.IID 000150    QE.SNE 000103    QS.SXE 000002    Q.JQL  000033    SCBNXT 131660-R  $BASE  000172    .ACTTB 000204    
QE.IJS 000146    QE.TYP 000110    QUEINI 123476-R  Q.JSEQ 000002    ST.NAT 000004    $CBDAT 132036-R  .CCBBA 000226          
QE.INM 000151    QE.UNL 000123    QUESUM 132024-R  Q.JSY  000012    SY.TST 000006    $CBDMG 132044-R  .CCBLH 000222    
QE.IO  000114    QFDB   123236-R  QUE.ST 123474-R  Q.JTI  000016    S.CML  000045    $CBDSG 132052-R  .FINIT 132656-R  
QE.JEA 000111    QF.ADE 000200    Q.FATT 000011    Q.JUIC 000014    S.FLOD 000070    $CBOMG 132060-R  .FSRCB 132552-R  
QE.JNE 000112    QJ.ABL 000040    Q.FCPN 000030    Q.QASS 000006    S.IO   000076    $CBOSG 132066-R  .FSRPT 000050    
QE.MEX 000132    QJ.AFL 00      0100    Q.FDEV 000006    Q.QCJL 000012    S.LINK 000040    $CBTA  132116-R  .MBFCT 132652-R  
QE.NAV 000125    QJ.AHJ 000004    Q.FFN  000014    Q.QHJL 000016    S.MCT  000016    $CBTMG 132074-R  .ODTL1 133300-R  
QE.NFS 000113    QJ.ALC 000020    Q.FJ   000004    Q.QLEN 000020    S.MXSZ 000056    $CBVER 132060-R  .ODTL2 133302-R  
QE.NJE 000145    QJ.ARE 000200    Q.FLNK 000000    Q.QNAM 000000    S.NAM  000000    $CRAVL 006256    .SAVR1 133006-R  
QE.NPS 000127    QJ.AWI 000010    Q.FNC  000026    Q.Q      NUM 000005    S.SAT  000014    $CXDBL 001551    .SCBTA 000156    
QE.NP0 000130    QQ.SBA 000200    Q.FNCP 000027    Q.QOJL 000010    S.TLOD 000066    $C5TA  006524    .SCBTS 000166    
QE.NVT 000144    QQ.SMD 000100    Q.FSEQ 000002    Q.QST  000004    S.TYP  000017    $DAT   132320-R  .SCBTT 000164    
QE.OFL 000122    QQ.STO 000040    Q.FUFD 000012    Q.QTJL 000014    TRANS  132020-R  $DIV   017256    .SCBTZ 000160    
QE.OJD 000002    QS.FFO 000200    Q.JAFT 000030    Q.SASS 000006    TRINIT 132014-   ’  R  $DSW   000046    ..FINI 132666-R  
QE.PRI 000053    QS.FNF 000001    Q.JATT 000035    Q.SCJ  000012    TSTDSP 130572-R  $MUL   017224    




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 36570.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 2560. WORDS (10. PAGES)

    ELAPSED TIME:00:00:35
’         ›rjL¢_Á› 8$         øÀ  N         V   C   &  xá ˆ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        k˜:R "+"Ÿ   +"»   +"Ì   +"¬   +".   +"1   +"y   +"¨   +"L	   +"r	   +"w	   +"K   +"R   +"n   +"Þ   +"   +"   +"Ï   +"J   +"   +"   +"³   +"   +"•   +"   +"+   +"6   +"Ô   +"Þ   +"z   +"   +"6   +"B   +"…   +"0   +"X   +"„!   +"†!   +"ž!   +"K"   +"#   +"#   +"ª%   +"«%   +"`&   +"ì&   +"g'   +"k'   +"´'   +"¶'   +"½'   +"è'   +"Ô(   +"v8   +"ø8   +"99   +"`:   +"y:   +"¨:   +";   +"A;   +"E   +"¡E         +"–G   +"ÒG   +"6K   +"\K   +"iK   +"€K   +"àK   +"[M   +"xQ   +"üR   +"T   +"#T   +"µW   +"NX   +"ìX   +"Z   +"N`   +"”`   +"—`   +"çe   +"kf   +"Ýf   +"æf   +"ªp   +"«p   +"¼p   +"Öp   +"Zq   +"`q   +"qq   +"}q   +"kr   +"žr   +"¶r   +"¼r   +"èr   +"s   +"fs   +"ys   +"’s   +"¢s   +"™w   +"x   +"Bx   +"ëy   +"»z   +"Õ   +"ø€   +"–ƒ   +"R†   +"ZŠ   +"ä‹   +"š   +"«‘   +"L’   +"*–   ë%Ã   ë%ì   ë%÷   ë%k   ë%n   ë%D   ë%   ë%ç         ë%]   ë%Ô   ë%z   ë%ë   ë%ì&   ë% '   ë% '   ë%®(   ë%œ,   ë%ø8   ë%¼@   ë%éQ   ë%üR   ë%NX   ë%ôX   ë%kf   ë%Þf   ë%\g   ë%Iq   ë%Kq   ë%Tq   ë%t   ë%'t   ë%iw   ë%™w   ë%ly   ë%íy   ë%z   ë%   ë%   ë%Ý   ë%Þ   ë%æƒ   ë%Ä…   ë%º‰   ë%sŠ   ë%ü   ë%™’   ë%¤’   kKn   ëWn   ùaà8   ùa;   ùa0M   ùa¨M   ùaÆM   ùaÇM   ùa@`   úaà8   úa;   úa¸G   úaàG   úaþG   úaÿG   úaÐH   úa¸L   úaÖL   úa×L   úa0M   úaøM   úa(d   úaøf   úa0„   ûa          ûa`^   ûaÀ€   üap   üax   üaè!   üa°"   üa`'   üaà8   üa¨W   üaxZ   üa€   üaÐ‰   üaèŠ   ýa    ýaèv   ýa x   ýa¸y   þa   þa¸   þa"   þa>   þa?   þaà8   þa«:   þa¸:   þaL   þa¨W   þaÐW   þaxZ   þa@`   þa<a   þa:d   þaÐz   þa°   þaØ   þa ‚   þa(‚   þaP‚    b    bp   bx   bè&   b`'   b(x   b,x   b`Y   bp   bˆY   bpq   bÐz   bp   b    b8^   bV^   bW^   bÐz   b`‹   bø   bp   b`r   b°r   bÎr   bÏr   bxs         bH   bè]   bx_   b`   bØw   b …   b ™   b˜q   b¸`   bÖ`   b×`   bØ`   bÙ`   bÚ`   bÛ`   bÜ`   bÝ`   b˜q   br   bØr   b°‹   
b¸   
bQ	   
b`	   
b"   
b>   
b?   
bp   
b    
b0    
b¨%   
bè&   
b'   
b'   
b'   
bˆ'   
bP2   
b«:   
b¸:   
bðK   
b@`   
b<a   
b:d   
bèv   
b x   
b¸y   
bÐz   
bp€   
b°   
bØ   
bö   
b ‚   
b(‚   
bP‚   
bx‚   
b ‚   
bÈ‚   
bð‚   
bƒ   
bÐ‰   
b°‹   bÐ4   bP<   bn<         bo<   bp<   bq<   br<   bs<   bt<   bu<   bø   bp€   b¸G   bp   bÐz   b _   b8   b   ëpQ	   ëpì   ëpW   ëpY   ëpl   ëpn   ëpž!   ëp,&   ëp 5   ëp¡E   ëpÝE   ëpìE   ëpYM   ëp[M   ëpcM   ëp{Q   ëp;Y   ëpYY   ëp7[   ëp—`   ëp°p   ëpqq   ëpkr   ëp™w   ëp®„   ëp+…   ëpü   ëp   ëpÙš   ëp›   #zX   #zø8   #zkr   #zfs   #zz   k–»   k–,   k–Ð   k–Ò   k–   k–ç   k–´   k–<   k–,   k–X   k–ú%   k–²2   k–Ô4   k–y:         k–:   k–’:   k–¡E   k–´H   k–4K   k–^K   k–µW   k–ÔZ   k–+d   k–Üf   k–ßf   k–yq   k–Ôx   k–çy   k–z   k–"…   k–J†   k–Þ‰   ô¨"  ô ô¨Œ! à ô¨Î  ô¨  ô¨V! xô¨š:# d ô¨ªH  ô¨úW  ô¨8^• Ðû¨OM$ *û¨VN$ *©`T˜ f©€Tw © • Ð©€° Z ©¤’µ Æ ©Šµ Æ ©Gµ Æ ©òƒ» º"©ðs™ 8 #©àeš ¼#© sœ Z 9© & ¸9©ë3& ¸9©˜Kx 9©àM´ B ;©EM( ô ;©OM( ô ;©PM( ô ;©æ_à <@©ôD) bC©O b D C©z) ´ D©ö`C Ö D©bb ä D©Åby  D©íbœ Î D©cœ Î D©Mw) bD©þ}>   E©¶H* äE©ÆH* äE©ÇH* äE©ÈH* äE©ÉH* äG©¶ZC Ö       G©]\c ° G©…\y æG©­\à <H©$`  J©—d œ J©˜z ¢J©™ž ( J©Å, ¾J©v"C Ö J©$f jJ©E${ ¨J©m$Ÿ œ J©|—. €c©%( ô c©È_( ô e©6NC Ö e©ÝOg f e©P| È e©-PŸ øe©€‰G L i©öyC Ö i©{h r i©Å{}  i©í{¡ P i©|¡ P l©,x¡ zp©Åœ0 T s©`"£ ª š©õ
4 X  ©ô&e ä  ©¿.e ä  ©Iqe ä  ©Fye ä  © }5   ©À}} ¨  ©S~e ä  ©µ7 l  ©ñe ä  ©™’e ä ´©œw¯ 2 ¹©@X~ ô ¹©¶ZC Ö ¹©]\k (¹©…\~ ô ¹©­\£ r¼©õ‡; Ô ¼©ù‡; Ô ¾©HG L ¾©Ó¤ NÀ©h	¥ `Â©õ#; Ô Â©ù#; Ô Â©¨%¦ 4Â©¡E§ 0 Â©,`¨ þÂ©qq© ¼Â©ðsª Â©™w« PÃ©`"= ¶ Ã©i"< ^Ã©"l |Ã©€"  Ã©Ú}= ¶ Ú©ðGB °       Ú©¶Kh @Ý©[}A LÝ©6€C Ö Ý©Ýk (Ý©‚€ ” Ý©-‚¬ @ Þ© ¬ @ ã©,#­ ¸ ê©ÈB ° ê©2g® Ž ë©`"¯ 2 ë©"l |ë©€"  ì©Wm b ì©Kq¯ ô í©SZh @,ªPdB ”.ªKC 0 .ªþKC 0 3ª(#° Z 3ª¨³ Z ;ªh´ B ;ªà8µ Æ =ªx¸ œ =ªhº ¨ =ªÐ» º@ªW° Z @ªY° Z @ª—`° Z Šª0 ¾ ®‹ªàe¿ > ³ª4}P îÉª°hF ¢ ÉªØhF ¢ Ìªa	F xÎªÐWG L Óªø8Á ÂÓªz) ´ ÓªèH  ØªWm b Þª¡EÁ î òªàGÄ :«Wm b «µE Â («v"C Ö («$n | («E$ («m$Å  («XI \ B«¶Ko  I«„–Å .O«™wÆ O«•yÇ  R«°'J ò R«³'J ò S«`"Ê S«"q V S«€"  –U«SZq ÎU«6€C Ö U«Ýr ðU«‚" * U«-‚Ë Ú ”«€P î      ”«‡P î”«X @•«õ
R "•«Òµ Æ •«µO; Ô —«ç>   —«è>   —«é>   œ«Ws @œ«X @œ« L &œ«ZXL &œ«wM Ö«¯* 4«&+ ê«•, š «Ô/ 0 «{/ à «/ ’«"3 \«#6 À«ö&; $ «u': º «U(: º «œ,A œ «v:D «T[: º «E`H «\gK Ð «IqT  «Tq: º «!tL z «êvN « wN ª«)xC Ö «6xD «Ay: º «ŸzN ª«¶{C Ö «¸{C Ö «º{C Ö «¼{C Ö «¾{C Ö «å\ F «Ä…] < «ñ] ì «™’T  Ÿ«à`Í ¢ «x° Z  «ƒKÏ h  «_MÏ ¦£«`"g ø £«i"O h £«Ú}g ø ¤«P   ¤«ÎP   ¤«P   ¤«VP ú ¤«ªHP   ¤«úWP   §«õ<T  §«`TE Â ¨«»U À ¨«¯U À       ¨«•W š¨«lY „¨«„!Y „¨«´'Y „¨«üR[ ² ¨«žrY „¹«]Œ[ ”¼«8Ñ 0 ¿«vK €Ã«ôÒ Ã«KqÓ È«õ
E Â È«`TE Â È«LqÁ î Ê«ðsÔ  Ë«àeÔ ¢ Î«a(U À ò«ˆt þ 
¬¶Ku ‚ ¬ÀÕ Ð ¬¸L\ ò ¬6C Ö ¬Ýv ¸ ¬# @¬-Ö v ¬ðsÙ È ¬€"  –¬"Ú hY¬T}k ° Y¬±}k ° Y¬Ð] þZ¬àGÛ Þ h¬8L% ² h¬_MÜ  j¬˜ @j¬õ<R "l¬‡P îl¬ÀP îl¬Nv â¬°'^ 

­WTC Ö 
­XTC Ö ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ›rµz   1u  1up;‹ P 1uTK  ô 1ucK! à 1u¢K! x1uwL# d 1u®x$ *1uo†& 63uÀ& ¸3u®( ô 3u05† ü3uÅG) ´ 3u…K) b3ukM* 43uS* ä3uþ_+ ê3uIq, š 3u|q, ¾3uIt. €4u%!/ 0 4u;;/ à 4uH;/ ’4u0g‹ ü 4uëg0 T 5u»p3 \5u|q4 X 5uË– þ 5u™e ä 5u$™5  5u%™6 À5u0™… & 5u>™7 l 6u": º 6ut:; $ 6uMq; Ô 6u‘w< ^6uœw= ¶ 7uÔ>   7u`"A œ 7ub"A L7u2gB ° 9u‚B ”9uf'C 0 9uÁSC Ö 9uüXD =ulE Â =uÃF ¢ =u<F x=u²'G L =uYHH  =u0gŠ P ?uÖdH ?uüdI \ @u~qJ ò @u`†K Ð Bu0Š JBu–K €Buá"L z Bu€KL &BuúMM ÖBu0Nˆ €Bu9TN Bu=TN ª      Bu‘wO h Bu›wg ø Buœwƒ &Buz}P   Bu¢}P ú BuP îBuR "BuT  Bu6‘T  Bu+–U À BuŠ–W šBu©–Y „Bu˜[ ² CuÂ	[ ”DuÖs\ F EukY\ ò Eu¡d] < Gu¼] ì Gub	„ Gur	] þGuc}k ° Gu0€† ò Huþd^ 
[uŽEb D [ukMb ä [u `c ° [uqd œ [u|qf j\u%!g f \u;;h r _udh @_u`"k (_uœwl |fu[–m b guüdn | hudo  huœwq V hu‚…q Îhu`†r ðju[Ks @luÖst þ mudu ‚ mu¡dv ¸ ouó~v â‚uœ'w ƒu#x ƒukMy  ƒu `y æƒuqz ¢ƒu|q{ ¨„u%!| È „u;;}  …u$™} ¨ †ut:~ ô ‡u`"€ ” ‡uœw  ‰uC^ @uüd uœw  –u`†" * •u¡d# @—uçe% ² ©u[M• Ðªuœ'˜ f      ªufs™ 8 ªuLyš ¼ªu¤yœ Z «ukMœ Î «u `à <«uqž ( «u|qŸ œ ¬u%!Ÿ ø¬u;;¡ P ¬uN¡ z¬uœw£ ª ®ut:£ r®u2X¤ N®u<d¥ `®uqq¦ 4®u=r§ 0 ®uçr¨ þ®uVs© ¼®ufsª ®u}s« P¯u`"¬ @ ¯u¡E­ ¸ ¯us® Ž ¯uœw¯ 2 ¯uÕ¯ ô ±u¡E° Z ±u±H³ Z ±uiw´ B ±u,xµ Æ ±uãƒ¸ œ ±uéƒº ¨ ±uòƒ» º³uNq¾ ®³uLy¿ > µu;;Á î µu,FÁ Â¶uLÄ :·uüdÅ  ¸u<Å .¸u½`Æ ¸uÊ`Ç  ¸uœwÊ ¸u`†Ë Ú ¸up†  ºu,`Í ¢ºuãeÏ h ºuçeÏ ¦ºu°x• H ºuµx• »u[Ñ 0 »ulEÒ »u•GÓ »ufsÔ  »uLyÔ ¢ ½uø8Õ Ð ½u¡dÖ v ½u0g‘ D½ufsÙ È ½uœwÚ h¿uLÛ Þ ¿uçeÜ  ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           M   PÀ…á*  ›rµz    PÀ…á   ¯”L  +"ŸHðÿ+"»Hàÿ*  +"ÌHÐÿ+"¬HÀÿ+".H°ÿ+"1H ÿ+"yHÿ*  +"¨H€ÿ+"L	Hpÿ+"r	H`ÿ+"w	HPÿ+"KH@ÿ*  +"RH0ÿ+"nH ÿ+"ÞHÿ+"Hÿ+"H ÿ*  +"ÏHðþ+"JHàþ+"HÐþ+"HÀþ+"³H°þ*  +"H þ+"•Hþ+"H€þ+"+Hpþ+"6H`þ*  +"ÔHPþ+"ÞH@þ+"zH0þ+"H þ+"6Hþ*  +"BH þ+"…Høý+"0Hðý+"XHàý+"„!HÐý*  +"†!HÀý+"ž!H°ý+"K"H ý+"#H˜ý+"#Hý*  +"ª%H€ý+"«%Hpý+"`&H`ý+"ì&HXÿ+"g'HPý*  +"k'H@ý+"´'H0ý+"¶'H ý+"½'Hý+"è'H ý*  +"Ô(H      ðü+"v8Hàü+"ø8HÐü+"99HÀü+"`:H°ü*  +"y:H ü+"¨:Hü+";H€ü+"A;Hpü+"EH`ü*  +"¡EHPü+"–GH@ü+"ÒGH0ü+"6KH ü+"\KHü*  +"iKH ü+"€KHðû+"àKHèû+"[MHàû+"xQHÐû*  +"üRHÀû+"TH°û+"#TH û+"µWHû+"NXH€û*  +"ìXHpû+"ZH`û+"N`HPû+"”`H@û+"—`H0û*  +"çeH û+"kfHû+"ÝfH û+"æfHðú+"ªpHàú*  +"«pHÐú+"¼pHÀú+"ÖpH°ú+"ZqH ú+"`qHú*  +"qqH€ú+"}qHpú+"krH`ú+"žrHPú+"¶rH@ú*  +"¼rH0ú+"èrH ú+"sHú+"fsH ú+"ysHðù*  +"’sHàù+"¢sHÐù+"™wHÀù+"xH°ù+"BxH ù*  +"ëyHù+"»zH€ù+"ÕHpù+"ø€H`ù+"      –ƒHPù*  +"R†H@ù+"ZŠH0ù+"ä‹H ù+"šHù+"«‘Hù*  +"L’H ù+"*–Hðøë%ÃH@ ë%ìH ë%÷H  *  ë%kH ë%nHP ë%DH ë%H ë%çH€ *  ë%]H@ ë%ÔH ë%zH0 ë%ëH ë%ì&H *  ë% 'H ë% 'H@ ë%®(H ë%œ,H ë%ø8H  *  ë%¼@H  ë%éQH ë%üRH ë%NXH ë%ôXH@ *  ë%kfH ë%ÞfH ë%\gH ë%IqH" ë%KqH *  ë%TqH ë%tH ë%'tH ë%iwH ë%™wH  *  ë%lyH  ë%íyH ë%zH ë%H ë%H *  ë%ÝH ë%ÞH ë%æƒH  ë%Ä…H ë%º‰H *  ë%sŠH ë%üH ë%™’H ë%¤’H! kKnH *  ëWnH  ùaà8H ùa      ;H ùa0MH ùa¨MH
 *  ùaÆMH
 ùaÇMH ùa@`H	 úaà8H  úa;H  *  úa¸GH1 úaàGH& úaþGH& úaÿGH( úaÐHH *  úa¸LH
 úaÖLH
 úa×LH úa0MH úaøMH. *  úa(dH úaøfH úa0„H ûa H ûa`^H  *  ûaÀ€H üapH üaxH3 üaè!H üa°"H2 *  üa`'H üaà8H üa¨WH* üaxZH- üa€H *  üaÐ‰H. üaèŠH ýa H ýaèvH ýa xH *  ýa¸yH þaH$ þa¸H þa"HF þa>HB *  þa?HD þaà8H þa«:HL þa¸:HN þaLH *  þa¨WH( þaÐWH þaxZH, þa@`H þa<aHH *  þa:dHJ þaÐzH0 þa°H8 þaØH: þa ‚H< *  þa      (‚H> þaP‚H@  b H bpH bxH2 *  bè&H b`'H b(xH b,xH b`YH$ *  bpH bˆYH bpqH bÐzH bpH *  b H3 b8^H bV^H bW^H bÐzH *  b`‹H bøH  bpH b`rH6 b°rH  *  bÎrH  bÏrH" bxsH bHH& bè]H *  bx_H b`H bØwH4 b …H
 b ™H *  b˜qH b¸`H bÖ`H b×`H bØ`H *  bÙ`H bÚ`H bÛ`H bÜ`H bÝ`H  *  b˜qH brH bØrH b°‹H 
b¸H *  
bQ	HP 
b`	H 
b"HF 
b>HB 
b?HD *  
bpH 
b H 
b0 H 
b¨%H      
 
bè&H *  
b'H 
b'H 
b'H 
bˆ'H 
bP2H" *  
b«:HL 
b¸:HN 
bðKH  
b@`H 
b<aHH *  
b:dHJ 
bèvH 
b xH 
b¸yH 
bÐzH *  
bp€H 
b°H, 
bØH. 
böH@ 
b ‚H0 *  
b(‚H2 
bP‚H4 
bx‚H6 
b ‚H8 
bÈ‚H: *  
bð‚H< 
bƒH> 
bÐ‰H* 
b°‹H bÐ4H *  bP<H" bn<H" bo<H# bp<H$ bq<H% *  br<H& bs<H' bt<H( bu<H) bøH *  bp€H b¸GH5 bpH bÐzH b _H *  b8H bH ëpQ	H€ ëpìH ëpWH *  ëpYH ëplH  ëpnHP ëpž!H ëp,&H *  ëp 5H ëp¡EH       ëpÝEH ëpìEH ëpYMH *  ëp[MH@ ëpcMH  ëp{QH ëp;YH ëpYYH *  ëp7[H  ëp—`H ëp°pH ëpqqH ëpkrH *  ëp™wH  ëp®„H  ëp+…H  ëpüH ëpH *  ëpÙšH@ ëp›H€ #zXH #zø8H #zkrH *  #zfsH #zzH k–»H k–,H k–ÐH *  k–ÒH k–H k–çH k–´H k–<H *  k–,H k–XH k–ú%H k–²2H k–Ô4H *  k–y:H k–:H k–’:H k–¡EH k–´HH8 *  k–4KH k–^KH k–µWH
 k–ÔZH k–+dH *  k–ÜfH
 k–ßfH k–yqH k–ÔxH
 k–çyH  *  k–zH k–"…H k–J†H	 k–Þ‰H     (          ›rµz(  ¯”          &M   PÀEÂ*  ‡uœw    PÀEÂ   ¯”L      (  ‡uœw(š   Ã©€"h ë©€"h  ¯”   
   ‡uœw  *    5
 ÃPùõ ?Ã@ùõ :  Ãpýðµ  *  & 2õµ  Ã0üW­  (Ã`üõ #Ãüôµ*  L    BÂe, 
Ü( Ã ÃÒ* 
 ÊEð ’¤*  r Ò 



R R 
¡ ‡ ôÅ@  õL ±   ˜ ‡        ÈM   SÀ¼*  ‰uC^    SÀ¼   ¯”L  9© @  C©z@  *   ©À}@  Éª°h@  œ« @  œ«ZX@  «êv@  *  5¬ ™@  Y¬T}@      (  ‰uC^(j”«Xh    œ«XhDj¬˜hN¯”   
   ‰uC^        *    &f¦æ 
ƒÜ( Á`@€," ,$ ‡w Ú *  & f& 
Á Â Ã ÷	Ì †õL óXúÿ÷	*  L   †Àðþ÷	  t ÷	  †õ ûL 5 5œ   Éª°h«êvC©z*  r 4 2p $ 2r " Â ÷	   ²#" ²- $   œ« *  ˜ ‚ 4
 ÷	¨ +W-2  õ@úL õ¥   *  ¾ õ°ýL õµ 4 õýL  4
 ÷	l 	*  ä Ã  ÃÁÁe  û	V †Æe ± ‡ –5ƒ‚€÷	  5¬ ™ ©À}ì 
 *  
  úÿ†Á"`úÁ"`úW,     9© *  0W,  ÷	  5
L ± ‡ Â ÷	  †Á
fL   Y¬T}œ«   VfN ÷	  µN µL ± ‡   
      œ«ZX       M   NÀÅç*  1u    NÀÅç   ¯”L  ¡«@  5¬ ™@  *      (  1u(T ô¨Îh" ô¨h ô¨ªHh    ô¨úWh H©$`h2 ¯”   
   1u  *    À @÷	& f÷	 ‡
Á
ý‡ À *  & Â  ‚€`w   &
  	Ž
   Ž
 0 Ž
  5¬ ™¡«  L €ÀÀ‡        ÜM   QÀEÂ*  uüd    QÀEÂ   ¯”L  9© @  C©z@  *  Éª°h@  œ«ZX@  «êv@  ¤«V@  Î«a(@  *  5¬ ™@  Y¬T}@      (  uüd(À («E$h  
  ¯”   
   uüd  *    ÷	   
Á Â 
÷	  úÿ†"`úÁ÷	  Î«a(      9© *  &   íõú 5 5÷	  †Àðþ÷	  ÷	  †õ  Y¬T}Éª°h «êv$C©z*  L  û 5
 %,t  õ0ù õ4r " 4p $ *  r 4h  4n  4l  4
& 5) 0 5   5 *  ˜ " 5( 1 Á÷	    ÷	  Ã  Ãf V  œ«ZX¤«V 5¬ ™  ¾ ‡        ¢ M   NÀEÛ*  1uTK    NÀEÛ   ¯”L  ô¨@      (    1uTK($ ô¨"h  ¯”   
   1uTK  (    Á ÷	  ‡£	  p  1 ¡ ‡   
ô¨       JM   PÀÅÎ*  uœw    PÀÅÎ   ¯”L      (  uœw(¾   S«€"h  ¬€"h* ¯”   
   uœw        *    Ãüõµ  Uõµ  Ã0üW­  KÃ`üõ*  &  FôÅ@    Ãpý°° <AÁe, 
Ü( Ã *  L ÃÑ* 	 ÉEð Q¤‘


—  
Q¤*  r Q Q 
Ãüôµ   Ãàùœ ÂÅðÿ—  *  ˜ * A-< ‚ A-< ¡ ‡ õL ± ‡        ˜ M   NÀÅÎ*  1ucK    NÀÅÎ   ¯”L  ô¨V@      (    1ucK( ô¨Œh  ¯”   
   1ucK      ´­  ƒ ÷	  ‡´Š ô‡   ô¨V       ² M   NÀÅÎ*  1u¢K    NÀÅÎ   ¯”L  ô¨"@  ô¨š:@  *  ¤«V@      (  1u¢K( ô¨Vh  ¯”   
   1u¢K      f÷	        ‡÷	  †÷	  ± ‡   ô¨"ô¨š:¤«V       :M   PÀ…È*  u`†    PÀ…È   ¯”L  ¹©@X@  Éª°h@  *  Ìªa	@  S«€"@  œ«X@  «êv@  « w@  *  j¬˜@      (  u`†(U«‚h  ¯”   
   u`†  *    Â ÷	  †w Ø õ¥   4
  4  ÷	    
S«€"(¹©@X*  & _‡ ÷	  †Àðþ÷	  m Ñ• õ¥ 0   Éª°h«êv*  L Q< Q= õ¥ 0   
Ü) Cm ÑÃ ÑÃ *  r Cí õ" Ã
BŠB" ÷	  C< B> ÷	    Ìªa	(Ìªa	*  ˜  4
 ñÕ 
 ÷	  ‡õ¥   4  4   œ«X*  ¾ 
 ôe 
 t õ L ôÅ      @  uL  uN  w *  ä   4
 4
 5

 5
 5
 5
& 5
(  4
  « w  
 ÷	  ß  j¬˜       Ü M   NÀÅÎ*  1uwL    NÀÅÎ   ¯”L  ô¨Î@  ¡«@  "      (  1uwL(J ô¨š:h  ¯”   
   1uwL  *    &f £	   ðµ  Àe ÷	  ÷	    "¡«(ô¨Î(  & €‡p 0Š
 ‚†ð• 
 Â° ¡ ‡        êM   PÀ…á*  •u¡d    PÀ…á   ¯”L  Éª°h@  Ìªa	@  *  œ«X@  «êv@  « w@  ¬€"@      (    •u¡d(ì ¬h  ¯”   
   •u¡d  *    Ã€þ-   -   c `õ0úN ñµ       
 *  & YÂ ÷	  T‡ ÷	  †Àðþ÷	  m Ñ•  ¬€"Éª°h «êv*  L  W­0  Q< Q= õ¥ 0   
Ü) Cm*  r  ÑÃ ÑÃ Cí õ" Á`B" ÷	  B> C  "Ìªa	*  ˜ < ÷	   ñÕ 
 4
 5 
 5  5    Ìªa	*  ¾ ÷	  ‡õ L uL  uN  w   õL 5

 5
  œ«X« w  ä  5
 ï       ˆM   QÀh×*  1u®x    QÀh×   ¯”L  $9õ8@  $9<M@  *  s©À@      (  1u®x(¾ û¨OMh  û¨VNh 
  ¯”   
   1u®x  *    A@ B A õû ± ‡ A& @ ”*  & Á ÔÁ 
¢: ÂÂÂ&”ÎEðÿ‚eõ       
 Ý ¦*  L f&æÿˆ‡¦B& r ² ‚Æå ‚¦*  r &æÿˆ´
  ‚ ´ µ2 F†õðû õ*  ˜    ×§    õ@þ ×§    õ ü ± ‡ ‡    s©À
s©À$9õ8s©À$9<M       „M   QÀ…È*  —uçe    QÀ…È   ¯”L  ô¨"@  ©€T@  *  9© @  Éª°h@  Óªz@  œ« @  œ«ZX@  *  «êv@      (  —uçe(Lh¬8Lh  ¯”   
   —uçe  *    ÷	  õ þL <‡ 
Á Â Ã ÷	  /‡úÿÂ  ô¨" 9© *  &  ÷	  (‡t
 $ t " ô  ôe $ t" 4
  œ« *  L & 
Ý &
æf
 f @ÀeL —#  —-  *  r ÷	        –5–5†uN  uL  ± ‡ t   t"   ©€T*  ˜  W-"   W-    ôÿÿ ôÿ @" @†*  ¾ õPüL ß 
Á Â Ã ÷	  úÿÐ‡÷	  †  9© &Éª°h*  ä Àðþ÷	  Ã 
Ã
ýð t 0$ p 0" r   
«êv*  
0 h 0 l 0 n ÷	  ñÕ 
 Â
 ÷	  †  Óªz&œ«    0úÿ&& ÷	  ° ˆw 4ÿ‡   œ«ZX       ‚ M   NÀÅÎ*  1uo†    NÀÅÎ   ¯”L  ý¨X@      (    1uo†(  
­ZTì2 ¯”   
   
­ZT.   . ß	    ý¨X       <M   PÀÅç*  3uÀ    PÀÅç   ¯”L  ”«€@  ”«‡@  *  «êv@        5¬ ™@  Y¬T}@      (  3uÀ(  9© h  9©ë3hô¯”   
   3uÀ  *    æCPÎU £	  Ã 	À, *  & Á, Ã ö&À      
0
 0
úÿÃ  5¬ ™*  L –
ó 
Ä, ðúÿÃ`ú3Š ó ³ *  r óÅ 
 ³  ƒÀðþ÷	  fƒ ÷	ú †–%  «êv*  ˜ Ã þ3± ± ± CðúÿÎ5 Î5 ó‹*  ¾  Á÷	  †Ã`ú0
úÿXC»óÕ 
 3 ³Š  Y¬T}*  ä  Î5 !ó æƒ ÷	’ ƒ†Ã þ?s *  
 s  óÅ 
 ñµ 
 óÕ 
 1
 1
 Á*  0Î5 ñµ 
 Î5 ÷	  †"`ú	0
úÿ1
  ”«      ‡*  V 1Š ñÅïÿ
 £	 ÷	  ñµ 
 ÷	  ”«€*  |  ØÃ È–
&V‡ £	  A ñ‹  Y¬T}*  ¢ B, ‡ñµD 
 Ã5 	ñµ 
 Ã5 *  Èñ A ãÁ± 	ñÅïÿ
 1
 1
 (  î1
 ‡ £	  óµ  Ã 
‡        ÀM   OÀ…È*  3u®    OÀ…È   ¯”L  9© @  9©ë3@  *  œ« @  «Ÿz@  ¤«@      (  3u®(¨ *  ;©EMh$ ;©OMh~ ;©PMh„ c©%h  c©È_h 
  ¯”   
   3u®  *    õ  æ 
Â ÷	  †5 5  ƒæ  œ« *  & ô‹  

‚Ã ÷	  	‡úÿÂ       ÷	  ôŠ   9© $œ« *  L ì–
÷	  Ãôµ    


Ã ÷	  ‡  
9©ë3$9© *  r úÿÂ ÷	  õ þ  ƒ‚ „ û3    œ«   ˜ Á  ÷	  5
 w     
¤««Ÿz       ® M   NÀEÂ*  3uÅG    NÀEÂ   ¯”L      (  3uÅG(4   C©zh  Óªzh ¯”   
   3uÅG  *    · ƒ"± ¡ ‡ · Ê‡ æ¦&
Ãÿ Žd  & Ã
ýƒÞ	ƒ‚‡        ÒM   PÀh¾*  3u…K    PÀh¾   ¯”L  œ« @  œ«ZX@  *  «Ÿz@  ¤«@  ¨«¯@  5¬ ™@      (  "  3u…K(Æ @©ôDh  D©Mwh( ¯”   
   3u…K        *    õ  ¡  óµ  õÐÿ ± Ã ó*  & ‡  1 ñ•  Â
 ÷	  †5 5    œ« *  L ÷	   ëôµ   u u  Ã  Ã  œ«ZX&5¬ ™*  r ôµ@  ÁÁe  û	V ôÅ@  Â  ‚Âe ƒ‚  ¨«¯| 
5¬ ™ *  ˜  „ û3  Á0 ÷	  5
 C& 3
 3
   ¤«  ¾ 3
 w     
«Ÿz       ° M   NÀEÛ*  3ukM    NÀEÛ   ¯”L  D©ö`@  Ã©`"@  "  ¹«]Œ@      ( «¯h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
Ã©`"D©ö` 
        M   OÀÕ*  3uS          OÀÕ   ¯”L      (  3uS(F*  E©¶Hhb E©ÆHh  E©ÇHh
 E©ÈHh* E©ÉHhB 
  ¯”   
   3uS  *    ·À B< G·¶ s< þÿ÷	î ‡ÀüÿÀnøÿ÷	r *  & ö†‡ ·– ÷	Ô ‡ÁÁnøÿ÷	Z ÷†‡ ·~ ÷	¼ 
‡*  L ÀüÿÀnøÿÁÁnøÿ÷	: ó†‡ A@ @œ õÅ 9 ñµ*  r   õÕ 9 ‡ ·@ ÷	~ ‡ÁÁnøÿ÷	 ÷†‡ *  ˜ P¤Â
ü¡ ‡ @¤
†õÕ 9 õÕ 9 ± ‡ Â
*  ¾ ò¡ ‡ æf> ƒA@ &
NÜ &&
sœ
 ûÿfÎe*  ä  fÎe# ¦ÁÂþÿõÅ 9 Þ	Æe ƒ‚‡ ³Šúÿ*  
óe øÿ³
öÿó¬úÿûÿ‚óþÿ
ÂÞöÿî³ þÿƒ  0Âþÿ3
þÿ³àþÿ¡ ‡ ± ‡        ° M   NÀÅÎ*        3uþ_    NÀÅÎ   ¯”L  G©¶Z@  £«i"@  "  ¹«]Œ@      ( «&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«i"G©¶Z 
        $M   OÀ…È*  3uIq    OÀ…È   ¯”L  J©v"@  Ã©i"@  *  .ªK@  .ªþK@  R«³'@  « w@  ¹«]Œ@        (D «•h ¯”   
         *      ÷	  ÷	  †‡ õ¥@  †õ0û fÂÂeÞÿ  R«³'¹«]ŒÃ©i""  & 
û	J ‡ÂÂe  ÷	  †w   w   !  J©v"2 
.ªþK.ªK « wÿ       ÂM   RÀ¨Ý*  3u|q    RÀ¨Ý   ¯”L  ´:ü@  ¾©H@  *        ,ªPd@  ¨«»@  ¨«•@  ¨«l@  ¨«„!@  *  ¨«üR@  ¨«žr@  5¬ ™@      (  3u|q(ð  J©Åh* ¯”   
   3u|q  *    @8  @Àe: PPH@8  @Àe: *  & 	‡ õ5  ÁÁe  û	V ‡ÁÁe  û	V ‡Á  ¨«l4 
 ¾©H@ 
*  L Áe  û	V †w ˆõ5  w *ÁÁe  û	V )†  ¨«•L 
"¨«„!h 
*  r W- `ý#õ5  õ  ÷	tÿÁÁe  û	V ‡  "¨«žrŽ 
 *  ˜ ÁÁe  û	V ‡÷	lÿ&ÁÁe  û	V †V†÷	  ¨«üRš 
¨«„!¬ 
*  ¾ Tÿw ‚&
æÎeÄ A& CA  
ÀÜ `W¬ÿÿ*  ä ; Ròþÿ2²
þÿ      ôµ!  ê¦÷	  A8 B A  ,ªPd*  
 HÑ‰Ñe 	
Â  Ã  ÃÀ  û	R †  ´:ü5¬ ™*  0 û	T ’€ÈPÿ†u 5 7‚¾@8 *  V    &ÎEøÿÎe0  €€÷	êÿó¬  ‡*  |õ ý †‘•³Š ‡ †Ã  Ãu : õ•    5¬ ™*  ¢ÁÁe  û	V u:  
†õ5  ÁÁe  û	V   ¨«»¤
"¨«žr¾
*  Èõ5  	f ÁÁe  û	V µ u@ & f V  ¨«üRÖ
  î‡        ° M   NÀÅÎ*  3uIt    NÀÅÎ   ¯”L  œ« @      (    3uIt(, J©|—h  ¯”   
   3uIt  *     1 ñ•        ñÅ# 
 Â ÷	   ðf   œ« 
  &  V‡        ° M   NÀÕ*  4u%!    NÀÕ   ¯”L  e©6N@  £«`"@  "  ¹«]Œ@      ( «Ôh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"e©6N 
        ² M   NÀEÛ*  4u;;    NÀEÛ   ¯”L  i©öy@  £«`"@  "  ¹«]Œ@      ( «{h  ¯”   
             ÷	  ÷	  †‡ æÎe  ‚{ J   ¹«]Œ
£«`"i©öy 
        Â M   NÀÕ*  4uH;    NÀÕ   ¯”L  p©Åœ@  Ã©`"@  *  « w@  ¹«]Œ@      (" «h ¯”         
         &      ÷	  ÷	  †‡ ÂÂeðÿ
µ> û	J w     p©Åœ¹«]ŒÃ©`"$« w       M   RÀh¾*  4uëg    RÀh¾   ¯”L  ´:¼p@  ô¨V@  *  9© @  @©ôD@  C©z@  m© …@  ,ªPd@  *  Éª°h@  œ« @  «êv@  5¬ ™@      (    4uëg( p©Åœh ¯”   
   4uëg       «    *   æ5
8 5
: 5
< ÷	  b‡&
&
&
C@ 6ÁÁe  @©ôD*  . ÔÿÂðø@²N@”‚ÒK¤ÀÉ‹úÂ þBÑ*  T ¦QÔQÔŠ ‡0Â°ü5
ÁÜ "ƒÂ@û-*  z JŠ
PÀ’ÀÀÀaÀe~ È	"‡À ÉC Ë¥ *    æœ ÷	ð‡Ã ôC      < 3Š æÿ ÷	Ö‡*  Æ 3 3
 Â 
Æe µ õ ÷	
 ƒf V*  ì ‡ A8 
5
8 Â ÷	  †õðþ ‡ ¡ ‡ w    œ« *  w ìw w Xf&Àó÷	vƒfæÅÅe 
*  8%
%
%
÷	V ƒÓ$‹ ËËËË÷	@ eƒ†*  ^„…‡ ‚D˜Äå0 Ä%	 A‡%D˜Äå0 Ä%	 :‡Äa*  „ÄÄaÄJ m < <   Ã ÷	ÄÿÃ
üBÄ"*  ªNAJBEFRAMRPAYAMNUJLUJGUAPEST*  ÐCOVONCED  !¥!£!­ 	`Ô •ôÂ*  ö û¯uþÿÍ5 ÃÀ% €
ƒ
Í
*  Ce÷	@ÿÍæ ä‡Í`Õ
%%ß#Ý#Û$)Åå*  B fC
 ÷	  Ae@C÷åt%
å. å        m© …*  hÄÀ  fUUUM…UÃB
†Õe˜ UM…Õe*  Ž€–UUM…À
é‡ µ> ôµ!  
&*  ´†à‚À &
¦&÷	  ° ¦fæÃ  ÃÂ  À  ,ªPd 5¬ ™&´:¼p*  Ú  û	R Â€ùæ`ÿ‡û	T ± ‚’Öƒ†} *   > Àÿ÷	–ÿƒÁQ$‘“Š‰Ñ ‰!Š‡ &
ôµ   *  &$t  !†ŒŒvŒ  
 Ý ` 
÷	8‡*  L€cÁÐQ$Àe Àe Â Â
ý¡ *  r–
‡ õ< ¡ ‡ *+,-
	*  ˜ 
Á &
ôµ0  hB: 	€œ €
Ê_*  ¾€Ž÷	¼ Z‡õ: A< W" 
‡1t  ôµ *  ä IÁ1  €c5: °­  ÔÀÀe      zÿ”*  
”cÂ`ð¥ þÿJ’öóµ  3
* 3
, À *  0RÀ
ýÂ À  R”À
ý×¬ 8 ‡€3œ 5 *  V3 6 3
 2 3œ	  3œ 4 3T . 3V 0 ¡ *  |–
Ž‡ æ&fA8 
Á ÷	  Â þ/‡58   ô¨V*  ¢
÷	  ‡€ Â 
÷	  úÿu8 †È%`ú  œ« 9© *  Èð6 à% þÂðþö þ ± ÷	  †ÀÐû  "Éª°h  î÷	  ÷	  Â û–Uƒ‡   «êv
C©z       ü M   NÀ…È*  5u»p    NÀ…È   ¯”L  š©õ
@  Ã©i"@  *  .ªK@  .ªþK@  R«°'@  ¹«]Œ@      (2   «"h ¯”   
         *        ÷	  ÷	  †‡       æÂÂeìÿ
û	J ƒ‡ÂÂe  R«°'š©õ

¹«]ŒÃ©i"  & Þÿ
÷	  w     
.ªþK.ªK       ¼M   OÀh¾*  5u|q    OÀh¾   ¯”L  ¾©H@  ¨«l@  *  ¨«„!@  ¨«üR@  ¨«žr@      (  5u|q(°   š©õ
h  ¯”   
   5u|q  *    ôµ!  õü Lõ5  'B@ õû A*  & ò õXÿ :A8 A ±   ±  ± *  L  r  r  ÁÁe  û	V !ÁÁe  û	V ‡  ¨«üR\ 
"¨«lh 
*  r ÁÁe  û	V ‡ÁÁe  û	V ‡ÁÁe  û	V 	†f)  ¾©Ht 
¨«žr€ 
 ¨«üRŒ 
   ˜  ÁÁe  û	V µ u@ & ‡         
¨«„!œ 
       ¬M   UÀh¾*  5u$™    UÀh¾   ¯”L  $9@  $9Ùf@  *  $9š@  ´:#@  ´:¼p@  ´:ü@  ,ªPd@  *  5¬ ™@      (  5u$™(> © }h ¯”   
   5u$™  *      ðú  ù  ðü    &Ì¥	  ôµ€   €  $9Ùf$9š$9*  & &
¦æ÷
‚Æå
 ‰&÷	  ° Â  ÷	’‡  ,ªPd"´:¼p*  L ƒ ‚ ††w |´  ô ÷	  ‚ ƒ   ,ªPd*  r  Á æ–PÁU ÁU€ ð ° p Ã    (5¬ ™*  ˜ Ã‚ó5 ( Eò‹ BðÕ  æ  æ  æ°*  ¾  æ  æ  æ  æ  ¦
 ¦ ¦ ÎÕ —- *        ä   —-   ò5  ÎÅ ¶ òµ  ÎÅ*  
 òµ  ÎÅ òµ  ðU  ðE  ¦*  0Â  ÷	¤ AÃ  Ã‚ó5 ( ò‹ ‚ ƒ  ´:#5¬ ™*  V
 †¶ ö 6Š †5‡6 
 6   öe*  |  v
 6œ  6  ´m   t 
‚Ý ´`*  ¢ ôµ€  ‚æ  &Îe æ÷	  ° ¦Â   ,ªPd*  È  ÷	 †È 0
 „‡ Ã  ÃÀ  &D &  ´:ü5¬ ™*  î ô•  û	R †´•  û	T ´• ’„*  æýÂÂeæýR ‚–
Òù‚ˆp ± ‡ „  :¡ ‡        ¬ M   NÀEÂ*  5u%™    NÀEÂ   ¯”L   ©µ@  Ã©`"@  "        ¹«]Œ@      ( «#h ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J    ©µ¹«]ŒÃ©`"       NM   QÀh¾*  5u>™    QÀh¾   ¯”L  ô¨"@  ô¨V@  *  ©€T@  9© @  @©ôD@  C©z@   © }@  *  Éª°h@  Óªz@  œ« @  œ«ZX@  «êv@  *  « w@  ¤«V@  5¬ ™@      (  5u>™(   ©µh  ¯”   
   5u>™  *    5
8 5
: 5
<  ÁEÿôµ   
u@ ÷	    (@©ôD*  & ‡Ãüôµ!  Ãpýôµ  õ‹@ Ã þÁ*  L  ÷	  ‡&÷	  €†÷	  õ F÷	Œ &‡B   ô¨Vô¨"¤«V*  r Ãðø      Â5 µ … Ã þ€’Àå ƒõ *  ˜ €
÷	.‡B … ‚ àBõ< Üõ‹@ *  ¾ ÷	¨ ÷	š Ã 

÷	Ö &‡@÷	  
÷	À ‡   ¤«V*  ä @÷	  õ 5
 w   ÷	” ‡õ¥ @ 	ðµ   ¤«V« w*  
 õý ± ‡ Â ÷	  ú†Àðþ÷	  ÷	t †  œ« "«êv*  0È%`úÈú÷	v ÷	0 
± ‡ f÷	  è‡÷	    "Éª°h(C©z*  V†õ û ‡ A8 5
8 A: 5
: Á
÷	*  |  †È ù÷	. ÷	  ± ‡ Á ÷	’ÿu8 ‡ø‡   œ« œ«ZX*  ¢Â Ã  
÷	  úÿ‡ õ 	5 E- È  9© *  È5 ‡ f@ Æå 6

 ö ÿ  N2
       ¶*  î
  R2

 6
 … õ5€  öÕ  ò5 *   @Ã  Ãó5 ( ò‹ ¶ 
 ¶  ¶  
5¬ ™*  :  ¶  Ü öÀÿ õ¥  @ Áö°ü *  `õ< µ
< Ã  Ãóµ ( ö‹
 	6   6  5¬ ™*  †  öÕ 
 R­ ‚66
 6Œ 6Œ *  ¬vŒ  
 Ý `A-< u< ÷	¦þ"‡A< ÷	Zþu*  Ò: ‡÷	†þ‡÷	þò†5> vm>  µ @ €*  ø öèû ð µ  w æ Ã  Ãóµ (   5¬ ™*  ö‹
 	6  6  öÕ 
 ÷	  †÷	vþZ6Š   © }*  D B ² 
 ö¥  '5  > 5 @ ÷	  †  &©€T*  jB ÷	Dþ5í  >       µ@ 5í @ rí> 
 ² rí@ *   ÷	úý/‡0$ p 0" r ö¥   %@@ ° *  ¶ °  °   °" ° * °
 ( A: ñÕ *  Ü
 @> ÷	  õ €ðÕ  ÷	  ± –U–U–U–3µ  ÓªzÓªz  @ ‡        jM   NÀÅç*  6u"    NÀÅç   ¯”L  ¼©õ‡@  Â©õ#@  *  «µ@  •«µO@  £«`"@  ¹«]Œ@  È«õ
@  *      (L «u'h «U(h «T[h0 «Tqh
   «Ayh& ¯”   
                       ÷	  &
÷	&  •«µOÂ©õ#¼©õ‡
È«õ
«µ¹«]Œ*     æ ÷	  æ 	÷	  æ ÷	  æ ÷	  ¹«]Œ¹«]Œ¹«]Œ"¹«]Œ        :   †‡ ÂÂe¼ÿ{ J   £«`"       ° M   NÀÕ*  6ut:    NÀÕ   ¯”L  ¹©¶Z@  £«`"@  "  ¹«]Œ@      ( «ö&h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¹©¶Z 
        ŠM   QÀÅÎ*  6uMq    QÀÅÎ   ¯”L  9©ë3@  œ« @  *  œ«ZX@  « w@  5¬ ™@  Y¬Ð@  l¬‡@  *  l¬N@      (  6uMq(*¼©õ‡h ¼©ù‡h  "  Â©õ#h
 Â©ù#h •«µOh  ¯”   
   6uMq  *    õü w   ÷	 û5
, ÷	T ÷	 óõ ,   « w*  & ÷	  ÃõüL õ L ÷	2 ‡Ã  ÃÁÁe        9©ë3"5¬ ™*  L   û	V ôÅP  uL  uN  f V‡ õ0úL   Y¬ÐJ 
*  r    V1! A ùõ, ñµ 
 öõ*  ˜  L  Âœ ÂEÿÂ¥  óµ   Ã  Ãt  $5¬ ™*  ¾  4
 ÁÁe  û	V ‡  ðµ   ôe 
 t  l¬NÆ 
q*  ä  4
 @ÀeL W-,  ÷	  t  4
   l¬‡$  
Â ÷	  	†&& ÷	  ° ˆ± ¥†‡   
œ« œ«ZX       XM   NÀÅç*  6u‘w    NÀÅç   ¯”L  ô¨@  Ã©`"@  *  Ã©Ú}@  «êv@  5¬ ™@      (  6u‘w(„   Ã©i"h  ¯”   
   6u‘w  *    C ƒ:‡Ã8Ë¥       5ó¥P  ƒó ÿ )Ä    (5¬ ™*  & ô5 ( ó ü ô5 ( ópÿ Á0 *  L ÷	  ‡3 È• ðœ  0*  4* w   ó þ  ô¨$Ã©`"  r  3
 w   À€ý÷	    Ã©Ú}«êv       jM   OÀÅÎ*  6uœw    OÀÅÎ   ¯”L  «êv@  5¬ ™@  *      (  6uœw(º Ã©`"h  Ã©Ú}hœ ¯”   
   6uœw  *    @ €U‡ÀSÈ¥ P0
 0
 ð¥P  ƒð ÿ*  &  9 „2‡Ä0Ã  Ãó5 ( ðpÿ (  5¬ ™*  L Ì¥ "ôµ  ôÕ  pJ  ÁE*  r áÿW  ƒ
5
B 5
D 5
H ¡ ‡ ðÐÿ ð&  ˜ Àü W£ ‡W- ÿÿ      ý	 ± ‡ À€ý÷	    $«êv       |M   QÀÅç*  7uÔ    QÀÅç   ¯”L  s©À@  «¯@  *  «&@  «ö&@  «œ,@  «E`@  «\g@  *  «)x@  «6x@  ‹¯=@  ‹¯@=@  ù±oŒ@  *      (  7uÔ(dD©þ}h4—«çh  —«èhö  —«éh>¯”   
   7uÔ  *    w	  0
ø 0 ú 0 ð‹ü ÷	Â‡p  ù±oŒ*  & ú pY÷	h†w lðµ€ ó w ð\ 
ðµ*  L   ó ÷	Dî‡÷	tð%°ý w Ô ðµ Š  *  r 0ö " 0ô   Áep" ð   0Šn \ *  ˜ 1Š ñÕ  ÷	  ñÅ  ð l ì  «\g*  ¾ p       0 ÷	  ð•   ð ("   °`ø   «œ,*  ä ÂBðµ ó ¦`W¨a W¢z ÉÅ  Â
ö‚*  
0,ú w ¬ É¥; ðµ ó $w Þþð¥Ðù *  0æûÿð%°ý 3œü 
Ä
ðµ€ ó ÷	zw *  Vìþ÷	~ðÅ€ ó ðŠü æöÿ&
ðµ  ó 	ðÅ  ó *  |ðÕ€ ó ð•ÿÿü ðµ ó &^ ÷	ª°^ °“ò V*  ¢‡ æÿÿâæþÿß Æe, æýÿÙæüÿÖðµ ó *  È`W¨- ð‹ó €ðÅ€ ó ðÕ  ó Â
ð
ø °`*  îw $þw vÿw	  ð‹ü µðŠü ðå þ ù°Šü   ù±oŒ*  ÷	¶ ©É¥@ Ñðµ ó ¢0¬ü ý ÆÆå, 
Â
*  :€p ° ÷	  4 ø ´
ø ®‡ðµ   ªÈ•   ‹¯=*  `÷	        ¥‡ðµ  ¡ðµ   ÷	Î ðµ@ ó 	ðÕ  ‹¯@=*  †@ ó ðå ‚ ð•
 … ‚Âe ÷	ì ‡Æe, 0
ø 0*  ¬ 0 ú w ŠýÆe, &^ ÷	 °^ w Üþ÷	*  Òþ ðå þ ðŠü õµ€ ó '0® 0° 0´ 0*  ø¶ 0¸ ðU j ÷	’ ‡0 0 0 ð•   ðµ*   Š ð•  0 ð%°ý ‡ ÖÆw	    &ù±oŒ*  Dð\  °Šü þ ðµ Š ÷	       «ö&*  j ¸ ¶ ´ ° ® 0þ ÷	P ‡ Áe*  Ò ÷	ž °„ U%Æå" °Â ÷	  Æe" e)ðE j ð  «E`*  ¶^ ð% ü^ 
÷	  é÷	  ð ¡ ± ‡ U%  «6x«&*  Ü÷	  e)‡  0Šü É      )fÿˆ‡ÑÂ  ÷	, ‡  «¯"s©À*  × 	 ×   ÷÷	 ‡× 	 ú×   ÷R¨ðÕ€ ó *  (¡ ‡ Âå C”‡ &
÷	 Ñ•: Ž
÷	 ÷	 ‚‡   Nƒ„Ãö` •Ã
ýÃ
‡        ° M   OÀ¼*  7u`"    OÀ¼   ¯”L  Ý©6€@  £«`"@  "  ¹«]Œ@      ( «œ,h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"Ý©6€ 
«       dM   OÀ…È*  7ub"    OÀ…È   ¯”L  9© @  Éª°h@  *  œ«ZX@  «êv@      (  7ub"(Ž Ý©[}h  
  ¯”   
   7ub"  *    ÷	  úÿ†"`ú	& &÷	  ˆ° 
±         9© œ«ZX*  & ‡ ñµ 
 ‡ f&öÿ&÷	  €†ÀÐû÷	    Éª°h(«êv*  L ±,  	A `¡¢òµüÿ ÈÀþ–
Í   r 
&÷	  €†ÀÐû÷	  ¡ ‡   
Éª°hÐû«êv       ä M   OÀEÛ*  7u2g    OÀEÛ   ¯”L      (  7u2g(d   Ú©ðGh  ê©Èh ¯”   
   7u2g  *    ÷	  ¬  ‚œ ‚’‡ ÷	
 Áe ‚œ ‡ *  & Am: C”ÃEüÿÃe B@ Þ	¦&
&
À
CÜÿÿ‚R”  L À
ý€‚Â Â&VP± ‡        œ M   NÀh×*  9u‚    NÀh×   ¯”L  5¬ ™@      (    9u‚( ,ªPdh  ¯”   
   9u‚  "          fÀ   Àe2 Á 
Á
ýÀå ‡   5¬ ™       ¦ M   NÀEÛ*  9uf'    NÀEÛ   ¯”L  D©Mw@      (  "  9uf'(  .ªKh .ªþKh ¯”   
   9uf'  $      @€`È	õÀý ± ‡ ÂÂeêÿ
{ J   D©Mw       FM   OÀÅç*  9uÁS    OÀÅç   ¯”L   ©ô&@   ©¿.@  *   ©Iq@   ©Fy@   ©S~@   ©ñ@   ©™’@  *  5¬!™@      (  9uÁS(  
­WTìP D©ö`h *  G©¶Zh J©v"h e©6Nh@ i©öyh  ¹©¶ZhH *  Ý©6€h( («v"h  U«6€h0 ¬6h8 
­WTh  *  
­XTì  
­XTh  
­YTè  
­ZTìX «)xh  *  «¶{ì  «¶{      h  «·{è  «¸{ì  «¸{h  *  «¹{è  «º{ì  «º{h  «»{è  «¼{ì  *  «¼{h  «½{è  «¾{ì  «¾{h  ¯”   
   
­ZT  $                                       $   $   "     
  "  J   J             &   ©S~ ©Iq ©™’
 ©Fy ©ô& ©ñ  V      ©¿.       ¦M   OÀEÂ*  9uüX    OÀEÂ   ¯”L  «)x@  «¶{@  *  «¸{@  «º{@  «¼{@  «¾{@  ¹«´‰@  *  5¬ ™@  
­XT@      (Š «v:h  «6xh 
  ¯”   
         *    ÷	  Ã  Ãóµ ( ¡ ‡ ÷	  Ã  ÃÄó*         ¹«´‰
5¬ ™¹«´‰ 5¬ ™*  & ± ‡ À  Á  ÷	< Á  ÷	4 Á  ÷	, Á     «¶{«¸{«º{ «¼{(«¾{*  L ÷	$ À  Á  ÷	 3
$ ó& óe" & ó ( ¡   

­XT«)x  r ‡ 
Bà4þÿ
ˆ
@‡        àM   OÀh¾*  =ul    OÀh¾   ¯”L  ´:Ã@  Â©ù#@  *  ,ªPd@  « w@  5¬ ™@      (  =ul(à *  «µh& §«`Th  È«õ
h  È«`Th ¯”   
   =ul  *    Á HÁ ¦÷	ˆ ‚€"°ýÈÿ]5
, *  & õÿÿ, ôÅ@    ðµ   	4
 õ, ôµ  *  L  õüL B& ÷	¦ÿôµ   
ÁÁe  û	  &Â©ù#l 
 *        r V †W-L 0úÁ ÷	 uL  uN  w   
  &« w*  ˜ ÷	  p ° Â  Ã  ÃÀ  û	P ‡û	T ’  ,ªPd´:Ã5¬ ™&  ¾ €W öÿÈ°ýÈøýp È &V‡        Ö M   NÀÅç*  =uÃ    NÀÅç   ¯”L  5¬ ™@      (  "  =uÃ(J Éª°hh  ÉªØhh ¯”   
   =uÃ  *    æöÿæøÿÀ      €cŽJñµ 
 1!  5¬ ™(  &  @ ÀÿÿÀ ÿÿ¡ 

± ‚‡        Ô M   NÀÅÎ*  =u<    NÀÅÎ   ¯”L      (  =u<(\   Ìªa	h  ¯”   
   =u<  *    Ã+æ ‚3‘”Ã
3Ãå †Î@Ã
      Çà‘‘*  & ‘‘‘‘‘‘ð†ÃÃå †Çà‘”‘”‘”‘”‘”‘”  L ‘”‘”ó†Ö‘”
‡        ÄM   UÀ¨Ä*  =u²'    UÀ¨Ä   ¯”L  ¿«v@      (  *  =u²'(e©€‰h" ¾©HhP ÎªÐWh ¯”   
   =u²'  *    @&  A8 A ôµ   Ö‡ æÎe2 ÷	Úÿ*  & @Àe ”ˆ” 
—¢: ÀÀÀ¦”ÎEðÿ€eõ1 *  L ¡ ‡ ÷	¬ÿ&æCÃe 


1
 —¤] üƒ*  r ×¤. üæƒàÃ
DÄe ÷	  †õý –
  ¿«v*  ˜ ‚ƒ×¤; üƒàÃ
DÄe ÷	  †õ`ù ƒ  ¿«v*  ¾ „± ‡ @& &  œ €e1
 &¨; üÐ‹ (  ä †&”ÎEøÿñ ñ ñ ±Õ       ò–
ƒ„¡ ‡        ò M   QÀEÛ*  =uYH    QÀEÛ   ¯”L  ô¨V@  Éª°h@  "      (  =uYH(Z Óªèh  ¯”   
   =uYH  *    Á ÷	  †õ þ ± ‡ ÷	  H58 Áe   
ô¨VÉª°h*  & p õ& u& ñ@  q ñe   Áe` p   L p ðe*  ¡ ‡        ZM   OÀÅÎ*  ?uÖd    OÀÅÎ   ¯”L  p©Åœ@  Ã©i"@  *  .ªK@  .ªþK@  («v"@  («X@  R«°'@  *  « w@  ¹«]Œ@      (T «E`h ¯”   
         *          ÷	  ÷	  †‡ ÂÂeìÿ
û	J ‡ÂÂeàÿ   R«°'(«Xp©Åœ¹«]ŒÃ©i"*  & 
û	      J ‡ÂÂe  ÷	  	‡ÂÂeÈÿ
5
> û	J †  («v"0 
.ªþK  L w   w     .ªK
« w       –M   RÀ¨Ý*  ?uüd    RÀ¨Ý   ¯”L  ¾©H@  ¨«»@  *  ¨«l@  ¨«´'@  5¬ ™@      (  ?uüd(v  («Xh  ¯”   
   ?uüd  *    õE€  õ5  #B@ ò 	ôµ  õXÿ*  &  ± )A8 A ±   ±  ±  ±  *  L ±  FÁÁe  û	V q‡ÁÁe  û	V k‡ÁÁe  )  ¨«lV 
¾©Hb 
(¨«´'n 
 *  r û	V †õ ý a‚æÎe\ A& CA  
ÀÜ *  ˜ `W¬ÿÿ; @8     &ÎEøÿÎe0  €€*  ¾ ÷	êÿó¬        ‡õ ý †± 5‘•³Š ‡ Ã    (5¬ ™*  ä ÃÁÁe  û	V (‡ u õÅðÿ u õÅ    
¨«»è 
 *  
õ¥  4 * 5*  5  5( 1 ô‹) *  0ô• ) A t. ¡ Bu@ &  ÁE W @ $  Vƒõ0û ÂU ÁEáÿÃ  Ã‡   5¬ ™       ÞM   PÀEÂ*  @u~q    PÀEÂ   ¯”L  û¨OM@  û¨VN@  *  Óªè@  5¬ ™@  ¬°'@      (  @u~q(Ò   R«°'h R«³'h  ¯”   
   @u~q  *    µ> 5
> õ  õ5  ôÕ  t  *  & ôµ  ôÕ   
@Ý À5 ôÕ€  t3  *  L @ A €†õÿ 0À      †õ ÿ )*  r ÁôÕ  4 
Hu& @ ÁÁe  û	V ‡õ5   ÓªèŠ 
 *  ˜  ÁÁe  û	V ÁÁe  û	V ‡Ã  ÃÁÁe"  û¨OMž 
¬°'ª 
"5¬ ™  ¾   û	V Ã  Ãf V‡   û¨VN¼ 
5¬ ™        ° M   NÀÕ*  @u`†    NÀÕ   ¯”L  U«6€@  £«`"@  "  ¹«]Œ@      ( «\gh  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"U«6€ 
        ú M   NÀÅÎ*  Bu–    NÀÅÎ   ¯”L      (  Bu–(|   ¿«vh  ¯”   
   Bu–  *    &fÀÀeJ æ …”÷	B ‡Ð      ÷	  ÷	 La*  & Î
Àå ÔÎ Ã
ë–
…€‡ ÅÅÅfÅÅ*  L …e‡ ÿÿ   W!Z ‚W!A †W!9 ‚W!0 ‡ÅåÒÿ  r Åå@ ‡ ± ‡        ¬ M   NÀÅÎ*  Buá"    NÀÅÎ   ¯”L  £«`"@  §«õ<@  "  ¹«]Œ@      ( «!th ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   §«õ<¹«]Œ£«`"       °M   PÀÕ*  Bu€K    PÀÕ   ¯”L  «êv@  ¤«V@  *  ¬¸L@  5¬ ™@  l¬‡@  l¬À@      (  "  Bu€K(’œ« h œ«ZXh  ¯”   
   Bu€K  *    ñÅ# 
 
ñ‹ Àðþ÷	  Ã  ÃÀ  0
 ¦  «êv5¬ ™      *  & Âµ 1! È0úqñµ 
 ñÅ 
 Â5 *  L ñµ 
 Â5 Â5	 ÷	  ÷	  W‡Î5   l¬À l¬‡*  r &÷	ª €CñŠ @ñµ 
 	ñ•  ÷	  B‡ñŠ  $l¬‡*  ˜  3÷	  Î5 &@¡ ñµ@ 
 ÷	j ‡÷	    
¬¸L(¤«V*  ¾ € ñµ  
 £	  Âe
 ƒ Á ƒ*  ä r  ÂÃ ûr 1
 Âìp öÿ0
*  
öÿp øÿ0
øÿÈ –
&V‡  £	    *  0  
ð ð‹ ðµ@ 
   ðÀ*  Vp  p  pœ
 
 ðÅïÿ
 0
 0
 0
 ñÅ  | 
 1
 1
 1
 ± ‡        :M   OÀÕ*  BuúM    OÀÕ   ¯”      L  Éª°h@  œ« @  *  œ«ZX@  «êv@  5¬ ™@      (  BuúM(`   œ«wh  ¯”   
   BuúM  *    Ã  ÃÀ  f&öÿ÷	  †ÀÐû÷	  ñµ 
   5¬ ™Éª°h «êv*  & ˆŠA `!’÷	  †ÀÐû÷	  ÷	  †&  Éª°h«êv$œ«   L & ÷	  ° ˆ&V‡   
œ«ZX       š M   NÀÕ*  Bu9T    NÀÕ   ¯”L  5¬ ™@      (    Bu9T( «êvh  ¯”   
   Bu9T       Ã  ÃÁ Áe Bæ Þ	 þ  5¬ ™       ¾ M   NÀEÛ*  Bu=T    NÀEÛ   ¯”L      (  Bu=T(D   « wh  «Ÿzh ¯”         
   Bu=T  *    ôÅ  AEJ É¥ EJ ñ 
W£ ‡W- "  & ÿÿ}  	W£ ‡W- ÿÿ}  ‡        ˜M   OÀ…È*  Bu‘w    OÀ…È   ¯”L  ô¨@  «êv@  *  £«`"@  £«Ú}@  5¬ ™@      (  Bu‘w(¾   £«i"h  ¯”   
   Bu‘w  *    C ƒW‡ÃUË¥ Ró¥P  ƒÁ ÿEÁpÿÂ*  &   ‚ò5 ( 	ó¥   ‚ó5€  3Á€ýÄ$   5¬ ™*  L „-‡Ä+Ì¥ (ÁÀü „"‡Ä £ ôµ*  r   ÁÐÿÁ  ÷	  ‡È•	 0  4 0  ô¨*  ˜  3 w   ó þ s 3
 w   Ààú÷	    £«`" £«Ú}(«êv             ú M   OÀ¼*  Buz}    OÀ¼   ¯”L  H©$`@  œ«@  *  5¬ ™@      (  Buz}(2 ¤«h ¤«Îh "  ¤«h  ¤«ªHh ¤«úWh ¯”   
   Buz}  *    @÷	  À 
ôµ   Àe À &À  H©$`  &    €e

w     5¬ ™œ«       ô M   OÀ¼*  Bu¢}    OÀ¼   ¯”L  ¤«Î@  ¤«@  "      (  Bu¢}(X ¤«Vh  ¯”   
   Bu¢}  *    &&Ì¥	   
 ðµ 
 ÂU ÷	*  &   ‚Áe
 @  1   
  ô  ¤«Î  L Á ÷	  „‡   
¤«       4M   RÀh×      *  Bu    RÀh×   ¯”L  ´:+…@  ,ªPd@  *  Éª°h@  5¬ ™@  Y¬±}@      (  Bu(Ø*  ³ª4}hÄ”«€h  ”«‡h l¬‡h6 l¬Àh6 
  ¯”   
   Bu  *    ‡ ÷	‚P 
P H €fÃ  Ãû	L    5¬ ™*  & ‡÷	~Ã æ ú÷	NP 
P H €*  L fÃ  Ãû	N †w 
÷	FÃ æùÌ¥	   5¬ ™*  r  —# úòµ  5
 È¥öÿð È*  ˜ È‹5œ  È‹>ñÐ
 Ã ñÀ
 È 1  ñµ*  ¾ € 
 /òµ€  +Ã  Ãóµ ( $—# úòµ   5¬ ™*  ä  ñÕ€ 
 && ÷	  p  p  Â    ,ªPd(´:      +…*  
À  fû	P ‡û	T ° ˆ"¢åÿÈ`ú0
*  0 ¢öÿÈ°ýÃ ñÀ
 òµ   0
 ’ð*  V ˆÃ  Ãòµ€  ÄÖ‚&f÷	  €  
5¬ ™$Éª°h*  |0
öÿ&V‡ ƒ&öÿ&÷	  †€ÈÐû°   Éª°h*  ¢ã÷	  K ñÕ 
 fû	T ñÅ 
 ÷	  ‡ &À  ,ªPd"Y¬±}  È æ1ÿˆÀ
û€‡        üM   PÀ¨Ä*  Bu    PÀ¨Ä   ¯”L  9© @  9©ë3@  *  ”«‡@  œ« @  œ«ZX@  « w@  l¬‡@  *      (  Bu(¶k˜:h° •«õ
h  j¬õ<h> 
  ¯”   
   Bu  *    u  5
 @ Â Ã@ùÁPù5
, ÷	Ž ÷	          (”«‡*  & †"°ý5  5  Þ	@ Â	 ÃàùÁ*  L °úõÿÿ, ÷	X ÷	  %‡&f¦B @ A   l¬‡*  r  3 " s $ ‡3" s$ ó & Áe @Âå *  ˜ óµ!  é‚€5  Þ	€|‡ÀzCA *  ¾ u‡ÁsÃpý¦ ²µ kÃüôµ   ef*  ä & õ, q-(  q-&  4
 
÷	*  
  	†&& ÷	  ° ˆ
@( A& 
Ã ÷	  œ« œ«ZX*  0  †–%5  6úÿt t 
 t  t   9© *  V tœ
  ± ± ± ñÅ 
 Þ	1
  1 *  | 1  ñÅÿ
 1Ý 
 ÷	  Ãõ, &4
  9©ë3  ¢ ÷	  ˆ      õ –
w     œ«ZX« w       â M   NÀ…á*  Bu    NÀ…á   ¯”L  •«õ
@  £«`"@  *  ¹«]Œ@  j¬õ<@      (* «Iqh «™’h 
  ¯”   
         *        ÷	  &
÷	  æ ÷	  †–
‡ ÂÂeàÿ   •«õ
j¬õ<
¹«]Œ¹«]Œ£«`"  & { J        ÀM   PÀEÂ*  Bu6‘    PÀEÂ   ¯”L  Â©ù#@  « w@  *  §«`T@  5¬ ™@  Y¬Ð@      (  Bu6‘(Î   §«õ<h  ¯”   
   Bu6‘  *    ôÅßÿ ÷	  †W-L 0ú[  õüL ðµ  L  Â©ù#*  & œ ÁEÿÁ¥  Ã  Ã4
 ðµ   ðÿÿ"   5¬ ™*  L       ðÿÿ$ 0
& ÁÁe  û	V .‡ÁÁe  û	V Á¥  §«`TX 
 Y¬Ðf 
*  r  ô 
 Ã Áe 
Ã
ýÁ¥   *  ˜  ƒ ŠÃ
ý4
 4
 4Š t  õ L   ¾ uL  uN  w     « w       ÚM   xÀh×*  Bu+–    xÀh×   ¯”L  $9.@  $9¦@  *  $9¯@  $939@  $9ƒK@  $9Ùf@  $9Zq@  *  ´:½@  ´:Ê@  ´:+@  ´:¼p@  ´:+…@  *  ,ªPd@  5¬ ™@      (  Bu+–(à¨«»h   ¨«¯h&Î«a(h$¯”   
   Bu+–  *      ðú  @ý  àÿ  àÿ   ú  ü    ôµ  4Š&  $9Ùf$9ƒK$9¯$9.$9Zq$9      ¦*  &  5

 5
 ‡ æÎe" ÷	  A8 P B Áe  ,ªPd*  L 
 HÀe ‡ ôµ!  0ôµ€  ÈU ôµ=  *  r Ñü	Ñe 	
Â  ÷	„ _‡÷	ªÿôµðÿ ôÅ  ´:¼p*  ˜ €  ÈU 
CÝ €ÃÿÿÈÐõ5  ÈU *  ¾ õµ  ÈU @ÈU €Ñü	Ñe ôµ   Ñõ*  ä 	Ñe Ñ÷
‘	
Â  ôµ  Â  ÈU æÎe  ´:Ê ´:½*  
@ Ã  ÃÀ  û	R † û	T ’¡ €æàÿ  5¬ ™*  0ÂÂeÎþR ŽÒú‚± ‡ -‡,  ôÕ€ *  V ôÕ@  ÷	  Â  ð  Ã  Ãóµ ( À  ,ªPd´:+…5¬ ™*  |  û	P ‡û	T ¢  óÕ ( ôµ€  	Â°ù        $939*  ¢u µ ± ‡ A8 A õE€  fV\ õU*  È€  B A u
 µ t  ´ 4, . ô*  î . @& A8 A p   p  p  p *   p  p  ¡ ‡ ôµ  W÷	  ôµ      ,ªPd*  :õ5  ôµ  ðU  &
&
&Îe æ*  `ôµ€  ÎB —¢ ±œ þÿ±œ ÿÿñ*  †þÿfÎeþÿæ‚ ë° fÂ  Ã  ÃÀ   ´:+$5¬ ™*  ¬  û	R † û	T ’€õ u Âpþµ  Ò †± ‡ †¡ ‡        êM   TÀ¨Ý*  BuŠ–    TÀ¨Ý   ¯”L  $9.@  $9¦@  *  $9@  $9#@  $939@  $9š@  $9«‘      @  *  ´:•@  ´:+…@  ,ªPd@  5¬ ™@      (    BuŠ–(0¨«•h ¯”   
   BuŠ–  *      ù  þ  ù  ðü  ü  ˜ý    ôµ  w &  $9š$9.$9«‘$9$9¦$9#*  & Ø÷	  Â  ð  Ã  ÃÀ  û	P ‡û	T ¢  ,ªPd´:+…5¬ ™*  L   óÕ ( @8    &fÃ  Ãó5 (   $939 5¬ ™*  r ÷	’ÃÐÐ  Ð
HÐe ÐÐe *  ˜ B —¢ ÐˆÐe ‚ ôôµ   Ð*  ¾ Ðe 
÷	  ôµ   A
B
 C   ,ªPd*  ä Â	Á …ÁÐõ5€  ÁE Ã  Ãó5 ( &÷	  5¬ ™*  
þ Ã"ÁU       óµ 	 ÁE æ  æ  æ  æ  *  0æ æ æ óµ 	 ÎE C8 Ã ³ P*  V4õ5  ÈU õ5  ÈU Â  Ã    $´:•(5¬ ™*  |ÃÀ  û	R † û	T ’"€Ã  Ãó5 (    5¬ ™*  ¢÷	b ÃÆe Ã  ÃæþÂÂeDþR Ž  5¬ ™*  ÈÒú‚u µ ± ‡ Ã  Ãó5 ( ÷	 Ã  5¬ ™*  î³  ³  Æe Ã  Ã¡ ‡ C ×¬    5¬ ™    Ã ùó‹ ó‹ 
‡        .M   SÀ(Ñ*  Bu©–    SÀ(Ñ   ¯”L  $9¦@  $9X@  *  $9Ùf@  $9Zq@  $9š@  ´:q!@  ´:±'@  *  ´:±r@  ,ªPd@        ¿«v@  5¬ ™@      (  *  Bu©–(®¨«lh¶ ¨«„!h ¨«´'h, ¨«žrh" 
  ¯”   
   Bu©–  (      ðú  `ý  ù   ú  ü    Â  æÐýÂ&  $9Ùf$9X$9š$9Zq$9¦´:q!*  $   æPúC8 Ã 3
 3
 Â  æ0ýôµ    ´:±r´:±'*  J 2÷	  A8 p 
 ôµ   õ5  ðU    ,ªPd*  p Ã  ÃÀ  û	R † û	T ’ÁÂÂenÿ  5¬ ™*  – R ŽÒú‚u µ ± ‡ –
¡ ‡ æ&@*  ¼ &  A8 A ôµ1  	ñ  ñ  1
 *  â aôµ   ]@Àe &

&—¤[ üæÎe *  Ã, Ä0 ƒ¬ ‘ƒ¬ ‘‡       ƒ¤œÿÿûÃ*  .] ÷	Üÿƒ¤œÿÿû‚€„Ã ÷	  †õ0þ    ¿«v*  T
ÐzÈ ñ  ñ  1
 „f÷	´þ*  z†õþ „ƒ± ‡ q   q  q  Â    
Â
ý„ƒ¡ ‡        â M   OÀ¨Ý*  Bu˜    OÀ¨Ý   ¯”L  ´:Ô@  ,ªPd@  *  5¬ ™@      (  Bu˜(B ¨«üRh  ¯”   
   Bu˜  *    ÷	  A8 H Â  Ã  ÃÀ  û	R †5    ,ªPd´:Ô5¬ ™   & û	T È‹5 õÀû ± ‡ ¡ ‡        ² M   NÀ…È*  CuÂ	    NÀ…È   ¯”L  5¬ ™@      (    CuÂ	(. ¹«]Œh  ¯”   
   CuÂ	  *          fÅ  Eµ …&æ¦f¦
 6 Þ	‚ƒ  5¬ ™  & „…€‡        ¬ M   NÀEÂ*  DuÖs    NÀEÂ   ¯”L  £«`"@  ¹«]Œ@  "  ò«ˆ@      ( «åh ¯”   
               ÷	  ÷	  †‡ ÂÂeðÿ
{ J   ò«ˆ¹«]Œ£«`"       JM   OÀèã*  EukY    OÀèã   ¯”L  ´:+…@  ,ªPd@  *  5¬ ™@  Y¬±}@      (  EukY(ˆ ¬¸Lh  
  ¯”   
   EukY  *    ¦Ã  ÃñÅ 
 1
 ÷	  Ì¥	  ñµ@   5¬ ™Y¬±}*  & 
 -òµ€  )ñÅ! 
 1
 ñµ€ 
  ñÅ€ 
 f*  L && ÷	  óµ ( Â  p        p  À    ,ªPd´:+…  r û	P ‡û	T ° ˆ‚‡        ° M   NÀÕ*  Eu¡d    NÀÕ   ¯”L  £«`"@  ¹«]Œ@  "  ¬6@      ( «Ä…h  ¯”   
             ÷	  ÷	  †‡ ÂÂe  { J   ¹«]Œ
£«`"¬6 
Œ       M   NÀèã*  Gu¼    NÀèã   ¯”L  «êv@  ¹«]Œ@  "  5¬ ™@      (f «ñh  ¯”   
         *    ÷	  E …)‡Å'Í¥ $Ã  Ãó5 ( À  ¹«]Œ5¬ ™*  & pÿ÷	  D „‡Ä£	 ôµ  æ  æ  «êv  L )ÿˆæ  æÿˆè‡ Ààú÷	    «êv             M   NÀèã*  Gur	    NÀèã   ¯”L  ´:ü@  ,ªPd@  *  5¬ ™@      (  Gur	(f Y¬Ðh  ¯”   
   Gur	  *     òµðÿ 'òµ  #òµ€  &
¦Îe æ*  & ÷	  ° Â  Ã  Ã& ô•  À  û	R   ,ªPd´:ü5¬ ™  L ‡û	T ´• Æe õ L 5
N ‡        :M   }Àh¾*  Huþd    }Àh¾   ¯”L  $9)@  $96@  *  $9~Z@  $9pw@  s©À@      (  Huþd(”  ¬°'h ¯”   
   Huþd  *    Áw Ð”Á
µ
> ‡ „± ‡ &„5
: 5
< *  & @& 
Ü   0Š B8 ‚ ƒÃe æS*  L ¦&
æS-       ŠS* æS, ŠK( &
N3 æ *  r æ‘ÿˆ †Ã—  Ã¥  )ÂýÃ¥  	Âþõ>   s©À$9pw$9~Z*  ˜ õ5  Ã¥  Â0þÃ¥  Â@þµ ¬C   $9)$96*  ¾ óÕ   B8 ‚ µ > w ¬5
> C( B, — *  ä  ƒÂ Â(Â
µ
: ×¢: W-:  †w B*  
: C( ÷	ìþÂ
üw ×¢[ ×¢] ×¢, w *  0ð×¢. ×¤; Ö5
: C* B- —  ƒÂ *  VÂ%Â
µ
< ×¢: W-<  S‡B< C* ÷	†þÂ
*  |üT×¢[ ×¢] ×¢, w Œ×¢. ×¤; *  ¢Ù
BÝ3 ƒÆå æƒÃe æ¦æÿˆ‡ÂÃe*  È  æ÷	0þ÷	,þ‚œ ÷	 –
Â: ÷	ä††Â*  î       B ‡Ð•S Ð•Y Ð•0 Ð•: àµ> õ ý *  õ@þ w ôý÷	Þýµ
: ‡ C( 
BÝ, —  ƒÂ*  : Â?Â
×¢[ 9÷	Òÿ
BÝ, Bí: —  c‡Â *  `×¢0 ^‡×¢9 [‚÷	®ÿ×¢, ÷	¤ÿÂ
ðP
BÝ*  †, Bí: —  H‡Â ×¢0 C‡×¢9 @‚÷	xÿ×¢] *  ¬÷	nÿw ÆÂ
ï4ƒ
¿÷	<ýµ
< ‡ C* 
BÝ*  Ò- —  ƒÂ ÂCÂ
×¢[ =÷	Òÿ
BÝ- Bí< *  ø—  ‡Â ×¢0 ‡×¢9 
‚÷	®ÿ×¢, ÷	¤ÿ*  Â
ðõ0þ w æü
BÝ- Bí< —  ó‡Â ×¢0 *  Dî‡×¢9 ë‚÷	pÿ×¢] ÷	fÿw Â
ïßƒ
»ƒ*  jÆå  æƒÃe ææ?ÿˆ†õ€ù õ   w ‚ü  "s©À*  Â[ ÷	2 Â ó%        Â ¦Â ÷	, Â, ÷	*  ¶ ‚÷	 Â] ÷	 †XÁw :þÁ
µ
> ‡ *  ÜÂE ÿÂÂÃ Â5 ÿÂÂÂÃ
øƒ
Â Âe0 ÷	*  ÆÿŠÂ ÂÂÂÃ
ô‡ &ÂÂ
×¢. ×¢; *  (×¢[ ×¤] €ã5à> `€ëÂ
õw Úþ×¢: *  Nƒ
ñ÷	ªûß&Ží —%	 ƒõý w ¤û€%± *  t‡ ¡ ‡ C( B, ÷	Žÿ†C* B- ÷	€ÿ
BÝ, *  šC( æÎeF Â×¢. &×¢; ÷	Fû&Ží *  À—% ƒõ`ù w BûÂ
î–
¡ ‡ ƒ
Â
â± ‡ . *  æ†
BÝ- C* ÷	®ÿ†æÎeêÿƒ÷	üú
BÝ, C*  ( æÎeT Â#Â
×¢; &÷	ÚúÂÂ
×¢0 ‡*  2×¢7 ‚÷	Äú&Ží —% ƒõ0ù w Àúé–
¡ *  X‡       ƒ
Û± ‡ ; †
BÝ- C* ÷	 ÿ†æÎeêÿƒ  ~÷	~ú@& p>  „¡ ‡          M   NÀEÂ*  [uŽE    NÀEÂ   ¯”L      (  [uŽE(.   C©O h  ¯”   
   [uŽE  *    ôµ    0- " 0-
 $ ‡‚0- &   & ôÕ  ‡        ÌM   PÀÕ*  [ukM    PÀÕ   ¯”L  @©ôD@  D©Mw@  *  Éª°h@  œ«W@  «êv@  « w@  ¤«@  "      (  [ukM(Ì D©bh  ¯”   
   [ukM  *    ÷	  †w    \4
 ¦òµ   P M1  @©ôD« w*  &  ÷	  †ÀÐû÷	  C’Ã ÃÀ`òµ  4ñµ 
   Éª°h«êv*  L       058 ul 8 ƒl &
ô¥  ô¥  	ôµ*  r €  ËÿÿÎ^ õ 8 †““ûôµ!  ƒ*  ˜  ôµ   ƒ
ÃE ñ –
÷	  †5 5    œ«W  ¾ Á  ‚÷	  w     ¤«D©Mw       ìM   PÀEÛ*  [u `    PÀEÛ   ¯”L  ô¨"@  ô¨Œ@  *  ;©EM@  ;©OM@  ;©PM@  « w@      (    [u `(ô G©]\h  ¯”   
   [u `  *     ô Ä, õàþ w   óµ   ôÕ    ;©PM*  &  ÷	  W†w   A 
W  ƒÁ óµ!    ô¨";©OM*  L æ  
@Ý  À
4 Î Îæ f÷	  –%  &ô¨Œ*  r ­  6‡        ô 
 ðµ  õ5  	4$ *  ˜ 
 4"  4&  ðµ  0- " 0-
 $ ‡*  ¾ ‚0- & ôÕ  õ5@  u  õ  w   ä   Ã õ þ w     « w;©EM       HM   QÀÅÎ*  [uq    QÀÅÎ   ¯”L      (  [uq(’  J©—h ¯”   
   [uq  	          *   ôµ€  ôµ   Â°ù4õµ  Âpý-ô*  ,  $ 4
" 4
& ôÕ  B ´*  
@Ý Àµ *  R Àµ ÂÀúm
AÝ ôµ   	ôµ!  !ÀÅ*  x  W  ƒÂpúYôµ   ÀÕ C. ×  *  ž Ã ô Á¥ —  ‡ôÕ€  ôe  ôE  *  Ä tÐ 4 Á¥       ´ Àµ ´  ƒÂ û'*  ê Á¥ t0 ) ô• ) 
C@ )ÁÁeöþ@²*  Âðø@”K¤ÀÉ‹ûÂ þ0Â°üõ*  6 µ ± ‡ Ë¥ ó‹ ÂÀÿñPÀ Ö@*  \ ¬     ù	5
 
 5  5    ‚t , t . ¡ ‡        †M   QÀèã*  5u™    QÀèã   ¯”L  $9Î…@  s©À@  *  « w@      (  5uË–(z ©ô&hÎ  ©¿.h4*   ©Iqhj  ©FyhÈ  ©S~h*  ©ñhø  ©™’hÀ 
  ¯”   
   5uË–  *    õÀý õðÿ õù À€
õÐû Æ" *  & w   fÀL W£ ÀL @aB`æcÿˆ¦³" 3  « w*  L         ÷	Þ ÷	¤ÿfæeÿˆ…‡ ó 4 &*  r £	  Îe ó2 ó  8 ³—6 3: 3
< *  ˜ æÎe2 ÿˆÂ—  †—   æ1ÿˆò± È€ù°   s©À$9Î…*  ¾ ‡ ó 4 Ô³4 Ñ³4 &£	  Îe ó*  ä 2 ó  8 ³—6 3: Îæ" æeÿˆÈ‹æ  *  
æ)ÿˆæ  æÿˆóþÿE æcÿˆ3  ³*  0" À  ÷	 ÷	 I s". 	s, 0 p üÿ(  VA ‡ ó. 3üÿ2 æÎe ³4 s . ‡        ü M   PÀÕ*  [u|q    PÀÕ   ¯”L  J©—@  J©Å@  *  J©|—@  5¬ ™@      (  [u|q(8 J©$h  
  ¯”   
   [u|q  *    ÁÁe  û	V       Ã  Ã‡ÁÁe  û	V ‡ôµ   "  J©— 
5¬ ™J©Å 
  & 4
" ô $ 4
& w     J©|—       ’ M   NÀ…È*  \u%!    NÀ…È   ¯”L  « w@      (    \u%!( e©ÝOh  ¯”   
   \u%!      õü ôÅ@  4
 w     « w       zM   PÀEÂ*  Bu›w    PÀEÂ   ¯”L  «êv@  5¬ ™@  *      (  Buœw(Ä £«`"h £«Ú}h® ¯”   
   Buœw  *    Ààú÷	  @ €ø‡ÀöÈ¥ ó0
 0
 
Ü  
«êv*  &  Ã¥P ƒð ÿ < „5‡Ä3£	 0ôµ *  L  ( òµ  ðÐÿ %ôÅ€  Ã  ÃôÕ        $5¬ ™*  r   pJ   œ ÁEáÿ5
B 5
D 5
*  ˜ H ¡ ‡ ððù ðpü W£ ‡W- ÿÿý	
  ¾  ± ‡        Î M   PÀ…È*  \u;;    PÀ…È   ¯”L  c©È_@  l¬N@  "      (  \u;;(8 i©{h  ¯”   
   \u;;  *    õ  ôµ   ÷	  †5 5   óµ!   l¬N  &  óÅ  Ã w     c©È_       pM   RÀÅÎ*  _ud    RÀÅÎ   ¯”L  C©O @  ì©W@  *  Ìªa	@  ØªW@  «W@  œ«W@  œ«ZX@  *      (  _ud(ÊÚ©¶Khd í©SZh  ¯”   
   _ud  *     ôµ@  õ‹3       1
 ÷	  4
 ôµ    œ«ZX*  & 7À  Á B8 Ã ÷	  Q‡õ¥  ôÕ    ì©W*  L õ‹3 ÷	  C ÷	Xw Fôµ@  õ‹3   ØªW*  r 4  4 
 4  ôÅ  ÷	  ôµ  õ  C©O *  ˜ °ý H t,  t, 
 ÷	  ‡    "œ«W*  ¾ 
 Ã ÷	  
‡÷	   m 5 4 ‡÷	¦†w ¼  ì©WØªW*  ä Ò4
  4  4  õ¥ 7 oC< õ¥ 7 *  
)õµ€ 6 Â 
”W 9 ƒW ^ Ùõÿ +*  0Áå0 ùÃÁ`ÃÃC`Â
ëõ : Ãå õ : *  Vƒ
¾Ãõµ 2 ÷	Nõ¥ 7 õ *  |8 ­õ€ü w  õ¥ 7 "        
Ü) Á *  ¢u`: æNàCA" ÷	ÖæÃ &
÷	Æ–
*  È†–5iÎ
ô–
ƒ÷	Þ b‡95
. 5
< A u*  î Ã ÷	Æf÷	„N‡€”À¥
 õ¥ *  . À¥ À¥ ÷	÷	÷	
Ýõ‹3 *  :
õ u<  u<  õ¥ 7 õµ€ 6 *  `‚
ÂE  ÷	  àµ 8 †´ ÷	ô t:    ØªW*  †tm<  5 
 5  5  ‡ 5 5  5
*  ¬
 5
 5
 ‡ õ< õ5@  ÷	ö  ñµ *  Ò
  ñµ  õ‹3 õ µ $A u*  ø @ æ 	õ‹3 õ õÐù Îàõ ÷	*  l ƒ
ƒ÷	– àæ÷	< ƒ‡ö‡Â`‡ õ‹. *  D      õ‹3 u- < Q. õÐù u  µ
< 5*  j. ‡ õ‹3 ôe 
 t 4
 ‡ Ã w   æC  $«W*  4 ƒàƒ#ƒÎàõ‹3 ÷	  Â`Îf÷	ºÿ  Ìªa	  ¶ê†–
‡ @4 €àÀ ¡ ‡        x M   NÀÅç*  Guc}    NÀÅç   ¯”L      (  Gub	(   Y¬T}h  Y¬±}h  ¯”   
   Gub	      ± ‡        TM   PÀ…È*  _u`"    PÀ…È   ¯”L  Ã©"@  Ú©¶K@  *  ë©"@  í©SZ@  « w@  5¬ ™@  l¬N@  *      (  _u`"(,¹©]\h Ý©Ýh  ¯”   
   _u`"  *    ÷	  ÷	  õ•ÿÿ3 A‡Ã  Ãðµ  
õ¥           ë©"Ã©"5¬ ™*  & ÁÁe  û	V ^õ¥   Uõ¥  õ¥  
  
í©SZ* 
 *  L ó, õ¥ 7 û	, ÃÐú  ðµ!  *  r Ãü@
 A B &VPµ 8 ‡Ã€úõ *  ˜ 5Š3 )õ‹3 
õ¥  &
 & & æ¦f*  ¾ &÷	  ´
 ´ ´ ƒôÅH  †5 5    l¬N*  ä ÁÁe  û	V ôÅ@  õ 	õ‹3 ôÕ@  õ  
Ú©¶Kè 
 &  
  õ‹3 
õ¥  ´ ´ ´
 w     $« w       æ M   OÀÅÎ*  _uœw    OÀÅÎ   ¯”L      (  _uœw(f   Ã©"h ë©"h  ¯”   
   _uœw  *    5
 ÃPùõ (Ã@ùõ       #  Ãpýðµ  *  & Ãüôµ   BÂe2 œ Š
œ œ   L  
 


4
 ‡ 4
 ± ‡        M   OÀÅÎ*  fu[–    OÀÅÎ   ¯”L  9© @  Éª°h@  *  œ«W@  œ«ZX@  «êv@      (  fu[–("  ì©Wh€ ØªWhø «Wh  ¯”   
   fu[–  *      
 Áe @4 t
 4
  0f&¶ì*  &   ŽŽì &
Ž’¶e V—#€ ´£ ‚²£ *  L ‡Ã5 
òÅ 
 Š•r 2 EN&æ÷	*  r   ƒ†–5(€æ ‚
Â ÂB8 ÷	    œ«W(9© *  ˜ ƒúÿ†È%`úÈ%°ý1  ôÕ  &*  ¾ & ÷	  ° ˆ      ± ‡ 	
Ã5 ñÕ 
 ±Š qí  
œ«ZX*  ä 8  ú‚qm8  q8  t ÷	  †ÀÐû÷	    Éª°h(«êv  
C’Ã ÃÀ`54 ul 4 ‡        ŠM   QÀEÛ*  guüd    QÀEÛ   ¯”L  9©ë3@  ¤«V@  *  5¬ ™@      (  guüd(Ê («$h  ¯”   
   guüd  *    ôµ€  ôµ   õ°ù Rôe  ôE  5*  &  . 5Š1 5) 0 õ• 0 ôµ  ô•  õ•*  L   ô•  õ•  ôµ   ôÕ€  ôÿÿ$ ô*  r ÿÿ" ÷	  Ãõ5  ôÕ  ô $ 4
" 4
  
9©ë3*  ˜ & W­   ôµ   õpú   ÷	  Ã  &¤«V  ¾   Ãf V‡   5¬       ™       PM   PÀ…È*  hud    PÀ…È   ¯”L  i©€‰@  ì©W@  *  Ìªa	@  ØªW@  «W@  œ«W@      (    hud(òB«¶Kh  ¯”   
   hud  *     t,  t, 
 ÷	  K‡  
 Ã  œ«W*  &  ô Ã ÷	  †È%°ý:  
 Ã ÷	  ì©W*  L   1‡÷	   ƒ`Cm: õ > õ 4 †Cí: Cm  ì©W
ØªW*  r @ õ 4 ƒõàù w Ö´ 4
  4  Bl*  ˜  õµ 2 	B-@ ÷	÷	üÑ†Bm õ: *  ¾ Aõ¥ 7 =õµ€ 6 Ã õ0 BÂ`@@ Á
 *  ä ÷	  Áe0 bÃ
÷Áe õ 0 I@ Ñå õ¥  i©€‰*        
 7 C: Cí0 B" ÷	F&
‚æÃ ÷	*  06ÂŠ†–5w Î
õ–%B> C< ÷	ô‡õ: *  Võ¥ 7 	æ
‚Ã ÷	ü –
p‡õ¥ 7 õµ€ *  |6 
ÁE B ÷	  ñÕ 
 à´ C ƒà  ØªW*  ¢õµ 2 õ¥ 7 õ¥ 7 õµ€ 6 ×  *  È	÷	æ õ < ÷	Ò :‡ 3 " 3
 $ 3*  î & s-<  ƒs<  õ5@  u  õ¥ 7 *  B í Bí: µ  
ñµ 
  m @m: 5*  : 5 
 5  5  ‡ 5 5  5

 5
*  ` 5
 ‡ u 4 B æC4 Càƒ#ƒÎà÷	    (Ìªa	*  †  ðÕ 
 Î¦÷	 ‚ê†–
‡ –
Á`Â`‡ *  ¬Ã       w   m &
õ¥ 7 õ¥ 7 	õµ€ 6   
«W$  ÒËÿÿÎ^ õ 4 †““ûñÕ 
 –
‡        xM   OÀÕ*  huœw    OÀÕ   ¯”L      (  huœw(è   S«"h  ¯”   
   huœw  *    ôÅ@    Ãpý°° fÃüôµ   `u > *  & u < Ãàùœ 5œ 2 5œ 6 µ7 5 8 — *  L  * A-< B‚ A-< <Á Â¥ *  r ðµ€  Áe !Â¥ 
Ü) Â `ðµ€ *  ˜  Áe Â¥ B< 
Bm> Â
—¢
 ‡—¢ *  ¾ ‚
u: Am< ðµ  p  ‚u@ ¡ ‡ õ   ä ± ‡        "M   NÀÅÎ*  hu‚…    NÀÅÎ   ¯”L  ì©W      @  Éª°h@  *  Ìªa	@  ØªW@  «êv@  5¬ ™@  l¬‡@  "      (  hu‚…(U«SZh  ¯”   
   hu‚…  *     	À  Á Ã ÷	  S‡q8  ÷	  5
  ì©W$ØªW*  & : õµ 2 #õµ 2 CŸ> µ
> õ
< × + *  L × $ Ñ•
 × 1 Ñ• × 0 Ñ•
 Ñ•
 *  r µ
: B> f< C4 Càƒ#ƒÎà÷	  Î¦÷	   Ìªa	*  ˜ J ‚ð†–
‡õ: u 4 ‡÷	2 ‡Ñ• ÷	( †*  ¾ 5 5  5

 5
 5
 õ5@  u  ‡ *  ä C àñ À      ÷	  †‡ ÷	  †  5¬ ™l¬‡&Éª°h  
ÀÐû÷	  ‡   
«êv       PM   NÀ      …á*  hu`†    NÀ…á   ¯”L  C©O @  B«¶K@  *  S«"@  U«SZ@  « w@  5¬ ™@      (    hu`†(d U«Ýh  ¯”   
   hu`†  *    Â 4
 ÷	  #‡ÁÐúõ¥   Ã  Ãðµ    S«" 5¬ ™*  & ÁÁe  û	V ÷	  Á€ûôµ  u Á  
U«SZ* 
C©O    L Áe  û	V õ õ  w     B«¶KL 
« w        ¾M   OÀèã*  ju[K    OÀèã   ¯”L   © }@  œ« @  *  œ«ZX@  5¬ ™@      (  ju[K(ê œ«Wh  
  ¯”   
   ju[K  *     Ì¥	 4
   ñµ 
 Tñµ 
 	ÉŠñå *  &  ± ñÕ       
 ðµ!  8p,  p,   0ƒf*  L æ &
&
&
C B ì  ‚ì æ¦,. *  r ƒ6.  Ã  Ãó5 ( 6  6   ÷	    5¬ ™( © }*  ˜ –5–5–5‡ñÕ 
 «B’	±à ± ‚
Â Â±*  ¾  Â ÷	  †&& ÷	  ° ˆ	
1
 1
   œ« œ«ZX
  ä &V‡        „M   NÀ…á*  luÖs    NÀ…á   ¯”L  œ«ZX@  « w@  *  È«`T@      (  luÖs(Ä ò«ˆh  ¯”   
   luÖs  *    ôÅ@   Áüòµðÿ Sòµ  Môµ   I*  & Ápýòµ  CÁ€þô >òµ   
Âÿÿ÷	    (È«`T*  L  †AL 0   4
 ô 4        2$ *  r ò" 2 &  ñÕ 
 ñ  1  ÉŠ*  ˜ ñå  ± ò	
4
 ÷	  Á ôÕ  4
 u  œ«ZX
  ¾  w     « w       6M   NÀEÛ*  mud    NÀEÛ   ¯”L  ì©W@  Ìªa	@  *  ØªW@  «W@  œ«W@      (  mud(@  
¬¶Kh  ¯”   
   mud  *    &
 & & 4 
 4  4   1-*  &   1-
  ÷	  ?‡   
 Ã   œ«W*  L W­7  	ô u-. 8 Ã ÷	  &‡÷	     ì©W&ØªW*  r m õ: Ã I@ Ñàõ0 õà. õ¥ 7 
C*  ˜ : Cí0 B" B÷	8 B> C< ÷	, †      5 5*  ¾   ´ ´ ´
 5 
 5  5  ‡ æ*  ä C4 Càƒ#ƒÎàõà. ÷	    ðÕ 
 Î¦  Ìªa	*  
f÷	 ‚‡B â–
‡ Ã u-. 8   0W­7  Ã w     «W       *M   NÀEÛ*  mu¡d    NÀEÛ   ¯”L  S«"@  « w@  *  
¬¶K@  5¬ ™@      (  mu¡d(b ¬Ýh  
  ¯”   
   mu¡d  *    Â ÷	  "‡Ã€þ5 . Ãàù5- @ Ãpú  
S«"*  & õ¥ 7 Ãüðµ!  
Ã  ÃÁÁe  û	V Ã  5¬ ™"
¬¶KB 
   L  õ õ €4
 w     « w       ,M   NÀÕ*  ouó~          NÀÕ   ¯”L  ØªW@  œ«W@  "      (  ouó~(Š l¬Nh  ¯”   
   ouó~  *    ¡  @÷	  ôµ  8ñµ 
 4 m   ØªW*  & &
ò¥  ò¥  	òµ€  ËÿÿÎ^ õ *  L 4 †““ûòµ!  1  –
òµ   ±
   r ñE  Âe( "
âe b÷	  ‡   œ«W       M   QÀ…á*  ‚uœ'    QÀ…á   ¯”L  9© @  ÉªØh@  *  œ« @  «êv@  l¬‡@      (  ‚uœ'(  ©€Th  ¯”   
   ‚uœ'  *    W­    q " q  $ ñe $ q" f*  & & 

Â Ã ÷	  úÿ†–5± ‡ ÷	  †À  9© $      ÉªØh*  L ðþ÷	  f Ã 
Ã
ý€±
  ±   «êv*  r  ‚ öe 
 v ñ  ¶,"  ¶,$ 
 ‡*  ˜ ñÕ 
 ÷	  ‡±
  ±  ‚ ¶,"  ¶,  l¬‡*  ¾ $ 
 Øþ   € p $ p " $ " Âå*  ä  ƒ°  ð ñÅ 
 
÷	  †Àðþ÷	  €  œ« $«êv
  
&V‡        
M   OÀÕ*  ƒu#    OÀÕ   ¯”L  d©°;@  m© …@  "      (  ƒu#(^ 9©˜Kh  ¯”   
   ƒu#  *    æ  &f
C  6 B, ÷	  €‚Âå   d©°;*  & ÷	  ƒf¦
÷	  @ƒ‚&  
@Ü( 
  d©°;m© …  L ÷	         Ál @‚‡   m© …       ÈM   PÀ¼*  ƒukM    PÀ¼   ¯”L  9© @  @©ôD@  *  C©z@  D©Mw@  Éª°h@  œ« @  œ«ZX@  *  «êv@  « w@  ¤«@  Y¬T}@      (    ƒukM(˜ D©Åbh  ¯”   
   ƒukM  *    ÷	  †w    
Á Â Ã ÷	  úÿ†"  @©ôD« w9© *  & `ú	&& ÷	  ° ˆ	"`úúÿ÷	    œ«ZX(Y¬T}*  L Þ÷	  †Àðþ÷	  ÷	  ‡4p $ 4r " 4
  
Éª°h«êvC©z*  r & 
÷	   ¦ Á  ÷	  ‚÷4
 w     
œ« ¤«(D©Mw       ¼M   PÀEÂ*  ƒu `          PÀEÂ   ¯”L  ô¨"@  ô¨Œ@  *  9©ë3@  ;©EM@  ;©OM@  « w@      (    ƒu `(Ê G©…\h  ¯”   
   ƒu `  *      ÷	  B$ Ãòµ   ÷	  †w   B$   
9©ë3ô¨"$;©OM*  & òµ   ôÕ   ?A 
  
Ü( Ã Ã*  L æf÷	  –
  
œ ÂÅð —  Ü) —    
ô¨Œ*  r Áe 
l* t 5

 5
 5
  
4 4 *  ˜  4 ô 
 4Š ­  ‡–
õ  w     (« w  ¾ ƒõ þ w     ;©EM       M   PÀÕ*  ƒuq    PÀÕ   ¯”L      (  ƒuq(\  J©˜h ¯”   
   ƒu      q  	         *   ôµ!  Â@þõµ  Âpýw @ ¬*  ,      ù5
 
 5  5œ 1 5  *  R f
 V] µ

  
@Ý Àµ Àµ ÂÀú_*  x 4 t , t .  
@Ý   ÂpúM4Ð*  ž  
À¥ 
BÝ0 Â ´) A t* t *  Ä Â û5B`À¥ Âe ‚

AÝ1 
t( Á *  ê Á ‚W  @ƒÂ@ÿ
C@ )ÁÁeøþ@²*  Âðø@”K¤ÀÉ‹ûÂ þ0Â°üõ *  6µ ± ‡ Ë¥ ó‹ ÂÀÿñPÀ Ö¡ ‡         M   RÀEÛ*  ƒu|q    RÀEÛ   ¯”L  J©˜@  J©Å@  *  J©|—@  5¬ ™@  h¬8L@            (  ƒu|q(@   J©E$h  ¯”   
   ƒu|q  *    f
 ÁÁe  û	V Ã  Ã‡ÁÁe  û	V 	‡Ã  (  J©˜ 
5¬ ™J©Å 
(5¬ ™  & ÃÁÁe  û	V †µ
 ƒ5w     
h¬8L* 
J©|—ú       JM   PÀEÂ*  „u%!    PÀEÂ   ¯”L  Éª°h@  œ«X@  *  «êv@  « w@      (  „u%!(„ e©Ph  
  ¯”   
   „u%!  *    ôÅ@  5
N Ãpý òµ  +Ã€þ-   *  & -   ! õ0úN ñµ 
 ÷	  †Àðþ  "Éª°h*  L ÷	   m ÈÕ Â ñÕ 
 4
 ÷	  ‡Ã õ  «êv œ«X  r L uL  uN        w     « w       – M   OÀÅÎ*  „u;;    OÀÅÎ   ¯”L  c©È_@      (    „u;;( i©Å{h  ¯”   
   „u;;       
ƒÜ( Ã Ãõ  w     c©È_       LM   PÀ…á*  …u$™    PÀ…á   ¯”L  ©€T@   © }@  *  Éª°h@  Óªz@  ”«X@  œ«X@  «êv@  *  5¬ ™@  j¬˜@      (  …u$™( ©À}h  
  ¯”   
   …u$™  *     Ì¥	   ƒ ‚ ì$ ‚ì" æ &
&
*  & &
æ¦,. ƒ6.  Ã  Ãó5 ( 6   5¬ ™*  L  6   ÷	  †–556Š @ÀeL  ö$     © }*  r ö"  ÷	        –5–5–5†÷	V õýL ‡ðÕ  ÷	  ©€T*  ˜ 
 ± ‡ ÷	< ‡ °$ p °" r ÷	  ñU 
   "Óªz*  ¾ 4
 ÷	  ‡ Æe  4
 ÷	  ± ‡  
Á   
œ«Xj¬˜*  ä Â Ã ÷	  †õL ó± ‡ úÿ÷	  †Àðþ  ”«X"Éª°h  
÷	  t ‡   «êv        M   SÀÕ*  †ut:    SÀÕ   ¯”L  9©ë3@  9©˜K@  *  Ã©€"@  Éª°h@  ”«X@  œ«X@  «êv@  *  « w@  j¬˜@      (  †ut:(:¹©@Xh:   ¹©…\h  ¯”   
   †ut:  *    5
N ÷	  †÷	5
2 ÷	" õ¥   4    
Ã©€"*  & 4 
 ôe 
 t w   õµ        æ  æ    « w*  L B Ã ‘”Ã
ý€%õµ  @
 A B*  r  õ¥   W-2  	ôµ@     *  ˜  
  ÃÐúw h4 t W      *  ¾ Ã°ûA†ÃPü r  2  ƒÃ°ûw *  ä ,÷	  ´ 5 
 5  5  õ¥   5  9©˜K*  
 & 5 (  2  r   4
 *  0&f÷	  †–%w Ô €B, ÷	  ÷	  †õ  œ«X 9©ë3$”«X*  VL ^w Üþt ÷	  †Àðþ÷	   m W-2    Éª°h«êv*  |õ5   ÃúÈµ Èµ &.õ¥   Èµ *  ¢Èµ ôe  t    Ã°ûw æþÃ      @ú*  ÈÈµ 	Èµ õµ  ÃPþÁæ÷	  ƒ4
  $j¬˜*  î ôÕ@  õ L uL  uN  fL V‡ õ*  L ôÅ@  4
 4
 5

 5
 5
 5
& 5
( â       jM   RÀEÂ*  ‡u`"    RÀEÂ   ¯”L  9©ë3@  ¹©@X@  *  ë©€"@  Éª°h@  Ìªa	@  «êv@  « w@  *  j¬˜@      (  ‡u`"(@Ý©‚h  ¯”   
   ‡u`"  *    ÷	  †w ÷	  †w ú  ÷	  †Àðþ÷	    ë©€"¹©@XÉª°h(«êv*  & m ‚
õ¥ 0 µ” µ” u.  õ¥ 0 *  L   
Ü) õà A" Â`÷	   õ5@    Ìªa	*  r  óµ  ñµ 
 óµ      =ÿ µ u> *  ˜  C 5
 õ  	ƒõÐù õ C õ A *  ¾ ÷	  ÷	  Ã÷	b 4  4 
 ôe 
 t   Ìªa	
9©ë3*  ä W- ÐùÃ 5
N õL uL  uN  ôÅ@  *  
w   4
 4
 5

 5
 5
 5
& 5
( ÷	 ä  « w  0 4
 ÷	  ‡   j¬˜       (M   QÀèã*  5uË–    QÀèã   ¯”L  $9Î…@  s©À@  *  Éª°h@  ÉªØh@  « w@  5¬ ™@      (  *  5uË–(¬ ©ô&h~ ©¿.h( ©Iqh ©Fyhx"   ©S~h*  ©ñh¨ ©™’hp¯”   
   5uË–  *    õÀý õðÿ õù À€
õÐû Æ" *  & w   f      ÀL W£ ÀL @aB`æcÿˆ¦³" 3  « w*  L   ÷	Ò÷	¤ÿff÷	^ æeÿˆ…‡ *  r ³" 3  þÿE D Áe B”	``fÂ
*  ˜ ý÷	 ÷	®‡ öÿ÷	  «‡øÿ÷	  ¥‡  Éª°h&ÉªØh*  ¾ €‡ Ã  ÃÀ$ ÀE 3 $ ó& óe"   
5¬ ™*  ä & È Á5 ÷	~ÿææ  æ!ÿˆ‡ ó 4 &*  
£	  Îe ó2 ó  8 ³—6 3: 3
< *  0£	 	ôµ€  æÎe.³< æÎe2 ÿˆÂ—  †  &s©À*  V—   æ1ÿˆò± È€ù° ‡ ó 4 È³4   $9Î…*  |Å³4 &£	  Îe ó2 ó  8 ³—6 *  ¢3: Â£	 ôµ€        Áe Â" ‚á‚‘ ƒ*  ÈÑ• æÎe:þ‰0
üÿÆ" ‘‘Â
ý‡ æ" æ*  îeÿˆÈ‹æ  æ)ÿˆæ  æÿˆóþÿE *  æcÿˆ3  ³" ÷	~þÀ  ÷	 ÷	 I s". *  :	s, 0 p üÿA ‡ ó. 3üÿ2 æ*  `Îe ³4 s . ‡ &æ¦f&€
 v
 Ã  Ã  &5¬ ™*  †óU ( ÷	âý÷	.þóE ( €‚ƒ„…æsÿˆ       ÞM   PÀEÂ*  Buœw    PÀEÂ   ¯”L  «êv@  5¬ ™@  *      (  Buœw(£«`"h £«Ú}h¯”   
   Buœw  *    Ààú÷	  @ €ø‡ÀöÈ¥ ó0
 0
 
Ü  
«êv*  &  Ã¥P ƒð ÿ h „a‡Ä_£	 \ôµ       *  L  T òµ  ðÐÿ QôÅ€  Á×   ‡*  r ð5€  ôÕ€  ÃåP ÂÂå
 ‚°P B`Âå *  ˜ CÃEüÿÑQÃ
ý…Ã  Ãó5 ( ôµ€    5¬ ™*  ¾ ðpÿ ôÕ  pJ   œ ÁE*  ä áÿ5
B 5
D 5
H ¡ ‡ ððù ðpü W£   
‡W- ÿÿý	 ± ‡        "M   NÀÅç*  Gub	    NÀÅç   ¯”L  5¬ ™@      (  "  Gub	(Š Y¬T}h  Y¬±}h\ ¯”   
   Gub	  *    ñÕ@ 
 BÂe ƒ‚ ÂE ù3 £ ôµ*  & €  ³
 
0
 fÃ  Ãû	T ñµ 
   5¬ ™*  L ÷	 †ñÅ@ 
 ¡ ‡ B f¦ÂE ±        Á  r & ± 2
 ³& Â± ‡        ÌM   QÀ0ä*  5u0™    QÀ0ä   ¯”L  $9Î…@  ›rX:@  *  ›r†@  û¨€@  s©À@  « w@  ó«H†@  *      (  5uË–(h ©ô&hÌ  ©¿.h" ©Iqh^ *   ©FyhÆ  ©S~h*  ©ñhö  ©™’h¾ ¯”   
   5uË–  *    õÀý õðÿ õù À€
õÐû Æ" *  & w   fÀL W£ ÀL @aB`¦³" 3    « w*  L ÷	Ò ÷	ªÿf…‡ ó 4 &£	  Îe*  r  ó2 ó  8 ³—6 3: 3
< æÎe  ³< æ  "û¨€Ž 
 *  ˜ Îe2 ÿˆÂ—  †—   æ1ÿˆò± È€ù° ‡   s©À$9Î…      *  ¾ ó 4 Ï³4 Ì³4 &£	  Îe ó*  ä 2 ó  8 ³—6 3: Éæ" æ  æ  &÷	  Ÿ  ›rX: ›r†&ó«H†*  
  Ÿ  þÿE 3  ³" À  ÷	 ÷	 I   ›r†›rX:*  0s". 	s, 0 p üÿA ‡ ó. 3üÿ2   VæÎe ³4 s . ‡        
M   NÀÅç*  Gu0€    NÀÅç   ¯”L  ò«E"@  5¬ ™@  *      (  Gub	(f Y¬T}h  Y¬±}hJ ¯”   
   Gub	  *    ñÕ@ 
 BÂe ƒ‚ ÂE ù3 
0
 f*  & Ã  Ãû	T ñµ 
 ÷	 †ñÅ@ 
 ¡ ‡ B  5¬ ™  L  ±  &€÷	  Â± ‡   ò«E"             „M   PÀÅç*  3u05    PÀÅç   ¯”L  ì©x@  ”«€@  *  ”«‡@  «êv@  5¬ ™@  Y¬T}@      (  "  3uÀ(@9© h  9©ë3h"¯”   
   3uÀ  *    æCPÎU £	  Ã 	À, *  & Á, Ã ö&À      
0
 0
úÿÃ  5¬ ™*  L –
ó 
Ä, ðúÿÃ`ú3Š ó ³ *  r óÅ 
 ³  ƒÀðþ÷	  fƒ ÷	(†–%  «êv*  ˜ Ã þ3± ± ± CðúÿÎ5 Î5 ó‹*  ¾  Á÷	  †Ã`ú0
úÿoC»óÕ 
 3 ³Š  Y¬T}*  ä  Î5 !ó æƒ ÷	À ƒ†Ã þVs *  
 s  óÅ 
       ñµ 
 óÕ 
 1
 1
 Á*  0Î5 5ñµ 
 1Î5 (¦æ£	  Ãœ*  V ÃE ÿÂ  ÷	  ƒ‚‡ñÕ 
 ÷	  †"`ú  ì©x"”«‡*  |	0
úÿ1
 1Š ñÅïÿ
 £	 ÷	  ñµ  $”«€*  ¢ 
 ÷	  ÁÃ È–
&V‡ £	    Y¬T}*  ÈA ñ‹ B, ‡ñµD 
 Ã5 	ñµ 
 *  îÃ5 ñ A ãÁ± 	ñÅïÿ
 *  1
 1
 1
 ‡ £	  óµ  Ã 
  :
‡        ÐM   PÀÕ*  Bu0N    PÀÕ   ¯”L  œ« w@  «êv@  *  ¤«V@  ¬¸L@  5¬ ™@  l¬‡@  l¬À@  *      (  Bu€K(œœ«       h œ«ZXh  ¯”   
   Bu€K  *    ñÅ# 
 
ñ‹ Àðþ÷	  Ã  ÃÀ  0
 ¦  «êv5¬ ™*  & Âµ 1! È0úTñµ 
 ñÅ 
 Â5 *  L ñµ 
 Â5 Â5	 ÷	  ÷	  :‡Î5   l¬À l¬‡*  r ÷	r &÷	° €$ñŠ !ñµ 
 	ñ•  ÷	    (l¬‡*  ˜ #‡ñŠ ÷	  ÷	@ Î5 &@¡ ñµ@ 
 ÷	  ¬¸L*  ¾ l ‡÷	  €p öÿ0
öÿp øÿ0
øÿÈ –
&  
¤«V*  ä V‡ ¦æ£	  ñµ 
 f f Ãœ*  
 ÃE ÿÂ  ÷	  ± ± ñÅ 
 ƒƒ‡  £  œ« w*  0	      
ð ð‹ ðµ@ 
 *  V        ðÀp  p  pœ
 
 ðÅïÿ
 0
 $  |0
 0
 ñÅ 
 1
 1
 1
 ± ‡        ú M   NÀÅç*  =u0g    NÀÅç   ¯”L  5¬ ™@      (  "  =uÃ(h Éª°hh  ÉªØhh ¯”   
   =uÃ  *    æöÿæøÿÀ      €c¦¶ Jñµ 
   5¬ ™*  & 1! @ ÀÿÿÀ ÿÿ—#öÿ¦ÿ   L À `¨ÿÀ €¡ 

± –
‚‡        M   OÀ¼*  Bu0    OÀ¼   ¯”L  ¤«@  ¤«By@  *  5¬ ™@      (  Bu¢}(X ¤«Vh  ¯”   
   Bu¢}  *    &&Ì¥	   
À      Â  ÷	  5¬ ™*  &         ‚Áe
 @  1   
  ô  ¤«By  L Á ÷	  „‡   
¤«       ¬ M   NÀÅÎ*  1up;    NÀÅÎ   ¯”L  ì©By@  5¬ ™@  "      (  1uwL(  ô¨š:h  ¯”   
   1uwL  $    p 0Š
 À      Â  ÷	  @‡   5¬ ™ì©By       M   RÀ°¾*  4u0g    RÀ°¾   ¯”L  ´:¼p@  ô¨V@  *  9© @  C©z@  m© …@  ,ªPd@  Éª°h@  *  œ« @  «êv@  5¬ ™@      (  4uëg("  p©Åœh ¯”   
   4uëg            *   æ5
8 5
: 5
< õ  ¡  óµ  õ*  . Ðÿ       ± Ã ób‡&
&
&
C@ 6ÁÁe²ÿÂ*  T ðø@²N@”‚ÒK¤ÀÉ‹úÂ þBÑ¦QÔ*  z QÔŠ ‡0Â°ü5
ÁÜ "ƒÂ@û-JŠ
*    PÀ’ÀÀÀaÀe~ È	"‡À ÉC Ë¥ æœ*  Æ  ÷	ð‡Ã ôC< 3Š æÿ ÷	Ö‡3 *  ì 3
 Â 
Æe µ õ ÷	
 ƒf V‡ A*  8 
5
8 Â ÷	  †õðþ ‡ ¡ ‡ w  w ì  œ« *  8w w Xf&Àó÷	vƒfæÅÅe 
%
%
*  ^%
÷	V ƒÓ$‹ ËËËË÷	@ eƒ†„…*  „‡ ‚D˜Äå0 Ä%	 A‡%D˜Äå0 Ä%	 :‡ÄaÄÄ*  ªaÄJ m < <   Ã ÷	ÄÿÃ
üBÄ"NAJ*  ÐBEFRAMRPAYAMNUJ      LUJGUAPESTCOV*  öONCED  !¥!£!­ 	`Ô •ôÂ û*  ¯uþÿÍ5 ÃÀ% €
ƒ
Í
Ce*  B÷	@ÿÍæ ä‡Í`Õ
%%ß#Ý#Û$)Åå f*  hC
 ÷	  Ae@C÷åt%
å. åÄÀ  m© …*  Ž  fUUUM…UÃB
†Õe˜ UM…Õe€–U*  ´UM…À
é‡ µ> ôµ!  
&†à‚*  ÚÀ &
¦&÷	  ° ¦fæÃ  ÃÂ  À  û	  ,ªPd5¬ ™"´:¼p*   R Â€ùæ`ÿ‡û	T ± ‚’Öƒ†} > À*  &ÿ÷	–ÿƒÁQ$‘“Š‰Ñ ‰!Š‡ &
ôµ   $t *  L !†ŒŒvŒ  
 Ý ` 
÷	8‡€cÁ*  rÐQ$Àe       Àe Â Â
ý¡ –
‡ *  ˜õ< ¡ ‡ *+,-
	 
*  ¾Á &
ôµ0  hB: 	€œ €
Ê_€Ž*  ä÷	¼ Z‡õ: A< W" 
‡1t  ôµ  I*  
Á1  €c5: °­  ÔÀÀezÿ””c*  0Â`ð¥ þÿJ’öóµ  3
* 3
, À RÀ
*  VýÂ À  R”À
ý×¬ 8 ‡€3œ 5 3 *  |6 3
 2 3œ	  3œ 4 3T . 3V 0 ¡ –
Ž*  ¢‡ æ&fA8 
Á ÷	  Â þ/‡58 
÷	  ô¨V*  È  ‡€ Â 
÷	  úÿu8 †È%`úð  œ« 9© *  î6 à% þÂðþö þ ± ÷	  †ÀÐû÷	    Éª°h(«êv  ÷	        Â û–Uƒ‡   C©z       *M   RÀÅç*  ¸up†    RÀÅç   ¯”L  E©¶H@  ¾©à@  *  À©h	@  ;ªà8@  =ªÐ@  Šª@ @  ¯ª€@  *  Óªø8@  I«„–@  S«`"@  œ« @  œ«w@  *  « w@  Ã«q@  ¬À@  5¬ ™@      (    ¸u`†(€U«-‚h  ¯”   
   ¸u`†  *    5
4 ÷	  †w ÂÁ
÷	  "‡Ã  ÃÁÁe  !  
S«`"œ«w 5¬ ™(À©h	" 
*  & û	V †, Ðü	Ã  ÃÁÁe  û	V ê†÷	´  5¬ ™Óªø8< 
*  L Ã  ÃÁÁe  û	V †w Vf6 5
6 õµ ,   5¬ ™=ªÐT 
†*  r Ã  ÃÁÁe  û	V †5 ôÕ@        µ4 Ã  Ã  5¬ ™¬Àz 
&5¬ ™À*  ˜ ÁÁe  û	V @@  œ €Š÷	  ?‡p-<  :‡÷	    ¯ª€š 
Šª@ (E©¶H *  ¾ õµ 9 4Ã  ÃÁÁe  û	V †, Ðü	Ã    5¬ ™À©h	Î 
(5¬ ™«*  ä ÃÁÁe  û	V ê†R÷	Ã  ÃÁÁe  û	V G‡"  
Óªø8è 
5¬ ™";ªà8 
*  
õµ , Ã  ÃÁÁe  û	V †5 ôÕ@  ±  5¬ ™¬À
*  05 
 5  5  ôµ  4 
 4  *  V4  4  4  4  õ õ  ôµ*  |  õ  ôµ@  õ  !Ã  ÃÀ    "5¬ ™*  ¢5 5  ÁÁe  û	V uL        uN  5

   I«„–®
*  È5
 5
 ôÅ  4Š  
÷	  4
 A4    œ«w*  î
÷	  ôÅ@  w   u: 6 õµ 9 8õµ 9   
œ« « w*  4A@ ñµ  C: `Ëµ (Ã  ÃÀ  È   5¬ ™*  :àý–
A@ ñ‹ ¸§ôÕ  &Ã  ÃÁÁe  û	  5¬ ™&¯ª€Z
$  `V €Ã ÷	  Ã ÷	  ã‡õµ 9 é‡   Ã«q¾©à       M   UÀ¼*  ½u0g    UÀ¼   ¯”L  E©¶H@  E©ÉH@  *  ¾©è@  À©h	@  ;ªà8@  =ªÐ@  ŠªE @  *  ¯ªH@  Éª°h@  Óªø8@  I«„–@  œ« @  *  œ«w@  «êv@  « w@  Ã«ô@  Ã«      q@  *  ¬À@  ¬"@  5¬ ™@      (  ½u¡d(À  ¬-h  ¯”   
   ½u¡d  *    ÷	  †w  ÷	  †ÀÐû÷	  u4 t @m: Àe  ¬"Éª°h«êv*  &  ÷	&@@ ðµ  u-,  õàù  €*  L ÷	  õµ 9 5
4 w ‚
&
÷	p†–
w rÁ  E©ÉH*  r  
÷	^	†–
uL  uN  w z–
5
, Ã    (5¬ ™*  ˜ ÃÁÁe  û	V  
÷	  5Š9 Ã  ÃÁÁe  û	V (  
¯ªHœ 
ŠªE 5¬ ™$=ªÐ¶ 
*  ¾ †w (f6 5
6 õµ , Ã  ÃÁÁe  û	V   5¬ ™$¬ÀÜ 
 *  ä †5 ôÕ@  µ4 u < u >   ‚*  
 `      fÃ  ÃÁÁe  û	V  
@ÔfÀE÷	    5¬ ™¯ªH
(ŠªE ¯*  0\‡ôÕ  p-<  :‡÷	  õµ 9 4Ã  ÃÁÁe  E©¶H"5¬ ™*  V  û	V †, Ðü	Ã  ÃÁÁe  û	V ê†8÷	"  À©h	T
5¬ ™Óªø8n
*  |ä Ã  ÃÁÁe  û	V -‡õµ , Ã  ÃÁÁe  5¬ ™;ªà8†
"5¬ ™ *  ¢  û	V †5 ôÕ@  ­õ õ  ôµ    ¬À 
*  Èõ  ôµ@  õ  –
õÐþ –
u*  îL  uN  Ã  ÃÁÁe  û	V –
A4 
t    5¬ ™I«„– 
*  4
 5
4 
÷	   4
 
÷	  ôÅ@    œ« "œ«w      *  :w    fœ ÎEðÿ—¥ 5”, 5”- u ,   « w*  `‡ u: 6 õµ 9 3õµ 9 /A@ ñµ  Ã*  †  ÃÀ  Èàý–
A@ ñ‹ ¦–
³ôÕ  &Ã  5¬ ™*  ¬  ÃÁÁe  û	V €Ã ÷	  Ã ÷	  â‡õµ !  5¬ ™¯ªH²
Ã«q"¾©èµ*  Ò9 é‡ fõ•  2   l fu < u *  ø> Ã  ÃÁÁe  û	V A4 ¶
 € ÷	  †–%  5¬ ™¯ªH
$ŠªE *  ¡ ‡ ôÕ  p-,  †p-<  †Bp-<  ‡€*  D ÷	  õµ 9 6A@ ñµ  õÐþL –%± ‡   E©ÉH*  j)ö @@ œ Nt4  u: . Ã    (5¬ ™*  ÃÁ      Áe  û	V ‡Þ	5 4 Þ‡u. : @m: Àe   
Ã«ô”
«  ¶÷	„þ6 —       Ä M   NÀÕ*  ºu°x    NÀÕ   ¯”L  ¾©Ó@  Šª0 @  *  Ã«Kq@      (  ºu°x( ¾©àh Šª@ h
   ¯ª€h  Ã«qh ¯”   
   ºu°x      ‡ w   w   w     Ã«Kq¾©ÓŠª0        Ä M   NÀ…á*  ºuµx    NÀ…á   ¯”L  ¾©Ó@  Šª0 @  *  Ã«Kq@      (  ºuµx( ¾©èh ŠªE h
   ¯ªHh  Ã«qh ¯”   
   ºuµx      ‡ w   w   w     Ã«Kq¾©ÓŠª0        –M   RÀÅÎ*  ©u[M    RÀÅÎ   ¯”L  9©       @  C©z@  *   © }@  ÉªØh@  Óªz@  œ« @  œ«ZX@  *  «êv@  5¬ ™@  Y¬T}@      (  ©u[M(–  ô¨8^h  © h ¯”   
   ©u[M  *    ‡ &
& 2  ‡õÀÿL w ^õ‹8 W­8  *  & Àðþ÷	  
Ü €€€` 
Â Ã ÷	    «êv(9© *  L úÿ†÷	ñµ 
 	Â ÷	  †w 
€Ê  œ« *  r t ÷	  †ÀÐû÷	  ÷	  †õ ûL hÃ   
ÉªØh«êvC©z*  ˜ Ž¬ Âe@ Ã
ùõ ûL ZÃ õ 8 4‚¦ ¦*  ¾  œ N`v ¶,  Ž, j‡×  õ‹- *  ä µ 6 µ 8 µ . µ 0 µ 2 µ *  
4 ƒ
      r` r ² ² É ñÕ 
 ÷	  †  &ÉªØh*  0ÀÐû÷	  ÷	  Â ÷	  †Á"`ú&&   
«êvÓªzœ« *  V÷	  ° ˆfL fN  ÷	  ° ˆ–
  œ«ZXœ«ZX*  |À      && Át  
÷	  4
 °  5¬ ™"œ« *  ¢ ˆ&V‡ —,
   —,    –%—,   *  È—,   ²  ²  ²   ²"  2
 2
*  î ²  ²  2
 2
 w °þö Q ñÅ*   
 Â ÷	  †w  ÿ 
Á Â Ã ÷	    œ« &9© *  :úÿ†÷	 ‡ðv t  +ñÅ 
   fœ
 1œ*  `
 
 ñÅ@ 
 Î5@ ñÕ@ 
 ÎÅ@ ð5@ 
 ÎÕ@ *        †°•
 f 1  ° N 1  ° €ÀE ÿ*  ¬w Výæ¦æ  æ  &
&
ò$   
ƒÜ ð *  Ò. ‡æ&. &
¦$ &
Ã  Ãóµ ( 	¶  5¬ ™*  ø  ¶  ö• 
 ÷	  †Æe w Lþ‚ ƒ    © }*  6Š ²" ²  ² ² ²* ²( –%æ ó*  D  $ ó " óe $ s" 3
& ƒw Vý"`ú
*  j& &
÷	  ˆ° 
"`úúÿ÷	  ¡   œ« &Y¬T}
  ‡ ± ‡        Ò M   SÀ…È*  ªuœ'    SÀ…È   ¯”L  ÉªØh@  «êv@  "      (  ªuœ'(@ ©`Th  ¯”   
   ªuœ'  *    &÷	  †ÀÐû÷	  B ‚
Â
ý°•       p   ÉªØh«êv  &  ð  °Š ð•ÿ  p-  ‡        „M   OÀ¼*  ªufs    OÀ¼   ¯”L  Ý©[}@  ÉªØh@  *  Ìªa	@  «êv@      (  ªufs(B"©ðsh  
  ¯”   
   ªufs  *    ÷	0 

Ã ÷	  úÿ†‡ tF   ÷	    Ý©[}(ÉªØh*  & †ÀÐû÷	  È ð  6 ô‹ E‚ 2­   «êv*  L  '2­  #õµ  , 7l Ñ•
  Ñ• *  r Ã õµ , Â2 BaÂ. Ba÷	  ‚ r    Ìªa	*  ˜ ²à õµ , õµ ,  Áe Ñ•  *  ¾    Ée € Áe ƒ Cm: ö *  ä  õµ  , õµ ,       ö  ‚ ¶  ¶` *  
óµ   ¡ ‡ ö  ‡¡ ‡ ö   œ ÁE*  0ðÿÁ¥  Â‚m 
Ü Á Òöe  v`*  V ‚ ò¬  9ò¬  5æÁÁe Â. BaÃ*  | ÷	  ƒ‚ Æå óÕ   Â²$  Ã ÷	  Ìªa	*  ¢   € B‚m  `ƒà÷	  ‚Ã ÷	    Ìªa	Ìªa	(Ìªa	*  ÈÆe p 0à % AbÂÂe ‘ æÃ ÷	*  î  € Èe ¶í  € B‚m  ƒí Cí  Ìªa	*  : ÷	  °í  ƒ¶
 6  6` w ÖþB@ ‚œ  Ìªa	  : Â Â‡        žM   zÀÅç*  ªuLy    zÀÅç   ¯”L  ©òƒ@  Ìªa	@  "            (  ªuLy(¶#©àeh  ¯”   
   ªuLy  *    ƒ € W­8  õµ , W­8  ðµ*  &   ðÅ  óÕ  3  3
 
 s.  *  L s0 
 € Áe W­8  õµ  , B: ‚m*  r   `ƒ
 ð ðe  ÷	  w Ô W­8  =  Ìªa	*  ˜ õµ , 9Â2 Ba l —-  &Ñ• Ñ• *  ¾      Q Q C B ÷	*  ä   p 0à õµ , õµ0 , 1÷	  €   Ìªa	$©òƒ*  
°m  )õµ ,  õµ0 ,  `Â. Ba—-*  0  »÷	  B: ‚m ƒ
 ÷	  € p 0à  ©òƒÌªa	*  V õðþL ± ‡ ƒ ö       öl  ÁÁe v  *  |†ñœ  ³Š Áe   œ ÂEðÿÂ¥     ¢ 
@ÔÀ @ÔÀ `ã¡ ‡        t M   PÀÕ*  ªu¤y    PÀÕ   ¯”L      (  ªu¤y(   #© sh  ¯”   
   ªu¤y      4
 ± ‡        4M   OÀÅÎ*  «ukM    OÀÅÎ   ¯”L  @©ôD@  D©Mw@  *  « w@  ¤«@  ¤«ªH@      (  «ukM(X   D©íbh  D©ch  ¯”   
   «ukM  *    ÷	  †w    æ Â 
Ý m ÷	  @©ôD« w*  &   Á  Â÷	  ƒì4
  ¦ Á0 ÷	    ¤«ªH¤«(¤«  L ‚÷4
 w     D©Mw            &M   PÀEÂ*  «u `    PÀEÂ   ¯”L  ô¨"@  ô¨Œ@  *  ô¨ªH@  9© @  9©ë3@  ;©EM@  ;©OM@  *  œ« @  « w@  ¤«ªH@      (  «u `(Ü   ;©æ_h G©­\h  ¯”   
   «u `  *    æ   ÷	  Ãðµ   ÷	  †–
w      9©ë3ô¨"&;©OM*  &  ðµ   ôÕ   –
)Ã÷	  <‡  

  ô¨"*  L ÁÜ Ál ÷	  ‡4 Àœ( À ÀA N †  ô¨ªH*  r &f÷	  –
6­  	‡t  –%õ  w   Ž  
ô¨Œ&« w*  ˜ ÷	  Ã 


Ã ÷	  ‡úÿÂ ÷	    9©ë39© &œ« "  ¾  
ÁÜ       Ál ÷	  ƒõ þ w     ¤«ªH ;©EM       tM   QÀÕ*  «uq    QÀÕ   ¯”L      (  «uq(Æ  J©™h ¯”   
   «uq  *     ôµ!  Â@þw Dõµ  Âpýw 4*  & t , t .  
@Ý Àµ Àµ ÂÀúw *  L 4  
@Ý   Âpú{4Ð A t* õ¥*  r   t Â ûk
BÝ1 ‚
´( Â Â— *  ˜  @‚  Âå B ƒÂ@ÿU&
&
&
C@ D*  ¾ ÁÁe@ÿ@²Âðø#@”‚ÒK¤ÀÉ‹úÂ þ*  ä Ñ¦QÔQÔŠ ‡0"Â°ü

ÁÜ Á%ÿ *  
÷"Â@ûõ –
×¬   ó‹ ³Š ô¬*  0 ( ƒôœ ( Š
P      À »Ö5 ôµ   Â*  V`û–%µ ± ‡ @ ¬     ù5
 *  |
 5  À 
‚ÕÂ
€
Âå û4 
‚Õ´(  ¢ Â
‚‚‚€`õ%   5 
 ƒ5
 ¡ ‡        \M   QÀ…È*  «u|q    QÀ…È   ¯”L  J©™@  J©Å@  *  J©|—@  ¤«@  5¬ ™@  h¬_M@      (    «u|q(d J©m$h  ¯”   
   «u|q  *    f
 ÁÁe  û	V &‡Ã  ÃÁÁe  û	V ‡4
 "  J©™ 
5¬ ™J©Å 
*  & õµ   Ã  ÃÁÁe  û	V † 
´    5¬ ™h¬_M6 
  L Á0 ÷	   õ± µ
 w     
¤«J©|—       X      M   OÀEÂ*  ¬u%!    OÀEÂ   ¯”L  s©`"@  Â©¨%@  *  Šª0 @  Éª°h@  œ«w@  «êv@  « w@  *  Ã«ô@  5¬ ™@      (  ¬u%!(e©-Ph  
  ¯”   
   ¬u%!  *    ÷	  t‡&
Ž
€÷	  ‡Ã  ÃÁÁe  û	V ‡õ5!  s©`"Šª0 5¬ ™ Ã«ô 
M*  &   A@ ñµ  õ• , –
Þ	†–
MÞ*  L –
 ÷	  †ÀÐû÷	  C. `Â õ‹, ÂU  Éª°h«êv*  r @ ‹ÐñÕ 
 Â”ÂEüÿÂe ƒ
õ”> &
&
€Ð”Â
ý*  ˜ ‚€1  ±  #µ. 50 4
 Â ÷	  ‡  &œ«w*  ¾ @0 A. B> Ã ÷	  ‡@m: ÈÕ ñÕ 
   Â©¨%*  ä       5 5   4
 Â ÷	  ñ‡õ õ  œ«w  
  4Š w     « w       *M   OÀÕ*  ¬u;;    OÀÕ   ¯”L  9© @  9©ë3@  *  c©%@  œ« @  ¤«ªH@      (  ¬u;;(T   i©í{h  i©|h  ¯”   
   ¬u;;  *      
ÁÜ Ál ÷	  ÷	  Ãôµ     ¤«ªH9©ë3*  &  


Ã ÷	  ‡úÿÂ ÷	   Ãœ(   9©  œ«   L Ã Ãw     
c©%       0M   OÀ…È*  ¬uN    OÀ…È   ¯”L  9©ë3@  ¾©Ó@  *  Â©,`@  Ìªa	@  œ«w@  Ã«Kq@  5¬ ™@  *  Y¬T}@      (  ¬uN(à      l©,xh  ¯”   
   ¬uN  *    5
0 ÷	 6‡÷	: ÷	. 4õ• 8  4
 
*  & ÷	  †‡ 
÷	  †‡ 5
: 
‡ ÷	  5Š8 ÃU €  œ«wÂ©,` 9©ë3*  L ÷	  B@ †–
"`úõ‹- ò‹  ÷	  ¾©Ó*  r   Çw ‡ Ãpùõ‹- xõµ 9 #W-0    Y¬T}*  ˜ õ 0 A@ ñ‹ ñµ  ÷	`ÿ‡÷	Žÿ÷	‚ÿ*  ¾ õµ 9 Ã ÷	  Ã@úQõ 0 Ãÿÿ÷	  A  Ã«Kq&Ã«Kq*  ä @ B6 `ƒ”Âe Ãµ ÃEüÿÂ`Âe &
Nœ ‚e*  
ñµ  ÷	œ Ã@ú,A6 `B:  ƒà`*  0÷	  àp f: `Ž †µ6 ÷	d ø–
w   Ìªa	*  V¶þ–
B6 JÝ      2 Òµ  
Š ñÕ 
 À     &5¬ ™*  |   È0
  4
 fN fL 
÷	  †–%  $œ«w*  ¢ˆ° fL V‡ ”ÁEüÿÁe ¦”&
&
ƒ“”Á
  Èýƒ´¥ ô  t  ‡        È M   NÀEÛ*  ¬uœw    NÀEÛ   ¯”L   «ƒK@      (    ¬uœw(D s©`"h  ¯”   
   ¬uœw  *    5
 5
 5
, õ• 2 5
4 ôÅ\  Ãpý  ðµ"  &   Ãüôµ   w   õ ± ‡    «ƒK       ÜM   OÀEÂ*  ®ut:    OÀEÂ   ¯”L  9©ë3@  ´©œw@  *  Â©¡E@  Â©qq@  Â©™w@  Þ© @  ê©2g@  *  œ«w@  « w@  5¬ ™@      (        ®ut:(š   ¹©­\h  ¯”   
   ®ut:  *    ÷	  :‡Ã  Ãõ¥   	ÁÁe  û	V ôÕ    ´©œw5¬ ™Â©™w 
E*  & õ¥  ÁÁe  û	V õ¥  ÁÁe  û	V   Â©¡E0 
$Â©qqD 
*  L õÐú ôÅ  	‡ôÕ@  ÷	  õ  5  ê©2g*  r  5  w   ÷	  Ã 
÷	  4
 w   Þ© 9©ë3"œ«w  ˜     « w       M   OÀÅÎ*  ®u2X    OÀÅÎ   ¯”L  Ú©ðG@  Ý©[}@  *  Éª°h@  òªàG@  œ«w@  «êv@  ¼«8@  "      (  ®u2X(æ ¾©Óh  ¯”   
   ®u2X  *    5¬ 8 †Àðþ÷	        æ4
 5Š9 5œ - ÷	  õµ  «êv&¼«8*  &  9 $ƒ÷	  †ÀODÎ5 €f9 f: õÿÿ  òªàG*  L : ÷	  õµ 9 µ: µ•9  
÷	  4‡)–%  ¼«8"œ«w*  r 5¬ 8 #÷	  †õÕB 9 õŠ- ƒ÷	  t   Ú©ðG$Ý©[}*  ˜ $‡ 
÷	   t ‡÷	  †ÀÐû÷	  5
  œ«wÉª°h&«êv*  ¾ : ¨ ÷	  †ÀÐû÷	  "`ú4
 ± –
  Éª°h«êv  ä ‡        ÔM   OÀÕ*  ®u<d    OÀÕ   ¯”L  ¾©Ó@  Â©,`@  *  ³ª4}@  Þª¡E@  œ«w@  «êv@  5¬ ™@  *  Z¬àG@      (  ®u<d(Â À©h	h  ¯”   
         ®u<d  *    Ã ÷	  ‡5Š8 5
: Ã ÷	  B@ †õ‹- ‚  
Â©,`¾©Ó*  & ò‹ "`ú÷	  ä†õ‹- ‡ õµP 9 !Ã  Z¬àG*  L   ÃÀ  Èpù0
 & & 4
 
÷	    5¬ ™(œ«w*  r —#`úô ÷	  ˆ° ± ‡ õµ  9 Àðþ  ³ª4}*  ˜ ÷	   ñÕ 
 Am: C”ÃEüÿÁ`Áe &÷	    «êv(Þª¡E  ¾ €¦       ü M   RÀEÛ*  ®uqq    RÀEÛ   ¯”L  Ý©[}@  Éª°h@  *  «êv@  ¼«8@      (  ®uqq(F Â©¨%h  
  ¯”   
   ®uqq  *    4
 5
< µ> B@ ‚œ Â Â÷	  úÿ†‡ t  Ý©[}$  &  ÷	  †À      Ðû÷	  5
: ÷	   ¡ ‡   Éª°h«êv¼«8       ÎM   PÀ¼*  ®u=r    PÀ¼   ¯”L  9©ë3@  ¾©Ó@  *  Â©,`@  Â©ðs@  Šª0 @  Éª°h@  œ«w@  *  «êv@  Ã«Kq@  5¬ ™@  Z¬àG@      (    ®u=r($Â©¡Eh  ¯”   
   ®u=r  *    Ã`üu > cÃ@ü 
@Ý ÷	  [‡Ã0ü
AÝ   Šª0 *  & u< Sp  P‚ð‹	 Lõ• 8  4
 
*  L ÷	  ,‡
÷	  "‡5
: 
÷	 ÷	  5Š8 ÷	   œ«wÂ©,`9©ë3*  r ÃU €
BÝ µ< u > ÷	  B@ †–
õ‹-   ¾©Ó*  ˜ ò‹ "`ú÷	  È†w n‡ Ã@úõ‹- õµ   Z¬      àG*  ¾ 9 õµ 9 õ5  w :õ5  
÷	*  ä   ÷	  ÃU €÷	€ÿÃ@úõµ 9 êõµ 9 íA@   Ã«Kq9©ë3*  
B: `ñ‹ 	Êµ ÷	  ¡5
< j&
&ƒ”µ”  Ã«Kq*  02 Ãµ ÃEüÿÂ`Âe 
ƒÔÃ ƒÔÃ ¦Î`&
Nœ *  V‚eŽ !†ƒ”æ´” &
&
ÃEüÿÃe ‘”Ã
ý´ *  |´ Öµ$ 	 u . u 0 
¶
 Ý‚‚å*  ¢µ: –
w ¸þ¦t ÷	  ÷	   ‚†4
 t  9©ë3Â©ðs*  È È%Pþ
÷	  †ÀÐû÷	  ¶
 ºÆe –%µ  Éª°h«êv*  î< 4
 
÷	  ‡ ÷	  †ÀÐû÷	  À    œ«wÉª°h"«êv(5¬ ™      ÈfL V‡              ¾M   PÀ¼*  ®uçr    PÀ¼   ¯”L  Ý©[}@  ã©,#@  *  Éª°h@  œ« @  œ«ZX@  œ«w@  «êv@  *  5¬ ™@      (  ®uçr(² Â©,`h  ¯”   
   ®uçr  *    4
 4
 æC@ óµ  À      È@úð  5¬ ™*  & Ðü >Á À Â’Â Âƒ÷	  4úÿ 0‡÷	    Ý©[}(Éª°h*  L †ÀÐû÷	  ðµ  ñÕ  
 t 4
 ñÅ    «êv*  r 
 
÷	  ‡
÷	  ‡³  ³  
÷	  ¹†  
œ«wã©,#&œ«   ˜ && ÷	  ° ˆ–
fL V‡   œ«ZX       XM   NÀEÛ*  ®uVs    NÀEÛ   ¯”L  9©ë3@  Â©ðs@  *  Šª      0 @  Éª°h@  œ«w@  «êv@  5¬ ™@  "      (  ®uVs(r Â©qqh  ¯”   
   ®uVs  *    @
 A B 4 t ÂE ÿ´ @P 
÷	*  &    4
 
÷	  ‡÷	  ÷	  ‡ ÷	     Šª0 œ«w9©ë3Â©ðs(Éª°h*  L †ÀÐû÷	  À      È€ú5
< fL V‡   «êv5¬ ™       <M   SÀ…È*  ®ufs    SÀ…È   ¯”L  Â©¨%@  Šª0 @  *  Éª°h@  œ«ZX@  œ«w@  «êv@  5¬ ™@  "      (  ®ufs("Â©ðsh  ¯”   
   ®ufs  *    f@ &
æ æ 
÷	      ÂE ÿƒ÷	  Šª0 *  &   [‡õµ 9 J@m: Èµ       æPþD&
&
‚’ÁE  Â©¨%*  L üÿÁe Ãe Ò”Á
ý‚ƒÈµ 
ö ô  *  r ´  &2 4
 ñµ 
 v æ¦&œ *  ˜ Â ñµ 
 
÷	  ‡‚€—-  ö
   œ«w*  ¾ ¯@ÀeL æ ú 4
 
÷	  ˆ0
 Æe   œ«w*  ä À      && ÷	  ° ˆµ@    
5¬ ™œ«ZX  
÷	  †ÀÐû÷	  fL V‡   Éª°h«êv       ð M   NÀÅÎ*  ®u}s    NÀÅÎ   ¯”L  Šª0 @  O«•y@  *  5¬ ™@      (  ®u}s(L Â©™wh  ¯”   
   ®u}s  *    ôÅ@    4 ÷	  †À      È@ü0
   Šª0       5¬ ™*  & ± ‡ 5œ 3 5 4 4  4  4  w     (O«•y       xM   PÀEÛ*  ¯u`"    PÀEÛ   ¯”L  9©ë3@  Â©¡E@  *  Â©qq@  Â©™w@  ë©`"@  ì©Kq@  ³ª4}@  *  O«™w@  œ«w@  « w@  5¬ ™@      (  "  ¯u`"(ú Ý©-‚h  Þ© h| ¯”   
   ¯u`"  *    ÷	  ;‡Ã  Ãõ‹ ôµ@  ÁÁe  û	V   ë©`"5¬ ™"Â©™w 
 *  & & 4  ÁÁe  û	V ´ õ¥  ÁÁe  O«™w2 
 *  L   û	V õ¥  ÁÁe  û	V õÐú †  Â©¡EJ 
Â©qq^ 
*  r 5 5  4Š 5

 5
 5
 õ%@ú       
õ%Ðü*  ˜  õ‹ õ°ý Ã  ÃÁÁe  û	V ÷	    5¬ ™ ì©Kq² 
(9©ë3Î*  ¾ Ãõ5@   4
 
÷	  W- `úô  œ«w  ä  ÷	  ôÅP  4
 w     
³ª4}« w       ÖM   NÀÕ*  ¯u¡E    NÀÕ   ¯”L  9© @  C©z@  *  Éª°h@  œ« @  œ«ZX@  «êv@  5¬ ™@  *  Y¬T}@      (  ¯u¡E(Ä ã©,#h  ¯”   
   ¯u¡E  *    æ
Â æ¦€ Â ƒ ÷	  úÿ
†"   9© *  & `úÁ÷	  ì–%0–%0
 ÷	  †ÀÐû÷	    Y¬T}Éª°h(«êv*  L ÷	  †Ã  ÃÀ  È ûC@ ò¬  %      ¦  C©z5¬ ™*  r  ¦  ‚ 
÷	  ‚ƒ‡ÂÈ û¸  œ« *  ˜ Á"`ú&& ÷	  ° ˆ–%`×–
f  œ«ZX
  ¾ L V‡        ¤M   NÀEÛ*  ¯us    NÀEÛ   ¯”L  Ìªa	@  Þª¡E@  "      (  ¯us(ê ê©2gh  ¯”   
   ¯us  *    Bm: @@ 4œ  ƒ”ÃEüÿÃe ¦”´” 4
 *  & Áe ÷	   @œ ÀEðÿC À% 
ƒÔÃ ƒÔ  
Ìªa	*  L Ã µ> æ@  t<  ôµ@  
ôµ  *  r €`÷	  ƒ't<  ÷	  ƒ4œ   t  
Þª¡EÞª¡E*  ˜  
 t  ´“ 	t. 
 t0  t2  4 *  ¾  4        4  5 
 5  5   B
  ä > –
‡        Â M   NÀEÛ*  ¯uœw    NÀEÛ   ¯”L      (  ¯uœw(H   ´©œwh ë©`"h  ¯”   
   ¯uœw  *    5
 ÃPùõ Ã@ùõ   Ãpýðµ  &  & Ãüôµ   ôÅ  5Š9 ‡ õ ± ‡        fM   OÀ¼*  ¯uÕ    OÀ¼   ¯”L  ê©2g@  Éª°h@  *  Ìªa	@  œ«w@  «êv@      (  ¯uÕ(’   ì©Kqh  ¯”   
   ¯uÕ  *    ôÅP  õ   ÷	  †ÀÐû÷	  ÷	  õ5@   Éª°h «êv$ê©2g*  &  ñµ  ñµ=ÿ ñµ€  
÷	(  4
*  L  
÷	        ñµ 
 µ õ ÷	 ‡ A   
œ«w$  r @ À ƒõ õÐù u õ w     "Ìªa	        M   {À¼*  ±u¡E    {À¼   ¯”L  ô¨8^@  ©`T@  *  © @  Ý©[}@  3ª¨@  ‹ªàe@  Éª°h@  *  ÉªØh@  Ìªa	@  Þª¡E@  œ« @  œ«w@  *  «êv@  Ÿ«à`@  5¬ ™@      (  ±u¡E(6*  ©€h*3ª(#h  @ªWhª@ªYh@ª—`hZ   «xhD¯”   
   ±u¡E  *    A6 f f 5
6 
÷	  †–%± ‡ &
&
  œ« *  &  ÷	  †ÀÐû÷	  õµ , 	õ L õ• ,   
Éª°h«êv*  L –%¡ ‡ C@ ó‹ B: `ƒ”ÃEüÿ      Ãe &
&
*  r ‘”Ã
ý–- –- Ý–
Ú–%Æå 6 Ã*  ˜   ÃÁÁe  û	V õµ , Â w RÃ  ÃÁ  5¬ ™3ª¨ž 
$5¬ ™ *  ¾ Áe  û	V €  œ ÀE ÿõ• 8 ÷	  ‡÷	H@  ô¨8^¾ 
 ©  *  ä 8 A6 Ã ÷	  †w (úÿt ÷	  †ÀÐû  Ý©[}"ÉªØh*  
÷	  6 €  œ ÀÅ ÿ÷	  € ƒ ðµ    «êv©`T*  0ðÅ  óÕ  3  3
 
 p6  p8 
 *  VÃ  ÃÁÁe  û	V  4
 Â ÷	Â T‡€   5¬ ™‹ªàe^
 *  |ðµ  =Ã  ÃÁÁe  û	V €  œ ÀE ÿõ•  5¬ ™ô¨8^Œ
‹*  ¢ 8 ÷	  :‡      ÷	z @8 A6 Ã ÷	  /‡úÿt  
©  Ý©[}*  È ÷	  †Àðþ÷	  6 €  œ ÀE ÿ÷	  Ã  Éª°h«êv&©`T*  î  ÃÁÁe  û	V ‡5 6 Â  4
 ñÕ   5¬ ™Ÿ«à`ô
*  
 ÷	  †5
6 Æe &V‡ B@ ‚œ  Â Â‡ ñÕ  œ«w*  : 
 ÷	  ‡ À ò‹ À
ò‹ À
‡ õµ ,   
œ«w*  `#ƒ Ãå Ñ¦‚
ƒ ÷	   Ã ƒ   Ìªa	*  †Â`õµ  , ÷	  C@ Ã ÃE ÿ÷	  ‚‡ õµ  Þª¡E"Ìªa	*  ¬ , õµ , ¶-  B‚
‚m f
m
 *  Ò Cí: Ã
ƒí ÷	  p 0à ƒ Ãå Ñ  Ìªa	*  øÃe BÂe      . ÷	  ‡ õµ , õµ , ƒ Ãå  Ìªa	   ÑÃe BÂe2 ÷	  ÷	  ‡   Ìªa	Þª¡E       èM   OÀEÛ*  ±u±H    OÀEÛ   ¯”L  @ªW@  @ªY@  *  @ª—`@   «x@  È«Lq@      (  ±u±H(ø   3ª¨h  ¯”   
   ±u±H  *    B@ œ ÁE ÿv 
Â. Ba÷	  õµ , `   «x*  & 
m 6 Â2 Ba÷	  õµ , õµ , `   «x*  L 
m 6 ‚
 Bm: €”Àe 6 õµ , õµ*  r  ,  í Á
C@ õ5  Â *  ˜ Âœ  Â Â¶ €
 ì 6,  ƒ‡  ƒ *  ¾ Cí: B`l l ° 0à ÷	  €
       ÷	     È«Lq(@ª—`  ä ÷	  ÷	  ‡ õ• , ‡   @ªY
@ªW       „M   OÀ…È*  ±uiw    OÀ…È   ¯”L  ©Š@  ©G@  *  #© s@  Éª°h@  •«Ò@      (  ±uiw(|  9©àMhò ;ªhh  ¯”   
   ±uiw  *    ö  6
 6
 A@ õ5  C Cœ Ã *  & Ãö Aœ ÁE ÿv  ÷	  †õÐûL ± ‡   Éª°h*  L 6 6 6l  6

 v6  6
 6
 6
 u-*  r : 6 5, : ƒõµ 9 õµ  9 5 : u*  ˜ : 6 v6  ôµ  õ , ÷	> ÷	  €   "•«Ò*  ¾  ÷	R †‡  Am6 u-: 6 ÷	  ¶     ©Š*        ä ÷	  õ• , ¡ ‡ ô‹ ö  
ô‹ ö   ©G*  
 ö  ‡ f6,  ‚ ì N ƒ&0¬*  0  ‚ð‹ ÷	  †0Š –%õÕ, , ± ‡ €–
  #© s*  V¡ B: ‚m ¶  †õÕ, , õÕ , –
± ‡        ÖM   |ÀEÂ*  ±u,x    |ÀEÂ   ¯”L  ô¨8^@  ©`T@  *  © @  Ý©[}@  ;ªh@  ÉªØh@  Ìªa	@  *  Þª¡E@  œ« @  œ«w@  «êv@  Ã«Kq@  *  È«Lq@  Ë«àe@  5¬ ™@      (  ±u,x(l*  ©¤’hà©Šh.©Gh¬;ªà8h  •«Òhð
  ¯”   
   ±u,x  *    5Š, Æå" Ã  ÃÁÁe  û	V ‡ ÷	¾5
6         5¬ ™;ªh 
‹*  & w 8Ã  ÃÁÁe  û	V € õ• 8  œ ÷	    
5¬ ™ô¨8^2 
(© *  L ?‡B@ ‚œ Â Â@0 A. Ã ÷	  0‡tF     Ý©[}*  r  ÷	  †ÀÐû÷	  6 €  œ ÀÅ ÿ÷	    
ÉªØh«êv(©`T*  ˜ Ã  ÃÁÁe  û	V € ÷	è € ð‹ ÷	Ú   5¬ ™Ë«àe  
ª*  ¾ & ÷	†–
5 6 õ• , D€õ : *  ä l ¦Bm: Ž $†
Êµ ƒ’ÃEüÿÃe Â`Âe*  
 A@ Cœ ÃE ÿ A m ÷	  
÷	    "Ìªa	(Ã«Kq*  0€ Bm: Ú–
€p.  p0 
  u6 ñÕ*  V 
 Â ÷	  Æe" && õµ , A      6 5
  œ«w*  |6 
÷	  4
 4
 ° ˆ&V‡ &ð•ÿÿ ð•  
œ« *  ¢  õ : 6  6` Âe ¶  †2œ  *  È°Š 
÷	  €B: `ð€‡ ñÕ 
 Â ÷	    Ã«Kq(œ«w*  î‡ u-: 6 &@@ ö	  ðµ  ö  €*  ¶m  ¶m  ¶  ¶
 ‡ € 
Éµ *  :C’ÃÅüÿÃe Ãe C`
ÂÔÂ ÂÔÂ 6  ví:  *  `‚m Ãå “Â “Â l B‚m ° 0à ƒ*  † ÷	  ‚ Âå ‘ Â aƒ Ã
÷	  ‡   È«Lq&Ìªa	*  ¬ƒ u-: 6 	ö  ¶m  ¶m  Á Á`B*  Ò‚m æ ³ óà ƒCí: ¶-  ÷	  ƒ   $È«Lq*        øu-: 6 Ñ• Ñœ &@@ ðµ  ñ• þÿ*  Ñ• ŠŠŠ€Ñ• Ñœ ³Š ‚ ‚m ‚
‘*  DÂ ‘÷	  ‚ Âå ‘ Â aƒ Ã
÷	    
Þª¡E(Ìªa	  j‡        M   OÀEÂ*  ±uãƒ    OÀEÂ   ¯”L  Éª°h@  Ìªa	@  *  Þª¡E@  «êv@      (  ±uãƒ(Ü=ªxh  
  ¯”   
   ±uãƒ  *    6
 ô‹   œ ÁEðÿW  ö  ö*  &   ö  6
 @ Àe  Aœ ÁÅðÿW  *  L Àe 6 @@ õ5   œ Á Áv*  r   ÷	  †ÀÐû÷	  6 6

 6
 6
 6
  Éª°h«êv*  ˜  6
 6  6` C: `ôµ        $õµ  9  *  ¾ õµ 9 Ëµ Ãe  ‚œ ÂEðÿ—  
*  ä ÂÔÂ ÂÔÂ  ‚ Â`àµ: ƒ Ãe € *  
v:  6 6l  ö  ‡‡ ö  Ëµ Ëµ*  0 Ëµ ö  ƒm ¶m  Û  œ*  V ÂÅðÿ—   Â‚m 
Ü Á Òöe *  | € @m: €í @àfæÀ ‚ A m *  ¢f> õ> µm > ÷	  µ> ƒv` Ëµ rËµ  Þª¡E*  È@ oÁÁe   œ ÂÅðÿËÕ@ @@ ðµ  %*  î—  !œ œ l Â‚m v öà æ€ *   `ƒà÷	  ‚ € r ²à €ì 19æ  Ìªa	*  :—  
CÔÃ CÔÃ Ãe  Ã Ãe       uœ*  ` , BÂ`€ æ `ƒà÷	  Ñ• Q, 5Š,   Ìªa	*  †€6
 ‚ r ²à ƒÂ‚í µ : †5à: ‚*  ¬ €@m: À ‡ò¬  ò¬  öe  ¶m   Ò
 ƒm w *þ       M   OÀEÂ*  ±uéƒ    OÀEÂ   ¯”L  #© s@  Ìªa	@  *  È«Lq@      (  ±uéƒ(=ªhh  ¯”   
   ±uéƒ  *    € ö 9—-  	 Am: Áe w ,*  &  Am: uœ - 
CÜ Ã CÜ õ  Áe Áe *  L w è Ãe Ãe € BÂ`öà
  `ƒà÷	  p  &Ìªa	*  r  0à v 6,  ‚ƒ ì ö  ‚w ´ 0¬*  ˜   ‚ð‹ ÷	  †w è ƒ ‚       ‚m €   #© s*  ¾ ° 0à 
 m Á ƒ
 ƒm ÷	  A  &È«Lq*  ä : `Ñ• ô‹ Âe Q-  
œ œ *  
°Š  Âe Ã ÷	   ‚œ ÂÅðÿ—    Ìªa	*  0Q Q B C ÷	   ‡ õµ  9   Ìªa	*  V m m m v  †õ• 8 õ•$ , 4õ5 *  | õµ  9 õ• 8 õ• , %
 m Áe *  ¢‚
 ‚m Âå Âõ• 8 õ• , v  †õ•*  È 8 õ• , õ• 8 õ• , ôµ  õµ  9 $  îõÕ , 
õµ  , õ• 8 õÕ , ‡        ôM   ŸÀ…á*  ±uòƒ    ŸÀ…á   ¯”L  ô¨8^@  ©`T@  *  ©       @  "©ðs@  #©àe@  Ý©[}@  =ªx@  *  =ªh@  ÉªØh@  Ìªa	@  œ«ZX@  œ«w@  *  «êv@  È«Lq@  ¬ðs@  5¬ ™@      (  "  ±uòƒ(d©òƒhü=ªÐh  ¯”   
   ±uòƒ  *    Æå 5Š, Ã  ÃÁÁe  û	V Ã  ÃÁÁe  û	(  5¬ ™=ªx 
5¬ ™&=ªh  
*  & V € õ‹, w RÃ  ÃÁÁe  û	V €  œ  5¬ ™ô¨8^> 
 *  L  f, 5Š- ÷	  †–
w Dµ, ÷	~W­8    © *  r W­8  õµ , 	@4 A2 Ã ÷	  @0   "Ý©[}*  ˜ A. Ã ÷	  †w ü úÿt ÷	  †ÀÐû÷	  Ý©[} ÉªØh*  ¾   6 €        œ ÀÅ ÿf, 5Š- ÷	  µ, Ã    «êv ©`T(5¬ ™*  ä ÃÁÁe  û	V Z‡ 4
 ñÕ 
 Â ÷	  N‡  
#©àeè 
&œ«w *  
õŠ8 õ‹8 ¨Ã  ÃÁÁe  û	V †>€ õµ  5¬ ™"©ðs
Š*  0 , p.  p0 
 p2  p4 
 õµ  , *  V `B‚m  Cí: °m  ÷	  @   "È«Lq*  |Âe ÷	rƒ ƒm
 Ãe € , õÅ , õ*  ¢ L 5Š- € W-L  " fL fN Á4
*  È ÷	   Á÷	  4
 ° ˆ5
6 Æe õ•  œ«wœ«ZX*  î , fL V‡ ô‹ &õµ  , œ Â
´ *   t  t  õµ , t4        t2  *  :t0  t.  ô•   4
 u6 ñÕ 
 Â*  ` ÷	  §‡t6  Ã  ÃÁÁe  û	V †õ    œ«w5¬ ™¬ðsv
Š*  †%ô‹ Bm: ´œ  Âe Á aÃ ÷	    (Ìªa	*  ¬õ• ,  4
 ñÕ 
 u6 Â ÷	  †w äþ  "œ«w*  ÒÆe 4
 õ L 5Š- ¡ ‡ B@ ‚œ Â Â‡ ÷	*  ø ‡ Ñ• ô‹ Âe Q-  õµ  , *  Ñ• Ñ• € œ œ °Š Ã ÷	  C   $Ìªa	$  DÃe ö  Q Q C B ÷	  ‡    Ìªa	        M   NÀ…È*  ³uNq    NÀ…È   ¯”L      (  ³uNq($   Šª0 h  ¯”         
   ³uNq  (    &    °£ 5@ ¡ ±   õ–
‡        °M   yÀ¼*  ³uLy    yÀ¼   ¯”L  @ªW@  @ªY@  *  @ª—`@  Ìªa	@  È«Lq@      (  ³uLy(  ‹ªàeh  ¯”   
   ³uLy  *    
A: õµ , B‚
‚m ‚m ¶  ,†õµ *  & , 
õµ , B‚
‚m ‚m ¶  †B‚
‚m*  L  ‚m ¶  †õÕ@ , õÅÀ , 	õÕÀ *  r , õÕ€ , v €
  Cí: B: `õµ@ *  ˜ , 
‚
‚m ‚m Ã
ƒí ƒí  Áe ° 0à*  ¾  ÷	  ‚ r ²à õµ€ , <õµ@ , 8ƒ
   Ìªa	*  ä s:  € 
õµ , ƒ
ƒm ƒm       õµ , 	*  
õµ , ƒ
ƒm ƒm  Â``Áà Ãå *  0° 0à ÷	  € ÷	  ÷	  ÷	  w lõµ@ ,   È«Lq@ª—`@ªY@ªW*  V6õµ€ , 2€
  `õµ , ‚
‚m ‚m *  |õµ , 	õµ , ‚
‚m ‚m  Cí:  *  ¢`° 0à ¶ ÷	  ÷	  ÷	  ÷	  w ø €
   È«Lq@ª—`@ªY @ªW*  ÈA: `‚ Âe õµ , ÷	  €
 p 0à   @ª—`*  î€ Áe ƒ ƒí ÃB‚
‚m m 
*   Ãå ƒí Ã
÷	  p 0à l B‚m  Ìªa	*  : ‚í  Ãå ° 0à ÷	   Áe ÷	    È«Lq(@ªW*  `õµ@ ,       õµ€ , 
 Al ÷	  €
 p 0à  @ªY*  † Ã ƒm ƒm € l BÂ` Ãå *  ¬° 0à ÷	  ÷	  €
 ðµ  € ƒ   È«Lq@ªY*  Ò `Âà A m ÷	  u6 . u8 0 5  Ìªa	"  ø 6 õ• , €
 ‡ B@ ‚œ  Â Â‡        Ô M   RÀEÂ*  µu;;    RÀEÂ   ¯”L  Ìªa	@      (  "  µu;;(H Þª¡Eh È«Lqh  ¯”   
   µu;;  *    Ã‡ b˜Ã
ý‡ @@ &
°£
 †Ãe$ ƒcÃ’ÃE&  &  ÿÃ
Âe ‚c‚c‚Bm> ÷	  Ž
è–
‡   Ìªa	       xM   RÀEÂ*  µu,F    RÀEÂ   ¯”L  ô¨8^@  ©`T@        *  © @  Ý©[}@  ã©,#@  ÉªØh@  Ìªa	@  *  Óªz@  œ« @  œ«ZX@  œ«w@  «êv@  *  5¬ ™@      (  µu,F(6Óªø8h  ¯”   
   µu,F  *    C@ óµ  Àðþ÷	  f4 4
 4
 Ã ÷	  «êv*  &   †w ˜t &¦òµ  µ 2 µ 4 w   ã©,#*  L NC@ 5Š- ó¬  Ã  ÃÁÁe  û	V C@   5¬ ™ ô¨8^f 
q*  r Àœ ÀE ÿõ• 8 õ• - ÷	  K‡u6 . u8 0   © *  ˜ Ã  ÃÁÁe  û	V C@ Àœ ÀE ÿõ• 8 µŠ-   5¬ ™ô¨8^  
	*  ¾ ÷	  /‡C@ ó¬  	÷	T &‡u. 6 u0 8 Ã  © *  ä   ÃÁ      Áe  û	V C@ Àœ ÀE ÿf8 õ• 8 5Š  5¬ ™ô¨8^ê 
 *  
- ÷	  µ8 ‡õ• - ÷	 †w ²tC@ Âœ    © *  0Â Â@8 A6 Ã ÷	  d‡÷	Ô& 
÷	  €p  Ý©[}$©`T*  V-  C@ ó¬  W­-  ðœ  ðÕ  u*  |6 2 u8 4 ðœ  ðÕ  p6  p8 
 Ã*  ¢ õ‹1 Ã
õ‹0 Ã
Áe ÂÂå ‘Â. Ba*  È÷	  BÑ•ÿ C@ Ãœ ÃE ÿÃ
÷	  C@ ó‹	 
  Ìªa	Ìªa	*  î×¬	  †óµ 	 ÊÅ€ p °å ÷	è ‡ C@ *  Âœ Â Â@0 A. Ã ÷	  U‡÷	ì &C@ Àœ  Ý©[}*  : ÷	  €0Š ðÕ  p.  p0 
 ð  ÷	  ©      `T*  `” :‡‚r. T r0 V ò• 	 r2  r4  òÅ*  †  € ÷	   ñÕ 
 Â ÷	  †÷	`   Óªz œ« *  ¬C@ s2  s4  óÅ  ¡ –5µ4 ô   ô*  Ò   ‡  fL fN 
÷	  µN µL ± ç  œ« *  ø ñÕ 
 Â ÷	  ‡ && ÷	  ° ˆ± ‡   œ«wœ«ZX  úÿt ÷	  †ÀÐû÷	  ‡   ÉªØh«êv       Þ M   NÀ…á*  ¶uL    NÀ…á   ¯”L  Ý©[}@  ÉªØh@  *  «êv@      (  ¶uL(: òªàGh  ¯”   
   ¶uL  *    ðµ   
 ‚   
 ÷	  t †  "Ý©[}  & ± ‡ ÷	  †ÀÐû÷	        ‡   
ÉªØh«êv       M   QÀ¼*  ·uüd    QÀ¼   ¯”L   «_M@  ¤«@  *  ¤«V@  Î«a(@  5¬ ™@      (  ·uüd(J   («m$h  ¯”   
   ·uüd  *    ÷	  4
 ¡ ÁÁe  û	V † 
´  Á0   Î«a( «_M 
 (  & ÷	   õ   ÷	  Ã  Ãf V‡   ¤«¤«V5¬ ™       âM   NÀÅç*  ¸u<    NÀÅç   ¯”L  E©¶H@  l©,x@  *  Â©ðs@  Šª0 @  Éª°h@  Ìªa	@  œ«w@  *  «êv@  Ã«Kq@      (  ¸u<(¾ I«„–h  
  ¯”   
   ¸u<  *     4
 
÷	  u@ . õ•       2 &
Ž
€÷	    œ«w(Šª0 *  & ‡5 . p-<  ‡÷	  õµ 9 ÷	  ë–
A  E©¶H"l©,x*  L 4 Á
1-  1-  5
4  
÷	  Ã ÷	  "Šª0 *  r   #‡ ÷	  †ÀÐû÷	  u 4 5
4 ÷	  A  Â©ðsÉª°h«êv&Ã«Kq*  ˜ 6 `B:  ƒà`÷	  àp  ñÕ 
 ‡   Ìªa	       M   NÀ…È*  ¸u½`    NÀ…È   ¯”L  Šª0 @  O«•y@  *  «êv@      (  ¸u½`(X O«™wh  ¯”   
   ¸u½`  *    ôµ    
4  4  4  	  *  &  A 4Š 4 ÷	  †Àðþ÷	  5œ 3   Šª0 "«êv  L m u4       w     O«•y       úM   RÀEÂ*  ¸uÊ`    RÀEÂ   ¯”L  9©ë3@  E©ÆH@  *  ¾©Ó@  Â©¨%@  Â©,`@  Â©ðs@  Éª°h@  *  œ«w@  «êv@  ¼«8@  Ã«Kq@  5¬ ™@  *  Y¬T}@  Z¬àG@      (  ¸uÊ`(VO«•yh  
  ¯”   
   ¸uÊ`  *    õ L õ• 9 5Š- ô‹ 
ôµ@  Àðþ÷	    («êv*  & w ô‹ m 1-  1-
  5
< 5*  L  > 5
: ÷	  †ÀÐû÷	  ÷	   4
 
÷	    Éª°h«êv¼«8(œ«w*  r ‡  
  ÷	  ÷	  †È%`ú
C@ ó‹   9©ë3Â©¨%*  ˜ AÁ÷	  ®w C@ 5
< u3 < u4 >       õµ  Y¬T}*  ¾  9 #B: `”‚
ó‹ Áµ ÷	êmf*  ä ÁEüÿÁe Öµ B`Âe &€÷	  €õµ 9 X  E©ÆH*  
 4
 
÷	  L‡C@ ó‹ ÷	  ÷	  E†  œ«w"9©ë3&Â©ðs*  0È%`úÈ%Pþ<ôµ@  8õ• 8  4
 
*  V÷	  ,‡
÷	  "‡5
: 
÷	 ÷	 #÷	  5Š8   œ«wÂ©,`$9©ë3*  |5
< u3 < u4 > ÃU €÷	  B@ †–
õ‹-   ¾©Ó*  ¢ò‹ "`ú÷	  È†w ‡ 5
< Ãpùõ‹- J  Z¬àG*  ÈA@ B: `Ã°ýõµ 9 ?Ã@úô‹ ôµ@  *  îñµ  õµ 9 .ñ‹ 2ô‹ õµ 9 *  ”‚
÷	¬#ôµ@  ÷	  ÷	      Fÿ5
< Ã°ýõµ   Ã«Kq*  :9 B: `Êµ î
ÃPþB: `Êµ w P*  `w 8÷	  ‚7†ô‹ õµ 9 Ž †µ6 ”  
Ã«Kq*  †÷	>t-<  µ
< òôµ@  ]ô‹ õÿÿ< *  ¬Ž &†µ
< ÷	t ¦4  ÷	  f< ÷	  µ<   9©ë3$Â©ðs*  Ò ‚O†4
 t È%Pþ–%j÷	  †ÀÐû÷	   Éª°h*  ø  Ø‚€àµ: ÷	  5Š8 5
< u3 < u4 >   «êv9©ë3*  ÃU €÷	  †"`úI ÷	   ÷	  âÃ  
¾©ÓY¬T}$Éª°h*  D°ýõµ 9 17¢ õÿÿ< ©B6 ÷	Ê & ÷	    (9©ë3*  jf< ÷	  µ< 4
 –%u . u 0 fL 
  
Â©      ðs*  ÷	  ƒõL  ÷	  †ÀÐû÷	  À     œ«wÉª°h «êv&5¬ ™*  ¶   È0
 fL V‡ ÁEüÿÁe ¦”&
&
ƒ“”Á
*  Üýƒ´¥ ô  t  ‡ A@ B: ‚cƒ”µ”*  2 Ãµ ÃEüÿÂ`Âe 
ƒÔÃ ƒÔÃ ¦Î`&
Nœ *  (‚eH ƒ”æ´” &
&
ÃEüÿÃe ‘”Ã
ý´ ´  N Öµ$ ‡        ÎM   OÀEÛ*  ¸uœw    OÀEÛ   ¯”L  E©ÈH@  Šª0 @  *  Þª¡E@      (  ¸uœw(S«`"h  ¯”   
   ¸uœw  *    ôµ@  ôÅ  ôÅD    Ãpýðµ  nÃ*  & üôµ   hu > u < Ãàùœ ÂÅðÿ—  *  L * A-< S‚ A-< MôÕ         
÷	    (Šª0 *  r 
Ü Á ÁÁå Â¥ Áå A-< 8‚p-<  4‡*  ˜ õ¥   ôµ  
  ÷	  ÃÀùõµ 9 "ôÕ  E©ÈH*  ¾    ÷	  ôÅ  5Š9 5
4 4
 4
 4
  Þª¡E(  ä  ôµ  4
 4Š  4
 ‡ õ ± ‡        ÈM   RÀÅç*  ¸u`†    RÀÅç   ¯”L  E©¶H@  ¾©Ó@  *  À©h	@  ;ªà8@  =ªÐ@  Šª0 @  Óªø8@  *  I«„–@  S«`"@  œ« @  œ«w@  « w@  *  Ã«Kq@  ¬À@  5¬ ™@      (  ¸u`†(\  U«-‚h  ¯”   
   ¸u`†  *    5
4 ÷	  †w ²Á
÷	  "‡Ã  ÃÁÁe  !  
S«`"œ«w 5¬       ™(À©h	" 
(*  & û	V †, Ðü	Ã  ÃÁÁe  û	V ê†÷	¤  5¬ ™Óªø8< 
 *  L Ã  ÃÁÁe  û	V †w Ff6 5
6 õµ ,   5¬ ™=ªÐT 
 *  r Ã  ÃÁÁe  û	V †5 ôÕ@  µ4 @@  œ  5¬ ™¬Àz 
 *  ˜  €Š÷	  ?‡p-<  :‡÷	  õµ 9 4Ã  ÃÁ  
Šª0 E©¶H$5¬ ™*  ¾ Áe  û	V †, Ðü	Ã  ÃÁÁe  û	V ê†R"  À©h	¾ 
5¬ ™ Óªø8Ø 
*  ä ÷	Ã  ÃÁÁe  û	V G‡õµ , Ã  ÃÁ  
5¬ ™;ªà8ð 
$5¬ ™ *  
Áe  û	V †5 ôÕ@  ¹5 
 5  5   ¬À

"*  0 ôµ        4 
 4  4  4  4 *  V 4  õ õ  ôµ  õ  ôµ@ *  | õ  !Ã  ÃÀ  5 5  ÁÁe    5¬ ™(I«„–ž
*  ¢û	V uL  uN  5

 5
 5
 ôÅ  4Š*  È  
÷	  4
 A4 
÷	  ôÅ@  w   œ«w œ« *  î  u: 6 õµ 9 .õµ 9 *A@ ñµ  C  « w*  : `Ëµ Ã  ÃÀ  Èàý–
A@ ñ‹ ¸§  5¬ ™&  :ôÕ  Ã ÷	  Ã ÷	  í‡õµ 9 ó‡   Ã«Kq¾©Ó       ÆM   OÀÕ*  ºu,`    OÀÕ   ¯”L  ã©,#@  Ìªa	@  *  Óªz@  œ« @  œ«ZX@  œ«w      @   «x@  "      (  ºu,`(~Ÿ«à`h  ¯”   
   ºu,`  *    € °Š ðÕ  p6  p8 
 Áe  Âe*  &  ÷	  Ãå Ñ÷	  ‚
 C@ Ãœ ÃE ÿæ   «xÌªa	*  L ‚l Âà÷	  BÂe. ÷	  Ãå Ñ÷	  ƒ  Ìªa	 «x$Ìªa	*  r  ‚ ‚m ÷	  € p 0à  4
 Â  Ìªa	*  ˜  &œ ÷	Ð †
w ˜ õ• , Ã ÷	  †
  "ã©,#*  ¾ r6  r8  ²•	 ÷	  AF ñÕ 
 Â ÷	    Óªz(œ« *  ä †"`ú&& ÷	  ° ˆ 4
 Â f  œ«ZX*  
L fN ÷	^ µN µL 5
6 ± ‡ C@ s6  s*  08  €      
 ðÅ  ¡ ‡ 5
6  4
 fL fN *  VÁ
÷	  µN µL õ• , ± ‡ ñÕ 
 ÷	    œ«w(œ«w  |‡        >M   NÀÅÎ*  ºuãe    NÀÅÎ   ¯”L  Šª0 @  Éª°h@  *  Ã«Kq@      (  ºuãe(Ž  «ƒKh  ¯”   
   ºuãe  *    5
 ô‹ = 7ñµ 
 3 
÷	  ÷	  -‡õ   Šª0 $Éª°h*  &  : p-:  &†÷	  B6 `”ÁEüÿÁe ‚
¦”&
  Ã«Kq*  L &
ƒ“”Á
ýƒ´¥ ô  t  u6 :    r u6 . ¡ ‡ Öõ0ú õ€þ ± ‡        ŠM   RÀÅÎ*  ºuçe    RÀÅÎ   ¯”L  ô¨@  9© @  *  C©z@  Éª°h@  œ« @        œ«ZX@  «êv@  "      (  ºuçe(n «_Mh  ¯”   
   ºuçe  *    Á ÷	]‡´œf  ´œg  õµ   ÷	Ú P‡¡ *  & ‡ —,t  õ0ù F÷	t C‡  f÷	´ <‡*  L ÷	º 8‡÷	X 5‡  ‚ Bm< õëõµ  *  r ô•    õµ  ðµ  ´Š 4¬ *  ˜  ƒ4œ    ëô ¡ ‡ ¦Á0 ÷	  †õ  $ô¨*  ¾ pû ‚± ‡ 0  4 58 ‚°œ
   °œ  *  ä Âe Àe Á Á
ý‚¡ ‡ A> 
÷	  †  $œ« *  
‡  
Â Ã f÷	  ƒúÿ†È%`úÁï5  9© *  0 Á÷	  õú ÷	  †ÀÐû÷	  u> 5  œ«ZXÉª°h"      «êv  V< ÷	  †õ û ± ‡ ¡ ‡   C©z       ÖM   wÀÅç*  »u[    wÀÅç   ¯”L  E©ÆH@  E©ÇH@  *  E©ÈH@  E©ÉH@  «êv@      (  »u[(Ì  ¼«8h  ¯”   
   »u[  *    5Š9 &&
&l õ: €õU €, Ã õ: `*  & Î ‡õÕ 9 w ˆCm: € Î ‡õÕ" 9 w *  L nõ: 5à: õ< ð‹ Àðþ÷	  s­>     «êv*  r 5Š9 w BõÕ 9 ö  Âœ  ÂEüÿð‹ ‚
*  ˜ Âe ¶` ð‹ DËµ Ëµ Ëµ Ãe *  ¾ ƒm õ< ¸»B@ ò‹ , œ ÁÅøÿ*  ä W   Â‚m 
Ü Á Òöe  Â‚m*        
 v` õ< Nôµ  €÷	  €÷	  8  E©ÉH&E©ÇH*  0A@ Aœ ÁE ÿð‹ Â‚m v` 
Ëµ *  VÂ’ÂÅüÿÂe ¶ öe  Â`Âe f
ÔÁ ÔÁ *  |v` õ< ôµ  €÷	  €÷	  õµ  E©ÈH&E©ÆH*  ¢ 9 	õ5 €, ƒm w €þ€ Æe õE €  È, ‡        
M   NÀ…á*  »ulE    NÀ…á   ¯”L  E©¶H@  l©,x@  *  Ý©[}@  Šª0 @  Éª°h@  Þª¡E@  œ«w@  *  «êv@      (  »ulE(ê Ã«ôh  ¯”   
   »ulE  *     ÷	  †ÀÐû÷	  C. `Ãe  ¦œ ÎE  
Éª°h«êv*  & ðÿ—¥ µ < õ”      < õ”= õ> A@ q-<  *  L L‡÷	  õµ 9 F¡ Þ	 A m f÷	    E©¶H(Þª¡E*  r µ> 5
< 5œ < ôÅ   4
 u4 Â ÷	*  ˜   †5
4 "÷	   
÷	  œ Â ÂC4 5
4 À  œ«wl©,xŠª0 *  ¾  Á Ã ÷	  ‡úÿt ÷	  †ÀÐû÷	    Ý©[}Éª°h(«êv
  ä ‡ ± ‡        M   NÀÕ*  »u•G    NÀÕ   ¯”L      (  »u•G(ˆ   Ã«Kqh  ¯”   
   »u•G  *    æC: õ6 `Â”ƒ
A@ Âµ ÂEüÿÂe ñ‹ *  & Î ñÕ 
 A@ Â
Î“ŠËŠ×¤ÿÿ*  L Âôƒ`ñ‹  ¦œ ÎEðÿ—¥ ƒl   r 
ÂÔ      Â ÂÔÂ ƒ`àõ: –
‡        Œ M   PÀ…á*  »ufs    PÀ…á   ¯”L  ¹«WŒ@      (    »ufs( Ê«ðsh  ¯”   
   »ufs      w	  õÕ 9 ± ‡   ¹«WŒ       .M   vÀ¼*  »uLy    vÀ¼   ¯”L  ©Š@  ©G@  *  ÉªØh@  Ìªa	@  •«Ò@  «êv@      (    »uLy( Ë«àeh  ¯”   
   »uLy  *    tF   ÷	  †ÀÐû÷	  6 ÷	  € ƒ  ÉªØh«êv"•«Ò*  &  ðµ  ðÅ  óÕ  3  3
 
 õµ  *  L , B: ‚m Á Á`6 
 ví: 
 p:  ƒ*  r 
 ÷	  € p 0à õµ  , 1ÁÁe ¶          Ìªa	*  ˜ ÷	  € B: ` Cí: p:  Ã€   ©G*  ¾ Âe &@@ ðµ  Êµ õÕ , €÷	  €  &Ìªa	*  ä  p 0à õµ  , u-6 : 
 Am: ¶   
 ÷	   Am6 ÷	  ‡   ©G©Š       ¦M   NÀ…á*  ½uø8    NÀ…á   ¯”L  ¾©Ó@  Â©,`@  *  3ª(#@  œ« @  œ«w@  5¬ ™@  Z¬àG@  "      (  ½uø8(ž ¬Àh  ¯”   
   ½uø8  *    æ Ã ÷	  	‡µ“8 5
: Ã ÷	  †"`ú  Â©,` ¾©Ó*  & ÷	  ì†Ã  Ãõµ 9 õpùL 5
N ÁÁe  Z¬àG5¬ ™*  L   û	V ‡õµ , Ž
Ò      –
Ã  ÃÀ  & &  3ª(#J 
5¬ ™ *  r A6 
÷	  5
6  
÷	  4
 ˆ°   œ« œ«w
  ˜ &V‡        RM   UÀ¼*  ½u¡d    UÀ¼   ¯”L  E©¶H@  E©ÉH@  *  ¾©Ó@  À©h	@  ;ªà8@  =ªÐ@  Šª0 @  *  Éª°h@  Óªø8@  I«„–@  œ« @  œ«w@  *  «êv@  « w@  Ã«ô@  Ã«Kq@  ¬À@  *  ¬"@  5¬ ™@      (  ½u¡d(|¬-h  
  ¯”   
   ½u¡d  *    ÷	  †w à÷	  †ÀÐû÷	  u4 t @m: Àe  ¬"Éª°h«êv*  &  ÷	ò&@@ ðµ  u-,  õàù  €*  L ÷	  õµ 9       5
4 w b
&
÷	<†–
w RÁ  E©ÉH*  r  
÷	*	†–
uL  uN  w Z–
5
,  
÷	*  ˜   5Š9 Ã  ÃÁÁe  û	V †w f6 5
6 õµ  Šª0 5¬ ™=ªÐ¦ 
*  ¾  , Ã  ÃÁÁe  û	V †5 ôÕ@  µ4   5¬ ™¬ÀÌ 
*  ä u < u >   ‚ `f 
@ÔfÀ*  
E÷	  \‡ôÕ  p-<  :‡÷	  õµ 9 4Ã    Šª0 E©¶H(5¬ ™*  0ÃÁÁe  û	V †, Ðü	Ã  ÃÁÁe  û	V "  
À©h	4
5¬ ™$Óªø8N
*  Vê†8÷	ä Ã  ÃÁÁe  û	V -‡õµ , Ã    5¬ ™;ªà8f
(5¬ ™*  |ÃÁÁe  û	V †5 ôÕ      @  µõ õ    
¬À€
H*  ¢ôµ  õ  ôµ@  õ  –
õÐþ *  È–
uL  uN  Ã  ÃÁÁe  û	V –
A4   5¬ ™I«„–à
*  î
t  4
 5
4 
÷	   4
 
÷	    œ« (œ«w*  ôÅ@  w    fœ ÎEðÿ—¥ 5”, 5”-   « w*  :u , ‡ u: 6 õµ 9 )õµ 9 %A@ ñµ *  ` Ã  ÃÀ  Èàý–
A@ ñ‹ ¦–
³ôÕ   
5¬ ™*  † Ã ÷	  Ã ÷	  ì‡õµ 9 ó‡ fõ•  2   Ã«Kq¾©Ó*  ¬  l fu < u > A4 ¶
 € *  Ò÷	  †–%¡ ‡ ôÕ  p-,  †p-<  †Bp-        Šª0 *  ø<  ‡€ ÷	  õµ 9 6A@ ñµ  õÐþ  E©ÉH*  L –%± ‡ )ö @@ œ Nt4  u*  D: . Ã  ÃÁÁe  û	V ‡Þ	5 4 Þ‡u. :   
5¬ ™Ã«ôP

  j@m: Àe ÷	¨þ6 Ÿ        M   TÀ¼*  ½ufs    TÀ¼   ¯”L  Â©¨%@  ³ª4}@  *  Éª°h@  ÉªØh@  œ«w@  «êv@  ¼«8@  *  Y¬T}@      (  ½ufs(\¬ðsh  ¯”   
   ½ufs  *     Á‡ ÷	  †ÀÐû÷	  &4
 , |†  ÉªØh«êv*  &  `ƒ

ÂÔÁÀÃ ÷	  8†"`ú1Á)B   Â©¨%*  L òµ   ñµ 
 Àðþ÷	  1       ÷	  ± t  «êv"Éª°h*  r  5
: ÷	   4
 õµ 9 ñÕ 
 ÷	    ¼«8(Y¬T}*  ˜ ÷	  €4
 ¿
÷	  -õµ 9  õ‚  ³ª4}œ«w*  ¾ ‚l A: `Áe ‘”ô‹ õµ , Â2 Ba*  ä Â. BaÃ ‘”Ã
ý ñÕ 
 
÷	  †õU  $œ«w*  
 €, 4
 €ðe  –
 
÷	  4
 õ5 €   œ«w*  0, õE €, õ úL õ L u < u > f
  VL V‡        vM   PÀEÂ*  ½uœw    PÀEÂ   ¯”L  Šª0 @   «ƒK@  "      (  ½uœw(È ¬"h  ¯”   
   ½uœw  *    5
4 ôÅ\  ÷	  †‡   Ãpýðµ        O    «ƒK*  & l œ ÃÅ ÿBŠÃ
Ã‘”Ã
ýÃüôµ   *  L 9u > u < Ãàùœ ÂÅðÿÂ¥ * *  r A-< $‚ A-< ôÕ   
÷	  
Ü Á    Šª0 *  ˜ ÁÁå Â¥ Áå A-< 	‚p-<  ‡ 4
   ¾ ‡ õ ± ‡        @M   NÀEÛ*  ¿uL    NÀEÛ   ¯”L  Ý©[}@  ³ª4}@  *  œ«w@  Y¬T}@      (  ¿uL(t Z¬àGh  
  ¯”   
   ¿uL  *     f f f  4
 
÷	  	†ô  $œ«w*  &  Æe 4
 ± ‡ ô ÷	  ô €‚  ³ª4}*  L Ã ÷	  úÿ‡÷	  "`úÁ÷	  4
         
Ý©[}œ«w$Y¬T}  r ‡        	M   zÀEÛ*  ¿uçe    zÀEÛ   ¯”L  ô¨"@  ô¨@  *  9© @   © }@  Éª°h@  Óªz@  œ« @  *  œ«ZX@  «êv@  ¹«WŒ@  5¬ ™@      (    ¿uçe(¤h¬_Mh  ¯”   
   ¿uçe  *    5
: 5
< 5
> ÷	  †õ þ o@ È¥    ô¨"*  &  ú¢ 
÷	¾a‡÷	Ö^‡  ó2
  2
 *  L õµ  ô•    õµ  ðµ  ´Š*  r  4¬  ƒ4œ    ëô ÷	b3‡t:  *  ˜ @ ¢   ùÀ5ô•  €Á  
Á
*  ¾ ý2(  @: 2 ²
 2 2   2à 2 *  ä  ²       õðþ õ ÿ ± ‡ A> €÷	  ñÕ   $Óªz*  

 Â ÷	  R‡4u< 8 õe 8 f< ¢ '&  œ« *  0u-< 8 ‡÷	¶†–5Ûu< 8 õe 8 v<  €*  VB< ÷	d †uL  uN  èõe@ < €  Ö*  |‚¾Á 
÷	¶†‡ ò t 2 f 2 g €*  ¢÷	  A> ñÕ 
 Â ÷	  †w f¡ ‡ &¦2œ  Óªzœ« *  È  2œ  2  2œ  2œ	  2 $ 2 *  î, 2 . 2 0 ð‹ 1p
 
 p  2  *  2
  2
 ò   Ã
ƒƒƒƒ
2  *  :ò` ²  ò
 Ã  Ãóµ ( 2 ( 2   5¬ ™*  `* Dæ  æ  æ  æ  &
 & ð%         ð%*  †  
 Ã  Ãóµ ( 6  6 
 6    5¬ ™*  ¬6  ÷	  †Æe ± ‡ ‚ € ² ² ²   © }*  Ò ² ²* ²( ²  ²  –5¡ ‡ &Á0 *  ø÷	  †õpû €± ‡ 0  4 €÷	†  ô¨*  ‡ ±  w	  &
&
&
&fÂe CÃe Àe" Áe  ¹«WŒ*  D$ ”Ä…S‘av! ƒv 6a ¶
 ”ï*  j€1œ  ± ±• ±•
 „ … ñ‹ õ*  0ü 
ô* 	t, * ƒõû ± ‡ 1œ
  1œ*  ¶  1œ  1œ  1œ  ñÕ  
BÜ  Â ƒ*  ÜÂ1  ± C, †ñ 
BÜ Â ƒÂ*  1  ± C, †ñ       ¡ ‡ fæ  æ  *  (æ  A É¥ A ùÁ( Â Ý( Æe*  N \
4¬  ‡Ãàü4¬  ‡Ã ü4¬  ‡*  tÃ`þÃ5 õ –5–5± ‡ AÉ¥ 1¬ *  š vœ  1¬  vœ  1¬  vœ   *  ÀA äð‹ 
¶-  0œ  ¶  ö 
*  æ¶-  Ã0ÿu Ä
‚•Â ‚U‚Uõ  *  ¡ ‡ &fA: 
u: 
÷	†õÿÿ< €*  2Ã 
Ã
ý
B< ÷	ª †€± ‡ € 2œ*  X  2œ  2œ  €2œ  
 2œ  Àe Áe*  ~ ¦Â Â
ý€  €Àe4 Â  P”Â
*  ¤ý‚A: 2
 €Àef 5 8 ‚W-< ÿÿ	r  ²
*  Ê  2
       5
< 
r  5< @í8 Àe˜2 €¡ *  ð‡ A> ÷	  †ÀÐû÷	  ÷	  ñU 
 Â W,   Éª°h«êvÓªz*   Â ÷	  †5 ÷	  µ
: A: Ã ÷	  œ« œ«ZX*  < ‡  
Â ÃU æ÷	  ƒúÿ†5 Á÷	  9© *  b  õ ù ± ‡ ÷	  †ÀÐû÷	  u> 5< 58   œ«ZXÉª°h«êv   ˆõe˜8 Ã5 Ã 
Ã
ý¡ ‡        LN   ŸÀÉz  «u `    ŸÀÉ   ¯”L  ô¨"@  ô¨Œ@  ô¨ªH@  9© @  9©ë3@  ;©EM@  ;©OM@  œ« @  « w@  ¤«ªH@      (  «u `(æ   ;©æ_h G©­\h  ¯”   
   «u `  *    æ         ÷	  Ãðµ   ÷	  †–
w      9©ë3ô¨"&;©OM*  &  ðµ   ôÕ   –
)Ã÷	  <‡  

  ô¨"*  L ÁÜ Ál ÷	  ‡4 Àœ( À ÀA N †  ô¨ªH*  r &f÷	  –
6­  	‡t  –%õ  w   Ž  
ô¨Œ&« w*  ˜ ÷	  Ã 


Ã ÷	  ‡úÿÂ ÷	    9©ë39© &œ« "  ¾  
ÁÜ Ál ÷	  ƒõ þ w     ¤«ªH ;©EM
   «u `¼   ¼ ÷	    Ü   Ü   ‡     9©ë3@  ;©EM@  ;©OM@  œ« @  « w@  ¤«ªH@      (  «u `(æ   ;©æ_h G©­\h  ¯”   
   «u `  *    æ           Õ˜bxQÁ› 8$        DEMO1.TSK;21   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     5-FEB-79   15:46



PARTITION NAME : GEN   
IDENTIFICATION : M05.01
TASK  UIC      : [300,30]
STACK    LIMITS: 000222 001221 001000 00512.
ODT XFR ADDRESS: 011560
PRG XFR ADDRESS: 001450
TASK ATTRIBUTES: DA              
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 3744. WORDS
TASK ADDRESS LIMITS: 000000 016447
R-W DISK BLK LIMITS: 000002 000020 000017 00015.

*** ROOT SEGMENT: DEMO  


R/W MEM  LIMITS:       000000 016447 016450 07464.
DISK BLK LIMITS: 000002 000020 000017 00015.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 001222 006500 03392.
                          001222 004466 02358. TRAX          DEMO.OBJ;24
                          005710 000064 00052. .MAIN.        TEST.OBJ;1
                          005774 001210 00648. SUMMAR        SUMMRY.OBJ;1      
                          007204 000032 00026. .MAIN.        INC.OBJ;3
$DPB$$:(RW,I,LCL,REL,CON) 007722 000372 00250.
                          007722 000360 00240. TRAX          DEMO.OBJ;24
                          010302 000012 00010. SUMMAR        SUMMRY.OBJ;1
$$FSR1:(RW,D,GBL,REL,OVR) 010314 000000 00000.
                          010314 000000 00000. TRAX          DEMO.OBJ;24
$$FSR2:(RW,D,GBL,REL,CON) 010314 000104 00068.
$$RESL:(RW,I,LCL,REL,CON) 010420 000254 00172.
$$$ODT:(RW,I,GBL,REL,OV      R) 010674 005552 02922.
                          010674 005552 02922. ODTRSX M05.01 ODT.OBJ;3



GLOBAL SYMBOLS:

ALL.TR 004560-R  EL     000113    MEMFLG 007210-R  OUTPUT 001222-R  P.NAM  000002    SUM1   007224-R  $PARHD 005742-R  
BUFCTR 001240-R  ES     000112    MEMTYP 007212-R  PRTAST 002166-R  P.NEXT 000000    SUM2   007204-R  .ODTL1 011134-R  
BUFPTR 001236-R  ESC    000033    MEM1   007216-R  PRT.OK 001336-R  P.NUM  000100    SUM3   007226-R  .ODTL2 011136-R  
CD     000131    FREBLK 007      206-R  MEM3   007220-R  PUTNUM 005326-R  QFDB   002264-R  SUM4   007230-R  
COMMUN 005436-R  HELP   007214-R  MSGE   007222-R  P.ALLO 000600    RCVDAT 002470-R  TRANS  007232-R  
CPU.CL 003306-R  HO     000110    OUTBUF 004270-R  P.DEAD 000000    RECBUF 005410-R  TSTDSP 007234-R  
DIRERR 005356-R  JSTFY  005246-R  OUTLIN 004176-R  P.HIT  000050    SUMMRY 006042-R  $CRAVL 005710-R  
DEMO1.TSK;21   MEMORY ALLOCATION MAP  TKB             PAGE 2
DEMO                 5-FEB-79   15:46







*** TAS   ò   K BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 5216.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 1536. WORDS (6. PAGES)

    ELAPSED TIME:00:00:10
ò          ›rkQ"SÁ› 8$        øÀ  M                ¤        ©                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          	Ë^ < "Ë^œ & "$© ø LË^š ¾L$©š š E8O§ ¢ øË^= NÎÒ« € ù¿[ æùÄ[ : “Ìq ø ª%/ ª%Ë^9 žª%©2  ª%$©0  ª%ˆ©8 í&»K ø ¹)¨M6 4 º)¸G8 ¸ º)øM6 ì º)(d4 ôº)øf5 V º)Ðz5 Ô»)À€7 ô¼)è!6 Œ ¼)¨W7 2¼)xZ7 ”¾)¸3 Â ¾)¨W7 p ¾)xZ7 Ò ¾)@`4 ,¾)Ðz7  Â)°'3 Â)`Y5 Ä) 8 V Å)°r5 xÅ)xs5 ¶ Æ)H6 LÇ)˜q4 d Ê)`	4 Æ Ê)ˆ'6 ®Ê)p€4   Ë)Ð43 *Ð)4 ’E,kK¤ r E,»K§ E,8O¦ ª E,<O§ €ø8Ë^˜ ’ ø8$©˜ 0 19Ë^Ž :19$©‘ ,I:Ë^ ÜI:$©¢ Ì ;Ë^’ 2 ;$©” ° xEË^• 8 xE$©” ÆzKh @ zKË^j D zK©h (zKˆ©i J9O;i ê :O;i Š       ;OÀ€i ( µWa êµWË^d bµW©b à µWˆ©c â½[èvc ½[¸yc €Ê[ðKb øÊ[èvc Z Ê[¸yc ¼ —`À¨q 0gf:Os Zgf=Ov $:hPu Ð:h0„v † >ht  AhÀu Jht Ì Jh¨t ‚ªp  L ªpË^' <ªp©"  ªp$©  –ªpˆ©& ê q8O§ 0 ›rØ© f›r ª š ºtàG% 6 »tÀ€&  ¾t% ô Ãtp$ Ãtpq$ ÔÃtÐz$ tÄtðx& € Åtø% ºÅtp% VÊt¸# ¾ Êtp$ L ÊtP2% ’ Êt@`#  ÊtÐz$ ® Ítp# †ÍtÐz# èòyz‡ (òy}‡ è æË^£ >*–D Æ *–Ë^S V *–©F N*–$©E  *–ˆ©I ÈQ–Ë^W àT–Ë^U j[–Ë^S ´`–Ë^W D c–Ë^Y N9šà8P l 9š0MP ü9š¨MQ Ì 9š@`Q d :šÐHP Ô <špO Ì <šè!Q $<š`'N Â       <š€L ¦>šLL :@š N ’AšpN üAš`'N Z CšˆYM  DšpO d Dš8^P ¤Fš …N *Fš ™I hHš¸`M v Hš˜qO 4HšrO œHšØrP  Jš0 M KšP<M nNš _P <ñ¨8_ Fñ¨¸tk Ò ô¨¸[` N ô¨xnA Ð ÷¨8h`  ©8B d©¸tk  ©øzB \ ©8. €©¸¦_ ˆ©øHk ˜©¸[B ¦©øzA T ©x
@ † ©øz@ È%©u&p Œ %©¸)k 9©ûL P<©8^ ´@©ÞF ÐD©½`w ŠG©8Z G©ÁSn |G©µYw êJ©|v ”L©8šB èa©¸[[  b©øza   e©ÜKz Ê e©xnA e©¸C :f©8O[ Ú i©8g ´ i©Gwx Z i©Lyw &n©x
D   n©øzD B s©Àlz št©8h[ X v©¸a ¨v©x<g 0 Œ©8_ < •©çy ¦–©Àlz 8–©é
 r š©=	w Â ›©x
g 8      ›©8Og ¼›©øzg z ©Ö}w \ ±©¸/ Ê ±©ø? ¸²©ôp À²©kC ² µ©€}l @ ¹©8g r ¹© Xy ò¹©Ó`C ö ¼©ø/[  ¼©@†{ b ¾©x
C |¾©¸g ö ¾©øzC ¾¿©8h@ < ¿©{‹C n À©+	C * Â© x @Ã©¸¦B  Ä©¸¿? n Ä©øÅ? ° Ä©8Ì? ò Ä©xÒ? 4Ä©¸Ø? vÝ© }y "Ý©€ – æ©ôq @ ª8O[ â)ª¸[[ *ªøza â .ªx<B ".ª8O[ š 6ª`;o œ6ªi;p  7ª+"Œ H;ªx</  ^ª8OA Ž zª¸). x †ªxU\ $ Šª¸). >‹ª¸¦. º ¡ª¸[[ ^£ª86D „ ¯ªàk Ú¯ªô¢ \¯ªø`  ³ª¸¦k V¶ª8Oa $Êªø/ ˆ Êª¸)/ F Úª8Oa fÚª¸[A L ÚªøzA 
 ñªxUA –ÿªx
` VÿªøH` ÿª¸t` ˜«ø/` Ú«8OZ ’«€{ ®«8Z P«€%m Š       («p!v ú*«ø/@ À O«BxQ ŠO«øz\ f O«‹{\ ¬ O«³{\ ð O«Û{\ 4O«|\ xO«+|\ ¼O«S|]   O«{|] D O«£|] ˆ R«ø/_ € R«¸B_ Â R«øa_ U« }y ŠV«¸[a  }«9z ü‘«ø- ì ‘«8@ ’«ôp þ ’«k- d ’«¸)- ô”«8^ ø•«ày T •«¸)Z Ô•«ÉKx Ð •«Z€x ª•«6‘{ Î –«x
. Â–«x<` Ò –«xUA Ø˜«¸. ü ™«Ó`- ¨ œ«¸)f («twq È «áy| € Ÿ«8h- .Ÿ«{‹-    «+	, Ü£«x
f j£«8Of î£«øzf ¬£«¸¦. 6 ¤«¸@ ~ ¤«¸¿+ ¤«øÅ+ F¤«‹Æ, ˜¤«8Ì+ ˆ¤«xÒ+ Ê¤«¸Ø,  ¤«øÞ, N ¤«8å,  ¤«xë, Ò ¤«¸ñ, ¤«ø÷, V¦«¸^ 0¦«¸[^ r½«Ãj ð½« }l À«¸t? úÁ«¸¦] Ì Á«K§] Á«s§] T      Á«›§] ˜Á«Ã§] ÜÁ«ë§^   Á«¨^ d Á«;¨^ ¨ Á«c¨^ ì È«½|  Ì«p,  Ì«•`l ¨ Ì«øq æ Ì«øzB ž Ì«¸B à å«âym üë«øza ^ ò«s…{ <ó«”
 Ð
¬¸)- p¬»K 6 ¬<z \ ¬¸¦- ²?¬8O_ ÊY¬`;x þ[¬øg þj¬ø Ì j¬e;y º ¬¸@ D­ÕZ Ve³¼R
   ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ           r M        .MACRO	..EMIT	VALÿ 	.IIF	DF	LST$$	.LIST MEB 								VALÿ 	.IIF	DF	LST$$	.NLIST MEBÿ .ENDMÿ     ^M        	.MACRO	$ENTRY	P1,P2 	.LIST P1:: 	.NLISTÿ 	.IF 	GT,R$$TSTÿ 	.NCHR	$X$..,<P1>ÿ 	.IF	GT,$X$..-6ÿ" 	.ERROR			;P1 IS MORE THAN 6 CHAR. 	.MEXITÿ 	.ENDC 	.PSECT	$ENTY1,D,GBL 	$X$..=. 	.RAD50	/P1/ 	.IIF	EQ,.-$X$..-2,.WORD 0 	.WORD	SY.ADRÿ	 	.WORD	P1ÿ
 	.IF	NB	P2
 	.PSECT	P2 	.IFFÿ 	DPSECTÿ 	.ENDC 	.ENDC 	.ENDM	$ENTRYÿ     2M        	.MACRO	$TSTPT		P1,P2,P3,P4,      ?P5  	.IF	GT,R$$TST 	.NCHR	$X$..,<P1>  	.IF	GT,$X$..-6I" 	.ERROR			;P1 IS MORE THAN 6 CHAR. 	.MEXITE 	.ENDC 	.IF	IDN,<CALL>,<P2> 	BIT	#TP.ENB,P1+42 	BEQ	P5  	MOV	@#P1+6,-(SP)F 	JSR	PC,@(SP)+ 	P5: 	.IFF1
 	INC 	P1+6 	.ENDC 	.PSECT	$TSPT1,D,GBL 	$X$..=. P1::	.RAD50	/P1/ 	.IIF	EQ,.-$X$..-2,.WORD 0 	.IF	IDN,<CALL>,<P2> 	.WORD	SY.ADR$ 	.IIF	B,P3,.WORD $TST$$D 	.IIF	NB,P3,.WORD P3 	.IFF. 	.WORD	SY.VALÿ 	.WORD	0 	.ENDC
 	.IF	NB	P4
 	.PSECT	P4 	.IFF  	DPSECT  	.ENDC 	.ENDC 	.ENDM	$TSTP      TP     ” M        	.MACRO	$STGDPLY	STGDESC 	.IF	NB,<STGDESC>O' 	.IIF	DIF	<STGDESC>,<R2>	MOV STGDESC,R2. 	.ENDC 	JSR	PC,$DSTGP 	.ENDM	$STGDPLYP     ’ M        	.MACRO	$GETSTG	STGDESC, 	.IF	NB,<STGDESC>1' 	.IIF	DIF	<STGDESC>,<R2>	MOV STGDESC,R2L 	.ENDC 	JSR	PC,$GTSTG 	.ENDM	$GETSTG     ÀM        .MACRO STRU$B NAME .IF DF R$$TST$ 	.IF GT R$$TST-1 	.NCHR $X$..,NAMEP 	.IF GT $X$..-6.3 	.ERROR ;***** NAME IS MORE THAN 6-CHARACTERS *****C 	.MEXITF 	.ENDC 	.PSECT $STRU3,D,GBL .IIF EQ R$      $TST-2 .LIST	 	...CSG=.. 	.ASCII ?%N?<^O73>?    'NAME'? 	.PSECT $STRU1,D,GBL 	$X$..=. 	.RAD50 /NAME/ 	.IIF EQ .-$X$..-2  .WORD 0  	.WORD 	SY.ADR 	.WORD	...CSG  .IIF EQ R$$TST-2 .NLISTS 	.PSECTN 	.ENDC 	.ENDC .ENDM STRU$B     ¾ M        .MACRO STRU$E  .IF DF R$$TST  .IF GT R$$TST-1  	.PSECT $STRU3,D,GBL .IIF EQ R$$TST-2 .LIST 	.BYTE	0 .IIF EQ R$$TST-2 .NLIST. 	.PSECT. 	.ENDC 	.ENDC .ENDM STRU$E     ô M        .MACRO $EMSTG STRING .IF DF R$$TSTC .IF NB <STRING>D .IF GT R$$TST-      1T 	.PSECT $STRU3,D,GBL 	.IIF	EQ,R$$TST-2,.LIST' 	.ASCII ?%N?<^O73>?'STRING'? 	.IIF	EQ,R$$TST-2,.NLIST 	.PSECT. 	.ENDC 	.ENDC 	.ENDC .ENDM $EMSTG     Ì M        .MACRO RMS$L SYM,SIZE,STRING .MCALL $EMSTGC
 .IF NB SYM SYM=^O<...TPC> 	.ENDC .IF NB SIZE  	...TPC=^O<...TPC+SIZE>$ 	.ENDC .IIF B <STRING> .MEXIT $EMSTG <STRING>I .ENDM RMS$L      € M        .MACRO RMS$G SYM,SIZE,STRING .MCALL RMS$L .IIF NB SYM   .GLOBL	SYM RMS$L SYM,SIZE,<STRING>R .ENDM RMS$GB     T M        .MACRO       DFIN$G SYM,VALR 	.GLOBL	SYMI SYM=^O<VAL>, .ENDM DFIN$G     F M        .MACRO DFIN$L SYM,VAL, SYM=^O<VAL>C .ENDM DFIN$L     f M        .MACRO DEF$SZ SYM,SIZE,STRINGC# .IIF NB SIZE ...TPC=^O<...TPC+SIZE>T .ENDM DEF$SZ     
M       . .MACRO $STRIP FIELD,P0,P1,P2,P3,P4,P5,P6,P7,P8 .IRP NN,\...ARGT .IIF IDN P0 <EEEE> .MEXITG .IIF B P0 .MEXIT $'FIELD''NN'=^D'P0 ...SIZ=...SIZ+$'FIELD''NN  ...ARG=...ARG+1F$ $STRIP FIELD,P1,P2,P3,P4,P5,P6,P7,P8 ...ARG=0 .ENDMM .ENDM $STRIP     FM              .MACRO $SEQCK TAB1,TAB2,TYPE,BB= .IF NDF ...SEQ ...SEQ=1 ...TBL=0 ...RAB=0 ...FAB=0 ...XAB=0 ...NAM=0 ...LCB=0	 ...POOL=0  ...ARG=0 ...SIZ=0 ...RMS=0 .ENDCS ...ERR=0 .IF NB <BB>. .IF GT <...TBL>E3 	.ERROR ;***** MORE THAN ONE TABLE BEING INIT *****L	 	...ERR=1P 	.MEXIT6 	.ENDC .ENDC, .IIF B <TAB2> .MEXIT .IF EQ ...'TAB2I* 	.ERROR ;***** MISSING TAB2'$B MACRO *****	 	...ERR=1L 	.MEXIT. 	.ENDC .IIF  B <TYPE> .MEXIT, .IF NE <$COD-'TYPE> 5 	.ERROR ;***** XAB$B SPECIFIED CONFLICTING T      YPE *****O	 	...ERR=11 	.MEXITE 	.ENDC .ENDM $SEQCK     Â M       & .MACRO $UFLD$ FIELD,TAB1,TAB2,NAME,ARG .MCALL $SEQCK,..EMIT $SEQCK TAB1,TAB2,NAME. .IIF EQ ...ERR-1 .MEXIT  .IIF B <ARG> .MEXIT< ..EMIT <$'FIELD'=^D<ARG>>R .ENDM $UFLD$     Ø M        .MACRO FIELD$ NAME,LENGTH. .MCALL ..EMITI ...PC1=.  .=...TAB+O$'NAME. .IF EQ LENGTH-1* ..EMIT <.BYTE	$'NAME>C 	.ENDC .IF EQ LENGTH-2E ..EMIT <.WORD	$'NAME>T 	.ENDC .=...PC1 .ENDM FIELD$     üM         .MACRO $CHKMV SRC,FIELD,PTR,      TYPE .MCALL $'FIELD'$,..EMITI .NTYPE ...TYP,PTRS ..TMP0=...TYP&^O070  .IF NE ..TMP0 3 	.ERROR ;***** TABLE-POINTER MUST BE REGISTER *****K 	.MEXIT2 	.ENDC ..TMP0=...TYP&^O07 .IF GT ..TMP0-5>5 	.ERROR ;***** TABLE-POINTER MUST BE R0-R5 ONLY *****  	.MEXIT  	.ENDC .NTYPE ...TYP,SRCT ...ERR=1	 $'FIELD'$. .IF EQ ...ERR-1+) 	.ERROR ;***** INVALID NAME - FIELD *****' 	.MEXIT. .ENDCI .IF EQ ...TYP-^O27 	.IF IDN <TYPE> <S>. 	  .IF GT ...LEN-2 	    .IF DIF <SRC> <#0> < 	      .ERROR ;***** FIELD T      OO LONG FOR IMMEDIATE MODE ***** 	      .MEXITT
 	    .ENDC 	  .ENDC 	.ENDC 	.IF IDN <TYPE> <L>*6 	.ERROR ;***** IMMEDIATE MODE INVALID FOR SOURCE ***** 	.MEXITM 	.ENDC 	.ENDC ...TMP=...TYP&^O70 .IF EQ ...TMPB 	...TMP=...TYP&^O07- 	.IF EQ ...TMP-7& 	.ERROR ;***** CANNOT DESTROY PC ***** 	.MEXITI 	.ENDC 	.ENDC .IF EQ ...LEN-1  ...XXX=0 .IIF IDN <FIELD> <COD> ...XXX=1. .IIF IDN <FIELD> <BID> ...XXX=1F 	.IF IDN <TYPE> <L>. 	...TMP=...TYP&^O70. 	.IF EQ ...TMP 	.IF IDN <PTR>,<SRC>2 	.IIF EQ       ...XXX ..EMIT <MOVB	O$'FIELD'('PTR'),SRC>+ 	.IIF EQ ...XXX-1 ..EMIT <MOVB	('PTR'),SRC>N 	..EMIT <BIC	#^C377,SRC> 	.IFFD 	..EMIT <CLR	SRC>O2 	.IIF EQ ...XXX ..EMIT <BISB	O$'FIELD'('PTR'),SRC>+ 	.IIF EQ ...XXX-1 ..EMIT <BISB	('PTR'),SRC>- 	.ENDC 	.IFFP2 	.IIF EQ ...XXX ..EMIT <MOVB	O$'FIELD'('PTR'),SRC>+ 	.IIF EQ ...XXX-1 ..EMIT <MOVB	('PTR'),SRC>  	.ENDC 	.MEXIT< 	.ENDC 	.IF IDN <TYPE> <S>L 		.IF IDN <SRC> <#0>/ 		.IIF EQ ...XXX ..EMIT <CLRB	O$'FIELD'('PTR')> ( 		.IIF EQ ...XXX-1 ..EMIT <CLRB	('PT      R')> 		.IFF3 		.IIF EQ ...XXX ..EMIT <MOVB	SRC,O$'FIELD'('PTR')>M, 		.IIF EQ ...XXX-1 ..EMIT <MOVB	SRC,('PTR')> 		.ENDCD 	.MEXIT  	.ENDC 	.ENDC .IF EQ ...LEN-2T6 	.IIF IDN <TYPE> <L> ..EMIT <MOV	O$'FIELD'('PTR'),SRC> 	.IF IDN <TYPE> <S>. 		.IF IDN <SRC> <#0> 		..EMIT <CLR	O$'FIELD'('PTR')>T 		.IFF# 		..EMIT <MOV	SRC,O$'FIELD'('PTR')>R 		.ENDC  	.ENDC 	.MEXIT  	.ENDC .IF IDN <SRC> <#0> .IF IDN <TYPE> <S> ..EMIT <CLR	O$'FIELD'('PTR')>R0 .IIF GE ...LEN-4 ..EMIT <CLR	2+O$'FIELD'('PTR')>0 .IIF G      E ...LEN-6 ..EMIT <CLR	4+O$'FIELD'('PTR')>1 .IIF GE ...LEN-10 ..EMIT <CLR	6+O$'FIELD'('PTR')> 2 .IIF GE ...LEN-12 ..EMIT <CLR	10+O$'FIELD'('PTR')>2 .IIF GE ...LEN-14 ..EMIT <CLR	12+O$'FIELD'('PTR')>2 .IIF GE ...LEN-16 ..EMIT <CLR	14+O$'FIELD'('PTR')>2 .IIF GE ...LEN-20 ..EMIT <CLR	16+O$'FIELD'('PTR')> .MEXIT .ENDCT .ENDCR ...TMP=...TYP&^O70 .IF EQ ...TMPN 	.IF GT ...LEN-12.6 	.ERROR ;***** FIELD SIZE TOO LONG FOR REGISTERS ***** 	.MEXITP 	.ENDC 	...TMP=...TYP&^O07I 	.IF GT ...TMP-..TMP0' 	...TMP=      <^O6-...TMP>*2 	.IF LT ...TMP-...LENT1 	.ERROR ;***** FIELD TOO LONG FOR SRC -> R5 *****R 	.MEXITF 	.ENDC 	.IFF. 	...TMP=<..TMP0-...TMP>*2' 	.IF LT 2+...TMP-...LENM4 	.ERROR ;***** FIELD TOO LONG FOR SRC -> PTR-1 ***** 	.MEXITO 	.ENDC 	.ENDC .IF IDN <TYPE> <L>  ..EMIT <MOV	O$'FIELD'(PTR'),SRC>7 .IIF GE ...LEN-4 ..EMIT <MOV	2+O$'FIELD'('PTR'),SRC'+1>N7 .IIF GE ...LEN-6 ..EMIT <MOV	4+O$'FIELD'('PTR'),SRC'+2>F8 .IIF GE ...LEN-10 ..EMIT <MOV	6+O$'FIELD'('PTR'),SRC'+3>9 .IIF GE ...LEN-12 ..EMIT <MOV	10      +O$'FIELD'('PTR'),SRC'+4>.9 .IIF GE ...LEN-14 ..EMIT <MOV	12+O$'FIELD'('PTR'),SRC'+5>*9 .IIF GE ...LEN-16 ..EMIT <MOV	14+O$'FIELD'('PTR'),SRC'+6> 9 .IIF GE ...LEN-20 ..EMIT <MOV	16+O$'FIELD'('PTR'),SRC'+7>  .IFF! ..EMIT <MOV	SRC,O$'FIELD'('PTR')>N7 .IIF GE ...LEN-4 ..EMIT <MOV	SRC'+1,2+O$'FIELD'('PTR')> 7 .IIF GE ...LEN-6 ..EMIT <MOV	SRC'+2,4+O$'FIELD'('PTR')> 8 .IIF GE ...LEN-10 ..EMIT <MOV	SRC'+3,6+O$'FIELD'('PTR')>9 .IIF GE ...LEN-12 ..EMIT <MOV	SRC'+4,10+O$'FIELD'('PTR')>I9 .IIF GE ...LEN-14 ..EMIT <MO      V	SRC'+5,12+O$'FIELD'('PTR')>I9 .IIF GE ...LEN-16 ..EMIT <MOV	SRC'+6,14+O$'FIELD'('PTR')>I9 .IIF GE ...LEN-20 ..EMIT <MOV	SRC'+7,16+O$'FIELD'('PTR')>I .IFTF. .MEXIT .ENDC< .ENDCO ...ATO=0 ...TMP=...TYP&^O70 .IIF EQ ...TMP-^O20 ...ATO=1 .IIF EQ ...TMP-^O40 ...ATO=1 .IF EQ ...ATO-1$ .IF IDN <TYPE> <L>! ..EMIT <MOV	O$'FIELD'('PTR'),SRC>+4 .IIF GE ...LEN-4 ..EMIT <MOV	2+O$'FIELD'('PTR'),SRC>4 .IIF GE ...LEN-6 ..EMIT <MOV	4+O$'FIELD'('PTR'),SRC>5 .IIF GE ...LEN-10 ..EMIT <MOV	6+O$'FIELD'('PTR'),SRC><6       .IIF GE ...LEN-12 ..EMIT <MOV	10+O$'FIELD'('PTR'),SRC>6 .IIF GE ...LEN-14 ..EMIT <MOV	12+O$'FIELD'('PTR'),SRC>6 .IIF GE ...LEN-16 ..EMIT <MOV	14+O$'FIELD'('PTR'),SRC>6 .IIF GE ...LEN-20 ..EMIT <MOV	16+O$'FIELD'('PTR'),SRC> .IFF! ..EMIT <MOV	SRC,O$'FIELD'('PTR')> 4 .IIF GE ...LEN-4 ..EMIT <MOV	SRC,2+O$'FIELD'('PTR')>4 .IIF GE ...LEN-6 ..EMIT <MOV	SRC,4+O$'FIELD'('PTR')>5 .IIF GE ...LEN-10 ..EMIT <MOV	SRC,6+O$'FIELD'('PTR')>M6 .IIF GE ...LEN-12 ..EMIT <MOV	SRC,10+O$'FIELD'('PTR')>6 .IIF GE ...LEN-14 ..EMIT <      MOV	SRC,12+O$'FIELD'('PTR')>6 .IIF GE ...LEN-16 ..EMIT <MOV	SRC,14+O$'FIELD'('PTR')>6 .IIF GE ...LEN-20 ..EMIT <MOV	SRC,16+O$'FIELD'('PTR')> .IFTF' .MEXIT .ENDCR .ENDCF .IF EQ ...TMP-^O60 .IF IDN <TYPE> <L>! ..EMIT <MOV	O$'FIELD'('PTR'),SRC>$8 .IIF GE  ...LEN-4 ..EMIT <MOV	2+O$'FIELD'('PTR'),2+'SRC>7 .IIF GE ...LEN-6 ..EMIT <MOV	4+O$'FIELD'('PTR'),4+'SRC>'8 .IIF GE ...LEN-10 ..EMIT <MOV	6+O$'FIELD'('PTR'),6+'SRC>; .IIF  GE ...LEN-12 ..EMIT <MOV	10+O$'FIELD'('PTR'),10+'SRC>>; .IIF GE ...LEN-14 ..EMIT        <MOV	12+O$'FIELD'('PTR'),12+'SRC>F: .IIF GE ...LEN-16 ..EMIT <MOV	14+O$'FIELD'('PTR'),14+'SRC>: .IIF GE ...LEN-20 ..EMIT <MOV	16+O$'FIELD'('PTR'),16+'SRC> .IFF! ..EMIT <MOV	SRC,O$'FIELD'('PTR')>I7 .IIF GE ...LEN-4 ..EMIT <MOV	2+'SRC,2+O$'FIELD'('PTR')>F7 .IIF GE ...LEN-6 ..EMIT <MOV	4+'SRC,4+O$'FIELD'('PTR')>F8 .IIF GE ...LEN-10 ..EMIT <MOV	6+'SRC,6+O$'FIELD'('PTR')>: .IIF GE ...LEN-12 ..EMIT <MOV	10+'SRC,10+O$'FIELD'('PTR')>: .IIF GE ...LEN-14 ..EMIT <MOV	12+'SRC,12+O$'FIELD'('PTR')>: .IIF GE ...LEN-16 ..      EMIT <MOV	14+'SRC,14+O$'FIELD'('PTR')>: .IIF GE ...LEN-20 ..EMIT <MOV	16+'SRC,16+O$'FIELD'('PTR')> .IFTF. .MEXIT .ENDC< .ENDCO9 .ERROR ;***** SRC =INVALID/UNSUPPORTED ADDRESS MODE *****P .ENDM $CHKMV     Š M        .MACRO $WRDS TAB,FIELD,X .MCALL $SEQCK,$$LNUM $SEQCK TAB,TAB .IIF EQ ...ERR-1 .MEXITF $$LNUM FIELD,X .ENDM $WRDSO     úM        	.MACRO	$$LNUM	FIELD,WORD1 .MCALL ..EMIT0 	$$$B1=0 	$$$B2=0 	$$$B3=0 	$$$B4=0 	.IRPC	D,WORDO 	.IIF IDN <D> <.> .MEXIT 	$$$B1=$$$B1*10.+D'. 	$      $$C=$$$B1/256. 	$$$B1=$$$B1&377 	$$$B2=$$$B2*10.+$$$C2 	$$$C=$$$B2/256. 	$$$B2=$$$B2&377 	$$$B3=$$$B3*10.+$$$C  	$$$C=$$$B3/256. 	$$$B3=$$$B3&377 	$$$B4=$$$B4*10.+$$$CE 	$$$C=$$$B4/256. 	$$$B4=$$$B4&377 	.ENDM 	$$$H=$$$B4*256.+$$$B3 	$$$L=$$$B2*256.+$$$B1 ..EMIT <$'FIELD'0=$$$L>E ..EMIT <$'FIELD'1=$$$H>M 	.ENDM	$$LNUM      üM        .MACRO $CALL$ PROC,TAB,ERR,SUC .MCALL ..EMITI 	.GLOBL $RMSIA 	.GLOBL PROC ...NUM=0 .IIF NB <TAB> ...NUM=...NUM+1D .IIF NB <ERR> ...NUM=...NUM+1D .IIF       NB <SUC> ...NUM=...NUM+1$ .IF NE ...NUM$ ...NUM=0 .IF NB <TAB> 	..EMIT <MOV	R5,-(SP)> 	.IF NB <SUC>3 	...NUM=...NUM+1 	..EMIT <MOV	SUC,-(SP)>3 	.ENDC 	.IF B <ERR> 	.IF NB <SUC>B 	...NUM=...NUM+1 	..EMIT <MOV	#-1,-(SP)>B 	.ENDC 	.IFF$ 	...NUM=...NUM+1 	..EMIT <MOV	ERR,-(SP)>L .ENDCM ..EMIT <MOV	TAB,-(SP)> ...NUM=...NUM+1  ..EMIT <MOV	#...NUM,-(SP)> ..EMIT <MOV	SP,R5> .IFF- 		.ERROR ;***** MISSING TABLE PARAMETER *****  		.MEXIT 		.ENDCM .ENDC+ ..EMIT	<JSR	PC,'PROC>M .IIF EQ ...NUM       .MEXITC ..EMIT 	<ADD	#...NUM*2+2,SP> 	..EMIT <MOV	(SP)+,R5> .ENDM $CALL$     JM        .MACRO RABDF$ P1 .MCALL RABOF$,..EMIT RABOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** RAB MUST BE WORD ALIGNED *****F	 	...ERR=1= 	.MEXIT  	.ENDC ...TAB=. ..RBLN=0! .IIF B <P1> ..EMIT <.BLKB	RB$BLN>M" .IIF NB <P1> ..EMIT <.BLKB	RB$BLL> .IIF NB <P1> ..RBLN=1  .ENDM RABDF$     ~M        .MACRO RAB$BT DEF 
 .MCALL DEF 	DEF   	RB$BID,1 	DEF     RB$SEQ,0C 	DEF     RB$KEY,      1. 	DEF     RB$RFA,2D 	DEF     RB$EOF,1. 	DEF	RB$MAS,2+ 	DEF     RB$WAT,4  	DEF	RB$RLK,RB$WAT 	DEF     RB$HSH,10 	DEF     RB$LOA,20 	DEF     RB$ULK,40 	DEF	RB$LOK,RB$ULK 	DEF     RB$LOC,100  	DEF     RB$ASY,200S 	DEF     RB$RAH,400* 	DEF     RB$WBH,1000 	DEF   	RB$KGE,2000  	DEF   	RB$KGT,4000  	DEF  	RB$FDL,10000M 	DEF	RB$UIF,20000I 	DEF	RB$NKC,1> 	DEF	RB$NK3,2. 	DEF	RB$ORG,4  	DEF	RB$BK1,10 	DEF	RB$BK3,20 	DEF	RB$NW1,40 	DEF	RB$X1A,100	 	DEF	RB$X2A,200  .MACRO RAB$BT DEF  .ENDM       RAB$BT .ENDM RAB$BT     ªM        .MACRO RAB$B P1, .MCALL $SEQCK,RABDF$,RAB$BTR6 .MCALL R$RAC,R$ROP,R$UBF,R$USZ,R$RBF,R$RSZ,R$KBF,R$KSZ< .MCALL R$KRF,R$BKT,R$RHB,R$FAB,R$MBF,R$MBC,RAB$E,R$CTX,R$LSN RAB$BT DFIN$L0 $SEQCK RAB,,,BBA .IIF EQ ...ERR-1 .MEXIT0 .IF NB <P1>B .IF DIF <P1> <ASYN>B .IF DIF <P1> <SYN>5 .ERROR	;***** BAD PARAMETER SPELLING (SYN/ASYN) *****R .MEXIT .ENDCR RABDF$ .IFF	 RABDF$	BB  .ENDC$ .IFF RABDF$ .ENDC0 .IIF EQ ...ERR-1 .MEXITR ...TBL=1 ...RAB=1 $RAC=0 $ROP=0       $UBF=0 $USZ=0 $RBF=0 $RSZ=0 $KBF=0 $KSZ=0 $KRF=0 $BKT0=0L $BKT1=0A $RHB=0 $FAB=0 $MBF=0 $MBC=0 $LSN=0 $DUP=0 $STS=0 $STV=0 $ISI=0 $RFA=0 $CTX=0 $BID=RB$BIDR .ENDM RAB$BB     b M        .MACRO R$RAC VALUE .MCALL $UFLD$F $UFLD$ RAC,RAB,RAB,,<VALUE>< .ENDM R$RAC      f M        .MACRO R$ROP OPTIONS .MCALL $UFLD$A $UFLD$ ROP,RAB,RAB,,<OPTIONS>R .ENDM R$ROPD     b M        .MACRO R$UBF LABEL .MCALL $UFLD$E $UFLD$ UBF,RAB,RAB,,<LABEL>R .ENDM R$UBF.     d M        .MAC      RO R$USZ NUMBER  .MCALL $UFLD$  $UFLD$ USZ,RAB,RAB,,<NUMBER> .ENDM R$USZ      b M        .MACRO R$RBF LABEL .MCALL $UFLD$0 $UFLD$ RBF,RAB,RAB,,<LABEL>X .ENDM R$RBFI     d M        .MACRO R$RSZ NUMBERC .MCALL $UFLD$  $UFLD$ RSZ,RAB,RAB,,<NUMBER> .ENDM R$RSZ<     b M        .MACRO R$KBF LABEL .MCALL $UFLD$S $UFLD$ KBF,RAB,RAB,,<LABEL>R .ENDM R$KBFO     ` M        .MACRO R$KSZ SIZE  .MCALL $UFLD$B $UFLD$ KSZ,RAB,RAB,,<SIZE> .ENDM R$KSZL     b M        .MACRO R$KRF VALUE .MCA      LL $UFLD$N $UFLD$ KRF,RAB,RAB,,<VALUE>$ .ENDM R$KRF,     \ M        .MACRO R$BKT NUMBER  .MCALL $WRDS $WRDS RAB,BKT,<NUMBER> .ENDM R$BKTB     b M        .MACRO R$RHB LABEL .MCALL $UFLD$O $UFLD$ RHB,RAB,RAB,,<LABEL>  .ENDM R$RHBR     b M        .MACRO R$FAB LABEL .MCALL $UFLD$C $UFLD$ FAB,RAB,RAB,,<LABEL>S .ENDM R$FABR     d M        .MACRO R$MBF NUMBER  .MCALL $UFLD$O $UFLD$ MBF,RAB,RAB,,<NUMBER> .ENDM R$MBFB     d M        .MACRO R$MBC NUMBER  .MCALL $UFLD$K $UFLD$ MBC,R      AB,RAB,,<NUMBER> .ENDM R$MBCB     b M        .MACRO R$CTX VALUE .MCALL $UFLD$B $UFLD$ CTX,RAB,RAB,,<VALUE>D .ENDM R$CTXM     j M        .MACRO R$LSN NUMBERM2 .PRINT ;***** R$LSN NOT SUPPORTED BY RMS-11  ***** .ENDM R$LSNE     RM        .MACRO RAB$E .MCALL $SEQCK,FIELD$,..EMITD $SEQCK RAB,RAB .IIF EQ ...ERR-1 .MEXIT$ FIELD$ BID,1 ...PC1=. .=...TAB+O$BLN$ .IIF EQ ..RBLN ..EMIT <.BYTE	RB$BLN>& .IIF EQ ..RBLN-1 ..EMIT <.BYTE	RB$BLL> .=...PC1 FIELD$ CTX,2 FIELD$ ISI,2 FIELD$ STS,2 FI      ELD$ STV,2 ...PC1=. .=...TAB+O$RFA ..EMIT <.WORD	0,0,0> .=...PC1 FIELD$ RAC,1 FIELD$ KSZ,1 FIELD$ ROP,2 FIELD$ USZ,2 FIELD$ UBF,2 FIELD$ RSZ,2 FIELD$ RBF,2 FIELD$ KBF,2 FIELD$ KRF,1 FIELD$ MBF,1 FIELD$ MBC,1 FIELD$ RHB,2 FIELD$ FAB,2 FIELD$ BKT0,2E FIELD$ BKT1,2, ...TBL=0 ...RAB=0 .ENDM RAB$EI     ÈM        .MACRO RABOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF DIF <OFFSET> <DEF$SZ> STRU$B RABE! 	OFFSET	O$BID,1,<BID AND BLN= %P>I 	OFFSET	O$BLN,1$! 	OFFSET	      O$CTX,2,<CTX        = %P>.! 	OFFSET	O$ISI,2,<ISI        = %P>=! 	OFFSET	O$STS,2,<STS        = %P> ! 	OFFSET	O$STV,2,<STV        = %P>U! 	OFFSET	O$RFA,6,<RFA        = %P>I! 	$EMSTG         <           = %P>F! 	$EMSTG         <           = %P>L! 	OFFSET	O$RAC,1,<RAC & KSZ  = %P>T 	OFFSET	O$KSZ,1.! 	OFFSET	O$ROP,2,<ROP        = %P> ! 	OFFSET	O$USZ,2,<USZ        = %P>S! 	OFFSET	O$UBF,2,<UBF        = %P>T! 	OFFSET	O$RSZ,2,<RSZ        = %P>R! 	OFFSET	O$RBF,2,<RBF        = %P>B! 	OFFSET	O$KBF,2,<KBF        = %P>	      ! 	OFFSET	O$KRF,1,<KRF AND MBF= %P>	 	OFFSET	O$MBF,1 ! 	OFFSET	O$MBC,1,<MBC & SPARE= %P> 
 	OFFSET	,1! 	OFFSET	O$RHB,2,<RHB        = %P>O! 	OFFSET	O$FAB,2,<FAB        = %P>$! 	OFFSET	O$BKT,0,<BKT        = %P>$ 	OFFSET	O$BKT0,2 	OFFSET	O$BKT1,2! 	$EMSTG         <           = %P>O! 	OFFSET	     ,2,<SPARES     = %P>P! 	OFFSET	O$RT0,2,<RT0        = %P>Z! 	OFFSET	O$RT1,2,<RT1        = %P>F! 	OFFSET	O$RT2,2,<RT2        = %P>Z! 	OFFSET	O$RT3,2,<RT3        = %P>F! 	OFFSET	O$RT4,2,<RT4        = %P>F! 	OFFSET	O$RT      5,2,<RT5        = %P>F! 	OFFSET	O$RT6,2,<RT6        = %P>O! 	OFFSET	O$RT7,2,<RT7        = %P>O! 	OFFSET	O$RT8,2,<RT8        = %P> ! 	OFFSET	O$RT9,2,<RT9        = %P> " 	OFFSET	O$RT10,2,<RT10       = %P>" 	OFFSET	O$RBD0,2,<RBD0       = %P>" 	OFFSET	O$RBD1,2,<RBD1       = %P>" 	OFFSET	O$RBDB,2,<RBDB       = %P>" 	OFFSET	O$ROVL,2,<ROVL       = %P>" 	OFFSET	O$RPAR,2,<RPAR       = %P>" 	OFFSET	O$RIOS,2,<RIOS       = %P>" 	OFFSET	O$RIO2,2,<           = %P> .IF IDN <OFFSET> <DEF$SZ>R 	RMS$L	RB$BLNF 	.IFFE 	OFF      SET	RB$BLN 	.ENDC! .IIF DIF <OFFSET> <DEF$SZ> STRU$E  	OFFSET	O$RASY,80. .IF IDN <OFFSET> <DEF$SZ>E 	RMS$L	RB$BLL  	.MEXITP 	.IFFF 	OFFSET	RB$BLL 	.ENDC .IF DF R$$TST	 .IIF GT R$$TST-1 .MEXIT> .ENDCE .MACRO RABOF$ OFFSET .ENDM RABOF$ .ENDM RABOF$     B M        .MACRO $RT0$ ...ERR=0 ...LEN=2 .ENDM $RT0$L     B M        .MACRO $RT1$ ...ERR=0 ...LEN=2 .ENDM $RT1$	     B M        .MACRO $RT2$ ...ERR=0 ...LEN=2 .ENDM $RT2$I     B M        .MACRO $RT3$ ...ERR=0 ...LEN=2       .ENDM $RT3$      B M        .MACRO $RT4$ ...ERR=0 ...LEN=2 .ENDM $RT4$I     B M        .MACRO $RT5$ ...ERR=0 ...LEN=2 .ENDM $RT5$E     B M        .MACRO $RT6$ ...ERR=0 ...LEN=2 .ENDM $RT6$E     B M        .MACRO $RT7$ ...ERR=0 ...LEN=2 .ENDM $RT7$      B M        .MACRO $RT8$ ...ERR=0 ...LEN=2 .ENDM $RT8$      B M        .MACRO $RT9$ ...ERR=0 ...LEN=2 .ENDM $RT9$      D M        .MACRO $RT10$N ...ERR=0 ...LEN=2 .ENDM $RT10$     D M        .MACRO $RPAR$2       ...ERR=0 ...LEN=2 .ENDM $RPAR$     D M        .MACRO $ROVL$  ...ERR=0 ...LEN=2 .ENDM $ROVL$     D M        .MACRO $RBDB$E ...ERR=0 ...LEN=2 .ENDM $RBDB$     D M        .MACRO $RIOS$D ...ERR=0 ...LEN=2 .ENDM $RIOS$     B M        .MACRO $RAC$ ...ERR=0 ...LEN=1 .ENDM $RAC$O     B M        .MACRO $ROP$ ...ERR=0 ...LEN=2 .ENDM $ROP$O     B M        .MACRO $UBF$ ...ERR=0 ...LEN=2 .ENDM $UBF$O     B M        .MACRO $USZ$ ...ERR=0 ...LEN=2 .ENDM $USZ$C     B M              .MACRO $RBF$ ...ERR=0 ...LEN=2 .ENDM $RBF$M     B M        .MACRO $RSZ$ ...ERR=0 ...LEN=2 .ENDM $RSZ$      B M        .MACRO $KBF$ ...ERR=0 ...LEN=2 .ENDM $KBF$      B M        .MACRO $KSZ$ ...ERR=0 ...LEN=1 .ENDM $KSZ$      B M        .MACRO $RHB$ ...ERR=0 ...LEN=2 .ENDM $RHB$      B M        .MACRO $KRF$ ...ERR=0 ...LEN=1 .ENDM $KRF$      B M        .MACRO $BKT$ ...ERR=0 ...LEN=4 .ENDM $BKT$      B M        .MACRO $RFA$ ...ERR=0 ...LEN=6 .ENDM $R      FA$      B M        .MACRO $ISI$ ...ERR=0 ...LEN=2 .ENDM $ISI$      B M        .MACRO $MBF$ ...ERR=0 ...LEN=1 .ENDM $MBF$      B M        .MACRO $MBC$ ...ERR=0 ...LEN=1 .ENDM $MBC$      B M        .MACRO $FAB$ ...ERR=0 ...LEN=2 .ENDM $FAB$      ö M        .MACRO FABDF$N .MCALL FABOF$,..EMIT FABOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** FAB MUST BE WORD ALIGNED *****4	 	...ERR=1T 	.MEXIT  	.ENDC ...TAB=. ..EMIT <.BLKB	FB$BLN>N .ENDM FABD      F$     M        .MACRO FAB$BT DEF.
 .MCALL DEF 	DEF    FB$BID,3 	DEF    FB$PUT,1 	DEF    FB$GET,2 	DEF    FB$DEL,4 	DEF    FB$UPD,10  	DEF    FB$TRN,20$ 	DEF    FB$BIO,40L 	DEF    FB$REA,FB$BIO!FB$GET 	DEF    FB$WRT,FB$BIO!FB$PUT# 	DEF    FB$WRI,FB$PUT!FB$UPD!FB$DEL  	DEF    FB$NIL,100 	DEF    FB$SEQ,0 	DEF    FB$REL,20  	DEF    FB$IDX,40. 	DEF    FB$DIR,60B 	DEF    FB$DBM,100 	DEF    FB$FMX,100 	DEF    FB$FTN,1 	DEF    FB$CR,2I 	DEF    FB$PRN,4 	DEF    FB$BLK,10B 	DEF    FB$RWO,1       	DEF    FB$RWC,2 	DEF    FB$WAT,4 	DEF    FB$POS,10D 	DEF    FB$DLK,20F 	DEF    FB$JNL,40  	DEF    FB$ACK,100 	DEF    FB$CTG,200 	DEF    FB$SUP,400 	DEF    FB$NEF,1000B 	DEF    FB$TMP,2000A 	DEF    FB$MKD,4000  	DEF    FB$TMD,FB$TMP!FB$MKD 	DEF    FB$FID,10000 	DEF    FB$UDF,0 	DEF    FB$FIX,1 	DEF    FB$VAR,2 	DEF    FB$VFC,3 	DEF    FB$STM,4 	DEF    FB$REC,1 	DEF    FB$CCL,2 	DEF    FB$TRM,4 	DEF    FB$MDI,101 	DEF    FB$SDI,20  	DEF    FB$SQD,40D .MACRO FAB$BT DEFD .ENDM FAB$BT       .ENDM FAB$BT     ´M        .MACRO FAB$B .MCALL $SEQCK,FABDF$,FAB$BTF6 .MCALL F$FAC,F$SHR,F$JFN,F$RTV,F$ORG,F$RAT,F$FOP,F$XAB6 .MCALL F$MRS,F$JNL,F$MRN,F$BSZ,F$ALQ,F$BLS,F$NAM,F$RFM6 .MCALL F$FSZ,F$FNA,F$FNS,F$DNA,F$DNS,F$LCH,F$BKS,FAB$E .MCALL F$CTX,F$BPA,F$BPS,F$DEQ FAB$BT DFIN$L0 $SEQCK FAB,,,BB1 .IIF EQ ...ERR-1 .MEXIT  FABDF$ .IIF EQ ...ERR-1 .MEXITF ...TBL=1 ...FAB=1 $FAC=FB$GETD $SHR=FB$GET4 $FOP=0 $JFN=0 $RTV=0 $ORG=FB$SEQ2 $RAT=0 $XAB=0 $MRS=0 $MRN0=0B $MRN1=0  $BPA=0 $B      PS=0 $JNL=0 $ALQ0=0  $ALQ1=0  $DEQ=0 $BLS=0 $NAM=0 $RFM=FB$VARF $FSZ=0 $BKS=0 $LCH=0 $FNA=0 $FNS=0 $DNA=0 $DNS=0 $STS=0 $STV=0 $IFI=0 $CTX=0 $DEV=0 $BID=FB$BIDN .ENDM FAB$BA     h M        .MACRO F$FAC  OPTIONSB .MCALL $UFLD$L $UFLD$ FAC,FAB,FAB,,<OPTIONS>T .ENDM F$FACQ     f M        .MACRO F$SHR OPTIONS .MCALL $UFLD$  $UFLD$ SHR,FAB,FAB,,<OPTIONS>F .ENDM F$SHR$     p M        .MACRO F$JFN NUMBERV8 .PRINT ;***** JFN FIELD IS NOT SUPPORTED BY RMS-11 ***** .ENDM F$JFNB           d M        .MACRO F$RTV NUMBER0 .MCALL $UFLD$0 $UFLD$ RTV,FAB,FAB,,<NUMBER> .ENDM F$RTVA     b M        .MACRO F$ORG VALUE .MCALL $UFLD$C $UFLD$ ORG,FAB,FAB,,<VALUE>E .ENDM F$ORG      f M        .MACRO F$RAT OPTIONS .MCALL $UFLD$  $UFLD$ RAT,FAB,FAB,,<OPTIONS>  .ENDM F$RAT      f M        .MACRO F$FOP OPTIONS .MCALL $UFLD$  $UFLD$ FOP,FAB,FAB,,<OPTIONS>  .ENDM F$FOP      b M        .MACRO F$XAB LABEL .MCALL $UFLD$  $UFLD$ XAB,FAB,FAB,,<LABEL>  .ENDM F$XAB      b M              .MACRO F$BPA LABEL .MCALL $UFLD$  $UFLD$ BPA,FAB,FAB,,<LABEL>B .ENDM F$BPA>     ` M        .MACRO F$BPS SIZEC .MCALL $UFLD$  $UFLD$ BPS,FAB,FAB,,<SIZE> .ENDM F$BPSE     ` M        .MACRO F$MRS SIZEM .MCALL $UFLD$O $UFLD$ MRS,FAB,FAB,,<SIZE> .ENDM F$MRSO     b M        .MACRO F$JNL LABEL .MCALL $UFLD$P $UFLD$ JNL,FAB,FAB,,<LABEL>L .ENDM F$JNLB     \ M        .MACRO F$MRN NUMBER  .MCALL $WRDS $WRDS FAB,MRN,<NUMBER> .ENDM F$MRNB     ` M        .MACRO F$BSZ SIZE * .PRI      NT ;***** FIELD UNUSED BY RMS-11 ***** .ENDM F$BSZB     X M        .MACRO F$ALQ SIZE  .MCALL $WRDS $WRDS FAB,ALQ,<SIZE> .ENDM F$ALQ      ` M        .MACRO F$DEQ SIZE$ .MCALL $UFLD$  $UFLD$ DEQ,FAB,FAB,,<SIZE> .ENDM F$DEQO     ` M        .MACRO F$BLS SIZE$ .MCALL $UFLD$  $UFLD$ BLS,FAB,FAB,,<SIZE> .ENDM F$BLSP     b M        .MACRO F$NAM LABEL .MCALL $UFLD$  $UFLD$ NAM,FAB,FAB,,<LABEL>  .ENDM F$NAMS     b M        .MACRO F$RFM VALUE .MCALL $UFLD$  $UFLD$ RFM,FAB,FAB,,<VALUE      >T .ENDM F$RFM      ` M        .MACRO F$FSZ SIZE  .MCALL $UFLD$  $UFLD$ FSZ,FAB,FAB,,<SIZE> .ENDM F$FSZ      b M        .MACRO F$FNA LABEL .MCALL $UFLD$O $UFLD$ FNA,FAB,FAB,,<LABEL>  .ENDM F$FNAB     ` M        .MACRO F$FNS SIZE  .MCALL $UFLD$F $UFLD$ FNS,FAB,FAB,,<SIZE> .ENDM F$FNSB     b M        .MACRO F$DNA LABEL .MCALL $UFLD$F $UFLD$ DNA,FAB,FAB,,<LABEL>U .ENDM F$DNAF     ` M        .MACRO F$DNS SIZE  .MCALL $UFLD$F $UFLD$ DNS,FAB,FAB,,<SIZE> .ENDM F$DNSB     b M              .MACRO F$CTX VALUE .MCALL $UFLD$O $UFLD$ CTX,FAB,FAB,,<VALUE>  .ENDM F$CTXB     b M        .MACRO F$LCH VALUE .MCALL $UFLD$F $UFLD$ LCH,FAB,FAB,,<VALUE>U .ENDM F$LCHF     ` M        .MACRO F$BKS SIZE  .MCALL $UFLD$F $UFLD$ BKS,FAB,FAB,,<SIZE> .ENDM F$BKSB     †M        .MACRO FAB$E .MCALL FIELD$,$SEQCK $SEQCK FAB,FAB .IIF EQ ...ERR-1 .MEXITB FIELD$ BID,1 ...PC1=. .=...TAB+O$BLN ..EMIT <.BYTE	FB$BLN>Z .=...PC1 FIELD$ CTX,2 FIELD$ IFI,2 FIELD$ STS,2 FIELD$ STV,2 FIEL      D$ FAC,1 FIELD$ SHR,1 FIELD$ FOP,2 FIELD$ RTV,1 FIELD$ ORG,1 FIELD$ RAT,1 FIELD$ RFM,1 FIELD$ XAB,2 FIELD$ BPA,2 FIELD$ BPS,2 FIELD$ MRS,2 FIELD$ MRN0,2V FIELD$ MRN1,2$ FIELD$ JNL,2 FIELD$ ALQ0,2O FIELD$ ALQ1,2M FIELD$ DEQ,2 FIELD$ NAM,2 FIELD$ FNA,2 FIELD$ DNA,2 FIELD$ FNS,1 FIELD$ DNS,1 FIELD$ BLS,2 FIELD$ FSZ,1 FIELD$ BKS,1 FIELD$ DEV,1 FIELD$ LCH,1 ...TBL=0 ...FAB=0 .ENDM FAB$EB     °M        .MACRO FABOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF       DIF <OFFSET> <DEF$SZ> STRU$B FABP! 	OFFSET	O$BID,1,<BID AND BLN= %P>L 	OFFSET 	O$BLN,1" 	OFFSET 	O$CTX,2,<CTX        = %P> 	OFFSET	O$ISID,0" 	OFFSET 	O$IFI,2,<IFI        = %P>" 	OFFSET 	O$STS,2,<STS        = %P>! 	OFFSET	O$STV,2,<STV        = %P>N! 	OFFSET	O$ALQ,0,<ALQ        = %P>I 	OFFSET	O$ALQ0,2 	OFFSET  O$ALQ1,22" 	$EMSTG          <           = %P> 	OFFSET	O$DEQ,2,<DEQ	    = %P>! 	OFFSET	O$FAC,1,<FAC AND SHR= %P>  	OFFSET	O$SHR,1F" 	OFFSET 	O$FOP,2,<FOP        = %P>! 	OFFSET	O$RTV,1,<RTV AND ORG      = %P>< 	OFFSET	O$ORG,1S! 	OFFSET	O$RAT,1,<RAT AND RFM= %P>D 	OFFSET	O$RFM,1E! 	OFFSET	O$XAB,2,<XAB        = %P>  	OFFSET	O$BPA,2,<BPA	    = %P>! 	OFFSET	O$BPS,2,<BPS        = %P>O! 	OFFSET	O$MRS,2,<MRS        = %P>O! 	OFFSET	O$MRN,0,<MRN        = %P>O 	OFFSET	O$MRN0,2 	OFFSET  O$MRN1,2F" 	$EMSTG          <           = %P>! 	OFFSET	O$JNL,2,<JNL        = %P>O! 	OFFSET	O$NAM,2,<NAM        = %P>E! 	OFFSET	O$FNA,2,<FNA        = %P>E! 	OFFSET	O$DNA,2,<DNA        = %P> ! 	OFFSET	O$FNS,1,<FNS AND DNS= %P>D 	O      FFSET	O$DNS,1E! 	OFFSET	O$BLS,2,<BLS        = %P>D! 	OFFSET	O$FSZ,1,<FSZ AND BKS= %P>E 	OFFSET	O$BKS,1 ! 	OFFSET	O$DEV,1,<DEV & LCH  = %P>  	OFFSET	O$LCH,1$ 	OFFSET	,4,<SPARE      = %P> 	$EMSTG     <           = %P> ! 	OFFSET	O$FT0,2,<FT0        = %P> ! 	OFFSET	O$FT1,2,<FT1        = %P>F! 	OFFSET	O$FT2,2,<FT2        = %P>>! 	OFFSET	O$FT3,2,<FT3        = %P>O! 	OFFSET	O$FT4,2,<FT4        = %P>E" 	OFFSET	O$FBD0,2,<FBD0       = %P>" 	OFFSET	O$FBD1,2,<FBD1       = %P>" 	OFFSET	O$FBDB,2,<FBDB       = %P>" 	O      FFSET	O$FOVL,2,<FOVL       = %P>" 	OFFSET	O$FPAR,2,<FPAR       = %P>" 	OFFSET	O$FIOS,2,<FIOS       = %P>" 	OFFSET	O$FIO2,2,<           = %P> .IF IDN <OFFSET> <DEF$SZ>	 	RMS$L	FB$BLN= 	.MEXITM 	.IFF  	OFFSET	FB$BLN 	.ENDC STRU$E .IF DF R$$TST  .IIF GT R$$TST-1 .MEXITF .ENDC  .MACRO FABOF$ OFFSET .ENDM FABOF$ .ENDM FABOF$      M        .MACRO CTXOF$ DEFE
 .MCALL DEF ...TPC=0 .IIF IDN <DEF> <RMS$L> ...TPC=1  .IIF IDN <DEF> <RMS$G> ...TPC=1  .IF EQ ...TPCF 	DEF	X$BDB0,-10. 	DEF	X$BDB1,-8      .F 	DEF	X$BDB,-6. 	DEF	X$OVLY,-4.O 	DEF	X$PARM,-2.P 	DEF	X$IOS,0 	DEF	X$IOS2,2S 	DEF	X$STKS,4= 	DEF	X$STKB,6. 	DEF	X$STKE,28.  	DEF	X$ARGS,28.O 	DEF	X$STRU,30.  	DEF	X$ERR,32. 	DEF	X$SUC,34. 	DEF	P$CNT,0 	DEF	P$STRU,2U 	DEF	P$ERR,4 	DEF	P$SUC,6 .IFF ...TPC=0 	DEF	P$CNT,2 	DEF	P$STRU,2T 	DEF	P$ERR,2 	DEF	P$SUC,2 ...TPC=-10.  	DEF	X$BDB0,2X 	DEF	X$BDB1,2L 	DEF	X$BDB,2 	DEF	X$OVLY,2> 	DEF	X$PARM,2= 	DEF	X$IOS,2 	DEF	X$IOS2,2. 	DEF	X$STKS,2. 	DEF	X$STKB,22.B 	DEF	X$STKE,0B 	DEF      	X$ARGS,2X 	DEF	X$STRU,2X 	DEF	X$ERR,2 	DEF	X$SUC,2 .ENDCX .MACRO CTXOF$ DEF, .ENDM CTXOF$ .ENDM CTXOF$     B M        .MACRO $FT0$ ...ERR=0 ...LEN=2 .ENDM $FT0$F     B M        .MACRO $FT1$ ...ERR=0 ...LEN=2 .ENDM $FT1$E     B M        .MACRO $FT2$ ...ERR=0 ...LEN=2 .ENDM $FT2$      B M        .MACRO $FT3$ ...ERR=0 ...LEN=2 .ENDM $FT3$B     B M        .MACRO $FT4$ ...ERR=0 ...LEN=2 .ENDM $FT4$2     B M        .MACRO $FAC$ ...ERR=0 ...LEN=1 .ENDM $FAC$B           B M        .MACRO $SHR$ ...ERR=0 ...LEN=1 .ENDM $SHR$D     B M        .MACRO $FOP$ ...ERR=0 ...LEN=2 .ENDM $FOP$      B M        .MACRO $RTV$ ...ERR=0 ...LEN=1 .ENDM $RTV$      B M        .MACRO $ORG$ ...ERR=0 ...LEN=1 .ENDM $ORG$      B M        .MACRO $RAT$ ...ERR=0 ...LEN=1 .ENDM $RAT$      B M        .MACRO $XAB$ ...ERR=0 ...LEN=2 .ENDM $XAB$      B M        .MACRO $BPA$ ...ERR=0 ...LEN=2 .ENDM $BPA$      B M        .MACRO $BPS$ ...ERR=0 ...LEN=2 .E      NDM $BPS$      B M        .MACRO $MRS$ ...ERR=0 ...LEN=2 .ENDM $MRS$      B M        .MACRO $MRN$ ...ERR=0 ...LEN=4 .ENDM $MRN$      B M        .MACRO $JNL$ ...ERR=0 ...LEN=2 .ENDM $JNL$      B M        .MACRO $ALQ$ ...ERR=0 ...LEN=4 .ENDM $ALQ$      B M        .MACRO $DEQ$ ...ERR=0 ...LEN=2 .ENDM $DEQ$      B M        .MACRO $BLS$ ...ERR=0 ...LEN=2 .ENDM $BLS$      B M        .MACRO $NAM$ ...ERR=0 ...LEN=2 .ENDM $NAM$      B M        .MACRO $RFM$ ...ERR      =0 ...LEN=1 .ENDM $RFM$      B M        .MACRO $FSZ$ ...ERR=0 ...LEN=1 .ENDM $FSZ$      B M        .MACRO $BKS$ ...ERR=0 ...LEN=1 .ENDM $BKS$      B M        .MACRO $STS$ ...ERR=0 ...LEN=2 .ENDM $STS$      B M        .MACRO $STV$ ...ERR=0 ...LEN=2 .ENDM $STV$      B M        .MACRO $IFI$ ...ERR=0 ...LEN=2 .ENDM $IFI$      B M        .MACRO $BID$ ...ERR=0 ...LEN=1 .ENDM $BID$      B M        .MACRO $BLN$ ...ERR=0 ...LEN=1 .ENDM $BLN$      B M        .MAC      RO $CTX$ ...ERR=0 ...LEN=2 .ENDM $CTX$      D M        .MACRO $FPAR$N ...ERR=0 ...LEN=2 .ENDM $FPAR$     D M        .MACRO $FOVL$1 ...ERR=0 ...LEN=2 .ENDM $FOVL$     D M        .MACRO $FBDB$  ...ERR=0 ...LEN=2 .ENDM $FBDB$     D M        .MACRO $FIOS$E ...ERR=0 ...LEN=2 .ENDM $FIOS$     B M        .MACRO $DEV$ ...ERR=0 ...LEN=1 .ENDM $DEV$C     B M        .MACRO $FNA$ ...ERR=0 ...LEN=2 .ENDM $FNA$C     B M        .MACRO $FNS$ ...ERR=0 ...LEN=1 .ENDM $FNS$C           B M        .MACRO $DNA$ ...ERR=0 ...LEN=2 .ENDM $DNA$C     B M        .MACRO $DNS$ ...ERR=0 ...LEN=1 .ENDM $DNS$M     B M        .MACRO $LCH$ ...ERR=0 ...LEN=1 .ENDM $LCH$      :M        .MACRO XABDF$2 .MCALL XABOF$,..EMIT XABOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** XAB MUST BE WORD ALIGNED *****1	 	...ERR=1V 	.MEXIT  	.ENDC ...TAB=. .IF EQ <$COD-1>  ..EMIT <.BLKB	XB$KYL>  .MEXIT .ENDC  .IF EQ <$COD-2>. ..EMIT <.BLKB	XB$DTL>  .MEX      IT .ENDC  .IF EQ  <$COD-3> ..EMIT <.BLKB	XB$PRL>2 .MEXIT .ENDC  .IF EQ <$COD-4>  ..EMIT <.BLKB	XB$LAL>  .MEXIT .ENDC  .IF EQ <$COD-5>  ..EMIT <.BLKB	XB$SML>. .MEXIT .ENDC17 .ERROR ;***** XAB$B VALUE=INVALID, OR UNSUPPORTED *****X .ENDM XABDF$     NM        .MACRO XAB$BT DEF2
 .MCALL DEF 	DEF     XB$KEY,1O 	DEF   	XB$DAT,2 	DEF   	XB$PRO,3 	DEF   	XB$ALL,4 	DEF   	XB$SUM,5 	DEF   	XB$ULB,6 	DEF   	XB$FCB,7 	DEF   	XB$HDR,10X 	DEF   	XB$USR,11< 	DEF   	XB$NAM,12B 	DEF	XB$ACC,13       	DEF     XB$STG,0Q 	DEF     XB$IN2,1< 	DEF     XB$BN2,2X 	DEF     XB$IN4,3< 	DEF     XB$BN4,4B 	DEF     XB$PAC,5T 	DEF	XB$CYL,1Q 	DEF	XB$LBN,2M 	DEF	XB$VBN,4L 	DEF	XB$RFI,10 	DEF	XB$HRD,1* 	DEF	XB$CTG,2N 	DEF     XB$DUP,1E 	DEF     XB$CHG,2D 	DEF	XB$NUL,4  	DEF	XB$INI,20 .MACRO XAB$BT DEFF .ENDM XAB$BT .ENDM XAB$BT     M        .MACRO XAB$B TYPE	 .MCALL $SEQCK,XABDF$,XAB$BTD$ .MCALL X$NXT,XAB$E,X$IAN,X$LAN,X$DAN0 .MCALL X$NUL,X$FLG,X$KNM,X$POS,X$REF,X$SIZ,X$HAL .MCALL X$IFL,X$DFL       .MCALL X$PRG,X$PRJ,X$PRO$ .MCALL X$AID,X$BKZ,X$VOL,X$ALQ,X$DEQ .MCALL X$LOC,X$ALN,X$AOP,X$DTP XAB$BT DFIN$LX $SEQCK XAB,,,BB$ .IIF EQ ...ERR-1 .MEXITD ...TMP=0! .IIF IDN <TYPE> <XB$KEY> ...TMP=1 ! .IIF IDN <TYPE> <XB$DAT> ...TMP=1 ! .IIF IDN <TYPE> <XB$PRO> ...TMP=1 ! .IIF IDN <TYPE> <XB$ALL> ...TMP=1 ! .IIF IDN <TYPE> <XB$SUM> ...TMP=1 " .IIF IDN <TYPE>  <XB$ACC> ...TMP=1" .IIF IDN <TYPE>  <XB$ULB> ...TMP=1" .IIF IDN <TYPE>  <XB$FCB> ...TMP=1! .IIF IDN <TYPE> <XB$HDR> ...TMP=1H! .IIF IDN <TYPE> <XB$US      R> ...TMP=1G! .IIF IDN <TYPE> <XB$NAM> ...TMP=1V .IF EQ ...TMP  $COD=XB$'TYPEA .IFF
 $COD='TYPE .ENDCI ...COD=0 XABDF$ .IIF EQ ...ERR-1 .MEXITE ...TBL=1 ...XAB=1 $NXT=0 .IF EQ <$COD-1>M $BLN=XB$KYLN $HAL=0 $NUL=0 $DTP=0 $FLG=0 $IFL=0 $DFL=0 $KNM=0 $POS0=0I $POS1=0Y $POS2=0L $POS3=0= $POS4=0I $POS5=0  $POS6=0. $POS7=0  $REF=0 $SIZ0=0< $SIZ1=0. $SIZ2=0I $SIZ3=0Y $SIZ4=0U $SIZ5=0P $SIZ6=0I $SIZ7=0  $IAN=0 $LAN=0 $DAN=0 $LVL=0 $MRL=0 $NSG=0 $TKS=0 $IBS=0 $DBS=0 .MEX      IT .ENDC= .IF EQ <$COD-2>E $BLN=XB$DTL. .MEXIT .ENDC. .IF EQ <$COD-3>T $BLN=XB$PRLC $PRO=0 $PRG=0 $PRJ=0 .MEXIT .ENDCF .IF EQ <$COD-4>I $BLN=XB$LAL  $ALQ0=0  $ALQ1=0I $DEQ=0 $AID=0 $BKZ=0 $VOL=0 $LOC0=0L $LOC1=00 $ALN=0 $AOP=0 .MEXIT .ENDC0 .IF EQ <$COD-5>= $BLN=XB$SML  $NOK=0 $NOA=0 $NOR=0 $PVN=0 .MEXIT .ENDC  .ENDM XAB$BZ     ` M        .MACRO X$NXT LABEL .MCALL $UFLD$P $UFLD$ NXT,XAB,XAB,,LABEL0 .ENDM X$NXTN     rM        .MACRO XAB$E .MCALL $SEQCK,FIELD$,.      .EMITE $SEQCK XAB,XAB .IIF EQ ...ERR-1 .MEXITX .IF EQ $COD-1      .IF NE ...COD-2$ 	.IF NE $REF 	$FLG=XB$DUP!XB$CHGT 	.ENDC	     .ENDCC .ENDC  FIELD$ COD,1 FIELD$ BLN,1 FIELD$ NXT,2 .IF EQ <$COD-1>V 	FIELD$ REF,1  	FIELD$ HAL,10 	FIELD$ IFL,2T 	FIELD$ DFL,2Q 	FIELD$ NUL,1N 	FIELD$ IAN,10 	FIELD$ LAN,10 	FIELD$ DAN,1T 	FIELD$ FLG,1  	FIELD$ DTP,1  	FIELD$ KNM,2O 	FIELD$ POS0,2 	FIELD$ POS1,2 	FIELD$ POS2,2 	FIELD$ POS3,2 	FIELD$ POS4,2 	FIELD$ POS5,2 	FIELD$ POS6,2 	FIELD$ POS7      ,2 	FIELD$ SIZ0,1 	FIELD$ SIZ1,1 	FIELD$ SIZ2,1 	FIELD$ SIZ3,1 	FIELD$ SIZ4,1 	FIELD$ SIZ5,1 	FIELD$ SIZ6,1 	FIELD$ SIZ7,1 	FIELD$ LVL,1E 	FIELD$ IBS,1D 	FIELD$ DBS,11 	FIELD$ MRL,2  	FIELD$ TKS,1V 	FIELD$ NSG,1  ...PC1=. .=...TAB+O$RVB ..EMIT <.WORD	0,0,0,0> .=...PC1 	.ENDC .IF EQ <$COD-2>E ...PC1=.
 .=...TAB+4 	..EMIT <.WORD	0,0,0,0>E 	..EMIT <.WORD	0,0,0,0>O 	..EMIT <.WORD	0,0,0,0> 	 	.=...PC1E .ENDC2 .IF EQ <$COD-3>2 	FIELD$ PRG,22 	FIELD$ PRJ,22 	FIELD$ PRO,22 	.ENDC .IF       EQ <$COD-4>  	FIELD$	AID,1  	FIELD$	BKZ,1  	FIELD$	VOL,2  	FIELD$	LOC0,2 	FIELD$	LOC1,2 	FIELD$	ALN,1  	FIELD$	AOP,1  	FIELD$	ALQ0,2 	FIELD$	ALQ1,2 	FIELD$	DEQ,2  	.ENDC .IF EQ <$COD-5>F 	FIELD$	PVN,2F 	FIELD$	NOK,1. 	FIELD$	NOA,1B 	FIELD$	NOR,1< .ENDC, ...TBL=0 ...COD=0 ...XAB=0 .ENDM XAB$E      l M        .MACRO X$FLG P1D .MCALL $UFLD$E $UFLD$ FLG,XAB,XAB,XB$KEY,<P1> ...COD=2 .ENDM X$FLGC     h M        .MACRO X$DTP VALUE .MCALL $UFLD$ ! $UFLD$ DTP,XAB,XAB,XB$KEY,<VALUE>        .ENDM X$DTP      h M        .MACRO X$KNM LABEL .MCALL $UFLD$D! $UFLD$ KNM,XAB,XAB,XB$KEY,<LABEL>L .ENDM X$KNM	     Ž M        .MACRO X$POS OFFSET  .MCALL $SEQCK,$STRIP $SEQCK XAB,XAB .IIF EQ ...ERR-1 .MEXITD $STRIP POS,OFFSET,EEEE .ENDM X$POS,     j M        .MACRO X$REF NUMBER0 .MCALL $UFLD$ " $UFLD$ REF,XAB,XAB,XB$KEY,<NUMBER> .ENDM X$REFE     ì M        .MACRO X$SIZ SIZEC .MCALL $SEQCK,$STRIP $SEQCK XAB,XAB .IIF EQ ...ERR-1 .MEXITL ...SIZ=0 $STRIP SIZ,SIZE,EEEE .IF GT ...      SIZ-255.9 .ERROR ;***** TOTAL SIZES OF ALL KEYS GT MAX OF 255 *****D .ENDC$ .ENDM X$SIZX     h M        .MACRO X$IFL VALUE .MCALL $UFLD$O! $UFLD$ IFL,XAB,XAB,XB$KEY,<VALUE>P .ENDM X$IFLX     h M        .MACRO X$DFL VALUE .MCALL $UFLD$ ! $UFLD$ DFL,XAB,XAB,XB$KEY,<VALUE>C .ENDM X$DFLE     h M        .MACRO X$NUL VALUE .MCALL $UFLD$>! $UFLD$ NUL,XAB,XAB,XB$KEY,<VALUE>M .ENDM X$NULZ     j M        .MACRO X$HAL OFFSETB .MCALL $UFLD$R" $UFLD$ HAL,XAB,XAB,XB$KEY,<OFFSET> .ENDM X$HALT           h M        .MACRO X$IAN VALUE .MCALL $UFLD$T! $UFLD$ IAN,XAB,XAB,XB$KEY,<VALUE>$ .ENDM X$IAN      h M        .MACRO X$LAN VALUE .MCALL $UFLD$I! $UFLD$ LAN,XAB,XAB,XB$KEY,<VALUE>$ .ENDM X$LAN      h M        .MACRO X$DAN VALUE .MCALL $UFLD$D! $UFLD$ DAN,XAB,XAB,XB$KEY,<VALUE>$ .ENDM X$DAN      h M        .MACRO X$PRG VALUE .MCALL $UFLD$N! $UFLD$ PRG,XAB,XAB,XB$PRO,<VALUE>$ .ENDM X$PRG      h M        .MACRO X$PRJ VALUE .MCALL $UFLD$$! $UFLD$ PRJ,XAB,XAB,XB$PRO,<VALUE>  .ENDM X$      PRJ      h M        .MACRO X$PRO VALUE .MCALL $UFLD$$! $UFLD$ PRO,XAB,XAB,XB$PRO,<VALUE>  .ENDM X$PRO      h M        .MACRO X$AID VALUE .MCALL $UFLD$$! $UFLD$ AID,XAB,XAB,XB$ALL,<VALUE>  .ENDM X$AID      h M        .MACRO X$BKZ VALUE .MCALL $UFLD$$! $UFLD$ BKZ,XAB,XAB,XB$ALL,<VALUE>  .ENDM X$BKZ      h M        .MACRO X$VOL VALUE .MCALL $UFLD$$! $UFLD$ VOL,XAB,XAB,XB$ALL,<VALUE>  .ENDM X$VOL      X M        .MACRO X$LOC VAL1L .MCALL $WRDS $WRDS XAB,LOC,<VAL1> .ENDM X$LOCD           h M        .MACRO X$ALN VALUE .MCALL $UFLD$L! $UFLD$ ALN,XAB,XAB,XB$ALL,<VALUE>, .ENDM X$ALND     h M        .MACRO X$AOP VALUE .MCALL $UFLD$L! $UFLD$ AOP,XAB,XAB,XB$ALL,<VALUE>, .ENDM X$AOPD     X M        .MACRO X$ALQ SIZEB .MCALL $WRDS $WRDS XAB,ALQ,<SIZE> .ENDM X$ALQL     f M        .MACRO X$DEQ SIZE  .MCALL $UFLD$V  $UFLD$ DEQ,XAB,XAB,XB$ALL,<SIZE> .ENDM X$DEQ$     ÌM        .MACRO $POSIZ OFFSET,L .MCALL OFFSETC 	OFFSET	L'$POS,2 ...TPC=...TPC-2,# 	OFFSET	L'$POS0,2,<POS      0       = %P> # 	OFFSET	L'$POS1,2,<POS1       = %P> # 	OFFSET	L'$POS2,2,<POS2       = %P>E# 	OFFSET	L'$POS3,2,<POS3       = %P>X# 	OFFSET	L'$POS4,2,<POS4       = %P>P# 	OFFSET	L'$POS5,2,<POS5       = %P>D# 	OFFSET	L'$POS6,2,<POS6       = %P>B# 	OFFSET	L'$POS7,2,<POS7       = %P>  	OFFSET	L'$SIZ,1 ...TPC=...TPC-1C# 	OFFSET	L'$SIZ0,1,<SIZ0/1     = %P>$ 	OFFSET	L'$SIZ1,1,# 	OFFSET	L'$SIZ2,1,<SIZ2/3     = %P>  	OFFSET	L'$SIZ3,1S# 	OFFSET	L'$SIZ4,1,<SIZ4/5     = %P>2 	OFFSET	L'$SIZ5,1 # 	OFFSET	L'$SIZ6,1,<S      IZ6/7     = %P>  	OFFSET	L'$SIZ7,1P! .IIF IDN <OFFSET> <DEF$SZ> .MEXIT, .ENDM $POSIZ     ^M        .MACRO XABOF$ OFFSET/ .MCALL $POSIZ,RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG	) .MCALL XBKOF$,XBDOF$,XBPOF$,XBAOF$,XBSOF$S XBKOF$ OFFSET  XBDOF$ OFFSET	 XBPOF$ OFFSET  XBAOF$ OFFSETO XBSOF$ OFFSET ! .IIF IDN <OFFSET> <DEF$SZ> .MEXIT, .IF DF R$$TSTP .IIF GT R$$TST-1 .MEXITO .ENDC' .MACRO XABOF$ OFFSET .ENDM XABOF$ .ENDM XABOF$     ¶M        .MACRO XBKOF$ OFFSET( .IIF DIF <OFFSET> <DEF$SZ> STRU$B       KEYXAB ...TPC=0! 	OFFSET	O$COD,1,<COD/BLN    = %P>S 	OFFSET	O$BLN,1I! 	OFFSET	O$NXT,2,<NXT        = %P> ! 	OFFSET	O$REF,1,<REF AND LVL= %P>, 	OFFSET	O$HAL,1$ ...TPC=...TPC-1  	OFFSET	O$LVL,1O 	OFFSET	O$IFL,2,<IFL	    = %P> 	OFFSET	O$DFL,2,<DFL	    = %P>! 	OFFSET	O$NUL,1,<NUL AND IAN= %P>F 	OFFSET	O$IAN,1F! 	OFFSET	O$LAN,1,<LAN AND DAN= %P>S 	OFFSET	O$DAN,1T! 	OFFSET	O$FLG,1,<FLG & DTP  = %P>F 	OFFSET	O$DTP,1$! 	OFFSET	O$KNM,2,<KNM        = %P>M 	$POSIZ  OFFSET,O ! 	OFFSET	O$RVB,4,<RVB        = %P      >E" 	$EMSTG          <           = %P> 	OFFSET	O$DVB,4,<DVB	    = %P> 	$EMSTG	<	    = %P>T! 	OFFSET	O$IBS,1,<IBS/DBS    = %P>F 	OFFSET	O$DBS,1O! 	OFFSET	O$NSG,1,<NSG/TKS    = %P>O 	OFFSET	O$TKS,1O! 	OFFSET	O$MRL,2,<MRL/TKS    = %P>E! .IIF DIF <OFFSET> <DEF$SZ> STRU$E$ .IF IDN <OFFSET> <DEF$SZ>O 	RMS$L	XB$KYL  	.IFF	 	OFFSET	XB$KYL 	.ENDC .ENDM XBKOF$     ÚM        .MACRO XBDOF$ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B DATXAB 	OFFSET	O$COD,1,<COD/BLN= %P>E 	OFFSET	O$BLN,1  	OFFSE      T	O$NXT,2,<NXT    = %P>  	OFFSET	O$RVN,2,<RVN	= %P> 	OFFSET	O$RDT,10,<RDT    = %P> 	$EMSTG           <       = %P>S 	$EMSTG           <       = %P>F 	$EMSTG           <       = %P>O 	OFFSET	O$CDT,10,<CDT    = %P> 	$EMSTG           <       = %P>S 	$EMSTG           <       = %P>F 	$EMSTG           <       = %P>. 	OFFSET	O$EDT,10,<EDT    = %P> 	$EMSTG           <       = %P>C 	$EMSTG           <       = %P>D 	$EMSTG           <       = %P>B! .IIF DIF <OFFSET> <DEF$SZ> STRU$EO .IF IDN <OFFSET> <DE      F$SZ>X 	RMS$L	XB$DTLP 	.IFFF 	OFFSET	XB$DTL 	.ENDC .ENDM XBDOF$     œM        .MACRO XBPOF$ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B PROXAB! 	OFFSET	O$COD,1,<COD/BLN    = %P>	 	OFFSET	O$BLN,1=! 	OFFSET	O$NXT,2,<NXT        = %P>P! 	OFFSET	O$PRG,2,<PRG        = %P>F! 	OFFSET	O$PRJ,2,<PRJ        = %P>  	OFFSET	O$PRO,2,<PRO	    = %P>! .IIF DIF <OFFSET> <DEF$SZ> STRU$E$ .IF IDN <OFFSET> <DEF$SZ>P 	RMS$L	XB$PRL  	.IFF  	OFFSET	XB$PRL 	.ENDC .ENDM XBPOF$     nM        .MACRO XBAOF      $ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B ALLXAB! 	OFFSET	O$COD,1,<COD/BLN    = %P>X 	OFFSET	O$BLN,1T! 	OFFSET	O$NXT,2,<NXT        = %P>R! 	OFFSET	O$AID,1,<AID AND BKZ= %P>N 	OFFSET	O$BKZ,1E! 	OFFSET	O$VOL,2,<VOL        = %P> ! 	OFFSET	O$ALN,1,<ALN & AOP  = %P>  	OFFSET	O$AOP,1E 	OFFSET	O$ALQ,0,<ALQ	    = %P>! 	$EMSTG	        <           = %P>D 	OFFSET	O$ALQ0,2 	OFFSET	O$ALQ1,2 	OFFSET	O$DEQ,2,<DEQ	    = %P>  	OFFSET	     ,2,<SPARE	    = %P>! 	OFFSET	O$LOC,0,<LOC        = %P>  	OFFSET	O$      LOC0,2 	OFFSET  O$LOC1,2D! 	$EMSTG	        <           = %P> ! 	OFFSET	O$RFI,0,<RFI        = %P>  	$EMSTG		<           = %P> 	$EMSTG		<           = %P> 	OFFSET	O$RFI0,2 	OFFSET	O$RFI1,2 	OFFSET	O$RFI2,2! .IIF DIF <OFFSET> <DEF$SZ> STRU$EO .IF IDN <OFFSET> <DEF$SZ>  	RMS$L	XB$LAL$ 	.IFF  	OFFSET	XB$LAL 	.ENDC .ENDM XBAOF$     ÀM        .MACRO XBSOF$ OFFSET ...TPC=0( .IIF DIF <OFFSET> <DEF$SZ> STRU$B SUMXAB 	OFFSET	O$COD,1,<COD/BLN	 =%P> 	OFFSET	O$BLN,1$" 	OFFSET	O$NXT,2,<NXT	         =%P>        	OFFSET	O$NOK,1,<NOK & NOA	 =%P> 	OFFSET	O$NOA,1 % 	OFFSET	O$NOR,1,<NOR & SPARE     =%P> 
 	OFFSET	,1% 	OFFSET	O$PVN,2,<PROLOGUE NUMBER =%P> ! .IIF DIF <OFFSET> <DEF$SZ> STRU$EE .IF IDN <OFFSET> <DEF$SZ>2 	RMS$L	XB$SMLS 	.IFFF 	OFFSET	XB$SML .ENDCO .ENDM XBSOF$     B M        .MACRO $COD$ ...ERR=0 ...LEN=1 .ENDM $COD$      B M        .MACRO $NXT$ ...ERR=0 ...LEN=2 .ENDM $NXT$T     B M        .MACRO $NUL$ ...ERR=0 ...LEN=1 .ENDM $NUL$	     B M        .MACRO $REF$ ...ERR=0       ...LEN=1 .ENDM $REF$K     B M        .MACRO $FLG$ ...ERR=0 ...LEN=1 .ENDM $FLG$=     B M        .MACRO $DTP$ ...ERR=0 ...LEN=1 .ENDM $DTP$F     @ M        .MACRO $IFL$ ...ERR=0 ...LEN=2
 .ENDM $IFL     B M        .MACRO $DFL$ ...ERR=0 ...LEN=2 .ENDM $DFL$      B M        .MACRO $IAN$ ...ERR=0 ...LEN=1 .ENDM $IAN$      B M        .MACRO $LAN$ ...ERR=0 ...LEN=1 .ENDM $LAN$      B M        .MACRO $DAN$ ...ERR=0 ...LEN=1 .ENDM $DAN$      B M        .MACRO $HA      L$ ...ERR=0 ...LEN=1 .ENDM $HAL$      B M        .MACRO $KNM$ ...ERR=0 ...LEN=2 .ENDM $KNM$      F M        .MACRO $POS$ ...ERR=0 ...LEN=^D16  .ENDM $POS$      D M        .MACRO $POS0$2 ...ERR=0 ...LEN=2 .ENDM $POS0$     D M        .MACRO $POS1$E ...ERR=0 ...LEN=2 .ENDM $POS1$     D M        .MACRO $POS2$D ...ERR=0 ...LEN=2 .ENDM $POS2$     D M        .MACRO $POS3$  ...ERR=0 ...LEN=2 .ENDM $POS3$     D M        .MACRO $POS4$D ...ERR=0 ...LEN=2 .ENDM $POS4$           D M        .MACRO $POS5$L ...ERR=0 ...LEN=2 .ENDM $POS5$     D M        .MACRO $POS6$  ...ERR=0 ...LEN=2 .ENDM $POS6$     D M        .MACRO $POS7$S ...ERR=0 ...LEN=2 .ENDM $POS7$     D M        .MACRO $SIZ$ ...ERR=0
 ...LEN=^D8 .ENDM $SIZ$1     D M        .MACRO $SIZ0$S ...ERR=0 ...LEN=1 .ENDM $SIZ0$     D M        .MACRO $SIZ1$S ...ERR=0 ...LEN=1 .ENDM $SIZ1$     D M        .MACRO $SIZ2$S ...ERR=0 ...LEN=1 .ENDM $SIZ2$     D M        .MACRO $SIZ3$S       ...ERR=0 ...LEN=1 .ENDM $SIZ3$     D M        .MACRO $SIZ4$S ...ERR=0 ...LEN=1 .ENDM $SIZ4$     D M        .MACRO $SIZ5$S ...ERR=0 ...LEN=1 .ENDM $SIZ5$     D M        .MACRO $SIZ6$S ...ERR=0 ...LEN=1 .ENDM $SIZ6$     D M        .MACRO $SIZ7$Z ...ERR=0 ...LEN=1 .ENDM $SIZ7$     B M        .MACRO $RVB$ ...ERR=0 ...LEN=4 .ENDM $RVB$I     B M        .MACRO $RVN$ ...ERR=0 ...LEN=2 .ENDM $RVN$$     D M        .MACRO $CDT$ ...ERR=0
 ...LEN=^D8 .ENDM $CDT$$     D       M        .MACRO $RDT$ ...ERR=0
 ...LEN=^D8 .ENDM $RDT$$     D M        .MACRO $EDT$ ...ERR=0
 ...LEN=^D8 .ENDM $EDT$$     B M        .MACRO $PRG$ ...ERR=0 ...LEN=2 .ENDM $PRG$O     B M        .MACRO $PRJ$ ...ERR=0 ...LEN=2 .ENDM $PRJ$C     B M        .MACRO $PRO$ ...ERR=0 ...LEN=2 .ENDM $PRO$M     B M        .MACRO $AID$ ...ERR=0 ...LEN=1 .ENDM $AID$M     B M        .MACRO $BKZ$ ...ERR=0 ...LEN=1 .ENDM $BKZ$M     B M        .MACRO $VOL$ ...ERR=0 ...LEN=2       .ENDM $VOL$      B M        .MACRO $LOC$ ...ERR=0 ...LEN=4 .ENDM $LOC$      B M        .MACRO $ALN$ ...ERR=0 ...LEN=1 .ENDM $ALN$      B M        .MACRO $AOP$ ...ERR=0 ...LEN=1 .ENDM $AOP$      B M        .MACRO $RFI$ ...ERR=0 ...LEN=6 .ENDM $RFI$      B M        .MACRO $NOK$ ...ERR=0 ...LEN=1 .ENDM $NOK$      B M        .MACRO $NOA$ ...ERR=0 ...LEN=1 .ENDM $NOA$      B M        .MACRO $NOR$ ...ERR=0 ...LEN=1 .ENDM $NOR$      B M        .MACRO $NSG$ ...E      RR=0 ...LEN=1 .ENDM $NSG$      B M        .MACRO $PVN$ ...ERR=0 ...LEN=2 .ENDM $PVN$      B M        .MACRO $TKS$ ...ERR=0 ...LEN=1 .ENDM $TKS$      B M        .MACRO $DBS$ ...ERR=0 ...LEN=1 .ENDM $DBS$      B M        .MACRO $IBS$ ...ERR=0 ...LEN=1 .ENDM $IBS$      B M        .MACRO $LVL$ ...ERR=0 ...LEN=1 .ENDM $LVL$      B M        .MACRO $MRL$ ...ERR=0 ...LEN=2 .ENDM $MRL$      B M        .MACRO $DVB$ ...ERR=0 ...LEN=4 .ENDM $DVB$      ö M        .M      ACRO NAMDF$N .MCALL NAMOF$,..EMIT NAMOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** NAM MUST BE WORD ALIGNED *****1	 	...ERR=1S 	.MEXIT  	.ENDC ...TAB=. ..EMIT <.BLKB	NB$BLN>N .ENDM NAMDF$     M        .MACRO NAM$B .MCALL $SEQCK,NAMDF$* .MCALL N$RSA,N$RLF,N$RSS,N$ESA,N$ESS,NAM$E $SEQCK NAM,,,B .IIF EQ ...ERR-1 .MEXIT  NAMDF$ .IIF EQ ...ERR-1 .MEXITR ...TBL=1 ...NAM=1 $RLF=0 $RSA=0 $RSS=0 $RSL=0 $FNB=0 $ESA=0 $ESS=0 $ESL=0 $WCC=0 .ENDM NAM$B      b       M        .MACRO N$RLF LABEL .MCALL $UFLD$S $UFLD$ RLF,NAM,NAM,,<LABEL>. .ENDM N$RLFB     b M        .MACRO N$RSA LABEL .MCALL $UFLD$* $UFLD$ RSA,NAM,NAM,,<LABEL>N .ENDM N$RSA      b M        .MACRO N$RSS VALUE .MCALL $UFLD$  $UFLD$ RSS,NAM,NAM,,<VALUE>, .ENDM N$RSSL     b M        .MACRO N$ESA LABEL .MCALL $UFLD$  $UFLD$ ESA,NAM,NAM,,<LABEL>D .ENDM N$ESA.     b M        .MACRO N$ESS VALUE .MCALL $UFLD$R $UFLD$ ESS,NAM,NAM,,<VALUE>  .ENDM N$ESS0     €M        .MACRO NAM      $E .MCALL $SEQCK,FIELD$,..EMIT  $SEQCK NAM,NAM .IIF EQ ...ERR-1 .MEXITL 	FIELD$	RLF,2B 	FIELD$	RSA,2  	FIELD$	RSS,1A 	FIELD$	RSL,1$ ...PC1=. .=...TAB+O$DVI ..EMIT <.WORD	0,0,0> ..EMIT <.WORD	0,0,0> ..EMIT <.WORD	0,0,0> .=...PC1 	FIELD$	FNB,2N 	FIELD$	ESA,2, 	FIELD$	ESS,1  	FIELD$	ESL,1  	FIELD$	WCC,2L ...TBL=0 ...NAM=0 .ENDM NAM$EN     ÆM        .MACRO NAMOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF DIF <OFFSET> <DEF$SZ> STRU$B NAM ! 	OFFSET	O$RLF,2,<RLF              = %P>L! 	OFFSET	O$RSA,2,<RSA        = %P>N! 	OFFSET	O$RSS,1,<RSS AND RSL= %P>D 	OFFSET	O$RSL,1	! 	OFFSET	O$DVI,6,<DVI        = %P>,! 	$EMSTG	        <           = %P>T" 	$EMSTG 	        <           = %P>! 	OFFSET	O$FID,6,<FID        = %P>F" 	$EMSTG          <           = %P>" 	$EMSTG          <           = %P>! 	OFFSET	O$DID,6,<DID        = %P>$! 	$EMSTG	        <           = %P> " 	$EMSTG          <           = %P>! 	OFFSET	O$FNB,2,<FNB        = %P>F! 	OFFSET	O$ESA,2,<ESA        = %P>	! 	OFFSET	O$ESS,      1,<ESS AND ESL= %P>	 	OFFSET	O$ESL,1 ! 	OFFSET	O$WCC,2,<WCC        = %P>R .IF IDN <OFFSET> <DEF$SZ>  	RMS$L	NB$BLN, 	.MEXIT  	.IFF, 	OFFSET	NB$BLN 	.ENDC! .IIF DIF <OFFSET> <DEF$SZ> STRU$E  .IF DF R$$TSTO .IIF GT R$$TST-1 .MEXIT  .ENDC  .MACRO NAMOF$ OFFSET .ENDM NAMOF$ .ENDM NAMOF$     B M        .MACRO $RLF$ ...ERR=0 ...LEN=2 .ENDM $RLF$	     B M        .MACRO $RSA$ ...ERR=0 ...LEN=2 .ENDM $RSA$O     B M        .MACRO $RSS$ ...ERR=0 ...LEN=1 .ENDM $RSS$P     B M              .MACRO $RSL$ ...ERR=0 ...LEN=1 .ENDM $RSL$	     B M        .MACRO $DVI$ ...ERR=0 ...LEN=6 .ENDM $DVI$$     B M        .MACRO $FID$ ...ERR=0 ...LEN=6 .ENDM $FID$      B M        .MACRO $DID$ ...ERR=0 ...LEN=6 .ENDM $DID$      B M        .MACRO $FNB$ ...ERR=0 ...LEN=2 .ENDM $FNB$      B M        .MACRO $ESA$ ...ERR=0 ...LEN=2 .ENDM $ESA$      B M        .MACRO $ESS$ ...ERR=0 ...LEN=1 .ENDM $ESS$      B M        .MACRO $ESL$ ...ERR=0 ...LEN=1 .ENDM $ESL$            B M        .MACRO $WCC$ ...ERR=0 ...LEN=2 .ENDM $WCC$      è M        .MACRO LCBDF$N .MCALL LCBOF$$ LCBOF$ RMS$L ..TAB1=. 	.EVEN ..TAB2=. .IF NE ..TAB2-..TAB1- 	.ERROR ;***** LCB MUST BE WORD ALIGNED *****.	 	...ERR=1D 	.MEXIT  	.ENDC ...TAB=. 	.BLKB	LB$BLN. .ENDM LCBDF$      M        .MACRO LCB$B .MCALL LCB$E,L$CTX,L$BIR,L$AIR .MCALL $SEQCK,LCBDF$ $SEQCK LCB,,,B .IIF EQ ...ERR-1 .MEXIT. LCBDF$ .IIF EQ ...ERR-1 .MEXIT  ...TBL=1 ...LCB=1 $CTX=0 $BIR=0 $AIR=0 $BLK0=0        $BLK1=0  $BUF=0 $LSZ=0 .ENDM LCB$B0     b M        .MACRO L$CTX VALUE .MCALL $UFLD$B $UFLD$ CTX,LCB,LCB,,<VALUE>R .ENDM L$CTX.     ` M        .MACRO L$BIR ADDRA .MCALL $UFLD$* $UFLD$ BIR,LCB,LCB,,<ADDR> .ENDM L$BIRR     ` M        .MACRO L$AIR ADDRL .MCALL $UFLD$D $UFLD$ AIR,LCB,LCB,,<ADDR> .ENDM L$AIR      ú M        .MACRO LCB$E .MCALL $SEQCK,FIELD$,..EMITL $SEQCK LCB,LCB .IIF EQ ...ERR-1 .MEXIT  	FIELD$	BIR,21 	FIELD$	CTX,2L 	FIELD$	AIR,2C 	FIELD$	BUF,2A 	FIELD$	LSZ,      2  	FIELD$	BLK0,2 	FIELD$	BLK1,2 ...TBL=0 ...LCB=0 .ENDM LCB$EL     LM        .MACRO LCBOF$ OFFSET( .MCALL RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0% .IIF DIF <OFFSET> <DEF$SZ> STRU$B LCB$ 	OFFSET	O$BIR,2,<BIR= %P>  	OFFSET	O$CTX,2,<CTX= %P>M 	OFFSET	O$AIR,2,<AIR= %P>F 	OFFSET	O$BUF,2,<BUF= %P>A 	OFFSET	O$LSZ,2,<LSZ= %P>  	OFFSET	O$BLK,0,<BLK= %P>A 	OFFSET	O$BLK0,2 	OFFSET  O$BLK1,2L 	$EMSTG	        <   = %P>  .IF IDN <OFFSET> <DEF$SZ>T 	RMS$L	LB$BLNI 	.MEXITE 	.IFF, 	OFFSET	LB$BLN       	.ENDC! .IIF DIF <OFFSET> <DEF$SZ> STRU$E0 .IF DF R$$TSTD .IIF GT R$$TST-1 .MEXIT  .ENDCO .MACRO LCBOF$ OFFSET .ENDM LCBOF$ .ENDM LCBOF$     B M        .MACRO $BIR$ ...ERR=0 ...LEN=2 .ENDM $BIR$	     B M        .MACRO $AIR$ ...ERR=0 ...LEN=2 .ENDM $AIR$A     B M        .MACRO $BUF$ ...ERR=0 ...LEN=2 .ENDM $BUF$      B M        .MACRO $LSZ$ ...ERR=0 ...LEN=2 .ENDM $LSZ$      B M        .MACRO $BLK$ ...ERR=0 ...LEN=4 .ENDM $BLK$$     f M        .MACRO $LOAD DEST,      FIELD,PTR  .MCALL $FETCHT $FETCH DEST,FIELD,PTR  .ENDM $LOADI     h M        .MACRO $FETCH DEST,FIELD,PTR .MCALL $CHKMVO $CHKMV DEST,FIELD,PTR,L  .ENDM $FETCH     l M        .MACRO $STORE SOURCE,FIELD,PTR .MCALL $CHKMVC $CHKMV SOURCE,FIELD,PTR,S2 .ENDM $STORE     vM        .MACRO $SET VALUE,FIELD,PTRL .MCALL $'FIELD'$,..EMIT  ...ERR=1	 $'FIELD'$S .IF EQ ...ERR-1L) 	.ERROR ;***** INVALID NAME - FIELD *****O 	.MEXIT. .ENDC 6 .IIF EQ ...LEN-1 ..EMIT <BISB	VALUE',O$'FIELD'('PTR')>5 .I      IF EQ ...LEN-2 ..EMIT <BIS	VALUE',O$'FIELD'('PTR')>  .IF GT ...LEN-2 . 	.ERROR ;***** FIELD LONGER THAN 2-BYTES ***** .ENDCM
 .ENDM $SET     rM        .MACRO $OFF VALUE,FIELD,PTR  .MCALL $'FIELD'$,..EMITE ...ERR=1	 $'FIELD'$C .IF EQ ...ERR-1I) 	.ERROR ;***** INVALID NAME - FIELD *****  	.MEXITE .ENDC,7 .IIF EQ ...LEN-1 ..EMIT  <BICB	VALUE',O$'FIELD'('PTR')>S5 .IIF EQ ...LEN-2 ..EMIT <BIC	VALUE',O$'FIELD'('PTR')>  .IF GT ...LEN-2 ( 	.ERROR ;***** FIELD LONGER THAN 2-BYTES .ENDCI
 .ENDM $OFF           €M         .MACRO $TESTBITS VALUE,FIELD,PTR .MCALL $'FIELD'$,..EMIT. ...ERR=1	 $'FIELD'$N .IF EQ ...ERR-1*) 	.ERROR ;***** INVALID NAME - FIELD *****  	.MEXITF .ENDC,6 .IIF EQ ...LEN-1 ..EMIT <BITB	VALUE',O$'FIELD'('PTR')>5 .IIF EQ ...LEN-2 ..EMIT <BIT	VALUE',O$'FIELD'('PTR')>L .IF GT ...LEN-2E. 	.ERROR ;***** FIELD LONGER THAN 2-BYTES ***** .ENDCD .ENDM $TESTBITSE      M         .MACRO  $COMPARE INPUT,FIELD,PTR .MCALL $'FIELD'$,..EMIT* ...ERR=1	 $'FIELD'$N .IF EQ ...ERR-1 ) 	.ERROR ;***      ** INVALID NAME - FIELD *****I 	.MEXITF .ENDCR .IF GT ...LEN-2$. 	.ERROR ;***** FIELD LONGER THAN 2-BYTES *****	 	...ERR=1* 	.MEXITL 	.ENDC .IF IDN <INPUT> <#0>0 	.IIF EQ ...LEN-1 ..EMIT <TSTB	O$'FIELD'('PTR')>/ 	.IIF EQ ...LEN-2 ..EMIT <TST	O$'FIELD'('PTR')>L 	.MEXITE 	.ENDC6 .IIF EQ ...LEN-1 ..EMIT <CMPB	INPUT',O$'FIELD'('PTR')>5 .IIF EQ ...LEN-2 ..EMIT <CMP	INPUT',O$'FIELD'('PTR')>  .ENDM $COMPARE     v M        .MACRO $INIT .MCALL ..EMIT  	.GLOBL	$RMSIA 	.GLOBL	$RMSIN ..EMIT <JSR	PC,$RM      SIN> .ENDM $INIT      z M        .MACRO $INITIF .MCALL ..EMIT  	.GLOBL	$RMSIA 	.GLOBL	$RMINF ..EMIT <JSR	PC,$RMINF> .ENDM $INITIF.     r M        .MACRO $BUFFER VALUE .MCALL ..EMITS ..EMIT <.EVEN> ..EMIT <.BLKB	^D<VALUE>> .ENDM $BUFFERE     Â M        .MACRO $RBCALI4 .MCALL $CONNECT,$DISCONNECT,$RELEASE,$FREE,$GET,$PUT5 .MCALL $FIND,$UPDATE,$DELETE,$FLUSH,$REWIND,$TRUNCATE " .MCALL $READ,$WRITE,$NXTVOL,$SPACE .ENDM $RBCAL     € M        .MACRO $FBCALL* .MCALL $CREATE,$OPEN,$CLOSE,      $EXTEND,$ERASE" .MCALL $DISPLAY,$ENQP,$DSQP,$QUIET .ENDM $FBCAL     ˆ M        .MACRO $GNCALI7 .MCALL $LOAD,$FETCH,$STORE,$SET,$OFF,$TESTBITS,$COMPARE  .MCALL $WAIT,$RETURN,$BUFFER .ENDM $GNCAL     0 M        .MACRO $RMSDTL .ENDM $RMSDT     8 M        .MACRO DPSECT$ .PSECT .ENDM DPSECT     *M        .MACRO ORG$ ORGTYP,OPTYPSL .MCALL DPSECT,TRVOF$ TRVOF$	RMS$L .PSECT	$$RMS1,D,OVR,GBL,REL,RW .IIF NDF ..$$01,..$$01=. .GLOBL	$RMSIA  .MACRO $PLUG$ OP,ORGNUMM .=..$$01+TV$'OP'+<2*'ORG      NUM'-2>, .GLOBL	$'OP''ORGNUM'E, .WORD	$'OP''ORGNUM'E .ENDM $PLUG$ .IF B ORGTYP2 .ERROR ;***** ORGANIZATION MUST BE SPECIFIED ***** DPSECT .MEXIT .ENDC  $ORG$=0A .IIF IDN ORGTYP,SEQ $ORG$=1C .IIF IDN ORGTYP,REL $ORG$=2$ .IIF IDN ORGTYP,IDX $ORG$=3  .IIF IDN ORGTYP,DIR $ORG$=4E .IF EQ $ORG$4 .ERROR ;***** ILLEGAL/UNSUPPORTED ORGANIZATION ***** DPSECT .MEXIT .ENDC$ .PSECT $$RMS1,D,OVR,GBL,REL,RW $PLUG$ OPE,\$ORG$$ $PLUG$ CLO,\$ORG$L $PLUG$ CON,\$ORG$L $PLUG$ DIS,\$ORG$. .IF B <OPTYPS> DP      SECT .MEXIT .ENDCO .IRP A,<OPTYPS>R .IF NB A $TYP$=0E .IIF IDN A,GET $TYP$=1 .IIF IDN A,PUT $TYP$=1 .IIF IDN A,FIN $TYP$=1 .IIF IDN A,UPD $TYP$=1 .IIF IDN A,DEL $TYP$=1 .IIF IDN A,CRE $TYP$=1 .IF EQ $TYP$1 .ERROR ;***** ILLEGAL/UNSUPPORTED OPERATION *****N DPSECT .MEXIT .ENDCI $PLUG$ A,\$ORG$R .ENDC  .ENDM/ DPSECT
 .ENDM ORG$     ¼ M        .MACRO POOL$B$ .MCALL $SEQCK,DPSECT2 .MCALL P$FAB,P$RAB,P$RABX,P$IDX,P$BDB,P$BUF,POOL$E $SEQCK POOL,,,BB .IIF EQ ...ERR-1 .MEXIT  ...TBL=1	 ..      .POOL=1M .ENDM POOL$B     ¶ M        .MACRO P$FAB VALUE .MCALL IFAOF$,$UFLD$ $FAB=0 $UFLD$ FAB,POOL,POOL,,VALUEF IFAOF$ DEF$SZF .PSECT	$RMS15,D,CON,GBL,REL,RW .BLKB	<$FAB*IF$BLN>A .ENDM P$FAB      ¶ M        .MACRO P$RAB VALUE .MCALL IRAOF$,$UFLD$ $RAB=0 $UFLD$ RAB,POOL,POOL,,VALUEA IRAOF$ DEF$SZ  .PSECT	$RMS13,D,CON,GBL,REL,RW .BLKB	<$RAB*IR$BLN>O .ENDM P$RABA     –M        .MACRO P$RABX VAL1,VAL2,VAL3 .MCALL IRAOF$,$UFLD$ $RBX1=0O $RBX2=0I $RBX3=0E $UFLD$ RBX1,POOL,POOL,,V      AL1O $UFLD$ RBX2,POOL,POOL,,VAL2  $UFLD$ RBX3,POOL,POOL,,VAL3M IRAOF$ DEF$SZL .PSECT	$RMS13,D,CON,GBL,REL,RW .BLKB	<$RBX1*IR$BLN> .PSECT	$RMS17,D,CON,GBL,REL,RW .IF NB VAL3A% .BLKB	<<$RBX2*2+$RBX3+1+3>&^C3>*$RBX1  .IFF .BLKB	<<$RBX2*2+3>&^C3>*$RBX1, .ENDC  .ENDM P$RABX     ¸ M        .MACRO P$IDX VAL1  .MCALL IDXOF$,$UFLD$ $IDX1=0W $UFLD$ IDX1,POOL,POOL,,VAL1  IDXOF$ DEF$SZ  .PSECT	$RMS15,D,CON,GBL,REL,RW .BLKB	<$IDX1*ID$BLN> .ENDM P$IDX=     ¶ M        .MACRO P$BDB VALUE .MCALL B      DBOF$,$UFLD$ $BDB=0 $UFLD$ BDB,POOL,POOL,,VALUEO BDBOF$ DEF$SZ  .PSECT	$RMS11,D,CON,GBL,REL,RW .BLKB	<$BDB*BD$BLN>	 .ENDM P$BDB>     ž M        .MACRO P$BUF VALUE .MCALL $UFLD$	 $BUF=0 $UFLD$ BUF,POOL,POOL,,VALUEF .PSECT	$$RMS3,D,CON,GBL,REL,RW .BLKB	<$BUF+3>&^C3 .ENDM P$BUF      p M        .MACRO POOL$EL .MCALL $SEQCK  $SEQCK POOL,POOL DPSECT ...TBL=0	 ...POOL=0D .ENDM POOL$E     f M        .MACRO $CREATE FAB,ERROR .MCALL $CALL$= $CALL$ $RMCRE,FAB,ERRORO .ENDM $CREATEM           b M        .MACRO $OPEN FAB,ERROR .MCALL $CALL$  $CALL$ $RMOPE,FAB,ERRORM .ENDM $OPEN,     f M        .MACRO $EXTEND FAB,ERROR .MCALL $CALL$  $CALL$ $RMEXT,FAB,ERRORA .ENDM $EXTENDF     d M        .MACRO $ERASE FAB,ERRORR .MCALL $CALL$E $CALL$ $RMERA,FAB,ERROR  .ENDM $ERASE     d M        .MACRO $DISPLAY FAB,ERRE .MCALL $CALL$O $CALL$ $RMDSP,FAB,ERR0 .ENDM $DISPLAY     ` M        .MACRO $CLOSE FAB,ERRA .MCALL $CALL$M $CALL$ $RMCLO,FAB,ERRM .ENDM $CLOSE     p M        .M      ACRO $CONNECT RAB,ERROR,SUCF .MCALL $CALL$L $CALL$ $RMCON,RAB,ERROR,SUCR .ENDM $CONNECT     v M         .MACRO $DISCONNECT RAB,ERROR,SUC .MCALL $CALL$L $CALL$ $RMDIS,RAB,ERROR,SUCE .ENDM $DISCONNECT      p M        .MACRO $RELEASE RAB,ERROR,SUCC .MCALL $CALL$, $CALL$ $RMREL,RAB,ERROR,SUC  .ENDM $RELEASE     j M        .MACRO $FREE RAB,ERROR,SUC .MCALL $CALL$E $CALL$ $RMFRE,RAB,ERROR,SUC  .ENDM $FREES     T M        .MACRO $RETURN .MCALL ..EMITM ..EMIT <RTS	PC>  .ENDM $RETURN            V M        .MACRO $WAIT RAB .MCALL $CALL$L $CALL$ $RMWAI,RAB, .ENDM  $WAIT     f M        .MACRO $READ RAB,ERR,SUC .MCALL $CALL$  $CALL$ $RMREA,RAB,ERR,SUCI .ENDM $READU     h M        .MACRO $WRITE RAB,ERR,SUCC .MCALL $CALL$, $CALL$ $RMWRI,RAB,ERR,SUC  .ENDM $WRITE     h M        .MACRO $GET RAB,ERROR,SUC  .MCALL $CALL$E $CALL$ $RMGET,RAB,ERROR,SUCE
 .ENDM $GET     h M        .MACRO $PUT RAB,ERROR,SUC  .MCALL $CALL$E $CALL$ $RMPUT,RAB,ERROR,SUC<
 .ENDM $PUT     j M              .MACRO $FIND RAB,ERROR,SUC .MCALL $CALL$L $CALL$ $RMFIN,RAB,ERROR,SUC  .ENDM $FIND      n M        .MACRO $UPDATE RAB,ERROR,SUC .MCALL $CALL$M $CALL$ $RMUPD,RAB,ERROR,SUCU .ENDM $UPDATE      n M        .MACRO $DELETE RAB,ERROR,SUC .MCALL $CALL$A $CALL$ $RMDEL,RAB,ERROR,SUC  .ENDM $DELETEM     b M        .MACRO $ENQP FAB,ERROR .MCALL $CALL$A $CALL$ $RMENQ,FAB,ERROR  .ENDM $ENQP      b M        .MACRO $DSQP FAB,ERROR .MCALL $CALL$M $CALL$ $RMDSQ,FAB,ERROR  .ENDM $DSQP            f M        .MACRO $QUIET FAB,ERRORL .MCALL $CALL$$ $CALL$ $RMQUI,FAB,ERRORE .ENDM  $QUIET      l M        .MACRO $FLUSH RAB,ERROR,SUCA .MCALL $CALL$L $CALL$ $RMFLU,RAB,ERROR,SUCD .ENDM $FLUSH     n M        .MACRO $REWIND RAB,ERROR,SUC .MCALL $CALL$C $CALL$ $RMRWI,RAB,ERROR,SUCE .ENDM $REWIND      r M        .MACRO $TRUNCATE RAB,ERROR,SUC .MCALL $CALL$M $CALL$ $RMTRU,RAB,ERROR,SUC  .ENDM $TRUNCATE      j M        .MACRO $NXTVOL RAB,ERR,SUC .MCALL $CALL$O $CALL$ $RMNXT,RAB,      ERR,SUC  .ENDM $NXTVOL$     h M        .MACRO $SPACE RAB,ERR,SUCU .MCALL $CALL$E $CALL$ $RMSPA,RAB,ERR,SUC  .ENDM $SPACE     È M        .MACRO $RMSTAT VALUE 	.IIF	NDF,$$ERR,$$ERR=0  .IF B <VALUE>  	$RMSTAT DFIN$LM 	.MEXITI .ENDCE .MCALL DFIN$L,DFIN$G,$IOER$L 	VALUE	SU$SUC,1. 	VALUE	SU$DUP,2. 	VALUE	SU$IDX,3. 	VALUE	SU$RRV,4. ;	VALUE	SU$BOF,5.  	VALUE	SU$RLK,20.L ...VAL=1 .IF IDN <VALUE> <DFIN$G>	 	...VAL=0  .ENDC > 	$IOER$	ER$ABO,177760,-16.,<OPERATION ABORTED(STV=ER$STK/MAP)>K 	$      IOER$	ER$ACC,177740,-32.,<F11ACP COULD NOT ACCESS FILE(STV=SYS ERR CODE)>M@ 	$IOER$	ER$ACT,177720,-48.,<"FILE" ACTIVITY PRECLUDES OPERATION>2 	$IOER$	ER$AID,177700,-64.,<BAD AREA ID(STV=@XAB)>> 	$IOER$	ER$ALN,177660,-80.,<ALIGNMENT OPTIONS ERROR(STV=@XAB)>: 	$IOER$	ER$ALQ,177640,-96.,<ALLOCATION QUANTITY TOO LARGE>1 	$IOER$	ER$ANI,177620,-112.,<NOT ANSI "D" FORMAT> @ 	$IOER$	ER$AOP,177600,-128.,<ALLOCATION OPTIONS ERROR(STV=@XAB)>H 	$IOER$	ER$AST,177560,-144.,<INVALID(I.E. SYNCH) OPERATION AT AST LEVEL>D 	$      IOER$	ER$ATR,177540,-160.,<ATTRIBUTE READ ERROR(STV=SYS ERR CODE)>E 	$IOER$	ER$ATW,177520,-176.,<ATTRIBUTE WRITE ERROR(STV=SYS ERR CODE)>O8 	$IOER$	ER$BKS,177500,-192.,<BUCKET SIZE TOO LARGE(FAB)>= 	$IOER$	ER$BKZ,177460,-208.,<BUCKET SIZE TOO LARGE(STV=@XAB)>$9 	$IOER$	ER$BLN,177440,-224.,<"BLN" LENGTH ERROR(RAB/FAB)>$@ 	$IOER$	ER$BOF,177430,-232.,<BEGINNING OF FILE DETECTED($SPACE)>F 	$IOER$	ER$BPA,177420,-240.,<PRIVATE POOL ADDRESS NOT MULTIPLE OF "4">C 	$IOER$	ER$BPS,177400,-256.,<PRIVATE POOL SIZE NOT M      ULTIPLE OF "4">7C 	$IOER$	ER$BUG,177360,-272.,<INTERNAL RMS ERROR CONDITION DETECTED>7/ 	$IOER$	ER$CCR,177340,-288.,<CAN'T CONNECT RAB>)W 	$IOER$	ER$CHG,177320,-304.,<$UPDATE-KEY CHANGE WITHOUT HAVING ATTRIBUTE OF XB$CHG SET>,> 	$IOER$	ER$CHK,177300,-320.,<BUCKET FORMAT CHECK-BYTE FAILURE>L 	$IOER$	ER$CLS,177260,-336.,<RSTS/E CLOSE FUNCTION FAILED(STV=SYS ERR CODE)>J 	$IOER$	ER$COD,177240,-352.,<INVALID OR UNSUPPORTED "COD" FIELD(STV=@XAB)>E 	$IOER$	ER$CRE,177220,-368.,<COULD NOT CREATE FILE(STV=SYS ERR COD      E)>IS 	$IOER$	ER$CUR,177200,-384.,<NO CURRENT RECORD(OPERATION NOT PRECEDED BY GET/FIND)>$U 	$IOER$	ER$DAC,177160,-400.,<F11-ACP DEACCESS ERROR DURING "CLOSE"(STV=SYS ERR CODE)>YB 	$IOER$	ER$DAN,177140,-416.,<DATA "AREA" NUMBER INVALID(STV=@XAB)>= 	$IOER$	ER$DEL,177120,-432.,<RFA-ACCESSED RECORD WAS DELETED>7F 	$IOER$	ER$DEV,177100,-448.,<BAD DEVICE, OR INAPPROPRIATE DEVICE TYPE>5 	$IOER$	ER$DIR,177060,-464.,<ERROR IN DIRECTORY NAME>=6 	$IOER$	ER$DME,177040,-480.,<DYNAMIC MEMORY EXHAUSTED>1 	$IOER$	ER$DNF,1      77020,-496.,<DIRECTORY NOT FOUND>,. 	$IOER$	ER$DNR,177000,-512.,<DEVICE NOT READY>H 	$IOER$	ER$DPE,176770,-520.,<DEVICE POSITIONING ERROR(STV=SYS ERR CODE)>; 	$IOER$	ER$DTP,176760,-528.,<"DTP" FIELD INVALID(STV=@XAB)>EN 	$IOER$	ER$DUP,176740,-544.,<DUPLICATE KEY DETECTED, XB$DUP ATTRIBUTE NOT SET>P 	$IOER$	ER$ENT,176720,-560.,<RSX-F11ACP ENTER FUNCTION FAILED(STV=SYS ERR CODE)>D 	$IOER$	ER$ENV,176700,-576.,<OPERATION NOT SELECTED IN "ORG$" MACRO>) 	$IOER$	ER$EOF,176660,-592.,<END-OF-FILE>>< 	$IOER$	ER$ESS,1      76640,-608.,<EXPANDED STRING AREA TOO SHORT>B 	$IOER$	ER$EXP,176630,-616.,<FILE EXPIRATION DATE NOT YET REACHED>C 	$IOER$	ER$EXT,176620,-624.,<FILE EXTEND FAILURE(STV=SYS ERR CODE)>5? 	$IOER$	ER$FAB,176600,-640.,<NOT A VALID FAB("BID" NOT=FB$BID)>,V 	$IOER$	ER$FAC,176560,-656.,<ILLEGAL FAC FOR REC-OP,0, OR FB$PUT NOT SET FOR "CREATE">3 	$IOER$	ER$FEX,176540,-672.,<FILE ALREADY  EXISTS >	- 	$IOER$	ER$FID,177530,-680.,<INVALID FILE-ID>"E 	$IOER$	ER$FLG,176520,-688.,<INVALID FLAG-BITS COMBINATION(STV=@XAB)>S:       	$IOER$	ER$FLK,176500,-704.,<FILE IS LOCKED BY OTHER USER>Q 	$IOER$	ER$FND,176460,-720.,<RSX-F11ACP "FIND" FUNCTION FAILED(STV=SYS ERR CODE)>,, 	$IOER$	ER$FNF,176440,-736.,<FILE NOT FOUND>0 	$IOER$	ER$FNM,176420,-752.,<ERROR IN FILE NAME>2 	$IOER$	ER$FOP,176400,-768.,<INVALID FILE OPTIONS>. 	$IOER$	ER$FUL,176360,-784.,<DEVICE/FILE FULL>C 	$IOER$	ER$IAN,176340,-800.,<INDEX "AREA" NUMBER INVALID(STV=@XAB)>1H 	$IOER$	ER$IDX,176320,-816.,<INDEX NOT INITIALIZED(STV ONLY,STS=ER$RNF)>@ 	$IOER$	ER$IFI,176300,-832.,      <INVALID IFI VALUE,OR UNOPENED FILE>L 	$IOER$	ER$IMX,176260,-848.,<MAX NUM(254) AREAS/KEY XABS EXCEEDED(STV=@XAB)>6 	$IOER$	ER$INI,176240,-864.,<$INIT MACRO NEVER ISSUED>H 	$IOER$	ER$IOP,176220,-880.,<OPERATION ILLEGAL,OR INVALID FOR FILE ORG.>I 	$IOER$	ER$IRC,176200,-896.,<ILLEGAL RECORD ENCOUNTERED(SEQ. FILES ONLY)>,C 	$IOER$	ER$ISI,176160,-912.,<INVALID ISI VALUE, OR UNCONNECTED RAB>I; 	$IOER$	ER$KBF,176140,-928.,<BAD KEY BUFFER ADDRESS(KBF=0)>I: 	$IOER$	ER$KEY,176120,-944.,<INVALID KEY FIELD(KEY=0/NEG)>      B 	$IOER$	ER$KRF,176100,-960.,<INVALID KEY-OF-REFERENCE($GET/$FIND)>E 	$IOER$	ER$KSZ,176060,-976.,<KEY SIZE=0,OR TOO LARGE(IDX)/NOT=4(REL)>8P 	$IOER$	ER$LAN,176040,-992.,<LOWEST-LEVEL-INDEX "AREA" NUMBER INVALID(STV=@XAB)>4 	$IOER$	ER$LBL,176020,-1008.,<NOT ANSI LABELED TAPE>3 	$IOER$	ER$LBY,176000,-1024.,<LOGICAL CHANNEL BUSY>	? 	$IOER$	ER$LCH,175760,-1040.,<LOGICAL CHANNEL NUMBER TOO LARGE>OV 	$IOER$	ER$LEX,175750,-1048.,<LOGICAL EXTEND ERROR,PRIOR EXTEND STILL VALID(STV=@XAB)>< 	$IOER$	ER$LOC,175740,-105      6.,<"LOC" FIELD INVALID(STV=@XAB)>3 	$IOER$	ER$MAP,175720,-1072.,<BUFFER MAPPING ERROR>6X 	$IOER$	ER$MKD,175700,-1088.,<F11ACP COULD NOT MARK FILE FOR DELETION(STV=SYS ERR CODE)>8 	$IOER$	ER$MRN,175660,-1104.,<MRN VALUE=NEG/REL.KEY>MRN>R 	$IOER$	ER$MRS,175640,-1120.,<MRS VALUE=0 FOR FIXED LENGTH RECS/=0 FOR REL. FILES>T 	$IOER$	ER$NAM,175620,-1136.,<"NAM" BLOCK ADDRESS INVALID(NAM=0, OR NOT ACCESSIBLE)>E 	$IOER$	ER$NEF,175600,-1152.,<NOT POSITIONED TO EOF(SEQ. FILES ONLY)>=G 	$IOER$	ER$NID,175560,-1168.,<CA      N'T ALLOCATE INTERNAL INDEX DESCRIPTOR>OB 	$IOER$	ER$NPK,175540,-1184.,<INDEXED FILE-NO PRIMARY KEY DEFINED>L 	$IOER$	ER$OPN,175520,-1200.,<RSTS/E OPEN FUNCTION FAILED(STV=SYS ERR CODE)>C 	$IOER$	ER$ORD,175500,-1216.,<XAB'S NOT IN CORRECT ORDER(STV=@XAB)>5> 	$IOER$	ER$ORG,175460,-1232.,<INVALID FILE ORGANIZATION VALUE>I 	$IOER$	ER$PLG,175440,-1248.,<ERROR IN FILE'S PROLOGUE(RECONSTRUCT FILE)>CD 	$IOER$	ER$POS,175420,-1264.,<"POS" FIELD INVALID(POS>MRS,STV=@XAB)>F 	$IOER$	ER$PRM,175400,-1280.,<BAD FILE DATE       FIELD RETRIEVED(STV=@XAB)>C 	$IOER$	ER$PRV,175360,-1296.,<PRIVILEGE VIOLATION(OS DENYS ACCESS)> @ 	$IOER$	ER$RAB,175340,-1312.,<NOT A VALID RAB("BID" NOT=RB$BID)>0 	$IOER$	ER$RAC,175320,-1328.,<ILLEGAL RAC VALUE>8 	$IOER$	ER$RAT,175300,-1344.,<ILLEGAL RECORD ATTRIBUTES>U 	$IOER$	ER$RBF,175260,-1360.,<INVALID RECORD BUFFER ADDR(NOT WORD-ALIGNED IF BLK-IO)> @ 	$IOER$	ER$RER,175240,-1376.,<FILE READ ERROR(STV=SYS ERR CODE)>4 	$IOER$	ER$REX,175220,-1392.,<RECORD ALREADY EXISTS>3 	$IOER$	ER$RFA,175200,-1408.,<BA      D RFA VALUE(RFA=0)>=4 	$IOER$	ER$RFM,175160,-1424.,<INVALID RECORD FORMAT>E 	$IOER$	ER$RLK,175140,-1440.,<TARGET BUCKET LOCKED BY ANOTHER STREAM>BR 	$IOER$	ER$RMV,175120,-1456.,<RSX-F11ACP REMOVE FUNCTION FAILED(STV=SYS ERR CODE)>= 	$IOER$	ER$RNF,175100,-1472.,<RECORD NOT FOUND(STV=0/ER$IDX)>,0 	$IOER$	ER$RNL,175060,-1488.,<RECORD NOT LOCKED>5 	$IOER$	ER$ROP,175040,-1504.,<INVALID RECORD OPTIONS> M 	$IOER$	ER$RPL,175020,-1520.,<ERROR WHILE READING PROLOGUE(STV=SYS ERR CODE)> = 	$IOER$	ER$RRV,175000,-1536.,<      INVALID RRV RECORD ENCOUNTERED>R: 	$IOER$	ER$RSA,174760,-1552.,<RAB STREAM CURRENTLY ACTIVE>W 	$IOER$	ER$RSZ,174740,-1568.,<BAD RECORD SIZE(RSZ>MRS, OR NOT=MRS IF FIXED LENGTH RECS>-T 	$IOER$	ER$RTB,174720,-1584.,<RECORD TOO BIG FOR USER'S BUFFER(STV=ACTUAL REC SIZE)>O 	$IOER$	ER$SEQ,174700,-1600.,<PRIMARY KEY OUT OF SEQUENCE(RAC=RB$SEQ FOR $PUT)>OR 	$IOER$	ER$SHR,174660,-1616.,<"SHR" FIELD INVALID FOR FILE(CAN'T SHARE SEQ FILES)>< 	$IOER$	ER$SIZ,174640,-1632.,<"SIZ" FIELD INVALID(STV=@XAB)>: 	$IOER$	ER$STK      ,174620,-1648.,<STACK TOO BIG FOR SAVE AREA>G 	$IOER$	ER$SYS,174600,-1664.,<SYSTEM DIRECTIVE ERROR(STV=SYS ERR CODE)>1/ 	$IOER$	ER$TRE,174560,-1680.,<INDEX TREE ERROR>DG 	$IOER$	ER$TYP,174540,-1696.,<ERROR IN FILE TYPE EXTENSION/FNS TOO BIG>UU 	$IOER$	ER$UBF,174520,-1712.,<INVALID USER BUFFER ADDR(0,OR BLK-IO NOT WORD ALIGNED)>A> 	$IOER$	ER$USZ,174500,-1728.,<INVALID USER BUFFER SIZE(USZ=0)>6 	$IOER$	ER$VER,174460,-1744.,<ERROR IN VERSION NUMBER>> 	$IOER$	ER$VOL,174440,-1760.,<INVALID VOLUME NUMBER(STV=@XAB      )>A 	$IOER$	ER$WER,174420,-1776.,<FILE WRITE ERROR(STV=SYS ERR CODE)>15 	$IOER$	ER$WLK,174410,-1784.,<DEVICE IS WRITE-LOCKED>RM 	$IOER$	ER$WPL,174400,-1792.,<ERROR WHILE WRITING PROLOGUE(STV=SYS ERR CODE)> A 	$IOER$	ER$XAB,174360,-1808.,<NOT A VALID XAB(@XAB=ODD,STV=@XAB)>< .MACRO $RMSTAT VALUE .ENDM $RMSTATN .ENDM $RMSTAT)     ô M        .MACRO $IOER$ SYM,VAL,DEC,MSGF .IF EQ ...VAL> .MCALL DFIN$GR DFIN$G SYM,VAL .IFF .MCALL DFIN$LE DFIN$L SYM,VAL .ENDC4 .IIF B <MSG> .MEXITU .IF GT $$ERR 	.      WORD	-^O<VAL>R 	.ASCIZ	^MSG^7 	.EVEN .ENDCE .ENDM $IOER$     þM        .MACRO ARDOF$ OFFSET .MCALL OFFSET,RMS$LK ...TPC=0 	OFFSET	A$FILL,1 	OFFSET	A$FLG,1L 	OFFSET	A$AID,1E 	OFFSET	A$BKZ,1) 	OFFSET	A$VOL,2B 	OFFSET	A$ALN,1O 	OFFSET	A$AOP,1B 	OFFSET	A$AVL,2  	OFFSET	A$AVL2,2 	OFFSET	A$CVB,2N 	OFFSET	A$CVB2,2 	OFFSET	A$CNB,2  	OFFSET	A$CNB2,2 	OFFSET	A$NUS,2  	OFFSET	A$NUS2,2 	OFFSET	A$NVB,2S 	OFFSET	A$NVB2,2 	OFFSET	A$NXT,2L 	OFFSET	A$NXT2,2 	OFFSET	A$XBY,2I 	OFFSET	A$XBY2,2       	OFFSET	A$DEQ,2 
 	OFFSET	,2 	OFFSET	A$LOC,2E 	OFFSET	A$LOC2,2 	OFFSET	A$RFI,0M 	OFFSET	A$RFI0,2 	OFFSET	A$RFI1,2 	OFFSET	A$RFI2,2 	OFFSET	A$FILL2,12.E 	OFFSET	A$CRC,2E .IF IDN <OFFSET> <DEF$SZ>) 	RMS$L	AD$BLN,0B 	.MEXIT	 .IFF 	OFFSET	AD$BLN,0 .ENDCF .MACRO ARDOF$ OFFSET .ENDM ARDOF$ .ENDM ARDOF$     òM        	.MACRO	IFAOF$	OFFSETE) 	.MCALL	RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG2' 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IFABO ...TPC=0# 	OFFSET	C$BID,1,<BID - BKP1	  = %P>, 	OFFSET	C$BKP1,1" 	O      FFSET	C$NIRB,2,<NXT IRAB	  = %P>% 	OFFSET	F$UBSZ,1,<UBSZ - LCHN	  = %P>E 	OFFSET	F$LCHN,1% 	OFFSET	F$DVCH,1,<DVCH - FACC	  = %P>$ 	OFFSET	F$FACC,1& 	OFFSET	      ,4,<SPARE	      	  = %P> 	$EMSTG		 <            	  = %P>B! 	OFFSET	F$BDBP,2,<BDB PTR	  = %P> & 	OFFSET	F$IFAB,2,<NXT IFAB    	  = %P>( 	OFFSET	F$POOL,4,<PRIVATE BUF POOL = %P> 	$EMSTG		 <            	  = %P>F 	OFFSET	F$LMRN,2 	OFFSET	F$HMRN,2 ...TPC=...TPC-4Z( 	OFFSET	F$IDXP,2,<IDX DESC/BLK-SZ  = %P> ...TPC=...TPC-2P 	OFFSET	F$BLSZ,2( 	OFF      SET	F$KBSZ,2,<KEY BUFFER SIZE  = %P>% 	OFFSET	F$AVBN,1,<AVBN - AMAX	  = %P>O 	OFFSET	F$AMAX,1 ...TPC=...TPC-2V 	OFFSET	F$DVBN,2% 	OFFSET	F$FORG,1,<FORG - RATT	  = %P>P 	OFFSET	F$RATT,1& 	OFFSET	F$RSIZ,2,<RECORD SIZE 	  = %P>$ 	OFFSET	F$HVBN,2,<HI VBN    	  = %P> 	$EMSTG		 <            	  = %P>  	OFFSET	F$LVBN,2$ 	OFFSET	F$HEOF,2,<HI EOF BLK	  = %P>$ 	OFFSET	F$LEOF,2,<LO EOF BLK	  = %P>' 	OFFSET	F$FFBY,2,<1ST FREE BYTE	  = %P>E% 	OFFSET	F$BKSZ,1,<BKSZ - HDSZ	  = %P>T 	OFFSET	F$HDSZ,1 	OFFSET	F$MRS,2,      <MRS		  = %P><" 	OFFSET	F$DEQ,2,<DEQ	     	  = %P>& 	OFFSET	F$RTDE,2,<RTDE        	  = %P>" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	IF$BLNP 	.IFFE 	OFFSET	IF$BLN 	.ENDC .IF DF R$$TSTZ .IIF GT R$$TST-1 .MEXITN .ENDCV 	.MACRO	IFAOF$	OFFSET	 	.ENDM 	.ENDM	IFAOF$      M        	.MACRO	IFA$BT	DEF 	.MCALL	DEF= 	DEF	IF$BID,13 	DEF	BK$BUS,1B 	DEF	BK$IOP,2F 	DEF	BK$EOF,10 	DEF	BK$PRV,4  	DEF	BK$RWC,20 	DEF	BK$PAR,40 	DEF	BK$ACC,100F 	DEF	BK$ANI,200F 	DEF	FB$SH      R,200	 	.MACRO	IFA$BT	DEF 	.ENDM 	.ENDM	IFA$BT>     ~M        	.MACRO	IRAOF$	OFFSET ) 	.MCALL	RMS$L,OFFSET,STRU$B,STRU$E,$EMSTGN ...TPC=0' 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IRAB	" 	OFFSET	C$BID,1,<BID - BKP1	 = %P> 	OFFSET	C$BKP1,1! 	OFFSET	C$NIRB,2,<NXT IRAB	 = %P> $ 	OFFSET	R$IFAB,2,<PTR TO IFAB	 = %P>$ 	OFFSET	R$CBDB,2,<CURRENT BDB	 = %P>! 	OFFSET	R$NBDB,2,<NEXT BDB	 = %P>F  	OFFSET	R$LNRP,2,<LOW NRP	 = %P>! 	OFFSET	R$HNRP,2,<HIGH NRP	 = %P>A' 	OFFSET	R$INRP,1,<ID KEY REF/BNRP = %P>  	OFFSET	      R$KNRP,1 ...TPC=...TPC-2F 	OFFSET	R$BNRP,2# 	OFFSET	R$LRP,2,<LOW RP	    	 = %P>O 	OFFSET	R$HRP,2,<HIGH RP	 = %P>S" 	OFFSET	R$IRP,1,<ID KEY REF	 = %P> 	OFFSET	R$KRP,1E ...TPC=...TPC-2	 	OFFSET	R$BRP,2," 	OFFSET	R$IRRV,1,<ID - BCNT	 = %P> ...TPC=...TPC-12 	OFFSET	R$MBC,1  	OFFSET	R$BCNT,1  	OFFSET	R$LRRV,2,<LOW RRV	 = %P> ...TPC=...TPC-2	 	OFFSET	R$CSIZ,2! 	OFFSET	R$HRRV,2,<HIGH RRV	 = %P>$% 	OFFSET	R$NKAD,2,<KEY STG ADDR	 = %P>2! 	OFFSET	R$SPOS,2,<SIDR-POS	 = %P>1" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU      $E 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	IR$BLN  	.IFF	 	OFFSET	IR$BLN 	.ENDC .IF DF R$$TST$ .IIF GT R$$TST-1 .MEXITO .ENDC$ 	.MACRO	IRAOF$	OFFSET> 	.ENDM 	.ENDM	IRAOF$T     M        	.MACRO	IRA$BT	DEF 	.MCALL	DEFD 	DEF	IR$BID,11 	DEF	BK$BUS,12 	DEF	BK$IOP,2, 	DEF	BK$EOF,10 	DEF	BK$ASY,200R 	DEF	BK$FND,100% 	DEF	BK$IDX,100- 	DEF	BK$BLK,40 	DEF	BK$SEQ,20 	DEF	BK$SSK,10 	DEF	BK$DUP,4E 	.MACRO	IRA$BT	DEF 	.ENDM 	.ENDM	IRA$BT$     r M        .MACRO KDX$BT DEFO
 .MCALL DEF 	DEF	P      R$NEX,1F .MACRO KDX$BT DEFS .ENDM KDX$BT .ENDM KDX$BT     øM        	.MACRO	KDXOF$	OFFSETI0 	.MCALL	$POSIZ,RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0) 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	PDXDSCR* 	OFFSET  K$NLVB,2,<LOW VBN OF NXT DESC %P>+ 	OFFSET  K$NHVB,2,<HIGH VBN OF NXT DESC %P>0+ 	OFFSET  K$NBYT,2,<BYTE POS OF NXT DESC %P>$ 	OFFSET	K$IAN,1,< AREA #'S	%2P>$ 	OFFSET	K$LAN,1S 	OFFSET	K$DAN,1, 	OFFSET	K$LVL,1T) 	OFFSET  K$IBKS,1,<IDX/DATA BKT SIZE  %P>  	OFFSET  K$DBKS,1E ...TPC=...TPC-1D 	O      FFSET	P$DBKS,1# 	OFFSET	K$LVBN,2,< LOW ROOT VBN	%P>D" 	OFFSET	K$HVBN,2,< HI ROOT VBN	%P>( 	OFFSET	K$FLGS,1,< INDEX FLAGS-FILL  %P> ...TPC=...TPC-1G 	OFFSET	P$FLGS,1 	OFFSET	K$DTP,1$" 	OFFSET	K$NSEG,1,< #SEG - NULL	%P> 	OFFSET	K$NULL,1( 	OFFSET	K$KYSZ,1,<TOTAL KEY SIZE/KRF %P> 	OFFSET	K$KEY,1F( 	OFFSET	K$MINL,2,<MIN LENGTH RECORD  %P>% 	OFFSET	K$IFIL,2,< IDX FILL BYTES	%P>E& 	OFFSET	K$DFIL,2,< DATA FILL BYTES	%P> 	$POSIZ OFFSET,K! 	OFFSET  K$KNM,32.,< KEY NAME %P>O 	OFFSET	K$LDVB,2 	OFFSET	K$HDVB,2       	OFFSET	,14. 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	KD$BLNO 	.IFF$ 	OFFSET	KD$BLN 	.ENDC4 	OFFSET  P$AVBN,1,<VBN OF AREA DESC/# AREA DESCS %P> 	OFFSET  P$AMAX,1L- 	OFFSET	P$DVBN,2,<DVBN=FIRST DATA BKT VBN=%P>  	OFFSET	P$DVB2,2% 	OFFSET	P$LMRN,2,<MAX REC NUMBER =%P> * 	OFFSET	P$HMRN,2,<HIGH-MAX REC NUMBER =%P>" 	OFFSET	P$LEOF,2,<LOW-EOF VBN =%P># 	OFFSET	P$HEOF,2,<HIGH-EOF VBN =%P>F% 	OFFSET	P$VERN,2,<VERSION NUMBER =%P>O" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E .IF DF R$$TSTO .IIF GT R$$TST-1 .MEXIT$ .ENDC        	.MACRO	KDXOF$	OFFSET< 	.ENDM 	.ENDM	KDXOF$L     b M        .MACRO IDX$BT DEFN
 .MCALL DEF .MACRO IDX$BT DEFR .ENDM IDX$BT .ENDM IDX$BT     M        	.MACRO	IDXOF$	OFFSETF0 	.MCALL	$POSIZ,RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG ...TPC=0) 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IDXDSCH* 	OFFSET	I$IBKS,1,<IDX/DATA BKT SIZE  = %P> 	OFFSET	I$DBKS,1% 	OFFSET	I$NXT,2,<NXT IDXDSC	    = %P>E( 	OFFSET	I$LVBN,2,<LOW ROOT VBN	    = %P>' 	OFFSET	I$HVBN,2,<HI ROOT VBN	    = %P>O ...TPC=...TPC-41 	OFFSET	I$UDAR      ,1 	OFFSET	I$IDAR,1 	OFFSET	I$LDAR,1
 	OFFSET	,1* 	OFFSET	I$FLGS,1,<INDEX FLAGS-FILL   = %P> 	OFFSET	I$DTP,1B' 	OFFSET	I$NSEG,1,<#SEG - NULL	    = %P>  	OFFSET	I$NULL,1* 	OFFSET	I$KYSZ,1,<TOTAL KEY SIZE/KRF = %P> 	OFFSET	I$KEY,1E* 	OFFSET	I$MINL,2,<MIN LENGTH RECORD  = %P>$ 	OFFSET	I$IFIL,2,<IDX FILL	    = %P>% 	OFFSET	I$DFIL,2,<DATA FILL	    = %P>  	$POSIZ OFFSET,I* 	OFFSET	      ,4,<                   = %P># 	$EMSTG		 <                   = %P>< 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	ID$BLNO 	.IFF$ 	O      FFSET	ID$BLN 	.ENDC" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E .IF DF R$$TSTN .IIF GT R$$TST-1 .MEXITO .ENDC$ 	.MACRO	IDXOF$	OFFSET1 	.ENDM 	.ENDM	IDXOF$      $M        .MACRO BKT$BT DEF<
 .MCALL DEF 	DEF	BC$LBK,1O 	DEF	BC$ROT,2  	DEF	IC$KCP,42 	DEF	IC$EMP,10 	DEF	IC$NUL,20 	DEF	DC$DEL,4D 	DEF	DC$RRV,10 	DEF	DC$NPS,20 	DEF	DC$KDL,40 	DEF	DC$NCP,100  ;	DEF	DC$DEL,4 	DEF	DC$REC,10 .MACRO BKT$BT DEF> .ENDM BKT$BT .ENDM BKT$BT     hM        .MACRO BKTOF$ OFFSET .MCALL OFFSET  ...TPC=0       	OFFSET	B$CHK,1N 	OFFSET	B$TAA,1F 	OFFSET	B$ADR,2U 	OFFSET	B$NBY,2N 	OFFSET	B$NID,11 	OFFSET	B$LID,1  	OFFSET	B$NBK,4F 	OFFSET	B$LEV,1N 	OFFSET	B$BCB,1 	OFFSET	B$REC,0O 	OFFSET	S$BHD,0A ...TPC=0 	OFFSET	B$PS,0 	OFFSET	B$IRCB,1 	OFFSET	B$BPTR,0 	OFFSET	S$IDXR ...TPC=0 	OFFSET	B$PS,0 	OFFSET	B$DRCB,1 	OFFSET	B$ID,1 	OFFSET	B$RPTR,5 	OFFSET	B$RHDR,0 	OFFSET	S$UDRF ...TPC=0 	OFFSET	B$PS,0 	OFFSET	B$DRCB,1 	OFFSET	B$ID,1 	OFFSET	B$SIZ,2  	OFFSET	B$KEY,0S 	OFFSET	S$SIDR .MACRO BKT      OF$ OFFSET .ENDM BKTOF$ .ENDM BKTOF$     ÒM        	.MACRO	BDBOF$	OFFSETE) 	.MCALL	RMS$L,OFFSET,STRU$B,STRU$E,$EMSTG, ...TPC=0& 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	BDB  	OFFSET	B$WK1,2,<WORK AREA	= %P> 	OFFSET	B$NXT,2,<NEXT BDB	= %P>1 	OFFSET	B$OWN,2,<OWNER		= %P>D# 	OFFSET	B$NUMB,2,<#BYTES USED	= %P>	# 	OFFSET	B$WAIT,2,<WAIT THREAD	= %P>P# 	OFFSET	B$FLGS,1,<FLAGS - USE	= %P>F 	OFFSET	B$USE,1E 	OFFSET	B$LVBN,2,<LOW VBN	= %P>E  	OFFSET	B$HVBN,2,<HIGH VBN	= %P># 	OFFSET	B$SIZE,2,<SIZE OF BUF	= %P>T      # 	OFFSET	B$ADDR,2,<ADDR OF BUF	= %P>$" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E 	.IF	IDN	<OFFSET>,<DEF$SZ> 	RMS$L	BD$BLN$ 	.IFF  	OFFSET	BD$BLN 	.ENDC .IF DF R$$TSTT .IIF GT R$$TST-1 .MEXIT, .ENDCR 	.MACRO	BDBOF$	OFFSET, 	.ENDM 	.ENDM	BDBOF$F     ä M        	.MACRO	BDB$BT	DEF 	.MCALL	DEFS 	DEF	BD$VAL,1O 	DEF	BD$DRT,2< 	DEF	BD$IOP,4P 	DEF	BD$LCK,10 	DEF	BD$DYM,20 	DEF	BD$PRM,40 	DEF	BD$WFO,100E 	DEF	BD$ELK,200B 	.MACRO	BDB$BT	DEF 	.ENDM 	.ENDM	BDB$BT      ðM        	.MACRO	IMAOF$	O      FFSETF# 	.MCALL	OFFSET,STRU$B,STRU$E,$EMSTGI ...TPC=0) 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$B	IMAREAF, 	OFFSET	Y$BDBH,4,<BDB BLOCK POOL       = %P>% 	$EMSTG		 <                     = %P>1, 	OFFSET	Y$IRAH,4,<IRAB BLOCK POOL      = %P>% 	$EMSTG		 <                     = %P>., 	OFFSET	Y$IFAH,4,<IFAB/IDX BLOCK POOL  = %P>% 	$EMSTG		 <                     = %P>B, 	OFFSET	Y$KEYH,4,<KEY STRING BUF POOL  = %P>% 	$EMSTG		 <                     = %P>	) 	OFFSET	Y$BFLH,4,<BUFFER POOL	      = %P> % 	$EMSTG		 <                           = %P>L, 	OFFSET	Y$WIN0,1,<MAPPING WINDOW-0-1   = %P> 	OFFSET	Y$WIN1,1, 	OFFSET	Y$DREG,2,<DYNAMIC REGION NUMBER= %P>, 	OFFSET	Y$DYLH,4,<DYNAMIC MAPPED POOL  = %P>% 	$EMSTG		 <                     = %P>B, 	OFFSET	Y$FATL,2,<@FATAL ERROR ROUTINE = %P>, 	OFFSET	Y$ENSP,2,<UNADJ ENTRY SP       = %P>) 	OFFSET	Y$CTXP,2,<CONTEXT PTR	      = %P> ) 	OFFSET	Y$STKR,2,<STACK RESET	      = %P>F, 	OFFSET	Y$WKQH,2,<WORK QUEUE HEAD      = %P>, 	OFFSET	Y$WKQT,2,<WORK QUEUE TAIL      = %P>+ 	OFFSET	Y$SYSV,2,<SYSTEM STA      TUS	      = %P> , 	OFFSET	Y$IFAB,2,<IFAB LIST            = %P>, 	OFFSET	Y$RECN,2,<@REC-NUM TO RFA SUBR.= %P>- 	OFFSET  Y$AUTO,4,<AUTO LOAD CALL       = %P>P% 	$EMSTG		 <                     = %P> ( 	OFFSET	Y$QIO,24.,<QIO DPB SCRATCH AREA> ...TPC=Y$QIO 	OFFSET	Y$DIC,2N 	OFFSET	Y$IOFC,2 	OFFSET	Y$LCHN,2 	OFFSET	Y$EFPI,2 	OFFSET	Y$IOST,2 	OFFSET	Y$AST,2T 	OFFSET	Y$PARM,12.% 	$EMSTG		 <DIC/DPB SIZE         = %P>E 	$EMSTG		 <IO FUNC	      = %P># 	$EMSTG		 <LUN/NOT USED	      = %P>E 	$EMSTG		 <EFN/PRI	            = %P> 	$EMSTG		 <IO STAT	      = %P> 	$EMSTG		 <AST ADDR	      = %P>E 	$EMSTG		 <P0		      = %P> 	$EMSTG		 <P1		      = %P> 	$EMSTG		 <P2		      = %P> 	$EMSTG		 <P3		      = %P> 	$EMSTG		 <P4		      = %P> 	$EMSTG		 <P5		      = %P>$ 	$EMSTG		 <IO EXEC TRANSFER VECTORS>* 	OFFSET	Y$TSTA,2,<START THREAD	      = %P>' 	OFFSET	Y$READ,2,<READ FUNC	      = %P>E) 	OFFSET	Y$WRITE,2,<WRITE FUNC	      = %P> * 	OFFSET	Y$SPFN,2,<SPECIAL FUNC	      = %P>' 	OFFSET	Y$FILE,2,<FILE FUNC	      = %P>T% 	OFFSET	Y$WA      IT,2,<IO WAIT	      = %P> * 	OFFSET  Y$GETS,2,<GET SEGMENT	      = %P>" 	.IIF	DIF,<OFFSET>,<DEF$SZ>,STRU$E .IF DF R$$TST  .IIF GT R$$TST-1 .MEXIT	 .ENDC= 	.MACRO	IMAOF$	OFFSET  	.ENDM 	.ENDM	IMAOF$	      M        	.MACRO	IMA$BT	DEF 	.MCALL	DEF  	DEF	SY$AST,1E 	DEF	SY$INI,2F 	DEF	SY$ELK,4T 	.MACRO	IMA$BT	DF% 	.ENDM 	.ENDM	IMA$BTE     âM        	.MACRO  $LOCALS
 	HA.BLS=13 	HA.UI=1 	HA.FP=2	 	HA.CHU=3N	 	HA.UAT=4 	 	HA.NAM=5=	 	HA.TYP=6E	 	HA.VER=7< 	HA.NAW=10.  	HA.EXT=14.F
 	EX.AL      L=20	 	AL.VBN=1 	 	AL.APX=2 	 	AL.LBN=4G
 	S$PTRS=8. 	S$BDB=0 	S$NAM=2 	S$FNB=4 	S.$SDC=3*4$ 	S$ATR=6
 	S$ESS=64. 	FA.ENB=100000 	FA.WCK=20000  	FA.SEQ=40000	 	FA.LCK=400  	FA.XLK=4000 	FA.DLK=1000 	FA.RWD=4000 	FA.POS=10000T 	FA.FLL=2000 	FA.NEF=40000S 	.MACRO $LOCALS, 	.ENDM $LOCALS 	.ENDM $LOCALS     4M        .MACRO TRVOF$ OFFSET .MCALL OFFSETR ...TPC=0 	OFFSET  TV$OPE,8. 	OFFSET  TV$CRE,8. 	OFFSET  TV$CLO,8. 	OFFSET  TV$CON,8. 	OFFSET  TV$DIS,8. 	OFFSET  TV$GET,8. 	OFFSE      T  TV$PUT,8. 	OFFSET  TV$UPD,8. 	OFFSET  TV$DEL,8. 	OFFSET  TV$FINM .MACRO TRVOF$ OFFSET .ENDMS .ENDM TRVOF$     8M       6 	.MACRO	GCMLB$	MAXD,PRMPT,UBUF,LUN,PDL,SIZE,?PDL1,?BUF 	.MCALL	FAB$B,RAB$B,NAM$BW $$$CMB:	.WORD	1,$$$RAB 	.WORD	1,$$$FAB. $$$RAB:	RAB$BA 	R$FAB	$$$FAB. 	R$RAC	RB$SEQ. 	RAB$E $$$FAB:	FAB$B  	F$DNA	$$$DNA+3V 	F$DNS	7 	F$FNA	$$$FNAR 	F$FNS	3 	F$FAC	FB$GETP 	.IF	NB	<LUN>T
 	F$LCH	LUN 	.IFFT 	F$LCH	1 	.ENDC 	F$NAM	$$$NAMF 	F$ORG	FB$SEQ  	F$RAT	0 	F$RFM	FB$VARE       	FAB$E $$$NAM:	NAM$BT
 	N$ESS	34. 	NAM$E $$$DNA:	.ASCII	/SY:CMI.CMD/M $$$FNA:	.ASCII	/CMI/
 	.BLKB	29. 	.MCALL	GCMLD$ 	GCMLD$ $ 	.BYTE	0,GE.COM!GE.IND!GE.CLO!GE.CON 	.BLKW	4 	.BYTE	-1,MAXD 	.IF B	<PDL> 	.WORD	PDL1	 	.IFF,
 	.WORD	PDL 	.ENDC 	.IF NB <UBUF> 	.WORD	UBUF$ 	.IFF 
 	.WORD	BUF 	.ENDC 	.IF	NB,<SIZE> 	.WORD	SIZE,0N 	.IFFF 	.WORD	80.,0 	.ENDC $$$=.S 	.ASCII	<^O 15> <^O 12>N 	.IF NB	<PRMPT>L 	.ASCII	/PRMPT>/ 	.IFFN 	.ASCII	/   >/ 	.ENDC .=$$$+6  G.LPDL=<MAXD+1>*<10+<5*2      >> 	.IF B	<PDL> PDL1:	.BLKB	G.LPDL 	.ENDC 	.IF B	<UBUF>I 	.IF	NB,<SIZE> BUF:	.BLKB	SIZE+2/ 	.IFFB BUF:	.BLKB	82. 	.ENDC 	.ENDC GE.LEN=.-$$$CMBE 	.ENDM	GCMLB$C     †M       & 	.MACRO	GCML$	NAME,ADPR,LNPR,UBUF,SIZE 	.MCALL	GCMLD$,LDR0$ 	GCMLD$	DEF$LU 	LDR0$	NAMEU 	.IF NB	<LNPR> 	MOV	LNPR,G.PSDS(R0) 	.IIF B	<ADPR>, .ERROR& 	.IIF NB	<ADPR>,	MOV	ADPR,G.PSDS+2(R0) 	.ENDC 	.IIF B	<LNPR>,	CLR	G.PSDS(R0) 	.IF NB	<UBUF> 	MOV	UBUF,G.RBUF(R0) 	.ENDC 	.IF NB	<SIZE> 	MOV	SIZE,G.BFSZ(R0) 	.EN      DC 	.GLOBL	$RGCM1 	JSR	PC,$RGCM1 	.ENDM	GCML$     r M        	.MACRO	RCML$	NAME 	.MCALL	LDR0$F 	LDR0$	NAMEB 	.GLOBL	$RGCM2 	JSR	PC,$RGCM2 	.ENDM	RCML$     p M        	.MACRO	CCML$	BLKC 	.MCALL	LDR0$N
 	LDR0$	BLK 	.GLOBL	$RGCM3 	JSR	PC,$RGCM3 	.ENDM	CCML$     n M        	.MACRO	GCMLD$	GBL 	.MCALL	GCML$D 	GCML$D	GBLR 	.MACRO	GCMLD$	X 	.ENDM 	.ENDM	GCMLD$      €M        	.MACRO	GCML$D	GBL 	.IF IDN	<GBL>,<DEF$G>" 	.GLOBL	G.FAB,G.DSTR,G.FSTR,G.PPTR" 	.GLOBL	G.ERR,G.MODE,G.PSDS,      G.CMLD# 	.GLOBL	G.RSTS,G.FSTS,G.BFSZ,G.RBUFG) 	.GLOBL	GE.COM,GE.IND,GE.CLO,GE.LC,GE.LEN 1 	.GLOBL	GE.IOR,GE.OPR,GE.BIF,GE.MDE,GE.BFS,GE.EOFP 	.ENDC 	.MCALL	FABOF$,RABOF$,NAMOF$ 	FABOF$	RMS$LL 	RABOF$	RMS$L	 	NAMOF$	RMS$LB
 G.RAB	= 10 G.RSTS	= G.RAB+O$STS G.RSTV	= G.RAB+O$STV G.FAB	= G.RAB+RB$BLN G.FSTS	= G.FAB+O$STS G.DSTR	= G.FAB+FB$BLN+NB$BLN G.FSTR	= G.DSTR+10.G G.ERR	= G.FSTR+32. G.MODE	= G.ERR+1 G.PSDS	= G.ERR+2 G.CMLD	= G.ERR+6 G.PPTR	= G.CMLD+6F G.RBUF	= G.PPTR+2	 G.BFSZ	= G.RBUF+2,       G.ISIZ	= 20. G.DPRM	= G.ERR+G.ISIZG GE.LEN	= 414
 GE.COM	= 1
 GE.IND	= 2
 GE.CLO	= 4
 GE.LC	= 10 GE.CON	= 20E GE.MCC	= 40E GE.IOR	= -1  GE.OPR	= -2L GE.BIF	= -3F GE.MDE	= -4B GE.BFS	= -5R GE.EOF	= -10.N 	.MACRO	GCML$D	X 	.ENDM 	.ENDM	GCML$DO$STS G.RSTV	= G.RAB+O$STV G.FAB	= G.RAB+RB$BLN G.FSTS	= G.FAB+O$STS G.DSTR	= G.FAB+FB$BLN+NB$BLN G.FSTR	= G.DSTR+10.G G.ERR	= G.FSTR+32. G.MODE	= G.ERR+1 G.PSDS	= G.ERR+2 G.CMLD	= G.ERR+6 G.PPTR	= G.CMLD+6F G.RBUF	= G.PPTR+2	 G.BFSZ	= G.RBUF+2,          s:3N^Á› 8$     œ    	±Œ:    ¯”L      ( Ðzh zh  Ô2 dh R  h  Ry:h Rzh ?T@h  mzh
 ÑxZh ÙüXh ¯”             ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡  œ          ÑÑY^Á› 8$€Ô          Õ
c^Á› 8$         ÕÀ]    tŽ€»   ¯”L  Ðz@  z@   Ä%x@  <&%t@  ô' q@  Ô2 d@  $9Ì@   $9s;@  ´:a	@  ´:òs@  ´:ô@  ´:2“@   T;z@  R  @  Ry:@  Rz@  ?T@@   ahïL@  dhl@  hhÐ@  hh`;@  nhH…@   mz@  ÑxZ@  ÙüX@  €@  aì@   aìy@  nH@  p@  s<}@  s ‚@   ‚L	@  ‚@  ‚Ny@  ‚ðy@  ‚Â@   ©ˆw@  :©@  :©Ï_@  J©¼	@  P©\@   [©(}@  a© }@  i©€‰@  s©À@  Ýª K@   A«Äq@  ¡«@w@  Á«H£@  ã«fg@  ã«gg@   é«@Q@  ë«z}@  û¬Hg@  ù¯üX@  °úp@       (      ºº h¨Îòh† Î2gh„ ì€phˆ %–ThH%,¯h†ÁH£hŠ«ÈKhê z""h4 ŒAh)hfŒA‡)h\Ì^|3hð Ì^ qhì Ì^¤’hî  aÎhè	avLhº	a\ghx Óf Zh–äfc±hè  4k€hmy:h¬m²hªq hKqÎh0 þ¬¯yì  p©Ó(     (             TI   =     ! ‡ )   & u7ò K    âGÔ4Yæ  Ô4Y 
ò âæ L  L À            |³ƒ:  f  f À     n(   k    
 Ü            n ´:ôÜ  Œ             €
                 
´:a	€
"´:ô ²   À                H J Y  (***TRAX DEMO* À  Ø **  à  à     
               ÎZ&    #               ƒ  æ* ÿˆ†÷	7
êÿ÷ÎÿÞÿ÷Æÿ *  ,Úÿæ& ÿˆ†÷	ú÷  Dÿæ  ÿˆ†÷	èæ ÿˆ &   &  R†÷	Üæ¨ ÿˆ†÷	Ð÷	ô÷	@HINS [300,3 ¨  x0]HRDCPY/RUN=REM/TASK=HRDCPY  – –  ÷úÿ/æt ÿˆ†÷	Šæ ÿˆ†÷	~æ@ ÿˆ t  &@  ¼×-    æZ ÿˆ†÷	dæ6 ÿˆ×-    ùæ"  s©ÀT;zZ 6  s©À"T;z("  âÿˆ†÷	Jæ ÿˆ†÷	>÷ šÿ‡ ÷	² ÷Üþ?   ÷% Øþ	÷	  ÷	  ÷	  ÷	   ÷% ¾þ÷	   m      zRzÐzz(?T@ .÷% °þ÷	  ÷% ¢þ÷	  ÷% ”þ €ÑxZ T÷’þ÷	  ÷	  ÷|þ÷ zþ÷xþ	·
nþ×- Ry:R   zjþ ÷ `þ÷	^÷Rþ7
Lþ÷	D÷
Fþ÷  Bþ>þæ ÿˆ†÷	„
w Jÿæ ÿˆ†÷	t
ÃÆ ÷	 
  &Æ  Æò÷	„÷	÷	„÷	b÷	"÷	Ø‡      æ ÿˆ†÷	(
æ. ÿˆ†÷	
æsÿˆAPPLICAT  .  &ION NAME?APPLICATION NOT FOUND! APPLI LCATION NAME?  Z Z  À Á÷	àþˆt÷•   ‡ þˆ€÷  Üÿ‡  tP©\ €$A«Äq €þˆ¶ÄÒÿÄå  7  Èÿ7 î- Ÿ- ¦ ¶ ¦      ÷®ÿë÷ÿÿ¦ÿ‡ ÷ ÿ÷†ÿ÷À¦ÿ÷-d †ÿ$¦ÿ Ì `Ø÷-^`Ô÷-X`Ð÷ `¢÷ `žþˆö7Š  ```©ˆw ` Á«H£ `&ö ò  ‡ ÷`ÿÀ Á0÷	@¯‡  P©\0    ‚<&%t     . .  ô' qÄ%x
 l l/Ol|³GOl|³Š  KOl|³Œ…Ol|³  ŠŒ ª ª ælÿˆ×-    ÷ìÿ)ærÿˆ†÷	hæ„ ls©À$9s;r(„ Ðÿˆ†÷	\æ|ÿˆ×-    ù÷% ¾ÿ÷	  7
´ÿ |s©À$9s;$ù¯üX ö×-    ÷	0÷%  ÿ÷ ˜ÿ‡  s©À
$9Ì $ $Y  V   P Pþˆ\÷•   ‡ æ ÿˆ†÷	Ìþˆz÷        Ä÷   \P©\ z"ã«fg(ã«gg vÀ‡ þˆ„7Š  ‡ ÷–ÿ, À*Á÷	  Ð•   
„P©\* $a© } œÂ ÷	  È• Ã$÷	
‡ Äÿ        Y  AU 
é«@Q$ ÂP   Î Î HRS  Ô ÔÁÞÿw ØÿÁe< ÁíÎÿ÷ÌÿÈÿw`Âÿ÷å< ºÿ·
 ú¼ÿ÷%< ¶ÿ·
²ÿ7
¬ÿÀÄÁ¦ÿ
÷	  Ð•:  Ä$:©  Á”ÿ÷%
 ŽÿÐ•0 
÷	  ŠÃ¼÷	z‡ Y!  :©¼ F(*      *  T TXXXXÅPþˆÀÀ  À  ð   7   ð   
PÀ¡«@wë«z}aì"ë«z}(s<} zð  ð5    ð5   aìy‚L	‚
s ‚‚ðy‚Ny
 Ž        ð5        <=     Ý

 s ‚
‚Âs ‚phhÐ"aì ´   ‡ ÄTÅPT%L#ÄTÅPL nHnH TP"T&P Út  Íõ 
÷ IXÿ÷DLTÿ÷E PÿÀ  HA÷	  A÷	  ÃB÷	¤‡ Y! 6CPU:      H
[©(}[©(}B &     * *                Àäýp< wäÿÀ  
7rÚÿ "û¬Hg P7ÜÿÁÆýwpÆýÁmÀý@ÀíÆÿÀm¾ÿw¼ÿ7ºÿÁ v¾ÿÀ¼ÿÁí²ÿ€Àí®ÿ÷¬ÿ¦ÿ÷¨ÿ¢ÿ7r˜ÿ
pd  œ7rÿÁd àW d Á
À!
÷	  Ð•% Ð• !":© Â  Ð•  È• Ã÷	æ‡   Ü Ü      Y! ?POOL=                        ÁÖ (Ö 

	
þˆ*Ä  	t" †	 !m ¡
Q$õ *J©¼	 (‡ ÀìÄÚ7¦ÿ
÷	  Ð•: 7–ÿ
 ìÚ:© N÷	  Ð•: 7†ÿ
÷	  Ð•  Ð•  È• Ãâ÷	 :©:©&â tD‡                    Y! SCACHE=    š                     NO CALLSþˆÄ÷•  $Ä À  ‡ ÷Àÿ¦ÿ÷†ÿÀ `Â²ÿ÷	º7˜ÿÀ `÷	 P©\¦ÿ†ÿdhl `&ahïL ` æ®7Žÿ÷d Šÿ÷í‚ÿ„ÿ÷í~ÿ~ÿ÷zÿ7
tÿ÷
nÿ 	À `Àípÿ÷ `jÿÂ `Âí^ÿ·Xÿ÷ `Tÿþˆ6	7Š hh`; `hh`; `nhH… ` nhH… `&6	 2	  ‡ ÷	\7DÿÀ—Á2ÿ
÷	        Ð•: Á&ÿ
÷	 P©\—:© X	  Ð•: Áÿ
÷	  ÷ÿÐ•  Ð•  Áÿ
÷	 :©:© ~	  Ð•: Áúþ
÷	  Ð•  Ð•  Ð•  Ð•  È• Ã :©:© ¤	Œ÷	 ÷ÐþÃ®÷	 ‡ ¦Â”Â% ÷	 ù Œ® Ê	‚‡ ¿²ö·
®ö·
¬ö÷% ¦ö‚÷	 ‡ ÷  –öæ ð	x ÿˆ÷êö÷˜÷÷ àø÷|öÜøæ6 ÿˆ†÷	 x "6  
÷ öæ" ÿˆ†÷	
æ ÿˆ†÷	þ÷®ö "   <
÷V÷÷ žøæ6 ÿˆ†÷	à÷ Êõæ" ÿˆ† 6 $"  b
÷	Îæ ÿˆ†÷	Â7
rö7
ö‡  
  €
 €
Î¥ æ3ÿˆ÷ NöÖæsÿˆCOMMAND ?IL ¦
LEGAL COMMAND! COMMAND?PRINT OPTI      ON N Ì
OT IMPLEMENTED.À Áš
÷	`÷%HEB÷	 š
 ò
  ÷	ðþñ÷%AP0÷	Vøw 
÷%PR ÷	‚öw  Ô2 d ú ÷%NP7
pö÷ º÷æ6 ÿˆ†÷	üw Ø ÷% 6  >FRî À0Àe 
”Áå0 ÁW 	 ×p
 C` 0 dô÷zõT÷%EX¾ ÷ö	÷ f÷æ6 ÿˆ†÷	 "6  Š¨æ3ÿˆ÷ Jõ÷%ME’ ÷ @õ÷	  4÷%SU "Ry: °~ ÷ ,õ,÷%MSn ÷ õ$÷%TS^ ÷ Ö õ÷%TRN ÷	  ÷ øô÷%CY: ÷  ÙüX üèô·
èôÀ Á¤
÷	8 w æþ‡          ¤
 "                8 8Y6  J Y7  :  ÷âÿ÷  Äÿ÷8Èÿ÷  ´:ô"      8 ^Äÿæÿˆ†÷	È 
w°ÿ‚
W¤ üÂ
·¤ÿ÷ªÿ  „÷  Œÿ÷•0 ”ÿæÿˆ†÷	– À'÷  ˆÿ÷ ´:2“ ª  „ÿ÷  €ÿ÷vÿ÷@bÿ÷ ^ÿæÿˆ†÷	 @" Ðb ÷  @ÿ÷0Dÿ÷ @ÿæÿˆ†÷	D ‡ ? FA ´:òs0 öTAL DIRECTIVE ERROR - ERROR CODE IS -   " "  LOCATION:   4 4Á  À
÷	  À.‚
÷	   s©À:©.:©Ï_ p©Ó         Ü   òB          ´:ô    Ü     ò     P Pæ  ÿˆæ3ÿˆÁ%'Ð•  Á%èÐ•  Á%d  p©Ó   vÐ•  Á%
 Ð•  ÁÐ•0 
÷	  ‡ Ád ÷	  :©   4    œ  @÷	  ‡ 
Ew
 WuöÿÅEÀÿ‡  Ýª Ki©€‰ 4          Õ
cNÁ› 8$        DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12TABLE OF CONTENTS     4-    2	MCALLS - DIRECTIVE DPBS     5-  122	DATA AREA     6-  177	ONE TIME ONLY CODE     7-  237	SPAWN PRINT TASK     8-  289	MAIN LOOP    10-  417	OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    11-  529	BATCH/PRINT QUEUES INITIALIZATIONS    12-  646	DISPLAY DATE AND TIME    13-  696	DISPLAY TOTAL UPTIME FOR TRAX DEMO    14-  782	DISPLAY NAME OF NEXT RUNNABLE TASK    15-  879	DISPLAY CPU USAGE COUNT    16- 1017	DISPLAY       POOL INFORMATION    17- 1088	DISPLAY CACHE INFORMATION    18- 1220	I/O ROUTINES    20- 1343	COMMAND PROCESSOR ROUTINES    21- 1545	COMMUNICATION WITH USER ROUTINE    22- 1667	DIRECTIVE ERROR ROUTINE    23- 1705	MISCELLANEOUS ROUTINESDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 4      1						.TITLE	DEMO PROGRAM FOR TRAX (ROOT MODULE)      2						.SBTTL	MCALLS - DIRECTIVE DPBS      3						.NLIST	BEX      4      5      6					;****************************************      7					;      8	      				;	ASSEMBLY CONTROL VARIABLES      9					;     10					;****************************************     11     12     13		000000 				$$PRI=0     14     15     16     17					;**************************************************     18					;     19					;	M A C R O   C A L L S     20					;     21					;**************************************************     22     23     24						.MCALL	ALUN$,CLEF$,CRAW$,CRRG$,DIR$     25						.MCALL	GTIM$,MRKT$,RCVD$,SDAT$,SETF$     26						.MCALL	SPWN$,SRDA$,STSE$,WTSE$     27           28						.MCALL	ASTX$S,ENB$S,EXIT$S,INH$S,SWITCH$     29     30						.MCALL	QIOW$,QIOW$C,QIO$C     31     32						.MCALL	ASRDF$,HDRDF$,PCBDF$,RDBBK$,WDBBK$     33     34     35     36					;**************************************************     37					;     38					;	D I R E C T I V E   D P B   B L O C K S     39					;     40					;**************************************************     41     42     43	000000				ALUN:	ALUN$	1,TI,0		;ASSIGN LOGICAL UNIT NUMBER TO TERMINAL     44     45	000010				CLEAR:	CLEF$	6	      	;CLEAR EVENT FLAG     46     47	000014				GETIME:	GTIM$	TIMBUF		;GET TIME     48     49	000020				MRKTIM:	MRKT$	2,1,2		;MARK TIME (ONE SECOND)     50     51	000032				SETFLG:	SETF$	6		;SET EVENT FLAG     52     53	000036				STOP:	STSE$	2		;STOP AND WAIT FOR EVENT FLAG     54     55	000042				WAIT:	WTSE$	6		;WAIT FOR SINGLE EVENT FLAG     56     57DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 4-1MCALLS - DIRECTIVE DPBS     58     59     60					;*****************************************      **************************     61					;     62					;	D I R E C T I V E S   F O R   H A R D C O P Y   O P T I O N     63					;     64					;*******************************************************************     65     66     67						.IF  DF	$$PRI     68     69     70	000046				WINDOW:	CRAW$	WDB		;CREATE A WINDOW AND ATTACH TO IT     71     72	000052				REGION:	CRRG$	RDB		;CREATE A SHARED DATA REGION     73     74	000056				RCVDAT:	RCVD$	,DAT		;RECEIVE DATA     75     76	000066				SEND:	SDAT$	HRDCPY,DAT+4	;SE      ND DATA     77     78	000100				SPAWN:	SPWN$	HRDCPY,,,300,30	;SPAWN HARDCOPY TASK     79     80	000132				SPAWN2:	SPWN$	...INS,,,300,30,4,,,CMDLIN,CMDLEN  ;SPAWN HARDCOPY TASK     81     82	000164				SRDA:	SRDA$	PRTAST		;SPECIFY RECEIVE DATA AST     83     84						.ENDC     85     86     87     88					;**************************     89					; CURSOR CONTROL CHARACTERS     90					;**************************     91     92		000033 				ESC=33			;ESCAPE CHARACTER     93		000131 				CD=131			;CURSOR DISPLAY     94      		000112 				ES=112			;ERASE TO END OF SCREEN     95		000113 				EL=113			;ERASE TO THE END OF THE LINE     96		000110 				HO=110			;HOME CURSOR     97     98     99					;***********************************    100					;    101					;	O U T P U T   D P B S    102					;    103					;***********************************    104    105    106	000170				OUTPUT:: QIOW$ 	IO.WAL,1,12,0,STATUS,,<0,0,0>    107    108		000172'				DSFUN=OUTPUT+Q.IOFN	;ADDRESS OF FUNCTION CODE    109		000204'				BUFPTR==OUTPUT+Q.IOPL	;ADDRE      SS OF OUTPUT BUFFER    110		000206'				BUFCTR==OUTPUT+Q.IOPL+2	;ADDRESS OF BYTES IN BUFFER    111    112    113	000220				IOATA:	QIOW$	IO.ATA,1,1,,,,<CMDAST>	;ATTACH TERMINAL    114DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 4-2MCALLS - DIRECTIVE DPBS    115	000250				IOCLR:	QIOW$	IO.WAL,1,1,,,,<CLRSCR,6> ;CLEAR SCREEN    116    117DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 5MCALLS - DIRECTIVE DPBS    119    120						;*****************************************      **    121						;    122							.SBTTL	DATA AREA    123    124						;    125						;*******************************************    126    127    128    129	000300	   033 	   110 	   000 	CLRSCR:	.ASCII	<ESC><HO><0><ESC><ES><0> ;SEND CURSOR HOME AND CLEAR SCREEN    130	000306	   033 	   131 	   040 	TIT1:	.ASCII 	<ESC><CD><31.+1.><0><31.+9.>/***TRAX DEMO***/<1>    131    132    133						.EVEN    134    135    136	000334				STATUS: .BLKW	2    137    138	000340	000000 			CMDFLG:	.WORD	0    139	000342	000000 			DS      PFLG:	.WORD	0	;COUNT DOWN TO UPDATE MAIN DISPLAY    140	000344	000012 			UPD.FR:	.WORD	12    141	000346	000001 			DS.TYP:	.WORD	1	;KEEPS TRACK OF CURRENT DISPLAY    142	000350	000000 			PRT.OK:: .WORD	0    143	000352	000000 			CYCLE::	.WORD	0		;FLAG TO INDICATE THAT WE WANT TO CYCLE THROUGH    144									;ALL DISPLAYS    145    146    147	000354	000000 			OF.RD::	.WORD	0    148	000356	000000 			OF.WRT::.WORD	0    149	000360	000000 			OF.HIT::.WORD	0    150    151    152					;    153					; DISPLAY BUFFER :          154					;    155    156						.IF  NDF  $$PRI    157    158					BUFF::	.BLKW	200    159    160						.ENDC    161    162    163    164					;************************    165					; DEFINE SYMBOLIC OFFSETS    166					;************************    167    168	000362					ASRDF$    169	000362					HDRDF$    170	000362					PCBDF$    171    172DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 6DATA AREA    174    175						;***************************************    176						;    177							.SBTTL	ONE       TIME ONLY CODE    178						;    179						;***************************************    180    181    182    183    184					;*******************    185					; CREATE REGION CODE    186					;*******************    187    188						.IF  DF  $$PRI    189    190    191	000362				RDB:	RDBBK$	4,BUFFER,,<RS.ATT!RS.RED!RS.WRT>    192    193	000402				WDB:	WDBBK$	1,,,0,,<WS.64B!WS.MAP!WS.RED!WS.WRT>    194    195    196    197	000422				DEMO:	DIR$	#REGION,DIRERR		;CREATE A REGION FOR CHARACTER BUFFER    198    199	000436      	005067 	177752 			CLR	WDB+W.NLEN		;CLEAR WINDOW LENGTH    200    201	000442	016767 	177716 	177736 		MOV	RDB+R.GSIZ,WDB+W.NSIZ	;GET REGION SIZE INTO WINDOW DESCRIPTOR    202	000450	016767 	177706 	177732 		MOV	RDB+R.GID,WDB+W.NRID	;MOVE THE REGION ID INTO WINDOW BUFFER    203    204	000456					DIR$	#WINDOW,DIRERR		;CREATE ADDRESS WINDOW    205    206	000472	012767 	020000 	177504 		MOV	#20000,BUFPTR		;POINT TO REGION WHERE BUFFER HAS JUST    207										;BEEN CREATED    208    209						.IFF    210    211	      				DEMO:    212    213						MOV	#BUFF,BUFPTR		;POINT TO BUFFER    214    215						.ENDC    216    217    218    219					;    220					; ATTACH TERMINAL, CLEAR SCREEN & FIND PARTITION NAME    221					;    222    223    224	000500					DIR$ 	#ALUN,DIRERR		;ASSIGN LOGICAL UNIT NUMBER TO TERMINAL    225	000514					DIR$	#IOATA,DIRERR		;ATTACH TERMINAL    226	000530					DIR$	#IOCLR,DIRERR		;CLEAR THE SCREEN    227    228	000544					CALL	PARNME			;GET PARTITION NAME    229	000550					CALL	QUEINI			;INITIALIZE QUEUE       STUFF    230	000554	000510 				BR	LOOPDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 6-1ONE TIME ONLY CODE    231    232    233DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 7ONE TIME ONLY CODE    235						;***************************************    236						;    237							.SBTTL	SPAWN PRINT TASK    238						;    239						;***************************************    240    241    242						.IF  DF  $$PRI    243    244	000556	   111 	   116 	   123 	CMDLIN:	.ASCII	#IN      S [300,30]HRDCPY/RUN=REM/TASK=HRDCPY#<15>    245						.EVEN    246		000050 			CMDLEN=.-CMDLIN    247    248	000626	000000 			PRTFLG:	.WORD	0		;KEEPS TRACK OF USER PRINT OPTION    249									;(IF PRTFLG=1 THEN HARDCOPY)    250    251    252    253	000630	005767 	177772 		PRINT:	TST	PRTFLG    254	000634	001057 				BNE	10$    255    256	000636					DIR$	#SRDA,DIRERR	;SPECIFY THAT ON DATA RECEIVE GOTO AN AST    257	000652					DIR$	#CLEAR,DIRERR	;CLEAR EVENT FLAG NO. 6    258    259	000666					DIR$	#SPAWN		;SPAW      N THE HARDCOPY TASK    260	000674	026727 	000000G	000000G		CMP	$DSW,#IS.SUC	;WERE WE SUCCESSFUL    261	000702	001406 				BEQ	5$		;YES - BRANCH    262    263	000704					DIR$	#SPAWN2,DIRERR	;NO - TASK MUST NOT BE INSTALLED SO    264									;INSTALL IT    265    266    267	000720				5$:	DIR$	#SEND		;PASS HARDCOPY DEMO TASK NAME    268	000726	026727 	000000G	000000G		CMP	$DSW,#IS.SUC    269	000734	001371 				BNE	5$    270    271	000736					DIR$	#WAIT,DIRERR	;WAIT FOR HARDCOPY TO OPEN FILE    272	000752					DIR      $	#CLEAR,DIRERR	;CLEAR EVENT FLAG NO. 6    273    274	000766	012767 	000001 	177632 		MOV	#1,PRTFLG	;SET FLAG TO INDICATE THAT HARDCOPY TASK    275									;HAS BEEN INITIALIZED    276    277    278	000774				10$:	RETURN    279    280						.ENDC    281    282    283DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 8SPAWN PRINT TASK    285    286    287						;*********************************    288						;    289							.SBTTL	MAIN LOOP    290						;    291						;****************************      *****    292    293						.ENABL	LSB    294    295    296	000776				LOOP:	CALL	SCRTOP		;UPDATE TOP TWO LINES OF DISPLAY    297    298	001002	005767 	177334 			TST	DSPFLG		;DO WE WANT ONE OF THE SPECIAL DISPLAYS    299	001006	001077 				BNE	35$		;IF NE NO    300    301	001010	022767 	000001 	177330 		CMP	#1,DS.TYP	;WHICH DISPLAY DO WE WANT    302	001016	001011 				BNE	10$		;IF NE THEN ITS NOT SUMMARY DISPLAY    303    304	001020					CALL	QUESUM		;OUTPUT QUEUE MANAGER SECTION OF SUMMARY DISPLAY    305	001024		      			CALL	MEMSUM		;OUTPUT MEMORY USAGE SECTION OF SUMMARY DISPLAY    306	001030					CALL	APPSUM		;OUTPUT APPLICATION SECTION OF SUMMARY DISPLAY    307	001034					CALL	DSKSUM		;OUTPUT DISK FREE SPACE SECTION OF SUMMARY DISPLAY    308    309	001040	000440 				BR	30$    310    311	001042	022767 	000002 	177276 	10$:	CMP	#2,DS.TYP	;DO WE WANT THE MESSAGE DISPLAY    312	001050	001003 				BNE	11$    313	001052					CALL	MSGE		;OUTPUT THE MESSAGE DISPLAY    314	001056	000431 				BR	30$    315    316	001060	022767 	00      0003 	177260 	11$:	CMP	#3,DS.TYP	;DO WE WANT THE TST DISPLAY    317	001066	001003 				BNE 	12$    318	001070					CALL	TSTDSP		;OUTPUT THE TST DISPLAY    319	001074	000422 				BR	30$    320    321	001076	022767 	000004 	177242 	12$:	CMP	#4,DS.TYP	;DO WE WANT THE TRANSACTION DISPLAY?    322	001104	001003 				BNE	13$    323	001106					CALL	TRANS    324	001112	000413 				BR	30$    325    326	001114	022767 	000005 	177224 	13$:	CMP	#5,DS.TYP	;DO WE WANT THE MEMORY DISPLAY?    327	001122	001007 				BNE	30$    328          329	001124	005767 	177222 			TST	CYCLE		;IF IN CYCLING MODE WANT TO INITIALIZE    330									;MEMORY DISPLAY    331	001130	001402 				BEQ	14$    332    333	001132					CALL	MEMINI    334    335	001136				14$:	CALL	MEM		;OUTPUT THE MEMORY DISPLAY    336    337    338	001142	005767 	177174 		30$:	TST	DSPFLG		;DID WE JUST UPDATE SPECIAL DISPLAY    339	001146	001017 				BNE	35$		;IF NE -NO    340    341	001150	012767 	000001 	177172 		MOV	#1,PRT.OK	;SET UP FLAG SO THAT OUTBUF CAN SIGNALDEMO PROGRAM FOR TRA      X (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 8-1MAIN LOOP    342									;TO HARDCOPY    343    344    345	001156	005767 	177170 			TST	CYCLE		;ARE WE CYCLING THROUGH THE DIFFERENT DISPLAYS    346	001162	001411 				BEQ	35$		;IF EQ - NO    347    348	001164	005267 	177156 			INC	DS.TYP		;GO TO NEXT DISPLAY    349	001170	026727 	177152 	000006 		CMP	DS.TYP,#6	;DID WE DO LAST DISPLAY?    350	001176	001003 				BNE	35$    351    352	001200	012767 	000001 	177140 		MOV	#1,DS.TYP	;GO BACK TO FIRST DISPLAY    353          354	001206				35$:	CALL	OUTBUF		;OUTPUT REMAINDER OF BUFFER    355    356	001212	005767 	177122 			TST	CMDFLG		;HAS USER REQUESTED A COMMAND    357	001216	001404 				BEQ	40$		;IF EQ NO    358    359	001220	005067 	177114 			CLR	CMDFLG		;RESET THE COMMAND FLAG    360	001224					CALL	CMDS		;GO PROCESS COMMAND    361    362	001230	005367 	177106 		40$:	DEC	DSPFLG		;CONTINUE COUNTDOWN FOR NEXT DISPLAY UPDATE    363	001234	002003 				BGE	45$    364    365	001236	016767 	177102 	177076 		MOV	UPD.FR,DSPFLG	;ST      ART COUNTDOWN FOR NEXT DISPLAY UPDATE    366    367	001244				45$:	DIR$	#STOP,DIRERR	;WAIT AND STOP FOR ONE SECOND TO BE UP    368	001260	000167 	177512 			JMP	LOOP    369    370						.DSABL	LSB    371DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 9MAIN LOOP    373					;    374					; **- SCRTOP-ROUTINE THAT RUNS THROUGH THE ONE SECOND DYNAMICALLY UPDATED SECTION    375					;            OF DISPLAY.    376					;    377    378	001264				SCRTOP:    379	001264					DIR$	#MRKTIM,DIRERR		;WAIT       ONE SECOND BEFORE RESTARTING THIS ROUTINE    380    381	001300	012703 	000306'			MOV	#TIT1,R3	;DISPLAY FIXED PART OF HEADER    382	001304					CALL	OUTLIN    383    384	001310					CALL	DSTIM		;DISPLAY CURRENT TIME    385	001314					CALL	UPTIME		;DISPLAY HOW LONG DEMO IS BEEN RUNNING    386	001320					CALL	NXTTSK		;DISPLAY NAME OF NEXT TASK    387	001324					CALL	CPUCNT		;DISPLAY CPU USAGE PERCENTAGE    388	001330					CALL	POOLIN		;DISPLAY POOL INFORMATION    389	001334					CALL	CACHE		;DISPLAY CACHE INFORMAT      ION    390    391	001340					RETURN    392    393    394					;    395					; **-PRTAST- AST WHICH IS CALLED WHEN DEMO RECEIVES A MESSAGE FROM HRDCPY TASK    396					;    397    398    399						.IF 	DF $$PRI    400    401	001342				DAT:	.BLKW	15.    402    403	001400				PRTAST:    404	001400					DIR$	#SETFLG,DIRERR		;SET EVENT FLAG NO. 6    405	001414					DIR$	#RCVDAT,DIRERR		;RECEIVE DATA FROM THE HARDCOPY TASK    406	001430					ASTX$S			;EXIT AST    407    408    409						.ENDC    410DEMO PROGRAM FOR TRAX       (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 10MAIN LOOP    412    413    414						;***********************************************************************    415						;    416    417							.SBTTL	OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    418						;    419						;***********************************************************************    420    421    422	001436	   101 	   120 	   120 	MSG:	.ASCII	/APPLICATION NAME?/<1>    423						.EVEN    424    425    426	001460	   101 	   120 	   120 	MSG1:	.A      SCII	/APPLICATION NOT FOUND! APPLICATION NAME?/<1>    427						.EVEN    428    429	001532	000000 			PARADR:	.WORD	0    430    431    432	001534				PARNME:    433    434	001534	012700 	000001 			MOV	#1,R0		;SPECIFY THAT WE WANT A REPLY    435	001540	012701 	001436'			MOV	#MSG,R1		;POINT TO MESSAGE    436	001544					CALL	COMMUN		;SEND MESSAGE TO USER    437    438    439	001550				5$:	INH$S			;INHIBIT CONTEXT SWITCHING    440    441    442					; GET ADDRESS OF PARTITION HEAD    443    444	001564					SWITCH$	6      $		;GO INTO KERNEL MODE    445	001570	016767 	000000G	177734 		MOV	$PARHD,PARADR	;SAVE ADDRESS    446	001576					RETURN    447    448					;    449					; THIS SECTION LOOKS THROUGH EACH PARTITION DESCRIPTION BLOCK.    450					; ANY PARTITION WITH STARTING 3 LETTERS  "TPN", WHERE N RANGES    451					; FROM 1 TO 8, IS THEN EXAMINED TO SEE IF IT IS THE PARTITION    452					; WE WANT.    453					;    454    455    456    457	001600				6$:	SWITCH$	9$		;GO INTO KERNEL MODE    458    459	001604	016704 	177722 		7$:      	MOV	PARADR,R4	;PARADR	ALWAYS POINTS TO THE NEXT PARTITION TO    460									;BE LOOKED AT    461    462	001610	162704 	000000 			SUB	#P.LNK,R4	;POINT TO THE TOP OF DESCRIPTOR BLOCK    463	001614	016467 	000000 	177710 		MOV	P.LNK(R4),PARADR  ;SAVE ADDRESS OF PARTITION TO BE LOOKED AT    464									  ;NEXT IF NECESSARY    465	001622	016467 	000014 	002356 		MOV	P.REL(R4),COM.AD  ;SAVE ADDRESS OF COMMON AREA IN CASE THIS IS    466									  ;THE RIGHT PARTITION    467    468	001630	026427 	000004 	077637 		      CMP	P.NAM(R4),#^RTP1  ;IS THIS THE RIGHT TYPE OF PARTITIONDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 10-1OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    469	001636	002404 				BLT	71$		;NO!    470    471	001640	026427 	000004 	077646 		CMP	P.NAM(R4),#^RTP8    472	001646	003406 				BLE	8$		;YES : TP1 <= P.NAM(R4) <= TP8    473    474	001650	005767 	177656 		71$:	TST	PARADR		;HAVE WE LOOKED AT THE LAST PARTITION?    475	001654	001353 				BNE	7$		;IF NE-NO, LETS LOOK AT THE NEXT P      ARTITION    476    477	001656	012767 	177777 	177646 		MOV	#-1,PARADR	;INDICATE THAT WE CAN'T FIND ANY MORE PARTITIONS    478    479	001664				8$:	RETURN			;FINISHED WITH KERNEL MODE    480    481	001666	005767 	177640 		9$:	TST	PARADR		;DID WE EXIT BECAUSE OF ERROR?    482	001672	002430 				BLT	25$		;IF NEGATIVE - YES    483    484    485					; LETS LOOK AT COMMON AREA FOR THS PARTITION TO SEE IF ITS THE RIGHT ONE.    486    487	001674	012767 	077406 	177606 		MOV	#77406,UISDR3    488	001702	016767 	002300       	177646 		MOV	COM.AD,UISAR3	;MAP INTO EXTENDED MEMORY    489    490    491	001710	026767 	004144 	060000 		CMP	RECBUF,60000	;IS THIS THE PARTITION WE WANT?    492	001716	001330 				BNE	6$    493	001720	026767 	004136 	060002 		CMP	RECBUF+2,60002    494	001726	001324 				BNE	6$    495	001730	026767 	004130 	060004 		CMP	RECBUF+4,60004    496	001736	001320 				BNE	6$    497    498    499					; FOUND PARTITION WANTED!    500    501	001740	016767 	060000G	002242 		MOV	60000+$BASE,CADR  ;STORE BASE ADDRESS OF T      HE CACHE FOR LATER USE    502	001746	016767 	060000G	002236 		MOV	60000+$SIZE,CSIZE ;STORE CACHE SIZE FOR LATER USE    503    504    505	001754				25$:	ENB$S			;ENABLE CONTEXT SWITCHING    506    507	001766	005767 	177540 			TST	PARADR		;DID WE LEAVE BECAUSE OF ERROR?    508	001772	002007 				BGE	30$		;IF GE - NO    509    510					;    511					; PARTITION TO MATCH APPLICATION NAME NOT FOUND.    512					; SEND ERROR MESSAGE TO USER.    513					;    514    515    516	001774	012700 	000001 			MOV	#1,R0		;WANT       REPLY    517	002000	012701 	001460'			MOV	#MSG1,R1	;POINT TO MESSAGE    518	002004					CALL	COMMUN    519	002010	000657 				BR	5$    520    521    522	002012				30$:	RETURN			;AND WE ARE FINISHED    523DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 11OBTAIN PARTITION NAME AND MAP INTO EXTENDED MEMORY    525    526    527						;****************************************************    528						;    529							.SBTTL	BATCH/PRINT QUEUES INITIALIZATIONS    530						;    531						;*************      ***************************************    532    533    534    535    536						.MCALL	FDBDF$,FDOP$A,FDRC$A,FDBK$A,FSRSZ$    537						.MCALL	FINIT$    538    539    540		000003 				QFLUN	=3    541    542    543					;    544					; QUEUE FILE FDB :    545					;    546    547	002014				QFDB:: 	FDBDF$			;ALLOCATE FILE DESCRIPTOR BLOCK    548	002154					FDRC$A	FD.RWM		;INDICATE THAT BLOCK I/O OPERATIONS ARE    549									;TO BE PERFORMED    550	002154					FDBK$A	,512.		;ALLOCATE BUFFER SPACE    551	002154					F      DOP$A	QFLUN,,,FO.RD!FA.SHR    552    553	002154					FSRSZ$	0    554    555    556    557    558					;    559					; EXECUTIVE MACRO CALLS    560					;    561    562						.MCALL	RSUM$,RCST$,USTP$    563    564    565					;    566					; DIRECTIVE DPBS    567					;    568    569    570	002154				RSUM:	RSUM$	QMG...		;DPB TO RESUME QUEUE MANAGER    571	002162				SDAT:	SDAT$	QMG...,SNDBUF	;DPB TO SEND REQUEST TO QUEUE MANAGER    572	002174				RCVD:	RCVD$	QMG...,RCVBUF	;DPB TO RECEIVE DATA BACK FROM QUEUE MANAGER          573	002204				USTP:	USTP$	QMG...		;DPB TO UNSTOP QUEUE MANAGER    574    575    576    577	002212	   026 	   000 		SNDBUF:	.BYTE	26,0		;REQUEST PACKET FOR QMG...    578									;F.C. = 26 = GET QUEUE FILE INFORMATION    579	002214				RCVBUF:	.BLKW	15.		;RECEIVE BUFFER FROM QMG...    580		002220'			RCVDT==RCVBUF+4    581DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 11-1BATCH/PRINT QUEUES INITIALIZATIONS    582    583    584	002252	000002 			QUE.ST:: .WORD	2		;INDICATES STATUS OF QUEUE       MANAGER    585									; 0=RUNNING    586									; 1=STOPPED DURING DEMO EXECUTION    587									; 2=STOPPED BEFORE DEMO STARTED    588    589					;    590					; CHECK THAT QUEUE MANAGER IS ACTIVE.    591					; ASK QUEUE MANAGER WHERE QUEUE FILE IS.    592					;    593    594    595	002254				QUEINI::    596    597    598	002254					DIR$	#RSUM		;RESUME QUEUE MANAGER    599	002262	026727 	000000G	000000G		CMP	$DSW,#IE.ITS	;WE SHOULD GET TASK NOT SUSPENDED    600	002270	001037 				BNE	10$    601    602	002      272	005767 	177754 			TST	QUE.ST		;IF QUE.ST=0 THEN QUEUE MANAGER ALREADY RUNNING.    603									;DO NOTHING.    604	002276	001451 				BEQ	20$    605    606    607	002300					DIR$	#SDAT,DIRERR	;SEND DATA TO QUEUE MANAGER    608	002314					DIR$	#USTP,DIRERR	;UNSTOP QUEUE MANAGER    609    610	002330				5$:	DIR$	#RCVD		;RECEIVE DATA OR STOP    611	002336	026727 	000000G	000000G		CMP	$DSW,#IE.ITS	;DATA RECEIVED?    612	002344	001771 				BEQ	5$		;IF NOT - TRY AGAIN    613    614	002346	022767 	000001 	177676 	      	CMP	#1,QUE.ST	;IF EQ=1 FILE SYSTEM INITIALIZED PREVIOUSLY    615	002354	001402 				BEQ	6$		;AND THERE IS NO NEED TO DO IT AGAIN    616    617	002356					FINIT$			;INITIALIZE FILE SYSTEM    618    619	002362	005067 	177664 		6$:	CLR	QUE.ST		;INDICATE THAT QUEUE MANAGER IS ACTIVE    620	002366	000415 				BR	20$    621    622    623					;    624					; QUEUE MANAGER NOT ACTIVE    625					;    626    627	002370	026727 	000000G	000000G	10$:	CMP	$DSW,#IE.ACT	;IS QUEUE MANAGER ACTIVE?    628	002376	001402 				BEQ	      15$		;IF EQ - NO    629    630	002400					CALL	DIRERR		;PROCESS IT AS A DIRECTIVE ERROR    631    632	002404	022767 	000002 	177640 	15$:	CMP	#2,QUE.ST	;WAS QUEUE MANAGER ACTIVE BEFORE?    633	002412	001403 				BEQ	20$		;IF EQ-NO    634    635	002414	012767 	000001 	177630 		MOV	#1,QUE.ST	;INDICATE THAT QUEUE MANAGER HAS STOPPED DURING    636									;PROGRAM EXECUTION    637    638	002422				20$:	RETURNDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 11-2BATCH/PRINT QUEUES INITIALIZATION      S    639DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 12BATCH/PRINT QUEUES INITIALIZATIONS    641    642    643    644						;*****************************************    645						;    646							.SBTTL	DISPLAY DATE AND TIME    647						;    648						;*****************************************    649    650    651    652					;    653					; **-DSTIM-DISPLAY CURRENT TIME OF DAY    654					;    655    656	002424				TIMBUF:	.BLKW	10    657    658	002444	   033 	   131 	   040 	TIMLOC:	.ASCIZ	      <ESC><CD><31.+1.><0><31.+55.>    659	002452				TIMMSG:	.BLKW	23		;TIME AND DATE DISPLAY    660    661    662	002520				DSTIM:    663    664    665	002520					INH$S			;INHIBIT CONTEXT SWITCHING    666	002534					DIR$	#GETIME,DIRERR	;GET TIME PARAMETERS    667    668	002550					SWITCH$	10$		;SWITCH TO SYSTEM STATE    669	002554	016767 	000000G	000704 		MOV	$TCPU0,NEWCP0	;READ VALUE OF IDLE LOOP COUNTER    670	002562	016767 	000000G	000700 		MOV	$TCPU1,NEWCP1    671	002570					RETURN    672    673	002572				10      $:	ENB$S			;ENABLE CONTEXT SWITCHING AGAIN    674    675    676	002604	016767 	177626 	000054 		MOV	TIMBUF+G.TISC,NEWSEC ;GET THE SECOND COUNT THIS TIME    677    678	002612	012700 	002452'			MOV	#TIMMSG,R0	;CONVERSION BUFFER    679	002616	010003 				MOV	R0,R3		;SAVE ITS ADDR    680	002620	012701 	002424'			MOV	#TIMBUF,R1	;TIME PARAMETERS    681	002624					CALL	$DAT		;CONVERT DATE    682	002630	112720 	000040 			MOVB	#' ,(R0)+	;INSERT A SPACE    683	002634	012702 	000003 			MOV	#3,R2		;CONVERT ASCII OF    6      84	002640					CALL	$TIM		;HOURS, MINS, AND SEC    685	002644	112710 	000001 			MOVB	#1,(R0)		;INSERT LINE TERMINATOR    686	002650	012703 	002444'			MOV	#TIMLOC,R3	;POINT TO OUTPUT STRING    687	002654					CALL	OUTLIN		;OUTPUT CURRENT TIME    688	002660					RETURN    689    690DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 13DISPLAY DATE AND TIME    692    693    694						;********************************************************    695						;    696							.SBTTL	DISPLAY TOTAL UPTIME FOR       TRAX DEMO    697						;    698						;********************************************************    699    700    701    702					;    703					; ADD UP THE SECONDS TO 360 THEN UPDATE THE 10TH HOUR COUNTER.    704					; WHENEVER THAT OVERFLOWS UPDATE THE HOUR COUNTER AND DISPLAY    705					; THE LINE.    706					;    707					;    708					; NEW ALGORITHM FOR SECOND UPDATES -- IT LOOKS AT THE SECOND COUNT    709					; THIS TIME AND COMPARES WITH THE SECOND COUNT LAST TIME, ADJUSTING    710					; FOR PASSING GO (6      0 SECONDS).  THIS DIFFERENCE IS HOW MUCH TIME HAS    711					; PASSED.  THIS MAKES THE UPTIME ALGORITHM SELF-CORRECTING AS LONG    712					; AS RMDEMO'S MARK-TIME TAKES LESS THEN 60 SECS TO COMPLETE (E.G.    713					; PRESSING COPY ON A VT52 WITH COPIER) YET PEOPLE PLAYING WITH THE    714					; TIME COMMAND CANNOT AFFECT THE UPTIME COUNT BY MORE THAN A MINUTE    715					; EVERY TIME THEY PLAY (SO THEY SHOULD'T BOTHER).    716    717    718					;***************************************************************      **********    719					;    720					;	WHEN THE INFORMATION BECOMES AVAILABLE A MODIFICATION THAT SHOULD    721					;	BE MADE TO THIS SECTION IS TOO REPLACE TOTAL UPTIME OF TRAX DEMO    722					;	WITH TOTAL UPTIME FOR THE SYSTEM.    723					;    724					;*************************************************************************    725    726	002662	177704 			SEC:	.WORD	-60.		;SECONDS COUNT DOWN FOR TENTHS OF HOUR    727	002664	000000 			OLDSEC:	.WORD	0		;SECONDS OF MINUTES LAST TIME THRU    728	002666	000000 	      		NEWSEC:	.WORD   0		;SECONDS OF MINUTES THIS TIME THRU    729	002670	000000 			MIN:	.WORD	0		;TENTHS OF HOUR ACCUMULATOR    730	002672	000000 			HOURS:	.WORD	0		;HOURS    731    732	002674	   033 	   131 	   040 	UPTIM:	.ASCII	<ESC><CD><31.+1><0><31.+34.>/UP /    733	002704				UPNUM:	.BLKB	10.		;LEAVE ROOM FOR HOURS AND TENTHS    734	002716	   040 	   110 	   122 	HRM:	.ASCII	/ HRS/<1>	;THE END OF MESSAGE    735    736    737						.EVEN    738	002724	016701 	177736 		UPTIME:	MOV	NEWSEC,R1	;PICK UP THIS TIM      ES SECONDS    739	002730	020167 	177730 			CMP	R1,OLDSEC	;HAS THE SECOND HAND PASSED THE 12    740	002734	002002 				BGE	5$		;IF GE NO    741					;    742					; THE SKINNY HAND HAS PASSED THE 12, ADJUST IT    743					;    744	002736	062701 	000074 			ADD	#60.,R1    745	002742	166701 	177716 		5$:	SUB	OLDSEC,R1	;HOW LONG HAS IT BEEN    746	002746	016767 	177714 	177710 		MOV	NEWSEC,OLDSEC	;SAVE THIS  FOR LAST    747	002754	060167 	177702 			ADD	R1,SEC		;COUNT DOWN    748	002760	100415 				BMI	10$		;IF NOT TO       ZERO YETDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 13-1DISPLAY TOTAL UPTIME FOR TRAX DEMO    749	002762	162767 	000074 	177672 		SUB	#60.,SEC	;RESET THE TIMER FOR 1 MINUTE    750	002770	005267 	177674 			INC	MIN		;ADD ANOTHER MINUTE    751	002774	022767 	000074 	177666 		CMP	#60.,MIN	;UP THERE YET    752	003002	001004 				BNE	10$		;IF NE NO    753	003004	005267 	177662 			INC	HOURS		;ONE MORE HOUR    754	003010	005067 	177654 			CLR	MIN		;NO TENTHS    755    756	003014	012700 	0027      04'		10$:	MOV	#UPNUM,R0	;THIS IS WHERE WE CONVERT INTO    757	003020	016701 	177646 			MOV	HOURS,R1	;DO THE HOURS    758	003024	001403 				BEQ	15$		;NO HOURS, SKIP IT    759	003026	005002 				CLR	R2		;WATCH OUT FOR LEADING ZEROS    760	003030					CALL	$CBDMG    761    762	003034	112720 	000072 		15$:	MOVB	#':,(R0)+	;INSERT THE COLON    763	003040	016701 	177624 			MOV	MIN,R1		;GET THE NUMBER OF MINUTES    764	003044	022767 	000012 	177616 		CMP	#10.,MIN	;CHECK IF YOU ARE GOING TO HAVE A LEADING ZERO    765	      003052	003402 				BLE	20$		;NOT GOING TO HAVE LEADING ZERO    766	003054	112720 	000060 			MOVB	#'0,(R0)+	;INSERT THE LEADING ZERO    767    768	003060	005002 			20$:	CLR	R2		;SUPPRESS LEADING ZEROES    769	003062					CALL	$CBDMG    770	003066	105010 				CLRB	(R0)		;TERMINATE STRING    771	003070	012703 	002674'			MOV	#UPTIM,R3	;SEND OUT STRING    772	003074					CALL	OUTLIN    773    774	003100					RETURN			;    775    776DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 14DISPLAY TOTAL UP      TIME FOR TRAX DEMO    778    779    780						;*********************************************************    781						;    782							.SBTTL	DISPLAY NAME OF NEXT RUNNABLE TASK    783						;    784						;*********************************************************    785    786    787    788    789	003102	   033 	   131 	   041 	TSKLOC:	.ASCII	<ESC><CD><31.+2.><0><31.+9.>"*"    790	003110	   040 	   040 	   040 	TSKNAM:	.ASCII	/      */<1>    791	003120				EXETSK:	.BLKW	2    792	003124	   130 	   130 	   130 	LSTT      SK:	.ASCII	/XXXX/		;INITIALIZE TO SOMETHING    793    794    795	003130				NXTTSK:    796    797						.ENABL	LSB    798    799	003130	012705 	003120'			MOV	#EXETSK,R5	;POINT TO NEXT RUNNABLE TASK BUFFER    800	003134					SWITCH$	110$		;SWITCH TO SYSTEM STATE    801	003140	016700 	000000G			MOV	$RQSCH,R0	;IS THERE A RESCHEDULE REQUEST?    802	003144	001002 				BNE	40$		;IF NE YES    803	003146	016700 	000000G			MOV	$TKTCB,R0	;ELSE, GET OUR OWN TCB ADDRESS    804	003152	005760 	000000G		40$:	TST	T.ACTL(R0)	;I      S THIS THE NULL TASK?    805	003156	001440 				BEQ	65$		;IF EQ YES    806	003160	020067 	000000G			CMP	R0,$TKTCB	;ARE WE LOOKING AT OURSELVES?    807	003164	001432 				BEQ	60$		;IF EQ YES -- IGNORE IT    808    809    810	003166	005760 	000000G			TST	T.STAT(R0)	;IS THE TASK BLOCKED?    811	003172	001027 				BNE	60$		;IF NE YES    812	003174	005760 	000000G			TST	T.ASTL(R0)	;IS AN AST QUEUED FOR THE TASK?    813	003200	001404 				BEQ	50$		;IF EQ NO    814	003202	032760 	000000C	000000G		BIT	#T2.AST!T2.DST,T.      ST2(R0)  ;IN AST OR AST'S DISABLED?    815	003210	001426 				BEQ	80$		;IF EQ NO    816	003212	032760 	000000C	000000G	50$:	BIT	#T2.STP!T2.SPN,T.ST2(R0)  ;IS TASK STOPPED OR SUSPENDED?    817	003220	001014 				BNE	60$		;IF NE YES    818	003222	032760 	000000G	000000G		BIT	#T2.WFR,T.ST2(R0)  ;IS TASK IN WAITFOR STATE?    819	003230	001416 				BEQ	80$		;IF EQ NO    820	003232	016004 	000000G			MOV	T.PCB(R0),R4	;GET TASK'S PCB ADDRESS    821	003236	016404 	000000G			MOV	P.HDR(R4),R4	;GET TASK'S HEADER ADDRESS          822	003242	036474 	000004 	000006 		BIT	H.EFLM(R4),@H.EFLM+2(R4)  ;IS THE WAITFOR SATISFIED?    823	003250	001006 				BNE	80$		;IF NE YES    824	003252	016000 	000000G		60$:	MOV	T.ACTL(R0),R0	;GET TCB ADDRESS OF NEXT TASK IN ATL    825	003256	000735 				BR	40$		;SEE IF IT IS NEXT TO EXECUTE    826	003260	005025 			65$:	CLR	(R5)+		;STORE BLANKS AS CURRENT TASK NAME    827	003262	005015 				CLR	(R5)		;						;    828	003264	000404 				BR	100$		;    829    830    831	003266	016025 	000000G		80$:	MOV	T.NAM(R0)      ,(R5)+	;STORE TASK NAME    832	003272	016025 	000002G			MOV	T.NAM+2(R0),(R5)+  ;    833    834DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 14-1DISPLAY NAME OF NEXT RUNNABLE TASK    835	003276				100$:	RETURN    836    837	003300	012704 	003124'		110$:	MOV	#LSTTSK,R4	;POINT TO LAST RUNNABLE TASK NAME    838	003304	012705 	003120'			MOV	#EXETSK,R5	;AND TO THIS TASK NAME    839	003310	022524 				CMP	(R5)+,(R4)+	;IS IT THE SAME TASK?    840	003312	001002 				BNE	120$		;IF NE NO    841	003      314	021514 				CMP	(R5),(R4)	;    842	003316	001437 				BEQ	130$		;IF EQ YES    843    844    845	003320	012704 	003124'		120$:	MOV	#LSTTSK,R4	;POINT TO STORAGE AREA    846	003324	012705 	003120'			MOV	#EXETSK,R5    847	003330	011514 				MOV	(R5),(R4)	;SAVE NAME OF DISPLAYED TASK    848	003332	016564 	000002 	000002 		MOV	2(R5),2(R4)	;    849	003340	005715 				TST	(R5)		;IS IT THE NULL TASK?    850	003342	001015 				BNE	125$		;IF NE NO    851	003344	005765 	000002 			TST	2(R5)    852	003350	001012 				BNE	1      25$		;IF NE NO    853	003352	012767 	044440 	177530 		MOV	#" I,TSKNAM	;DISPLAY  "* IDLE *"    854	003360	012767 	046104 	177524 		MOV	#"DL,TSKNAM+2    855	003366	012767 	020105 	177520 		MOV	#"E ,TSKNAM+4    856	003374	000410 				BR	130$		;    857    858	003376	012700 	003110'		125$:	MOV	#TSKNAM,R0	;GET CONVERSION BUFFER ADDRESS    859	003402	012501 				MOV	(R5)+,R1	;GET FIRST HALF OF TASK NAME    860    861	003404					CALL	$C5TA		;CONVERT TO ASCII AND STORE    862	003410	012501 				MOV	(R5)+,R1	;GET LAST H      ALF    863	003412					CALL	$C5TA		;CONVERT AND STORE    864    865    866	003416	012703 	003102'		130$:	MOV	#TSKLOC,R3	;POINT TO OUTPUT PACKET    867	003422					CALL	OUTLIN    868	003426					RETURN    869    870    871						.DSABL	LSB    872    873DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 15DISPLAY NAME OF NEXT RUNNABLE TASK    875    876    877						;*******************************************    878						;    879							.SBTTL	DISPLAY CPU USAGE COUNT    880						;    881						;***      ****************************************    882    883    884    885	003430	   033 	   131 	   041 	CPULOC:	.ASCII	<ESC><CD><31.+2.><0><31.+23.>    886    887	003435	   103 	   120 	   125 	CPUMSG:	.ASCII	/CPU:        /    888						.EVEN    889    890    891	003452	000000 			TICKMN:	.WORD	0	;NUMBER OF TICKS IN A MINUTE    892	003454	000000 			OTICKS:	.WORD	0	;LAST TICK VALUE    893	003456	000000 			TICKS:	.WORD	0	;TICK DIFFERENCE SINCE LAST TIME    894	003460	000000 			LPSTCK:	.WORD	0	;LOOPS PER TICK    895      	003462	000000 			OLDCP0:	.WORD	0    896	003464	000000 			OLDCP1:	.WORD	0    897	003466	000000 			NEWCP0:	.WORD	0    898	003470	000000 			NEWCP1:	.WORD	0    899    900    901	003472				CPUCNT:    902    903    904    905					;    906					; CALCULATE NUMBER OF TICKS PER MINUTE:    907					;    908    909    910	003472	016700 	176744 			MOV	TIMBUF+G.TICP,R0  ;GET TICK FREQUENCY (PER MINUTE)    911	003476	070027 	000074 			MUL	#60.,R0		;AND MULTIPLY BY 60 SEC/MIN    912	003502	010167 	177744 			MOV	R1,TICKMN	;      SAVE VALUE    913    914    915					;    916					; CALCULATE NUMBER OF TIMES IDLE LOOP COUNTER    917					; IS INCREMENTED IN ONE TICK.    918					;    919    920	003506	012700 	000000G			MOV	#$$CPU,R0	;$$CPU CONTAINS NUMBER OF TIMES IDLE    921	003512	005001 				CLR	R1		;COUNTER OVERFLOWS/MINUTE    922    923	003514	071067 	177732 			DIV	TICKMN,R0	;DOUBLE PRECISION R0,R1 WHEN DIVIDED BY    924									;TICKS/MINUTE CONVERTS TO NUMBER OF TIMES    925									;IDLE LOOP IS INCREMENTED IN ONE SECOND.    926          927	003520	010067 	177734 			MOV	R0,LPSTCK	;STORE VALUE    928    929    930					;    931					; CALCULATE TICKS ELAPSED SINCE BEGINNING OF MINUTEDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 15-1DISPLAY CPU USAGE COUNT    932					;    933    934	003524	016701 	176706 			MOV	TIMBUF+G.TISC,R1  ;GET CURRENT SECOND    935	003530	070167 	176706 			MUL	TIMBUF+G.TICP,R1  ;MULTIPLY BY NUMBER OF TICKS/SEC.    936	003534	066701 	176700 			ADD	TIMBUF+G.TICT,R1  ;AND ADD TICKS SINCE LAST MINUTE          937    938    939    940    941	003540	010100 				MOV	R1,R0		;MAKE A COPY    942	003542	166700 	177706 			SUB	OTICKS,R0	;GET TIME ELAPSED (IN TICKS) SINCE    943									;LAST TIME    944	003546	003002 				BGT	5$		;IF GT- THEN HAVEN'T PASSED MINUTE    945    946	003550	066700 	177676 			ADD	TICKMN,R0	;ADD # OF TICKS IN MINUTE TO GET POSITIVE    947									;NUMBER    948	003554	010167 	177674 		5$:	MOV	R1,OTICKS	;CAN NOW SAVE CURRENT TICK VALUE FOR NEXT TIME    949    950	003560	010067 	177672 			MOV	R0,      TICKS	;ALSO SAVE TICKS SINCE LAST TIME    951    952    953					;    954					; CALCULATE CHANGE IN IDLE LOOP COUNTER VALUE    955					;    956    957	003564	016701 	177676 			MOV	NEWCP0,R1	;GET LOW ORDER PART OF COUNTER    958	003570	016700 	177674 			MOV	NEWCP1,R0	;AND MIDDLE BITS OF COUNTER    959    960	003574	166701 	177662 			SUB	OLDCP0,R1	;CALCULATE TIMES THROUGH LOOP    961	003600	005600 				SBC	R0    962	003602	166700 	177656 			SUB	OLDCP1,R0    963    964	003606	016767 	177654 	177646 		MOV	NEWCP0,      OLDCP0	;SAVE VALUES FOR NEXT TIME    965	003614	016767 	177650 	177642 		MOV	NEWCP1,OLDCP1    966    967    968    969    970					;    971					; CALCULATE CPU UTILIZATION PERCENTAGE    972					;    973    974    975	003622	071067 	177630 			DIV	TICKS,R0	;DIVIDE TOTAL TICKS SINCE LAST TIME INTO    976									;TIMES THROUGH IDLE LOOP.    977	003626	005001 				CLR	R1    978	003630	070027 	000144 			MUL	#100.,R0	;MULTIPLY BY 100. SINCE WE WANT A PERCENTAGE    979	003634	071067 	177620 			DIV	LPSTCK,R0	;NOW DIV      IDE BY 100% IDLE VALUE TO GET IDLE %    980    981	003640	012701 	000144 			MOV	#100.,R1	;100 - IDLE % = CPU UTILIZATION PERCENTAGE    982	003644	160001 				SUB	R0,R1    983    984    985					;    986					; OUTPUT RESULT:    987					;    988DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 15-2DISPLAY CPU USAGE COUNT    989    990	003646	020127 	000144 			CMP	R1,#100.	;IF CPU >100% THEN SOMETHING WRONG SO SHOW 0    991	003652	003002 				BGT	9$		;(FIRST TIME THROUGH THIS ROUTINE)    992	003      654	005701 				TST	R1    993	003656	002001 				BGE	10$    994    995    996	003660	005001 			9$:	CLR	R1    997    998    999	003662	012700 	003441'		10$:	MOV	#CPUMSG+4,R0	;POINT TO DISPLAY AREA   1000	003666	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1001	003670					CALL	$CBDMG		;CONVERT TO DECIMAL   1002	003674	112720 	000045 			MOVB	#'%,(R0)+	;INSERT PERCENTAGE SIGN   1003	003700	112720 	000040 			MOVB	#' ,(R0)+   1004	003704	112720 	000040 			MOVB	#' ,(R0)+   1005	003710	112710 	000001 			MOVB	#1,(R0)      		;AND FIELD TERMINATOR   1006	003714	012703 	003430'			MOV	#CPULOC,R3	;POSITION POINTER   1007	003720					CALL	OUTLIN		;DISPLAY CPU COUNT   1008   1009	003724					RETURN   1010   1011DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 16DISPLAY CPU USAGE COUNT   1013   1014   1015						;********************************************   1016						;   1017							.SBTTL	DISPLAY POOL INFORMATION   1018						;   1019						;********************************************   1020   1021   1022   1023				      	;   1024					; **-DISPLAY THE DECIMAL NUMBER OF WORDS IN THE   1025					;	LARGEST POOL BLOCK, THE DECIMAL NUMBER OF   1026					;	FREE WORDS IN POOL, AND THE NUMBER OF   1027					;	FREE BLOCKS IN POOL   1028					;   1029   1030	003726				POOL:	.BLKW	3		;RAW DATA ON POOL STATISTICS   1031	003734	000000 			MAXBS:	.WORD	0		;MAX CONTIGUOUS BLOCKS IN POOL   1032	003736	000000 			TOTALS:	.WORD	0		;TOTAL FREE WORDS IN POOL   1033	003740	000000 			FRAGS:	.WORD	0		;NUMBER OF POOL FRAGMENTS   1034   1035	003742	   03      3 	   131 	   041 	POOLOC:	.ASCII	<ESC><CD><31.+2><0><31.+32.> ;POSITION CURSOR   1036	003747	   120 	   117 	   117 	POOLMG:	.ASCII	/POOL=                  /  ;POOL STATISTICS   1037   1038   1039	003776	012701 	003726'		POOLIN:	MOV	#POOL,R1	;POINT TO POOL RAW DATA BUFFER   1040	004002	005021 				CLR	(R1)+		;CLEAR NUMBER OF FRAGMENTS   1041	004004	005021 				CLR	(R1)+		;CLEAR TOTAL POOL   1042	004006	005011 				CLR	(R1)		;CLEAR MAXIMUM PIECE   1043	004010					SWITCH$	32$		;SWITCH TO SYSTEM STATE   1044	004      014	012704 	000000G			MOV	#$CRAVL,R4	;GET ADDRESS OF POOL LISTHEAD   1045	004020	000411 				BR	31$		;BRANCH INTO LOOP   1046	004022	021164 	000002 		20$:	CMP	(R1),2(R4)	;IS MAX > THIS BLOCK?   1047	004026	103002 				BHIS	30$		;IF HIS YES   1048	004030	016411 	000002 			MOV	2(R4),(R1)	;NO, SET NEW MAX   1049	004034	066441 	000002 		30$:	ADD	2(R4),-(R1)	;ADD THIS SPACE TO TOTAL   1050	004040	005241 				INC	-(R1)		;INCREMENT NUMBER OF POOL FRAGMENTS   1051	004042	022121 				CMP	(R1)+,(R1)+	;POINT R1 TO END OF       RAW DATA BUFFER   1052	004044	011404 			31$:	MOV	(R4),R4		;GET ADDR OF NEXT BLOCK   1053	004046	001365 				BNE	20$		;IF NE MORE TO EXAMINE   1054	004050					RETURN			;ELSE, RETURN TO TASK STATE   1055   1056	004052	012700 	003754'		32$:	MOV	#POOLMG+5,R0	;POINT INTO POOL DISPLAY BUFFER   1057	004056	012704 	003732'			MOV	#POOL+4,R4	;POINT INTO RAW DATA BUFFER   1058	004062	011467 	177646 			MOV	(R4),MAXBS	;STORE NEW MAXIMUM BLOCK VALUE   1059	004066	011401 				MOV	(R4),R1		;AND PUT A COPY IN R1   1060	004070      	006201 				ASR	R1		;CONVERT TO WORDS   1061	004072	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1062	004074					CALL	$CBDMG		;CONVERT TO DECIMAL   1063	004100	112720 	000072 			MOVB	#':,(R0)+	;STORE FIELD TERMINATOR   1064	004104	014467 	177626 			MOV	-(R4),TOTALS	;STORE NEW TOTAL POOL VALUE   1065	004110	011401 				MOV	(R4),R1		;AND PUT A COPY IN R1   1066	004112	006201 				ASR	R1		;CONVERT TO WORDS   1067	004114	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1068	004116					CALL	$CBDMG		;CONVERT TO DECIM      AL   1069	004122	112720 	000072 			MOVB	#':,(R0)+	;STORE FIELD TERMINATORDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 16-1DISPLAY POOL INFORMATION   1070	004126	014467 	177606 			MOV	-(R4),FRAGS	;STORE NEW POOL FRAGMENTS VALUE   1071	004132	011401 				MOV	(R4),R1		;AND PUT A COPY IN R1   1072	004134	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1073	004136					CALL	$CBDMG		;CONVERT TO DECIMAL   1074	004142	112720 	000040 			MOVB	#' ,(R0)+	;INSERT SOME SPACES   1075	004146	112720 	0000      40 			MOVB	#' ,(R0)+   1076	004152	112710 	000001 			MOVB	#1,(R0)		;INSERT LINE TERMINATOR   1077	004156	012703 	003742'			MOV	#POOLOC,R3	;POSITION POINTER TO OUTPUT STRING   1078	004162					CALL	OUTLIN   1079   1080	004166					RETURN			;   1081   1082DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 17DISPLAY POOL INFORMATION   1084   1085   1086						;***********************************************   1087						;   1088							.SBTTL	DISPLAY CACHE INFORMATION   1089						;   1090						;***      ********************************************   1091   1092   1093					;   1094					; **- DISPLAYS THE FOLLOWING INFORMATION ABOUT THE CACHE   1095					;   1096					;	1. PERCENT OF THE CACHE THAT IS DEAD   1097					;	2. PERCENT OF THE CACHE THAT IS UNLOCKED   1098					;	3. PERCENT OF THE CACHE THAT IS LOCKED   1099					;	4. NUMBER OF CALLS MADE TO THE CACHE SINCE THE LAST TIME THIS   1100					;	   ROUTINE WAS RUN   1101					;	5. PERCENT OF THESE CALLS WHICH WERE HITS   1102					;   1103   1104   1105	004170	      000000 			DEAD:	.WORD 	0   1106	004172	000000 			UNLCKD: .WORD	0   1107	004174	000000 			LOCKED:	.WORD	0   1108	004176	000000 			CALLS:	.WORD	0   1109	004200	000000 			TCALLS:	.WORD	0   1110	004202	000000 			HITS:	.WORD	0   1111	004204	000000 			THITS:	.WORD	0   1112   1113	004206	000000 			COM.AD:: .WORD	0		;ADDRESS OF THE BASE OF THE COMMON AREA   1114	004210	000000 			CADR::	.WORD	0		;ADDRESS OF THE BASE OF THE CACHE   1115	004212	001000 			CSIZE::	.WORD	1000   1116   1117	004214	   033 	   131 	   041 	      CACLOC:	.ASCII	<ESC><CD><31.+2.><0><31.+52.>	;POSITION CURSOR   1118	004221	   103 	   101 	   103 	CACHMG:	.ASCII	/CACHE=                       /	;CACHE STATISTICS   1119   1120	004256	   040 	   116 	   117 	NCALLS:	.ASCII	/ NO CALLS/<1>   1121   1122   1123   1124	004270				CACHE:   1125   1126	004270					INH$S			;INHIBIT CONTEXT SWITCHING   1127	004304	016767 	177700 	177646 		MOV	CADR,UISAR3	;MAP INTO CACHE   1128	004312	012767 	077406 	177606 		MOV	#77406,UISDR3   1129   1130   1131	004320	016700 	060      000G			MOV	60000+P.DEAD,R0	;GET AMOUNT OF DEAD STORAGE   1132	004324	016702 	177662 			MOV	CSIZE,R2	;SET UP DIVISOR PARAMETER   1133	004330					CALL	PRCNT		;CALCULATE THE PERCENTAGE   1134	004334	010067 	177630 			MOV	R0,DEAD		;STORE THE RESULT   1135   1136	004340	016700 	060000G			MOV     60000+P.ALLOC,R0 ;GET AMOUNT OF UNLOCKED SPACE   1137	004344					CALL	PRCNT   1138	004350	010067 	177616 			MOV	R0,UNLCKD	;STORE RESULT   1139   1140	004354	012767 	000144 	177612 		MOV	#100.,LOCKED	;START WITH 100%DEMO       PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 17-1DISPLAY CACHE INFORMATION   1141	004362	166767 	177602 	177604 		SUB	DEAD,LOCKED	;SUBTRACT DEAD STORAGE PERCENTAGE   1142	004370	166767 	177576 	177576 		SUB	UNLCKD,LOCKED	;SUBTRACT UNLOCKED STORAGE PERCENTAGE   1143   1144	004376	005767 	177572 			TST	LOCKED		;IF LOCKED IS NEGATIVE THEN WE HAVE A   1145									;ROUNDING ERROR WHICH WE JUST PATCH UP   1146	004402	002004 				BGE	5$   1147   1148	004404	005067 	177564 			CLR	LOCKED   1149	004      410	005367 	177556 			DEC	UNLCKD   1150   1151	004414	016700 	060000G		5$:	MOV	60000+P.HIT,R0	;GET NUMBER OF HITS   1152	004420	166700 	177560 			SUB	THITS,R0	;SUBTRACT TOTAL LAST TIME TO GET TOTAL SINCE THEN   1153	004424	016767 	060000G	177552 		MOV	60000+P.HIT,THITS ;SAVE FOR NEXT TIME   1154   1155	004432	016702 	060000G			MOV	60000+P.NUM,R2	;GET NUMBER OF CALLS   1156	004436	166702 	177536 			SUB	TCALLS,R2	;GET NUMBER THIS TIME   1157	004442	010267 	177530 			MOV	R2,CALLS	;SAVE FOR OUTPUT   1158	004446      	016767 	060000G	177524 		MOV	60000+P.NUM,TCALLS ;SAVE FOR NEXT TIME   1159   1160	004454					ENB$S			;ENABLE CONTEXT SWITCHING   1161   1162	004466					CALL	PRCNT		;CALCULATE HIT PERCENTAGE   1163	004472	010067 	177504 			MOV	R0,HITS		;STORE RESULT   1164   1165	004476	012700 	004227'			MOV	#CACHMG+6,R0	;POINT INTO CACHE DISPLAY BUFFER   1166   1167	004502	016701 	177462 			MOV	DEAD,R1		;NOW WE ARE GOING TO CONVERT TO OUTPUT FORMAT   1168	004506	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1169	004510				      	CALL	$CBDMG		;CONVERT TO DECIMAL   1170	004514	112720 	000072 			MOVB	#':,(R0)+	;INSERT FIELD SEPARATOR   1171   1172	004520	016701 	177446 			MOV	UNLCKD,R1	;   1173	004524	005002 				CLR	R2		;   1174	004526					CALL	$CBDMG		;   1175	004532	112720 	000072 			MOVB	#':,(R0)+	;   1176   1177	004536	016701 	177432 			MOV	LOCKED,R1	;   1178	004542	005002 				CLR	R2		;   1179	004544					CALL	$CBDMG		;   1180	004550	005767 	177422 			TST	CALLS		;SEE IF ANY CALLS WERE MADE   1181	004554	001430 				BEQ	10$		;IF EQ       THEN CLEANUP   1182   1183	004556	112720 	000040 			MOVB	#' ,(R0)+   1184	004562	112720 	000040 			MOVB	#' ,(R0)+   1185   1186   1187	004566	016701 	177404 			MOV	CALLS,R1	;   1188	004572	005002 				CLR	R2		;   1189	004574					CALL	$CBDMG		;   1190	004600	112720 	000072 			MOVB	#':,(R0)+	;   1191   1192	004604	016701 	177372 			MOV	HITS,R1		;   1193	004610	005002 				CLR	R2   1194	004612					CALL	$CBDMG   1195   1196	004616	112720 	000040 			MOVB	#' ,(R0)+	;ERASE SOME SPACES   1197	004622	112720 	000040 		      	MOVB	#' ,(R0)+DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 17-2DISPLAY CACHE INFORMATION   1198	004626	112720 	000040 			MOVB	#' ,(R0)+   1199	004632	112720 	000040 			MOVB	#' ,(R0)+   1200   1201	004636	112710 	000001 		10$:	MOVB	#1,(R0)		;INSERT LINE TERMINATOR   1202	004642	012703 	004214'			MOV	#CACLOC,R3	;POSITION POINTER   1203	004646					CALL	OUTLIN   1204   1205	004652	005767 	177320 			TST	CALLS		;DO WE WANT TO PUT OUT THE "NO CALLS" MESSAGE?   1206	004656	001004 				BNE	15$      		;IF NE - NO   1207   1208	004660	012703 	004256'			MOV	#NCALLS,R3	;POINT TO MESSAGE   1209	004664					CALL	OUTLIN   1210   1211   1212	004670				15$:	RETURN   1213   1214DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 18DISPLAY CACHE INFORMATION   1216   1217   1218						;************************************   1219						;   1220							.SBTTL	I/O ROUTINES   1221						;   1222						;************************************   1223   1224   1225   1226   1227					;   1228					; **-OUTLIN -OUTP      UT STRING TO DISPLAY BUFFER   1229					;   1230					; INPUTS:   1231					;   1232					;	R3=ADDRESS OF OUTPUT STRING   1233					;   1234					; NOTE:	THE <1> BIT IS TREATED AS A SPECIAL CHARACTER. IT SERVES AS A   1235					;	STRING DELIMITER, AND WHEN IT IS ENCOUNTERED OUTLIN STOPS PROCESSING   1236					;	THE STRING.   1237					;   1238   1239	004672	010246 			OUTLIN:: MOV	R2,-(SP)	;SAVE CONTENTS OF R2   1240   1241	004674	112302 			10$:	MOVB	(R3)+,R2	;NEXT CHARACTER TO OUTPUT   1242	004676	022702 	000001 			      CMP	#1,R2		;SEE IF WE REACHED THE END OF THE STRING   1243	004702	001403 				BEQ	20$		;IF EQ YES   1244	004704					CALL	OUTCHR		;OUTPUT THE CHARACTER   1245	004710	000771 				BR	10$		;GO BACK FOR MORE   1246   1247	004712	012602 			20$:	MOV	(SP)+,R2	;RESTORE R2   1248	004714					RETURN   1249   1250   1251   1252					;   1253					; **-OUTCHR -OUTPUT CHARACTER TO DISPLAY BUFFER   1254					;   1255					; INPUTS:   1256					;   1257					;	R2=CHARACTER TO BE OUTPUT   1258					;   1259   1260   1261	004716	11027      7 	173262 		OUTCHR:	MOVB	R2,@BUFPTR	;INSERT BYTE IN BUFFER   1262	004722	005267 	173256 			INC	BUFPTR		;BUMP BUFFER POINTER   1263	004726	005267 	173254 			INC     BUFCTR		;AND BYTE COUNT   1264	004732	022767 	000400 	173246 		CMP 	#256.,BUFCTR	;BUFFER FULL?   1265	004740	101002 				BHI	10$		;IF HI NO   1266	004742					CALL	OUTBUF		;DISPLAY BUFFER   1267	004746				10$:	RETURN   1268   1269DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 19I/O ROUTINES   1271   1272   1273					;   1274				      	; **-OUTBUF -OUTPUT DISPLAY BUFFER   1275					;   1276					; INPUTS:   1277					;   1278					;	BUFCTR=NUMBER OF BYTES TO OUTPUT   1279					;   1280   1281						.ENABL	LSB   1282   1283   1284	004750				OUTBUF::   1285   1286						.IF  DF  $$PRI   1287   1288	004750	012767 	020000 	173226 		MOV	#20000,BUFPTR	;BUFFER IS IN EXTENDED MEMORY   1289   1290						.IFF   1291   1292						MOV	#BUFF,BUFPTR   1293   1294						.ENDC   1295   1296	004756					DIR$	#OUTPUT		;OUTPUT THE BUFFER TO THE SCREEN   1297   1298         1299						.IF  DF  $$PRI   1300   1301   1302	004764	005767 	173352 			TST	DSPFLG		;HAVE WE UPDATED ONE OF SPECIAL DISPLAYS   1303	004770	001036 				BNE	5$   1304   1305	004772	005767 	173630 			TST	PRTFLG		;DO WE WANT TO UPDATE BUFFER FOR HARDCOPY?   1306	004776	001433 				BEQ	5$		;IF EQ THEN NO   1307   1308	005000	012767 	000001 	174340 		MOV	#1,DAT+4	;SET CODE FOR UPDATE   1309	005006	016767 	173174 	174334 		MOV	BUFCTR,DAT+6	;PASS TO PRINT NO. OF CHARACTERS IN BUFFER   1310	005014					DIR$	#SEND,DIRER      R	;PASS THE INFORMATION TO THE HARDCOPY TASK   1311	005030	012767 	000006 	173006 		MOV	#6,WAIT+W.TSEF	;SET FLAG NUMBER   1312	005036					DIR$	#WAIT,DIRERR	;WAIT TILL HARDCOPY IS FINISHED BEFORE RESUMING   1313	005052					DIR$	#CLEAR,DIRERR	;CLEAR THE FLAG FOR NEXT TIME   1314   1315   1316	005066	005767 	173256 		5$:	TST	PRT.OK		;IS HARDCOPY BUFFER READY TO BE OUTPUT?   1317	005072	001433 				BEQ	10$		;IF EQ NO   1318	005074	005767 	173526 			TST	PRTFLG		;DO WE WANT A HARDCOPY?   1319	005100	001430 				BEQ      	10$   1320   1321	005102	012767 	000002 	174236 		MOV	#2,DAT+4	;SET PRINT CODE   1322	005110					DIR$	#SEND,DIRERR	;PASS THE INFORMATION TO THE HARDCOPY TASK   1323	005124	012767 	000006 	172712 		MOV	#6,WAIT+W.TSEF	;SET FLAG NUMBER   1324	005132					DIR$	#WAIT,DIRERR	;WAIT TILL HARDCOPY IS FINISHED BEFORE RESUMING   1325	005146					DIR$	#CLEAR,DIRERR	;CLEAR THE FLAG FOR NEXT TIME   1326   1327	005162	005067 	173162 		10$:	CLR	PRT.OK		;DON'T WANT TO GO THROUGH THIS NEXT TIMEDEMO PROGRAM FOR TRAX (ROOT MOD      	MACRO M1110  08-FEB-79 12:12  PAGE 19-1I/O ROUTINES   1328   1329   1330						.ENDC   1331   1332	005166	005067 	173014 			CLR	BUFCTR		;CLEAR BUFFER BYTE COUNT   1333	005172					RETURN   1334   1335						.DSABL	LSB   1336   1337DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 20I/O ROUTINES   1339   1340   1341						;**************************************************   1342						;   1343							.SBTTL	COMMAND PROCESSOR ROUTINES   1344						;   1345						;**********************************      ****************   1346   1347   1348   1349					;   1350					; **-CMDAST-AST WHICH IS CALLED IF AN IO EVENT IS COMPLETED. IT SETS A FLAG   1351					;	    WHICH TELLS MAIN PROGRAM THAT USER WOULD LIKE TO REQUEST A COMMAND.   1352					;   1353   1354	005174				AST.ST:	.BLKW	2   1355   1356	005200	122716 	000003 		CMDAST:	CMPB	#3,(SP)		;IS THERE A CONTROL C IN BUFFER?   1357	005204	001003 				BNE	5$   1358	005206					EXIT$S   1359   1360	005214	012767 	000001 	173116 	5$:	MOV	#1,CMDFLG	;SET COMMAND FLAG   136      1	005222	005726 				TST	(SP)+		;REMOVE TRAP DEPENDENT PARAMETER FROM STACK   1362	005224					ASTX$S			;EXIT AST   1363   1364   1365					;   1366					; **-CMDS-ROUTINE TO PROCESS USER COMMANDS   1367					;   1368   1369   1370					;   1371					; ERROR MESSAGES:   1372					;   1373   1374   1375	005232	   103 	   117 	   115 	PROMPT:	.ASCII	/COMMAND ?/<1>   1376						.EVEN   1377   1378   1379	005244	   111 	   114 	   114 	ERR1:	.ASCII	/ILLEGAL COMMAND! COMMAND?/<1>   1380						.EVEN   1381   1382   1383	00      5276	   120 	   122 	   111 	ERR2:	.ASCII	/PRINT OPTION NOT IMPLEMENTED./<1>   1384						.EVEN   1385   1386   1387   1388						.ENABL	LSB   1389   1390   1391   1392	005334				CMDS:   1393	005334	012700 	000001 			MOV	#1,R0		;WANT A REPLY   1394	005340	012701 	005232'			MOV	#PROMPT,R1	;POINT TO "COMMAND"   1395	005344					CALL	COMMUN		;ASK USER FOR HIS COMMANDDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 20-1COMMAND PROCESSOR ROUTINES   1396   1397   1398	005350	022767 	042510 	000502       		CMP	#"HE,RECBUF	;DOES USER WANT THE HELP DISPLAY?   1399	005356	001005 				BNE	5$		;IF NE-NO   1400	005360					CALL	HELP		;DISPLAY HELP INFORMATION   1401	005364					CALL	OUTBUF   1402	005370	000761 				BR	CMDS		;GO BACK AND ASK FOR ANOTHER COMMAND   1403   1404   1405	005372	022767 	050101 	000460 	5$:	CMP	#"AP,RECBUF	;DOES USER WANT TO SWITCH TO ANOTHER APPLICATION?   1406	005400	001004 				BNE	10$   1407	005402					CALL	PARNME		;GET NEW PARTITION NAME AND MAPPING ADDRESS   1408	005406	000167 	000412 	      		JMP	99$   1409   1410	005412	022767 	051120 	000440 	10$:	CMP	#"PR,RECBUF	;DO WE WANT PRINT OPTION   1411	005420	001004 				BNE	11$   1412   1413   1414						.IF  NDF  $$PRI   1415   1416					; TELL USER THAT PRINT COMMAND NOT IMPLEMENTED   1417   1418						CLR	R0		;NO REPLY NEEDED   1419						MOV	#ERR2,R1	;POINT TO ERROR MESSAGE   1420						CALL	COMMUN   1421						BR	CMDS   1422   1423   1424						.ENDC   1425   1426   1427						.IF  DF  $$PRI   1428	005422					CALL	PRINT		;SPAWN THE PRINT TASK   1429	00      5426	000167 	000372 			JMP	99$   1430						.ENDC   1431   1432   1433	005432	022767 	050116 	000420 	11$:	CMP	#"NP,RECBUF	;ARE WE CANCELLING PRINT OPTION?   1434	005440	001015 				BNE	12$   1435	005442	005067 	173160 			CLR	PRTFLG		;CANCEL PRINT OPTION   1436   1437						.IF  DF  $$PRI   1438	005446	012767 	000003 	173672 		MOV	#3,DAT+4	;SET EXIT FUNCTION CODE   1439	005454					DIR$	#SEND,DIRERR	;TELL HRDCPY TASK TO EXIT   1440						.ENDC   1441   1442   1443	005470	000167 	000330 			JMP	99$   1444   1445	0      05474	022767 	051106 	000356 	12$:	CMP	#"FR,RECBUF	;DOES USER WANT TO CHANGE UPDATE FREQUENCY OF DISPLAY   1446	005502	001024 				BNE	16$   1447   1448   1449   1450					;   1451					; PROCESS FREQUENCY OF DISPLAY UPPDATE CHANGE   1452					;DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 20-2COMMAND PROCESSOR ROUTINES   1453   1454	005504	012700 	006060'			MOV	#RECBUF,R0	;POINT TO ARGUMENT   1455	005510	062700 	000003 			ADD	#3,R0   1456	005514	005003 				CLR	R3   1457   1458	005516	1120      01 			14$:	MOVB	(R0)+,R1	;GET A DIGIT   1459	005520	162701 	000060 			SUB	#60,R1		;CONVERT FROM ASCII   1460	005524	005701 				TST	R1   1461	005526	002407 				BLT	15$		;IF LT THEN NOT A NUMBER   1462	005530	020127 	000011 			CMP	R1,#9.   1463	005534	003004 				BGT	15$		;IF GT THEN NOT A NUMBER EITHER   1464   1465	005536	070327 	000012 			MUL	#12,R3		;RAIZE NUMBER ONE POWER OF TEN   1466	005542	060103 				ADD	R1,R3		;THEN ADD NEW UNITS   1467	005544	000764 				BR	14$   1468   1469	005546	010367 	172572 		15      $:	MOV	R3,UPD.FR	;REPLACE WITH NEW FREQUENCY   1470	005552	000524 				BR	99$   1471   1472   1473   1474	005554	022767 	054105 	000276 	16$:	CMP	#"EX,RECBUF	;DO WE WANT TO EXIT THE PROGRAM   1475	005562	001017 				BNE	20$		;IF NE NO   1476   1477   1478						.IF  DF  $$PRI   1479   1480	005564	005767 	173036 			TST	PRTFLG		;IS THE HARDCOPY TASK SPAWNED?   1481	005570	001411 				BEQ	161$		;IF EQ THEN ITS NOT - NO NEED TO STOP IT   1482   1483	005572	012767 	000003 	173546 		MOV	#3,DAT+4	;SET UP CODE FOR PRIN      T TO EXIT   1484	005600					DIR$	#SEND,DIRERR   1485   1486						.ENDC   1487   1488	005614				161$:	EXIT$S   1489   1490   1491   1492	005622	012767 	000001 	172512 	20$:	MOV	#1,DSPFLG	;SET UP FLAG SO DISPLAY CHANGES RIGHT AWAY   1493   1494	005630	022767 	042515 	000222 		CMP	#"ME,RECBUF	;DO WE WANT TO SEE TST MEMORY DISPLAY?   1495	005636	001006 				BNE	21$   1496	005640	012767 	000005 	172500 		MOV	#5,DS.TYP	;SET UP DISPLAY TYPE FLAG   1497	005646					CALL	MEMINI		;INITIALIZE MEMORY BORDERS   1498	00565      2	000464 				BR	99$   1499   1500   1501	005654	022767 	052523 	000176 	21$:	CMP	#"SU,RECBUF	;DO WE WANT SUMMARY DISPLAY?   1502	005662	001004 				BNE	22$   1503	005664	012767 	000001 	172454 		MOV	#1,DS.TYP   1504	005672	000454 				BR	99$   1505   1506	005674	022767 	051515 	000156 	22$:	CMP	#"MS,RECBUF	;DO WE WANT THE MESSAGE DISPLAY?   1507	005702	001004 				BNE	23$   1508	005704	012767 	000002 	172434 		MOV	#2,DS.TYP   1509	005712	000444 				BR	99$DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79       12:12  PAGE 20-3COMMAND PROCESSOR ROUTINES   1510   1511	005714	022767 	051524 	000136 	23$:	CMP	#"TS,RECBUF	;DO WE WANT TST DISPLAY?   1512	005722	001004 				BNE	24$   1513	005724	012767 	000003 	172414 		MOV	#3,DS.TYP   1514	005732	000434 				BR	99$   1515   1516	005734	022767 	051124 	000116 	24$:	CMP	#"TR,RECBUF	;DO WE WANT TRANSACTION DISPLAY?   1517	005742	001006 				BNE	25$   1518	005744					CALL	TRINIT		;CALL THE INITIALIZATION ROUTINE   1519	005750	012767 	000004 	172370 		MOV	#4,DS.TYP   1520	0057      56	000422 				BR	99$   1521   1522   1523	005760	022767 	054503 	000072 	25$:	CMP	#"CY,RECBUF	;DO WE WANT TO CYCLE THROUGH DISPLAYS   1524	005766	001006 				BNE	30$   1525	005770	012767 	000001 	172350 		MOV	#1,DS.TYP	;START WITH SUMMARY DISPLAY   1526	005776	005267 	172350 			INC	CYCLE		;SET CYCLE FLAG   1527	006002	000410 				BR	99$   1528   1529	006004	012700 	000001 		30$:	MOV	#1,R0		;WANT A REPLY   1530	006010	012701 	005244'			MOV	#ERR1,R1	;POINT TO ERROR MESSAGE   1531									;(COMMAND WAS NOT A LEG      AL COMMAND.)   1532   1533	006014					CALL	COMMUN   1534	006020	000167 	177346 			JMP	5$   1535   1536   1537	006024				99$:	RETURN   1538   1539DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 21COMMAND PROCESSOR ROUTINES   1541   1542   1543						;***************************************************   1544						;   1545							.SBTTL	COMMUNICATION WITH USER ROUTINE   1546						;   1547						;***************************************************   1548   1549   1550   1551   1552					;   155      3					; **-COMMUN-OUTPUTS A MESSAGE TO USER & AND IF REQUIRED ACCEPTS A REPLY.   1554					;   1555					; INPUTS:   1556					;   1557					;	R0 = REPLY FLAG   1558					;	     IF R0 = 1 MESSAGES REQUIRES A REPLY   1559					;   1560					;	R1 = POINTER TO STARTING ADDRESS OF MESSAGE   1561					;   1562					; OUTPUT:   1563					;   1564					;	RECBUF CONTAINS USER'S REPLY TO MESSAGE   1565					;   1566					; NOTE:   1567					;   1568					;	IF TERMINAL IS CURSOR CONTROLLED MESSAGE IS OUTPUT STARTING ON COLUMN 1   1      569					;	OF ROW 23 AND CURSOR IS THEN POSITIONED TO COLUMN 1 OF ROW 24 TO ACCEPT   1570					;	THE REPLY.   1571					;   1572   1573						.ENABL	LSB   1574   1575   1576	006026				IO:	QIOW$	,1,1   1577	006056	000000 			TERFLG:	.WORD	0		;IF = 1 THEN NOT A CURSOR CONTROLLED DEVICE   1578	006060				RECBUF:: .BLKW	4   1579	006070	   033 	   131 	   066 	LINE23:	.ASCIZ	<ESC><CD><31.+23.><0><31.+1><ESC><ES>   1580	006100	   033 	   131 	   067 	LINE24:	.ASCIZ	<ESC><CD><31.+24.><0><31.+1>/: /   1581   1582   1583	      006110				COMMUN::   1584   1585					;   1586					; POSITION CURSOR:   1587					;   1588	006110	005767 	177742 			TST	TERFLG			;IS TERMINAL CURSOR CONTROLLED?   1589	006114	001017 				BNE	10$			;IF NE-NO   1590   1591   1592	006116	012767 	000000G	177704 		MOV	#IO.WAL,IO+Q.IOFN	;SET I/O FUNCTION TO WRITE ALL   1593	006124	012767 	006070'	177710 		MOV	#LINE23,IO+Q.IOPL	;INSERT ADDRESS OF CURSOR CONTROL   1594										;CHARACTERS INTO DPB   1595	006132	012767 	000010 	177704 		MOV	#8.,IO+Q.IOPL+2		;AND NUMBE      R OF CHARACTERS   1596	006140					DIR$	#IO,DIRERR		;POSITION CURSOR   1597DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 21-1COMMUNICATION WITH USER ROUTINE   1598					;   1599					; DETERMINE OUTPUT MESSAGE SIZE   1600					;   1601   1602	006154	005002 			10$:	CLR	R2		;INITIALIZE COUNTER   1603	006156	010167 	177660 			MOV	R1,IO+Q.IOPL	;SAVE POINTER TO OUTPUT MESSAGE   1604   1605	006162	005202 			15$:	INC 	R2		;ONE MORE CHARACTER   1606	006164	122127 	000001 			CMPB	(R1)+,#1	;HAVE WE       REACHED THE END OF THE MESSAGE?   1607	006170	001374 				BNE	15$		;IF NE - NO   1608   1609	006172	005302 				DEC	R2		;COUNTED ONE TOO MANY   1610   1611   1612					;   1613					; OUTPUT MESSAGE   1614					;   1615	006174	010267 	177644 			MOV	R2,IO+Q.IOPL+2	;INSERT SIZE OF MESSAGE INTO DPB   1616   1617	006200	005767 	177652 			TST	TERFLG		;IS TERMINAL CURSOR CONTROLLED?   1618	006204	001406 				BEQ	20$		;IF EQ - YES   1619   1620	006206	012767 	000000G	177614 		MOV	#IO.WVB,IO+Q.IOFN ;SET FUNCTION NAME   1      621	006214	112767 	000060 	177624 		MOVB	#'0,IO+Q.IOPL+4	;TWO LINE FEEDS AND CARRIAGE RETURN   1622   1623	006222				20$:	DIR$	#IO,DIRERR	;OUTPUT MESSAGE   1624   1625   1626   1627					;   1628					; GET REPLY   1629					;   1630   1631	006236	005700 				TST	R0		;DO WE NEED A REPLY?   1632	006240	001447 				BEQ	99$		;IF EQ - NO   1633   1634   1635	006242	012767 	020040 	177610 		MOV	#"  ,RECBUF	;CLEAN UP   1636	006250	012767 	020040 	177604 		MOV	#"  ,RECBUF+2   1637	006256	012767 	020040 	177600 		MOV	#"        ,RECBUF+4   1638   1639	006264	005767 	177566 			TST	TERFLG		;IS TERMINAL CURSOR CONTROLLED?   1640   1641	006270	001014 				BNE	30$		;IF NE - NO   1642   1643					;   1644					; POSITION CURSOR   1645					;   1646   1647	006272	012767 	006100'	177542 		MOV	#LINE24,IO+Q.IOPL ;ADDRESS OF CURSOR CONTROL CHARACTERS   1648	006300	012767 	000006 	177536 		MOV	#6,IO+Q.IOPL+2	;NUMBER OF CHARACTERS   1649	006306					DIR$	#IO,DIRERR	;POSITION CURSOR   1650   1651   1652	006322	012767 	000000G	177500 	30$:	MOV	#IO.      RVB,IO+Q.IOFN ;READ VIRTUAL BLOCK - FOR NON CURSOR CONTROLLED   1653   1654	006330	012767 	006060'	177504 	40$:	MOV	#RECBUF,IO+Q.IOPL ;ADDRESS OF REPLY BUFFERDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 21-2COMMUNICATION WITH USER ROUTINE   1655	006336	012767 	000010 	177500 		MOV	#10,IO+Q.IOPL+2	;SIZE OF REPLY MESSAGE   1656   1657	006344					DIR$	#IO,DIRERR	;ASK FOR THE REPLY   1658   1659   1660	006360				99$:   1661	006360					RETURNDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08      -FEB-79 12:12  PAGE 22COMMUNICATION WITH USER ROUTINE   1663   1664   1665						;*******************************************   1666						;   1667							.SBTTL	DIRECTIVE ERROR ROUTINE   1668						;   1669						;*******************************************   1670   1671   1672   1673   1674   1675	006362	   077 	   040 	   106 	MESS:	.ASCII	/? FATAL DIRECTIVE ERROR - ERROR CODE IS - /   1676	006434				ERRNUM:	.BLKB	6   1677   1678	006442	   040 	   040 	   114 		.ASCII	/  LOCATION: /   1679	006456				LOCNUM:	.      BLKB	6   1680   1681		000102 			SIZE=.-MESS   1682   1683   1684   1685	006464	016701 	000000G		DIRERR:: MOV	$DSW,R1		;DIRECTIVE STATUS TO R1   1686	006470	005401 				NEG	R1		;COMPLEMENT IT   1687	006472	012700 	006434'			MOV	#ERRNUM,R0	;POINT TO OUTPUT BUFFER DIRECTIVE STATUS   1688	006476	005002 				CLR	R2		;SUPPRESS LEADING ZEROES   1689	006500					CALL	$CBDMG		;CONVERT BINARY TO ASCII   1690   1691	006504	012601 				MOV	(SP)+,R1	;NEXT INSTR. LOCATION ADDRESS TO R1   1692	006506	012700 	006456'			MOV	#LO      CNUM,R0	;POINT TO OUTPUT BUFFER   1693	006512	005202 				INC	R2		;DO NOT ZERO SUPPRESS   1694	006514					CALL	$CBOMG		;CONVERT BINARY TO OCTAL ADDRESS   1695   1696	006520					QIOW$C	IO.WAL,1,1,0,STATUS,,<MESS,SIZE>   1697	006526					EXIT$S   1698   1699DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 23DIRECTIVE ERROR ROUTINE   1701   1702   1703						;*********************************************   1704						;   1705							.SBTTL	MISCELLANEOUS ROUTINES   1706						;   1707						;*******      **************************************   1708   1709   1710					;   1711					; **- JSTFY-CONVERTS A NUMBER TO ITS ASCII OUTPUT EQUIVALENT, RIGHT   1712					;           JUSTIFYING THE NUMBER IN THE OUTPUT FIELD.   1713					;   1714					; INPUTS:   1715					;   1716					;	R0=POINTER TO STARTING ADDRESS OF THE OUTPUT FIELD   1717					;	R1=NUMBER TO BE CONVERTED   1718					;   1719					; NOTE: ROUTINE WILL ONLY RIGHT JUSTIFY NUMBERS UP TO 4 DECIMAL DIGITS IN LENGTH   1720					;   1721   1722   1723						.ENABL	      LSB   1724   1725   1726	006534				JSTFY1::   1727   1728	006534	022701 	023420 			CMP	#10000.,R1	;IS IT FIVE DIGITS   1729	006540	003426 				BLE	10$		;YES - SO GO ON   1730	006542	112720 	000040 			MOVB	#' ,(R0)+	;CLEAR THE 10000'S SPACE   1731   1732   1733	006546				JSTFY::   1734   1735	006546	022701 	001750 			CMP	#1000.,R1	;IS IT 4 DIGITS?   1736	006552	003421 				BLE	10$		;YES, SO GO ON   1737	006554	112720 	000040 			MOVB	#' ,(R0)+	;CLEAR THE 1000'S SPACE   1738   1739	006560	022701 	000144 			CMP	#      100.,R1	;IS IT 3 DIGITS?   1740	006564	003414 				BLE	10$   1741	006566	112720 	000040 			MOVB 	#' ,(R0)+   1742   1743	006572	022701 	000012 			CMP	#10.,R1		;IS IT 2 DIGITS?   1744	006576	003407 				BLE 	10$   1745	006600	112720 	000040 			MOVB	#' ,(R0)+   1746   1747	006604	005701 				TST	R1		;IS IT AT LEAST 1 DIGIT?   1748	006606	001003 				BNE	10$   1749	006610	112720 	000060 			MOVB	#'0,(R0)+   1750	006614	000403 				BR	15$   1751   1752	006616	005002 			10$:	CLR	R2		;SUPPRESS LEADING ZEROES   1753	006      620					CALL	$CBDMG		;CONVERT TO ASCII   1754	006624				15$:	RETURN   1755   1756   1757DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 23-1MISCELLANEOUS ROUTINES   1758   1759					;   1760					; **-PRCNT -INTERNAL ROUTINE TO CALCULATE PERCENTAGES   1761					;   1762					; INPUTS:   1763					;   1764					;	R0=DIVIDEND   1765					;	R2=DIVISOR   1766					;   1767					; OUTPUTS:   1768					;   1769					;	R0=QUOTIENT   1770					;   1771   1772	006626	012701 	000144 		PRCNT::	MOV	#100.,R1	;SE      T UP FOR MULTIPLICATION   1773	006632					CALL	$MUL		;MULTIPLY BY 100. SO LATER CAN GET PERCENTAGE   1774	006636	010100 				MOV	R1,R0		;SWITCH INTO DIVIDEND REGISTER   1775	006640	010201 				MOV	R2,R1		;GET DIVISOR   1776	006642					CALL	$DIV		;DO THE DIVISION   1777	006646					RETURN   1778   1779   1780					;   1781					; **-ACBD-THIS ROUTINE PROVIDES THE KT AND BIAS ADDRESSES OF A SYSTEM BDB   1782					;   1783					; INPUTS:   1784					;   1785					; 	R1=BDB ADDRESS   1786					;   1787					; OUTPUTS:   1      788					;   1789					;	R4=KT ADDRESS   1790					;   1791					;	R5=BIAS   1792					;   1793   1794	006650	005004 			ACBD::	CLR	R4		;RESET R4   1795	006652	010105 				MOV	R1,R5		;MOV BDB ADDRESS TO R5   1796	006654	073427 	000012 			ASHC	#10.,R4		;GET PAGE VALUE IN R4   1797	006660	072527 	177766 			ASH	#-10.,R5	;BIAS IS NOW IN R5   1798	006664	042705 	177700 			BIC	#177700,R5	;CLEAR OUT ANY GARBAGE   1799	006670					RETURN   1800   1801   1802   1803		000422'				.END 	DEMODEMO PROGRAM FOR TRAX (ROOT MOD	MAC      RO M1110  08-FEB-79 12:12  PAGE 23-2SYMBOL TABLEACBD    006650RG 	C.RRBA= 000002   	F.FFBY= 000014   	H.IPC   000016   	L$$11R= 000000ALUN    000000R  	DAT     001342R  	F.FNAM= 000110   	H.IPS   000014   	MAXBS   003734RAPPSUM= ****** GX	DEAD    004170R  	F.FNB = 000102   	H.ISP   000020   	MEM   = ****** GXAST.ST  005174R  	DEMO    000422R  	F.FTYP= 000116   	H.LUN   000076   	MEMINI= ****** GXAS.DEL= 000010   	DIRERR  006464RG 	F.FVER= 000120   	H.NLUN  000074   	MEMSUM= ****** GXAS.EXT= 000004   	DSFUN       = 000172R  	F.HIBK= 000004   	H.NML   000061   	MESS    006362RAS.RED= 000001   	DSKSUM= ****** GX	F.LUN = 000042   	H.ODVA  000022   	MIN     002670RAS.WRT= 000002   	DSPFLG  000342R  	F.MBCT= 000054   	H.ODVL  000024   	MRKTIM  000020RA$$CHK= 000000   	DSTIM   002520R  	F.MBC1= 000055   	H.OVLY  000054   	MSG     001436RA$$CPS= 000000   	DS.TYP  000346R  	F.MBFG= 000056   	H.PFVA  000032   	MSGE  = ****** GXA$$NSI= 000000   	D$$IAG= 000000   	F.NRBD= 000024   	H.RCVA  000036   	MSG1    001460RA$$PRI= 0000      00   	D$$ISK= 000000   	F.NREC= 000030   	H.RRVA  000062   	M$$CRB= 000124A$$TRP= 000000   	D$$L11= 000001   	F.OVBS= 000030   	H.SPRI  000060   	M$$CRX= 000000A.IOC   000003   	D$$SHF= 000000   	F.RACC= 000016   	H.TKVA  000026   	M$$EXT= 000000A.LGTH= 000014   	D$$WCK= 000000   	F.RATT= 000001   	H.TKVL  000030   	M$$FCS= 000000A.LULU= 000002   	D$$YNC= 000000   	F.RCNM= 000034   	H.VEXT  000056   	M$$K11= 000000A.LUNA= 000004   	D$$YNM= 000000   	F.RCTL= 000017   	H.WND   000044   	M$$MGE= 000000A.LUNU=       000006   	D$$ZMD= 000000   	F.RSIZ= 000002   	IE.ACT= ****** GX	M$$MUP= 000000A.MPCT  000011   	D$$Z11= 000004   	F.RTYP= 000000   	IE.ITS= ****** GX	M$$NET= 000000A.PCB   000012   	EL    = 000113   	F.SEQN= 000100   	IO      006026R  	M$$OVR= 000000A.PCBL  000000   	ERRNUM  006434R  	F.SPDV= 000072   	IOATA   000220R  	M$$XLN= 000400A.PRI   000002   	ERR1    005244R  	F.SPUN= 000074   	IOCLR   000250R  	M.KTAE= 000010A.STAT  000010   	ERR2    005276R  	F.STBK= 000036   	IO.ATA= ****** GX	M.KTEF= 000002A.TC      B   000004   	ES    = 000112   	F.UNIT= 000136   	IO.RVB= ****** GX	M.KTMG= 000004A.TCBL  000006   	ESC   = 000033   	F.URBD= 000020   	IO.WAL= ****** GX	M.KTUN= 000006BUFCTR= 000206RG 	EXETSK  003120R  	F.VBN = 000064   	IO.WVB= ****** GX	NCALLS  004256RBUFPTR= 000204RG 	E$$DVC= 000000   	F.VBSZ= 000060   	IS.SUC= ****** GX	NEWCP0  003466RCACHE   004270R  	E$$NSI= 000000   	GETIME  000014R  	I$$RAR= 000000   	NEWCP1  003470RCACHMG  004221R  	E$$PER= 000000   	G$$TPP= 000000   	I$$RDN= 000000   	NEWSEC  002      666RCACLOC  004214R  	E$$XPR= 000000   	G$$TTK= 000000   	JSTFY   006546RG 	NXTTSK  003130RCADR    004210RG 	FA.SHR= ****** GX	G.TIBA= 000002   	JSTFY1  006534RG 	N$$CON= 000500CALLS   004176R  	FD.RWM= ****** GX	G.TICP= 000016   	K$$CNT= 177546   	N$$LDV= 000001CD    = 000131   	FO.RD = ****** GX	G.TICT= 000014   	K$$CSR= 177546   	N$$MOV= 000011CLEAR   000010R  	FRAGS   003740R  	G.TIDA= 000004   	K$$IEN= 000115   	N$$MXM= 001100CLRSCR  000300R  	F$$LPP= 000000   	G.TIHR= 000006   	K$$LDC= 000001   	N$$TM      O= 000012CMDAST  005200R  	F$$LVL= 000001   	G.TIMI= 000010   	K$$TPS= 000074   	N$$UMR= 000024CMDFLG  000340R  	F.ACTL= 000076   	G.TIMO= 000002   	LD$DB = 000000   	N.DID = 000024CMDLEN= 000050   	F.ALOC= 000040   	G.TISC= 000012   	LD$DR = 000000   	N.DVNM= 000032CMDLIN  000556R  	F.BBFS= 000062   	G.TIYR= 000000   	LD$LP = 000000   	N.FID = 000000CMDS    005334R  	F.BDB = 000070   	HELP  = ****** GX	LD$MM = 000000   	N.FNAM= 000006COMMUN  006110RG 	F.BGBC= 000057   	HITS    004202R  	LD$NT = 000000   	N      .FTYP= 000014COM.AD  004206RG 	F.BKDN= 000026   	HO    = 000110   	LD$RH = 000000   	N.FVER= 000016CPUCNT  003472R  	F.BKDS= 000020   	HOURS   002672R  	LD$TT = 000000   	N.NEXT= 000022CPULOC  003430R  	F.BKEF= 000050   	HRM     002716R  	LD$VT = 000000   	N.STAT= 000020CPUMSG  003435R  	F.BKP1= 000051   	H$$RTZ= 000074   	LD$XM = 000000   	N.UNIT= 000034CSIZE   004212RG 	F.BKST= 000024   	H.CSP   000000   	LINE23  006070R  	OF.HIT  000360RGCYCLE   000352RG 	F.BKVB= 000064   	H.CUIC  000010   	LINE24  00610      0R  	OF.RD   000354RGC$$CDA= 000002   	F.CHR = 000075   	H.DSW   000046   	LOCKED  004174R  	OF.WRT  000356RGC$$CKP= 000000   	F.CNTG= 000034   	H.DUIC  000012   	LOCNUM  006456R  	OLDCP0  003462RC$$CSR= 177440   	F.DFNB= 000046   	H.EFLM  000004   	LOOP    000776R  	OLDCP1  003464RC$$LIS= 000000   	F.DSPT= 000044   	H.EFSV  000040   	LPSTCK  003460R  	OLDSEC  002664RC$$ORE= 002000   	F.DVNM= 000134   	H.FCS   000050   	LSTTSK  003124R  	OTICKS  003454RC$$RSH= 177564   	F.EFBK= 000010   	H.FORT  000052   	L      $$ASG= 000000   	OUTBUF  004750RGC$$RUN= 000000   	F.EFN = 000050   	H.FPSA  000042   	L$$DRV= 000000   	OUTCHR  004716RC$$XDB= 000000   	F.EOBB= 000032   	H.FPVA  000034   	L$$LDR= 000000   	OUTLIN  004672RGC.LEEF= 000002   	F.ERR = 000052   	H.GARD  000072   	L$$PTO= 000037   	OUTPUT  000170RGC.RABA= 000002   	F.FACC= 000043   	H.HDLN  000002   	L$$P11= 000001   	OV$DB = 000000DEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 23-3SYMBOL TABLEOV$DR = 000000   	QUESUM= ****** GX	SEND    00      0066R  	T$$CCO= 000000   	V$$TLD= 000120O$$LAP= 000000   	QUE.ST  002252RG 	SETFLG  000032R  	T$$CTR= 000000   	V$$TLM= 000205PARADR  001532R  	Q$$OPT= 000017   	SIZE  = 000102   	T$$ESC= 000000   	V$$TRM= 000000PARNME  001534R  	Q.IOAE= 000012   	SNDBUF  002212R  	T$$GMC= 000000   	WAIT    000042RPOOL    003726R  	Q.IOEF= 000006   	SPAWN   000100R  	T$$GTS= 000000   	WDB     000402RPOOLIN  003776R  	Q.IOFN= 000002   	SPAWN2  000132R  	T$$HLD= 000000   	WINDOW  000046RPOOLMG  003747R  	Q.IOLU= 000004   	SRD      A    000164R  	T$$J16= 000003   	WS.CRW= 100000POOLOC  003742R  	Q.IOPL= 000014   	STATUS  000334R  	T$$KMG= 000000   	WS.DEL= 000010PRCNT   006626RG 	Q.IOPR= 000007   	STOP    000036R  	T$$LWC= 000000   	WS.ELW= 020000PRINT   000630R  	Q.IOSB= 000010   	S$$ECC= 000000   	T$$PS = 000000   	WS.EXT= 000004PROMPT  005232R  	RCVBUF  002214R  	S$$WPC= 000036   	T$$RAX= 000000   	WS.MAP= 000200PRTAST  001400R  	RCVD    002174R  	S$$WPR= 000005   	T$$RNE= 000000   	WS.RCX= 000100PRTFLG  000626R  	RCVDAT  000056R        	S$$YSZ= 050000   	T$$RPR= 000000   	WS.RED= 000001PRT.OK  000350RG 	RCVDT = 002220RG 	S.BFHD= 000020   	T$$RST= 000000   	WS.RRF= 010000PS.APR= 000007   	RDB     000362R  	S.DABA= 000006   	T$$RUB= 000000   	WS.UNM= 040000PS.CHK= 010000   	RECBUF  006060RG 	S.DAEF= 000010   	T$$SMC= 000000   	WS.WRT= 000002PS.CKP= 040000   	REGION  000052R  	S.DATN= 000002   	T$$SYN= 000000   	WS.64B= 000400PS.CKR= 020000   	RSUM    002154R  	S.ETEF= 000002   	T$$TRW= 000000   	W.BATT  000006PS.COM= 000200   	RS.ATT= 00004      0   	S.FATT= 000016   	T$$UTB= 000000   	W.BFPD  000014PS.DEL= 000010   	RS.CRR= 100000   	S.FDB = 000140   	T$$VBF= 000000   	W.BHVR  000004PS.DRV= 000020   	RS.DEL= 000010   	S.FNAM= 000006   	T$$ZAN= 000300   	W.BLGH  000020PS.FXD= 004000   	RS.EXT= 000004   	S.FNB = 000036   	T$$18S= 000000   	W.BLPD  000016PS.LIO= 001000   	RS.MDL= 000200   	S.FNBW= 000017   	T.ACTL= ****** GX	W.BLVR  000002PS.NSF= 000400   	RS.NDL= 000100   	S.FNTY= 000004   	T.ASTL= ****** GX	W.BNPD  000015PS.OUT= 100000   	RS.NEX= 0      00020   	S.FTYP= 000002   	T.NAM = ****** GX	W.BOFF  000012PS.PER= 002000   	RS.RED= 000001   	S.NFEN= 000020   	T.PCB = ****** GX	W.BPCB  000000PS.PIC= 000100   	RS.UNM= 040000   	S.PWCA= 000024   	T.STAT= ****** GX	W.BSIZ  000010PS.SYS= 000040   	RS.WRT= 000002   	S.PWCL= 000026   	T.ST2 = ****** GX	W.NAPR= 000001P$$D70= 000000   	R$$DSP= 000000   	S.PWEA= 000020   	T2.AST= ****** GX	W.NBAS= 000002P$$LAS= 000000   	R$$EXV= 000000   	S.PWEF= 000016   	T2.DST= ****** GX	W.NID = 000000P$$OFF= 000000   	R$$HD      V= 000000   	S.PWES= 000022   	T2.SPN= ****** GX	W.NLEN= 000012P$$RFL= 000000   	R$$H11= 000003   	S.PWTN= 000002   	T2.STP= ****** GX	W.NLGH= 000020P$$RTY= 000000   	R$$JPO= 000000   	S.PWUG= 000015   	T2.WFR= ****** GX	W.NOFF= 000010P$$TPT= 000000   	R$$JP1= 000003   	S.PWUM= 000014   	UISAR0= 177640   	W.NRID= 000006P.ALLO= ****** GX	R$$LKL= 000001   	S.PWVT= 000030   	UISAR1= 177642   	W.NSIZ= 000004P.BLKS  000016   	R$$MOF= 000000   	S.PWXX= 000006   	UISAR2= 177644   	W.NSRB= 000016P.BUSY  000024   	R      $$MPL= 000000   	S.RDAE= 000002   	UISAR3= 177646   	W.NSTS= 000014P.DEAD= ****** GX	R$$M11= 000003   	S.TSEF= 000002   	UISAR4= 177650   	W.TSEF= 000002P.HDR = ****** GX	R$$NDC= 000006   	TCALLS  004200R  	UISAR5= 177652   	X$$M11= 000002P.HIT = ****** GX	R$$NDH= 000226   	TERFLG  006056R  	UISAR6= 177654   	$BASE = ****** GXP.IOC   000003   	R$$NDL= 000001   	THITS   004204R  	UISAR7= 177656   	$CBDMG= ****** GXP.LNK   000000   	R$$SND= 000000   	TICKMN  003452R  	UISDR0= 177600   	$CBOMG= ****** GXP.MAIN        000012   	R$$STP= 000000   	TICKS   003456R  	UISDR1= 177602   	$CRAVL= ****** GXP.NAM   000004   	R$$11M= 000000   	TIMBUF  002424R  	UISDR2= 177604   	$CXDBL= ****** GXP.NUM = ****** GX	R.GID = 000000   	TIMLOC  002444R  	UISDR3= 177606   	$C5TA = ****** GXP.OWN   000026   	R.GLGH= 000020   	TIMMSG  002452R  	UISDR4= 177610   	$DAT  = ****** GXP.PRI   000002   	R.GNAM= 000004   	TIT1    000306R  	UISDR5= 177612   	$DIV  = ****** GXP.REL   000014   	R.GPAR= 000010   	TOTALS  003736R  	UISDR6= 177614   	$      DSW  = ****** GXP.SIZE  000016   	R.GPRO= 000016   	TRANS = ****** GX	UISDR7= 177616   	$MUL  = ****** GXP.STAT  000030   	R.GSIZ= 000002   	TRINIT= ****** GX	UNLCKD  004172R  	$PARHD= ****** GXP.SUB   000010   	R.GSTS= 000014   	TSKLOC  003102R  	UPD.FR  000344R  	$RQSCH= ****** GXP.SWSZ  000022   	R.SUTN= 000002   	TSKNAM  003110R  	UPNUM   002704R  	$SIZE = ****** GXP.TCB   000026   	R.VDBA= 000006   	TSTDSP= ****** GX	UPTIM   002674R  	$TCPU0= ****** GXP.WAIT  000020   	R.VDTN= 000002   	T$$ACR= 000000         	UPTIME  002724R  	$TCPU1= ****** GXQFDB    002014RG 	SCRTOP  001264R  	T$$BTW= 000000   	USTP    002204R  	$TIM  = ****** GXQFLUN = 000003   	SDAT    002162R  	T$$BUF= 000000   	U.STTN= 000002   	$TKTCB= ****** GXQUEINI  002254RG 	SEC     002662R  	T$$CCA= 000000   	V$$CTR= 001000   	$$CPU = ****** GXDEMO PROGRAM FOR TRAX (ROOT MOD	MACRO M1110  08-FEB-79 12:12  PAGE 23-4SYMBOL TABLE$$PRI = 000000   	$$$OST= 000004   	$$$T2 = 000004R  	.FSRCB= ****** G 	...PC2= 002154R$$$   = 000000R     003	$$$R4 = 0000   d  00   	.FINIT= ****** G 	...PC1= 002014R  	...TPC= 000020$$$ARG= 000002   	$$$T1 = 000067. ABS.	000102	   000      	006672	   001$$FSR1	000000	   002$DPB$$	000030	   003ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  10065 WORDS  ( 40 PAGES)DYNAMIC MEMORY:  11428 WORDS  ( 43 PAGES)ELAPSED TIME:  00:02:46DEMO34,DEMO34.LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,DEMO34d         ?TÓkQÁ› 8$        	.TITLE	MESSAGE DISPLAY MODULE	.SBTTL	INITIALIZATIONS	.NLIST	BEX	.MCALL	ASRDF$,INH$S,ENB$S	ASRDF$	ESC=33			;ESCAPE CHARACTER	CD=131			;CURSOR DISPLAY	ES=112			;ERASE TO END OF SCREEN	HO=110			;SEND CURSOR TO HOME POSITIONDISPL:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR	.ASCII	<ESC><ES><0><0>	;AND ERASE TO END OF SCREEN	.ASCII	<ESC><CD><31.+4.><0><31.+27.>	;POSITION CURSOR	.ASCII	/*** MESSAGE DISPLAY ***/	.ASCII	<ESC><CD><31.+5.><0><31.+3.>	.ASCII	/TRANS.    SOURCE     STAT/	.ASCII	<ESC><CD><31.+5      .><0><31.+52.>	.ASCII	/TIME    #  RTES/	.ASCII	<ESC><CD><31.+6.><0><31.+4.>	.ASCII	/NAME    STATION     NAME/	.ASCII	/     TYPE   STATUS     /	.ASCII	/QUEUED    TO GO    SIZE /<1>	.EVEN;; BUFFER TO OUTPUT MESSAGE LINE;POS:	.ASCIZ 	<ESC><CD><31.+8.><0><31.+3.>	.EVENNAME:	.ASCII	/          /SRC.ST:	.ASCII	/          /ST.NAM:	.ASCII	/          /TYPE:	.ASCII	/        /STAT:	.ASCIZ	/         /TIM.QD:	.ASCII	/          /RTE.NO:	.ASCII	/          /SIZE:	.ASCIZ  /    /<1>	.EVENEND:	.WORD	0MSG:	.ASCII	/DO YOU WANT T      O SEE REMAINDER OF DISPLAY <NO>?/<1>	.EVEN	T.NAM=0			;OVERRIDE THE TASK CONTROL BLOCK DEFINITION	.PAGE	.SBTTL	FIND MESSAGESDSKFLG:	.WORD	0MSGE::	MOV	#DISPL,R3	;POSITION POINTER TO OUTPUT BUFFER	CALL	OUTLIN	MOVB	#39.,POS+2	;RESET TO FIRST LINE OF MESSAGES	INH$S	MOV	#77406,UISDR2	;; GO THROUGH SCBS:;	CALL	SCBINI		;INITIALIZE SCB GETTING ROUTINE10$:	CALL	SCBNXT		;GET KT - ADDRESS OF NEXT SCB	TST	UISAR4	BEQ	15$		;IF EQUAL THEN WE HAVE LOOKED AT ALL SCBS	MOV	100000+S.FST,R1	;POINT TO FIRST BDB11$:	BEQ	10$		;IF E      Q-NO BDB	CALL	ACBD		;GET PAGE NO. AND OFFSET	MOV	CADR,UISAR2	;POINT TO BASE OF CACHE	ADD	R4,UISAR2	;AND TO PAGE OF THIS BDB	BITB	#BF.OND,B.FLG+40000(R5)	;IS MESSAGE ON DISK?	BNE	12$		;IF NE-YES ;CAN'T DISPLAY MESSAGE	CALL	DSPMSG		;DISPLAY THIS MESSAGE	TST	POS+2		;IF POS+2 EQUALS 0 THEN AT BOTTOM OF SCREEN				;AND DON'T WANT ANY MORE MESSAGES DISPLAYED		BEQ	20$12$:	CMPB	#MMLUN,40000+B.LUN(R5)	;WE HAVE JUST SWITCHED BACK TO CONTEXT					;SWITCHING INHIBITED. IT IS POSSIBLE 					;THAT THIS BDB WAS REUSED SINCE       WE LAST					;LOOKED AT IT. ALL THE CHECKING NOW WILL					;NOT GUARANTEE THAT WE ARE STILL LOOKING					;AT THE SAME BDB BUT THAT AT LEAST ITS O					;POINTING TO A MCB	BNE	10$			;IF NE - I GUESS WE LOST IT	MOV	40000+B.LINK(R5),R1 ;POINT TO NEXT BDB	BR	11$		;GO BACK INTO LOOP;; GO THROUGH CCBS:;15$:	CALL	CCBINI		;INITIALIZE CCB GETTING ROUTINE16$:	CALL	CCBNXT		;GET KT ADDRESS OF NEXT CCB	TST	R0		;IF R0=0 THEN NO MORE CCBS TO PROCESS	BEQ	20$	MOV	60000+C.SLT(R0),R1 ;POINT TO BDB FOR SLOT MESSAGE	BEQ	16$		;IF EQ       - NO BDB	CALL	ACBD	MOV	CADR,UISAR2	ADD	R4,UISAR2	BITB	#BF.OND,B.FLG+40000(R5)	BNE	16$		;IF NE - MESSAGE ON DISK - CAN'T DISPLAY IT	CALL	DSPMSG	TST	POS+2	BNE	16$		;GO BACK INTO LOOP20$:	ENB$S			;ENABLE CONTEXT SWITCHING	RETURN	.PAGE	.SBTTL	DISPLAY ONE MESSAGE LINEDSPMSG:	MOV	UISAR3,-(SP)	;SAVE KT-ADDRESSES	MOV	UISAR4,-(SP)	MOV	B.ADDR+40000(R5),UISAR3	;POINT TO MESSAGE CONTROL BLOCK;; GET TRANSACTION NAME;	MOV	M.CCB+60000,R0	;POINT TO CCB FOR MESSAGE	MOV	COM.AD,UISAR4	;POINT TO COMMON AREA	MOV	C.TDB+100000(R0      ),R0 ;AND TO TRANSACTION DESCRIPTION TABLE					;FOR THIS MESSAGE	MOV	T.NAM+100000(R0),NAME	;GET TRANSACTION NAME	MOV	T.NAM+2+100000(R0),NAME+2	MOV	T.NAM+4+100000(R0),NAME+4;; GET MESSAGE TYPE;	BITB	#BF.ALC,B.FLG+40000(R0)	;IS IS A MESSAGE?	BEQ	10$		;NO!	MOV	#"ME,TYPE	;GET THE WORD MESS INTO BUFFER	MOV	#"SS,TYPE+2	BR	20$10$:	MOV	#"SL,TYPE	;GET THE WORD SLOT INTO BUFFER	MOV	#"OT,TYPE+2	;;; GET MESSAGE STATUS;20$:	BITB	M.FLG+60000,#MF.ACT ;IS MESSAGE ACTIVE?	BEQ	25$		;IF EQ THEN ITS INACTIVE	MOV	#"AC,STAT	;GET       THE WORD "ACT" INTO BUFFER	MOVB	#'T,STAT+2	25$:	MOV	#"NA,STAT	;GET THE WORD "NACT" INTO BUFFER	MOV	#"CT,STAT+2	;; GET THE TIME MESSAGE WAS QUEUED;30$:	MOV	#TIM.QD,R0	;POINTER TO OUTPUT BUFFER	MOV	#60000+M.TIM,R1	;POINT TO TIME BUFFER IN MCB	MOV	#3,R2		;GET HOURS-MINUTES-SECONDS ASCII	CALL	$TIM		;GET TIME IN FORMAT THAT CAN BE OUTPUT;; GET THE NUMBER OF ROUTES MESSAGE MUST GO THRU BEFORE IT IS PROCESSED;	MOVB	M.NOR+60000,RTE.NO+3 ;PUT NUMBER OF ROUTES INTO BUFFER	BISB	#60,RTE.NO+3	;CONVERT TO ASCII;; GET ME      SSAGE SIZE;	MOV	#SIZE,R0	;POINT TO SIZE AREA IN DISPLAY BUFFER	MOV	M.BSZ+60000,R1	;GET MESSAGE SIZE INTO APPROPRIATE REGISTER	CALL	JSTFY		;PUT IT INTO OUTPUT AREA;; GET NAME OF SOURCE STATION;	MOV	M.SST+60000,UISAR4 ;POINT TO STATION CONTROL BLOCK OF SOURCE STATION	MOV	S.NAM+100000,SRC.ST ;GET SOURCE STATION NAME INTO DISPLAY BUFFER	MOV	S.NAM+2+100000,SRC.ST+2	MOV	S.NAM+4+100000,SRC.ST+4;; GET CURRENT STATION NAME;	MOVB	M.DNR+60000,R0	;GET THE OFFSET FOR MESSAGE POSITION ON ROUTE LIST	ADD	#M.ROT,R0	;AND ADD       THE OFFSET TO BEGINNING OF ROUTE LIST	MOV	60000(R0),UISAR3;GET ADDRESS OF SCB	MOV	S.NAM+60000,ST.NAM ;GET CURRENT STATION NAME INTO DISPLAY BUFFER	MOV	S.NAM+2+60000,ST.NAM+2	MOV	S.NAM+4+60000,ST.NAM+4	ENB$S			;ENABLE CONTEXT SWITCHING;; OUTPUT ONE MESSAGE LINE;	CMP	#31.+23.,POS+2	;ARE WE AT THE BOTTOM OF THE SCREEN?	BNE	40$		;IF NE - NO	MOV	#1,PRT.OK	;OKAY TO PAINT THE SCREEN	CALL	OUTBUF		;GO AND DO IT	TST	CYCLE		;IF CYCLING THROUGH DISPLAY THEN DISPLAY				;ALL MESSAGES WITHOUT ASKING QUESTIONS	BNE	35$	MOV      	R0,-(SP)	;SAVE REGISTERS	MOV	R1,-(SP)	MOV	#1,R0		;WANT A REPLY?	MOV	#MSG,R1	CALL	COMMUN	MOV	(SP)+,R1	;RESTORE REGISTERS	MOV	(SP)+,R0	CMPB	#'Y,RECBUF	;DOES USER WANT REST OF MESSAGES?	BEQ	35$		;IF EQ - YES	CLR	POS+2		;INDICATES THAT WE DON'T WANT ANY MORE MESSAGES	BR	99$35$:	MOV	#DISPL,R3	;POINT TO OUTPUT PACKET	CALL	OUTLIN		;ERASE SCREEN AND PAINT HEADING	MOVB	#38.,POS+2	;AND POSITION CURSOR BEFORE FIRST MESSAGE LINE40$:	MOV	#POS,R3		;POINT TO BEGINNING OF BUFFER	CALL	OUTLIN		;OUTPUT MESSAGE LINE	INCB	POS+   ‚   2		;POINT TO NEXT LINE	99$:	INH$S			;INHIBIT CONTEXT SWITCHING	MOV	(SP)+,UISAR4	;RESTORE KT ADDRESSES	MOV	(SP)+,UISAR3	RETURN	.END‚          ?TÓ^Á› 8$         Rïv    tŽ€»   ¯”L  º @  Œ#@   Œô_@  á²@  æL@  ì{:@  ìp…@   ì€p@  :y:@  :T[@  %–T@  %,¯@   «ÈK@  3 N@  4P@  ŒAh)@  LRÌ@   TSp…@  ¢UÐz@  £U@  ¤UPZ@  ¦UL@   ®U`@  ²Uà`@  ³Uày@  ´UH:@  aÎ@   avL@  äfc±@  KqÎ@  :wy:@  :wT[@   &{ày@  .{H@  P©\@  é«@Q@      (
 ?T@h&¯”             Y"  J  Y# :*** MESSAGE DISPLAY *** & Y$ "TRANS.    SOURCE     STATY$ STIME L     #  RTESY% #NAME    STATION     NA r ME     TYPE   ST      ATUS     QUEUED    TO  ˜ GO    SIZE Y' "                      ¾                                        ä                  DO YOU WANT TO SEE R 
EMAINDER OF DISPLAY <NO>?  Ã  ÷	  ÷• "  &avL 0' rÿþˆ@÷•   ‡ ÷„ÿ÷	  ÷	  ÷¨ÿÁ 
@P©\„ÿ:wy: :wT[$¨ÿ V €ø÷	  ÷  ¤ÿ7a¤ÿõµ   &{ày €
º ì€p¤ÿ¤ÿŒô_ l @÷	R ÷.ÿ õ¥   @äA @è÷	  ÷	 æL @TSp…ìp… @ì{: @":y: Ž  À `ù÷	  ÷  ¤ÿ7a¤ÿõµ   :T[3 N `º ì€p¤ÿ¤ÿ Œô_ ¬ @î÷	 ÷îþéþˆÄ      7Š  ‡ ‡ æ¦ÿæ¨ÿw @ æL @ÄP©\ ¦ÿ$¨ÿ(á² @ Ò¦ÿÀ `÷  ¨ÿ  €7 €Âþ7€¾þ7€ºþðµ   ¦ÿ£U `%,¯¨ÿ4P €(Œ# ø @÷MEÆþ÷SSÂþ÷SL¸þ÷OT´þ×½ `   æL @$¦UL `&LRÌ ÷AC¬þ÷•T ¨þ÷NA þ÷CTœþÀÚ Á `Â ÷	 Ú "´UH: ` D  ÷ `›þ÷Õ0 •þÀî Á `÷	  ÷ ` é«@Q®U` `î ¢UÐz `ŒAh) ³Uày ` b¨ÿ÷ €Jþ÷€Fþ÷€BþÀ `Àe ¨ÿ.{H €.{H€.{H€¤UPZ ` |  7 `¦ÿ÷ `4þ÷`0þ÷`,þþˆ 7Š ²Uà`
¦ÿ.{H `.{H`.{H`   œ  ‡ ÷%6  þ ÷   ÷	  ÷  &   ®   fÀ Á P©\äfc±aÎ«ÈK Âö ÷	  €÷¥Y   7
ÎýÃ  ÷	  ÷•& ¾ý ö %–TKqÎ  "avL èÃ¤ ÷	  ·Š²ýþˆ ÷•   ‡ ·¨ÿ·¦ÿ‡  ¤ 
avL P©\¨ÿ"¦ÿ ®          ?TÓNÁ› 8$        MESSAGE DISPLAY MODULE	MACRO M1110  12-FEB-79 20:39TABLE OF CONTENTS     4-    2	INITIALIZATIONS     5-   62	FIND MESSAGES     6-  156	DISPLAY ONE MESSAGE LINEMESSAGE DISPLAY MODULE	MACRO M1110  12-FEB-79 20:39  PAGE 4      1						.TITLE	MESSAGE DISPLAY MODULE      2						.SBTTL	INITIALIZATIONS      3						.NLIST	BEX      4      5      6						.MCALL	ASRDF$,INH$S,ENB$S      7      8      9	000000					ASRDF$     10     11		000033 				ESC=33			;ESCAPE CHARACTER     12		000131 				CD=131			;CURSOR DISPLAY           13		000112 				ES=112			;ERASE TO END OF SCREEN     14		000110 				HO=110			;SEND CURSOR TO HOME POSITION     15     16     17	000000	   033 	   131 	   042 	DISPL:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR     18	000005	   033 	   112 	   000 		.ASCII	<ESC><ES><0><0>	;AND ERASE TO END OF SCREEN     19	000011	   033 	   131 	   043 		.ASCII	<ESC><CD><31.+4.><0><31.+27.>	;POSITION CURSOR     20	000016	   052 	   052 	   052 		.ASCII	/*** MESSAGE DISPLAY ***/     21     22	000045	   033 	   131 	         044 		.ASCII	<ESC><CD><31.+5.><0><31.+3.>     23	000052	   124 	   122 	   101 		.ASCII	/TRANS.    SOURCE     STAT/     24	000103	   033 	   131 	   044 		.ASCII	<ESC><CD><31.+5.><0><31.+52.>     25	000110	   124 	   111 	   115 		.ASCII	/TIME    #  RTES/     26	000127	   033 	   131 	   045 		.ASCII	<ESC><CD><31.+6.><0><31.+4.>     27	000134	   116 	   101 	   115 		.ASCII	/NAME    STATION     NAME/     28	000164	   040 	   040 	   040 		.ASCII	/     TYPE   STATUS     /     29	000213	   121 	   125 	   1      05 		.ASCII	/QUEUED    TO GO    SIZE /<1>     30						.EVEN     31     32     33					;     34					; BUFFER TO OUTPUT MESSAGE LINE     35					;     36     37     38	000244	   033 	   131 	   047 	POS:	.ASCIZ 	<ESC><CD><31.+8.><0><31.+3.>     39						.EVEN     40     41	000252	   040 	   040 	   040 	NAME:	.ASCII	/          /     42	000264	   040 	   040 	   040 	SRC.ST:	.ASCII	/          /     43	000276	   040 	   040 	   040 	ST.NAM:	.ASCII	/          /     44	000310	   040 	   040 	   040 	TYPE:	.ASCII	/                /     45	000322	   040 	   040 	   040 	STAT:	.ASCII	/          /     46	000334	   040 	   040 	   040 	TIM.QD:	.ASCII	/          /     47	000346	   040 	   040 	   040 	RTE.NO:	.ASCII	/          /     48	000360	   040 	   040 	   040 	SIZE:	.ASCIZ  /    /<1>     49     50						.EVEN     51	000366	000000 			END:	.WORD	0     52     53	000370	   104 	   117 	   040 	MSG:	.ASCII	/DO YOU WANT TO SEE REMAINDER OF DISPLAY <NO>?/<1>     54						.EVEN     55     56     57		000000 				T.NAM=0			;OVERRIDE THE       TASK CONTROL BLOCK DEFINITIONMESSAGE DISPLAY MODULE	MACRO M1110  12-FEB-79 20:39  PAGE 4-1INITIALIZATIONS     58     59     60MESSAGE DISPLAY MODULE	MACRO M1110  12-FEB-79 20:39  PAGE 5FIND MESSAGES     62						.SBTTL	FIND MESSAGES     63     64     65	000446	000000 			DSKFLG:	.WORD	0     66     67     68     69	000450				MSGE::     70     71     72	000450	012703 	000000'			MOV	#DISPL,R3	;POSITION POINTER TO OUTPUT BUFFER     73     74	000454					CALL	OUTLIN     75     76	000460	112767 	000047 	177560 		      MOVB	#39.,POS+2	;RESET TO FIRST LINE OF MESSAGES     77     78	000466					INH$S     79     80	000502	012767 	077406 	177604 		MOV	#77406,UISDR2     81     82					;     83					; GO THROUGH SCBS:     84					;     85     86	000510					CALL	SCBINI		;INITIALIZE SCB GETTING ROUTINE     87     88	000514				10$:	CALL	SCBNXT		;GET KT - ADDRESS OF NEXT SCB     89     90	000520	005767 	177650 			TST	UISAR4     91	000524	001432 				BEQ	15$		;IF EQUAL THEN WE HAVE LOOKED AT ALL SCBS     92     93	000526	016701 	100000G	      		MOV	100000+S.FST,R1	;POINT TO FIRST BDB     94     95	000532	001770 			11$:	BEQ	10$		;IF EQ-NO BDB     96     97	000534					CALL	ACBD		;GET PAGE NO. AND OFFSET     98     99	000540	016767 	000000G	177644 		MOV	CADR,UISAR2	;POINT TO BASE OF CACHE    100	000546	060467 	177644 			ADD	R4,UISAR2	;AND TO PAGE OF THIS BDB    101    102	000552	132765 	000000G	040000G		BITB	#BF.OND,B.FLG+40000(R5)	;IS MESSAGE ON DISK?    103	000560	001005 				BNE	12$		;IF NE-YES ;CAN'T DISPLAY MESSAGE    104    105	000562					CALL      	DSPMSG		;DISPLAY THIS MESSAGE    106    107	000566	005767 	177454 			TST	POS+2		;IF POS+2 EQUALS 0 THEN AT BOTTOM OF SCREEN    108									;AND DON'T WANT ANY MORE MESSAGES DISPLAYED    109	000572	001440 				BEQ	20$    110    111	000574	122765 	000000G	040000G	12$:	CMPB	#MMLUN,40000+B.LUN(R5)	;WE HAVE JUST SWITCHED BACK TO CONTEXT    112										;SWITCHING INHIBITED. IT IS POSSIBLE    113										;THAT THIS BDB WAS REUSED SINCE WE LAST    114										;LOOKED AT IT. ALL THE CHECKING NOW WILL    115						      				;NOT GUARANTEE THAT WE ARE STILL LOOKING    116										;AT THE SAME BDB BUT THAT AT LEAST ITS O    117										;POINTING TO A MCB    118MESSAGE DISPLAY MODULE	MACRO M1110  12-FEB-79 20:39  PAGE 5-1FIND MESSAGES    119	000602	001344 				BNE	10$			;IF NE - I GUESS WE LOST IT    120    121    122	000604	016501 	040000G			MOV	40000+B.LINK(R5),R1 ;POINT TO NEXT BDB    123	000610	000750 				BR	11$		;GO BACK INTO LOOP    124    125    126					;    127					; GO THROUGH CCBS:    128					;    129    130	00061      2				15$:	CALL	CCBINI		;INITIALIZE CCB GETTING ROUTINE    131    132	000616				16$:	CALL	CCBNXT		;GET KT ADDRESS OF NEXT CCB    133	000622	005700 				TST	R0		;IF R0=0 THEN NO MORE CCBS TO PROCESS    134	000624	001423 				BEQ	20$    135    136	000626	016001 	060000G			MOV	60000+C.SLT(R0),R1 ;POINT TO BDB FOR SLOT MESSAGE    137	000632	001771 				BEQ	16$		;IF EQ - NO BDB    138    139	000634					CALL	ACBD    140	000640	016767 	000000G	177644 		MOV	CADR,UISAR2    141	000646	060467 	177644 			ADD	R4,UISAR2    1      42	000652	132765 	000000G	040000G		BITB	#BF.OND,B.FLG+40000(R5)    143	000660	001356 				BNE	16$		;IF NE - MESSAGE ON DISK - CAN'T DISPLAY IT    144    145    146	000662					CALL	DSPMSG    147	000666	005767 	177354 			TST	POS+2    148	000672	001351 				BNE	16$		;GO BACK INTO LOOP    149    150	000674				20$:	ENB$S			;ENABLE CONTEXT SWITCHING    151	000706					RETURN    152    153    154MESSAGE DISPLAY MODULE	MACRO M1110  12-FEB-79 20:39  PAGE 6DISPLAY ONE MESSAGE LINE    156						.SBTTL	DISPLAY ONE MESSAGE       LINE    157    158    159	000710				DSPMSG:    160    161    162	000710	016746 	177646 			MOV	UISAR3,-(SP)	;SAVE KT-ADDRESSES    163	000714	016746 	177650 			MOV	UISAR4,-(SP)    164    165	000720	016567 	040000G	177646 		MOV	B.ADDR+40000(R5),UISAR3	;POINT TO MESSAGE CONTROL BLOCK    166    167    168    169    170					;    171					; GET TRANSACTION NAME    172					;    173    174	000726	016700 	060000G			MOV	M.CCB+60000,R0	;POINT TO CCB FOR MESSAGE    175	000732	016767 	000000G	177650 		MOV	COM.AD,UISAR4	;      POINT TO COMMON AREA    176	000740	016000 	100000G			MOV	C.TDB+100000(R0),R0 ;AND TO TRANSACTION DESCRIPTION TABLE    177										;FOR THIS MESSAGE    178    179	000744	016067 	100000 	177300 		MOV	T.NAM+100000(R0),NAME	;GET TRANSACTION NAME    180	000752	016067 	100002 	177274 		MOV	T.NAM+2+100000(R0),NAME+2    181	000760	016067 	100004 	177270 		MOV	T.NAM+4+100000(R0),NAME+4    182    183    184    185					;    186					; GET MESSAGE TYPE    187					;    188    189	000766	132760 	000000G	040000G		BITB	#BF      .ALC,B.FLG+40000(R0)	;IS IS A MESSAGE?    190	000774	001407 				BEQ	10$		;NO!    191    192	000776	012767 	042515 	177304 		MOV	#"ME,TYPE	;GET THE WORD MESS INTO BUFFER    193	001004	012767 	051523 	177300 		MOV	#"SS,TYPE+2    194	001012	000406 				BR	20$    195    196    197	001014	012767 	046123 	177266 	10$:	MOV	#"SL,TYPE	;GET THE WORD SLOT INTO BUFFER    198	001022	012767 	052117 	177262 		MOV	#"OT,TYPE+2	;    199    200    201    202					;    203					; GET MESSAGE STATUS    204					;    205    206	0010      30	136727 	060000G	000000G	20$:	BITB	M.FLG+60000,#MF.ACT ;IS MESSAGE ACTIVE?    207	001036	001406 				BEQ	25$		;IF EQ THEN ITS INACTIVE    208    209	001040	012767 	041501 	177254 		MOV	#"AC,STAT	;GET THE WORD "ACT" INTO BUFFER    210	001046	112767 	000124 	177250 		MOVB	#'T,STAT+2    211    212	001054	012767 	040516 	177240 	25$:	MOV	#"NA,STAT	;GET THE WORD "NACT" INTO BUFFERMESSAGE DISPLAY MODULE	MACRO M1110  12-FEB-79 20:39  PAGE 6-1DISPLAY ONE MESSAGE LINE    213	001062	012767 	052103 	177234 		MOV	#"C      T,STAT+2    214    215    216    217					;    218					; GET THE TIME MESSAGE WAS QUEUED    219					;    220    221    222	001070	012700 	000334'		30$:	MOV	#TIM.QD,R0	;POINTER TO OUTPUT BUFFER    223	001074	012701 	060000G			MOV	#60000+M.TIM,R1	;POINT TO TIME BUFFER IN MCB    224	001100	012702 	000003 			MOV	#3,R2		;GET HOURS-MINUTES-SECONDS ASCII    225	001104					CALL	$TIM		;GET TIME IN FORMAT THAT CAN BE OUTPUT    226    227    228					;    229					; GET THE NUMBER OF ROUTES MESSAGE MUST GO THRU BEFORE IT       IS PROCESSED    230					;    231    232	001110	116767 	060000G	177233 		MOVB	M.NOR+60000,RTE.NO+3 ;PUT NUMBER OF ROUTES INTO BUFFER    233	001116	152767 	000060 	177225 		BISB	#60,RTE.NO+3	;CONVERT TO ASCII    234    235    236					;    237					; GET MESSAGE SIZE    238					;    239    240	001124	012700 	000360'			MOV	#SIZE,R0	;POINT TO SIZE AREA IN DISPLAY BUFFER    241	001130	016701 	060000G			MOV	M.BSZ+60000,R1	;GET MESSAGE SIZE INTO APPROPRIATE REGISTER    242	001134					CALL	JSTFY		;PUT IT INTO OUTPUT       AREA    243    244    245    246					;    247					; GET NAME OF SOURCE STATION    248					;    249    250	001140	016767 	060000G	177650 		MOV	M.SST+60000,UISAR4 ;POINT TO STATION CONTROL BLOCK OF SOURCE STATION    251	001146	016767 	100000G	177110 		MOV	S.NAM+100000,SRC.ST ;GET SOURCE STATION NAME INTO DISPLAY BUFFER    252	001154	016767 	100002G	177104 		MOV	S.NAM+2+100000,SRC.ST+2    253	001162	016767 	100004G	177100 		MOV	S.NAM+4+100000,SRC.ST+4    254    255    256					;    257					; GET CURRENT STATIO      N NAME    258					;    259    260	001170	116700 	060000G			MOVB	M.DNR+60000,R0	;GET THE OFFSET FOR MESSAGE POSITION ON ROUTE LIST    261	001174	062700 	000000G			ADD	#M.ROT,R0	;AND ADD THE OFFSET TO BEGINNING OF ROUTE LIST    262	001200	016067 	060000 	177646 		MOV	60000(R0),UISAR3;GET ADDRESS OF SCB    263	001206	016767 	060000G	177062 		MOV	S.NAM+60000,ST.NAM ;GET CURRENT STATION NAME INTO DISPLAY BUFFER    264	001214	016767 	060002G	177056 		MOV	S.NAM+2+60000,ST.NAM+2    265	001222	016767 	060004G	177052       		MOV	S.NAM+4+60000,ST.NAM+4    266    267	001230					ENB$S			;ENABLE CONTEXT SWITCHING    268    269MESSAGE DISPLAY MODULE	MACRO M1110  12-FEB-79 20:39  PAGE 6-2DISPLAY ONE MESSAGE LINE    270    271					;    272					; OUTPUT ONE MESSAGE LINE    273					;    274    275	001242	022767 	000066 	176776 		CMP	#31.+23.,POS+2	;ARE WE AT THE BOTTOM OF THE SCREEN?    276	001250	001040 				BNE	40$		;IF NE - NO    277    278    279	001252	012767 	000001 	000000G		MOV	#1,PRT.OK	;OKAY TO PAINT THE SCREEN    280	00126      0					CALL	OUTBUF		;GO AND DO IT    281    282    283	001264	005767 	000000G			TST	CYCLE		;IF CYCLING THROUGH DISPLAY THEN DISPLAY    284									;ALL MESSAGES WITHOUT ASKING QUESTIONS    285	001270	001021 				BNE	35$    286    287    288	001272	010046 				MOV	R0,-(SP)	;SAVE REGISTERS    289	001274	010146 				MOV	R1,-(SP)    290    291	001276	012700 	000001 			MOV	#1,R0		;WANT A REPLY?    292	001302	012701 	000370'			MOV	#MSG,R1    293	001306					CALL	COMMUN    294    295	001312	012601 				MOV	(SP)+,R1	;RES      TORE REGISTERS    296	001314	012600 				MOV	(SP)+,R0    297    298    299	001316	122767 	000131 	000000G		CMPB	#'Y,RECBUF	;DOES USER WANT REST OF MESSAGES?    300	001324	001403 				BEQ	35$		;IF EQ - YES    301    302	001326	005067 	176714 			CLR	POS+2		;INDICATES THAT WE DON'T WANT ANY MORE MESSAGES    303	001332	000415 				BR	99$    304    305	001334	012703 	000000'		35$:	MOV	#DISPL,R3	;POINT TO OUTPUT PACKET    306	001340					CALL	OUTLIN		;ERASE SCREEN AND PAINT HEADING    307	001344	112767 	000046 	17667      4 		MOVB	#38.,POS+2	;AND POSITION CURSOR BEFORE FIRST MESSAGE LINE    308    309    310	001352	012703 	000244'		40$:	MOV	#POS,R3		;POINT TO BEGINNING OF BUFFER    311	001356					CALL	OUTLIN		;OUTPUT MESSAGE LINE    312	001362	105267 	176660 			INCB	POS+2		;POINT TO NEXT LINE    313    314    315	001366				99$:	INH$S			;INHIBIT CONTEXT SWITCHING    316    317	001402	012667 	177650 			MOV	(SP)+,UISAR4	;RESTORE KT ADDRESSES    318	001406	012667 	177646 			MOV	(SP)+,UISAR3    319    320	001412					RETURN    321      		000001 				.ENDMESSAGE DISPLAY MODULE	MACRO M1110  12-FEB-79 20:39  PAGE 6-3SYMBOL TABLEACBD  = ****** GX	END     000366R  	M$$CRX= 000000   	R$$EXV= 000000   	T$$KMG= 000000A$$CHK= 000000   	ES    = 000112   	M$$EXT= 000000   	R$$HDV= 000000   	T$$LWC= 000000A$$CPS= 000000   	ESC   = 000033   	M$$FCS= 000000   	R$$H11= 000003   	T$$PS = 000000A$$NSI= 000000   	E$$DVC= 000000   	M$$K11= 000000   	R$$JPO= 000000   	T$$RAX= 000000A$$PRI= 000000   	E$$NSI= 000000   	M$$MGE= 000000   	R$$JP1= 000003   	T$$RN      E= 000000A$$TRP= 000000   	E$$PER= 000000   	M$$MUP= 000000   	R$$LKL= 000001   	T$$RPR= 000000BF.ALC= ****** GX	E$$XPR= 000000   	M$$NET= 000000   	R$$MOF= 000000   	T$$RST= 000000BF.OND= ****** GX	F$$LPP= 000000   	M$$OVR= 000000   	R$$MPL= 000000   	T$$RUB= 000000B.ADDR= ****** GX	F$$LVL= 000001   	M$$XLN= 000400   	R$$M11= 000003   	T$$SMC= 000000B.FLG = ****** GX	G$$TPP= 000000   	M.BSZ = ****** GX	R$$NDC= 000006   	T$$SYN= 000000B.LINK= ****** GX	G$$TTK= 000000   	M.CCB = ****** GX	R$$NDH= 000226   	T      $$TRW= 000000B.LUN = ****** GX	HO    = 000110   	M.DNR = ****** GX	R$$NDL= 000001   	T$$UTB= 000000CADR  = ****** GX	H$$RTZ= 000074   	M.FLG = ****** GX	R$$SND= 000000   	T$$VBF= 000000CCBINI= ****** GX	I$$RAR= 000000   	M.NOR = ****** GX	R$$STP= 000000   	T$$ZAN= 000300CCBNXT= ****** GX	I$$RDN= 000000   	M.ROT = ****** GX	R$$11M= 000000   	T$$18S= 000000CD    = 000131   	JSTFY = ****** GX	M.SST = ****** GX	SCBINI= ****** GX	T.NAM = 000000COMMUN= ****** GX	K$$CNT= 177546   	M.TIM = ****** GX	SCBNXT= ******       GX	UISAR0= 177640COM.AD= ****** GX	K$$CSR= 177546   	NAME    000252R  	SIZE    000360R  	UISAR1= 177642CYCLE = ****** GX	K$$IEN= 000115   	N$$CON= 000500   	SRC.ST  000264R  	UISAR2= 177644C$$CDA= 000002   	K$$LDC= 000001   	N$$LDV= 000001   	STAT    000322R  	UISAR3= 177646C$$CKP= 000000   	K$$TPS= 000074   	N$$MOV= 000011   	ST.NAM  000276R  	UISAR4= 177650C$$CSR= 177440   	LD$DB = 000000   	N$$MXM= 001100   	S$$ECC= 000000   	UISAR5= 177652C$$LIS= 000000   	LD$DR = 000000   	N$$TMO= 000012   	S$$WPC= 000      036   	UISAR6= 177654C$$ORE= 002000   	LD$LP = 000000   	N$$UMR= 000024   	S$$WPR= 000005   	UISAR7= 177656C$$RSH= 177564   	LD$MM = 000000   	OUTBUF= ****** GX	S$$YSZ= 050000   	UISDR0= 177600C$$RUN= 000000   	LD$NT = 000000   	OUTLIN= ****** GX	S.FST = ****** GX	UISDR1= 177602C$$XDB= 000000   	LD$RH = 000000   	OV$DB = 000000   	S.NAM = ****** GX	UISDR2= 177604C.SLT = ****** GX	LD$TT = 000000   	OV$DR = 000000   	TIM.QD  000334R  	UISDR3= 177606C.TDB = ****** GX	LD$VT = 000000   	O$$LAP= 000000   	TYPE          000310R  	UISDR4= 177610DISPL   000000R  	LD$XM = 000000   	POS     000244R  	T$$ACR= 000000   	UISDR5= 177612DSKFLG  000446R  	L$$ASG= 000000   	PRT.OK= ****** GX	T$$BTW= 000000   	UISDR6= 177614DSPMSG  000710R  	L$$DRV= 000000   	P$$D70= 000000   	T$$BUF= 000000   	UISDR7= 177616D$$IAG= 000000   	L$$LDR= 000000   	P$$LAS= 000000   	T$$CCA= 000000   	V$$CTR= 001000D$$ISK= 000000   	L$$PTO= 000037   	P$$OFF= 000000   	T$$CCO= 000000   	V$$TLD= 000120D$$L11= 000001   	L$$P11= 000001   	P$$RFL= 000000   	T$$      CTR= 000000   	V$$TLM= 000205D$$SHF= 000000   	L$$11R= 000000   	P$$RTY= 000000   	T$$ESC= 000000   	V$$TRM= 000000D$$WCK= 000000   	MF.ACT= ****** GX	P$$TPT= 000000   	T$$GMC= 000000   	X$$M11= 000002D$$YNC= 000000   	MMLUN = ****** GX	Q$$OPT= 000017   	T$$GTS= 000000   	$CXDBL= ****** GXD$$YNM= 000000   	MSG     000370R  	RECBUF= ****** GX	T$$HLD= 000000   	$TIM  = ****** GXD$$ZMD= 000000   	MSGE    000450RG 	RTE.NO  000346R  	T$$J16= 000003   	$$$R4 = 000000D$$Z11= 000004   	M$$CRB= 000124   	R$$DSP= 000   â   000. ABS.	000000	   000      	001414	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  3267 WORDS  ( 13 PAGES)DYNAMIC MEMORY:  4036 WORDS  ( 15 PAGES)ELAPSED TIME:  00:00:12MSG34,MSG34.LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,MSG34â          Õ˜aÌÁ› 8$     B   DEMOXX  /PR /CP, DEMOXX/-SP /MA  =DEMO /MPGBLDEF=$$CPU:70WNDWS=1//B          Õò`ÌÁ› 8$     °   DEMOTR  /PR /CP, DEMOTR/-SP /MA  =DEMO34,TRAN34,MISC,INCLTR,LB0:[1,24]QMG/LB:QMGSYM,LB0:[1,54]KERNEL.STB/SS,LB0:[1,1]TPSCOM.STB/SS,LB0:[1,1]TPSODT/DA,/GBLDEF=$$CPU:22WNDWS=1// °          Õ¦cÌÁ› 8$     ®   DEMO70  /PR /CP, DEMO70/-SP /MA  =DEMO34,MSG34,MISC,INCLDE,LB0:[1,24]QMG/LB:QMGSYM,LB0:[1,54]KERNEL.STB/SS,LB0:[1,1]TPSCOM.STB/SS,LB0:[1,1]TPSODT/DA,/GBLDEF=$$CPU:22WNDWS=1//®          s:2N^Á› 8$     ’    	±Œ:    ¯”L      ( Ðzh zh  Ô2 dh R  h  Ry:h Rzh
 ?T@h  mzh €h ¯”             ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡  ’          Õ¦cxQÁ› 8$        DEMO70.TSK;101   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     25-JAN-79   13:57



PARTITION NAME : GEN   
IDENTIFICATION : V1.0  
TASK  UIC      : [300,30]
STACK    LIMITS: 120222 121221 001000 00512.
ODT XFR ADDRESS: 134260
PRG XFR ADDRESS: 121634
TASK ATTRIBUTES: CP,PR             
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 4608. WORDS
TASK ADDRESS LIMITS: 120000 141763
R-W DISK BLK LIMITS: 000002 000023 000022 00018.

*** ROOT SEGMENT: DEMO34


R/W MEM  LIM      ITS: 120000 141763 021764 09204.
DISK BLK LIMITS: 000002 000023 000022 00018.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 121222 011532 04954.
                          121222 006556 03438. DEMO   V1.0   DEMO34.OBJ;60
                          130000 001544 00868. MESSAG        MSG34.OBJ;6
                          131544 000500 00320. MISCEL        MISC      .OBJ;5
                          132244 000024 00020. .MAIN.        INCLDE.OBJ;37
                          132270 000216 00142. CBTA   04.2   SYSLIB.OLB;10
                          132506 000246 00166. EDDAT  02     SYSLIB.OLB;10
$DPB$$:(RW,I,LCL,REL,CON) 132754 000030 00024.
                          132754 000030 00024. DEMO   V1.0   DEMO34.OBJ;60
$$FSR1:(RW,D,GBL,REL,OVR) 133004 000000 00000.
                          133004 000000 00000. DEMO   V1.0   DEMO34.OBJ;60
                          13      3004 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
$$FSR2:(RW,D,GBL,REL,CON) 133004 000104 00068.
                          133004 000104 00068. FCSFSR 0303MS SYSLIB.OLB;10
$$RESL:(RW,I,LCL,REL,CON) 133110 000164 00116.
                          133110 000104 00068. FINIT  0102MS SYSLIB.OLB;10
                          133214 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
                          133214 000024 00020. SAVRG  03     SYSLIB.OLB;10
                          133240 000034 00028. SAVR1  0101   SYS      LIB.OLB;10
$$$ODT:(RW,I,GBL,REL,OVR) 133274 006466 03382.
                          133274 006466 03382. ODTRSX M04    TPSODT.OBJ;1



GLOBAL SYMBOLS:

ACBD   127726-R  B.FLG  000010    COM.AD 125344-R  DSKSUM 132264-R  IE.ITS 177770    JN.INP 000002    MEMINI 132252-R  
APPSUM 132266-R  B.LINK 000022    CSIZE  125350-R  FA.SHR 000040    IO.ATA 001410    JN.SLT 000002    MEMSUM 132262-R  
BF.OND 000020    CADR   125346-R  C.CSIZ 000040    FD.RWM 000001    IO.RVB 010400    JN.SND 000003    MF.ACT 0      00001    
BUFCTR 121430-R  CCBINI 131652-R  C.SLT  000020    FO.RD  000001    IO.WAL 000410    JN.USR 000004    MSGE   130454-R  
BUFPTR 121426-R  CCBNXT 132006-R  C.TDB  000006    HELP   132256-R  IO.WVB 011000    JSTFY  127624-R  M.BSZ  000056    
B.ADDR 000016    COMMUN 127200-R  DIRERR 127554-R  IE.ACT 177771    IS.SUC 000001    MEM    132244-R  M.CCB  000022    
DEMO70.TSK;101   MEMORY ALLOCATION MAP  TKB             PAGE 2
DEMO34               25-JAN-79   13:57



M.DNR  000035    QE.IJS 000      146    QE.UNL 000123    QUE.ST 123422-R  Q.JUIC 000014    TRANS  132254-R  $DSW   000046    
M.FLG  000024    QE.INM 000151    QFDB   123164-R  Q.FATT 000011    Q.QASS 000006    TRINIT 132250-R  $MUL   016320    
M.JHD  000000    QE.IO  000114    QF.ADE 000200    Q.FCPN 000030    Q.QCJL 000012    TSTDSP 132246-R  $OTSV  000052    
M.NOR  000034    QE.JEA 000111    QJ.ABL 000040    Q.FDEV 000006    Q.QHJL 000016    T.ACTL 000052    $PARHD 006152    
M.ROT  000060    QE.JNE 000112    QJ.AFL 000100    Q.FF      N  000014    Q.QLEN 000020    T.ASTL 000016    $RQSCH 001424    
M.SST  000054    QE.MEX 000132    QJ.AHJ 000004    Q.FJ   000004    Q.QNAM 000000    T.NAM  000006    $SAVRG 133214-R  
M.TIM  000044    QE.NAV 000125    QJ.ALC 000020    Q.FLNK 000000    Q.QNUM 000005    T.PCB  000046    $SIZE  000174    
N.OVPT 000054    QE.NFS 000113    QJ.ARE 000200    Q.FNC  000026    Q.QOJL 000010    T.STAT 000032    $TCPU0 001432    
OUTBUF 126066-R  QE.NJE 000145    QJ.AWI 000010    Q.FNCP 000027    Q.QST  000004          T.ST2  000034    $TCPU1 001434    
OUTLIN 126010-R  QE.NPS 000127    QQ.SBA 000200    Q.FSEQ 000002    Q.QTJL 000014    T2.AST 100000    $TIM   132630-R  
OUTPUT 121412-R  QE.NP0 000130    QQ.SMD 000100    Q.FUFD 000012    Q.SASS 000006    T2.DST 040000    $TKTCB 001416    
PRCNT  127704-R  QE.NVT 000144    QQ.STO 000040    Q.JAFT 000030    Q.SCJ  000012    T2.SPN 000004    $VEXT  000056    
PRT.OK 121572-R  QE.OFL 000122    QS.FFO 000200    Q.JATT 000035    Q.SFL  000016    T2.STP 000020    $$CPU  00      0022    
PUTNUM 127750-R  QE.OJD 000002    QS.FNF 000001    Q.JCFI 000022    Q.SFO  000017    T2.WFR 000001    .ACTTB 000204    
P.ALLO 000030    QE.PRI 000053    QS.FSA 000040    Q.JFI  000020    Q.SLEN 000020    $BASE  000172    .CCBBA 000226    
P.DEAD 000024    QE.QDF 000106    QS.FSD 000100    Q.JFO  000037    Q.SNAM 000000    $CBDAT 132270-R  .CCBLH 000222    
P.HDR  000032    QE.QEA 000100    QS.FSF 000010    Q.JLFI 000022    Q.SNUM 000005    $CBDMG 132276-R  .FINIT 133110-R  
P.HIT  000020    Q      E.QMD 000104    QS.FSI 000020    Q.JLNK 000000    Q.SST  000004    $CBDSG 132304-R  .FSRCB 133004-R  
P.NUM  000016    QE.QNE 000102    QS.FSJ 000004    Q.JLPP 000036    Q.SUCB 000010    $CBOMG 132312-R  .FSRPT 000050    
QE.BDT 000120    QE.RED 000124    QS.SBA 000200    Q.JMXP 000026    Q.SUIC 000014    $CBOSG 132320-R  .MBFCT 133104-R  
QE.BQN 000134    QE.REQ 000131    QS.SHJ 000004    Q.JNAM 000004    RCVDT  123370-R  $CBTA  132350-R  .ODTL1 133532-R  
QE.BSN 000077    QE.ROP 000115    QS.SLC 00002      0    Q.JNPP 000024    RECBUF 127152-R  $CBTMG 132326-R  .ODTL2 133534-R  
QE.DIR 000117    QE.SDF 000107    QS.SMD 000100    Q.JPRI 000034    SCBINI 132100-R  $CBVER 132312-R  .SAVR1 133240-R  
QE.DNE 000121    QE.SEA 000101    QS.STO 000040    Q.JQ   000010    SCBNXT 132136-R  $CRAVL 006114    .SCBTA 000156    
QE.IAR 000116    QE.SEX 000001    QS.SWI 000010    Q.JQL  000033    ST.NAT 000004    $CXDBL 001421    .SCBTS 000166    
QE.IDB 000133    QE.SMD 000105    QS.SXE 000002    Q.JSEQ 000002    S.FST        000010    $C5TA  006362    .SCBTT 000164    
QE.IFC 000001    QE.SNE 000103    QUEINI 123424-R  Q.JSY  000012    S.NAM  000000    $DAT   132552-R  .SCBTZ 000160    
QE.IID 000150    QE.TYP 000110    QUESUM 132260-R  Q.JTI  000016    S.SAT  000014    $DIV   016352    ..FINI 133120-R  




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 37256.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 2560. WORDS (10. P   $   AGES)

    ELAPSED TIME:00:00:25
$          Õ
cÌÁ› 8$     Ä   DEMO34  /PR /CP, DEMO34/-SP /MA  =DEMO34,QUESUM,MEMSUM,APPSUM,DSKSUM,MISC,INCLDE,LB0:[1,24]QMG/LB:QMGSYM,LB0:[1,54]KERNEL.STB/SS,LB0:[1,1]TPSCOM.STB/SS,LB0:[1,1]TPSODT/DA,/GBLDEF=$$CPU:22WNDWS=1//Ä          s:¥K^Á› 8$     ~    	±Œ:    ¯”L      ( Ô2 dh
 R  h   Ry:h ?T@h ÑxZh ÙüXh €h  ¯”             ‡ ‡ ‡ ‡ ‡ ‡ ‡  ~          ÕÛ_ÌÁ› 8$     ®   DEMOMS  /PR /CP, DEMOMS/-SP /MA  =DEMO34,MSG34,MISC,INCLMS,LB0:[1,24]QMG/LB:QMGSYM,LB0:[1,54]KERNEL.STB/SS,LB0:[1,1]TPSCOM.STB/SS,LB0:[1,1]TPSODT/DA,/GBLDEF=$$CPU:22WNDWS=1//®          s:M^Á› 8$     œ    	±Œ:    ¯”L      ( Ðzh zh  Ô2 dh R  h  Ry:h Rzh mzh
  ÑxZh ÙüXh €h ¯”             ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡  œ          Õò`xQÁ› 8$        DEMOTR.TSK;12   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     4-FEB-79   14:04



PARTITION NAME : GEN   
IDENTIFICATION : V1.0  
TASK  UIC      : [300,30]
STACK    LIMITS: 120222 121221 001000 00512.
ODT XFR ADDRESS: 137656
PRG XFR ADDRESS: 121634
TASK ATTRIBUTES: CP,PR             
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 5504. WORDS
TASK ADDRESS LIMITS: 120000 145357
R-W DISK BLK LIMITS: 000002 000027 000026 00022.

*** ROOT SEGMENT: DEMO34


R/W MEM  LIMIT      S: 120000 145357 025360 10992.
DISK BLK LIMITS: 000002 000027 000026 00022.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 121222 015030 06680.
                          121222 006556 03438. DEMO   V1.0   DEMO34.OBJ;60
                          130000 004702 02498. TRANSA V1.0   TRAN34.OBJ;17
                          134702 000514 00332. MISCEL V1.0   MISC      .OBJ;13
                          135416 000022 00018. .MAIN.        INCLTR.OBJ;1
                          135440 000216 00142. CBTA   04.2   SYSLIB.OLB;10
                          135656 000126 00086. CDDMG  00     SYSLIB.OLB;10
                          136004 000246 00166. EDDAT  02     SYSLIB.OLB;10
$DPB$$:(RW,I,LCL,REL,CON) 136252 000030 00024.
                          136252 000030 00024. DEMO   V1.0   DEMO34.OBJ;60
$$FSR1:(RW,D,GBL,REL,OVR) 136302 000000 00000.
                          13      6302 000000 00000. DEMO   V1.0   DEMO34.OBJ;60
                          136302 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
$$FSR2:(RW,D,GBL,REL,CON) 136302 000104 00068.
                          136302 000104 00068. FCSFSR 0303MS SYSLIB.OLB;10
$$RESL:(RW,I,LCL,REL,CON) 136406 000264 00180.
                          136406 000104 00068. FINIT  0102MS SYSLIB.OLB;10
                          136512 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
                          136512 000024 00020. SAVRG  03     SYS      LIB.OLB;10
                          136536 000100 00064. DARITH 0004   SYSLIB.OLB;10
                          136636 000034 00028. SAVR1  0101   SYSLIB.OLB;10
$$$ODT:(RW,I,GBL,REL,OVR) 136672 006466 03382.
                          136672 006466 03382. ODTRSX M04    TPSODT.OBJ;1



GLOBAL SYMBOLS:

ACBD   127726-R  CADR   125346-R  COM.AD 125344-R  C.TCB  000026    DSKSUM 135432-R  HELP   135424-R  IO.RVB 010400    
APPSUM 135434-R  CCBINI 135010-R  CSIZE  125350-R  C.TDB  000006    FA.SHR 0000      40    IE.ACT 177771    IO.WAL 000410    
BUFCTR 121430-R  CCBNXT 135164-R  C.CSIZ 000040    C.TID  000000    FD.RWM 000001    IE.ITS 177770    IO.WVB 011000    
BUFPTR 121426-R  COMMUN 127200-R  C.SCB  000010    DIRERR 127554-R  FO.RD  000001    IO.ATA 001410    IS.SUC 000001    
DEMOTR.TSK;12   MEMORY ALLOCATION MAP  TKB             PAGE 2
DEMO34               4-FEB-79   14:04



JSTFY  127624-R  QE.JEA 000111    QJ.AFL 000100    Q.FJ   000004    Q.QNUM 000005    T.STAT 000032    $SAVRG 136512-R        
MEM    135416-R  QE.JNE 000112    QJ.AHJ 000004    Q.FLNK 000000    Q.QOJL 000010    T.ST2  000034    $SIZE  000174    
MEMINI 135422-R  QE.MEX 000132    QJ.ALC 000020    Q.FNC  000026    Q.QST  000004    T2.AST 100000    $TCPU0 001432    
MEMSUM 135430-R  QE.NAV 000125    QJ.ARE 000200    Q.FNCP 000027    Q.QTJL 000014    T2.DST 040000    $TCPU1 001434    
MSGE   135436-R  QE.NFS 000113    QJ.AWI 000010    Q.FSEQ 000002    Q.SASS 000006    T2.SPN 000004    $TIM   136126-R  
N.OVPT 000054    QE.NJE 00      0145    QQ.SBA 000200    Q.FUFD 000012    Q.SCJ  000012    T2.STP 000020    $TKTCB 001416    
OUTBUF 126066-R  QE.NPS 000127    QQ.SMD 000100    Q.JAFT 000030    Q.SFL  000016    T2.WFR 000001    $VEXT  000056    
OUTLIN 126010-R  QE.NP0 000130    QQ.STO 000040    Q.JATT 000035    Q.SFO  000017    $BASE  000172    $$CPU  000022    
OUTPUT 121412-R  QE.NVT 000144    QS.FFO 000200    Q.JCFI 000022    Q.SLEN 000020    $CBDAT 135440-R  .ACTTB 000204    
PRCNT  127704-R  QE.OFL 000122    QS.FNF 000001    Q.J      FI  000020    Q.SNAM 000000    $CBDMG 135446-R  .CCBBA 000226    
PRT.OK 121572-R  QE.OJD 000002    QS.FSA 000040    Q.JFO  000037    Q.SNUM 000005    $CBDSG 135454-R  .CCBLH 000222    
PUTNUM 127750-R  QE.PRI 000053    QS.FSD 000100    Q.JLFI 000022    Q.SST  000004    $CBOMG 135462-R  .FINIT 136406-R  
P.ALLO 000030    QE.QDF 000106    QS.FSF 000010    Q.JLNK 000000    Q.SUCB 000010    $CBOSG 135470-R  .FSRCB 136302-R  
P.DEAD 000024    QE.QEA 000100    QS.FSI 000020    Q.JLPP 000036    Q.SUIC 000014          $CBTA  135520-R  .FSRPT 000050    
P.HDR  000032    QE.QMD 000104    QS.FSJ 000004    Q.JMXP 000026    RCVDT  123370-R  $CBTMG 135476-R  .MBFCT 136402-R  
P.HIT  000020    QE.QNE 000102    QS.SBA 000200    Q.JNAM 000004    RECBUF 127152-R  $CBVER 135462-R  .ODTL1 137130-R  
P.NUM  000016    QE.RED 000124    QS.SHJ 000004    Q.JNPP 000024    SCBINI 135240-R  $CDDMG 135656-R  .ODTL2 137132-R  
QE.BDT 000120    QE.REQ 000131    QS.SLC 000020    Q.JPRI 000034    SCBNXT 135310-R  $CRAVL 006114    .SAVR1 1      36636-R  
QE.BQN 000134    QE.ROP 000115    QS.SMD 000100    Q.JQ   000010    ST.NAT 000004    $CXDBL 001421    .SCBTA 000156    
QE.BSN 000077    QE.SDF 000107    QS.STO 000040    Q.JQL  000033    S.SAT  000014    $C5TA  006362    .SCBTS 000166    
QE.DIR 000117    QE.SEA 000101    QS.SWI 000010    Q.JSEQ 000002    S.TERM 000142    $DAT   136050-R  .SCBTT 000164    
QE.DNE 000121    QE.SEX 000001    QS.SXE 000002    Q.JSY  000012    TRANS  133204-R  $DDIV  136574-R  .SCBTZ 000160    
QE.IAR 000116          QE.SMD 000105    QUEINI 123424-R  Q.JTI  000016    TRINIT 133146-R  $DIV   016352    ..FINI 136416-R  
QE.IDB 000133    QE.SNE 000103    QUESUM 135426-R  Q.JUIC 000014    TSTDSP 135420-R  $DMUL  136536-R  
QE.IFC 000001    QE.TYP 000110    QUE.ST 123422-R  Q.QASS 000006    T.ACTL 000052    $DSW   000046    
QE.IID 000150    QE.UNL 000123    Q.FATT 000011    Q.QCJL 000012    T.ASTL 000016    $MUL   016320    
QE.IJS 000146    QFDB   123164-R  Q.FCPN 000030    Q.QHJL 000016    T.NAM  000006    $OTSV  0000   Ü  52    
QE.INM 000151    QF.ADE 000200    Q.FDEV 000006    Q.QLEN 000020    T.NTR  000012    $PARHD 006152    
QE.IO  000114    QJ.ABL 000040    Q.FFN  000014    Q.QNAM 000000    T.PCB  000046    $RQSCH 001424    




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 36254.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 2560. WORDS (10. PAGES)

    ELAPSED TIME:00:00:22
 Ü         »RÀ^Á› 8$         »R”    tŽ€»   ¯”L  %,¯@  #Bx@   üy¼W@  3{`	@  i©€‰@  +¯"€@  {¯Ñ@   {¯h@  û±¡@  û±³@  û±´@  û±º@       (n:y:hF :T[h´ :wy:hà :wT[h ¯”        B  B     ÷  ¦ÿ÷  ¨ÿ÷e€ ¨ÿ÷†ÿ÷ˆÿÀ   
%,¯¦ÿ%,¯¨ÿ¨ÿ†ÿ$ˆÿ(   h Á  
Á
ýÀ `Àí `Á  ÷	  ð•   À ` +¯"€ `{¯Ñ `#Bxi©€‰"  &{¯h ` Ž Àí `Á  ÷	  ð•   € `ó÷ `–ÿ7
ÿ‡  {¯Ñ `#Bxi©€‰   {¯Ñ ` ´ ÁŠÿÀˆÿñ¥   	·
zÿ÷e  vÿñ‹  ï 
‡    #Bx    Ú       7
öÿ÷  ¦ÿ÷     ü   ¨ÿ÷e€ ¨ÿ÷ `àÿ÷Üÿ %,¯¦ÿ%,¯¨ÿ¨ÿ"û±¡ `  Üÿ÷m `ÖÿÀ%ÿ·
Èÿ‡ ÷  ¦ÿ÷  ¨ÿ÷e€ ¨ÿ û±º `%,¯¦ÿ %,¯"¨ÿ(¨ÿ &÷-²ÿ²ÿÄªÿ÷e ¤ÿ7 `¨ÿê÷¥   €æ÷ ¨ÿ üy¼W"3{`	 € LŒÿ·
†ÿ÷ `‚ÿ÷~ÿ~ÿ÷m `xÿÖ7
¨ÿ‡  û±´ `û±³ `"¨ÿ ü          »RÀNÁ› 8$        MISCELLANEOUS ROUTINES USED BY 	MACRO M1110  12-FEB-79 21:13TABLE OF CONTENTS     4-    2	CCBNXT - RETURNS NEXT CCB IN USE     5-  112	SCBNXT - RETURNS THE ADDRESS OF THE SCB FOR THE NEXT ACTIVE STATIONMISCELLANEOUS ROUTINES USED BY 	MACRO M1110  12-FEB-79 21:13  PAGE 4      1						.TITLE	MISCELLANEOUS ROUTINES USED BY TRAX DEMO      2						.SBTTL	CCBNXT - RETURNS NEXT CCB IN USE      3						.MCALL	ASRDF$      4      5      6      7	000000					ASRDF$      8      9     10					;     11					; CCBINI: CALLED       TO EXECUTE ONE TIME ONLY CODE NEEDED TO GENERATE A     12					;	  LIST OF CCBS IN USE.     13					;     14					; CCBNXT: RETURNS ADDRESS OF THE NEXT CCB IN USE     15					;     16					;     17					; OUTPUT: UISAR3 POINTS TO COMMON AREA     18					;	  R0 IS OFFSET FROM THE BASE OF THE COMMON AREA OF THE CCB     19					;              IF R0 = 0 NO MORE CCBS IN USE     20					;     21					; NOTE:	THIS ROUTINE ASSUMES THAT WHEN IT IS CALLED, THE CALLING     22					;	PROGRAM IS IN CONTEXT INHIBITED MODE.     23		      			;     24					;     25     26     27	000000				CCBFRE:	.BLKB	66.     28	000102	000000 			CNTER:	.WORD	0     29	000104	000000 			CCBPNT:	.WORD	0     30     31     32     33	000106				CCBINI::     34     35     36	000106	016767 	000000G	177646 		MOV	COM.AD,UISAR3	;MAP TO THE COMMON AREA     37	000114	016767 	000000G	177650 		MOV	COM.AD,UISAR4	;USE TWO PARS SO CAN MAP TO 8K     38	000122	062767 	000200 	177650 		ADD	#200,UISAR4     39	000130	012767 	077406 	177606 		MOV	#77406,UISDR3     40	000136	012767 	07      7406 	177610 		MOV	#77406,UISDR4     41     42     43					;     44					; CLEAR CCB FREE TABLE:     45					;     46     47     48	000144	012700 	000000'			MOV	#CCBFRE,R0	;POINT TO BEGINNING OF TABLE     49	000150	012701 	000040 			MOV	#32.,R1		;SET UP COUNTER     50	000154	005020 			1$:	CLR	(R0)+     51	000156					SOB	R1,1$     52     53     54					;     55					; CALCULATE NUMBER OF CCBS     56					;     57MISCELLANEOUS ROUTINES USED BY 	MACRO M1110  12-FEB-79 21:13  PAGE 4-1CCBNXT - RETURNS NEXT CCB IN USE           58	000162	016700 	060000G			MOV	60000+.ACTTB,R0	;GET END OF CCB AREA     59	000166	166700 	060000G			SUB	60000+.CCBBA,R0	;SUBTRACT BEGINNING AREA     60	000172	012701 	000000G			MOV	#C.CSIZE,R1	;AND DIVIDE BY CCB SIZE TO OBTAIN     61	000176					CALL	$DIV		;NUMBER OF CCBS     62	000202	112760 	000002 	000000'		MOVB	#2,CCBFRE(R0)	;INDICATE THAT WE ARE AT END OF CCBS     63     64     65					;     66					; FIND OUT WHICH CCBS ARE FREE     67					;     68     69	000210	016700 	060000G			MOV	60000+.CCBLH,R      0	;POINT TO THE FIRST CCB IN THE FREE LIST     70	000214	001415 				BEQ	6$		;IF EQ - THEN NO FREE CCBS     71     72     73	000216	010002 			5$:	MOV	R0,R2		;KEEP A COPY OF IT SINCE R0 WILL BE CLOBBERED     74	000220	166700 	060000G			SUB	60000+.CCBBA,R0	;SUBTRACT BASE OF CCB     75	000224	012701 	000000G			MOV	#C.CSIZE,R1	;FIND OUT WHICH CCB THIS IS     76	000230					CALL	$DIV		;(THIRD,EIGHTH,ETC.)     77	000234	112760 	000001 	000000'		MOVB	#1,CCBFRE(R0)	;SET BYTE TO INDICATE THAT THIS CCB IS FREE     78	0      00242	016200 	060000 			MOV	60000(R2),R0	;GET NEXT FREE CCB     79	000246	001363 				BNE	5$		;IF NE- THEN MORE FREE CCBS     80     81	000250	016767 	060000G	177626 	6$:	MOV	60000+.CCBBA,CCBPNT ;KEEP A POINTER TO NEXT CCB TO BE RETURNED     82	000256	005067 	177620 			CLR	CNTER		;INITIALIZE CCB COUNTER     83     84     85	000262					RETURN     86     87     88     89	000264				CCBNXT::     90     91     92	000264	016701 	177612 			MOV	CNTER,R1	;GET OFFSET OF BYTE     93	000270	016700 	177610 			MOV	CCBPNT,      R0	;POINT TO CCB     94     95	000274	122761 	000002 	000000'		CMPB	#2,CCBFRE(R1)	;ARE WE AT THE END OF CCBS?     96	000302	001411 				BEQ	11$		;IF EQ - YES     97     98	000304	005267 	177572 			INC	CNTER		;UPDATE FOR NEXT TIME     99	000310	062767 	000000G	177566 		ADD	#C.CSIZE,CCBPNT	;ALSO POINTER    100    101	000316	105761 	000000'			TSTB	CCBFRE(R1)	;IS CCB FREE?    102	000322	001402 				BEQ	12$		;IF EQ - NOT FREE AND WE CAN RETURN    103	000324	000757 				BR	CCBNXT		;CCB NOT FREE SO GO BACK AND LOOK A      T NEXT ONE    104    105    106	000326	005000 			11$:	CLR	R0    107    108	000330				12$:	RETURN    109    110MISCELLANEOUS ROUTINES USED BY 	MACRO M1110  12-FEB-79 21:13  PAGE 5SCBNXT - RETURNS THE ADDRESS OF THE SCB FOR THE NEXT ACTIVE ST    112						.SBTTL	SCBNXT - RETURNS THE ADDRESS OF THE SCB FOR THE NEXT ACTIVE STATION    113    114    115					;    116					; SCBINI: PERFORMS ONE TIME ONLY INITIALIZATIONS    117					;    118					; SCBNXT: RETURNS KT ADDRESS OF NEXT ACTIVE SCB    119					;    120					      ; OUTPUT: UISAR4 POINTS TO SCB    121					;         IF UISAR4 = 0 THEN NO MORE ACTIVE SCBS    122					;    123					; NOTE:	THIS ROUTINE ASSUMES THAT WHEN IT IS CALLED THE CALLING PROGRAM    124					;	IS IN CONTEXT SWITCHING INHIBITED MODE.    125					;    126    127    128	000332	000000 			TERM.F:	.WORD	0    129	000334	000000 			PNTR:	.WORD	0    130	000336	000000 			END:	.WORD	0    131    132    133	000340				SCBINI::    134    135	000340	005067 	177766 			CLR	TERM.F    136	000344	016767 	000000G	177646 		M      OV	COM.AD,UISAR3	;MAP TO COMMON AREA    137	000352	016767 	000000G	177650 		MOV	COM.AD,UISAR4    138	000360	062767 	000200 	177650 		ADD	#200,UISAR4    139    140    141    142					; LOOK AT NON-TERMINAL SCBS    143    144	000366	016767 	060000G	177740 		MOV	60000+.SCBTA,PNTR ;POINT TO BASE OF ALPHA TABLE    145	000374	016767 	177734 	177734 		MOV	PNTR,END    146	000402	066767 	060000G	177726 		ADD	60000+.SCBTZ,END	;AND ADD TABLE SIZE TO GET ENDING    147										;ADDRESS OF TABLE.    148	000410	022700 	00      0777 			CMP	#777,R0			;DO WE WANT TERMINAL SCBS    149	000414	001002 				BNE	5$			;IF NE - YES    150	000416	005267 	177710 			INC	TERM.F			;SET FLAG SO WHEN WE FINISH GOING    151										;THROUGH NON-TERMINAL SCBS WE'LL    152										;SKIP TERMINAL ONES    153    154	000422				5$:	RETURN    155    156    157	000424				SCBNXT::    158    159    160	000424	016767 	000000G	177646 		MOV	COM.AD,UISAR3		;POINT TO THE COMMON AREA    161	000432	016767 	000000G	177650 		MOV	COM.AD,UISAR4    162	000440	062767 	0      00200 	177650 		ADD	#200,UISAR4    163    164    165	000446	026767 	177662 	177662 		CMP	PNTR,END	;ARE WE PAST THE END OF THE TABLE?    166	000454	003016 				BGT	10$		;IF GT - YES    167    168	000456	016704 	177652 			MOV	PNTR,R4		;POINT TO NEXT ENTRY IN ALPHA TABLEMISCELLANEOUS ROUTINES USED BY 	MACRO M1110  12-FEB-79 21:13  PAGE 5-1SCBNXT - RETURNS THE ADDRESS OF THE SCB FOR THE NEXT ACTIVE ST    169    170	000462	062767 	000002 	177644 		ADD	#2,PNTR		;POINT TO NEXT ENTRY FOR NEXT TIME    171    172	000      470	016467 	060000 	177650 		MOV	60000(R4),UISAR4 ;MAP TO SCB    173	000476	001752 				BEQ	SCBNXT		;IF EQ - NO SCB FOR THIS ENTRY IN ALPHA TABLE    174	000500	122767 	000000G	100000G		CMPB	#ST.NAT,100000+S.SAT ;IS STATION INACTIVE?    175	000506	001746 				BEQ	SCBNXT		;LETS TRY AGAIN    176	000510	000421 				BR	99$		;WE ARE ALL SET SO LETS RETURN    177    178	000512	005767 	177614 		10$:	TST	TERM.F		;DID WE LOOK AT TERMINAL STATIONS YET?    179	000516	001014 				BNE	90$		;IF NE - YES    180    181	000520	0      05267 	177606 			INC	TERM.F		;SET (LOOKED AT) TERMINAL FLAG    182    183					; NOW PROCESS TERMINAL SCBS:    184    185	000524	016767 	060000G	177602 		MOV	60000+.SCBTT,PNTR    186	000532	016767 	177576 	177576 		MOV	PNTR,END    187	000540	066767 	060000G	177570 		ADD	60000+.SCBTS,END    188	000546	000726 				BR	SCBNXT		;JUMP BACK INTO MAIN LOOP    189    190	000550	005067 	177650 		90$:	CLR	UISAR4		;INDICATE THAT NO MORE SCBS AROUND    191    192	000554				99$:	RETURN    193    194    195		000001 				.END      MISCELLANEOUS ROUTINES USED BY 	MACRO M1110  12-FEB-79 21:13  PAGE 5-2SYMBOL TABLEA$$CHK= 000000   	F$$LPP= 000000   	M$$NET= 000000   	R$$STP= 000000   	T$$VBF= 000000A$$CPS= 000000   	F$$LVL= 000001   	M$$OVR= 000000   	R$$11M= 000000   	T$$ZAN= 000300A$$NSI= 000000   	G$$TPP= 000000   	M$$XLN= 000400   	SCBINI  000340RG 	T$$18S= 000000A$$PRI= 000000   	G$$TTK= 000000   	N$$CON= 000500   	SCBNXT  000424RG 	UISAR0= 177640A$$TRP= 000000   	H$$RTZ= 000074   	N$$LDV= 000001   	ST.NAT= ****** GX	UISAR1= 17764      2CCBFRE  000000R  	I$$RAR= 000000   	N$$MOV= 000011   	S$$ECC= 000000   	UISAR2= 177644CCBINI  000106RG 	I$$RDN= 000000   	N$$MXM= 001100   	S$$WPC= 000036   	UISAR3= 177646CCBNXT  000264RG 	K$$CNT= 177546   	N$$TMO= 000012   	S$$WPR= 000005   	UISAR4= 177650CCBPNT  000104R  	K$$CSR= 177546   	N$$UMR= 000024   	S$$YSZ= 050000   	UISAR5= 177652CNTER   000102R  	K$$IEN= 000115   	OV$DB = 000000   	S.SAT = ****** GX	UISAR6= 177654COM.AD= ****** GX	K$$LDC= 000001   	OV$DR = 000000   	TERM.F  000332R  	UISAR7= 1      77656C$$CDA= 000002   	K$$TPS= 000074   	O$$LAP= 000000   	T$$ACR= 000000   	UISDR0= 177600C$$CKP= 000000   	LD$DB = 000000   	PNTR    000334R  	T$$BTW= 000000   	UISDR1= 177602C$$CSR= 177440   	LD$DR = 000000   	P$$D70= 000000   	T$$BUF= 000000   	UISDR2= 177604C$$LIS= 000000   	LD$LP = 000000   	P$$LAS= 000000   	T$$CCA= 000000   	UISDR3= 177606C$$ORE= 002000   	LD$MM = 000000   	P$$OFF= 000000   	T$$CCO= 000000   	UISDR4= 177610C$$RSH= 177564   	LD$NT = 000000   	P$$RFL= 000000   	T$$CTR= 000000   	UISDR      5= 177612C$$RUN= 000000   	LD$RH = 000000   	P$$RTY= 000000   	T$$ESC= 000000   	UISDR6= 177614C$$XDB= 000000   	LD$TT = 000000   	P$$TPT= 000000   	T$$GMC= 000000   	UISDR7= 177616C.CSIZ= ****** GX	LD$VT = 000000   	Q$$OPT= 000017   	T$$GTS= 000000   	V$$CTR= 001000D$$IAG= 000000   	LD$XM = 000000   	R$$DSP= 000000   	T$$HLD= 000000   	V$$TLD= 000120D$$ISK= 000000   	L$$ASG= 000000   	R$$EXV= 000000   	T$$J16= 000003   	V$$TLM= 000205D$$L11= 000001   	L$$DRV= 000000   	R$$HDV= 000000   	T$$KMG= 000000   	V      $$TRM= 000000D$$SHF= 000000   	L$$LDR= 000000   	R$$H11= 000003   	T$$LWC= 000000   	X$$M11= 000002D$$WCK= 000000   	L$$PTO= 000037   	R$$JPO= 000000   	T$$PS = 000000   	$DIV  = ****** GXD$$YNC= 000000   	L$$P11= 000001   	R$$JP1= 000003   	T$$RAX= 000000   	$$$R4 = 000000D$$YNM= 000000   	L$$11R= 000000   	R$$LKL= 000001   	T$$RNE= 000000   	.ACTTB= ****** GXD$$ZMD= 000000   	M$$CRB= 000124   	R$$MOF= 000000   	T$$RPR= 000000   	.CCBBA= ****** GXD$$Z11= 000004   	M$$CRX= 000000   	R$$MPL= 000000   	T$$RST      = 000000   	.CCBLH= ****** GXEND     000336R  	M$$EXT= 000000   	R$$M11= 000003   	T$$RUB= 000000   	.SCBTA= ****** GXE$$DVC= 000000   	M$$FCS= 000000   	R$$NDC= 000006   	T$$SMC= 000000   	.SCBTS= ****** GXE$$NSI= 000000   	M$$K11= 000000   	R$$NDH= 000226   	T$$SYN= 000000   	.SCBTT= ****** GXE$$PER= 000000   	M$$MGE= 000000   	R$$NDL= 000001   	T$$TRW= 000000   	.SCBTZ= ****** GXE$$XPR= 000000   	M$$MUP= 000000   	R$$SND= 000000   	T$$UTB= 000000. ABS.	000000	   000      	000556	   001ERRORS DETECTED:  0   ¢   
VIRTUAL MEMORY USED:  2775 WORDS  ( 11 PAGES)DYNAMIC MEMORY:  4036 WORDS  ( 15 PAGES)ELAPSED TIME:  00:00:28MISC,MISC.LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,MISC ¢          ÕÛ_xQÁ› 8$        DEMOMS.TSK;10   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     7-FEB-79   12:29



PARTITION NAME : GEN   
IDENTIFICATION : V1.0  
TASK  UIC      : [300,30]
STACK    LIMITS: 120222 121221 001000 00512.
ODT XFR ADDRESS: 134262
PRG XFR ADDRESS: 121636
TASK ATTRIBUTES: CP,PR             
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 4608. WORDS
TASK ADDRESS LIMITS: 120000 141763
R-W DISK BLK LIMITS: 000002 000023 000022 00018.

*** ROOT SEGMENT: DEMO34


R/W MEM  LIMIT      S: 120000 141763 021764 09204.
DISK BLK LIMITS: 000002 000023 000022 00018.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 121222 011534 04956.
                          121222 006644 03492. DEMO   V1.0   DEMO34.OBJ;62
                          130066 001442 00802. MESSAG V1.0   MSG34.OBJ;14
                          131530 000516 00334. MISCEL V1.0   MISC.      OBJ;16
                          132246 000024 00020. .MAIN.        INCLMS.OBJ;1
                          132272 000216 00142. CBTA   04.2   SYSLIB.OLB;10
                          132510 000246 00166. EDDAT  02     SYSLIB.OLB;10
$DPB$$:(RW,I,LCL,REL,CON) 132756 000030 00024.
                          132756 000030 00024. DEMO   V1.0   DEMO34.OBJ;62
$$FSR1:(RW,D,GBL,REL,OVR) 133006 000000 00000.
                          133006 000000 00000. DEMO   V1.0   DEMO34.OBJ;62
                          133      006 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
$$FSR2:(RW,D,GBL,REL,CON) 133006 000104 00068.
                          133006 000104 00068. FCSFSR 0303MS SYSLIB.OLB;10
$$RESL:(RW,I,LCL,REL,CON) 133112 000164 00116.
                          133112 000104 00068. FINIT  0102MS SYSLIB.OLB;10
                          133216 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
                          133216 000024 00020. SAVRG  03     SYSLIB.OLB;10
                          133242 000034 00028. SAVR1  0101   SYSL      IB.OLB;10
$$$ODT:(RW,I,GBL,REL,OVR) 133276 006466 03382.
                          133276 006466 03382. ODTRSX M04    TPSODT.OBJ;1



GLOBAL SYMBOLS:

ACBD   130044-R  B.ADDR 000016    COMMUN 127304-R  C.TDB  000006    HELP   132256-R  IO.WVB 011000    MEMSUM 132262-R  
APPSUM 132266-R  B.FLG  000010    COM.AD 125422-R  DIRERR 127660-R  IE.ACT 177771    IS.SUC 000001    MF.ACT 000001    
BF.ALC 000001    B.LINK 000022    CSIZE  125426-R  DSKSUM 132264-R  IE.ITS 177770    JSTFY  127742-R  MSGE   13      0542-R  
BF.OND 000020    CADR   125424-R  CYCLE  121574-R  FA.SHR 000040    IO.ATA 001410    JSTFY1 127730-R  M.BSZ  000056    
BUFCTR 121430-R  CCBINI 131636-R  C.CSIZ 000040    FD.RWM 000001    IO.RVB 010400    MEM    132246-R  M.CCB  000022    
BUFPTR 121426-R  CCBNXT 132014-R  C.SLT  000020    FO.RD  000001    IO.WAL 000410    MEMINI 132252-R  M.DNR  000035    
DEMOMS.TSK;10   MEMORY ALLOCATION MAP  TKB             PAGE 2
DEMO34               7-FEB-79   12:29



M.FLG  000024    QE.JEA 000111          QJ.ABL 000040    Q.FDEV 000006    Q.QHJL 000016    T.ACTL 000052    $PARHD 006152    
M.NOR  000034    QE.JNE 000112    QJ.AFL 000100    Q.FFN  000014    Q.QLEN 000020    T.ASTL 000016    $RQSCH 001424    
M.ROT  000060    QE.MEX 000132    QJ.AHJ 000004    Q.FJ   000004    Q.QNAM 000000    T.NAM  000006    $SAVRG 133216-R  
M.SST  000054    QE.NAV 000125    QJ.ALC 000020    Q.FLNK 000000    Q.QNUM 000005    T.PCB  000046    $SIZE  000174    
M.TIM  000044    QE.NFS 000113    QJ.ARE 000200    Q.FNC        000026    Q.QOJL 000010    T.STAT 000032    $TCPU0 001432    
N.OVPT 000054    QE.NJE 000145    QJ.AWI 000010    Q.FNCP 000027    Q.QST  000004    T.ST2  000034    $TCPU1 001434    
OUTBUF 126144-R  QE.NPS 000127    QQ.SBA 000200    Q.FSEQ 000002    Q.QTJL 000014    T2.AST 100000    $TIM   132632-R  
OUTLIN 126066-R  QE.NP0 000130    QQ.SMD 000100    Q.FUFD 000012    Q.SASS 000006    T2.DST 040000    $TKTCB 001416    
OUTPUT 121412-R  QE.NVT 000144    QQ.STO 000040    Q.JAFT 000030    Q.SCJ  000012    T      2.SPN 000004    $VEXT  000056    
PRCNT  130022-R  QE.OFL 000122    QS.FFO 000200    Q.JATT 000035    Q.SFL  000016    T2.STP 000020    $$CPU  000022    
PRT.OK 121572-R  QE.OJD 000002    QS.FNF 000001    Q.JCFI 000022    Q.SFO  000017    T2.WFR 000001    .ACTTB 000204    
P.ALLO 000030    QE.PRI 000053    QS.FSA 000040    Q.JFI  000020    Q.SLEN 000020    $BASE  000172    .CCBBA 000226    
P.DEAD 000024    QE.QDF 000106    QS.FSD 000100    Q.JFO  000037    Q.SNAM 000000    $CBDAT 132272-R  .CCBLH 00022      2    
P.HDR  000032    QE.QEA 000100    QS.FSF 000010    Q.JLFI 000022    Q.SNUM 000005    $CBDMG 132300-R  .FINIT 133112-R  
P.HIT  000020    QE.QMD 000104    QS.FSI 000020    Q.JLNK 000000    Q.SST  000004    $CBDSG 132306-R  .FSRCB 133006-R  
P.NUM  000016    QE.QNE 000102    QS.FSJ 000004    Q.JLPP 000036    Q.SUCB 000010    $CBOMG 132314-R  .FSRPT 000050    
QE.BDT 000120    QE.RED 000124    QS.SBA 000200    Q.JMXP 000026    Q.SUIC 000014    $CBOSG 132322-R  .MBFCT 133106-R  
QE.BQN 000134    QE.R      EQ 000131    QS.SHJ 000004    Q.JNAM 000004    RCVDT  123434-R  $CBTA  132352-R  .ODTL1 133534-R  
QE.BSN 000077    QE.ROP 000115    QS.SLC 000020    Q.JNPP 000024    RECBUF 127254-R  $CBTMG 132330-R  .ODTL2 133536-R  
QE.DIR 000117    QE.SDF 000107    QS.SMD 000100    Q.JPRI 000034    SCBINI 132070-R  $CBVER 132314-R  .SAVR1 133242-R  
QE.DNE 000121    QE.SEA 000101    QS.STO 000040    Q.JQ   000010    SCBNXT 132140-R  $CRAVL 006114    .SCBTA 000156    
QE.IAR 000116    QE.SEX 000001    QS.SWI 000010          Q.JQL  000033    ST.NAT 000004    $CXDBL 001421    .SCBTS 000166    
QE.IDB 000133    QE.SMD 000105    QS.SXE 000002    Q.JSEQ 000002    S.FST  000010    $C5TA  006362    .SCBTT 000164    
QE.IFC 000001    QE.SNE 000103    QUEINI 123470-R  Q.JSY  000012    S.NAM  000000    $DAT   132554-R  .SCBTZ 000160    
QE.IID 000150    QE.TYP 000110    QUESUM 132260-R  Q.JTI  000016    S.SAT  000014    $DIV   016352    ..FINI 133122-R  
QE.IJS 000146    QE.UNL 000123    QUE.ST 123466-R  Q.JUIC 000014    TRANS  13   î  2254-R  $DSW   000046    
QE.INM 000151    QFDB   123230-R  Q.FATT 000011    Q.QASS 000006    TRINIT 132250-R  $MUL   016320    
QE.IO  000114    QF.ADE 000200    Q.FCPN 000030    Q.QCJL 000012    TSTDSP 132270-R  $OTSV  000052    




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 36891.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 2560. WORDS (10. PAGES)

    ELAPSED TIME:00:00:26
î         Õ
cxQÁ› 8$        DEMO34.TSK;12   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     7-FEB-79   17:34



PARTITION NAME : GEN   
IDENTIFICATION : V1.0  
TASK  UIC      : [300,30]
STACK    LIMITS: 120222 121221 001000 00512.
ODT XFR ADDRESS: 150374
PRG XFR ADDRESS: 121636
TASK ATTRIBUTES: CP,PR             
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 7712. WORDS
TASK ADDRESS LIMITS: 120000 156077
R-W DISK BLK LIMITS: 000002 000040 000037 00031.

*** ROOT SEGMENT: DEMO34


R/W MEM  LIMIT      S: 120000 156077 036100 15424.
DISK BLK LIMITS: 000002 000040 000037 00031.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 121222 020162 08306.
                          121222 006664 03508. DEMO   V1.0   DEMO34.OBJ;63
                          130106 003464 01844. SUMMAR V1.0   QUESUM.OBJ;11
                          133572 000374 00252. SUMRY2 V1.0   MEMS      UM.OBJ;10
                          134166 002724 01492. APPLIC V1.0   APPSUM.OBJ;61
                          137112 000724 00468. DISPLA V1.0   DSKSUM.OBJ;12
                          140036 000516 00334. MISCEL V1.0   MISC.OBJ;16
                          140554 000016 00014. .MAIN.        INCLDE.OBJ;40
                          140572 000216 00142. CBTA   04.2   SYSLIB.OLB;10
                          141010 000126 00086. CDDMG  00     SYSLIB.OLB;10
                          141136 000246 00166.       EDDAT  02     SYSLIB.OLB;10
$DPB$$:(RW,I,LCL,REL,CON) 141404 000030 00024.
                          141404 000030 00024. DEMO   V1.0   DEMO34.OBJ;63
$$FSR1:(RW,D,GBL,REL,OVR) 141434 000000 00000.
                          141434 000000 00000. DEMO   V1.0   DEMO34.OBJ;63
                          141434 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
$$FSR2:(RW,D,GBL,REL,CON) 141434 000104 00068.
                          141434 000104 00068. FCSFSR 0303MS SYSLIB.OLB;10
$$RESL:(RW,I,LCL,REL,CON) 141540 00      5650 02984.
                          141540 000320 00208. CLOSE  0112S  SYSLIB.OLB;10
                          142060 000104 00068. FINIT  0102MS SYSLIB.OLB;10
                          142164 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
                          142164 001552 00874. OPFID  0125S  SYSLIB.OLB;10
                          143736 000046 00038. READ   0102MS SYSLIB.OLB;10
                          144004 000022 00018. WAITU  0100MS SYSLIB.OLB;10
                          144026 000024 000      20. SAVRG  03     SYSLIB.OLB;10
                          144052 000100 00064. DARITH 0004   SYSLIB.OLB;10
                          144152 000034 00028. SAVR1  0101   SYSLIB.OLB;10
                          144206 000034 00028. ANSPAD 0100MS SYSLIB.OLB;10
                          144242 000020 00016. BKRG   0100MS SYSLIB.OLB;10
                          144262 000014 00012. COMMON 0101MS SYSLIB.OLB;10
                          144276 000126 00086. XQIOI  0102MS SYSLIB.OLB;10
DEMO34.TSK;12   MEMORY       ALLOCATION MAP  TKB             PAGE 2
DEMO34               7-FEB-79   17:34



                          144424 000132 00090. WAITI  0102MS SYSLIB.OLB;10
                          144556 000112 00074. RSTFDB 0102S  SYSLIB.OLB;10
                          144670 000126 00086. WTWAIT 0100S  SYSLIB.OLB;10
                          145016 000240 00160. RQLCB  03     SYSLIB.OLB;10
                          145256 000270 00184. ASSLUN 0113MS SYSLIB.OLB;10
                          145546 000062 00050.       BDBREC 0100MS SYSLIB.OLB;10
                          145630 000134 00092. RETADR 0102MS SYSLIB.OLB;10
                          145764 000074 00060. RDWAIT 0102S  SYSLIB.OLB;10
                          146060 000160 00112. RDWRIT 0104MS SYSLIB.OLB;10
                          146240 000312 00202. RWLONG 0002MS SYSLIB.OLB;10
                          146552 000154 00108. EOFCHK 0100MS SYSLIB.OLB;10
                          146726 000304 00196. CKALOC 0104MS SYSLIB.OLB;10
                                147232 000022 00018. WATNOD 0100MS SYSLIB.OLB;10
                          147254 000044 00036. RWBLK  0101S  SYSLIB.OLB;10
                          147320 000032 00026. CONTRL 100MS  SYSLIB.OLB;10
                          147352 000036 00030. WATSET 0101MS SYSLIB.OLB;10
$$$ODT:(RW,I,GBL,REL,OVR) 147410 006466 03382.
                          147410 006466 03382. ODTRSX M04    TPSODT.OBJ;1



GLOBAL SYMBOLS:

ACBD   130064-R  F.FLG  000006    PRT.OK 121572-R  QE.QDF 000106    QS.SBA 000200    Q      .JQ   000010    SY.TST 000006    
APPSUM 134232-R  F.FNB  000102    P.ALLO 000030    QE.QEA 000100    QS.SHJ 000004    Q.JQL  000033    S.FST  000010    
BF.OND 000020    F.IMP  000026    P.DEAD 000024    QE.QMD 000104    QS.SLC 000020    Q.JSEQ 000002    S.LINK 000040    
BUFCTR 121430-R  F.NGET 000014    P.HDR  000032    QE.QNE 000102    QS.SMD 000100    Q.JSY  000012    S.OPER 000043    
BUFPTR 121426-R  F.NINS 000022    P.HIT  000020    QE.RED 000124    QS.STO 000040    Q.JTI  000016    S.SAT  00001      4    
B.FLG  000010    F.NLOK 000024    P.LRUF 000010    QE.REQ 000131    QS.SWI 000010    Q.JUIC 000014    S.TYP  000017    
B.LINK 000022    F.NUPD 000016    P.NUM  000016    QE.ROP 000115    QS.SXE 000002    Q.QASS 000006    TRANS  140564-R  
B.LRUF 000004    F.SIZE 000030    P.SIZE 000016    QE.SDF 000107    QUEINI 123470-R  Q.QCJL 000012    TRINIT 140560-R  
B.LUN  000011    F.STBK 000036    QE.BDT 000120    QE.SEA 000101    QUESUM 132564-R  Q.QHJL 000016    TSTDSP 140556-R  
B.SIZE 000020    F.UN      IT 000136    QE.BQN 000134    QE.SEX 000001    QUE.ST 123466-R  Q.QLEN 000020    TS.EXE 100000    
B.USE  000013    HELP   140566-R  QE.BSN 000077    QE.SMD 000105    Q.FATT 000011    Q.QNAM 000000    TS.OUT 000400    
CADR   125424-R  IE.ACT 177771    QE.DIR 000117    QE.SNE 000103    Q.FCPN 000030    Q.QNUM 000005    T.ACTL 000052    
CCBINI 140144-R  IE.ITS 177770    QE.DNE 000121    QE.TYP 000110    Q.FDEV 000006    Q.QOJL 000010    T.ASTL 000016    
CCBNXT 140322-R  IO.ATA 001410    QE.IAR 000116          QE.UNL 000123    Q.FFN  000014    Q.QST  000004    T.NAM  000006    
COMMUN 127324-R  IO.RVB 010400    QE.IDB 000133    QFDB   123230-R  Q.FJ   000004    Q.QTJL 000014    T.PCB  000046    
COM.AD 125422-R  IO.WAL 000410    QE.IFC 000001    QF.ADE 000200    Q.FLNK 000000    Q.SASS 000006    T.STAT 000032    
CSIZE  125426-R  IO.WVB 011000    QE.IID 000150    QJ.ABL 000040    Q.FNC  000026    Q.SCJ  000012    T.ST2  000034    
CYCLE  121574-R  IS.SUC 000001    QE.IJS 000146    QJ.AFL 000100    Q.FNCP 00      0027    Q.SFL  000016    T.TCBL 000030    
C.CSIZ 000040    I.PRMS 000050    QE.INM 000151    QJ.AHJ 000004    Q.FSEQ 000002    Q.SFO  000017    T2.AST 100000    
C.SLT  000020    JSTFY  127762-R  QE.IO  000114    QJ.ALC 000020    Q.FUFD 000012    Q.SLEN 000020    T2.DST 040000    
DIRERR 127700-R  JSTFY1 127750-R  QE.JEA 000111    QJ.ARE 000200    Q.JAFT 000030    Q.SNAM 000000    T2.SPN 000004    
DSKSUM 137160-R  MEM    140554-R  QE.JNE 000112    QJ.AWI 000010    Q.JATT 000035    Q.SNUM 000005    T2.      STP 000020    
FA.SHR 000040    MEMINI 140562-R  QE.MEX 000132    QQ.SBA 000200    Q.JCFI 000022    Q.SST  000004    T2.WFR 000001    
FD.RWM 000001    MEMSUM 133716-R  QE.NAV 000125    QQ.SMD 000100    Q.JFI  000020    Q.SUCB 000010    $BASE  000172    
FF.WRK 000010    MMLUN  000002    QE.NFS 000113    QQ.STO 000040    Q.JFO  000037    Q.SUIC 000014    $CBDAT 140572-R  
FO.RD  000001    MSGE   140570-R  QE.NJE 000145    QS.FFO 000200    Q.JLFI 000022    RCVDT  123434-R  $CBDMG 140600-R  
FRMLUN 00001      0    N.FID  000000    QE.NPS 000127    QS.FNF 000001    Q.JLNK 000000    RECBUF 127274-R  $CBDSG 140606-R  
F.BKDS 000020    N.OVPT 000054    QE.NP0 000130    QS.FSA 000040    Q.JLPP 000036    SCBINI 140376-R  $CBOMG 140614-R  
F.BKST 000024    OUTBUF 126164-R  QE.NVT 000144    QS.FSD 000100    Q.JMXP 000026    SCBNXT 140446-R  $CBOSG 140622-R  
F.BKVB 000064    OUTLIN 126106-R  QE.OFL 000122    QS.FSF 000010    Q.JNAM 000004    SO.O   000002    $CBTA  140652-R  
F.DVNM 000134    OUTPUT 121412-R  QE.OJD       000002    QS.FSI 000020    Q.JNPP 000024    ST.NAT 000004    $CBTMG 140630-R  
F.EFBK 000010    PRCNT  130042-R  QE.PRI 000053    QS.FSJ 000004    Q.JPRI 000034    SY.TIM 000004    $CBVER 140614-R  
DEMO34.TSK;12   MEMORY ALLOCATION MAP  TKB             PAGE 3
DEMO34               7-FEB-79   17:34



$CDDMG 141010-R  $OTSV  000052    $VEXT  000056    .FSRCB 141434-R  .WAIT  144004-R  ..FCSX 144262-R  ..WAEF 144506-R  
$CRAVL 006114    $PARHD 006152    $$CPU  000022    .FSRPT 000050    ..ALC1 14677      6-R  ..FINI 142070-R  ..WAIT 144466-R  
$CXDBL 001421    $RLCB  145016-R  .ACFSZ 000232    .MBFCT 141534-R  ..ALOC 146726-R  ..IDPB 144374-R  ..WAND 147232-R  
$C5TA  006362    $RQCB  145120-R  .ACFTB 000230    .ODTL1 147646-R  ..ALUN 145262-R  ..QIOW 144436-R  ..WAST 147352-R  
$DAT   141202-R  $RQSCH 001424    .ACTTB 000204    .ODTL2 147650-R  ..ANSP 144206-R  ..RBLK 147254-R  ..WBLK 147262-R  
$DDIV  144110-R  $SAVRG 144026-R  .ASLUN 145256-R  .OPFID 142164-R  ..BDRC 145546-R  ..RFDB 144556-R  ..WTRD       146132-R  
$DEVHD 006122    $SIZE  000174    .CCBBA 000226    .READ  143736-R  ..BKRG 144242-R  ..RTAD 145630-R  ..WTWA 144670-R  
$DIV   016352    $TCPU0 001432    .CCBLH 000222    .SAVR1 144152-R  ..CTRL 147324-R  ..RWAC 146006-R  ..WTWD 144670-R  
$DMUL  144052-R  $TCPU1 001434    .CLOSE 141540-R  .SCBTA 000156    ..EFCK 146552-R  ..RWAT 145764-R  ..WTW1 144674-R  
$DSW   000046    $TIM   141260-R  .CTRL  147320-R  .SCBTS 000166    ..EFC1 146560-R  ..RWCK 146060-R  ..XQIO 144276-R  
$LDRPT 006154     Ö    $TKTCB 001416    .FATAL 144274-R  .SCBTT 000164    ..EXTD 147026-R  ..RWLG 146240-R  ..XQI1 144314-R  
$MUL   016320    $TSKHD 006156    .FINIT 142060-R  .SCBTZ 000160    ..EXT1 147102-R  ..SEFB 146630-R  




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 46791.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 3584. WORDS (14. PAGES)

    ELAPSED TIME:00:00:37
 Ö         Ô4YÌÁ› 8$     ,   HRDCPY  /CP  , HRDCPY/-SP =HRDCPY/WNDWS=1// ,          õvåe_MÁ› 8$        




                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :00 HRS           12-FEB-79 21:52:27      *
*      * IDLE *    CPU:42%    POOL=180:860:47     CACHE=21:3:76  73:32       *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  24         MESSAGES:            *
*       PRINT:                                               ACTIVE:   9     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  29     *
*       ACT. JOBS:   0              LOADED:   6              MEMORY:   1%    *
*      WAIT. JOBS:   0              IN USE:   6                              *
*                                   QUEUED:   1         APP. FI      LES:          *
*       BATCH:                      MEMORY:   0%               OPEN:   6     *
*       ACT. PROC:   1                                        READS:  12     *
*       ACT. JOBS:   0         STATIONS:                     WRITES:  10     *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:   0     *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  17                                         DB0 : 175473  *
*          MEMORY:  75K        FORMS:                          DB1 : 58410   *
*             OUT:   0            IN CACHE:   0 (0)                          *
*          MEMORY:   0K             MEMORY:   0%                             *
******************************************************************************                                                      





                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :00 HRS           12-FEB-79 21:52:40      *
*      * IDLE *    CPU:34%    POOL=180:672:46     CACHE=2:20:78  9:44        *
*                                                                            *
*                          *** MESSAGE DISPLAY ***                           *
*  TRANS.    SOURCE     STAT                              TIME    #  RTES          *
*   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   *
*                                                                            *
*  ENTORD    TERM25    EO002T    SLOT    NACT     21:52:37     2       192   *
*  ENTORD    TERM04    EO003T    SLOT    NACT     21:47:27     1       192   *
*  DPYSTK    TERM29    SIVRFY    SLOT    NACT     21:52:37     2         8   *
*  ENTORD    TERM28    EO002T    SLOT    NACT     21:52:31           2       192   *
*  ENTORD    TERM03    EO001T    SLOT    NACT     21:51:42     1        56   *
*  ENTORD    TERM25    EO002T    SLOT    NACT     21:52:37     2       192   *
*  ENTORD    TERM26    EO002T    MESS    NACT     21:52:10     2       192   *
*  ENTORD    TERM10    EO003T    SLOT    NACT     21:47:11     1       192   *
*  DPYSTK    TERM30    SIVRFY    SLOT    NACT     21:52:12     2         8   *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
******************************************************************************                                                      




                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :00 HRS           12-FEB-79 21:52:53      *
*      * IDLE *    CPU:53%    POOL=238:1444:52    CACHE=15:26:59  14:78      *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  EO003T       2         0        14       162      250        59       0   *
*  RS001T       1         0         0        76       87        46       0   *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
******************************************************************************                                                      





                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           12-FEB-79 21:53:05      *
*      * IDLE *    CPU:43%    POOL=238:1444:48    CACHE=11:10:79  21:76      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    CHNCST         1          51        031V62           748        NO      *
*    DPYSTK         2         155        009V62           752        NO      *
*                                        030V62           753        YES     *
*    ENTORD        19        1221        001V62           714              YES     *
*                                        015V62           735        NO      *
*                                        032V62           728        NO      *
*                                        007V62           749        NO      *
*                                        004V62           711        NO      *
*                                        012V62           746        NO      *
*                                        028V62           739        NO      *
*                                              003V62           740        NO      *
*                                        008V62           717        NO      *
*                                        025V62           741        NO      *
*                                        006V62           719        NO      *
*                                        005V62           730        NO      *
******************************************************************************                                                      




                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           12-FEB-79 21:53:05      *
*      * IDLE *    CPU:43%    POOL=238:1444:48    CACHE=11:10:79  21:76      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
******************************************************************************                                                      





                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           12-FEB-79 21:53:17      *
*      * IDLE *    CPU:43%    POOL=238:1068:43    CACHE=16:25:59  11:54      *
*                                                                            *
*                 *** TST & FORMS MEMORY UTILIZATION DISPLAY ***             *
*                                                                                  *
*        0*******4*******8*******12******16******20******24******28******    *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*        0*******4*******8*******12******16******20******24******28******    *
*                                                                            *
*        32******36******40******44******48******52******56******60******    *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*        32******36******40******44******48******52******56******60******    *
******************************************************************************                                                      




                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           12-FEB-79 21:53:29      *
*      * IDLE *    CPU:51%    POOL=238:1256:46    CACHE=10:23:67  16:62      *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  21         MESSAGES:            *
*       PRINT:                                               ACTIVE:   6     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  26     *
*       ACT. JOBS:   0              LOADED:   7              MEMORY:  19%    *
*      WAIT. JOBS:   0              IN USE:   4                              *
*                                   QUEUED:   0         APP. FI      LES:          *
*       BATCH:                      MEMORY:  35%               OPEN:   6     *
*       ACT. PROC:   1                                        READS:  44     *
*       ACT. JOBS:   0         STATIONS:                     WRITES:  47     *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:   0     *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  15                                         DB0 : 175468  *
*          MEMORY:  69K        FORMS:                          DB1 : 58360   *
*             OUT:   0            IN CACHE:   6 (0)                          *
*          MEMORY:   0K             MEMORY:  12%                             *
******************************************************************************                                                      





                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           12-FEB-79 21:53:41      *
*      * IDLE *    CPU:49%    POOL=238:1624:48    CACHE=2:17:81  14:71       *
*                                                                            *
*                          *** MESSAGE DISPLAY ***                           *
*  TRANS.    SOURCE     STAT                              TIME    #  RTES          *
*   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   *
*                                                                            *
*  ENTORD    TERM32    EO003T    SLOT    NACT     21:51:18     1       192   *
*  ENTORD    TERM08    EO003T    MESS    NACT     21:51:22     1       192   *
*  CHNSTK    TERM10    DS001T    SLOT    NACT     21:53:32     0         8   *
*  ENTORD    TERM14    EO000T    SLOT    NACT     21:53:33           0        42   *
*  ENTORD    TERM27    EO003T    MESS    NACT     21:51:03     0       192   *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
******************************************************************************                                                      




                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           12-FEB-79 21:53:52      *
*      * IDLE *    CPU:49%    POOL=238:1444:48    CACHE=15:3:82  8:87        *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  EO001T       1         0         0        73      272         65520   0   *
*  EO003T       2         0        10       162      257        595520   0   *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
******************************************************************************                                                      





                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           12-FEB-79 21:54:04      *
*      * IDLE *    CPU:30%    POOL=238:880:42     CACHE=11:23:66  9:22       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    CHNSTK         1          37        010V62           758        NO      *
*    ENTORD        16        1225        015V62           735        YES     *
*                                        007V62           749        NO      *
*                                        012V62           746              NO      *
*                                        028V62           739        NO      *
*                                        003V62           740        NO      *
*                                        008V62           717        NO      *
*                                        025V62           741        NO      *
*                                        006V62           719        YES     *
*                                        005V62           730        NO      *
*                                              016V62           737        NO      *
*                                        026V62           736        NO      *
*                                        004V62           763        YES     *
*                                        029V62           754        YES     *
*                                        014V62           759        YES     *
******************************************************************************                                                      




                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           12-FEB-79 21:54:04      *
*      * IDLE *    CPU:30%    POOL=238:880:42     CACHE=11:23:66  9:22       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
******************************************************************************                                                      





                                                                         
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           12-FEB-79 21:54:16      *
*      * IDLE *    CPU:56%    POOL=238:880:44     CACHE=13:25:62  19:42      *
*                                                                            *
*                 *** TST & FORMS MEMORY UTILIZATION DISPLAY ***             *
*                                                                                  *
*        0*******4*******8*******12******16******20******24******28******    *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*        0*******4*******8*******12******16******20******24******28******    *
*                                                                            *
*        32******36******40******44******48******52******56******60******    *
*                                                                            *
*                                                                            *
*                 ð                                                                *
*                                                                            *
*                                                                            *
*                                                                            *
*        32******36******40******44******48******52******56******60******    *
******************************************************************************                                ð         ŒrÀß^Á› 8$         ŒrW!    ÑšÒ³   ¯”L  Œw*@  nH@   u@  <&Kq@  <&9€@  Ä)ÕZ@  e6m'@   w6 X@  ´:t	@  ´:ô@  ´:2“@  hhÐ@   €#@  €a@  aì@  aìy@  nH@   p@  s<}@  s ‚@  s(‚@  t@   u@  ‚L	@  ‚@  ‚D)@  ‚Ny@   ‚ðy@  ‚Â@  D‚æf@  T†„S@  £‡˜”@   £‡À”@  ²‡à@  ³‡ø@  µ‡üX@  ¶‡@   \ˆæf@  \ˆÃŒ@  "”‚N@  :©@  <©@   J©¼	@  [©(}@  a© }@  e©ÄŠ@  i©€‰@   š©‰s@  ªò@  ¤ªs@  ¯ª„@  A«Äq@   ¡«@w@  »«„@  Ñ«,x@  Ñ«Bx@  é«@Q@   ë«z}@        ó«F@  ¬ÄL@      (>    (J            H    J    Y*     ------------------ & -------------------------------------- L -------- Y+     --------------------- r -------------------------------------- ˜ ----- Y!    (POOL= Y,   Y)  ******* ¾ ************************************** ä ************************************** 
************************************** 0*******   ·    Y   RSX-11M+ V01 BLXX ·  VXX        Y" ePARS XXXXXX:T Y   P Y |*  E Y! >FREE=SY0: Y#  IN: Y&  OU      T: ¢ Y2 dERRSEQ        - INSUFFICIENT TAS ÈK LIST BUFFER SPACE
         INSTALL  îTASK WITH A LARGER INCREMENT       "´:2“   ¯[ 0       )  ¯ &     	 J Jæ*æ?ÿˆÀ¯Ã*Á÷	  Á÷	  À4	ÈÔÿ *¯*[©(} [©(}$4	 pþˆ˜Á  B  ò5    ñE    Á ˜
ë«z}u\ˆæf£‡À”D‚æfs(‚ Œ  A  Hl ‡ Èå  Á†ÿ
wŠ@àÀ%È 
‡ ªòw6 X"”‚N  ²æ
ÿˆ‡æ"ÿˆæ3ÿˆwlÁe
 wfÀ% í‚ 
" Øæ*æ æÿˆ‡÷5  @ÿ÷5  8ÿã÷5   *<&9€<&Kq(\ˆÃŒ þ      0ÿ Â  Â
¡ Ã ƒ
‚ý‚
÷ðÃå Ãå  
Ñ«Bx $ÂÃ
ý·
þ÷å ØÁÔÁ
 
À€
Á
ü7Ä JÀìýÁìý
÷	  ÷e Üý÷mÖýÚý÷
Ôýð&
&
&
 :© p&
&
&
&
&
&
Î• æ æ  æÿˆ‡æÈÿˆ ´:t	&È –÷	Ã¬ ÷	RÃ÷ ÷	J7ŠIýÃ² ÷	>À  Á 
¬ ÷ ² &Ñ«,x ¼T””””@Á  
÷	  Ñ•K  TÑ«Bx":© âÃ@÷	
Ãz÷	Á  Áe ¡  @zJ©¼	 ÷	Ò Ã`÷	àÃ÷	Ø÷•: VýÁ  ÷	´ Å$  
` Ñ«Bx .÷	  Ä  Àj ÷	   ÷	  €
 È•D  ¯ª„
A«Äqj[©(}[©(} TÁ5        È•C Á5€ È•T 4!
 È•S 7’ýÂ  z÷	LÂY ÷	DB…
÷	€Âc ÷	4Ãj÷	d4! "j  
 
 1-   ÷	$ ¼÷	  Ã $¬ÄL( Æ÷	*Ã™÷	"Ã£÷	w @ Ám,÷&(÷
 
™£ ì"üÂ* Á%@ ‚‚
Áå@ W ? ‡‡ ·iüÁe  w cüÃs÷	Ø
‡ À Á€Ð•  Á
üÃ  Ã  s "e©ÄŠ 8ó%SY  ùÃe  ÷¢w ð nHu    
 <>[]()          Y  L   . .Y! -                  :::::: Y!   *I TDLE*   ^ ^ÿÿÿÿY! G                              „                      Y3 d            ª                   ¬ ¬         )   ´:ô¬  Ð    )   ê ê      ÿÿÿÿÿÿb b þ þ      ÿÿ˜þ        Y  ;UP   "	 "	 HRS   (	 (	    0	 0	    <	 <	æÌÿˆ÷	$÷	 æÖÿˆõæÚæ=ÿˆ÷„ÿ¨ÿ ÌÖÚ b	Ã÷	ŠÀÁÚ÷	  Ð•  Â ÷	  Ð•   Úa© }$é«@Q ˆ	Š÷	tÁ  w nÿwhÿÀŸ
÷	  Ð•. Ð•   š©‰sŸ :© ®	È‹üÃš÷	:ÁLÿw FÿÁe< Áí<ÿ÷:ÿ6ÿw` 
š Ô	0ÿ%÷åh(ÿ·
*ÿ÷%
 $ÿ·
 ÿ7
ÿÀ	Áÿ $	 ú	
÷	  Ð•. Áÿ
÷	  ŠÃ	÷	ÚÃ"	÷	 
:©:©	&"	        
àÅZþˆŠ
À  À  ð   7   ð   ZŠ
¡«@wë«z}aì ë«z}&s<} F
ð  ð5    ð5   aìy‚L	‚
s ‚‚ðy‚Ny
 X
  ð5        <=   s ‚
‚Âs ‚phhÐe6m' p
    Ý

   ‡ Ä^T%L# e6m' 
aìnHnH  ^ –
ÃL÷	VLfdVSÃR
ÀA÷	  A LR&[©(} ¼
÷	  Š÷	<Áø

	
þˆò
Ä  	t" †	 [©(}øò
J©¼	 â
 !m ¡
Q$õ‡ w"þw(þw( þ*À3 (3 Äü7îý
÷	  Ð•. Ð•: 7Úý
÷	 ü      :© .  Ð•. Ð•: 7Æý
÷	  Ð•. Ð•  È‹üÃ. :©:©(. T÷	œ÷ ÜýÁÖýÂ„ý…‚  … û·fýæ  À ²‡à&»«„ zºýC  õ5    õµ    Ðÿÿ
÷
 ýÞ	 ‡B! ¶‡Œw*£‡˜”T†„S³‡ø  üõ5    øõµ    ôÑ  I  ÉÅø ÑÕ0 Ñ•:  Œw*
£‡˜”T†„S³‡ønHµ‡üX ÆC  Ðœ  ŠÐ" ÷
býàÆüüÈÿÿÅPýÃì÷- ¶‡&ì ìLýýS%S%7c)c)SSÍü€
Ä,ýÅ&ýÀ gÍ€Ð•D Ð•M Ð•O Ð•, ••••A
÷	 g 8  Ð•. Ð•, U%Íñ€à‹À-¨ü‚Š7 üÈ‹Ð•   <© ^ûÃb÷	ŒÍÃ€÷Êü‚üþˆ&Å¸üÄ  M4½       b&"A«Äq „  ú 
ô5€  	   Õ 3ô5   ª 
  âô5€  é ô5  Õ Ð  
 Õ 7!  ÍÕ Õ   &
ó5   nH¤ªsnH nH(€# ö  ÎU ó5    ÎU • w! ü†ÀË± s<}‚D)s ‚ À  p ‡ Bf¦ÁwôûÍ5 ÁÍ5  ªò$ BÁÂmÂú÷¼ú¾ú‚÷
¸úü€Âe D„cÄm¦ú    h÷ ú¢ú„÷
œúü! ‡e)ÖÒÊ¥  J’à ŽÄ
Ž
Ž`Î%? Î
‚
Ã- ÷5 zûÃ=  ´Ä
Òü
J’À*	÷5 ^ûåPÐ: Ð   *	 ÚA÷	  A÷	  Á€‚Ã*	÷	2˜7
      ®ú7
¨ú7
 [©(}[©(}€*	  ªú7
¤úþˆ`Ã  Ä  ó  ó5   `ó«Ft
tt €#   ö÷   óÄ  & ŽŽ
Žó5    ·
dú·e s<}
¤ªsp€a s<} Dbúã·
^ú·e\úÞ‡ Â•‘”Ê‹ý‡ Á ÷	ìÿÁ •"  j@÷	äÿÁÀ÷	ÜÿÁ ÷	ÔÿÀ Áú
÷	  À @À  &:© @Áú

÷	  È•K ÀÀÁúù
÷	   @:©À(:© ¶À Áîù

÷	  È•K Ä ÷þÿ.ù÷  :© Üþÿ*ù!€3‚4­ÿ „
÷÷	h Àe" À%) ‚Àe ÿ   ·
 ùÁe  7 úøw òøÂ ÷	ª ÂY ÷	¢  (   t  · ÜøÂ8 ÷	Ö B÷	Œ wÆø7Äø÷	š ÊÂ N ÷	v ÂH ÷	² % À
Á@ w   À€Á€Ð• i©€‰"€ t  Á
üÂ  ÂmŒø÷†øˆø‚÷
‚øü— € ‡‡ ò• Ñ«Bx š:  Á€ÃE?÷  ù÷% úøæ°ÿˆ‡æ  
€E  "° ÀÈÿˆ7
öø‡ ¿îø·
êø·
èø÷% âø‚÷	Æÿ‡  È æ´ÿ ÷	Úÿ„
‡ Â”÷	Îÿû÷	 Â”÷	Àÿû ÿ  ‡ ÷	¸ÿæ  
÷	¬ÿÎ
üÖ‡ Â%@ ‚ÂeÀB` Ä)ÕZ 2Ê”Âe@ Ë‹û‡  t         Ô2 dkQÁ› 8$        	.TITLE	HELP DISPLAY	.SBTTL	ASCII TEXT	.NLIST	BEX	ESC=33	CD=131	ES=112TEXT:	.ASCII	<ESC><CD><31.+3><0><31.+1><ESC><ES>	.ASCII	<ESC><CD><31.+4><0><31.+31.>	.ASCII	/*** HELP DISPLAY ***/	.ASCII	<ESC><CD><31.+6><0><31.+22.>	.ASCII	/THE FOLLOWING COMMANDS ARE AVAILABLE:/	.EVENPOS:	.ASCII	<ESC><CD><31.+8.><0><31.+9.><1>TEXT1:	.WORD	2$	.ASCII	/AP   -   CHANGE THE APPLICATION BEING DISPLAYED./<1>	.EVEN2$:	.WORD	3$	.ASCII	/CY   -   CYCLES THROUGH ALL THE DISPLAYS./<1>	.EVEN3$:	.WORD	4$	.ASCII	/EX   -   EXIT DEMO PR      OGRAM./<1>	.EVEN4$:	.WORD	5$	.ASCII	/FR n -   ALTER UPDATE FREQUENCY OF MAIN DISPLAY./<1>	.EVEN5$:	.WORD	6$	.ASCII	/HE   -   SHOWS THIS HELP DISPLAY./<1>	.EVEN6$:	.WORD	7$	.ASCII	#ME   -   SWITCH TO THE CORE/CACHE MEMORY UTILIZATION DISPLAY.#<1>	.EVEN7$:	.WORD	8$	.ASCII	/ME   -   SWITCH TO THE MESSAGE DISPLAY./<1>	.EVEN8$:	.WORD	9$	.ASCII	/NC   -   CANCEL CYCLE OPTION./<1>	.EVEN9$:	.WORD	10$	.ASCII	/NP   -   TURN-OFF PRINT OPTION./<1>	.EVEN10$:	.WORD	11$	.ASCII	/PR   -   TURN-ON PRINT OPTION./<1>	.EVEN11$:	      .WORD	12$	.ASCII	/SU   -   SWITCH BACK TO THE SUMMARY MODULE./<1>	.EVEN12$:	.WORD	13$	.ASCII	/TR   -   SWITCH TO TRANSACTION DISPLAY./<1>	.EVEN13$:	.WORD	0	.ASCII	/TS   -   SWITCH TO TST DISPLAY./<1>	.EVEN	.PAGE	.SBTTL	DISPLAY TEXT INFORMATIONHELP::	MOV	#31.+9.,POS+2		;RESET CURSOR	MOV	#TEXT,R3		;POINT TO HEADER	CALL	OUTLIN			;DISPLAY HEADER;; DISPLAY COMMAND DESCRIPTION;	MOV	#TEXT1,R3		;POINT TO FIRST DESCRIPTIONLOOP:	MOV	R3,R5			;SAVE IT	ADD	#2,R3			;SKIP POINTER TO NEXT	CALL	OUTLIN			;DISPLAY IT	INCB	POS   Ô   +2			;MOVE CURSOR DOWN 1 LINE	MOV	#POS,R3			;POSITION CURSOR TO NEXT LINE	CALL	OUTLIN			;DO IT	MOV	(R5),R3			;POINT TO NEXT COMMAND DESCRIPTION	BNE	LOOP			;IF NE - MORE TO GO	MOV	#1,PRT.OK	CALL	OUTBUF	RETURN	.ENDÔ          Ô2 d^Á› 8$         Ô2 d    ¯”L  aÎ@  avL@  äfc±@       (¦Ô2 dhn¯”             Y"  JY# >*** HELP DISPLAY ***Y% 5T & HE FOLLOWING COMMANDS ARE AVAILABLE:Y L ' („ AP   -   CHANGE THE APPLICATION  „  r BEING DISPLAYED.  „  „ ° CY   -   CYCLES THROUGH ALL THE DISP °  ª LAYS.Î EX   -   EXIT DEMO PROGRAM. 
Î ( Ð FR N -   ALTER UPDATE FREQUENCY OF MAI ö N DISPLAY.   &HE   -   SHOWS THIS HELP DISPLAY.f &(f (ME   -   SWITCH TO THE CORE/CACHE MEMO NRY UTILIZATI   Ê  ON DISPLAY.ME   -   SWI  tTCH TO THE MESSAGE DISPLAY.°NC   -    ° š CANCEL CYCLE OPTION.ÒNP   -   TURN- Ò ÀOFF PRINT OPTION.ôPR   -   TURN-ON P ô æRINT OPTION.  ô ô"SU   -   SWITCH BACK TO THE SUMMARY  " MODULE.LTR   -   SWITCH TO TRANSACTI L @ON DISPLAY.  TS   -   SWITCH TO TST D fISPLAY.÷( ØýÃ  ÷	  ÃP ÅÃe ÷	  ·Š   avLP &avL Œ¾ýÃJ ÷	  Có÷   ÷	  ‡  J avLäfc±aÎ  Ê         Ô2 dNÁ› 8$        HELP DISPLAY	MACRO M1110  14-FEB-79 12:07TABLE OF CONTENTS     1-    2	ASCII TEXT     2-   80	DISPLAY TEXT INFORMATIONHELP DISPLAY	MACRO M1110  14-FEB-79 12:07  PAGE 1      1						.TITLE	HELP DISPLAY      2						.SBTTL	ASCII TEXT      3						.NLIST	BEX      4      5      6		000033 				ESC=33      7		000131 				CD=131      8		000112 				ES=112      9     10     11	000000	   033 	   131 	   042 	TEXT:	.ASCII	<ESC><CD><31.+3><0><31.+1><ESC><ES>     12     13	000007	   033 	   131 	   043 		.ASCII	<ESC><CD><3      1.+4><0><31.+31.>     14	000014	   052 	   052 	   052 		.ASCII	/*** HELP DISPLAY ***/     15     16	000040	   033 	   131 	   045 		.ASCII	<ESC><CD><31.+6><0><31.+22.>     17	000045	   124 	   110 	   105 		.ASCII	/THE FOLLOWING COMMANDS ARE AVAILABLE:/     18						.EVEN     19     20     21	000112	   033 	   131 	   047 	POS:	.ASCII	<ESC><CD><31.+8.><0><31.+9.><1>     22     23     24	000120	000204'			TEXT1:	.WORD	2$     25	000122	   101 	   120 	   040 		.ASCII	/AP   -   CHANGE THE APPLICATION BEING DISP      LAYED./<1>     26						.EVEN     27     28	000204	000260'			2$:	.WORD	3$     29	000206	   103 	   131 	   040 		.ASCII	/CY   -   CYCLES THROUGH ALL THE DISPLAYS./<1>     30						.EVEN     31     32	000260	000316'			3$:	.WORD	4$     33	000262	   105 	   130 	   040 		.ASCII	/EX   -   EXIT DEMO PROGRAM./<1>     34						.EVEN     35     36	000316	000402'			4$:	.WORD	5$     37	000320	   106 	   122 	   040 		.ASCII	/FR N -   ALTER UPDATE FREQUENCY OF MAIN DISPLAY./<1>     38						.EVEN     39     40	000402	0004      46'			5$:	.WORD	6$     41	000404	   110 	   105 	   040 		.ASCII	/HE   -   SHOWS THIS HELP DISPLAY./<1>     42						.EVEN     43     44     45	000446	000546'			6$:	.WORD	7$     46	000450	   115 	   105 	   040 		.ASCII	#ME   -   SWITCH TO THE CORE/CACHE MEMORY UTILIZATION DISPLAY.#<1>     47						.EVEN     48     49	000546	000620'			7$:	.WORD	8$     50	000550	   115 	   105 	   040 		.ASCII	/ME   -   SWITCH TO THE MESSAGE DISPLAY./<1>     51						.EVEN     52     53	000620	000660'			8$:	.WORD	9$     54	0006      22	   116 	   103 	   040 		.ASCII	/NC   -   CANCEL CYCLE OPTION./<1>     55						.EVEN     56     57	000660	000722'			9$:	.WORD	10$HELP DISPLAY	MACRO M1110  14-FEB-79 12:07  PAGE 1-1ASCII TEXT     58	000662	   116 	   120 	   040 		.ASCII	/NP   -   TURN-OFF PRINT OPTION./<1>     59						.EVEN     60     61	000722	000764'			10$:	.WORD	11$     62	000724	   120 	   122 	   040 		.ASCII	/PR   -   TURN-ON PRINT OPTION./<1>     63						.EVEN     64     65	000764	001042'			11$:	.WORD	12$     66	000766	   123 	         125 	   040 		.ASCII	/SU   -   SWITCH BACK TO THE SUMMARY MODULE./<1>     67						.EVEN     68     69	001042	001114'			12$:	.WORD	13$     70	001044	   124 	   122 	   040 		.ASCII	/TR   -   SWITCH TO TRANSACTION DISPLAY./<1>     71						.EVEN     72     73	001114	000000 			13$:	.WORD	0     74	001116	   124 	   123 	   040 		.ASCII	/TS   -   SWITCH TO TST DISPLAY./<1>     75						.EVEN     76     77     78HELP DISPLAY	MACRO M1110  14-FEB-79 12:07  PAGE 2DISPLAY TEXT INFORMATION     80						.SBTTL	DISPLAY T      EXT INFORMATION     81     82     83     84	001156				HELP::     85     86     87	001156	012767 	000050 	176730 		MOV	#31.+9.,POS+2		;RESET CURSOR     88	001164	012703 	000000'			MOV	#TEXT,R3		;POINT TO HEADER     89	001170	004767 	000000G			CALL	OUTLIN			;DISPLAY HEADER     90     91     92					;     93					; DISPLAY COMMAND DESCRIPTION     94					;     95     96     97	001174	012703 	000120'			MOV	#TEXT1,R3		;POINT TO FIRST DESCRIPTION     98     99	001200				LOOP:    100    101	001200	010305 				MOV	R3,R      5			;SAVE IT    102	001202	062703 	000002 			ADD	#2,R3			;SKIP POINTER TO NEXT    103	001206	004767 	000000G			CALL	OUTLIN			;DISPLAY IT    104	001212	105267 	176676 			INCB	POS+2			;MOVE CURSOR DOWN 1 LINE    105	001216	012703 	000112'			MOV	#POS,R3			;POSITION CURSOR TO NEXT LINE    106	001222	004767 	000000G			CALL	OUTLIN			;DO IT    107	001226	011503 				MOV	(R5),R3			;POINT TO NEXT COMMAND DESCRIPTION    108	001230	001363 				BNE	LOOP			;IF NE - MORE TO GO    109    110	001232	012767 	000001 	000000G		      MOV	#1,PRT.OK    111	001240	004767 	000000G			CALL	OUTBUF    112	001244	000207 				RETURN    113    114    115		000001 				.ENDHELP DISPLAY	MACRO M1110  14-FEB-79 12:07  PAGE 2-1SYMBOL TABLECD    = 000131   	HELP    001156RG 	OUTBUF= ****** GX	POS     000112R  	TEXT    000000RES    = 000112   	LOOP    001200R  	OUTLIN= ****** GX	PRT.OK= ****** GX	TEXT1   000120RESC   = 000033. ABS.	000000	   000      	001246	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  451 WORDS  ( 2 PAGES)DYNAMIC MEMORY:  2980 WORDS     8   ( 11 PAGES)ELAPSED TIME:  00:00:08HELP,HELP.LST/-SP=HELP8          ÐzkQÁ› 8$        	.TITLE	APPLICATION SECTION OF SUMMARY DISPLAY MODULE	.SBTTL	INITIALIZATIONS	.NLIST	BEX	.MCALL	FABOF$,IMAOF$,PCBDF$,INH$S,ENB$S,ASRDF$		ESC=33			;ESCAPE CHARACTER	CD=131			;CURSOR DISPLAY	ES=112			;ERASE TO END OF SCREEN	HO=110			;SEND CURSOR TO HOME POSITION	PCBDF$	ASRDF$	FABOF$	RMS$L	IMAOF$	RMS$L	.PAGE	.SBTTL	MAIN LOOPTMPMSG:	.ASCII	<ESC><CD><31.+3.><0><31.+1.><ESC><ES>	.ASCII	<ESC><CD><31.+4.><0><31.+25.>	.ASCII	/*** SUMMARY DISPLAY ***/<1>APPSUM::;	MOV	#TMPMSG,R3;	CALL	OUTLIN	CALL	TRNUM		;DISPLAY NUMBER       OF RUNNING TRANSACTIONS	CALL	FILES		;DISPLAY FILE STATS	CALL	STATS		;DISPLAY TST,MESSSAGE&FORM STATS	CALL	STADSP		;DISPLAY STATION STATS	RETURN.PAGE.SBTTL	DISPLAY NUMBER OF RUNNING TRANSACTIONSTRAN.R:	.WORD	0TRAN$:	.ASCII	<ESC><CD><31.+6.><0><31.+31.>	.ASCII	/TRANS.  RUN:/	.EVENTRAN$1:	.ASCII	/    /<1>	.EVENTRNUM:	CLR	TRAN.R		;INITIALIZE COUNTER	INH$S			;INHIBIT CONTEXT SWITCHING	MOV	COM.AD,UISAR3	;MAP TO COMMON AREA	MOV	COM.AD,UISAR4	;USE TWO PARTITIONS SO CAN MAP TO 8K	ADD	#200,UISAR4;; CALCULATE NUMBER       OF CCBS;	MOV	60000+.ACTTB,R0	;GET END OF CCB AREA	SUB	60000+.CCBBA,R0	;SUBTRACT BEGINNING AREA	MOV	#C.CSIZE,R1	;AND DIVIDE BY CCB SIZE TO OBTAIN	CALL	$DIV		;NUMBER OF CCBS;; NOW GO THROUGH CCB FREE LIST SUBTRACTING ONE FROM TOTAL; CCB NUMBER FOR EACH CCB THAT IS IN THE FREE LIST. AFTER; GOING THROUGH ALL CCBS R1 WILL CONTAIN THE NUMBER OF RUNNING; TRANSACTIONS;	MOV	#.CCBLH,R1	;POINT TO THE CCB FREE LISTHEAD1$:	MOV	60000(R1),R1	;POINT TO NEXT FREE CCB	BEQ	5$		;IF EQ -WE ARE THROUGH	DEC	R0		;ONE LESS ACTIVE T      RANSACTION	BR	1$		;KEEP GOING5$:	MOV	R0,TRAN.R	;SAVE RESULT	ENB$S			;ENABLE CONTEXT SWITCHING	MOV	#TRAN$1,R0	;GET OUTPUT BUFFER ADDRESS	MOV	TRAN.R,R1	;AND VALUE TO BE OUTPUT	CALL	JSTFY		;RIGHT JUSTIFY	MOV	#TRAN$,R3	;POINT TO OUTPUT AREA	CALL	OUTLIN		;OUTPUT TRANSACTION INFORMATION	RETURN.PAGE.SBTTL	GET FILE STATSF.OPEN:	.WORD	0NF.RD:	.WORD	0NF.WRT:	.WORD	0NF.HIT:	.WORD	0FILE$:	.ASCII	<ESC><CD><31.+11.><0><31.+56.>	.ASCII	/APP. FILES:/	.ASCII	<ESC><CD><31.+12.><0><31.+63.>	.EVENFILE$O:	.ASCII	/OPEN:     /	.A      SCII	<ESC><CD><31.+13.><0><31.+62.>	.EVENFILE$R: .ASCII	/READS:     /	.ASCII	<ESC><CD><31.+14.><0><31.+61.>	.EVENFILE$W:	.ASCII	/WRITES:     /	.ASCII	<ESC><CD><31.+15.><0><31.+63.>	.EVENFILE$H:	.ASCII	/HITS:     /<1>	.EVENFILES:	CLR	F.OPEN		;INITIALIZE COUNTERS	CLR	NF.RD	CLR	NF.WRT	CLR	NF.HIT	INH$S			;INHIBIT CONTEXT SWITCHING	MOV	COM.AD,UISAR3	;MAP TO THE COMMON AREA	MOV	COM.AD,UISAR4	ADD	#200,UISAR4	MOV	#77406,UISDR2	MOV	#77406,UISDR3	MOV	#77406,UISDR4	MOV	60000+.ACFTB,R0	;GET BASE ADDRESS OF AFT	MOV	6000      0+.ACFSZ,R1	;AND NUMBER OF ENTRIES IN TABLE5$:	BITB	#FF.WRK,<60000+F.FLG>(R0) ;IS THIS AN AFT FOR A WORK FILE?	BNE	10$		;IF NE - YES	MOV	60000+F.IMP(R0),UISAR2	;POINT TO IMPURE DATA AREA	MOV	#I.PRMS,R2		;CALCULATE ADDRESS OF STATUS BYTE	ADD	#Y$GETS,R2	ADD	#2,R2	CMPB	40000+O$STS(R2),#1	;IS THE FILE OPEN?	BNE	20$	INC	F.OPEN		;ONE MORE OPEN FILE	BR	20$;; PROCESS WORK FILES;10$:	MOV	60000+F.IMP(R0),UISAR2 ;POINT TO WORK FILE IMPURE AREA15$:	BEQ	20$		;IF POINTER EQUALS ZERO THEN NO MORE WORK FILES	INC	F.OPEN		;A      DD ONE MORE TO THE OPEN FILE COUNT	MOV	100000,UISAR2	;POINT TO NEXT WORK FILE	BR	15$;; GATHER STATISTICS:;; NOTE: FILE UPDATES,INSERTS AND DELETES ARE ALL LUMPED;       TOGETHER AS WRITES.;20$:	ADD	<60000+F.NGET>(R0),NF.RD	ADD	<60000+F.NUPD>(R0),NF.WRT	ADD	<60000+F.NINS>(R0),NF.WRT	ADD	<60000+F.NLOK>(R0),NF.HIT	ADD	#F.SIZE,R0	;POINT TO NEXT TABLE ENTRY.	SOB	R1,5$		;GO BACK IF R1 IS NOT EQUAL ZERO	ENB$S			;ENABLE CONTEXT SWITCHING;; OUTPUT THE DATA:;	MOV	NF.RD,R1	;CALCULATE NUMBEER OF READS	MOV	OF.RD,R0	SUB	      R0,R1	MOV	NF.RD,OF.RD	;SAVE CURRENT VALUE FOR NEXT TIME	MOV	#FILE$R+6,R0	;POINT TO OUTPUT BUFFER LOCATION	CALL	JSTFY1	MOV	NF.WRT,R1	;CALCULATE NUMBER OF WRITES	MOV	OF.WRT,R0	SUB	R0,R1	MOV	NF.WRT,OF.WRT	MOV	#FILE$W+7,R0	CALL	JSTFY1	MOV	NF.HIT,R1	;CALCULATE NUMBER OF HITS	MOV	OF.HIT,R0	SUB	R0,R1	MOV	NF.HIT,OF.HIT	MOV	#FILE$H+5,R0	CALL	JSTFY1	MOV	#FILE$O+5,R0	;POINT TO OUTPUT BUFFER ADDRESS	MOV	F.OPEN,R1	;AND GET VALUE TO BE OUTPUT	CALL	JSTFY1		;AND RIGHT JUSTIFY IT	MOV	#FILE$,R3		CALL	OUTLIN		;OUTPUT FILE INF      ORMATION	RETURN.PAGE.SBTTL	MESSAGE,TST AND FORM ASCII CODETST.LD:	.WORD	0TST.US:	.WORD	0TST.QD:	.WORD	0TST.ME:	.WORD	0MS.ACT:	.WORD	0MS.DSK:	.WORD	0MS.MEM:	.WORD	0FRM.LD:	.WORD	0FRM.US:	.WORD	0FRM.ME:	.WORD	0;; TST'S;TST$:	.ASCIZ	<ESC><CD><31.+8.><0><31.+31.>	.ASCIZ	/TSTS:/	.ASCIZ	<ESC><CD><31.+9.><0><31.+36.>TST$LD: .ASCIZ 	/LOADED:    /	.ASCIZ	<ESC><CD><31.+10.><0><31.+36.>TST$US:	.ASCIZ	/IN USE:    /	.ASCIZ	<ESC><CD><31.+11.><0><31.+36.>TST$QD:	.ASCIZ	/QUEUED:    /	.ASCIZ	<ESC><CD><31.+12.><0><31.+36.>TS      T$ME:	.ASCIZ	/MEMORY:    %/<1>;; MESSAGES;MS$:	.ASCIZ	<ESC><CD><31.+6.><0><31.+56.>	.ASCIZ	/MESSAGES:/	.ASCIZ	<ESC><CD><31.+7.><0><31.+61.>MS$ACT:	.ASCIZ	/ACTIVE:    /	.ASCIZ	<ESC><CD><31.+8.><0><31.+60.>MS$DSK:	.ASCIZ	/ON DISK:    /	.ASCIZ	<ESC><CD><31.+9.><0><31.+61.>MS$MEM:	.ASCIZ	/MEMORY:    %/<1>; ; FORMS;F$:	.ASCIZ	<ESC><CD><31.+20.><0><31.+31.>	.ASCIZ	/FORMS:/	.ASCIZ	<ESC><CD><31.+21.><0><31.+34.>F$NUM:	.ASCIZ	/IN CACHE:        /	.ASCIZ	<ESC><CD><31.+22.><0><31.+36.>F$MEM:	.ASCIZ	/MEMORY:    %/<1>	.P      AGE	.SBTTL	GATHER LRU STATISTICS	.ENABL	LSBSTATS:	CLR	TST.LD		;INITIALIZE COUNTERS	CLR	TST.US	CLR	TST.QD	CLR	TST.ME	CLR	MS.ACT	CLR	MS.DSK	CLR	MS.MEM	CLR	FRM.LD	CLR	FRM.US	CLR	FRM.ME	CLR	ST.TER	CLR	ST.TST	CLR	ST.OUT	CLR	ST.OTH;********************; SEARCH LRU LIST;********************	INH$S			;INHIBIT CONTEXT SWITCHING	MOV	CADR,UISAR3	;POINT TO THE CACHE DESCRIPTION AREA	MOV	#77406,UISDR2	MOV	#77406,UISDR3	MOV	#77406,UISDR4	MOV	60000+P.LRUF,R1	;GET LRU FORWARD POINTER	MOV	R1,R3		;KEEP A COPY SO KNOW WHEN TO       STOP5$:	MOV	CADR,UISAR3	;POINT TO CACHE DESCRIPTION AREA	CALL	ACBD		;GET THE KT AND BIAS ADDRESS OF BDB				;(R1 CONTAINS VIRTUAL ADDRESS OF BDB)	ADD	R4,UISAR3	;MAP TO THE BDB	SUB	#B.LRUF,R5	;POINT TO BEGINNING OF DESCRIPTOR BLOCK		TSTB	60000+B.LUN(R5)	;SEE IF ITS A TST	BNE	10$		;IF NE THEN ITS NOT	INC	TST.LD		;ADD ONE TO TST COUNT	ADD	60000+B.SIZE(R5),TST.ME ;KEEP TRACK OF HOW MUCH SPACE TST ARE OCCUPYING	TSTB	60000+B.USE(R5)	;IS TST IN USE	BEQ	30$		;IF EQ THEN ITS NOT	INC	TST.US		;ADD 1 TO NUMBER OF TST IN       USE	BR	30$10$:	CMPB	#MMLUN,60000+B.LUN(R5)	;IS IT A MESSAGE?	BNE	20$	INC	MS.ACT		;KEEP TRACK OF NUMBER OF MESSAGES	ADD	60000+B.SIZE(R5),MS.MEM ;KEEP TRACK OF TOTAL MEMORY MESSAGES OCCUPY.	BR	30$20$:	CMPB	#FRMLUN,60000+B.LUN(R5) ;IS IT A FORM?	BNE	30$	INC	FRM.LD	ADD	60000+B.SIZE(R5),FRM.ME ;KEEP TRACK OF MEMORY FORMS OCCUPY	TSTB	60000+B.USE(R5)	;IS FORM IN USE?	BEQ	30$		;IF EQ - NO	INC	FRM.US		;ONE MORE FORM IN USE.30$:	MOV	60000+B.LRUF(R5),R1 ;LOOK AT NEXT BLOCK	CMP	R1,R3		;ARE WE BACK AT THE START?	BNE	5$      		;IF NE THEN MORE BLOCKS TO PROCESS	.PAGE	.SBTTL	SEARCH SCBS - GET MESSAGES ON DISK AND STATION STATS	.ENABL	LSB	CALL	SCBINI		;INITIALIZE SCB GETTING ROUTINE10$:	CALL	SCBNXT		;GET KT ADDRESS OF NEXT SCB	TST	UISAR4		;IF UISAR4 EQUALS 0 NO MORE SCBS LEFT	BEQ	35$;; GO THROUGH SCB BDB LIST:;	MOV	100000+S.FST,R1	;GET KT ADDRESS OF NEXT BDB	BEQ	20$		;IF EQ - NO BDB11$:	CALL	ACBD		;GET PAGE NO AND OFFSET	MOV	CADR,UISAR2	;GET STARTING PAGE OF CACHE AREA	ADD	R4,UISAR2	;AND ADD OFFSET PAGE FOR THIS BDB	BITB	#BF.OND,      40000+B.FLG(R5)	;IS MESSAGE ON DISK?	BEQ	15$	INC	MS.DSK		;ONE MORE MESSAGE ON DISK15$:	MOV	40000+B.LINK(R5),R1	;POINT TO NEXT BDB	BNE	11$		;GO INTO LOOP;; GATHER STATION INFORMATION:;20$:	CMPB	#SY.TIM,100000+S.TYP ;IS THIS A TERMINAL STATION?	BNE	21$	INC	ST.TER		;KEEP TRACK OF NUMBER OF TERMINALS	CMPB	#SO.O,100000+S.OPER ;IS THIS AN OUTPUT ONLY STATION?	BNE	30$		;IF NE - NO	INC	ST.OUT		;KEEP COUNT OF OUTPUT ONLY STATIONS	BR	30$21$:	CMPB	#SY.TST,100000+S.TYP ;IS THIS A TST STATION?	BNE	30$		;IF NE - NO		INC	      ST.TST		;KEEP COUNT OF TST STATIONS.;; COUNT HOW MANY TSTS AREE QUEUED TO MEMORY:;	ADD	S.LINK+100000,TST.QD	;MORE TSTS QUEUED TO MEMORY30$:	JMP	10$		;GO BACK AND LOOK AT ANOTHER SCB	.PAGE	.SBTTL	SEARCH CCBS FOR MESSAGES ON DISK35$:	CALL	CCBINI		;INITIALIZE CCB GETTING ROUTINE36$:	CALL	CCBNXT		;GET KT ADDRESS OF NEXT CCB	TST	R0		;IF R0 = 0 NO MORE CCBS TO PROCESS	BEQ	50$	MOV	60000+C.SLT(R0),R1	;POINT TO SLOT MESSAGE BDB	BEQ	36$		;IF EQ - THEN NO BDB	CALL	ACBD		;GET PAGE NO. AND OFFSET	MOV	CADR,UISAR2	;MAP TO       BASE OF CACHE	ADD	R4,UISAR2	;ADD OFFSETPAGE OF THIS BDB	BITB	#BF.OND,40000+B.FLG(R5)	;IS THIS A MESSAGE ON DISK?	BEQ	36$		;IF NE - NO	INC	MS.DSK		;FOUND ONE MORE MESSAGE ON DISK	BR	36$50$:	ENB$S			;ENABLE CONTEXT SWITCHING	.PAGE	.SBTTL	 OUTPUT TST,FORM AND MESSAGE STATS;; TST STATS:;	MOV	#TST$LD+7,R0	;GET OUTPUT BUFFER ADDRESS	MOV	TST.LD,R1	;LOAD VALUE TO BE OUTPUT	CALL	JSTFY		;RIGHT JUSTIFY THE OUTPUT NUMBER	MOV	#TST$US+7,R0		MOV	TST.US,R1		CALL	JSTFY			MOV	#TST$QD+7,R0		MOV	TST.QD,R1	CALL	JSTFY		MOV	TST.      ME,R0	;GET TOTAL MEMORY USED INTO DIVIDEND	MOV 	CSIZE,R2	;GET CACHE SIZE INTO DIVISOR	CALL	PRCNT		;CALCULATE PERCENTAGE	MOV	R0,TST.ME	;STORE RESULT	MOV	#TST$ME+7,R0	MOV	TST.ME,R1	CALL	JSTFY	MOV	#TST$,R3		CALL	OUTLIN		;OUTPUT TST INFORMATION;; MESSAGE STATS:;	MOV	#MS$ACT+7,R0	MOV	MS.ACT,R1	CALL	JSTFY	MOV	#MS$DSK+10,R0	MOV	MS.DSK,R1	CALL	JSTFY	MOV	MS.MEM,R0	MOV	CSIZE,R2	CALL	PRCNT	MOV	R0,MS.MEM	MOV 	#MS$MEM+7,R0	MOV	MS.MEM,R1	CALL	JSTFY	MOV	#MS$,R3	CALL	OUTLIN		;OUTPUT MESSAGE INFORMATION;; FORM STATS:;	MOV	#      F$NUM+11,R0	MOV	FRM.LD,R1	CALL	JSTFY	MOV	#F$NUM+14.,R0	;OUTPUT HOW MANY FORMS ARE IN USE.	MOVB	#'(,(R0)+	MOV	FRM.US,R1	CLR	R2	CALL	$CBDMG	MOVB	#'),(R0)	MOV	FRM.ME,R0	MOV	CSIZE,R2	CALL	PRCNT	MOV	R0,FRM.ME	MOV	#F$MEM+7,R0	MOV	FRM.ME,R1	CALL	JSTFY	MOV	#F$,R3	CALL	OUTLIN		;OUTPUT FORMS INFORMATION	RETURN	.PAGE		.SBTTL	DISPLAY  STATION STATSST.TER:	.WORD	0ST.TST:	.WORD	0ST.OUT:	.WORD	0ST.OTH:	.WORD	0ST$:	.ASCIZ	<ESC><CD><31.+14.><0><31.+31.>	.ASCIZ	/STATIONS:/	.ASCIZ	<ESC><CD><31.+15.><0><31.+34.>ST$TER:	.ASCIZ	   Ð  /TERMINAL:    /	.ASCIZ	<ESC><CD><31.+16.><0><31.+39.>ST$TST:	.ASCIZ	/TST:    /	.ASCIZ	<ESC><CD><31.+17.><0><31.+34.>ST$OUT:	.ASCIZ	/OUT ONLY:    /	.ASCIZ	<ESC><CD><31.+18.><0><31.+37.>ST$OTH:	.ASCIZ	/OTHER:    /<1>	.EVENSTADSP:	MOV	#ST$TER+11,R0	MOV	ST.TER,R1	CALL	JSTFY	MOV	#ST$TST+4,R0	MOV	ST.TST,R1	CALL 	JSTFY	MOV	#ST$OUT+11,R0	MOV	ST.OUT,R1	CALL	JSTFY	MOV	#ST$OTH+6,R0	MOV	ST.OTH,R1	CALL	JSTFY	MOV 	#ST$,R3	CALL	OUTLIN		;OUTPUT STATION INFORMATION	RETURN	.ENDÐ         Ðz^Á› 8$         ÐkL    tŽ€»   ¯”L  º @  Œô_@   æL@  ì{:@  ìÎs@  ìp…@  óU<@   õˆw@  ì€p@  :y:@  :T[@  %,¯@   ÁH£@  #Bx@  3 N@  Œ&›’@  ](VN@   æ)L@  é)ÀS@  î)œ,@  î)ƒ:@  î)cM@   î)Ä…@  ó)U<@  °<›r@  ŒAh)@  ŒA‡)@   TSp…@  Ì^|3@  Ì^ q@  Ì^¤’@  avL@   Óf Z@  lhÎs@  :wy:@  :wT[@  4yÀ]@   Äzu~@  Äz€@  &{ày@  ,{{:@  /{Úd@   4{Àž@  :©@  P©\@  i©€‰@  +¯’(@   +¯¢(@  +¯"€@  {¯Ñ@  {¯h@      (Ô Ðzh$ ¯”             Y"  JY# 8***       SUMMARY DISPLAY ***÷	 & ( ÷	ä ÷	Ø÷	f‡   Y% >TRANS.  RUN:  J  J       P  P 7
âÿþˆ` ÷•   ‡ ÷  ¦ÿ÷  ¨ÿ÷e€ ¨ÿÀ 
` P©\%,¯¦ÿ%,¯¨ÿ$¨ÿ t  `Àí `Á  ÷	  Á  A `À
û7¢ÿþˆž 7Š +¯"€ `{¯Ñ `#Bxi©€‰{¯h&ž  š   ‡ ÀJ Áÿ÷	  Ã8 ÷	  ‡         Y*  P©\
J ŒAh)8 avL À WAPP. FILES:Y+ ^  Ò  Ò OPEN:     Y, ]  â  â READS:     Y- \WRITES:     Y. ^   HITS:        7
 ÿ7
žÿ7
œÿ7
šÿþˆ,÷•   ‡ ÷  ¦ÿ÷   ,P©\"%,¯$¦ÿ(%,¯ 6¨ÿ÷e€ ¨ÿ÷      „ÿ÷†ÿ÷ˆÿÀ `Á `ðµ ¨ÿ
¨ÿ„ÿ†ÿˆÿ +¯¢( `$+¯’( ` Z   `7 `¤ÿÂ  ÂeV Âe —¬@ ·
6ÿ
 Œ&›’æ)L `é)ÀS `¤ÿ°<›r €7 `¤ÿ·
(ÿ÷ €¤ÿù7l `ÿ7l `ÿ7l é)ÀS `¤ÿ €¤ÿî)œ, ` î)Ä… ` ¢ `ÿ7l `ÿÀe  Á
Òþˆ¾7Š  ‡ ÁôþÀ  à î)ƒ: `
î)cM `ó)U<¾P©\&Ì^ q È÷êþ  Àè ÷	  ÁÞþÀ  à÷Ôþ  Àù ÷	   Ì^ qè ŒA‡)Ì^¤’ Ì^¤’$ù (ŒA‡) îÁÈþÀ  à÷¾þ  À	÷	  À× Á¦þ÷	  Ã 
Ì^|3Ì^|3	ŒA‡)× &ŒA‡) ¼ ÷	  ‡                     Y' > TSTS ¼ avL :      : Y( C LOADED:     Y) C IN USE:      `Y* C QUEUED:     Y+ C MEMORY:    %  †Y% W MESSAGES: Y& \ ACTIVE:     Y'  ¬[ ON DISK:     Y( \ MEMORY:    % Y3 Ò > FORMS: Y4 A IN CACHE:         Y5  øC MEMORY:    % 7
ÿ7
ÿ7
ÿ7

ÿ7
ÿ7
 ÿ7
ÿ7
ÿ7
 ÿ7
þþ7
7
7
 7
þþˆL (L D÷•   ‡ ÷  ¦ÿ÷„ÿ÷†ÿ÷ˆÿÁ `C P©\ì€p¦ÿ„ÿ†ÿ"ˆÿ&lhÎs ` j÷  ¦ÿ÷	  7a¦ÿÅå  õ‹ `·
–þwm ì€p¦ÿº ¦ÿìÎsìp… ` ˆ `–þõ‹ `·
ˆþõ¥   `·
€þwm `~þõ¥ óU< `
õˆw `TSp…      ìp… `"óU< ` ®   `
·
rþwm `pþõ‹ `·
dþA `C Í÷	 ](VNìp… `óU< `õˆw ` ìÎs ` Ò  ÷	  ÷¨ÿ+Á €÷	  ÷  ¤ÿ7a :wy::wT[¨ÿ&{ày €º ì€p¤ÿ ð¤ÿõµ   @·
(þA @ð÷¥   €	·
(÷¥ ¤ÿŒô_
æL @ì{: @Äzu~4{Àž €    €·
 	÷¥   €·
÷m €ðýw  ÿ÷	 4yÀ]/{Úd €Äz€4{Àž €,{{: € 6  ÷	  À `ù÷	  ÷  ¤ÿ7a¤ÿõµ :y::T[3 N `º ì€p¤ÿ ¤ÿ V   @î·
Æýëþˆl7Š  ‡ ÀIÁ¨ý÷	  À[ Œô_æL @lP©\I$ŒAh)([ |Ážý÷	  ÀmÁ”ý÷	        ÀŽýÂ  ÷	  7‚ýÀ 
ŒAh)mŒAh)ÁH£"Óf Z ¢Ázý÷	  Ã0÷	  À£Áhý÷	  À¶Á^ý ŒAh)0avL£ ŒAh)$¶ È÷	  ÀXýÂ  ÷	  7LýÀÈÁDý÷	  Ã†÷	 ŒAh)ÁH£Óf ZÈ"ŒAh)&† î  ÀëÁ2ý÷	  ÀðÐ•( Á$ý
÷	  È•) À avLëŒAh)ð":© ýÂ  ÷	  7ýÀÁý÷	  ÃÏ÷	  ‡    ÁH£Óf ZŒAh) Ï$avL :      Y- > STATIONS: Y. A TERMINAL:  `    Y/ F TST:     Y0 A OUT ONLY:     † Y1 D OTHER:       š šÀ_Á–ÿ÷	  ÀnÁŒÿ÷	  À‚Á‚ÿ÷	  À _   J   ŒAh)nŒAh)‚&ŒAh) À“Áxÿ÷	  Ã@÷	  ‡  “ŒAh)@avL  J          ÐzNÁ› 8$        APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58TABLE OF CONTENTS     5-    2	INITIALIZATIONS     6-   21	MAIN LOOP     7-   42	DISPLAY NUMBER OF RUNNING TRANSACTIONS     8-  103	GET FILE STATS     9-  249	MESSAGE,TST AND FORM ASCII CODE    10-  317	GATHER LRU STATISTICS    11-  399	SEARCH SCBS - GET MESSAGES ON DISK AND STATION STATS    12-  466	SEARCH CCBS FOR MESSAGES ON DISK    13-  492	OUTPUT TST,FORM AND MESSAGE STATS    14-  583	DISPLAY  STATION STATSAPPLICATION SECTION OF SUMMARY 	MACR      O M1110  14-FEB-79 12:58  PAGE 5      1						.TITLE	APPLICATION SECTION OF SUMMARY DISPLAY MODULE      2						.SBTTL	INITIALIZATIONS      3						.NLIST	BEX      4      5						.MCALL	FABOF$,IMAOF$,PCBDF$,INH$S,ENB$S,ASRDF$      6      7		000033 				ESC=33			;ESCAPE CHARACTER      8		000131 				CD=131			;CURSOR DISPLAY      9		000112 				ES=112			;ERASE TO END OF SCREEN     10		000110 				HO=110			;SEND CURSOR TO HOME POSITION     11     12	000000					PCBDF$     13	000000					ASRDF$     14	000000					FABOF$	R      MS$L     15	000000					IMAOF$	RMS$L     16     17     18     19APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 6MAIN LOOP     21						.SBTTL	MAIN LOOP     22     23     24	000000	   033 	   131 	   042 	TMPMSG:	.ASCII	<ESC><CD><31.+3.><0><31.+1.><ESC><ES>     25	000007	   033 	   131 	   043 		.ASCII	<ESC><CD><31.+4.><0><31.+25.>     26	000014	   052 	   052 	   052 		.ASCII	/*** SUMMARY DISPLAY ***/<1>     27     28     29	000044				APPSUM::     30     31					;	MOV	#TMPMSG,R3     32				      	;	CALL	OUTLIN     33	000044					CALL	TRNUM		;DISPLAY NUMBER OF RUNNING TRANSACTIONS     34	000050					CALL	FILES		;DISPLAY FILE STATS     35	000054					CALL	STATS		;DISPLAY TST,MESSSAGE&FORM STATS     36	000060					CALL	STADSP		;DISPLAY STATION STATS     37     38	000064					RETURN     39     40APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 7DISPLAY NUMBER OF RUNNING TRANSACTIONS     42					.SBTTL	DISPLAY NUMBER OF RUNNING TRANSACTIONS     43     44     45	000066	000000 			TRAN.R:	.WOR      D	0     46     47	000070	   033 	   131 	   045 	TRAN$:	.ASCII	<ESC><CD><31.+6.><0><31.+31.>     48	000075	   124 	   122 	   101 		.ASCII	/TRANS.  RUN:/     49						.EVEN     50	000112	   040 	   040 	   040 	TRAN$1:	.ASCII	/    /<1>     51						.EVEN     52     53     54	000120				TRNUM:     55     56	000120	005067 	177742 			CLR	TRAN.R		;INITIALIZE COUNTER     57	000124					INH$S			;INHIBIT CONTEXT SWITCHING     58     59	000140	016767 	000000G	177646 		MOV	COM.AD,UISAR3	;MAP TO COMMON AREA     60	000146      	016767 	000000G	177650 		MOV	COM.AD,UISAR4	;USE TWO PARTITIONS SO CAN MAP TO 8K     61	000154	062767 	000200 	177650 		ADD	#200,UISAR4     62     63					;     64					; CALCULATE NUMBER OF CCBS     65					;     66     67	000162	016700 	060000G			MOV	60000+.ACTTB,R0	;GET END OF CCB AREA     68	000166	166700 	060000G			SUB	60000+.CCBBA,R0	;SUBTRACT BEGINNING AREA     69	000172	012701 	000000G			MOV	#C.CSIZE,R1	;AND DIVIDE BY CCB SIZE TO OBTAIN     70	000176					CALL	$DIV		;NUMBER OF CCBS     71     72     73	      				;     74					; NOW GO THROUGH CCB FREE LIST SUBTRACTING ONE FROM TOTAL     75					; CCB NUMBER FOR EACH CCB THAT IS IN THE FREE LIST. AFTER     76					; GOING THROUGH ALL CCBS R1 WILL CONTAIN THE NUMBER OF RUNNING     77					; TRANSACTIONS     78					;     79     80	000202	012701 	000000G			MOV	#.CCBLH,R1	;POINT TO THE CCB FREE LISTHEAD     81	000206	016101 	060000 		1$:	MOV	60000(R1),R1	;POINT TO NEXT FREE CCB     82	000212	001402 				BEQ	5$		;IF EQ -WE ARE THROUGH     83     84	000214	005300 				DEC	R      0		;ONE LESS ACTIVE TRANSACTION     85	000216	000773 				BR	1$		;KEEP GOING     86     87	000220	010067 	177642 		5$:	MOV	R0,TRAN.R	;SAVE RESULT     88     89     90     91	000224					ENB$S			;ENABLE CONTEXT SWITCHING     92     93     94	000236	012700 	000112'			MOV	#TRAN$1,R0	;GET OUTPUT BUFFER ADDRESS     95	000242	016701 	177620 			MOV	TRAN.R,R1	;AND VALUE TO BE OUTPUT     96	000246					CALL	JSTFY		;RIGHT JUSTIFY     97	000252	012703 	000070'			MOV	#TRAN$,R3	;POINT TO OUTPUT AREA     98	000256					CALL	      OUTLIN		;OUTPUT TRANSACTION INFORMATIONAPPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 7-1DISPLAY NUMBER OF RUNNING TRANSACTIONS     99	000262					RETURN    100    101APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 8GET FILE STATS    103					.SBTTL	GET FILE STATS    104    105    106	000264	000000 			F.OPEN:	.WORD	0    107	000266	000000 			NF.RD:	.WORD	0    108	000270	000000 			NF.WRT:	.WORD	0    109	000272	000000 			NF.HIT:	.WORD	0    110    111    112	000274	   033       	   131 	   052 	FILE$:	.ASCII	<ESC><CD><31.+11.><0><31.+56.>    113	000301	   101 	   120 	   120 		.ASCII	/APP. FILES:/    114    115	000314	   033 	   131 	   053 		.ASCII	<ESC><CD><31.+12.><0><31.+63.>    116						.EVEN    117    118	000322	   117 	   120 	   105 	FILE$O:	.ASCII	/OPEN:     /    119    120	000334	   033 	   131 	   054 		.ASCII	<ESC><CD><31.+13.><0><31.+62.>    121						.EVEN    122    123	000342	   122 	   105 	   101 	FILE$R: .ASCII	/READS:     /    124    125	000355	   033 	   131 	         055 		.ASCII	<ESC><CD><31.+14.><0><31.+61.>    126						.EVEN    127    128	000362	   127 	   122 	   111 	FILE$W:	.ASCII	/WRITES:     /    129    130	000376	   033 	   131 	   056 		.ASCII	<ESC><CD><31.+15.><0><31.+63.>    131						.EVEN    132    133	000404	   110 	   111 	   124 	FILE$H:	.ASCII	/HITS:     /<1>    134						.EVEN    135    136    137	000420				FILES:    138    139	000420	005067 	177640 			CLR	F.OPEN		;INITIALIZE COUNTERS    140	000424	005067 	177636 			CLR	NF.RD    141	000430	005067 	1776      34 			CLR	NF.WRT    142	000434	005067 	177632 			CLR	NF.HIT    143    144    145	000440					INH$S			;INHIBIT CONTEXT SWITCHING    146    147    148	000454	016767 	000000G	177646 		MOV	COM.AD,UISAR3	;MAP TO THE COMMON AREA    149	000462	016767 	000000G	177650 		MOV	COM.AD,UISAR4    150	000470	062767 	000200 	177650 		ADD	#200,UISAR4    151	000476	012767 	077406 	177604 		MOV	#77406,UISDR2    152	000504	012767 	077406 	177606 		MOV	#77406,UISDR3    153	000512	012767 	077406 	177610 		MOV	#77406,UISDR4    154          155	000520	016700 	060000G			MOV	60000+.ACFTB,R0	;GET BASE ADDRESS OF AFT    156	000524	016701 	060000G			MOV	60000+.ACFSZ,R1	;AND NUMBER OF ENTRIES IN TABLE    157    158	000530	132760 	000000G	060000G	5$:	BITB	#FF.WRK,<60000+F.FLG>(R0) ;IS THIS AN AFT FOR A WORK FILE?    159	000536	001020 				BNE	10$		;IF NE - YESAPPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 8-1GET FILE STATS    160    161	000540	016067 	060000G	177644 		MOV	60000+F.IMP(R0),UISAR2	;POINT TO IMPURE DATA AREA    162      	000546	012702 	000000G			MOV	#I.PRMS,R2		;CALCULATE ADDRESS OF STATUS BYTE    163	000552	062702 	000126 			ADD	#Y$GETS,R2    164	000556	062702 	000002 			ADD	#2,R2    165    166	000562	126227 	040006 	000001 		CMPB	40000+O$STS(R2),#1	;IS THE FILE OPEN?    167    168	000570	001015 				BNE	20$    169    170	000572	005267 	177466 			INC	F.OPEN		;ONE MORE OPEN FILE    171	000576	000412 				BR	20$    172    173    174					;    175					; PROCESS WORK FILES    176					;    177    178	000600	016067 	060000G	177644       	10$:	MOV	60000+F.IMP(R0),UISAR2 ;POINT TO WORK FILE IMPURE AREA    179    180	000606	001406 			15$:	BEQ	20$		;IF POINTER EQUALS ZERO THEN NO MORE WORK FILES    181    182	000610	005267 	177450 			INC	F.OPEN		;ADD ONE MORE TO THE OPEN FILE COUNT    183	000614	016767 	100000 	177644 		MOV	100000,UISAR2	;POINT TO NEXT WORK FILE    184	000622	000771 				BR	15$    185    186    187    188					;    189					; GATHER STATISTICS:    190					;    191					; NOTE: FILE UPDATES,INSERTS AND DELETES ARE ALL LUMPED    19      2					;       TOGETHER AS WRITES.    193					;    194    195    196	000624	066067 	060000G	177434 	20$:	ADD	<60000+F.NGET>(R0),NF.RD    197	000632	066067 	060000G	177430 		ADD	<60000+F.NUPD>(R0),NF.WRT    198	000640	066067 	060000G	177422 		ADD	<60000+F.NINS>(R0),NF.WRT    199	000646	066067 	060000G	177416 		ADD	<60000+F.NLOK>(R0),NF.HIT    200    201    202	000654	062700 	000000G			ADD	#F.SIZE,R0	;POINT TO NEXT TABLE ENTRY.    203	000660					SOB	R1,5$		;GO BACK IF R1 IS NOT EQUAL ZERO    204    205    206	      000664					ENB$S			;ENABLE CONTEXT SWITCHING    207    208    209    210					;    211					; OUTPUT THE DATA:    212					;    213    214	000676	016701 	177364 			MOV	NF.RD,R1	;CALCULATE NUMBEER OF READS    215	000702	016700 	000000G			MOV	OF.RD,R0    216	000706	160001 				SUB	R0,R1APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 8-2GET FILE STATS    217	000710	016767 	177352 	000000G		MOV	NF.RD,OF.RD	;SAVE CURRENT VALUE FOR NEXT TIME    218	000716	012700 	000350'			MOV	#FILE$R+6,R0	;POINT       TO OUTPUT BUFFER LOCATION    219	000722					CALL	JSTFY1    220    221    222	000726	016701 	177336 			MOV	NF.WRT,R1	;CALCULATE NUMBER OF WRITES    223	000732	016700 	000000G			MOV	OF.WRT,R0    224	000736	160001 				SUB	R0,R1    225	000740	016767 	177324 	000000G		MOV	NF.WRT,OF.WRT    226	000746	012700 	000371'			MOV	#FILE$W+7,R0    227	000752					CALL	JSTFY1    228    229    230	000756	016701 	177310 			MOV	NF.HIT,R1	;CALCULATE NUMBER OF HITS    231	000762	016700 	000000G			MOV	OF.HIT,R0    232	000766	16000      1 				SUB	R0,R1    233	000770	016767 	177276 	000000G		MOV	NF.HIT,OF.HIT    234	000776	012700 	000411'			MOV	#FILE$H+5,R0    235	001002					CALL	JSTFY1    236    237    238	001006	012700 	000327'			MOV	#FILE$O+5,R0	;POINT TO OUTPUT BUFFER ADDRESS    239	001012	016701 	177246 			MOV	F.OPEN,R1	;AND GET VALUE TO BE OUTPUT    240	001016					CALL	JSTFY1		;AND RIGHT JUSTIFY IT    241    242	001022	012703 	000274'			MOV	#FILE$,R3    243	001026					CALL	OUTLIN		;OUTPUT FILE INFORMATION    244    245    246	001032		      			RETURN    247APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 9MESSAGE,TST AND FORM ASCII CODE    249					.SBTTL	MESSAGE,TST AND FORM ASCII CODE    250    251    252	001034	000000 			TST.LD:	.WORD	0    253	001036	000000 			TST.US:	.WORD	0    254	001040	000000 			TST.QD:	.WORD	0    255	001042	000000 			TST.ME:	.WORD	0    256    257	001044	000000 			MS.ACT:	.WORD	0    258	001046	000000 			MS.DSK:	.WORD	0    259	001050	000000 			MS.MEM:	.WORD	0    260    261	001052	000000 			FRM.LD:	.WORD      	0    262	001054	000000 			FRM.US:	.WORD	0    263	001056	000000 			FRM.ME:	.WORD	0    264    265    266					;    267					; TST'S    268					;    269    270	001060	   033 	   131 	   047 	TST$:	.ASCIZ	<ESC><CD><31.+8.><0><31.+31.>    271	001066	   124 	   123 	   124 		.ASCIZ	/TSTS:/    272    273	001074	   033 	   131 	   050 		.ASCIZ	<ESC><CD><31.+9.><0><31.+36.>    274	001102	   114 	   117 	   101 	TST$LD: .ASCIZ 	/LOADED:    /    275    276	001116	   033 	   131 	   051 		.ASCIZ	<ESC><CD><31.+10.><0><31      .+36.>    277	001124	   111 	   116 	   040 	TST$US:	.ASCIZ	/IN USE:    /    278    279	001140	   033 	   131 	   052 		.ASCIZ	<ESC><CD><31.+11.><0><31.+36.>    280	001146	   121 	   125 	   105 	TST$QD:	.ASCIZ	/QUEUED:    /    281    282	001162	   033 	   131 	   053 		.ASCIZ	<ESC><CD><31.+12.><0><31.+36.>    283	001170	   115 	   105 	   115 	TST$ME:	.ASCIZ	/MEMORY:    %/<1>    284    285    286					;    287					; MESSAGES    288					;    289    290	001206	   033 	   131 	   045 	MS$:	.ASCIZ	<ESC><CD><31.      +6.><0><31.+56.>    291	001214	   115 	   105 	   123 		.ASCIZ	/MESSAGES:/    292    293	001226	   033 	   131 	   046 		.ASCIZ	<ESC><CD><31.+7.><0><31.+61.>    294	001234	   101 	   103 	   124 	MS$ACT:	.ASCIZ	/ACTIVE:    /    295    296	001250	   033 	   131 	   047 		.ASCIZ	<ESC><CD><31.+8.><0><31.+60.>    297	001256	   117 	   116 	   040 	MS$DSK:	.ASCIZ	/ON DISK:    /    298    299	001273	   033 	   131 	   050 		.ASCIZ	<ESC><CD><31.+9.><0><31.+61.>    300	001301	   115 	   105 	   115 	MS$MEM:	.ASCIZ	      /MEMORY:    %/<1>    301    302					;    303					; FORMS    304					;    305APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 9-1MESSAGE,TST AND FORM ASCII CODE    306	001317	   033 	   131 	   063 	F$:	.ASCIZ	<ESC><CD><31.+20.><0><31.+31.>    307	001325	   106 	   117 	   122 		.ASCIZ	/FORMS:/    308    309	001334	   033 	   131 	   064 		.ASCIZ	<ESC><CD><31.+21.><0><31.+34.>    310	001342	   111 	   116 	   040 	F$NUM:	.ASCIZ	/IN CACHE:        /    311    312	001364	   033 	   131 	   06      5 		.ASCIZ	<ESC><CD><31.+22.><0><31.+36.>    313	001372	   115 	   105 	   115 	F$MEM:	.ASCIZ	/MEMORY:    %/<1>    314    315APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 10GATHER LRU STATISTICS    317						.SBTTL	GATHER LRU STATISTICS    318    319    320						.ENABL	LSB    321    322	001410				STATS:    323    324	001410	005067 	177420 			CLR	TST.LD		;INITIALIZE COUNTERS    325	001414	005067 	177416 			CLR	TST.US    326	001420	005067 	177414 			CLR	TST.QD    327	001424	005067 	177412       			CLR	TST.ME    328    329	001430	005067 	177410 			CLR	MS.ACT    330	001434	005067 	177406 			CLR	MS.DSK    331	001440	005067 	177404 			CLR	MS.MEM    332    333	001444	005067 	177402 			CLR	FRM.LD    334	001450	005067 	177400 			CLR	FRM.US    335	001454	005067 	177376 			CLR	FRM.ME    336    337	001460	005067 	001004 			CLR	ST.TER    338	001464	005067 	001002 			CLR	ST.TST    339	001470	005067 	001000 			CLR	ST.OUT    340	001474	005067 	000776 			CLR	ST.OTH    341    342    343    344					;*************      *******    345					; SEARCH LRU LIST    346					;********************    347    348	001500					INH$S			;INHIBIT CONTEXT SWITCHING    349    350	001514	016767 	000000G	177646 		MOV	CADR,UISAR3	;POINT TO THE CACHE DESCRIPTION AREA    351    352	001522	012767 	077406 	177604 		MOV	#77406,UISDR2    353	001530	012767 	077406 	177606 		MOV	#77406,UISDR3    354	001536	012767 	077406 	177610 		MOV	#77406,UISDR4    355    356	001544	016701 	060000G			MOV	60000+P.LRUF,R1	;GET LRU FORWARD POINTER    357	001550	010103       				MOV	R1,R3		;KEEP A COPY SO KNOW WHEN TO STOP    358    359    360	001552	016767 	000000G	177646 	5$:	MOV	CADR,UISAR3	;POINT TO CACHE DESCRIPTION AREA    361	001560					CALL	ACBD		;GET THE KT AND BIAS ADDRESS OF BDB    362									;(R1 CONTAINS VIRTUAL ADDRESS OF BDB)    363	001564	060467 	177646 			ADD	R4,UISAR3	;MAP TO THE BDB    364	001570	162705 	000000G			SUB	#B.LRUF,R5	;POINT TO BEGINNING OF DESCRIPTOR BLOCK    365    366	001574	105765 	060000G			TSTB	60000+B.LUN(R5)	;SEE IF ITS A TST    367	001600      	001013 				BNE	10$		;IF NE THEN ITS NOT    368	001602	005267 	177226 			INC	TST.LD		;ADD ONE TO TST COUNT    369	001606	066567 	060000G	177226 		ADD	60000+B.SIZE(R5),TST.ME ;KEEP TRACK OF HOW MUCH SPACE TST ARE OCCUPYING    370    371	001614	105765 	060000G			TSTB	60000+B.USE(R5)	;IS TST IN USE    372	001620	001433 				BEQ	30$		;IF EQ THEN ITS NOT    373	001622	005267 	177210 			INC	TST.US		;ADD 1 TO NUMBER OF TST IN USEAPPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 10-1GATHER LRU STAT      ISTICS    374	001626	000430 				BR	30$    375    376    377	001630	122765 	000000G	060000G	10$:	CMPB	#MMLUN,60000+B.LUN(R5)	;IS IT A MESSAGE?    378	001636	001006 				BNE	20$    379	001640	005267 	177200 			INC	MS.ACT		;KEEP TRACK OF NUMBER OF MESSAGES    380	001644	066567 	060000G	177176 		ADD	60000+B.SIZE(R5),MS.MEM ;KEEP TRACK OF TOTAL MEMORY MESSAGES OCCUPY.    381	001652	000416 				BR	30$    382    383    384	001654	122765 	000000G	060000G	20$:	CMPB	#FRMLUN,60000+B.LUN(R5) ;IS IT A FORM?    385	001662	      001012 				BNE	30$    386	001664	005267 	177162 			INC	FRM.LD    387	001670	066567 	060000G	177160 		ADD	60000+B.SIZE(R5),FRM.ME ;KEEP TRACK OF MEMORY FORMS OCCUPY    388    389	001676	105765 	060000G			TSTB	60000+B.USE(R5)	;IS FORM IN USE?    390	001702	001402 				BEQ	30$		;IF EQ - NO    391	001704	005267 	177144 			INC	FRM.US		;ONE MORE FORM IN USE.    392    393    394	001710	016501 	060000G		30$:	MOV	60000+B.LRUF(R5),R1 ;LOOK AT NEXT BLOCK    395	001714	020103 				CMP	R1,R3		;ARE WE BACK AT THE START?          396	001716	001315 				BNE	5$		;IF NE THEN MORE BLOCKS TO PROCESS    397APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 11SEARCH SCBS - GET MESSAGES ON DISK AND STATION STATS    399						.SBTTL	SEARCH SCBS - GET MESSAGES ON DISK AND STATION STATS    400    401						.ENABL	LSB    402    403    404	001720					CALL	SCBINI		;INITIALIZE SCB GETTING ROUTINE    405    406	001724				10$:	CALL	SCBNXT		;GET KT ADDRESS OF NEXT SCB    407    408	001730	005767 	177650 			TST	UISAR4		;IF UISAR4 EQUAL      S 0 NO MORE SCBS LEFT    409	001734	001453 				BEQ	35$    410    411    412					;    413					; GO THROUGH SCB BDB LIST:    414					;    415    416	001736	016701 	100000G			MOV	100000+S.FST,R1	;GET KT ADDRESS OF NEXT BDB    417	001742	001420 				BEQ	20$		;IF EQ - NO BDB    418    419	001744				11$:	CALL	ACBD		;GET PAGE NO AND OFFSET    420	001750	016767 	000000G	177644 		MOV	CADR,UISAR2	;GET STARTING PAGE OF CACHE AREA    421	001756	060467 	177644 			ADD	R4,UISAR2	;AND ADD OFFSET PAGE FOR THIS BDB    422          423	001762	132765 	000000G	040000G		BITB	#BF.OND,40000+B.FLG(R5)	;IS MESSAGE ON DISK?    424	001770	001402 				BEQ	15$    425	001772	005267 	177050 			INC	MS.DSK		;ONE MORE MESSAGE ON DISK    426    427	001776	016501 	040000G		15$:	MOV	40000+B.LINK(R5),R1	;POINT TO NEXT BDB    428	002002	001360 				BNE	11$		;GO INTO LOOP    429    430    431    432					;    433					; GATHER STATION INFORMATION:    434					;    435    436    437	002004				20$:    438    439    440	002004	122767 	000000G	100000G		CMPB	#SY.TIM      ,100000+S.TYP ;IS THIS A TERMINAL STATION?    441	002012	001011 				BNE	21$    442    443	002014	005267 	000450 			INC	ST.TER		;KEEP TRACK OF NUMBER OF TERMINALS    444	002020	122767 	000000G	100000G		CMPB	#SO.O,100000+S.OPER ;IS THIS AN OUTPUT ONLY STATION?    445	002026	001014 				BNE	30$		;IF NE - NO    446	002030	005267 	000440 			INC	ST.OUT		;KEEP COUNT OF OUTPUT ONLY STATIONS    447	002034	000411 				BR	30$    448    449	002036	122767 	000000G	100000G	21$:	CMPB	#SY.TST,100000+S.TYP ;IS THIS A TST STAT      ION?    450	002044	001005 				BNE	30$		;IF NE - NO    451    452	002046	005267 	000420 			INC	ST.TST		;KEEP COUNT OF TST STATIONS.    453    454					;    455					; COUNT HOW MANY TSTS AREE QUEUED TO MEMORY:APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 11-1SEARCH SCBS - GET MESSAGES ON DISK AND STATION STATS    456					;    457    458	002052	066767 	100000G	176760 		ADD	S.LINK+100000,TST.QD	;MORE TSTS QUEUED TO MEMORY    459    460    461    462	002060	000167 	177640 		30$:	JMP	10$		;GO       BACK AND LOOK AT ANOTHER SCB    463    464APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 12SEARCH CCBS FOR MESSAGES ON DISK    466						.SBTTL	SEARCH CCBS FOR MESSAGES ON DISK    467    468    469	002064				35$:	CALL	CCBINI		;INITIALIZE CCB GETTING ROUTINE    470    471	002070				36$:	CALL	CCBNXT		;GET KT ADDRESS OF NEXT CCB    472    473	002074	005700 				TST	R0		;IF R0 = 0 NO MORE CCBS TO PROCESS    474	002076	001421 				BEQ	50$    475    476	002100	016001 	060000G			MOV	60000+C.SLT(      R0),R1	;POINT TO SLOT MESSAGE BDB    477	002104	001771 				BEQ	36$		;IF EQ - THEN NO BDB    478	002106					CALL	ACBD		;GET PAGE NO. AND OFFSET    479	002112	016767 	000000G	177644 		MOV	CADR,UISAR2	;MAP TO BASE OF CACHE    480	002120	060467 	177644 			ADD	R4,UISAR2	;ADD OFFSETPAGE OF THIS BDB    481    482	002124	132765 	000000G	040000G		BITB	#BF.OND,40000+B.FLG(R5)	;IS THIS A MESSAGE ON DISK?    483	002132	001756 				BEQ	36$		;IF NE - NO    484	002134	005267 	176706 			INC	MS.DSK		;FOUND ONE MORE MESSAGE O      N DISK    485	002140	000753 				BR	36$    486    487    488	002142				50$:	ENB$S			;ENABLE CONTEXT SWITCHING    489    490APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 13OUTPUT TST,FORM AND MESSAGE STATS    492						.SBTTL	 OUTPUT TST,FORM AND MESSAGE STATS    493    494    495    496					;    497					; TST STATS:    498					;    499    500	002154	012700 	001111'			MOV	#TST$LD+7,R0	;GET OUTPUT BUFFER ADDRESS    501	002160	016701 	176650 			MOV	TST.LD,R1	;LOAD VALUE TO BE OUTPUT    502	      002164					CALL	JSTFY		;RIGHT JUSTIFY THE OUTPUT NUMBER    503    504	002170	012700 	001133'			MOV	#TST$US+7,R0    505	002174	016701 	176636 			MOV	TST.US,R1    506	002200					CALL	JSTFY    507    508	002204	012700 	001155'			MOV	#TST$QD+7,R0    509	002210	016701 	176624 			MOV	TST.QD,R1    510	002214					CALL	JSTFY    511    512	002220	016700 	176616 			MOV	TST.ME,R0	;GET TOTAL MEMORY USED INTO DIVIDEND    513	002224	016702 	000000G			MOV 	CSIZE,R2	;GET CACHE SIZE INTO DIVISOR    514	002230					CALL	PRCNT	      	;CALCULATE PERCENTAGE    515	002234	010067 	176602 			MOV	R0,TST.ME	;STORE RESULT    516    517	002240	012700 	001177'			MOV	#TST$ME+7,R0    518	002244	016701 	176572 			MOV	TST.ME,R1    519	002250					CALL	JSTFY    520    521	002254	012703 	001060'			MOV	#TST$,R3    522	002260					CALL	OUTLIN		;OUTPUT TST INFORMATION    523    524    525    526					;    527					; MESSAGE STATS:    528					;    529    530    531	002264	012700 	001243'			MOV	#MS$ACT+7,R0    532	002270	016701 	176550 			MOV	MS.ACT,R1    533	      002274					CALL	JSTFY    534    535	002300	012700 	001266'			MOV	#MS$DSK+10,R0    536	002304	016701 	176536 			MOV	MS.DSK,R1    537	002310					CALL	JSTFY    538    539	002314	016700 	176530 			MOV	MS.MEM,R0    540	002320	016702 	000000G			MOV	CSIZE,R2    541	002324					CALL	PRCNT    542	002330	010067 	176514 			MOV	R0,MS.MEM    543    544	002334	012700 	001310'			MOV 	#MS$MEM+7,R0    545	002340	016701 	176504 			MOV	MS.MEM,R1    546	002344					CALL	JSTFY    547    548	002350	012703 	001206'			MOV	#MS$,R3AP      PLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 13-1OUTPUT TST,FORM AND MESSAGE STATS    549	002354					CALL	OUTLIN		;OUTPUT MESSAGE INFORMATION    550    551    552    553					;    554					; FORM STATS:    555					;    556    557	002360	012700 	001353'			MOV	#F$NUM+11,R0    558	002364	016701 	176462 			MOV	FRM.LD,R1    559	002370					CALL	JSTFY    560    561	002374	012700 	001360'			MOV	#F$NUM+14.,R0	;OUTPUT HOW MANY FORMS ARE IN USE.    562	002400	112720 	000050 			MOVB	#'(,(R0)+    563	0      02404	016701 	176444 			MOV	FRM.US,R1    564	002410	005002 				CLR	R2    565	002412					CALL	$CBDMG    566	002416	112710 	000051 			MOVB	#'),(R0)    567    568	002422	016700 	176430 			MOV	FRM.ME,R0    569	002426	016702 	000000G			MOV	CSIZE,R2    570	002432					CALL	PRCNT    571	002436	010067 	176414 			MOV	R0,FRM.ME    572	002442	012700 	001401'			MOV	#F$MEM+7,R0    573	002446	016701 	176404 			MOV	FRM.ME,R1    574	002452					CALL	JSTFY    575    576	002456	012703 	001317'			MOV	#F$,R3    577	002462					CA      LL	OUTLIN		;OUTPUT FORMS INFORMATION    578    579	002466					RETURN    580    581APPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 14DISPLAY  STATION STATS    583						.SBTTL	DISPLAY  STATION STATS    584    585    586    587	002470	000000 			ST.TER:	.WORD	0    588	002472	000000 			ST.TST:	.WORD	0    589	002474	000000 			ST.OUT:	.WORD	0    590	002476	000000 			ST.OTH:	.WORD	0    591    592    593	002500	   033 	   131 	   055 	ST$:	.ASCIZ	<ESC><CD><31.+14.><0><31.+31.>    594	002506	   12      3 	   124 	   101 		.ASCIZ	/STATIONS:/    595    596	002520	   033 	   131 	   056 		.ASCIZ	<ESC><CD><31.+15.><0><31.+34.>    597	002526	   124 	   105 	   122 	ST$TER:	.ASCIZ	/TERMINAL:    /    598    599	002544	   033 	   131 	   057 		.ASCIZ	<ESC><CD><31.+16.><0><31.+39.>    600	002552	   124 	   123 	   124 	ST$TST:	.ASCIZ	/TST:    /    601    602	002563	   033 	   131 	   060 		.ASCIZ	<ESC><CD><31.+17.><0><31.+34.>    603	002571	   117 	   125 	   124 	ST$OUT:	.ASCIZ	/OUT ONLY:    /    604    605	00260      7	   033 	   131 	   061 		.ASCIZ	<ESC><CD><31.+18.><0><31.+37.>    606	002615	   117 	   124 	   110 	ST$OTH:	.ASCIZ	/OTHER:    /<1>    607						.EVEN    608    609    610    611    612	002632				STADSP:    613    614	002632	012700 	002537'			MOV	#ST$TER+11,R0    615	002636	016701 	177626 			MOV	ST.TER,R1    616	002642					CALL	JSTFY    617    618	002646	012700 	002556'			MOV	#ST$TST+4,R0    619	002652	016701 	177614 			MOV	ST.TST,R1    620	002656					CALL 	JSTFY    621    622	002662	012700 	002602'			MOV	      #ST$OUT+11,R0    623	002666	016701 	177602 			MOV	ST.OUT,R1    624	002672					CALL	JSTFY    625    626	002676	012700 	002623'			MOV	#ST$OTH+6,R0    627	002702	016701 	177570 			MOV	ST.OTH,R1    628	002706					CALL	JSTFY    629    630	002712	012703 	002500'			MOV 	#ST$,R3    631	002716					CALL	OUTLIN		;OUTPUT STATION INFORMATION    632    633	002722					RETURN    634    635    636		000001 				.ENDAPPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 14-1SYMBOL TABLEACBD  = ****** GX	E$$XPR= 00      0000   	MS$ACT  001234R  	O$FT0 = 000070   	P.SWSZ  000022APPSUM  000044RG 	FB$BLN= 000120   	MS$DSK  001256R  	O$FT1 = 000072   	P.TCB   000026AS.DEL= 000010   	FF.WRK= ****** GX	MS$MEM  001301R  	O$FT2 = 000074   	P.WAIT  000020AS.EXT= 000004   	FILES   000420R  	MS.ACT  001044R  	O$FT3 = 000076   	Q$$OPT= 000017AS.RED= 000001   	FILE$   000274R  	MS.DSK  001046R  	O$FT4 = 000100   	R$$DSP= 000000AS.WRT= 000002   	FILE$H  000404R  	MS.MEM  001050R  	O$IFI = 000004   	R$$EXV= 000000A$$CHK= 000000   	FILE$O        000322R  	M$$CRB= 000124   	O$ISID= 000004   	R$$HDV= 000000A$$CPS= 000000   	FILE$R  000342R  	M$$CRX= 000000   	O$JNL = 000044   	R$$H11= 000003A$$NSI= 000000   	FILE$W  000362R  	M$$EXT= 000000   	O$LCH = 000063   	R$$JPO= 000000A$$PRI= 000000   	FRMLUN= ****** GX	M$$FCS= 000000   	O$MRN = 000040   	R$$JP1= 000003A$$TRP= 000000   	FRM.LD  001052R  	M$$K11= 000000   	O$MRN0= 000040   	R$$LKL= 000001A.IOC   000003   	FRM.ME  001056R  	M$$MGE= 000000   	O$MRN1= 000042   	R$$MOF= 000000A.LGTH= 000014   	FR      M.US  001054R  	M$$MUP= 000000   	O$MRS = 000036   	R$$MPL= 000000A.MPCT  000011   	F$      001317R  	M$$NET= 000000   	O$NAM = 000046   	R$$M11= 000003A.PCB   000012   	F$MEM   001372R  	M$$OVR= 000000   	O$ORG = 000025   	R$$NDC= 000006A.PCBL  000000   	F$NUM   001342R  	M$$XLN= 000400   	O$RAT = 000026   	R$$NDH= 000226A.PRI   000002   	F$$LPP= 000000   	NF.HIT  000272R  	O$RFM = 000027   	R$$NDL= 000001A.STAT  000010   	F$$LVL= 000001   	NF.RD   000266R  	O$RTV = 000024   	R$$SND= 000000A.TCB   000004         	F.FLG = ****** GX	NF.WRT  000270R  	O$SHR = 000021   	R$$STP= 000000A.TCBL  000006   	F.IMP = ****** GX	N$$CON= 000500   	O$STS = 000006   	R$$11M= 000000BF.OND= ****** GX	F.NGET= ****** GX	N$$LDV= 000001   	O$STV = 000010   	SCBINI= ****** GXB.FLG = ****** GX	F.NINS= ****** GX	N$$MOV= 000011   	O$XAB = 000030   	SCBNXT= ****** GXB.LINK= ****** GX	F.NLOK= ****** GX	N$$MXM= 001100   	O$$LAP= 000000   	SO.O  = ****** GXB.LRUF= ****** GX	F.NUPD= ****** GX	N$$TMO= 000012   	PRCNT = ****** GX	STADSP  002632RB.      LUN = ****** GX	F.OPEN  000264R  	N$$UMR= 000024   	PS.APR= 000007   	STATS   001410RB.SIZE= ****** GX	F.SIZE= ****** GX	OF.HIT= ****** GX	PS.CHK= 010000   	ST$     002500RB.USE = ****** GX	G$$TPP= 000000   	OF.RD = ****** GX	PS.CKP= 040000   	ST$OTH  002615RCADR  = ****** GX	G$$TTK= 000000   	OF.WRT= ****** GX	PS.CKR= 020000   	ST$OUT  002571RCCBINI= ****** GX	HO    = 000110   	OUTLIN= ****** GX	PS.COM= 000200   	ST$TER  002526RCCBNXT= ****** GX	H$$RTZ= 000074   	OV$DB = 000000   	PS.DEL= 000010   	ST$TST        002552RCD    = 000131   	I$$RAR= 000000   	OV$DR = 000000   	PS.DRV= 000020   	ST.OTH  002476RCOM.AD= ****** GX	I$$RDN= 000000   	O$ALQ = 000012   	PS.FXD= 004000   	ST.OUT  002474RCSIZE = ****** GX	I.PRMS= ****** GX	O$ALQ0= 000012   	PS.LIO= 001000   	ST.TER  002470RC$$CDA= 000002   	JSTFY = ****** GX	O$ALQ1= 000014   	PS.NSF= 000400   	ST.TST  002472RC$$CKP= 000000   	JSTFY1= ****** GX	O$BID = 000000   	PS.OUT= 100000   	SY.TIM= ****** GXC$$CSR= 177440   	K$$CNT= 177546   	O$BKS = 000061   	PS.PER= 00200      0   	SY.TST= ****** GXC$$LIS= 000000   	K$$CSR= 177546   	O$BLN = 000001   	PS.PIC= 000100   	S$$ECC= 000000C$$ORE= 002000   	K$$IEN= 000115   	O$BLS = 000056   	PS.SYS= 000040   	S$$WPC= 000036C$$RSH= 177564   	K$$LDC= 000001   	O$BPA = 000032   	P$$D70= 000000   	S$$WPR= 000005C$$RUN= 000000   	K$$TPS= 000074   	O$BPS = 000034   	P$$LAS= 000000   	S$$YSZ= 050000C$$XDB= 000000   	LD$DB = 000000   	O$CTX = 000002   	P$$OFF= 000000   	S.FST = ****** GXC.CSIZ= ****** GX	LD$DR = 000000   	O$DEQ = 000016   	P$$      RFL= 000000   	S.LINK= ****** GXC.SLT = ****** GX	LD$LP = 000000   	O$DEV = 000062   	P$$RTY= 000000   	S.OPER= ****** GXD$$IAG= 000000   	LD$MM = 000000   	O$DNA = 000052   	P$$TPT= 000000   	S.TYP = ****** GXD$$ISK= 000000   	LD$NT = 000000   	O$DNS = 000055   	P.BLKS  000016   	TMPMSG  000000RD$$L11= 000001   	LD$RH = 000000   	O$FAC = 000020   	P.BUSY  000024   	TRAN$   000070RD$$SHF= 000000   	LD$TT = 000000   	O$FBDB= 000106   	P.IOC   000003   	TRAN$1  000112RD$$WCK= 000000   	LD$VT = 000000   	O$FBD      0= 000102   	P.LNK   000000   	TRAN.R  000066RD$$YNC= 000000   	LD$XM = 000000   	O$FBD1= 000104   	P.LRUF= ****** GX	TRNUM   000120RD$$YNM= 000000   	L$$ASG= 000000   	O$FIOS= 000114   	P.MAIN  000012   	TST$    001060RD$$ZMD= 000000   	L$$DRV= 000000   	O$FIO2= 000116   	P.NAM   000004   	TST$LD  001102RD$$Z11= 000004   	L$$LDR= 000000   	O$FNA = 000050   	P.OWN   000026   	TST$ME  001170RES    = 000112   	L$$PTO= 000037   	O$FNS = 000054   	P.PRI   000002   	TST$QD  001146RESC   = 000033   	L$$P11= 00000      1   	O$FOP = 000022   	P.REL   000014   	TST$US  001124RE$$DVC= 000000   	L$$11R= 000000   	O$FOVL= 000110   	P.SIZE  000016   	TST.LD  001034RE$$NSI= 000000   	MMLUN = ****** GX	O$FPAR= 000112   	P.STAT  000030   	TST.ME  001042RE$$PER= 000000   	MS$     001206R  	O$FSZ = 000060   	P.SUB   000010   	TST.QD  001040RAPPLICATION SECTION OF SUMMARY 	MACRO M1110  14-FEB-79 12:58  PAGE 14-2SYMBOL TABLETST.US  001036R  	T$$RUB= 000000   	UISDR3= 177606   	Y$EFPI= 000070   	Y$SYSV= 000050T$$ACR= 000000   	T$$SMC=       000000   	UISDR4= 177610   	Y$ENSP= 000036   	Y$TSTA= 000112T$$BTW= 000000   	T$$SYN= 000000   	UISDR5= 177612   	Y$FATL= 000034   	Y$WAIT= 000124T$$BUF= 000000   	T$$TRW= 000000   	UISDR6= 177614   	Y$FILE= 000122   	Y$WIN0= 000024T$$CCA= 000000   	T$$UTB= 000000   	UISDR7= 177616   	Y$GETS= 000126   	Y$WIN1= 000025T$$CCO= 000000   	T$$VBF= 000000   	V$$CTR= 001000   	Y$IFAB= 000052   	Y$WKQH= 000044T$$CTR= 000000   	T$$ZAN= 000300   	V$$TLD= 000120   	Y$IFAH= 000010   	Y$WKQT= 000046T$$ESC= 000000   	T$$      18S= 000000   	V$$TLM= 000205   	Y$IOFC= 000064   	Y$WRIT= 000116T$$GMC= 000000   	UISAR0= 177640   	V$$TRM= 000000   	Y$IOST= 000072   	$CBDMG= ****** GXT$$GTS= 000000   	UISAR1= 177642   	X$$M11= 000002   	Y$IRAH= 000004   	$CXDBL= ****** GXT$$HLD= 000000   	UISAR2= 177644   	Y$AST = 000074   	Y$KEYH= 000014   	$DIV  = ****** GXT$$J16= 000003   	UISAR3= 177646   	Y$AUTO= 000056   	Y$LCHN= 000066   	$$$R4 = 000000T$$KMG= 000000   	UISAR4= 177650   	Y$BDBH= 000000   	Y$PARM= 000076   	.ACFSZ= ****** GXT$$LW      C= 000000   	UISAR5= 177652   	Y$BFLH= 000020   	Y$QIO = 000062   	.ACFTB= ****** GXT$$PS = 000000   	UISAR6= 177654   	Y$CTXP= 000040   	Y$READ= 000114   	.ACTTB= ****** GXT$$RAX= 000000   	UISAR7= 177656   	Y$DIC = 000062   	Y$RECN= 000054   	.CCBBA= ****** GXT$$RNE= 000000   	UISDR0= 177600   	Y$DREG= 000026   	Y$SPFN= 000120   	.CCBLH= ****** GXT$$RPR= 000000   	UISDR1= 177602   	Y$DYLH= 000030   	Y$STKR= 000042   	...TPC= 000130T$$RST= 000000   	UISDR2= 177604. ABS.	000032	   000      	002724	   001ERR   Â   ORS DETECTED:  0
VIRTUAL MEMORY USED:  6640 WORDS  ( 26 PAGES)DYNAMIC MEMORY:  7204 WORDS  ( 27 PAGES)ELAPSED TIME:  00:00:35APPSUM,APPSUM.LST/-SP=TPMMC/ML,EXEMC/ML,RMSMAC/ML,KERMC/PA:1,APPSUM Â          ÑÊ\kQÁ› 8$        	.TITLE	TRANSACTION DISPLAY MODULE	.SBTTL	INITIALIZATIONS AND HEADINGS	.NLIST	BEX	.MCALL	ASRDF$,INH$S,ENB$S	ESC	=33	;ESCAPE CHARACTER	CD	=131	;CURSOR DISPLAY	ES	=112	;ERASE TO END OF SCREEN	HO	=110	;SEND CURSOR TO HOME POSITION	ASRDF$DISPL:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR	.ASCII	<ESC><ES><0><0>	.ASCII	<ESC><CD><31.+4.><0><31.+27.>	;POSITION CURSOR	.ASCII	/*** TRANSACTION DISPLAY ***/	.ASCII	<ESC><CD><31.+5.><0><31.+6.>	.ASCII	/TRAN        NUMBER      TIMES       /	.ASCII	/TERM        SE      QUENCE      ACTIVE/	.ASCII	<ESC><CD><31.+6.><0><31.+6.>	.ASCII	/NAME       RUNNING      RQSTD/	.ASCII	/       NAME         NUMBER        TST?/<1>	.EVEN;; BUFFER TO OUTPUT TRANSACTION DISPLAY LINE;POS:	.ASCIZ	<ESC><CD><31.+8.><0><31.+5.>TR.NME:	.ASCII	/            /COPY:	.ASCII	/              /REQUES:	.ASCII	/       /<1>PRT2:	.ASCIZ	<ESC><CD><31.+8.><0><31.+41.>TERM:	.ASCII	/              /SEQ:	.ASCII	/              /ACT:	.ASCIZ	/    /<1>TEMP:	.BLKW	10TABLE1:	.BLKW	160		;ENOUGH FOR 16. TRANSACTIONSPNTR1:	.WO      RD	TABLE1LNKLST:	.BLKW	512.		;ENOUGH FOR 64. ENTRIESLNKPTR:	.WORD 	LNKLSTCCBNUM:	.WORD	0	.PAGE	.SBTTL	INITIALIZATION ROUTINEMSG:	.ASCII	/DETAILED OR BRIEF DISPLAY <BRIEF>?/<1>	.EVENALLFLG:	.WORD	0TRINIT::	CLR	ALLFLG		;SET FLAG TO DEFAULT	MOV	#1,R0		;EXPECT A REPLY	MOV	#MSG,R1		;POINT TO QUESTION	CALL	COMMUN		;NOW GO ASK QUESTION	CMPB	RECBUF,#'D	;DOES USER WANT DETAILED DISPLAY?	BNE	5$		;IF NE-NO	INC	ALLFLG		;SET DETAILED DISPLAY FLAG.5$:	RETURN	.PAGE	.SBTTL	COMMENTS ON HOW THIS MODULE WORKS;****************      **************************************************************;;;	THE FOLLOWING GENERAL STEPS ARE FOLLOWED IN ORDER TO OBTAIN AND DISPLAY;	THE NECESSARY INFORMATION ON EACH TRANSACTION.;;	NOTE THAT IT IS NECESSARY TO GATHER ALL THE INFORMATION THAT WE WILL ;	NEED TO DISPLAY THE TRANSACTION SCREEN BEFORE ANY OF THE DISPLAY IS ;	ACTUALLY PUT ON THE SCREEN BECAUSE OF THE FACT THAT THE CACHE MUST BE ;	EXAMINED IN CONTEXT SWITCHING INHIBITED MODE WHICH DOES NOT ALLOW I/O; 	TO BE PERFORMED.;;;	1.  THE CCB FREELIS      T IS WALKED THROUGH AND A RECORD IS MADE OF ALL;	    CCBS THAT ARE FREE.;	    CCBFRE A 64. BYTE TABLE IS USED TO MARK ALL CCBS THAT ARE FREE.;;	2.  EACH CCB IS THEN EXAMINED SEQUENTIALLY. IF IT IS NOT IN THE FREELIST,;	    TRANSACTION TABLE1 IS SEARCHED TO DETERMINE IF THIS IS THE FIRST TIME;	    WE ENCOUNTERED THE CURRENT TRANSACTION.;;	    AN ENTRY IN TABLE1 IS CREATED ON THE FIRST OCCURRENCE OF A GIVEN;	    TRANSACTION, AND MODIFIED ON SUBSEQUENT OCCURRENCES OF THAT TRAN-;	    SACTION. AN ENTRY IS MADE I      N THE LNKLST TABLE FOR EVERY CCB EN-;	    COUNTERED.;;	3.  TABLE1 IS ARRANGED IN ALPHABETICAL ORDER.;;	4.  THE INFORMATION GATHERED IS DISPLAYED ON THE SCREEN;;;	NOW FOR A DESCRIPTION OF THE TABLES USED :;;; TABLE1:;;;	-------------------------------------------;	:	TRANSACTION NAME    3 WORDS       :;	-------------------------------------------;	:	COPIES IN USE       1 WORD	  :;	-------------------------------------------;	:	NUMBER REQUESTED    1 WORD	  :;	-------------------------------------------;	:	POIN      TER TO FIRST    1 WORD	  :;	:	ENTRY IN LNKLST			  :;	-------------------------------------------;	:	POINTER TO LAST	    1 WORD	  :;	:	ENTRY IN LNKLST			  :;	-------------------------------------------;;; NOTE:	THERE IS ONE ENTRY IN TABLE1 FOR EACH DIFFERENT TRANSACTION ENCOUNTERED;;	ENOUGH STORAGE (160 WORDS) HAS BEEN ALLOCATED FOR 16. DIFFERENT TRANSACTIONS;	IT IS HIGHLY UNLIKELY THAT THIS NUMBER WILL BE EXCEEDED.;;;; LNKLST:;;	-------------------------------------------;	:	POINTER TO NEXT TABLE ENTRY	  :;      	:	FOR SAME TRANSACTION 	1 WORD	  :;	-------------------------------------------;	:	TERMINAL NAME		3 WORDS	  :;	-------------------------------------------;	:	SEQUENCE NUMBER		2 WORDS	  :;	-------------------------------------------;	:	TST STATUS		1 WORD	  :;	-------------------------------------------;;; NOTE: YOU NEED ONE ENTRY IN THIS TABLE FOR EACH DIFFERENT TRANSACTION ;	INSTANCE. THE MAXIMUM NUMBER OF ENTRIES WHICH MIGHT BE NEEDED IS;	FOR 64 TRANSACTION INSTANCES. ENOUGH STORAGE (512. WORDS) HAS BEEN;      	ALLOCATED.;;;****************************************************************************	.PAGE	.SBTTL	MAIN LOOP;++++++++++++++++++++++++++++++++++++++++++++++++++;;	REGISTER USAGE:;;	R0=OFFSET TO CCB;	R1=OFFSET TO TDT;	R2=OFFSET TO MY INTERNAL TABLE (TABLE1);;++++++++++++++++++++++++++++++++++++++++++++++++++	T.NAM=0		;VALUE IS DIFFERENT THAN THAT OBTAINED FROM KERNEL.STBTRANS::	MOV	#TABLE1,PNTR1	;INITIALIZE POINTERS	MOV	#LNKLST,LNKPTR	TST	CYCLE		;ARE WE CYCLING THROUGH DISPLAYS	BEQ	2$	MOV	#1,ALLFLG	;SET       FLAG TO DISPLAY ALL TRANSACTION INSTANCES2$:	INH$S		;INHIBIT CONTEXT SWITCHING	CALL	CCBINI		;INITIALIZE CCB GETTING ROUTINE1$:	CALL	CCBNXT		;GET ADDRESS OF NEXT CCB	TST	R0		;IF EQ THEN WE ARE THROUGH WITH CCBS	BEQ	50$;; START PROCESSING CCB:;	MOV	#TABLE1,R2	;POINT R2 TO BEGINNING OF OUR TABLE	MOV	60000+C.TDB(R0),R1 ;POINT TO THE TDT ENTRY	5$:	CMP	R2,PNTR1	;HAVE WE LOOKED THROUGH ALL THE TABLE ENTRIES?	BEQ	20$		;IF EQ - YES!	CMP	60000+T.NAM(R1),(R2) ;DO WE HAVE A MATCH?	BNE	10$	CMP	60000+T.NAM+2(R1),2(R2)	BN      E	10$	CMP	60000+T.NAM+4(R1),4(R2)	BEQ	15$		;IF EQ-YES10$:	ADD	#16,R2		;POINT TO NEXT TABLE ENTRY	BR	5$		;GO AND LOOK AT NEXT TABLE ENTRY; FOUND A MATCH15$:	INC	R4		;SET INDICATOR FLAG SO THAT FILTAB KNOWS THAT				;THERE ALREADY EXISTS A TRANSACTION TABLE ENTRY				;FOR THIS TRANSACTION	CALL	FILTAB		;FILL TABLE ENTRY	BR	1$		;GO BACK FOR ANOTHER CCB; CREATE A NEW TABLE ENTRY20$:	MOV	60000+T.NAM(R1),(R2) ;GET TRANSACTION NAME	MOV	60000+T.NAM+2(R1),2(R2) 	MOV	60000+T.NAM+4(R1),4(R2)	ADD	#16,PNTR1	;PUSH DOWN THE       END OF THE TABLE	CLR	R4		;SET FLAG TO INDICATE FIRST TIME TRANSACTION ENCOUNTERED	CALL	FILTAB		;UPDATE TRANSACTION TABLE AND GENERATE INSTANCE TABLE	BR	1$		;GO BACK AND LOOK AT NEXT CCB50$:	ENB$S			;ENABLE CONTEXT SWITCHING	.PAGE	.SBTTL	GENERATE THE DISPLAY	MOV	#DISPL,R3	;DISPLAY SCREEN HEADER	CALL	OUTLIN	MOVB	#39.,POS+2	;RESET CURSOR CONTROL TO FIRST DISPLAY LINE	MOVB	#39.,PRT2+2	CMP	PNTR1,#TABLE1	;IF PNTR1=TABLE1 THEN THERE ARE NO RUNNING				;TRANSACTIONS.	BEQ	35$	CMP	PNTR1,#TABLE1+16 ;IF EQ THEN ONLY ONE       TABLE ENTRY SO NO 				 ;NEED TO ORDER IT.	BEQ	4$	CALL	ORDER		;ARRANGE THE TABLE IN ALPHABETICAL ORDER4$:	MOV	#TABLE1,R5	;POINT TO FIRST TRANSACTION; GET TRANSACTION NAME INTO OUTPUT BUFFER3$:	MOV	(R5),TR.NME		MOV	2(R5),TR.NME+2	MOV	4(R5),TR.NME+4; DISPLAY THE NUMBER OF COPIES OF TRANSACTION	MOV	#COPY,R0	;POINT TO DISPLAY AREA	MOV	6(R5),R1	;GET NUMBER OF COPIES OF TRANSACTION	CALL	JSTFY		;OUTPUT VALUE; GET NUMBER OF TRANSACTIONS REQUESTED	MOV	#REQUES,R0	;POINT TO DISPLAY AREA	MOV	10(R5),R1	;GET NUMBER OF TR      ANSACTIONS REQUESTED	CALL	JSTFY; DISPLAY FIRST HALF OF LINE (CONTAINS INFORMATION SHARED BY ALL INSTANCES; OF A TRANSACTION)	CMPB	#31.+23.,POS+2	;ARE WE AT THE BOTTOM OF THE SCREEN?	BNE	6$		;IF NE NO	CALL	NEWPGE		;ASK USER IF HE WANTS REMAINDER OF TRANSACTIONS				;AND CLEAN THE SCREEN	TST	CYCLE		;ARE WE IN CYCLING MODE	BNE	6$	CMPB	#'Y,RECBUF	;DID USER WANT ANY MORE TRANSACTIONS?	BEQ	6$		;IF EQ - YES SO KEEP GOING	JMP	35$		;FINISHED!6$:	MOV	#POS,R3		;POINT TO DISPLAY AREA	CALL	OUTLIN		;DISPLAY FIRST HALF OF       DISPLAY LINE;; PART 2 OF THE DISPLAY LINE CONTAINING INFORMATION SPECIFIC TO ONE; TRANSACTION INSTANCE STARTS HERE:;; OUTPUT TERMINAL NAME	MOV	12(R5),R4	;POINT TO THE LINKLIST ENTRY FOR NEXT 				;TRANSACTION INSTANCE60$:	MOV	2(R4),TERM	;GET TERMINAL NAME	MOV	4(R4),TERM+2	MOV	6(R4),TERM+4; GET SEQUENCE NUMBER	MOV	#SEQ,R0		;POINT TO DISPLAY AREA	MOV	R4,R1		;POINT TO TABLE ENTRY	TST	10(R4)		;DO WE HAVE A DOUBLE PRECISION NUMBER?	BEQ	63$		;IF EQ - NO	ADD	#10,R1		;POINT TO SEQ. NUMBER	CLR	R2		;SUPPRESS LEADING Z      EROES	CALL	$CDDMG		;CONVERT DOUBLE PRECISION NUMBER TO ASCII	BR	94$63$:	MOVB	#' ,(R0)+	;CLEAR SPACE	MOV	12(R4),R1	;POINT TO LOW WORD OF SEQUENCE NUMBER	CALL	JSTFY1		;JUSTIFY NUMBER; OUTPUT WHETHER THERE IS A TST ASSOCIATED WITH THIS TRANSACTION94$:	TST	14(R4)		;IS TST ACTIVE?	BEQ	65$		;IF EQ-ITS NOT	MOV	#"YE,ACT	;PUT "YES" IN BUFFER	MOVB	#'S,ACT+2	BR	70$65$:	MOV	#"NO,ACT	;PUT "NO" IN BUFFER	MOVB	#' ,ACT+2	;CLEAN UP THE BUFFER; OUTPUT SECOND HALF OF DISPLAY LINE70$:	CMPB	#31.+23.,PRT2+2	;ARE WE AT THE BOTTOM       OF THE SCREEN?	BNE	71$		;IF  NE-NO	CALL	NEWPGE		;ASK USER IF HE WANTS REMAINDER OF TRANSACTIONS				;AND CLEAN THE SCREEN	CMPB	#'Y,RECBUF	;DID USER WANT THE REMAINDER OF THE TRANSACTIONS?	BNE	35$		;IF NE NO71$:	MOV	#PRT2,R3	;POINT TO PART 2 OF DISPLAY	CALL	OUTLIN		;OUTPUT THIS DISPLAY	INCB	POS+2		;POINT TO NEXT LINE	INCB	PRT2+2	TST	ALLFLG		;ARE WE DISPLAYING ALL INSTANCES	BEQ	30$		;IF EQ-NO	MOV	(R4),R4		;POINT TO NEXT INSTANCE	BNE	60$		;IF NE- THERE ARE MORE INSTANCES30$:	ADD	#16,R5		;POINT TO NEXT TRANSACT      ION IN TABLE	CMP	R5,PNTR1	;HAVE WE LOOKED THROUGH ALL TRANSACTIONS	BGE	35$		;IF GE- THEN WE ARE THROUGH	JMP	3$35$:	RETURN	.PAGE	.SBTTL	UPDATE INTERNAL TRANSACTION TABLE;; **-FILTAB-INTERNAL ROUTINE TO UPDATE TRANSACTION TABLE;FILTAB:	TST	R4		;IS THIS A NEW TRANSACTION?	BNE	5$		;IF NE-NO	CLR	6(R2)		;INITIALIZE TRANSACTION INSTANCE COUNTER5$:	INC	6(R2)		;UPDATE INSTANCE COUNTER FOR TRANSACTION	MOV	60000+T.NTR(R1),10(R2)	;GET THE NUMBER OF TIMES TRANSACTION WAS 				;REQUESTED INTO TABLE	MOV	14(R2),-(SP)	;SAVE       POINTER TO LAST TABLE FOR THIS TRANSACTION	MOV	LNKPTR,14(R2)	;SET POINTER TO LAST INSTANCE TABLE ENTRY				;(ITS THE ONE WE ARE NOW GOING TO CREATE)	TST	R4		;IS THIS A NEW TRANSACTION?	BNE	10$		;IF NE-NO	MOV	LNKPTR,12(R2)	;INITIALIZE FIRST ELEMENT IN LINKED LIST	TST	(SP)+		;VALUE SAVED OF NO USE SINCE THIS IS FIRST INTANCE	BR	15$10$:	MOV	(SP)+,R3	;GET LAST INSTANCE 	MOV	LNKPTR,(R3)	;AND HAVE IT POINT TO THE NEW ONE	TST	ALLFLG		;DO WE WANT THE DETAILED PER INSTANCE DISPLAY?	BEQ	99$		;IF EQ-NO15$:	MOV	LNKPTR,R      3	;LETS POINT TO NEW INSTANCE TABLE	ADD	#16,LNKPTR	;ALLOCATE SPACE FOR TRANSACTION ENTRY 	CLR	(R3)		;CLEAR POINTER TO NEXT TRANSACTION INSTANCE				;(THIS MIGHT BE LAST ONE); GET TRANSACTION SEQUENCE NUMBER	MOV	60000+C.TID(R0),10(R3) ;STORE TRANSACTION SEQUENCE NUMBER	MOV	60000+C.TID+2(R0),12(R3) ;A DOUBLE PRECISION NUMBER; SEE IF THERE IS AN ACTIVE TST ASSOCIATED WITH THIS TRANSACTION	CLR	14(R3)		;CLEAR FLAG	TST	60000+C.TCB(R0)	;IS THERE AN ACTIVE TST ASSOCIATED WITH CCB	BEQ	20$		;IF EQ-THERE AREN'T	INC	14(      R3)		;SET FLAG TO INDICATE THAT THERE IS A TST; GET TERMINAL NAME20$:	MOV	UISAR3,-(SP)	;SAVE PAR	MOV	60000+C.SCB(R0),UISAR3 ;MAP TO THE STATION CONTROL BLOCK	MOV	60000+S.TERM,2(R3) ;GET TERMINAL NAME	MOV	60000+S.TERM+2,4(R3)	MOV	60000+S.TERM+4,6(R3)	MOV	(SP)+,UISAR3	;RESTORE PAR99$:	RETURN	.PAGE	.SBTTL	ROUTINE TO ARRANGE TRANSACTION DISPLAY IN ALPHABETICAL ORDER;; **-ORDER-ROUTINE TO ARRANGE IN ALPHABETICAL ORDER A TABLE OF ACTIVE TRANSACTIONS;; INPUTS:;;	TRANS-NUMBER OF TRANSACTIONS TO BE ORDERED.;;ORDFLG:      	.WORD	0ORDER:	MOV	#TABLE1,R0	;INITIALIZE POINTERS TO FIRST TWO TABLE ELEMENTS	MOV	#TABLE1+16,R1LOOP:	CMPB	(R0),(R1)	;COMPARE TRANSACTION NAMES ONE CHARACTER AT A TIME	BNE	10$	CMPB	1(R0),1(R1)	BNE	10$	CMPB	2(R0),2(R1)	BNE	10$	CMPB	3(R0),3(R1)	BNE	10$	CMPB	4(R0),4(R1)	BNE	10$	CMPB	5(R0),5(R1)10$:	BLE	20$		;IF LE -THEN TWO ENTRIES ARE ALREADY IN ORDER 	MOV	(R1),TEMP	;SWITCH THE TWO TABLE ENTRIES	MOV	2(R1),TEMP+2	MOV	4(R1),TEMP+4	MOV	6(R1),TEMP+6	MOV	10(R1),TEMP+10	MOV	12(R1),TEMP+12	MOV	14(R1),TEMP+14	MOV	(R0      ),(R1)	MOV	2(R0),2(R1)	MOV	4(R0),4(R1)	MOV	6(R0),6(R1)	MOV	10(R0),10(R1)	MOV	12(R0),12(R1)	MOV	14(R0),14(R1)	MOV	TEMP,(R0)	MOV	TEMP+2,2(R0)	MOV	TEMP+4,4(R0)	MOV	TEMP+6,6(R0)	MOV	TEMP+10,10(R0)	MOV	TEMP+12,12(R0)	MOV	TEMP+14,14(R0)	INC	ORDFLG		;KEEP TRACK IF ANY REORDERINGS WERE MADE20$:	MOV	R1,R0		;MOVE DOWN TO NEXT TRANSACTION NAME	ADD	#16,R1	CMP	R1,PNTR1	;HAVE WE REACHED THE END OF THE LIST?	BLT	LOOP		;IF LT- NO!	TST	ORDFLG		;WAS ANY REARRANGING DONE?	BEQ	99$		;IF EQ-NO CHABGES WERE MADE AND WE ARE FINISH      ED.	CLR	ORDFLG	JMP	ORDER99$:	RETURN	.PAGE	.SBTTL	MISCELLANEOUS ROUTINES;; **-NEWPGE-ASKS USER IF HE WANTS TO SEE ANOTHER SCREENFUL OF DATA AND IF ;    	    THE REPLY IS YES IT CLEANS THE SCREEN;MSG1:	.ASCII	/DO YOU WANT TO SEE REMAINING TRANSACTIONS <NO>?/<1>	.EVENNEWPGE:	MOV 	#1,PRT.OK	;OKAY TO MAKE HARDCOPY OF DISPLAY	CALL	OUTBUF		;GO AND DO IT	TST	CYCLE		;IF IN CYCLING MODE DISPLAY ALL TRANSACTIONS				;WITHOUT ASKING QUESTIONS	BEQ	97$		;IF EQ - WE ARE NOT	MOVB	#'Y,RECBUF	;SET IT SO DISPLAY ALL TRANSACTIO   Z  NS	BR	98$		;SKIP USER PROMPT97$:	MOV	#1,R0		;WANT REPLY	MOV	#MSG1,R1	CALL	COMMUN	CMPB	#'Y,RECBUF	;DO WE WANT REST OF TRANSACTIONS?	BNE	99$		;IF NE NO98$:	MOV	#DISPL,R3	;POINT TO OUTPUT PACKET	CALL	OUTLIN		;CLEAN THE SCREEN AND DISPLAY HEADER	MOVB	#31.+8.,POS+2	;RESET CURSOR POSITION TO FIRST LINE OF DISPLAY	MOVB	#31.+8.,PRT2+299$:	RETURN	.END 	Z         ÑÊ\^Á› 8$         ÑyZ    tŽ€»   ¯”L  :y:@  :T[@   %–T@  «ÈK@  3@  4@  4P@   4à8@  ŒAh)@  ŒA‡)@  aÎ@  avL@   äfc±@  KqÎ@  4{"@  nÐ@  <©@   P©\@      (ž	ÑxZhFÙüXh(¯”             Y"  J  Y# :*** TRANSACTION DISPLAY  & ***Y$ %TRAN        NUMBER      TIMES  L       TERM        SEQUENCE      ACTIVE r Y% %NAME       RUNNING      RQSTD     ˜    NAME         NUMBER        TST?  ¼  ¼ Y' $                                  â  Y' H                                           ü ü  þ þþ  DETAILED OR BRIEF DISPLAY <BRIEF>? þ $  & &  7
úÿÀ Á÷	  ×­  D ·
âÿ‡ ÷°û %–TKqÎ& L÷þ¬ÿ÷  ÷ Èÿþˆj÷•   ‡ ÷	  ÷	   þ«ÈKjP©\$:y:(:T[ rÀ(Â `· zûJ, `r,` r,`  
4P ` ˜Âe ï„
÷	<ãJ `r` r` ÷e >û ¾
÷	ÔþˆÐ7Š  ‡ Ã  ÷	  ÷•' àù÷•' ú ÐP©\  avL ä×-ûz×-û*÷	jÅwÂùw ¾ùw  * 
ºùÀÎ A ÷	  ÀÜ A ÷	  ÷¥6 ”ù÷	, Î ŒAh)Ü       ŒAh) 0÷  ÷¥Y   w ž Ã¼ ÷	  D
 7 –ù7 «ÈKKqÎ¼ avL V ’ù7 ŽùÀø ô Áe 
÷	  Ð•   ø "<© |
 ÷	  ô ÷YEvù÷•S rù÷NOhù÷•   
ŒA‡) ¢dù÷¥6 <ù÷	¬÷¥Y   Ãä ÷	  ·Šúø·Šù KqÎä  avL È÷Zþ¾Åe w!"úw ÿ‡ Ä2
 ²
  îr ` ¦ òþ Äòøý
 ÖƒËìý÷ nÐ ` þ#Ãâý÷e Üý
3 ` 3`
 3
 ð ` 4à8 `4à8`&4 ` :³
 æ¦ÿ7 `¦ÿó ` ó` ó` · 
¦ÿ3 `¦ÿ4{" `4{"` 4{"` \¦ÿ‡   ÀÁ*	¢1¬  1¬    Œ   1¬  ¦ÿ* ‚ 1¬  1¬  =wrøw nøw jøw ¨ føw bøw
 ^øw Zø	1  1  1 Î  1  1
 
 1  È$øð"ø ðø  ôðø ðø ðø
 ðø ·
Pÿ@Áe w âø 	§÷@ÿ7
:ÿw 8ÿ‡ DO YOU WANT TO SEE R @	EMAINING TRANSACTIONS <NO>?÷   ÷	   $äfc±(aÎ f	÷  ÷•Y   
À Á,	÷	  ÷¥Y   
Ã   «ÈKKqÎ,	%–T"KqÎ(   Œ	÷	  ÷•' (÷÷•' J÷‡  avL Œ         ÑÊ\NÁ› 8$        TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03TABLE OF CONTENTS     4-    2	INITIALIZATIONS AND HEADINGS     5-   60	INITIALIZATION ROUTINE     6-   85	COMMENTS ON HOW THIS MODULE WORKS     7-  173	MAIN LOOP     8-  262	GENERATE THE DISPLAY     9-  414	UPDATE INTERNAL TRANSACTION TABLE    10-  491	ROUTINE TO ARRANGE TRANSACTION DISPLAY IN ALPHABETICAL ORDER    11-  568	MISCELLANEOUS ROUTINESTRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 4      1						.TITLE	TRANSACTION DISPLAY MODU      LE      2						.SBTTL	INITIALIZATIONS AND HEADINGS      3						.NLIST	BEX      4      5      6						.MCALL	ASRDF$,INH$S,ENB$S      7      8		000033 				ESC	=33	;ESCAPE CHARACTER      9		000131 				CD	=131	;CURSOR DISPLAY     10		000112 				ES	=112	;ERASE TO END OF SCREEN     11		000110 				HO	=110	;SEND CURSOR TO HOME POSITION     12     13	000000					ASRDF$     14     15     16	000000	   033 	   131 	   042 	DISPL:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR     17	000005	   033 	   112 	   000 		      .ASCII	<ESC><ES><0><0>     18     19	000011	   033 	   131 	   043 		.ASCII	<ESC><CD><31.+4.><0><31.+27.>	;POSITION CURSOR     20	000016	   052 	   052 	   052 		.ASCII	/*** TRANSACTION DISPLAY ***/     21     22	000051	   033 	   131 	   044 		.ASCII	<ESC><CD><31.+5.><0><31.+6.>     23	000056	   124 	   122 	   101 		.ASCII	/TRAN        NUMBER      TIMES       /     24	000122	   124 	   105 	   122 		.ASCII	/TERM        SEQUENCE      ACTIVE/     25     26	000162	   033 	   131 	   045 		.ASCII	<ESC><CD><31      .+6.><0><31.+6.>     27	000167	   116 	   101 	   115 		.ASCII	/NAME       RUNNING      RQSTD/     28	000224	   040 	   040 	   040 		.ASCII	/       NAME         NUMBER        TST?/<1>     29						.EVEN     30     31     32     33     34     35					;     36					; BUFFER TO OUTPUT TRANSACTION DISPLAY LINE     37					;     38     39	000274	   033 	   131 	   047 	POS:	.ASCIZ	<ESC><CD><31.+8.><0><31.+5.>     40	000302	   040 	   040 	   040 	TR.NME:	.ASCII	/            /     41	000316	   040 	   040 	   040 	C      OPY:	.ASCII	/              /     42	000334	   040 	   040 	   040 	REQUES:	.ASCII	/       /<1>     43     44	000344	   033 	   131 	   047 	PRT2:	.ASCIZ	<ESC><CD><31.+8.><0><31.+41.>     45	000352	   040 	   040 	   040 	TERM:	.ASCII	/              /     46	000370	   040 	   040 	   040 	SEQ:	.ASCII	/              /     47	000406	   040 	   040 	   040 	ACT:	.ASCIZ	/    /<1>     48     49     50	000414				TEMP:	.BLKW	10     51	000434				TABLE1:	.BLKW	160		;ENOUGH FOR 16. TRANSACTIONS     52	000774	000434'		      	PNTR1:	.WORD	TABLE1     53	000776				LNKLST:	.BLKW	512.		;ENOUGH FOR 64. ENTRIES     54	002776	000776'			LNKPTR:	.WORD 	LNKLST     55     56	003000	000000 			CCBNUM:	.WORD	0     57TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 4-1INITIALIZATIONS AND HEADINGS     58TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 5INITIALIZATION ROUTINE     60						.SBTTL	INITIALIZATION ROUTINE     61     62	003002	   104 	   105 	   124 	MSG:	.ASCII	/DETAILED OR BRIEF DISPLAY <BRIEF>?/<1>           63						.EVEN     64     65	003046	000000 			ALLFLG:	.WORD	0     66     67     68	003050				TRINIT::     69     70     71	003050	005067 	177772 			CLR	ALLFLG		;SET FLAG TO DEFAULT     72	003054	012700 	000001 			MOV	#1,R0		;EXPECT A REPLY     73	003060	012701 	003002'			MOV	#MSG,R1		;POINT TO QUESTION     74	003064					CALL	COMMUN		;NOW GO ASK QUESTION     75     76	003070	126727 	000000G	000104 		CMPB	RECBUF,#'D	;DOES USER WANT DETAILED DISPLAY?     77	003076	001002 				BNE	5$		;IF NE-NO     78	003100	0052      67 	177742 			INC	ALLFLG		;SET DETAILED DISPLAY FLAG.     79     80     81	003104				5$:	RETURN     82     83TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 6COMMENTS ON HOW THIS MODULE WORKS     85						.SBTTL	COMMENTS ON HOW THIS MODULE WORKS     86     87     88     89					;******************************************************************************     90					;     91					;     92					;	THE FOLLOWING GENERAL STEPS ARE FOLLOWED IN ORDER TO OBTAIN AND DISPLAY     93					;	THE NECESSARY IN      FORMATION ON EACH TRANSACTION.     94					;     95					;	NOTE THAT IT IS NECESSARY TO GATHER ALL THE INFORMATION THAT WE WILL     96					;	NEED TO DISPLAY THE TRANSACTION SCREEN BEFORE ANY OF THE DISPLAY IS     97					;	ACTUALLY PUT ON THE SCREEN BECAUSE OF THE FACT THAT THE CACHE MUST BE     98					;	EXAMINED IN CONTEXT SWITCHING INHIBITED MODE WHICH DOES NOT ALLOW I/O     99					; 	TO BE PERFORMED.    100					;    101					;    102					;	1.  THE CCB FREELIST IS WALKED THROUGH AND A RECORD IS MADE OF ALL          103					;	    CCBS THAT ARE FREE.    104					;	    CCBFRE A 64. BYTE TABLE IS USED TO MARK ALL CCBS THAT ARE FREE.    105					;    106					;	2.  EACH CCB IS THEN EXAMINED SEQUENTIALLY. IF IT IS NOT IN THE FREELIST,    107					;	    TRANSACTION TABLE1 IS SEARCHED TO DETERMINE IF THIS IS THE FIRST TIME    108					;	    WE ENCOUNTERED THE CURRENT TRANSACTION.    109					;    110					;	    AN ENTRY IN TABLE1 IS CREATED ON THE FIRST OCCURRENCE OF A GIVEN    111					;	    TRANSACTION, AND MODIFIED ON SUBSEQUENT       OCCURRENCES OF THAT TRAN-    112					;	    SACTION. AN ENTRY IS MADE IN THE LNKLST TABLE FOR EVERY CCB EN-    113					;	    COUNTERED.    114					;    115					;	3.  TABLE1 IS ARRANGED IN ALPHABETICAL ORDER.    116					;    117					;	4.  THE INFORMATION GATHERED IS DISPLAYED ON THE SCREEN    118					;    119					;    120					;	NOW FOR A DESCRIPTION OF THE TABLES USED :    121					;    122					;    123					; TABLE1:    124					;    125					;    126					;	-------------------------------------------    127					      ;	:	TRANSACTION NAME    3 WORDS       :    128					;	-------------------------------------------    129					;	:	COPIES IN USE       1 WORD	  :    130					;	-------------------------------------------    131					;	:	NUMBER REQUESTED    1 WORD	  :    132					;	-------------------------------------------    133					;	:	POINTER TO FIRST    1 WORD	  :    134					;	:	ENTRY IN LNKLST			  :    135					;	-------------------------------------------    136					;	:	POINTER TO LAST	    1 WORD	  :    137					;	:	ENTRY IN       LNKLST			  :    138					;	-------------------------------------------    139					;    140					;    141					; NOTE:	THERE IS ONE ENTRY IN TABLE1 FOR EACH DIFFERENT TRANSACTION ENCOUNTEREDTRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 6-1COMMENTS ON HOW THIS MODULE WORKS    142					;    143					;	ENOUGH STORAGE (160 WORDS) HAS BEEN ALLOCATED FOR 16. DIFFERENT TRANSACTIONS    144					;	IT IS HIGHLY UNLIKELY THAT THIS NUMBER WILL BE EXCEEDED.    145					;    146					;    147					;    148					;       LNKLST:    149					;    150					;	-------------------------------------------    151					;	:	POINTER TO NEXT TABLE ENTRY	  :    152					;	:	FOR SAME TRANSACTION 	1 WORD	  :    153					;	-------------------------------------------    154					;	:	TERMINAL NAME		3 WORDS	  :    155					;	-------------------------------------------    156					;	:	SEQUENCE NUMBER		2 WORDS	  :    157					;	-------------------------------------------    158					;	:	TST STATUS		1 WORD	  :    159					;	-------------------------------      ------------    160					;    161					;    162					; NOTE: YOU NEED ONE ENTRY IN THIS TABLE FOR EACH DIFFERENT TRANSACTION    163					;	INSTANCE. THE MAXIMUM NUMBER OF ENTRIES WHICH MIGHT BE NEEDED IS    164					;	FOR 64 TRANSACTION INSTANCES. ENOUGH STORAGE (512. WORDS) HAS BEEN    165					;	ALLOCATED.    166					;    167					;    168					;****************************************************************************    169    170    171TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 7MAIN LOOP          173						.SBTTL	MAIN LOOP    174    175    176					;++++++++++++++++++++++++++++++++++++++++++++++++++    177					;    178					;	REGISTER USAGE:    179					;    180					;	R0=OFFSET TO CCB    181					;	R1=OFFSET TO TDT    182					;	R2=OFFSET TO MY INTERNAL TABLE (TABLE1)    183					;    184					;++++++++++++++++++++++++++++++++++++++++++++++++++    185    186    187    188		000000 				T.NAM=0		;VALUE IS DIFFERENT THAN THAT OBTAINED FROM KERNEL.STB    189    190    191	003106	012767 	000434'	175660 	TRANS      ::	MOV	#TABLE1,PNTR1	;INITIALIZE POINTERS    192	003114	012767 	000776'	177654 		MOV	#LNKLST,LNKPTR    193    194	003122	005767 	000000G			TST	CYCLE		;ARE WE CYCLING THROUGH DISPLAYS    195	003126	001403 				BEQ	2$    196    197	003130	012767 	000001 	177710 		MOV	#1,ALLFLG	;SET FLAG TO DISPLAY ALL TRANSACTION INSTANCES    198    199    200	003136				2$:	INH$S		;INHIBIT CONTEXT SWITCHING    201    202	003152					CALL	CCBINI		;INITIALIZE CCB GETTING ROUTINE    203    204	003156				1$:	CALL	CCBNXT		;GET ADDRE      SS OF NEXT CCB    205    206	003162	005700 				TST	R0		;IF EQ THEN WE ARE THROUGH WITH CCBS    207	003164	001450 				BEQ	50$    208    209    210					;    211					; START PROCESSING CCB:    212					;    213    214    215	003166	012702 	000434'			MOV	#TABLE1,R2	;POINT R2 TO BEGINNING OF OUR TABLE    216    217	003172	016001 	060000G			MOV	60000+C.TDB(R0),R1 ;POINT TO THE TDT ENTRY    218    219	003176	020267 	175572 		5$:	CMP	R2,PNTR1	;HAVE WE LOOKED THROUGH ALL THE TABLE ENTRIES?    220	003202	001422 				BE      Q	20$		;IF EQ - YES!    221    222	003204	026112 	060000 			CMP	60000+T.NAM(R1),(R2) ;DO WE HAVE A MATCH?    223	003210	001010 				BNE	10$    224	003212	026162 	060002 	000002 		CMP	60000+T.NAM+2(R1),2(R2)    225	003220	001004 				BNE	10$    226	003222	026162 	060004 	000004 		CMP	60000+T.NAM+4(R1),4(R2)    227	003230	001403 				BEQ	15$		;IF EQ-YES    228    229	003232	062702 	000016 		10$:	ADD	#16,R2		;POINT TO NEXT TABLE ENTRYTRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 7-1MAIN LOOP    2      30	003236	000757 				BR	5$		;GO AND LOOK AT NEXT TABLE ENTRY    231    232    233					; FOUND A MATCH    234    235    236	003240	005204 			15$:	INC	R4		;SET INDICATOR FLAG SO THAT FILTAB KNOWS THAT    237									;THERE ALREADY EXISTS A TRANSACTION TABLE ENTRY    238									;FOR THIS TRANSACTION    239    240	003242					CALL	FILTAB		;FILL TABLE ENTRY    241	003246	000743 				BR	1$		;GO BACK FOR ANOTHER CCB    242    243    244					; CREATE A NEW TABLE ENTRY    245    246	003250	016112 	060000 		20$:	MOV	6      0000+T.NAM(R1),(R2) ;GET TRANSACTION NAME    247	003254	016162 	060002 	000002 		MOV	60000+T.NAM+2(R1),2(R2)    248	003262	016162 	060004 	000004 		MOV	60000+T.NAM+4(R1),4(R2)    249    250	003270	062767 	000016 	175476 		ADD	#16,PNTR1	;PUSH DOWN THE END OF THE TABLE    251    252	003276	005004 				CLR	R4		;SET FLAG TO INDICATE FIRST TIME TRANSACTION ENCOUNTERED    253	003300					CALL	FILTAB		;UPDATE TRANSACTION TABLE AND GENERATE INSTANCE TABLE    254	003304	000724 				BR	1$		;GO BACK AND LOOK AT NEXT CCB          255    256    257    258	003306				50$:	ENB$S			;ENABLE CONTEXT SWITCHING    259    260TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 8GENERATE THE DISPLAY    262						.SBTTL	GENERATE THE DISPLAY    263    264    265	003320	012703 	000000'			MOV	#DISPL,R3	;DISPLAY SCREEN HEADER    266	003324					CALL	OUTLIN    267	003330	112767 	000047 	174740 		MOVB	#39.,POS+2	;RESET CURSOR CONTROL TO FIRST DISPLAY LINE    268	003336	112767 	000047 	175002 		MOVB	#39.,PRT2+2    269    270    271	003344	0      26727 	175424 	000434'		CMP	PNTR1,#TABLE1	;IF PNTR1=TABLE1 THEN THERE ARE NO RUNNING    272									;TRANSACTIONS.    273	003352	001572 				BEQ	35$    274    275	003354	026727 	175414 	000452'		CMP	PNTR1,#TABLE1+16 ;IF EQ THEN ONLY ONE TABLE ENTRY SO NO    276									 ;NEED TO ORDER IT.    277	003362	001402 				BEQ	4$    278    279	003364					CALL	ORDER		;ARRANGE THE TABLE IN ALPHABETICAL ORDER    280    281    282	003370	012705 	000434'		4$:	MOV	#TABLE1,R5	;POINT TO FIRST TRANSACTION    283    284    285	      				; GET TRANSACTION NAME INTO OUTPUT BUFFER    286    287	003374	011567 	174702 		3$:	MOV	(R5),TR.NME    288	003400	016567 	000002 	174676 		MOV	2(R5),TR.NME+2    289	003406	016567 	000004 	174672 		MOV	4(R5),TR.NME+4    290    291    292					; DISPLAY THE NUMBER OF COPIES OF TRANSACTION    293    294	003414	012700 	000316'			MOV	#COPY,R0	;POINT TO DISPLAY AREA    295	003420	016501 	000006 			MOV	6(R5),R1	;GET NUMBER OF COPIES OF TRANSACTION    296	003424					CALL	JSTFY		;OUTPUT VALUE    297    298    299      					; GET NUMBER OF TRANSACTIONS REQUESTED    300    301    302	003430	012700 	000334'			MOV	#REQUES,R0	;POINT TO DISPLAY AREA    303	003434	016501 	000010 			MOV	10(R5),R1	;GET NUMBER OF TRANSACTIONS REQUESTED    304	003440					CALL	JSTFY    305    306    307    308					; DISPLAY FIRST HALF OF LINE (CONTAINS INFORMATION SHARED BY ALL INSTANCES    309					; OF A TRANSACTION)    310    311    312	003444	122767 	000066 	174624 		CMPB	#31.+23.,POS+2	;ARE WE AT THE BOTTOM OF THE SCREEN?    313	003452	001013 		      		BNE	6$		;IF NE NO    314    315	003454					CALL	NEWPGE		;ASK USER IF HE WANTS REMAINDER OF TRANSACTIONS    316									;AND CLEAN THE SCREEN    317    318	003460	005767 	000000G			TST	CYCLE		;ARE WE IN CYCLING MODETRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 8-1GENERATE THE DISPLAY    319	003464	001006 				BNE	6$    320    321	003466	122767 	000131 	000000G		CMPB	#'Y,RECBUF	;DID USER WANT ANY MORE TRANSACTIONS?    322	003474	001402 				BEQ	6$		;IF EQ - YES SO KEEP GOING    323	003476	000      167 	000236 			JMP	35$		;FINISHED!    324    325    326	003502	012703 	000274'		6$:	MOV	#POS,R3		;POINT TO DISPLAY AREA    327	003506					CALL	OUTLIN		;DISPLAY FIRST HALF OF DISPLAY LINE    328    329    330					;    331					; PART 2 OF THE DISPLAY LINE CONTAINING INFORMATION SPECIFIC TO ONE    332					; TRANSACTION INSTANCE STARTS HERE:    333					;    334    335    336					; OUTPUT TERMINAL NAME    337    338    339	003512	016504 	000012 			MOV	12(R5),R4	;POINT TO THE LINKLIST ENTRY FOR NEXT    340							      		;TRANSACTION INSTANCE    341    342	003516	016467 	000002 	174626 	60$:	MOV	2(R4),TERM	;GET TERMINAL NAME    343	003524	016467 	000004 	174622 		MOV	4(R4),TERM+2    344	003532	016467 	000006 	174616 		MOV	6(R4),TERM+4    345    346    347					; GET SEQUENCE NUMBER    348    349    350	003540	012700 	000370'			MOV	#SEQ,R0		;POINT TO DISPLAY AREA    351	003544	010401 				MOV	R4,R1		;POINT TO TABLE ENTRY    352	003546	005764 	000010 			TST	10(R4)		;DO WE HAVE A DOUBLE PRECISION NUMBER?    353	003552	001406 	      			BEQ	63$		;IF EQ - NO    354    355	003554	062701 	000010 			ADD	#10,R1		;POINT TO SEQ. NUMBER    356	003560	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    357	003562					CALL	$CDDMG		;CONVERT DOUBLE PRECISION NUMBER TO ASCII    358	003566	000406 				BR	94$    359    360    361	003570	112720 	000040 		63$:	MOVB	#' ,(R0)+	;CLEAR SPACE    362	003574	016401 	000012 			MOV	12(R4),R1	;POINT TO LOW WORD OF SEQUENCE NUMBER    363    364	003600					CALL	JSTFY1		;JUSTIFY NUMBER    365    366    367					; OUTPUT WH      ETHER THERE IS A TST ASSOCIATED WITH THIS TRANSACTION    368    369    370	003604	005764 	000014 		94$:	TST	14(R4)		;IS TST ACTIVE?    371	003610	001407 				BEQ	65$		;IF EQ-ITS NOT    372    373	003612	012767 	042531 	174566 		MOV	#"YE,ACT	;PUT "YES" IN BUFFER    374	003620	112767 	000123 	174562 		MOVB	#'S,ACT+2    375	003626	000406 				BR	70$TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 8-2GENERATE THE DISPLAY    376    377	003630	012767 	047516 	174550 	65$:	MOV	#"NO,ACT	;PUT "NO" IN BUF      FER    378	003636	112767 	000040 	174544 		MOVB	#' ,ACT+2	;CLEAN UP THE BUFFER    379    380    381    382					; OUTPUT SECOND HALF OF DISPLAY LINE    383    384    385	003644	122767 	000066 	174474 	70$:	CMPB	#31.+23.,PRT2+2	;ARE WE AT THE BOTTOM OF THE SCREEN?    386	003652	001006 				BNE	71$		;IF  NE-NO    387    388	003654					CALL	NEWPGE		;ASK USER IF HE WANTS REMAINDER OF TRANSACTIONS    389									;AND CLEAN THE SCREEN    390    391	003660	122767 	000131 	000000G		CMPB	#'Y,RECBUF	;DID USER WANT THE       REMAINDER OF THE TRANSACTIONS?    392	003666	001024 				BNE	35$		;IF NE NO    393    394	003670	012703 	000344'		71$:	MOV	#PRT2,R3	;POINT TO PART 2 OF DISPLAY    395	003674					CALL	OUTLIN		;OUTPUT THIS DISPLAY    396    397	003700	105267 	174372 			INCB	POS+2		;POINT TO NEXT LINE    398	003704	105267 	174436 			INCB	PRT2+2    399    400	003710	005767 	177132 			TST	ALLFLG		;ARE WE DISPLAYING ALL INSTANCES    401	003714	001402 				BEQ	30$		;IF EQ-NO    402    403	003716	011404 				MOV	(R4),R4		;POINT TO NEX      T INSTANCE    404	003720	001276 				BNE	60$		;IF NE- THERE ARE MORE INSTANCES    405    406	003722	062705 	000016 		30$:	ADD	#16,R5		;POINT TO NEXT TRANSACTION IN TABLE    407	003726	020567 	175042 			CMP	R5,PNTR1	;HAVE WE LOOKED THROUGH ALL TRANSACTIONS    408	003732	002002 				BGE	35$		;IF GE- THEN WE ARE THROUGH    409	003734	000167 	177434 			JMP	3$    410    411	003740				35$:	RETURN    412TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 9UPDATE INTERNAL TRANSACTION TABLE    414						.SBT      TL	UPDATE INTERNAL TRANSACTION TABLE    415    416    417					;    418					; **-FILTAB-INTERNAL ROUTINE TO UPDATE TRANSACTION TABLE    419					;    420    421	003742				FILTAB:    422    423	003742	005704 				TST	R4		;IS THIS A NEW TRANSACTION?    424	003744	001002 				BNE	5$		;IF NE-NO    425	003746	005062 	000006 			CLR	6(R2)		;INITIALIZE TRANSACTION INSTANCE COUNTER    426    427	003752	005262 	000006 		5$:	INC	6(R2)		;UPDATE INSTANCE COUNTER FOR TRANSACTION    428    429	003756	016162 	060000G	000010 		      MOV	60000+T.NTR(R1),10(R2)	;GET THE NUMBER OF TIMES TRANSACTION WAS    430									;REQUESTED INTO TABLE    431    432	003764	016246 	000014 			MOV	14(R2),-(SP)	;SAVE POINTER TO LAST TABLE FOR THIS TRANSACTION    433    434	003770	016762 	177002 	000014 		MOV	LNKPTR,14(R2)	;SET POINTER TO LAST INSTANCE TABLE ENTRY    435									;(ITS THE ONE WE ARE NOW GOING TO CREATE)    436	003776	005704 				TST	R4		;IS THIS A NEW TRANSACTION?    437	004000	001005 				BNE	10$		;IF NE-NO    438    439	004002	016762 	17677      0 	000012 		MOV	LNKPTR,12(R2)	;INITIALIZE FIRST ELEMENT IN LINKED LIST    440	004010	005726 				TST	(SP)+		;VALUE SAVED OF NO USE SINCE THIS IS FIRST INTANCE    441	004012	000406 				BR	15$    442    443	004014	012603 			10$:	MOV	(SP)+,R3	;GET LAST INSTANCE    444	004016	016713 	176754 			MOV	LNKPTR,(R3)	;AND HAVE IT POINT TO THE NEW ONE    445	004022	005767 	177020 			TST	ALLFLG		;DO WE WANT THE DETAILED PER INSTANCE DISPLAY?    446    447	004026	001443 				BEQ	99$		;IF EQ-NO    448    449	004030	016703 	1      76742 		15$:	MOV	LNKPTR,R3	;LETS POINT TO NEW INSTANCE TABLE    450	004034	062767 	000016 	176734 		ADD	#16,LNKPTR	;ALLOCATE SPACE FOR TRANSACTION ENTRY    451	004042	005013 				CLR	(R3)		;CLEAR POINTER TO NEXT TRANSACTION INSTANCE    452									;(THIS MIGHT BE LAST ONE)    453    454    455					; GET TRANSACTION SEQUENCE NUMBER    456    457    458	004044	016063 	060000G	000010 		MOV	60000+C.TID(R0),10(R3) ;STORE TRANSACTION SEQUENCE NUMBER    459	004052	016063 	060002G	000012 		MOV	60000+C.TID+2(R0),12(R      3) ;A DOUBLE PRECISION NUMBER    460    461    462					; SEE IF THERE IS AN ACTIVE TST ASSOCIATED WITH THIS TRANSACTION    463    464    465	004060	005063 	000014 			CLR	14(R3)		;CLEAR FLAG    466	004064	005760 	060000G			TST	60000+C.TCB(R0)	;IS THERE AN ACTIVE TST ASSOCIATED WITH CCB    467	004070	001402 				BEQ	20$		;IF EQ-THERE AREN'T    468    469	004072	005263 	000014 			INC	14(R3)		;SET FLAG TO INDICATE THAT THERE IS A TST    470TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 9-1UPDATE       INTERNAL TRANSACTION TABLE    471    472    473					; GET TERMINAL NAME    474    475    476	004076	016746 	177646 		20$:	MOV	UISAR3,-(SP)	;SAVE PAR    477	004102	016067 	060000G	177646 		MOV	60000+C.SCB(R0),UISAR3 ;MAP TO THE STATION CONTROL BLOCK    478    479	004110	016763 	060000G	000002 		MOV	60000+S.TERM,2(R3) ;GET TERMINAL NAME    480	004116	016763 	060002G	000004 		MOV	60000+S.TERM+2,4(R3)    481	004124	016763 	060004G	000006 		MOV	60000+S.TERM+4,6(R3)    482    483	004132	012667 	177646 			MOV	(SP)      +,UISAR3	;RESTORE PAR    484    485    486	004136				99$:	RETURN    487    488    489TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 10ROUTINE TO ARRANGE TRANSACTION DISPLAY IN ALPHABETICAL ORDER    491						.SBTTL	ROUTINE TO ARRANGE TRANSACTION DISPLAY IN ALPHABETICAL ORDER    492    493    494					;    495					; **-ORDER-ROUTINE TO ARRANGE IN ALPHABETICAL ORDER A TABLE OF ACTIVE TRANSACTIONS    496					;    497					; INPUTS:    498					;    499					;	TRANS-NUMBER OF TRANSACTIONS TO BE ORDER      ED.    500					;    501					;    502    503    504	004140	000000 			ORDFLG:	.WORD	0    505    506    507	004142	012700 	000434'		ORDER:	MOV	#TABLE1,R0	;INITIALIZE POINTERS TO FIRST TWO TABLE ELEMENTS    508	004146	012701 	000452'			MOV	#TABLE1+16,R1    509    510    511	004152	121011 			LOOP:	CMPB	(R0),(R1)	;COMPARE TRANSACTION NAMES ONE CHARACTER AT A TIME    512	004154	001023 				BNE	10$    513	004156	126061 	000001 	000001 		CMPB	1(R0),1(R1)    514	004164	001017 				BNE	10$    515	004166	126061 	000002 	      000002 		CMPB	2(R0),2(R1)    516	004174	001013 				BNE	10$    517	004176	126061 	000003 	000003 		CMPB	3(R0),3(R1)    518	004204	001007 				BNE	10$    519	004206	126061 	000004 	000004 		CMPB	4(R0),4(R1)    520	004214	001003 				BNE	10$    521	004216	126061 	000005 	000005 		CMPB	5(R0),5(R1)    522    523	004224	003475 			10$:	BLE	20$		;IF LE -THEN TWO ENTRIES ARE ALREADY IN ORDER    524    525	004226	011167 	174162 		 	MOV	(R1),TEMP	;SWITCH THE TWO TABLE ENTRIES    526	004232	016167 	000002 	174156 		MOV	2      (R1),TEMP+2    527	004240	016167 	000004 	174152 		MOV	4(R1),TEMP+4    528	004246	016167 	000006 	174146 		MOV	6(R1),TEMP+6    529	004254	016167 	000010 	174142 		MOV	10(R1),TEMP+10    530	004262	016167 	000012 	174136 		MOV	12(R1),TEMP+12    531	004270	016167 	000014 	174132 		MOV	14(R1),TEMP+14    532    533	004276	011011 				MOV	(R0),(R1)    534	004300	016061 	000002 	000002 		MOV	2(R0),2(R1)    535	004306	016061 	000004 	000004 		MOV	4(R0),4(R1)    536	004314	016061 	000006 	000006 		MOV	6(R0),6(R1)          537	004322	016061 	000010 	000010 		MOV	10(R0),10(R1)    538	004330	016061 	000012 	000012 		MOV	12(R0),12(R1)    539	004336	016061 	000014 	000014 		MOV	14(R0),14(R1)    540    541	004344	016710 	174044 			MOV	TEMP,(R0)    542	004350	016760 	174042 	000002 		MOV	TEMP+2,2(R0)    543	004356	016760 	174036 	000004 		MOV	TEMP+4,4(R0)    544	004364	016760 	174032 	000006 		MOV	TEMP+6,6(R0)    545	004372	016760 	174026 	000010 		MOV	TEMP+10,10(R0)    546	004400	016760 	174022 	000012 		MOV	TEMP+12,12(R0)    547	      004406	016760 	174016 	000014 		MOV	TEMP+14,14(R0)TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 10-1ROUTINE TO ARRANGE TRANSACTION DISPLAY IN ALPHABETICAL ORDER    548    549    550	004414	005267 	177520 			INC	ORDFLG		;KEEP TRACK IF ANY REORDERINGS WERE MADE    551    552	004420	010100 			20$:	MOV	R1,R0		;MOVE DOWN TO NEXT TRANSACTION NAME    553	004422	062701 	000016 			ADD	#16,R1    554    555	004426	020167 	174342 			CMP	R1,PNTR1	;HAVE WE REACHED THE END OF THE LIST?    556	004432	00264      7 				BLT	LOOP		;IF LT- NO!    557    558	004434	005767 	177500 			TST	ORDFLG		;WAS ANY REARRANGING DONE?    559	004440	001404 				BEQ	99$		;IF EQ-NO CHABGES WERE MADE AND WE ARE FINISHED.    560    561	004442	005067 	177472 			CLR	ORDFLG    562	004446	000167 	177470 			JMP	ORDER    563    564	004452				99$:	RETURN    565    566TRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB-79 13:03  PAGE 11MISCELLANEOUS ROUTINES    568						.SBTTL	MISCELLANEOUS ROUTINES    569    570    571					;    572					; **-NEWPGE-AS      KS USER IF HE WANTS TO SEE ANOTHER SCREENFUL OF DATA AND IF    573					;    	    THE REPLY IS YES IT CLEANS THE SCREEN    574					;    575    576    577    578	004454	   104 	   117 	   040 	MSG1:	.ASCII	/DO YOU WANT TO SEE REMAINING TRANSACTIONS <NO>?/<1>    579						.EVEN    580    581    582    583	004534				NEWPGE:    584    585    586	004534	012767 	000001 	000000G		MOV 	#1,PRT.OK	;OKAY TO MAKE HARDCOPY OF DISPLAY    587	004542					CALL	OUTBUF		;GO AND DO IT    588    589    590	004546	005767 	000000G	      		TST	CYCLE		;IF IN CYCLING MODE DISPLAY ALL TRANSACTIONS    591									;WITHOUT ASKING QUESTIONS    592	004552	001404 				BEQ	97$		;IF EQ - WE ARE NOT    593	004554	112767 	000131 	000000G		MOVB	#'Y,RECBUF	;SET IT SO DISPLAY ALL TRANSACTIONS    594	004562	000412 				BR	98$		;SKIP USER PROMPT    595    596    597	004564	012700 	000001 		97$:	MOV	#1,R0		;WANT REPLY    598	004570	012701 	004454'			MOV	#MSG1,R1    599	004574					CALL	COMMUN    600    601    602	004600	122767 	000131 	000000G		CMPB	#'Y,RECBUF	      ;DO WE WANT REST OF TRANSACTIONS?    603	004606	001012 				BNE	99$		;IF NE NO    604    605	004610	012703 	000000'		98$:	MOV	#DISPL,R3	;POINT TO OUTPUT PACKET    606	004614					CALL	OUTLIN		;CLEAN THE SCREEN AND DISPLAY HEADER    607    608	004620	112767 	000047 	173450 		MOVB	#31.+8.,POS+2	;RESET CURSOR POSITION TO FIRST LINE OF DISPLAY    609	004626	112767 	000047 	173512 		MOVB	#31.+8.,PRT2+2    610    611	004634				99$:	RETURN    612    613		000001 				.ENDTRANSACTION DISPLAY MODULE	MACRO M1110  14-FEB      -79 13:03  PAGE 11-1SYMBOL TABLEACT     000406R  	E$$NSI= 000000   	M$$CRB= 000124   	R$$HDV= 000000   	T$$PS = 000000ALLFLG  003046R  	E$$PER= 000000   	M$$CRX= 000000   	R$$H11= 000003   	T$$RAX= 000000A$$CHK= 000000   	E$$XPR= 000000   	M$$EXT= 000000   	R$$JPO= 000000   	T$$RNE= 000000A$$CPS= 000000   	FILTAB  003742R  	M$$FCS= 000000   	R$$JP1= 000003   	T$$RPR= 000000A$$NSI= 000000   	F$$LPP= 000000   	M$$K11= 000000   	R$$LKL= 000001   	T$$RST= 000000A$$PRI= 000000   	F$$LVL= 000001   	M$$MGE= 000000         	R$$MOF= 000000   	T$$RUB= 000000A$$TRP= 000000   	G$$TPP= 000000   	M$$MUP= 000000   	R$$MPL= 000000   	T$$SMC= 000000CCBINI= ****** GX	G$$TTK= 000000   	M$$NET= 000000   	R$$M11= 000003   	T$$SYN= 000000CCBNUM  003000R  	HO    = 000110   	M$$OVR= 000000   	R$$NDC= 000006   	T$$TRW= 000000CCBNXT= ****** GX	H$$RTZ= 000074   	M$$XLN= 000400   	R$$NDH= 000226   	T$$UTB= 000000CD    = 000131   	I$$RAR= 000000   	NEWPGE  004534R  	R$$NDL= 000001   	T$$VBF= 000000COMMUN= ****** GX	I$$RDN= 000000   	N$$CON= 00      0500   	R$$SND= 000000   	T$$ZAN= 000300COPY    000316R  	JSTFY = ****** GX	N$$LDV= 000001   	R$$STP= 000000   	T$$18S= 000000CYCLE = ****** GX	JSTFY1= ****** GX	N$$MOV= 000011   	R$$11M= 000000   	T.NAM = 000000C$$CDA= 000002   	K$$CNT= 177546   	N$$MXM= 001100   	SEQ     000370R  	T.NTR = ****** GXC$$CKP= 000000   	K$$CSR= 177546   	N$$TMO= 000012   	S$$ECC= 000000   	UISAR0= 177640C$$CSR= 177440   	K$$IEN= 000115   	N$$UMR= 000024   	S$$WPC= 000036   	UISAR1= 177642C$$LIS= 000000   	K$$LDC= 000001   	ORD      ER   004142R  	S$$WPR= 000005   	UISAR2= 177644C$$ORE= 002000   	K$$TPS= 000074   	ORDFLG  004140R  	S$$YSZ= 050000   	UISAR3= 177646C$$RSH= 177564   	LD$DB = 000000   	OUTBUF= ****** GX	S.TERM= ****** GX	UISAR4= 177650C$$RUN= 000000   	LD$DR = 000000   	OUTLIN= ****** GX	TABLE1  000434R  	UISAR5= 177652C$$XDB= 000000   	LD$LP = 000000   	OV$DB = 000000   	TEMP    000414R  	UISAR6= 177654C.SCB = ****** GX	LD$MM = 000000   	OV$DR = 000000   	TERM    000352R  	UISAR7= 177656C.TCB = ****** GX	LD$NT = 000000         	O$$LAP= 000000   	TRANS   003106RG 	UISDR0= 177600C.TDB = ****** GX	LD$RH = 000000   	PNTR1   000774R  	TRINIT  003050RG 	UISDR1= 177602C.TID = ****** GX	LD$TT = 000000   	POS     000274R  	TR.NME  000302R  	UISDR2= 177604DISPL   000000R  	LD$VT = 000000   	PRT.OK= ****** GX	T$$ACR= 000000   	UISDR3= 177606D$$IAG= 000000   	LD$XM = 000000   	PRT2    000344R  	T$$BTW= 000000   	UISDR4= 177610D$$ISK= 000000   	LNKLST  000776R  	P$$D70= 000000   	T$$BUF= 000000   	UISDR5= 177612D$$L11= 000001   	LNKPTR  00277      6R  	P$$LAS= 000000   	T$$CCA= 000000   	UISDR6= 177614D$$SHF= 000000   	LOOP    004152R  	P$$OFF= 000000   	T$$CCO= 000000   	UISDR7= 177616D$$WCK= 000000   	L$$ASG= 000000   	P$$RFL= 000000   	T$$CTR= 000000   	V$$CTR= 001000D$$YNC= 000000   	L$$DRV= 000000   	P$$RTY= 000000   	T$$ESC= 000000   	V$$TLD= 000120D$$YNM= 000000   	L$$LDR= 000000   	P$$TPT= 000000   	T$$GMC= 000000   	V$$TLM= 000205D$$ZMD= 000000   	L$$PTO= 000037   	Q$$OPT= 000017   	T$$GTS= 000000   	V$$TRM= 000000D$$Z11= 000004   	L$$P11= 0      00001   	RECBUF= ****** GX	T$$HLD= 000000   	X$$M11= 000002ES    = 000112   	L$$11R= 000000   	REQUES  000334R  	T$$J16= 000003   	$CDDMG= ****** GXESC   = 000033   	MSG     003002R  	R$$DSP= 000000   	T$$KMG= 000000   	$CXDBL= ****** GXE$$DVC= 000000   	MSG1    004454R  	R$$EXV= 000000   	T$$LWC= 000000   	$$$R4 = 000000. ABS.	000000	   000      	004636	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  3317 WORDS  ( 13 PAGES)DYNAMIC MEMORY:  4036 WORDS  ( 15 PAGES)ELAPSED TIME:  00:00:18TRAN34,TRAN34.LST/-S   &   P=TPMMC/ML,EXEMC/ML,KERMC/PA:1,TRAN34 &          €ÓkQÁ› 8$        	.TITLE 	TST DISPLAY MODULE	.SBTTL	INITIALIZATIONS AND HEADINGS	.NLIST	BEX	.MCALL	ASRDF$,INH$S,ENB$S	ASRDF$	ESC =33		;ESCAPE CHARACTER	CD  =131	;CURSOR DISPLAY	ES  =112	;ERASE TO END OF SCREEN	HO  =110	;SEND CURSOR TO HOME POSITIONDISPL:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR	.ASCII	<ESC><ES><0><0>		;AND ERASE TO END OF SCREEN	.ASCII	<ESC><CD><31.+4.><0><31.+29.>	;POSITION CURSOR	.ASCII	/*** TST DISPLAY ***/	.ASCII	<ESC><CD><31.+5.><0><31.+4.>	.ASCII	/STAT/	.ASCII	<ESC><CD><31.+5.><0><31.+23.>      	.ASCII	/QUEUED     MESGS     TST/	.ASCII	"     TIMES     TIMES    I/O"	.ASCII	<ESC><CD><31.+6.><0><31.+4.>	.ASCII	/NAME     COPIES    MEMORY    QUEUED/	.ASCII	/    SIZE    LOADED    FAILED    REQ/<1>;; BUFFER TO OUTPUT TST LINE;	.EVENPOS:	.ASCIZ	<ESC><CD><31.+8.><0><31.+3.>NAME:	.ASCII	/          /COPY:	.ASCII	/          /QD.MEM:	.ASCII	/          /MS.QD:	.ASCII	/          /SIZE:	.ASCIZ	/         /LOADED:	.ASCII	/          /FAILED:	.ASCII	/        /IO:	.ASCII	/      /<1>	.EVENMSG:	.ASCII	/DO YOU WANT TO SE      E REMAINDER OF DISPLAY <NO>?/<1>	.EVEN	.PAGE	.SBTTL	MAIN LOOPTSTDSP::	MOV	#DISPL,R3	;POSITION POINTER TO OUTPUT BUFFER	CALL	OUTLIN	MOVB	#39.,POS+2	;RESET TO FIRST LINE OF DISPLAY	INH$S			;INHIBIT CONTEXT SWITCHING	MOV	#777,R0		;INDICATE THAT WE DON'T WANT TO LOOK THROUGH				;TERMINAL SCBS	CALL	SCBINI		;INITIALIZE SCB GETTING ROUTINE10$:	CALL	SCBNXT		;GET KT-ADDRESS OF NEXT SCB	TST	UISAR4		;IF UISAR4=0 NO MORE SCBS LEFT	BEQ	15$			CMPB	#SY.TST,S.TYP+100000 ;IS THIS A TST STATION?	BNE	10$		;IF NE - NO	TSTB	S.C      ML+100000	;ARE THERE ANY TSTS IN USE?	BEQ	10$		;IF EQ - LOOK AT NEXT SCB	CALL	DSPTST		;DISPLAY ONE TST LINE	TST	POS+2		;DO WE WANT TO DISPLAY MORE TSTS?	BNE	10$		;IF NE - YES15$:	ENB$S			;ENABLE CONTEXT SWITCHING	RETURN	.PAGE	.SBTTL	DISPLAY TST LINEDSPTST:;; GET STATION NAME;	MOV	S.NAM+100000,NAME		MOV	S.NAM+2+100000,NAME+2	MOV	S.NAM+4+100000,NAME+4;; GET NUMBER OF COPIES OF TST AROUND;	MOV	#COPY,R0	;POINT TO DISPLAY AREA	MOVB	S.CML+100000,R1	;GET NUMBER OF COPIES INTO APPROPRIATE REGISTER	CALL	JSTFY		;OUTP      UT THE NUMBER;; GET THE NUMBER OF TSTS WHICH ARE QUEUED TO MEMORY;	MOV	#QD.MEM,R0	;POINT TO DISPLAY AREA	MOV	S.LINK+100000,R1 ;GET NUMBER OF COPIES INTO APPROPRIATE REGISTER	CALL	JSTFY		;OUTPUT THE NUMBER;; GET NUMBER OF MESSAGES WHICH ARE QUEUED TO TST STATION;	MOV	#MS.QD,R0	;POINT TO DISPLAY AREA	MOVB	S.MCT+100000,R1	;GET NUMBER OF MESSAGES	CALL	JSTFY		;OUTPUT THE NUMBER;; GET TST SIZE;	MOV	#SIZE,R0	;POINT TO DISPLAY AREA	MOV	S.MXSZ+100000,R1 ;GET TST SIZE	CALL	JSTFY		;OUTPUT THE NUMBER;; GET NUMBER OF TI      MES THAT TST WAS LOADED;	MOV	#LOADED,R0	;POINT TO DISPLAY AREA	MOV	S.TLOD+100000,R1 ;GET NUMBER OF TIMES TST LOADED	CALL	JSTFY		;OUTPUT THE NUMBER;; GET NUMBER OF TIMES THAT TST FAILED TO LOAD;	MOV	#FAILED,R0	;POINT TO DISPLAY AREA	MOVB	S.FLOD+100000,R1 ;GET NUMBER OF TIMES TST FAILED TO LOAD	BIC	#177600,R1	;CLEAR HIGH BYTE	CALL	JSTFY;; GET NUMBER OF IO REQUESTS MADE BY TST;	MOV	#IO,R0		;POINT TO DISPLAY AREA	MOV	S.IO+100000,R1	;GET NUMBER OF IO REQUESTS	CALL	JSTFY;; DISPLAY TST LINE;	ENB$S			;ENABLE CONTEX      T SWITCHING	CMP	#31.+23.,POS+2	;ARE WE AT THE BOTTOM OF THE SCREEN?	BNE	40$		;IF NE - NO	MOV	#1,PRT.OK	;OK TO MAKE HARDCOPY OF DISPLAY	CALL	OUTBUF		;GO AND DO IT!	TST	CYCLE		;IF IN CYCLING MODE THEN DON'T ASK USER ANY				;QUESTIONS AND DISPLAY ALL TSTS	BNE	35$	MOV	R0,-(SP)	;SAVE REGISTERS	MOV	R1,-(SP)	MOV	#1,R0		;WANT A REPLY	MOV	#MSG,R1	CALL	COMMUN	MOV	(SP)+,R1	;RESTORE REGISTERS	MOV	(SP)+,R0	CMPB	#'Y,RECBUF	;DOES USER WANT MORE TSTS	BEQ	35$		;IF EQ - YES	CLR	POS+2		;INDICATES THAT WE DON'T WANT ANY MORE M   X  ESSAGES	BR	99$35$:	MOV	#DISPL,R3	;POINT TO OUTPUT PACKET	CALL	OUTLIN		;ERASE SCREEN AND PRINT HEADING	MOVB	#38.,POS+2	;AND RESET CURSOR TO ONE LINE BEFORE FIRST LINE40$:	MOV	#POS,R3		;POINT TO BEGINNING OF BUFFER	CALL	OUTLIN		;OUTPUT TST LINE	INCB	2+POS		;SET UP CURSOR POSITION FOR NEXT LINE99$:	INH$S			;INHIBIT CONTEXT SWITCHING	RETURN	.END X         €Ó^Á› 8$         €      tŽ€»   ¯”L  %–T@  «ÈK@   ŒAh)@  aÎ@  avL@  äfc±@  KqÎ@   :wy:@  :wT[@  Äz€@  #{ S@  &{\M@   ){À]@  ,{{:@  -{à@  -{™@  .{H@   4{\M@  4{Àž@  P©\@      (T€h. ¯”             Y"  J  Y# <*** TST DISPLAY ***Y$ # & STATY$ 6QUEUED     MESGS     TST      L TIMES     TIMES    I/OY% #NAME     CO r PIES    MEMORY    QUEUED    SIZE    LO ˜ ADED    FAILED    REQY' "            ¾                                        ä                                      DO YOU WANT TO SEE REMAINDER OF DISPLA &Y <NO>?Ã  ÷	  ÷•' tÿþˆH÷•   ‡ Àÿ   avLH"P©\ L÷	  ÷	  ÷¨ÿ÷¥   €÷÷‹ €ô÷	 ÷@ÿï :wy:
:wT[¨ÿÄz€4{Àž €#{ S € rþˆ|7Š  ‡ ‡ ÷ €0ÿ÷€,ÿ÷€(ÿÀ¾ Á |
P©\.{H €.{H€.{H€$¾  – €÷	  ÀÈ Á €÷	  ÀÒ Á #{ S €ŒAh)È ,{{: €ŒAh)Ò  ® €÷	  ÀÜ Á €÷	  Àæ Á -{à €ŒAh)Ü -{™ €ŒAh)æ  Æ €÷	  Àð Á €ÁE€ÿ÷	  Àø Á 4{\M €ŒAh)ð &{\M €ŒAh)ø  â €÷	  þˆò7Š  ‡ ÷%6 ¸þ ÷     Â    ÷	  ÷ ){À] €ŒAh)òP©\ äfc±$aÎ   &fÀ Á ÷	  €÷¥Y   7
†þ «ÈK %–T KqÎ ,Ã  ÷	  ÷•& vþÃ® ÷	  ·ŠjþþˆR÷•   ‡    
avL® avL R&P©\ R‡   Â          €ÓNÁ› 8$        TST DISPLAY MODULE	MACRO M1110  14-FEB-79 13:06TABLE OF CONTENTS     4-    2	INITIALIZATIONS AND HEADINGS     5-   62	MAIN LOOP     6-  103	DISPLAY TST LINETST DISPLAY MODULE	MACRO M1110  14-FEB-79 13:06  PAGE 4      1						.TITLE 	TST DISPLAY MODULE      2						.SBTTL	INITIALIZATIONS AND HEADINGS      3						.NLIST	BEX      4      5      6						.MCALL	ASRDF$,INH$S,ENB$S      7      8	000000					ASRDF$      9     10     11		000033 				ESC =33		;ESCAPE CHARACTER     12		000131 				CD  =131	;CURSOR DISPLAY           13		000112 				ES  =112	;ERASE TO END OF SCREEN     14		000110 				HO  =110	;SEND CURSOR TO HOME POSITION     15     16     17	000000	   033 	   131 	   042 	DISPL:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR     18	000005	   033 	   112 	   000 		.ASCII	<ESC><ES><0><0>		;AND ERASE TO END OF SCREEN     19     20	000011	   033 	   131 	   043 		.ASCII	<ESC><CD><31.+4.><0><31.+29.>	;POSITION CURSOR     21	000016	   052 	   052 	   052 		.ASCII	/*** TST DISPLAY ***/     22     23     24	000041	         033 	   131 	   044 		.ASCII	<ESC><CD><31.+5.><0><31.+4.>     25	000046	   123 	   124 	   101 		.ASCII	/STAT/     26	000052	   033 	   131 	   044 		.ASCII	<ESC><CD><31.+5.><0><31.+23.>     27	000057	   121 	   125 	   105 		.ASCII	/QUEUED     MESGS     TST/     28	000107	   040 	   040 	   040 		.ASCII	"     TIMES     TIMES    I/O"     29     30	000142	   033 	   131 	   045 		.ASCII	<ESC><CD><31.+6.><0><31.+4.>     31	000147	   116 	   101 	   115 		.ASCII	/NAME     COPIES    MEMORY    QUEUED/     32	000      212	   040 	   040 	   040 		.ASCII	/    SIZE    LOADED    FAILED    REQ/<1>     33     34     35					;     36					; BUFFER TO OUTPUT TST LINE     37					;     38     39						.EVEN     40     41	000256	   033 	   131 	   047 	POS:	.ASCIZ	<ESC><CD><31.+8.><0><31.+3.>     42     43     44	000264	   040 	   040 	   040 	NAME:	.ASCII	/          /     45	000276	   040 	   040 	   040 	COPY:	.ASCII	/          /     46	000310	   040 	   040 	   040 	QD.MEM:	.ASCII	/          /     47	000322	   040 	   040 	   040       	MS.QD:	.ASCII	/          /     48	000334	   040 	   040 	   040 	SIZE:	.ASCIZ	/         /     49	000346	   040 	   040 	   040 	LOADED:	.ASCII	/          /     50	000360	   040 	   040 	   040 	FAILED:	.ASCII	/        /     51	000370	   040 	   040 	   040 	IO:	.ASCII	/      /<1>     52     53     54     55						.EVEN     56     57	000400	   104 	   117 	   040 	MSG:	.ASCII	/DO YOU WANT TO SEE REMAINDER OF DISPLAY <NO>?/<1>TST DISPLAY MODULE	MACRO M1110  14-FEB-79 13:06  PAGE 4-1INITIALIZATIONS AND HEADIN      GS     58						.EVEN     59     60TST DISPLAY MODULE	MACRO M1110  14-FEB-79 13:06  PAGE 5MAIN LOOP     62						.SBTTL	MAIN LOOP     63     64     65     66	000456				TSTDSP::     67     68     69	000456	012703 	000000'			MOV	#DISPL,R3	;POSITION POINTER TO OUTPUT BUFFER     70	000462					CALL	OUTLIN     71     72	000466	112767 	000047 	177564 		MOVB	#39.,POS+2	;RESET TO FIRST LINE OF DISPLAY     73     74     75	000474					INH$S			;INHIBIT CONTEXT SWITCHING     76     77	000510	012700 	000777 			MOV	#777,R0      		;INDICATE THAT WE DON'T WANT TO LOOK THROUGH     78									;TERMINAL SCBS     79     80	000514					CALL	SCBINI		;INITIALIZE SCB GETTING ROUTINE     81     82	000520				10$:	CALL	SCBNXT		;GET KT-ADDRESS OF NEXT SCB     83     84	000524	005767 	177650 			TST	UISAR4		;IF UISAR4=0 NO MORE SCBS LEFT     85	000530	001414 				BEQ	15$     86     87     88	000532	122767 	000000G	100000G		CMPB	#SY.TST,S.TYP+100000 ;IS THIS A TST STATION?     89	000540	001367 				BNE	10$		;IF NE - NO     90     91	000542	105767 	10      0000G			TSTB	S.CML+100000	;ARE THERE ANY TSTS IN USE?     92	000546	001764 				BEQ	10$		;IF EQ - LOOK AT NEXT SCB     93     94	000550					CALL	DSPTST		;DISPLAY ONE TST LINE     95	000554	005767 	177500 			TST	POS+2		;DO WE WANT TO DISPLAY MORE TSTS?     96	000560	001357 				BNE	10$		;IF NE - YES     97     98	000562				15$:	ENB$S			;ENABLE CONTEXT SWITCHING     99	000574					RETURN    100    101TST DISPLAY MODULE	MACRO M1110  14-FEB-79 13:06  PAGE 6DISPLAY TST LINE    103						.SBTTL	DISPLAY TST LINE    1      04    105    106	000576				DSPTST:    107    108    109    110					;    111					; GET STATION NAME    112					;    113    114	000576	016767 	100000G	177460 		MOV	S.NAM+100000,NAME    115	000604	016767 	100002G	177454 		MOV	S.NAM+2+100000,NAME+2    116	000612	016767 	100004G	177450 		MOV	S.NAM+4+100000,NAME+4    117    118    119					;    120					; GET NUMBER OF COPIES OF TST AROUND    121					;    122    123	000620	012700 	000276'			MOV	#COPY,R0	;POINT TO DISPLAY AREA    124	000624	116701 	100000G			MOVB	S.      CML+100000,R1	;GET NUMBER OF COPIES INTO APPROPRIATE REGISTER    125	000630					CALL	JSTFY		;OUTPUT THE NUMBER    126    127					;    128					; GET THE NUMBER OF TSTS WHICH ARE QUEUED TO MEMORY    129					;    130    131	000634	012700 	000310'			MOV	#QD.MEM,R0	;POINT TO DISPLAY AREA    132	000640	016701 	100000G			MOV	S.LINK+100000,R1 ;GET NUMBER OF COPIES INTO APPROPRIATE REGISTER    133	000644					CALL	JSTFY		;OUTPUT THE NUMBER    134    135    136					;    137					; GET NUMBER OF MESSAGES WHICH ARE QUEUE      D TO TST STATION    138					;    139    140	000650	012700 	000322'			MOV	#MS.QD,R0	;POINT TO DISPLAY AREA    141	000654	116701 	100000G			MOVB	S.MCT+100000,R1	;GET NUMBER OF MESSAGES    142	000660					CALL	JSTFY		;OUTPUT THE NUMBER    143    144					;    145					; GET TST SIZE    146					;    147    148	000664	012700 	000334'			MOV	#SIZE,R0	;POINT TO DISPLAY AREA    149	000670	016701 	100000G			MOV	S.MXSZ+100000,R1 ;GET TST SIZE    150	000674					CALL	JSTFY		;OUTPUT THE NUMBER    151    152    153    154			      		;    155					; GET NUMBER OF TIMES THAT TST WAS LOADED    156					;    157    158	000700	012700 	000346'			MOV	#LOADED,R0	;POINT TO DISPLAY AREA    159	000704	016701 	100000G			MOV	S.TLOD+100000,R1 ;GET NUMBER OF TIMES TST LOADEDTST DISPLAY MODULE	MACRO M1110  14-FEB-79 13:06  PAGE 6-1DISPLAY TST LINE    160	000710					CALL	JSTFY		;OUTPUT THE NUMBER    161    162    163					;    164					; GET NUMBER OF TIMES THAT TST FAILED TO LOAD    165					;    166    167	000714	012700 	000360'			MOV	#FAILED,R0	;POINT       TO DISPLAY AREA    168	000720	116701 	100000G			MOVB	S.FLOD+100000,R1 ;GET NUMBER OF TIMES TST FAILED TO LOAD    169	000724	042701 	177600 			BIC	#177600,R1	;CLEAR HIGH BYTE    170    171	000730					CALL	JSTFY    172    173    174					;    175					; GET NUMBER OF IO REQUESTS MADE BY TST    176					;    177    178	000734	012700 	000370'			MOV	#IO,R0		;POINT TO DISPLAY AREA    179	000740	016701 	100000G			MOV	S.IO+100000,R1	;GET NUMBER OF IO REQUESTS    180	000744					CALL	JSTFY    181    182    183    184          185    186    187					;    188					; DISPLAY TST LINE    189					;    190    191    192	000750					ENB$S			;ENABLE CONTEXT SWITCHING    193	000762	022767 	000066 	177270 		CMP	#31.+23.,POS+2	;ARE WE AT THE BOTTOM OF THE SCREEN?    194	000770	001040 				BNE	40$		;IF NE - NO    195    196    197	000772	012767 	000001 	000000G		MOV	#1,PRT.OK	;OK TO MAKE HARDCOPY OF DISPLAY    198	001000					CALL	OUTBUF		;GO AND DO IT!    199    200    201	001004	005767 	000000G			TST	CYCLE		;IF IN CYCLING MODE THEN DON'T ASK       USER ANY    202									;QUESTIONS AND DISPLAY ALL TSTS    203    204	001010	001021 				BNE	35$    205    206	001012	010046 				MOV	R0,-(SP)	;SAVE REGISTERS    207	001014	010146 				MOV	R1,-(SP)    208    209	001016	012700 	000001 			MOV	#1,R0		;WANT A REPLY    210	001022	012701 	000400'			MOV	#MSG,R1    211	001026					CALL	COMMUN    212    213	001032	012601 				MOV	(SP)+,R1	;RESTORE REGISTERS    214	001034	012600 				MOV	(SP)+,R0    215    216TST DISPLAY MODULE	MACRO M1110  14-FEB-79 13:06  PAGE 6-2DISPL      AY TST LINE    217	001036	122767 	000131 	000000G		CMPB	#'Y,RECBUF	;DOES USER WANT MORE TSTS    218	001044	001403 				BEQ	35$		;IF EQ - YES    219    220	001046	005067 	177206 			CLR	POS+2		;INDICATES THAT WE DON'T WANT ANY MORE MESSAGES    221	001052	000415 				BR	99$    222    223    224	001054	012703 	000000'		35$:	MOV	#DISPL,R3	;POINT TO OUTPUT PACKET    225	001060					CALL	OUTLIN		;ERASE SCREEN AND PRINT HEADING    226	001064	112767 	000046 	177166 		MOVB	#38.,POS+2	;AND RESET CURSOR TO ONE LINE BEFORE       FIRST LINE    227    228	001072	012703 	000256'		40$:	MOV	#POS,R3		;POINT TO BEGINNING OF BUFFER    229	001076					CALL	OUTLIN		;OUTPUT TST LINE    230	001102	105267 	177152 			INCB	2+POS		;SET UP CURSOR POSITION FOR NEXT LINE    231    232    233	001106				99$:	INH$S			;INHIBIT CONTEXT SWITCHING    234    235	001122					RETURN    236		000001 				.ENDTST DISPLAY MODULE	MACRO M1110  14-FEB-79 13:06  PAGE 6-3SYMBOL TABLEA$$CHK= 000000   	G$$TPP= 000000   	M$$MUP= 000000   	R$$NDC= 000006   	T$$PS = 000000A$      $CPS= 000000   	G$$TTK= 000000   	M$$NET= 000000   	R$$NDH= 000226   	T$$RAX= 000000A$$NSI= 000000   	HO    = 000110   	M$$OVR= 000000   	R$$NDL= 000001   	T$$RNE= 000000A$$PRI= 000000   	H$$RTZ= 000074   	M$$XLN= 000400   	R$$SND= 000000   	T$$RPR= 000000A$$TRP= 000000   	IO      000370R  	NAME    000264R  	R$$STP= 000000   	T$$RST= 000000CD    = 000131   	I$$RAR= 000000   	N$$CON= 000500   	R$$11M= 000000   	T$$RUB= 000000COMMUN= ****** GX	I$$RDN= 000000   	N$$LDV= 000001   	SCBINI= ****** GX	T$$SMC= 0000      00COPY    000276R  	JSTFY = ****** GX	N$$MOV= 000011   	SCBNXT= ****** GX	T$$SYN= 000000CYCLE = ****** GX	K$$CNT= 177546   	N$$MXM= 001100   	SIZE    000334R  	T$$TRW= 000000C$$CDA= 000002   	K$$CSR= 177546   	N$$TMO= 000012   	SY.TST= ****** GX	T$$UTB= 000000C$$CKP= 000000   	K$$IEN= 000115   	N$$UMR= 000024   	S$$ECC= 000000   	T$$VBF= 000000C$$CSR= 177440   	K$$LDC= 000001   	OUTBUF= ****** GX	S$$WPC= 000036   	T$$ZAN= 000300C$$LIS= 000000   	K$$TPS= 000074   	OUTLIN= ****** GX	S$$WPR= 000005   	T$$18S=       000000C$$ORE= 002000   	LD$DB = 000000   	OV$DB = 000000   	S$$YSZ= 050000   	UISAR0= 177640C$$RSH= 177564   	LD$DR = 000000   	OV$DR = 000000   	S.CML = ****** GX	UISAR1= 177642C$$RUN= 000000   	LD$LP = 000000   	O$$LAP= 000000   	S.FLOD= ****** GX	UISAR2= 177644C$$XDB= 000000   	LD$MM = 000000   	POS     000256R  	S.IO  = ****** GX	UISAR3= 177646DISPL   000000R  	LD$NT = 000000   	PRT.OK= ****** GX	S.LINK= ****** GX	UISAR4= 177650DSPTST  000576R  	LD$RH = 000000   	P$$D70= 000000   	S.MCT = ****** GX	UISA      R5= 177652D$$IAG= 000000   	LD$TT = 000000   	P$$LAS= 000000   	S.MXSZ= ****** GX	UISAR6= 177654D$$ISK= 000000   	LD$VT = 000000   	P$$OFF= 000000   	S.NAM = ****** GX	UISAR7= 177656D$$L11= 000001   	LD$XM = 000000   	P$$RFL= 000000   	S.TLOD= ****** GX	UISDR0= 177600D$$SHF= 000000   	LOADED  000346R  	P$$RTY= 000000   	S.TYP = ****** GX	UISDR1= 177602D$$WCK= 000000   	L$$ASG= 000000   	P$$TPT= 000000   	TSTDSP  000456RG 	UISDR2= 177604D$$YNC= 000000   	L$$DRV= 000000   	QD.MEM  000310R  	T$$ACR= 000000   	      UISDR3= 177606D$$YNM= 000000   	L$$LDR= 000000   	Q$$OPT= 000017   	T$$BTW= 000000   	UISDR4= 177610D$$ZMD= 000000   	L$$PTO= 000037   	RECBUF= ****** GX	T$$BUF= 000000   	UISDR5= 177612D$$Z11= 000004   	L$$P11= 000001   	R$$DSP= 000000   	T$$CCA= 000000   	UISDR6= 177614ES    = 000112   	L$$11R= 000000   	R$$EXV= 000000   	T$$CCO= 000000   	UISDR7= 177616ESC   = 000033   	MSG     000400R  	R$$HDV= 000000   	T$$CTR= 000000   	V$$CTR= 001000E$$DVC= 000000   	MS.QD   000322R  	R$$H11= 000003   	T$$ESC= 000000         	V$$TLD= 000120E$$NSI= 000000   	M$$CRB= 000124   	R$$JPO= 000000   	T$$GMC= 000000   	V$$TLM= 000205E$$PER= 000000   	M$$CRX= 000000   	R$$JP1= 000003   	T$$GTS= 000000   	V$$TRM= 000000E$$XPR= 000000   	M$$EXT= 000000   	R$$LKL= 000001   	T$$HLD= 000000   	X$$M11= 000002FAILED  000360R  	M$$FCS= 000000   	R$$MOF= 000000   	T$$J16= 000003   	$CXDBL= ****** GXF$$LPP= 000000   	M$$K11= 000000   	R$$MPL= 000000   	T$$KMG= 000000   	$$$R4 = 000000F$$LVL= 000001   	M$$MGE= 000000   	R$$M11= 000003   	T$$LWC=   æ    000000. ABS.	000000	   000      	001124	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  3132 WORDS  ( 13 PAGES)DYNAMIC MEMORY:  4036 WORDS  ( 15 PAGES)ELAPSED TIME:  00:00:23TST34,TST34.LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,TST34æ          {Lv~ÌÁ› 8$À+     PRINT DEMOPR.CMDPRINT DEMOPR.ODLPRINT DEMOPR.MAPPRINT DEMOPR.LSTPRINT MISC.LSTPRINT QUESUM.LSTPRINT MEMSUM.LSTPRINT APPSUM.LSTPRINT DSKSUM.LSTPRINT MSG34.LSTPRINT TST34.LSTPRINT TRAN34.LSTPRINT HELP.LSTPRINT MEMINI.LSTPRINT MEM2.LSTPRINT MEMOUT.LSTPRINT HRDCPY.LST         Rz^Á› 8$         zˆt    tŽ€»   ¯”L  ŒAh)@  avL@   shU<@  €#@  €a@  p@  s<}@   t@  ¤ªs@  ó«F@      (ü RzhT  ¯”             Y1 'TASKS:Y2 *ACTIVE:     Y3 *MEMORY:    KY4 -OUT:  :  : Y5 *MEMORY:    K        7
ôÿ7
òÿ7
ðÿ ` 7
îÿþˆ² Ã  Ä  ó  ó5   
² ó«Ft
tt€# |   ö÷   óÄ  &  ŽŽ
Žó5    ·
®ÿ·e s<}
¤ªspshU<€a s<} ¢ ¨ÿã·
¨ÿ·e¢ÿÞ‡ À Á”ÿ÷	  À6 ÁŒÿ÷	  ŒAh)"6  È   À( Ázÿ
÷	  ÀF Ájÿ
    :   ŒAh)( ŒAh)F  î ÷	  Ã  ÷	  ‡  ŒAh)
  avL  :          RzNÁ› 8$        SUMRY2 -TASK MEMORY USAGE-	MACRO M1110  14-FEB-79 13:16TABLE OF CONTENTS     4-    2	INITIALIZATIONS - ASCII DISPLAY STRINGS     5-   45	DISPLAY TASKS IN AND OUT OF MEMORY WITH MEMORY USAGESUMRY2 -TASK MEMORY USAGE-	MACRO M1110  14-FEB-79 13:16  PAGE 4      1						.TITLE	SUMRY2 -TASK MEMORY USAGE-      2						.SBTTL	INITIALIZATIONS - ASCII DISPLAY STRINGS      3      4      5						.MCALL	SWITCH$      6      7      8		000033 				ESC=	33      9		000131 				CD=	131     10		000112 				ES=	112     11     12			      		;     13					; TASK MEMORY USAGE     14					;     15     16	000000	   033 	   131 	   061 	TSKLOC:	.ASCII	<ESC><CD><31.+18.><0><31.+8.>	000003	   000 	   047     17	000005	   124 	   101 	   123 		.ASCII	/TASKS:/	000010	   113 	   123 	   072     18     19	000013	   033 	   131 	   062 		.ASCII	<ESC><CD><31.+19.><0><31.+11.>	000016	   000 	   052     20	000020	   101 	   103 	   124 		.ASCII	/ACTIVE:/	000023	   111 	   126 	   105	000026	   072     21						.EVEN     22	000030				TSK.AC:	.BLKW	2     23           24	000034	   033 	   131 	   063 		.ASCII	<ESC><CD><31.+20.><0><31.+11.>	000037	   000 	   052     25	000041	   115 	   105 	   115 		.ASCII	/MEMORY:/	000044	   117 	   122 	   131	000047	   072     26						.EVEN     27	000050	   040 	   040 	   040 	TSK.M1:	.ASCII	/    K/	000053	   040 	   113     28     29	000055	   033 	   131 	   064 		.ASCII	<ESC><CD><31.+21.><0><31.+14.>	000060	   000 	   055     30	000062	   117 	   125 	   124 		.ASCII	/OUT:/	000065	   072     31						.EVEN     32	000066				TSK.OU:      	.BLKW	2     33     34     35	000072	   033 	   131 	   065 		.ASCII	<ESC><CD><31.+22.><0><31.+11.>	000075	   000 	   052     36	000077	   115 	   105 	   115 		.ASCII	/MEMORY:/	000102	   117 	   122 	   131	000105	   072     37						.EVEN     38	000106	   040 	   040 	   040 	TSK.M2:	.ASCII	/    K/	000111	   040 	   113     39     40	000113	   001 				.BYTE 1     41						.EVEN     42SUMRY2 -TASK MEMORY USAGE-	MACRO M1110  14-FEB-79 13:16  PAGE 4-1INITIALIZATIONS - ASCII DISPLAY STRINGS     43SUMRY2 -TASK       MEMORY USAGE-	MACRO M1110  14-FEB-79 13:16  PAGE 5DISPLAY TASKS IN AND OUT OF MEMORY WITH MEMORY USAGE     45						.SBTTL	DISPLAY TASKS IN AND OUT OF MEMORY WITH MEMORY USAGE     46     47     48					;     49					; DISPLAY THE NUMBER OF ACTIVE TASKS OUT OF MEMORY AND THEIR TOTAL     50					; SIZE, AND THE NUMBER OF TASKS IN MEMORY WITH THEIR TOTAL SIZE.     51					;     52     53     54	000114	000000 			INM:	.WORD	0     55	000116	000000 			INN:	.WORD	0     56	000120	000000 			OUTM:	.WORD	0     57	000122	00      0000 			OUTN:	.WORD	0     58     59     60     61	000124				MEMSUM::     62     63     64					;     65					; INITIALIZE THE COUNTERS     66					;     67     68	000124	005067 	177764 			CLR	INM		;MEMORY FOR IN TASKS     69	000130	005067 	177762 			CLR	INN		;NUMBER OF TASKS IN     70	000134	005067 	177760 			CLR	OUTM		;MEMORY FOR TASKS OUT     71	000140	005067 	177756 			CLR	OUTN		;NUMBER OF TASKS OUT     72					;     73					; NOW SCAN TASK LIST AND LOOK FOR ACTIVE TASKS     74					;     75	000144					SWITCH$      	40$		;SWITCH TO SYSTEM STATE     76	000150	012703 	000000C			MOV	#$TSKHD-T.TCBL,R3 ;FIRST POINTER     77	000154	010304 			10$:	MOV	R3,R4		;SET UP FOR NEXT TCB     78	000156	016403 	000000G			MOV	T.TCBL(R4),R3	;GET NEXT TCB ADDRESS     79	000162	005763 	000000G			TST	T.TCBL(R3)	;IS IT THE NULL TASK?     80	000166	001434 				BEQ	30$		;IF EQ YES     81	000170	032763 	000000G	000000G		BIT	#TS.EXE,T.STAT(R3) ;IS TASK NOT ACTIVE     82	000176	001366 				BNE	10$		;IF NE YES     83	000200	020367 	000000G			CMP	R3,      $LDRPT	;IS IT LOADR     84	000204	001763 				BEQ	10$		;IF EQ YES, SKIP IT     85	000206	016304 	000000G			MOV	T.PCB(R3),R4	;GET PCB ADDRESS     86	000212	016446 	000000G			MOV	P.SIZE(R4),-(SP)     87     88     89	000216	006216 				ASR	(SP)		;MAKE IT 64.WORD UNIT     90	000220	005216 				INC	(SP)		;ROUND IT UP A LITTLE     91	000222	006216 				ASR	(SP)		;NOW 128. WORD UNITS     92	000224	032763 	000000G	000000G		BIT	#TS.OUT,T.STAT(R3) ;IS IT IN MEMORY     93	000232	001005 				BNE	20$		;IF NE NO     94     9      5					;     96					; TASK IS IN MEMORY     97					;     98     99	000234	005267 	177656 			INC	INN		;ONE MORE TASK IN MEMORY    100	000240	062667 	177650 			ADD	(SP)+,INM	;MORE MEMORY IN 128. WORD UNITS    101	000244	000743 				BR	10$		;GO BACK FOR MORESUMRY2 -TASK MEMORY USAGE-	MACRO M1110  14-FEB-79 13:16  PAGE 5-1DISPLAY TASKS IN AND OUT OF MEMORY WITH MEMORY USAGE    102    103					;    104					; TASK IS NOT IN MEMORY    105					;    106    107	000246	005267 	177650 		20$:	INC	OUTN		;MORE OUT OF MEMORY          108	000252	062667 	177642 			ADD	(SP)+,OUTM	;MORE MEMORY    109	000256	000736 				BR	10$		;GO BACK FOR MORE    110    111	000260				30$:	RETURN			;NO MORE LEFT TO DO -- FOUND NULL    112									;TASK    113    114    115    116					;    117					; HERE WE ARE OUT OF SYSTEM STATE. WE WILL CONVERT THE NUMBERS JUST    118					; OBTAINED TO ASCII AND RIGHT JUSTIFY THEM IN OUR OUTPUT FIELD    119					;    120    121    122	000262	012700 	000030'		40$:	MOV	#TSK.AC,R0	;LOCATION FOR NUMBER OF IN TASKS    123	00      0266	016701 	177624 			MOV	INN,R1		;NUMBER OF IN TASKS    124	000272					CALL	JSTFY		;CONVERT TO ASCII-AND JUSTIFY    125    126	000276	012700 	000066'			MOV	#TSK.OU,R0	;LOCATION FOR NUMBER OF OUT TASKS    127	000302	016701 	177614 			MOV	OUTN,R1		;NUMBER OF OUT TASKS    128	000306					CALL	JSTFY		;CONVERT TO ASCII-AND JUSTIFY    129    130	000312	012700 	000050'			MOV	#TSK.M1,R0	;LOCATION FOR MEMORY USAGE OF IN TASKS    131	000316	016701 	177572 			MOV	INM,R1		;THE AMOUNT OF MEMORY IN 128. WORD    132					      				;UNITS    133	000322	006201 				ASR	R1		;256 WORD UNITS    134	000324	006201 				ASR	R1		;512 WORD UNITS    135	000326	005201 				INC	R1		;SORT OF ROUND    136	000330	006201 				ASR	R1		;1024 WORD UNITS    137	000332					CALL	JSTFY    138    139	000336	012700 	000106'			MOV	#TSK.M2,R0	;LOCATION FOR MEMORY USAGE OF OUT TASKS    140	000342	016701 	177552 			MOV	OUTM,R1		;MEMORY FOR OUT TASKS    141	000346	006201 				ASR	R1		;256 WORD UNITS    142	000350	006201 				ASR	R1		;512 WORD UNITS    143	000352	005      201 				INC	R1		;SORT OF ROUNTD    144	000354	006201 				ASR	R1		;1024 WORD UNITS    145	000356					CALL	JSTFY    146    147    148	000362	012703 	000000'			MOV	#TSKLOC,R3	;POINT TO OUTPUT PACKET    149	000366					CALL	OUTLIN		;OUTPUT MEMORY USAGE    150	000372					RETURN    151		000001 				.ENDSUMRY2 -TASK MEMORY USAGE-	MACRO M1110  14-FEB-79 13:16  PAGE 5-2SYMBOL TABLEA$$CHK= 000000   	G$$TPP= 000000   	M$$EXT= 000000   	R$$H11= 000003   	T$$GMC= 000000A$$CPS= 000000   	G$$TTK= 000000   	M$$FCS= 000000         	R$$JPO= 000000   	T$$GTS= 000000A$$NSI= 000000   	H$$RTZ= 000074   	M$$K11= 000000   	R$$JP1= 000003   	T$$HLD= 000000A$$PRI= 000000   	INM     000114R  	M$$MGE= 000000   	R$$LKL= 000001   	T$$J16= 000003A$$TRP= 000000   	INN     000116R  	M$$MUP= 000000   	R$$MOF= 000000   	T$$KMG= 000000CD    = 000131   	I$$RAR= 000000   	M$$NET= 000000   	R$$MPL= 000000   	T$$LWC= 000000C$$CDA= 000002   	I$$RDN= 000000   	M$$OVR= 000000   	R$$M11= 000003   	T$$PS = 000000C$$CKP= 000000   	JSTFY = ****** GX	M$$XLN= 0004      00   	R$$NDC= 000006   	T$$RAX= 000000C$$CSR= 177440   	K$$CNT= 177546   	N$$CON= 000500   	R$$NDH= 000226   	T$$RNE= 000000C$$LIS= 000000   	K$$CSR= 177546   	N$$LDV= 000001   	R$$NDL= 000001   	T$$RPR= 000000C$$ORE= 002000   	K$$IEN= 000115   	N$$MOV= 000011   	R$$SND= 000000   	T$$RST= 000000C$$RSH= 177564   	K$$LDC= 000001   	N$$MXM= 001100   	R$$STP= 000000   	T$$RUB= 000000C$$RUN= 000000   	K$$TPS= 000074   	N$$TMO= 000012   	R$$11M= 000000   	T$$SMC= 000000C$$XDB= 000000   	LD$DB = 000000   	N$$UMR=       000024   	S$$ECC= 000000   	T$$SYN= 000000D$$IAG= 000000   	LD$DR = 000000   	OUTLIN= ****** GX	S$$WPC= 000036   	T$$TRW= 000000D$$ISK= 000000   	LD$LP = 000000   	OUTM    000120R  	S$$WPR= 000005   	T$$UTB= 000000D$$L11= 000001   	LD$MM = 000000   	OUTN    000122R  	S$$YSZ= 050000   	T$$VBF= 000000D$$SHF= 000000   	LD$NT = 000000   	OV$DB = 000000   	TSKLOC  000000R  	T$$ZAN= 000300D$$WCK= 000000   	LD$RH = 000000   	OV$DR = 000000   	TSK.AC  000030R  	T$$18S= 000000D$$YNC= 000000   	LD$TT = 000000   	O$$L      AP= 000000   	TSK.M1  000050R  	T.PCB = ****** GXD$$YNM= 000000   	LD$VT = 000000   	P$$D70= 000000   	TSK.M2  000106R  	T.STAT= ****** GXD$$ZMD= 000000   	LD$XM = 000000   	P$$LAS= 000000   	TSK.OU  000066R  	T.TCBL= ****** GXD$$Z11= 000004   	L$$ASG= 000000   	P$$OFF= 000000   	TS.EXE= ****** GX	V$$CTR= 001000ES    = 000112   	L$$DRV= 000000   	P$$RFL= 000000   	TS.OUT= ****** GX	V$$TLD= 000120ESC   = 000033   	L$$LDR= 000000   	P$$RTY= 000000   	T$$ACR= 000000   	V$$TLM= 000205E$$DVC= 000000   	L$$PTO= 0      00037   	P$$TPT= 000000   	T$$BTW= 000000   	V$$TRM= 000000E$$NSI= 000000   	L$$P11= 000001   	P.SIZE= ****** GX	T$$BUF= 000000   	X$$M11= 000002E$$PER= 000000   	L$$11R= 000000   	Q$$OPT= 000017   	T$$CCA= 000000   	$LDRPT= ****** GXE$$XPR= 000000   	MEMSUM  000124RG 	R$$DSP= 000000   	T$$CCO= 000000   	$TSKHD= ****** GXF$$LPP= 000000   	M$$CRB= 000124   	R$$EXV= 000000   	T$$CTR= 000000   	$$$R4 = 000000F$$LVL= 000001   	M$$CRX= 000000   	R$$HDV= 000000   	T$$ESC= 000000. ABS.	000000	   000      	000374	    À     001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  2559 WORDS  ( 10 PAGES)DYNAMIC MEMORY:  2980 WORDS  ( 11 PAGES)ELAPSED TIME:  00:00:17MEMSUM,MEMSUM.LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,MEMSUM À          RakQÁ› 8$        	.TITLE	GENERATION MODULE FOR MEMORY UTILIZATION DISPLAY	.SBTTL	ASCII CODE,VARIABLES AND INITIALIZATIONS	.NLIST	BEX	ESC=33	CD=131	ES=112	HO=110	EL=113LARROW:	.BYTE	0RARROW:	.BYTE	0BODY:	.WORD	0POS:	.ASCIZ	<ESC><CD><31.+7.><0><31.+7.>BUF:	.BLKW	32.END:	.BYTE	1,1ARROW:	.BLKW	64.BUFFER:	.BLKW	384.;; MACRO TO CONVERT MEMORY 32. WORD UNITS IN ARG INTO; SCREEN SPACES IN THE X-DIMENSION.;	.MACRO	CNVR	ARG,?A	ADD	SYSRND,ARG	MOV	SYSHFT,SYSTMPA:	ASR	ARG	DEC	SYSTMP	BNE	A	.ENDM	MEMOUT::;; CLEAR SCREEN:;	MOV	#14.,R0		;14       LINES TO CLEAR	MOV	#ARROW,R1	;POINT TO BUFFER AREA5$:	MOV	#32.,R2		;32 WORDS TO CLEAR10$:	MOV	#"  ,(R1)+	;CLEAR 2 SCREEN SPACES	SOB	R2,10$		;ARE WE AT THE END OF THE LINE	SOB	R0,5$		;DID WE PROCESS 14 LINES	.PAGE	.SBTTL	PUT TOGETHER AND DISPLAY ARROWS	TST	COUNT		;ARE THERE ANY OBJECTS BEING DISPLAYED?	BNE	1$		;IF NE - YES	RETURN1$:	CMP	#1,COUNT	;IS THERE ONLY ONE OBJECT?	BEQ	2$		;YES - NO NEED TO CALL SORT	CALL	SORT		;SORT TABLE IN ASCENDING ORDER2$:	MOV	#TABLE,R5	;POINT TO OUR TABLE	MOV	COUNT,R3	;KEEP TRA      CK OF HOW MANY OBJECTS ARE BEING DISPLAYED;; BUILD ARROW:;LOOP:	MOV	(R5),R0		;LETS FIND OUT IF THERE IS ENOUGH ROOM				;TO DISPLAY ENTIRE TASK (IF NOT SKIP IT)	ADD	2(R5),R0	CNVR	R0	CMP	#128.,R0	;WOULD IT GO OFF THE SCREEN?	BGT	1$		;IF GT - NO	JMP	20$		;WE ARE FINISHED (SINCE TABLE IS SORTED IN				;ASCENDING ORDER)1$:	MOVB	#'[,LARROW	;ASSUME DEFAULTS	MOVB	#'],RARROW	MOVB	#'-,BODY	BITB	#2,12(R5)	;IF SET THEN WE WANT SPECIAL ARROWS	BEQ	5$	MOVB	#'<,LARROW	MOVB	#'>,RARROW5$:	BITB	#1,12(R5)	;IF SET THEN WANT SPEC      IAL ARROWS	BEQ	6$	MOVB	#'(,LARROW	MOVB	#'),RARROW6$:	BITB	#4,12(R5)	;IF SET WANT SPECIAL BODY	BEQ	10$	MOVB	#'=,BODY10$:	MOV	#ARROW,R0	;POINT TO BEGINNING OF BUFFER	MOV	(R5),R4		;GET STARTING ADDRESS OF TASK	CNVR	R4		;CONVERT IT TO MEMORY SPACES	ADD	R4,R0		;ADD DISTANCE TO START OF TASK	CMPB	#' ,(R0)	;IS ANYONE OCCUPYING THIS SPACE?	BEQ	13$		;IF EQ - NO	INC	R0	BR	14$13$:	MOVB	LARROW,(R0)+	;INSERT LEFT END OF ARROW14$:	MOV	2(R5),R1	;GET SIZE OF TASK	CNVR	R1		;CONVERT IT TO MEMORY SPACES15$:	DEC	R1		;ALREADY I      NSERTED ONE SPACE	BLE	16$		;FINISHED THIS ARROW	MOVB	BODY,(R0)+	;INSERT PART OF ARROW BODY	BR	15$16$:	MOVB	RARROW,-(R0)	;INSERT RIGHT END OF ARROW;; DISPLAY TASK NAME:;	MOV	2(R5),R1	;GET SIZE OF TASK	CNVR	R1	ASR	R1		;DIVIDE BY TWO TO FIND MIDPOINT	MOV	(R5),R4		;GET STARTING ADDRESS OF TASK	CNVR	R4	ADD	R4,R1		;ADD STARTING ADDRESS AND MIDPOINT TO GET				;COLUMN	NO. WHERE TASK NAME IS TO BE INSERTED	MOV	4(R5),TEMP	;COPY TASK NAME INTO TEMPORARY LOCATION	MOV	6(R5),TEMP+2	MOV	10(R5),TEMP+4	CALL	OUTVER		;INSERT       TASK NAME INTO DISPLAY	ADD	#14,R5		;POINT TO NEXT TABLE ENTRY	DEC	COUNT		;ONE LESS ENTRY TO LOOK AT	BEQ	20$	JMP	LOOP;; INSERT MEMORY FENCE:;20$:	MOV	#"::,TEMP	;MEMORY MARKER	MOV	#"::,TEMP+2	MOV	#"::,TEMP+4	MOV	MEMSIZ,R1	;GET MEMORY SIZE	CNVR 	R1		;CONVERT TO MEMORY SPACES	TST	MEMHLF		;ARE WE DISPLAYING HALF OF MEMORY?	BEQ	21$		;IF EQ - NO	ASL	R1		;MEMORY SIZE IS TWICE AS BIG	CMP	#128.,R1	;IS FENCE GOING TO BE OFF THE SCREEN?	BLE	21$		;IF LE - YES	CALL	OUTVER		;INSERT FENCE;; OUTPUT DISPLAY:;21$:	MOVB	#31.+7      .,POS+2	;MOV CURSOR TO TOP DISPLAY LINE	MOV	#ARROW,R0	;POINT R0 TO ARROW DISPLAY LINE	CALL	DISHLF		;DISPLAY FIRST HALF OF MEMORY	MOVB	#31.+17.,POS+2	;MOVE CURSOR TO TOP OF SECOND HALF OF DISPLAY	MOV	#ARROW+64.,R0	CALL	DISHLF		;DISPLAY SECOND HALF OF MEMORY	RETURN			;FINISHED	.PAGE	.SBTTL	MISCELLANEOUS ROUTINES;; **-OUTVER-ROUTINE THAT VERTICALLY OUTPUTS A SIX CHARACTER NAME;           TO THE SCREEN;; INPUTS: ;;	TEMP=ADDRESS OF FIRST CHARACTER TO BE DISPLAYED;;	R1 =COLUMN NUMBER THAT NAME SHOULD BE OUTPUT ON      ;OUTVER:	MOV	#TEMP,R0	;POINT TO TASK NAME	MOV	#6,R2		;6 CHARACTERS TO DISPLAY	ADD	#BUFFER,R1	;POINTING TO LOCATION OF FIRST CHARACTER5$:	MOVB	(R0)+,(R1)	;INSERT CHARACTER	ADD	#128.,R1	;POINT TO NEXT CHARACTER	SOB	R2,5$		;COUNT DOWN	RETURN;; **-DISHLF-DISPLAYS EITHER TOP OR BOTTOM HALF OF MEMORY DISPLAY;; INPUTS:;;	R0 POINTS TO AREA OF BUFFER TO BE DISPLAYED;DISHLF:	CALL	MOVLIN		;MOVE ONE LINE OF DISPLAY TO OUTPUT AREA	MOV	#POS,R3	CALL	OUTLIN	MOV	#6,R1		;SIX DISPLAY LINES TO FOLLOW10$:	ADD	#64.,R0		;SKIP THE       OTHER HALF OF THE DISPLAY	CALL	MOVLIN		;MOVE ANOTHER LINE	INC	POS+2		;POINT CURSOR TO NEXT LINE	MOV	#POS,R3	CALL	OUTLIN		;DISPLAY ANOTHER LINE	SOB	R1,10$		;IF NE - NOT FINISHED WITH THE 6 LINES	RETURN;; **-MOVLIN-COPIES ONE LINE OF DISPLAY TO OUTPUT BUFFER;MOVLIN:	MOV	#BUF,R2		;POINT TO BEGINNING OF OUTPUT BUFFER	MOV	#32.,R3		;32 WORDS TO MOVE5$:	MOV	(R0)+,(R2)+	;MOVE 2 CHARACTERS	SOB	R3,5$		;COUNT DOWN TO END OF LINE	RETURN	.PAGE	.SBTTL	SORT TABLE ROUTINE;; **-SORT-SORT TSTS IN ORDER OF STARTING ADDRESS;T      EMP:	.BLKW	6SRTFLG:	.WORD	0SORT:	MOV	#TABLE,R0	;INITIALIZE POINTERS TO FIRST TWO TABLE ELEMENTS	MOV	#TABLE+14,R1	MOV	COUNT,R2	DEC	R2		;WANT TO LOOP ONE LESS THAN NUMBER OF ITEMS5$:	CMP	(R0),(R1)	;COMPARE TST STARTING ADDRESSES	BLE	10$		;IF LE - THEN TWO ENTRIES ALREADY IN ORDER	MOV	(R1),TEMP	;SWITCH THE TWO TABLE ENTRIES	MOV	2(R1),TEMP+2	MOV	4(R1),TEMP+4	MOV	6(R1),TEMP+6	MOV	10(R1),TEMP+10	MOV	12(R1),TEMP+12	MOV	(R0),(R1)	MOV	2(R0),2(R1)	MOV	4(R0),4(R1)	MOV	6(R0),6(R1)	MOV	10(R0),10(R1)	MOV	12(R0),12(R1)	MO   ˜  V	TEMP,(R0)	MOV	TEMP+2,2(R0)	MOV	TEMP+4,4(R0)	MOV	TEMP+6,6(R0)	MOV	TEMP+10,10(R0)	MOV	TEMP+12,12(R0)	INC	SRTFLG		;KEEP TRACK OF WHETHER ANY CHANGES WERE MADE10$:	MOV	R1,R0		;MOVE DOWN TO NEXT TRANSACTION NAME	ADD	#14,R1	SOB	R2,5$		;HAVE WE REACHED THE END OF THE TABLE?	TST	SRTFLG		;HAS ANY RE-ARRANGING BEEN DONE?	BEQ	99$		;IF EQ NO CHANGES WERE MADE AND WE ARE FINISHED	CLR	SRTFLG	JMP	SORT99$:	RETURN	.END ˜         Ra^Á› 8$         –,"    tŽ€»   ¯”L  - Z@  Ræ3@   RBx@  avL@  »z3@  »z´r@  »z@   *}ÈK@      (TRahÌ¯”                 Y& &   J  J   Ì ÌÀ ÁL Â  Ñ  Â
üÀ
ø÷  ‡ ÷%    
L - Z(- Z ò÷	ÈÅ  Ã  @@m Àm  ÷    €÷
  ü *}ÈK- Z»z´r»z3 »z&»z À%€ w æ ÷•[ Øû÷•] Óû÷•- Îûõµ 
 ÷• >< ¾û÷•> ¹ûõµ 
 ÷•( ªû÷•) ¥ûõµ 
  d÷•= ˜ûÀL DÄm  ÷    „÷
  ü aÈ¥   L »z´r»z3»z»z Š€
ÐnûA Ám  ÷    ÷
  üÁ
ÐRû »z´r»z      3»z»z °ûàKûA Ám  ÷    ÷
  üDÄm  ÷ »z´r»z3»z»z&»z´r Ö    „÷
  üaw È w Ä w À ÷	f Åe »z3»z»z ü ÷
  w øþ÷::¤ ÷::  ÷::œ Á  Ám   - Z$RBx(»z´r "÷    ÷
  ü÷  ÁÁ%€ ÷	 ÷•& ¾ú »z3»z»zRæ3 HÀL ÷	( ÷•0 °úÀŒ ÷	 ‡ À²Â ÁeÌ 	” L Œ ²&Ì  nÁe€ Â
û‡ ÷	& Ã ÷	  Á Àe@ ÷	 ·
rú  avL ”Ã ÷	  Á
ô‡ Â
 Ã  Ã
ý‡   
avL
  ¾ ¾  À  Á Â  Â
	"4wÜÿw Øÿw Ôÿw *}ÈK*}ÈK - Z   ~    ä Ðÿw Ìÿw
 Èÿ	1  1  1  1 
  1
 
 Èšÿð˜ÿ ð”ÿ ðÿ ðŒÿ  0ðˆÿ
 ·
„ÿ@Áe Â
Å÷vÿ7
pÿw nÿ‡  ~          RaNÁ› 8$        GENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44TABLE OF CONTENTS     4-    2	ASCII CODE,VARIABLES AND INITIALIZATIONS     5-   69	PUT TOGETHER AND DISPLAY ARROWS     6-  233	MISCELLANEOUS ROUTINES     7-  308	SORT TABLE ROUTINEGENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 4      1						.TITLE	GENERATION MODULE FOR MEMORY UTILIZATION DISPLAY      2						.SBTTL	ASCII CODE,VARIABLES AND INITIALIZATIONS      3						.NLIST	BEX      4      5      6      7		000033 				ESC=33            8		000131 				CD=131      9		000112 				ES=112     10		000110 				HO=110     11		000113 				EL=113     12     13	000000	   000 			LARROW:	.BYTE	0     14	000001	   000 			RARROW:	.BYTE	0     15	000002	000000 			BODY:	.WORD	0     16     17     18	000004	   033 	   131 	   046 	POS:	.ASCIZ	<ESC><CD><31.+7.><0><31.+7.>     19	000012				BUF:	.BLKW	32.     20     21	000112	   001 	   001 		END:	.BYTE	1,1     22     23	000114				ARROW:	.BLKW	64.     24     25	000314				BUFFER:	.BLKW	384.     26     27     28           29     30					;     31					; MACRO TO CONVERT MEMORY 32. WORD UNITS IN ARG INTO     32					; SCREEN SPACES IN THE X-DIMENSION.     33					;     34     35						.MACRO	CNVR	ARG,?A     36     37						ADD	SYSRND,ARG     38						MOV	SYSHFT,SYSTMP     39     40					A:	ASR	ARG     41						DEC	SYSTMP     42						BNE	A     43						.ENDM     44     45     46     47     48	001714				MEMOUT::     49     50     51					;     52					; CLEAR SCREEN:     53					;     54     55	001714	012700 	000016 			MOV	#14.,R0		;14 LINE      S TO CLEAR     56	001720	012701 	000114'			MOV	#ARROW,R1	;POINT TO BUFFER AREA     57GENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 4-1ASCII CODE,VARIABLES AND INITIALIZATIONS     58	001724	012702 	000040 		5$:	MOV	#32.,R2		;32 WORDS TO CLEAR     59     60	001730	012721 	020040 		10$:	MOV	#"  ,(R1)+	;CLEAR 2 SCREEN SPACES     61	001734					SOB	R2,10$		;ARE WE AT THE END OF THE LINE     62     63	001740					SOB	R0,5$		;DID WE PROCESS 14 LINES     64     65     66     67GENERATION MODULE       FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 5PUT TOGETHER AND DISPLAY ARROWS     69						.SBTTL	PUT TOGETHER AND DISPLAY ARROWS     70     71     72	001744	005767 	000000G			TST	COUNT		;ARE THERE ANY OBJECTS BEING DISPLAYED?     73	001750	001001 				BNE	1$		;IF NE - YES     74     75	001752					RETURN     76     77	001754	022767 	000001 	000000G	1$:	CMP	#1,COUNT	;IS THERE ONLY ONE OBJECT?     78	001762	001402 				BEQ	2$		;YES - NO NEED TO CALL SORT     79     80	001764					CALL	SORT		;SORT TABLE IN AS      CENDING ORDER     81     82     83	001770	012705 	000000G		2$:	MOV	#TABLE,R5	;POINT TO OUR TABLE     84	001774	016703 	000000G			MOV	COUNT,R3	;KEEP TRACK OF HOW MANY OBJECTS ARE BEING DISPLAYED     85     86     87					;     88					; BUILD ARROW:     89					;     90     91     92	002000				LOOP:     93     94	002000	011500 				MOV	(R5),R0		;LETS FIND OUT IF THERE IS ENOUGH ROOM     95									;TO DISPLAY ENTIRE TASK (IF NOT SKIP IT)     96     97	002002	066500 	000002 			ADD	2(R5),R0     98	002006					CNVR	      R0     99	002030	022700 	000200 			CMP	#128.,R0	;WOULD IT GO OFF THE SCREEN?    100	002034	003002 				BGT	1$		;IF GT - NO    101    102	002036	000167 	000346 			JMP	20$		;WE ARE FINISHED (SINCE TABLE IS SORTED IN    103									;ASCENDING ORDER)    104    105	002042	112767 	000133 	175730 	1$:	MOVB	#'[,LARROW	;ASSUME DEFAULTS    106	002050	112767 	000135 	175723 		MOVB	#'],RARROW    107	002056	112767 	000055 	175716 		MOVB	#'-,BODY    108    109	002064	132765 	000002 	000012 		BITB	#2,12(R5)	;IF SET THEN WE       WANT SPECIAL ARROWS    110	002072	001406 				BEQ	5$    111    112	002074	112767 	000074 	175676 		MOVB	#'<,LARROW    113	002102	112767 	000076 	175671 		MOVB	#'>,RARROW    114    115	002110	132765 	000001 	000012 	5$:	BITB	#1,12(R5)	;IF SET THEN WANT SPECIAL ARROWS    116	002116	001406 				BEQ	6$    117    118	002120	112767 	000050 	175652 		MOVB	#'(,LARROW    119	002126	112767 	000051 	175645 		MOVB	#'),RARROW    120    121    122	002134	132765 	000004 	000012 	6$:	BITB	#4,12(R5)	;IF SET WANT SPECIAL BODY          123	002142	001403 				BEQ	10$    124    125	002144	112767 	000075 	175630 		MOVB	#'=,BODYGENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 5-1PUT TOGETHER AND DISPLAY ARROWS    126    127    128	002152	012700 	000114'		10$:	MOV	#ARROW,R0	;POINT TO BEGINNING OF BUFFER    129	002156	011504 				MOV	(R5),R4		;GET STARTING ADDRESS OF TASK    130	002160					CNVR	R4		;CONVERT IT TO MEMORY SPACES    131	002202	060400 				ADD	R4,R0		;ADD DISTANCE TO START OF TASK    132    133	002204	122710 	00      0040 			CMPB	#' ,(R0)	;IS ANYONE OCCUPYING THIS SPACE?    134	002210	001402 				BEQ	13$		;IF EQ - NO    135    136	002212	005200 				INC	R0    137	002214	000402 				BR	14$    138    139	002216	116720 	175556 		13$:	MOVB	LARROW,(R0)+	;INSERT LEFT END OF ARROW    140    141	002222	016501 	000002 		14$:	MOV	2(R5),R1	;GET SIZE OF TASK    142	002226					CNVR	R1		;CONVERT IT TO MEMORY SPACES    143    144	002250	005301 			15$:	DEC	R1		;ALREADY INSERTED ONE SPACE    145	002252	003403 				BLE	16$		;FINISHED THIS AR      ROW    146    147	002254	116720 	175522 			MOVB	BODY,(R0)+	;INSERT PART OF ARROW BODY    148	002260	000773 				BR	15$    149    150    151	002262	116740 	175513 		16$:	MOVB	RARROW,-(R0)	;INSERT RIGHT END OF ARROW    152    153    154    155					;    156					; DISPLAY TASK NAME:    157					;    158    159    160	002266	016501 	000002 			MOV	2(R5),R1	;GET SIZE OF TASK    161	002272					CNVR	R1    162    163	002314	006201 				ASR	R1		;DIVIDE BY TWO TO FIND MIDPOINT    164    165	002316	011504 				MOV	(R5),R4		      ;GET STARTING ADDRESS OF TASK    166    167	002320					CNVR	R4    168    169	002342	060401 				ADD	R4,R1		;ADD STARTING ADDRESS AND MIDPOINT TO GET    170									;COLUMN	NO. WHERE TASK NAME IS TO BE INSERTED    171    172    173	002344	016567 	000004 	000310 		MOV	4(R5),TEMP	;COPY TASK NAME INTO TEMPORARY LOCATION    174	002352	016567 	000006 	000304 		MOV	6(R5),TEMP+2    175	002360	016567 	000010 	000300 		MOV	10(R5),TEMP+4    176    177    178	002366					CALL	OUTVER		;INSERT TASK NAME INTO DISPLAY    179          180	002372	062705 	000014 			ADD	#14,R5		;POINT TO NEXT TABLE ENTRY    181    182	002376	005367 	000000G			DEC	COUNT		;ONE LESS ENTRY TO LOOK ATGENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 5-2PUT TOGETHER AND DISPLAY ARROWS    183    184	002402	001402 				BEQ	20$    185    186    187	002404	000167 	177370 			JMP	LOOP    188    189    190    191					;    192					; INSERT MEMORY FENCE:    193					;    194    195    196	002410	012767 	035072 	000244 	20$:	MOV	#"::,TEMP	;MEMORY MARKER          197	002416	012767 	035072 	000240 		MOV	#"::,TEMP+2    198	002424	012767 	035072 	000234 		MOV	#"::,TEMP+4    199    200    201	002432	016701 	000000G			MOV	MEMSIZ,R1	;GET MEMORY SIZE    202	002436					CNVR 	R1		;CONVERT TO MEMORY SPACES    203    204	002460	005767 	000000G			TST	MEMHLF		;ARE WE DISPLAYING HALF OF MEMORY?    205	002464	001406 				BEQ	21$		;IF EQ - NO    206    207	002466	006301 				ASL	R1		;MEMORY SIZE IS TWICE AS BIG    208	002470	022701 	000200 			CMP	#128.,R1	;IS FENCE GOING TO BE OF      F THE SCREEN?    209	002474	003402 				BLE	21$		;IF LE - YES    210    211	002476					CALL	OUTVER		;INSERT FENCE    212    213    214    215					;    216					; OUTPUT DISPLAY:    217					;    218    219	002502	112767 	000046 	175276 	21$:	MOVB	#31.+7.,POS+2	;MOV CURSOR TO TOP DISPLAY LINE    220	002510	012700 	000114'			MOV	#ARROW,R0	;POINT R0 TO ARROW DISPLAY LINE    221    222	002514					CALL	DISHLF		;DISPLAY FIRST HALF OF MEMORY    223    224	002520	112767 	000060 	175260 		MOVB	#31.+17.,POS+2	;MOVE CURS      OR TO TOP OF SECOND HALF OF DISPLAY    225	002526	012700 	000214'			MOV	#ARROW+64.,R0    226    227	002532					CALL	DISHLF		;DISPLAY SECOND HALF OF MEMORY    228    229	002536					RETURN			;FINISHED    230    231GENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 6MISCELLANEOUS ROUTINES    233						.SBTTL	MISCELLANEOUS ROUTINES    234    235    236					;    237					; **-OUTVER-ROUTINE THAT VERTICALLY OUTPUTS A SIX CHARACTER NAME    238					;           TO THE SCREEN    239					;    240					;       INPUTS:    241					;    242					;	TEMP=ADDRESS OF FIRST CHARACTER TO BE DISPLAYED    243					;    244					;	R1 =COLUMN NUMBER THAT NAME SHOULD BE OUTPUT ON    245					;    246    247	002540	012700 	002662'		OUTVER:	MOV	#TEMP,R0	;POINT TO TASK NAME    248	002544	012702 	000006 			MOV	#6,R2		;6 CHARACTERS TO DISPLAY    249    250	002550	062701 	000314'			ADD	#BUFFER,R1	;POINTING TO LOCATION OF FIRST CHARACTER    251    252    253	002554	112011 			5$:	MOVB	(R0)+,(R1)	;INSERT CHARACTER    254	002556	062701 	000      200 			ADD	#128.,R1	;POINT TO NEXT CHARACTER    255	002562					SOB	R2,5$		;COUNT DOWN    256	002566					RETURN    257    258    259    260    261					;    262					; **-DISHLF-DISPLAYS EITHER TOP OR BOTTOM HALF OF MEMORY DISPLAY    263					;    264					; INPUTS:    265					;    266					;	R0 POINTS TO AREA OF BUFFER TO BE DISPLAYED    267					;    268    269    270	002570				DISHLF:    271    272	002570					CALL	MOVLIN		;MOVE ONE LINE OF DISPLAY TO OUTPUT AREA    273	002574	012703 	000004'			MOV	#POS,R3    27      4	002600					CALL	OUTLIN    275    276    277	002604	012701 	000006 			MOV	#6,R1		;SIX DISPLAY LINES TO FOLLOW    278    279	002610	062700 	000100 		10$:	ADD	#64.,R0		;SKIP THE OTHER HALF OF THE DISPLAY    280	002614					CALL	MOVLIN		;MOVE ANOTHER LINE    281	002620	005267 	175162 			INC	POS+2		;POINT CURSOR TO NEXT LINE    282    283	002624	012703 	000004'			MOV	#POS,R3    284	002630					CALL	OUTLIN		;DISPLAY ANOTHER LINE    285	002634					SOB	R1,10$		;IF NE - NOT FINISHED WITH THE 6 LINES    286    287	00      2640					RETURN    288    289GENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 6-1MISCELLANEOUS ROUTINES    290    291					;    292					; **-MOVLIN-COPIES ONE LINE OF DISPLAY TO OUTPUT BUFFER    293					;    294    295    296	002642				MOVLIN:    297    298    299	002642	012702 	000012'			MOV	#BUF,R2		;POINT TO BEGINNING OF OUTPUT BUFFER    300	002646	012703 	000040 			MOV	#32.,R3		;32 WORDS TO MOVE    301	002652	012022 			5$:	MOV	(R0)+,(R2)+	;MOVE 2 CHARACTERS    302	002654					SOB	R3,5$	      	;COUNT DOWN TO END OF LINE    303	002660					RETURN    304    305    306GENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 7SORT TABLE ROUTINE    308						.SBTTL	SORT TABLE ROUTINE    309    310    311					;    312					; **-SORT-SORT TSTS IN ORDER OF STARTING ADDRESS    313					;    314    315    316	002662				TEMP:	.BLKW	6    317	002676	000000 			SRTFLG:	.WORD	0    318    319    320    321    322	002700	012700 	000000G		SORT:	MOV	#TABLE,R0	;INITIALIZE POINTERS TO FIRST TWO TABLE ELEMENTS          323	002704	012701 	000014G			MOV	#TABLE+14,R1    324	002710	016702 	000000G			MOV	COUNT,R2    325	002714	005302 				DEC	R2		;WANT TO LOOP ONE LESS THAN NUMBER OF ITEMS    326    327    328	002716	021011 			5$:	CMP	(R0),(R1)	;COMPARE TST STARTING ADDRESSES    329	002720	003464 				BLE	10$		;IF LE - THEN TWO ENTRIES ALREADY IN ORDER    330    331    332	002722	011167 	177734 			MOV	(R1),TEMP	;SWITCH THE TWO TABLE ENTRIES    333	002726	016167 	000002 	177730 		MOV	2(R1),TEMP+2    334	002734	016167 	000004 	      177724 		MOV	4(R1),TEMP+4    335	002742	016167 	000006 	177720 		MOV	6(R1),TEMP+6    336	002750	016167 	000010 	177714 		MOV	10(R1),TEMP+10    337	002756	016167 	000012 	177710 		MOV	12(R1),TEMP+12    338    339	002764	011011 				MOV	(R0),(R1)    340	002766	016061 	000002 	000002 		MOV	2(R0),2(R1)    341	002774	016061 	000004 	000004 		MOV	4(R0),4(R1)    342	003002	016061 	000006 	000006 		MOV	6(R0),6(R1)    343	003010	016061 	000010 	000010 		MOV	10(R0),10(R1)    344	003016	016061 	000012 	000012 		MOV	12(      R0),12(R1)    345    346	003024	016710 	177632 			MOV	TEMP,(R0)    347	003030	016760 	177630 	000002 		MOV	TEMP+2,2(R0)    348	003036	016760 	177624 	000004 		MOV	TEMP+4,4(R0)    349	003044	016760 	177620 	000006 		MOV	TEMP+6,6(R0)    350	003052	016760 	177614 	000010 		MOV	TEMP+10,10(R0)    351	003060	016760 	177610 	000012 		MOV	TEMP+12,12(R0)    352    353    354	003066	005267 	177604 			INC	SRTFLG		;KEEP TRACK OF WHETHER ANY CHANGES WERE MADE    355    356	003072	010100 			10$:	MOV	R1,R0		;MOVE DOWN TO       NEXT TRANSACTION NAME    357	003074	062701 	000014 			ADD	#14,R1    358    359	003100					SOB	R2,5$		;HAVE WE REACHED THE END OF THE TABLE?    360    361    362	003104	005767 	177566 			TST	SRTFLG		;HAS ANY RE-ARRANGING BEEN DONE?    363	003110	001404 				BEQ	99$		;IF EQ NO CHANGES WERE MADE AND WE ARE FINISHED    364GENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 7-1SORT TABLE ROUTINE    365	003112	005067 	177560 			CLR	SRTFLG    366	003116	000167 	177556 			JMP	SORT    367    368	00312      2				99$:	RETURN    369    370    371		000001 				.ENDGENERATION MODULE FOR MEMORY UT	MACRO M1110  14-FEB-79 18:44  PAGE 7-2SYMBOL TABLEARROW   000114R  	ESC   = 000033   	L$$PTO= 000037   	P$$RFL= 000000   	T$$ACR= 000000A$$CHK= 000000   	E$$DVC= 000000   	L$$P11= 000001   	P$$RTY= 000000   	T$$BTW= 000000A$$CPS= 000000   	E$$NSI= 000000   	L$$11R= 000000   	P$$TPT= 000000   	T$$BUF= 000000A$$NSI= 000000   	E$$PER= 000000   	MEMHLF= ****** GX	Q$$OPT= 000017   	T$$CCA= 000000A$$PRI= 000000   	E$$XPR= 00000      0   	MEMOUT  001714RG 	RARROW  000001R  	T$$CCO= 000000A$$TRP= 000000   	F$$LPP= 000000   	MEMSIZ= ****** GX	R$$DSP= 000000   	T$$CTR= 000000BODY    000002R  	F$$LVL= 000001   	MOVLIN  002642R  	R$$EXV= 000000   	T$$ESC= 000000BUF     000012R  	G$$TPP= 000000   	M$$CRB= 000124   	R$$HDV= 000000   	T$$GMC= 000000BUFFER  000314R  	G$$TTK= 000000   	M$$CRX= 000000   	R$$H11= 000003   	T$$GTS= 000000CD    = 000131   	HO    = 000110   	M$$EXT= 000000   	R$$JPO= 000000   	T$$HLD= 000000COUNT = ****** GX	H$$RTZ= 0      00074   	M$$FCS= 000000   	R$$JP1= 000003   	T$$J16= 000003C$$CDA= 000002   	I$$RAR= 000000   	M$$K11= 000000   	R$$LKL= 000001   	T$$KMG= 000000C$$CKP= 000000   	I$$RDN= 000000   	M$$MGE= 000000   	R$$MOF= 000000   	T$$LWC= 000000C$$CSR= 177440   	K$$CNT= 177546   	M$$MUP= 000000   	R$$MPL= 000000   	T$$PS = 000000C$$LIS= 000000   	K$$CSR= 177546   	M$$NET= 000000   	R$$M11= 000003   	T$$RAX= 000000C$$ORE= 002000   	K$$IEN= 000115   	M$$OVR= 000000   	R$$NDC= 000006   	T$$RNE= 000000C$$RSH= 177564   	K$$LD      C= 000001   	M$$XLN= 000400   	R$$NDH= 000226   	T$$RPR= 000000C$$RUN= 000000   	K$$TPS= 000074   	N$$CON= 000500   	R$$NDL= 000001   	T$$RST= 000000C$$XDB= 000000   	LARROW  000000R  	N$$LDV= 000001   	R$$SND= 000000   	T$$RUB= 000000DISHLF  002570R  	LD$DB = 000000   	N$$MOV= 000011   	R$$STP= 000000   	T$$SMC= 000000D$$IAG= 000000   	LD$DR = 000000   	N$$MXM= 001100   	R$$11M= 000000   	T$$SYN= 000000D$$ISK= 000000   	LD$LP = 000000   	N$$TMO= 000012   	SORT    002700R  	T$$TRW= 000000D$$L11= 000001   	L      D$MM = 000000   	N$$UMR= 000024   	SRTFLG  002676R  	T$$UTB= 000000D$$SHF= 000000   	LD$NT = 000000   	OUTLIN= ****** GX	SYSHFT= ****** GX	T$$VBF= 000000D$$WCK= 000000   	LD$RH = 000000   	OUTVER  002540R  	SYSRND= ****** GX	T$$ZAN= 000300D$$YNC= 000000   	LD$TT = 000000   	OV$DB = 000000   	SYSTMP= ****** GX	T$$18S= 000000D$$YNM= 000000   	LD$VT = 000000   	OV$DR = 000000   	S$$ECC= 000000   	V$$CTR= 001000D$$ZMD= 000000   	LD$XM = 000000   	O$$LAP= 000000   	S$$WPC= 000036   	V$$TLD= 000120D$$Z11= 000004         	LOOP    002000R  	POS     000004R  	S$$WPR= 000005   	V$$TLM= 000205EL    = 000113   	L$$ASG= 000000   	P$$D70= 000000   	S$$YSZ= 050000   	V$$TRM= 000000END     000112R  	L$$DRV= 000000   	P$$LAS= 000000   	TABLE = ****** GX	X$$M11= 000002ES    = 000112   	L$$LDR= 000000   	P$$OFF= 000000   	TEMP    002662R  	$$$R4 = 000000. ABS.	000000	   000      	003124	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  2720 WORDS  ( 11 PAGES)DYNAMIC MEMORY:  4036 WORDS  ( 15 PAGES)ELAPSED TIME:  00:00:23MEMOUT,MEMOUT.   ,   LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,MEMOUT ,          Ô4YNÁ› 8$        	.TITLE	INITIALIZATION MODULE FOR MEMORY UTILIZATION DISPLAY	.SBTTL	ASCII TEXT	.NLIST	BEX	.MCALL	SWITCH$	ESC=33		;ESCAPE CHARACTER	CD=131		;CURSOR DISPLAY	ES=112		;ERASE TO END OF SCREEN	HO=110		;SEND CURSOR TO HOME POSITION	EL=113		;ERASE TO END OF LINETIT:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR	.ASCII	<ESC><ES><0><0><1>TIT1:	.ASCII	<ESC><CD><31.+4.><0><31.+23.>	.ASCII	/*** CORE UTILIZATION DISPLAY ***/<1>	.EVENTIT2:	.ASCII	<ESC><CD><31.+4.><0><31.+20.>	.ASCII	/*** CACHE (TSTS) UTILIZATION DI      SPLAY ***/<1>	.EVENTIT3:	.ASCII	<ESC><CD><31.+4.><0><31.+17.>	.ASCII	/*** CACHE (TSTS & FORMS) UTILIZATION DISPLAY ***/<1>	.EVENMPOS1:	.ASCIZ	<ESC><CD><31.+6.><0><31.+7.>MLIN1:	.REPT	8.	.ASCII	/********/	.ENDR	.ASCIZ	<1>MPOS2:	.ASCIZ	<ESC><CD><31.+15.><0><31.+7.>MLIN2:	.REPT	8.	.ASCII	/********/	.ENDR	.ASCIZ	<1>MEMINC:	.WORD	0MEMPOS:	.WORD	MLIN1MEMSIZ:: .WORD	0NUMD:	.WORD	16.MEMNUM:	.WORD	0SYSHFT:: .WORD	0SYSRND:: .WORD	0SYSTMP:: .WORD	0MEMHLF:: .WORD	0MEMTYP:: .WORD	0		; KEEPS TRACK OF CURRENT MEMORY DISPL      AY				; 1 = TASK DISPLAY				; 2 = TST DISPLAY				; 3 = TST & FORM DISPLAY	.PAGE	.SBTTL	DETERMINE DISPLAY TYPE AND FIND MEMORY SIZEMSG1:	.ASCII	/CORE OR CACHE DISPLAY <CORE>?/<1>	.EVENMSG2:	.ASCII	"FULL OR LOWER HALF OF MEMORY DISPLAY (F/H) <F>?"<1>	.EVENMSG3:	.ASCII	/INCLUDE FORMS YES OR NO <NO>?/<1>	.EVENMEMINI::	TST	CYCLE		;ARE WE IN CYCLING MODE	BEQ	1$		;IF EQ - NO	MOV	#2,MEMTYP	;SELECT TST DISPLAY	CLR	MEMHLF		;AND FULL SIZE DISPLAY	BR	20$		;CONTINUE;; DOES USER WANT TASK OR TST DISPLAY?;1$:	MOV	#1,R0		;      SPECIFY THAT REPLY IS WANTED	MOV	#MSG1,R1	;POINT TO QUESTION TEXT	CALL	COMMUN		;SEND QUESTION TO USER	MOV	#1,MEMTYP	;SET DISPLAY TYPE TO DEFAULT - TASK	CMP	#"CA,RECBUF	;DOES USER WANT CACHE DISPLAY?	BNE	10$		;IF NE - NO	INC MEMTYP		;SET DISPLAY TYPE TO TST;; ARE FORMS TO BE INCLUDED?;	MOV	#1,R0		;REPLY WANTED	MOV	#MSG3,R1	;POINT TO QUESTION TEXT	CALL	COMMUN		;SEND QUESTION TO USER	CMPB	#'Y,RECBUF	;INCLUDE FORMS?	BNE	10$		;IF NE - NO	INC	MEMTYP		;SET DISPLAY TYPE TO TST & FORMS;; FULL OR HALF SIZE DISPLAY?;1      0$:	MOV	#1,R0		;REPLY WANTED	MOV	#MSG2,R1	;POINT TO QUESTION TEXT	CALL	COMMUN		;SEND QUESTION TO USER	CLR	MEMHLF	CMPB	#'H,RECBUF	;FULL OR HALF SIZE DISPLAY?	BNE	20$		;IF NE - FULL SIZE	INC	MEMHLF		;SET TO HALF SIZE;; DETERMINE SIZE OF MEMORY TO BE DISPLAYED;20$:	CMP	#1,MEMTYP	;WHICH DISPLAY ARE WE LOOKING AT?	BEQ	25$		;IF EQ - TASK DISPLAY	MOV	CSIZE,MEMSIZ	;MEMORY SIZE IS CACHE SIZE	BR	30$25$:	SWITCH$	30$	MOV	$SYSIZ,MEMSIZ	;GET SYSTEM SIZE	RETURN30$:	.PAGE	.SBTTL	GENERATE MEMORY BORDER NUMBERS;; TAKE MEMORY       SIZE AND FIGURE OUT NEXT POWER OF TWO SIZE BIGGER. GENERATE THE; BORDERS WHICH CONTAIN MEMORY NUMBERS.;	.ENABL	LSB	TST	MEMHLF		;DO WE WANT ONLY HALF THE DISPLAY?	BEQ	5$		;IF EQ - NO	ASR	MEMSIZ		;CUT DOWN MEMORY SIZE IN HALF5$:	MOV	MEMSIZ,R2	;GET SIZE	DEC	R2		;FIX IT UP TO BE THE LAST WORD IN MEMORY	CLC			;DON'T SIGN EXTEND	ROR	R2	MOV	#1,R3		;INITIALIZE COUNT OF SHIFTS10$:	INC	R3		;ONE MORE SHIFT	ASR	R2		;DO IT!	BNE	10$		;MORE LEFT	INC	R2		;PUT A ONE IN SO WE CAN SHIFT IT BACK UP	MOV	R3,SYSHFT	;SAVE IT	SUB	      #5,R3		;CONVERT TO 1K SECTIONS	SUB	#4,R3		;CONVERT TO MEMORY DISPLAY SECTIONS	BEQ	25$		;IF EQ - THEN 16K SYSTEM20$:	ASL	R2		;MOVE IT BACK UP	DEC	R3		;ANY MORE	BGT	20$		;IF GT YES25$:	MOV	R2,MEMINC	;SAVE IT	SUB	#7.,SYSHFT	;ADJUST SYSTEM SHIFT COUNT SO THAT IT WILL				;CONVERT 32. WORD UNITS INTO UNITS THAT WILL				;TAKE UP ONE SPACE ON THE SCREEN.	MOV	SYSHFT,R1	;CALCULATE THE ROUNDING NUMBER USED BY THE 				;CONVERT MACRO	DEC	R1	CLR	R0	BR	31$30$:	ASL	R0		;SHIFT IT UP AND OVER31$:	INC	R0		;PUT A ONE IN LOWER       POSITION	DEC	R1		;ANY MORE TO GO	BNE	30$		;IF NE YES	MOV	R0,SYSRND	;SAVE IT FOR LATER	.PAGE;; HERE WE ACTUALLY GENERATE THE NUMBERS INTO THE ***** PROTOTYPES;40$:	MOV	#MLIN1,MEMPOS		MOV	#16.,NUMD	CLR	MEMNUM41$:	MOV	MEMPOS,R0	;GET NEXT POSITION	MOV	MEMNUM,R1	;NUMBER FOR CBDMG	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG		;CONVERT IT	MOVB	#'*,(R0)+	;DO SOME CLEANING UP	MOVB	#'*,(R0)	ADD	#8.,MEMPOS	;MOVE TO NEXT POSITION	ADD	MEMINC,MEMNUM	;NEW MEMORY NUMBER	DEC	NUMD	CMP	#8.,NUMD	;ARE WE THRU WITH THE FIRST LIN      E	BNE	45$		;IF NE NO	MOV	#MLIN2,MEMPOS	;POINT TO THE SECOND LINE	BR	41$45$:	TST	NUMD		;ARE WE THRU WITH BOTH LINES	BNE	41$	.PAGE	.SBTTL	OUTPUT FIXED PART OF DISPLAY;; DISPLAY THE FIXED PART OF THE SCREEN;	MOV	#31.+6.,MPOS1+2	;POSITION CURSOR TO TOP LINE OF FIRST 				;MEMORY SECTION	MOV	#TIT,R3	;POINT TO THE DISPLAY BUFFER	CALL	OUTLIN;; SELECT APPROPRIATE HEADER;	CMP	MEMTYP,#1	BNE	60$	MOV	#TIT1,R3	BR	70$60$:	CMP	MEMTYP,#2	BNE	61$	MOV	#TIT2,R3	BR	70$61$:	MOV	#TIT3,R370$:	CALL	OUTLIN	MOV	#31.+6.,MPOS1+2	;	MOV	   2  #MPOS1,R3	CALL	OUTLIN	MOV	#31.+14.,MPOS1+2 ;NOW POSITION CURSOR TO BOTTOM LINE	MOV	#MPOS1,R3		CALL	OUTLIN	MOV	#31.+16.,MPOS2+2 ;NOW POSITION CURSOR TO TOP LINE OF BOTTOM SECTION	MOV	#MPOS2,R3	CALL	OUTLIN	MOV	#31.+24.,MPOS2+2 ;AND FINALLY BOTTOM LINE OF BOTTOM SECTION	MOV	#MPOS2,R3	CALL	OUTLIN	RETURN	.END 2         Ry:^Á› 8$         y:i~    tŽ€»   ¯”L  %–T@  ÁH£@   «ÈK@  avL@  KqÎ@  :©@  Ñ«Bx@       (0Ræ3h4Ry:h¤RBxh(Rø€h6 »z3h.»z´rh0»zh2¯”             Y"  J  Y# 6*** CORE UTILIZATION DI & SPLAY ***Y# 3*** CACHE (TSTS) UTILIZ L ATION DISPLAY ***Y# 0*** CACHE (TSTS r  & FORMS) UTILIZATION DISPLAY ***Y%  ˜ & ************************************ ¾ **************************** Y. & ** ä ************************************** 
************************   š                š  0        CORE OR CACHE DISPLAY <CORE>? VFULL OR LOWER HALF OF MEMORY DISPLAY ( |F/H) <F>?INCLUDE FORMS YES OR NO <NO> ¢?÷  ÷ †ÿ7
€ÿ)À Á8÷	  ÷ nÿ «ÈK8"%–T È÷%CA  ·
bÿÀ Á†÷	  ÷¥Y   ·
JÿÀ KqÎ†%–T KqÎ î ÁV÷	  7
8ÿ÷¥H   ·
,ÿ÷% (ÿ÷   V%–TKqÎ(ÁH£ ÿþˆ$÷  ÿ‡ ÷ÿ·úþÂöþÂ
¡ Ã 
$Ñ«Bx : ƒ
‚ý‚
÷æþÃå Ãå ÂÃ
ý·Èþ÷å  `ÌþÁÈþÁ
 
À€
Á
ü7¸þ÷š ¨þ÷ ¦þ7
 š  †¤þÀšþÁœþ
÷	  Ð•* È•* ÷e ‚þ÷m|þ‚þ÷
 :©   è    ¬|þ÷% vþ÷â jþå÷hþâ÷% ÌýÃ  ÷	   â $  (avL Ò×-`þ Ã
 	×-Rþ Ã0 Ã^ ÷	  ÷ 
 0 "^ &avL ø% šýÃ” ÷	  ÷- ŒýÃ” ÷	  ÷/ ÆýÃÜ ÷	 
” avL” avL&Ü    ÷7 ¸ýÃÜ ÷	  ‡  avLÜ avL è          Ry:NÁ› 8$        INITIALIZATION MODULE FOR MEMOR	MACRO M1110  14-FEB-79 19:19TABLE OF CONTENTS     4-    2	ASCII TEXT     5-   69	DETERMINE DISPLAY TYPE AND FIND MEMORY SIZE     6-  159	GENERATE MEMORY BORDER NUMBERS     8-  244	OUTPUT FIXED PART OF DISPLAYINITIALIZATION MODULE FOR MEMOR	MACRO M1110  14-FEB-79 19:19  PAGE 4      1						.TITLE	INITIALIZATION MODULE FOR MEMORY UTILIZATION DISPLAY      2						.SBTTL	ASCII TEXT      3						.NLIST	BEX      4      5      6						.MCALL	SWITCH$      7      8      9		000033 				ES      C=33		;ESCAPE CHARACTER     10		000131 				CD=131		;CURSOR DISPLAY     11		000112 				ES=112		;ERASE TO END OF SCREEN     12		000110 				HO=110		;SEND CURSOR TO HOME POSITION     13		000113 				EL=113		;ERASE TO END OF LINE     14     15     16	000000	   033 	   131 	   042 	TIT:	.ASCII	<ESC><CD><31.+3.><0><31.+1.>	;POSITION CURSOR     17	000005	   033 	   112 	   000 		.ASCII	<ESC><ES><0><0><1>     18     19     20	000012	   033 	   131 	   043 	TIT1:	.ASCII	<ESC><CD><31.+4.><0><31.+23.>     21	000017	   0      52 	   052 	   052 		.ASCII	/*** CORE UTILIZATION DISPLAY ***/<1>     22						.EVEN     23     24     25	000060	   033 	   131 	   043 	TIT2:	.ASCII	<ESC><CD><31.+4.><0><31.+20.>     26	000065	   052 	   052 	   052 		.ASCII	/*** CACHE (TSTS) UTILIZATION DISPLAY ***/<1>     27						.EVEN     28     29     30	000136	   033 	   131 	   043 	TIT3:	.ASCII	<ESC><CD><31.+4.><0><31.+17.>     31	000143	   052 	   052 	   052 		.ASCII	/*** CACHE (TSTS & FORMS) UTILIZATION DISPLAY ***/<1>     32						.EVEN     33           34     35     36	000224	   033 	   131 	   045 	MPOS1:	.ASCIZ	<ESC><CD><31.+6.><0><31.+7.>     37     38	000232	000010 			MLIN1:	.REPT	8.     39						.ASCII	/********/     40						.ENDR     41	000332	   001 	   000 			.ASCIZ	<1>     42     43	000334	   033 	   131 	   056 	MPOS2:	.ASCIZ	<ESC><CD><31.+15.><0><31.+7.>     44     45	000342	000010 			MLIN2:	.REPT	8.     46						.ASCII	/********/     47						.ENDR     48	000442	   001 	   000 			.ASCIZ	<1>     49     50     51	000444	000000 			MEMINC:	.WORD	0           52	000446	000232'			MEMPOS:	.WORD	MLIN1     53	000450	000000 			MEMSIZ:: .WORD	0     54	000452	000020 			NUMD:	.WORD	16.     55	000454	000000 			MEMNUM:	.WORD	0     56	000456	000000 			SYSHFT:: .WORD	0     57	000460	000000 			SYSRND:: .WORD	0INITIALIZATION MODULE FOR MEMOR	MACRO M1110  14-FEB-79 19:19  PAGE 4-1ASCII TEXT     58	000462	000000 			SYSTMP:: .WORD	0     59     60	000464	000000 			MEMHLF:: .WORD	0     61	000466	000000 			MEMTYP:: .WORD	0		; KEEPS TRACK OF CURRENT MEMORY DISPLAY     62								      	; 1 = TASK DISPLAY     63									; 2 = TST DISPLAY     64									; 3 = TST & FORM DISPLAY     65     66     67INITIALIZATION MODULE FOR MEMOR	MACRO M1110  14-FEB-79 19:19  PAGE 5DETERMINE DISPLAY TYPE AND FIND MEMORY SIZE     69						.SBTTL	DETERMINE DISPLAY TYPE AND FIND MEMORY SIZE     70     71     72	000470	   103 	   117 	   122 	MSG1:	.ASCII	/CORE OR CACHE DISPLAY <CORE>?/<1>     73						.EVEN     74     75	000526	   106 	   125 	   114 	MSG2:	.ASCII	"FULL OR LOWER HALF OF MEMORY DISPLAY (F/H) <F>      ?"<1>     76						.EVEN     77     78	000606	   111 	   116 	   103 	MSG3:	.ASCII	/INCLUDE FORMS YES OR NO <NO>?/<1>     79						.EVEN     80     81     82	000644				MEMINI::     83     84     85	000644	005767 	000000G			TST	CYCLE		;ARE WE IN CYCLING MODE     86	000650	001406 				BEQ	1$		;IF EQ - NO     87     88	000652	012767 	000002 	177606 		MOV	#2,MEMTYP	;SELECT TST DISPLAY     89	000660	005067 	177600 			CLR	MEMHLF		;AND FULL SIZE DISPLAY     90	000664	000451 				BR	20$		;CONTINUE     91     92     93	      				;     94					; DOES USER WANT TASK OR TST DISPLAY?     95					;     96     97	000666	012700 	000001 		1$:	MOV	#1,R0		;SPECIFY THAT REPLY IS WANTED     98	000672	012701 	000470'			MOV	#MSG1,R1	;POINT TO QUESTION TEXT     99	000676					CALL	COMMUN		;SEND QUESTION TO USER    100    101	000702	012767 	000001 	177556 		MOV	#1,MEMTYP	;SET DISPLAY TYPE TO DEFAULT - TASK    102	000710	022767 	040503 	000000G		CMP	#"CA,RECBUF	;DOES USER WANT CACHE DISPLAY?    103	000716	001016 				BNE	10$		;IF NE - NO    104          105	000720	005267 	177542 			INC MEMTYP		;SET DISPLAY TYPE TO TST    106    107					;    108					; ARE FORMS TO BE INCLUDED?    109					;    110    111    112	000724	012700 	000001 			MOV	#1,R0		;REPLY WANTED    113	000730	012701 	000606'			MOV	#MSG3,R1	;POINT TO QUESTION TEXT    114	000734					CALL	COMMUN		;SEND QUESTION TO USER    115    116	000740	122767 	000131 	000000G		CMPB	#'Y,RECBUF	;INCLUDE FORMS?    117	000746	001002 				BNE	10$		;IF NE - NO    118	000750	005267 	177512 			INC	MEMTYP		;SET DISPLAY       TYPE TO TST & FORMS    119    120    121					;    122					; FULL OR HALF SIZE DISPLAY?    123					;    124    125INITIALIZATION MODULE FOR MEMOR	MACRO M1110  14-FEB-79 19:19  PAGE 5-1DETERMINE DISPLAY TYPE AND FIND MEMORY SIZE    126	000754	012700 	000001 		10$:	MOV	#1,R0		;REPLY WANTED    127	000760	012701 	000526'			MOV	#MSG2,R1	;POINT TO QUESTION TEXT    128	000764					CALL	COMMUN		;SEND QUESTION TO USER    129    130	000770	005067 	177470 			CLR	MEMHLF    131	000774	122767 	000110 	000000G		CMPB	#'H,R      ECBUF	;FULL OR HALF SIZE DISPLAY?    132	001002	001002 				BNE	20$		;IF NE - FULL SIZE    133	001004	005267 	177454 			INC	MEMHLF		;SET TO HALF SIZE    134    135    136    137    138					;    139					; DETERMINE SIZE OF MEMORY TO BE DISPLAYED    140					;    141    142    143	001010	022767 	000001 	177450 	20$:	CMP	#1,MEMTYP	;WHICH DISPLAY ARE WE LOOKING AT?    144	001016	001404 				BEQ	25$		;IF EQ - TASK DISPLAY    145    146	001020	016767 	000000G	177422 		MOV	CSIZE,MEMSIZ	;MEMORY SIZE IS CACHE SIZE    1      47	001026	000406 				BR	30$    148    149    150	001030				25$:	SWITCH$	30$    151	001034	016767 	000000G	177406 		MOV	$SYSIZ,MEMSIZ	;GET SYSTEM SIZE    152	001042					RETURN    153    154    155	001044				30$:    156    157INITIALIZATION MODULE FOR MEMOR	MACRO M1110  14-FEB-79 19:19  PAGE 6GENERATE MEMORY BORDER NUMBERS    159						.SBTTL	GENERATE MEMORY BORDER NUMBERS    160    161    162    163					;    164					; TAKE MEMORY SIZE AND FIGURE OUT NEXT POWER OF TWO SIZE BIGGER. GENERATE THE    165					; BO      RDERS WHICH CONTAIN MEMORY NUMBERS.    166					;    167    168    169						.ENABL	LSB    170    171	001044	005767 	177414 			TST	MEMHLF		;DO WE WANT ONLY HALF THE DISPLAY?    172	001050	001402 				BEQ	5$		;IF EQ - NO    173    174	001052	006267 	177372 			ASR	MEMSIZ		;CUT DOWN MEMORY SIZE IN HALF    175    176	001056	016702 	177366 		5$:	MOV	MEMSIZ,R2	;GET SIZE    177	001062	005302 				DEC	R2		;FIX IT UP TO BE THE LAST WORD IN MEMORY    178	001064	000241 				CLC			;DON'T SIGN EXTEND    179	001066	006002 			      	ROR	R2    180	001070	012703 	000001 			MOV	#1,R3		;INITIALIZE COUNT OF SHIFTS    181    182	001074	005203 			10$:	INC	R3		;ONE MORE SHIFT    183	001076	006202 				ASR	R2		;DO IT!    184	001100	001375 				BNE	10$		;MORE LEFT    185    186	001102	005202 				INC	R2		;PUT A ONE IN SO WE CAN SHIFT IT BACK UP    187	001104	010367 	177346 			MOV	R3,SYSHFT	;SAVE IT    188	001110	162703 	000005 			SUB	#5,R3		;CONVERT TO 1K SECTIONS    189	001114	162703 	000004 			SUB	#4,R3		;CONVERT TO MEMORY DISPLAY SECTIONS    19      0	001120	001403 				BEQ	25$		;IF EQ - THEN 16K SYSTEM    191    192	001122	006302 			20$:	ASL	R2		;MOVE IT BACK UP    193	001124	005303 				DEC	R3		;ANY MORE    194	001126	003375 				BGT	20$		;IF GT YES    195    196	001130	010267 	177310 		25$:	MOV	R2,MEMINC	;SAVE IT    197	001134	162767 	000007 	177314 		SUB	#7.,SYSHFT	;ADJUST SYSTEM SHIFT COUNT SO THAT IT WILL    198									;CONVERT 32. WORD UNITS INTO UNITS THAT WILL    199									;TAKE UP ONE SPACE ON THE SCREEN.    200    201	001142	016701 	177310 	      		MOV	SYSHFT,R1	;CALCULATE THE ROUNDING NUMBER USED BY THE    202									;CONVERT MACRO    203	001146	005301 				DEC	R1    204	001150	005000 				CLR	R0    205	001152	000401 				BR	31$    206    207	001154	006300 			30$:	ASL	R0		;SHIFT IT UP AND OVER    208	001156	005200 			31$:	INC	R0		;PUT A ONE IN LOWER POSITION    209	001160	005301 				DEC	R1		;ANY MORE TO GO    210	001162	001374 				BNE	30$		;IF NE YES    211	001164	010067 	177270 			MOV	R0,SYSRND	;SAVE IT FOR LATER    212    213    214INITIALIZATION       MODULE FOR MEMOR	MACRO M1110  14-FEB-79 19:19  PAGE 7GENERATE MEMORY BORDER NUMBERS    216    217					;    218					; HERE WE ACTUALLY GENERATE THE NUMBERS INTO THE ***** PROTOTYPES    219					;    220    221    222	001170	012767 	000232'	177250 	40$:	MOV	#MLIN1,MEMPOS    223	001176	012767 	000020 	177246 		MOV	#16.,NUMD    224	001204	005067 	177244 			CLR	MEMNUM    225    226	001210	016700 	177232 		41$:	MOV	MEMPOS,R0	;GET NEXT POSITION    227	001214	016701 	177234 			MOV	MEMNUM,R1	;NUMBER FOR CBDMG    228	      001220	005002 				CLR	R2		;SUPPRESS LEADING ZEROES    229	001222					CALL	$CBDMG		;CONVERT IT    230	001226	112720 	000052 			MOVB	#'*,(R0)+	;DO SOME CLEANING UP    231	001232	112710 	000052 			MOVB	#'*,(R0)    232	001236	062767 	000010 	177202 		ADD	#8.,MEMPOS	;MOVE TO NEXT POSITION    233	001244	066767 	177174 	177202 		ADD	MEMINC,MEMNUM	;NEW MEMORY NUMBER    234	001252	005367 	177174 			DEC	NUMD    235	001256	022767 	000010 	177166 		CMP	#8.,NUMD	;ARE WE THRU WITH THE FIRST LINE    236	001264	001004 				      BNE	45$		;IF NE NO    237	001266	012767 	000342'	177152 		MOV	#MLIN2,MEMPOS	;POINT TO THE SECOND LINE    238	001274	000745 				BR	41$    239    240	001276	005767 	177150 		45$:	TST	NUMD		;ARE WE THRU WITH BOTH LINES    241	001302	001342 				BNE	41$    242INITIALIZATION MODULE FOR MEMOR	MACRO M1110  14-FEB-79 19:19  PAGE 8OUTPUT FIXED PART OF DISPLAY    244						.SBTTL	OUTPUT FIXED PART OF DISPLAY    245    246    247					;    248					; DISPLAY THE FIXED PART OF THE SCREEN    249					;    250    251    252	      001304	012767 	000045 	176714 		MOV	#31.+6.,MPOS1+2	;POSITION CURSOR TO TOP LINE OF FIRST    253									;MEMORY SECTION    254    255	001312	012703 	000000'			MOV	#TIT,R3	;POINT TO THE DISPLAY BUFFER    256	001316					CALL	OUTLIN    257    258    259					;    260					; SELECT APPROPRIATE HEADER    261					;    262    263    264	001322	026727 	177140 	000001 		CMP	MEMTYP,#1    265	001330	001003 				BNE	60$    266	001332	012703 	000012'			MOV	#TIT1,R3    267	001336	000411 				BR	70$    268    269	001340	0267      27 	177122 	000002 	60$:	CMP	MEMTYP,#2    270	001346	001003 				BNE	61$    271	001350	012703 	000060'			MOV	#TIT2,R3    272	001354	000402 				BR	70$    273    274	001356	012703 	000136'		61$:	MOV	#TIT3,R3    275    276	001362				70$:	CALL	OUTLIN    277    278    279	001366	012767 	000045 	176632 		MOV	#31.+6.,MPOS1+2	;    280	001374	012703 	000224'			MOV	#MPOS1,R3    281	001400					CALL	OUTLIN    282    283	001404	012767 	000055 	176614 		MOV	#31.+14.,MPOS1+2 ;NOW POSITION CURSOR TO BOTTOM LINE    284	00141      2	012703 	000224'			MOV	#MPOS1,R3    285	001416					CALL	OUTLIN    286    287	001422	012767 	000057 	176706 		MOV	#31.+16.,MPOS2+2 ;NOW POSITION CURSOR TO TOP LINE OF BOTTOM SECTION    288	001430	012703 	000334'			MOV	#MPOS2,R3    289	001434					CALL	OUTLIN    290    291	001440	012767 	000067 	176670 		MOV	#31.+24.,MPOS2+2 ;AND FINALLY BOTTOM LINE OF BOTTOM SECTION    292	001446	012703 	000334'			MOV	#MPOS2,R3    293	001452					CALL	OUTLIN    294    295    296    297	001456					RETURN    298    299		000001       				.ENDINITIALIZATION MODULE FOR MEMOR	MACRO M1110  14-FEB-79 19:19  PAGE 8-1SYMBOL TABLEA$$CHK= 000000   	F$$LPP= 000000   	MEMSIZ  000450RG 	P$$RFL= 000000   	T$$BTW= 000000A$$CPS= 000000   	F$$LVL= 000001   	MEMTYP  000466RG 	P$$RTY= 000000   	T$$BUF= 000000A$$NSI= 000000   	G$$TPP= 000000   	MLIN1   000232R  	P$$TPT= 000000   	T$$CCA= 000000A$$PRI= 000000   	G$$TTK= 000000   	MLIN2   000342R  	Q$$OPT= 000017   	T$$CCO= 000000A$$TRP= 000000   	HO    = 000110   	MPOS1   000224R  	RECBUF= ****** GX	T$$CT      R= 000000CD    = 000131   	H$$RTZ= 000074   	MPOS2   000334R  	R$$DSP= 000000   	T$$ESC= 000000COMMUN= ****** GX	I$$RAR= 000000   	MSG1    000470R  	R$$EXV= 000000   	T$$GMC= 000000CSIZE = ****** GX	I$$RDN= 000000   	MSG2    000526R  	R$$HDV= 000000   	T$$GTS= 000000CYCLE = ****** GX	K$$CNT= 177546   	MSG3    000606R  	R$$H11= 000003   	T$$HLD= 000000C$$CDA= 000002   	K$$CSR= 177546   	M$$CRB= 000124   	R$$JPO= 000000   	T$$J16= 000003C$$CKP= 000000   	K$$IEN= 000115   	M$$CRX= 000000   	R$$JP1= 000003   	T      $$KMG= 000000C$$CSR= 177440   	K$$LDC= 000001   	M$$EXT= 000000   	R$$LKL= 000001   	T$$LWC= 000000C$$LIS= 000000   	K$$TPS= 000074   	M$$FCS= 000000   	R$$MOF= 000000   	T$$PS = 000000C$$ORE= 002000   	LD$DB = 000000   	M$$K11= 000000   	R$$MPL= 000000   	T$$RAX= 000000C$$RSH= 177564   	LD$DR = 000000   	M$$MGE= 000000   	R$$M11= 000003   	T$$RNE= 000000C$$RUN= 000000   	LD$LP = 000000   	M$$MUP= 000000   	R$$NDC= 000006   	T$$RPR= 000000C$$XDB= 000000   	LD$MM = 000000   	M$$NET= 000000   	R$$NDH= 000226         	T$$RST= 000000D$$IAG= 000000   	LD$NT = 000000   	M$$OVR= 000000   	R$$NDL= 000001   	T$$RUB= 000000D$$ISK= 000000   	LD$RH = 000000   	M$$XLN= 000400   	R$$SND= 000000   	T$$SMC= 000000D$$L11= 000001   	LD$TT = 000000   	NUMD    000452R  	R$$STP= 000000   	T$$SYN= 000000D$$SHF= 000000   	LD$VT = 000000   	N$$CON= 000500   	R$$11M= 000000   	T$$TRW= 000000D$$WCK= 000000   	LD$XM = 000000   	N$$LDV= 000001   	SYSHFT  000456RG 	T$$UTB= 000000D$$YNC= 000000   	L$$ASG= 000000   	N$$MOV= 000011   	SYSRND  000      460RG 	T$$VBF= 000000D$$YNM= 000000   	L$$DRV= 000000   	N$$MXM= 001100   	SYSTMP  000462RG 	T$$ZAN= 000300D$$ZMD= 000000   	L$$LDR= 000000   	N$$TMO= 000012   	S$$ECC= 000000   	T$$18S= 000000D$$Z11= 000004   	L$$PTO= 000037   	N$$UMR= 000024   	S$$WPC= 000036   	V$$CTR= 001000EL    = 000113   	L$$P11= 000001   	OUTLIN= ****** GX	S$$WPR= 000005   	V$$TLD= 000120ES    = 000112   	L$$11R= 000000   	OV$DB = 000000   	S$$YSZ= 050000   	V$$TLM= 000205ESC   = 000033   	MEMHLF  000464RG 	OV$DR = 000000   	TIT           000000R  	V$$TRM= 000000E$$DVC= 000000   	MEMINC  000444R  	O$$LAP= 000000   	TIT1    000012R  	X$$M11= 000002E$$NSI= 000000   	MEMINI  000644RG 	P$$D70= 000000   	TIT2    000060R  	$CBDMG= ****** GXE$$PER= 000000   	MEMNUM  000454R  	P$$LAS= 000000   	TIT3    000136R  	$SYSIZ= ****** GXE$$XPR= 000000   	MEMPOS  000446R  	P$$OFF= 000000   	T$$ACR= 000000   	$$$R4 = 000000. ABS.	000000	   000      	001460	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  2896 WORDS  ( 12 PAGES)DYNAMIC MEMORY:  4036 WORDS  (    Z   15 PAGES)ELAPSED TIME:  00:00:27MEMINI,MEMINI.LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,MEMINI Z          Ô4YkQÁ› 8$        	.TITLE	I/O ROUTINES TO HARDCOPY SCREEN DISPLAY	.SBTTL	INITIALIZATIONS	.NLIST	BEX	;******************************************	;	; D I R E C T I V E   D P B   B L O C K S	;	;******************************************	.MCALL	ASTX$S,CLEF$,DIR$,EXIT$S,RCVD$,SDAT$	.MCALL	EMST$,SETF$,SRDA$,STSE$	.MCALL	ATRG$,CRAW$,RDBBK$,WDBBK$	.MCALL	QIOW$C,MRKT$	.MCALL	STOP$,USTP$ATTACH:	ATRG$	RDB		;ATTACH TO REGIONCLEAR:	CLEF$	6		;CLEAR EVENT FLAGCRAW:	CRAW$	WDB		;CREATE ADDRESS WINDOWEMIT:	EMST$	DEMO,DAT	;EMIT STATUSRCVDAT:	R      CVD$	,DAT		;RECEIVE DATASEND:	SDAT$	DEMO,DAT+4	;SEND DATA TO DEMOSETF:	SETF$	6STOP:	STOP$			;STOP UNSTOP:	USTP$	DEMO		;UNSTOP OURSELVESWAIT:	MRKT$	,1,1		;WAIT ONE TICKRDB:	RDBBK$	4,BUFFER,,<RS.ATT!RS.RED>WDB:	WDBBK$	6,,,0,,<WS.64B!WS.MAP!WS.RED>	;*********************************************	;	; F I L E   I N I T I A L I Z A T I O N S :	;	;*********************************************	.MCALL	FDBDF$,FDAT$A,FDRC$A,FDOP$A,FDBK$A,FINIT$,FSRSZ$	.MCALL	OPEN$A,OPEN$W,WAIT$,WRITE$,CLOSE$PRTFDB:	FDBDF$			;ALLOCATE F      ILE DESCRIPTOR BLOCK	FDAT$A	R.FIX,,80.,50.,20. ;SPECIFY HOW MANY BLOCKS TO ALLOCATE & EXTEND	FDRC$A	FD.RWM		;SPECIFY THAT WE WILL BE DOING ONLY BLOCK I/O	FDBK$A	SCREEN,2160.,,,IOSTAT ;SPECIFY BUFFER NAME,SIZE,ETC.	FDOP$A	1,FNAME,,FO.WRT!FA.DLK FNAME:	.WORD	4,DEV	.WORD	0,UIC	.WORD	10,NAMEDEV:	.ASCII	/SY0:/UIC:	.ASCII	/  /NAME:	.ASCII	/DEMO.LOG/IOSTAT:	.BLKW	2NEWPGE:	.WORD	1OPEFLG:	.WORD	0CDFLG:	.WORD	0ESCFLG:	.WORD	0PAGE:	.WORD	0DAT:	.BLKW	2DAT1:	.BLKW	13.	ESC=33			;ESCAPE CHARACTER	CD=131			;CURSOR DISPLAY	      ES=112			;ERASE TO END OF SCREEN	EL=113			;ERASE TO END OF LINE	HO=110			;SEND CURSOR TO HOME POSITION	HT=11			;HORIZONTAL TAB	LF=12			;LINE FEED	VT=13			;VERTICAL TAB	FF=14			;FORM FEED	CR=15			;CARRIAGE RETURN	STAR=52			;THE '*' CHARACTER;; SET UP FIXED PART OF SCREEN:;PNTR:	.WORD	.+162.SCREEN:	.BYTE	LF,LF,LF,LF	;FORM FEED AND VERTICAL TAB CHARACTERS GO HERE	.REPT	37.	.BYTE	40,40	.ENDR	.BYTE	40,15	.BYTE	LF		;TOP MARGIN LINE GOES HERE	.REPT	7.	.ASCII	/**********/	.ENDR	.ASCII	/********/<CR>	.REPT	24.		;22.       LINES OF DISPLAY GO HERE	.BYTE	LF	.ASCII	/*                   /	.ASCII	/                    /	.ASCII	/                    /	.ASCII	/                 */	.BYTE	CR	.ENDR	.BYTE	LF		;BOTTOM MARGIN LINE GOES HERE	.REPT	7	.ASCII	/**********/	.ENDR	.ASCII	/********/<CR>	END=.-80.	.PAGE	.SBTTL	ONE TIME ONLY INITIALIZATIONSHRDCPY:;;	ACKNOWLEDGE BEING SPAWNED:;	CALL	UNSTP			;UNSTOP THE DEMO PROGRAM	DIR$	#STOP,DIRERR		;STOP OURSELVES;; RECEIVE DEMO'S TASK NAME:;	DIR$	#RCVDAT,DIRERR		;RECEIVE DATA FROM DEMO;; ATTACH TO       REGION:;	DIR$	#ATTACH,DIRERR	;ATTACH TO REGION CONTAINING CHARACTER BUFFER	CLR	WDB+W.NLEN	;CLEAR WINDOW LENGTH	MOV	RDB+R.GSIZ,WDB+W.NSIZ	;GET REGION SIZE INTO WINDOW DESCRIPTOR	MOV	RDB+R.GID,WDB+W.NRID	;MOVE THE REGION ID INTO WINDOW BUFFER	DIR$	#CRAW,DIRERR	;CREATE ADDRESS WINDOW	FINIT$			;INITIALIZE FILE SYSTEM	FSRSZ$	0		;INDICATE THAT WE ARE DOING BLOCK I/O	.PAGE	.SBTTL	MAIN LOOP;; ALLOW DEMO TO PROCEED (SEND MESSAGE TO RESTART HIM) AND STOP OURSELVES;LOOP:	CALL	UNSTP		;UNSTOP THE DEMO PROGRAM	DIR$	#STO      P,DIRERR	;STOP OURSELVES;; FUNCTIONS THAT DEMO MAY REQUEST OF PRINT ARE:;;	DAT1=1		;UPDATE BUFFER;	DAT1=2		;PRINT BUFFER;	DAT1=3		;EXIT;	DIR$	#RCVDAT,DIRERR	;RECEIVE DATA FROM DEMO	CMP	#1,DAT1		;IS IT BUFFER UPDATE	BNE	10$			CALL	UPDATB		;UPDATE THE BUFFER	BR	LOOP10$:	CMP	#2,DAT1		;IS IT PRINT BUFFER?	BNE	11$	CALL	PRINT		;PRINT THE BUFFER	BR	LOOP11$:	EXIT$S			;ONLY REMAINING OPTIONUNSTP:5$:	DIR$	#UNSTOP		;UNSTOP DEMO	CMP	$DSW,#IE.ITS	;IS DEMO UNSTOPPED	BNE	6$		;IF NE - NO AND WE MANAGED TO UNSTOP IT	DIR$	#W      AIT,DIRERR	;WAIT FOR ONE TICK BEFORE TRYING AGAIN	BR	5$6$:	RETURN	.PAGE	.SBTTL	UPDATE BUFFER ROUTINE;; **-UPDATB-UPDATE HARDCOPY BUFFER;; INPUTS:;;	40000=POINTS TO START OF BUFFER;	DAT+4=NUMBER OF CHARACTERS IN BUFFER;; REGISTER USAGE:;;	R1=POINTS TO CHARACTER IN SHARED REGION THAT IS TO BE;	   PROCESSED;	R2=NUMBER OF CHARACTERS TO PROCESS;	R4=POINTER TO WHERE NEXT CHARACTER GOES IN BUFFER;;	.ENABL	LSBUPDATB:	MOV	PNTR,R4		;RESTORE POINTER SAVED LAST TIME	MOV	#140000,R1	;SETUP BUFFER POINTER	MOV	DAT+6,R2	;NU      MBER OF CHARACTERS	TST	CDFLG		;WERE WE INTERRUPTED IN THE MIDDLE OF 				;POSITIONING CURSOR	BEQ	NXTCHR		;GUESS NOT	CMP	#1,CDFLG	;SEE WERE WE LEFT OFF	BEQ	POSIT		;NEED Y-COORD	JMP	X		;NEED ONLY X-COORDNXTCHR:	TST	R2		;HAVE WE FINISHED PROCESSING ALL CHARACTERS	BGT	5$4$:	MOV	R4,PNTR		;SAVE BUFFER LOCATION	RETURN5$:	MOVB	(R1)+,R3	;GET NEXT CHARACTER	DEC	R2		;ONE LESS CHARACTER	BIC	#177600,R3	;MASK OFF HIGH BITS	BEQ 	NXTCHR		;IF EQ IGNORE FILLS	CMP	#ESC,R3		;SEE IF ITS THE ESCAPE CODE	BNE	11$		;IF NE THEN MUST       BE A CHARACTER	INC	ESCFLG		;SET FLAG TO INDICATE THAT LAST CHARACTER				;PROCESSED IS ESCAPE CHARACTER				;KEEP IN MIND THAT THIS COULD BE LAST CHARACTER				;IN BUFFER AND WE MUST KNOW THIS NEXT TIME	BR	NXTCHR		;GO LOOK FOR ANOTHER CHARACTER11$:	TST	ESCFLG		;WAS LAST CHARACTER THE ESCAPE CHARACTER?	BEQ	12$		;IF EQ NO	CLR	ESCFLG		;CLEAR THE ESCAPE FLAG	CMP	#HO,R3		;SEE IF ITS THE SEND CURSOR HOME CODE	BEQ     HOME		;PROCESS	CMP	#ES,R3		;SEE IF ITS THE ERASE TO END OF SCREEN CODE	BEQ     CLEAN		;PROCESS		CMP	      #EL,R3		;SEE IF ITS THE ERASE TO END OF LINE CODE	BNE	35$		;IF NE NO	CALL	ERASEL	JMP	NXTCHR35$:	CMP	#CD,R3		;ARE WE POSITIONING CURSOR	BEQ	POSIT		;PROCESS12$:	MOVB	R3,(R4)+	;JUST ANOTHER CHARACTER	JMP	NXTCHR		;GO BACK FOR MOREHOME:	MOV	#SCREEN+160.,R4	;RESET POINTER TO TOP OF BUFFER	JMP	NXTCHR		;GO BACK FOR MORE ;; POSITION CURSOR:;POSIT:	TST	R2		;HAVE WE RUN OUT OF CHARACTERS	BNE	21$		;NOT YET	MOV	#1,CDFLG	;SET THE FLAG FOR NEXT TIME	JMP	4$		;RETURN FROM ROUTINE21$:	DEC	R2		;ONE LESS CHARACTER TO PROCESS	M      OVB	(R1)+,R3	;LOOK AT Y-COORDINATE	BEQ	POSIT		;MUST BE A FILLER SO TRY AGAIN	SUB	#30.,R3		;GET LINE NUMBER	MUL	#80.,R3		;	MOV	R3,R4		;CURSOR POSITIONED TO BEGINNING OF LINE	X:	TST	R2		;HAVE WE RUN OUT OF CHARACTERS	BNE	30$		;NOT YET	MOV	#2,CDFLG	;SET THE FLAG FOR NEXT TIME	JMP 	4$		;RETURN FROM ROUTINE30$:	DEC	R2		;ONE LESS CHARACTER TO PROCESS	MOVB	(R1)+,R3	;LOOK AT Y-COORDINATE	BEQ	X		;IGNORE IT ,ITS A FILL CHAR	SUB	#36,R3		;GET COLUMN NUMBER	ADD	R3,R4		;POINTER NOW POSITIONED	ADD	#SCREEN,R4	;OFFSET	CLR	C      DFLG		;RESET CURSOR DISPLAY FLAG	JMP	NXTCHR;; CLEAR THE SCREEN:;CLEAN:	MOV	R4,PNTR		;SAVE CURRENT POSITION45$:	CMP	R4,#END		;ARE WE AT THE END OF THE SCREEN?	BGE	46$	CALL	ERASEL		;ERASE ONE LINE	ADD	#4,R4		;POINT TO NEXT LINE	BR	45$46$:	MOV	PNTR,R4		;RESTORE POINTER	JMP	NXTCHR		;GO BACK;; ERASE ONE LINE:;ERASEL:	CMPB	(R4),#CR	;IF ENCOUNTER A HORIZONTAL TAB THEN				;FINISHED ERASING LINE	BEQ	10$	MOVB	#' ,(R4)+	;CLEAR ONE SPACE	BR	ERASEL		;GO BACK AND TRY IT AGAIN10$:	MOVB	#STAR,-(R4)	;PUT BACK ASTERISK JUST       DELETED	RETURN			;AND WE ARE THROUGH	.PAGE	.SBTTL	ROUTINE COPIES CONTENTS OF BUFFER TO A FILE	.ENABL	LSBPRINT:	TST	OPEFLG		;IS THIS FIRST TIME FILE IS BEING OPENED?	BNE	5$		;IF NE - NO	OPEN$W	#PRTFDB,,,,,,ERR ;OPEN NEW FILE	INC	OPEFLG		;INDICATE THAT FILE HAS ALREADY BEEN CREATED	BR	10$5$:	OPEN$A	#PRTFDB,,,,,,ERR ;OPEN FILE AND GO TO END OF IT10$:	MOVB	#14,SCREEN	;ASSUME THAT WE WANT FORM FEED CHARACTER	TST	NEWPGE		;IF NEWPGE=0 THEN VERTICAL TAB CHARACTER SHOULD				;BE INSERTED	BNE	14$	MOVB	#LF,SCREEN	MOV	#      SCREEN+68.,R0	;CLEAR THE PAGE NO DISPLAY	MOV	#"  ,(R0)+	MOV	#"  ,(R0)+	MOV	#"  ,(R0)+	MOV	#"  ,(R0)+	MOV	#"  ,(R0)	INC	NEWPGE		;WANT A NEW PAGE NEXT TIME	BR	15$14$:	CLR	NEWPGE		;DON'T WANT NEW PAGE NEXT TIME	INC	PAGE		;INC PAGE COUNTER	MOV	#SCREEN+68.,R0	;DISPLAY PAGE NO.	MOV	#"PA,(R0)+	MOV	#"GE,(R0)+	MOV	#" :,(R0)+	MOV	PAGE,R1	CALL	$CBDMG		;CONVERT PAGE NO. TO ASCII15$:	WRITE$	#PRTFDB,,,,#32.,IOSTAT,,ERR	WAIT$	#PRTFDB,#32.,,ERR	CLOSE$	#PRTFDB,ERR	RETURN	.PAGE	.SBTTL	ERROR ROUTINEMESS:	.ASCII	/? FATAL DIREC      TIVE ERROR - ERROR CODE IS - /ERRNUM:	.BLKB	6	.ASCII	/LOCATION: /LOCNUM:	.BLKB	6SIZE=.-MESSERR:	CLR	R1	MOVB	IOSTAT,R1	;GET FILE ERROR STATUS NUMBER	BR	51$DIRERR: MOV	$DSW,R1		;DIRECTIVE STATUS TO R151$:	NEG	R1		;COMPLEMENT IT	MOV	#ERRNUM,R0	;POINT TO OUTPUT BUFFER DIRECTIVE STATUS	CLR	R2		;SUPPRESS LEADING ZEROES	CALL	$CBDMG		;CONVERT BINARY TO ASCII	MOV	(SP)+,R1	;NEXT INSTR. LOCATION ADDRESS TO R1	MOV	#LOCNUM,R0	;POINT TO OUTPUT BUFFER	INC	R2		;DO NOT ZERO SUPPRESS	CALL	$CBOMG		;CONVERT BINARY TO OCTAL ADD   @   RESS	QIOW$C	IO.WAL,1,1,0,IOSTAT,,<MESS,SIZE>	EXIT$S	.END	HRDCPY @          Ô4Y^Á› 8$         @8      ¯”L  Ä%ë@  <&%t@  ô'Ä@   ô'¤’@  $9s;@  ´:ô@  æt <@  :©@   :©Ï_@  s©À@  „¯½`@  ù¯üX@  °úp@   h±p!@  ™²`;@  ª²e;@      (2þ¬¯yì   p©Ó(     (t	            9<  uL “ÕÀ]ä K    ä GÕÀ]è    < L ä ä &è  & ! ƒ…ÕÀ]         ÎZ&    !    L                ‚æt < ^  ^ P   x  x 2   |  |    j  j   ‚<&%t n  n   l  l p  p  p Ö  Ö  ~  ~   €  € ¼  ¼       ô'¤’Ä%ë
 ¼  ¼  È   Ì  Î SY0:  DEMO      .LOG È 
Ì Î  Ú  Ú             ¤



                                 ¤ (                                       N     
******************************* t************************************** š*********
*                           À                                       æ            *
*                                                              2                *
*                   X                                       ~                    *
*                     ¤                                       Ê                        *
*           ð                                                                   *
*       <                                       b                                *
*   ˆ                                       ®                                    * Ô
*                                     ú                                          *
*                                 F                                       l            *
*                             ’                                       ¸          *
*                         Þ                                                     *
*                     *                                       P                  *
*                 v                                       œ                      *
*             Â                                       è                          *
*                                                4                                    *
*     Z                                       €                                  *
* ¦                                       Ì                                       ò*
*                                                                          >    *
*                               d                                       Š        *
*                           °                                       Ö            *
*                       ü                                             "                *
*                   H                                       n                    *
*               ”                                       º                        *
*           à                                       	                            *
******* ,	************************************** R	*********************************÷	‚  x	æ* ÿˆ†÷	†æ ÿˆ†÷	zæ  ÿˆ†÷	n7
 *     ž	¶ö÷šöªö÷’ö¦öæ ÿˆ†÷	R÷	  ÷	: æ*    ù¯üX(*  Ä	      ÿˆ†÷	>æ ÿˆ†÷	2÷% 
÷÷	4 ë÷%    ê	üö÷	äæ3ÿˆæ, ÿˆ×-    æ2 ÿˆ† , s©À$9s;$2  
÷	öò‡ ÄæöÁ ÀÂÆö÷¶ö÷% ®ö.w v  6
Â7Äö‡ C”Â
ÃE€ÿöÃ% ·
Œöð÷†ö \
7
€öÃ%H Ã%J 3Ã%K ÷	x w ¼ÿÃ%Y Ô ‚
w °ÿÄ¤w ¨ÿÂ÷ Föw žÿÂ
C”öÃå ×p 
¤ ¨
P ÄÂ÷ (öw €ÿÂ
C”öÃå Ä`Äe7
ö $ Î
w dÿ7,ö!$	÷	 Äe øÄöw Hÿ£  $	 ô
Ô•  úä•* ‡ ÷ØõÀ\ ð•  # ÷	  †÷	è  \ ô'¤’"h±p! ·
¾õ
À\ ð•  # ÷	  †÷	Î ÷• Êõ÷œõ \ ô'Äh±p! @÷•
 ¾õÀH   ¤  Ð  Ð  Ð  Ð  È  ·
xõ7
 H frõ·
võÀHÐPAÐGEÐ :Ábõ÷	  À\ ð•   H :©$\  Œ( ðDõ ÷	  †÷	d À\ ð•  ( ÷	  †÷	P  ª²e;\ "™²`; ²À\ ÷	  †÷	B ‡ ? FATAL DIRECTIVE ERRO \ 
„¯½` ØR - ERROR CODE IS -   ò òLOCATION:    
ÁÎôÁ  Àì
÷	  Àü‚
÷	   s©Àì:© ü&:©Ï_ p©Ó         Ö   Â@          ´:ô    Ö     Â     & &æ  ÿˆæ3ÿˆ p©Ó   ¤         Ô4Y€Á› 8$            –,    ÿ"ÿ"Œ Œ       O                                                                                                                                                                                                           þ                                                                                                                                                                                                                                                                                        SY  SY  SY  SY  TI  CL                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  Š iÁ áÀÀðþŠ                  V   b                ˆ  \M  \M  \M  \M   Q  ¢N    Z  ÿ"  Œ   €                Ã    áiÁYÔ4                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   á     9Æ uÖ“ÕÀ]nK    nGÕÀ]r  ! ƒ…ÕÀ]         ÎZ&    !                 P            pŽ`      2    F                                                           R  V XSY0:  DEMO.LOG                                           .



                                                                           
*********************************      *********************************************
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
******************************************************************************÷	      ‚ æ´ÿˆ†÷	†æžÿˆ†÷	zæŠÿˆ†÷	n7
¶ö÷šöªö÷’ö¦öæ’ÿˆ†÷	R÷	0÷	: æ´ÿˆ†÷	>æžÿˆ†÷	2÷% 
÷÷	4 ë÷% üö÷	äæ3ÿˆæ¶ÿˆ×-˜óøÿæ¼ÿˆ†÷	öò‡ ÄæöÁ ÀÂÆö÷¶ö÷% ®ö.w v Â7Äö‡ C”Â
ÃE€ÿöÃ% ·
Œöð÷†ö7
€öÃ%H Ã%J 3Ã%K ÷	x w ¼ÿÃ%Y Ôw °ÿÄ.w ¨ÿÂ÷ Föw žÿÂ
C”öÃå ×pP ÄÂ÷ (öw €ÿÂ
C”öÃå Ä`ÄeŽ7
öw dÿ7,ö!®÷	 Äe øÄöw Hÿ£ Ô•  úä•* ‡ ÷ØõÀæð• # ÷	†÷	è ·
¾õ
Àæð•F # ÷	†÷	Î ÷• Êõ÷œõ÷•
 ¾õÀÒÐ  Ð  Ð  Ð  È  ·
xõ7
rõ·
võÀÒÐPAÐ      GEÐ :Ábõ÷	´ Àæð•  ( ðDõ ÷	À†÷	d Àæð•  ( ÷	š†÷	P Àæ÷	b†÷	B ‡ ? FATAL DIRECTIVE ERROR - ERROR CODE IS -       LOCATION:       
ÁÎôÁŽñÀv
÷	 À†‚
÷	 æJÿˆæ3ÿˆæ
æ
*æ
+
æ2æ3ÁE ÿæÂÎE ‚w	~…ŠÂ ‚†Á€Ð•- ŠƒÐŠÂÕ0 @A÷	2W 	 ƒÁe `fÃŠ
ÀÂ€Ã€ÂE ÷	Ôÿ”• ‡   `  L@             ba  ÿÿ                            ÿÿ                         w	Øð * 8 w ´ ðµ  ðµ ) ÷	ìðµ   ð¥   ÷	¼†øÿÿ  Bà÷	Þ&œ* ÷	
      „&
ðµ # ðµ!  ðµ ) &ÎeP æÂ( Âe Ê¦æðµ # &æ•&Ä ð> €Åe > ÍE €÷	Ò†•p* ÷	w Tw	Á( B ‰

C ƒàƒ
ò ñ€€B BÂe ¦æ?ÿˆ‡± B ñÿÿ( 1
< ‡ w	ÄÁ( w ñB ÷	¬ÿð8 w úðµðÿ w ,ðµ # ðµ  ðµôÿ w œ  Ä¥ †w øÄ
0
 ð * 0
 0
 0
 ð 
 0
 0
4 0
6 ðÅÿ) ÷	`‡÷	`ñ  Tðµ # ÷	f‡Lðµ   ð¥    ×  †ð•Øÿ* w F
Å`p!2 ü‡ÅàÅp0 p2 ÷	Rï‡ðµ # 'ðP ðÕ ) ÷	ü†ðµ@ # ð¥Çÿ* ð * ff f ÷	¶± ± ‰‡÷	Æ†
w ò ðµ        ð( 8 ðe$ 8 2 &À( Áe ÷	B€Z‡p8 q
 ÷	ì V‡0
 ð  ðµ  #0  0  œ  Ä¥ ‚‡œA Ä¥ ÄŠð ð•   00  0  ÷	€0
@ ‡ ÷	 ð•Õÿ* 0
@ ÷	h„ðµ # &
&æµ &Ä ÷	j†‡ ÷	²ð•Ëÿ* ± ‡ ð•Ùÿ* ðµ # ñÂ&œ* ÁeB Â÷	À÷	þ°•* âð•Õÿ* äð•Ôÿ* àð•Óÿ* Üðµ  w P÷	àÕeB Æå
 •Åe > Ä €…
ðµ  # ÍÕ Ä ðµ # Ä DÃÍÅ ÑÄ ðµ # Ä ðµ   ðµH # ÍÕ@ …& 0
 ðµ # Õü Õ÷
 
÷	p‡0 @ ° Æe
 Ei‡°
6 ðµ   ðÿ ðµ # ð 
 ðµ@       # ðÿ? ðµ@ # 0 4 0
 6 ðµ  Bðµ # :ðµ   ðµA # 	ðÕ@ ) 0
 ð 
 )÷	,†æ ð¥öÿ* * ÷	:þ°* ðµ@ # 0l  ðµ # 	ð•   ð•  02  ðµ  8 ÷	÷	‡  ðµ!  ðµ   p0 p2 ‡ w	®  w €w lw	œ ÷	À$‡Ä 0,0  w ÷	†4 6 ÷	 ‡÷	Àðµ ) 04  06 
 0
 ð‹* ± ‡ &æ  
 †€m ¡ Î
øæ f
ÀAN ‡ã€
ö
 ÷–%‡ &æf… Þ	ƒ„…‡ &æ¦ff…
 Þ	‚ƒ„…‡ ± ðµ =  p! †Õ•^ ú‡ 8 Áe 2 
‡ ð‹* ± ‡  8 AÁe 
fÕœ" Šœ( Ã  ÕU      ÿˆ†CÉ—& ð•ÿÿ+ ‡ Å( Åe$ &Ä %
Ä
ý„‡ 0Š+ æ1ÿˆÅ( Åe Ã÷	ÿß%ÿÿ& ïp’* w rÿ÷	 øfœ( Á  fæ)ÿˆ‡fæÿˆ‡‡ ÷	Nÿðµ  8 2 Áe &À( ÷	€ €0
 0
 0
8 0
B 0
 0
 0
 0Š) ðÅ # ‡ ÷	æþðµ ) ÷	!‡f¦æ÷	|†ƒ‚„÷	X	‡òÆe ðÅ ) ÷	Bÿðe 6 p4 ÷	¬ 0ž8 * ÷	¦þ‡ w	DþÁe ÁE ƒ ‡ÀúÊ„D`Ä ÊÁbˆl „ ˆl r ‡ w	þ

B€Áe ÁE !s  
‚ÂÅs-  ƒÅÀïÂÅ Csà Ãl ÈÀ¡ ± ‡ 14  16  12  Áe p ðµ  l2 l0 p ‡ ðµ  G      ðµ = ðÕ  fÂ( &
Âe
 Ê%ÿÿ¦æ&æ&ÎeH æ
ðµ   &Îe0 æ÷	ÆýU•
 Â …ÃÂE •Õð> €> ÍE €fÄ ÷	²ýp  †ñ  ±
  w .ý÷	" ‡f÷	\ †&œ* ÷	 °•* ± ‡ Ä Ä Ä 	ðµ  f÷	:ýð> €5>  õE € u
 ÷	Bý‡ ñ  ±
  ‡ ÷	ýMÄ w $ýðµ  ) ðµ  ð¥   ’¤ð¥   ’¤ðµ = ’¤° 0  ð¥   0  l °  ƒ0  ‡ ðµ  ðe 6 p4 ÷	Ž†8 ÷	8þ± ‡ ÷	$ü÷	È÷	è‡‡ ÷	ªõ†‡ ÁeB Éð8 ÷	ê‡ $ & w	´ûð * ÷	"‡÷	ˆ‡÷	–‡ 0,  0,
  ƒf¦       
 ÷	  ‚í†‡ p  °  ƒ÷	 ÷†‡ ¡ ‡ w	Xû  Á 

ì ì +Â% 
÷	¾ûÕeB 
Á ÁÁU €Á5 ÁU UÁ‹åÕ Ä ÷	®û
‡pl  p &
Nœ °e ‡ ð•×ÿ* ± ‡ ð8 ðµ  	ðµ  ð ¡ ‡ ð•Öÿ* ± ‡ ð * ÷	6û  
4 6 Åå   Ã÷	àú‡ðe 6 p4 ‡ ð& * ‡ &4 &6 ðµ   ÷	Œ ÷	à ‡°6 °4 ÷	’ w l Ä% °6 °4 ðµ   .
 ì6 )ƒ
ð 
l0 Á
ü° w ¾ÿ4 6 ÷	„þ°6 °4 ‡÷	: ðµ ) 04  06 
 0
 ð* ± ‡  ì0 ðe 6 p4 ÷‡ ÷	þþðµ   ÷	Øÿ‡ ÷	* ‡ðµ ) 	 l0 ì ,       ¡ ‡ ð•öÿ* ± ‡ ðÅ ) ÷	$ ‡‚ð ðÕ ) ¡ ‡ ð•öÿ* ðÕ ) ± ‡ 0,4  0,6 
 ‡ É¥ÿÿ± ‡ æ1ÿˆ‡ Ä Ä ÷	¤ùU•Õ4 6 Åå w °ù÷	ÄùB fÁe p `p w &ùw	ÚøfB C 	œ" ¦æ&æÿˆ	‡÷	l †Â  ÃSYîð& * ‡ Å° p0 p2 q 1 0Š= ðµ   f&
&Îe< ð < æƒ
Á ÷	¸Æe ð < ð• * ‡ Á( Áe œ" f¦æÿˆ‡DC’B A ‡ w	"øð * ðµ  w l ðµ  úðµ # öÂò 
ñU@  ¦Âe ÷	V‚‡ ÃÄ Ä% ñ,  ñ,  
ñ  ñ  ñ  ‡ æÎew ^ñ  ñ  1
 ‡ w	Ž÷ð * DÅ       
Å
ýæ¦!… ‚  ñU€  q• q• Âå C
Ó¥: „
Â
úÄCÃe ÷	Š‡Ãñ  ñ  ÷	Fþð•Éÿ* ‚ƒ‡ w	÷ð * æÂƒ
 ‚ æ¦yÄ”Ä%. &Ä%; @Â
÷ƒ
ñ5À %ñ5@ <… ÄDáÄ
Í¥* CÃe ÷	‡XÄ% w ð ñU  Oñ5 @ ƒ
âñU € Ä„í Ä

ñU  þ¥*  ñU   Ä Å	 ñU@ ñ5€ åÄ„í Ä

ñU  þ¥*  ñU  Ä Å ‚ ö ƒàÎàÃ
Ê¥* Ã% C!-D`÷	ê)‡ƒ ‚†Æe C Ã5 €ñU  ‚Ã5 	±  ±  ±
 
 Ã5€±  Ã5@±  ‡ Æe ð•Êÿ* ± ‡ w	¦õ÷	4ö
ÕUÄ ÷	Fö‡ æ¦CÃe ÷	Ø      ‡Ä BÂe
 Ã¦÷	‚Ã DÄe 
4
 ÷	6‡w pð•Ìÿ* ‚ƒ‡ Ä( Äe( Ì	ñ  ñ  1
 :¦æ&Âe ´  
÷	²„Œí ƒ‚1-  1-  
1  1  1  ¦þ	 ‡r  r  r  r  r  ‚–
‡ 
Ë w	¢ô&Ba
—¢+ —¢- 
‚
Ä
Ê¥# ‚
Ë
å¥. ‹
Ä
Å æU¥
Ä€”Àå0  ‚Ë‡ÎÀb‡Ë‡Ë‡`‡€Î	Ä
éÁ¡ €€‡ ± û&ÀÀeH æ …”÷	@ ‡Ð÷	 ÷	 LaÎ
Àå ÔÎ Ã
ë–
€‡ ÅÅÅfÅÅ…e‡ ÿÿ   W!Z ‚W!A †W!9 ‚W!0 ‡ÅåÒÿÅå@ ‡ ± ‡ w	¦ó‚ Á
Ò¥[ Ä, ÷	 ‡æÄ] ÷	       …
‡Ás‘ ‡ …¡Á
ü± ‡ Á
„DáÄ
w ¬þf&æÄ5 Ò•[ Ã ÷	" Ä5 Ò•, ƒ“÷	 Ä5 Ò•] ƒ„…‡ ÃE ÿÃÃÅ Ä5 	Ã5 ÿÃÃÃÅ
ø…
Ã Ãe0 ÒŠÃ ÃÃÃÅ
õ‡ æ¦1

 ñ  ñz ñ  ñ  ÷	ö‡q   q  q  1
  1
 1
 1
 1
 1

 1
 1
 1
 ‚ƒ‡                                                                                                                                                                                                                                                                             Ô4YxQÁ› 8$        HRDCPY.TSK;50   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     14-FEB-79   19:33



PARTITION NAME : GEN   
IDENTIFICATION : 0736  
TASK  UIC      : [300,30]
STACK    LIMITS: 000212 001211 001000 00512.
PRG XFR ADDRESS: 005776
TASK ATTRIBUTES: CP              
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 4480. WORDS
TASK ADDRESS LIMITS: 000000 021377
R-W DISK BLK LIMITS: 000002 000023 000022 00018.

*** ROOT SEGMENT: HRDCPY


R/W MEM  LIMITS: 000000 021377 021400 08      960.
DISK BLK LIMITS: 000002 000023 000022 00018.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 001212 006300 03264.
                          001212 006062 03122. I             HRDCPY.OBJ;56
$DPB$$:(RW,I,LCL,REL,CON) 007512 000030 00024.
                          007512 000030 00024. I             HRDCPY.OBJ;56
$$FSR1:(RW,D,GBL,REL,OVR) 007542 000000 000   ²  00.
                          007542 000000 00000. I             HRDCPY.OBJ;56
$$FSR2:(RW,D,GBL,REL,CON) 007542 000104 00068.
$$RESL:(RW,I,LCL,REL,CON) 007646 011530 04952.




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 7432.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 6628. WORDS (25. PAGES)
    SIZE OF WORK FILE: 2048. WORDS (8. PAGES)

    ELAPSED TIME:00:00:32
²         ÕÀ]l^Á› 8$     ^  	.ROOT	A-*(B)A:	.FCTR	DEMOPR-MISC-INCB:	.FCTR	C,D,E,F,G,H,I,KC:	.FCTR	QUESUM-LB0:[1,24]QMG/LB:QMGSYMD:	.FCTR	MEMSUM-X1-X2E:	.FCTR	APPSUM-X1-X2F:	.FCTR	DSKSUM-X1G:	.FCTR	MSG34-X1-X2H:	.FCTR	TRAN34-X2-X1I:	.FCTR	TST34-X1-X2J:	.FCTR	MEMINI-X1K:	.FCTR	HELPX1:	.FCTR	LB0:[1,54]KERNEL.STB/SSX2:	.FCTR	LB0:[1,1]TPSCOM.STB/SSX:	.FCTR	LB0:[1,1]TPSODT/DA	.END ^         s:  kQÁ› 8$         MEM::	RETURNMEMINI::RETURN	.END            s:  ^Á› 8$     J    	±Œ:    ¯”L      ( R  h  Ry:h  ¯”             ‡ ‡  J          Õ˜axQÁ› 8$        DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     14-FEB-79   19:46



PARTITION NAME : GEN   
IDENTIFICATION : V1.0  
TASK  UIC      : [300,30]
STACK    LIMITS: 120216 121215 001000 00512.
PRG XFR ADDRESS: 121636
TASK ATTRIBUTES: CP,PR             
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 5120. WORDS
TASK ADDRESS LIMITS: 120000 143743
R-W DISK BLK LIMITS: 000002 000050 000047 00039.




DEMOXX.TSK;31 OVERLAY DESCRIPTION:

BASE    TOP        LENGT      H
----    ---        ------
120000  132603  012604  05508.       DEMOPR
132604  143743  011140  04704.            QUESUM
132604  133177  000374  00252.            MEMSUM
132604  135527  002724  01492.            APPSUM
132604  133757  001154  00620.            DSKSUM
132604  134217  001414  00780.            MSG34 
132604  137667  005064  02612.            TRAN34
132604  133727  001124  00596.            TST34 
132604  134053  001250  00680.            HELP  
DEMOXX.TSK;31   MEMORY ALLOCATION MA      P  TKB             PAGE 2
DEMOPR               14-FEB-79   19:46




*** ROOT SEGMENT: DEMOPR


R/W MEM  LIMITS: 120000 132603 012604 05508.
DISK BLK LIMITS: 000002 000014 000013 00011.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 121216 010112 04170.
                          121216 006644 03492. DEMO   V1.0   DEMOPR.OBJ;3
                                130062 000556 00366. MISCEL V1.0   MISC.OBJ;7
                          130640 000004 00004. .MAIN.        INC.OBJ;6
                          130644 000216 00142. CBTA   04.2   SYSLIB.OLB;10
                          131062 000246 00166. EDDAT  02     SYSLIB.OLB;10
$DPB$$:(RW,I,LCL,REL,CON) 131330 000030 00024.
                          131330 000030 00024. DEMO   V1.0   DEMOPR.OBJ;3
$$ALER:(RW,I,LCL,REL,CON) 131360 000024 00020.
                          131360 000024 00020. ALERR  00     SYSLIB      .OLB;10
$$ALVC:(RW,D,LCL,REL,CON) 131404 000110 00072.
$$AUTO:(RW,I,LCL,REL,CON) 131514 000130 00088.
                          131514 000130 00088. AUTO   08     SYSLIB.OLB;10
$$FSR1:(RW,D,GBL,REL,OVR) 131644 000000 00000.
                          131644 000000 00000. DEMO   V1.0   DEMOPR.OBJ;3
                          131644 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
$$FSR2:(RW,D,GBL,REL,CON) 131644 000104 00068.
                          131644 000104 00068. FCSFSR 0303MS SYSLIB.OLB;10
$$MRKS:(      RO,I,LCL,REL,OVR) 132334 000076 00062.
                          132334 000000 00000. AUTO   08     SYSLIB.OLB;10
                          132334 000076 00062. OVCTL  12.01  SYSLIB.OLB;10
                          132334 000000 00000. OVDAT  07     SYSLIB.OLB;10
$$OVDT:(RW,D,LCL,REL,OVR) 131750 000020 00016.
                          131750 000020 00016. OVDAT  07     SYSLIB.OLB;10
$$OVRS:(RW,I,LCL,ABS,CON) 000000 000000 00000.
                          000000 000000 00000. OVRES  07     SYSLIB.OLB;      10
$$RDSG:(RO,I,LCL,REL,OVR) 132432 000150 00104.
                          132432 000000 00000. AUTO   08     SYSLIB.OLB;10
                          132432 000150 00104. OVCTL  12.01  SYSLIB.OLB;10
                          132432 000000 00000. OVDAT  07     SYSLIB.OLB;10
$$RESL:(RW,I,LCL,REL,CON) 131770 000164 00116.
                          131770 000104 00068. FINIT  0102MS SYSLIB.OLB;10
                          132074 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
                          132074       000024 00020. SAVRG  03     SYSLIB.OLB;10
                          132120 000034 00028. SAVR1  0101   SYSLIB.OLB;10
$$RGDS:(RW,D,LCL,REL,CON) 132154 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132154 000002 00002.
                          132154 000002 00002. OVDAT  07     SYSLIB.OLB;10
$$SGD0:(RW,D,LCL,REL,OVR) 132156 000000 00000.
                          132156 000000 00000. OVDAT  07     SYSLIB.OLB;10
$$SGD1:(RW,D,LCL,REL,CON) 132156 000154 00108.
$$SGD2:(RW,D,LCL,REL,OVR) 132332 000002 00002.
                                132332 000002 00002. OVDAT  07     SYSLIB.OLB;10
DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 3
DEMOPR               14-FEB-79   19:46



$$WNDS:(RW,D,LCL,REL,CON) 132334 000000 00000.



GLOBAL SYMBOLS:

ACBD   130040-R  FD.RWM 000001    IO.WAL 000410    N.STBL 000002    RCVDT  123352-R  $CBOMG 130666-R  .FSRCB 131644-R  
APPSUM 131424-R  FO.RD  000001    JSTFY  127736-R  N.SZSG 000012    RECBUF 127250-R  $CBOSG 130674-R  .FSRPT 000050    
BUFCTR 1214      22-R  F.BKDS 000020    JSTFY1 127724-R  OF.HIT 121574-R  SCBINI 130422-R  $CBTA  130724-R  .MBFCT 131744-R  
BUFPTR 121420-R  F.BKST 000024    MEM    130640-R  OF.RD  121570-R  SCBNXT 130506-R  $CBTMG 130702-R  .NALER 131760-R  
CADR   125342-R  F.BKVB 000064    MEMINI 130642-R  OF.WRT 121572-R  TRANS  131454-R  $CBVER 130666-R  .NIOST 131754-R  
CCBINI 130170-R  F.DVNM 000134    MEMSUM 131414-R  OUTBUF 126140-R  TRINIT 131464-R  $DAT   131126-R  .NMRKS 131766-R  
CCBNXT 130346-R  F.EFBK 000010    MSGE         131444-R  OUTLIN 126024-R  TSTDSP 131474-R  $DSW   000046    .NOVLY 131750-R  
COMMUN 127300-R  F.FNB  000102    N.ALER 000010    OUTPUT 121404-R  $ALBP1 131532-R  $MARKS 132334-R  .NOVPT 000042    
COM.AD 125340-R  F.STBK 000036    N.FID  000000    PRCNT  130016-R  $ALBP2 131630-R  $OTSV  000052    .NRDSG 131764-R  
CSIZE  125344-R  F.UNIT 000136    N.IOST 000004    PRT.OK 121564-R  $ALERR 131360-R  $SAVRG 132074-R  .NSTBL 131752-R  
CYCLE  121566-R  HELP   131504-R  N.MRKS 000016    QFDB   123146-R        $AUTO  131514-R  $TIM   131204-R  .NSZSG 131762-R  
DIRERR 127654-R  IE.ACT 177771    N.OVLY 000000    QUEINI 123406-R  $CBDAT 130644-R  $VEXT  000056    .SAVR1 132120-R  
DSKSUM 131434-R  IE.ITS 177770    N.OVPT 000054    QUESUM 131404-R  $CBDMG 130652-R  $$CPU  000070    ..FINI 132000-R  
FA.SHR 000040    IO.ATA 001410    N.RDSG 000014    QUE.ST 123404-R  $CBDSG 130660-R  .FINIT 131770-R  
DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 4
QUESUM               14-FEB-79   19:46



**      * SEGMENT: QUESUM


R/W MEM  LIMITS: 132604 143743 011140 04704.
DISK BLK LIMITS: 000015 000026 000012 00010.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132604 003464 01844.
                          132604 003464 01844. SUMMAR V1.0   QUESUM.OBJ;13
$$ALVC:(RW,D,LCL,REL,CON) 136270 000000 00000.
$$RESL:(RW,I,LCL,REL,CON) 136270 005454 02860.
                                136270 000070 00056. ARITH  03     SYSLIB.OLB;10
                          136360 000320 00208. CLOSE  0112S  SYSLIB.OLB;10
                          136700 001552 00874. OPFID  0125S  SYSLIB.OLB;10
                          140452 000046 00038. READ   0102MS SYSLIB.OLB;10
                          140520 000022 00018. WAITU  0100MS SYSLIB.OLB;10
                          140542 000034 00028. ANSPAD 0100MS SYSLIB.OLB;10
                          140576 000020 00016. BKRG   0100MS SYS      LIB.OLB;10
                          140616 000014 00012. COMMON 0101MS SYSLIB.OLB;10
                          140632 000126 00086. XQIOI  0102MS SYSLIB.OLB;10
                          140760 000132 00090. WAITI  0102MS SYSLIB.OLB;10
                          141112 000112 00074. RSTFDB 0102S  SYSLIB.OLB;10
                          141224 000126 00086. WTWAIT 0100S  SYSLIB.OLB;10
                          141352 000240 00160. RQLCB  03     SYSLIB.OLB;10
                          141612 000270 0018      4. ASSLUN 0113MS SYSLIB.OLB;10
                          142102 000062 00050. BDBREC 0100MS SYSLIB.OLB;10
                          142164 000134 00092. RETADR 0102MS SYSLIB.OLB;10
                          142320 000074 00060. RDWAIT 0102S  SYSLIB.OLB;10
                          142414 000160 00112. RDWRIT 0104MS SYSLIB.OLB;10
                          142574 000312 00202. RWLONG 0002MS SYSLIB.OLB;10
                          143106 000154 00108. EOFCHK 0100MS SYSLIB.OLB;10
                                143262 000304 00196. CKALOC 0104MS SYSLIB.OLB;10
                          143566 000022 00018. WATNOD 0100MS SYSLIB.OLB;10
                          143610 000044 00036. RWBLK  0101S  SYSLIB.OLB;10
                          143654 000032 00026. CONTRL 100MS  SYSLIB.OLB;10
                          143706 000036 00030. WATSET 0101MS SYSLIB.OLB;10
$$RTS :(RW,I,GBL,REL,OVR) 132154 000002 00002.



GLOBAL SYMBOLS:

QE.BDT 000120    QE.IJS 000146    QE.NPS 000127    QE.QNE 000102    QE.TYP 000110          QQ.SBA 000200    QS.FSJ 000004    
QE.BQN 000134    QE.INM 000151    QE.NP0 000130    QE.RED 000124    QE.UNL 000123    QQ.SMD 000100    QS.SBA 000200    
QE.BSN 000077    QE.IO  000114    QE.NVT 000144    QE.REQ 000131    QF.ADE 000200    QQ.STO 000040    QS.SHJ 000004    
QE.DIR 000117    QE.JEA 000111    QE.OFL 000122    QE.ROP 000115    QJ.ABL 000040    QS.FFO 000200    QS.SLC 000020    
QE.DNE 000121    QE.JNE 000112    QE.OJD 000002    QE.SDF 000107    QJ.AFL 000100    QS.FNF 000001    QS.SMD 00      0100    
QE.IAR 000116    QE.MEX 000132    QE.PRI 000053    QE.SEA 000101    QJ.AHJ 000004    QS.FSA 000040    QS.STO 000040    
QE.IDB 000133    QE.NAV 000125    QE.QDF 000106    QE.SEX 000001    QJ.ALC 000020    QS.FSD 000100    QS.SWI 000010    
QE.IFC 000001    QE.NFS 000113    QE.QEA 000100    QE.SMD 000105    QJ.ARE 000200    QS.FSF 000010    QS.SXE 000002    
QE.IID 000150    QE.NJE 000145    QE.QMD 000104    QE.SNE 000103    QJ.AWI 000010    QS.FSI 000020    QUESUM 135262-R  
DEMOXX.TSK;31   M      EMORY ALLOCATION MAP  TKB             PAGE 5
QUESUM               14-FEB-79   19:46



Q.FATT 000011    Q.JFI  000020    Q.JTI  000016    Q.SFL  000016    .CLOSE 136360-R  ..EFCK 143106-R  ..RWLG 142574-R  
Q.FCPN 000030    Q.JFO  000037    Q.JUIC 000014    Q.SFO  000017    .CTRL  143654-R  ..EFC1 143114-R  ..SEFB 143164-R  
Q.FDEV 000006    Q.JLFI 000022    Q.QASS 000006    Q.SLEN 000020    .FATAL 140630-R  ..EXTD 143362-R  ..WAEF 141042-R  
Q.FFN  000014    Q.JLNK 000000    Q.QCJL 000012    Q.SNAM       000000    .OPFID 136700-R  ..EXT1 143436-R  ..WAIT 141022-R  
Q.FJ   000004    Q.JLPP 000036    Q.QHJL 000016    Q.SNUM 000005    .READ  140452-R  ..FCSX 140616-R  ..WAND 143566-R  
Q.FLNK 000000    Q.JMXP 000026    Q.QLEN 000020    Q.SST  000004    .WAIT  140520-R  ..IDPB 140730-R  ..WAST 143706-R  
Q.FNC  000026    Q.JNAM 000004    Q.QNAM 000000    Q.SUCB 000010    ..ALC1 143332-R  ..QIOW 140772-R  ..WBLK 143616-R  
Q.FNCP 000027    Q.JNPP 000024    Q.QNUM 000005    Q.SUIC 000014    ..ALOC 143262-R        ..RBLK 143610-R  ..WTRD 142466-R  
Q.FSEQ 000002    Q.JPRI 000034    Q.QOJL 000010    $DIV   136322-R  ..ALUN 141616-R  ..RFDB 141112-R  ..WTWA 141224-R  
Q.FUFD 000012    Q.JQ   000010    Q.QST  000004    $MUL   136270-R  ..ANSP 140542-R  ..RTAD 142164-R  ..WTWD 141224-R  
Q.JAFT 000030    Q.JQL  000033    Q.QTJL 000014    $RLCB  141352-R  ..BDRC 142102-R  ..RWAC 142342-R  ..WTW1 141230-R  
Q.JATT 000035    Q.JSEQ 000002    Q.SASS 000006    $RQCB  141454-R  ..BKRG 140576-R  ..RWAT 142320-R  ..XQIO 1406      32-R  
Q.JCFI 000022    Q.JSY  000012    Q.SCJ  000012    .ASLUN 141612-R  ..CTRL 143660-R  ..RWCK 142414-R  ..XQI1 140650-R  
DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 6
MEMSUM               14-FEB-79   19:46



*** SEGMENT: MEMSUM


R/W MEM  LIMITS: 132604 133177 000374 00252.
DISK BLK LIMITS: 000027 000027 000001 00001.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----        -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132604 000374 00252.
                          132604 000374 00252. SUMRY2 V1.0   MEMSUM.OBJ;13
$$ALVC:(RW,D,LCL,REL,CON) 133200 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132154 000002 00002.



GLOBAL SYMBOLS:

C.CSIZ 000040    P.HDR  000032    TS.OUT 000400    T.TCBL 000030    $CRAVL 006256    $RQSCH 001554    .CCBBA 000226    
IO.RVB 010400    P.HIT  000020    T.ACTL 000052    T2.AST 100000    $CXDBL 001551    $SIZE  000174    .CCBLH 000222    
IO.WVB 01100      0    P.NUM  000016    T.ASTL 000016    T2.DST 040000    $C5TA  006524    $TCPU0 001574    .SCBTA 000156    
IS.SUC 000001    P.SIZE 000016    T.NAM  000006    T2.SPN 000004    $DIV   017256    $TCPU1 001576    .SCBTS 000166    
MEMSUM 132730-R  ST.NAT 000004    T.PCB  000046    T2.STP 000020    $LDRPT 006316    $TKTCB 001546    .SCBTT 000164    
P.ALLO 000030    S.SAT  000014    T.STAT 000032    T2.WFR 000001    $MUL   017224    $TSKHD 006320    .SCBTZ 000160    
P.DEAD 000024    TS.EXE 100000    T.ST2        000034    $BASE  000172    $PARHD 006314    .ACTTB 000204    
DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 7
APPSUM               14-FEB-79   19:46



*** SEGMENT: APPSUM


R/W MEM  LIMITS: 132604 135527 002724 01492.
DISK BLK LIMITS: 000030 000032 000003 00003.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132604 002724 01492.
                                132604 002724 01492. APPLIC V1.0   APPSUM.OBJ;51
$$ALVC:(RW,D,LCL,REL,CON) 135530 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132154 000002 00002.



GLOBAL SYMBOLS:

APPSUM 132650-R  FRMLUN 000010    I.PRMS 000050    SY.TST 000006    T.ST2  000034    $MUL   017224    .CCBLH 000222    
BF.OND 000020    F.FLG  000006    MMLUN  000002    S.FST  000010    T2.AST 100000    $PARHD 006314    .SCBTA 000156    
B.FLG  000010    F.IMP  000026    P.ALLO 000030    S.LINK 000040    T2.DST 04      0000    $RQSCH 001554    .SCBTS 000166    
B.LINK 000022    F.NGET 000014    P.DEAD 000024    S.OPER 000043    T2.SPN 000004    $SIZE  000174    .SCBTT 000164    
B.LRUF 000004    F.NINS 000022    P.HDR  000032    S.SAT  000014    T2.STP 000020    $TCPU0 001574    .SCBTZ 000160    
B.LUN  000011    F.NLOK 000024    P.HIT  000020    S.TYP  000017    T2.WFR 000001    $TCPU1 001576    
B.SIZE 000020    F.NUPD 000016    P.LRUF 000010    T.ACTL 000052    $BASE  000172    $TKTCB 001546    
B.USE  000013    F      .SIZE 000030    P.NUM  000016    T.ASTL 000016    $CRAVL 006256    .ACFSZ 000232    
C.CSIZ 000040    IO.RVB 010400    SO.O   000002    T.NAM  000006    $CXDBL 001551    .ACFTB 000230    
C.SLT  000020    IO.WVB 011000    ST.NAT 000004    T.PCB  000046    $C5TA  006524    .ACTTB 000204    
FF.WRK 000010    IS.SUC 000001    SY.TIM 000004    T.STAT 000032    $DIV   017256    .CCBBA 000226    
DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 8
DSKSUM               14-FEB-79   19:46



***       SEGMENT: DSKSUM


R/W MEM  LIMITS: 132604 133757 001154 00620.
DISK BLK LIMITS: 000033 000034 000002 00002.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132604 001052 00554.
                          132604 000724 00468. DISPLA V1.0   DSKSUM.OBJ;14
                          133530 000126 00086. CDDMG  00     SYSLIB.OLB;10
$$ALVC:(RW,D,LCL,REL,CON) 1336      56 000000 00000.
$$RESL:(RW,I,LCL,REL,CON) 133656 000100 00064.
                          133656 000100 00064. DARITH 0004   SYSLIB.OLB;10
$$RTS :(RW,I,GBL,REL,OVR) 132154 000002 00002.



GLOBAL SYMBOLS:

DSKSUM 132652-R  T.ACTL 000052    T.ST2  000034    T2.WFR 000001    $DDIV  133714-R  $PARHD 006314    
IO.RVB 010400    T.ASTL 000016    T2.AST 100000    $CDDMG 133530-R  $DEVHD 006264    $RQSCH 001554    
IO.WVB 011000    T.NAM  000006    T2.DST 040000    $CRAVL 006256    $DIV   017256    $TCP      U0 001574    
IS.SUC 000001    T.PCB  000046    T2.SPN 000004    $CXDBL 001551    $DMUL  133656-R  $TCPU1 001576    
P.HDR  000032    T.STAT 000032    T2.STP 000020    $C5TA  006524    $MUL   017224    $TKTCB 001546    
DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 9
MSG34                14-FEB-79   19:46



*** SEGMENT: MSG34 


R/W MEM  LIMITS: 132604 134217 001414 00780.
DISK BLK LIMITS: 000035 000036 000002 00002.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                              TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132604 001412 00778.
                          132604 001412 00778. MESSAG V1.0   MSG34.OBJ;10
$$ALVC:(RW,D,LCL,REL,CON) 134216 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132154 000002 00002.



GLOBAL SYMBOLS:

BF.ALC 000001    IO.RVB 010400    M.FLG  000024    P.NUM  000016    T.STAT 000032    $CXDBL 001551    $TKTCB 001546    
BF.OND 000020    IO.WVB 011000    M.NOR        000034    ST.NAT 000004    T.ST2  000034    $C5TA  006524    .ACTTB 000204    
B.ADDR 000016    IS.SUC 000001    M.ROT  000060    S.FST  000010    T2.AST 100000    $DIV   017256    .CCBBA 000226    
B.FLG  000010    MF.ACT 000001    M.SST  000054    S.NAM  000000    T2.DST 040000    $MUL   017224    .CCBLH 000222    
B.LINK 000022    MMLUN  000002    M.TIM  000044    S.SAT  000014    T2.SPN 000004    $PARHD 006314    .SCBTA 000156    
B.LUN  000011    MSGE   133252-R  P.ALLO 000030    T.ACTL 000052          T2.STP 000020    $RQSCH 001554    .SCBTS 000166    
C.CSIZ 000040    M.BSZ  000056    P.DEAD 000024    T.ASTL 000016    T2.WFR 000001    $SIZE  000174    .SCBTT 000164    
C.SLT  000020    M.CCB  000022    P.HDR  000032    T.NAM  000006    $BASE  000172    $TCPU0 001574    .SCBTZ 000160    
C.TDB  000006    M.DNR  000035    P.HIT  000020    T.PCB  000046    $CRAVL 006256    $TCPU1 001576    
DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 10
TRAN34               14-FEB-79   19:46



**      * SEGMENT: TRAN34


R/W MEM  LIMITS: 132604 137667 005064 02612.
DISK BLK LIMITS: 000037 000044 000006 00006.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132604 004764 02548.
                          132604 004636 02462. TRANSA V1.0   TRAN34.OBJ;14
                          137442 000126 00086. CDDMG  00     SYSLIB.OLB;10
$$ALVC:(RW,D,LCL,REL,CON) 13      7570 000000 00000.
$$RESL:(RW,I,LCL,REL,CON) 137570 000100 00064.
                          137570 000100 00064. DARITH 0004   SYSLIB.OLB;10
$$RTS :(RW,I,GBL,REL,OVR) 132154 000002 00002.



GLOBAL SYMBOLS:

C.CSIZ 000040    P.ALLO 000030    TRANS  135712-R  T.ST2  000034    $CRAVL 006256    $RQSCH 001554    .SCBTA 000156    
C.SCB  000010    P.DEAD 000024    TRINIT 135654-R  T2.AST 100000    $CXDBL 001551    $SIZE  000174    .SCBTS 000166    
C.TCB  000026    P.HDR  000032    T.ACTL 000052    T2      .DST 040000    $C5TA  006524    $TCPU0 001574    .SCBTT 000164    
C.TDB  000006    P.HIT  000020    T.ASTL 000016    T2.SPN 000004    $DDIV  137626-R  $TCPU1 001576    .SCBTZ 000160    
C.TID  000000    P.NUM  000016    T.NAM  000000    T2.STP 000020    $DIV   017256    $TKTCB 001546    
IO.RVB 010400    ST.NAT 000004    T.NTR  000012    T2.WFR 000001    $DMUL  137570-R  .ACTTB 000204    
IO.WVB 011000    S.SAT  000014    T.PCB  000046    $BASE  000172    $MUL   017224    .CCBBA 000226    
IS.SUC 0000      01    S.TERM 000142    T.STAT 000032    $CDDMG 137442-R  $PARHD 006314    .CCBLH 000222    
DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 11
TST34                14-FEB-79   19:46



*** SEGMENT: TST34 


R/W MEM  LIMITS: 132604 133727 001124 00596.
DISK BLK LIMITS: 000045 000046 000002 00002.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,C      ON) 132604 001124 00596.
                          132604 001124 00596. TST    V1.0   TST34.OBJ;6
$$ALVC:(RW,D,LCL,REL,CON) 133730 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132154 000002 00002.



GLOBAL SYMBOLS:

C.CSIZ 000040    P.NUM  000016    S.MXSZ 000056    T.NAM  000006    T2.WFR 000001    $RQSCH 001554    .SCBTA 000156    
IO.RVB 010400    ST.NAT 000004    S.NAM  000000    T.PCB  000046    $BASE  000172    $SIZE  000174    .SCBTS 000166    
IO.WVB 011000    SY.TST 000006    S.SAT  000014          T.STAT 000032    $CRAVL 006256    $TCPU0 001574    .SCBTT 000164    
IS.SUC 000001    S.CML  000045    S.TLOD 000066    T.ST2  000034    $CXDBL 001551    $TCPU1 001576    .SCBTZ 000160    
P.ALLO 000030    S.FLOD 000070    S.TYP  000017    T2.AST 100000    $C5TA  006524    $TKTCB 001546    
P.DEAD 000024    S.IO   000076    TSTDSP 133262-R  T2.DST 040000    $DIV   017256    .ACTTB 000204    
P.HDR  000032    S.LINK 000040    T.ACTL 000052    T2.SPN 000004    $MUL   017224    .CCBBA 000226    
P.HIT        000020    S.MCT  000016    T.ASTL 000016    T2.STP 000020    $PARHD 006314    .CCBLH 000222    
DEMOXX.TSK;31   MEMORY ALLOCATION MAP  TKB             PAGE 12
HELP                 14-FEB-79   19:46



*** SEGMENT: HELP  


R/W MEM  LIMITS: 132604 134053 001250 00680.
DISK BLK LIMITS: 000047 000050 000002 00002.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,R   ø  EL,CON) 132604 001246 00678.
                          132604 001246 00678. HELP          HELP.OBJ;4
$$ALVC:(RW,D,LCL,REL,CON) 134052 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132154 000002 00002.



GLOBAL SYMBOLS:

HELP   133762-R  




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 92968.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 15076. WORDS (58. PAGES)
    SIZE OF WORK FILE: 13056. WORDS (51. PAGES)

    ELAPSED TIME:00:03:17
ø         ÕÀ]_MÁ› 8$        


                                                                PAGE :1    
******************************************************************************
*      ***TRAX DEMO***          UP :00 HRS           14-FEB-79 20:00:39      *
*      *HRDCPY*    CPU:54%    POOL=498:1264:36    CACHE=17:22:61  46:78      *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  CIVRFY       2         0         0        85      234       117       0   *
*  EO003T       2         0        10       162      135        16       0   *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :00 HRS           14-FEB-79 20:00:47      *
*      * IDLE *    CPU:44%    POOL=498:896:37     CACHE=20:6:74  17:58       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    ENTORD        21           769      006V62           403        NO      *
*                                        013V62           393        NO      *
*                                        008V62           423        NO      *
*                                        011V62           389              YES     *
*                                        012V62           402        NO      *
*                                        015V62           415        YES     *
*                                        005V62           391        NO      *
*                                        032V62           420        NO      *
*                                        001V62           409        NO      *
*                                        014V62           400        NO      *
*                                              002V62           411        NO      *
*                                        028V62           394        NO      *
*                                        031V62           425        YES     *
*                                        010V62           422        NO      *
*                                        009V62           388        YES     *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :2    
******************************************************************************
*      ***TRAX DEMO***          UP :00 HRS           14-FEB-79 20:00:47      *
*      * IDLE *    CPU:44%    POOL=498:896:37     CACHE=20:6:74  17:58       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        030V62           412        YES     *
*                                        007V62           421        NO      *
*                                        027V62           382        NO      *
*                                        026V62           401              NO      *
*                                        004V62           395        NO      *
*                                        025V62           398        NO      *
*    RCVSTK         1            48      003V62           424        YES     *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :00 HRS           14-FEB-79 20:00:55      *
*      * IDLE *    CPU:38%    POOL=498:896:36     CACHE=10:30:60  13:30      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        030V62           412        YES     *
*                                        007V62           421        NO      *
*                                        027V62           382        NO      *
*                                        026V62           401              NO      *
*                                        004V62           395        NO      *
*                                        025V62           398        NO      *
*    RCVSTK         1            48      003V62           424        YES     *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :3    
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:01      *
*      * IDLE *    CPU:40%    POOL=498:1084:38    CACHE=7:6:87  12:58        *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  22         MESSAGES:            *
*       PRINT:                                               ACTIVE:   6     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  28     *
*       ACT. JOBS:   0              LOADED:   8              MEMORY:  29%    *
*      WAIT. JOBS:   0              IN USE:   4                              *
*                                   QUEUED:   0         APP. FI      LES:          *
*       BATCH:                      MEMORY:   4%               OPEN:    6    *
*       ACT. PROC:   1                                        READS:   22    *
*       ACT. JOBS:   0         STATIONS:                     WRITES:   14    *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:    0    *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  16                                         DB0 : 175302  *
*          MEMORY:  73K        FORMS:                          DB1 : 85719   *
*             OUT:   0            IN CACHE:   5 (0)                          *
*          MEMORY:   0K             MEMORY:  10%                             *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:08      *
*      * IDLE *    CPU:50%    POOL=498:1272:38    CACHE=1:1:98  16:87        *
*                                                                            *
*                          *** MESSAGE DISPLAY ***                           *
*  TRANS.    SOURCE     STAT                              TIME    #  RTES          *
*   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   *
*                                                                            *
*  ENTORD    TERM08    EO001T    SLOT    NACT     20:01:08     1        56   *
*  ENTORD    TERM05    EO003T    SLOT    NACT     19:57:38     1       192   *
*  DPYSTK    TERM16    DS001T    SLOT    NACT     20:00:57     0         8   *
*  ENTORD    TERM10    EO001T    SLOT    NACT     20:01:06           0        56   *
*  ENTORD    TERM09    EO003T    SLOT    NACT     19:57:06     1       192   *
*  ENTORD    TERM07    EO001T    MESS    NACT     20:00:54     1        56   *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :4    
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:15      *
*      * IDLE *    CPU:45%    POOL=498:1084:33    CACHE=20:24:56  14:71      *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  EO002T       2         0         0       116      305       110       0   *
*  EO003T       2         0        11       162      138        16       0   *
*  RS001T       1         0         0        76       49        15       0   *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:22      *
*      * IDLE *    CPU:31%    POOL=498:1272:41    CACHE=8:22:70  6:66        *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    ENTORD        20           772      006V62           403        NO      *
*                                        013V62           393        YES     *
*                                        008V62           423        NO      *
*                                        012V62           402              NO      *
*                                        015V62           415        NO      *
*                                        005V62           391        YES     *
*                                        032V62           420        NO      *
*                                        029V62           426        NO      *
*                                        001V62           409        NO      *
*                                        014V62           400        NO      *
*                                              002V62           411        NO      *
*                                        028V62           394        NO      *
*                                        031V62           425        YES     *
*                                        010V62           422        NO      *
*                                        009V62           388        NO      *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :5    
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:22      *
*      * IDLE *    CPU:31%    POOL=498:1272:41    CACHE=8:22:70  6:66        *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        030V62           412        NO      *
*                                        007V62           421        NO      *
*                                        026V62           401        NO      *
*                                        004V62           395              NO      *
*                                        025V62           398        NO      *
*    RCVSTK         1            49      027V62           428        YES     *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:30      *
*      * IDLE *    CPU:37%    POOL=498:896:38     CACHE=14:6:80  12:33       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        030V62           412        NO      *
*                                        007V62           421        NO      *
*                                        026V62           401        NO      *
*                                        004V62           395              NO      *
*                                        025V62           398        NO      *
*    RCVSTK         1            49      027V62           428        YES     *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :6    
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:36      *
*      * IDLE *    CPU:77%    POOL=498:1190:35    CACHE=18:24:58  31:83      *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  21         MESSAGES:            *
*       PRINT:                                               ACTIVE:   7     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  25     *
*       ACT. JOBS:   0              LOADED:   6              MEMORY:  30%    *
*      WAIT. JOBS:   0              IN USE:   5                              *
*                                   QUEUED:   0         APP. FI      LES:          *
*       BATCH:                      MEMORY:   7%               OPEN:    6    *
*       ACT. PROC:   1                                        READS:   25    *
*       ACT. JOBS:   0         STATIONS:                     WRITES:   25    *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:    0    *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  17                                         DB0 : 175302  *
*          MEMORY:  80K        FORMS:                          DB1 : 85719   *
*             OUT:   0            IN CACHE:   1 (0)                          *
*          MEMORY:   0K             MEMORY:   5%                             *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:45      *
*      * IDLE *    CPU:30%    POOL=498:896:37     CACHE=13:16:71  12:25      *
*                                                                            *
*                          *** MESSAGE DISPLAY ***                           *
*  TRANS.    SOURCE     STAT                              TIME    #  RTES          *
*   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   *
*                                                                            *
*  ENTORD    TERM13    EO003T    SLOT    NACT     19:59:00     1       192   *
*  CHNCST    TERM11    CIVRFY    SLOT    NACT     20:01:42     2        42   *
*  RCVSTK    TERM27    RS001T    SLOT    NACT     20:01:15     1        14   *
*  ENTORD    TERM05    EO003T    SLOT    NACT     19:57:38           0       192   *
*  ENTORD    TERM29    EO001T    SLOT    NACT     20:01:23     0       192   *
*  ENTORD    TERM28    EO003T    SLOT    NACT     19:59:11     1       192   *
*  ENTORD    TERM31    EO002T    SLOT    NACT     20:01:35     0       192   *
*  ENTORD    TERM04    EO003T    SLOT    NACT     19:59:04     1       192   *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :7    
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:52      *
*      * IDLE *    CPU:39%    POOL=498:896:33     CACHE=9:18:73  7:14        *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  CIVRFY       2         0         0        85      240       118       0   *
*  EO002T       2         0         1       116      312       111       0   *
*  EO003T       3         0        11       162      140        16       0   *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:58      *
*      * IDLE *    CPU:55%    POOL=404:708:38     CACHE=12:8:80  14:57       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    CHNCST         1            29      011V62           431        NO      *
*    DPYSTK         2            93      003V62           433        YES     *
*                                        005V62           434        YES     *
*    ENTORD        20           774      006V62           403              NO      *
*                                        009V62           432        YES     *
*                                        013V62           393        NO      *
*                                        008V62           423        YES     *
*                                        012V62           402        NO      *
*                                        015V62           415        NO      *
*                                        032V62           420        NO      *
*                                              029V62           426        YES     *
*                                        001V62           409        NO      *
*                                        016V62           430        NO      *
*                                        014V62           400        NO      *
*                                        002V62           411        NO      *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :8    
******************************************************************************
*      ***TRAX DEMO***          UP :01 HRS           14-FEB-79 20:01:58      *
*      * IDLE *    CPU:55%    POOL=404:708:38     CACHE=12:8:80  14:57       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        028V62           394        YES     *
*                                        031V62           425        NO      *
*                                        010V62           422        NO      *
*                                        030V62           412              NO      *
*                                        007V62           421        NO      *
*                                        026V62           401        NO      *
*                                        004V62           395        YES     *
*                                        025V62           398        NO      *
*    RCVSTK         1            49      027V62           428        NO      *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 20:02:07      *
*      * IDLE *    CPU:36%    POOL=404:1084:39    CACHE=0:1:99  12:50        *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        028V62           394        YES     *
*                                        031V62           425        NO      *
*                                        010V62           422        NO      *
*                                        030V62           412              NO      *
*                                        007V62           421        NO      *
*                                        026V62           401        NO      *
*                                        004V62           395        YES     *
*                                        025V62           398        NO      *
*    RCVSTK         1            49      027V62           428        NO      *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :9    
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 20:02:13      *
*      * IDLE *    CPU:44%    POOL=498:1272:35    CACHE=20:4:76  6:16        *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  22         MESSAGES:            *
*       PRINT:                                               ACTIVE:   5     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  30     *
*       ACT. JOBS:   0              LOADED:   5              MEMORY:  29%    *
*      WAIT. JOBS:   0              IN USE:   2                              *
*                                   QUEUED:   0         APP. FI      LES:          *
*       BATCH:                      MEMORY:  34%               OPEN:    6    *
*       ACT. PROC:   1                                        READS:   20    *
*       ACT. JOBS:   0         STATIONS:                     WRITES:   16    *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:    0    *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  15                                         DB0 : 175302  *
*          MEMORY:  71K        FORMS:                          DB1 : 85679   *
*             OUT:   0            IN CACHE:   2 (0)                          *
*          MEMORY:   0K             MEMORY:   6%                             *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 20:02:20      *
*      * IDLE *    CPU:41%    POOL=498:1460:36    CACHE=6:24:70  6:66        *
*                                                                            *
*                          *** MESSAGE DISPLAY ***                           *
*  TRANS.    SOURCE     STAT                              TIME    #  RTES          *
*   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   *
*                                                                            *
*  ENTORD    TERM29    EO003T    SLOT    NACT     20:02:11     1       192   *
*  ENTORD    TERM31    EO003T    SLOT    NACT     20:01:58     1       192   *
*  ENTORD    TERM29    EO003T    SLOT    NACT     20:02:11     1       192   *
*  DPYSTK    TERM13    SIVRFY    SLOT    NACT     20:02:19           2         8   *
*  ENTORD    TERM16    EO001T    MESS    NACT     20:02:10     0        56   *
*  ENTORD    TERM28    EO003T    SLOT    NACT     19:59:11     1       192   *
*  ENTORD    TERM25    EO003T    SLOT    NACT     19:59:24     1       192   *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :10   
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 20:02:27      *
*      * IDLE *    CPU:39%    POOL=498:1460:34    CACHE=5:28:67  8:62        *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  EO003T       2         0        12       162      143        16       0   *
*  RS001T       1         0         0        76       50        15       0   *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 20:02:35      *
*      * IDLE *    CPU:41%    POOL=498:1606:38    CACHE=11:4:85  16:68       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    CHNCST         1            29      011V62           431        NO      *
*    DPYSTK         1            95      003V62           437        NO      *
*    ENTORD        17           774      006V62           403        NO      *
*                                        009V62           432              NO      *
*                                        008V62           423        NO      *
*                                        012V62           402        YES     *
*                                        015V62           415        NO      *
*                                        032V62           420        NO      *
*                                        029V62           426        NO      *
*                                        001V62           409        NO      *
*                                              016V62           430        NO      *
*                                        014V62           400        NO      *
*                                        002V62           411        NO      *
*                                        031V62           425        NO      *
*                                        010V62           422        NO      *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :11   
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 20:02:35      *
*      * IDLE *    CPU:41%    POOL=498:1606:38    CACHE=11:4:85  16:68       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        030V62           412        NO      *
*                                        007V62           421        NO      *
*                                        026V62           401        YES     *
*                                        025V62           398              NO      *
*    RCVSTK         1            50      027V62           436        NO      *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 20:02:43      *
*      * IDLE *    CPU:41%    POOL=498:1272:34    CACHE=24:26:50  23:78      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        030V62           412        NO      *
*                                        007V62           421        NO      *
*                                        026V62           401        YES     *
*                                        025V62           398              NO      *
*    RCVSTK         1            50      027V62           436        NO      *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :12   
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 20:02:49      *
*      * IDLE *    CPU:39%    POOL=498:1418:34    CACHE=10:24:66  8:25       *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  19         MESSAGES:            *
*       PRINT:                                               ACTIVE:   5     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  25     *
*       ACT. JOBS:   0              LOADED:   7              MEMORY:  24%    *
*      WAIT. JOBS:   0              IN USE:   3                              *
*                                   QUEUED:   0         APP. FI      LES:          *
*       BATCH:                      MEMORY:   0%               OPEN:    6    *
*       ACT. PROC:   1                                        READS:   28    *
*       ACT. JOBS:   0         STATIONS:                     WRITES:   32    *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:    0    *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  15                                         DB0 : 175281  *
*          MEMORY:  77K        FORMS:                          DB1 : 85659   *
*             OUT:   0            IN CACHE:   6 (0)                          *
*          MEMORY:   0K             MEMORY:  12%                             *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :02 HRS           14-FEB-79 20:02:57      *
*      * IDLE *    CPU:40%    POOL=498:1042:37    CACHE=13:16:71  21:76      *
*                                                                            *
*                          *** MESSAGE DISPLAY ***                           *
*  TRANS.    SOURCE     STAT                              TIME    #  RTES          *
*   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   *
*                                                                            *
*  ENTORD    TERM06    EO003T    SLOT    NACT     19:59:29     1       192   *
*  ENTORD    TERM13    CIVRFY    SLOT    NACT     20:02:56     2        42   *
*  ENTORD    TERM12    EO003T    SLOT    NACT     19:59:24     0       192   *
*  DPYSTK    TERM27    SIVRFY    SLOT    NACT     20:02:56           2         8   *
*  ENTORD    TERM14    EO003T    SLOT    NACT     20:00:04     1       192   *
*  CHNSTK    TERM25    DS001T    SLOT    NACT     20:02:53     0         8   *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :13   
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:03      *
*      * IDLE *    CPU:38%    POOL=498:776:35     CACHE=23:11:66  5:20       *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  CIVRFY       1         0         0        85      242       118       0   *
*  EO002T       1         0         0       116      319       111       0   *
*  EO003T       2         0        11       162      145        16       0   *
*  SIVRFY       2         0         0        63      120              32       0   *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:09      *
*      * IDLE *    CPU:47%    POOL=498:854:36     CACHE=16:14:70  11:63      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    CHNCST         1            29      011V62           431        NO      *
*    CHNSTK         1            21      025V62           441        NO      *
*    DPYCST         1            52      003V62           445        YES     *
*    DPYSTK         2            99      004V62           444              YES     *
*                                        027V62           442        YES     *
*    ENTORD        16           776      006V62           403        YES     *
*                                        009V62           432        NO      *
*                                        008V62           423        NO      *
*                                        013V62           443        NO      *
*                                        005V62           439        NO      *
*                                              015V62           415        NO      *
*                                        032V62           420        NO      *
*                                        029V62           426        NO      *
*                                        001V62           409        YES     *
*                                        016V62           430        NO      *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :14   
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:09      *
*      * IDLE *    CPU:47%    POOL=498:854:36     CACHE=16:14:70  11:63      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        014V62           400        NO      *
*                                        002V62           411        YES     *
*                                        031V62           425        NO      *
*                                        010V62           422              NO      *
*                                        030V62           412        NO      *
*                                        007V62           421        NO      *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:18      *
*      * IDLE *    CPU:35%    POOL=498:964:39     CACHE=12:1:87 NO CALLS     *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        014V62           400        NO      *
*                                        002V62           411        YES     *
*                                        031V62           425        NO      *
*                                        010V62           422              NO      *
*                                        030V62           412        NO      *
*                                        007V62           421        NO      *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :15   
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:24      *
*      * IDLE *    CPU:43%    POOL=424:964:39     CACHE=5:26:69  9:100       *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  21         MESSAGES:            *
*       PRINT:                                               ACTIVE:   8     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  23     *
*       ACT. JOBS:   0              LOADED:   7              MEMORY:  32%    *
*      WAIT. JOBS:   0              IN USE:   5                              *
*                                   QUEUED:   0         APP. FI      LES:          *
*       BATCH:                      MEMORY:   1%               OPEN:    6    *
*       ACT. PROC:   1                                        READS:   16    *
*       ACT. JOBS:   0         STATIONS:                     WRITES:   18    *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:    0    *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  17                                         DB0 : 175281  *
*          MEMORY:  88K        FORMS:                          DB1 : 85619   *
*             OUT:   0            IN CACHE:   5 (0)                          *
*          MEMORY:   0K             MEMORY:  10%                             *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:33      *
*      * IDLE *    CPU:31%    POOL=424:964:41     CACHE=4:22:74  8:75        *
*                                                                            *
*                          *** MESSAGE DISPLAY ***                           *
*  TRANS.    SOURCE     STAT                              TIME    #  RTES          *
*   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   *
*                                                                            *
*  ENTORD    TERM06    EO003T    SLOT    NACT     19:59:29     0       192   *
*  CHNCST    TERM11    CC001T    SLOT    NACT     20:03:13     0       173   *
*  ENTORD    TERM05    EO002T    SLOT    NACT     20:03:29     2       192   *
*  ENTORD    TERM28    EO000T    SLOT    NACT     20:03:21           0        42   *
*  ENTORD    TERM01    EO003T    SLOT    NACT     20:00:43     1       192   *
*  ENTORD    TERM26    CIVRFY    SLOT    NACT     20:03:25     2        42   *
*  ENTORD    TERM02    EO003T    SLOT    NACT     20:00:45     1       192   *
*  DPYCST    TERM12    DC001T    SLOT    NACT     20:03:23     0        42   *
*  CHNSTK    TERM25    CS001T    SLOT    NACT     20:03:32     1        82   *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :16   
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:41      *
*      * IDLE *    CPU:33%    POOL=350:588:34     CACHE=13:31:56  10:40      *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  CIVRFY       1         0         0        85      246       118       0   *
*  CS001T       1         0         0        64       21         6       0   *
*  EO001T       1         0         0        73      162        88       0   *
*  EO002T       1         0         0       116      320             111       0   *
*  EO003T       2         0        10       162      147        16       0   *
*  SIVRFY       1         0         0        63      121        32       0   *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:49      *
*      * IDLE *    CPU:40%    POOL=244:400:34     CACHE=18:1:81  6:16        *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    CHNSTK         1            21      025V62           441        YES     *
*    DPYSTK         1           100      004V62           449        YES     *
*    ENTORD        17           782      009V62           432        NO      *
*                                        008V62           423              NO      *
*                                        013V62           443        YES     *
*                                        005V62           439        YES     *
*                                        015V62           415        NO      *
*                                        028V62           446        NO      *
*                                        032V62           420        NO      *
*                                        029V62           426        NO      *
*                                              001V62           409        YES     *
*                                        026V62           448        YES     *
*                                        016V62           430        NO      *
*                                        002V62           411        YES     *
*                                        031V62           425        NO      *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :17   
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:49      *
*      * IDLE *    CPU:40%    POOL=244:400:34     CACHE=18:1:81  6:16        *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        010V62           422        NO      *
*                                        030V62           412        NO      *
*                                        007V62           421        NO      *
*                                        014V62           450              NO      *
*    RCVSTK         1            51      003V62           451        YES     *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :03 HRS           14-FEB-79 20:03:57      *
*      * IDLE *    CPU:46%    POOL=244:470:34     CACHE=18:35:47  12:58      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        010V62           422        NO      *
*                                        030V62           412        NO      *
*                                        007V62           421        NO      *
*                                        014V62           450              NO      *
*    RCVSTK         1            51      003V62           451        YES     *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :18   
******************************************************************************
*      ***TRAX DEMO***          UP :04 HRS           14-FEB-79 20:04:03      *
*      * IDLE *    CPU:43%    POOL=244:478:37     CACHE=19:11:70  9:33       *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  21         MESSAGES:            *
*       PRINT:                                               ACTIVE:   9     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  23     *
*       ACT. JOBS:   0              LOADED:   8              MEMORY:   1%    *
*      WAIT. JOBS:   0              IN USE:   8                              *
*                                   QUEUED:   1         APP. FI      LES:          *
*       BATCH:                      MEMORY:   6%               OPEN:    6    *
*       ACT. PROC:   1                                        READS:   13    *
*       ACT. JOBS:   0         STATIONS:                     WRITES:    9    *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:    1    *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  19                                         DB0 : 175281  *
*          MEMORY:  80K        FORMS:                          DB1 : 85599   *
*             OUT:   0            IN CACHE:   0 (0)                          *
*          MEMORY:   0K             MEMORY:   0%                             *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :04 HRS           14-FEB-79 20:04:10      *
*      * IDLE *    CPU:35%    POOL=350:854:40     CACHE=24:22:54  9:33       *
*                                                                            *
*                          *** MESSAGE DISPLAY ***                           *
*  TRANS.    SOURCE     STAT                              TIME    #  RTES          *
*   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   *
*                                                                            *
*  ENTORD    TERM05    EO002T    SLOT    NACT     20:03:29     2       192   *
*  ENTORD    TERM15    EO003T    SLOT    NACT     20:00:47     1       192   *
*  ENTORD    TERM28    EO001T    SLOT    NACT     20:04:04     1        56   *
*  CHNSTK    TERM25    CS001T    SLOT    NACT     20:03:32           1        82   *
*  ENTORD    TERM30    EO003T    SLOT    NACT     20:00:46     1       192   *
*  DPYSTK    TERM04    SIVRFY    SLOT    NACT     20:03:40     2         8   *
*  ENTORD    TERM14    CIVRFY    SLOT    NACT     20:03:41     2        42   *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :19   
******************************************************************************
*      ***TRAX DEMO***          UP :04 HRS           14-FEB-79 20:04:17      *
*      * IDLE *    CPU:32%    POOL=424:854:39     CACHE=14:1:85  7:14        *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  CIVRFY       1         1         1        85      249       123       0   *
*  CS001T       1         0         0        64       21         6       0   *
*  EO002T       2         0         0       116      321       117       0   *
*  EO003T       2         0         8       162      149              16       0   *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :04 HRS           14-FEB-79 20:04:24      *
*      * IDLE *    CPU:45%    POOL=424:776:40     CACHE=14:32:54  25:48      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    CHNSTK         1            21      025V62           441        YES     *
*    DPYORD         1            14      011V62           455        YES     *
*    ENTORD        19           827      009V62           432        NO      *
*                                        008V62           423              NO      *
*                                        012V62           454        NO      *
*                                        013V62           443        NO      *
*                                        005V62           439        YES     *
*                                        015V62           415        YES     *
*                                        028V62           446        NO      *
*                                        032V62           420        NO      *
*                                              029V62           426        NO      *
*                                        027V62           453        NO      *
*                                        026V62           448        NO      *
*                                        016V62           430        NO      *
*                                        002V62           411        NO      *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :20   
******************************************************************************
*      ***TRAX DEMO***          UP :04 HRS           14-FEB-79 20:04:24      *
*      * IDLE *    CPU:45%    POOL=424:776:40     CACHE=14:32:54  25:48      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        031V62           425        NO      *
*                                        010V62           422        NO      *
*                                        006V62           452        NO      *
*                                        030V62           412              YES     *
*                                        007V62           421        NO      *
*                                        014V62           450        YES     *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :04 HRS           14-FEB-79 20:04:34      *
*      * IDLE *    CPU:40%    POOL=268:400:37     CACHE=12:20:68  11:27      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        031V62           425        NO      *
*                                        010V62           422        NO      *
*                                        006V62           452        NO      *
*                                        030V62           412              YES     *
*                                        007V62           421        NO      *
*                                        014V62           450        YES     *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :21   
******************************************************************************
*      ***TRAX DEMO***          UP :04 HRS           14-FEB-79 20:04:40      *
*      * IDLE *    CPU:47%    POOL=194:380:38     CACHE=11:2:87  15:33       *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  22         MESSAGES:            *
*       PRINT:                                               ACTIVE:  10     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  24     *
*       ACT. JOBS:   0              LOADED:   8              MEMORY:  32%    *
*      WAIT. JOBS:   0              IN USE:   8                              *
*                                   QUEUED:   2         APP. FI      LES:          *
*       BATCH:                      MEMORY:   8%               OPEN:    6    *
*       ACT. PROC:   1                                        READS:   19    *
*       ACT. JOBS:   0         STATIONS:                     WRITES:    8    *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:    0    *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  20                                         DB0 : 175276  *
*          MEMORY:  97K        FORMS:                          DB1 : 85559   *
*             OUT:   0            IN CACHE:   0 (0)                          *
*          MEMORY:   0K             MEMORY:   0%                             *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :04 HRS           14-FEB-79 20:04:48      *
*      *DIRT0 *    CPU:37%    POOL=162:380:40     CACHE=12:30:58  10:30      *
*                                                                            *
*                          *** MESSAGE DISPLAY ***                           *
*  TRANS.    SOURCE     STAT                              TIME    #  RTES          *
*   NAME    STATION     NAME     TYPE   STATUS     QUEUED    TO GO    SIZE   *
*                                                                            *
*  ENTORD    TERM13    EO002T    SLOT    NACT     20:04:00     0       192   *
*  ENTORD    TERM05    EO002T    MESS    NACT     20:03:29     2       192   *
*  CHNSTK    TERM03    SIVRFY    SLOT    NACT     20:04:35     2         8   *
*  ENTORD    TERM15    EO003T    SLOT    NACT     20:00:47           1       192   *
*  ENTORD    TERM27    EO001T    SLOT    NACT     20:04:40     1        56   *
*  ENTORD    TERM26    EO001T    SLOT    NACT     20:04:26     1        56   *
*  DPYORD    TERM11    DO001T    MESS    NACT     20:04:19     0        56   *
*  CHNSTK    TERM25    CS001T    SLOT    NACT     20:03:32     1        82   *
*  DPYSTK    TERM01    SIVRFY    SLOT    NACT     20:04:31     2         8   *
*  ENTORD    TERM30    EO003T    SLOT    NACT     20:00:46     1       192   *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :22   
******************************************************************************
*      ***TRAX DEMO***          UP :04 HRS           14-FEB-79 20:04:56      *
*      * IDLE *    CPU:42%    POOL=162:380:40     CACHE=14:20:66  8:37       *
*                                                                            *
*                            *** TST DISPLAY ***                             *
*   STAT               QUEUED           MESGS     TST     TIMES     TIMES    I/O   *
*   NAME     COPIES    MEMORY    QUEUED    SIZE    LOADED    FAILED    REQ   *
*                                                                            *
*  CS001T       1         0         0        64       21         6       0   *
*  EO001T       2         0         0        73      166        99       0   *
*  EO002T       1         0         0       116      322       117       0   *
*  EO003T       2         0         8       162      149              16       0   *
*  SIVRFY       2         0         0        63      123        34       0   *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :05 HRS           14-FEB-79 20:05:05      *
*      * IDLE *    CPU:42%    POOL=162:380:40     CACHE=13:13:74  11:45      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*    CHNCST         1            30      002V62           458        NO      *
*    CHNSTK         2            22      003V62           457        YES     *
*                                        025V62           441        YES     *
*    DPYSTK         1           101      001V62           456              YES     *
*    ENTORD        19           828      009V62           432        NO      *
*                                        008V62           423        NO      *
*                                        012V62           454        NO      *
*                                        013V62           443        NO      *
*                                        005V62           439        YES     *
*                                        015V62           415        YES     *
*                                              028V62           446        NO      *
*                                        032V62           420        NO      *
*                                        029V62           426        NO      *
*                                        027V62           453        YES     *
*                                        026V62           448        NO      *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :23   
******************************************************************************
*      ***TRAX DEMO***          UP :05 HRS           14-FEB-79 20:05:05      *
*      * IDLE *    CPU:42%    POOL=162:380:40     CACHE=13:13:74  11:45      *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        016V62           430        NO      *
*                                        004V62           459        NO      *
*                                        031V62           425        NO      *
*                                        010V62           422              NO      *
*                                        006V62           452        YES     *
*                                        030V62           412        YES     *
*                                        007V62           421        NO      *
*                                        014V62           450        NO      *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      



                                                                           
******************************************************************************
*      ***TRAX DEMO***          UP :05 HRS           14-FEB-79 20:05:15      *
*      * IDLE *    CPU:37%    POOL=194:380:36     CACHE=15:19:66  8:37       *
*                                                                            *
*                          *** TRANSACTION DISPLAY ***                       *
*     TRAN        NUMBER      T      IMES       TERM        SEQUENCE      ACTIVE   *
*     NAME       RUNNING      RQSTD       NAME         NUMBER        TST?    *
*                                                                            *
*                                        016V62           430        NO      *
*                                        004V62           459        NO      *
*                                        031V62           425        NO      *
*                                        010V62           422              NO      *
*                                        006V62           452        YES     *
*                                        030V62           412        YES     *
*                                        007V62           421        NO      *
*                                        014V62           450        NO      *
*                                                                            *
*                                                                            *
*                                                                                  *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                      


                                                                PAGE :24   
******************************************************************************
*      ***TRAX DEMO***          UP :05 HRS           14-FEB-79 20:05:21      *
*      * IDLE *    CPU:58%    POOL=194:606:39     CACHE=16:10:74  18:50      *
*                                                                            *
*                        *** SUMMARY DISPLAY ***                             *
*                                                                                  *
*       PROCESSORS:            TRANS.  RUN:  24         MESSAGES:            *
*       PRINT:                                               ACTIVE:  10     *
*       ACT. PROC:   1         TSTS:                        ON DISK:  24     *
*       ACT. JOBS:   0              LOADED:   8              MEMORY:  33%    *
*      WAIT. JOBS:   0              IN USE:   8                              *
*                                   QUEUED:   1         APP. FI      LES:          *
*       BATCH:                      MEMORY:   4%               OPEN:    6    *
*       ACT. PROC:   1                                        READS:    8    *
*       ACT. JOBS:   0         STATIONS:                     WRITES:   13    *
*      WAIT. JOBS:   0            TERMINAL:  24                HITS:    0    *
*                                      TST:  35                              *
*                                 OUT ONLY:   0         FREE BLOCKS:         *
*       TASKS:                             OTHER:   0                SY0 : (DB0)   *
*          ACTIVE:  19                                         DB0 : 175276  *
*          MEMORY:  78K        FORMS:                          DB1 : 85539   *
*             OUT:   0            IN CACHE:   0 (0)                          *
*          MEMORY:   0K             MEMORY:   0%                             *
*                                                                            *
*                                                                                  *
******************************************************************************                                                                                                                                                                                                                                                                                                                                                                                                                          R ÈkQÁ› 8$        	.TITLE	MEMORY DISPLAY MODULE2 - INFORMATION GATHERER	.MCALL	ASRDF$,PCBDF$,SWITCH$,INH$S,ENB$S	ASRDF$	PCBDF$TABLE::	.BLKW	288.		;ALLOWS UP TO 48 OBJECTS TO BE DISPLAYED				;AT ONE TIMETEMP:	.BLKW	2		;TEMPORARY STORAGE FOR TASK NAMECOUNT::	.WORD	0		;KEEPS TRACK OF HOW MANY ITEMS FOUNDPNTR:	.WORD	0MEM::	CMP	#1,MEMTYP	;DO WE WANT TASK DISPLAY?	BNE	10$		;IF NE - NO	CALL	TASKS	BR	20$10$:	CLR	COUNT		;INITIALIZE COUNTER	MOV	#TABLE,R2	;POINT TO BEGINNING OF TABLE	CMP	#3,MEMTYP	;DO WE WANT FORMS ALSO?	BNE	15$	CALL	F      ORMS15$:	CALL	TSTS20$:	CALL	MEMOUT		;DISPLAY THE INFORMATION GATHERED	RETURN	.PAGE	.SBTTL	DISPLAY ACTIVE TASKS, ETC.;; THE INFORMATION DISPLAYED INCLUDES ACTIVE TASKS, NON-ACTIVE FIXED; TASKS,LOADED COMMONS, AND LOADED DEVICE DRIVERS;;; ALL INFORMATION IS ENTERED INTO A TABLE IN THE FOLLOWING ORDER:;;		WORD	0  =  STARTING ADDRESS OF TASK;		WORD	1  =  SIZE OF TASK;		WORD	2  =  TASK NAME (3 WORDS);		WORD	5  =  TYPE FLAG;;	COMFLG=1		;COMMON FLAG	EXEFLG=2		;EXECUTING FLAG	FIXFLG=4		;FIXED FLAG	DRVFLG=10		;DRIVE      R FLAGTASKS:	SWITCH$	40$		;SWITCH TO KERNEL MODE	MOV	#TABLE,R5	;POINT R5 TO TABLE WHERE INFORMATION IS 				;GOING TO BE STORED	MOV	#$PARHD,R4	;POINT R4 TO PARTITION LISTHEAD5$:	MOV	P.LNK(R4),R4	;GET ADDRESS OF NEXT PCB	BEQ	35$		;IF EQ - NONE LEFT	BITB	P.BUSY(R4),P.BUSY+1(R4) ;IS PARTITION BUSY?	BEQ	5$		;IF EQ - NO	CLR	R0		;ASSUME NOT A SYSTEM CONTROLLED PARTITION	CLR	12(R5)		;CLEAR TYPE FLAG	BIT	#PS.COM,P.STAT(R4) ;IS THIS A COMMON PARTITION?	BEQ	10$		;IF EQ - NO8$:	MOV	P.NAM(R4),4(R5)	;STORE PARTITION NAME      	MOV	P.NAM+2(R4),6(R5)	MOV	#COMFLG,12(R5)	;INDICATE THAT THIS IS A COMMON PARTITION	BR	30$10$:	BIT	#PS.SYS,P.STAT(R4) ;SYSTEM CONTROLLED PARTITION?	BEQ	20$		;IF EQ - NO	MOV	R4,R0		;SAVE MAIN PCB ADDRESS15$:	MOV	P.SUB(R4),R4	;GET SUB-PARTITION PCB ADDRESS	BNE	18$		;IF NE - GOT ONE	MOV	R0,R4		;ELSE - RESTORE MAIN PCB ADDRESS	BR	5$		;RE-ENTER MAIN LOOP18$:	BIT	#PS.COM,P.STAT(R4) ;IS THIS A DYNAMIC COMMON?	BNE	8$20$:	MOV	P.TCB(R4),R3	;GET TCB ADDRESS	BIT	#PS.DRV,P.STAT(R4);IS THIS A LOADED DRIVER?	BEQ	25$		;IF       EQ - NO	MOV	D.NAM(R3),4(R5)	;STORE DEVICE NAME	MOV	#": ,6(R5)	MOV	#"  ,10(R5)	BIS	#DRVFLG,12(R5)	;SET DRIVER FLAG	BR	30$25$:	CMP	R4,$LDRPT	;IS THIS THE LOADER?	BEQ	5$		;IF EQ - YES DON'T DISPLAY	MOV	T.NAM(R3),4(R5)	;STORE TASK NAME	MOV	T.NAM+2(R3),6(R5) 	BIT	#TS.EXE,T.STAT(R3) ;IS THIS TASK ACTIVE?	BNE	26$		;IF NE - NO	BIS	#EXEFLG,12(R5)	;SET NOT EXECUTING FLAG26$:	BIT	#T2.FXD,T.ST2(R3) ;IS THIS TASK FIXED IN MEMORY?	BEQ	30$	BIS	#FIXFLG,12(R5)	;SET FIXED FLAG30$:	MOV	P.SIZE(R4),2(R5) ;STORE PARTITION SIZE	M      OV	P.REL(R4),(R5)	;STORE PARTITION ADDRESS	INC	COUNT		;ONE MORE ITEM FOUND	ADD	#14,R5		;POINT TO NEXT ENTRY IN TABLE	CMP	#48.,COUNT	;HAVE WE FILLED OUR TABLE?	BEQ	35$		;IF EQ - YES	TST	R0		;ARE WE PROCESSING A SYSTEM CONTROLLED				;PARTITION?	BNE	15$		;IF NE - YES	JMP	5$35$:	RETURN			;EXIT KERNEL MODE;; GO THROUGH TABLE - CONVERT RADIX-50 NAMES TO ASCII;40$:	MOV	COUNT,R2	;GET NUMBER OF TABLE ENTRIES	MOV	#TABLE,PNTR	;POINT TO BEGINNING OF TABLE45$:	MOV	PNTR,R5		;PUT POINTER INTO REGISTER	BIT	#DRVFLG,12(R5)	;      IS THIS A DRIVER PARTITION?	BNE	50$		;IF NE - YES (NO NEED TO CONVERT)	MOV	4(R5),TEMP	;GET RADIX-50 NAME	MOV	6(R5),TEMP+2	MOV	R5,R0		;POINT TO LOCATION IN TABLE WHERE CONVERTED 	ADD	#4,R0		;NAME IS TO BE LEFT	MOV	TEMP,R1		;GET FIRST WORD OF NAME	MOV	R2,-(SP)	;SAVE REGISTER	CALL	$C5TA		;CONVERT FROM RADIX-50 TO ASCII	MOV	TEMP+2,R1	CALL	$C5TA		;DO SAME FOR SECOND HALF OF NAME.	MOV	(SP)+,R250$:	ADD	#14,PNTR	;POINT TO NEXT TABLE ENTRY	SOB	R2,45$		;ARE THERE ANY MORE ENTRIES	RETURN	.PAGE	.SBTTL	GATHER FORM INFOR      MATIONFORMS:	INH$S			;INHIBIT CONTEXT SWITCHING	MOV	CADR,UISAR3	;POINT TO BASE OF CACHE	MOV	60000+P.LRUF,R1	;GET LRU FORWARD POINTER	MOV	R1,R3		;KEEP A COPY TO KNOW WHEN TO STOP5$:	MOV 	CADR,UISAR3	;POINT TO BASE OF CACHE	CALL	ACBD		;GET KT AND BIAS OFFSETS	ADD	R4,UISAR3	;MAP TO BDB	SUB	#B.LRUF,R5	;POINT TO BEGINNING OF BDB	CMPB	#FRMLUN,60000+B.LUN(R5)	;DO WE HAVE A FORM?	BNE	25$		;; PUT FORM DATA INTO OUR TABLE:;	MOV	B.ADDR+60000(R5),(R2)	;CALCULATE RELATIVE STARTING ADDRESS OF FORM	SUB	CADR,(R2)	MOV	B.SIZ      E+60000(R5),2(R2)	;AND SIZE OF FORM	MOV	#1,12(R2)		;SET FLAG TO INDICATE THAT THIS					;IS A FORM.	TSTB	60000+B.USE(R5)		;IS FORM IN USE?	BEQ	10$			;IF EQ - NO	BIS	#4,12(R2)		;SET FLAG TO INDICATE THAT FORM IS IN					;USE10$:	MOV	60000+B.ADDR(R5),UISAR4	;LOAD KT ADDRESS OF FORM	MOV	100000,4(R2)	;STORE FORM NAME	MOV	100000+2,6(R2)	MOV	100000+4,10(R2)20$:	ADD	#14,R2			;POINT TO NEXT TABLE ENTRY	INC	COUNT			;ONE MORE FORM ENTRY IN TABLE	CMP	COUNT,#48.		;HAVE WE USED UP ENTIRE TABLE?	BEQ	30$			;IF EQ - YES25$:	      MOV	60000+B.LRUF(R5),R1	;LOOK AT NEXT BDB	CMP	R1,R3			;ARE WE BACK AT THE START	BNE	5$			;IF NE - CONTINUE30$:	ENB$S				;ENABLE CONTEXT SWITCHING	RETURN	.PAGE	.SBTTL	GATHER TST INFORMATIONTSTS:	INH$S				;INHIBIT CONTEXT SWITCHING	MOV	CADR,UISAR2		;POINT TO BASE OF CACHE	MOV	40000+P.LRUF,R1		;GET LRU - FORWARD POINTER	MOV	R1,R3			;KEEP A COPY SO KNOW WHEN TO STOP5$:	MOV	CADR,UISAR2		;POINT TO BASE OF CACHE	CALL	ACBD			;GET KT AND BIAS OFFSETS	ADD	R4,UISAR2		;MAP TO BDB	SUB	#B.LRUF,R5		;POINT TO BEGINNING OF       BDB	TSTB	40000+B.LUN(R5)		;IS IT A TST?	BNE	25$			;IF NE - NO;; SEARCH THROUGH TST SCBS.; LOOK FOR ONE THAT TST DISK ADDRESS MATCHES ADDRESS IN BDB.; THIS WILL GIVE US STATION NAME NEEDED FOR DISPLAY.;	MOV	#777,R0			;INDICATE THAT WE ONLY WANT TO LOOK 					;AT NON-TERMINAL SCBS	CALL	SCBINI			;INITIALIZE THE SCB GETTING ROUTINE10$:	CALL	SCBNXT			;GET KT ADDRESS OF NEXT SCB	TST	UISAR4			;IF UISAR4=0 NO MORE SCBS LEFT	BEQ	25$	CMPB	#SY.TST,S.TYP+100000	;IS THIS A TST STATION?	BNE	10$			;IF NE - NO	CMPB	S.LBN+10      0000,B.HVBN+40000(R5) ;DO WE HAVE A MATCH ON HIGH					      ;8 BITS OF TST DISK ADDRESS	BNE	10$			CMPB	S.LBN+2+100000,B.LVBN+40000(R5) ;WHAT ABOUT LOW 16-BITS?	BNE	10$	CMP	S.LDV+100000,B.LINK+40000(R5)	;DO WE HAVE A MATCH ON UCB	BNE	10$;; MAKE ENTRIES INTO TABLE:;	MOV	B.ADDR+40000(R5),(R2)		;CALCULATE RELATIVE ADDRESS						;OF TST IN CACHE	SUB	CADR,(R2)	MOV	B.SIZE+40000(R5),2(R2)		;AND SIZE	MOV	S.NAM+100000,4(R2)		;STORE STATION NAME	MOV	S.NAM+2+100000,6(R2)	MOV	S.NAM+4+100000,10(R2)	TSTB	40000+B.USE(R5)			   –  ;IS TST IN USE?	BEQ	20$				;IF EQ - NO	BIS	#4,12(R2)			;SET FLAG TO INDICATE THAT TST						;IS IN USE20$:	ADD	#14,R2				;POINT TO NEXT TABLE ENTRY	INC	COUNT				;ONE MORE ENTRY IN TABLE	CMP	COUNT,#48.			;HAVE WE USED UP ENTIRE TABLE	BEQ	30$	25$:	MOV	40000+B.LRUF(R5),R1		;LOOK AT NEXT BDB	CMP	R1,R3				;ARE WE BACK AT THE START	BNE	5$				;IF NE - CONTINUE30$:	ENB$S					;ENABLE CONTEXT SWITCHING	RETURN	.END–         R È^Á› 8$         R©`    tŽ€»   ¯”L  º @  á²@   èÞ‰@  ì{:@  ìÎs@  ìp…@  ìÞ‰@   óU<@  õˆw@  ì€p@  nH@  ](VN@   Ra@  Rø€@  lhÎs@  :wy:@  :wT[@   Äz€@  ,{°@  ,{p@  .{H@  4{Àž@   €#@  nH@  s<}@  s ‚@  ‚D)@   P©\@  [©(}@  ¤ªs@  A«Äq@      (Ì - ZhDR  hH*}ÈKh  ¯”        D D    ÷%   ÷	  7
êÿÂ  ÷%   ÷	" Rø€  "Rø€ j÷	¬÷	  ‡ þˆDÅ  Ä    ^4½  ù 
 
RaD  A«Äq 5

 ô5€  
5  5  õ 
 8ô5    ¶
        Þô5€  è ô5  õ   (nH Ü õ:  õ   õU 
 7!  Äõ   õ  ¤ªs"nH(nH   ó5    õU 
 ó5    õU 
 5   €#
s<}‚D)s ‚ ( ·
ÿÅe ÷%0 ÿÀ¾w >ÿ‡ Âüþ÷  øþ &   NÅôþõ5 
 w àþw Üþ@Àe ÁÐþ¦÷	 t  ÁÈþ÷	  ‚÷e ÀþÂ
â‡ þˆ˜÷•   ‡ ÷ [©(}[©(}˜$P©\ š  ¦ÿÁ `C÷  ¦ÿ÷	  7a¦ÿÅå ì€p¦ÿ
lhÎs `ì€p¦ÿº ¦ÿ ´  õ¥   `$J `Êí  r ìÎs](VN
ìp… `á² `ì€p È ` ò 
 õ‹ `òU 
 w `¨ÿò € ò€ óU<       `õˆw `á² `¨ÿ" €(€ î ò€ Âe ·
Fþ×-Bþ0 A `C Ëþˆ7Š €ìÎs `&   ‡ ‡ þˆ&÷•   ‡ ÷  ¤ÿÁ @C÷   P©\&P©\ì€p¤ÿlhÎs @$ì€p 6¤ÿ÷	  7a¤ÿÅå  õ‹ @7Àÿ÷	  ÷	  ÷ ¤ÿº ¤ÿìÎsìp… @:wy:":wT[ X¨ÿ.÷¥   €÷õ­ € @óõ­ ¨ÿ
Äz€4{Àž €,{° €èÞ‰ @ n€ @ïõ- € @ëJ @Êí ,{°€ìÞ‰ @,{p €ì{: @á² @ ‚  r @ ò € ò€ ò€ õ‹ ì€póU< @.{H €.{H€.{H€ ž @òU 
 Âe ·
”ý×-ý0 A @C ¹þˆÊ õˆw @ ìÎs @(      Ê Ä7Š  ‡ ‡  P©\           R ÈNÁ› 8$        MEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15:05TABLE OF CONTENTS     5-   42	DISPLAY ACTIVE TASKS, ETC.     6-  193	GATHER FORM INFORMATION     7-  255	GATHER TST INFORMATIONMEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15:05  PAGE 4      1						.TITLE	MEMORY DISPLAY MODULE2 - INFORMATION GATHERER      2						.MCALL	ASRDF$,PCBDF$,SWITCH$,INH$S,ENB$S      3      4      5	000000					ASRDF$      6	000000					PCBDF$      7      8      9	000000				TABLE::	.BLKW	288.		;ALLOWS UP TO 48 OBJE      CTS TO BE DISPLAYED     10									;AT ONE TIME     11     12	001100				TEMP:	.BLKW	2		;TEMPORARY STORAGE FOR TASK NAME     13	001104	000000 			COUNT::	.WORD	0		;KEEPS TRACK OF HOW MANY ITEMS FOUND     14	001106	000000 			PNTR:	.WORD	0     15     16     17	001110				MEM::     18     19	001110	022767 	000001 	000000G		CMP	#1,MEMTYP	;DO WE WANT TASK DISPLAY?     20	001116	001003 				BNE	10$		;IF NE - NO     21     22	001120					CALL	TASKS     23	001124	000414 				BR	20$     24     25	001126	005067 	177752 		1      0$:	CLR	COUNT		;INITIALIZE COUNTER     26	001132	012702 	000000'			MOV	#TABLE,R2	;POINT TO BEGINNING OF TABLE     27     28	001136	022767 	000003 	000000G		CMP	#3,MEMTYP	;DO WE WANT FORMS ALSO?     29	001144	001002 				BNE	15$     30     31	001146					CALL	FORMS     32     33	001152				15$:	CALL	TSTS     34     35     36	001156				20$:	CALL	MEMOUT		;DISPLAY THE INFORMATION GATHERED     37     38	001162					RETURN     39     40MEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15:05  PAGE 5DISPLAY ACTIV      E TASKS, ETC.     42						.SBTTL	DISPLAY ACTIVE TASKS, ETC.     43     44     45					;     46					; THE INFORMATION DISPLAYED INCLUDES ACTIVE TASKS, NON-ACTIVE FIXED     47					; TASKS,LOADED COMMONS, AND LOADED DEVICE DRIVERS     48					;     49     50     51					;     52					; ALL INFORMATION IS ENTERED INTO A TABLE IN THE FOLLOWING ORDER:     53					;     54					;		WORD	0  =  STARTING ADDRESS OF TASK     55					;		WORD	1  =  SIZE OF TASK     56					;		WORD	2  =  TASK NAME (3 WORDS)     57					;		WORD	5        =  TYPE FLAG     58					;     59					;     60     61     62		000001 				COMFLG=1		;COMMON FLAG     63		000002 				EXEFLG=2		;EXECUTING FLAG     64		000004 				FIXFLG=4		;FIXED FLAG     65		000010 				DRVFLG=10		;DRIVER FLAG     66     67     68     69     70	001164				TASKS:     71     72	001164					SWITCH$	40$		;SWITCH TO KERNEL MODE     73	001170	012705 	000000'			MOV	#TABLE,R5	;POINT R5 TO TABLE WHERE INFORMATION IS     74									;GOING TO BE STORED     75	001174	012704 	000000G			MOV	#$PARHD,R4	;POINT       R4 TO PARTITION LISTHEAD     76     77	001200	016404 	000000 		5$:	MOV	P.LNK(R4),R4	;GET ADDRESS OF NEXT PCB     78	001204	001536 				BEQ	35$		;IF EQ - NONE LEFT     79     80     81	001206	136464 	000024 	000025 		BITB	P.BUSY(R4),P.BUSY+1(R4) ;IS PARTITION BUSY?     82	001214	001771 				BEQ	5$		;IF EQ - NO     83     84	001216	005000 				CLR	R0		;ASSUME NOT A SYSTEM CONTROLLED PARTITION     85	001220	005065 	000012 			CLR	12(R5)		;CLEAR TYPE FLAG     86     87	001224	032764 	000200 	000030 		BIT	#PS.COM,P.      STAT(R4) ;IS THIS A COMMON PARTITION?     88	001232	001412 				BEQ	10$		;IF EQ - NO     89     90	001234	016465 	000004 	000004 	8$:	MOV	P.NAM(R4),4(R5)	;STORE PARTITION NAME     91	001242	016465 	000006 	000006 		MOV	P.NAM+2(R4),6(R5)     92	001250	012765 	000001 	000012 		MOV	#COMFLG,12(R5)	;INDICATE THAT THIS IS A COMMON PARTITION     93	001256	000470 				BR	30$     94     95     96	001260	032764 	000040 	000030 	10$:	BIT	#PS.SYS,P.STAT(R4) ;SYSTEM CONTROLLED PARTITION?     97	001266	001412 				BEQ	20$		      ;IF EQ - NO     98MEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15:05  PAGE 5-1DISPLAY ACTIVE TASKS, ETC.     99	001270	010400 				MOV	R4,R0		;SAVE MAIN PCB ADDRESS    100    101	001272	016404 	000010 		15$:	MOV	P.SUB(R4),R4	;GET SUB-PARTITION PCB ADDRESS    102	001276	001002 				BNE	18$		;IF NE - GOT ONE    103    104	001300	010004 				MOV	R0,R4		;ELSE - RESTORE MAIN PCB ADDRESS    105	001302	000736 				BR	5$		;RE-ENTER MAIN LOOP    106    107    108	001304	032764 	000200 	000030 	18$:	BIT	#PS.CO      M,P.STAT(R4) ;IS THIS A DYNAMIC COMMON?    109	001312	001350 				BNE	8$    110    111    112	001314	016403 	000026 		20$:	MOV	P.TCB(R4),R3	;GET TCB ADDRESS    113	001320	032764 	000020 	000030 		BIT	#PS.DRV,P.STAT(R4);IS THIS A LOADED DRIVER?    114	001326	001415 				BEQ	25$		;IF EQ - NO    115    116	001330	016365 	000000G	000004 		MOV	D.NAM(R3),4(R5)	;STORE DEVICE NAME    117	001336	012765 	020072 	000006 		MOV	#": ,6(R5)    118	001344	012765 	020040 	000010 		MOV	#"  ,10(R5)    119	001352	052765 	000010       	000012 		BIS	#DRVFLG,12(R5)	;SET DRIVER FLAG    120	001360	000427 				BR	30$    121    122    123	001362	020467 	000000G		25$:	CMP	R4,$LDRPT	;IS THIS THE LOADER?    124	001366	001704 				BEQ	5$		;IF EQ - YES DON'T DISPLAY    125    126    127	001370	016365 	000000G	000004 		MOV	T.NAM(R3),4(R5)	;STORE TASK NAME    128	001376	016365 	000002G	000006 		MOV	T.NAM+2(R3),6(R5)    129    130	001404	032763 	000000G	000000G		BIT	#TS.EXE,T.STAT(R3) ;IS THIS TASK ACTIVE?    131	001412	001003 				BNE	26$		;IF NE - NO          132    133	001414	052765 	000002 	000012 		BIS	#EXEFLG,12(R5)	;SET NOT EXECUTING FLAG    134    135    136	001422	032763 	000000G	000000G	26$:	BIT	#T2.FXD,T.ST2(R3) ;IS THIS TASK FIXED IN MEMORY?    137	001430	001403 				BEQ	30$    138    139	001432	052765 	000004 	000012 		BIS	#FIXFLG,12(R5)	;SET FIXED FLAG    140    141    142	001440	016465 	000016 	000002 	30$:	MOV	P.SIZE(R4),2(R5) ;STORE PARTITION SIZE    143	001446	016415 	000014 			MOV	P.REL(R4),(R5)	;STORE PARTITION ADDRESS    144    145	001452	005      267 	177426 			INC	COUNT		;ONE MORE ITEM FOUND    146	001456	062705 	000014 			ADD	#14,R5		;POINT TO NEXT ENTRY IN TABLE    147    148	001462	022767 	000060 	177414 		CMP	#48.,COUNT	;HAVE WE FILLED OUR TABLE?    149	001470	001404 				BEQ	35$		;IF EQ - YES    150    151	001472	005700 				TST	R0		;ARE WE PROCESSING A SYSTEM CONTROLLED    152									;PARTITION?    153	001474	001276 				BNE	15$		;IF NE - YES    154    155	001476	000167 	177476 			JMP	5$MEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15      :05  PAGE 5-2DISPLAY ACTIVE TASKS, ETC.    156    157	001502				35$:	RETURN			;EXIT KERNEL MODE    158    159    160					;    161					; GO THROUGH TABLE - CONVERT RADIX-50 NAMES TO ASCII    162					;    163    164    165    166	001504	016702 	177374 		40$:	MOV	COUNT,R2	;GET NUMBER OF TABLE ENTRIES    167	001510	012767 	000000'	177370 		MOV	#TABLE,PNTR	;POINT TO BEGINNING OF TABLE    168    169	001516	016705 	177364 		45$:	MOV	PNTR,R5		;PUT POINTER INTO REGISTER    170	001522	032765 	000010 	000012 		BIT	#DR      VFLG,12(R5)	;IS THIS A DRIVER PARTITION?    171	001530	001023 				BNE	50$		;IF NE - YES (NO NEED TO CONVERT)    172    173	001532	016567 	000004 	177340 		MOV	4(R5),TEMP	;GET RADIX-50 NAME    174	001540	016567 	000006 	177334 		MOV	6(R5),TEMP+2    175    176	001546	010500 				MOV	R5,R0		;POINT TO LOCATION IN TABLE WHERE CONVERTED    177	001550	062700 	000004 			ADD	#4,R0		;NAME IS TO BE LEFT    178    179	001554	016701 	177320 			MOV	TEMP,R1		;GET FIRST WORD OF NAME    180	001560	010246 				MOV	R2,-(SP)	;SA      VE REGISTER    181	001562					CALL	$C5TA		;CONVERT FROM RADIX-50 TO ASCII    182	001566	016701 	177310 			MOV	TEMP+2,R1    183	001572					CALL	$C5TA		;DO SAME FOR SECOND HALF OF NAME.    184	001576	012602 				MOV	(SP)+,R2    185    186    187	001600	062767 	000014 	177300 	50$:	ADD	#14,PNTR	;POINT TO NEXT TABLE ENTRY    188	001606					SOB	R2,45$		;ARE THERE ANY MORE ENTRIES    189    190	001612					RETURN    191MEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15:05  PAGE 6GATHER FORM INFORMATION    1      93						.SBTTL	GATHER FORM INFORMATION    194    195    196	001614				FORMS:    197    198    199	001614					INH$S			;INHIBIT CONTEXT SWITCHING    200	001630	016767 	000000G	177646 		MOV	CADR,UISAR3	;POINT TO BASE OF CACHE    201	001636	016701 	060000G			MOV	60000+P.LRUF,R1	;GET LRU FORWARD POINTER    202	001642	010103 				MOV	R1,R3		;KEEP A COPY TO KNOW WHEN TO STOP    203    204	001644	016767 	000000G	177646 	5$:	MOV 	CADR,UISAR3	;POINT TO BASE OF CACHE    205	001652					CALL	ACBD		;GET KT AND BIAS OFFSET      S    206    207	001656	060467 	177646 			ADD	R4,UISAR3	;MAP TO BDB    208	001662	162705 	000000G			SUB	#B.LRUF,R5	;POINT TO BEGINNING OF BDB    209    210	001666	122765 	000000G	060000G		CMPB	#FRMLUN,60000+B.LUN(R5)	;DO WE HAVE A FORM?    211	001674	001044 				BNE	25$    212    213    214					;    215					; PUT FORM DATA INTO OUR TABLE:    216					;    217    218    219	001676	016512 	060000G			MOV	B.ADDR+60000(R5),(R2)	;CALCULATE RELATIVE STARTING ADDRESS OF FORM    220	001702	166712 	000000G			SUB	CADR,(R      2)    221    222	001706	016562 	060000G	000002 		MOV	B.SIZE+60000(R5),2(R2)	;AND SIZE OF FORM    223    224	001714	012762 	000001 	000012 		MOV	#1,12(R2)		;SET FLAG TO INDICATE THAT THIS    225										;IS A FORM.    226    227	001722	105765 	060000G			TSTB	60000+B.USE(R5)		;IS FORM IN USE?    228	001726	001403 				BEQ	10$			;IF EQ - NO    229    230	001730	052762 	000004 	000012 		BIS	#4,12(R2)		;SET FLAG TO INDICATE THAT FORM IS IN    231										;USE    232    233    234	001736	016567 	060000G	177650 	      10$:	MOV	60000+B.ADDR(R5),UISAR4	;LOAD KT ADDRESS OF FORM    235    236	001744	016762 	100000 	000004 		MOV	100000,4(R2)	;STORE FORM NAME    237	001752	016762 	100002 	000006 		MOV	100000+2,6(R2)    238	001760	016762 	100004 	000010 		MOV	100000+4,10(R2)    239    240    241	001766	062702 	000014 		20$:	ADD	#14,R2			;POINT TO NEXT TABLE ENTRY    242	001772	005267 	177106 			INC	COUNT			;ONE MORE FORM ENTRY IN TABLE    243	001776	026727 	177102 	000060 		CMP	COUNT,#48.		;HAVE WE USED UP ENTIRE TABLE?    244	      002004	001404 				BEQ	30$			;IF EQ - YES    245    246	002006	016501 	060000G		25$:	MOV	60000+B.LRUF(R5),R1	;LOOK AT NEXT BDB    247	002012	020103 				CMP	R1,R3			;ARE WE BACK AT THE START    248	002014	001313 				BNE	5$			;IF NE - CONTINUE    249MEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15:05  PAGE 6-1GATHER FORM INFORMATION    250	002016				30$:	ENB$S				;ENABLE CONTEXT SWITCHING    251	002030					RETURN    252    253MEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15:05  PAGE 7GATHER       TST INFORMATION    255						.SBTTL	GATHER TST INFORMATION    256    257    258	002032				TSTS:    259    260	002032					INH$S				;INHIBIT CONTEXT SWITCHING    261	002046	016767 	000000G	177644 		MOV	CADR,UISAR2		;POINT TO BASE OF CACHE    262	002054	016701 	040000G			MOV	40000+P.LRUF,R1		;GET LRU - FORWARD POINTER    263	002060	010103 				MOV	R1,R3			;KEEP A COPY SO KNOW WHEN TO STOP    264    265    266	002062	016767 	000000G	177644 	5$:	MOV	CADR,UISAR2		;POINT TO BASE OF CACHE    267	002070					CALL	ACBD      			;GET KT AND BIAS OFFSETS    268	002074	060467 	177644 			ADD	R4,UISAR2		;MAP TO BDB    269	002100	162705 	000000G			SUB	#B.LRUF,R5		;POINT TO BEGINNING OF BDB    270    271    272	002104	105765 	040000G			TSTB	40000+B.LUN(R5)		;IS IT A TST?    273	002110	001067 				BNE	25$			;IF NE - NO    274    275					;    276					; SEARCH THROUGH TST SCBS.    277					; LOOK FOR ONE THAT TST DISK ADDRESS MATCHES ADDRESS IN BDB.    278					; THIS WILL GIVE US STATION NAME NEEDED FOR DISPLAY.    279					;    280    281          282    283    284	002112	012700 	000777 			MOV	#777,R0			;INDICATE THAT WE ONLY WANT TO LOOK    285										;AT NON-TERMINAL SCBS    286    287	002116					CALL	SCBINI			;INITIALIZE THE SCB GETTING ROUTINE    288    289    290	002122				10$:	CALL	SCBNXT			;GET KT ADDRESS OF NEXT SCB    291    292	002126	005767 	177650 			TST	UISAR4			;IF UISAR4=0 NO MORE SCBS LEFT    293    294	002132	001456 				BEQ	25$    295    296	002134	122767 	000000G	100000G		CMPB	#SY.TST,S.TYP+100000	;IS THIS A TST STATION?    297      	002142	001367 				BNE	10$			;IF NE - NO    298    299	002144	126765 	100000G	040000G		CMPB	S.LBN+100000,B.HVBN+40000(R5) ;DO WE HAVE A MATCH ON HIGH    300										      ;8 BITS OF TST DISK ADDRESS    301	002152	001363 				BNE	10$    302    303	002154	126765 	100002G	040000G		CMPB	S.LBN+2+100000,B.LVBN+40000(R5) ;WHAT ABOUT LOW 16-BITS?    304	002162	001357 				BNE	10$    305    306	002164	026765 	100000G	040000G		CMP	S.LDV+100000,B.LINK+40000(R5)	;DO WE HAVE A MATCH ON UCB    307	002172	001353 				BNE	10      $    308    309    310    311					;MEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15:05  PAGE 7-1GATHER TST INFORMATION    312					; MAKE ENTRIES INTO TABLE:    313					;    314    315    316    317	002174	016512 	040000G			MOV	B.ADDR+40000(R5),(R2)		;CALCULATE RELATIVE ADDRESS    318											;OF TST IN CACHE    319	002200	166712 	000000G			SUB	CADR,(R2)    320    321	002204	016562 	040000G	000002 		MOV	B.SIZE+40000(R5),2(R2)		;AND SIZE    322	002212	016762 	100000G	000004 		MOV	S.NAM+100000,4(R2      )		;STORE STATION NAME    323	002220	016762 	100002G	000006 		MOV	S.NAM+2+100000,6(R2)    324	002226	016762 	100004G	000010 		MOV	S.NAM+4+100000,10(R2)    325    326	002234	105765 	040000G			TSTB	40000+B.USE(R5)			;IS TST IN USE?    327	002240	001403 				BEQ	20$				;IF EQ - NO    328    329	002242	052762 	000004 	000012 		BIS	#4,12(R2)			;SET FLAG TO INDICATE THAT TST    330											;IS IN USE    331    332    333	002250	062702 	000014 		20$:	ADD	#14,R2				;POINT TO NEXT TABLE ENTRY    334	002254	005267 	      176624 			INC	COUNT				;ONE MORE ENTRY IN TABLE    335	002260	026727 	176620 	000060 		CMP	COUNT,#48.			;HAVE WE USED UP ENTIRE TABLE    336	002266	001404 				BEQ	30$    337    338    339	002270	016501 	040000G		25$:	MOV	40000+B.LRUF(R5),R1		;LOOK AT NEXT BDB    340	002274	020103 				CMP	R1,R3				;ARE WE BACK AT THE START    341	002276	001271 				BNE	5$				;IF NE - CONTINUE    342    343	002300				30$:	ENB$S					;ENABLE CONTEXT SWITCHING    344    345	002312					RETURN    346    347    348    349		000001 		      		.ENDMEMORY DISPLAY MODULE2 - INFORM	MACRO M1110  15-FEB-79 15:05  PAGE 7-2SYMBOL TABLEACBD  = ****** GX	D$$Z11= 000004   	M$$NET= 000000   	P.SWSZ  000022   	T$$J16= 000003AS.DEL= 000010   	D.NAM = ****** GX	M$$OVR= 000000   	P.TCB   000026   	T$$KMG= 000000AS.EXT= 000004   	EXEFLG= 000002   	M$$XLN= 000400   	P.WAIT  000020   	T$$LWC= 000000AS.RED= 000001   	E$$DVC= 000000   	N$$CON= 000500   	Q$$OPT= 000017   	T$$PS = 000000AS.WRT= 000002   	E$$NSI= 000000   	N$$LDV= 000001   	R$$DSP= 000000   	T$$RAX=       000000A$$CHK= 000000   	E$$PER= 000000   	N$$MOV= 000011   	R$$EXV= 000000   	T$$RNE= 000000A$$CPS= 000000   	E$$XPR= 000000   	N$$MXM= 001100   	R$$HDV= 000000   	T$$RPR= 000000A$$NSI= 000000   	FIXFLG= 000004   	N$$TMO= 000012   	R$$H11= 000003   	T$$RST= 000000A$$PRI= 000000   	FORMS   001614R  	N$$UMR= 000024   	R$$JPO= 000000   	T$$RUB= 000000A$$TRP= 000000   	FRMLUN= ****** GX	OV$DB = 000000   	R$$JP1= 000003   	T$$SMC= 000000A.IOC   000003   	F$$LPP= 000000   	OV$DR = 000000   	R$$LKL= 000001   	T$$      SYN= 000000A.LGTH= 000014   	F$$LVL= 000001   	O$$LAP= 000000   	R$$MOF= 000000   	T$$TRW= 000000A.MPCT  000011   	G$$TPP= 000000   	PNTR    001106R  	R$$MPL= 000000   	T$$UTB= 000000A.PCB   000012   	G$$TTK= 000000   	PS.APR= 000007   	R$$M11= 000003   	T$$VBF= 000000A.PCBL  000000   	H$$RTZ= 000074   	PS.CHK= 010000   	R$$NDC= 000006   	T$$ZAN= 000300A.PRI   000002   	I$$RAR= 000000   	PS.CKP= 040000   	R$$NDH= 000226   	T$$18S= 000000A.STAT  000010   	I$$RDN= 000000   	PS.CKR= 020000   	R$$NDL= 000001         	T.NAM = ****** GXA.TCB   000004   	K$$CNT= 177546   	PS.COM= 000200   	R$$SND= 000000   	T.STAT= ****** GXA.TCBL  000006   	K$$CSR= 177546   	PS.DEL= 000010   	R$$STP= 000000   	T.ST2 = ****** GXB.ADDR= ****** GX	K$$IEN= 000115   	PS.DRV= 000020   	R$$11M= 000000   	T2.FXD= ****** GXB.HVBN= ****** GX	K$$LDC= 000001   	PS.FXD= 004000   	SCBINI= ****** GX	UISAR0= 177640B.LINK= ****** GX	K$$TPS= 000074   	PS.LIO= 001000   	SCBNXT= ****** GX	UISAR1= 177642B.LRUF= ****** GX	LD$DB = 000000   	PS.NSF= 000400   	S      Y.TST= ****** GX	UISAR2= 177644B.LUN = ****** GX	LD$DR = 000000   	PS.OUT= 100000   	S$$ECC= 000000   	UISAR3= 177646B.LVBN= ****** GX	LD$LP = 000000   	PS.PER= 002000   	S$$WPC= 000036   	UISAR4= 177650B.SIZE= ****** GX	LD$MM = 000000   	PS.PIC= 000100   	S$$WPR= 000005   	UISAR5= 177652B.USE = ****** GX	LD$NT = 000000   	PS.SYS= 000040   	S$$YSZ= 050000   	UISAR6= 177654CADR  = ****** GX	LD$RH = 000000   	P$$D70= 000000   	S.LBN = ****** GX	UISAR7= 177656COMFLG= 000001   	LD$TT = 000000   	P$$LAS= 000000         	S.LDV = ****** GX	UISDR0= 177600COUNT   001104RG 	LD$VT = 000000   	P$$OFF= 000000   	S.NAM = ****** GX	UISDR1= 177602C$$CDA= 000002   	LD$XM = 000000   	P$$RFL= 000000   	S.TYP = ****** GX	UISDR2= 177604C$$CKP= 000000   	L$$ASG= 000000   	P$$RTY= 000000   	TABLE   000000RG 	UISDR3= 177606C$$CSR= 177440   	L$$DRV= 000000   	P$$TPT= 000000   	TASKS   001164R  	UISDR4= 177610C$$LIS= 000000   	L$$LDR= 000000   	P.BLKS  000016   	TEMP    001100R  	UISDR5= 177612C$$ORE= 002000   	L$$PTO= 000037   	P.BUSY  000      024   	TSTS    002032R  	UISDR6= 177614C$$RSH= 177564   	L$$P11= 000001   	P.IOC   000003   	TS.EXE= ****** GX	UISDR7= 177616C$$RUN= 000000   	L$$11R= 000000   	P.LNK   000000   	T$$ACR= 000000   	V$$CTR= 001000C$$XDB= 000000   	MEM     001110RG 	P.LRUF= ****** GX	T$$BTW= 000000   	V$$TLD= 000120DRVFLG= 000010   	MEMOUT= ****** GX	P.MAIN  000012   	T$$BUF= 000000   	V$$TLM= 000205D$$IAG= 000000   	MEMTYP= ****** GX	P.NAM   000004   	T$$CCA= 000000   	V$$TRM= 000000D$$ISK= 000000   	M$$CRB= 000124   	P.OWN         000026   	T$$CCO= 000000   	X$$M11= 000002D$$L11= 000001   	M$$CRX= 000000   	P.PRI   000002   	T$$CTR= 000000   	$CXDBL= ****** GXD$$SHF= 000000   	M$$EXT= 000000   	P.REL   000014   	T$$ESC= 000000   	$C5TA = ****** GXD$$WCK= 000000   	M$$FCS= 000000   	P.SIZE  000016   	T$$GMC= 000000   	$LDRPT= ****** GXD$$YNC= 000000   	M$$K11= 000000   	P.STAT  000030   	T$$GTS= 000000   	$PARHD= ****** GXD$$YNM= 000000   	M$$MGE= 000000   	P.SUB   000010   	T$$HLD= 000000   	$$$R4 = 000000D$$ZMD= 000000   	M$$MUP= 0   â   00000. ABS.	000032	   000      	002314	   001ERRORS DETECTED:  0
VIRTUAL MEMORY USED:  3804 WORDS  ( 15 PAGES)DYNAMIC MEMORY:  5092 WORDS  ( 19 PAGES)ELAPSED TIME:  00:00:30MEM2,MEM2.LST/-SP=TPMMC/ML,EXEMC/ML,KERMC/PA:1,MEM2 â          ÕR`xQÁ› 8$        DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 1
                     15-FEB-79   15:09



PARTITION NAME : GEN   
IDENTIFICATION : V1.0  
TASK  UIC      : [300,30]
STACK    LIMITS: 120216 121215 001000 00512.
PRG XFR ADDRESS: 121636
TASK ATTRIBUTES: CP,PR             
TOTAL ADDRESS WINDOWS: 2.
TASK  IMAGE  SIZE  : 5120. WORDS
TASK ADDRESS LIMITS: 120000 143773
R-W DISK BLK LIMITS: 000002 000060 000057 00047.




DEMOPR.TSK;6 OVERLAY DESCRIPTION:

BASE    TOP        LENGTH      
----    ---        ------
120000  132633  012634  05532.       DEMOPR
132634  143773  011140  04704.            QUESUM
132634  133227  000374  00252.            MEMSUM
132634  135557  002724  01492.            APPSUM
132634  134007  001154  00620.            DSKSUM
132634  134247  001414  00780.            MSG34 
132634  137717  005064  02612.            TRAN34
132634  133757  001124  00596.            TST34 
132634  141753  007120  03664.            MEMINI
132634  134103  001250  00680.                  HELP  
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 2
DEMOPR               15-FEB-79   15:09




*** ROOT SEGMENT: DEMOPR


R/W MEM  LIMITS: 120000 132633 012634 05532.
DISK BLK LIMITS: 000002 000014 000013 00011.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 121216 010106 04166.
                          121216 006644 03492. DEMO         V1.0   DEMOPR.OBJ;3
                          130062 000556 00366. MISCEL V1.0   MISC.OBJ;7
                          130640 000216 00142. CBTA   04.2   SYSLIB.OLB;10
                          131056 000246 00166. EDDAT  02     SYSLIB.OLB;10
$DPB$$:(RW,I,LCL,REL,CON) 131324 000030 00024.
                          131324 000030 00024. DEMO   V1.0   DEMOPR.OBJ;3
$$ALER:(RW,I,LCL,REL,CON) 131354 000024 00020.
                          131354 000024 00020. ALERR  00     SYSLIB.OLB;10
$$ALVC:(RW,D,LCL      ,REL,CON) 131400 000130 00088.
$$AUTO:(RW,I,LCL,REL,CON) 131530 000130 00088.
                          131530 000130 00088. AUTO   08     SYSLIB.OLB;10
$$FSR1:(RW,D,GBL,REL,OVR) 131660 000000 00000.
                          131660 000000 00000. DEMO   V1.0   DEMOPR.OBJ;3
                          131660 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
$$FSR2:(RW,D,GBL,REL,CON) 131660 000104 00068.
                          131660 000104 00068. FCSFSR 0303MS SYSLIB.OLB;10
$$MRKS:(RO,I,LCL,REL,OVR) 132364       000076 00062.
                          132364 000000 00000. AUTO   08     SYSLIB.OLB;10
                          132364 000076 00062. OVCTL  12.01  SYSLIB.OLB;10
                          132364 000000 00000. OVDAT  07     SYSLIB.OLB;10
$$OVDT:(RW,D,LCL,REL,OVR) 131764 000020 00016.
                          131764 000020 00016. OVDAT  07     SYSLIB.OLB;10
$$OVRS:(RW,I,LCL,ABS,CON) 000000 000000 00000.
                          000000 000000 00000. OVRES  07     SYSLIB.OLB;10
$$RDSG:(RO,I,LCL,REL,      OVR) 132462 000150 00104.
                          132462 000000 00000. AUTO   08     SYSLIB.OLB;10
                          132462 000150 00104. OVCTL  12.01  SYSLIB.OLB;10
                          132462 000000 00000. OVDAT  07     SYSLIB.OLB;10
$$RESL:(RW,I,LCL,REL,CON) 132004 000164 00116.
                          132004 000104 00068. FINIT  0102MS SYSLIB.OLB;10
                          132110 000000 00000. FCSFSR 0303MS SYSLIB.OLB;10
                          132110 000024 00020. SAVRG  03           SYSLIB.OLB;10
                          132134 000034 00028. SAVR1  0101   SYSLIB.OLB;10
$$RGDS:(RW,D,LCL,REL,CON) 132170 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.
                          132170 000002 00002. OVDAT  07     SYSLIB.OLB;10
$$SGD0:(RW,D,LCL,REL,OVR) 132172 000000 00000.
                          132172 000000 00000. OVDAT  07     SYSLIB.OLB;10
$$SGD1:(RW,D,LCL,REL,CON) 132172 000170 00120.
$$SGD2:(RW,D,LCL,REL,OVR) 132362 000002 00002.
                                132362 000002 00002. OVDAT  07     SYSLIB.OLB;10
$$WNDS:(RW,D,LCL,REL,CON) 132364 000000 00000.
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 3
DEMOPR               15-FEB-79   15:09






GLOBAL SYMBOLS:

ACBD   130040-R  FD.RWM 000001    IO.WAL 000410    N.STBL 000002    RCVDT  123352-R  $CBOMG 130662-R  .FSRCB 131660-R  
APPSUM 131420-R  FO.RD  000001    JSTFY  127736-R  N.SZSG 000012    RECBUF 127250-R  $CBOSG 130670-R  .FSRPT 000050    
BUFCTR 121422-R  F.BKDS 000020    JST      FY1 127724-R  OF.HIT 121574-R  SCBINI 130422-R  $CBTA  130720-R  .MBFCT 131760-R  
BUFPTR 121420-R  F.BKST 000024    MEM    131510-R  OF.RD  121570-R  SCBNXT 130506-R  $CBTMG 130676-R  .NALER 131774-R  
CADR   125342-R  F.BKVB 000064    MEMINI 131500-R  OF.WRT 121572-R  TRANS  131450-R  $CBVER 130662-R  .NIOST 131770-R  
CCBINI 130170-R  F.DVNM 000134    MEMSUM 131410-R  OUTBUF 126140-R  TRINIT 131460-R  $DAT   131122-R  .NMRKS 132002-R  
CCBNXT 130346-R  F.EFBK 000010    MSGE   131440-R  OUTLIN 126024-      R  TSTDSP 131470-R  $DSW   000046    .NOVLY 131764-R  
COMMUN 127300-R  F.FNB  000102    N.ALER 000010    OUTPUT 121404-R  $ALBP1 131546-R  $MARKS 132364-R  .NOVPT 000042    
COM.AD 125340-R  F.STBK 000036    N.FID  000000    PRCNT  130016-R  $ALBP2 131644-R  $OTSV  000052    .NRDSG 132000-R  
CSIZE  125344-R  F.UNIT 000136    N.IOST 000004    PRT.OK 121564-R  $ALERR 131354-R  $SAVRG 132110-R  .NSTBL 131766-R  
CYCLE  121566-R  HELP   131520-R  N.MRKS 000016    QFDB   123146-R  $AUTO  131530-R  $TIM   1      31200-R  .NSZSG 131776-R  
DIRERR 127654-R  IE.ACT 177771    N.OVLY 000000    QUEINI 123406-R  $CBDAT 130640-R  $VEXT  000056    .SAVR1 132134-R  
DSKSUM 131430-R  IE.ITS 177770    N.OVPT 000054    QUESUM 131400-R  $CBDMG 130646-R  $$CPU  000022    ..FINI 132014-R  
FA.SHR 000040    IO.ATA 001410    N.RDSG 000014    QUE.ST 123404-R  $CBDSG 130654-R  .FINIT 132004-R  
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 4
QUESUM               15-FEB-79   15:09



*** SEGMENT: QUESUM


R/W       MEM  LIMITS: 132634 143773 011140 04704.
DISK BLK LIMITS: 000015 000026 000012 00010.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132634 003464 01844.
                          132634 003464 01844. SUMMAR V1.0   QUESUM.OBJ;13
$$ALVC:(RW,D,LCL,REL,CON) 136320 000000 00000.
$$RESL:(RW,I,LCL,REL,CON) 136320 005454 02860.
                          136320 00      0070 00056. ARITH  03     SYSLIB.OLB;10
                          136410 000320 00208. CLOSE  0112S  SYSLIB.OLB;10
                          136730 001552 00874. OPFID  0125S  SYSLIB.OLB;10
                          140502 000046 00038. READ   0102MS SYSLIB.OLB;10
                          140550 000022 00018. WAITU  0100MS SYSLIB.OLB;10
                          140572 000034 00028. ANSPAD 0100MS SYSLIB.OLB;10
                          140626 000020 00016. BKRG   0100MS SYSLIB.OLB;10
                                140646 000014 00012. COMMON 0101MS SYSLIB.OLB;10
                          140662 000126 00086. XQIOI  0102MS SYSLIB.OLB;10
                          141010 000132 00090. WAITI  0102MS SYSLIB.OLB;10
                          141142 000112 00074. RSTFDB 0102S  SYSLIB.OLB;10
                          141254 000126 00086. WTWAIT 0100S  SYSLIB.OLB;10
                          141402 000240 00160. RQLCB  03     SYSLIB.OLB;10
                          141642 000270 00184. ASSLUN 0113MS SYSLIB.OLB      ;10
                          142132 000062 00050. BDBREC 0100MS SYSLIB.OLB;10
                          142214 000134 00092. RETADR 0102MS SYSLIB.OLB;10
                          142350 000074 00060. RDWAIT 0102S  SYSLIB.OLB;10
                          142444 000160 00112. RDWRIT 0104MS SYSLIB.OLB;10
                          142624 000312 00202. RWLONG 0002MS SYSLIB.OLB;10
                          143136 000154 00108. EOFCHK 0100MS SYSLIB.OLB;10
                          143312 000304 00196. CKAL      OC 0104MS SYSLIB.OLB;10
                          143616 000022 00018. WATNOD 0100MS SYSLIB.OLB;10
                          143640 000044 00036. RWBLK  0101S  SYSLIB.OLB;10
                          143704 000032 00026. CONTRL 100MS  SYSLIB.OLB;10
                          143736 000036 00030. WATSET 0101MS SYSLIB.OLB;10
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.



GLOBAL SYMBOLS:

QE.BDT 000120    QE.IJS 000146    QE.NPS 000127    QE.QNE 000102    QE.TYP 000110    QQ.SBA 000200    QS.FSJ 0      00004    
QE.BQN 000134    QE.INM 000151    QE.NP0 000130    QE.RED 000124    QE.UNL 000123    QQ.SMD 000100    QS.SBA 000200    
QE.BSN 000077    QE.IO  000114    QE.NVT 000144    QE.REQ 000131    QF.ADE 000200    QQ.STO 000040    QS.SHJ 000004    
QE.DIR 000117    QE.JEA 000111    QE.OFL 000122    QE.ROP 000115    QJ.ABL 000040    QS.FFO 000200    QS.SLC 000020    
QE.DNE 000121    QE.JNE 000112    QE.OJD 000002    QE.SDF 000107    QJ.AFL 000100    QS.FNF 000001    QS.SMD 000100    
QE.IAR 000116          QE.MEX 000132    QE.PRI 000053    QE.SEA 000101    QJ.AHJ 000004    QS.FSA 000040    QS.STO 000040    
QE.IDB 000133    QE.NAV 000125    QE.QDF 000106    QE.SEX 000001    QJ.ALC 000020    QS.FSD 000100    QS.SWI 000010    
QE.IFC 000001    QE.NFS 000113    QE.QEA 000100    QE.SMD 000105    QJ.ARE 000200    QS.FSF 000010    QS.SXE 000002    
QE.IID 000150    QE.NJE 000145    QE.QMD 000104    QE.SNE 000103    QJ.AWI 000010    QS.FSI 000020    QUESUM 135312-R  
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB                   PAGE 5
QUESUM               15-FEB-79   15:09



Q.FATT 000011    Q.JFI  000020    Q.JTI  000016    Q.SFL  000016    .CLOSE 136410-R  ..EFCK 143136-R  ..RWLG 142624-R  
Q.FCPN 000030    Q.JFO  000037    Q.JUIC 000014    Q.SFO  000017    .CTRL  143704-R  ..EFC1 143144-R  ..SEFB 143214-R  
Q.FDEV 000006    Q.JLFI 000022    Q.QASS 000006    Q.SLEN 000020    .FATAL 140660-R  ..EXTD 143412-R  ..WAEF 141072-R  
Q.FFN  000014    Q.JLNK 000000    Q.QCJL 000012    Q.SNAM 000000    .OPFID 136730-R        ..EXT1 143466-R  ..WAIT 141052-R  
Q.FJ   000004    Q.JLPP 000036    Q.QHJL 000016    Q.SNUM 000005    .READ  140502-R  ..FCSX 140646-R  ..WAND 143616-R  
Q.FLNK 000000    Q.JMXP 000026    Q.QLEN 000020    Q.SST  000004    .WAIT  140550-R  ..IDPB 140760-R  ..WAST 143736-R  
Q.FNC  000026    Q.JNAM 000004    Q.QNAM 000000    Q.SUCB 000010    ..ALC1 143362-R  ..QIOW 141022-R  ..WBLK 143646-R  
Q.FNCP 000027    Q.JNPP 000024    Q.QNUM 000005    Q.SUIC 000014    ..ALOC 143312-R  ..RBLK 143640-R  ..WTRD 1425      16-R  
Q.FSEQ 000002    Q.JPRI 000034    Q.QOJL 000010    $DIV   136352-R  ..ALUN 141646-R  ..RFDB 141142-R  ..WTWA 141254-R  
Q.FUFD 000012    Q.JQ   000010    Q.QST  000004    $MUL   136320-R  ..ANSP 140572-R  ..RTAD 142214-R  ..WTWD 141254-R  
Q.JAFT 000030    Q.JQL  000033    Q.QTJL 000014    $RLCB  141402-R  ..BDRC 142132-R  ..RWAC 142372-R  ..WTW1 141260-R  
Q.JATT 000035    Q.JSEQ 000002    Q.SASS 000006    $RQCB  141504-R  ..BKRG 140626-R  ..RWAT 142350-R  ..XQIO 140662-R  
Q.JCFI 000022    Q.J      SY  000012    Q.SCJ  000012    .ASLUN 141642-R  ..CTRL 143710-R  ..RWCK 142444-R  ..XQI1 140700-R  
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 6
MEMSUM               15-FEB-79   15:09



*** SEGMENT: MEMSUM


R/W MEM  LIMITS: 132634 133227 000374 00252.
DISK BLK LIMITS: 000027 000027 000001 00001.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL      ,REL,CON) 132634 000374 00252.
                          132634 000374 00252. SUMRY2 V1.0   MEMSUM.OBJ;13
$$ALVC:(RW,D,LCL,REL,CON) 133230 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.



GLOBAL SYMBOLS:

C.CSIZ 000040    P.HDR  000032    TS.OUT 000400    T.TCBL 000030    $CRAVL 006114    $RQSCH 001424    .CCBBA 000226    
IO.RVB 010400    P.HIT  000020    T.ACTL 000052    T2.AST 100000    $CXDBL 001421    $SIZE  000174    .CCBLH 000222    
IO.WVB 011000    P.NUM  000016    T.ASTL       000016    T2.DST 040000    $C5TA  006362    $TCPU0 001432    .SCBTA 000156    
IS.SUC 000001    P.SIZE 000016    T.NAM  000006    T2.SPN 000004    $DIV   016352    $TCPU1 001434    .SCBTS 000166    
MEMSUM 132760-R  ST.NAT 000004    T.PCB  000046    T2.STP 000020    $LDRPT 006154    $TKTCB 001416    .SCBTT 000164    
P.ALLO 000030    S.SAT  000014    T.STAT 000032    T2.WFR 000001    $MUL   016320    $TSKHD 006156    .SCBTZ 000160    
P.DEAD 000024    TS.EXE 100000    T.ST2  000034    $BASE  000172    $      PARHD 006152    .ACTTB 000204    
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 7
APPSUM               15-FEB-79   15:09



*** SEGMENT: APPSUM


R/W MEM  LIMITS: 132634 135557 002724 01492.
DISK BLK LIMITS: 000030 000032 000003 00003.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132634 002724 01492.
                          132634 0      02724 01492. APPLIC V1.0   APPSUM.OBJ;51
$$ALVC:(RW,D,LCL,REL,CON) 135560 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.



GLOBAL SYMBOLS:

APPSUM 132700-R  FRMLUN 000010    I.PRMS 000050    SY.TST 000006    T.ST2  000034    $MUL   016320    .CCBLH 000222    
BF.OND 000020    F.FLG  000006    MMLUN  000002    S.FST  000010    T2.AST 100000    $PARHD 006152    .SCBTA 000156    
B.FLG  000010    F.IMP  000026    P.ALLO 000030    S.LINK 000040    T2.DST 040000    $RQSCH 001424    .SCBT      S 000166    
B.LINK 000022    F.NGET 000014    P.DEAD 000024    S.OPER 000043    T2.SPN 000004    $SIZE  000174    .SCBTT 000164    
B.LRUF 000004    F.NINS 000022    P.HDR  000032    S.SAT  000014    T2.STP 000020    $TCPU0 001432    .SCBTZ 000160    
B.LUN  000011    F.NLOK 000024    P.HIT  000020    S.TYP  000017    T2.WFR 000001    $TCPU1 001434    
B.SIZE 000020    F.NUPD 000016    P.LRUF 000010    T.ACTL 000052    $BASE  000172    $TKTCB 001416    
B.USE  000013    F.SIZE 000030    P.NUM  000016          T.ASTL 000016    $CRAVL 006114    .ACFSZ 000232    
C.CSIZ 000040    IO.RVB 010400    SO.O   000002    T.NAM  000006    $CXDBL 001421    .ACFTB 000230    
C.SLT  000020    IO.WVB 011000    ST.NAT 000004    T.PCB  000046    $C5TA  006362    .ACTTB 000204    
FF.WRK 000010    IS.SUC 000001    SY.TIM 000004    T.STAT 000032    $DIV   016352    .CCBBA 000226    
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 8
DSKSUM               15-FEB-79   15:09



*** SEGMENT: DSKSUM


R/W MEM  L      IMITS: 132634 134007 001154 00620.
DISK BLK LIMITS: 000033 000034 000002 00002.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132634 001052 00554.
                          132634 000724 00468. DISPLA V1.0   DSKSUM.OBJ;14
                          133560 000126 00086. CDDMG  00     SYSLIB.OLB;10
$$ALVC:(RW,D,LCL,REL,CON) 133706 000000 00000.
$$RESL:(RW,I,      LCL,REL,CON) 133706 000100 00064.
                          133706 000100 00064. DARITH 0004   SYSLIB.OLB;10
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.



GLOBAL SYMBOLS:

DSKSUM 132702-R  T.ACTL 000052    T.ST2  000034    T2.WFR 000001    $DDIV  133744-R  $PARHD 006152    
IO.RVB 010400    T.ASTL 000016    T2.AST 100000    $CDDMG 133560-R  $DEVHD 006122    $RQSCH 001424    
IO.WVB 011000    T.NAM  000006    T2.DST 040000    $CRAVL 006114    $DIV   016352    $TCPU0 001432    
IS.SUC 000001          T.PCB  000046    T2.SPN 000004    $CXDBL 001421    $DMUL  133706-R  $TCPU1 001434    
P.HDR  000032    T.STAT 000032    T2.STP 000020    $C5TA  006362    $MUL   016320    $TKTCB 001416    
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 9
MSG34                15-FEB-79   15:09



*** SEGMENT: MSG34 


R/W MEM  LIMITS: 132634 134247 001414 00780.
DISK BLK LIMITS: 000035 000036 000002 00002.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT        FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132634 001412 00778.
                          132634 001412 00778. MESSAG V1.0   MSG34.OBJ;10
$$ALVC:(RW,D,LCL,REL,CON) 134246 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.



GLOBAL SYMBOLS:

BF.ALC 000001    IO.RVB 010400    M.FLG  000024    P.NUM  000016    T.STAT 000032    $CXDBL 001421    $TKTCB 001416    
BF.OND 000020    IO.WVB 011000    M.NOR  000034    ST.NAT 000004    T.ST      2  000034    $C5TA  006362    .ACTTB 000204    
B.ADDR 000016    IS.SUC 000001    M.ROT  000060    S.FST  000010    T2.AST 100000    $DIV   016352    .CCBBA 000226    
B.FLG  000010    MF.ACT 000001    M.SST  000054    S.NAM  000000    T2.DST 040000    $MUL   016320    .CCBLH 000222    
B.LINK 000022    MMLUN  000002    M.TIM  000044    S.SAT  000014    T2.SPN 000004    $PARHD 006152    .SCBTA 000156    
B.LUN  000011    MSGE   133302-R  P.ALLO 000030    T.ACTL 000052    T2.STP 000020    $RQSCH 001424          .SCBTS 000166    
C.CSIZ 000040    M.BSZ  000056    P.DEAD 000024    T.ASTL 000016    T2.WFR 000001    $SIZE  000174    .SCBTT 000164    
C.SLT  000020    M.CCB  000022    P.HDR  000032    T.NAM  000006    $BASE  000172    $TCPU0 001432    .SCBTZ 000160    
C.TDB  000006    M.DNR  000035    P.HIT  000020    T.PCB  000046    $CRAVL 006114    $TCPU1 001434    
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 10
TRAN34               15-FEB-79   15:09



*** SEGMENT: TRAN34


R/W MEM  L      IMITS: 132634 137717 005064 02612.
DISK BLK LIMITS: 000037 000044 000006 00006.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132634 004764 02548.
                          132634 004636 02462. TRANSA V1.0   TRAN34.OBJ;14
                          137472 000126 00086. CDDMG  00     SYSLIB.OLB;10
$$ALVC:(RW,D,LCL,REL,CON) 137620 000000 00000.
$$RESL:(RW,I,      LCL,REL,CON) 137620 000100 00064.
                          137620 000100 00064. DARITH 0004   SYSLIB.OLB;10
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.



GLOBAL SYMBOLS:

C.CSIZ 000040    P.ALLO 000030    TRANS  135742-R  T.ST2  000034    $CRAVL 006114    $RQSCH 001424    .SCBTA 000156    
C.SCB  000010    P.DEAD 000024    TRINIT 135704-R  T2.AST 100000    $CXDBL 001421    $SIZE  000174    .SCBTS 000166    
C.TCB  000026    P.HDR  000032    T.ACTL 000052    T2.DST 040000    $C5TA  006362    $      TCPU0 001432    .SCBTT 000164    
C.TDB  000006    P.HIT  000020    T.ASTL 000016    T2.SPN 000004    $DDIV  137656-R  $TCPU1 001434    .SCBTZ 000160    
C.TID  000000    P.NUM  000016    T.NAM  000000    T2.STP 000020    $DIV   016352    $TKTCB 001416    
IO.RVB 010400    ST.NAT 000004    T.NTR  000012    T2.WFR 000001    $DMUL  137620-R  .ACTTB 000204    
IO.WVB 011000    S.SAT  000014    T.PCB  000046    $BASE  000172    $MUL   016320    .CCBBA 000226    
IS.SUC 000001    S.TERM 000142    T.STAT 000      032    $CDDMG 137472-R  $PARHD 006152    .CCBLH 000222    
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 11
TST34                15-FEB-79   15:09



*** SEGMENT: TST34 


R/W MEM  LIMITS: 132634 133757 001124 00596.
DISK BLK LIMITS: 000045 000046 000002 00002.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132634 001124 00596.
                                132634 001124 00596. TST    V1.0   TST34.OBJ;6
$$ALVC:(RW,D,LCL,REL,CON) 133760 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.



GLOBAL SYMBOLS:

C.CSIZ 000040    P.NUM  000016    S.MXSZ 000056    T.NAM  000006    T2.WFR 000001    $RQSCH 001424    .SCBTA 000156    
IO.RVB 010400    ST.NAT 000004    S.NAM  000000    T.PCB  000046    $BASE  000172    $SIZE  000174    .SCBTS 000166    
IO.WVB 011000    SY.TST 000006    S.SAT  000014    T.STAT 000032    $CRAVL 006114          $TCPU0 001432    .SCBTT 000164    
IS.SUC 000001    S.CML  000045    S.TLOD 000066    T.ST2  000034    $CXDBL 001421    $TCPU1 001434    .SCBTZ 000160    
P.ALLO 000030    S.FLOD 000070    S.TYP  000017    T2.AST 100000    $C5TA  006362    $TKTCB 001416    
P.DEAD 000024    S.IO   000076    TSTDSP 133312-R  T2.DST 040000    $DIV   016352    .ACTTB 000204    
P.HDR  000032    S.LINK 000040    T.ACTL 000052    T2.SPN 000004    $MUL   016320    .CCBBA 000226    
P.HIT  000020    S.MCT  000016    T.ASTL       000016    T2.STP 000020    $PARHD 006152    .CCBLH 000222    
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 12
MEMINI               15-FEB-79   15:09



*** SEGMENT: MEMINI


R/W MEM  LIMITS: 132634 141753 007120 03664.
DISK BLK LIMITS: 000047 000056 000010 00008.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132634 007120 03664.
                                132634 001460 00816. INITIA V1.0   MEMINI.OBJ;13
                          134314 002314 01228. MEMORY V1.0   MEM2.OBJ;10
                          136630 003124 01620. GENERA V1.0   MEMOUT.OBJ;7
$$ALVC:(RW,D,LCL,REL,CON) 141754 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.



GLOBAL SYMBOLS:

B.ADDR 000016    FRMLUN 000010    P.DEAD 000024    S.LDV  000060    T.ST2  000034    $DIV   016352    .CCBBA 000226    
B.HVBN 000012    IO.RVB 010400    P.HDR  000032          S.NAM  000000    T2.AST 100000    $LDRPT 006154    .CCBLH 000222    
B.LINK 000022    IO.WVB 011000    P.HIT  000020    S.SAT  000014    T2.DST 040000    $MUL   016320    .SCBTA 000156    
B.LRUF 000004    IS.SUC 000001    P.LRUF 000010    S.TYP  000017    T2.FXD 002000    $PARHD 006152    .SCBTS 000166    
B.LUN  000011    MEM    135424-R  P.NUM  000016    TABLE  134314-R  T2.SPN 000004    $RQSCH 001424    .SCBTT 000164    
B.LVBN 000014    MEMHLF 133320-R  ST.NAT 000004    TS.EXE 100000    T2.STP 000      020    $SIZE  000174    .SCBTZ 000160    
B.SIZE 000020    MEMINI 133500-R  SYSHFT 133312-R  T.ACTL 000052    T2.WFR 000001    $SYSIZ 006254    
B.USE  000013    MEMOUT 140544-R  SYSRND 133314-R  T.ASTL 000016    $BASE  000172    $TCPU0 001432    
COUNT  135420-R  MEMSIZ 133304-R  SYSTMP 133316-R  T.NAM  000006    $CRAVL 006114    $TCPU1 001434    
C.CSIZ 000040    MEMTYP 133322-R  SY.TST 000006    T.PCB  000046    $CXDBL 001421    $TKTCB 001416    
D.NAM  000004    P.ALLO 000030    S.LBN  000052    T.      STAT 000032    $C5TA  006362    .ACTTB 000204    
DEMOPR.TSK;6   MEMORY ALLOCATION MAP  TKB             PAGE 13
HELP                 15-FEB-79   15:09



*** SEGMENT: HELP  


R/W MEM  LIMITS: 132634 134103 001250 00680.
DISK BLK LIMITS: 000057 000060 000002 00002.


MEMORY ALLOCATION SYNOPSIS:

SECTION                                        TITLE  IDENT  FILE
-------                                        -----  -----  ----
. BLK.:(RW,I,LCL,REL,CON) 132634 001246 00678.
                    Ê           132634 001246 00678. HELP          HELP.OBJ;4
$$ALVC:(RW,D,LCL,REL,CON) 134102 000000 00000.
$$RTS :(RW,I,GBL,REL,OVR) 132170 000002 00002.



GLOBAL SYMBOLS:

HELP   134012-R  




*** TASK BUILDER STATISTICS:

    TOTAL WORK FILE REFERENCES: 105906.
    WORK  FILE  READS: 0.
    WORK  FILE WRITES: 0.
    SIZE OF CORE POOL: 16132. WORDS (63. PAGES)
    SIZE OF WORK FILE: 14592. WORDS (57. PAGES)

    ELAPSED TIME:00:01:35
Ê         šETXâyÁ› 8$         oM    pÁ     ¯”D  ê¨ëH®>ê¨u~HPê¨€H²>ë¨ƒ2Høë¨º3Hþë¨È3HÜë¨Ï3Hðë¨D~H$ë¨ÝH@ë¨+€H.?ô¨«Hnô¨¯Hv; ô¨J!Hj;ô¨:^H$ô¨W^HFô¨ÌeHz©³KHä>©CEH´©WEH¼©w—H¶©œwH²;$©CTH~9©x‚H:A=©è&HH=©°'HD=©|—Hh7>©”MHV @©TGHbDC©»H´=C©H4C©ÊH6C©„:HÔGC©£KH8D©ƒ:HÎD©Ô:HÞD©FHfD©:dHD©žrHD©…sHE©OH$E©t!HòG©RH( G© gHhJ©4H®J©@	H¦J©t	Hò=J©¼	HLJ©;dH¬J©wHHJ©ÌyH¤J©Ã…H"J©L†H$L©0H>JL©XH2LL©€HBML©¨H®ML©ÐHHN L©NHðM©sHN©^KH      |N©­sHÞN©î~Hx#P©\H[©(}Hòa©ôyH°?b©~Høb©€»HøJb©ÀÁHKb© ÈH4Kb©@ÎHRKe©ºHŠe©×Hª e©Ä	H`#e©«Hte©ÌeH†e©×H<2e©ÄŠHRe©¢ŒHJJi©ÎHêi©ŽsH i©TtHòi©€‰Hêm©@H,Mm©4Hàm©âH:Lm©€»HÌLm©ÀÁHêL m© ÈHMp©'MH p©(MH q©'MHò+q©(MHú+r©ŸHÖ r©?	Hê r©p	H3r©r	Hp1r©x	H”!r©ŽHè3r©ÛHú!r©ÜH"r©óH¼4r©¢Hz0 r©¦H""r©§H¤&r©ÊH"r©:HÈ#r©ˆHä#r©ýHð3r©2Hâ1r©zHÔ#r©ÈHø#r©® H\7r©6!H´"r©7!H:'r©[!HÐ6r©#H$r©#HÈ6 r©#Hb7r©`&HÄ*r©D,HD%r©©-H’%r©à-H¾)r©P.H      ö%r©ë.H8&r©ð.Hˆ&r©'MHºr©(MHÊr©xQHV'r©SHR*r©\gHÖ*r©·kHš+r©!mH. r©®pHü3r©qH€/r©qHö*r©KqH„/r©YqHÐ4r©[qHÖ2r©QsHæ*r©VsH)r©ÖsHl*r©vwH47r©ŽwH4r©ôxH0r©NyH3r©“yHˆ4r©–yH>( r©ìyHD4r©ðyH3r©óyH04r©öyH:7r©R~HþAr©}…H*(r©ƒ…HÆ2r©¼HV4r©ÃHx4r©½’H$4t©š^HÆ;v©šHì;v©""Hì;v©?TH˜v©þvH\; v©HÒ;y©fHr‹©*H”©ÄTHÔ"•©ÌyH`F•©àH†š©KqHBš©ÄqHžš©mrH¢š©sHTš©‰sH¤š©ŽsH¦š©’sH¨š©R~HB ©.sHèD  ©6sHöD ©8sHâD ©BxH>¹©ÖWHd¹©T[H$¼©àH|F½©C	Hb¾©H´C¿©8rH      <¿©VrHN¿©WrHLÀ©áfHŽFÀ©õfH|FÀ©öfH‚FÂ©FH^ ì©|H:ì©ÌeH¼ì©”’HjªòH+ªÈ3H<D,ªŒKH,ªüKH,ª”MH4ªƒ:HÂF6ª–8Hü6ªl;HFP6ªŒ}H\6ªýHª6ª€Hx6ª€Hª 6ªÔ€Hv6ªß€HÐ7ªHª7ª4Hò7ªfHô7ªö&HD7ª4FHò7ªàHÌF£ªRGH¸¤ªžgHª¤ªsHl¯ªôHÞD¯ª-HD°ª@HŒM°ªâHJM ³ªë~HHÉª+gHFËªúpHFËªsHÖÕª€»HÒKØªÊHZØª4MH˜Øª5MHˆØªVNHzØªYeHÆØªÌeHîØªÞ‰HHÝª KHÐàª#Hpüª\}HJ üª€»HOÿªZH(«€»Hž<«ÀÁH¤<« ÈHª<«@ÎH°<«€ÔH¶<«ÀÚH¼<« áHÂ<«@çHÈ<«€HžBA«ëXH      ¦A«ÄqHjA«sHdA«¢sH6 A«€}H\:K«¼	HÒK«€QHÕK«ÕZHÔO« _HPO«šH6R«F^HT«|HRT«”’H‚W«|qH@i«ôyH¼?k«tLH m«QH,=n«›`HRq«zZH‚ q«~ZH^q«ˆZHdu«œHŽz«¶TH²z«ÄTH¼}«–H‚}«#H$B•«[MHà•«eMH•«hMH~•«®SH¶A˜«@H L˜«4H,˜«€HL˜«âHFJ œ«ðH„œ«ºQHl%œ«:dHrBœ«ïfH”B¡«óH¡«ôH<¡«@wH¹«Â‹HÊ»«„HÀ»«HÄ½«Š}HH?½«ð}Hx?½«H|?½«áH^?½«äH\? ¿«ö&HÚ¿«t'HÜFÀ«(H2Á«¼,HBÊ«L	Hä?Ê«t	H2>Ê«œTH2@Ê«µWH‚=Ê«äyHú?Ê«ô‘HP>Ì«ÃH
Ì«pEHÌ«ŒdH^BÌ«+gHbBÏ«ëyH       Ñ«OHtRÑ«,xH,Ñ«BxH¬Ñ«hHtZÑ««„H:ã«H€@ã«fgHã«ggHã«hgHå«ÞSHìå«ßSHîé«²H#ë«ZH0ë«øfHÂë«z}H ë«½’H 4î«MHæò«½HüFò«ÒhHGò«àH`ó«FHnó« GHEó«¡GHEó«¤GH
Eó«ˆ}HöCô«xZHÐô«€»HNô«ÀÁH¸N¬œwHîE¬xQHp> D¬zH$OD¬€»HtO´¬@HN´¬âH¶MÂ¬@H°NÂ¬âHPN„¯€»H¾O‡¯€»HªO¢¯€»HjJ¢¯ÀÁHŽJ¢¯ ÈH²J¢¯@ÎHÖJ£¯ÀÚHRN­¯€»HbL­¯ÀÁH†L ­¯ ÈHªL³¯ÀH$ â°€»HæOð°€»HlM±€»HK±ÀÁH²K<±€»HòN²€»HÒO²€»HúO)²€»H–O0²«zH 4²€»HÜM4²ÀÁHvN„²€»HHO3LŸH  ŒH;H ŒÈ`H Œýf      H Œ9€H ŒL…H€ S}žH  d@yH
 mxxH nHH pH rŽ{H  r˜{Hÿÿr¶{Höÿr¼{Hðÿr½{Hïÿ r¿{HíÿrÀ{Hþÿrà{H r8|Hûÿr`|Húÿrˆ|Hùÿr°|HøÿrÎ|H°ÿrÏ|H¯ÿrÒ|H¬ÿrÓ|H«ÿrÔ|HªÿrÕ|H©ÿrö|H¦ÿrø|H¤ÿ rù|H£ÿrú|H¢ÿrû|H¡ÿrü|H ÿrý|HŸÿrþ|Hžÿrÿ|HÿuH uH uüXH vöH vy:H  v„:H vaH vžgH  Ô/H` ÔsH ÔZHa #žwH #zH ¬#è.H. ¯#xdH ²#éH ³#U<H  $9ŸHñÿ$9.HÞÿ$9¬Hÿÿ$9kHìÿ$9|Híÿ$9)Høÿ $91Hùÿ$9BHýÿ$9ž!Höÿ$939Hþÿ$9ƒKHåÿ$9nY      HÛÿ$9ÜYHéÿ$9¼^H¿ÿ$9BaHîÿ$9ÙfHðÿ$9CyHúÿ$9+…H«ÿ´:t	H ´:®H ´:ÜH  ´:nMH´:brH ´:òsH ´:+…H 
´:¢‘H ´:2“H ;L…H T;zH ¡<,€H$ ¦<ðH
 ¬<è.H( °<ˆrH ;F3	Hêô;F4	HìôÔG“QH  ÔGžSH ÔG¼^H ÔGxwH ÔGºƒH@ ÔG¨…H #Ið_Hüÿ#I(sH )I8^Hýÿ/Ið‘H 0IèqHúÿ3IøHþÿN6H N«H NãQH aOØwH  kOÐpH nOHH nOH…H tOÅžH uOH uOüXH “U]RH  ,bè.H ah €H bhËLH bhQ†H hhÐH ih8^H lhè.H" lh8YH   mh¶H
 nhHH ohð‘H phèqH phØrH rh !H shU<H sh<}H shƒ      H shÒ’H thH wh¼H {9HM {£KH {ºsH<  {“H< "{CTH "{NTH #{H &{8rH ){H +{ÐpH +{8|H +{P}H ,{ 2H  0{àGH 2{H 2{¶^H 3{øH 3{ ‚H  Ü{&H€ Ü{¸ H Ü{r!H Ü{_MH €ˆH€ €ŠH@ €#H €€aH aìH* aìyH a €H, czdH dÙfH  eg'H e ™H   i8^H l°H! lpH$ lè.H@ l8YH  m™H( nHH oH8 op&H0 pH& pèqH r<H
 rŒH< r|qH4 sL	H>  sqH3 s<}H s ‚H s(‚H tH uH ‚ŸH@ ‚L	H €‚îH ‚H  ‚|H ‚      H @‚D)H ‚ô3H€ ‚ŽwH  ‚NyH ‚ðyH ‚ÂH D‚ÈH €D‚ôH@ D‚ÊQH D‚æfH D‚UqH  D‚îrH  Ôƒt	H Ôƒ4FH Ôƒ LH ÔƒZH@ ÔƒžgH ÔƒmH   »„.	H ÿ»„îH€ÿT†‘H€ T†ê'H  T†*KH T†íQH T†„SH@ T†¼^H T†JgH T†L…H ¡‡@H ¡‡ €H ¢‡0„H £‡hLHúÿ£‡ ZH  £‡à~H £‡˜”H £‡À”H
 £‡è”H £‡•H ¤‡H  ¯‡H ¯‡ð‘Hþÿ°‡ˆrH °‡z}H ²‡àH ³‡H ³‡øH ³‡ ‚H µ‡üXH  ¶‡H ÓòH¨ašàyH dš(xH fš›`H
 išyH jšyH lšp!H( lš8YH  pšXzH rš !H tšH vš¸H$ všxdH& L©ø      H   ¬¢sH              ‘ xaÁ› 8$        ò                                                                                                                                            € € € €                   FFFFF                                                                                € € 2                   FFF  ö   r J«‚³  òµž ¸Gâà      ÷Lûðÿ÷•à Dûß ßà  ·Øÿ÷TþÐÿ÷PþÈÿÆžF&f¦æ&f&
ÎŒú&
Îˆú&
Î„ú&
ÎNð÷E7 HðÀ€ÿÁ  &
Àe Á
úÀ€ôÁ@ &
Àe Á
úÀ€ðÁ> &
Àe Á
ú Á&      ž<à à ÂFà üFà ÌFà ^à †à `à w ‚&  Ä¸      FXà 6Xà ž<î ž<ï ÔGà (á ¤<â là ¤<ä ¤<å ¤<æ ¤<ç ¤<è ¤<é ¤<ê ¤<ë ¤<ì ¤<í ¤<î ¤<ï zXà ª<á àà ª<ã ª<ä ,á ª<æ ª<ç ª<è |Fà ÜFà ,à ª<ì ª<í ª<î ª<ï °<à °<á °<â °<ã °<ä °<å °<æ °<ç °<è °<é °<ê °<ë °<ì °<í °<î °<ï ¶<à ¶<á ¶<â ¶<ã ¶<ä ¶<å &Xà Xà ¶<è ¶<é ¶<ê ¶<ë ¶<ì ¶<í tià „ià ¼<à ¼<á ¼<â ¼<ã ¼<ä ¼<å ¼<æ ¼<ç ¼<è ¼<é ¼<ê ¼<ë ¼<ì ¼<í ¼<î ¼<ï Â<à Â<á Â<â Â<ã Â<ä Â<å Â<æ Â<ç Â<è Â<é                                                                                                                                                                                                         À."­  j Ò…¨ À4"­  jâ¬À4À2"­  èiâ¬j­ú¬Âàb£ò´¦*¦ °Âd¤  Édöi¢À 0ÌdP¡þiÌdti( ú  öih§ 0* Ø‚ Ë  Ò…€ ¨ Âà¸G    :‚³  ‚³J« „³òµ0:0«8 0 J«hªä¨Â¶ ð  ÿÿ|[2 r    xA½   '¸G 
CRASH - DUMP IN PROGRESS   ò"                                                                                                                                            € € € €                   FF      FFF                                                                                € € 2                   FFF  ö   r J«‚³  òµž ¸Gâà      ÷Lûðÿ÷•à Dûß ßà  ·Øÿ÷TþÐÿ÷PþÈÿÆžF&f¦æ&f&
ÎŒú&
Îˆú&
Î„ú&
ÎNð÷E7 HðÀ€ÿÁ  &
Àe Á
úÀ€ôÁ@ &
Àe Á
úÀ€ðÁ> &
Àe Á
ú Á&ÅtÿB”Í‹þ€µ ù÷U úß¼ýêôÀ”šw ø ð   ×-†š u†ð]~š È ðU  
 B
Â5ÀòÂdšÃbš—r æƒ
—r Ã ƒUð¦ ð ° ðüÿ È9 ÷	\ ÷ÐþI÷-Îþ&šE÷-Èþ šA÷	‚ 
0
( Å*ýWu p ð       ° ÷	 ðH ÷	 0
 ð ð ÷	 úð ÿ È•1 È‹þ€È‡ ð5  ð ÿ 0
 0
( 0
 0
 È9 ÷	Ðÿ
zÿß? àô
  þ¦Â, æ ÊH„œ … s f
s Å …Uðúÿ p 0 ð¦ È9 ÷	|ÿ·¬ îý0·, èý,÷%ªªâý(p 0 
… w …l Dp 0( ÄEüÿÈE 0Ñ …
 Å% ‡…p ÷	ÿÂe Î
²Ö‚‡ 

÷ &÷
æû¿æûŠþÿæ¦f&Í	[&D 4Š Äe
 Œd¤$
æ—þÿß•à þÿ? 7üŸ•þÿ·Œ«û†÷ò‚û‡ ‡ Í—þÿ&DÄEðÿÄ÷
‚û¿‚ûæNíæRíwNí_•þÿ…
Ý	·Bíæ—þÿ&„ ÄEðÿÄŽ÷
Lû¿LûæíwE0øÍ	ß•à þÿ·í÷.û ÷zŠþÿæ¦f&ß•à þÿÃb÷‹      ûÅûõ‹ €w üÅþú€‚ƒ·
èú„… ÷0÷^*ŠþÿÃe æ¨ì÷¤ìÄÅë	·šìÐŠþÿ÷æ÷	Ö	È7
®úÁ Ä À õ  C B Ã5 ÀCò‹ @C0=1B& ‚ º<  -0Ã5€@÷	¬9×E* Ú÷$PúÁ7ŠDú÷ŠFú÷• >úÑŒ	Œa‹@¡Š÷x	÷e ,úw*úw(úŠé	Šw òþõ
 õE  
À& w øùÃöù+w!ìùw 4Â: bbbbbbbbF‹3& Â" Ã¾ùÁ& w ’ë÷l0 Œë’ð	ðøõøõøRø’øÒøw–ùC& Â ·Žù&„$ ô `PPPPPÀ€ÿÈ7ÜõÁ ÿÀàô	÷€ÿäõ
À€ÿ







&Äe ðÿ$)À  mþÿ••“Ñ•       1 Àe€ Ã
÷!Î
èŽ†„€" A& w Äêwm0 ¾êÐ	ðõPõDøPõEøPõõÐõzð" €: 	ÄT@Àe ÷	H	Dœ SDÄe &“ÎEêÿÎÌE? ŒUÌU €CæÓ$Ä€øF€Á@à÷	Z	‡&†÷	`Áe fBÉ ðáæÎ
ÐüÖ_&  4   À ÷	Ì3€  (7úéØ	Á‹H> 5> ÷	„õ‹ €÷	V,w Üüæò@÷	º ÄŒ €ÓÓ ÅÓ ÓÀ÷	<4Ó Àæˆô @w f4 Á ÷	*w ø3w	b Å µŠ À ÷	ds ³ æÃe" Å
ãÂÀæ×¬ñÿ ãÄÃCm ÷	Bà…€ƒ÷	ˆ@à÷	Â‡ &f… Þ	„…‡ æ ¦ ö¨  ß  ß ¨ Þ	Ÿ Ÿ¨ ‡       öU   ŠÅìôÍšóå”óÅKNÅƒ
 ^ ŒW      2A  €]  fÿfÿ  ,   €    <Q      P  —wJJ$UDP  èGÿÿ¸ˆ¸ˆþb66NªO\ZŒWŒWÿÿ              @ €         @ €  ž   (P    € ÅMDBðÿÿ   < < < O       è]@
MCR> €~
DCL> ƒ:°=@ÌP>J÷	 &÷	 &÷	
 ’•’•€‡ @Á( ÷	Òf€
  Àe	 ÀeÉÿÀe  Àe  ‡ ¦æ¬çw ¦çvŸ  ·œç%æ–çw ç½  ·†çŽ¦æ|çw vçv  ·lçæfçw `ç½  ·VçŽµ
 µ
 W-  à‡õå   õe€  ‡ fÅìôfÍfMæ ‚3””À
„3Àå †@À
à”””””””””ï†ÀÀå †      à””””””””””””””””””ò†Ö””•…‡ ÀJbDW ( ÂÒ€Ê
‡ ÀJbD± €, ú‡ÐHà`	!Hà
‡ Á Á Á( ÷	¢ÿ,†ÿ‰Á( ÃJÁbÁD$W ( ÂÕ¢¢ƒŠ
ˆ
‡ ÁbÁDÂƒ û†È&N`Ö ÈÁb¦Žb b"€p ‡ Á$ÀÀ
  ‚À`À< ÷	ÒÀW  ‚À ÷	ÀÀ®ýÀÀ¦ý÷	°BP
‡ £‰w	zø@ FJDõ5 þÿõ5€ þÿÅe fEæC ó5  E Åt~ ƒ…
)Em f& ÎE ÿ–%‡ æ 6 ‡ÕÍ%ÿÿÎŒ÷†ÎŒ‡´ û–%…ææCÃ ó5  ´  ƒ÷	² ãÅå õE€ þÿDõ5 þÿÊ‡ w	Æ÷@ :Lõ5 þÿDõ5€ þÿÅe       & Dôµ  	 Ä~Ä 1#Ö
&
Em f& ÎEÿ ¶# Æe ‡ ŽM ¶S 6Œ ‡ÕÍ%ÿÿùÖ…è÷	 öÅå õE€ þÿDõ5 þÿ×‡ &fE0D ô  ô5 þÿ%E  æJäD 7 >äD
 … Äe
 &D ô5  ôÞû 7M Öû üÿÞ	·ä…„‡                                                                                                                       ·úÿÆ\f&æ¦f&÷U 0†îFÀðôÁ°ÿÂÿÃ &f¦Ã
û¦ð	ð&øfø¦øæøõ&øõ&ø&
×'¤ |FÎúÿ¦  ÷ÂTî  Æèž	ðõøõøÖõ–õVõõVð÷U 0îÀàôÁÀôÂ ÿÃ€ÿÄ “’Ñ      Ä
ù·
rí†€‚ƒ„…†·
$ú÷$òð÷^ìíÿúúÿK ú 7
ú÷	²!÷	ÚÀÈ àÿÿÁ æ" ÷	)‡÷	Ì*ÅÀùÄ f* ÷	>-…÷æÀÞ	†‡ õµ  ù ò5 þÿòõµ  õ‹ ë€Â
 èæ<âÃ ÷ 0â Ãœüÿú	 ·âÖ
‘€
PÂmvùAHÂfB2" ú‚‡2,þÿ õ†Àå 	ˆÄ¥ ðÞá ‡ 

ÀfÀø0¡ úp! ÷ÄÁ‹p  ÂîÂ° 
 éð¥  ä¦f÷	û‚Û 
Âƒs¬  ùƒÉp 	
J‡ 	p H‡ @ ÀE ÷	þ úÿƒ×, VT²Š w 61ƒ± ‡ ÂƒúC s  øÊ° Á¡ ‡ À÷	 	‡÷	øw áƒ‡ ÷	 &†ž‰€#‡ÀÂ      ï¡ ò5  Á
`‡Âüî‚$ ¦Ò
 ‡r  ƒÂe Î
õò5  V
‡ Ö‡ À”ƒ
± À
Â  AÁe  ‡€à †Á(‚ ‡€àÑÀ ~‡ Ÿ‰B ÷	rf
B ÷	f€‡ ÷’÷ìÁ ÷	|ùç‡ÐÐPÀx÷w ,0D ô‹ bôE  @[E õ‹ øC B ò5  · x÷
õ5  ñ¥  ƒ âH4 t Bœ Â¥ Àð õ €õµ`  )@ ÃÀø "ñµ 
 õ5€  õÕ  Àþ Â¥ Àù Ã 
õÅ  5 õµ  'À ÷	j™± 6õ €ñµ 
 Â% ‚Â%
 Âå Â
÷	æ‡÷	2‡À@ ÷	/w îþ ÃœüÿB u  u  u  ´Š õÕ€  ¡ ‡ À       ± ð5ð ;w	¼õæÃe & A A$ BÂ
,DfE…ãÅå? ÅEEŒÅ  Nl …cÁe
 Ö"ë‡K!é‡ðU  ðŠ ×¬÷ÿ í 3 ð5@  ðE@  ÷	æ+¡ ƒ‡ 3 s À ðE @ Âe ‹ò Êó•€  ðE  w B.CÁe Š@Bæ ÎeÿŠÎ €eB‹
‡µ 
 ‚‡5  ‚B@‡ @
 Àì 
D õÅ€  4Š ô5  f 	&À‹€± ÷	
&€ ÌÄÄe  d÷	ð AÃå Â 	æžÝ÷ ˜ÝJ·ÝÁ BÂe ñŠ ÊE @À"   À†È
ÄÊ5@ ÊE@ ÷	°, @& ð5  ñ‹ ðE  ÷	ò*fÅ Àœ ÷	¼'ÀÓÓ( Ó  Ó  @Àe ÷	|û@÷	`'÷	˜ö…‡ D Áëõ €      õµ@  Âƒs  ús! ÷Ê´ Àñ 3
 ÷	ÿàõµ  õ‹ €  Bæ Üƒ ÷ ”Ü‚
  ßœúÿþÿÃœüÿú	 Šþÿ·rÜ‡ 
ÁÔƒ
Á
t < †ÁÁaÁe> ± @0    ò5  öö&Îe Þ%TI@ ì¡ ‡  ‰õµ@  ÂÂ¡ ŒŒÂ BÐÂ Š‡ C B f@ A ÁE ÷	@ ‡À± ñ æ ñ¥  ¶Š ±
 CÁ Â ÷	Œÿs ³ Á¡ ‡ w	~òf”Àeÿ  ŠÀ 

DÔ
á‡Cä‚ÑÑ
DÔ&
NÔƒ#†ƒåÃ
ÎŠõ± EÀ`CaBaŽ
€ãöŠ 
…cD¡
N”Q!ò 
Ö–
‡ C ÃE À« Â $w	üñD ÄeÿŠÄ W¬ 
 E EÜ ò‹ Å÷	Ì 	ƒ,       2Š À Å‚íW¬  ‡ 
æå ò‹ Å-€ ÀE  Ë5 @÷	„  €  ;‡… 
€Ü €l ¦œ N‹V¬ @, † @l fœ N‹–¬ €, ‡‚Ì¡ Ë5 @Îé fÁ ÷	‚ó‡È ; Ð1" È
Pœ ‘H €‡ ±,  ±¬  Ä„¬ ‡ 
ÁBÁBÁBÂŠÁ l ÿÂEÀÿÂU À‡ ÷	ÔÿwÜÙ€‡   ´
 p! ð5 þÿ‡ „ð æ‚A @ p! D´
 ‡ „ð p  D´
 H æ^q
 Áe
 a!!
°ŠýÿÀe ‡  ó5 þÿs! 3
 Ãe Äó 3 þÿóŠõÿ
÷	˜ëD ‡ ÃR„ÃÅ õ5  øæœ Îì æf&D ¡ Þ	„…ƒÅl ÎŠòÖä±       L € À@m &± &Á5€À
ÀEÿÁ5ÀÁÁ
fÁEðÿN@¡ ŽŽ€cÃ
Á
ÃNû÷	 ƒÀe ÷	 À ¡ –
 Ãœüÿ‡ 5  †÷	
 fÉ@ƒEÉP‡ f ŠA `v‹ Á NÐÁNÁN·NØŠÁ ÁU À‡ &w  8Ø@" ¦ ‚c Á
ý‚€‡ &æ  
 †€m Î
ù–%‡ ¦B
÷	 ‚‡ æ ÀAB ‡à€
Î
øÖ‡ 
***EXEC PARITY ERROR STOP***

 ÿÿÿÿ @ôBô66666666666666Z666666  w ¬ ·
Âÿûö5 À @w	 éÁJ æ÷	Þ‡Â€å’$Ârå  ‚&     Â8— Xü‡÷	d÷	P Á>åñU  ñE   @& ð5   ðU  À ÷	¼ ÷
8ÿ‡ ß       &À7”já÷‹báý€ù€  þÀ8Ø  Xû‡‡  š+ š+ ’% ê  3Ð4 
        l*    æ* R*
@"ú!  È6 è3`4`ð3     ü3 x4`V4 3 Ö2$4 b7 \7`z0€p1€â1€ˆ& 8& ö%     >(
0
    „/ „/     )€Ö         $         ä# ø# È# Ô# 47 :7 ö* Ö* Ä* ¾) ”! ¤&€:'€V'€*(€    D%R     3 Æ204`D4 €/ ˆ4¼4    Ð6 ""
 ´" ÷¨ãŠþÿ€÷U 0ŒàÆø œþÿ&€¿
ªþw w	–ç÷~ãw ÃzãÓ$ÅeÎ%ÿˆw Î Å,Õ“C
FƒKÎ5 Í ƒ^wí 
@ÐŠÁ ÁD&
€† K ‚ÀÀÀe2H È‹
\       €s ƒÁ ÷	ÌóÓÍ‘ŠÎWÅìâÄ†ãóE ð €÷	ô/†Ä-IÄ€@Ë÷	°B‡Ó$Ä, |³&æ @ ÷	Èƒ†€ÖÄ€õ5  ð5  &p-  "Áe BÂe ÄtâÞ	Ÿ& FÎm„ý†‡  Å^âE$ õ —#þˆw @ëw ”%‰Ÿ‰þ‰ð‰ÿ‰ÑÉ‹À w Êù‰÷	Œ÷ÉO&DÂÀ’õ5  ÃDÃó‹ õ,  ÷³  ô3  ñÁ ÃRÃ0³  û3  ø‡3  õ‚Àì ÀE ÿÁ ÷	|ûÁl C×, VTE, u  ƒs! f@÷	÷ Åæòd‡ ¦‰¤‰¦,€ŽÎEêŠCŠÕÊ5 @& ÷	î Ã^áF€Àe Îe †Á ÷	.ò‡÷	8ù6 Ó$ãU ðÓEà 4 4   w l°‰À w ´×¨       ×¤ ÁÂ
w ñ
‰
Ï	Ôw îð÷-EÁP ÷	ôë?‡Â$O— tOü‡Àå, 1 H0 õ5  ðU 
 Àe PÐÐÈ0
 
 Â°îÿ— … ƒðU ìÿÀ$O ñe , VTp,  ó	Jµ
< vœ  ‡ ÿ‰ú‰À$O¬  , VTø¤‰  , úw	òè÷	š ð‹ Á†éf ñ E, ñ5  ñ‹ À  ÷	¢êÁT ÷	ëB†Àîßðå  w òÐÐBYÐEÀ–é2
 ÃÆßó
< ÷	Pðõ 8õÅ€  w ’ô Á$O@"Aü	ÁP w ëÁ–ßÁe< BÂ
 @"	
Q$ùÃzßÀ W, VT÷	ÒÿðŠ ð æ÷	¨ÿƒÀªè÷	Öô3 ‡ Ê5 @
ÊU @‡ Ê5 @ÊE @w zø‰Ê5  Ê5 ÊU ‡ ö‰Ê5 ÊE       @& w ”ø‰õ‹ Ê5 @& ð5   eA( Ãl Áp  ƒw 4è6‚Ê5 4Uò5@  	u ( N‚ò5   HfÎ ŒW € ‚´# g‡ò5   $ ÔÃCCŒÃ C`×  V†cÂ
Äe ô ùŒ#÷ƒKÖ
 r  E‚p 
 ƒÄl Äl  C`Ä ƒ÷	€A÷	€õ5€  ‡ ÿ‰ø‰p  †æžBp õ5    A$ Cœ 
ñŠ ü÷	ð  ClüÿBD˜A˜ñ  ‘Ñ• Ãe€ Ä
÷¡‡ ¬‰÷	4 †°‰Q$¶
 K’Ñ¥ Ó¥ ÷öå  …
÷	 ‡ÁT ÷	éøÀF@± p! ù	‡ ÷	äò.‡„ÃÁ ÷	8îÒ €ä“‹÷	4÷`ã•€ ÊŠƒ
Äe ô5 úÿ- 
 ôÿ ã#ãEÿó\ ‡ û‰Ó÷	4B      
 ã÷	x†þ‰Ó„Ã Á ÷	¾í 6
  
ô5   ‹
‡ ÃÁ  ÷	šíS S @&   Ó$S 
 < Ó$  “$ K Kì “
Ó  ‡ ÃÁ ÷	JíÁÄSW ÐüƒË æ‡ &$ ÂŠ—  @‚‚‹‹‹Ó ¦Îb8‡—# 5‚fã(ô   À ÀÀ€- ƒ m € †N "÷	H ÎÓ$ô ô À˜ÀÀe€ÿ4 £“Kà
Äe Á
ÙÖÖ„óU € ó5€  ‡ ¬‰«‰÷	÷	.†óU @ 4
 óU   ‡ ÷	öÃe ÷	ÐB
 ¦& ÓÀ2  X†Á àt  ƒ SfÎ ŒÎ
Žm f& N @‚À5 Ë5 :&@`2  5‚& õµ  0æË5 õ5  'ÎµŠ	 ÷	Š†ËU @  ‚ ‚m 6Š ¶Š       °  Âe€ Áå€ öÁ ŠN```Ãe £Ä ý‚‡ ¬‰ð‰÷	"÷	>†óU @ ‡ ø‰ð5€€ _&÷	øë‡f&f&
f f ÃÁ ÷	rëÃe ÷	Àæ$æææÎEðÿN f NŠŽµ<ÃÁ ÷	BëÃe ÷	ØåÀe( à>äà8ä (Á BàÈÂ
û„ Á
ýB
 ò5€  &÷	€‡p ÐÐD@Àe4 ÷	fêÄ2 ÷	°w ì
þ‰ð‰÷	zåÿ‰÷	tåª‰æÔËæB4 F&
&
Ò€Ž¶  &’$Ãe ““““TÃÁ ¦÷	Œê‚“ôÿ“öÿ€òÿ# # Ó$À “À
ýC…€÷	úÅ@Àe4 ÷	$ê@÷	òäƒ·RËóU  ó5€  
w ªýó5@  –%w ¨ø‰‡ $ fÁÁÁ
ÁÃ÷	ê&
ô Äe /““&ÿÿËŒKŒKŒSŒS Ö      f, Îå  3
þÿBàÂe BBBŒÂ “ÔËEûÿ‹ÓU€ Ãe Äe 
ÓŽ
¶# Ç‡‹Ö‡ æþÿ	@f÷	~ä&f&
æ, |³'Ãe &
Áæ÷	jƒ‡f÷	Pä&fÄ Àä(÷	>ä&f÷	Æã°
 ° ‚° °• w èð‰ù‰Ä æ æ æ Ä &
æ æ Ä2 &
æ æ 2Ä &
æ æ Ê5 ÀÃ÷	Ò†÷	VãÁò×H> 1> Ñ‘‘Ñ‰÷	®‡	÷	6ã‰°‰ø‰ðv+’+–+’+’+x+x+x+€+†+Š+’+Ž+’+’+’+’+Š+†+v+v+v+v+v+h-"/J/‚.n/R/‚.n/R/,/R/2/"/Z/‚.r/R/f/æ÷	Úì†û‰É5 Æe  ðå  w fò5  
…, €—­  ð‰ò
 ú‰&fæ’÷	Zè	@æÀ&
&
ˆ÷	|â0
      " µŠ ƒ×¬øÿ 	&€ ÷	,è÷	X€ÔT ”•T”…TŒ&&
·ÿ&
À÷	–îT”Ô‚ŠÂ [@þÿõµ  Á¢Ö@, ñ5  w Ú—  r‚AÁe —  ƒÁe Âå Â‚~‘0cõµ  b@   ð5 þÿY‘0Z‘0Nõ $€õµ`  ‰0‚ Âå 	Âf@òÿf…F+]  ‰0
Î%À
Öð5  w H%‰0	ô öÿÎ% ô öÿÀA €À5 ÁEüÿK0Á|÷	¸æy‡÷	”íÎ÷	rëT”u÷	’êÄ w  Äþ }Ä¿ zõ €õµ`  
õµ  À€Õð5  aÔÔÔÔÔÌÎµ õ5€  —­  —­  õµ  H ÁP ÷	&æ3‡÷	íTŒÖ%õ €Ã"ÕÀ$ ÷	¤ê $äl" dÀœ      ! `ÖD õµ    ÷	JåBæÊÆƒ ÷ ¾Æ‚
 ú	  ·²Æ‡ Äú Äî Äí Äé Äÿ Äð ÄÞ ÄÛ ÆØü€÷	à 
ƒÅ w ÂèÁ ÷	z Ô1æÁ( ÷	ŒßÙ‡?¦üæJÆ&æ ÀÁ ÷	@åÀ‡÷	JìÃe ”
ÔTÁ  ÷	 å°‡÷	ìT”Î
äÖ„·þÅƒÔÔÔÁ ÷	 ] ‚
À÷	êä•‡÷	ÌëT””š
‡ ðµ  —] Â Â 6
 ™0w ÿ…w ÞýÉw ÿÉw 
ÿó €Åz+] %…w þ¾
  ÖŽ…½
 w „þÊ@ææÃÁ ÷	JäÄƒ‚@Àe
 A"ÂB, ùC, ö÷	äõ5  u   ÂHÓr"  r" 
 @ÑÂ TÂ
ýw žÞ×­þÜM w n×­òÜ‹ ÷	^      ‰ø‰°‰Á€€B —, VTÁU p0 ,&æœ ÃÁ ÷	¬ã€•÷	B÷	@ÞÐP P Â ÐÂ
ýP  ÐŠÜÈˆÜ€Àe
 ÷	ôâÄ …÷	<w xþ‰Ãe B& ‚
 Ë÷	ô[‡² 
 Xò5   T€ãã÷	Ø †æ&
æ
 ÎEˆ &
æè & &
&
&
æþÿ&
&&
æ æó5   26
 &
&
‚ó5   ÷	† Î$EÁ" ÷	Ý ‡Á Á
ý (0 ã(5
 
 ÷	†‡óU € ó5@  ôE  ‡ ¢‰öE   „ÎD1ÎŠÅ Á" ô Î<2Þ	ÿ‰Ãe Ëç÷	ä‡ò5€  àò5   ² 
 ²¼  ÕÀ À5 A, Áå B,
 A øª‰ ‡ ‡õ5  ÷	â÷	‡£ c‡ ÿ‰õ‹ nÊ5 k÷	@@
 ð5€  b      $ Ôð5   ó5€  õµ  TðU  - ÷	DóU @ Äe õ‹	 ó@
 Àe 
f 5
 ÷	jáÈ%ð5  úÿ!ðæÿð5 úÿÀå 
 @, A ú1  Á" ÷	úÛ@
 C
 ÷	öð5  úÿô€Àe, 
5

 ÷	á@Á w ÈÛª‰ð‰ÑÉ5 
Â ÑÂ ‰0É€Â‰0
×­úÙ… ‰@w Nw øù‰ø‰Ê÷	T‰°‰ÊU ÷	F‰õ5  cÉìÃCÝ  × ú X‚õ õ‹ "&
D&  ´#< †÷	4å‡& ÷	P €ð 
€ðµ`   Äe
 ÷	4 Ž
àÖ@÷	’‡÷	 D&  
 Àe A÷	à‡÷	¾ß ÷	òw @ æþÿŽa&
 A÷	üß‡q  €÷	ßô€÷	Üß‡ ÷	†ßø–%‡ ¡‰ð‰	0	@‰÷0ØÏ7
HØ‡ ÃÁ       ÷	ÖßS S ÓØËØ‡ 	0é	P ‰ÅêÎ@* wØw .×(  ‚ÊU €ÊE °‰Ÿ‰×" ü‚ó ùÊU óÁW  	‚ÁÀW  Áe$Ÿ‰AaÁe µ
 4 t w Ô
Á÷	š&7ª4æVÀÄxÎ÷	hû·JÀƒ Ó&Àe
  ÷	ß@w ÊÙæ(7Éð5  þ‰ù‰÷	T&7&7Ãe ÄE ×­Ø LÅ‰×­ù× ~Á Þ	$Š}‡7è×ÅŸ‰À @ x‚ÅöÍ&÷	*ß	@Ô
TÔ”ÀT L ÀÁ ÷	¶ÞY‡×­¢× j‚@ Áœ rÄÆ­ - VTøO @- Ja
E Àf×, |³ @÷	š
†Á@ ÷	‚Ø.‡ÁD×7@×Þ	€@¶AÄ6×72×ÂˆÖÒÊ
Â@ÍÂe Ä<Í÷	B÷	.†×­ × Åù‰ÖÅž‰Æe       Åÿ‰w Åþ‰ûÅ¤‰ø—- ¶AõU   ÁÈÖ
B ²
< À¸ÖÀe8 ÷	"Ý‰ÁÁT Þ	$Š×‡Ô
Á W O Ì‚Àf÷	˜ÝÆ‡÷	täÂå  €÷	@×Ì•  ÀjÖð5  ÁÀFÞ	7$7Äøÿw âþÂJÖr ¯q Þ	&7À6B÷	æÜ³†² Àe
 w ôÜõ w ˜ æ ×"|³@ Á ÷	L	Ä@Àe8 AÌ1# ù1-  õ÷	²Ü€÷	ÌêÖ‡ Ìüø‰	H‡ H‡ 7ÀÕ7
¾Õw Ê
Äe Äe À
Á×" ‚Á÷	žÜÌÌä‡ ž‰	0‰õ  ÷	¤ê÷	üíw!ÔÔ7
ÎÔõU€  7ŠËÄ ÷	$Ä ÷	Ä ÷	Ä2 ÷	w	@ Šõ5€€ w	0
 †w	(4 †æ":õ‹ õ5  õ5@  À ÷	È¦Þ	‡÷	àûÞ	;‡õ-Ë Ä       Bõ‚ó‡Ä –%fÁ( ÷	Öƒ$‡ÐÂæÊ¦œ ²Š œ ŠÐPÄ% ½
 ‹
Â 
Â
ý÷	°õÅ²ÊV­ ±õU @ w ´ûõ‹ øõ5  ôÀðÓõ< %& Àe8  , ûõ
< 0
 ö€ìÁzõ< W, VT‡ f@ , ÷	
êîÅe Í5@ ÀTÓÀ-,ÊåU  ÷	
w 0ûÀ0ÓðE   ðE@   * ð* õåU €ÕE@ ÍEÿÙu æÿÕ5 5õU üÿ@ &ð5   
 fõ @Àå ÷	&	@ ð5   Á" ÷	*Õ…E Åå ÷	Ìø÷…µ Í5   ÷	ÕÀ‚ÉÀ~É÷	†Í5 ÍE Á ÷	~Ô‡ÐHøÿˆ
÷	ØÙ@Àe ÷	òÙ‡@öÿ÷	Zõ÷	ÀéÍ5  @Àå ÷	Ö7
.Éw úD„cÕ ÷	¾Ù‡@œ       õ% üÿÁ í	îÁŒ€Á ù÷	FÑç… ƒ
ÅäÈÄäÈŽ
-< ‡÷	LÞø‡ò5  …, ¡ …Ë	ƒçÎ‡                                                                                                                                                                                                                                                                          ÿ    ÷æÐ± ·
.Ñ± ÀØÐÀ Ñ÷	œÒ‡wàÑp $ ÂÐÂ
˜— Äû‚ÐøÐ¡ Ž‡ ß•à þÿ7] ìÐÞ	Šþÿ‡ ·’ÿÊE@ ŠþÿÀý  ± ñµ 
 \¡ æ` æ ± ¦f&¦†
¦       ö
 ô5  AôU   ÁÁe0 ÷	Hÿ†4
 4 t  
B    ‚&  ‚  P P
 Áe Â PÂ
ý  o N ÐØþÑPÂ
÷ÖÖ€‚ƒ‡ ÷	,   ÷	&  ÷	    ÷	 0 ÷	 @ ÷	 P ÷	 ` ÷	 p æ—þÿ·Šþ–% ÎEðÿ·€þ·W|þ·|þ· tþw	´Ê  Å®ÏÄd;÷	HÊÁ æa ÷	Zþ	‡PÐLþÐJþÈHþæ,=÷ÿÿ:þ‡ w	šÎÅ Ï%Àž&÷	Öwl bÏ×-^ÏÖÁ ÷	ÊÐ
‡0
 
Â,Ä w `ÕÖ@ð €
w Œ‡  ÂäÎ‹, ³,  ò5   ò ‚ ï‚
 ‚ë± ‡ æÖ=ÀEðÿÁ Þ	20 Ö‡ ÀÀÀÀóW  ‚´ Þ	r  Þ	r  Þ	´ Þ	ð‰æ¦Á ÷	&Ð‡      `¡!ÉEðÿá@Àe, ÷	HÕa!Ša á€Àe ÷	:Õ¡ ‚ƒ‡ E, æÎe N!Eüª‰Åå Ö‡ $ À’ 	†ÀÀÀÀ`ô ‡ ©‰Ìf
  4
 ðŠ	    ñ5  0`õ  Ð
ôŠ ò± ‡ Á\Ä1 qœ  ñ  @Áe ÑE@ ÉEÉUÀÀá÷	l  & w º& A 1  q
  1* 
 ð5@  0
 ð5 € 0
 I B: Âå J b ÁúB* p¬  ù†2* p* 7 ÂÃð­¾Ã ‚‡w ”ô@Á²Ã p¬  ‚ó7žÃ‡ ÷	ÌÔõ5@  	P@Á
W *ƒ÷®Ì÷	Vôð5  Óæ&÷	L€ƒ‡ ÷	0 ‡	@Àe f÷	˜ÓÀå ÷	zÿð5   & ÷	À¡ ‡ @Àe> ±  0¡ ù‡ ÀpÌ,       3,    ð ô± ‡ ÁúB* ø ú2* * ‡ w°Ì&
Ò€ä¦¦÷	¢Ü€eÀE8 Àe0 ŒŒŒÁe0 6 v €÷	È –%Ãæs w zÿw	FËÐPœ  Š
ÐÐÁe
 ÷	\ Þ	

$Ð Áe
 HÐEÿßHÐE@(PPPBò5   ‚
 PP$Þ	P
ÑÞ	Þ	

Àå> Áå< p  1 Ö‡ 
0 —#š@—#Ú@EDEs-$ þÿùK-& öL1 
x p ë$Q$Þ	Þw	ŒÊæf
Ã°A”Ä¨A¥&‡¥ƒ¥"‡¥ƒ¥	¥Î¥Åå Åå÷ÿÅåÒÿÅå@ &ÀfA÷	DÛE€Aa× ¶A×‡ÖV
œÿÿƒ‡ ZA90$ . @(  w	Ê÷	Xà@ÁVÀ-¦ÊA @, û9
  1  94 6 16 6 1  Á@ w ŒÌ„      ÎB¦)&„Ü	f&Ì	ùfN Ö€Þ	üB ò
< ‰ r r ñÀ  1 €÷	üü & w J @Á w ,ÌÀ¬ÀðU  ÷	Üü & & @
 ð5   €  û2  Áe IÄsÈ w	(É
 D Iô5  ô (õ5   ?õ‹ #& ò‹ @Àe ÷	ÞÐ & 0 Àe Ô5Ø ÷	êØò‹ 	 ÷	ò ‡÷	2Î@0¼   ÷	Ö ‡  ôu½  A ÷	E õ‡ & ÷	l    À†C B‚ &ò5   ÷	ˆ †…C Cm î&
 
 Nl Nl Îà€%á‡„E A ÷	˜ !ø‡ À„Èüw B@B  f Žà´% †@B Bl ñf Nm Žà´% ‡´ 0 t ‡ fñ5        ñ Å ñ5À E& E E0 &
NÜ …e- ¡ ñ5€4 ± …‡ ñ5  ñ5€  
@÷	öúñ‹ ñU@  ‡ w	dÇñE  CÁ ÷	®É‡@`Á& ` Èe ˆˆÅVE Á Å÷	èÉCÁóU  ó5@  ÀxÇð ‡ õ å÷	èþâ‡t
 Á1 ñU€  ÀŠÇædæ^Àe
 Þ	Àå
 ð50  ðE0  ÷	@ú
ÂZÇCæ €°3 Sð5  ð5  Kð5   Gð* Ãe “C
p ° Ë5 ?& ñ5   )&Á" ÷	ÀÈ€°S Ž
&& °& Ò R R 
R
( 
( 
Ò( 


R &  
 Àe ÷	¦Í@& & ÷	Ôü&÷	ù€Î	 B—, VT±Š Ö‡ 
 Á	Cò5        t  ±  ‡ ÑB& ‘õ5   I‚ Bí0 ¦Î Œ‰eÑ
Ñ‘Q0 
ÂÂ Âåÿ ‚‘‰É• ‡           …ÎE ÿÎæ
 Å5 Î æ PßðVFßðVF÷U n¹ 7
h¹÷x¼Æÿw	ÁÀ Ä^F÷	¨ÀÄ Å°ÿ÷	þø‡ñžÿ ñšÿ
 ‡ w	ZÀæ #÷<¼#w	JÀæ w	@ÀÅ~ÿf¦fv ÍE àæ æ
 w	 Àæ —! ‡w	À&
æ w Š½Åò»÷%ÿÿæ»€€c   º‡ ÊGƒ ò+‡ ú+Aƒ  ‡  ;ƒ÷´».DÄe ÷	 æ¾GŒ- †ƒm KƒÔ‡ ÖFNà€†÷	hÌ‡÷	rÓa(ÖÁ
üÄÔÌ ð‡  ö  € Æøw äö·
>»ž‰  w	Ò¿  Ä\Œ
‡ ÷	f¿ÄÄÅÒÂÈ¥
)‚
B!ø‚      
ö‡@œqÁ
ðâ5 íŒ
ë·
2ÄÀf ð
 ûÄ4ÄRô Oô-Ä K‡7 Ä Ga-,  ÷	˜üçæ†¬7 €¬ü	
 ·x¬Ý    ÷	øö

  ÔÔ Ô ÔÔ Œ÷	÷Â   ÷	Tü Å¥ ÷	²Åµ 
 D ÷	øÉ«÷ôÃ+æÀÞ	'‡ Ÿœúÿþÿõ‹ €ô‹ ôŠ Àý Á
 æÚ«Ã ÷ Î«Âƒœüÿ‚ù	 ·¼«Šþÿ×÷
˜þ3÷ þ÷	¬êÁú@* (ñ¥–  ø‡ñ¥   ‚ñ ñ5  @* ññ* p* * B@* r¬  ù°* r* €Ü÷
.þ3÷ &þÅºÂõ5   u½  õ5  D ô5À D ­0 ûÿôŠ0 u!
 @÷	®øõ5   õ E       ÞE
 EÒ÷
LÂ‡ w Ðý JvvvCÀ A ó¥  Àö 
w Í  2LRHòK
 LLpKjJDB $ $ ÿ    þÿ     ÿ ÐX  JJjJÑ  ˆÀ Ÿ øJ  y  À&À R›  JJŽJÑB ˆÀ Ÿ K            ›  JJ²JÑB ˆÀ Ÿ 4K            ›  JJÖJÑB ˆÀ Ÿ RK            ›  øJ¸ˆÁ¡jJ  <ðn     L     K        <       L      4K        <       L      RK        <       L    BLKMM " h òx   â_    _ðW  pKKÑH  ¡À    ÒK                pK²KÑH ¡À    ÒK                ÒK        ·      L      ,JJpK   +  |       Àý      L( jJŽJ²JÖJÿÿ %   õ       &L Kÿÿ  BMDM<L,MàBL  LMbLDM $  ÿ    þÿ     ÿ ¬X  BLbLÑB  ˆÀ  öi ÌL            ›  BL†LÑB ˆÀ  öi êL            ›  BLªLÑB ˆÀ  Ò M            /  ÌL        P      ,M       êL        P      ,M   @   M        P      ,M   €  "  d  ÿ      4MbL†LªLÿÿxX®MLPLM ŒMôllMLP     à  à       ˆX  LMjJ        „ ”M@~      €     Lÿ    lM  ”M        k     € ŒMDXHNYL¸M NRNÜMTT  : x ?â  à       TXÞ    ¸MÜM8    	   „ N    P @P P       W R      T       pÿ    ÜM  N  Ò¨ÜMNsè]   € N<ƒ vN¦w  $°s  $X  YZRN°NÒNvNTT: x ?â  à       TXÞ  RNvN8    I„P ¸N|[ Áÿÿ ,Q.Q  W    À1  ­   F  @ ˜à        ¸N  Ì¦vN¸Nsè]   € °NvN$OòNNL   Jâ  à           ÒNòN         H O          O                    ð[HOVT  2   ?à8  à       ÌWÖ    $OHO(       P tO                            tO        Òœ\         O–OTI  
 ŒO–O     ´OªOCO  
  OÜM     ÈO¾OCL  
 ´OlM     ÜOÒOSP  
 ÈOjJ     ðOæOLB  
 ÜOjJ       úOSY  
 ðOjJ               ¸_L„  ~¢      2 |[  <[TP TP Ó   ì    DB    CL    lM@  jJ ¡D]     8Q Y  ³s  XP€  hP€€  ƒ       vPÉ  ¹   ÿb9  b:                     ÀTQ‚ 0o,sPm Ë0ÀþU*À             O  ä¹   #à(                        €~O  º    ()                            2 |[P ¤aP |[Ñw     Ž[ŒQ 8PSY ÿvNúO   • À   ¨Y  ‚ 0o,sPm °Ê.0ÀþU$À           ƒ:°œQ –,  \^DP  ¸Q ME­  DPQ  ¸Q   K ¸_   ^  2 t^   \]äQ O  f¹   ³'                          \R  r§         2 äS   $`      	 €ZdRº  âS*      à   ÿéTRAXV01       ÷O  è¸   '                        XŽ R ^R‡¹                                    ºU    ì[ `[   æ   ’€  ®R  ²R      äV    Pæ§FæOôX™     ÐR      ØR  ÜR      2   ËF²K  îR  òR  ÜM ~    P2ªMæOôX› $  S      S  S      <   ¬Z|³  .S  2S  ÜM$U    P< LæOY t^  PS      XS  \S      2 4_¼@æ  nS  rS    \äR€ X2ÞDæOÄ\6 |[‚\2]      ˜S  œS  à`  2   |³Ë  ®S  ²S      dS    P2£æOôX     ÐS      ØS  ÜS    dS2 ô`¸€»  îS  òS   @ªO¤S€      0  T2 °TæO$`ù dSúQúQ      Taa ´^  F   äf|³  .T  2T      @~    DF ì`æOôX	     PT      XT  \T      2   |³Ô2  nT  rT      äS    P2ÝæOôX     T      ˜T  œT      2   |³m  ®T  ²T      dT   @P2{æOôX"     ÐT      ØT  ÜT      2   |³_  îT  òT      ¤T    P2?æOôX     U      U  U      2  Q""_M  .U  2U  ÜMäT    P2æOôX $  PU      XU  \U      =   |³"  nU  rU      $S    P=óæOôX     U      ˜U  œU      d   |³4„  ®U  ²U      €    Pd”æOôX     ÐU      ØU  ÜU      d   |³ƒ:  îU  òU      ¤U          Pd	æOôX     V      V  V      d   |³y:  .V  2V      äU    PdÇæOôX     PV      XV  \V          |³­S  nV  rV      @    P ¯
æOôX     V      ˜V  œV          |³  ®V  ²V      dV    P ÎæOôX     ÐV      ØV  ÜV      È   w*?T  îV  òV      ¤V    @È <ZæOôX,     W      W  W    v f  žWð v                   fW         û         ˆW jJ   Z  ?¤     Š ð¡|[¤a–[ÿÿx’       ø   |³²K  –W  šW   ªO€]  $ Pø TªæOZ À  ¸W      ÀW  ÄW        æ:d  ðYÒ
       $O0       êW      æ:dÌWðY·             pK0       X    _	xà s  *®  X_	xà s  ê®    _	xà s  l®  4X_	xà s   ¯      æ:dðWðYsD       ¸M0       rX    _	x  k€ b       æ:dTXðYk       LM0       ¦X      æ:dˆXðYP       BL0       ÊX      æ:d¬XðY<       JJ0       îX      –,  ¤aôX€ ¸_dS€€          Y  ôX  Ÿ:d<YY  (Y€€          6Y      %i `Yú       à    îÄ`Àn  XP  €jL  `Yb   pY€€  ‡       ~Y  `Y  jL  „Yâ€   ”Y€€  ‚     H`,]  „Y  &:d  ¨Y0²   ¸Y€€À  ÐZ  HQHQ  ¨Y  s	:dàmÌYÜT  ÜY€€          êY  ÌY  æ:dÐXðY<           Z€€          Z  ðY  ²K:d  Z+   $Z€€ŒW  $W    2Z  Z  »z%  8Z'   HZ€€  À     ˆ\ˆ\  8Z   :d  \Z '   lZ€€  €       zZ    dR          ÿ  ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ ÿ	 ÿ
 ÿ ÿ ÿ°  ª j  ÒðØ¢ª     ¦£           [     ¨¼  û         8[ jJ  æO   ¨Y  ÌHQ²   Š1 ð£jJ Rè]    Ê        ÎZ&  ôX       Àè     PP”	ì[ € À  h[      p[  t[      2 ŒQR©`  †[  Š[  vN$    P2 ¢úO¤a› $"QP      °[  ´[    à[‚ Ÿ:d€aY^	L   L   tn( to  à[à[  ‚ tnN` ¼[p\ ä^\VT2   ?à8        à       ÌWÖ    ð[\(      P tO  Ò$À    pP†P                Þ¯  ôXÿ@     d          ºU    ”\( ”\    ”\   2 dSŽ\ Ä\  2 dS2] 8Z8]    O  <¹   |'                        XŽ,]2 –,    ôX€6   6   dS( n  |\|\	   ¸_  ð\      ø\  ü\      šÀ÷
Ú6À  -À  0    (xrÿ       °  2 dS  „YT]   J_   T]    |QDP   l^ 4^ ^2 –,    ôX€      t^( ´^  ¬Q¬Q    ø   Ì~€W  Š]  Ž]      ¤R    PøLúOôX@     ¬]      ´]  ¸]    O  ¹   ,'                          ðn(    vNn£.À   À                 ƒ:°X^K –,  <[ôX€      ¸_( r   Q Q»¾  º¹   \9                         l^   DPô`DP  
 à^ R  äS2 D]šw_M  ~^  ‚^  @\|[€  p2WæO\] äS²Q²Q      ¨^  ¬^  @\    ð      è\>@ <EOF> XŽø_ RINT LPPT_ ŒO_VT2   ?à8  à       ÌWÖ    ä^_(      „ tO        äSx‚          D_ –,    DPJ      ºU    ´_ ´_   A   |³|	  b_  f_      dU   @PA7æOôX     „_      Œ_  _    Ä^   Šð´­   ø_ Ä£` @~K |QOl|³  Â_  Æ_  @ªO$T€  PKæO^ @~¦Q¦Q      ì_  ð_       ˜$`        ÌYÚV                 éÜ` H` H`2 –,    ôX€ù   ù   äS( 8a  ôQôQXŽa‚ tnÊ`„Yx`F –,    ôXÿP   P   @~( ,a  ”`”`T    ¸_x¢    Ol|³              F @~   T`    Ði8aYû       à    îÐ`Ð`	èa‚ tnÖ`<Y  ‚ tn   `ð`     h¥        Èa a ^  4_DP*     ‚ na €a´n‚ nîa„Y    ¸_x¢    Ol|³  ~  @T~    <i\aY	*       à    îôaôa      i¼[Y=	!       à    î b blM¤a‚ Ÿ:dDnYª	Ú   Ú   n( 0p  aa  Èa2 –,  <[ôX€›   ›   |[( r  QQéb   À  Ða      Øa  Üa    b Àn‚ núa<Y  ‚ nb8a        ‚ n  \ao ˜_”ðP¢      |³ÊQ     €}˜bx   Š~ ð¢   ¸£¸¤¸­’®,b\  t                    Hb@                        db$                        €b                        œbì                        ¸bÐ                        Ôb´                        ðb˜                        c|                        (c`                        DcD                        `c(                        |c                        ˜cð                        ´cÔ                        Ðc¸                              ìcœ  „ ü€                                        d    `                                          ,    `                                          ô(  
  @  Äd <€À  ÀUXeØ(  
  @  àd <€A öÝ      ` # ÀÎ €        <e V      e <€À  5”e„„  
    4e <€À  ôT  h  ‚ `                    ‚ ` # ÀÎ €          0     ã À  €ã À   f     Û À  €Û À    fø     Ó À  €Ó À   ¬eÜ    Ë À  €Ë À     À   Ã À  €Ã À         e¤    » À  €» À   8fˆ        ³ À   ³ À   Tfl        « À   « À   pfP        £ À   £ À   Œf4        › À   › À   ¨f        “ À   “ À   Äfü        ‹ À   ‹ À   àfà        ƒ À   ƒ À   üfÄ        { À   { À   g¨        s À   s À   4gŒ        k À   k À   Pgp        c À   c À   lgT        [ À   [ À   ˆg8        S À   S À   ¤g        K À   K À   Àg         C À   C À   Ügä        ; À   ; À   øgÈ        3 À   3 À   h¬              + À   + À   0h        # À   # À   Lht         À    À   hhX         À    À   „h<         À    À    h          À    À   ¼h        û À   û À   Øhè        ó À   ó À   ôhÌ        ë À   ë À   i°        ã À   ã À     ”        Û À   Û À       ¼Zˆø_ÌY :                        ¼ZzE,iÌYh8                    æêôßhêô_	â @ æêôßhêô_	"¡@ Àà   ˜i  œiÿÿ  € @@? @@@ @@B Àò À   à   À    €  €4e  €ÀHÐ  „      teÀ8 !„Á8 a„		   à À          €  €Äd  €À2 „      äeÀ0 !„      		   à                                              		   à                                              		      ¼Z 	PiÌY\                        ¼Z·k¬jÌY3)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          ¸MmNQ <  ÀÀ          Ðj  ôlm4     û	 Šm          .m  2m                        ôlPm$    û  ¢m0o        jm  nm	                    Šm                   ¤PTQ                         ¼Z[qÐjÌYèK                        ¼Z@¼mÌYÜ                            ‚   <i  n  n   ÀÜM0o    P‚#SúO€aÚ ¸_
ab      8n  <n  `\hn‚ Ÿ:dÌnY„
®   ®   0o( Èr  hnhn°©  ‚ 0oºn Dn  ‚   #i  ~n  ‚n    ÜMn    P‚þUúO¼[L 0oæ[Ö`      ¨n  ¬n  R,]‚ 0oÆn„Y  ‚ 0o  <Y    ëi  Y2N      à    î  ên o](    jJ Œ -À  0   À&|[ÿ       ôXpo   o      $o  (o      ‚  u~i  :o  >o    ÜM$V    P‚ñ[úODn® nnnÆn      do  ho  D_œr à º  †nð~¢â               èÁ  Úo         û         ,p
 úO  úO  ªO  úO  –O  lM      úO           ¼[  ÿ²à[L   ŠK„Y @ÿ_H`€   „<Y        >Ä`   €y ` ÀÿÅÐ`   Œ ðêSä¡  p |¡„    ü¡Ö nðh£þ¡              n  ¢q     t´ ¸û         rM úO  úO  ªO  úO  –O  lM      úO              úO4RúOÀ]úOœ\úO¼QúOÌPúOôP                                                                                                                                                                                                                                            úO   €a  ÖaÚ   ŠY„Y @ÿ_a€   „8a  *ôa*   ‚)<Y  ÿèa€   €\a `?h b!   †  ðêSÈ† ¸      þ¡À¢    ’  Ž[ÀÀðp»’¢º           Ž[  fr Ä¸                ˜r –O  úO  úO  úO  –O  lM  ÜM  lM   ¤a  ¿ÆQ›   Š<[  ÿ P   ‚ð|¯ä¨hªJ« ¤±   ¡xs, t( –,    ôX€€   €   <[( r    ¾r~£xs t¡®  BoðP¢v¡              Bo  2s         û         ts úO  úO  úO  úO  –O  lM      úO  úO  Pm       Dn  Ëhn®   Š-„Y @ÿ_´n€   „<Y  >Àn   €y ðêS †Æ¡ Ú¡XÊ    €}H	 [ÀÀðp»’¢¸º               Ös Ä¸      û         t úO  úO  úO  úO  –O  lM  ÜM  lM   ¤a  ¿ÆQ›   Š                ðXÄ              @ _     €}´   ‚ðx¯à¨dªF«	 2­     €}” –O  úO  úO  æO   |Q  ÿ¯P@   Š?ðl¢      |³„      €}X                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              2   œwx  Ê|  Î|      t^   @P2 æOY]     ì|      ô|  ø|      2   œ	7_  
}  }      À|    P2‰æOôX&     ,}      4}  8}      2   |³ç  J}  N}       }    P2æOôX     l}      t}  x}      @   |³|	  Š}  Ž}      @}   @p27æOY     ¬}      ´}  ¸}      Œ   f|³  Ê}  Î}      tn    PŒ½æOôX€     ì}      ô}  ø}            2   |³xe  
~  ~      @}    @2 Q_æOôX     ,~      4~  8~    t^F \^M€»  J~  N~  @ªOX_€  TF ñ^æOT`P t^š`š`      t~x`x`  P\|[    „|³  Š~  Ž~  vN    ÀR ¨æOôX@ À  ¬~      ´~  ¸~          |³„  Ê~  Î~      €~    P éæOôX     ì~      ô~  ø~      –   |³ÊQ  
        À    P–”	æOôX€     ,      4  8          ÊQ|³  J  N   ÜMÀ~   ÀR h
æOôX@ À  l      t  x      d   |³þv  Š  Ž      ¸_   @Pd¬æOY     ¬      ´  ¸      •   w*È  Ê  Î @ªOÀ}   ÀÐ•`æO¨Y² tnNQNQ      ô  ø            € ––––––––22222222  €
 ÿÿÿÿÿÿÿÿÿÿæþÿß•à þÿÄŒ·
p7€÷
`÷-\f†·
\æþÿß•à þÿÄd7^÷
:Ÿ•þÿ
‡ ·
4Ÿ•þÿ± ‡ &ÄÄ&Ä„e´Šâˆ·
6„‡ &æÄÄ&Ä„eâˆÃEøÿô@âˆ÷àƒ„‡ 4  ô•  ôÒ ôÌ ô € ô æþÿß•à þÿ÷Ü	æÃ €÷PÐ÷	èƒÌÀ7¼·
˜Ÿ•þÿ‡ ô•  ·
†æþÿß•à þÿÌ”7Ÿ•þÿ‡ ¡ æþÿß•à þÿÃ|Âz
÷œs·n· j÷
JŽ
·
JŸ•þÿ‡ æþÿß•à þÿærs÷nsÊ@ò> ·`s÷2·0Ÿ•þÿ·
‡ ÷	„þ‡¦æ÷	Šÿ†÷	bÿ
ô ´ ôâ ô€ ƒ‚‡ ¦æ  ÷	Žÿƒ‚w .ÿ÷
"¿"wE
~æêrÌ	ß•à þÿ      · är¶  ¶  Žw ¸……·Ìr ÓÃ¼ˆß•à þÿÄ5ò5 @
 ‚ú‹ó Šþÿ

òE @
  €ô‹ ôE € Â ôÅ€  ÂE€ÿÃe …ÖˆE ÷	0 Ïæâô÷	l÷	 ŸâôŠþÿÄãŠþÿ‡ ß•à þÿÖˆwL J}æþ·ú‚Öˆæ(ræ"r·r&
ÎÔŽbÃ”‚Ê	·r·r·Ò‡ ô fDýõU @
 Ä¼ˆæþÿß•à þÿü t $)
?F‰7B‰Ÿ•þÿ…‡   &ƒ           Jƒ  (Q °‰¬w  žƒ£
ß•à þÿÄÒÿ7
Îÿ÷&ƒÊÿß•  þÿ&
Ý ô‹ ÷	÷	lÃ*ƒ÷	"ÿ„ìß•  þÿ÷–ÿÀ,ƒÂ B‡ ÄâˆæðÌ5 €Ì5   ÷	l 4­  æâô âô  ÷	N ŸâôÄe Î
ßÄÖˆÎ¤ñ
 ñµ€ 	       E Âí‚â÷	& Î
íÖÀ<ƒÂ< 
Ä w ¤Žß•à þÿÍ‹ÍŠÃ:ƒ&÷	bþ„Šþÿ‡ 4Š æÔþ÷	" Ö&f¦æ&f÷	"ÿ…„ƒ‚€‡ 
æþÿß•à þÿ? þ7œþŸ•þÿ‡ æÃ&ƒÃÄ üô•ÿÿ ƒ‡ ÷¶   ÷°  ÷¤ ÷ž ÷˜  ÷’ ÷Œ ÷† ÷€ 
÷( ÷" ÷ ÷ ÷ ÷ ¦‚ 2¦
Ý ÂÂ¦Â‚eò5@ âˆ"fæ
Å¦E ÷	|ýƒ
Ý ôU € ÷	œ ô ÷	bý‡÷	¼û
± ô ô’ ¦
Ý f÷	p ÷	:ý…‚ƒ‡ &÷	žú‡´ ô  „‡ ô•
  ô•  ô•  ô €w Xûô•  ô
 ¦fæâô÷	( Ÿâôƒ…‚w 
ý
Ý ÂÂ¦Â‚e…æˆ‚œäˆ‡ 
Ý       ÂÂ¦Â‚eŸèˆâô…êˆ‚œåˆÃe ‡ ÷	ú,‡ô  ¦ô•
  ô•  ô•  ô•  ¦
Ý ô
 ôÅ€  Âƒ‰€ Â`ÂƒÃU €÷	lü‚¡ ‡ &f¦æ&fÁ&AÖˆ
Ý ÃC`ô  û„ æâô÷	Fÿ÷	ìûŸâôŠþÿ…„ƒ‚€‡ æ&ôU € ôÕ€  ÷	ü„ƒ‡ f&õE @
 DúõU @
 » s „…‡ ± Äf&õ5 @
 DùKó 
„…‡ ÃÂE à¦
Ãm—v Î`Bƒ‚‡ æ”m· Žmv  Á% À‚Áå  ‘”Â~ærm· lmv  Á% À‚Áå  R”Â~·RmÖ‡ ææDmfw
fÎeÖˆ¦·2m¦ v …Þ	·"m·ê ‡ &fÀÖˆæº B, Î
ù± ÂåÖˆâ–
€‡ ¦Â      [q÷	ÈÿÂm„ ‚· Úl‚‡ ×  ‚×p Ãe À¡ ± ‡ æ× $À‚ 
×  À‡Ãå €
ø¡ ± ƒ‡ W! ‚Wq Åe0À¡ ± ‡ fW!òÁ‚ 
W!0À‡Åå €
ø¡ ± …‡ Öˆâˆ‰  "  "   P                     ‚°d°ddð ÀÈe    Ú  'Û  :‰H‰V‰d‰’‰ž‰Ì
ºi÷    Ì
öi   Ì
2j   Ì
nj   Ä‘Ä•Ä™Ä 	
\  à  	 Œ¬j°‰30 à ·k Ðjÿÿè à [q ¼m´‰Ü  à @àm¸‰           à ˆ 
,ih< @ zE yPi ¼‰  ÿÿ  À# À   Àý    ÀÀ           
À                                                                                                                                                                   Ù%                                                                    f ŒÁXÀð v                   B                     d  úO   Z  ?¤     Šò       ²K|³            XÀ v À(   Œ    ÀÀ&   á¡ À&þˆ¡7
îÿÀrbÀe
 ÷	s†w ´¡ñ5€ 7
ÖÿED& w ÖwÂÿñ5  B& ƒ · Twl0 TÂ ÀÄ$ ô ³& & Ä „ÒÄ
ý‡ Å€ÿÄD& CÃe ÷ `ÿË5 ÷ TÿÀ‚ Ð À& 
Á Ë5€ Ní0       ÎBÁ
ü$P! ŠH" f$ Ë5€ õ5  A H A
 ÑN`pb H	A( Áe Hà Á|a±> ß•à þÿ Ë5€ Am0 ÷ þÐþÎå þ‚·cÄþwæ]æv ÿˆ‡Áeø÷e ²þw¬þÂ÷‹¨þä€æ1ÿˆéÖ7Š^þˆ Ë5 K÷‹ˆþËU    ÷	tlô5   4   
 Àe A÷	2q@w : À ÄÒ`> ÷	PrõE€  õ5  w	pi@ 
 „… B € û1  Á ÷	
lô ô À ÷	r‡ 7 PRwm0 JRÁ\÷¥ `÷‹Úý€ÁP 7
€v ÷	`k†ÀH`ðö¡ w L‘4  Â Àr ãò: r`: ò$ ƒ< ÃÃÃe@ ò`$ Á
ýCÃe ÓE   ð• 0 $ ÷	æ¢ð¥  U÷‹XýRó5€ þÿ?       $ Áˆ Ñ@Àe, &	ˆ
ÂÄ ó5  ÄU ÷	€š†Àš_ÐPÈ„£w œþˆ æs Ãe ÷
ðüßýìü. õæü. CÃe Ë5 @÷	*›æ÷	ŒþƒãE€ Ë5@ ËE@ A÷	Š ‡ ËE ãE €Éá€a(!
a(!á 0
< 0
2 Àe" 
à 
 
 
0  Ë5€ @÷	›À ËEÀ À Aw ‚š                         0°  GEM{s$i,4 ž¡ž¢ ¡DB¼¡    ÷	„t†‡ õ õ õ õ ñ¥  
À 5” 1¤
 À%$ øÀþ õ•y  ñ¥  †w õå  5Š ÷	&v÷	ês³ Á @P3  ñ5  þÿóµ 
 ôE  ÷	€zôU  ÷	Lz  4  r  ß•à þÿÊ•I ô5  ±,  ÞÂe b       b b 

âÊ•S Ã ñ%
 C\ õ‹ ÃU ò Àý r  ƒ
 C
Ã5Àò5 @ Šþÿõµ  )ñµ 
 w ž÷	‚šw üõÅ  4
 ô5  Ê•E Šþÿw øy ÷	šJ óU€ þÿ‡ ô‹ ô•  ô•  õÕ  w Èy÷	|e÷	xy Ãœüÿ r  ô‹ 4
 Ê	@Ê•@ Ïô5  ÷	Äô5  ôE  ò5 @
 G÷	Ü™Ê	@ÁG w Œ À ñµ 
 lÊ50 $Ê5 `s÷	°™Àô ò5  Àü  ñµ 
 b Á5F
ò5  ò5 ç Lw *w Þ Àü ò5 @
 
w Ú Ê5 <ó%  îw *þõµ  	ôŠ Šþÿ w æý´Š õÅ   ± Šþÿ÷	jx w €˜ ƒœüÿ‚r  ÷	â˜ô5  ÷	¾ôE        †÷	¤y' ñµ 
 óŠ  ¿ñµ 
 õµ  õ¥y  õ¥q  õ•i  ó   §ò5 @ Àª   ÁÁl Ê	@ Ê•K ò‹ ÊÕ@ úÊ•@ ÃœüÿÂœ  ÂU ôE  ÷	ìw÷	Xsw ”üÁ5€‘²õ¥y  ®ƒÃe$ ÷	Jx'‡Ê•	 ÷	þ uà È µœ  õÅüÿ µ   ±  ±  ß•à þÿ4
 J óU€ þÿŠþÿ‡ óŠ  Àü w BÿÀ'5` u‹ 5à À € @l À¥ ‚Àå Àe À% ö‚Àå ±
 ñ1 ÷	n ÁO ó•  À Á5@µŠ óŠ óe  À êÁM ó•  ò5  €ŒÀE@ Ê	@2 5Š 4  4
 J‡ w üó   ó•  ó  ‡                                                           KOMUW$Y,   0°   ( Î¡
£Ð¡DMô¡    ÷	t†‡ õ õ õ õ ñ¥  
À 5” 1¤
 À% øÀþ õ•Q  ñ¥  †w põe  ÷	6vó¥  óµ 
 	3 óe  ÷	 vÀ ÷	Øs³ Á @P3  ñ5  þÿóµ 
 ôE  ÷	nzôU  ÷	:z5Š   4  2
 ô5  Ê €@ 2 ÷	Tô5  ÷	ŠÀ, Ê@ ÒÂe â b b 

âÀ ÷	8Ê@ Àý ò  
 A
Á5Á€ò5 @ õµ  >óµ 
 ÷	öw "÷	Dw õÅ  4
 ô5  ÀO ÷	ôw æyW­ O 	‚µŠ ó%
 ò  ÷	ö™@  ÷	ÆóU€ þÿ‡  ÷	¨ô‹ ô•  ô•  õÕ  w y÷	De÷	@y       Ãœüÿ @ 2   ð%
 2
 ÷	Dô‹ ÷	.4
 Ê@ w Jyô5  ÷	ô5  ôE  Ê<€÷	d÷	¬w ´À ÷	þK‡õ‹ Ê.€÷	DÀô ò5  !Àü  ñµ 
  Á5•Vò5 ? w HÀü Ê€
w ò µŒ có%  g÷	<w þ ñ½4]
 õµ  õ¥Q  
õ¥S  õ•Y  ÷	Fä5
 Tõµ  	ôŠ Šþÿ w Œý´Š õÅ   ± Šþÿ÷	þwÀý  w ˜ ƒœüÿ‚A r 2
 ÷	÷	 ‡÷	Jô5  ÷	ÌôE  õ‹ 	 ñµ 
 óŠ  ™ò5 @ Àª  Áu ÷	V÷	¢ òU  ÷	 Ê@ ÃœüÿÂœ  ÂU ôE  ÷	¢w A Aí ÷	sw 2üò5 À ÅÊ5       (ÂÁ5 ¿Á5 ÷	ø÷	h÷	@ÀK 4  µŠ 4
 w \Á5 ¨õ¥Q  ¤ƒÃe ÷	¸w6‡÷	þ uà /µœ  õÅüÿ µ   ÷	.1 ±  ÷	Ž÷	þ ÷	Ö r   r  r  5Š ß•à þÿ4
 ÷	ýŠþÿ‡ w âþóŠ  Àü øÀ 5` u‹ 5à À € @l À¥ ‚Àå Àe À% ö‚Àå ±
 ñ1 ÷	N óŠ ó•  ³
 ÷	ð Àž ó•  ÷	T ÷	, µŠ ÀE ÿ2 ÀM w Üþw „ýó   ó•  ó  ‡ &À ÷	 &À ÷	 €‡ ÷	 Ê‹þ€‡ Ê €f ² ‡ õ%/  ÀU 
‡ ò  ÷	Àÿ€ €€€€ÀE ü‡ ÁÒ;Áì;ÁÆ;æ&¦fÁ, ÷	Jh†·
Äf—%Æ;Šþÿ< ‚ ÷	. Þ	  ¼       ‚€ƒ‡ ¼  üæ&Á, €÷	jh ðÃ ¦Ã
ý‚÷	Fÿ÷	`ÿ3ôÿÀ
÷	6ÿò ÷	ÿ  ƒ
×  ò÷	ÿw òþæ ¡ óµ 
 &À‹ó%
  
÷	ðu‘ ‘ ‘ ÷	ÊþÁ÷  FNÀ" ÷	xÿ± €ƒ‡            è – ` LPb     ÷	¨t%‡CÃe
 ËE?@œ À¥$ ËU À¥+ À¥1 Ëe Ëe À¥0 Ëe ÷	¤ †4  üÕ@ øÿ‡ Å,­D <Šøÿ÷	ÊfüøÿCÃe
 ÷	t è‡ A À ÷	`v½<ŠøÿŠþÿCÃe  Áe SSKÀñ ÃeòÿË5 èüøÿÄ€À  ô•  ôŠ Åô•  ´Š ¾w °sp  õU 
 ‡ øÿ@ w èSÉ5€€± 5 õÖS ‡ ãË5'Ë5 7Ë5 Ë5  Óå Â•
 6õ       Ë5 âÓE Â• +ÓE  Â• &ËE Âœ >”À5  ÀE  ÷e€ rSõ
 Â¥ ÝÓÂ¥	 æ’ÎUøÿ£UÓ
Â•  ‚Â¥ ‡Â¥ Šõ¢ ³†‹Šã—  ‚—  — 
 	Ë5 @ËU ³ Â• ËE @± ËU @Š                ;; ?? OO PP YY$  / 0~   / @~   ~(  ~  ÿÿ         €       
'$() ^Z
 ^U
 \     
 ’ D­ˆ®¶¯YL ¯l®  YZê®*®    Cñ¥	  #À Á 	Á%ÿ †Àÿ ÷	Hs†Àú 
w ‚v÷	zs ÁÃe  Ëã(Ë£ ÷	†rw ˆñ¥  ÷ñµ@ 
 óB ò5  "Àý õµ  ÙñÕ  
 õE .   œúÿþÿõÕ  õ‹ õU @. 	t LŠþÿ      ÎÀð ºõ5@€ @    õ5  . Àï ÷	þŠþÿ¦ð¥  õ‹. ×€õE€ . æ¡f, w D ËCÃe Ë5 ÅË5@ àÈE/~1
" Ãå  1" Àe  ÈÈE/~àààS S S t ËEp}ËU€óW 
 óU   w ¬Öõå  ÂH ÷	.káŽ¤ü± ƒ w <Î¥ úÀñ A Áì Á
ÖC õ5  wÃ5 tÃ%àqñ¥ 
 Ã% Ã Â, 
¦”÷	äj
C úw Úñ¥ 
 1C Å, ó5  Àð À÷\ÿ†÷	˜jÉ% ½Îµþ Àñ¹uB
 Ö‹îuR
 ë÷	tjáÎ¥  Àñ¨Ž¤öõE 
 ëñ¥p
 ÷
ÿ†&
u2
 Ž
÷	Tjõæ•  Ò‹ùu8
 ûŽ˜ôÀþ ls  ó5  óU  Àú \æ €ñµ@       
 ÎU ³U u,   u   Kõ‹ D w Èõ‹ xõÕ  õ5 @. õ‹( ì÷	4qj‡Àý õµ  aCÃe ñ¥  sËE  À ñ¥  ñµ 
 óU   ñµ 
 ¨ñ¥	  ³ñ¥  Ÿñ¥  óE(  7ñ¥  3ñµ 
 ôÕ€  ñµ 
 ôÕ  õ5 
 ñµ 
 ôÕ   B ò5 ð óU  @ ÷	Ä	A Áe ÷	¤	
†Àé óE ÷	–r†‡ ËU@ ó XË5 ÷	 D  ÷	|qîBw ÞËE_}ËU €óE @ ñµ@ 
 ÷	Äñµ  
 õ ËE  ñµ 
 ôÕ@  ËE 3Š  @œ À¥$ ËU À¥+ À¥1 õ5 
 ‹
ó• 	 	Ëe 8Ëe À¥0 Ëe   œúÿþÿw dËE   u,  †u  sœ  f" 1
"       æfñ•  ÷	*ÿÁ…ƒÉ_ ìô@ Â ± D  ”Ä
ý‚D €ñµ 
 ž ¦ Ë5  ô
  æìô ìô&Ÿ ´
 Ÿ ìôŽD ÷	°	Ë5 D æ ËE sóE € ô•  D ‡ Òô•  
S  Ó$æÎå £D õÕ€  õE  . CÃe A æt’ t Áe SSSKó¥ñÿ w œ  œúÿþÿ&
w |ó5  æž
 RóE  Öó5  óE  ô‹ Ë€æ€¦æ w BË5 uË5 x#æž
 %ÖóW 
 ó  Ë_€Ë5 õ
 ÷	†f`¡æ• ËU Ë5 XÖ÷	p`À %Ëå æ•
 Mó5  
÷	RfŽ•Eõ
 óE  Í³

 <õ¥ñÿ 5 õW $ õE . õ u€ A õ5   B à@  ŠÀ õ5        .  µ"  2
" ÷	žoõ5  . ¬w üË5 PõÅ  ‡ Ë
æœ	 ôµ@  s—£ N‚Î¥ Î¥ 2Î¥ 5Î¥
 7Î¥	 TÎœ ÎUøÿ‹ãó•  	 Öw ÈþËUõ5 
 &
ÎÜ Ní ýNm ŽŽŽÎem ¦—ÎEðÿ‹eó5  3Š õ5 
 ùËe  Ëe  ÖeXËE õ5 
 "Ëe 3Š	 ËE Î‹ó5  &
Îœ Ní ýÖóE  ³Š Î¥ ó‹ óŠ Ë€Ë5  §w 8óU  Ë5 	æÎEðÿ&
Îœ Že³• û‹
 ó5  µ
 ó

 ËU Î ˆËUó• 	 6Š w ¾ó5  óE  æ Ë÷	j^CÃe Ó5@ Á f’ó‹ Éœ N˜Áaá÷	”jÖ¥- æ w FõÅ€  4Š w TúÁf ÎâË• 6Š À€ ŠÀ £ŠÀ›õ5 . õE       . ÷	ªmãu  Ë€ƒ_ ìôB Ã
R”ü÷	‚m@ à÷	eÉs ÷	øl¾÷	ØýÁ ÷	Œd*‡ÐPa(Ð P0 Ð ˆ@ ÷	–¬õµ  õÕ  ó ôµ  `]Î¥ 
æ  ÎBËE  ‹U÷	zýÖ‡ ó ùô‹ Oó5  	õ‹
 ïÎ¥ õ éó‹ æ³“ ô‹ áËU€ Ö÷	
]f( 5Š( õE€  õ5 . ¢ýúÿÎu  ÷	†È‡õÕ€  ôÕ  Ë5 Ëe   œúÿþÿÎ¥ CúÿÓõ$ Î w w ”w ¨§Ë¯Î¥ ¬ó5  ôó,  óœ  Î¥ ôµ   ËE ËUó• 	 &
÷	tbõ  óU  ÎX 3Š GÎ¥ Hó,  Ìó
 õ
 ÷	,bõ
 Ž³Š ôµ   ½õ5 
  Î¥	 óU  Îi $õ        Îœ ÷	ðaÖ¥	 ÎÕ ŽŠs-  ôÎUøÿÎeh Ë5 YËU Î Î•\ ³ ÎÎe ³
 w öúÎ¥ ÎX ËE s  ó  õ  ëÎ¥ ó5   
õ5 
 óU  3
 :Šó•  õ5 
 Î¥ ôõ5 
 Î¥} íƒÎ¥ ó•ö  ËU ÎS ¼Î¥ ³“ ËU ôµ   EË5 x©w Lûõ5 
 Î¥{ ƒÎ¥a ‚ÎÅ  ¦÷	
aóŠ ËU ³
 ôµ  ó5  $ôµ   óE  Ë5 ÒËE w îþ—£  
‡—£| ì‡õ5 
 —£ å‡ËU ³“ ³Š Öw ²úÄ ó   Ë5 (Ë5 D 
ÖÎ¥ Î¥ ”£‡”£‚3 ésŠ ËU óE  õÅ  D Ó„
Ôéó•®  îó•­  êó‹ ³
 õ
 ÷	`õ
 ó
 ³Š Ö¥ óËE       ×B Â5@ p  Â5 ÂõÕ  õ•ñ  õU  ô•  õEÁ. ‡ ¦÷	H õW $ õEí. õ5 
 æf&ÁT ÷	|`‡ÐPÐBYÐEÀ_B÷	Þe¡ €ƒ‚‡ õ‹ Õ€5Š( B ¼ÁT õ%P  õP  ÷	0`‡ÐP5
 5 CÃe Ë%ÿ †Ëÿ æÓEý“Ãå óE  ‡ ÷Ö ÃEøÿõ  ‚ÃEm Å`Eõµ  ôÌ~ D t,  D CÃe ÷žõµ  ‡ õÅ  4Š w ¾÷A
 €ÊU`@õÅ  Šþÿw ^øõ5 .  4  õ
 
€µ•, D Ãe Ä]~³• óU@  õÕ  ‡ µ•, õU€ . ‡ ÷& 3€ƒ ÃEðÿõ  ,‚ÃEm Å`Eõµ  #D CÃe ÷ê & Îe ¦Î5 `ô‹ ÎE€ÿÎ¥       Î¥ 
Î¥ w fúóU  Ö‡ óE  ó‹ ø€Îœ óE€  w (ÿóE  õ5  
 óU  õE  
 ó] 
 ËExó‹ äÖw ¦öó‹ Ñ€óU  Ú @
 €A ÁÊ Ê5 ýÊU`@òÕÿ  r  ÀONÈµ Èµ ÈÕ w Ä €œ ÊUB ‡ æPNDæÅžD CÃe Þ	ƒ‡ À 
ÂPN&
Žœ Î‚l Ž`Ž ;‚…õ5  
 ùõµ  õD Ä~1Ñ 1± õµ  çæ  NÝ ± µ õE'
 õH  õÖúÿõÅ  Òõµ  Î1Á D ÷	ÒüÇ‡õÕ  ÃÖ$À
¶À6N
Âú[‚Ä w üa                                                                 yÖ¤   q¤   W¤  G ¤` C ¤ Yr¤        Y\¤@ÿ ÿ ÿÿPÿ ÿÿÿp ÿÿÿÿ@  Ö¤x £ô¡£MMj£    ÷	@t†‡  t D 3
 Â 3Š @
 Àµ ó €  ÀE  Âe ûõµ  
Ê‹Àþ w ’õÅ  ´ 4Š &
3
 5
 Ò‹€w 8,q  5
 u  w Tõ5 @
 
Àõ w F5 1 Î —¬ÿÿ u  5 õÿÿ s  3 "—¢y —¢ 1
 —¢W —¢q Àú ñ W,  	‡5
 Àô õ5@ 
 w ÒAÁe —¢ õå  qm  †Ée õe  IIII‰”‰U³ ó  ó
   ÷	B\‡À õ5 
 ÀÀUÀ õ5 
 ÀU 3 _õµ  ÷	lòU   õE 
 ñµ 
 2w Š Ãœüÿõ5 
 À 
2  ³  4        ‡ ÊE@ ÷	|™Ø‡Šþÿõ5 
 õE 
 õ5 
 ²ò5 
 Ê #Àý õ5 
 oò5 
 ó  hõU 
 ôŠ À ô•  ÷	ðqò5 
 õ5 
 ô•  ‡ õU  
 Ê	@Âe  ÃœüÿJ òEøÿ ò\  b 
b ¢ 
4  õE C
 õÅ  ÷	¤˜b ‡ õÕ  ‡ õÕ  ‡ ¦÷	æ‚q
  Ò‹€÷	Ôa‡õ5  
 ]õEÏ
 õE7÷ u] 
 À Ö 2
 w 4÷	ÎcD  —¢‚ ò5 
 w êþ4  Áe
 õµ  $—¢¸ —¢¾ µ,  ƒr  &
Àó +À Ñ5 @Ê5 @õ Ê58 õU 
 w 2ó  É5 ÷	ö—û	 ³ ‡ ÀÅ É5À…Àô ñ5 þÿÊ5 @É5 îÉ5 ëÀÈ õ‹
 qóŠ  n÷	®õ        Þ	ÊU Þ	s  5
 Öw lþñ5 þÿr  ñ5 þÿRñ5 þÿLÉ5 Àñ5 þÿ¼÷	64†÷	.	†÷	RÞ	Àõ õU @
 µ
 r  0õU  
 òU   ò  ³  ÊeÁÿÞ	ÃÉ5X’É5è#ñ5  þÿÉ5 á5 Àö Àü óŠ  ÷	â õ  œÀö ÖCÃe
 æËE0 ò5 
 ËU   ñµ 
 ò5 @
 Ê5 @ò5  ÷	––ò5 
 —¢š ËU   W,
 À‹Àö Ê¥¸ ò5 
 	Î5 À‹ÀÂ ËU Ö÷	Ê A l  ÃœüÿÂœ  ÂU 
÷	6qw ¶ú¦ Nm —% ¡ õµ  Ê5 õ5  
 ± ‡ Ê	@òÿÿ W­  ÊY Ê[ õÕ  ‡  ¦ N ² õE %
 ± ò5 
 õU 
 ò5@ 
       õE 
 ò5 
 õU  
 ò5 
 õU 
 õÅ  ¡ ‡  ñµ 
 fñ¥  ñ¥  ÷	v‡ q  " q   ÷	
vq   q"   ‡                ú¡¢¢1
 1
  1
" Bœ u,  if&
C Áe Ãe —  ƒ—  Iñ5 úÿõU  ñ5 úÿ6W- … 5‚õE  .Ã9@A%	×¬ñÿ 'fÂC×¬ñÿ fÀ! ƒ@6 Ä ÄÃB BAÂå  ÷	m€C ÷	^À Àÿ ƒBÀ÷ —  ø‚Àþ õµ€  òÀñ õÅ€  ìCÀ•þ —  *@ ÷	^r÷	²s†‡ 4Š u CÀñ õ Àþ D ×¬  ‡D  5D ÄÁ ÷	Øl†Àé 
÷	Æ Ö3  ÐPÐ Ð APœ Ðœ
 Ä È       ×¬  ‡Á H ` 
 
æ÷	H ƒÀ Ôõ5  ÷	Ft‡Áe ÷	blÅ‡ÐP3 ×¬  & „Â Á Âå  ÷	Ìk@ Á  3
  w ÂC ¬Á, Àñ 
÷	 õ ¡õÕ€  ‡ õ‹ €õ  õÅ€  5
 ó" 
æ  ÷	@t€ëÁ w <lw òt                                              F F F ¢F °¡` F .¢F ¢(¢F F F F F F F F F F ¨¢P¢Œ¢F ¨¢F F F F F 2¢˜¢F ‡ þ€ ñ€ ü€ ô€ ö€     
 Ý ô w F  ìô ‚
 
€ÔÀ €ÔÀ ôe  ôå  ôU€ 
4
 ô   4 ÷	ÐåDï‡ ô
 T÷	’ç÷	8ç4

 õ *æìô ìô €”Á Àµ Âe Áe Àµ Âe Áe  
      €Ô€
ÀŒÀ €ÒÀ €Ÿìô5 u` ô  
 5í  À 
Ý ÷	†ôU@ 
 C ôœ  õ5  @ C ó5  ô  ÷	åôå  ôe  ælS ìô Ò• À 
·TSô  ô•  ôœ  ÷	 å‡ ô +ô%  4
 ô ô•  ÷	üä‡ ô  
 Ý ÷	næ‡÷	æC ô` 
 ôœ  ô  ô•  ÷	Ää‡  ÷	ªÞû‡ {  ô ÷	Zä‡ ÷	Tä‡ { ,  
 Ý ÷	æ÷	¼å5
 ô ÷	2ä‡ ô
 $ô  Â@÷	jå‚Öˆ´  ô À ôÎ  ô€ ô   ÷	öã‡ ô ÷	êã‡ ô ô•  w &äÁH Cô 
 Ñù@w  &÷	`Ý‡t &4 ô•  ô  ÷	êã„‡                                 „ „ J¡ú Ö Š Ž „ – Ø°Ø°¢Z¥Þ°©^«„ d¢þ¢0¤„ „ „ „ „ 0¦Ð°Ð°Ð°Ð°Ð°¶¯´¦~¨­L®Ð°Î°¨Î°p¨Ð°Ð°Â¨«f¬Ð°à®Ð°Ð°Ð°Ð°Ð°,­Ð°Ð°Ð°Ð°Ð°Ð°Ð°Ð°Z¯  € ÷	Œà‡ {  ÷	jç{  ÀÖˆ  ðÅ€ 	 ÷Øÿ÷	Nçû	 †Ã€ ÷	¬ÀÖˆ  ðÕ€ 	 Ã€ 
÷	æÀÖˆ  ðÅ€ 	 Ã€ ÷	 æ‡
Ý	 w ²ÿ‡ ÷	þæ7
þþ 
÷	Jç‡5
 €
ù 
÷	þæ‡Ãe 


€
ö7
Tÿ÷€ PÿôE €
 ô ô•  ÷	†å‡ ÷	®æ÷ ¬þÅ0Àõ5  õU   Åe W!Âô‡Ã Àó5  óU  Ãe × 0Àô‡Å0À&
õ5   Îÿÿõ5  õ5  Öw |	Åe W!Âê‡Ö÷	Nßw : Ã Àó5  ó¥  
 w Ú w ÚÃe × 0Àï‡ô  ô•‚  w Îä      7
üý¡ ‡  
 Ý ÷	æ†‡ ô` 
 ó5  ôœ  ô ô•‚  w ”ä3  ôœ  3
 3
 óU  ô ô•‚  w jä 
 Ý ÷	¨å†‡ ó5  ô` 
 ôœ  ô  ô•‚  w 8ä3   ô%þÿ óU  óE  ó¥  
 w óE  ÅÅe Eó5  ÷	<Þw zõ5  òóU  õ5  ëõ5  çw 2 
 Ý ÷	å&À Àð¥  
 4ð¬  0ð5  ,ð5  ðE  $÷	ìÜ†óU  „÷	æä4 ô
 ± w  ðE  4   4œ  4
 ô  ô•‚  ÷	PãÀe  0ÀÃ‡ÅÅe fEõEÀ ú
ÄÄe &  ÷	bÝú
„óE  =À Àð¥  
 ð¬  ð5  óU  ÷	.Ýw lÀe  0Àè‡óE  ÅÅe       E ó5  ÷	Ýw @óU  õ5  îõ5  êw   
 Ý ÷	ÜãæÃ Àó5  €ð5  ðE  Öw î &÷	ÂÛ_†„ƒ÷	Àã4 ô ± nÃe ×  ÀÝ‡÷vûƒó5  óE  ÷	tÜZô   ôœ  4
 ô  ô•‚  ÷	âIƒó5  óE  &÷	JÛ†„÷	Jãô ± 5ô   ôœ  4
 ô  ô•‚  ÷	Àá„7
ìúô  ô•‚  w ªá€ 4   4œ  4
 ô  ô•‚  ÷	†á„ÖóE  w Tý¡ ‡ ÷	ÆÚ†õ`€
 ô  ô•‚  ÷	Vá‡ t  t  ô` 
 ô  ô•‚  ÷	2áD4
  
 Ý ÷	jâ†‡  ìô  —¢! ‡—¢, ƒÀ w r
 
€ÒÀå! ÀÊ¥( x 4 ¦ø	4 ‡7 øN‚òµ   
      €Ü Àe `—¢) ‡—¢+ ƒ‚À w $
€2  ÔÖw 
ò‹ À w 
÷	ºáÀÀe Å ÷	|	†ÀÀe Å ÷	l‡
 õ5  õ  À w Ä	&÷	 Ù†„À@ w ²	t 4
 fÀÀe ÷	 „À w 	€œ ÀÅ   ƒÀ w B÷	,áÀÀe Å ÷	î
#†ÀÀe Å ÷	Þ
‡À w &÷	(Ù†„À@ w t 4
 fÀÀe ÷	( „ Uõ5  Mõ5  Iõ  À w Ä &÷	öØ†„À@ w ² õE  &fÀÀe ÷	Š
÷	œÙ@ Àe A÷	x
ÀÀe ÷	¸
„ À ÷	¦„Ö7 DM Ê•* ò•  ÷	BàC u  À  ¡ w B À' w 8 7 M&€Àe fœ ÷	`	†ÖÀ 
€œ       ÀÅ À÷	òßx L ± ‡ €õ5@  À& %õ5€ À fÀÀe ÷	À	&D÷	ÎØ„µ õ õU€  ÀÀe A÷	æ	À ¡ ± ‡ €p À ¡ ‡ ÀÀe Å ÷	@	
†—¬  
À' w ¢€œ   ƒÀ w ŒÀ÷	>ßx T õ5G À& w r€Àe f7 Lœ @` ’ÀE ÿæ÷	"ß†ƒÀ! w DÀƒ÷	ôÞð¥  
 À! w ,ð¬  À! w ð5  À% Å w 5  ÷	àÖ†À@ w ò&÷	b×„@ Àe A÷	êõU  B ÷	VÞ÷	îÞô ´ 4 ÷	@Ý‡ &
  
 Ý ÷	´ÞõE C õ5   w ð ó5  @ ð5  "õ5  ÷	@×Ö¡ dÖ@ Àe fA÷	*õU  ó5        w ¸øC w ´ùõ5  ÷	üÖÖ¡ B ÷	"Ö†õU  Ö± 7&÷	ØÖ„A 7 ¤J Ê•) ò•  ÷	¢ÝÖ€@ Àe fA÷	ªÀ% Å w ÈõU  ÷	äÝ&æC ÷	œÝ6Ð ƒ…À w ¢‡ õ5  ÷	dÖÖ¡ &A Ö€ ÷	‚Õ†õU  ± õE   @ Àe fA÷	0À ÷	w ”öõU  w Šö‡ õ5  À& w 0 ÷	Õ†À@ w &÷	ŽÕ„õE  õU  B ÷	ŠÜ÷	"Ýô ´ 4 ÷	tÛ¡ ‡  
 Ý ÷	êÜõE  C õ5   w ¬ @ Àe A÷	Œó5  @ ð5  õE@ w øõE@ w ÷ ÷	ŠÔ†õU  @ Àe ÷	‚± )&  A ÷	.Õ„õ5@  õE  w Ü õ5        õE  w î7 ÚH Ê•) ò•  À w ‡ &÷	Ô†„õU  ± @ Àe A÷	ÌA õE@( À ÷	œ„w (õ‡ ÅÀÀe Å ÷	T†À' w ÂfÀÀe ÷	n&D÷	|Ô„À  w  õ5 À& w õ5€  À& w €õ5  õU@  w >þõE@  ÀÀe fA÷	õE€  7 ôG Ê•) ò•  À  w 6€œ   ƒÀ w "À÷	ÔÚx f ÀÀe Å ÷	’†À' w  õ5G À& w îÀ f7 ŠGœ ÷	.†À( w Î&÷	¨Ò†„À@ w º÷	nÚõU  5 t t Àe f÷	š„7 4GÒ•( Ê• ÒÕ RÁ RÁ Ò•J Ò• @÷	"Ú¦æBÂe
 Ã & & w^Ùƒ‚7 îFÒ•      + Ò• RÁ RÒ• Ò• ÷	äÙf 7 ÊF’÷	ÔÙôœ  ô` 
 ô  ô  ô•‚  ÷	„Ø‡ ÀÀe Å ÷	r†ÀÀe Å ÷	b‡ À' w Êòµ  À' w ¸€œ ÀÅ   ƒÀ w  Àòµ  &
æÿÿø	^ ÖÀÀe Å ÷	 ÀÀe ÷	&D÷	6Ò‡ €œ   ƒÀ w PÀx n 7 ìE Ò•+ Ò• RÁ RÒ• Ò• ÷	ÞØf 7 ÄE’À 
÷	ÈØôœ  ô` 
 ô
  ô  ô•‚  ÷	x×¡ ‡ 7 ŒE Ò•+ Ò• RÁ RÁ Ò• Ò• ÷	|Øf 7 bE’÷	lØôœ  ô` 
 ô  ô  ô•‚  ÷	×¡ ‡ ÷	BØÀÀe Å ÷	†7 4õ5  0õ5  ,õ  )õE  7 øDò¥(  ò¥      +  ò%  ÷	ªÐ÷	ä×õE  C 7 ÄDÊ•* ò•  À) w 
 À' w  ‡ 7 ¢Df¦’¶œ  Ò•' ’“RÁ RÀ À À%% 
ÅÒ• R‘Å J‘Á	 ö¥  	Ò• R‘ŠÅ J‘Á
 
ŠÁ ÷	V×ôœ  ô` 
 t ô  ô•‚  ÷	ÖÖ¡ ‡ ÖÀ w lÿ÷	àÏ‡  
 Ý ÷	j×õ5   +C ó5  %@ ð5  õ5  õ5  õU  w úõ5  &  ÷	Ï‡õU  A ÷	¶ý„÷	ÊÏ¡ ‡ æšCf&Å0ÀfÅe
 €  7 ~C&”÷	ˆÖ•¥I~…¡ …Åe W!Âç‡± €·VC‡ æPC÷	\Ö¦À À&€`¢€Àe  0Àö‡± €¡ ‚·"C‡ æC÷	(Öf&€ 
&@aP øÁ H õ€¡ ± ·ðB‡ æ      êB÷	öÕ&¦ @ û
æÐB÷	ÜÕ&¦Àå   @ ú2  ± ‚€·¦B‡ æ B÷	¬Õ	æ”B÷	 Õ1 H·†B‡ æ€B÷	ŒÕôU @
 Ìó  3 ·dB‡                                                        ËF²KD ²¤\¦.¥¤\ d¡¢¢ ¢†¢¤¤¤¤¤¤¤Ö¢°£&¤@§Ê¦B B ž¨Ê¦@§¾¨¾¨‡ 	
CD À
 À ÀE ÿÀx  Â ÷	rs‡ß ìôÂ Á Áå p&æ  &
„€÷	¶‡÷	6	†–%Zô ´ 
 6
 ´  ÁôU@ 
 Âe Áå ß„Öõ¬ & Â[qA$ "A*  ìô ‚
 
€ÔÀ €ÔÀ f÷	Vç†À³ÿ…"÷	òæõ5  À²ÿ…B …÷	ªæ†Àµÿô ´ t ÷	å„      ü ô ‡ „÷	<À€„À w 0&
&
Â ÷	f†À%¹ÿFó%  =@Àe ÷	ˆ†ü ô –%‡ ð5@ 
 ó @Àe ÷	dî‡, ú÷	=  5  0
 Áe ß ìôÀ PHÐE àP¶
 ñ5@ øÿóå  3 ÕÀ À Öw Šõ  5
 À w t
÷	 Þ#‡ &ß ìôÂ  
 ÒE à
 Òå 
óå  ÷	îÝ‡ ë„ 
÷	RÞúÀÿÿ
À ½  5  w ÷	 w ¦&ß ìôÂ æ 
óå  €÷	‡÷	†Îýÿ÷	øÝ


Âe ê€„‚‡ @    ð5  ÷	<ÝC‡ô ô
ý ô•   ÷	ÌãðU  Â ÷	ÆÀ%´ÿÀ%¶ÿÀ´ÿDó%  ó%  Àºÿ9õ5 "       µ& õU " A( õ5 " À¶ÿ&µ, õU " A. ÷	¶Ü†À¸ÿt  ô t ô•  	 ô•  ôjü ÷	2ãD ü ô ‡ 
w ì Â ÷	†À%¹ÿ0÷	bÜ†À¸ÿ*æ&D Á ÷	‚B-& õE " B( õE " B. „´ ôþÿ ô• 	 ô•  ôìû ÷	´âƒÀ 
w v Â ÷	¨-‡÷	òÛ†À¸ÿ'B-& õU " B( õU " B. ´ ô ô• 	 ôÿÿ ô•  ôŠû ÷	RâD ü ô ‡ 
w  Àþÿ
æ æ & 
€Ý À €ÕÖw ’r&õ5 " A& ÷	š÷	^Û‡t(  ôþÿ ô• 	 ô•  ôû ÷	âá„õ5 " A, ÷	`÷	$Û‡t.  ôþÿ ô• 	 ô•  ôàú ÷	¨áõE " ‡ õ5  Y÷	ô õU        ÷	€õ5  M æþÿß•à þÿÃfË%<ƒõU€  Ë%,ƒõU  Ë  ÃïÃ^Ë%¸ˆÃûõU@  Ë  Ÿ•þÿD ô•  õÕ€  ‡ ÷	tÚ†õU  ÀÖˆ  ðÕ€ 	 ‡ õE  ô  ô&ú ô•   ÷	èà‡ @   œ  œ ÁE ÿÀE ÿ@àÁ,ªf‘…Åe u Åe u Âe< À
ò…õ  ‡ ßšâìôÀÊ  œ	 
 ÑÄe  CÂå ø‡ õ5  ô•  ‡ õ5@  õE@  7
:âæþÿß•à þÿÿ¸ˆÒe÷¸ˆÌeŸ•þÿõ5€  õE€  ÷	nÝõ5  õE  ÷	ÐÜD õÅ€  w äþô5@ 
 (
Ý ÅÅ E,ªô% w ô% w   &D ÷	Ô‡€ð
 À À±ÿ÷	tý„4
  ôµ  ÷	àÙ÷	‚ÙÆ‡        
 Ý ÅÅ E,ªÀ5 
õ5 " w ZÙt,  	õ5 " w FÙt&  D ò%  w Ê ò%  w Ä Ÿ ìô€ Ð¥ €
2” 2” ò5@ 
    ð¥  ú°¬  ö÷	&
¦ ò¥` 
 ½ µ ‚ w ®ù€w ¾ù½ µ ‡ æ æ·ÿ&  
Ý D ÷	¶€ ó%  
÷	dü„Ö5- ( õE " õE " w ¼Øæ æ·ÿ€ ÷	p „÷	 ØD Î÷	Þ u & õE " õE " €
w þûÀŠð5  w  ýÀÖˆ  ðÅ€ 	 ‡ ÷	RØ‡ Ã ÷	.—†‡ ÷	"œ‡ @    ð5€ #ð5  ð5  À´ÿµ & µ , õ5 " õ5 " õ5 " 	õ5 "  
‡ ÀœÿÀ¶ÿÀ¹ÿ± ‡       fA @, Aû± @¡ ‡ &æ&@Àe  	¬ û÷	N ÷	>×ò@Àe  	¬ û÷	< ÷	"×ò„  ¬ û÷	, Àñÿf÷	Úúï„ƒ€‡ &DÄe &DÄe &f¦@ L4 	BA@ ûJ´ 	
± ‚„‡  	ð¥   ú¬ ÷¡ ‡ ± ‡ mPm                   œ (¡    ‡ ß•à þÿ÷E €ªè*ŠþÿÂžè÷fè–è÷
’èƒÂÂ¦Â‚eÂmJèß•à þÿÊ5 äÊŠ÷
rèô … ‚œ Ãe ÷	6â÷	âß‡ÏÄÌHè7Dè·
 èŠþÿ‡ ’¡”¡¶¡î¡¢^¢˜¢º¢Í%ÿÿ0t­  Åe ö5  ×  õ¥   õ•  5Š ×  õ¥   õ•  5Š 
×  õ•  õ•        ‡ fÅÌçE Í%ÿÿD­ Åe ÷õ …‡ Í%ÿÿ1õµ   õ¥   &C ÂÂÂ¦Â‚eòâˆ€÷	¦ã5‘ õ‹ õŠ u­  D B Âú	Œ u  õÅ€  Åe Ì‡ ‡ õµ€  õµ  Ã æ•  æ w ‡ õµ   õµ  õ•  õ•  õµ  Ã æ• æ w à ‡ õµ  õ‹ Ã æ• æ w À 5Š õ•  ‡ õµ   õµ  õ•  õ•  õµ  õ•  Ãö€Ä DÝ Ä ÷	.ã†õÕ€  ‡ õµ  õ‹ õ•  Ãö€Ä DÝ Ä ÷	 ã	†õÕ€  5Š õ•  ‡ õµ€  Ãö€Ä DÝ Ä ÷	Òâ†õÕ€  ‡ õ‹ Ã  æ•  æ ÷	VÝ†õÕ€  ÖÖ´ t  t  ÷	Àâµ• ‡               `¡~¢
 Ì¢ª¡ £Â¥  f£Â¥ 4 Ì¥Ò¥4 4 4 6 4 4 4 Ø¥¦4  ÈÅ€ ‡ §p§0¨4¨8¨<¨F¨R©f  ©ªf f Hª¾ªl l ÔªÚª¸«æ«ô €
 ¡ ‡ t t ‡ F ‚ ¾ ú 6r®ê&bžÚRŽÊB~ºö2nªæ"^šÖNŠÆ>z¶ò.	j	¦	â	
Z
–
Ò
J @€€  7	 á&f¦æAÁå @  ÈÅ€ ñ‹# (÷	„
 ÃEøÿðÐ  p‘ ÃÃe  7	Àà&f¦æAÁå  @  Ðœ ÃEøÿÃÃe ÷	Û	÷	î ƒ‚€‡ ô5 
 p ðe  ô5@ 
 ðe  0
 Åe
 ÍEü	0
 ð  9* 1* w ð 0 CÃe( ô5  
 +õ5 6 ô5 
 õ&  &D& ô5@ 
 Ãe „%ô5@ 
 Ãe õ5 @$ 0
       ô5 
 0  CÃe, õU @$ 	õU  $ õE @$ 5& 9* 1* ð w hEÅej ÍÅe< ûðÕ  pàÿ p ðe,  0
 ñŠ# ÍE €ÍU @w .Àe Cõ5 6 Ãe8 Ãe< ÐH4 ÈEðÈXôµ 
 ÈU õ5 6 ô5 
 ÷	<
÷	æ

w æâÀe &’ÐÅ C ð ðEà ô5 
 P4 ÈU H\2 ÷	°
…ÅEøÿsÝÖ  
w ¤âCÃe
 Äô5@ 
 Ãe ó óU € 5
 
ô5@ 
 õE  õE  õ5 6 ÷	ä	
÷	<â÷	¸Š‡ 
õ5 $ w JD&  5
& õ5 6 &œ ÎEèÿƒUõE $ 4œ  t*  õU @$ ÷	ôáw ¦BÂe( ô5@ 
 Âe Ãð5  nÃ5  Ã€w Ã€w ˆð¥  ð¥  ð¥        ,ææP7 àP¦  ƒcã¥ÿ Î
ûƒ ƒå·ÀPÃ% %ƒ, õ5€ $ õ5 $ 	ƒ
õ5 $ ƒ
Ã% õU $ õE $ ò  òEà  òU!  w 
Òe †òe  æ`P7 ZP<œ  ·PPÒ ÊEà ÊUa õE $ kõ5 $ ,õE $ æ*P7 $P ó¥ÿ  
õU $ ó¥ÿ  õU $ · PõU€ $ òEà  õ5 $ òUA  ?òU!  ;õ5 $ &&æìô_> ìôß	 ÀŸìô†õU@ $ „Ãô  Ãe ò Êe †òe  òE  õU $ ´  ôe  
õ5€ $ ÃU ô• 	 ÷	ì÷	àõE€ $ Ã@ õ5@ $ õU€ $ Ã  õEX$ õU $ ÷	à‚Š‡ 
Ü |  Ã ˆÃ Ã  õ& w ‚ýõ5 †$ 	õ5 @$ õE @$ ÷	þ      Š‡ Èµ =õE  D
 5

 &
õ5 6 ÷	Ã@€÷	hß„òD ô
 €5 
õ5 6 ÷	èÃ@€÷	>ßì÷	¸÷	,ô5 
  ô5 
 CôÅÏÿ
 ÷	ÐFõ5  $ õE  $ >÷	úô5 
  õ5 6 &D& 	t*  Ã@€÷	âÞ5
& õE $ „ô5  
 ô5  
 &D& 5
& ÷	ÎÙõE $ „õE $ 
÷	¦Þô•	 
 ÷	fŠ‡ f÷	´õ  õ5 6 	æìô_B ìôß	 ÀŸìô3

 ÃüCÃe æþÿß•à þÿËÃü÷	¶Ÿ•þÿ
± ‡ &fõ5 $ 
õ5 6  Ã@€÷	ÞK÷	:t  4Š ô• 
 t  @Àe( &Äe ÷	\„õ5 6  ÈE €	 ÈÅðÿˆŒŒŒŒ†ˆŠôµ 	 ÈU @ôµ@ 	 ÈU õ€2 õU       $ È•! õU$ õEX$ æþÿß•à þÿ÷	8Ÿ•þÿ€
± ‡ { F { L { p ô 
 w 4

 õ  f÷	võU $ ôÕ 
 t  æþÿß•à þÿõ5 6 c&D& 6õEX $ õU $ õ5 $ õ * õ•! , 
õ5 $ Iõ 0 õ•! 2 CÃe$ Â t­  &
 ÎEÀÿÖ¥ ƒð‹ñ& 

µ& (CBõ5 $ õEX$ õU$ ôU@ 
 Âe( Ãe. õEX$ õU$ ôE@ 
 Âe. Ãe( “Ó ‹ Ë•! „÷	Ÿ•þÿ
± ‡ 4Š
 õ  f÷	jôÕ 
 t  æþÿß•à þÿõU  C óÿÿ
 Ãû÷	ÆŸ•þÿ
± ‡ f÷	(õ5 @ õ5 €  ô• 
 t  æþÿß•à þÿ÷	ˆŸ•þÿõ5 6 õEX$ õU $ Ã  æþÿß•à þÿ÷	 Ÿ•þÿ      õU € 
± ‡ õ5 € õE € õ5 6 
DÝ ÷	hÖ„ô0 
 w "ÿ
÷	pÛ
± ‡  7 šJÓ.	u-8 4 )
u8 4 	ËEð!õD4 ËEðõR4 K4 õ €f÷	Bô• 
 t  æþÿß•à þÿ÷	´Ÿ•þÿ
± 
K4 4

 ‡  7 $Js4  4

 ‡ 4

 ‡ f÷	îõ5 @  õU @ B ‚‚‚±¼Ö " B ÂEøÿC ³ÜÖ  4

 M¦ÃöÔÂôÔ÷	Ü·²õÃ ÃÃ÷ªõ‚±ÜÖ " t  ô• 
 ñ‹" 'ñÕ€ " ôÕ 
 C  ËU @ó•ÿ  Ó €Ë‹þó• þÿfÁe2 æ CB ÷	¨ÛƒÑ‘Î
ôÖæþÿß•à þÿ÷	®Ÿ•þÿ
± ‡ õ5 @ õE @ f÷	B ÂEøÿC ³ÌÖ  4

 ‡ f÷	âB ÂEøÿC 
³¼Ö        ÄU ³¼Ö  ÄU ¡ ‡ ‡ õ5  <&D 7@õ5  	Àe ô  
 õU  õ5  %Àe ô@ 
 õU  5 
t  õ5 6 
ô5   Ð`ôÐ ÐZô&Äe ÷	† „÷	Ä Æ€‡ &÷	²Ó†÷	V 
DÝ ÷	ÎÓ#ô• 
 t  ô € t  4Š &&@Äe Àe( ÷	4 ÈÈÕ à „€õU $ ÷	` „‡ õ5 À$ õU €$ ±Š# w ² ‡ ¦æ÷	ÚÃ ÃÃÐƒ‚Ôð€àU €‡ &Äe Äe Ì5 ôå þÿÔö€„‡ 
ñ$ 1$ ÷	\ 9& 1& ‡ L$ 1& ÷	B 1$ ‡ fÁe$ fÁe( D 	q 
‡ ¦B  òÅ  ‚ñ‹# ñ$ ùU€   ‡ fA ÁNìv ‡ ÅEv E`‡                               D Ú¢ÿÿÞ¢@¦’§”¨Þ«î«T¥¤Ü¤T¥ò£T¥T¥T¥T¥à„¼£œ£n£t¤þ«þ«þ«þ«þ«þ«þ«þ«þ«þ«þ«ôU € ôE     ÷	äð5  Ãe ÷	~æõ5  õ5   
w ž°Š ÷	¼÷	^æ÷	 ‡ ÷
&&õ‹% G@ õ5  ð5€  =õ5  9ð5  	Ãe ÷	@æ/‡÷	Ü JðµÏÿ ðµ   ðÕ  
÷	ì ðµ   ;0¬  73÷	<Á	õ5  ðµ  	ç@œ ÷	ð5`  „€‡ ÷	ÖåðÅ  ÷	~ °
& ó5@  óE@  õ5  C óÕ   ôU€  ô5€  ôU@  ðÅ   õ5  ðE€  õE  °Š ôU@  ôU   ÷	 ãw êþ·® Ó• ÷	æ Š
D·œ Ó• ÷	Ô °Š œ ðÅ  2·€ 
Â °° Â
ú°À ÁBV¢“Â       —  ‡ðÕ   

—  0œ  æÃ) ÷	>ƒ
œ ŠÂŠ3œ ÿÿ
œ ð” “œ ƒ‚‡ fæ&D 5 õŠ% Œ4 t&  4œ  4

 Ãe 
Óe Ó Ó<€J &÷	
 „SÁ S‡ &
‚Áe NlþÿÉ5 Ñ5 €ôÁe õ‡ w ÞÝÃ% &  &
CÃe Î"÷	ä4  Ãò€÷	0ãñÎïíÖ„õ5  CÃe w ÀãCÃe ÷	Úã‡  ÷	 Âe 	 Á¥ õU  ù	 
‡õE  Äã
 ÷	ÎâÞ‡ Ö
 &@  ô
 4
 ÷	ªâ0
  ó„w œâ& ÷	lÝ0
 „õŠ  ¡ ÷	2á‡ µŠ  õ¥   ÷	á‡ & ÷	NÜ‡ô 0 „‡ „ô@ 
 ¡ ‡ Ê ÷	 ‡       0
 ‡ ð• + ÷	ÎÊU€ õ‹# -÷	| 5 õ5  õU  õ5  õU   &B$ µ% õŠ% ÷	ÖÛ†„Ã@ ÷	Üá± L 5 Â
ð„÷	Và‡µŠ# ð5  0 õ5   ÷	Œ÷	úû
‡ f&DÄe …
“Ä
ÍE Ì5 Ì5 ÍU ÍU äÌ5 ÍE ÍU „…‡ CÃe ÷	âÊEÿýð‹ Ê@ ± ‡ Ê5 Ê ÷	f õ‹# õŠ# 5Š% D 5 ÷	ðÛø5
 ŠCÃe ÷	Öáw ”ßCÃe ÷	ÈáÃ ÷	ìàõE  
¡ ‡ ð‹ ÷<Âe Ç‡ &fõ5  &
&
¶ ÷	¾÷	„á‡Ãe õ5  4¬  ƒ÷	Báìõ5  ÷	Ž“‹ÖÁò€÷	šý† 0
 Ãò€÷	`à„‡ ðEÿý ðU  Ãe æ ŠÎ
ýÖð•        ‡ &õ5  õU  D 5 t&  4 
÷	Þ‡õE  L 5 „‡ @ Ãw Âe Ê5 Ê5P Ê5 ÷	N ÷	rÿõ5  ÷	" w V õ5  
õ5  ÷	$ ÷	nÿw : ‡ ð5  ðU  ð• + ðÕ  ðŠ+ ð• + Ãü€÷	²†ð• + ‡ ðU€  õU  õ5  5 Šð5  õ5  :õ5  C0¬  ÷	ˆÿõ5  ÷	–†õU   ‡ õE   õ5  õ5  ÷	àØ‡t&  4Š ô  w fÞ÷	´Ùõ5   D ðÕ   	÷	2ûÊ„úôU@  w þøCÃe ô5  ô¥  ÷	<ßrÁe É5 	É5 €÷	$ßfÁe ô÷	ß÷	8ß   õ5  ôµ€  
õ5
  Â¥ Â%      M L 5 ðŠ µŠ% Â¥ Ä
ó ð5  Ã ÷	þÝ-Ãe ÷	ªÞð5@  
÷	ýõ5   õ‹# Â¥ 0¬  ÷	îð5   ÷	ˆ0¬  ð‹ ðÕ  ÷	þ÷‡ 7 RL õ5  ô5€
 ;õE  ôµ 	 ÷	z@ Áe ô
 €É5 É5P &÷	ú„÷	Ô×‡ õ5  2¬  õ5  
òµ€  ÉE€ ÷	‡	Ã ÷	ü‡÷	Bw ”×É5P ûÊ%9Ê¥ MÉ5 òÉ5 0É5 É5 èÊ%°¬  ÷	xük& 0
 ô Ã ÷	¸Ü„ŠÉE ÉU ð• + ð• * ð•6 , Ã( ÷	ÀƒÃ¥ ;÷ßw ×÷	®ƒœ ÃŠð  ;°Š ô 
 É5 Ãú€÷	š ôµ 	 ôe  ôå
  ôe        ôå  4œ  ƒ æ
 °
$ ÷	*Üƒw ¢ ŠÃ Ã
Ã{ 0ª@ªFªvª¬ª¬ª–ª¸ª?÷	&<÷	 ƒœ ÃEÀ ÷	Þ°¬  0õ5  ŠÉE ÉU  ÷	Œ$°¬  Ã• ÷	àðÕ  ðÕ  É5 ÉEÿýÉU ð•  	÷	ÖÃô€w ÄðÕ0  ƒ ÷	öÕð• * É5 õ5  õ5  M Ãµ€ w äûÉU€ õU  É5 
ð‹ 	0¬  ðÕ  ÷	xõ‡ @Àe  	2¬  úÁe ¡ ‡ ± ‡ ô
   æìô_ ìôß	VÀŸìôÁôU 
 ÷	 ú ‡ fœ ‹æœ N`œ C`ƒ¥+‡ð5  ð• + œ ‹&œ eÁ ‡ðE  °œ  0¬  õ5  ŠÃ‹
ð•6 , &÷	ˆ „‡ÃŠù‡ õE  L 5 ‡   ÷	Fû	* w Z÷‡       æð‹ ðE   ÷	0 ð ø
 3
   Ãe 
ó 0œ  ÷	Rôƒ‡ õ5  Ãe ‡ CÃe ‡ Á æÃe ÷	¢Ú‡°Š C÷	ºÙ¡ ƒ‡ &÷	¤Ó‡t&  4œ  4Š	 ÷	 Ù¡ „‡ f¦æƒ Þ	‚ƒ‡  € 	   	      !!	!   ÷¾ÿ
 Á²¬C‘0üBHð ŠÃ ÷	h Â5†ððŠ* ð• * Ãþ€÷	dÿ†ð• * ð5  ðÕ  ÷	^ó‡ ÷fÿÂÁÌ¬C”B¤üðŠ, æð•6 , Ãñ€÷	 ÿ†ð• , ƒæ`‹ŠËŠƒ‡ = 5 
‡ ÷ÿCÃe Á± B@ úJ³ ¡ ‡ H 5 È5 ‡ @ ÷àþõ5  7

ð5S  ÷	ªÿ÷	šÿ@Àe  õŠ" øu! " ôÃÂ@-       ƒ
ð5  ð5P  ç‚
õ‹" ãu! " ð5  ð Ø5 ¡ ‡ ± ‡ ÀE ÿp. @@aÀe( ‡                                                   ø_    \Z¬‰8†æ„æÎ†t‡R‡´‚  ûü¨	   ãyøp  ò           U                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶À 0UmëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶ÿÿÿÿ 0UmëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶À 0U4V62)  stomer Record/ - Delete Customer Record ADDCST ADDSTK APPPAY CHNCST	 CHNSTK
 CSHSAL DPYBCK DPYCST( DPYINV( DPYORD( DPYSTK( ENTORD	( PROBCK
( RCVSTK( SHPORD ADDCUS CHGCUS( DPYCUS( DELCUSƒ #¡Ò‡¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶À ‘• M    	 
   ( ( ( ( 	( 
( (   ( ( š TRANSACTION SELECTION - Add Customer Record - Add Stock Record - Apply Payments - Change Customer Data	 - Change Stock
 - Cash Sale - Display Back Orders - Display Customer Data/ - Display Invoice/ -       Display Order/ - Display Stock/ - Enter Order	/ - Process Back Orders
/ - Received Stock/ - Ship Order Documentation Examples - Add Customer Record - Change Customer ReMmëÛ¶À ‘•mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶À 0U2V62)  mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶    mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶ë ÀmëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶ìÀmëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶í ÀmëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      î0ÀmëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶æêô&f&
Ãe ßêôÂÂ% À‚Âå  À÷	H Ë5 Óëï`RÁ Rãe 
â€„Ÿêô‡ 
æêôŸ êôÂ% À‚Âå  ÷	 Ÿêô‡ &¦æ&&„Î
 •÷	 úÖ„ƒ‚€‡ @xÀEðÿÀÀa  ÂEÿ‚‚‚Âa‚. €xŠÁ x‡   ÁÀÁ@ÃÀ€AÂÆÀ€AÇ ÁÅÄ@  ÌØ ð < (ä  l x´ Pœˆ D                                                                      ( V „  eò À	  „ „   ,   0                           6    èdZ   ^ ”d                           ²  xdˆ   Œ \d                            V  @d¶   º $d                           mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶÷  Ú, ti9ý	  	 Ú  Ú,   Ú,   Ú, °‰     zEÀà                                                    Û¶mëÛ¶âi      Ìi  Æi                 j      j  j                                                                                                                                                                                                                       































































































































*******************************************************************************************************************************B"Z"""Z""""""""""Z""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""Bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb      bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
















 












































































































æêô êô&  Äå  •Ã¥ Ã¥ Ã¥ 
Ô¥ Ã „&•6“ ƒÃE ÀÎå
 ƒ#†Ã ˆÌ5@ ± –
Ÿêô‡                                        V ( ( Ìdò À	    „   ,   0                    6 „    Z   ^                                ²    ˆ   Œ                                (    ¶   º                                      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶            ( ²     ò À	     V    ,   0                                 „    Z   ^                                ²    ˆ   Œ                                     ¶   º                                mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶            ( ²     ò À	     V    ,   0                                 „    Z   ^                                ²    ˆ   Œ                                     ¶   º                                      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶    Ú, ´‰   ¸‰  #	                                                          ŠÀ       ŠÀ       À$À 001V62@„         ¨À¨ÀÀ$À 002V62@‚        NÀNÀÀ$À 003V62@‚        lÀlÀÀ$À 004V62@‚        0À0ÀÀ$À 005V62@„                   006V62@                    007V62@                    008V62@                    009V62@                    010V62@                    011V62@                          012V62@                    013V62@                    014V62@                    015V62@                    016V62@                                                          Ë@Alpha only@Alphanumeric only@Numeric only'@Illegal entry in signed numeric field@Field can not be left empty@Field must be full@Not enough MENU selections@Too many MENU selectionsÌ:                                                  	 mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶        j V¸ÓðØ¢ª     ¦£           [      ¨¼            8[ úO  æO   ¨Y  Ì  ²   Š1‘
       Èw*                          |£  à°(§ðnº¹Ô   ˆÊ¢.¢H£W * Àð7êþˆÎ ÷	`m† 
6 ‡ À‰
Á
ý‡ þˆ¡¦&@÷	òyC„€þˆ¡¦CD÷	Øy€Âå  w ¤l‡ Âþ @@dÂ
ý	 ± ‡ ÀÀ\=ð‹ :Á* " ÷	€ú7
@/À:,ÿ5 0ðŠ ÿ5 $ðŠ ×- ôÅ 0 ×- 	ôÅ 0 ÷-Hê7
@ðŠ " ÷	È€ú7
àÀÚ2 %&Îe ÷È ÁE C Ž‚ôÖ³  2
 2Š ó¾  €‚Á ÷	NÂë      Àœ ÁÁÁe
 ÷	87
t=
 ‡ ýE  ÷‹i‡ ÷	 ÿÀ]À
÷P÷‹«€ „ À
÷	¾
‡  x & 

Î†Á`@€`ÃBöÖ‡ æÃ  & 
ÂA@ ‡€ã‚
Ã
÷Öƒ‡ t£v£þ­t£n®t£v®f®®­®­®­þ­Œ§Œ§¶­¦­.®Æ­ö­¾­Ö­^®F®®æ­Þ­Î­6®&®V®>®®ú§÷	2À.`Àe
 7
 þˆ£÷	Âp†w hŸw~ Å`u > ‡ Ån èD 7f  Á À€£Ð 
Á
ýÆª @ Àå À% À7J ø	”¢CÅ, À. Á, þˆ^£w æsÌ
½À ðµ  ·÷	|
´‰‡   jJ          º¹                    8º          Ê£´£Ž·•ÄÿöU   w T
·¶ÿ Á†£f 	@Àe Â ÷	øüÁ†£@ ÀE 7ÿ  7      ŠÿÐÖ$	"‰	‡ ÖÉø‡ %‰
ÁÝ·ÁÁeà°‡ Á* ÷	püð & &ÐÁâ°Â PÂ
ýÁÜ°PP÷	Æÿp’õÿÁe 




BÒ‚Ñ÷µ€ np’úÿp üÿ
CÜ ƒ
È`pþÿQ$Â
ö€‡ G  ‚     Õ˜a  €        Ã¢¤
S 

@ €
÷	r	G‡É÷Àÿ÷7ºÿô·¶ÿõ5   u,  êu,  æu,
 
 âõ5  u,  Úõ5  B õ50  %‚
Ìw, `ÿ‚Çw, VÿÃ†w NÿÍ¾7Dÿ»B, ¸7
>ÿ
Â6ÿ70ÿÀ(ÿ÷	Î‡ ‰&	 Ó¤
`B ÷	 †÷	.€ñ†€‡ À þˆÄ¥÷	”sÅZ]†µ
 ‡ å¥‡ ÷	Zþf@fÀ¦f÷	ü ·% $‰÷	8þŽ
‰¥¡ @‰Ö± ‡ ×'&       ÿÿæ1ÿˆ‡ W/  ‚÷‹Õ
€‰ÃÊ
ÂÄ
¦æÃNýó5  À% ‰B ò5  –%‡ & A ÷µ f³, þÿÁe Áe ƒ‚W¬  ‚´ ÷	 B"÷	 ÀÂ B¬ ÷	 ´ ÷	 ‰0ƒƒƒƒ‡ Ö‡ ÁÎ¦ÀÖüÁÜ¦ÀÆüÉ	÷-Âü
‡ $‰    ÷	¤þ‡ÁÚ°Ñ-ü‘ Ñ ôµ 0 
ÁÚ°Ñvü‘Ñ&÷	è€B ‰@, ÷	òù‡÷	üüñ‹ ñ% ‡ À‰Ý‰â‰7
”	 ˆ ‰ è¸	‡W *  ÈHü7Dü‡ þˆj§÷	 g‡ Ãe  Ãü ô Á* w ¾ÿŒ
A ÁE B C €ÀP‰÷	$†
‰AfÅÄûþˆÎ§÷	0q† 6 ÷	<†‡ …À þúÖÌ
w üú      |£              ÷ äÿ      õ% 
 ÷ Öÿw Úÿ@ Àeÿ ŠÀ €7ºÿA ÁE @ B C þˆR¨÷	q6 ·¨ÿ÷¦ÿ‡ 7 Šÿ÷	rä†ö‰‡ Ázÿ7vÿA à@Á ŠÁwpÿ÷•à xWæ"Ww Wæâ§ÿˆ·W÷Åà ^W‡÷‹Öúw`ÖúÁ-Îúuà 5` u ÀÀÀ5` ®÷®ú°ú÷ªú¬ú ‰×­JWÿÿ‰‰ 7úÿÀ À À ÷ äÿ&
æ¦&
æØÿf&
æ|£&
Î• æ &æÿˆ‡÷‹Pú	‡ ÷%ÿÿðVæ1ÿˆà1
þÿ1
üÿÀ%  ‰!‰÷	4 ó5 @ Ê´ Á* À÷	Øý´Š! 
÷-þùb	7
\	÷ú‡ Âe 	ó-ðù ó-êù ÂƒõÃ‡ 7
(7
& 
 Ý ÷	¶øÀÂe Awü·ú÷µ ÁÀùÂ¾ùÁ	À ÷	†ø‚
´  n‚ 
Â ÷-      xùÒ	ÃÎ÷µ Ëƒ ƒ&÷	€À 
÷	FøÀ tÁÁeÚ®Ã–ÃE €Ã
m m ÷ˆÉ÷µ {÷µ 0ù3W Ø°†Ññ÷f	0+÷µ W÷µ ù!Àô†@êÀ €÷	FÛ†ÀÒ«!!!! !Bf¦BR÷µ ÷µ -è‰?¬‰‡ ÅÈ«BCUÍòæ¦Å²¬÷	¤†öà ŽŽà÷µ Û ÅØ«‚ƒ• Í ƒÍ¥ÂÌ«¥¥¥ÅRø§ÅLø7 ® Ãš ÷	ò ‚ƒ Àˆ Á† Å¸¬÷	FÅ$ø 
 Ý ‚ƒ&÷	òö7` w^ ÷U (ø÷‹
ø#tà" ´  4à  ÁF ÁåÚ®ÁÁÁÂ6 ¡ ‡
üCÀ* ÀE €Ãe BÀ
û€÷	šö‡ Ö± ‡   Å     ’°            …  * D±f±À †@ÑÁ%Ø°† I÷
äÿf      Åt÷æ¦ÃÌÃE €ƒ
- †Ã ÷	 ‚ƒ… 
€
‡ ÃE €æÁÖ®Ñ-@÷É ñ4÷þÿ	
CÃE €Î ôµ 0 ÉÑ÷	 ÷	†üáƒ
÷	
 ÷	|ü¡‘%‡ ô  ‚
Ý m B‡  ¡ 	0Í		‡Ãå ‚æ–P÷	8ÿô†‡ ± ‡ 	@ 	P÷U €‡ @‰@ , , †‡ f¦æ" ± $ ñ & ‡@õ&÷	Ìù€ƒ‚w  Áà°÷	þó	ÁÚ°Ñ-Zö BCw Äûw	š^ì$ ì& ‚3 &fÅDœ  
ÀÝ‘ÀÀeè°ÁE ÿ#
Cá
Ü „
á‡a$Á
ö…¡ þˆ¤­ÉÑI$ Bm& Q‘Q$Ã
ü‡ ß	~®Ú¼Àß	~®Ú¼¬½ß	~®Ú¼Çß	~®Ú¼TÇß	~®Ú¼¬Êß	~®Ú¼´Æß	~®Ú¼lÅß	~®Ú¼ˆÄß	~®Ú¼8Åß	~®Ú¼îÂß	~®Ú¼.Ìß	      ~®Ú¼°Áß	~®Ú¼Ãß	~®Ú¼Éß	~®æ¼$Àß	~®æ¼0Àß	~®æ¼¢¿ß	~®æ¼šÁß	~®æ¼Áß	~®æ¼\Äß	~®æ¼¨¾ß	~®æ¼àÅß	~®æ¼¦Äß	~®æ¼ÒÉß	~®æ¼¢Çß	~®æ¼lÉß	~®æ¼~Ê¦  Þ5 Îe ‡w	&¦…
 Bv
 ÷	R


ò ÊE ÷	z	‡‚ Ê5 îù‚‡ Ã, û	 æjJ                                                                                                                                                                                                                                                                                                                                                                                                                                                               àÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ                ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿjJ  .  à                            m„  »z " 30JAN7915561929JUN78110337              Ì \9                                                                                                                                                                                                                                                                                                                                                                                                                          njJ ²   ?TÓ  N    €Ó  kQ    Ðz  ^    Õ˜a  Ì    Ðz  N    €Ó  ^    Õ˜a  €    Õ˜a  xQ    Õò`  Ì    s:2N  kQ    Õ¦c  Ì    s:2N  ^    Õ¦c  €    Õ¦c  xQ    Õ
c  Ì    s:¥K  kQ     s:¥K  ^ !   ÕÛ_        Ì "   s:M  kQ #   s:M  ^ $   šE¸Q  ^ %   Õò`  € &   Õò`  xQ '   €Ó  N (   s:    kQ +   s:    ^ ,   ÕÀ]  l^ -
   ÕÀ]  kQ .   »RÀ  kQ 0   »RÀ  ^ 1   »RÀ  N 2   ÕÛ_  € 3   ÕÛ_  xQ 5   ÑÊ\  kQ 6   ÑÊ\  ^ 7   ÑÊ\  N 8   Õ
c  € 9   Õ
c  xQ :   Õh`  € ;   Ô4Y  Ì <   Ô4Y  ^ =   Ô4Y  N >   Ô4Y  xQ ?   ÕR`  kQ @   ÕR`  ^ B   ÕR`  N C   ÕR`  Ì K   ÕR`  l^ M   ÕR`  € N   ÕR`        xQ P   ÕR`  kQ O   ÕR`  ^ Q   ÕR`  N T   ÕR`  kQ S   ÕR`  ^ U   ÕR`  N X   ÕR`  € b   ÕR`  xQ c   Ô4Y  Ì e   Ô4Y  € f   Ô4Y  xQ    R È  ^ g
   R È  N i   R©`  € j   R©`  xQ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ¹P   À à    W                    <¹S   À à    Z                    f¹Z   À à    a                    ä¹]   À à    d                    º¹   à                        è¸   à                       ºb   À à    i       $                     d   À à    k                    bº  À à€    ½  +                Œº                                        ¶º                                        àº                                        
»                                        4»                                        ^»                                        ˆ»                                        ²»                                        Ü»                                        ¼                                              0¼                                        Z¼                                                                                                                       Î¼ ¼ü¥ 2½ô¼&æf… Þ	ƒ„…‡ ‡     œÚ¼  Î¼€œ½¼  Î¼æ¼œ½T  Î¼Ú¼  ¦Ê5 ‚ ú‚‡ ò û¦¦‚
 Ž 
Ê5 ùÊU Ž ‚öÖ‚åÊE ¡ Ê5 @-&
¦ÎE ð&
&
¦ ¦ fÅ, &Ã‹DÄe æÎ f  ææÿˆ	‡Ã‹
æ æ)ÿˆÌ‹€ÊU ± ‡             @Àe TÐTR‰÷	
æ÷	ˆë÷	àè÷µ@ ó&‰÷°å÷	Pæ7¦å@ Àå &÷	HÀ”åÿ5 Œå      ð‹ ‰ÿ5 |åð‹ ‰€À€
÷	èçædå÷	šç$‡€ " ÷	øå1" ÁHåpl $ pl & p$ 1l  1l  q Á å
Ã ÷	¸îÙÖÀåÿ5 å°Š ×-úä ôÕ 0 ×-ìä ôÕ 0 ð‹ < 4  " ùÀÐä°Š ÿ5 Ää°Š ·Š¿äÃ¶äA ÁEûÿð( ÁU Ë5 ÁU Áeœ½W¢  W¢ !Ë5 @Á ÷	ªáÀtä( É‰
Aú°( ð ê  3(  ÷ <ä÷	dç÷	Ê
Œ
ý6ä ‡  
    
 !!!&!
À  €þ  þ  #
!ÿ  &
	 ¦
Ý 
 ÁÚ°ÑÞã‘Ñ÷	RéÀ Ñ%ÿÿöe  À
øÃe BÎ
é‰¡%À Ž
	0Àû	P´# ó‚	 Ó¤
ƒcB @ , , ‡÷	í      €‡ @Àe ÈÀe ÐR‰ÃXãó5  ‰÷	Rÿ†& ˆâ·ŠSã7Fã÷	@å† ÁÜ°‘Ñ÷	¢è·Š7ãW$.ÑÑW$
÷	¶ãW, W¬	 Ì 7
bðÁà°Ñ.Ñøâ‰
wôâÑ@ & ‚ ÃÒâ÷µ ´K3, þÿÂe Âe ‘ Àù 
À
ýÃ'±÷	Z ÷dð÷•Ì að 
÷	l
AÁe Àâ°Â ÷	þß@ A  ²áw  ìJANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECÆå €&æ=ÿˆ€ ÷	0  À ÷	|[ÁeÁS”S”S”€÷	 –%Â €÷	 Â
û–%‡ Á
 ÷	j[Àe0 Áe0 S‡ Ol|³    P Hœ Dì ˆŠDì üÐŠ‡ @Àe TÐTR‰÷	âB ‚ò5  R7
¸ÿþˆ\Â„ÃŽÁ÷	~8‡ð 5Á( ÷	*L/‡7’ÿ      ÐÂA  Ð€ ÷	~ÿ€
D ÷	tÿÐ• Ð
ÐZáÐXá
B   Ð ‚& ‚  ÀÁ<ÿ÷	Ž‚‡ ÷2ÿ÷	Hä÷Õ€ îÂáòÕ€  ÷	”êÌ
·Šáÿ5 á÷	"ä
ÃÝNîÃÃeê°“
÷	”þ÷• ëàÿ5 àà÷Õ@ :îõ @÷	˜÷Å@ (îÀÂàð‹ €÷	Úã·Š·à@ Á( 5
 ÷	`äw .ßÅˆàþˆÃõµ  
Ì5
 õÕ@  õÅ  ‡ õµ@  9w!ºí7
´íw!¶ï7
°ïw!¢ë7
œë  œ ÁÁÁe
 ÷	úã Á* ÀÃ÷	èãú Á2 ÷	ÜãÀ þˆ|Ã÷	Q‡ ÅŽ?þˆŽÃõŠ w Ôs‡ Æª Åàß÷	ã÷¥ Lí÷% Fí2‰÷	 å8÷‹4í €ô‹! Âe ‚€ð5 @ ù7²ßÈ

< 4 ÷	RàðE 0 'ôŠ! ÷	4à7      Šßó‹ €ôŠ! óU @ ü ô ´Š! @ Àå
  
&ó‹ ÷	 Ö÷	ÀDß
ÁÝ’ìÁpà°  ÁžìÂœìÁ
, † Â7, |ìðU   p w ¢Þ÷µ Oç÷µ ß÷e ßÀÄ«ð Á˜È˜p` HÁ £Â ÷	>Ü
÷	jçÀÆÞÁ¾Þ  À¾Þ÷	Nè÷- ì¢Þ	À®Þ÷	Pß÷	è÷	¶á÷Å€ îë÷µ Ùæ÷Õ€ àëÀ|Þ&
ÎÝiÞl æbÞl v ÷	ß° ° w ÖçŠ¬ 7†æw„æ÷‹“æ€÷	 ÷	ÐÞÁe w†æÑw‚æC bÝ‰ ÷Þ&ÞÀ5 À5 À5  Š
Ý 7LæwJæ÷	ŒÞÁe wBæ
BÒ÷µ 1æ‰``wþÿÖÝ·ÒÝÑw æ÷	þß‡ÀÊÝâ7" ÂÝÞ÷ë´Ý·Š­Ý
ÁÝôåÂòåf–P ÒÜ÷	²ã7Æåw      ÄåÃ£÷µ Ñå÷5 †ÝË‹ó ÀÄ«Á £Â ÷e pÝ÷	ÄÚÂÈ« 
ÀÔ€d‹b@#ã‹7
zå7
xå ‰ 
ÀÝ‚å·â€å€€è 
7
tå7nåÃråÿ‹låã( 
ÀÔ
ÂÔ‚
Á`@7 6åw 2åã(÷Håÿå @å·`$åwå÷’å÷ åÀåÁåÂ"åŠ¬ ‚ üÛæ ÓòäÓðäÀN ‚Nã€·cÞäwØäÎ
³•ýÿÊe ÷êä&VPà7
Ää7
Âä÷µ Ïäw Îþ °Û@Àe 
Ðe€ÐTTR`÷	žÜ÷	â÷	tßÀLÜÈ5 ‰÷	úÀ ÷	¸Þõµ  C@Àe D×¤ A×¤ >Â Áš£À÷ Ü÷ÜC÷	VÙ@ Á( ÷	´ß5
 ó‹ 'Ëµ Óµ !Ó‹ÂÃÂÁÎÛ÷	æÝ†¦æ÷	å‡÷	ÜÞƒ‚‡ï·¾Û÷¼Û@ A  ÐÚ‰À¤Û7 ’Û÷	@Ü      ÀˆÛ  ÀˆÛÁvÛ÷	å÷	ðä·ŠmÛæ¼è÷	X÷t‡·Š_Û7bÛ÷	LÝ† Áà°÷	²à€æšèW$.ÑÑW$
÷	ÄÛW, W¬	 Ì 
Ž
7
bèæ¦÷	\Þ÷	 ÛÑÑÛ‰ ÷	|äÁÜ°‘‘ÑÑöÚ‰÷	~Û‘


ÑŠ
BÔ
Â
ý÷ŠÑÚ÷ŠÍÚ·
ÎÚ÷ÂÚ#÷	bÛ< 4 Á¼Ú1" 
ÂÝ›ÚÃ˜ÚÁžÚBl Cl BÂíÌâÃíÊâ‚°`$ ð`& p$ 7†Ú‡ & ªÙÀ¤£Áè¸BÁe* W ¨¼‚ˆ€÷
‡  &A  W  ‰C2÷	œ ð ð,Ú Bœ8ÉA ÁEüÿÁÁÁBP° õµ  ðU @  
Ã ÷	8ãW Ú®A’÷	R ÂÚ®&”Á
ý@ñ ‡  ÀÌÙð ð Â7
åÁ Áå ÷	0 ÀÚ®Â ‚
Â
ýw dÿCÁÁÁe
 f      ÷	¸Ö7‚Ù‡ @Á ÷	ÔR‡ C Eæ Á”4AW  =‚
ÂÔÂ À ÷	ŽRÁeU¿ 
@ÔÀ  ÿÿ)€ '‚@”A’Á5@ ÁEüÿAœß°ÁE ÿÁÁeà°ÁÙ@`Á÷	rÖÓ$Î
ÊÖõµ  @ Á( 5
 ÷	¢Ü‡ ‰À ÷	f ÷ÔØ$÷	tÙ7ÊØ·ŠÉØ& & ÷	ôÚ‡À´Ø÷	dÙl 6l  NòÀ˜Ø÷	êÛÀ–Ø÷	FÙ° ° ÷	ÿ÷‹…ØÀ|ØÁ* ÷	2Ü‡ &@Àe ÐTTTR	÷	šØ÷	Þ÷	pÛ€w ÈÚ‰ÀBØð‹ ‰‡ C gæŒå&æ Á”=
ÂÔ9Á% 6‡À ÷	RQÁeU¿W¢ÿÿ),B¤*‡@”A’Á5  ö &f¦æ 
÷	`Úƒ‚€6
 Á5À ÁEüÿAœß°ÁE ÿÁÁeà°`À÷	ÕÓ$Î
Ãá‰–%Öµ€ ÷Å€ úäÀ–×
& &       ÷	<Ø° ° õµ  @ 5
 Á( ÷	&Û÷‹X×‡  ‰ 
÷	æþÀR×È5 
÷	 ÿ·ŠE× 
÷	ÿw ºà‰  –×
& & ÷	<Ø° ° õµ  @ 5
 &¦fÄdÀÅm`À÷	 †ÄZÀÅmVÀ÷	 ‚€‡ !‚CaÃE ß¦ÿÂ `À  ‘¤‚‡~¡ ‡ ÅåèÄÔå± ÷ Q¤fàŽàA&€’Å	 
Å
‚
Â5 ö
 &Á
‚
Ê
Òô€’
ìÅ  Œå†„
!ã¶ ‚ã—t Âe	 BáÂà€
¦÷	 ƒ‚¡ ‡ Â
Ãÿÿ–%± ‡ …WuüÿÅ@aÂEðÿwÂe Â DÂ æŽàÂwƒ`PòuwH‡ f&fÁÿÿ÷	°ÿ…„‡ Ä6¿À.¿°"  °,  °,  	Àe Áöÿ·Š«± ‡ ð5        ÁÜÿõÁœ `	¼ ¡ ‡ Áþÿè
Ålõ5  Áüÿ± ‡ ÁÜÿ òµ  ö·¬ c¿ò‚÷‹^¿p÷5 4¾lÄ’ ÷	€g‡fU%
 Õ¦ÿÕ·Ä 
ÕŠ
Añ•    Äe òµ  „
²

 …&Äe uýÿ5   1‘ ñÿÿ &ð5   $÷	N ,‡… õ ÷	@ %‡… õ Ö„÷	œ‡…·
š½·
š÷e †½w€½Í|½õz½ ‡ ðµ€   ßåƒ Ä  w ¸ý–%÷	4Áæÿ± ì¦ÂíÒ½ƒ×r  ÷	Ôþ‚‡ò5  õU   µ  r ‡ À ð5  ðU  øµ  ÷	P ¡ ‡ Áúÿ± ûÃ A Wt æv½Nm æl½N€÷	*u –‡ A w ôÄØGæ@ 	Ä„Eæ! æ Ä¶Cð  ñµa   ±“  &Á`       ÷	¤‡&0 ðe`  ÷	ŠÖ‡ ÷‹‘½À4·Š‡½ì&÷	Æåfñ5€  #@÷	îA ÷	¼„†w ¦ÿô5  ÷	„Â.Ÿ`¦ÿ ò- †ò  ÷	l_ ¦ÿ÷	hñ5 € ñ ùÕ  ÷ n½wl½÷	š&÷	d÷	 ñ5  	wR½7
R½÷	V&÷	F_ ¦ÿ÷¥ §
w2½÷¦ÿ0½÷	4&÷	$E õµ  ÷ ½w
½ÅX ÷	8&÷	þE 5
 Š÷	6 ÷
`»1
 Á` Àb[À%47Še¼÷	&÷	æÅ ñU   w ü B f÷	\D B ÷	. B ÷	$ _ ¦ÿÅ`A-
 E
 úu
 
 À’ w D
Ý Àâºw îûñ ÷ P¼wN¼÷	p&÷	F&÷	ñ ú‡ ðU   øµ@  ðE   ÷	      Ðý‡ ñU   fÅÅ ÄœÔŒZTÔ ÿT TT Ã 
Â~æì ÿˆ‡&÷	â_ ¦ÿ·
Tñ5  *ñ5€  @÷	Ô	÷	r _ ¦ÿÅ@ ÷¥ ÷¥ ÅL ñ5 B ÷ Œ»wŠ»w ˆ»÷	¶&÷	|ñ5   Eœ Wq  Åm\ºA- E úñU  w ¶ýu  ÷ß¬¹¢ÿ_ ¦ÿ÷	1
 _ ¦ÿ÷	A ÷	
‡¦ÿ€ ßŠ¨ÿßg¦ÿ¨ÿ÷	b Áf9
÷	&¨ÿf€÷	 ö€ ÷	
 ¡ N ‡ À & 0
 ðE   ó5   
÷	zþ÷	n€ëÀ‡ ÷µ ú8&÷Å ò8øµ  æ¦ÿæ¨ÿ÷	È	‡ 3
 õ¥   	ßÌ¸¨ÿð5   
÷
ì8÷	öð†Ÿ¨ÿŸ¦ÿ‡ 7Fº÷¦ÿDºwBº÷ 4ºfÅ€÷	b…&÷	&äf      @&
æ¦ÿÅöÿ
Cß¦ÿ¨ÿBÁ€÷	,¦ÿ5 `ñ¶
 s`€Ÿ¦ÿ·Jp  é÷	ŠŸ¦ÿÖ·å:‡ ñU  ±Š ·
Ö¸f÷	lþH‡ð5 € ñ 
÷ œ¹wš¹÷	È
&÷	’÷	.ýA ÷	²¨ÿ€ 2
 f
€f€µœ 
€'µ €÷	µ€µ
€&÷	P„ÁÎWfÖ‹_€¦ÿñ5   ôE 
 æ¼Dæw |ñU   w ^ý–%ù¦f÷	¾	†Á%Èÿ&÷	Øõ± –
‚‡ fÅe? Wuúÿfæ¨ÿÀ .ð5  *øµ)  ÁÎÿ± w Þ ÷	l¨ÿ†w Ì
ÅÝ#7Åe 
ÁÝ7Aá- ƒÁâÿåw ffæ¨ÿæ  Áe &
Ã ÷	Ô†–
w ‚&÷	Ž¨ÿ„5€õ• €Îô5€  ô5  õÅ €õB·€5m €õ4·
€u‹
€      ¨ÿÂ€RŠÒU Ê• Öw t &æ¦ÿ  ÷	¦ÿÅ ôµ  …
I‘‘ŠÄ 0ÄÜ Ä	Š Å` I‘‰ŠÅ`Ñ‹Q‘Ñ	
ô & …
Iß¨ÿ¦ÿ_b¦ÿÁ `
Ñ …Wu Åå Q
Ÿ¦ÿÁ@€…Ñ Äà5Ä
u ÄU ÀÄÑ5±
üÿÄ
u ÄU ÀÑØµÑÖµÑÖµÑÔµ
ÉÐµÁe Q  Q QÅ@€÷	L
÷¥ Š5Å€€ÕÂµÕÀµÕ¾µwÚ5Åp5Åg¨ÿ· ~5Â\5÷¦ÿr5¡ Ÿ¨ÿ–‡ ÷	Ê†w š& Éæ¦ÿ&÷	 õ„†w š÷¥ !w ”ö¦ÿ Ÿ¦ÿ÷• 7Š·$7 ô5  ÷	bô5  æ¨ÿæ¦ÿ ÷	Vý‡¦ÿßÚ¨ÿßg¦ÿ¨ÿŸ¦ÿ÷	.ÖŸ¨ÿw 
Ÿ¦ÿŸ¨ÿ~æ¦ÿ¦ 2
 '÷	w‡ôE        ñµ  ôU  CÃE ÿsÃ% p‡f÷zÅ0`7ŠsUÂ~ô5  ÷	¾ô5   V4Š ´Š …•&÷	„ßB¨ÿßg¦ÿ¨ÿ7 47
47
4÷447
4ô5  ' ÷	¬  ô5    &÷	¦7|³„õ~´€µ`€õr´
€u‹
€õÕ €Å ty ü•  ôU  7 À÷	€¡ Ÿ¦ÿ‡ ²  ÷	ÂõÁ¾ÿÁôÿÁÔÿ–%± ëf÷	"¦ö¦ÿ ¦ÿæ`æ=ÿˆ7\÷r7  ^7 Z7 ^‡ æ¦ÿŸ¦ÿÁ.)÷	îfæ¨ÿ¨ÿw€7
÷Š÷	T‡õÕ €¦ÿ÷Õ ÷µ þÃö3
 Ÿ¨ÿÖŸ¦ÿ‡ ÁÊÿ± ùÄ¨ÿŸ¨ÿÁ%Èÿ÷	zÁÌÿÖðw °æ¦ÿß¦ÿ÷Š¸·Š³·Š¯×­« 7Š£÷	hk      ÷5 ŽcÀ†øµa  a÷	Þ@æ¨ÿ ¨ÿ÷¥ c2
÷t ê³7 ê³7â³÷	þŸ¨ÿð5@  0ð5  ,æ¨ÿß<¨ÿ"ßg¦ÿ¨ÿæ¦ÿ&Á2÷	Ö¦ÿw`27
2÷	€ú*‡¦ÿ÷	Ð ë€Ÿ¦ÿ÷	Þø÷	¦øŸ¨ÿ÷	†ø•  ÁØ÷	 ð5  ð5  Á¾÷	þþŸ¦ÿ‡ ÷	üôúŸ¦ÿŸ¨ÿÅ Å ÷	òöîæ¦ÿß¦ÿÁŠ÷	²
÷	jæ¦ÿß¦ÿæÁr÷	,Ãwß0`¦ÿ÷	 Ÿ¦ÿ÷Å ZŸ¦ÿ‡ w x
·ŠFæ<	w6¦ÿµ`5Š`‡ w&ôæ¨ÿÂ/Ÿ0`¨ÿ÷µ 1ß1¨ÿø÷Å 
Å÷µ þõ¨ÿ õ'¨ÿ õ5  
ÁÞ÷	þ@Å ÷	*öõU  ·ŠÂ0·
Ê0÷­º0·0‡÷‹°0f÷€ 8²÷¨ÿ4²Å€÷	b…÷	 Ÿ¨ÿ‡       ÁŒf÷	D
¦ÿ5Š`5
`Áp0	÷	.
¦ÿµ`·^0‡ ·V0úæ¦ÿ ÷	
¦ÿÄ^Põµ `	&÷	”€&÷	ÄÌ‹õÅ ` Äe T
`ŠL`Ÿ¦ÿ‡  ôÿÿ ÷æ¦ÿ¦ÿõ"`õ, `õ, `õ `± Em `î¡ Ÿ¦ÿ‡ ³
 ± Ä
Em Åå `…fWuûÿ_a¦ÿ…ÅÅEÀÿÅU `¡ ‡ &f ÷	ø¦ÿ€0‡¦ÿ… &
ò5 @ N 5
 ÷v ßmp¦ÿ÷°PCÅ`ÄJò5  ÄDÅ<÷	€ÿÎ÷	dÿ‡Î
û–
‡ ± ü&
ìÄe „&f ÷	¼¦ÿ€÷%ßm¦ÿ7áì&f·
ä·
èÄØ·m Ò·ÓÌ
wûÿa¦ÿÄ€w ” ”œ …Î”¡ ‡ €Å ÷	ô± ø± L4 ¡ ‡ x p       	
‡ Á ÷	œ	†À”ð &÷	ÜòÁ‚Np p*  p,   ÷	¼ÿ&÷	à‡ ÷	žÿ‡7 Î¯@Åe ÷	ü 0
 À%”Á ÷	x¡ ‡ ÅE€ÿÅU 	ÅÅ ÅÝ(¯Ä¦ÿfÁ ÷	,‡0 0
 pÑ Å p‘ Á(D4¬  ƒ0í  õ4ì  H	À(÷	ÿ÷‹Ð®·
Ê®Å"÷	j ‡ &÷	ÍfÀ( °# ú5l  7Ž®Á ÷	À@î‡ ÷ ì®ñ5   ÷ Þ®ÅF Å4 Å@ Å: w
®w®wº®÷@Mº®æâ ÿˆ‡‡ ÷%ÿÿ.­æ ®æž®æž®æœ®&ÄMôÕ . &÷	^ôÅ . „e)·|®·v®·n®·h®ÏßÌ¬¢ÿÆ4æcÿˆ&
&
æiÿˆÀœ&æ?ÿˆ& &
…Ä ÃÐSÍ"f fæSÿˆ      
È ÷	&
&æÌS¦  öe  ¶  æGÿˆ&
&
&
&
æÌS¦  öe  ¶  æÿˆ  ’€#<u~uL¼ÁHLæ &
æ+ÿˆæcÿˆÁe fæ'ÿˆÉ5 Á Læ æÿˆæeÿˆñ& áæ1ÿˆ&÷	tÚæ æÿˆæeÿˆ‡ &ÿˆ†&
æ æ
 æ æÿˆæ æ)ÿˆí  ‚ r  r
  & ÿˆK‡ Ã ³   ó  & ÿˆ=‡&fÁ  ÷	~ 4‡&æ?ÿˆÃlK3* 3, Å0 Có ÿ ó¤ÿ ÷5 6«æ fæiÿˆ‡÷	v €ñ   s s æÿˆæ æÿˆ‡ €ñ
  ÷	Öÿæ3ÿˆ÷Üªß-Öª¢ÿ± À bD± €, ú‡ÐHà`	!Hà
‡ Ã ÁbÁDÂƒ û†È&N`Ö       ÈÁb¦Žb b"€p ‡ ! ÷àÀXªwf­ÎE ÿ·^­÷ ðFª‡ &fÁdJñ5 . 	Áe f&
&
æKÿˆ†€æsÿˆ@ ð•  ÁeúÿþU   þU   ¦6 €NÁJÁe ÷	:± ù	0 D&&ðå    °  ˆ` à `àX©àZ©àX©€fÁÎIð•  ÉÁe ÷	ê T&
&
&
&
æ†©æ‚©æöU&&
æ æÿæÿˆ†æ1ÿˆè:À€I° f¦æ&fæè¨æê¨æè¨ÁbIÁe ÷	˜ &‡ù	0  ñE , 1Ü , 0Š ?<I€7¦¨7¨¨7¦¨À7v¨7v¨7t¨7r¨€€ ?
IF €7p¨7r¨7p¨Áw@¨wB¨w@¨€÷	Pþw fþÀe H1 	‡ @± 	q Àå ¡ ‡ fÁ¦H      @Áe& ð•  æœUÿˆ÷	¾ÿw ÿfÁe& æcÿˆ@9Þÿq Þÿ	
q Àå æeÿˆw ¤þ&fA Áe? Wtúÿ÷	 †1
  
± 1 €‡ æ°§f÷	`÷	´‡÷	Vrà ¡ 
÷	²ò†ÁÌÿ÷	@²
 ± …·~§‡ &f¦@ A Áe? Wtúÿ÷	 ‚€‡ æV§÷	r` ÷	´·F§‡ æ@§&f
÷	î(†÷	zÿ*‡÷	â'‡÷	¶°Š ð‹	 ÷	ÒðÕ  &÷	þ÷	àÂ€GÊ‹ðÕ   ± ÁÈÿ÷	 ²
 ÷	:÷	r  ¡ …„·Ð¦‡ æÊ¦&&fÀ÷	Bÿf fœ …f÷	f‡÷	<Â ÷	÷	(÷	*1  ¡ ÷	<²
 ÷	 þ± €€…„€·l¦‡ æf¦&÷	ôðŠ   ÷	2` €·H¦‡ æB¦&&fE f ÷	Tþ± ‡@f      f fœ …A Wtúÿ÷	Ær` ÷	Â–‡÷	X¡ …„€·ò¥‡ q ÷ææ¥÷	v  ·Ú¥‡ 
Ew
 Äm ¦WuöÿÅEÀÿ‡ ¦÷	r Á% ÷	Ì‡õ÷	<¡ ‚‡ æœ¥÷	äý‡&f÷	Ìÿ†€÷	*þ± ÁÌÿ÷	ð	 ° ð•  °  ÷	¸¡ €€·V¥‡ æP¥ff÷	Üðµ  & ÷	î²
 ²
 ²å 9÷	ðµ  3 ÷	bý6‡÷	 ° ÷	ÂðÕ  &÷	ôû÷	Ððµ  ÷	ÂdEÁÈÿÊ‹± ðÅ  ð ÷	V÷	÷	v²
 ²
 ÷	Hð•    ¡ ……· ¤‡ æš¤f÷	(ðµ  ÷	~ðµ  ðµ  ÷	ž	 &  ÷	ý€ð ÷	â Â ÷	¶ ·H¤‡ f¦&÷	ò²
 A L Áe  D÷	B       ‡Ãð‹ ø°Š f÷	& ÷	” ÷	Z ÷	´²
 ²å ¡ „‚Ö‡ „‚‡ ÷	t!± ÷	h5,  öð 	 ó¬
 ðÃ5,  êðµ   æ¡ ‡ fÂ Áe ÷	 ‡ f÷	"ˆ÷	° @&÷	ˆ‡ fÁe f÷	ø
÷	î° @÷	àˆ‡ &f÷	ôB ÂMœÂe  ÷	lý†€÷	Êû± ÁÌÿ÷	‚ÿ÷	¨° ° p“
 p  0
 ð	 p  0Š 0Š 0
 €‡ ffæ&÷	ŒÀ` Á% ± LÁå ÷	Rð‹ óðµ   Â,Cò5@ . éðµ  ÷	ðâ‡÷	 ÿ÷	"÷	RðÕ  &÷	zù÷	V ÂöBÊ‹Ï÷	úþ÷	üðÕ  ÷	: & f   ÷	rà ÷	êúÖµ ÷	ÎþÂ ÷	šþ¡ „ƒ…      ‡ ðÅ  f&Ä´ ÷	0ôý†€‡ ðµ  Ä´ &÷	Öó€õ‡ æð¡, †÷ä¡ä¡·Þ¡÷‚ÀÔ¡·*"ÀÊ¡Á% †€l @àrà w`"7²¡w`®¡·"· þ!wàú!¡ ·š¡‡ æ”¡Ê
 ‡·†¡ùƒ Ãm|¡ r` Àp¡ƒ
7f¡Êr ƒ `ƒ"Ý·T¡Ê¨!òm¦! Õ÷	Ö æ ÷	Ì æ Â°AÂe4 ² 2œ	  òžA ò `  ×t ò 2  2œ
  æú 7 ô ¦ÿˆ	†÷%ÿÿh¡  &÷	²øô·Ø ‡ &æ&f ÂíÐ¡ Ãe ×týÿÀ0¡÷	<â…„ƒ€‡ f&f& Ãe ×týÿÄ  ÷	Lá€
‡ðŒ¡
 ðˆ¡ ð` p
 …„‡ fÀæ@70 `  
v
 7`V À€v ‡ ÂÆ@·0 @ Â `‡ &æ æ 	&æ       &æ æ€ ·5‚ ÀœÐŽ@Ð 

ÐúŸ

æÊ ÿˆ†÷%ÿÿl &÷	¸÷æ&÷	ØöÖ€‡ 5
> f D yD yD yD yD> yµ> Ö‡ 5
> f D yD yD yD yD> yµ> Ö‡ D&æ?ÿˆ†÷	Cæ3  3   ææ9ÿˆ†÷	ò Dô   ô  4

 &æuÿˆ†÷	Ò E#Â~ß ÂE à—túÿ´ µ õ   õ  4

 5

 fæuÿˆ†÷	– &æuÿˆ†÷	ˆ æ:áækÿˆ†÷	x †÷%ÿÿF7æ1ÿˆï÷Nß÷8 Pß÷ ßLß÷	V Å ÀDfÌ	Å Àù	  ÷"ß÷: $ß÷	0 ƒææ;ÿˆæ æÿˆæ æ!ÿˆ†÷	 æsÿˆÄÒùˆæ æÿˆ&
æDÀæ@À¦  öe  ¶  æGÿˆ      ‡æ æ)ÿˆæLÀ&
&
æKÿˆ‡ v# · lÞv v ÁÀÕ&‡  @@””””””‡ @ÐJÞð þÿÈ@Þ€…¡ ‡ Í"Í%ÿÿfNo Î
@È‹ö ’þ‹  ö ¾Ÿ    ÀUÿ †È‹€
ñQQ  ÕÖ‡ 

U%‡ ÷ÎÝÐÝÀÀ÷ÄÝÄÝÀ
À&fÅ À÷	¦ýN÷ØÝÅRÀÄÀ÷–ÝÆÝæ æÿˆ&
æÀ& &æGÿˆ†÷%ÿÿ‚æ1ÿˆî÷tlÝ‡ æ æ)ÿˆæÀ&
&
æKÿˆ†÷	|þ÷	nî‡÷^ÝÄ ÀÅJÀÔ÷	`þ…„‡ æ æÿˆ&& ÷	8ÿ´ €÷% þÝÎ
÷%r úÜw òÖôîÜ ôêÜ ÷âÜÍ¥ f Î%ÿÿ&f¦æfþ	
 …ƒ‚€Ö„‡ Í¥ û‚f èæ       æ 7þ
÷	 ÷	¨þw 8þ&
÷	NþÖ@À%ÿÿ
÷	þ‡ æ æ 7ÜýQ&
÷	$þÖ	
÷	lþw üý÷CPJÜ÷CHBÜ÷CC:Üæ æ 7¦ý÷	ª 

Ó &
÷	äýÖ
ƒ÷	*þÆe w ¶ý÷FRÜæ æ 7pý÷	t ÷	dÿ÷	€ é÷FXäÛæ æ 7Pý÷	T &
÷	–ýÖ÷	\ Ö÷REÀÛff æ …÷	° –%…÷RA¤Ûæ æ 7ý÷	 &
÷	VýÖ

S  Õ³€Æå ‰æCÓpÛ&‡ @””””””‡ æ æ0 7Èü÷	dý÷DÛæ-ÿˆw èüæ æ 7¨üÍ%ÿÿÍý  ÷ 
ÛÕæ æ 7‚ü÷	¢ü÷	ýw ªüæ æ 7jüõæ æ  7\üf÷	¦üÖ÷	tü÷	ìüw |üæ æ2 7<üf÷	Zü÷	Òü€È´Úw \üæ æ" 7ü      ÷	<ü&
÷	büÖ÷	¬ü@ÐŽÚÐ‹ÚÐˆÚÐ…Úw *üæ æ$ 7êûÍ%ÿÿÍ

Õ&
ñþÿñüÿŽ
÷	füÖæ-ÿˆw ìû÷	Ôûìæ æ& 7¦û&
÷	ðûÖIß  Õ÷	4üw Äûf æ=ÿˆý ¡ ‡ æ( æ* æ, æ. ¦ö  7Zû÷	öûÀ$ÀA””””””w tûæ æ\ 74û÷	TûI÷	Öûw Zû¡ ‡ fE õü …‡ ÷J „Ù?÷L |Ù;÷N tÙ7÷Z lÙ3÷P dÙ/÷R \Ù+÷T TÙ'÷V LÙ#÷X DÙ÷@ <Ù÷B 4Ù÷H ,Ù÷D $Ù÷F Ù&&
D 7
Ù7Ù7
Ùw öû&æ D ô5@  
7 ôØ7$ ðØ7îØw Ðû÷ÿÿäØ÷ úâØw êû&÷ÂØ0À&À¬úÿÿ ¡ )æ æÿˆ&
&
&
&
&&&
æ&À&
Î• æ       &æÿˆ÷‹˜Ø&
æ ¦  öe  ¶  æ“ÿˆ± €‡               æ
æ
*æ
+
æ2æ3ÁE ÿæÂÎE ‚w	ª…ŠÂ ‚†Á€Ð•- ŠƒÐŠÂÕ0 @A÷	^W 	 ƒÁe `fÃŠ
ÀÂ€Ã€ÂE ÷	Ôÿ”• ‡ Â
 Â w	B
”Å¥  üÅ¥	 ùÅå0 B¡†€÷	ê Aa”ôœÿÿ‡ ÷	 &÷	 &÷	
 ’•’•€‡ @Á( ÷	Ðf€
  Àe	 ÀeÉÿÀe  Àe  ‡ w	h  Ä 
Ä
ýp p* CÄe( ÂL‡ Ë‹Ë¥	 Ë¥ Ë¥  Ñ’Ë¥= Ìð ° ± ‡ LðÕ   ƒ
Â
âÌL àp & 
`„!÷	Z CÃeÇaÀ
Ãe ûÃ’{ ºa€¡ ‡ pcŽb¾b      xbc6c            



 =ÿ]/;[:, „Åêa!…
£E“‡ Õ‹ú„
òÃ  +†¢z (‚¢a ‡ÈÅ  ¢Z  ‚¢A ‡Ã ¢9 ‚¢0 ‡Ã  ¢* Ã ¢. Ã ¢$ Ã €
‡ €° !†„
„à0 ± ‡ €÷	‚ÿÃ% ï÷	xÿÃ% ê ÷	jÿÃ%  ùâ@‚
w Øþ„ Û‚
÷	0ÿÅÖ…&„à&
ƒ÷	ƒ†÷	" × ÿ ‚„—¤] ÷	 ÿW! ç¼À ÚÄ
Ê¥* Ö„±‡ @&…&
„àƒ÷	Ìƒ†÷	Ôÿ„À€¢- €
 ÷	Îþ×  ùƒ”Å% ¯‚
÷	šþCÃå ‰Ã
‡Ã
…ð„  &
€÷	šþŽ
Ãå úÃ
Ö%
 ßÀ
 ÜŽÖ
ÙÐ¥. ÖÖ%
 ÒàóÃ% Ì‡Ã
È¥* ë      ÷	RþÃå û ä‚¿w	ªðÅßÿ 0
 0
 
( È¥ È¥ ± ‡ 
* ÷	 Ãd÷	 Ãd÷	 3:   : ] 
]&¦fÅ”`ÁU%Î¤Äd„àðÔ Ãe DB Å”`Ó‹Ä„`÷	Ö…‚„Å¢‚
÷	Š‡ ° ƒàð ðÕ  ÷	ª
Å¥/ ÷	  Å¥= ðÕ  ‚
Á°( °* ‡ ‚
÷	<&f&
ƒàRÊ¥- ×  Ê¥N ò¥O  ‚
‚
Ž
ƒà¦÷	T‚‡ô5  â¥- 4
Â
ƒ ƒà÷	4,‡0S Î0S ô5  !0C  ¡ ‡EÎS¡ EÎúCÖ…‚ ÄE W¡/ ªW¡: 
‡ Ö…‚W¡= W¡, ‚
÷	t öÄ ‡ ñËï‚
÷	^ &fÅ ×¤ „àÄ¢†Ä’&•”      Ä
ýÄ’„åŠÄ
ýÃe …‚ÄÅææòfã¥ ÎöfC
„à…Þ	¾‡Öƒç& l „Å4f!£„
£ý£Õ‹ü„
ðU¥E“Ö‡ []=:/,  Ò¥* „ û‡ ðÕ  ‡ ¦æ !Å‹€ÃÅE€€Ã
&
Ž”Ã
Ì5€ÿ¶” …%èÔþÄe ƒ‚ ç± –5‡ TI  &æ  
 †€m ¡ Î
øæ f
ÀAN ‡ã€
ö
 ÷–%‡ &æf… Þ	ƒ„…‡ 
Ë w	€ &Ba
—¢+ —¢- 
‚
Ä
Ê¥# ‚
Ë
å¥. ‹
Ä
Å æU¥
Ä€”Àå0  ‚Ë‡ÎÀb‡Ë‡Ë‡`‡€Î	Ä
éÁ¡ €€‡ ± û&æ¦ff…
 Þ	‚ƒ„…‡ PáPáPá  PáPáPá  PáPáPá  PáPáPá  PáPáPá        PáPáPá  PáPáPá  PáPáPá    PáPá    PáPáæ¬æ=ÿˆAA  Õ% À²æ À¬æ 
—r
 Âe0 ‘Ãe0 ÑÎ
ôÖ… ¡ ß	”i†æ+ æ+"ß	žŒÂ ß	NzÂv¦  ‚ ¦Ñ•  ƒ~‚ß¬ŒßP Žß	j†ß¥öÿ˜7ß%CRž3ß	úi_ (½À¬ß‹™ÂãÂ%P 	ÎeP ¦ÂP ß	ò‚ß	òÂåP Ò×§™
 ßå šßšÖ
ÂŸ šÂšÖß	òß	úi… ¡ ß	”i†æ+ æ+"ß	žŒCÂ ß	NzÁv_  Œ_ Žß	dj†ß	úiæ æ"ß	žŒÃ
çÕß	Diß	úi… 
ß~Œß Žß	dj‡ æŒæŽæ˜æšß~Œß Žß	djŸšŸ˜ŸŽŸŒ‡ ÁTI
AB_ žŸ  _žŸ æ æžæœæÿˆn‡      ßœ„ß ‚æ€ÿˆg‡æ æ)ÿˆß¥ ˜ß¥øÿ˜ß	¢j± ‡ ¡ ‡ ß ‚æ€ÿˆM‡æ æ)ÿˆ‡ ß"ß	¨jß ‚æ€ÿˆæ æ)ÿˆß¥ ˜ß¥öÿ˜ß¥˜ß	¢jß ß	Zi¡ ‡ ± ‡ ß"ß	¨jß ‚æ€ÿˆæ æ)ÿˆß¥ ˜ß	¢j± ‡ 
¡ ‡ ß  žÁ˜‡ 
"ß æüÿˆß% Ÿ
 
‡ @ û  :æ ß	”†_ h½ß	Œiß¬ŒßL Žß	jß	úi@ 3
  À¬È¥* óÿÿ  Ð‹È‹¢0 ú‡¢9 ÷‚ß	Ž`ÁôW  ñ‚Â €¡ Á
û³P  ç… ßÿÿÎ
Îß	pÂ ß	NzÀvÁ’ß	xnß	poÀxÁ”ß	„nß	poÀzÁ–ß	„nß	poßÊÌ
Ð
J‡ ßÿÿÎ
ÎÂ ß	NzÀvÁx
      J‡ ß	Jkß	Rkß	Ôk… Á”À’1<  B \ Á–ß	 pß	æl:ß	poß	†oßÈÌ&Dß	4nÀ„ß	poß	†oÁ–ßÊÌ—   ß	äo 
ß	hmß
Ìß'ÌÈ÷Á–ß	 pæ’ß”’Ÿ”À”ß	 pß	ªlßJ
Jß	pß	’o‡ ß	Jkß	RkÁ’ñ‹ €ß	äoñ•ÿÿ ß	Ôk… Á’ß	0mÀgÐ
Ð&Á”ß	0m€å€Àe
 Ÿ
ÐÁ–ß	hmß
Ìß'ÌÈã‡ Á’ß	0m&Á”ß	0m€eÀgÐ
Ð 	 Àå
 Ÿ
ÐÁ–ß	hmß
Ìß'ÌÈáßÐß	p‡ ñ'Ì ñ'Ì @ž ql   Àå: Àå Àå	  
‡ Àe
 û‡ ÀgJ
Jñ'Ì À$ß	p!ñ'Ì   ßÎf Ž
Ÿ%ÌŸ
J 	 Àå
 Ÿ
JÀe0 9 ql         ‡ æ&Ã’Ä”ó ô € ß	:nô Àß	:nÀÁß	0m&ß	0m€%
Ÿ
Ìß'ÌÊðÂ  Â @Â „ƒ‡ æ&â&
f¦
  ì
 ‚
p  W¤0 	‡~	W¤{ ûW¬ÿÿ} ÷v
 ‚Ö‡ ß@ ÈßÀÿÊæñ   &
1
 1
 ð‹ €ðµ  ñÕ  ðµ  ñÕ  N ñ•  &
&
‡m Î ö    ƒcñ ñ
 l Ã
ƒí ñ œ ì ƒ
Öƒeñ ß ÈßÈœ ñ ß ÊßÊ‡cñÿÿ ql
  ñ  ql  ‡e W® - W® J ‡W® { 1‹ ƒ‡ 1  q
  ‡ q  ‡ fß	po‡ ñ & 
ñ‹ €€
ñµ  9œâo 	À&Êo@ž €e      9œÐÿ €‡ ÎoØo{ABCDEFGHI}JKLMNOPQR+-ñ‹ ñ•  ‡ ñ‹ ñ•ÿÿ ‡ ð‹ ß	äo‡ ß	òo‡ ßE €L‡ ßU €LßPN‡ ß	¢kß	ªk&ß	„pß	pß	¼pß	¢kß	ªk&ß	„pß	pß	ÀpÀâÁzßPßU Pß	Ê|ßJ
Jß	p„… ÄÒœ ñ  Cœ ô æß	¶|Áâ±• Àxß	¶|ÀÚÁê‡ ß	ub„ß	pl qüÿ„ß	pl qüÿqúÿ„ß	p	l aaa„ß	p‡ ß	Ây&fÁÒ1œ  ß	¶|ÁÚß	âtÀÒß	Ê|„… ß	Øy&ÀxÁÒ1Š ß	¶|æàÀvÁ


É Áâ1œ  ß	¶|Áüñ•  ñ  1Š ßâv_x@Ázß	Ê|„(ßzxß	*rÎŠØÁÚ


É ÀzÁò1œ        ÀÒß	è|Àzßzvßòxß	šsÖÂ|Cþÿß	|ÀzÁ|¼   ß	Ê|ß	6€ßVvß^xßfz„… ß	¢kß	ªkß	*r… &fÀvß	Js
FÀ€ß	˜~_
F&f¦æÀxß	JsÀ€ß	˜~_
FÀÁ	Â„Åƒ‚€…„ÖÖÖÖß	p3ß	sÀùÁ÷€ÁCßFß	˜~ÄÚT”ÔÀÒÁvBœ Äx ƒ`ð ÁzßPßU Pß	Ê|ßJ
Jß	p…„‡ &f¦æ 



æ!  †ƒm BA@‚m A@m @€m Î
éÆe
 ‡ fðµ   ð%    @ABCÅüõ  5œ  Aß	¶|Åí…‡ ß	¢kß	ªkß	šs… &fÁÒ1œ  €1Š ß	¶|ÁÚfNTNTVT	      Áê



ß	po
FÁÚÉ€ß	ât_
Ff f f fÀÒÁâœ Àxœ ßHƒ`ð  œ Hœ ƒ`æ Îàœ œ „à„åááHñ ß	¶|ÀêÈ€ß	u_
FÁÚß	ußÎ!¡ q q q É‰#‚‡±-  ‚	‡±-  ‚‡±-  ‚ðe  p p HßFß	uÆe ÁzÀâð—H ßPßU Pß	Ê|ßJ
Jß	p…„‡ 1 q q I1 q I1 I	‡ fß	ât‡ ææ@ ff f f 1 q q I1 q I1 I	ff f f &
p p p Hq q q IÎ
ƒÃe ß	ÄuƒÃe
 ß	ÄuÎðe  p p Hö
 ×0 ‡ƒÃe
 ß	Äu¡ p Æe       ƒ‡ ñd q q Iv ñd q Iv ñd Iv Édv ‡ æ¦f&€f&&
&
ß	uÆe €‚ƒ„…‡  @  B‚ò ù ³  ³  3
 fææ …ß	êæÆe …ä… ß	Øyßµ@ eß	zv… ß	6y… &f q pÀ ôßÿÿöúüþ ß  ÀvÁ’ß	xn
œ 
 ÂE?ðBBÂ ÂàÂ
ßÈÌÂ'Ìß	0mŸ
ÌÀ÷

ôòßß	pŸÌÀv   ß	(yÄ‹_ Þx	€ÄE€þÄ§q_ ~x_ ŠxÄ¥9 )Ä¥Z EÄ¥* ?Ä¥. SÄ¥, cÄ¥- rÄ¥+ mÄ¥C tÄ¥D _ lxÄ¥V BÄ¥P _ rxÄ¥B _ ²x_ :x
üß	0mŸ
ÌßöË—ø
ö
ô
Âe0 ƒ
Ãç      ú
ú‹¨ß  ßþ
 ß	0mŸ
ÌÀàßôßÂâ¡pßöË—ø
ö
ô
þ¡V _ w¡píßôÂÆßöÄ  ¿Â  ñ‹ ¸€Â- µÂCRß	(yñ‹ Â  ƒ
‹Â ¨ÂDBòß	0mŸ
Ì_ wßöøßöß+ ø¡- ß  øñ‹ €ß- øöÂ  _ ¼wßþ
 ß	0mŸ
Ìßö_ °wÀì_ ¤wÀvðµ   ßüß ß  ÀÂ—pÃ
	‰  * ÷Ñ‹õ…„‡ ß
€
‡ D•‡ &f&Äx  Äz   €  • X  A  9 Â
S”ÂßYÓ•  YÖ…„
‡ ß	ØyŸ
ß	6y… ß	Øyß	‚‚@ß	6y… Â ß	NzÀv      ‡ 
ÎÂ ß	NzÀvÁx‡ Â ß	NzÀv‡ Â ß	NzÀvÁx C    A  ‡ Â ¦&ß	NzÀvðµ0  ö  
Îß	pÁò1Š ß	¶|ß5 €Lîv   €‡ Žæ¦ÂvÎ
_Cß	|„þÿÄE?ÿò5  þÿòEÀ þÿòUÀ þÿÄóüÿçß	f{äÄÄ &f@ÍCÍ5 @&¦æß	|ƒ‚€Áò1Š ß	¶|ÀúËß	Ê{ÓÀ$ÕÁÁE àÀ
@pr`øÿ)€´AËß	Ê{Ó$2`øÿóæ æ	 æ	"ÄŽß	žŒÖÖƒÄŽ‡ A   Ëfß	Ê{Á% € ÁE ÀAAl U ØÁÓÓ$r`øÿÂ&fÃÀ ß	ª{Á Á'ú	æ æ"ÄŽß	žŒ	Áús  òsp r`üÿ€‡ æ¦Â|ß	|À|Áò      ß	¶|‚ƒ‡ &fÀ   ß	ª{À ßúÀ'úÁ'úæ	 æ	"ÄŽß	žŒæ æ"ö€‡ Òóµ  
æŠNŠ ÒEàÎ€ÿÊæ ðó5 @ ÎÀÿÒE? Ê’EÒ‡ Bƒ  Bƒ  ‹, æ æ2ß	žŒ€ ÁÁ
ô@ps Õ… ß	Âyß	Ž|…     €`C A  Á`Ã
Â
!˜úá•  ÷‡ ¼   ß	è|‡ ß	˜€‡ W¼   ß	è|‡ ß	‚‡ ß	Âyß	è|… &¦æ&fñÅ  œ Cœ ÄàfÄÄÄfÁß	~‚fø  €ß	b~òÕ  Ä+E  @ABCÄåH &ÄH ÄeH &
ß	sÀÁß	p€ÁC„ä„  T”Ì%ÁÀÄeCß	ußÎ&@ß	Àp$	‚‡$‚	‡$‚‡      
"‡Àß	Àp€ßP	ß5 PßE Pß	®~ß	~ñµ€  ñµ  ß	b~…„ƒ‚€‡ &f¦æ C    A  €`Á`‚ƒ!Â
Ã
û&N
ÖÂ
ùß	pƒ‚€‡ È€B
Ã
ö¡ü&@  Gl 0 p p H0 p H0 H€‡ BA@A@@ ‡ æf& 
@œ ÀÀÀÀeÃÿÿÁ"Éáááß	Àp€ø  
€ƒ óÕ  fß	b~   Ã $‚‡Ã
úß	p€ƒ‡              
       d       è      '      †     @B    ˜ €–    õ á    š; Ê   T ä   vH è  è ¥Ô   	rN    óZz @ ~Æ¤ €# ò†Áo  cxEŠ]  à³¶d§  ß	æyß	¶… ƒ Âß	ò      ‡ ƒàß	òÂ  ‘Â~‡ ß	æyß	Ü… ƒ †ƒàf”‚~€Âß	ò‡ &æ— 
 ‡À5 Á5 Á5 	”Â
ƒƒÂ~ÂEþÿ”‚~ƒ„‡ ß	Âyß	6€… fÁ’ß	xn€Á”ß	„nßÈÌ_ ÊÂ’Ã”ó‹ óÅþ  ³Ü  ß	0mÁß	hmŸ
Ìß'ÌÊôß	’o‡ ß	Âyß	˜€… f&æ¦&fCœ Bœ Â`‚
Á’ß	xnßÈÌŸ È± ÂçÈ±` ßÊ



ß	0mÀ#Ÿ
Ìß'ÌÊö&ß	0mÅDCB¦æ&fÅDCBÅDCB…eDCB„eCBƒeB‚e`DCBŸ
Ìß'ÌÊÚfÀÐP‚Àß	~ò €ñµ€  ß	b~€‚ƒ„…‡ ß	Âyß	‚… f&&@Á’ß	xnß	poß	äo€ø  €ß	òoß	Jsß	˜~ß	Js­ Ê       _ÌßÊÌ&fÁ’ 
ß	hmß
Ìô§Ì ÷€€ÁC
Å
 ß	öu@Á’ß	hmß
ÌW!
 í†¦ÎPQé@ß	hmß
Ìß'ÌÈÁ’ 
ß	hmß
Ìß'ÌÈöß	’o„…‡ ß	Âyfß	‚‚@ñµ  ß	Ž|…     C A  ß	¶… ¦œ Á,1  ðµ  ñ
 ðµ   1œ  ±à ß	‚±à ß	6€Á,‚‡ ß P
LÃe* SSSK… 
P@Àð7Lø‚_ T»_ \»       @ €         @ €ßN
N_ T»_ \»@ÁEðÿÁÂ @&@ Îe  •7Â  ß	¤ƒ… Â ß	NzÂxƒ ‚  Àv    ‡ €Næ @À5 À5 Î ÀE ÁEðÿÁßÿÿT–0T€0_\ø‚L_Lø‚L‡ fß	Nƒß	      *…fß	Nƒß	Ôƒß	pƒ… fEÅàÁ¤Â Â @J~AÂ  €€Â  ß	(„—   
Å—  @Â @Â …‡  Â ‡ G~Â  ‡ Â @‡ fß	Nƒß	R„ß	pƒ… &ÀvÁx1¬  ø  €ù  ?€ù  51¬  1,   ‚ AÂ
)$$‚)‡úfÃÒÄâfœ 1¬  œ ³“ ´• Áß	¶|€ß	¶|ÀÚÁê$
Â ØÂ @Â  Â „‡ fß	Nƒß	…ß	pƒ… ÀvÁ’ß	xnÀxÁ”ß	„nßÈÌß	Æm‡ Àxß	‚‚Àv  Â,Ã0‡ fß	Nƒß	*…fß	Nƒß	b…ß	pƒ… W  Á’€Âß	(„‡ C &f¦N`æNàCß	Ôƒ—   
ƒ	‚€ìÁß	Ôƒ‡ ÖÆe ‡ fÂ ß	NzÀv          ß	Ø…€ÁEðÿÁß	¤ƒ… Âvòµ  C`Ã
€
òµ  ß¢âoß¢ão.×¢A +×¢R ×¢{ ×¢} "Á
#fÂ ß	NzÀv    ß	N†€ÁEðÿÁß	¤ƒ… Â0 Ã9 Á
ˆ Ð úÂ @‡ Â  ‡ fÂ ß	NzÀv    ß	˜†€ÁEðÿÁß	¤ƒ… æ  ÂA ÃZ Á

ˆ Ð ú£÷Â @Â  Ö‡ &¦æÃ Âvß	|ÀvÁ$1Š ß	¶|ß.ß,ƒ‚€‡ ß	væ@ Á Â À0 ß	væÁ
 Â À0 ß	væÁ Â À  ß	væÁ Â À ß	væÁ Â ß	væÀ 

³ ƒËƒ#‚
r Âô…   öŽôŽìœÆ¸Ž~Ž  N  NONEXISTENT OTS ROUTINE INVOKED CLOSE UNI      T OR REEL UNSUCCESSFUL DEPENDING DATA NAME OUT OF RANGE ILLEGAL SUBROUTINE REENTRY INCORRECT NUMBER OF SUBROUTINE ARGUMENTS ATTEMPT TO OPEN MULTIPLE SAME AREA FILES SIMULTANEOUSLY NOT OPEN ALREADY OPEN SUBSCRIPT TOO BIG PERFORM STACK OVERFLOW NULL ALTERABLE GO TO STOP, CR TO CONTINUE STOP RUN SUBSCRIPT TOO SMALL PERFORM END OF RANGE VIOLATION NYOPTIONAL FILE MOUNTED? (Y OR N) INDEX TOO SMALL OR LARGE WRITE ERROR IN DISPLAY ILLEGAL NESTED PERFORM UNKNOWN PROCEDURE SPECIFY "ON" SWITCHS . . . ACCEPT INPUT TOO       LONG OPEN ERROR CLOSE ERROR NOT OPEN INVALID LINAGE REWRITE OR DELETE NOT LEGAL WITHOUT PRIOR READ NO USE PROCEDURE FOR I-O ERROR LOCKED INVALID OPERATION ABORT EXECUTION ODD ADDRESS ERROR MEMORY PROTECT VIOLATION T-BIT TRAP OR BPT INSTRUCTION IOT INSTRUCTION RESERVED INSTRUCTION NON-RSX EMT FLOATING POINT EXCEPTION ENVIRONMENT INTEGRITY ERRORACCEPT - DISPLAY ERROR AT SOURCE LINE  PROGRAM ID:  , IDENT:  LISTING OF NESTED ENVIRONMENTS: ENVIRONMENTAL INTEGRITY FAILURE IN PSECT:   AT OFFSET:  NESTED PERFORM SO      URCE LINE NUMBERS:      R0, ..., R5, SP, PC: FILE:  BAD:  COMPUTATIONAL:  DECIMAL:  ASCII:  RECORD MANAGEMENT SERVICE ERROR:    —‡·‡×‡ø‡ˆ<ˆtˆ}ˆŠˆœˆ³ˆÈˆÝˆæˆúˆ‰  ;‰  T‰k‰‚‰”‰¯‰Å‰Ð‰Ü‰å‰  ô‰#ŠBŠIŠ[ŠkŠ}Š–Š´ŠÄŠÙŠåŠ    ô‹ú‹
ŒŒ¦6
 t2 f…Õ&f¦æ&
5Œ @  
 †NÂ Â ‚
 †A Á
ÁÁÁÁgvÜ’‡Î N À5" f f¦ß	¦@ È	ƒ‚€…ŽŽŽ‡ ,jŠhh†_ h½ß	Œiß”ŒßP Žß	jõe   @ À >Œ¨”A  u  ß	úi‡ †_ h½ß	Œiß”ŒßP Žß	jß	úi‡ _ n_ ½¦6
 ¦¦6
 6
 fÅ¢f¡ ß	Œi]‡…ÕA F
      À”ß	`Ð•: Ð•  B 
Áí‹ß	:‚’P”‚~Ð•  A f
B’

ý†ÁA–Œß	:Â ß	`Ð•  A ÁA>Œß	:õ Á/‹ß	:A ß	`Á”ß	Jõ‹	 _	hnŽÁ 5Œ	 †fÁA‚‡É	J~ß	úi…ŽŽŽŽ‡ @  B Á  B 1
 À”ÁŒß	:
ß	`Á”ß	@‡ À”Á@‹ß	: ß	Ê` ß	Ê`ÁM‹ß	: ß	Ê`
 ß	Ê`Á”ß	@‡ &8 À”ÁW‹ß	:Á”ß	@_	h&ß	¸Žß	œ8 ö„‡ &Îe  -  Îe - ÕÖ… ß	Œi‡À”Áw‹ß	:Á”ß	@Eß	úií&Îe  -  Îe - ÕÖ… À”Áw‹ß	:Á”ß	@EòÀ”Á£‹ß	:2 Áå í Â ß	`Á”      ß	@‡ À”Á—‹ß	:  ß	Ê`" ß	Ê`Á”ß	@‡ æ&   À”Á¯‹ß	:Á”ß	@À”ÁÓ‹ß	:Á Â ß	`Á”ß	@Ãe Î
ìÖƒ‡ P”þ‡ æ æŠæ æ€ß	DiŸŒŸŽß	dj@à_ŒŽß	djß	Di‡ ß	6‘æ#Fß# n2–%Öß	6‘æ$Fß$ n(ß	6‘æ%Fß% n ß	6‘æ&Fß& nß	6‘æ'Fß' nÖß	6‘æ(Fß( n_	6‘æ)Fß) nß	”ß	ŒiÀ”ÁØ‹ß	:Á”ß	@À”ÁÓ‹ß	:Ã Ð•  Â ß	`È~Á”ß	@ß	úi_ ½¶òÿŽÎe f&æ¦f&æ‡ v†šªºÊ  Üt2 fŽ‡Ö_  »t2 f Ž‡N Ö_ ¼t2 fŽ‡N Ž‡Ö_ ºæN¦ ß	šÖß n_ ½t2       EÍÏæNß	”ß n_ ½æÃ Âv& ( ß	|ÁvÀ$0Š ß	Ê|ƒ‡ æ  Î, ð   ß	ª{ßúÎ'úÎúÎ 4. * 40 , {  Á
sp Àp ‡ ßÿÿä
ä@CÂe* RRRJß	’ßä@Cß	’_ \»
æ
ê
T@CÂe* R_ìR_îR_ðJ_òßR&   ß	ª{ÎúŸæÂ A‡ƒ~ÂŸø‚êÁêß	D’_ \»Á Áÿÿæîæì_pTBŸè
ÂèÃRÁêBp@;à  Áêöò Îð_êBpÃRÀ  `{  _ æßß	D’_ b»ß	´yÁ@ß	n“… _ T»	ÍÂ ß	NzÀvÕÀPß XÁ.	À.Á6ß	¶|ß>Îe ‡ &
Õ      å_@Õ  ÀE?ÿ€€€€`ÍÕ„… Â ß	NzÀvÁ&	ßfÅÂ ß	Nz…À.Á6ß	¶|Á@ß	œ•Á&ßÀv
ß	°”Â@ò'> „#ž  ònŸ
>‰
ñ
 à
À&  ÁHC éAƒ ƒß	ò
Âß	ò„ß`>À6Á.ß	Ê|Äœ„_ T»_ \»
B Âà,  &f AÁ`¤ƒ~€l Äê€Ä‡ ÍÂ ß	NzÀv‡ KËËË‡ fÉñµ@  ñµ  C A  ß	¶Àl•Â ß	Üð ìß	Ž|ð 
4À,ð  ß	6€…‡   fÀxPPPH
ÎÀ„Áxß	„pß	ÀpÀâß	Ê|‡ ÂHJÊg>Ò
RJÊç>’
J‡ Á&ß	œ•Á      H
ß	°”‡ ß	Z–‡ W { 
W } 	óÕ  óÅ  
W A W 0 õW 9 ò‡ W R îÁå@ óÅ  W 
 óÕ  Jœ$–‡  		 ß	Z–‡ W 9 
Áå0 óµ  Áe
 JœÎo‡ ó  ó‹ €óµ  	ó
 ó5  ³
  Â  óµ  Âl Â
’Ö‡ ß	´yŸÁ&ß	n“#ß'>*Ã|ß	è”ŸÍB¦@&œ ÁE?ÿÁÁÁÁ fB~Â5 @îfæ… æ_ T»ß	´yŸÁZ	Ãbß	è”Ã@ß	è”_ŸÄ&Â ÅCS‚~‚
ß	NzÀx&&&&Ì5 @ÅåDáæÀ.Á6ß	¶|Á&ß	œ•ßL_ R˜
Åå
Í5  D
@Àå ÁHß	°”Í5 @Åå
 íŸ
Ÿ
Hß
Lâ
      À^ LßL
ßçH

 a>ßg>ßrxßHtßgtßLÀHÁZß	•ÀtÁbß	•ÀjÁ@Éß	Ê|À6Á.ß	Ê|Á|Éß	n•ÅÄÆæ… ŸÆÁ&ß	œ•æßL_ T»_ \»Ÿ


Ÿ&
_ß >ÅÍbåŸ
>ß'>*ZóÍ5€ Í5 Põ'>èÿLÍE€ ÍE õ'>êÿ@Í5  Ä @ß
Àå Àå Í5 õ'>èÿ*ß	¶•'ß	¶•'&ß
@ðÿÁ&Ág>Á
ß	òAÁå fß	n•…Ÿe>õ>èÿÍ5 @®ÍU€ ÿ
´i©ÍU€ ÿ
ªiÅå žÃ&ß	8–ÃãÃå ß
ß	8–Ãå ß	8–Ãå ðÆÖÅÄæ… Ÿ


Ÿ      fÆå ƒß	è”ß
ƒß	Ê•Æå ƒß	è”ƒß	Ê•ö5   ö  Æå ƒß	è”ƒËÓ Ë*‹
‹í ‹
€%ó"þÿ"5ß	Ê•ß >ß'>*€ß	¶•Ÿ
>õƒß	8–ö5  öU€  a>Ë>ß$*ÓƒÃe ß	8–ß
Ãe ß	8–Æe Ó Ë>Â¿
‚hÄæ… ß	´yŸÁ&	Ã&ß	Ê•&
Ÿæ… _	0›ß	úiß	Œiß	Diß€Œß Žß	djÐ”ÁE ÿ&
&
Á%: 6 Áå: NÁ: fŒŸŽß	djÎß	Di€Àe: ä–%ß	Di_	@›… &f¦æ&¦
 … …„ƒ‚€Ö… ß	N·Â& œ œ Á  Bl  ° pœ  0Š ð•  f&æ …ß	ªæÆe …Â&° °” °” ð%  f&æ …ß	ºæÆe       …ð%  _ \»Á* ß	 ·×70 _ T»ß	Ê¡ðß	N·f&æ …ß	ºæÆe …ð%  Á _ \»Á" ß	 ·ß	Ê¡÷ß	N·ð•  ß	Ä†f&æ …ß	ªæÆe …ð%  f&æ …ß	ºæÆe …ð%  _ \»Á ß	 ·×70 _ T»ß	Ê¡ðß	N·f&æ …ß	ºæÆe …ð%  Á _ \»Á ß	 ·ß	Ê¡÷ß	N·ß	Z¢f&æ …ß	’æÆe …ò  ò  2
 f¦æ …ß	êæÆe …ò%  ß	„¢3
 ß5 0Á ñ•:   … Á ß	J·æ æ4ß	žŒß	Ê¡… C_0À  @ ‚ Ál A’m: AI Á  ìÁ éÁ æÁ ãÁ àÁ ÝÁ ÚÁ ×Á ÔÁ	 Ñæ æ¤ß	žŒ_ (½¼ÃÎÓØãèñ žBJ      	ZÿBJLP	ZÿF	ZÿD	ZÿDHNR	ZÿH	ZÿDBJ	ZÿDBHJNR	ZÿH	ZÿT	ÿ 8                                                      ß	ˆž‡Â€ªß	¢¢… ß	ˆž‡Â€°ß	¢¢… ß	ˆž‡Â€¶ß	¢¢… ó‹ ó‹- Á  ß	J·æ æ4ß	žŒß	Ê¡± ‡ ß	"¢ù‡ß	@¸S‡ò•   òœ, 1 ò•  ó5   ò•  ß	žŸÁœ" rœž W  f¦æ …ß	ÒæÆe …
f¦æ …ß	ÚæÆe …ò%   ³  ³  ß	
¹f&æ …ß	ŠæÆe …ð%  f¦æ …ß	êæÆe …ß	Z¢3
 ”Á pœ  0Š A  Ál p ß	f¢Àžß	¢¢ß	N·Âœ" ¡ ‡ &f&f
 
@ A Ä &f¦À8       Âž‘”~‚€År p É• 1   1 " ñ•   ÅñÕ  q‘ @…
Áe8 Äe s¡- Ò‡…„€‡ ß	* _ \»ß	* … Á Ñ•9 É•4 æ æ4ß	žŒß	Ê¡‡ Á Ñ•9 É•3 æ æ4ß	žŒß	Ê¡_ \»Á Ñ•1 É•0 ×70 Á ñ•  _ T»ß	Ê¡_ \»Á Ñ•9 É•4 æ æ4ß	žŒß	Ê¡_ \»… f&æ …ß	zæÆe …ð%  Á ß	 ·æ æ4ß	žŒß	Ê¡… Á Ñ•9 É•4 æ  æ 4Á0ÁEüÿs" ß	žŒß	Ê¡… ß	N·… ß	2¡_ \»ß	2¡… Á Ñ•9 É•4 æ! æ!4ß	žŒß	Ê¡‡ Á Ñ•9 É•4 æ æ4Á0ÁEüÿs" ß	žŒß	Ê¡… ß	N·ß5 0f&æ …ß	ÊæÆe …
f&æ …ß	¢æÆe …ð%  Á.       ß	 ·ß	Ê¡… Áœ" Wp m> @ÁÁe @&* &, &
f f &æ _	ä¼´, ´* ¡ ‡ ó éæ æ$ß	žŒ± ‡ Á ñ s ( ±
 ¡ ‡ æ æ4ß	žŒÁ Ñ•9 É•6 ± ‡ Á 1
 ‡ &f¦À Á Â	 ”‚~‚€‡ &f¦À Á Â	 P”‚~‚€‡ ”Ál 	”¢ÿ ù‡ 































Á$& ð²¢ Â  Â,& Â& fŽàp f&æ …ß	²æÆe …ð%  ê° ¡ ‡ ° ± ‡ ó5   Á
ß5 0Ê‡ Â. ß5 0r` ²,  	Á
², 
 ¸ßU 0´rà  ì l ß	Ò¢‡ßU 0_ Œ£‡ fÅ. BÂe õ  Á ÍRf¦ß	z‚RM~…Â      . ò æ æ4ß	žŒ¡ ‡ ò ² 
 ²

  _ Ò¢ß	N·ß	Z¢f&æ …ß	’æÆe …ò  ò  2
 f¦æ …ß	êæÆe …ò%  ß	„¢3
 ß5 0Á ñ•:   … Á ß	J·æ æ4ß	žŒß	Ê¡… ß	N·ð•  Ap Wp Ál pœ  A  Ál p f&æ …ß	ªæÆe …ð%  #ðE   ß5@ 0ðU   f&æ …ß	šæÆe …ð%  ×<    Á ñ•B  _ \»Á& ß	 ·ð×70 _ T»ß	Ê¡ïß	N·ð•   ðE   ß5@ 0ðU   f&æ …ß	šæÆe …ÁÁe. 
   ð%  ×¬"  ×<    Á ñ•L  ñ•P  _ \»Á ß	 ·éÁ ñ•  ×70 _ T»ß	Ê¡êß	N·ð•  ß	Ä†f      &æ …ß	ªæÆe …ð%  #ðE   ß5@ 0ðU   f&æ …ß	šæÆe …ð%  ×<    Á ñ•,  _ \»Á ß	 ·ð×70 _ T»ß	Ê¡ïß	N·ð•   ðE   ß5@ 0ðU   f&æ …ß	šæÆe …ð%  ß	Ø‘×¬"  ×<    Á ñ•  ñ•   _ \»Á ß	 ·çÁ ñ•  ×70 _ T»ß	Ê¡êß	N·ðE   ß5@ 0ðU   f&æ …ß	šæÆe …ð%  ×¬"  Á ñ•  _ \»Á ß	 ·ðÁ ñ•  ×70 _ T»ß	Ê¡êL§S§^§c§h§s§x§§§,4	Zÿ,4 	Zÿ0	Zÿ.	Zÿ.2"	Zÿ2	Zÿ.,4	Zÿ.,24"	Zÿ2	Zÿ	ÿ ß	à§‡Â€:§ß	¢¢… ß	à§      ‡Â€@§ß	¢¢… ß	à§‡Â€F§ß	¢¢… ó‹ Á  ß	J·æ æ4ß	žŒß	Ê¡± ‡ ß	"¢ù‡ß	@¸Q‡ò•  ò•  ó5   ò•  òœ, 1 Áœ" rœ¦§ W  f¦æ …ß	ÒæÆe …
f¦æ …ß	ÚæÆe …ò%   ³  ³  ß	
¹f&æ …ß	ŠæÆe …ð%  f¦æ …ß	êæÆe …ß	Z¢3
 –ð, ð•  ß	f¢À•§ß	¢¢ß	N·Âœ" ¡ ‡ Á ñµ  Uß $Áe ð•  ñµ  & Bl  ° pœ  Â$° f&æ …ß	ªæÆe …ð%@ú ð%  ,ß	œ©ðàý %Ÿ
$Áe ó§$- Î‡Á  Bl  ° pœ  0Š f&æ …ß	ªæÆe …ð%  ¡ ‡ ± ‡ &æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡ Á ñµ        yÂ& œ œ ß $Áe ð•  ñµ  & Bl  ° pœ  Â$° f&æ …ß	ªæÆe …ð%@ú ð%  4ß	¼ªðàý -Ÿ
$Áe ó§$- Î‡Á  Bl  ° pœ  0Š f&æ …ß	ªæÆe …ð%@ú ð%  ß	¼ªðÐþ Â&° °” °” ± ‡ Â&° °” °” ¡ ‡ &æÀe
 Ãe. Â ¤ƒ~ƒ€Â‡ ß	N·Â& œ œ ð•  Á  Bl  ° pœ  0Š f&æ …ß	ªæÆe …ð%  0ÁÁe. 
   ß	Þ¨$‡Á&p p” p” p ðE   ß5@ 0ðU   f&æ …ß	ÂæÆe …ð%  
_ \»Á&p p” p” Á, ß	 ·ñ×70 _ T»ß	Ê¡çß	N·ß	º©      $‡p ðE   ß5@ 0ðU   f&æ …ß	ÂæÆe …ð%  
Á ñ•6  ñ•6  _ \»Á$ ß	 ·ñ×70 _ T»ß	Ê¡ïß	N·p ð•  ß	Ä†f&æ …ß	ªæÆe …ð%  ðE   ß5@ 0ðU   f&æ …ß	ÂæÆe …ð%  _ \»Á ß	 ·×70 _ T»ß	Ê¡ðß	N·p ðE   ß5@ 0ðU   f&æ …ß	ÂæÆe …ð%  
Á ñ•6  ñ•6  _ \»Á ß	 ·×70 _ T»ß	Ê¡ðß	N·p ðE   ß5@ 0ðU   f&æ …ß	ÂæÆe …ð%  Á ñ•6  _ \»Á ß	 ·ß	Ê¡÷ß	N·ß	Z¢f&æ …ß	’æÆe …ò  ò  2
 òW  ß5 0òG  f¦æ …ß	êæÆe …ò%  ß	      „¢3
 ß5 0Á ñ•:   … Á ß	J·æ æ4ß	žŒß	Ê¡… ü­®®®$	Zÿ$6	Zÿ
8	Zÿ
8	Zÿ	ÿ	ÿó‹ Á  ß	J·æ æ4ß	žŒß	Ê¡… ó5   æ æß	žŒ®¯ß	"¢ï‡ß	@¸y‡ò•   òU  ß5 0òE  ò•  ó5   ò•  Áœ" rœ>® W  %òÕ  ó5	    
Á$ 3r& À2`. À  òe  ò•  òÅ  f¦æ …ß	ÒæÆe …
f¦æ …ß	ÚæÆe …ò%  '³  ³  ß	
¹×¬"  ðU  f&æ …ß	ŠæÆe …ð%  f¦æ …ß	êæÆe …ß	Z¢3
 _ H®ó5   ß	Œ£ß	f¢À-®ß	¢¢Âœ" Â€ô­ß	¢¢ß	N·… ß	f¢À®öß	N·ð•        ß5 0
ð  ß5 0ð  Ap p• Wp Ál  Bl  ° f&æ …ß	ªæÆe …0
 pœ  ð%  Á ñ•B  ×¬"  
×<   `ñ•6  ñ•6  _ \»Á ß	 ·×70 _ T»ß	Ê¡ðß	N·ð•  ß5 0
ð  ß5 0ð  ß	Ä†f&æ …ß	ªæÆe …0
 ð%  Á ñ•,  ×¬"  
×<   `ñ•6  ñ•6  _ \»Á
 ß	 ·†×70 _ T»ß	Ê¡ðÁ ñµ  GÂ& œ œ ß $Áe ð•  ñµ  # Bl  ° pœ  Â$° f&æ …ß	ªæÆe …ð%@ú ð%  ðàý Ÿ
$Áe ó§$- Ñ‡Â&° °” °” ¡ ‡ Â&° °” °” ± ‡ ß	N·ß	ø°‡ð•  p ðE         ß5@ 0ðU   f&æ …ß	²æÆe …ð%  _ \»Á( ß	 ·ù×70 _ T»ß	Ê¡ïß	N·ß	ø°‡ð•   p ðE   ß5@ 0ðU   f&æ …ß	²æÆe …ð%  _ \»Á  ß	 ·ù×70 _ T»ß	Ê¡ïß	N·p ð•  ß	Ä†ðE   ß5@ 0ðU   f&æ …ß	²æÆe …ð%  _ \»Á ß	 ·×70 _ T»ß	Ê¡ðß	N·ð•   p ðE   ß5@ 0ðU   f&æ …ß	²æÆe …ð%  ß	Ø‘_ \»Á ß	 ·×70 _ T»ß	Ê¡ðß	N·ðE   ß5@ 0ðU   ó5	   p f&æ …ß	²æÆe …ð%  _ \»Á ß	 ·ß	Ê¡÷ß	z_fÁ ß5 0ß5 0lß5  0ìANß5 0-      ß	,£Ü‡ â•
 Ž
° ‚cÊ• Ž
° f&æ …ß	²æÆe …p ð%  ¾ß5 0ß5 0_ T»_ \» ‚cÒ• Ž
Ê•
 Ž
° f&æ …ß	²æÆe …ð%  ™ß	,£–‡× ‚cÊ• Ž
° f&æ …ß	²æÆe …ð%  Ë_ ~³ó5   –ß5 0  â• Ž
° ‚cÊ• Ž
° f&æ …ß	²æÆe …p ð%  £_ ~³ ‚cÒ• Ž
Ê• Ž
° f&æ …ß	²æÆe …ð%  ˆ_ ~³:µBµDµLµPµRµXµ`µfµjµnµxµ‚µˆµŽµ”µœµ¨µ¬µ¶µ¾µÊµÐµÚµðü ý@ý    °ý`ú   ðü    @ú`ú  °ý`ú   ðü`ú  `ú  `ú  @úPü`ú   ðüPüú`ú  @ú`ú  @ú`ú  @ú`ú  °ý`ú    Àùàýðü`ú  `ú   Ðþàý`ú  @ú`ú          àýúðü`ú  @ú`ú   àý@ú`ú    959791309810929230343030239230109292302492309230923023239292302424229230239230239230239230109292300221222492309230022122923023929230022222249230239230022223923030          ÿÿ           üÿ    ÿÿ     ûÿ            üÿüÿ     ûÿûÿýÿ    üÿ    üÿ    üÿ    ÿÿ      þÿýÿûÿ         þÿýÿ    üÿ      ýÿýÿûÿ    üÿ     ýÿüÿ      ¦A
µB°  ûáÁe¢ Â R’Jœ ‚A¢ ‡ €éÁ Ñ•0 É•0 ‡ P                                                                           P                                                                                    4  8  8  @  SH €    CL @  þ·CO    ¸AL   
¸CH   ¸  &À^·ÁP ¦”B~‚
2Á ß	b¹S‡ß	Ô¹r* 2- Á 	ß	b¹G‡ß	Ô¹r( 2, Á0ÁEüÿs" ß5 €2ò•  ò@ ß5  2	òU€  Á8r
 r ß5 2Á<r
 r ß5 @2Á—4r ò&  ò$ . ò(  ò*  òœ 3 ¡ €‡ ± ü&f&Å®·ÄP P•Å$ 
s €0‘  …„ð•   ß5 2ð@ ðœ#  °$ ð  ð&  ð  ‡ ÀBp p ðE ð ¦ ß	a'‡È• ð¸ ß	Ðc‡ðµ8  \ 2ß5  2ß5 2   àæC`      Ó•  ƒ~ƒ‚¡ ‡ ‚± ‡ f¦ 
W¤/ €
…~‚‡ t2 æ"Nfß	šß" n_ ½&@PP€… t2 &f¦t4   PA
Â ß	NzÂv  Á
ö‚€t6  &ü	4 „_	*(½ô& ü	& 6 … &f@•À m A•&Nm ÕÁ
ù€… ô &f   Á
Wp m q# Áå À
ù€Õ… 4  t2 æ^f ß	šß n_ ½ñ
  Å ô
 Å
 E`€_  »t2 æNß	”ß n_ ½4
& 4
 4
8 Ö‡ t$ t ( fÎe Ž  ý  	t/  & t  & ü	& ^	…| ( Å. aâÅ* û´2 ´4 Å2 ô&ß	z€
 ‚ÕÀ
ÀÀ`€_  »@ÀÀ`€… t2 EÍ_  »æNß	”ß n_ ½vœEß'      º»zæ æÿˆß'¼»|æ æÿˆ& @ ð p
 æ æP‘æiÿˆæ: óV {	V ƒ_	Êj€… &f¦æ
4-  ‡æ
^f t2 ß	šß
 n_ ½   À

q-  æ^èÁe ô Wp m ´
 Ãffß	z Ž±  q q q q 1$ 
 ÃÅq EÅe ñ  Åe ô
 Ã	ƒ‚€¶
 Æe
 ƒ‚€_  »&f¦æC…Åe
 _ $¼æ æß	žŒ… æ ß	”ßnßnßnße n_	*N½
æ ß	”_	*`½ß næ: óX {	X ƒÀn&æÿˆæ3ÿˆß¤nóßnÐß+ nÌô 
´
 44 8 4¯  … æß	”4 æ Nß	”ß n_ ½æBß	”ß n_ ½      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶SAMPLE  â          P   Ä  ÈèÈ Tº  ˜º     #iò¡<iÀ¢u~i ÊuLi  ¼i  ¨Qi  Ói      7  Q	   *D # p
 
 2N¼  ê @         êÊê8  Ã  Æ     }  ³  ´                   G¼@æœ    Ü     Ö     G“Îœ  Gšw_Mœ        ˜£    Àÿÿÿÿÿÿÿ       `  #i„  (    -                                                                                                                         ‚             ADDC      ST        ÿÿ ADDCUS       ÿÿ ADDSTK     '  ÿÿ APPPAY     ?  ÿÿ CHGCUS     Y  ÿÿ CHNCST      q  ÿÿ CHNSTK@     ‰  ÿÿ CSHSAL€     ¡  ÿÿ DELCUS    Í  ÿÿ DPYBCK    ä  ÿÿ DPYCST    ü  ÿÿ DPYCUS     ÿÿ DPYINV   *  ÿÿ DPYORD    8  ÿÿ DPYSTK@   N  ÿÿ ENTORD€   e  ÿÿ PROBCK   ‡  ÿÿ RCVSTK   •  ÿÿ SHPORD   £  ÿÿ ACCESS  @@          [BORDER  XX          vCUSTOM  pp          ’INVENT  ˆˆ          ³ORINV               ÌPAYMNT  ¸¸                Üþÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
                            "*                            J                            j                            
Š                            ª                            úÊ                            ò                              ê                                                                $%&'()*+,-./0123456789:;<=>?@ABCDEFGIKMOQ        þ   À      ‚          €+   ê      ÌV Fä¡  p |¡      `¯„  Ê                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                              AC001T€           #iò¡                À¡I úO @            AP001T€           #iò¡                Ï¡F úO @            AP002T€           #iò¡                Ü¡V úO @            AS001T€           #iò¡                ë¡S úO @                  CC001T€           #iò¡                ú¡E úO @            CIVRFY€           #iò¡               ø›ƒ úO @            CS001T€           #iò¡                G¢A úO @            DB001T€           #iò¡                S¢D úO @            DB002T€           #iò¡                a¢F úO @            DC001T€           #iò¡                n¢, úO @            DELETE€           #iò¡                x¢R úO @            DI001T€           #iò¡                †¢d úO @                  DO001T€           #iò¡                —¢y úO @            DS001T€           #iò¡                «¢* úO @            EO000T€           #iò¡                µ¢' úO @            EO001T€           #iò¡                ¾¢J úO @            EO002T€           #iò¡                Ì¢u úO @            EO003T€           #iò¡                ß¢¥ úO @            FIND  €           #iò¡                ø¢[ úO @            INSERT€           #iò¡                £S úO @                  MO001T€           #iò¡                £, úO @            MO002T€           #iò¡                "£m úO @            MO003T€           #iò¡                4£' úO @            NEXT  €           #iò¡                Ÿ£T úO @            PB001T€           #iò¡                ­£u úO @            RDCUST€           #iò¡                ¿£V úO @            READEL€           #iò¡                Ð£[ úO @            REWRIT€           #iò¡                ã£M úO @                  RS001T€           #iò¡                E¤L úO @            SIVRFY€           #iò¡                V¤@ úO @            SO001T€           #iò¡                e¤” úO @            VALIDA€           #iò¡                ¤4 úO @            VALIDC€           #iò¡                Ž¤6 úO @            WINDUP€           #iò¡                ™¤' úO @            WRTPAY€           #iò¡                §¤; úO @            OUTSTA            u~i Ê          "                     @                                       001V62                       TERM1T            u~i Ê          s                                                005V62                       TERM2T          u~i Ê          s                     @                                  002V62                       TERM3T          u~i Ê          s                     @                                  003V62                       TERM4T          u~i Ê          s                     @                                        004V62                       [[[[[[             u~i Ê                                                                                                     Á ÷	Þ" pX 0
  ƒ‡ ?ŠëÔ÷	T\ À* À* b äð5  h‰ðE   l †\ À* Àe† Á w ° À* &` \ À* &^ \ À* °^ ÷	Aá@ëÀ* 0H \ À* ð5  &
w 80
H \ À*  l ã×¢ýÿÃå
 ð  ø†ƒ
Šð5  Ü\ ¦ ÷	p
Á%þÀ* p^ 0
` °` °b  ð† ðˆ ðŠ  l ×,þÿýþÃå æÒðå  ðH       ð ð ð ðv ‡ ðH 
ð5  —/   Î
;0
 ÷	„ Å÷	àÁ!W D W  ,ð5  (ðU  H "ðE  ð5  öÌ 0– 0ž (w ŒþB Ä¢•þ÷	¤!ðU€  &` ÷	'Î&   ÷	¼ý€÷	– &` ÷	ì
SY0:[1,300]ACCESS.DAT;1           0  P                      £À¢£  J     ß	´–¶@ª   À¢þU `        ©8©˜© ©¦©Ð©ü©P                            "£       ˆ            "£    <¶£ Z\                                       @  ˆ            Ð  !                æÿp õd 5
      n õ l õ Z ¦ÿˆ†Ä>À* ^ ×t 
—r ‚
5 d õ f µl õ Z BÂeX ¦ÿˆ&5
d 5
l 5
f õ Z ¦ÿˆVµh ‡EÄ, EC`Â  Ñ”‚~Â  á‹
ƒ~ÄG—- 


„‡ 6 
ö× w 
 –%Ööò ¦÷	LÀ* ðU€   ƒ Ñ”þ¦÷	Ä Áe¦   Àe: à•
 à• Å Ä CÂ×týÿÂEøÿÂe0  	ÈÅ à•  QÁ: ÷	RÀ* w ¼ý@ ÿ‰‡  w ®ýl  ã‹Â˜æÎ  ‚
‚
æ Â Ñ•" Ñ”‚~Ñ•" ° ÷	" 
Â¯Â¸‘”þ÷	 Äå
 Äå
 Ò‡ &ÀÁ&ÀÈ¦‚ ”þf÷	t€Àe  `˜‚~à•   üÁe ÀÑ”þÀ*   Â ”‚~Ñ•" Ñ• Ñ•
       À*   à÷	p ‚€Ž‡ fÁ* Áe– ‘‘ÑQ‰Ñe ‘ Ž‡ À* °!& ú†$‰&À* " Åe‚ õ• \ õ Z uf µd AÁeX fÿˆ†?
åå5Šh ‡ &À* " Åe‚ õ•$ h à—£ fÁ* ñE € ñ5 @ ñU € ñ5  æ(            \  <            T                                         @ " ?UNIBUS timeout fatal trap ?Memory management violation ?Error file cannot be opened ?Error file cannot be read ?Undefined error number  w	ªòþÿ#„\ ·0 &·( ·  f f f fÄ\ · Äw Öw	ÜòþÿI‰J @‰ 6 @‰       6 @‰ 6 @‰ 6 @‰\ œœœœ                           p    ü 3 0
 ðU ^ \ 9‰÷	l ðU ^ ÷	^ ðU ^ ÷	P ðU ^ ¦&÷	Ø÷0

 0
 \ ÷	2  &€÷	 €¦&÷	 \ ð5 ^ ðE ^ 0
f ÷	÷‡ ÷	˜Ã* Â 3 ðE ^ ð5 ` ð5 ` ¤‰‡ Îw |&¦ ¦ ¦ „ 	F8äæ¦&
Ä€@                        ÷	F‚Á÷	 \  
r@÷	
 r( ÷	 @À% ¤À% À
SY0:[1,300]BORDER.DAT;1           `  €      À                £À¢£  J  0  ß	´–¶@ª   À¢þU `        ©8©˜© ©¦©Ð©ü©      P  0                         "£       ˆ            "£    l¶£ Z\                                                                          @  ˆ            Ð  !      	           v N…‡€ ˆÆe \ w €Æe
 „0

 0
 \ ÷	¨ ÷	¤÷	ü ‡^\ –%î÷	 ð5 ^ ð5 ^  

¦æ0

 1÷	4× ' × " Ã,€Â
¦&D„ †’ÁÅ€ÿÁ Åe U Í‹ü‚
ñ„¦Ã€…Nå¥  û‚
Ží 6
 
÷	h ‡w dÆe ¤Å* @  
  Âð‹\ 
¬\ þÿ9‰ð5 ^ ;‰A õ5  ðU ^       f÷	Ð ‚° ð
 Å…`p0 ‡ 0 ‡÷	f 
¬\ þÿÁ* ± … ‡
ƒ
ì °` °à
 Âd Ò Ò Ê‹ü0

 Ã"ð5@ ^ Ã4‰2‰Ã4‰  2‰  ± ‡ … 
†ƒ”ÃE€ÿú× 	 ÷×   ô‡ ,
 ÿ Å* õ5  ð
 
ð5 ^ D” ðE ^ ¡ ‡ 0
 ÷	T É¥ É¥ HÉ¥ ZÉ¥ WÉ¥ [É¥
 J÷	Ú ÷	d èfæÁ ÷	Œƒð5 ` 6     ð5 ` Å
äC¶ ð5 ^ …`W£& ðU ^ ƒ
ð 0
 ?Å
Í‰”ÉÅ€ ‡ ÷	6 ÷	ìÿÉ¥
 Ã
a’0
 £÷	 É• ÷	> 	Š÷	 p °XD            l  l            d                                               @üûö
ÅH ÅP 
ÅP 
Å( &
&

Å0 
Å0 ¦6
  ÷	"°* °, & &  
÷	3  3  ÀfA÷	"—%H   ƒà `ŠÂ~° ° Ö÷	
\ 	ƒ‚ƒ'÷	T÷	L¦ƒ‚æ  ƒÂÃ‚ƒÃæ  @AÀ”Á
Ä~’“Â~Ö÷	¨\ Ö‚ƒ÷	úÀ&
    0                      ¨    
÷	$0  ÁX ÷	H\ ¦ ¦ \ &
&
\  & &\  ú 

\ €û ù€ ˆÖ\  ˆ\  û 	\  ú ÷ ô ÷ ø€  ÷	÷	8
ƒÁ ÷	Àw ä ÷	ö      €øÁ* J,
 ‡J, ƒÊ
€1@ ±B                         ÁE @`ˆ\ ƒ8ƒF
DBƒÁ* C,
 ‡C, ƒw Tþ
5Åp$‚

SY0:[1,300]CUSTOM.DAT;1           `  €      À                £À¢£  J  0  ß	´–¶@ª   À¢þU `        ©8©˜© ©¦©Ð©ü©P  0                  Í       "£       ˆ            "£    l¶£ Z\      $                                                                    @  ˆ            Ð < "          Í       & 

Â Ã®÷	Ê¥  £¤      Ã
€Áw Î
÷	"
÷	ô÷	<÷	’ ð5 ^ ð5@ ^ *À*   ‚÷	òƒ÷	h ÷	¨ Ì÷	ä ÷	. pX Cì ð` ðU ^ ð5 ^ ÷	îp Ô÷	,\ 0
f ð5 €` ðU ^ w àíÃ æ
‚÷	F  ¦Â* €  X ò5  æ—¬‚  —¬~  ÷	ªÿƒ‚‡ æ  ‚÷	 Ö‡ ÃöÅðU ^ ÷	zíÊ¥ 0
f Ê¥	 °
f <f  úÊµ` °
f ‘”—#´&Â
å¨ÝðU ^ p ÷	š&
ÜV Â ŽàŽàƒàü€ÖÂÖ’€÷	 Ö\ ÷	‡¦Á  ÷	‚  Áh ÷	  ‚

‡ ÷	âü‡¦òÁ f÷	ÊÿE~‡ &À* &ÀeŒ &÷	è_€‚ò5  É AûCCl ò  
r €‡         ÚT  Õ A‰÷	`ÿ÷	´ Å* ô¥  Ìµ ‰C" Â úÊ	/ &÷	&€ƒ` Ã5 êÃE 8ÃU „ð`   CÉ‰Cb×¨: ÂU€ 

 Ã
ðU ` Ã ÃðP` °\ 
Á 0 XD            |  l            t                                         @X ° ° ‡ &fÀ* ÀeŒ ÷	Ð^†Áe ÁE f÷	À…À*  p` ¦ÂE 
B~‚€‡ €Ã* óU  &
æ &æ æÿˆ‡æ æ)ÿˆæ æÿˆóE  \ Á—& sf ý‰Žå\ žå\ œå\ å\ å\ å\ ç\ ç\ ç\ ƒy Š)˜)º)ª)Ä)˜)˜)š)\ À“À“À“À“åÀ“      
àÀÁ “‹J"÷	Z Â€Á    0                      ì    l’’îœì÷	ˆ€
r ÷	 áÅ* @- ‚@-
 ‡@`€
ÀE ˆ‡ Ö\ ŽŽ–\ Ü\ Ô\  È\ ÷	¼€À`÷	N‡€ †4‰  ÷	À* ‚’$J’ŠJN…‡\ 2‰  ü Á€F Á€B Á€> Á €. Á€> Á€: Á€6 Á €$ Á & Á " Á  
 Á  Á  Á  
œÿÿÂEð¿`œÿÿÂEð¿`ƒ$ƒ&üÿ
7‰‚ $ûƒ$ùƒ°püÿƒeBúÿvdB—r b€•fæ¦&Á5 @Á÷	f‚‚eÁ
Á
¦ ¦ ¦ ¦\ ÷	:ŽeŽ\ 
‚
t¶ Á÷	,€€eC`ã‹C~&
&
      ÷	Œ	‚ƒ÷	î	&
\ ÷	øŽeú¦fÁ* B" Âe€ Rð‹\ 1ð5 ^ ðµ@ ^ )÷	°fú	† 
 …-Á%°ýw2  * ìX                                                               °œh Z …‚‡ ¦fÁ
SY0:[1,300]INVENT.DAT;1           0  P                      £À¢£  J     ß	´–¶@ª   À¢þU `        ©8©˜© ©¦©Ð©ü©P                     R       "£       ˆ            "£    <¶£ Z\                                       @  ˆ            Ð  "          R        Z 2d 2       d 2œ\ \ òÅ€ \ ò• \ 2* l 2, j òf I2Ü] Z ðÅ  ] ò¥ \ ²œW h 2œZ h ð5 ^ ò•  h ðE ^ … 
æ€.æ fæ æÿˆÁeX fÿˆÅæÿˆ2
 …œp €Á* qf Å%öÿ0
f ‰Å%ýÿ‰Å%ñÿý‰2Šh ‡ Öò
 Z fÿˆæ æÿˆæ æÿˆ×§&  ö´. æsÿˆ‰ð* ð,  ÁeÿÁEÿÁ 0b * 0d , p`b pd ‡ ÷	 W  -÷	fø‰&& ÷	ÔW  €‡ ”Ã ÔÃ × TIö¢: ó…õ•€ \ Å* C ÃÃ Â €ÁÁ ÁÐpV Ö8&€
¢: ÔÂEøÿ¢: —t 
ÔÁEøÿBP€Ÿ ¦æfæÿˆ	†Â* ò& f A÷	Æ÷¢‰Æå ‚¦fæÿˆƒ
 ‚ Fè‡Â5  æÃ      * ³f 
Â5  ÁU  Â5 ÁU  ð` ð•$ Z Â5 7ÁU@ 4ÁU€ 1ðU ` Á w \fÂ" Âe‚ r\ 
2
d ôµ  ò Z ÷	þ AÁ5 òU d Á5 òU d òpZ ÷	ÜýpP^ 
ƒ÷	 † ÷	èö”‰‡ 
 ðU(            „  <            |                                         @‡  @A!æ€  Ã* À, ‚À,
 ‡3@ sB @`€
ÀE Ãe@ È€ ƒ"ƒ ÂÃŽ‡ f‚ ƒ Á* B, ‚B,
 ‡±D ñF Â`‚
ÂE ÁeD J‚ ¶ Æe ‡ ÖÔÔÔ&
¦ Á* ±" Æå fæ æÿˆÆe ß¥ & &
æTIæ æÿˆ†w €Âe‚ ò       \ ò•$ h Àp4Á& ‚#ñ5  ãf
 Aœ fÆå& ‚¦æ                           (    ¬ –4–%‚÷	 èÁ €@à÷	ÜçÁ À³4÷	Ðçw zä¦Â* Á“ 
B~‚ÀÃ* ³œ ! 3úÿ& óe  & s
 s 3 Â  
‚~	Â4 
‚~3 Àe 3 Â4 
‚~3 @³  óc                 T p p
  SY0:[1,300]ORINV.DAT;1                                       £À¢£  J  Ð   ß	´–¶@ª   À¢þU `        ©8©˜© ©¦©Ð©ü©P  Ð    $              n ÿÿÿ  "£      ˆ            "£    |¶£   @   ˆ            ÿÿÿ n   $   %   n            Ã* „ÎŽ3 3 ÷	L ð•þÿ\ €3
  ~‰
‚~
‚~ R~3
H 
ÁÓÁdW(ýþ±Š „\ ÷	 ° p
 ³ ‡ Ã* À Â Å A…à‡ €@   B  ÈC  zE  G @ÃH PtJ $‰No terminal on channel 0(LUN 13.) in "?Maximum memory exceeded in ""
÷	
Á‡ Å* õU @ ¦Áe B Bí  †÷	BB Bí  ‚f¦à÷	& †~‰Wt u`
 áB
 "
b‚÷	Áå w XÁe? ‡WtúÿÁE  |            |                      @v ÷	^ÿÅ* õU @ ¦¦fB  Áe ÁE Bàá`‰Ée µ ¶ õE @ m÷	ÿÀ
f&
÷	®ÿƒ‚÷	 ÷	¾ \ À5       ”B~ƒ
ÃE 
B~‹‡ ÷	æ ¦f&æÃ* Â
 æ ‚#€‚ìþÿ‚#ú † 
ÁE 

b‚#íÖƒ'¦f&B
 f ‚#€‚ìþÿ‚#ú! …
B ÅE Bá…¡BH‚#èÅ* u Ö    Ð                  o       
÷	
 


ê÷	$ Á* €@, ‚@,
 ‡ 
ÁE @`

  SY0:[1,300]PAYMNT.DAT;1                                      £À¢£  J  Ð   ß	´–¶@ª   À¢þU           ©8©˜© ©¦©Ð©ü©P  Ð                   1 ÿÿÿ  "£      ˆ            "£|  |¶£«   @   ˆ                 1       2  1            Ö†¡ €Aò…¡ ^…”ÅE€ÿïW¡  ìW¡	 éÅå  ‡ Â
ç&æ 
Â€Ñ•- Ñ•  ƒ
—r
 Ãe0 æ€
Âö‘•~Ñ•  Âe ƒ€‡ ‡ D‰  LBOÀOÀ»Ø8""€CŠÃ Ãå˜ 
Ã%èÿ 

ævvf&\ @Àe €@AÎe €€ƒæÂÃ&fÅ À.Â1Œf ŒŠ AÄ ± Œ…ŠBAÅ Dá5	aÎ ¦ÂC€Ä%÷ÿ!Äe 
Äe ÃBÅ …ÐVŒB…„€È\ E CõŠÁ À P 
Äå €„
üDa@Ž­                 |  @E‹Ð†0‰  

€%ÐCà‚àÂ‹ÂÅ

„CBÂ‹ºÃBÅ
ú0‰  çÎ ‚òÂâÃ 
ÂÐŠÅå í
Åå é&
æ&
Ã*       æ2 f&&&
÷	n ÷	¾ Ã% ,Ã% Ã% ÎU @÷	¤ Ãå × 	 ‚ Ëƒ¶
 ÷	R÷	DÅ`DA@Îé€Ž
ç× þÿ×  × 5 Â
4Â
¶
 Ã&;æ 



‡ Îe €ó‡ŠÌffƒ ÷	 ýƒ…ç‡ö ƒm     Ð                          ö
 í€Öƒ ¶
 ÂCPQCQ<ƒ“æ¾ Âà‚m — Æÿ†Ö¹‚
÷	Ú ÷	p Ž
 ˜ú‚÷	z — & î‚Â
õ€

À5 @é÷	¢ ÃÎ
ø÷	B À5 þûÎ Û€e’‡NN÷	. EDA@‰‡ˆ…
‚Âe b"„‚
 Öd$€„‡ ¡  ‡ ÅDA@‡ &f&f÷	êÿ÷	æÿ…eDA@„eA@e@€e‡ &f&fÁ À Â
ë÷	 ûÃ% P‚Ãe °EÕÃ< À% P‚Àe °EDA@Ã
      õÃEÿÀ@‡ ÷	†Æå Ž ¶  ¶  6
 6
 ær÷	`Âùæf&f¦&
&
„ … 6 v Á* v  €  6
 öÐ Ã 6
 öÐ @¶ ‚ŒÀ¶ RÂ* ‚2 Ž±  Œ&Š€CÎ ÷	X‚Âå€ ÷	Þþ÷	HÎ
‚
ù÷	ÿŽ
÷	
ÿÃÂ
À5 ùÂô÷	 þ‚
ü‚ 6Œ ‡‚c6Œ †ƒƒm
 ö 6Œ †‚#ƒ‚m Â¶ 
 ‚
 ÷	–þ  ‡÷	´þŽ
‚ ¶Œ †¦–m ¶£ ¶ã 
6Š öÞ  Žà¶Œ ‡Â‚cƒÃ ƒí ¦‚ &
Ê•  Ž
ö €Ê•- ‚
ö Cö 
÷	öý÷	èýÃEÿÀ@Ã ƒƒƒƒö
 ÃU0 ÒŽ
ö
 å'öŠ á€Ö…ÖƒƒŒ†ƒŒ+†÷	„ Ò•  
C…„Ö€Æe ‚      H ÷	ŠýÂ
À% ú‚À% @‚÷	lý‚
ùÒ•. Ž
ö ¶Ò•0 Ž
¶
 öŠ õÌ÷	. Ò•E 
Ã -Å€Ã Ò

s
 Äe0 ‘
Åe0 R‘
¾ö‹ Â
Á
	Ê¥0 ÷Ê¥. Á% Ê•0 ‚

‡  
Ã Â ‡   Á* @ @  ÷	, Îà€
   À* &h \ À* &f \ ÷	–ø÷	 æ\ f ‡ À* °x €0
x \ ÷	€ø†&
& \ Ã* óU    ÷	bø†-‰ð5 ^ ð5` ‰ð5 ^ ûð5€ ^ +‰ð5  ^ ûðU ^ ƒ … f Bñ üÿq¡ûÿñµ úÿJB,þÿ%AñÅÃ ðe   BÂe °f 

Ba‘Á`pá †*‰p! ôƒð ð Áà1f þÿÆp pf ñµ úÿpüÿ* pœûÿ, ð  ÷	*ì1Šúÿð* ñüÿp‘,       q‘ûÿ÷	¬íñÕ úÿÃ* ó5   ñÕ úÿóE   v Ž‡ À9À7À;ÀuÀwÀyÀ{D&
f¡ ‡W#ÿÿv &w ®÷	¶  ÷	 ?JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECw	¨GD…&&÷	` Ð•- ÎeÁe=@P”P”P”Ð•- $w	zGDÅ … ƒ÷	& Ð•.  ÀÀÀ c e÷	‚GÀ
…Ð•: ÷	
 Å
ù
Â÷	TB‡ ÷	”÷	‚E†‡ ÂÂexG{ J ÷	~÷	tE†‡ ÂÂejG{ J ˜†÷	f÷	dE†‡ õ¥@  †õ0û fÂÂeÞÿ
û	J ‡ÂÂe G÷	DE†w 6Ew ¾÷	$÷		†‡ æÎeG‚{ J  †÷	
÷	øD†‡ ÂÂeðÿ
{ J ÷	ò÷	Ð†‡ ÂÂeG{ J À†°†¨†È†¸†÷	Ò&
÷	Êæ ÷	Àæ       	÷	¶æ ÷	¬æ ÷	††‡ ÂÂe¼ÿ{ J ÷	÷	n†‡ ÂÂeŒF{ J à†Ø†Ð†÷	t÷	rD†‡ ÂÂeìÿ
û	J ‡ÂÂeàÿ
û	J ‡ÂÂe,F÷	XD	‡ÂÂeÈÿ
5
> û	J †w 8Dw À÷	&÷	†‡ ÂÂe*F{ J è†ð†÷	&
÷	æ ÷	Þ†–
‡ ÂÂeàÿ{ J ø†÷	ä
÷	Â†‡ ÂÂeðÿ
{ J  ‡÷	Ê
÷	¨†‡ ÂÂeðÿ
{ J ÷	²
÷	†‡ ÂÂe¾E{ J ¦ÿˆ€È& ‡ „C“Âà‡&
Â
ûÂ`‚
‚`Ba¦—#ÿÿ‡
Ã
õ‚L À €÷	n×  æ
æ
*æ
+
æ2æ3ÁE ÿæÂÎE ‚w	¨D…ŠÂ ‚†Á€Ð•- ŠƒÐŠÂÕ0 @A÷	¨DW 	 ƒÁe `fÃŠ
ÀÂ€Ã€ÂE ÷	Ôÿ”•       ‡ À @÷	& f÷	 ‡
Á
ý‡ À Â. ‚€`w ¾C&
  	Ž
   Ž
 0 Ž
€ÀÀ‡ æCPÎU £	  Ã 	À, Á, Ã ö&À.     
0
 0
úÿÃ–
ó 
Ä, ðúÿÃ`ú3Š ó  €
³ óÅ 
 ³  ƒÀðþ÷	Zfƒ ÷	ú †–%Ã þ3± ± ± CðúÿÎ5 Î5 ó‹ Á÷	V	†Ã`ú0
úÿXC»óÕ 
 3 ³Š Î5 !ó æƒ ÷	’ ƒ†Ã þ?s  s  óÅ 
 ñµ 
 óÕ 
 1
 1
 ÁÎ5 ñµ 
 Î5 ÷	J†"`ú	0
úÿ1
 1Š ñÅïÿ
 £	 ÷	 ñµ 
 ÷	 ØÃ È–
&V‡ £	  A ñ‹ B,       ‡ñµD 
 Ã5 	ñµ 
 Ã5 ñ A ãÁ± 	ñÅïÿ
 1
 1
 1
 ‡ £	  óµ  Ã 
‡ õÀý õðÿ õù À€
õÐû Æ" w ÂfÀL W£ ÀL @aB`æcÿˆ¦³" 3  ÷	Þ ÷	¤ÿfæeÿˆ…‡ ó 4 &£	  Îe ó2 ó  8 ³—6 3: 3
< æÎe2 ÿˆÂ—& †— ÿÿæ1ÿˆò± È€ù° ‡ ó 4 Ô³4 Ñ³4 &£	  Îe ó2 ó  8 ³—6 3: Îæ" æeÿˆÈ‹æ  æ)ÿˆæ  æÿˆóþÿE æcÿˆ3  ³" À  ÷	 ÷	 I s". 	s, 0 p üÿA ‡ ó. 3üÿ2 æÎe ³4 s . ‡ fÀ.  Àe2 Á 
Á
ýÀå ‡       æöÿæøÿÀ.     €cŽJñµ 
 1! @ ÀÿÿÀ ÿÿ¡ 

± ‚‡ Ã+æ ‚3‘”Ã
3Ãå †Î@Ã
Çà‘‘‘‘‘‘‘‘ð†ÃÃå †Çà‘”‘”‘”‘”‘”‘”‘”‘”ó†Ö‘”
‡ ñÅ# 
 
ñ‹ Àðþ÷	|Ã. ÃÀ  0
 ¦Âµ 1! È0úqñµ 
 ñÅ 
 Â5 ñµ 
 Â5 Â5	 ÷	÷	W‡Î5 &÷	ª €CñŠ @ñµ 
 	ñ•  ÷	âB‡ñŠ 3÷	¦Î5 &@¡ ñµ@ 
 ÷	j ‡÷	*€ ñµ  
 £	  Âe
 ƒ Á ƒr  ÂÃ ûr 1
 Âìp öÿ0
öÿp øÿ0
øÿÈ –
&V‡  £	      
ð ð‹ ðµ@ 
   ðÀp        p  pœ
 
 ðÅïÿ
 0
 0
 0
 ñÅ 
 1
 1
 1
 ± ‡ Ã. ÃÁ Áe Bæ Þ	 þôÅ  AEJ É¥ EJ ñ 
W£ ‡W- ÿÿ}  	W£ ‡W- ÿÿ}  ‡ Ààú÷	˜ÿ@ €ø‡ÀöÈ¥ ó0
 0
 
Ü Ã¥P ƒð ÿ < „5‡Ä3£	 0ôµ  ( òµ  ðÐÿ %ôÅ€  Ã. ÃôÕ  pJ   œ ÁEáÿ5
B 5
D 5
H ¡ ‡ ððù ðpü W£ ‡W- ÿÿý	 ± ‡ @÷	ÒøÀ 
ôµ   Àe À &À.  €e

w "<&&Ì¥	   
 ðµ 
 ÂU ÷	´ÿ‚Áe
 @  1   
  ôÁ ÷	zÿ„‡ ‡ ÷	‚P 
P H €f      Ã. Ãû	L ‡÷	~Ã æ ú÷	NP 
P H €fÃ. Ãû	N †w 
÷	FÃ æùÌ¥	  —# úòµ  5
 È¥öÿð ÈÈ‹5œ  È‹>ñÐ
 Ã ñÀ
 È 1  ñµ€ 
 /òµ€  +Ã. Ãóµ ( $—# úòµ  ñÕ€ 
 && ÷	ûp  p  Â 
À  fû	P ‡û	T ° ˆ"¢åÿÈ`ú0
 ¢öÿÈ°ýÃ ñÀ
 òµ   0
 ’ð ˆÃ. Ãòµ€  ÄÖ‚&f÷	¢ú€0
öÿ&V‡ ƒ&öÿ&÷	†ú†€ÈÐû° ã÷	TúK ñÕ 
 fû	T ñÅ 
 ÷	Ì ‡ &À æ1ÿˆÀ
û€‡ fÅ. Eµ …&æ¦f¦
 6 Þ	‚ƒ„…€‡ ¦Ã. ÃñÅ 
 1
 ÷	      r Ì¥	  ñµ@ 
 -òµ€  )ñÅ! 
 1
 ñµ€ 
  ñÅ€ 
 f&& ÷	 ùóµ ( Â 
p  p  À  û	P ‡û	T ° ˆ‚‡ ± ‡ NOTRAXDEV34                                        VT •pP†P    —  ?LO@   NO           @   NO     öÿ          NO  QO             NO    O             NO  XO-           @|³       VPO¼QO                                                  >€ O Ð|Î|Â|2   CONhx  ¨  MUCH POOL - TERMINATED

FATAL DIRECTIVE ERROR IN VIRT MODULE
 ærNÿˆ†÷	L÷h°Zÿ      ÷b°ªþæjNÿˆ†÷	4ýDÿ ‡ ÷<ÿžþæ|Nÿˆ†÷	@ È2°‡ @ 7ÿ7ÿæ„Nÿˆ†÷	ø ÷Hÿøþ@ 7òþ÷úþöþw ìþ@ È7
àþæ Oÿˆ@ Èä¯w 
ÿw ÿw
 ÿ‡ &ÀöþÈ¼þÈe €Æe æsÿˆ&ÀÞþÈe €Æe æsÿˆ&ÀÊþÈe "
 €Æe æsÿˆæèNÿˆ†÷	X æ€NÿˆæˆNÿˆ†÷	F ‡ æ Nÿˆ†÷	8 ‡ w þ÷þ@ 7úýæÐNÿˆ†÷	 ‡ w Ìýæ¸Nÿˆ†÷	 ‡ ÷…Oèý÷( äýæèNÿˆæ€Nÿˆ                                                                                                                                                              BRO       ALL:NOTRAX TRAX 4 x 4 DZ SYSTEM is on the air.                                  |   	h12R…² Ä—€xpw   rw   {  LRÈ}È} {…z †R SETHIDœ œ f\°¶ð|œ œ œd œ,œœàœ¼œÚœîœœ œ+œƒœ„œ…œ¢œ£œ¤œ¥œ¦œ·œèf\Ü`¾È}Ú%  Ü`¾Ø}Ú%  Ü`¾È}Ú%  Ü`¾æ}Ú%  Ü`¾È}Ú%  `q¶ð|œ$~¦…œ$~ª…îº|¬ô]àº|œ$~¦…œ$~ª…îº|¬ô]àº|œ$~¦…œ$2~ª…¬ô]œ$~¦…îº|œ$B~ª…¬ô]àº|œÜ¾8}ÜRÐ„ž 2@|8} ‚YÜxÐ„ì#®…èxÐ„ì#^…¾®…¾^…øì#b…œÞèRö„Æ ¾ ¾( %( %       †h† ¶\}Rö„Ø\}¾ ¾( %( % ¶\}Rö„Ø\}¾ Rö„ä¾ Rö„ä¾ Â/ \}Rö„Ø\}¾ Rö„ä¾:}ÜRö„ž ô?|:} ôjTÜ`¾È}Ú%  Ü`¾d~Ú%  Ü`¾È}Ú%  þ”vœæÜRü„Æ ÜÜxü„Â¶\}Rü„Ø\}èRü„ä¾ Rü„Æ ¾ Rü„ä¾ Rü„ä¾ Rü„ä¾ Â \}Rü„Ø\}¾:}ÜRü„ž  @|:} ôUÜ`¾È}Ú%  Ü`¾ˆ~Ú%  Ü`¾È}Ú%  þ”vœðîÈ|œÐ¾b…¾ª~’tUÂ b}Â2 d}Ì' b}´~8Nd}            ¾ æ!  œ$¢„f…¾ *'þ®UœÑÜþð„p#`~¾ö ¨#È}¨#Ì~Ðü‰è`þ^Ô "U¢U®UœÓ¬L[þ"UœÕœ$f…j…¾Ò~¾j…      ¾ ²R¾â~Üì#J…Â f}Â2 h}Ì'  f}´~8Nh}            ¾ æ!  ¾f…„"®„¾ #  ¾ *'œÚîj}Ì'   j}J…                œÜàö|¾ê~¾j…¾ ²R¾ô~Üì#n…œ$€„N…¾j…¾ ²ì#r…Â l}Ì'     l}n…                œß¾ *'¬|[L*ø|ôäW¾× ¨#È}¨#È}Ðþ‰¾ `þ^Ô "UÌVØVœâ¬L[þ”Vœä¨#f…`Êf† Ô "WðVœéÜ`¾È}Ú%  Ü`¾ü~Ú%  Ü`¾È}Ú%  þ”Vœîœ$f…v…œï¾Ø ¨#È}¨#È}Ðþ‰  º NŽèÁð~¢â                   Úo|¡                  ,p
 úO  úO  ªO  úO  –O  lM      úO           Y  ÿ²  L   ŠK                                                      o   èÁNŽi#  ÒV FK    „¡|¡s ”V ðNŽ      +   Ø£H`€ jL        @€ H`  € ƒ€  Ð` Ði        À Ð`   ƒ€  Ä`ú %i           Ä`  ú ƒ€  9"¡u2¡K    „¡G‰ŒZˆ¡  +   'f¡        ;"¡J¡B¡F¡R¡„¡    ~¡È “äSA %i                    ¢¡#i 2Ø¡       þU            ß ÿßâ¤ÿw `±þˆâ¡÷• /a‡ È¡È¡È¡È¡È¡È¡È¡þ   n¢                                                                                                    ÌV Fä¡  p¤,¤ò¡     v¢  æ      â æ9ÿˆ†÷	’÷Pþdþ÷Lþ\þæò æuÿˆ†÷	v÷|¡výÀr¡÷	„±þˆÌ¢ÁN`wÜ ¬ÿ÷Š¨ÿ‡ ÷f]6þæ¡æ9ÿˆ†÷	>÷þ0þ÷þ(þæ¡æuÿˆ†÷	"æ-ÿˆæJ¡ÿˆ†÷	÷% tþæ3ÿˆ÷X]ˆþþˆ0£÷• ã_‡ Â¤÷	² ÷ò¡ú\÷5€ Ì\!Á€ ÷	¸¶‡w„]÷	Ü¸Á€ ÷	¦¶†Ár]÷	ž·÷E€  \wh]÷	º¸7
\]7
^]÷Ö L]Àð\€€€`wâþ7
Üþþˆ¨£7Šk_‡ æºUækÿˆ†÷	h Àò¡&0 ðe€  È&¤÷	T²÷	$÷	°&
ækÿˆ7
T\÷ŠK\ŠÁ4 Ä~\„„
Ãt\÷¨[É-¼ñ-¼ 7
¼Ê	‡ ÷ò¡ú»‡ À\  &÷	v²Àöûð%€  sð%  óð%  
÷	ò
æ æ!ÿˆ&÷	d²ð%  Ân¤÷	~ÿÜÀ »&
 
÷	ì €      ù‡ ð%  ð¥À  É 1,   Ã1,  ¿1,  »@Å ÷	° µ A °þˆâ¤ñòN @8 7
 ®ü 
÷	Ò™‡  0  @&÷	^±&
æˆ¡æ„¡¦  öe  ¶  æGÿˆ†÷	¤	è‡„ ÷	Š	†÷Õ |ü&÷	F²÷Å pü&
æˆ¡æ4 ¦  öe  ¶  æGÿˆ†÷	^	w Âþ&0 ðe€  È|¥÷	¬°w ªþp 0
 w ZÂ `÷% Þükƒ²¬% $ †÷	&d‡B ÷	 §†Á%Ìÿw ÌÅhúA 5
 ÷	r³B ÷	ü¦M‡ÅNúæ÷	ì ƒ†÷	ª¨C÷¼YÂ €Å2ú
„Ü µ  õ
 ƒ
÷žYÂ €5 …÷	¼¹
Åú@ Å ÷	@Ÿw Xòôù …÷	–¹Åèùw
 bYÄ ` ÷	~³7RYõÕ `ÅÈùw BYÄ `A `·ŠÆ¹Àª¹Á«¹@`7 ¤¹      ‡w  Àœù ÷	¨²0
 ÷Øû÷U ŒY&÷	Ð°·
p¹Áv¢÷	œ°&÷	ä¯÷
^¹Å`ùw ¼þw ÖXÄ `A ¡ (÷”ûÃ”ûm. Ã-Žû‡
&0 &, &* . €÷	Z±––
‡u õ € ô5 " Â‡ õU  ‡ ÷	Š²ƒÄ `c c
 ÷dX‹
##. #0 #, #* ãû#2 ËU c c ã }Ë]ìXþˆ©7

úÁ’ ÷	 f*‡&Á" ÷	”f‡&÷	Œf‡&Á ÷	€f‡&Á@ ÷	tf†Á €÷	Îf€Á" ÷	Äf€Á" ÷	ºf€Á’ ÷	°f÷Ìÿ¦ù‡ 7šù


ÑÑ@
@




Ñ
ÑÑÑÑ
Ñ
@


@
@


4   ÁV@ t¬  ø†0 t @

Ñ¬ZÑþU
Ñº÷48 4: €4& Ò       Ò:d 
Ò( 





€
€Òºc7¶c
  
ÒÒ

ÒÿÿÒÒÀ 

€
€Á’ ÷	 eÅ Zµ
<  
÷	œ†õ
< ÷Èÿ€ø‡ ÄzøÄ%ÌÿC
 ÷	t¥w Ný@ 0
 Å ÷	:œw V·Ší¶÷­é¶û¶ƒ÷á¶ó¶÷mä¶.ù·
æ¶·
 ù÷E ÖVÄ&øÂÄö‚ 2 &÷	2­Á²öñ5 . ñ5 . 	„ &÷	­5
 w  w ðò5  äf&¦@ Å„¡f fU%ÁàÿÀ¥ ‚À¥2 ‡ø	ð©‡Á w²÷&
æˆ¡f fæGÿˆ†÷	Îó‡–%‚„…w
 ¨Uw  U±$ªŽ¬ž¬Ö¬­Ôª(¬Â«¾¬¸¬ª¬°¬¬ä¬æt÷æn÷æh÷æ\÷æ^÷„ ÀT÷ÁR÷÷	 †Áõÿ‡ ææPU
Ã4÷ÀÁ ÷	 ð‡EÅm$÷æÃ `÷	2ž„†      ÁÌÿÃUwUÅ `ÄÁ •B~·þT„•B~„¦÷	 ‚†f÷	Š¢± ‚‚‚‡ „ @ A f÷	„†Áõÿ+æBÂe
 
÷	J–"‡÷	˜‡æžT¨ÿ 
@Ý ÀÀU €&fÂõ‚ ÷	”—‡w\öwZö…	†f÷	˜–%ÖÖ± ‡ … Ã `Ä ÷	T	†À²´Å ÷	šÁÌÿéÀ4T÷2T8Vw*TÅ `·"T„ƒ•Â~7T÷VTÁe ÃTÄn´÷	ÌŸ†‡ Ã `÷	8—ÅZ´E ÷	€—‡ „ @ A ÷	˜†Áõÿ‡ ÀœÐDôÐ Ð¾SÐPÐ®SP ÐªSæÊ ÿˆÁÈÿ‡&÷	”ª¡ ‡ €ð5  w (—Å w B™æ¦ÿæ@TÅe ååÄ.TŽŽ
¦ÿ÷¥ Á³À¾³
p#  p-   
 öÎ
ë± ÁÒÿåá€Å       ÷	æ˜¡ –
Ÿ¦ÿ‡ ÃSAÁe
 ÷	f‡ ÃS
÷	J‡  	÷vÓðR÷pÓèRÁ `Åe UUU·œ ¸ô¡ ‡ Á’¡ÃÊR÷	¼‡ AÁe
 ÷	“†Áôÿ‡ ÷¥ ³± ÁÔÿ‡ ÷&³€ô¡ ‡ AÁe ÷	æ’†Áôÿ‡ ÷¥ ç²± ÁÔÿ‡ Åˆ¡õh  @
 A 5 u
 µ  µ  „ µ ÷	†Áõÿ‡ õ8R õ öØR öÔR Á’²± ‡ Å˜òB „ ÷ˆ²ìó2
 þˆ8® & ÷5 Øó ƒ$ ÁÃe 
Ãe D~ƒ CÁ À7 G‘Â~   ÷	 ` & Á" ÷	”`Áj@0-  0-  õ	Á" ÷	p`ÀV@  !û1  Á@ ÷	T`‡ õ Í% €Å ÷	—·
è±ÅÎñC
 A ÷	ôžÅ¾ñB ·6QÄ `7í.  ôôŠ% ÷
      òów  ÷Áv¢÷	Ö¨‡&÷	¼§÷ÀŠñ ÷	–ª÷	4 &÷	¨Á€ Àì®÷	€¦‡ ÷%ÿÿbQ¡ 
÷Õ Üò&÷	¦¨÷Å Ðò± ‡ Ãì®Á€ ÷	~¦‡   À  Æ¯â¯Ô¯Á@ ÷	(¦‡7 RÁñw* Rw, R&0 ðe@  ÈJ¯÷	ú¦‡     6¯ÎìQw À¦&ÀâQ÷	
§‡ ÷5 ÀP÷	® 7
ÔQ&÷	B§ÄÂðô% 
 	Á@ À²Q÷	ì¥&÷	B§·
¬Qæ,¯ÿˆ‡&÷	§Ä”Qàô
 ó ú	ð®Ä(÷	º¡@Á ÷	®¥ÄnQÍô àì    Å
 ÷	˜•‡ ÷‚ ÄQ ¦ÿ	 ¦ÿ÷‹"°
÷€ ªQ7 ¦QÅ`÷	Ô¢‡ ÷5 P&÷	h§øÅlPÄjPõ‹  õµ   õ‹ f&÷	" „…Í‹&÷	4§úÅe 7
ÆO÷E ¸O‡ 
AÝ Wt Ã ÷	š©†&÷	§òf÷	R©¦ÿ      õ• `ƒõœ 
`õ `Â ÂíP¦fæ
ÀxOÃœ ÃE ÿf`÷	6 ÷	 ­&÷	Ü¥Å\ïŸ¨ÿƒÍ‹_À’  ð  û·(Ï7&Ïð.Ï  ð*Ï 7,  O‡‚7, O‡7  üN7 øNðÏ  ¦ÿðì®
 7æ®° ° 0
 0
 0 0
 0Š 0
 ðÁB æœ  ÎÅûÿóµx   ó5@   3
 Å Š÷	ò“‹Õ
ŠÎµ ðU  ÷	Î‘‹Õ‡ ÷	p©ÖÅùæ¦ÿæ÷	XŽƒ‡æ¦ÿß¦ÿ÷¥ b®Â\®·ŠX®ÂÅS®BaÂ% †Âå ²0`¡ Ÿ¦ÿ‡ ÁôÿÖÁòÿ± õæ¦ÿß¦ÿ÷• ®-æ¦ÿæ÷	ôƒ*‡æ¦ÿß¦ÿÁ ®Âý­—  
²#0`ÒI~ÁðÿÖ± …	ÕW! 
r0`0`BJ~÷ŠÂ­Ö¡ Ÿ¦ÿ‡ Áôÿúf
fÅ Á=þˆØ²÷      ÿÿt &  $ ƒÒ
 ‡2  ƒÂe Ê~Åò5  „þÿ7 < ·l 6 €âtúÿÀE ü7`( 7
" ‡ ÷ ß ¨ÿÃEÀÿÃU €¡ …‡ ± ü          ÖNŽèÁðh£þ¡                  ¢qþ¡    t´ ¸          rM úO  úO  ªO  úO  –O  lM      úO                                                                                                                                                                                                                                                                                  úO   Y  Ö  Ú         ŠY                                                                k   èÁM ÒV =	ÒV =	K    ¢þ¡s êS ð +   t¼     ¢ê¡SY0:[1,300]PAYMNT.DAT;1         $¢<iD 2Z¢       þU            ß ÿßâ¤ÿw Þ°þˆd¢÷• ­`‡ J¢J¢J¢J¢J¢J¢J¢P  Ð                   1 ÿÿÿ  "£      ˆ            "£|  |¶£«   £  ¸ ¼ .\¨ ÌÌV |Ü\X|DX  |‚À¢¤Üâ0µ„M  x´  )  ÌV =	£  Ð Ä¢  8¤â¢V¦£È\³        SY    d    O      ¢  â=	Œ³p¤²¥B¤¥X¤È¤–¥4¥ ¦²¤0¦â¤\¥¦Œ²w æL³&÷	¢ w Ð÷	–
      w ð÷	Ž
w ð÷	Â¶æþÿw Ôw ¸æ\³&÷	z ^ þ	 w ´þ	 w ÜæòWæLXfæ¨ÿæÊWæ*XæØXæ`Yfæ¨ÿß ÿ¨ÿÁU €æ¤ÿæ ÿßJÿ ÿß@ÿ¤ÿþ	 Ÿ ÿŸ¤ÿŸ¨ÿ–
‡ æzWæ¢VæRVæ¤ÿßÿ¤ÿþ	 ¤ÿÖ€€ ÷	î÷	R†‡ ÂÂeø{ J ÷	Ø÷	D†‡ ÂÂeê{ J Ä³÷	À÷	4†‡ õ¥@  †õ0û fÂÂeÞÿ
û	J ‡ÂÂe ÷	†w w 	÷	~÷	\	†‡ ÂÂe¸{ J ÷	h÷	F	†‡ æÎe‚‚{ J Ì³÷	N÷	²†‡ ÂÂeðÿ
µ> û	J w ÈÜ³Ô³÷	*÷	ž†‡ æÂÂeìÿ
û	J ƒ‡ÂÂeÞÿ
÷	Œw €÷	ü÷	Ú†‡ ÂÂe>{ J ü³ì³ä³´ô³÷	Ü&
÷	Ôæ ÷	Êæ 	÷	Àæ ÷	¶æ       ÷	†‡ ÂÂe¼ÿ{ J ÷	š÷	x†‡ ÂÂe¼{ J Ü³´Ì³÷	~÷	ò†‡ ÂÂeìÿ
û	J ‡ÂÂeàÿ
û	J ‡ÂÂe\÷	Ø	‡ÂÂeÈÿ
5
> û	J †w ¸w Ê÷	0÷	†‡ ÂÂeZ{ J ´÷	÷	ö†‡ ÂÂeðÿ
{ J ÷	 ÷	Þ†‡ ÂÂe2{ J À @÷	& f÷	 ‡
Á
ý‡ À Â. ‚€`w N&
  	Ž
   Ž
 0 Ž
€ÀÀ‡ æCPÎU £	  Ã 	À, Á, Ã ö&À.     
0
 0
úÿÃ–
ó 
Ä, ðúÿÃ`ú3Š ó ³ óÅ 
 ³  ƒÀðþ÷	Œfƒ ÷	(†–%Ã þ3± ± ± CðúÿÎ5 Î5 ó‹ Á÷	ˆ
†Ã`ú0
úÿoC»óÕ 
 3 ³Š       Î5 !ó æƒ ÷	À ƒ†Ã þVs  s  óÅ 
 ñµ 
 óÕ 
 1
 1
 ÁÎ5 5ñµ 
 1Î5 (¦æ£	  Ãœ ÃE ÿÂ  ÷	Øûƒ‚‡ñÕ 
 ÷	N†"`ú	0
úÿ1
 1Š ñÅïÿ
 £	 ÷	$ñµ 
 ÷	¤	ÁÃ È–
&V‡ £	  A ñ‹ B, ‡ñµD 
 Ã5 	ñµ 
 Ã5 ñ A ãÁ± 	ñÅïÿ
 1
 1
 1
 ‡ £	  óµ  Ã 
‡ õÀý õðÿ õù À€
õÐû Æ" w ÆfÀL W£ ÀL @aB`¦³" 3  ÷	Ò ÷	ªÿf…‡ ó 4 &£	  Îe ó2 ó  8 ³—6 3: 3
< æÎe–¬³< æÎe2 ÿˆÂ—& †—       ÿÿæ1ÿˆò± È€ù° ‡ ó 4 Ï³4 Ì³4 &£	  Îe ó2 ó  8 ³—6 3: Éæ" æ ÿæ¤ÿ&÷	>úŸ¤ÿŸ ÿþÿE 3  ³" À  ÷	 ÷	 I s". 	s, 0 p üÿA ‡ ó. 3üÿ2 æÎe ³4 s . ‡ ÷	Tüúÿ†"`ú	& &÷	Tˆ° 
± ‡ ñµ 
 ‡ f&öÿ&÷	n €†ÀÐû÷	 ±,  	A `¡¢òµüÿ ÈÀþ–
Í
&÷	2 €†À
Q÷	ä¡ ‡ fÀ.  Àe2 Á 
Á
ýÀå ‡ æöÿæøÿÀ.     €c¦¶ Jñµ 
 1! @ ÀÿÿÀ ÿÿ—#öÿ¦ÿÀ `¨ÿÀ €¡ 

± –
‚‡ Ã+æ ‚3‘”Ã
3Ãå †Î@Ã
Çà‘‘‘‘      ‘‘‘‘ð†ÃÃå †Çà‘”‘”‘”‘”‘”‘”‘”‘”ó†Ö‘”
‡ ñÅ# 
 
ñ‹ Àðþ÷	æÃ. ÃÀ  0
 ¦Âµ 1! È0úTñµ 
 ñÅ 
 Â5 ñµ 
 Â5 Â5	 ÷	|÷	v:‡Î5 ÷	r &÷	° €$ñŠ !ñµ 
 	ñ•  ÷	H#‡ñŠ ÷	÷	@ Î5 &@¡ ñµ@ 
 ÷	l ‡÷	Œ€p öÿ0
öÿp øÿ0
øÿÈ –
&V‡ ¦æ£	  ñµ 
 f f Ãœ ÃE ÿÂ  ÷	÷± ± ñÅ 
 ƒƒ‡  £	      
ð ð‹ ðµ@ 
   ðÀp  p  pœ
 
 ðÅïÿ
 0
 0
 0
 ñÅ 
 1
 1
 1
 ± ‡ Ã. ÃÀ  f&öÿ÷	Œý†ÀÐû÷	B ñµ 
 ˆŠA `!’      ÷	hý†ÀÐû÷	 ÷	$þ†&& ÷	þ° ˆ&V‡ Ã. ÃÁ Áe Bæ Þ	 þôÅ  AEJ É¥ EJ ñ 
W£ ‡W- ÿÿ}  	W£ ‡W- ÿÿ}  ‡ Ààú÷	˜ÿ@ €ø‡ÀöÈ¥ ó0
 0
 
Ü Ã¥P ƒð ÿ < „5‡Ä3£	 0ôµ  ( òµ  ðÐÿ %ôÅ€  Ã. ÃôÕ  pJ   œ ÁEáÿ5
B 5
D 5
H ¡ ‡ ððù ðpü W£ ‡W- ÿÿý	 ± ‡ @÷	 ÷À 
ôµ   Àe À &À.  €e

w €&&Ì¥	   
À.     Â  ÷	¤ô‚Áe
 @  1   
  ôÁ ÷	zÿ„‡ ‡ ÷	‚P 
P H €fÃ. Ãû	L       ‡÷	~Ã æ ú÷	NP 
P H €fÃ. Ãû	N †w 
÷	FÃ æùÌ¥	  —# úòµ  5
 È¥öÿð ÈÈ‹5œ  È‹>ñÐ
 Ã ñÀ
 È 1  ñµ€ 
 /òµ€  +Ã. Ãóµ ( $—# úòµ  ñÕ€ 
 && ÷	zúp  p  Â 
À  fû	P ‡û	T ° ˆ"¢åÿÈ`ú0
 ¢öÿÈ°ýÃ ñÀ
 òµ   0
 ’ð ˆÃ. Ãòµ€  ÄÖ‚&f÷	ú€0
öÿ&V‡ ƒ&öÿ&÷	þù†€ÈÐû° ã÷	ÌùK ñÕ 
 fû	T ñÅ 
 ÷	‡ &À æ1ÿˆÀ
û€‡ fÅ. Eµ …&æ¦f¦
 6 Þ	‚ƒ„…€‡ ¦Ã. ÃñÅ 
 1
 ÷	¼ Ì¥	        ñµ@ 
 -òµ€  )ñÅ! 
 1
 ñµ€ 
  ñÅ€ 
 f&& ÷	ùóµ ( Â 
p  p  À  û	P ‡û	T ° ˆ‚‡ ñÕ@ 
 BÂe ƒ‚ ÂE ù3 
0
 fÃ. Ãû	T ñµ 
 ÷	 †ñÅ@ 
 ¡ ‡ B ±  &€÷	ÞñÂ± ‡ ×'& ÿÿæ1ÿˆ ‡ ß	´¶îÀß	´¶ÂÃß	´¶ZÄß	´6¶¨¾ß	´6¶à¾ß	´~¶’¾ß	´~¶\¿ß	´~¶&Àß	´~¶æÀß	´–¶’½ß	´–¶PÁß	´–¶2Âß	´–¶†¾ß	´–¶Âß	´–¶Ãß	´®¶ÆÆß	´®¶(Âß	´º¶0Ãß	´n·(Âß	´z·¤Æß	´"¸
ºß	´.¸¿ß	´.¸Áß	´.¸¾ß	´:¸°Ãß	´^¸HÂß	´^¸BÂß	´j¸hÃß	´v¸´Àß	´‚¸Êß	´‚¸ÀÔß	´‚¸È¹ß	´‚¸ÚÒß	´‚¸ÎÃß	´‚¸œÓß	´      ‚¸Ôß	´Ž¸:ºß	´Ž¸þ½ß	´Ž¸ ¾ß	´úµÂºß	´–¶Ô¼ß	´úµ>ºß	´úµ»ß	´úµ~»ß	´¶ð¿ß	´¶¿ß	´r¶|¾ß	´¶ö¿ß	´F¸Ð»ß	´F¸À»ß	´F¸½ß	´F¸¶»ß	´F¸ ½ß	´*¶„¿ß	´F¸üÀ¦  Þ5 Îe ‡w	ô ¦…
 Bv
 ÷	`


ò ÊE ÷	ˆ	‡‚ Ê5 îù‚‡ Ã, û	 æM âµ øP² Þ¸ ¸w	œ Áe ÁE ƒ ‡ÀúÊ„D`Ä ÊÁbˆl „ ˆl r ‡ w	Z 

B€Áe ÁE !s  
‚ÂÅs-  ƒÅÀïÂÅ Csà Ãl ÈÀ¡ ± ‡ &æf… Þ	ƒ„…‡ ”²œ²¤²  |²„²    d²l²t²  ¬²´²¼²  Ä²Ì²Ô²  4³³Ü²  <³$³ì²  D³³ô²    ³ü²        ,³³ä²                                        ªµ      ß	´                        ©8©˜© ©¦©Ð©ü©‡     xîµ  âµx¹  úµâµ‚¸x¹¶îµŠ¶|¾Ü  úµ¶|¾Ð  úµ¶|¾8  úµ*¶|¾¨  úµ6¶|¾8B¶úµr¶´¿´  6¶N¶"´¿”  6¶Z¶&´¿ì  6¶f¶(´¿<	  6¶B¶-|¾$  úµ~¶0|¾$  úµ¶3x¹  –¶îµúµ3x¹ô	  Š¶¢¶8x¹°®¶Š¶"¸=(Â  ¢¶º¶D(ÂŒÆ¶¢¶n·F´ÅÀ  º¶Ò¶H´Å¤Þ¶º¶·JXÉô  Ò¶ê¶MXÉ¸  Ò¶ö¶NXÉ   Ò¶·PXÉ  Ò¶Þ¶T´Å”·º¶2·VHÉ  ·&·ZHÉ¤  ··\´Å>·º¶b·_¸É  2·J·b¸É€  2·V·c¸É  2·>·g´ÅL	  º¶Æ¶l(Â|z·¢¶®¶o¤Æ”        n·†·s¤Æ¤’·n·Â·uHÊô  †·ž·xHÊ¸  †·ª·yHÊ   †·¶·{HÊ  †·’·¤Æ”Î·n·æ·8Ê  Â·Ú·…8Ê¤  Â·Î·‡¤Æò·n·¸Š¨Ê  æ·þ·¨Ê€  æ·
¸Ž¨Ê  æ·ò·’¤ÆL	  n·z·—x¹.¸Š¶F¸š¾p  "¸:¸œ¾4  "¸.¸ x¹p	  Š¶R¸¥x¹ ^¸Š¶–¶¨x¾\  R¸j¸«x¾Œ  R¸v¸®x¾   R¸^¸°x¹ø  âµŽ¸¿€x¹ø  âµîµ  t´( ¦Ê5 ‚ ú‚‡ ò û¦¦‚
 Ž 
Ê5 ùÊU Ž ‚öÖ‚åÊE ¡ Ê5 @F&
¦ÎE ð&
&
¦ ¦ fÅ, fÎe „æ f  ææÿˆ(‡Ã ÿæÓæææþˆ8¹7ŠÛI‡ æ æ)ÿˆþˆN¹÷• ÅI‡ £££ã£æŸ€ÿŸ„ÿŸ†ÿŸˆÿÌ‹€ÊU ± ‡                   jL                                                ƒ   9¢¹u²¹G    
¢  ;¢¹    <OÀ                  ƒ       €       ƒ       OÀ                  ƒ   K    ¢(ºÂ¹Æ¹Ê¹¢æ‚¹æ9ÿˆ†÷	²÷4ÿHÿ÷0ÿ@ÿæ’¹æuÿˆ†÷	–÷þ¡ºåÀ0º÷	È™÷U –E÷*ÿ^ÿæØ¹æ9ÿˆ†÷	l÷DÿXÿ÷@ÿPÿæè¹æuÿˆ†÷	P÷òþLÿæø¹æuÿˆ†÷	:÷âþFÿæºæ9ÿˆ†÷	$÷,ÿ@ÿ÷(ÿ8ÿæºæuÿˆ†÷	÷¦ÿJè÷EBè÷˜£úEÃ. æþÿó( þÿ÷ ÿ,èÅzEæxEþˆ0»÷• ãG‡ ß€ÿ_  ÿ\æäDÁ, Â( € B~æè÷	BÂÐ ¦À0 
ÁÝ—D
ßÖç ÿõµ  
_        ÿ@pN`÷	JóÁ ÷‹oDÁe f
ÁÝ`DÁ% †Á VpÀ @p‚N`÷	ó
ÁÝ@DÀ  @p‚N`÷	ó
ÁÝ.DA`f
ÁÝ!DN`
ÁÝDVp‚÷	êòÖ·0DßLç ÿõµ  _ ¨ÿ7
òÃÅe Î
þˆ ¼7ŠóF‡ ÖÖæ-ÿˆæ(ºÿˆ†÷	Æ÷% Ðå/æºUækÿˆ†÷	®÷(DÚåÀÀ¢7âC&0 ðe`  È¢¼÷	´™÷	f—&
ækÿˆ†÷	zæ æÿˆ†÷	j7
¨C÷Š™CÄæ3ÿˆ&÷	rçÀìCÁêCrðµ  w Ì Ã Ä&f÷	˜ƒ.‡Ãe €Ât¢¦æ …Ä"£ô¢ ò3 2Š ò•  ðµ@  ò•  ò•    ÿ5ß€ÿòâB, æ$æ÷	pò%  ò%°ù …2Š ðÅ€ µ  µ  ÷	P7 ¦BÅ¢
Ý Ä T•Â~Å€ Ã( •Â~…÷	      0 ßÀå ÿ–%Àe Á
w ÿßªå¦ÿ÷• Òä÷•P Íä÷E bBw êåÂt¢ò%  Ã€ Ê• ò•P  ò$ 2Š 2Š  2
 2
 ænå÷	´ æhå÷	¬ Ã€ Ä( Ò‡ ÷• pä÷•P käÀŠBÁˆB,æt¢æ …Â€ ðµ    ÿ· @äæå÷	\ ßå ÿ  ÿ÷	² „œ3 &
&
&æÿˆßâä ÿÀe e~÷ÿÿ–B÷ÿÿ’B÷ÿÿŽB÷ÿÿŠB–%æ æ!ÿˆ†÷	f &÷	$˜w å¶ Ö‡ æ ÿfß”ä ÿðÕ  ÅœÕdáÕÕ|ä



Àå  Õ† Õ æì ÿˆ&÷	,å…Ÿ ÿ‡ À&A  &f¦æ&fÅ€ 
DÝ3 æ ÿß&ä ÿ÷	6  Á% Áå ÷	 & ¬	 ÷	 ðŸ ÿ…„ƒ‚€‡ æl¿ffæ&w ‚‡    ôÕ  &&       ÷	.ì° ˆ± ‡ 	
Ã5 ñÕ 
 ±Š qí8  ú‚qm8  q8  t ÷	0ë†ÀÐû÷	æíC’Ã ÃÀ`54 ul 4 ‡  Ì¥	 4
   ñµ 
 Tñµ 
 	ÉŠñå  ± ñÕ 
 ðµ!  8p,  p,   0ƒfæ &
&
&
C B ì  ‚ì æ¦,. ƒ6.  Ã. Ãó5 ( 6  6   ÷	2ú–5–5–5‡ñÕ 
 «B’	±à ± ‚
Â Â± Â ÷	ë†&& ÷	ë° ˆ	
1
 1
 &V‡ ¡  @÷	äþôµ  8ñµ 
 4 m &
ò¥  ò¥  	òµ€  ËÿÿÎ^ õ 4 †““ûòµ!  1  –
òµ   ±
 ñE  Âe( "
âe b÷	Žþ‡   ÷	dçB$ Ãòµ   ÷	ø†w úøB$ òµ   ôÕ         ?A 
  
Ü( Ã Ãæf÷	ø÷–
  
œ ÂÅð —  Ü) —  Áe 
l* t 5

 5
 5
  
4 4  4 ô 
 4Š ­  ‡–
õ  w ¼ëƒõ þ w ø÷ 
ƒÜ( Ã Ãõ  w Â÷æ   ÷	~æÃðµ   ÷	*÷†–
w ø  ðµ   ôÕ   –
)Ã÷	÷<‡  

ÁÜ Ál ÷	ºã‡4 Àœ( À ÀA N †&f÷	ðö–
6­  	‡t  –%õ  w ëŽ÷	îåÃ 


Ã ÷	ºã‡úÿÂ ÷	Ìè÷	 
ÁÜ Ál ÷	Øëƒõ þ w ÷  ‡   
ÁÜ Ál ÷	ªë÷	ˆåÃôµ    


Ã ÷	Lã‡úÿÂ ÷	^è Ãœ( Ã Ãw ‚ö2 3œ	  3œ 4 3T .       3V 0 ¡ –
Ž‡ æ&fA8 
Á ÷	þúÂ þ/‡58 
÷	è‡€ Â 
÷	Ôâúÿu8 †È%`úð6 à% þÂðþö þ ± ÷	úæ†ÀÐû÷	°é÷	ÖúÂ û–Uƒ‡ & 

Î†Á`@€`ÃBöÖ‡ æÃ  & 
ÂA@ ‡€ã‚
Ã
÷Öƒ‡  w ‚üÂ[ ÷	2 Â ó%  Â ¦Â ÷	, Â, ÷	 ‚÷	 Â] ÷	 †XÁw :þÁ
µ
> ‡ ÂE ÿÂÂÃ Â5 ÿÂÂÂÃ
øƒ
Â Âe0 ÷	ÆÿŠÂ ÂÂÂÃ
ô‡ &ÂÂ
×¢. ×¢; ×¢[ ×¤] €ã5à> `€ëÂ
õw Úþ×¢: ƒ
ñ÷	ªûß&Ží —%	 ƒõý w ¤û€%± ‡ ¡ ‡ C( B, ÷	Žÿ†C* B- ÷	€ÿ
BÝ, C( æÎeF Â×¢. &×¢; ÷	Fû&Ží       —% ƒõ`ù w BûÂ
î–
¡ ‡ ƒ
Â
â± ‡ . †
BÝ- C* ÷	®ÿ†æÎeêÿƒ÷	üú
BÝ, C( æÎeT Â#Â
×¢; &÷	ÚúÂÂ
×¢0 ‡×¢7 ‚÷	Äú&Ží —% ƒõ0ù w Àúé–
¡ ‡ ƒ
Û± ‡ ; †
BÝ- C* ÷	 ÿ†æÎeêÿƒ÷	~ú@& p>  „¡ ‡   ‡ &ÂÂ
×¢. ×¢; ×¢[ ×¤] €ã5à> `€ëÂ
õw Úþ×¢: ƒ
ñ÷	ªûß&Ží —%	 ƒõý w ¤û€%± ‡ ¡ ‡ C( B, ÷	Žÿ†C* B- ÷	€ÿ
BÝ, C( æÎeF Â×¢. &×¢; ÷	Fû&Ží —% ƒõ`ù w BûÂ
î–
¡ ‡ ƒ
Â
â± ‡ . †
BÝ- C* ÷	®ÿ†æÎeêÿƒ÷	üú
BÝ, C( æÎeT Â#Â
×¢; &÷	ÚúÂÂ
×¢0 ‡×¢7 ‚÷	      Äú&Ží —% ƒõ0ù w Àúé–
¡ ‡ ƒ
Û± ‡ ; †
BÝ- C* ÷	 ÿ†æÎeêÿƒ÷	~ú@& p>  „¡ ‡                                       Á ÷	Èç‡£	  p  1 ¡ ‡ f÷	Öÿ‡÷	
 †÷	Pð± ‡ p 0Š
 À.     Â  ÷	öä@‡ · ƒ"± ¡ ‡ · Ê‡ æ¦&
Ãÿ ŽdÃ
ýƒÞ	ƒ‚‡   æ5
8 5
: 5
< ÷	Rúb‡&
&
&
C@ 6ÁÁeÔÿÂðø@²N@”‚ÒK¤ÀÉ‹úÂ þBÑ¦QÔQÔŠ ‡0Â°ü5
ÁÜ "ƒÂ@û-JŠ
PÀ’ÀÀÀaÀe~ È	"‡À ÉC Ë¥ æœ ÷	ð‡Ã ôC< 3Š æÿ ÷	Ö‡3 3
 Â 
Æe µ õ ÷	
 ƒf V‡ A      8 
5
8 Â ÷	®ë†õðþ ‡ ¡ ‡ w  w ìw w Xf&Àó÷	vƒfæÅÅe 
%
%
%
÷	V ƒÓ$‹ ËËËË÷	@ eƒ†„…‡ ‚D˜Äå0 Ä%	 A‡%D˜Äå0 Ä%	 :‡ÄaÄÄaÄJ m < <   Ã ÷	ÄÿÃ
üBÄ"NAJBEFRAMRPAYAMNUJLUJGUAPESTCOVONCED  !¥!£!­ 	`Ô •ôÂ û¯uþÿÍ5 ÃÀ% €
ƒ
Í
Ce÷	@ÿÍæ ä‡Í`Õ
%%ß#Ý#Û$)Åå fC
 ÷	®Ae@C÷åt%
å. åÄÀ  fUUUM…UÃB
†Õe˜ UM…Õe€–UUM…À
é‡ µ> ôµ!  
&†à‚À &
¦&÷	 é° ¦fæÃ. ÃÂ À  û	R Â€ùæ`ÿ‡û	T ±       ‚’Öƒ†} > Àÿ÷	–ÿƒÁQ$‘“Š‰Ñ ‰!Š‡ &
ôµ   $t  !†ŒŒvŒ  
 Ý ` 
÷	8‡€cÁÐQ$Àe Àe Â Â
ý¡ –
‡ õ< ¡ ‡ *+,-
	 
Á &
ôµ0  hB: 	€œ €
Ê_€Ž÷	¼ Z‡õ: A< W" 
‡1t  ôµ  IÁ1  €c5: °­  ÔÀÀezÿ””cÂ`ð¥ þÿJ’öóµ  3
* 3
, À RÀ
ýÂ À  R”À
ý×¬ 8 ‡€3œ 5 3 6 3
 2 3œ	  3œ 4 3T . 3V 0 ¡ –
Ž‡ æ&fA8 
Á ÷	þúÂ þ/‡58 
÷	è‡€ Â 
÷	Ôâúÿu8 †È%`úð6 à% þÂðþö þ ± ÷	úæ†ÀÐû÷	      °é÷	ÖúÂ û–Uƒ‡ & 

Î†Á`@€`ÃBöÖ‡ æÃ  & 
ÂA@ ‡€ã‚
Ã
÷Öƒ‡                                                 · ƒ"± ¡ ‡ · Ê‡ æ¦&
Ãÿ ŽdÃ
ýƒÞ	ƒ‚‡ ðÿðúßÿùèÿðü    &Ì¥	  ôµ€   €&
¦æ÷
‚Æå
 ‰&÷	âë° Â ÷	’‡ƒ ‚ ††w |´  ô ÷	¸ë‚ ƒ  Á æ–PÁU ÁU€ ð ° p Ã. Ã‚ó5 ( Eò‹ BðÕ  æ  æ  æ° æ  æ  æ  æ  ¦
 ¦ ¦ ÎÕ —-   —-   ò5  ÎÅ ¶ òµ  ÎÅ òµ  ÎÅ òµ  ðU  ðE  ¦Â ÷	¤ AÃ. Ã‚ó5 ( ò‹       ‚ ƒ
 †¶ ö 6Š †5‡6 
 6   öe  v
 6œ  6  ´m   t 
‚Ý ´` ôµ€  ‚æ  &Îe æ÷	`ê° ¦Â ÷	 †È 0
 „‡ Ã. ÃÀ  &D & ô•  û	R †´•  û	T ´• ’„æýÂÂeæýR ‚–
Òù‚ˆp ± ‡ „¡ ‡ ÷	†ø†w Òì \4
 ¦òµ   P M1 ÷	Ôé†ÀÐû÷	ŠìC’Ã ÃÀ`òµ  4ñµ 
 058 ul 8 ƒl &
ô¥  ô¥  	ôµ€  ËÿÿÎ^ õ 8 †““ûôµ!  ƒ ôµ   ƒ
ÃE ñ –
÷	8†5 5  Á  ‚÷	íw æ÷  
 Áe @4 t
 4
  0f&¶ì  ŽŽì &
Ž’¶e V—#€       ´£ ‚²£ ‡Ã5 
òÅ 
 Š•r 2 EN&æ÷	ª ƒ†–5(€æ ‚
Â ÂB8 ÷	Häƒúÿ†È%`úÈ%°ý1  ôÕ  && ÷	2é° ˆ± ‡ 	
Ã5 ñÕ 
 ±Š qí8  ú‚qm8  q8  t ÷	4è†ÀÐû÷	êêC’Ã ÃÀ`54 ul 4 ‡  Ì¥	 4
   ñµ 
 Tñµ 
 	ÉŠñå  ± ñÕ 
 ðµ!  8p,  p,   0ƒfæ &
&
&
C B ì  ‚ì æ¦,. ƒ6.  Ã. Ãó5 ( 6  6   ÷	Pû–5–5–5‡ñÕ 
 «B’	±à ± ‚
Â Â± Â ÷	è†&& ÷	è° ˆ	
1
 1
 &V‡ ÷	²õ†w þé 
Á Â Ã ÷	¼âúÿ†"`ú	&& ÷	¼ç° ˆ      	"`úúÿ÷	ÜíÞ÷	Øæ†Àðþ÷	Žé÷	Xú‡4p $ 4r " 4
& 
÷	~ç ¦ Á  ÷	„ê‚÷4
 w Fõ÷	õ†w fé æ Â 
Ý m ÷	XêÁ  Â÷	Fêƒì4
  ¦ Á0 ÷	,ê‚÷4
 w îô                                                                                                                                                                                                                                                                                                                                                                                                                                                                                @&  A8 A ôµ   Ö‡ æÎe2 ÷	Úÿ@Àe ”ˆ” 
—¢: ÀÀÀ¦”ÎEðÿ€eõ1 ¡ ‡ ÷	¬ÿ&æCÃe 


1
 —¤] üƒ×¤. üæƒàÃ
  ® tŽ€»ðP¢v¡                  2sÚ¡                  ts úO  úO  úO  úO  –O  lM      úO  úO  úO       Y  Ë  ®   Š-                                “   €»tŽiu~                                                                                                                                                                          ÒV ÒV €K    â¡Ú¡s êS ð +   £´n€ jL        @€ ´n  € ƒ€  Ànú %i           Àn  ú ƒ€  9–¡u¦¡K    â¡G‰ŒZæ¡  ¾¡¶¡º¡Æ¡â¡    Ü¡b¡“äSA %i                     ¢u~i 26¢    ŒÆþU `     9  ß ÿßâ¤ÿw ±þˆ@¢÷• Ñ`‡ &¢&¢&¢&¢&¢&¢&¢æv¡æ9ÿˆ†÷	H÷ÿ&ÿ÷ÿÿæ†¡æuÿˆ†÷	,÷Ú¡¤ýÀÐ¡÷	²±æ-ÿˆæ¾¡ÿˆ†÷	ö‡ÅFÿÅ% Å% ñæ3ÿˆÀ Ê7ˆ]÷º]Hÿ7
#&0 ðeX  È£÷	J³æºUækÿˆ†÷	¾ÀXÊ&0 ðeX  È¬¤÷	      "³÷	Ô°&
ækÿˆ7
2]÷Š]¹ßX]¦ÿÄD]„
÷ Êî¼ße ¦ÿ&÷	j³ 
Ã¬þÄ¦þÄ% wÄ% A÷v"ïÄ% nÄ% éÄ%€ 	7@^À Å÷	JÝß¦ÿ÷¥ ¼¼×ÁÀ¼÷U º¼÷ Ö\V7‘¦¼÷¥ ¬¼B÷5 ¢¼ÅÁ5 ÷µ o¼ØÀj¼&÷	²·÷	®´†÷	<±æþæþæþ&æ Ÿ¦ÿÁ ÷	Â
†÷U þ&÷	~³÷E þñƒ„° ° ˆ7¡(¼÷	R Š74¼¸¡ „÷µ ó»šw üþ·
Ž!ß*\¦ÿ÷5 ¼õ÷¥ ü»÷¥ ô»íÀXÊ&÷	ð±çÀî»7
è»7Vý7 Rý7 hý÷n dýæÆ¡ÿˆ÷	ú‡Á ÷	¦‡ ÷	Pw ˜ÅF ÷	Ð‡ À°[&æNQæ
 æÿˆ†÷	â&
&
&
&
&
æÔæþUæJû&
æ
 æ æÿˆ&÷	°±÷	‚÷	ßj[¦ÿ      ÷ D»÷5 <»÷´ w L ÷¬ w Š ßB[¦ÿ÷‹âº÷ »&÷	h±â÷	ú†Á%Èÿw  Á%Êÿ&÷	"²ñ÷E èºw 7
^ ß[¦ÿÄôZ÷5€ Ðº	ße ¦ÿ÷@ îw ŒÿÅ•B ÷5@ ²ºÅ£º÷E€ ¦º&÷	Ò„çßÄZ¦ÿæ°Z÷¥  Žº÷µ _º÷	¦ ÷µ@ Sº÷µ Kºßhº¦ÿ÷	Œ ÷•  `ºßXº¦ÿ÷	®þ7
Pºße ¦ÿÎ
ÚÖÅ Ã  
p¡ÚÅœÖÅ&
&
&
&
&
f&
&
&
æ
 æ æÿˆ1ŠØÅ€
Ù~Å% Å Þ÷z&÷	J°ùæ æ!ÿˆ&÷	V°&÷	
±÷°¹ú‡ 
æ €œÖÅœÚÅ&
&
&
&
f&æþUæŒù&
æ
 æ æÿˆ÷	äë‡&÷	ì¯ÅXÊÍ‹$W  ÄÔ¨ÄŒ#2‘ØÅÄ0«ÀÜÅàÅ€&@0 ðeX  ÷	.¯&÷	¦¯‚
Î
      ¾Ö‡ w“ ZÀ Å‚‚÷	ª  ßXY¦ÿæDYÅC¹wØÅý¸÷µ@ ñ¸÷µ é¸Å@ ÷	6 ær§æ æ &
æÿˆ÷	6ó‡&÷	>¯ße ¦ÿÎ
ÚÖ‡ ÎXÊw „®7ŠÌ¸w‘½¸÷	(Åµ¸Á ÷	Ô&7 67 27ì ,÷• `¸÷µ@ q¸÷µ i¸	ß†¸¦ÿ÷• D¸ßz¸¦ÿ
¢ÿ Ãe  Åå@ ý	î§€Á w Pø§*¨0¨6¨`¨¢ÿ Ãe  Ä Ó•( Ó• Ó¸Ó¸Ó•J Â “Áb`S”‚~Á• Á• Á• Ó•) SÁæ·SÁ SÓ• ŠÓ• ÓÑ·Äe w  Ó•* Ó• ŠŠŠÓ• ÓìWÄ• w   0 Äâ·&
&
&
&æ &æþUæŠ÷&
æ
 æ æÿˆ÷	âê‡&÷	ê­Åj÷Í‹	W£±ÿ&÷	®®Üw 4þ‡ &ÀXÊ÷	t­·
è&
&
&
&æ fæþUæ.÷&
æ
 æ       æÿˆ÷	†ê‡f&&÷	Š­Å
÷Í¥ ÷‹W
÷
ž&ÀXÊ÷	­&÷	„­w Æý_¨ÿE Åe €D•@•
CÕÃ CÕÃ Ä¥' w þ Â÷	jl‡Õ¥ U…
À¥* 	×­Á¶D 
÷  À¶÷  ¸¶w Š…
w•¶w•¶€ Á ÷	^÷  Z¶÷µ k¶"÷µ  c¶ÀZ`ÁŠ PPPP÷• r¶÷U j¶÷	”†÷	"÷µ@ 5¶æ8¶ßN¶¦ÿ·.¶÷• F¶÷  ¶÷	h†÷	ö€w ÆþÄ¶!@  ) ÄB W©@ ;7‘pW7mWÅƒƒ÷bWÅ€À ÷	lÁ € ÷	ªÙÂ÷	lí‡÷¼µÅe ÂªÒA“R•R•D“R•R•ÃÂµ÷•  ¼µÅ†ƒ! ! 
÷5 ¢µÄB Ã  7‘‹µ÷U€ Žµ÷E ˆµ! ÷	âÅ‡ƒ Á5 $÷UÀ jµ·
äæ¦ÿß~U¦ÿ÷5 Vµ÷¥ Pµ÷¥       HµÀXÊ&÷	D«Ÿ¦ÿ×   À ÷	 Á € ÷	Þw äþ&ÀXÊ÷	«·
Œ&
&
&
&æ fæþUæÒô&
æ
 æ æÿˆ÷	*ê‡f&&÷	.«Å®ôD“÷‹³T
÷
D&ÀXÊ÷	Âª&÷	*«w lû&f f_¨ÿE Åe €
CÝ Ã CÝ 
÷	g‡Í¥ w ò õµ  w   ÷¥ l´÷¥ d´cÂ_´ À:´ö%  B ‚`w?´f÷	ž†&÷	^«÷7
´7´Â!´Ã´ÂàBà×p À`ƒÐÈÐe ÈÐeýÿ·
ä³J~–…Å% ÀÈ³&÷	î©÷	†÷	‚	€w Æþ÷µ@ ¥³¬æßÀ³¦ÿÅË 
÷UÅ€À &
÷	
Ößœ³¦ÿ•€Wp ÷	PÖÙD $Ä¥ !ƒ÷µ@ S³ßp³¦ÿ÷U j³Ä¥ ÷E ^³÷5 X³À.³&÷	T©÷µ      @ ³ß<³¦ÿÇ÷	dõ†÷	òòß¦ÿß‚ÿÅ"³÷• ³÷5@ ³÷¥ ³w 4	÷¥A ÷²7Šñ²·Š³÷	˜w Ð÷5 è²Å% ÷5 Ú²w ä ÷5 Î²÷	0N‡÷	ž÷¦RQ÷5 ¶²÷µ ‰²Áˆ²Â‚²÷	J÷	7‡÷5 €’²÷	"0‡÷	&‡÷	 *‡÷	P÷	÷E p²÷V²÷	øw `÷• ^²÷	Ø*‡÷	Ø÷	R÷5 H²÷‹-Rw Žöw *Á%âÿÅw 2Á%Èÿw $Á%Üÿ÷	P÷5 €²éÃ¦ÿ÷	þw Ôþ÷	8÷	b
û‡ÊÅ
á÷‹×Qw 8ö÷U à±7ŠÓ±÷µ ±±÷®±Þ±÷	2
‡÷
 º±÷	>Á˜±Â’±÷	Z‡w TÿÁ%Èÿw ¤÷	 ÷	ˆÓß¦ÿÄ„±Ä¥ w ²7Šv±÷E z±÷• v±÷	b‡÷• j±
ÄÝÑ+7‘S±÷h±÷	º	a‡ÄÑÄ%R       "Ä%F w Ú Ä%C w lÁ%Êÿw š ÷• $±÷µ ÷°w ÷	
¿ÅFÅGw 
÷U ü°æ¶ÐE÷	r
„•0‡÷	Næ¤ÿßÐ°¤ÿß„ÿÀ .0! @2‚Ä a  @) @w¶°w @º°@Àe ÷	VŸ¤ÿ÷5  °w ^÷	š÷	Šw dýÁ%Èÿw ˆ÷	º÷d°ƒ…ÅHÅJÖÅIw jÃ€Ë¥] E÷¥R I°Ä>°Å<°Åe
 ÷	 8‡Åí.°w.°÷	²	Ñ‡÷	²÷	,÷	w öü÷U  °÷	š#‡÷	º	À‡÷	÷	
÷5  °÷µ Ó¯÷	ä	‡w ~þÁ%Êÿ¬÷• â¯÷E  Ú¯w È
÷	Êw ¤üÅKw ÎÀ€Ïw RÿÀ% ûÀx –° °®°Î°(²À›¯÷U ž¯w ˜7Š¯À€ÁZ`÷	 ÷	8w Šý÷U t¯æ)Ïw 8ÂÄOÁÂO÷			†Á%Èÿw V&÷	~¦ð„•      &
æ`O&
w Nþ÷	¶
Á¯A v Áe? Wtúÿw¯÷	Æ¦†&÷	F¦Áø®÷7ð®¨ÿÀ €Âè®Ÿ¢ÿ„ Äe  ƒ •Â~ÀÐ®ÁÎ®ß
O¦ÿ÷¥  Ø®<÷¥  Ð®8÷µ ¡®4Î Î¦ÿßØN¦ÿÁ ÷	Ì7”®w’®ßˆ®¨ÿÄ €¢ÿ Åe  ƒ ð •Â~Ÿ¦ÿÎ¦ÿ¢ÿ Åe ÕP®ÍM®Á ÷	|
÷	R
ße ¦ÿö
 ºÀ2®Á0®÷	H¦7
&®7
$®7
"®7
 ®–Ö÷E *®÷• &®w æòÃÜÍ
÷	¢‡
ÅÝÇÍ÷	<õ÷	„	w Èòßð­¨ÿ)Åê­CÅmè­D€÷• æ­÷5	 Þ­
÷E	 Ö­À%C À%H 	Äµ 7Šµ­Äµ Äµ Äµ #÷	bw ´û÷•  ­÷	þ÷	Ž
w  ü@ €ð7`€­÷	†÷	@ ÷	âû‡÷÷	ø
÷	r	÷	b
w <úær­÷	·j­÷	¾‡÷
 F­÷	Ê‡      w îú÷	 òÁ%Èÿw 8÷­Öw šüw ^Å­_¨ÿßˆÿB @ ÷E ­À
„œ €‚
&
7Š­æÞ¬Ä5 2Ä5 ÷	.÷	*v ·
TMw`TMwNMwNMò¥W  €w d÷E ¼¬ò¥P  €w < ò¥T  €w Œ ÷5 ¢¬–‡ ·œ €ôMÅÉƒ·œ€èM·œ€ãMÅÈƒÀ w ~÷U r¬‚
À
ö
 ÷	ª và ‚
À
Á
ƒCí ÷U¬õ` 
@ ƒ`5 à÷	º ÷D`5 @àB`w vÿö Â÷	ž w hÿ÷U ¬‚
À
÷5 ¬ƒCí ÷¬õ` ÅØ«_¨ÿÃñ«Ã% Ãe D ÄàÄe €Ãº«CàÔTÂ ”Â ”À À w ÿ
ö
 À
Âe €”
ö
 À
	ƒ”Ã ÁE€ÿÁxÂå €‡ ÷	
 Âe €Áëðö
 	Åe _¨ÿB @ ‡ Åw f’¤
Ü €Æe f÷	"÷	î      ÷5  @«w Dû÷5 4«÷E ,«w 8ùÁ% ·Š*«÷E	 «7Š«÷	æw ù÷5 «óÀ÷ªÁ%# ÀC Á%$ À¥C ÀH Á%" ÷U Öªw Ðüw0LÅjƒw Ð ÷¥ ¶ªw è ÷¥ ¶ª÷	þÃª÷	ê˜·ŠK÷	,÷	ú÷	‚÷5 Œª÷¥ †ª÷dª÷`Jðw  ÷Vª
÷	Z†Á%ÌÿßÅw ` ‡ ·ŠÈJ÷	ôÁ ÷	d7,ªæ¢ÿ¢ÿ Âe  Ò• ÒªÒªŠÒ• Ò• 
Šð  Ÿ¢ÿ÷¥  ª÷ î©÷	‡ Å 
ÃÐéÃeX ÆßªI¤ÿ÷	Z ÷5 Ü©w ,î÷	¨÷U Ì©÷Ei Æ©÷µ ›©÷E ¸©w ¾ù÷	²Â
JÁJ÷	N†÷	Žö÷	÷	˜÷	ˆ7Šƒ©w ^öÃ Äª$
Â~ÅÌRéÔÔ• T‘Ô ÿÅ …†Ôn©÷5 €X©Ì©ÔÔ¦ÿÌ6©      Äª…†`……‡Š!°ü‡ß©¨ÿßÉ¨ÿÁ €TTT…†Ôô¨
Ô 


æì ÿˆ‡÷HJ÷	æ‡ ÷	z÷¥ ä¨÷	‚÷	(‡ À¼¨
Á¸¨Wp ÷	€7
ª¨7
¨¨÷	6ï	†÷%ÿÿŒH&÷	ÖŸ± ‡ ÷zHüI·úIÀ Å÷	ÿ  Áe  
7rÁ€
‡ À
vöÿWtûÿÄHäD`¦ÿ÷ :¨¡ Â÷.¨± ‡ ÷5 €@¨$·
D¨ßöG¢ÿÃ `÷	ÐŠ
÷5 €"¨ßÜG¢ÿæ¨÷• ¨ÀÖ§÷	*&÷	\ž·• ¨÷	ÿ÷	ì7Šè§÷	R7
Þ§7
Þ§7
Þ§7Šá§÷E €Ø§7
ä§‡ À†ÆÁX ÷	ºœ‡7œ§Ã¦ÿÁ²®÷¥ ´§Á­&0 ðeX  H÷	v‡ Å¤§÷	`Š‡7|§
CÝ Ã÷r§‡ æ¢ÿæ¨ÿæ¤ÿææÄGæ¾GÁ¾Gf&
&
Ã Á €Àe ÷	dŸX‡      ¶
 v 
ÎÄ N¤ÿß„ÿÅ2 ƒ
 @AWp
 Áe @BÁ Ò¤‚‡D~w T Ÿ ¤ÿ÷	ìŸö
 Ë
!†CaƒÀ×p
 Ãe @ÂÁ ƒ
 Ò¤‚‡D~w  éçÎ
 6
 ¶ ŽŸ ¤ÿÁ÷	ŽŸ‚ Æe Ÿ¨ÿŸ¢ÿÂ± ‡ æ¨ÿßj¦¨ÿÀf¦Àmf¦€œ
€Ÿ¨ÿÁÅh…w ^üWt æ¢ÿß
F¢ÿæžFæ˜F¶` N€Ã ÷	Jž–‡7¦w¦¢ÿß‚ÿ÷èe¦Ÿ¢ÿ‡ Â¦ÿ÷	Œ’‡÷è¥ß¨ÿÃÆÅß`¨ÿ÷¨ÿÔ¥¡ ‡ ÷	Ü÷	Ò÷	F û‡÷	 ö‡‡ &
&
&
&
f&&
æ å&
æ
 æ æÿˆ÷	øüì‡Ã†åË¥ ¡ ·ŠF± ‡ fWp fÀÆ÷	|š‚‡ Åz¥Ã `÷	Ü‡wZ¥·X¥‡ æ¨ÿßT¥¨ÿÀP¥Àe €Ã `&÷	¦†€Ÿ¨ÿ      ‡÷U €@¥‡ ·Š³EÀ|ÆÁ ÷	"š‡ð¦ÿ ÁÂÅ9 1 
‡ &÷	Bœê7
æ¤ÄÂÅ÷	 –‡Ã|ÆÁ @f ÷	šƒß¦ÿÀÂä7¼¤ÆeX ÷¥ Ö¤w  ñw 4óÀ¤äÃ†ÆÁX ÷	Ú™7
’¤&÷	(›Á˜¤÷	“7
Ž¤7
ˆ¤‡ ÷Š¤	Å¢¤f÷	‚‡…7
v¤‡ Ãf¤÷	ˆ‘7
\¤7
V¤‡ ÁZ¤÷	X7
P¤7
J¤‡ À<¤$Á8¤Wp 7
.¤7
,¤æÿÿ&
&
&
&
&
f&&
æä&
æ
 æ æÿˆ÷	`ûì‡Ö÷	 ‡ ÀÃÆ÷	™‡ 
÷¥ ê£Öw úÀÒ£ÁÐ£7
Ì£·
ä£Wp Äõ£&
&
&
&f&æþUæžã&
æ
 æ æÿˆ÷	öúë‡÷	ž ßbC¢ÿÃzãË¥ Åˆƒ÷ðDÀ w ùÅ	÷	tÿ7
d£÷	ôþ÷• r£‡ ÷¥ ^£Öw Žùæ¨ÿßC¢ÿßD£¨ÿÁ €Ám<£      Ám<£Áe Â(£Ã¦ÿÄþ¢÷	\Ž‡Ÿ¨ÿ7
£7
£‡ Å ƒwzDÀ w ù&÷	<š&÷	\™÷Ö¢)ÁÖâ@Àe Áe ÷	B ‡ÁÂâÁe& ÷	4 †&÷	.™ë&÷	þ™À¦â¬.  ó÷	’úÀ¢7
Œ¢&÷	¸˜w œý‡ A¡ @ û± ‡ Àr¢? nâ	÷hâ`¢&÷	Œ˜&÷	Ö˜‡ ÷	Úýß`¢¤ÿß„ÿÀ2‚7 @d¢7V¢À$ Â(‚÷e H¢÷• J¢÷*¢÷• C¢ß¢¨ÿ&¦÷ ‚(¢Á ÷5 &¢Áì÷	ùw¢÷	†ùwö¡ßÈA¤ÿ÷	hü† 
÷	"ü‡7Ú¡ßÚ¡¤ÿß„ÿ€„Äe @÷	R w ê ÷	ÆýÁ¼¡÷	N›¢ÿf f &
N
 ÷	ìö €Ã ÷	¾™	‡7Œ¡wŠ¡Æe Á~¡ÆÁ%Èÿêw Š÷Â2`ƒß¢ÿÁ Áe  Ñ• ÑP¡ÉM¡óe  óeýÿ  Å Ãe Ål s       G~
÷	œŸ¢ÿÁe  `r •~‡ ÷• &¡ß¡¤ÿß„ÿ÷â€¡÷ø ßò ¢ÿ7Š¡w  Àô ð¥  @øÅew òöÅà Åe @D“Ä¥ Õü	ŠÀø70BÅå @w*BÀ Åfƒw Äö÷µ  5÷¬ 2÷%[[^ .Åýÿ
f
Ä°À Â2`÷	ŒæîAÎŒŽ…cÀ `ÄÌÅ ÷	:eÁe w 6€áÅ± ŒÄ°LÀ Á ÷	Ö÷E @ ÷	 ßú?¤ÿßò?¢ÿ÷	¾û‡ Ã®÷¥ " Â ,Ä  Åòå  € Àe  ‡ò Âe Å`æfà€à² óÂÄŸÄÀŸÀÛŸ2à ò òå  Âe ‡ Ž¿vÂ´ÂºÂüÂ"Ã¾Å2ÃvÃ€ÄÄ¤ÄÅhÅ¦ &
‚r  ‡ö
 !Ž Âe õC`ò  ƒ¦ƒ Càí l &ÎàÀþ	 €‚ áål Ö‡ wª@      Åå @w¤@À Åiƒw >õÀ÷¥ ,ŸÂ2`÷	~ÿŸ¢ÿÁe  Ä%ÿ †•~‡ ‘~üÀ
Â.`÷	XÿŸ¨ÿÁe €T”~‡ ÷5 êž8ÅÆž_¨ÿA ÃÛžÃ% ‡Ãe ÁàÁe €C”×p Å`C”ö 
BÔÂ BÔ 
@ÔÀ @Ô_¨ÿ÷	æòW  ‚± v Âe öå  Àeþÿ÷	üòÀà¡ ‡ Ågw tôÁ@ 	ƒàf÷	 ÷	ÖòóÂe €””B~Âå €‡ JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECffC÷	0 Ð•- ÎeÁeÂP”P”P”Ð•- ƒ÷	 ‡ Ð•: C÷	 Å
ù‡ 
—r
 Ãe0 Âe0 Ð‡ @÷¥ ÌA ÄÆÄe  DeÕ÷	®þ‡ AÄ³Äe €De÷ˆ÷	hþ‡ Ä  úæ æ	 fæœæ=ÿˆÀ°Áœö%  Áe Å ÷	pÿ÷	<ÿ…A€Ä°÷	þ‡ ÃX      Ãe Ä¶äääÀ A÷	úý‡ Ä? ÷AÀ Ä `÷	äý‡ ÷5 Õ‡ ÷E D&÷	Òüßº<¤ÿ÷	˜øß®<¢ÿ÷	8ø÷U âœ„ÃºÜÃeX Æw äëÄ¶Ã  äääC æfÃ5  w º @“A ÷	¢ý
ö5€  ÷µ sœÁZ`Â¶À Â
—¢` ÊÅ  ~æ¤ÿß6<¤ÿ÷	l}‡7xœ÷	Ìô*‡÷
 Tœö5@  	÷	æö ‡÷	Èö!‡ß.œ¢ÿŸ¤ÿß„ÿ…Åe Ö‡ Ÿ¤ÿß„ÿ… D Á%þÿD w ÿ÷	Dñw øöÁ%âÿùÅw  ò&
&
÷	ý‡÷	2ðÁ% Á ÷	pý–w .ÿÁöÿÖÎ¤ÿw šÿ@A
DÕ…
÷	†ü‡ @AD`EÅ÷	rü‡ Äj›*   Ä°À
 Ô•  ~CA@r
 @Ávÿÿr
 CÁe0 d 
ïÃíÄ°À
 A÷	ü‡ Ä      ? ÷fÎeþÿfÅe f&
&
÷	Büö ö „ Äe  ÷	\ïvà ÷	 üöe  ö
 éÆe …
DÝ a‡ … Åe Dòw ÞýfÂÀšŸ¨ÿ‚ Âe €Â
÷µ Êš‚
Ê‹‚
‚
ƒ’@Õ Åe ~	@•DÄe  Aea¨T”~…Å
 
@Ó`Å
‡ w ´ù  ÂÅ        úú    °ÊËäÅêÅ    
                          Æ    p  Ë  h       `      X                                                                                          ‚Æ       ŒÆ    pÜÆ                                            ÌVã3 
 ÌVãI   ú ` ÆÌV˜»ŒÆ                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      þ   TÊ                                                            ÌV S   Æ¡ ä¡8£ Ê   ¬Ê                                                ÌV OÌV ÌV QXÊ  ÆÆp :¥Æ     Ë                                                   
 ÌVÓO†ƒ   °äÅ      ©    äÅ    XË                                                        ÒV €Ë0«Æ¡ êÅt«  êÅ                                |  Ì D¼ D ãÿ    ì  H @ € ¸ T $ $ ( ( , , 0 0 4 4 @ @ < < 8 8  X    9h     h D l     L   T | X €     T   h  l ”     \   | ¤ € ¨     d    ¸ ” ¼     l   ¤   ¨      t   à  ‡ ðÅ ) ÷	$ ‡‚ô Ì ðÕ ) ¡ ‡ ð•öÿà  ) ± ‡ 0,4  ô 
 ‡ ƒ	
D„PÄ50RÃ
ý†R”‡ R”R”Døð8 ðµ  X0 ðµ   	ð lDðÖ * ± ‡ ðÃ * €Xw	 ýð * ðµ        ”l ÷	$w .ý÷	ò‡¨€‡ ÷	æü‡, ,¼”ð ñ‚ð•öÿ* ± îÐ¨) ÷	úý‡÷	 ‡ ä¼‡ ðµ  ðe 6 øÐ÷	æþ†8 ÷	´± ä®ü÷	J÷	4‡‡ ÷	 ø‡ ðµ   ° 6 4
 ì0 Á`p H ‡ ÷	`ü‡æf¦ðµ\4÷	pý)‡ðµ   pH

÷	ô°6 °4 „\) ð 
 0
 8 ˜pÖ‡ °6 °4 ÷	Pÿ¬„ð‹* w þÆe ± À˜  ) ðµ  Ô¬   ’¤ð¥   èÀ = ’¤° 0 üÔ   0  l èƒ0  ‡ w	ûÁe$ü ƒ ‡Àú8D`Ä ÊÁbˆlL$ˆl r ‡ `8

B€Áe ÁEtLs  
‚ÂÅˆ`  ƒ      ÅÀïÂœt Csà Ãl °ˆÀ¡ ± ‡ 14  Äœ 12  Áe p Ø° l2 l0 pìÄðµ  Gðµ =  Ø fÂ( &
Âe
 ì¦æ&æ&( æ
ðµ   &Îe<÷	ÔúU•
 P( …ÃÂE •Õd<€> ÍE €fÄ xPp  †ñ  Œdw <ú÷	" ‡f÷	   x&œ* ÷	 °•* ± ‡ ´ŒÄ Ä 	ðµ È f÷	Húð> €5> Ü´ € u
 ÷	Pú‡ ðÈ±
  ‡ w	ˆùÁ( Ü‰

C ƒàƒ
ò ðB BÂe ¦æ?ÿˆ, B ñÿÿ( 1
< ‡ @MÄ w îùÁeB T,ð8 ÷	(‡ $ h@w	ùð * ÷	`|TÆ‡÷	Ô‡ 0,  h      
  ƒf¦ ¤|  ‚í†‡ p  ¸ƒ÷	 ÷†‡ ¡ ‡ w	Ì¤  Á 
à¸ ì +Â% ôÌ ùÕeB 
Á ÁàÁ5 ÁU UôåÕ Ä ÷	ù
‡pl0p &
Nœ °e ‡ D* ± ‡ É¥ÿÿ± ‡  0ÿˆ‡ Ä Ä ÷	¬øU•Õ4 6 Åå w ¸øð * &f÷	 …                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      0                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    E                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       (                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     #              $                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        x                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      $  ìh`’`                          (`@                                                                   d    Ad„S  <     O         ¢             üê ÷
’`                                                                                                                                                                                                                                                                                                                                                                &€  ä
 2
 ‡ ÁÀ~×X #À\×X Á ÷5 @ÞÁeÿÿÂ\¶Âe  ÃZ¶ò5 @  fŽ`·§Àž×Ø	Âe Ã
ð ‡ À®ÜÀe  È5 @
È5 €ÈU  ‡ À²×X ÀB¶þˆ Ò÷	zò 6
 ‡ Ä‡ ‡ ÁÄÔÂj°ÐÈ	4û
Tú‡ &ÁÈµÂÊµ@, Â
ù± –
áÁí¨µwzÎ‡ æÿÿ¦f¶ À’µÀe        

Àe 
Á-„µ7¬ Jö¬
 ó¬ r¯‚
6¬  é6 v ÷5 &ÝáÖ€Â± ‡ ÆÀ×X ÷	ÜÕÄsÕCÝ	Ë‹Ô”þÄ
CT•þÄ
ÀhÕà÷	ÄÐÃË	± ‡ ‡ f÷	øÿÌ”Ô¥* ü à•0 ÁPÛÁe å
÷	Õ‡ f÷	Êÿ@ÐÐ¥: ýÀ
   •‡ ¦÷	°ÿÌ”Ô¥* üÄ
 Aœ Ám’´A    Ü÷	ê8à¥  ý€
Ð•_ Ð•0 Aœ
 À

÷	œÔAœ Ð•_ 
÷	ŠÔ‡ &
N&
Àò×ÂÀ.‚$ œ ‚  œ œ ÁE ÿ
÷	VÔÐ•: Ð•[ 
÷	FÔÐ•, 
÷	:ÔÐ•] ŠÀò×à‡ f&¦‚ Þ	€‚‡ M    ÀÔG¿Œ  ÄÔ                               `ÓÕœÎ  INCOMPATIBLE WITH RSX11M S      YSTEM   iÕ i    ÚÎ$Õ*Õ4ÕBÕHÕPÕXÕÑÏ  TÏdÏ’Ï¸Ï  TÏæÏ†ÐÑÑ$Ñ  TÏ¤Ò  TÏdÏ<Ñ  TÏæÏbÒ  TÏ†Ò            NETLDR --                                                                        `ÓÌ×–Ó  ILLEGAL FUNCTION  `ÓÌ×–Ó  COMM EXEC NOT LOADED  `ÓÌ×–Ó  PROCESS NOT IN SYSTEM `ÓÌ×–Ó  GARBAGE IN FLAGS BYTE `ÓÌ×–Ó  LINE NOT IN SYSTEM  `ÓÌ×–Ó  ILLEGAL CSR ADDRESS `ÓÌ×–Ó  ILLEGAL INTERRUPT PRIORITY  `ÓÌ×–Ó  ILLEGAL INTERRUPT VECTOR  `ÓÌ×–Ó  NO DATA BLOCK ADDRESS `ÓÌ×–Ó  ILLEGAL UNIT NUMBER `ÓÌ×–Ó  GARBAGE IN DLC FLA      GS BYTE `ÓÌ×–Ó  UNITS NOT IN ASCENDING ORDER  `ÓÌ×–Ó  DEVICE OFFLINE  `ÓÍ×˜Ó  STILL ACTIVE  `ÓÌ×ÆÓ  DEVICE **: STILL MOUNTED  `ÓÌ×ÆÓ  DEVICE **: STILL ACTIVE `ÓØ×àÓ  STILL READY `ÓÌ×–Ó  LINE STILL ACTIVE  CHANNEL *  LINE *      @                        ß	à±,ÌâÞ    ÁêôÂü*‚ ÂEÿÂ%  áwàÿwÞÿ	Þ	ÿÖÿÒÿ‡   Þ	ÿÖÿÒÿ‡     UNLOAD BLOCK ALLOCATION FAILURE *  * TEMPLATE FILE --   Úêô¼
ÁêôÂ‚*‚ ÂEÿÂ%  áwàÿwÞÿ	Þ	ÿÖÿÒÿ‡ ,Ú¬ØÈ‡6ÙÚ  - vÒØØÀ€Â¾Ù  È…ÞØ  Â†¾Ù  Î†vÚ  +öØ-  vÒöØÀ†¶Ù  Â†¦Ù  @€Î†      †Ù  È6Ù  À†ÖÚ  È6Ù  À†ÞÚ  È6Ù  À†æÚ  È6ÙîÚ  À†öÚ  ;  Ê„  ß	à±xË Ûß	à±xËÛß	à±xËBÛß	à±xËVÛß	à±xËhÛß	à±xË~Ûß	à±xË˜Ûß	à±xË®Ûß	à±xËÊÛß	à±xËJÝß	à±xËøÛß	à±xËÜß	à±xË(Üß	à±xËÝß	à±xËÜß	à±xËDÝß	à±xËÎÜß	à±xË:Üß	à±xËTÜß	à±xËpÜß	à±xË’Üß	à±xËjÜß	à±xËŒÜß	à±xËvÜß	à±xË˜Üß	à±xË´Üß	à±xË>Ûß	à±xË°Üß	à±„ËfÜß	à±„Ë Ûß	à±„ËNÛß	à±„Ë4Ûß	à±„Ë`Ûß	à±„ËrÛß	à±„Ë†Ûß	à±„ËÀÛß	à±„ËšÛß	à±„Ë<Üß	à±„Ë²Üß	à±Ë Ûß	à±œË Ûß	à±œËºÛß	à±œË’Ûß	à±œËÜß	à±¨Ë Ûß	à±¨ËFÛß	à±¨ËnÜß	à±¨Ë²Üß	à±¨Ë„Üß	à±´Ë Ûß	à±ØË Ûß	à±ØËÛß	à±ØËÛß	à±ØËÛß	à±ØËÛß	à±ØËÛ        ÷5 p÷?÷-¸÷–÷ÀÊÝØ	÷	>3‡Áš÷÷5 N÷÷	¦÷	¸*‡·ŠN÷Â„÷Ò• À ÒZ÷ÒW÷Òh÷Êe÷÷e "÷À ÷Z÷÷V÷÷T÷ü÷	ú†ÿüñÀæÝØ	÷	îÌ‡ ÷	èÌÀ¦ÝX À÷Àe?  ¡  €€€€7÷÷ Àòö÷• üö‡ ÷	Ðó÷	6ó#‡ 
Áèö÷	ˆ ‡÷5 œö÷	ô ÷	‡·ŠœöÒ•„ À Ò¬öÒ©öÒ²öÊ¯ö÷e tö‡ À¦ÝX ÷	xó÷	äò‡ 
Á‚ö÷	0 ‡
ÁE wpö÷	X é‡·ŠHöÒ• À ÒXöÊUö÷e (ö‡ À*ö&À%ö€eÀ% ‡‡ ÀÞX ÷	ˆÇ@ÐÐ¥P ýÐ¥R úÈ•0 ÈÝ&ö‡ þˆ¸ÜÀª‰À%þÿ÷	¤1†÷	|1†Àd&°
 6 ‡ þˆÐÜÃª‰À-x/ƒÃJ÷	Ú1‡ þˆÝEÄð«÷	¬Ä‡7æ«þˆÝEÄÚ«÷	”Ä†À&      °
 7Æ«v ‡ þˆ<Ý&Ä´«7 ²«†Ä¨«E÷	êÄ·%¢«†7˜«7”«‡ ÀTÞ÷	ËÀVÞ7$7‡ ÷ ÷	2 7lî wÎ‡ ß•à þÿæ*"7&"À  ÷	 @·"þÿ‡ 7Ö æ^Þÿˆ‡÷‹Ö €± ‡ ¸Ï3Þþ£ìÎRESOURCE ALLOCATION FAILURE ¤ÏBÞrÜèÎNOT BUILT FOR APR*  ¸ÏBÞ¤èÎREAD FAILURE (-***.)  ¸Ï3Þþ£ìÎONLY 14. ALLOCATIONS/LIBRARIES ALLOWED * TEMPLATE --  * IMAGE FILE --                vÞ        DL      A PERIOD  ¸ÏŸÞþ£ìÎDDM/DLC OPERATOR * TEMPLATE --    À¢ÕX ÀÄÕX ÷5 (Þ÷>÷5 8×-2 àìÞ ìÞ  ÷òÿ‡ ÷	# À ÞÞ@h@D	7Øÿ      &&
&
æAÿˆ Ã ÁÂÃ
üÁEÿB`à·®ÿ
ˆ‡                                                                                                                                                                                   € nÞÀ5 €€Àð†¯·
mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶SAMPLE.TIF;1mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶######                                                          mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶mëÛ¶      SELMNU  @      
 * œ   øhP  õM    	 
   ( ( ( ( 	( 
( (   ( ( š TRANSACTION SELECTION - Add Customer Record - Add Stock Record - Apply Payments - Change Customer Data	 - Change Stock
 - Cash Sale - Display Back Orders - Display Customer Data/ - Display Invoice/ - Display Order/ - Display Stock/ - Enter Order	/ - Process Back Orders
/ - Received Stock/ - Ship Order Documentation Examples - Add Customer Rec      ord - Change Customer Record/ - Display Customer Record/ - Delete Customer Record ADDCST ADDSTK APPPAY CHNCST	 CHNSTK
 CSHSAL DPYBCK DPYCST( DPYINV( DPYORD( DPYSTK( ENTORD	( PROBCK
( RCVSTK( SHPORD ADDCUS CHGCUS( DPYCUS( DELCUSƒ #¡           4ÌÈ ŒTP                                                                                 +' Unknown Transaction - Re-select, Please2	ƒ ¡   d” ‘TP                                                                                       0, Unauthorized Transaction - Re-select, Please2	ƒ ¡  DSTK APPPAY CHNCST	 CHNSTK
 CSHSAL DPYBCK DPYCST( DPYINV( DPYORD( DPYSTK( ENTORD	( PROBCK
( RCVSTK( SHPORD ADDCUS CHGCUS( DPYCUS( DELCUSƒ #¡           4ÌÈ ŒTP                                                                                 +' Unknown Transaction - Re-select, Please2	ƒ ¡   d” ‘TP                                              Œ¢’  Ž[ÀÀðp»’¢º           Ž[  fr Ä¸      û         ˜r –O  úO  úO  úO  –O  lM  ÜM  lM   ¤a  ¿ÆQ›   Š<[  ÿ P   ‚ð|¯ä¨hªJ« ¤±                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 ô  ô  ô0 1   ô0 8  ¸2 X¹ªZ¬0 J¬Êµô¤ TI   =¦§     ! ‡ ) u”£7„£K    t¥GÔ4Yx¥  Ô4Y      À            |³ƒ:      À      ¤(   k’¥ 
 n£  Ý Ý               ­                R£         H J Y  (***TRAX DEMO***       
            P ÎZ&    #€     P   ƒ  æ¼¢ÿˆ†÷	7
êÿ÷ÎÿÞÿ÷ÆÿÚÿæ¸¢ÿˆ†÷	ú÷  Dÿæ’¢ÿˆ†÷	èæ"£ÿˆ†÷	Üæ:£ÿˆ†÷	Ð÷	ô÷	@H      INS [300,30]HRDCPY/RUN=REM/TASK=HRDCPY   ÷úÿ/æ£ÿˆ†÷	Šæš¢ÿˆ†÷	~æÒ¢ÿˆ×-Ô[ æì¢ÿˆ†÷	dæÈ¢ÿˆ×-º[ ùæ´¢ÿˆ†÷	Jæš¢ÿˆ†÷	>÷ šÿ‡ ÷	² ÷Üþ?÷% Øþ	÷	Â÷	À÷	À÷	º ÷% ¾þ÷	°÷% °þ÷	¤÷% ¢þ÷	ˆ÷% ”þ÷’þ÷	ü÷	Ê÷|þ÷ zþ÷xþ	·
nþ×-jþ ÷ `þ÷	^÷Rþ7
Lþ÷	D÷
Fþ÷Bþ>þæ°¢ÿˆ†÷	„
w Jÿæ¢¢ÿˆ†÷	t
ÃX£÷	ò÷	„÷	÷	„÷	b÷	"÷	Ø‡                               æ¬¢ÿˆ†÷	(
æÀ¢ÿˆ†÷	
æsÿˆAPPLICATION NAME?APPLICATION NOT FOUND! APPLICATION NAME? ôXÀ Á°¥÷	àþˆ¦÷•       ]‡ þˆ¦÷\fÜÿ‡ þˆH¦ÄÒÿÄå  7  Èÿ7 î- Ÿ- ¦÷®ÿë÷ÿÿ¦ÿ‡ ÷ ÿ÷2Y÷ÀLY÷-d ¹Ø÷-^š¹Ô÷-X”¹Ð÷º¢÷ ºžþˆˆ¦7Š‹\‡ ÷`ÿÀ ÁÂ¥÷	@¯‡                                 !                                                            /Ol|³GOl|³§  KOl|³§…Ol|³ Ol|³DB     ×'& ÿÿæ1ÿˆ  æþ¦ÿˆ×-ÞXøÿ÷ìÿ)æ§ÿˆ†÷	hæ§ÿˆ†÷	\æ§ÿˆ×-²Xøÿù÷% ¾ÿ÷	„7
´ÿ×-˜Xùÿ÷	0÷%  ÿ÷ ˜ÿ‡ O       < Y  V 12-FEB-79 11:17:31                   þˆî§÷• %[‡ æž¢ÿˆ†÷	Ìþˆ¨÷      [Ä÷[À‡ þˆ¨7ŠýZ‡ ÷–ÿ, À¼§Á¦§÷	 Ð•  Â ÷	"È• Ã¶§÷	
‡ ãÿ      Y  AUP :00        HRS ÁÞÿw ØÿÁe< ÁíÎÿ÷ÌÿÈÿw`Âÿ÷å< ºÿ·
¼ÿ÷%< ¶ÿ·
²ÿ7
¬ÿÀV¨Á¦ÿ
÷	ÐÐ•: Á”ÿ÷%
 ŽÿÐ•0 
÷	¶ŠÃN¨÷	z‡ Y! (* IDLE *        Åâ¨þˆR©ÀZÀZð*  7 Zð ð ð5 À ð5  ð5  &  <=   * Ý

  ‡ Äæ¨Åâ¨T%L#Äæ¨Åâ¨Lt  Íõ 
÷ IXÿ÷DLTÿ÷E PÿÀÚ¨A÷	XcA÷	RcÃÔ¨÷	¤‡ Y! 6CPU:33%     QGA½ A½ Àäýp< wäÿÀ 
7rÚÿ7ÜÿÁÆýwpÆýÁmÀý@ÀíÆÿÀm¾ÿw      ¼ÿ7ºÿÁ¾ÿÀ¼ÿÁí²ÿ€Àí®ÿ÷¬ÿ¦ÿ÷¨ÿ¢ÿ7r˜ÿ
pd 7rÿÁd àW d Á
À³©
÷	0Ð•% Ð•  Ð•  È• Ãª©÷	æ‡  ¤
H	H	¤
 Y! ?POOL=1188:1362:28     Áhª

	
þˆ¼ªÄL	t" †	 !m ¡
Q$õ‡ À~ªÄlª7¦ÿ
÷	¬Ð•: 7–ÿ
÷	šÐ•: 7†ÿ
÷	ŠÐ•  Ð•  È• Ãtª÷	D‡ 
  R    ÿÿ  2NY! SCACHE=10:8:82 8:0           NO CALLSþˆV«÷• ½W‡ ÷ÀÿJT÷$TÀ®´Â²ÿ÷	º7˜ÿÀ¢´÷	®7Žÿ÷d Šÿ÷í‚ÿ„ÿ÷í~ÿ~ÿ÷zÿ7
tÿ÷
nÿÀn´Àípÿ÷f´jÿÂ^´Âí^ÿ·Xÿ÷R´TÿþˆÈ«7ŠKW‡ ÷	\7DÿÀ)«Á2ÿ
÷	 Ð•: Á&ÿ
÷	’Ð•: Áÿ
÷	„÷ÿ      Ð•  Ð•  Áÿ
÷	lÐ•: Áúþ
÷	^Ð•  Ð•  Ð•  Ð•  È• Ã«÷	 ÷ÐþÃ@«÷	 ‡ ¦Â”Â% ÷	 ù‚‡ ¿²ö·
®ö·
¬ö÷% ¦ö‚÷	 ‡ ÷  –öæ
£ÿˆ÷êö÷˜÷÷ àø÷|öÜøæÈ¢ÿˆ†÷	÷ öæ´¢ÿˆ†÷	
æš¢ÿˆ†÷	þ÷®ö÷V÷÷ žøæÈ¢ÿˆ†÷	à÷ Êõæ´¢ÿˆ†÷	Îæš¢ÿˆ†÷	Â7
rö7
ö‡     Î¥ æ3ÿˆ÷ NöÖæsÿˆCOMMAND ?ILLEGAL COMMAND! COMMAND?PRINT OPTION NOT IMPLEMENTED.À Á,­÷	`÷%HEB÷	à	÷	ðþñ÷%AP0÷	Vøw 
÷%PR ÷	‚öw ú ÷%NP7
pö÷ º÷æÈ¢ÿˆ†÷	üw Ø ÷%FRî ÀÂ®Àe 
”Áå0 ÁW 	 ×p
 C`ô÷zõT÷%      EX¾ ÷ö	÷ f÷æÈ¢ÿˆ†÷	¨æ3ÿˆ÷ Jõ÷%ME’ ÷ @õ÷	°4÷%SU~ ÷ ,õ,÷%MSn ÷ õ$÷%TS^ ÷ õ÷%TRN ÷	è÷ øô÷%CY: ÷ èô·
èôÀ Á6­÷	8 w æþ‡        Â®           FU      Y6  J Y7  :  ÷âÿ÷Äÿ÷Ê®Èÿ÷ Äÿæ¨®ÿˆ†÷	È 
w°ÿ‚
W¤ üÂ
·¤ÿ÷ªÿ÷ Œÿ÷•0 ”ÿæ¨®ÿˆ†÷	– À'÷  ˆÿ÷  „ÿ÷  €ÿ÷vÿ÷Ò®bÿ÷ ^ÿæ¨®ÿˆ†÷	b ÷ @ÿ÷Â®Dÿ÷ @ÿæ¨®ÿˆ†÷	D ‡ ? FATAL DIRECTIVE ERROR - ERROR CODE IS -         LOCATION:       Á\PÀ®¯
÷	¨ÀÀ¯‚
÷	¨æ¬¸ÿˆæ3ÿˆÁ%'Ð•  Á%èÐ•        Á%d Ð•  Á%
 Ð•  ÁÐ•0 
÷	X‡ Ád ÷	 l@÷	²l‡ 
Ew
 WuöÿÅEÀÿ‡ Y"  J  Y# 3*** TASK MEMORY UTILIZATION DISPLAY *** Y# 4*** TST MEMORY UTILIZATION DISPLAY ***Y# 1*** TST & FORMS MEMORY UTILIZATION DISPLAY ***Y, ( 0*******8*******16******24******32******40******48******56****** Y5 ( 64******72******80******88******96******104*****112*****120*****  r±€  €        TASK OR TST DISPLAY <TASK>?FULL OR HALF MEMORY AREA DISPLAY <FULL>? INCLUDE FORMS YES OR NO <NO>?÷Œñ÷ Žÿ7
ˆÿ)À       Áˆ±÷	Ðü÷ vÿ÷%TS¬ü·
jÿÀ ÁÎ±÷	²ü÷¥Y ”ü·
RÿÀ Á¤±÷	šü7
@ÿ÷¥H xü·
4ÿ÷% 0ÿ÷Àøÿþˆl²÷DZÿ‡ ÷ÿ·ÿÂþþÂ
¡ Ã ƒ
‚ý‚
÷îþÃå Ãå ÂÃ
ý·Ðþ÷å ÔþÁÐþÁ
 
À€
Á
ü7Àþ÷ê°°þ÷ ®þ7
¬þÀ¢þÁ¤þ
÷	 Ð•* È•* ÷e Šþ÷m„þŠþ÷
„þ÷% ~þ÷2±rþå÷pþâ÷% ÔýÃL°÷	2ù×-hþ ÃV°	×-Zþ Ã„°Ã°°÷	ù÷% ¢ýÃä°÷	 ù÷, ”ýÃä°÷	òø÷. ÎýÃ,±÷	äø÷5 ÀýÃ,±÷	Öø‡  ' CEXPAR                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            :d ÷% Âû÷	  ÷% ´û÷	ì ÷	š÷	”‡ þˆÂ¶Åx³Äj  f4½  ù 
5
      
 ô5€  
7 ¨ÿ7 ¤ÿõ 
 5ô5   
  Þô5€  è ô5  
õ  õ:  õ   "7!VÇ÷ Rÿ÷ Nÿó5 € õU 
 ó5  õU 
 @Àe Á&ÿ÷	\VÁ ÿ÷	TV5   ·
ÿÅe ÷%0 ÿÀ¶w .ÿ‡ ‡ Âx³7
ðþþˆØ¶÷• ;L‡ ÷>ôÈHÁ&©C÷2ô¼H÷	Lù7a´HÅå õ¥ 	` L`t` ò 
 õ‹`òU 
 A`÷øó„H÷	ù7a|Hr  r€ r€ Âe ·
vþ×-rþ0 A`C Çþˆ`·7Š³K‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ ‡ æ
æ
*æ
+
æ2æ3ÁE ÿæÂÎE ‚w	 …ŠÂ ‚†Á€Ð•- ŠƒÐŠÂÕ0 @A÷	eW 	 ƒÁe `fÃŠ
ÀÂ€Ã€ÂE ÷	Ôÿ      ”• ‡ JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECw	D…&&÷	` Ð•- ÎeÁe¸P”P”P”Ð•- $w	ð DÅ … ƒ÷	& Ð•.  ÀÀÀ c e÷	hdÀ
…Ð•: ÷	
 Å
ù
Â÷	ÒþB‡   n£  „¯B             Ä¸Ã¸  ÿÿR©`–,      2 À         À&ÿÿÀ                     Àw	T Á( B ‰

C ƒàƒ
ò ñ€€B BÂe ¦æ?ÿˆ‡± B ñÿÿ( 1
< ‡ &æf… Þ	ƒ„…‡ &æ¦ff…
 Þ	‚ƒ„…‡             TÆ  4ÆTÆþÿ8ÂÒÄ   G       tŽ€»  ’¢¤£    ÿÿ    p»    Êµzºzºzºzºzºzºzºzº                 x³ÿÿÿÿÿÿÿÿÿÿ      ÿÿÿÿ¶ÀœÀ¾À  öÀ               R©`–,      2 À         À& À                          ÊµÊµ         ¤£           Ð¿     €  € F   ¦º  ªº     G gº g¸º d½d½d½Š½d½d½d½d½01234567SAMLHCQFX BGIRVED ¾¹Ð¹â¹ô¹ººº º}~ \/'"%
^_@><$=CQ.;-+*,?BEFGKLNOPRSVWXTZM  6¾0¾6¾0¾0¾–¾¢¾ð¾ü¾¿¿ž¾0¼h¿R½L½X½Ô½ð½ê½ø½¾¾p¼ÎÁðÁn¿½"Á¾Á6¿Þ¿¬¼Ô¿pÁ®ÁšÁfÆtÆÐ¼7
8þ7
ìþÆÆœ¹÷8þÀÞþ7Úþ7þ7v÷"þ€Àœ¹


÷þ÷jþæþ÷	xÀOD÷	tÀT:÷	l÷òý€æ ºæ?ÿˆ‡ÀDþ÷	Ê	À>þ÷	Â	7
Œþ&
æô» ÷Ð¿~þ÷¾ý
€      7
¸ý÷	”Àzº
÷	–ý†7Š\þ÷•ÿÿUþ÷	D÷–ý 
w >÷	@÷	@1‡Âw	VÐº‡DÄe¬¹w	FÚº†Ä%  ‡Äeœ¹Dlâº÷	‚
w PÄÀzºÃÅ5 rÂ4 ¾¹Ôû@Â÷	w† ˆÀzº
÷	 ý† ÷‹¿ý÷	ÂV‡tô¹ Â÷	ÆN‡ ÷	Î ÷‹›ý÷	žD‡t@º Â÷	Ž<‡4
@º 
÷	€‡4
@º„„
ø ÂÃÄHýD÷	ÌÀ#ÄEøÿÀ =÷	 ‘Àe0,÷	üÄÃÅýíô¹@÷	ú ÄhüÄ`üÄþü‚
÷	.÷	®Æœ¹÷ªü&ý÷ý÷Ò¿úüw xþÀ ?÷	¨Æœ¹÷ˆüý÷	–7
ÄüÀ•_ ÷	”7ŠÇü

7Š¾ü7
¼ü7
 ü7
šü÷	´w	ÔöºÎ‡Â÷	ry  »·Š—ü÷¥ ‘üw‚üƒá7Š€ü÷• xü÷•þÿpü
      ÝÄ! ­7ô¹`üìÄ! ¥÷‹`ü¢7@º0ü·
.ü7
BüÝÀ À Â7
(ü7
&ü÷üÄ% ‰‡ÄU `÷ ü÷öû
ü7øû7üwü7èû7æûÀ% ÷5 Øû
×f÷	 ù	ŠÅ‡÷	0w ìþ·ŠÕû÷	$÷‹Íû÷¬û¨û7ŠÁû÷m¢ûœû÷˜û˜û÷	fÀŽû÷	À¡û€ œöº÷	ZÄxû
7Š†û7
„ûw Ðþ÷	Ö÷ífû`ûá÷	$ ‚b‚
‚
·PûÜ÷	 ‚ù÷	 ’Á

B`ñ÷	¢÷% 0ûÂ&û‡ ÃÅûDáÄå À _÷	æ &÷	ðÀ•> ÷	Ü€€÷	àw <þ ú ˆÂ74ú7Šúú÷• óú7Šîú÷U "ú÷‹æú÷E ú÷	´7Žæ
úæú÷ºú÷
´úær@÷Äú÷	Xæeÿˆ÷	n·Z@ ¨ú  À• 7˜ú7Š’úÀúÂÂÄ 0Ð¹×­{ú Â÷‹tú      ¿·Šlú÷U  ùÆ·˜ù·–ù7ò÷‹Uú÷‹Nú­÷‹Jú÷	6Åvù÷‹;ú#Ä6ú÷• -úw)0úÄ t!¾¹Äå úÄMCÕwBù7‘úô
Ð¹Á´
Ð¹„Äe0B7ðù÷	ªÀèù÷	¦À: ÷	¤@÷	> ·xù·rù·lù÷MPÂù÷•ÿÿ¿ù¬÷OD´ùøæd?÷	Pæcÿˆ÷V?ªù·P?÷	\·„ù·
‚ù÷BEˆù7Š‡ù÷IO|ù÷ILtùØ÷EMlù÷TRdù÷FP\ù·üø÷• Uùw ìþÂ7ŠøÃw€ø÷¥ 7ù
÷(ù÷ØøRùÀ÷	ê÷	¶æ
÷	f÷	º÷	^÷	ÌŽ
Î% øò÷	  À ÁŠÁÂºRÀ
ý‡ ¶ÀœÀ¾ÀîÀöÀþÀÁÁ÷	æ3÷	pÿˆ÷	Š ˆ÷	F÷	
ý÷	\ú÷	6÷	ú ý÷	Lú÷	&÷	ê 	@÷	@‘À÷	ô÷	*ñ
÷	÷	Æ ‚Ä®÷      ÷røXø÷	Àõ·Œ÷·”÷Æ¨¹f&æ¦f¦)w	š²º€ ÷¾ÀÖ÷w	Œ¬º–%‚ƒ„…Æ`÷æP÷€ Ä 4¾¹â¹üø¾¹Äå ÷‡ 
<â¹¾¹ÔÄ% ù†‡ Ä! ‚Ä¡ ‡ ± ‡ ÷	èÿ‡ôÿÿô¹„‡ 
÷	êÿû‡„
ûÄ% í‡4¾¹4â¹ô Ð¹ÔâÀ²÷7`’÷÷-Ž÷æöƒ ÷	Ø ÁÐö@@@PÀÈö@
@‡ Àe Àmd÷ðÂ7®öÃw¨öÅ¦öÀf÷àwD÷‡ ÷	À:÷÷	´ÀM÷€ œöº÷	Á?÷@fù	ŠÅ…‡ ÷‹(÷
Äm ÷7÷7Š÷‚
‡ æÃ÷ÃÃÃÄ`ÃÃÄ`ƒî

÷	ü À¥0 !‚À¥7 ‡ÀEøÿÄÄÄ`‚
ðA	 AåÁÑ‹ùÕ± … Ã¨ö·ªö÷	8 €†À’À÷	N ‡ ÂÀŒö÷Šö
Ã~ö÷	 À5þÿ‘÷	& ‡ ÷tö÷ª;Rö÷      „;Nö·
Lö÷x;÷Zö’;‡ ÷:ö÷0ö„;÷,ö^;7
(ö‡ À
÷	 À ÷ Xö7höæà;æÔõ·Löæ”º÷	Àÿˆ÷	Ú÷	"‡æ)÷	¬ÿˆ÷	Æ¡ ·°;‡ ÷ ö÷	ÀÿÀ$ö÷öÀö 
 w	þþòº‡À•$ ÷	’ÿ a  z Àå  À¥  À•+ ‡ æ`;f÷	Jÿˆ÷	d·P;… &Î%œ¹%‚Î%º"‡À$ ÷	JÿÎ%¾¹	ƒ€Àåœ¹€ œÈºÀU  –
N,äº‚Ñû€@ìâº€Àe0 ÷	ÿ@œÚºë÷Œô	„÷	° NÀe0,÷	ðþ€7pôÃ Äþÿ	7
bô7^ôÃ ÄÿÿÀ &Äe  
N@Ä
üÀe0 ÷	¼þÃ
óÀ•  Öw ®þRÅDÅ ÅšÅ”Å÷	 ÷	šþÀ ÷	”þÀ•  îÅ ÂÜÅ 
r  Àe  Àe Àe	 Àe	 ÷	bþÅ
í‡ @(  Ätô 
æÿÿ  
‚,ô¹‚ìô¹      B ‚Ðó€‡ €À÷÷‹dôf&Å ÿÄ€º÷	. Å€ÿ÷	& ÷‹Dôf&Ä ÿÅ€º÷	 Ä€ÿ÷	 „…‡ TTTTT‡ 7ŠôÂ7‘ô 7ŠôÂ7‘ÿó ¡ ÷‹÷óŽæ–9÷	‚ÿæ†óæÿˆ÷% ‚9÷÷	Œÿ·x9± ‡               20*****Y5 ( 64******72******80******88******96******104*****112*****120*****Y  (***TRAX DEMO***Y  V 12-FEB-79 11:17:31Y  AUP :00        HRSY! (* IDLE *Y! 6CPU:33%  Y! ?POOL=1188:1362:28  Y! SCACHE=10:8:82 NO CALLS**88******96******104*****112*****1  Â§          „0a                        „    ïf  ïf  ""            „                                                                                                                                                                                                                                                                                $                 ÀD¡÷Ðþ¸þ7
èÿÀ<¡7 Üÿ7†þÀ¡÷	Âû‡ÀÊÿx Ü¥Àn`Àe
 ÂƒC üÊ° ÷8þ‡ ‡þˆ¼¢÷‚i÷-B`ziw L‘Á6`wliñU  A& ñU  À"`°
 ‡ þˆ$£÷-`Hi7
BiÁ`ñE  A& ñE  ÷$i÷	Ì‡ Àä_    0  û  €ì        ÷	¢y€l ÁE ÿÀ
÷	. ‡ &÷	¢ — . ”€÷	˜ Ö‡ æ
æ
*æ
+
æ2æ3ÁE ÿæÂÎE ‚w	2…ŠÂ ‚†Á€Ð•- ŠƒÐŠÂÕ0 @A÷	yW 	 ƒÁe `fÃŠ
ÀÂ€Ã€ÂE ÷	Ôÿ”• ‡ Â
 Â w	Ê 
”Å¥  üÅ¥	 ùÅå0 B¡†€÷	žx Aa”ôœÿÿ‡ ×'& ÿÿæ1ÿˆ ‡ ¢ 8‡w	~ ¦Â, „
 ƒ‚ Ê± *°,  °,  aóÊE  ! ‡„ ôE € 

¢ ‡ ¢ ‡ Ãe ææ
Ü Þ	Þ	‚‡  ò¤ 	@¤ r¥4¥&æf… Þ	ƒ„…‡ ‡     Ü¥  ò¤êh,`€Ü¥	  ò¤¥„0aÜ¥  ò¤"¥""0aÜ¥   ò¤¥t	0a  ¦Ê5 ‚       ú‚‡ ò û¦¦‚
 Ž 
Ê5 ùÊU Ž ‚öÖ‚åÊE ¡ Ê5 @-&
¦ÎE ð&
&
¦ ¦ fÅ, &Ã‹DÄe æÎ f  ææÿˆ	‡Ã‹
æ æ)ÿˆÌ‹€ÊU ± ‡   â§ Ÿ ABORT , ALLOCATE  Ð APPEND  	 ARCHIVE K	 ASSIGN  » BASIC  COBOL ( COPY  • CREATE     DATA 
 É DEALLOCATE  É DEASSIGN  Ô DELETE 	 z DIRECTORY { DISMOUNT  é EDIT     EOD    EOJ Ô2 HELP     IF 
 y: INITIALIZE     JOB	 jL LIBRARIAN vL LINK  _M LOGIN _MLOGOUT  kQ MACRO R MERGE R MESSAGE ­S MOUNT    ON  Ùf PRI      NT Zg PURGE Uq
REMOVE  Vq RENAME  Ös RUN œw SET x SHOW  *y SORT  áy START ïy STOP  
z SUBMIT  ø€ TYPE  |… UNLOCK   t	
>\
>[    @           7
ùÀù÷Bù÷	FÀúøðE 
 7
îøþˆü¨÷ùæ ÷*ùÎ ÀîZÀe8 ÷	Šk€÷	ö™7
âøÅØZ÷	V{7
òø7
þøÁÈZÁe
 A÷5 @dÅ´Zw ÷5 þcÀ¤ZÀe8 
E, ÷	6kÀ ÷	 ™w Ö™CÓÓ5 æË¥ Ë¥ Ë¥ö ƒ
õÖ ã¥- EÉw6ø÷	Úù@ ÀE   0  û7øÂ2Z2 ÷5 |c	8 w, þ÷wø‡ Àò÷ð5  Á þˆò§w te÷	¶ÀÞ¥ÁJ¡BÂ

É¥@ 	÷|	4ùÀÀ§w Jùw ¢þ      ÷	†À€À oÀ lÈÀ gÂ÷ð¥
  ò5 
 È%_Mð‹ À4 Tò* òüÿð‹ €ò5 
 À+ D7¾øÁœ÷Áe 7
þþˆÈ©÷	fd7¤øwþ‡ ÷ þÀ -ÁF¡ÀŠøPPBP‚
‚PÂ
ý÷R÷"÷÷	ä 7D÷
þˆ2ªÀ`ø Áe w xd@Àe
 ÁJøþˆ&ª÷	:i‡ 7
Èöw ´ý7÷÷H¡ºöw @øÀø Ð Ð Ð Ð¡
Ážöñ5  
 ÐÂ§Ð ÐÅ§Ð 
æö ÿˆ+‡æØ§ÿˆ'‡æ€&
æ+ÿˆæÿˆ‡æÎ§æ'ÿˆ÷5€(ý€÷
 Jö7
Jöæö ÿˆ÷ :ö÷ 8ö‡æ æ)ÿˆ7
*ö‡       ÷6öˆ÷Ã¡Ëã|³þˆ¶¬
÷	•‡7ŠÚÿÃ×ª÷	 øÀÖªÁæõA  Hœ ÷	 –Ã¡ËF÷s ÷	Ð”†Å÷ ¤ÿ‡ ð €
      p÷ ’ÿ7Œÿ‡ A& D
 ô5   òõ5   ÷5  ö`êÁ@ ÷	®b†÷ \ÿ‡ C
ÓÑ”ŠÓ‹
Ñ‚õÑ€õB
‘B
‘

ÑHõ
Ñ Ãe ÉÑEÿßÉÑEÿ.ÑÑÑÓÑ
÷5 Œ`
B
‘Ãe Ñ
B
‘÷5 p`B
‘

A ñ 1¬    ‚Eõp 5 0œ   &ÂÌô* C÷5 .`ò5 
 üÿ÷	Ê˜€†Å5  Á@ ÷	.bw âþ÷°ô&À¢VÀe8 ÷	>g€Àe8 ÷	àf€ÁôñÞõ 7
†ôÅðU   ×-Îõ„÷ŽôðU  7(þ7
&þ‡ ÁþÀþ×-¦õ|	@
‡     7
^ô7
ôÿ7
nô7
îÿ÷ôbôþˆ­Á VÁe
 AB ‚ ²  ûÂ-îóõw õÀâó$ÁJ¡CÁbÁe ÂP ÷¦ÿ!È¥$ È¥  È¥	 È¥a ‚      ÈÅ  È¥M ð¥a  ‚ðÅ   ð¥C  ·
jÿ€
ß	”É¥	 É¥  .É¥! 
È¥ òÈ¥ ïÐ¥! ÷ëÉ¥a É¥z ÉÅ  ‹

Â
Þ÷ÿøÈ¥/ ØÈ¥, Õñ¥  ÿÿÑñ¥, ÿÿÍÉ•  çÉ¥ ·RóËá¥  Iœ Á
Ë
ð¥- þÿ·ÎþË
á¥- ûþˆ­ÀâòÁT ÷	r`w Îþ
‹
þˆ:®ÀÊòÁT w Z`Áàò1
 ‡      /:,+-  7
îÿf÷ìòæÿ÷	| †Àÿÿ÷ØÿÚòw f ÂÀÃe ÷	^ ‡S¤Â
ù÷	P †÷®ÿ 
Á¬ò–‡ ƒ`ÃE Ëã÷’ÿòÀÿÿ÷†ÿ·
€ÿƒ`ƒ
ÃE ÂäÃe w ¤ÿ 
Î ß&À@®È‹P¢üwXò± €‡ w ¤ÿ 
Î ß&À@®È‹P¢üwXò± €‡                                                                                                                                                                                                                                                     t  4
  4
 1
 ÷	’ 7‡4
 t " ñ58  1"  ÷	h'†ð•æÿ* ô  f÷	R‡& & ÷	, ó‡& &  ÷	 ì‡1   1  1  1
 Ô± ‡ ¶-  —- NÀö ± ¶ ‡ ÷	n…&
&Îe æû
ƒæ&ƒÂ Áe Äe  TTTÁ ÷	&F‡ ÷	6$ E Äe ÷	  …

W¥* Å
æ00¦€¦N£‡W£7 ‚P•ùÀå ÷	ìwtþÿÆe ‡ ABDEFMNOPRSTUXYZ      <>ýÉÊÊ.ÊFÊqÊ4Ê‹ÊœÊ¢ÊÈÊÓÊ@Ê:ÊâÊ.Ë:ËeÊÊw	ì&D…•Â¥% “ùŠÀåB‡ & Ð¥V A ÷	þåÀ
ÀCƒ
Â 2£WÉÂ
û„
Â¦jÉŽ‡AÎÞ	ÖÐÐ•% „ Ì¥V å‡ P”Ã
ý‡ Ð•  B”f‚÷	2åÃ
õ‡ æ£W=æ W:æ ×7æµe4H”ÈÅ€ ¢  ¢ È•  €
Ã
ò‡ ÷	h Š€‡ Ð• Ã
ü7
ê‡ Ð‹Ã
üÀ
‡ Ð• Ð•
 ·
ÐÃ
ø‡ æ©Wæ¦×Ð•	 A¦
NÞ	Ã
ö–
‡ æ WôA÷	&BÃ
û‡ Ð•  Ã
ü‡ Ð•	 Aæ ÷	BAÎ
ûÖÂ	 ÷	$ Ð•. ÷	ðAÂ ÷	 AÐ•; 
÷	4äÃ
à‡ Â
ýð¥  ÿÿùÀ
øAá÷	® E‡ AáÂ÷	Î E‡ &æ¦f&¦
 v Þ	€‚ƒ„…      ‡ w	2êÄ'Å
 ÂÅU D$†BA ÷	¶&Â (÷	 ÅU Â  ÀBQ÷	ºãÂ Ð•* Â
ü‡ JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECw	¸éD…&&÷	` Ð•- ÎeÁe½ËP”P”P”Ð•- $w	ŠéDÅ … ƒ÷	& Ð•.  ÀÀÀ c e÷	®PÀ
…Ð•: ÷	
 Å
ù
Â÷	ÚâB‡   ) ß	°"¶PÕß	°B¶PÕß	°B¶vÕß	°B¶ÊÕß	°R¶PÕß	°R¶ Öß	°b¶PÕß	°r¶PÕw	é÷	( ‡÷	L‡ w	ôè÷	 ‡÷	B‡ w	äè÷	 ‡÷	8‡ ð * w l w	ÊèæÎebw ¤ÁeB Éð8 ÷	J ‡ $ & w	œèð * ÷	v‡÷	Ü‡÷	ê‡ w	€èð * D÷	tÂÕÂ
ýw ˆw	bèfB C 	œ" ¦æ&      æÿˆ	‡÷	l †Â  ÃSYîð& * ‡ Å° p0 p2 q 1 0Š= ðµ   f&
&Îe< ð < æƒ
Á ÷	œÆe ð < ð• * ‡ Á( Áe œ" f¦æÿˆ‡DC’B A ‡ Ä Ä Ä 	ðµ  f÷	ð> €5>  õE € u
 ÷	˜‡ ñ  ±
  ‡ æ¦CÃe ÷	$‡Ä BÂe
 Ã¦÷	`‚Ã DÄe 
4
 ÷	 ‡w ¼ð•Ìÿ* ‚ƒ‡ ð * ¦÷	®þ‚'‡ðµ  ðµ  f f f
 f f þ	
 ± ± ±
 ± ± ñÿÿ ñÿÿ 1
 –
‡ w	¶æð * ðµ  w l ðµ  úðµ # öÂò 
ñU@  ¦Âe ÷	ÿ‚‡ ÃÄ Ä% ñ,  ñ,  
ñ  ñ        ñ  ‡ æÎeÚþw ¢ñ  ñ  1
 ‡ w	"æð * DÅ 
Å
ýæ¦!… ‚  ñU€  q• q• Âå C
Ó¥: „
Â
úÄCÃe ÷	Î‡Ãñ  ñ  ÷	Rýð•Éÿ* ‚ƒ‡ w	¢åð * æÂƒ
 ‚ æ¦yÄ”Ä%. &Ä%; @Â
÷ƒ
ñ5À %ñ5@ <… ÄDáÄ
Í¥* CÃe ÷	L‡XÄ% w ð ñU  Oñ5 @ ƒ
âñU € Ä„í Ä

ñU  þ¥*  ñU   Ä Å	 ñU@ ñ5€ åÄ„í Ä

ñU  þ¥*  ñU  Ä Å ‚ ö ƒàÎàÃ
Ê¥* Ã% C!-D`÷	’)‡ƒ ‚†Æe C Ã5 €ñU  ‚Ã5 	±  ±  ±
 
 Ã5€±  Ã5@±  ‡                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 •  kQÁ› 8$     °   ;; MACRO TO CONVERT MEMORY 32. WORD UNITS IN ARG INTO; SCREEN SPACES IN THE X-DIMENSION.;	.MACRO	CNVR	ARG,?A	ADD	SYSRND,ARG	MOV	SYSHFT,SYSTMPA:	ASR	ARG	DEC	SYSTMP	BNE	A	.ENDM	 °          ƒ  kQÁ› 8$        	.TITLE	TPC - TRANSACTION PROCESSOR CONTROL UTILITY	.SBTTL	.IDENT	/V1.0/;;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	TPCTRL - TRANSACTION PROCESSOR CONTROL UTILITY;; AUTHOR:	C.PAUL;; DATE:		3-MAR-78;;; EDITS:;;	CP 6/9/78;	ADD WORD FOR TP PARTITION SIZE.;;	CP02: 7/10/78;	GET TASK P      ARAMETERS. IF DEFAULT UIC IS NOT PRIVILEGED THEN CRAP OUT.;;	CP03: 7/27/78;	AFTER SPAWN FAILURE CLEAR TPDEF STATUS OF TP. CORRECT HERALD AND;	.IDENT TO V1.0.;;	CP04: 10/4/78;	RD, THE HI-PERFORMANCE RMS DEFAULT POINTER, GETS INITIAL VALUE = 0.;	THIS IS SIGNAL TO QINS THAT NO PREVIOUS DEFAULT HAS BEEN SPECIFIED.;;	CP05: 2/28/79;	RESTRICT TPCTRL TO RUNNING FROM BATCH OR TT0:.;	.PAGE	.SBTTL	TPCTRL - DATA STRUCTURES;*******************************************************************************;;;		D A T A    S       T R U C T U R E S;;;*******************************************************************************	.MCALL	DIR$,EXST$S,GLUN$,GTSK$,PUSH,POP	.ENABL	LC	.NLIST	BEX	SDATDF				; DEFINE SEND DATA BUFFER OFFSETSGTASK:	GTSK$	OUTBUF			; GET TASK PARAMETERS DPB FOR TESTPRGTLUN:	GLUN$	13.,OUTBUF		; GET LUN PARAMETERS DPB FOR TESTVT ROUTINEVTBIT::	.WORD	0			; =1 IF RUNNING FROM VT: , ELSE =0					; TRANSFER TABLE TO TPCTRL FUNCTIONSJMPTBL:	.WORD	STARTE,STORTE,REMRTE,INSRTE,BRERTE,EXIRTEJMPLOC::.WORD	0			; NEXT PROMPT EN      TRY POINTRNMTBL::.BLKW	9.			; RECORD NUMBER TABLE;; OUTPUT BUFFER FOR $EDMSG TYPE I/O; ALSO FOR TESTVT'S GLUN$;OUTBUF::.BLKB	80.SNDBFR::				; SEND DATA BUFFER - 1ST 6 CHAR = TPNAMETEMPTP::.BLKB	6			; TEMP STORAGE FOR TP NAME	.BLKW	10.			; REMAINDER OF SEND BUFFERTEMPLN::.WORD	0			; LENGTH OF TP NAME - USER'S RESPONSEEXSTAT:	.WORD	EX$SUC			; EXIT STATUS VALUE - DEFAULT IS SUCCESS	.PAGE	.SBTTL	SPAWN DATA STRUCTURES;*******************************************************************************;;;		SPAWN DATA       STRUCTURES;;;*******************************************************************************	.MCALL	SPWN$,STSE$,SDRC$;; SPAWN DPBs;SPWN:	SPWN$	MCR...,,,,,EFN,,ESBSTSE:	STSE$	EFN			; STOP FOR EVENT FLAGEFN	=	1			; EVENT FLAG #ESB:	.BLKW	8.			; EXIT STATUS BLOCK;; SEND DATA DPB;SENDCT:	SDRC$	,SNDBFR,EFN,,ESB	; SEND DATA, REQUEST, AND CONNECT;; SPAWN COMMAND LINES;SPWCMD:	.ASCII	\INS [1,54]TP\		; SPAWN FOR TASK INSTALLATIONSPWTSK:	.ASCII	\XXXX\			; TASK SPECIFIER	.ASCII	\/TASK=TP\SPWT2:	.ASCII	\XXXX\			; TASK       SPECIFIER	.ASCII	\/EST=NO\		; GET STATUS FROM MCR INSTALLSCMDLN	=	.-SPWCMD		; LENGTH OF COMMAND LINEREMLIN:	.ASCII	\REM TP\		; SPAWN FOR TASK REMOVALREMTSK:	.ASCII	\XXXX\			; TASK SPECIFIERREMLEN	=	.-REMLIN		; LENGTH OF COMMAND LINE;; TPCTRL TASK SPECIFICATION PARAMETER BLOCKS;	.EVENINSSPC::				; INSTALL BLOCK	.ASCII	\INST\			; LAST 4 CHARACTERS OF TASK NAME	.RAD50	\TPINST\		; TASK NAMESTASPC::				; START BLOCK	.ASCII	\STRT\	.RAD50	\TPSTRT\STOSPC::				; STOP BLOCK	.ASCII	\STOP\	.RAD50	\TPSTOP\REMSPC::				;       REMOVE BLOCK	.ASCII	\REMV\	.RAD50	\TPREMV\	.PAGE	.SBTTL	I/O DATA STRUCTURES;*******************************************************************************;;;			I/O DATA STRUCTURES;;;*******************************************************************************	.MCALL	OPEN$M,GET$,PUT$,CLOSE$,TPFDEF	.MCALL	FDOFF$,FSRSZ$,FDBDF$,FDRC$A,FDOP$A	TPFDEF				; DEFINE TP RECORD OFFSETS	FDOFF$	DEF$L			; DEFINE FDB OFFSETS	FSRSZ$	1,512.			; 1 FILE OPEN FOR RECORD I/O .FDB::	FDBDF$				; FDB	FDRC$A	FD.RAN,TPREC,TPRSZ	;       RANDOM GET$ AND PUT$	FDOP$A	1,DSD			; LUN = 1, DATASET DESCR = DSD DSD:	.WORD	0,0			; DSD FOR TP FILE	.WORD	UICLEN	.WORD	UIC	.WORD	TPFLEN	.WORD	TPFIL TPREC::	.BLKB	TPRSZ			; TP RECORD BUFFERUIC:	.ASCII	/[1,1]/			; UIC FOR TP FILEUICLEN = .-UIC TPFIL:	.ASCII	/TPDEF.TPF/		; FILE NAME STRING    TPFLEN = .-TPFIL 	.EVEN	.PAGE	.SBTTL	DIALOGUE DATA STRUCTURES;*******************************************************************************;; PROMPT, HELP, AND DEFAULT MESSAGES, AND LIST ELEMENT TABLES;;	The 1st chara      cter of dialogue symbols is question specific. The;	second and 3rd characters if they exist depend solely on function.;;	For prompts:;		x	for labels;		xL	for string length;;	For defaults:;		xD	for labels;		xDL	for string length;;	For help texts:;		xH	for labels;		xHL	for string length;;	For list element tables:;		xE	for label of 1st word in table;		xEC	for element count = # of element in table;		xEL	for element length = # characters in each list element;;;****************************************************      ***************************;*******************************************************************************;; GLOBAL DEFAULT INFO;;; NULL DEFAULT;NULLD::	.ASCII	\? \	.BYTE	0,0NULLDL	==	.-NULLD;; YES/NO DEFAULT JUNK;	DEFALT	YES,<YES>,GBL	DEFALT	NO,<NO>,GBL	LISTT	Y,<YES>,GBL		; YES/NO LIST	LISTT	Y,<NO >,GBL	.EVENYVTR::	.WORD	YESD,NOD		; DEFAULT PTRS VECTORYLVTR::	.WORD	YESDL,NODL		; DEFAULT LENGTH VECTORINVERT::.BYTE	1,0			; if YES then 1 else 0;; INSTALL DEFAULTS;PARSIZ::.BLKW	1			; SIZE OF TP PARTITION IN 3      2 WD BLKS									;***CP01PARNUM::.BLKB	1			; ASCII PARTITION NUMBER	.EVENTD::	.WORD	NOD			; TRACETDL::	.WORD	NODLWD::	.WORD	NOD			; WRITE PROTECTWDL::	.WORD	NODLRD::	.WORD	0			; HIGH-PERFORMANCE RMS, INITIALLY 0*CP04					; TO SIGNAL QINS 'NO PREVIOUS SPECIFICATION'RDL::	.WORD	YESDLFD::	.ASCII	\<LATEST>? \		; FORMS DEFINITION FILE VERSIONFDL::	.WORD	10.			; LENGTH;; START DEFAULTS;JD::	.WORD	0			; JOURNAL: NO INITIAL DEFAULTJDL::	.WORD	NODLLD::	.WORD	NOD			; LOGLDL::	.WORD	NODL;; STOP DEFAULTS;ID::	.ASCII	\      <0>? \			; INITIATE STOP TIME	.BLKB	1			; AN EXTRA BYTE IF DEFAULT IS 2 CHARSIDL::	.WORD	<.-ID>-1AD::	.ASCII	\<10>? \		; INITIATE ABORT TIMEADL::	.WORD	.-AD;*******************************************************************************;; GLOBAL HELP TEXT DATA;NH::	.BLKW	1			; POINTER TO CURRENT TPNAME HELP TEXTNHL::	.BLKW	1			; LENGTH OF CURRENT TPNAME HELP TEXT;*******************************************************************************;; COMMAND QUERY;	PROMPT	C,<Command>	DEFALT	CB,<BRIEF>,GBL		; COMMA      ND DEFAULTS CHANGE: HENCE 2	DEFALT	CI,<INSTALL>,GBL	;	INITIAL CHARACTERS	DEFALT	CA,<START>,GBL	DEFALT	CO,<STOP>,GBL	DEFALT	CR,<REMOVE>,GBL	DEFALT	CE,<EXIT>,GBL	.EVENCD::	.WORD	CBD			; INITIAL DEFAULT IS BRIEF INSTALLCDL::	.WORD	CBDL			; INITIAL DEFAULT LENGTH FOR BRIEF					; ORDER OF THE LIST TABLE ELEMENTS MUST					; BE SAME AS IN JMPTBL. THE LABELS ARE					; FOR DEFAULTS DEPENDANT ON PROGRAM FLOW	LISTT	C,<START  >		; START MUST BE 1ST IN LIST	LISTT	C,<STOP   >		; STOP MUST BE 2ND	LISTT	C,<REMOVE >	LISTT	C      ,<INSTALL>	LISTT	C,<BRIEF  >	LISTT	C,<EXIT   >	HELPI	C,<Enter one of the following commands:>	.ASCII	<CR><LF><LF><TAB>/INSTALL/<CR><LF><TAB>/BRIEF/<CR><LF><TAB>	.ASCII	/START/<CR><LF><TAB>/STOP/<CR><LF><TAB>/REMOVE/<CR><LF><TAB>	HELPT	C,<EXIT>	.NLIST	ME		;***************** TEMP *************??????????;*******************************************************************************;; TP NAME QUERY;	PROMPT	N,<Transaction processor name>	.EVENND::	.WORD	NULLD			; INITIAL DEFAULT IS NULLNDL::	.WORD	NULLDL			; IN      ITIAL LENGTH OF DEFAULTTPDL::	.WORD	10.			; INITIAL LENGTH FOR USER SPECD DEFAULTTPD::	.ASCII	\<\			; TEMPLATE FOR USER SPECIFIED DEFAULT	.BYTE	0,0,0,0,0,0	.ASCII	\>? \	DEFALT	NALL,<ALL>,GBL		; INITIAL DEFAULT FOR STOP/REMOVE = ALL	.PAGE	.SBTTL	ERROR MESSAGES;*******************************************************************************;;; E R R O R     M E S S A G E S;;;*******************************************************************************M1::	.ASCIZ	\Transaction processor %VA has not been define      d.\M3:	.ASCIZ	\I/O error on file [1,1]TPDEF.TPF. Error code = %D\M17::	.ASCIZ	\A TPCTRL function is in progress on transaction processor %VA.\M19:	.ASCIZ	\Failed to open [1,1]TPDEF.TPF file. Code = %D.\M21:	.ASCIZ	\Command specification not unique.\M23:	.ASCIZ	\Internal dialogue error. Index = %D. Code = %D.\M24:	.ASCIZ	\Default UIC is not privileged.\;; NOTE: INTERNAL ERROR #1 => SPAWN INSTALL ERROR;			2 => SPAWN FAILURE;			3 => POST-SPAWN, SEND, REQUEST, AND CONNECT FAILURE;			4 => TALK DSW VALUES;			5 =>       FAILED TO REMOVE TASK;M27:	.ASCIZ	\File [1,1]TPDEF.TPF is locked.\M28:	.ASCIZ	\%VA is not a valid transaction processor name.\M29:	.ASCIZ	\TPCTRL must be run from TT0: or Batch.\									;***CP05	.PAGE	.SBTTL	MESSAGES;; HERALD MESSAGE;HERALD:	CRLFLF				; DOUBLE SPACE	.ASCII	\TPCTRL V1.0\	CRLF				; ASCII CARRIAGE RETURN, LINE FEED	.ASCII	\Transaction Processor Control Utility\	CRLFLF				; DOUBLE SPACEHERALN	=	.-HERALD		; LENGTH OF HERALD	.EVEN	.PAGE	.SBTTL	TPCTRL	- MAIN PROGRAM;*****************************      **************************************************;;  T P C T R L;;	PRINT HERALD MESSAGE. IF RUNNING FROM A VIRTUAL TERMINAL, SET;	A FLAG TO INDICATE EXIT WITH SEVERE ERROR ON ANY DIALOGUE ERROR.;	PROMPT FOR COMMAND. IF COMMAND NOT UNIQUE (S OR ST) TYPE ERROR;	AND REPROMPT. OTHERWISE CALL APPROPRIATE PROCESSING ROUTINE.;	CONTINUE PROMTING FOR COMMAND UNTIL EXIT OR CONTROL Z IS SPECIFIED.;;;  CALLING SEQUENCE:;;	RUN $TPCTRL;TPCTRL::;; IF DEFAULT UIC IS NOT PRIVILEGED or TI: IS NOT TT0: THEN EXIT SEVERE;	CALL      	TESTPR;; PRINT HERALD;	TYPE	#HERALD,#HERALN		; TYPE HERALD MESSAGE;; TEST IF RUNNING FROM VIRTUAL TERMINAL;	CALL	TESTVT;; PROMPT FOR COMMAND: GET TPCTRL FUNCTION;CMD::	SPEAK	#C,#CL,CD,CDL,#1,#CH,#CHL,R2,R3,R4,CMDEXI,CTZ,BAD,#CE,#CEC,#CEL	DEC	R4			; R4 := '0 BASED' INDEX FOR RESPONSE	BNE	30$			; if RESPONSE IS NOT 'START' then CONT.	CMP	R3,#2			; if RESPONSE LENGTH >= 2 CHARACTERS	BGT	30$			; then CONTINUE: CMD UNIQUE: START					; else COMMAND NOT UNIQUE: S OR ST	DERROR	21			; TYPE ERROR MESSAGE	BR	CMD			;       REPROMPT30$:	ASL	R4			; R4 := WORD INDEX INTO JUMP TABLE	JMP	@JMPTBL(R4)		; GOTO APPROPRIATE DIALOGUE ROUTINE;; SET DEFALUT COMMAND = INSTALL, THEN PROMPT FOR COMMAND;CMDIN2::CALL	CLOSE			; CLOSE [1,1]TPDEF.TPFCMDINS::	SETDEF	C,#CID,#CIDL		; COMMAND DEFAULT := INSTALL	BR	CMD			; GOTO PROMPT FOR COMMAND;; SET DEFALUT COMMAND = BRIEF, THEN PROMPT FOR COMMAND;CMDBR2::CALL	CLOSE			; CLOSE [1,1]TPDEF.TPFCMDBRE::	SETDEF	C,#CBD,#CBDL		; COMMAND DEFAULT := BRIEF	BR	CMD			; GOTO PROMPT FOR COMMAND;; SET DEFAULT COMM      AND = START, THEN PROMPT FOR COMMAND;CMDSA2::CALL	CLOSE			; CLOSE [1,1]TPDEF.TPFCMDSTA::	SETDEF	C,#CAD,#CADL		; COMMAND DEFAULT := START	BR	CMD			; GOTO PROMPT FOR COMMAND;; SET DEFAULT COMMAND = STOP, THEN PROMPT FOR COMMAND;CMDSO2::CALL	CLOSE			; CLOSE [1,1]TPDEF.TPFCMDSTO::	SETDEF	C,#COD,#CODL		; COMMAND DEFAULT := STOP	BR	CMD			; GOTO PROMPT FOR COMMAND;; SET DEFAULT COMMAND = REMOVE, THEN PROMPT FOR COMMAND;CMDRE2::CALL	CLOSE			; CLOSE [1,1]TPDEF.TPFCMDREM::	SETDEF	C,#CRD,#CRDL		; COMMAND DEFAULT := RE      MOVE	BR	CMD			; GOTO PROMPT FOR COMMAND;; SET DEFAULT COMMAND = EXIT, THEN PROMPT FOR COMMAND;CMDEX3:	TST	(SP)+			; CLEAN STACK BEFORE CONTINUINGCMDEX2::CALL	CLOSE			; CLOSE [1,1]TPDEF.TPFCMDEXI::SETDEF	C,#CED,#CEDL		; COMMAND DEFAULT := EXIT	BR	CMD			; GOTO PROMPT FOR COMMAND;*******************************************************************************;; EXIT ROUTINES;EXIT:	CALL	CLOSE			; CLOSE [1,1]TPDEF.TPF	BR	BYE			; GOTO EXITCTZ::	CALL	CLOSE			; CONTROL Z EXITEXIRTE:					; NORMAL EXIT: 'EXIT' COMMAND       SPECIFIEDBYE:	EXST$S	EXSTATBAD::	FERROR	23,#4,$DSW		; FATAL 'SPEAK' ERROR	.PAGE	.SBTTL TPNAME DIALOGUE SUBROUTINES;+;;  S U B R O U T I N E S;;	ROUTINES TO GET TPNAME AND FIND STATE OF SPECIFIED TP.;;;-;;*******************************************************************************;; T P N A M E;; PROMPT FOR TP NAME. COPY TP NAME TO TEMPORARY BUFFER WITH BLANK FILL.;; ENTRY CONDITIONS;	TD -> DEFAULT TPNAME STRING;	TDL = LENGTH OF DEFAULT TPNAME STRING;; EXIT CONDITIONS:;	TEMPTP = 6 CHARACTER TP NAME - BLA      NK FILL;	TEMPLN = # CHARACTERS IN USER RESPONSE;;TPNAME::	SPEAK	#N,#NL,ND,NDL,#-1,NH,NHL,R2,R3,,CMDEX3,CTZ,BAD	CMP	R3,#6			; if LENGTH OF NAME < 6 CHAR	BLE	5$			; then CONTINUE	DERROR	28,R3,R2		; else PRINT ERROR MESSSAGE	BR	TPNAME			; AND REPROMPT					; COPY TPNAME TO TEMPORARY BUFFER					; WITH BLANK FILL5$:	MOV	R3,TEMPLN		; SET LENGTH OF RESPONSE IN TEMP BFR	MOV	#TEMPTP,R4		; R4 -> TEMP TP NAME BUFFER	MOV	#6,R5			; TOTAL # OF CHARACTERS TO MOVE10$:	DEC	R3			; # CHARACTERS IN RESPONSE :- 1	BLT	20$			; the      n PUT IN AN ASCII BLANK	MOVB	(R2)+,(R4)+		; else PUT IN NEXT CHAR. OF RESPONSE	BR	30$			; CONTINUE20$:	MOVB	#40,(R4)+		; PUT AN ASCII BLANK IN TP NAME BFR30$:	SOB	R5,10$			; if MORE then CONTINUE	RETURN				; RETURN TO CALLING PROGRAM;*******************************************************************************;; G E T R E C;; GET DEFINITION RECORD AND STATUS OF SPECIFIED TP.; ; ENTRY CONDITIONS:;	TEMPTP -> NAME OF TP;; EXIT CONDITIONS:;;	R0 = STATUS OF TP. ONE OF (UNDEF,DEFIN,INSTD,ACTIVE,CHANGE);	RNMTBL	      - 1ST WORD := RECORD NUMBER OF TP'S DEFINITION RECORD;		- 2ND WORD := 0  ( => END OF TABLE );;	REGISTERS DESTROYED: R0,R1,R3;GETREC::	MOV	#1,<.FDB+F.RCNM+2>	; START W/ 1ST RECORD OF TPDEF FILE	CALL	CLRBFR			; CLEAR SEND DATA BUFFER EXCEPT FOR					; 	TP NAME10$:	CALL	GET			; GET NEXT TP RECORD	MOV	#TPREC,R1		; R1 -> RECORD	CMPB	#'#,(R1)		; if LAST RECORD	BNE	40$			; then GOTO CHECK IF RIGHT RECORD					; else ERROR: EOF	MOV	#UNDEF,R0		; R0 := TP STATUS = NOT DEFINED	BR	63$			; GOTO RETURN40$:	MOV	#TEMPTP,R2		      ; POINTER TO NAME OF TP TO INSTALL	MOV	#6,R3			; LENGTH70$:	CMPB	(R1)+,(R2)+		; IS THIS THE RIGHT TP RECORD?	BNE	10$			; IF NE NO - TRY NEXT RECORD	SOB	R3,70$			;					; TP'S DEFINITION RECORD FOUND	MOV	<.FDB+F.RCNM+2>,RNMTBL	; INSERT RECORD+1 INTO TABLE	DEC	RNMTBL			; GET ACTUAL RECORD NUMBER	CLR	RNMTBL+2		; INDICATE NEXT ENTRY IS EMPTY	CALL	STATUS			; GET STATUS IN R063$:	RETURN				; RETURN TO CALLING PROGRAM;;*******************************************************************************;; S T A T U S;; G      ET STATUS OF SPECIFIED TP AND SET NEW DEFAULT TP NAME.; POSSIBLE STATES ARE DEFINED, INSTALLED, STARTED, AND CHANGING.;; ENTRY CONDITIONS:;	TEMPTP -> TPNAME;	TEMPLN -> LENGTH OF TP NAME;	TPREC -> TP DEFINITION RECORD OF SPECIFIED TP;; EXIT CONDITIONS:;	R0 = ONE OF (DEFIN,INSTD,ACTIVE,CHANGE);	IF ENTRY POINT IS STATUS;	THEN	TPD -> NEW DEFAULT TP NAME;		TPDL -> LENGTH OF NEW DEFAULT TP NAME;; REGISTERS DESTROYED:;	R3,R4;STATS2::				; ENTRY FOR NO NEW DEFAULT	PUSH	R5			; SAVE R5	CLR	-(SP)			; INDICATE NO NEW D      EFAULT	BR	STATTTSTATUS::	PUSH	R5			; SAVE R5	MOV	PC,-(SP)		; INDICATE GET NEW DEFAULTSTATTT:	BIT	#<TPSIP!TPCHG>,<TPREC+TPSTAT>	; TP'S STATE = CHANGING ?	BEQ	20$	MOV	#CHANGE,R0		; STATE := CHANGING	BR	100$20$:	BIT	#TPST,<TPREC+TPSTAT>	; TP'S STATE = STARTED ?	BEQ	30$	MOV	#ACTIVE,R0		; STATE := ACTIVE	BR	100$			; GOTO RETURN30$:	BIT	#TPIN,<TPREC+TPSTAT>	; TP'S STATE = INSTALLED ?	BEQ	40$			; if NOT INSTALLED then GOTO DEFINED	MOV	#INSTD,R0		; STATE := INSTALLED	BR	100$40$:	MOV	#DEFIN,R0		; STATE := DEFINED100      $:					; INSERT NEW TP NAME DEFAULT	TST	(SP)+			; IF NO NEW DEFAULT	BEQ	130$			; THEN GOTO DONE	MOV	#<TPD+1>,R3		; R3 -> TP NAME AREA OF TP NAME DEFAULT	MOV	#TEMPTP,R4		; R4 -> USER SPECIFIED TP NAME	MOV	TEMPLN,R5		; R5 := LENGTH OF USER TP NAME110$:	MOVB	(R4)+,(R3)+		; MOVE NEXT CHARACTER	SOB	R5,110$					; APPEND '>? ' TO DEFAULT SPEC	MOVB	#'>,(R3)+	MOVB	#'?,(R3)+	MOVB	#40,(R3)+	MOV	TEMPLN,TPDL		; TP NAME DEFAULT LENGTH := NAME LENGTH	ADD	#4,TPDL			; LENGTH := NAME LENGTH + BRACKETS130$:	POP	R5			; UNSAVE       R5	RETURN	.PAGE	.SBTTL I/O ROUTINES;+;;  I / O   R O U T I N E S;;	ROUTINES FOR [1,1]TPDEF.TPF I/O: OPEN AND CLOSE, GET AND PUT RECORDS,;	CLEAR CHANGING STATUS BIT, AND OUTPUT TO TI:.;;-;*******************************************************************************;; OPEN [1,1]TPDEF.TPF WITH MODIFY ACCESS;; R0 IS DESTROYED;OPTPDF::	OPEN$M	#.FDB			; OPEN TP FILE WITH WRITE ACCESS	BCC	10$			; if SUCCESSFUL then CONTINUE	MOVB	<.FDB+F.ERR>,R0		; R0 := ERROR CODE	CMP	R0,#IE.LCK		; if  FILE LOCKED ERROR	BEQ	5$		      	; then GOTO PRINT ERROR MSG	CMP	R0,#IE.CLO		; IF FILE NOT CLOSED PROPERLY	BEQ	5$			; THEN GOTO FILE LOCKED ERROR	DERROR	19,R0			; else PRINT FILE ERROR MSG	BR	7$			; GOTO GOTO COMMAND PROMPT5$:	DERROR	27			; else PRINT LOCKED ERROR MESSAGE7$:	JMP	CMDEX3			; GOTO COMMAND PROMPT W/ DEFAULT EXIT10$:	MOV	#TPRSZ,.FDB+F.RSIZ	; SET CORRECT RECORD SIZE IN FDB 	RETURN				; RETURN TO CALLING PROGRAM;*******************************************************************************;; CLOSE [1,1]TPDEF.TPF;CLOSE::	CLOSE$	      #.FDB			; CLOSE FILE	RETURN;*******************************************************************************;; I/O ERROR ON [1,1]TPDEF.TPF;;IOERR2:	TST	(SP)+			; CLEAN STACKIOERR:	TST	(SP)+			; CLEAN RETURN ADR FROM STACK	DERROR	3			; PRINT 'I/O ERROR ON TPDEF FILE'	JMP	CMDEX2			; GOTO COMMAND PROMPT;*******************************************************************************;; TYPE ASCII LINE ON TI:;;	.MCALL	QIOW$STHEQIO:	QIOW$S	#IO.WVB,#5,#5,,,,<R1,R0,#40>	RETURN;****************************************      ***************************************;; C L R B I T   /   S E T B I T;; IF CLRBIT; CLEAR 'CHANGING' STATUS BIT IN DEFINITION RECORDS OF PROCESSED TP(S);; IF SETBIT THEN OPEN [1,1]TPDEF.TPF AND; SET 'CHANGING' STATUS BIT IN DEFINITION RECORDS OF TP(S) TO BE PROCESSED;; IN BOTH CASES [1,1]TPDEF.TPF IS CLOSED.;; REGISTERS DESTROYED:;	R1,R5;SETBIT::	MOV	PC,R1			; R1 := NON-ZERO VALUE	BR	BITENT			; GOTO START OF ROUTINECLRBIT::	CLR	R1			; INDICATE CLRBIT ROUTINE	CALL	OPTPDF			; OPEN [1,1]TPDEF.TPFBITENT:	MOV	#      RNMTBL,R5		; R5 -> BASE OF RECORD # TABLE10$:	TST	(R5)			; if END OF TABLE	BEQ	40$			; then GOTO RETURN	MOV	(R5),<.FDB+F.RCNM+2>	; SPECIFY RECORD TO GET	CALL	GET			; GET RECORD	TST	R1			; if SETBIT	BNE	20$			; then SET BIT	BIC	#TPCHG,<TPREC+TPSTAT>	; else CLEAR 'CHANGING' STATUS BIT	BR	30$			; GOTO CONTINUE20$:	BIS	#TPCHG,<TPREC+TPSTAT>	; SET 'CHANGING' STATUS BIT30$:		MOV	(R5)+,<.FDB+F.RCNM+2>	; SPECIFY RECORD TO PUT	CALL	PUT			; OUTPUT RECORD	BR	10$			; DO NEXT RECORD40$:	CALL	CLOSE			; CLOSE [1,1]TPDEF.T      PF	RETURN;*******************************************************************************;; GET & PUT RECORDS TO [1,1]TPDEF.TPF FILE;GET::	GET$	#.FDB,,,IOERR2		; GET RECORD	RETURNPUT:	PUT$	#.FDB,,,IOERR2		; PUT RECORD	RETURN	.PAGE	.SBTTL	PRINT $EDMSG FORMATTED MESSAGES ;;	THIS ROUTINE IS CALLED TO OUTPUT $EDMSG FORMATTED;	ERROR MESSAGES. THE PREFIX OUTPUT WITH THE MESSAGE IS ;	'%' FOR DIAGNOSTIC MESSAGES AND '?' FOR FATAL MESSAGES.;;; INPUT CONDITIONS:;;	R1 -> $EDMSG FORMATTED MESSAGE;	R2 -> ARGUMENT BLOCK;      ;; OUTPUT CONDITIONS:;;	ERROR MESSAGE IS PRINTED;	IF ERROR FATAL THEN [1,1]TPDEF.TPF IS CLOSED;	IF RUNNING FROM A VIRTUAL TERMINAL OR IF ERROR FATAL;		THEN EXIT WITH SEVERE STATUS;;; REGISTERS DESTROYED:;;	R1,R2;;-  	.MCALL	PUSH,POPDERR::	PUSH	R0			; SAVE R0	MOV	#"% ,OUTBUF		; OUTPUT BFR := DIAGNOSTIC PREFIX	BR	ERRENT			; GOTO ENTRY POINTFERR::					; FATAL ERROR ENTRY POINT	CALL	CLOSE			; CLOSE [1,1]TPDEF.TPF	MOV	#"? ,OUTBUF		; OUTPUT BFR := FATAL PREFIXERRENT:	TST	R1			; if MESSAGE = NULL	BEQ	63$			; then       GOTO DONE	MOV	#OUTBUF+2,R0		; R0 ADDRESS OF OUTPUT BUFFER	CALL	$EDMSG			; EDIT MESSAGE	MOV	#OUTBUF,R1		; CALCULATE STRING LENGTH	SUB	R1,R0			; STRING LENGTH	CALL	THEQIO			; TYPE MESSAGE	DIR$	#BLANK			; PRINT BLANK LINE	TST	VTBIT			; if RUNNING FROM A VIRTUAL TERMINAL	BNE	30$			; then GOTO EXIT WITH SEVERE STATUS	CMP	OUTBUF,#"? 		; if NOT FATAL ERROR	BNE	63$			; then GOTO RETURN30$:	MOV	#EX$SEV,EXSTAT		; EXIT STATUS := SEVERE	JMP	EXIT			; GOTO EXIT63$:	POP	R0			; UNSAVE R0	RETURN	.PAGE	.SBTTL	UTILITY ROUTINE      S;*******************************************************************************;; T E S T P R;; GET TPCTRL'S TASK PARAMETERS. IF DEFAULT UIC IS NOT PRIVILEGED ( GREATER; THAN 10 ), THEN PRINT ERROR MESSAGE AND EXIT WITH SEVERE STATUS.; IF TPCTRL IS NOT BEING RUN FROM TT0 OR VTnn:, PRINT MSG + EXIT SEVERE	;***CP05;TESTPR:	DIR$	#GTASK,BAD		; GET TASK PARAMETERS IN OUTBUF	CMPB	<OUTBUF+G.TSGC>,#10	; if GROUP CODE OF UIC <= 10	BLOS	10$			; then CONTINUE	FERROR	24			; else PRINT ERROR MSG AND EXIT SEVERE;						      			;**CP05+; if TI: IS NOT TT0: OR VTnn: then PRINT ERROR MESSAGE AND EXIT W/ SEVERE STATUS;10$:	PUSH	R0			; SAVE R0	CLR	R0			; INDICATE TI: IS ON LUN 13	CALL	CHKTT0			; if LUN 13 IS TT0: or VTnn:	BCC	20$			; then CONTINUE	FERROR	29			; else PRINT ERROR MSG AND EXIT SEVERE20$:	POP	R0			; UNSAVE R0			;**CP05-	RETURN;*******************************************************************************;; T E S T V T;; IF TPCTRL IS BEING RUN FROM A VIRTUAL TERMINAL THEN; VTBIT := 1 ELSE VTBIT REMAINS EQUAL TO 0.; IF       RUNNING FROM A VT:, DIAGNOSTIC ERRORS WILL CAUSE EXIT WITH SEVERE STATUS.;TESTVT:	DIR$	#GTLUN,BAD		; GET LOGICAL UNIT PARAMETERS FOR TI:	CMP	#"VT,OUTBUF		; if TI: IS NOT A VT:	BNE	10$			; then GOTO RETURN	INC	VTBIT			; else VTBIT := 1  => RUNNING FROM VT:10$:	RETURN;*******************************************************************************;; C L R B F R;; CLEAR SEND DATA BUFFER EXCEPT FOR TP NAME STORAGE AREA.;CLRBFR:	MOV	#<SNDBFR+6>,R3		; R3 -> BASE OF AREA TO BE CLEARED	MOV	#10.,R4			; R4 := # WORDS       IN AREA TO BE CLEARED10$:	CLR	(R3)+			; CLEAR NEXT WORD	SOB	R4,10$	RETURN;*******************************************************************************;; E N D D E F;; ADD THE 3 CHARACTER STRING ">? " TO THE END OF A DEFAULT SPECIFICATION.;; ENTRY CONDITION:;	R0 -> NEXT CHARACTER POSITION IN DEFAULT SPECIFICATION;; EXIT CONDITION:;	R0 -> PAST LAST CHARACTER IN DEFAULT STRING;ENDDEF::	MOVB	#'>,(R0)+		; APPEND 3 CHARACTERS	MOVB	#'?,(R0)+	MOVB	#' ,(R0)+	RETURN				; RETURN TO CALL PROGRAM	.PAGE	.SBTTL	SPAWN U      TILITY TASK;*******************************************************************************;;;		SPAWN UTILITY TASK;;;*******************************************************************************;; ENTRY CONDITIONS:;	R0 -> PARAMETER BLOCK:;		WORDS 0-1	4 ASCII CHARACTER TASK SPECIFIER;		WORDS 2-3	RAD50 TASK NAME;; EXIT CONDITIONS:;	IF SUCCESSFUL THEN Z-BIT SET ELSE Z-BIT CLEAR;; REGISTERS DESTROYED:;	R0,R2,R3,R4,R5;;SPAWN::					; SET UP SPAWN COMMAND LINE W/ TASK NAMEE	MOV	#4,R3			; R3 := # CHARs OF TASK NA      ME TO MOVE	MOV	#SPWTSK,R4		; R4 -> LAST 4 CHAR OF TASK NAME IN					;	COMMAND LINE	MOV	#SPWT2,R5		; R5 -> LAST 4 CHAR FOR INSTALLED NAME	MOV	#REMTSK,R2		; R2 -> LAST 4 CHAR OF TASK TO REMOVE10$:	MOVB	(R0),(R5)+		; NEXT CHAR TO INSTALLED TASK NAME	MOVB	(R0),(R4)+		; NEXT CHAR TO TASK FILE NAME	MOVB	(R0)+,(R2)+		; NEXT CHAR TO TASK NAME TO REMOVE	SOB	R3,10$					; SPAWN INSTALL OF TPCTRL FUNCTION TASK	MOV	#SPWCMD,<SPWN+S.PWCA>	; SPAWN DPB := PTR TO COMMAND LINE	MOV	#SCMDLN,<SPWN+S.PWCL>	; SPAWN DPB := COMMAND L      INE LENGTH	DIR$	#SPWN,20$		; SPAWND INSTALL OF TASK	DIR$	#STSE,20$		; WAIT FOR TASK TO BE INSTALLED	CMP	#EX$SUC,ESB		; if SUCCESSFULLY INSTALLED	BEQ	40$			; then CONTINUE	CALL	CLRBIT			; SET TP STATUS TO NOT CHANGING	;***CP03	FERROR	23,#1,ESB		; FATAL ERROR: FAILED TO INSTALL TASK20$:	CALL	CLRBIT			; SET TP STATUS TO NOT CHANGING	;***CP03	FERROR	23,#2,$DSW		; FATAL ERROR: SPAWN FAILURE30$:	CALL	CLRBIT			; SET TP STATUS TO NOT CHANGING	;***CP03	FERROR	23,#3,$DSW		; FATAL ERROR: SDRC ERROR40$:					; SUCCESSFU      L SPAWN	MOV	(R0)+,<SENDCT+S.DRTN>	; TASK NAME IN SEND DATA DPB :=	MOV	(R0),<SENDCT+S.DRTN+2>	;	TPCTRL FUNCTION TASK NAME	DIR$	#SENDCT,30$		; SEND, REQUEST, AND CONNECT	DIR$	#STSE,30$		; STOP UNTIL TASK EMITS STATUS	PUSH	ESB			; SAVE TASK'S EXIT STATUS	MOV	#REMLIN,<SPWN+S.PWCA>	; DPB := PTR TO COMMAND LINE	MOV	#REMLEN,<SPWN+S.PWCL>	; DPB := LENGTH OF COMMAND LINE	DIR$	#SPWN,45$		; SPAWN REMOVAL OF TASK	DIR$	#STSE,45$		; WAIT FOR REMOVE TO FINISH	CMP	#EX$SUC,ESB		; if REMOVAL SUCCESSFUL	BEQ	60$			; then GOTO    Ä   DONE45$:					; REMOVAL FAILURE	DERROR	23,#5,$DSW		; PRINT DIAGNOSTIC ERROR MESSAGE60$:	POP	R0			; R0 := TASK'S EXIT STATUS	CMP	#EX$SUC,R0		; SET Z BIT IF SUCCESSFUL, ELSE CLEAR	RETURN	.END	TPCTRL Ä          x¯}Á› 8$ð‘      	.TITLE	SHUTDOWN UTILITY                                                ; KR001	.IDENT	"V1.1A00"                                                       ; KR001;                                                                               ; KR001;+                                                                              ; KR001;                                                                               ;**-2;;;;                         COPYRIGHT (C) 1978 BY                                 ;**-2;                   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  SHO      ULD  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.;;;;;	MODULE:		SHUTDOWN;;	VERSION:	V1.1A                                                   ; KR001;                                                                               ; KR001;	AUTHOR:		GW                                                      ; KR001;			KMR                                                           ; KR001;                                                                               ; KR001;	DATE:		08-Mar-79                                               ; KR001;                                                                               ; KR001;                                                                               ; KR001;-                                                                              ; KR001;                                                                                     ; KR001;                                                                               ; KR001;+                                                                              ; KR001;                                                                               ; KR001;	MODIFICATION HISTORY                                                    ; KR001;                                                                               ; KR001;                                                                                     ; KR001;	VER/ED	DATE	INITIALS	REASON                                  ; KR001;	------- --------- ---	----------------------------------------        ; KR001;	V1.1A00	08-Mar-79 KMR	SPR 22089 - Single digit responses to TP        ; KR001;				  shutdown questions were causing defaults      ; KR001;				  to be supplied to TPCTRL prompts.             ; KR001;				TT0: - Code was added to check for TT0:.        ; KR001;                                                                               ; K      R001;                                                                               ; KR001;-                                                                              ; KR001;                                                                               ; KR001;                                                                               ; KR001	.NLIST	BEX                                                             ;**-10	.ENABL	LC	.MCALL	SPEAK,DIR$,SPWN$,GTSK$C,GPRT$C,ALTP$,ALUN$,ASTX$S	.MCALL	CRVT$C      ,ELVT$,QIOW$,QIO$,STOP$C,USTP$C,MRKT$C	.MCALL	EXST$S                                                          ; KR001;; USEFUL SYMBOLS;CR	=	15LF	=	12VTLUN	=	10;; DIRECTIVE DBPS;SPAWN:	SPWN$	MCR...,,,1,1,,VTDONE,STAT,HEL,LHELALUN:	ALUN$	VTLUN,VTALTP:	ALTP$	,80.ELVT:	ELVT$OUTVT:	QIO$	IO.WVB,VTLUN,32.,,STAT,,<0,0,32.>INVT:	QIOW$	IO.RVB,VTLUN,32,,STAT,,<BUFFER,79.,32.>.PAGE; TEXT;HELP1:	.ASCII	/Please  specify the  number of  minutes to  /	.ASCII	/wait  until initiating the  start of/<CR><LF> 	.ASCII	/transacti      on shutdown./<CR><LF>LHELP1	=	. - HELP1A1:	.ASCII	/Minutes until start of transaction processor /	.ASCII	/shutdown procedure /LA1	=	. - A1DEF1:	.ASCII	/<5>? /LDEF1	=	. - DEF1HELP2:	.ASCII	/When transaction processing has  been  /	.ASCII	/terminated,  active transactions will  be/<CR><LF>	.ASCII	/allowed to complete,  provided they  finish /	.ASCII	/in  less than a  specified number of/<CR><LF>	.ASCII	/minutes. Please specify this time limit./<CR><LF>LHELP2	=	. - HELP2A2:	.ASCII	/Minutes until transaction ab      orts /LA2	=	. - A2DEF2:	.ASCII	/<10>? /LDEF2	=	. - DEF2HELP3:	.ASCII	/Please specify the time,  in minutes,  to /	.ASCII	/wait after transaction processing has/<CR><LF>	.ASCII	/ceased, untill shutting down the remainder /	.ASCII	/of  the system./<CR><LF>LHELP3	=	. - HELP3A3:	.ASCII	/Minutes until system shutdown /LA3	=	. - A3DEF3:	.ASCII	/<0>? /LDEF3	=	. - DEF3HERALD:	.ASCII	<LF>/Shutdown  V1.1A/<CR><LF>                                   ; KR001	.ASCII	/System Shutdown Utility/<CR><LF>                                     ;**-1LHERLD	=	. - HERALDPOSITV:	.ASCII	<CR><LF>/Positive integer required/<CR><LF>LPOSTV	=	. - POSITVMAX:	.ASCII	<CR><LF>/Maximum value exceeded/<CR><LF>LMAX	=	. - MAXHEL:	.ASCII	@HEL 1/1@LHEL	=	. - HELTPCTRL:	.ASCII	/RUN $TPCTRL/LTPCTR	=	. - TPCTRLSTOP:	.ASCII	/STOP/LSTOP	=	. - STOPALL:	.ASCII	/ALL/LALL	=	. - ALLREMOVE:	.ASCII	/REMOVE/LREMOV	=	. - REMOVEEXT:	.ASCII	/EXIT/LEXT	=	. - EXTAUXSTP:	.ASCII	/RUN $AUXSTP/LAUXST	=	. - AUXSTPBYE:	.ASCII	/BYE/LBYE	=	. - BYEERROR:	.ASCII	/? Shutdown being abor      ted/LERRO	=	. - ERRORTTEM1:	.BYTE	CR, LF                                                          ; KR001	.ASCII	/? SHUTDOWN must be run from TT0: or batch/                     ; KR001	.BYTE	CR, LF                                                          ; KR001STTEM1	== . - TTEM1                                                            ; KR001                                                                                ; KR001TTEM2:	.BYTE	CR, LF                                                                ; KR001	.ASCII	/? GETLUN directive error -/                                    ; KR001TTDE:	.BLKB	6                                                               ; KR001	.BYTE	CR, LF                                                          ; KR001STTEM2	== . - TTEM2                                                            ; KR001                                                                                ; KR001	.EVEN.PAGE; DATA AREAS;STOPT:	.WORD	0ABORT:	.WORD	0REP:	.WORD	0BUFFER:	.ASCII	<CR>	.BLKB	79      .SETUP::	.WORD	0INFLAG:	.WORD	0OUTFLG:	.WORD	0ENDFLG:	.WORD	0ECHO:	.WORD	0STAT:	.WORD	0,0WARN:	.WORD	0NUM:	.WORD	0.PAGE.SBTTL PRINT HERALD AND DO DIALOGSHUTDO:	CALL	TTCHK				; Make sure we are running      ; KR001						; from TT0: or batch            ; KR001	MOV	#HERALD,HELP+Q.IOPL		;SET UP HERALD TEXT             ; KR001	MOV	#LHERLD,HELP+Q.IOPL+2		;AND ITS LENGTH                 ;**-1	DIR$	#HELP				;PRINT ITQ1:	SPEAK	#A1,#LA1,#DEF1,#LDEF1,#0,#HELP1,#LHELP1,REP,,STAT,Q1,CZ,ERR	CALL	TEST15				;MAKE SURE ANSW      ER IS VALID	BCS	Q1				;IT WASN'T	MOV	R1,STOPT			;SAVE ITQ2:	SPEAK	#A2,#LA2,#DEF2,#LDEF2,#0,#HELP2,#LHELP2,REP,,STAT,Q1,CZ,ERR	CALL	TEST15				;MAKE SURE ANSWER IS VALID	BCS	Q2				;IT WASN'T	MOV	R1,ABORT			;SAVE ITQ3:	SPEAK	#A3,#LA3,#DEF3,#LDEF3,#0,#HELP3,#LHELP3,REP,,STAT,Q2,CZ,ERR	MOV	#99.,R5				;SET UPPER LIMIT	CALL	TESTR5				;MAKE SURE ANSWER IS VALID	BCS	Q3				;IT WASN'T	MOV	R1,TIMLFT			;SAVE IT	CLR	R0				;MAKE DOUBLE PRECISION	DIV	#5,R0				;DIVIDE BY 5	INC	R0				;BUMP IT	MOV	R0,INTRVL			;SET THE INTERVA      L;; FIND OUT WHY WE ARE RUNNING AND ON WHAT KIND OF SYSTEM;	GTSK$C	BUFFER				;GET THE TASK PARAMETERS	CMP	BUFFER,#^RSET			;CHECK IF TASK NAME IS SETSHT	BNE	10$				;NO	CMP	BUFFER+2,#^RSHT			;SECOND WORD	BNE	10$				;NOT FROM SETUP	DEC	SETUP				;FLAG FROM SETUP10$:	GPRT$C	TP1PAR,BUFFER			;FIND OUT IF THERE IS A TP1PAR	BCC	20$				;THERE IS	JMP	SHUTUP				;THERE ISN'T.PAGE.SBTTL SHUT DOWN TRANSACTION PROCESSING20$:	DIR$	#ALTP				;RAISE THE PRIORITY	CRVT$C	VTIN,VTOUT,,,,ERR		;CREATE A VIRTUAL TERMINAL	MOV	$DSW,ELV      T+E.LVNM		;SET THE UNIT NUMBER FOR ELIMINATE	MOV	$DSW,ALUN+A.LUNU		;SET UP FOR ASSIGN LUN	MOV	$DSW,SPAWN+S.PWVT		;SET UP FOR SPAWNING	DIR$	#ALUN,ERR			;ASSIGN THE LUN	CALL	SPWNIT				;SPAWN HELLO	CALL	WAITEX				;WAIT TILL DONE	DEC	ECHO				;SET ECHO FLAG	MOV	#TPCTRL,SPAWN+S.PWCA		;SET COMMAND LINE	MOV	#LTPCTR,SPAWN+S.PWCL		;AND LENGTH	CALL	SPWNIT				;SPAWN IT	MOV	#STOP,OUTVT+Q.IOPL		;SET UP STOP COMMAND	MOV	#LSTOP,OUTVT+Q.IOPL+2		;AND LENGTH	CALL	RESPND				;RESPOND TO PROMPT	MOV	#ALL,OUTVT+Q.IOPL		;SET UP ALL       RESPONSE	MOV	#LALL,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPOND	MOV	STOPT,R1			;GET STOP TIME	CALL	NUMRES				;GIVE NUMERICAL RESPONSE	TST	WARN				;WAS THERE A WARNING	BNE	40$				;YES. SKIP NEXT RESPONSE	MOV	ABORT,R1			;GET ABORT TIME	CALL	NUMRES				;GIVE NUMERICAL RESPONSE40$:	MOV	#REMOVE,OUTVT+Q.IOPL		;SET UP FOR REMOVE COMMAND	MOV	#LREMOV,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPOND	MOV	#ALL,OUTVT+Q.IOPL		;RESPOND WITH ALL	MOV	#LALL,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPONSE	MOV	#EXT,OUTVT+Q.      IOPL		;EXIT	MOV	#LEXT,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPONSE	CALL	WAITEX				;WAIT FOR EXIT	MOV	#AUXSTP,SPAWN+S.PWCA		;RUN $AUXSTP	MOV	#LAUXST,SPAWN+S.PWCL		;LENGTH	MOV	#AUXSTP,HELP+Q.IOPL		;PRINT TEXT	MOV	#LAUXST,HELP+Q.IOPL+2		;LENGTH	DIR$	#HELP				;DO IT	CALL	SPWNIT				;SPAWN IT	CALL	WAITEX				;WAIT FOR EXIT	MOV	#BYE,SPAWN+S.PWCA		;LOGOFF	MOV	#LBYE,SPAWN+S.PWCL		;LENGTH	CLR	ECHO				;DON'T ECHO	CALL	SPWNIT				;SPAWN IT	CALL	WAITEX				;WAIT FOR EXIT	MOV	#50.,ALTP+A.LTPR		;SET PRIORITY TO 50	DIR$	#      ALTP				;DO IT	DIR$	#ELVT				;GET RID OF THE VIRTUAL TERMINAL	JMP	SHUTUP				;GO DO STANDARD PROCESSING.PAGE.SBTTL	CONTROL Z AND ERROR PROCESSING; COME HERE FOR ^Z;CZ:	MOV	#EX$WAR,R0			;SET STATUS	JMP	$EXST				;EXIT;; COME HERE FOR HARD ERROR;ERR:	MOV	#ERROR,HELP+Q.IOPL		;GET MESSAGE	MOV	#LERRO,HELP+Q.IOPL+2		;LENGTH	DIR$	#HELP				;PRINT IT	MOV	#EX$ERR,R0			;SET ERROR STATUS	JMP	$EXST				;EXIT.PAGE.SBTTL	SUBROUTINES.SBTTL	NUMRES - NUMERICAL RESPONSE;; NUMRES - GIVE A NUMERICAL RESPONSE;;	INPUT:	R1 = BINARY N      UMBER  ( 0 <= R1 <= 99);;	OUTPUT:	R0,R1,R2,R3 = UNDEFINED;NUMRES:	MOV	#1,R2				;INITIALIZE DIGIT COUN	MOV	#NUM,R3				;POINTER FOR RESULTS	CLR	R0				;MAKE DOUBLE PRECISION	DIV	#10.,R0				;GET THE DIGITS	TST	R0				;QUOTIENT	BEQ	10$				;NONE	INC	R2				;TWO DIGITS	ADD	#'0,R0				;MAKE ASCII	MOVB	R0,(R3)+			;SAVE IT                        ; KR00110$:	ADD	#'0,R1				;MAKE SECOND DIGIT ASCII        ; KR001	MOVB	R1,(R3)				;SAVE IT                        ;**-2	MOV	#NUM,OUTVT+Q.IOPL		;SET UP POINTER TO TEXT	MOV	R2,OUT      VT+Q.IOPL+2		;AND LENGTH.SBTTL RESPND - RESPOND;; RESPND - RESPOND TO PROMPT;;	INPUT:	OUTVT+Q.IOPL ---> REPONSE;		OUTVT+Q.IOPL+2 = LENGTH OF RESPONSE;RESPND:	CLR	WARN				;INITIALIZE WARNING FLAG20$:	CALL	OUTPUT				;CHECK FOR OUTPUT	CALL	ENDCHK				;ARE WE DONE	BCS	ERR				;YES. BUT WE SHOULDN'T BE	TST	INFLAG				;VT WANT INPUT	BEQ	20$				;NO	TST	WARN				;WAS WARNING RECEIVED	BEQ	30$				;NO	CMP	OUTVT+Q.IOPL,#NUM		;IS THIS A NUMBER	BEQ	40$				;YES30$:	DIR$	#OUTVT				;OUTPUT IT	MOV	OUTVT+Q.IOPL,HELP+Q.IOPL	;COPY       BUFFER	MOV	OUTVT+Q.IOPL+2,HELP+Q.IOPL+2	;AND COUNT	DIR$	#HELP				;PRINT IT	DEC	INFLAG				;CORRECT COUNT40$:	RETURN					;DONE.PAGE.SBTTL	TEST15 - TEST DIALOG RESPONSE;; TEST15 - TEST THE DIALOG RESPONSE TO MAKE SURE ITS BETWEEN 0 AND 15.;;	INPUT:	REP = RESPONSE;;	OUTPUT:	R1 = RESPONSE;		R5 = UNDEFINED;		C SET IF ERROR;TEST15:	MOV	#15.,R5				;SET UPPER LIMIT TO 15.SBTTL	TESTR5 - TEST DIALOG RESPONSE;; TESTR5 - TEST THE DIALOG RESPONSE TO MAKE SURE ITS BETWEEN 0 AND R5;;	INPUT:	R5 = MAXIMUM VALUE;		REP = RESPO      NSE;;	OUTPUT:	R1 = RESPONSE;		R5 = UNDEFINED;		C SET IF ERROR;TESTR5:	MOV	REP,R1				;GET THE REPLY	BPL	10$				;SKIP IF POSITIVE	MOV	#POSITV,HELP+Q.IOPL		;SET TEXT FOR ERROR	MOV	#LPOSTV,HELP+Q.IOPL+2		;SET ITS LENGTH	BR	20$				;GO PRINT IT10$:	CMP	R1,R5				;CHECK MAXIMUM	CLC					;ASSUME GOOD	BLE	30$				;SKIP IF OK	MOV	#MAX,HELP+Q.IOPL		;SET ERROR TEXT	MOV	#LMAX,HELP+Q.IOPL+2		;AND ITS LENGTH20$:	DIR$	#HELP				;PRINT ERROR MESSAGE	SEC					;FLAG IT30$:	RETURN					;DONE.SBTTL	SPAWN ROUTINE;; SPWNIT - SPAWN MCR       COMMAND LINE;;	INPUT:	SPAWN+S.PWCA ---> COMMAND LINE;		SPAWN+S.PWCL =  LENGTH OF COMMAND LINE;SPWNIT:	DIR$	#SPAWN,ERR			;SPAWN IT	RETURN					;THATS IT.SBTTL	WAIT FOR EXIT;; WAITEX - WAIT FOR SPAWNED TASK TO EXIT;WAITEX:	CALL	OUTPUT				;CHECK FOR OUTPUT FROM VT	CALL	ENDCHK				;CHECK FOR EXIT	BCC	WAITEX				;LOOP IF NOT EXIT	RETURN					;DONE.PAGE.SBTTL	GET VT OUTPUT;; OUTPUT - GET VT OUTPUT AND OPTIONALLY ECHO IT;; 	OUTPUT: WARN <> 0 IF ERROR MESSAGE RECEIVED;OUTPUT:	MRKT$C	,1,2,TIMAST			;WAIT 1 SECOND	STOP$C	      				;BY STOPPING10$:	TST	OUTFLG				;IS THERE OUTPUT	BEQ	30$				;NO	DEC	OUTFLG				;CORRECT COUNT	DIR$	#INVT,ERR			;GET THE VT INPUT	TST	ECHO				;ARE WE ECHOING	BEQ	10$				;NO	CMPB	BUFFER,#'%			;IS IT A WARNING	BNE	20$				;NO	DEC	WARN				;YESY SET FLAG20$:	MOV	STAT+2,R0			;GET THE COUNT	MOV	#BUFFER,HELP+Q.IOPL		;POINT TO IT	MOV	R0,HELP+Q.IOPL+2		;SET THE COUNT	DIR$	#HELP				;ECHO	BR	10$				;LOOP30$:	RETURN					;CHECK FOR OTHER CONDITIONS.SBTTL	CHECK FOR EXIT;; ENDCHK - CHECK FOR EXIT. ABORT IF STATUS IS BAD;;      	OUTPUT:	C SET IF EXIT FOUND;ENDCHK:	TST	ENDFLG				;IS THIS AN EXIT	BEQ	20$				;NO	CMP	ENDFLG,#2			;GOOD EXIT	BLE	10$				;YES	JMP	ERR				;ERROR10$:	CLR	ENDFLG				;RESET THE END FLAG	SEC					;SET THE CARRY20$:	RETURN					;DONE	.PAGE                                                                   ; KR001                                                                                ; KR001	.SBTTL	TTCHK - Check for TT0: or batch                                 ; KR001                                                                                      ; KR001TTCHK:	CLR	R0		; Set to check lun 13.                          ; KR001                                                                                ; KR001	CALL	CHKTT0		; Call the standard routine for                 ; KR001				;   checking lun 13.                            ; KR001                                                                                ; KR001	BCC	30$		; If carry is clear, just return.               ; KR001                                                                                      ; KR001	MOV	$DSW, R1	; Move the DSW to R1.                           ; KR001                                                                                ; KR001	TST	R1		; Test R1 for error.                            ; KR001                                                                                ; KR001	BLE	10$		; We had a directive error, go handle.          ; KR001                                                                                ;       KR001	MOV	#TTEM1, HELP+Q.IOPL                                             ; KR001	MOV	#STTEM1, HELP+Q.IOPL+2                                          ; KR001				; Move the message information to the           ; KR001				;   QIOW DPB.                                   ; KR001                                                                                ; KR001	BR	20$		; Go print the message.                         ; KR001                                                                                ; KR00      110$:	NEG	R1		; Make the error positive.                      ; KR001                                                                                ; KR001	MOV	#TTDE, R0	; Put the address of where the error            ; KR001				;   goes into R0.                               ; KR001                                                                                ; KR001	CALL	$CBDMG		; Convert the error to decimal and              ; KR001				;   place in the message buffer.                ; KR001                                                                                      ; KR001	MOV	#TTEM2, HELP+Q.IOPL                                             ; KR001	MOV	#STTEM2, HELP+Q.IOPL+2                                          ; KR001				; Move the buffer parameters into the           ; KR001				;   QIOW DPB.                                   ; KR001                                                                                ; KR00120$:	DIR$	#HELP		; Write out whichever message we should.        ; KR001                                                                                      ; KR001	EXST$S	#EX$SEV		; Exit with severe status.                      ; KR001                                                                                ; KR00130$:	RETURN			; Return to the caller.                         ; KR001                                                                                ; KR001	.PAGE                                                                   ; KR001	.SBTTL	AST PROCESSING                                                        ; KR001	.ENABL	LSB                                                             ;**-3;; VT REQUESTED INPUT;VTIN:	INC	INFLAG				;FLAG INPUT WAITING	BR	10$				;SKIP;; VT REQUESTED OUTPUT;VTOUT:	INC	OUTFLG				;FLAG WAITING FOR OUTPUT10$:	CMP	(SP)+,(SP)+			;POP 2 WORDS OFF STACK	BR	20$				;SKIP;; SPAWN TASK EXIT;VTDONE:	MOV	STAT,ENDFLG			;SAVE THE STATUS	INC	ENDFLG				;MAKE SURE ITS SET;; MARK TIME REQUEST;TIMAST:20$:	USTP$C					;UNSTOP THE PROGRAM	TST	(SP)+				;CLEAN UP STACK	A   &   STX$S					;EXIT	.DSABL	LSB	.END	SHUTDO&          ƒÕfkQÁ› 8$        	.NLIST	.SBTTL	DIALOGUE MACRO DEFINITIONS;*******************************************************************************;;;		M A C R O S   T O   F O R M   D I A L O G U E;			D A T A    S T R U C T U R E S;;;*******************************************************************************	.MCALL	DIR$,PUSH,POP	.ENABLE	LC;*******************************************************************************;; P R O M P T;; CREATE PROMPT TEXT AND SYMBOLS;	.MACRO	PROMPT	A,TXTA:	.ASCII	\TXT \			; PROMPT STRINGA'L	=	.-A		      	; LENGTH OF PROMPT STRING	.ENDM	PROMPT;*******************************************************************************;; D E F A L T;; CREATE DEFAULT TEXT AND SYMBOLS;	.MACRO	DEFALT	A,TXT,GLOBAL	.IF	NB,<GLOBAL>A'D::	.ASCII	\<TXT>? \		; DEFAULT STRING GLOBALLY DEFINEDA'DL	==	.-A'D			; LENGTH OF DEFAULT STRING	.IFFA'D:	.ASCII	\<TXT>? \		; DEFAULT STRING LOCALLY DEFINEDA'DL	=	.-A'D			; LENGTH OF DEFAULT STRING	.ENDC	.ENDM	DEFALT;*******************************************************************************;;       L I S T T;; CREATE LIST TABLE ELEMENT AND SYMBOLS;	.MACRO	LISTT	A,TXT,GLOBAL	.NCHR	$NCHAR,<TXT>		; $NCHAR := # CHARACTERS IN TEXT	.IF	DF	A'EL		; if NO # CHARs IN LIST ELEMENT SYMBOL	.IF	NE	<A'EL-$NCHAR>	; then if TXT LENGTH <> FORMER LENGTH	.ERROR				; INVALID LIST ELEMENT LENGTH	.ENDC	.IFF	.IF	NB	GLOBALA'EL	==	$NCHAR			; DEFINE GLOBAL LIST ELEMENT LENGTH SYMBOL	.IFFA'EL	=	$NCHAR			; DEFINE LOCAL LIST ELEMENT LENGTH SYMBOL	.ENDC	.ENDC	.IF	NDF	A'E		; if LIST PTR SYMBOL NOT DEFINED	.IF	NB	GLOBALA'E::					; D      EFINE GLOBAL LIST PTR SYMBOL	.IFFA'E:					; DEFINE LOCAL LIST PTR SYMBOL	.ENDC	.ENDC	.ASCII	\TXT\			; DEFINE LIST ELEMENT	.IF	NB	GLOBALA'EC	==	<.-A'E> / A'EL		; COMPUTE # OF ELEMENTS IN TABLE	.IFFA'EC	=	<.-A'E> / A'EL		; LOCAL # OF ELEMENTS IN TABLE	.ENDC	.ENDM	LISTT;*******************************************************************************;; H E L P;; CREATE HELP TEXT AND SYMBOLS.; THE HELP TEXT IS BUILT UP 40 CHARACTERS AT A TIME. CARRIAGE CONTROL; IS PERFORMED BY THE MACROS. HELPI IS USED FOR THE 1S      T 40 CHARS, HELPT; IS USED FOR THE LAST 40 (OR FEWER) CHARS, AND HELPM FOR THE REST.;	.MACRO	HELPI	A,TXT	; USE FOR 1ST 40 CHAR OF HELP TEXTA'H:				; DEFINE TEXT PTR SYMBOL$$HELP	=	0		; INITIALIZE STATE OF MACRO	HELPM	A,<TXT>	.ENDM	HELPI	.MACRO	HELPM	A,TXT	.IF	EQ	<$$HELP-2>	; if STATE OF MACRO = BEGINNING OF LINE	CRLF				; then INCLUDE CARRIAGE RETURN,LINE FEED$$HELP	=	0			; STATE OF MACRO := INITIAL	.ENDC	.NCHR	$NCHAR,<TXT>		; $NCHAR := # CHARs IN STRING	.IF	GT	<$NCHAR-40.>	; if TOO MANY CHARACTERS IN STRIN      G	.ERROR				; HELP STRING LENGTH > 40 CHARACTERS	.ENDC	.ASCII	\TXT\			; DEFINE HELP TEXT STRINGA'HL	=	.-A'H			; SET LENGTH OF HELP TEXT STRING$$HELP	=	<$$HELP+1>		; STATE OF MACRO := NEXT STATE	.ENDM	HELPM	.MACRO	HELPT	A,TXT	; USE FOR LAST 40 CHAR OF HELP TEXT	.IF	EQ	<$$HELP-2>	; if STATE OF MACRO = BEGINNING OF LINE	CRLF				; then INCLUDE CARRIAGE RETURN,LINE FEED$$HELP	=	0			; STATE OF MACRO := INITIAL	.ENDC	.NCHR	$NCHAR,<TXT>		; $NCHAR := # CHARs IN STRING	.IF	GT	<$NCHAR-40.>	; if TOO MANY CHARACTERS IN       STRING	.ERROR				; HELP STRING LENGTH > 40 CHARACTERS	.ENDC	.ASCII	\TXT\			; DEFINE HELP TEXT STRING	CRLF				; APPEND CARRIAGE RETURN LINE FEEDA'HL	=	.-A'H			; SET LENGTH OF HELP TEXT STRING	.ENDM	HELPT;*******************************************************************************;; CARRIAGE CONTROL CHARACTER DEFINITIONS;TAB	=	9.			; HORIZONTAL TABCR	=	10.			; CARRIAGE RETURNLF	=	13.			; LINE FEED	.MACRO	CRLF	.BYTE	CR,LF			; INCLUDE ASCII CR AND LF	.ENDM	.MACRO	CRLFLF	.BYTE	CR,LF,LF		; DOUBLE SPACE: INCLUE      D CR AND 2 LFs	.ENDM	.PAGE;*******************************************************************************;; MACRO TO SET UP PARAMETERS FOR DIALOGUE FUNCTION;	.MACRO	SPEAK,A,BB,C,D,E,F,G,H,I,J,K,L,M,N,O,P	.IIF	B,N,	CLR	-(SP)	.IIF	NB,N,	MOV	N,-(SP)	.IIF	B,O,	CLR	-(SP)	.IIF	NB,O,	MOV	O,-(SP)	.IIF	B,P,	CLR	-(SP)	.IIF	NB,P,	MOV	P,-(SP);	.IIF	B,A,	CLR	-(SP)	.IIF	NB,A,	MOV	A,-(SP)	.IIF	B,BB,	CLR	-(SP)	.IIF	NB,BB,	MOV	BB,-(SP)	.IIF	B,C,	CLR	-(SP)	.IIF	NB,C,	MOV	C,-(SP)	.IIF	B,D,	CLR	-(SP)	.IIF	NB,D,	MOV	D,-(SP);	.      IIF	B,E,	CLR	-(SP)	.IIF	NB,E,	MOV	E,-(SP)	.IIF	B,F,	CLR	-(SP)	.IIF	NB,F,	MOV	F,-(SP)	.IIF	B,G,	CLR	-(SP)	.IIF	NB,G,	MOV	G,-(SP);	CLR	-(SP)	CLR	-(SP)	CLR	-(SP)	JSR	PC,TALK	BCC	.+12;	ADD 	#32,SP	JSR	PC,M;	CMP	(SP),#-1	BNE	.+12	ADD	#32,SP	JMP	K;	CMP	(SP),#0	BNE	.+12	ADD	#32,SP	JMP	L;	MOV	4(SP),H	.IIF	NB,I,	MOV	2(SP),I	.IIF	NB,J,	MOV	(SP),J	ADD	#32,SP	.ENDM;;	D I A L O G    F U N C T I O N ;;;;ARGUMENT LIST:;;	30(SP)		=	LIST BEGINNING ADDRESS;	26(SP)		=	# LIST ENTRIES;	24(SP)		=	LIST ENTRY LENGTH;	22(SP)		=	PRO      MPT ADDRESS;	20(SP)		=	PROMPT LENGTH;	16(SP)		=	DEFAULT STRING ADDRESS - <AAAAAAA>?;	14(SP)		=	DEFAULT STRING LENGTH;;	12(SP)		=	TYPE OF RESPONSE;				INTEGER	=	0;				LIST	=	+1;				ALPHA	=	-1;;	10(SP)		=	HELP STRING ADDRESS;	6(SP)		=	HELP STRING LENGTH;	4(SP)		=	ANSWER ADDRESS;	2(SP)		=	ANSWER LENGTH;;	  (SP)		=	RETURN STATUS;				ESC	=	-1;				CTRL-Z	=	 0;				VALID RESPONSE	=	1=>N ;					ELEMENT IN LIST; DEFAULTS TO 1 IF ;					NO LIST WAS SPECIFIED;;	.PAGE	.SBTTL	MACROS FOR PROGRAM FLOW CONTROL;***************      ****************************************************************;;;		M A C R O S    F O R    P R O G R A M    F L O W;;;*******************************************************************************;*******************************************************************************;; S E T D E F;; SET DEFAULT INFORMATION AND/OR SET NEXT PROMPT LOCATION POINTER;;	UQCHAR = UNIQUE CHARACTER THAT IDENTIFIES PROMPT;	DEFPTR = POINTER TO DEFAULT SPECIFICATION;	DEFLEN = LENGTH OF DEFAULT SPEC;	NEXTBR = LOCATION OF NEX      T PROMPT ROUTINE;	.MACRO	SETDEF	UQCHAR,DEFPTR,DEFLEN,NEXTBR	.IIF	NB,<DEFPTR>	MOV	DEFPTR,UQCHAR'D		; SET DEFAULT	.IIF	NB,<DEFLEN>	MOV	DEFLEN,UQCHAR'DL	; DEFAULT LENGTH	.IIF	NB,<NEXTBR>	MOV	NEXTBR,JMPLOC		; SET JUMP LOC	.ENDM	SETDEF;*******************************************************************************;; G E T P M T;; GET NEXT PROMT ENTRY POINT FROM ROUTINES JUMP VECTOR;;	HAFLAB = ROUTINE IDENTIFIER: (INS,BRE,STA,STO,REM);	STATE  = REGISTER THAT HAS TP'S STATE VALUE: (DEFIN,INSTD,ACTIVE,CHANGE);;	.MA      CRO	GETPMT	HAFLAB,STATE	MOV	HAFLAB'JVT(STATE),JMPLOC	; GET NEXT PROMPT'S ENTRY POINT						; FROM ROUTINES JUMP VECTOR -						; NEXT PROMPT FUNCTION OF STATE	.ENDM	GETPMT;*******************************************************************************;; G E T M S G;; GET AND TYPE $EDMSG FORMATTED MESSAGE.; MESSAGE TYPED IS A FUNCTION OF CURRENT COMMAND AND STATE OF THE TP.;;	HAFLAB = COMMAND IDENTIFIER: (INS,BRE,STA,STO,REM);	STATE  = REGISTER HOLDING STATE VALUE: (DEFIN,INSTD,ACTIVE,CHANGE);	ARGx   = ARGUMEN      TS;	.MACRO	GETMSG	HAFLAB,STATE,ARG1,ARG2,ARG3	.IIF	NB,<ARG3>	PUSH	ARG3		; PUSH 3RD ARG	.IIF	NB,<ARG2>	PUSH	ARG2		; PUSH 2ND ARGUMENT	.IF	NB,<ARG1>	PUSH	ARG1			; PUSH 1ST ARGUMENT	MOV	SP,R2			; R2 -> ARGUMENT BLOCK	.ENDC	MOV	HAFLAB'MVT(STATE),R1	; R1 -> $EDMSG FORMATTED MESSAGE	CALL	DERR			; CALL DIAGNOSTIC ERROR RTE - EXIT IF					; RUNNING FROM A VT:	.IF	NB,<ARG2>		; if 2 ARGUMENTS	.IIF	NB,<ARG3>	TST	(SP)+		; POP 3RD ARG	CMP	(SP)+,(SP)+		; then CLEAN STACK FOR 2 ARGS	.IFF				; else IF 1 ARGUMENT	.IIF	NB,<AR      G1>	TST	(SP)+		; CLEAN STACK	.ENDC	.ENDM	GETMSG;*******************************************************************************;; D E R R O R;; PRINT DIAGNOSTIC ERROR MESSAGE. IF RUNNING FROM A VIRTUAL TERMINAL; THEN EXIT WITH SEVERE STATUS.;	.MACRO	DERROR	NUMBER,ARG1,ARG2,ARG3	.IIF	NB,<ARG3>	PUSH	ARG3		; PUSH 3RD ARG	.IIF	NB,<ARG2>	PUSH	ARG2		; PUSH 2ND ARGUMENT	.IF	NB,<ARG1>	PUSH	ARG1			; PUSH 1ST ARGUMENT	MOV	SP,R2			; R2 -> ARGUMENT BLOCK	.ENDC	MOV	#M'NUMBER,R1		; R1 -> ERROR MESSAGE	CALL	DERR			; CALL       DIAGNOSTIC ERROR RTE - EXIT IF					; RUNNING FROM A VT:	.IF	NB,<ARG2>		; if 2 ARGUMENTS	.IIF	NB,<ARG3>	TST	(SP)+		; POP 3RD ARG	CMP	(SP)+,(SP)+		; then CLEAN STACK FOR 2 ARGS	.IFF				; else IF 1 ARGUMENT	.IIF	NB,<ARG1>	TST	(SP)+		; CLEAN STACK	.ENDC	.ENDM	DERROR;*******************************************************************************;; D E R R O;	.MACRO	DERRO	ARG1,ARG2,ARG3	.IIF	NB,<ARG3>	PUSH	ARG3		; PUSH 3RD ARG	.IIF	NB,<ARG2>	PUSH	ARG2		; PUSH 2ND ARGUMENT	.IF	NB,<ARG1>	PUSH	ARG1			; PUSH 1ST ARGU      MENT	MOV	SP,R2			; R2 -> ARGUMENT BLOCK	.ENDC	CALL	DERR			; CALL DIAGNOSTIC ERROR RTE - EXIT IF					; RUNNING FROM A VT:	.IF	NB,<ARG2>		; if 2 ARGUMENTS	.IIF	NB,<ARG3>	TST	(SP)+		; POP 3RD ARG	CMP	(SP)+,(SP)+		; then CLEAN STACK FOR 2 ARGS	.IFF				; else IF 1 ARGUMENT	.IIF	NB,<ARG1>	TST	(SP)+		; CLEAN STACK	.ENDC	.ENDM	DERRO;*******************************************************************************;; F E R R O R;; PRINT FATAL ERROR MESSAGE. EXIT WITH SEVERE STATUS.;	.MACRO	FERROR	NUMBER,ARG,ARG2	MOV	#M      'NUMBER,R1		; R1 -> ERROR MESSAGE	.IIF	NB,<ARG2>	PUSH	ARG2		; PUSH 2ND ARGUMENT	.IF	NB,<ARG>	PUSH	ARG	MOV	SP,R2			; R2 -> ARGBLOCK	.ENDC	CALL	FERR			; CALL FATAL ERROR RTE - EXIT W/ SEVERE	.ENDM	FERROR;*******************************************************************************;; T Y P E;; TYPE AN ASCII MESSAGE. REGISTERS R0, R1 DESTROYED.;;	.MACRO	TYPE	MSGPTR,MSGLEN	MOV	MSGPTR,R1		; R1 -> ASCII MESSAGE	MOV	MSGLEN,R0		; R0 = MESSAGE LENGTH	CALL	THEQIO			; TYPE MESSAGE	.ENDM	TYPE;*************************      ******************************************************;; TP STATE VALUES; NOTE: IF VALUES ARE CHANGED, PROGRAM MUST BE SIGNIFICANTLY MODIFIED ***;UNDEF	=	0			; TP NOT DEFINED - NO RECORD IN TPDEFDEFIN	=	2			; TP DEFINED: TPDEF REC => NOT INSTALLEDINSTD	=	4			; TP INSTALLED AND NOT STARTEDACTIVE	=	6			; TP STARTEDCHANGE	=	8.			; A TPCTRL FUNCTION IS OPERATING ON TP;*******************************************************************************;; S T A T E C;; SET SPECIFIED TP DEFINITION RECORD'S STATE WORD T   ´  O 'CHANGING';	.MACRO	STATEC	RECNUM	MOV	RECNUM,R1		; R1 := RECORD NUMBER	CALL	SETCHG			; CALL ROUTINE TO SET BIT	.ENDM	STATEC;*******************************************************************************;; PARTITION STATE VALUES;GOOD	=	0			; PARTITION IS OKNOPAR	=	2			; PARTITION DOES NOT EXISTNOTSYS	=	4			; PARTITION IS NOT A SYSTEM PARTITIONPARACT	=	6			; PARTITION IS ACTIVENOBASE	=	10			; PARTITION BASE ADDRESS HAS CHANGED	.LIST´         Q;œQkQÁ› 8$        	.NLIST	.MACRO	TPFDEF ;; TP FILE RECORD; TPRSZ	= 100	; SIZE OF TP FILE RECORD;;TPNAM	= 00	;WD.00	[B.00]	TP NAME (3 WORDS)TPSTAT	= 06	;WD.03	[B.06]	STATUS INDICATORTPPAR	= 10	;WD.04	[B.10]	2 WORD RAD50 PARTITION NAMETPCOM	= 14	;WD.06	[B.14]	KT ADDRESS OF TP COMMON AREATPTDBZ	= 16	;WD.07	[B.16]	SIZE OF TDB FILE (512. BYTE BLOCKS)TPKYFS	= 20	;WD.10	[B.20]	SIZE OF KEYED FILE IMPURE AREASTPIMPZ	= 22	;WD.11	[B.22]	SIZE OF FILE IMPURE AREAS (64. BYTE BLOCKS)TPAPAR	= 24	;WD.12	[B.24]	BASE KT ADDRESS OF PARTITIONTPN      Q	= 26	;WD.13	[B.26]	BIT SETTING FOR NQTPWRK	= 30	;WD.14	[B.30]	BASE DISK ADDRESS OF WORK FILE (2 WORDS)TPATT	= 34	;WD.16	[B.34]	SIZE IN DISK BLOCKS OF ACTIVE		;		TRANSACTION TABLETPCOMZ	= 36	;WD.17	[B.36]	SIZE OF COMMON AREA REGION (64. BYTE BLOCKS)TPSCBZ	= 40	;WD.20	[B.40]	SIZE OF SCB REGION (64. BYTE BLOCKS)		;WD.21	**** 15. SPARE WORDSTPID	= 76	;WD.36	[B.76]	UNIQUE TP IDENTIFIER;;; STATUS DEFINTIONS:;TPIN	= 000001	; TP INSTALLEDTPST	= 000002	; TP RUNNINGTPDB	= 000004	; TP INSTALLED IN DEBUG MODETPSIP	=       000010	; TP STOP IN PROGRESSTPCHG	= 000020	; TPCTRL FUNCTION IN PROGRESS: CHANGING STATE 	.ENDM;*******************************************************************************;; SEND DATA OFFSET DEFINITIONS;	.MACRO	SDATDFSDNAM	=	0	; TP NAMESDBRF	=	6	; BRIEF SWITCHSDDEB	=	7	; DEBUG SWITCHSDWRT	=	8.	; WRITE PROTECT SWITCHSDTRC	=	9.	; TRACE SWITCHSDFDF	=	10.	; FORMS DEFINITION FILE VERSION VERSIONSDRMS	=	15.	; MEMORY RESIDENT OVERLAYED RMS SWITCHSDPAR	=	16.	; PARTION NAME			; START SPECIFIC SWITCHESSDJRN	=	6.	      ; JOURNAL SWITCHESSDLOG	=	7.	; LOG SWITCH			; STOP SPECIFIC OFFSETSSDINI	=	6.	; INITIATE STOP TIME: DISABLE TXN INITIATIONSDABO	=	8.	; TIME TO ABORT ACTIVE TXN INSTANCES	.ENDM	SDATDF;;*******************************************************************************;	.MACRO	STAFDF ;; STATION DEFINITION RECORD; STASIZ	= 934.	; MAXIMUM RECORD SIZE;;SNAM	= 00	;WD.00	[B.00]	PREFIX CHARACTER + 6 BYTE STATION NAMESTYP	= 10	;WD.04	[B.10]	STATION TYPESRPTC	= 12	;WD.05	[B.12]	STATION DEFINITION REPEAT COUNT;;; STATION       TYPES;STIM	= 0	; TERMINAL STATIONSTST	= 2	; TST STATIONSMBX	= 4	; MAILBOX STATIONSLMA	= 6	; LINK MASTER STATIONSLSL	= 10	; LINK SLAVE STATIONSBSU	= 12	; BATCH SUBMIT STATION SBSL	= 14	; BATCH SLAVE STATION

;;; FORMS DEVICE STATION (TYPE 0);		;WD.00	[B.00]	\ + 6 BYTE STATION NAMESALOP	= 07	;	[B.07]	ALLOWED OPERATIONS (1 BYTE)		;WD.04	[B.10]	STATION TYPE (0)		;WD.05	[B.12]	REPEAT COUNT (MAX = 64.)SGRPN	= 14	;WD.06	[B.14]	NUMBER OF STATIONS IN GROUPSINOP	= 16	;WD.06	[B.16]	INITIAL OPERATION		;	0 = TRANSACTION      		;	1 = FORMSINFT	= 20	;WD.10	[B.20]	INITIAL FORM/TRANSACTION NAME (3 WORDS)SWCLS	= 26	;WD.13	[B.26]	WORK CLASS NAME (3 WORDS)SMXACT	= 34	;WD.16	[B.34]	MAXIMUM # ACTIVE TERMINALS = # STATIONS		;WD.17	**** 4 SPARE WORDSSDVNM	= 46	;WD.23	[B.46]	DEVICE NAMES AND DIALOG MANAGER NUMBER		;	13. BYTES + 1 BYTE SPARE EACH;;; ALLOWED OPERATIONS;SI	= 001	; INPUT ONLYSO	= 002	; OUTPUT ONLYSIO	= 003	; INPUT/OUTPUTSESM	= 004	; ENABLED FOR SYSTEM MESSAGES  ;;; TST STATION (TYPE 2);		;WD.00	[B.07]	SPACE + 6 BYTE STATION NA      MESTAPRI	= 07	;	[B.07]	STATION PRIORITY (1 BYTE)		;WD.04	[B.10]	STATION TYPE (2)		;WD.05	[B.12]	REPEAT COUNT (= 1)STSKLN	= 14	;WD.06	[B.14]	LENGTH OF TASK IMAGE FILE SPEC (1 BYTE)STSKFL	= 15	;	[B.15]	TASK IMAGE FILE SPEC (33. BYTES)SMXCOP	= 56	;WD.27	[B.56]	MAXIMUM COPIES OF TST ACTIVESTFLGS	= 57	;	[B.57]	FLAGS BYTE		;WD.25	**** 4 SPARE WORDS;;; TST STATION FLAGS DEFINITIONS:;STFIXD	= 001	; TST FIXEDSTREUS	= 002	; TST SERIALLY REUSABLE

;;; MAILBOX STATION (TYPE 4);		;WD.00	[B.00]	SPACE + 6 BYTE STATION NAM      E		;	[B.07]	**** SPARE BYTE		;WD.04	[B.10]	STATION TYPE (4)		;WD.05	[B.12]	REPEAT COUNT (MAX = 10.)SMXMSG	= 14	;WD.06	[B.14]	MAXIMUM MESSAGE SIZE (IN BYTES)		;WD.07	**** 3 SPARE WORDS

;;; MASTER LINK STATION (TYPE 6);		;WD.00	[B.00]	SPACE + 6 BYTE STATION NAME		;	[B.07]	**** SPARE BYTE		;WD.04	[B.10]	STATION TYPE (6)		;WD.05	[B.12]	REPEAT COUNT (= 1)SMFLGS	= 14	;WD.06	[B.14]	FLAGS BYTE		;	0 = TPS LINK STATION		;	2 = IBM LINK STATIONSNSUBL	= 15	;	[B.15]	NUMBER OF SUBLINKS		;WD.07	**** 4 SPARE WORDS;;; TPS M      ASTER STATION;SRNNM	= 26	;WD.13	[B.26]	REMOTE NODE NAME (6 BYTES ASCII)SRPTN	= 34	;WD.16	[B.34]	REMOTE TP NAME (6 BYTES ASCII);;; IBM MASTER STATION;SIBMM	= 26	;WD.13	[B.26]	IBM PSEUDO DEVICE MASK BITS (4 WORDS)  ;;; SLAVE LINK STATION (TYPE 10);		;WD.00	[B.00]	SPACE + 6 BYTE STATION NAME		;	[B.07]	**** SPARE BYTE		;WD.04	[B.10]	STATION TYPE (10)		;WD.05	[B.12]	REPEAT COUNT (MAX = 10.)		;WD.06	**** 4 SPARE WORDS  ;;; SUBMIT BATCH STATION (TYPE 12);		;WD.00	[B.00]	SPACE + 6 BYTE STATION NAME		;	[B.07]	**** S      PARE BYTE		;WD.04	[B.10]	STATION TYPE (12)		;WD.05	[B.12]	REPEAT COUNT (= 1)		;WD.06	**** 4 SPARE WORDS  ;;; SLAVE BATCH STATION (TYPE 14);		;WD.00	[B.00]	SPACE + 6 BYTE STATION NAME		;	[B.07]	**** SPARE BYTE		;WD.04	[B.10]	STATION TYPE (14)		;WD.05	[B.12]	REPEAT COUNT (MAX = 16.)		;WD.06	**** 4 SPARE WORDS  	.ENDM	.MACRO	TRAFDF ;; TRANSACTION DEFINITION RECORD;  TRASIZ	= 2072.	; MAXIMUM RECORD SIZE;;TNAM	= 00	;WD.00	[B.00]	TRANSACTION NAME (3 WORDS)TFLGS	= 06	;WD.03	[B.06]	FLAGS WORDTMXMSG	= 10	;WD.04	[B.1      0]	MAXIMUM MESSAGE SIZE (64. BYTE BLOCKS)TWRKST	= 11	;	[B.11]	TRANSACTION WORKING STORAGE (64. BYTE BLOCKS)TSYSWK	= 12	;WD.05	[B.12]	SYSTEM WORKING STORAGE (64. BYTE BLOCKS)		;WD.06	[B.14]	**** 11. SPARE BYTESTNEX	= 27	;	[B.27]	NUMBER OF EXCHANGES (MAX = 32.)TEXBL	= 30	;WD.14	[B.30]	FIRST EXCHANGE BLOCK;;; FORM BLOCK DEFINITIONS;TEXLBL	= 00	;WD.00	[B.00]	EXCHANGE LABEL (3 WORDS)TFRMNM	= 06	;WD.03	[B.06]	FORMAT RECORD NAME (3 WORDS)TEXLIM	= 14	;WD.06	[B.14]	EXCHANGE TIME LIMIT (MINUTES)TACTFL	= 16	;WD.07	[B.      16]	SUBSEQUENT ACTION FLAGSTNDEST	= 17	;	[B.17]	NUMBER OF DESTINATIONS (MAX = 8.)TDESNM	= 20	;WD.10	[B.20]	DESTINATION STATION NAMES (3 WORDS EACH);;TEXBSZ  = TDESNM+60	; SIZE OF EXCHANGE BLOCK	.ENDM	.MACRO	USRFDF ;; USER FILES DEFINITION RECORD; FILSIZ	= 58.	; RECORD SIZE;;FNAM	= 00	;WD.00	[B.00]	LOGICAL FILE NAME (3 WORDS)FILFLG	= 06	;WD.03	[B.06]	FLAGS BYTE		;	[B.07]	SLACK BYTEFMXACC	= 10	;WD.04	[B.10]	MAXIMUM CONCURRENT FILE ACCESSESFNKEYS	= 12	;WD.05	[B.12]	NUMBER OF KEYS DEFINEDFMXKEY	= 14	;WD.06	[B.1      4]	MAXIMUM KEY SIZEFLCKWT	= 16	;WD.07	[B.16]	LOCK WAIT TIME		;	[B.17]	**** SPARE BYTEFSPCLN	= 20	;WD.10	[B.20]	LENGTH OF FILE SPECFILSPC	= 21	;	[B.21]	FILES-11 SPECIFICATION (33. BYTES)		;WD.26	**** 4 SPARE WORDS;;; FLAGS BYTE DEFINITIONS:;FSTG	= 001	; STAGE UPDATESFJNL	= 002	; JOURNAL AFTER IMAGESFWRK	= 010	; WORK FILEFSLD	= 020	; SLOW DELETEFRLK	= 040	; ALLOWED TO READ LOCKED RECORDSFRDO	= 100	; READ ONLYFIDX	= 200	; INDEXED FILE  	.ENDM	.MACRO	WORFDF ;; WORK CLASS DEFINITION RECORD; WORSIZ	= 420.	; MAXIM      UM RECORD SIZE;;WCNAM	= 00	;WD.00	[B.00]	WORK CLASS NAME (3 WORDS)WBITMP	= 06	;WD.03	[B.06]	TRANSACTION AUTHORIZATION BIT MAP (4 WORDS)		;WD.07	**** 10. SPARE WORDSWNTRAN	= 42	;WD.21	[B.42]	NUMBER OF TRANSACTION NAMES SPECIFIEDWTRNAM	= 44	;WD.22	[B.44]	LIST OF TRANSACTION NAMES (3 WORDS EACH)  	.ENDM	.MACRO	AUTFDF ; ; USER AUTHORIZATION RECORD; AUTSIZ	= 440.	; MAXIMUM RECORD SIZE;;USRID	= 00	;WD.00	[B.00]	USER IDENTIFIER (10. WORDS)UPSWRD	= 24	;WD.12	[B.24]	PASSWORD (3 WORDS)UBITMP	= 32	;WD.15	[B.32]	TRANSA      CTION AUTHORIZATION BIT MAP (4 WORDS)		;WD.21	**** 10. SPARE WORDSUNWKCL	= 66	;WD.33	[B.66]	NUMBER OF WORK CLASSES SPECIFIEDUWKNAM	= 70	;WD.34	[B.70]	LIST OF WORK CLASS NAMES (3 WORDS EACH)  	.ENDM	.MACRO	CREBUF	LCH,FNS,FNA,ALQ,FAC,RFM,MRS,ORG,FOP,BKS ;; FORMAT SEND BUFFER TO CREATE FILE;; R1 DESTROYED; 	MOV	#.SENBF,R1	; POINTER TO SEND BUFFER	MOV	#CRE,(R1)+	; OPERATION CODE 	.IRP	X,<LCH,FNS,FNA,ALQ> 	.IF NB <X>	MOV	X',(R1)+ 	.IFF	CLR	(R1)+ 	.ENDC	.ENDM 	CLR	(R1)+		; HIGH ORDER WORD OF ALLOCATION QUANTITY 	      .IRP	X,<FAC,RFM,MRS,ORG,FOP,BKS> 	.IF NB <X>	MOV	X',(R1)+ 	.IFF	CLR	(R1)+ 	.ENDC	.ENDM 	CLR	(R1)+		; HIGH ORDER WORD OF BLOCK NUMBER 	.ENDM	CREBUF	.MACRO	OPNBUF	LCH,FNS,FNA,FAC ;; FORMAT SEND BUFFER TO OPEN FILE;; R1 DESTROYED; 	MOV	#.SENBF,R1	; POINTER TO SEND BUFFER	MOV	#OPN,(R1)+	; OPERATION CODE 	.IRP	X,<LCH,FNS,FNA,FAC> 	.IF NB <X>	MOV	X',(R1)+ 	.IFF	CLR	(R1)+ 	.ENDC	.ENDM	.ENDM	OPNBUF	.MACRO	CONBUF	IFI,KRF,KSZ,RAC ;; FORMAT SEND BUFFER TO CONNECT STREAM;; R1 DESTROYED; 	MOV	#.SENBF,R1	; POINTER TO SEN      D BUFFER	MOV	#CON,(R1)+	; OPERATION CODE 	.IF NB <IFI>	MOV	IFI',(R1)+	; PUT IFI IN BUFFER 	.IFF	TST	(R1)+		; ELSE IFI ALREADY THERE	.ENDC 	.IRP	X,<KRF,KSZ,RAC> 	.IF NB <X>	MOV	X',(R1)+ 	.IFF	CLR	(R1)+ 	.ENDC	.ENDM	.ENDM	CONBUF	.MACRO	GETBUF	RAB,KBF,UBF,USZ ;; FORMAT SEND BUFFER TO GET RECORD;; R1 DESTROYED; 	MOV	#.SENBF,R1	; POINTER TO SEND BUFFER	MOV	#GET,(R1)+	; OPERATION CODE 	.IRP	X,<RAB,KBF,UBF,USZ> 	.IF NB <X>	MOV	X',(R1)+ 	.IFF	TST	(R1)+ 	.ENDC	.ENDM	.ENDM	GETBUF	.MACRO	UPDBUF	RAB,RBF,RSZ ;; FORMAT S      END BUFFER TO UPDATE RECORD;; R1 DESTROYED; 	MOV	#.SENBF,R1	; POINTER TO SEND BUFFER	MOV	#UPD,(R1)+	; OPERATION CODE	MOV	RAB,(R1)+	CLR	(R1)+	MOV	RBF,(R1)+	MOV	RSZ,(R1)+	.ENDM	UPDBUF	.MACRO	PUTBUF	RAB,RBF,RSZ ;; FORMAT SEND BUFFER TO PUT RECORD;; R1 DESTROYED; 	MOV	#.SENBF,R1	; POINTER TO SEND BUFFER	MOV	#PUT,(R1)+	; OPERATION CODE 	.IRP	X,<RAB,RBF,RSZ> 	.IF NB <X>	MOV	X',(R1)+ 	.IFF	TST	(R1)+ 	.ENDC	.ENDM	.ENDM	PUTBUF	.MACRO	BRDBUF	RAB,UBF,USZ,BKT ;; FORMAT SEND BUFFER FOR BLOCK I/O READ;; R1 DESTROYED; 	MO      V	#.SENBF,R1	; POINTER TO SEND BUFFER	MOV	#BRD,(R1)+	; CODE FOR BLOCK I/O READ 	.IRP	X,<RAB,UBF,USZ,BKT> 	.IF NB <X>	MOV	X',(R1)+ 	.IFF	TST	(R1)+ 	.ENDC	.ENDM 	CLR	(R1)+		; HIGH ORDER WORD OF BLOCK NUMBER 	.ENDM	BRDBUF	.MACRO	BWTBUF	RAB,RBF,RSZ,BKT ;; FORMAT SEND BUFFER FOR BLOCK I/O WRITE;; R1 DESTROYED; 	MOV	#.SENBF,R1	; POINTER TO SEND BUFFER	MOV	#BWT,(R1)+	; CODE FOR BLOCK I/O WRITE 	.IRP	X,<RAB,RBF,RSZ,BKT> 	.IF NB <X>	MOV	X',(R1)+ 	.IFF	TST	(R1)+ 	.ENDC	.ENDM 	CLR	(R1)+		; HIGH ORDER WORD OF BLOCK NUM      BER 	.ENDM	BWTBUF	.LIST           ƒ:jRkQÁ› 8$        	.TITLE	INSMGR - INSTALL TP MANAGERS	.IDENT	/1.1C55/ ;;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	.MGRS - INSTALL TP MANAGERS;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;; EDITS:;;	1. CP20 - 1/12/78;	SPECIAL CASE TIM INSTALL - FILE [1,300]XXXXXX.TIM;;	2. CP27 - 2/26      /78;	SPECIAL CASE DATA MANAGER INSTALL - IF HIGH PERFORMANCE DM SPECIFIED;	(MEMORY RESIDENT OVERLAYING) INSTALL FILE [1,54]RDMTSK.TSK;;	3. CP42 4/27/78;	PRINT SPECIAL DSW = -2 ERROR MESSAGE.;;	4. CP50 5/12/78;	INSTALL MANAGERS AT PRIORITY 130.;;	5. CP54 5/23/78;	INSTALL MANAGERS (NO RUN=REM), SDAT, THEN RQST.;;	CP55 5/9/79: 'RUN$' MANAGERS TO MAKE TI:= CO0:. PROVIDE A 1 MINUTE;	TIME LIMIT FOR A MANAGER TO COMPLETE ITS INSTALL FUNCTIONS.	.PAGE;+; .MGRS -;;	THIS MODULE IS CALLED TO LOAD THE TPM MANAGERS;	REQU      IRED BY THE TRANSACTION PROCESSOR.;;	THE RSX-11M INSTALL TASK IS SPAWNED TO INSTALL EACH;	MANAGER TASK. THE RUN=REM SWITCH IS INCLUDED IN ;	THE INSTALL COMMAND LINE TO RUN EACH TASK AND HAVE;	IT REMOVED ON EXIT. A SEND IS ISSUED TO EACH TASK;	INSTRUCTING IT TO PERFORM INSTALL FUNCTIONS.;	DATA INDICATING SUCCESS OR FAILURE IS RECEIVED FROM;	EACH MANAGER TASK. IF ANY OF THEM FAILS TO COMPLETE ;	ITS INSTALL FUNCTIONS, THE INSTALL IS ABORTED.;;; INPUT CONDITIONS:;;	APR 0 MAPPED ONTO TP COMMON AREA;-  	.MCALL	DI      R$,STSE$S,WTSE$S,CLEF$S,MRKT$S,RQST$S	.MCALL	RUN$S,WTLO$S,CMKT$S,RDAF$S ;; STRING TO APPEND TO EACH MANAGER'S MCR INSTALL COMMAND LINE;	.PSECT MGRDAT,D			; CREATE DATA PSECTPRISTR:	.ASCII	#/PRI=202#		; PRIORITY SWITCH: OCTAL 202 = 130.PRISLN	=	.-PRISTR		; STRING LENGTH	.PSECT				; RE-ENTER MAIN PSECT 	.ENABL	LSB	.ENABL	LC.MGRS::	TSTB	.INSOP			; BRIEF INSTALL?	BNE	5$			; IF NE YES, NO RMS TASK 	CLR	.SENBF			; PUT EXIT CODE IN SEND BUFFER	CALL	.SNRMS			; SEND TO RMS TASK 5$:	MOV	.INSRG,.RDB+R.GNAM	; PUT REGIO      N NAME IN RDB	MOV	.TPID,.RDB+R.GNAM+2	; 	CLR	.RDB+R.GSTS		; GET REGION ID ONLY	DIR$	#.ATREG,.DIRER		; GET REGION ID	MOV	#RS.MDL,.RDB+R.GSTS	; MARK REGION FOR DELETION	DIR$	#.DTREG,.DIRER		; DETACH FROM REGION 	MOV	#1,R5			; INITIALIZE MASK WORD FOR MANAGERS	MOV	#.MGRLT,R3		; POINTER TO LIST OF MANAGER TASK NAMES	MOVB	.NMGRS,R4		; R4 = NUMBER OF MANAGERS  10$:	BIT	R5,.LOADM		; INSTALL THIS MANAGER?	BNE	15$			; IF SO, GOTO 15		;**CP20+	JMP	110$			; IF NOT, GOTO GET NEXT MGR15$:	CMP	R5,#LD.DM		; if DATA MANAGE      R		;***CP27	BEQ	53$			; then GOTO SPECIAL CASE DM INS	;***CP27	CMP	R5,#LD.FM		; if THIS MANAGER IS NOT TIM	;**CP20+	BNE	55$			; then CONTINUE					; else DO SPECIAL CASE TIM INSTALL;; FORMAT .INCMD PARAMETER BLOCK - SPECIAL CASE: ; TIM TASK FILENAME = [1,300]XXXXXX.TIM, WHERE XXXXX = TP NAME;	MOV	#.APNAM,R0		; R0 -> TP NAME IN ASCII	MOV	#.TIMTP,R1		; R1 -> FILENAME STRING AFTER '[1,300]'	MOV	#6,R2			; R2 := MAX # CHARACTERS IN TP NAME30$:	CMPB	(R0),#40		; if CHARACTER IN TP NAME = BLANK	BEQ	40$			; then STOP       COPYING CHARACTERS	MOVB	(R0)+,(R1)+		; else COPY NEXT CHAR TO FILENAME STRING	SOB	R2,30$			;      if MORE then LOOP40$:	MOV	#.TIMXT,R0		; R0 -> FILE EXTENSION - '.TIM'	MOV	#.TMXLN,R2		; R2 := # CHAR IN EXTENSION50$:	MOVB	(R0)+,(R1)+		; COPY NEXT CHAR TO FILENAME STRING	SOB	R2,50$			; if MORE then LOOP					; SET UP PARAMETER BLOCK ON STACK	MOV	PC,-(SP)		; DO NOT INCLUDE OF /RUN=REM SWITCH;CP54	MOV	(R3),-(SP)		; PUSH 'TIM' IN RAD50	SUB	#.U300,R1		; R1 := # CHARS IN FILENAME STRING	MOV	R1,-(SP)		; PUSH # CHAR      S IN FLIENAME STRING	MOV	#.U300,-(SP)		; PUSH PTR TO FILENAME STRING	BR	60$			; GOTO FORMAT CMD LINE		;**CP20-;									;**CP27+; SPECIAL CASE DATA MANAGER: FORMAT .INCMD PARAMETER BLOCK;53$:	TST	.INSOP+4		; if HI PERF DM NOT DESIRED	BEQ	55$			; then GOTO NORMAL CASE	MOV	#.MGRNM,R0		; else SPECIAL CASE DM INSTALL	MOVB	#'R,(R0)+		; SPECIFY 'RDMTSK.TSK' INSTALL	MOVB	#'D,(R0)+		;	MOVB	#'M,(R0)+		;	BR	57$			; GOTO FORMAT COMMAND LINE	;**CP27-;; FORMAT .INCMD PARAMETER BLOCK - NORMAL CASE;55$:	MOV	(R3),R1			; CO      NVERT MANAGER SPECIFIC PART OF TASK	MOV	#.MGRNM,R0		; IMAGE FILE NAME TO ASCII AND PUT IT IN	CALL	$C5TA			; THE FILE NAME STRING ;; FORMAT INSTALL COMMAND LINE; 57$:	MOV	PC,-(SP)		; DO NOT INCLUDE RUN SWITCH IN COMMAND									;***CP54	MOV	(R3),-(SP)		; FIRST HALF OF TASK NAME IN RAD50	MOV	#.TFLEN,-(SP)		; LENGTH OF FILE NAME	MOV	#.TSKFL,-(SP)		; POINTER TO TASK IMAGE FILE NAME60$:	MOV	SP,R0			; R0 POINTS TO PARAMETERS	CALL	.INCMD			; FORMAT INSTALL COMMAND LINE	ADD	#10,SP			; RESTORE STACK ;; APPEND PRIORI      TY SWITCH. INSTALL MANAGERS AT PRI 130. (OCTAL 202).;	ADD	#.CMDLN,R0		; R0 -> CURRENT END OF COMMAND LINE	MOV	#PRISTR,R1		; R1 -> PRIORITY STRING	MOV	#PRISLN,R2		; R2 := LENGTH OF PRI STRING65$:	MOVB	(R1)+,(R0)+		; APPEND STRING	SOB	R2,65$	SUB	#.CMDLN,R0		; R0 := LENGTH OF INSTALL COMMAND LINE;; INSTALL AND RUN MANAGER IN TP PARTITION;	MOV	#^R...,.SPAWN+S.PWTN	; INSTALL TASK NAME IN .SPWN DPB	MOV	#^RINS,.SPAWN+S.PWTN+2	; 	MOV	#.CMDLN,.SPAWN+S.PWCA	; POINTER TO COMMAND LINE	MOV	R0,.SPAWN+S.PWCL	; LENGTH OF C      OMMAND LINE70$:	DIR$	#.SPAWN,.DIRER		; SPAWN INSTALL	STSE$S	#1			; STOP UNTIL INSTALL EXITS	CMP	#EX$SUC,.ESB		; INSTALL SUCCESSFUL?	BEQ	100$			; IF EQ YES	MOV	#<S.V1*400!E.R25>,R1	; ELSE SET SEVERITY/ERROR CODE	MOV	R3,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT ;; SEND DATA TO MANAGER; 100$:	MOV	#BF.INS,.SENBF+B.FUN	; PUT CODE FOR INSTALL IN SEND BUFFER	MOV	.COMRG,.SENBF+B.DAT	; PUT COMMON AREA REGION NAME IN BUFFER	MOV	.TPID,.SENBF+B.DAT+2	;	MOV	(R3),.SNDAT+S.DATN	; PUT       MANAGER TASK NAME IN SDAT$ DPB	MOV	2(R3),.SNDAT+S.DATN+2	; 	DIR$	#.SNDAT			; SEND DATA TO MANAGER TASK	;**CP42+	BCC	105$			; if SUCCESS then CONTINUE	CMP	#IE.INS,$DSW		; if MGR NOT INSTALLED ERROR	BEQ	103$			; then PRINT SPECIAL ERR MSG	JMP	.DIRER			; else GOTO FATAL ERROR103$:	MOV	#<S.V1*400!E.R52>,R1	; R1 :=N MGR CRAP-OUT ERROR CODE	BR	107$			; GOTO PRINT FATAL ERROR MESSAGE;; STATE: MANAGER IS INSTALLED; ACTION:;	RUN$ MANAGER: THIS MAKE TI:=CO0:;	INITIATE A MARK TIME TO PREVENT A HANG IF MANAGER ABORTS B      EFORE RESPONSE;	WAIT FOR EITHER THE MANAGER TO RESPOND (SEND DATA TO INSTALL WHICH;	TRIGGERS THE AST ROUTINE, RECAST, WHICH SETS EVENT FLAG 10) OR;	THE MARK TIME TO SET EVENT FLAG 4. READ THE EVENT FLAGS. IF THE;	MANAGER HASN'T RESPONDED (EVENT FLAG 10 NOT SET) THEN GOTO FATAL ERROR.;105$:	CLEF$S	#10.,.DIRER		; CLEAR EVENT FLAG 10		;**CP55+	RUN$S	R3,,,,,#1,#1,,,.DIRER	; RUN MANAGER (AFTER 1 TICK)	MRKT$S	#4,#1,#3,,.DIRER	; MARK TIME FOR 1 MINUTE (EVENT FLAG 4)	WTLO$S	0,#1010		; STOP UNTIL EVENT FLAG 4 OR 10       SET					; EF 4 WILL BE SET WHEN MARK TIME UP					; EF 10 SET IN RECAST WHEN MGR SDAT$					; NOTE: CAN'T USE STLO$ DUE TO AST	CMKT$S	,,.DIRER		; CANCEL MARK TIME REQUEST	RDAF$S	#.CMDLN			; READ IN EVENT FLAGS	BIT	#1000,.CMDLN		; if EF #10 IS NOT SET	BEQ	106$			; then MANAGER DIDN'T RESPOND: GOTO ERROR;;;;;;;;;RQST$S	R3,,,,,.DIRER		; REQUEST MANAGER		;***CP54;;;;;;;;;WTSE$S	#10.,.DIRER		; WAIT TO RECEIVE DATA 		;**CP42-									;**CP55-	CMP	#BF.ISC,.RECBF+B.FUN+4	; MANAGER COMPLETE INSTALL?	;-1*CP55	BEQ	110$	     		; IF EQ YES106$:	MOV	#<S.V1*400!E.R26>,R1	; ELSE SET SEVERITY/ERROR CODE107$:	MOV	R3,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT 110$:	ADD	#6,R3			; R3 POINTS TO NEXT MANAGER TASK NAME	ASL	R5			; BIT MASK FOR NEXT MANAGER TASK	DEC	R4			; ALL MANAGERS INSTALLED?	BLE	120$			; IF SO, GOTO DONE	JMP	10$			; IF NOT, GOTO INSTALL NEXT MGR120$:	RETURN	.DSABL	LSB	.END          šw_MkQÁ› 8$        .TITLE	SERLOG SOFTWARE ERROR LOGGING ROOT.IDENT	"V001A";;;;;;;                         COPYRIGHT (C) 1978 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  SOF      TWARE  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.;;;;;	MODULE:		SOFTWARE ERROR LOGGER ROOT MODULE;;	VERSION:	V001A;;	AUTHOR:		GW;;	DATE:		29-JUN-78;;;;.SBTTL ROOT FOR SOFTWARE ERROR LOGGER	.MCALL	QIO$,WSIG$S,WTSE$C,SETF$C,ASTX$S	.MCALL	FD      BDF$,FDRC$A,FDOP$A,FDAT$A,FDBK$A	.MCALL	CLOSE$,DIR$	.MCALL	NBOF$L,EXST$	.MCALL	FSRSZ$	.MCALL	USTP$C	NBOF$L			;DEFINE FILE NAME BLOCKDATNUM	=	0.		;DATA PSECT NUMBER; OFFSETS FOR RECEIVED MESSAGESRCTX	==	4		;CONTEXTRCODE	==	6		;CODERTP	==	8.		;TRANSACTION PROCESSORRYEAR	==	14.		;YEARRTRID1	==	18.		;FIRST TRIAD (DATA)RTRID2	==	24.		;SECOND TRIAD (POINTER); OFFSETS FOR THE OUTPUT BUFFEROSEQ	==	12.		;SEQUENCE NUMBEROTP	==	14.		;TRANSACTION PROCESSOR NAMEOTRAN	==	20.		;TRANSACTION NAMEOID	==	26.		;TRANSACTION ID       NUMBEROSRC	==	32.		;SOURCE STATIONOYEAR	==	46.		;YEAR	ORG	LOGRW,RW	ORG	DATA0,RO	ORG	SERLOG,RO.SBTTL	MAIN PROCESSING LOOPSERLOG:	CALL	OPNFIL		;OPEN THE FILES	CALL	SETUP		;FINISH SETTING UP10$:	CALL	PROCES		;MAIN ERROR PROCESSING ROUTINE	CALL	CONTRL		;CONTROL PROCESSING ROUTINE	TSTB	RECBUF+RCODE+1	;ARE WE PURGING	BEQ	20$		;YES	CALL	GETCTL		;NO. READ NEW CONTROL RECORD	BR	10$		;CONTINUE PROCESSING20$:	CALL	PURGE		;PURGE THE LOG FILE	CALL	NEWLOG		;REOPEN THE NEW LOG FILE	BR	10$		;GO BACK TO PROCESSING ROUTINE.      SBTTL	PRINT SUBROUTINES;+; PRINT  - PRINT TEXT; PRINT2 - PRINT N CHARACTERS;;	CALL PRINT,R5;	---> TEXT;	 # CHARACTERS;;	CALL PRINT2,R5;	# CHARACTERS;	Q.IOPL IN DPB POINTS TO TEXT;;	...;;	RETURN;;	OR;;	JMP EREXIT;-	.ENABL	LSBPRINT::	MOV	(R5)+,PRTDPB+Q.IOPL ;SET POINTER TO TEXTPRINT2::MOV	(R5)+,PRTDPB+Q.IOPL+2 ;SET THE CHARACTER COUNT10$:	DIR$	#PRTDPB		;ISSUE THE QIO	BCC	20$		;SKIP IF NO ERROR	CMPB	$DSW,#IE.UPN	;BUFFER ALLOCATION FAILURE?	BNE	30$		;NO	WSIG$S			;WAIT FOR A SIGNIFICANT EVENT	BR	10$		;TRY AGAIN2      0$:	WTSE$C	1,SERLOG	;WAIT FOR THE I/O TO COMPLETE	CMPB	STATUS,#IS.SUC	;WAS IT ANY GOOD?	BNE	30$		;NO. GIVE UP	RETURN	R5		;I/O COMPLETE. RETURN30$:	JMP	EREXIT		;ERROR EXIT	.DSABL	LSB.SBTTL	CLOSE A FILE;+; CLSES - CLOSE A FILE;;	CALL CLSES,R5;	FDB ADDRESS;;	...;;	RETURN;	R0 ---> FDB ;;	OR;;	JMP EREXIT;-	.ENABL	LSBCLSES::	MOV	(R5)+,R0	;GET THE FDB POINTER	CLOSE$	R0		;CLOSE IT	BCC	10$		;RETURN IF NO ERROR	SERMES	^/@Close error@/	CALL	ERRTXT		;FINISH UP THE ERROR MESSAGE	BR	EREXIT		;ABORT10$:	RETURN	R5		;GOOD R      ETURN	.DSABL	LSB.SBTTL	PRINT STANDARD END OF ERROR MESSAGE;+; ERRTXT - FINISH UP ERROR TEXT (FILE NAME AND ERROR NUMBER);;	CALL ERRTXT;	R0 ---> FDB;;	...;;	RETURN;	R0,R1,R2,R3,R4 = RANDOM;-ERRTXT::MOV	F.DSPT(R0),R1	;POINT TO DEVICE DESCRIPTOR	MOV	12(R1),R1	;POINT TO FILE NAME	MOV	#FILNAM,R2	;TEXT STRING	MOV	#10.,R3		;COUNT5$:	MOVB	(R1)+,(R2)+	;MOVE NAME TO TEXT STRING	SOB	R3,5$		;LOOP	TELLIT	#FILTXT,FILEND-FILTXT ;TYPE THE FILE NAME.SBTTL	ERROR NUMBER PRINTING ROUTINE;+; ERRNUM - PRINT ERROR NUMBER; ERRNM2       - PRINT ERROR NUMBER;;	CALL	ERRNUM;	R0 ---> FDB;;	CALL	ERRNM2;	R1 = ERROR NUMBER;	...;;	RETURN;	R0,R1,R2,R3,R4 = RANDOM;-ERRNUM::MOVB	F.ERR(R0),R1	;GET THE ERROR NUMBERERRNM2::NEG	R1		;MAKE IT POSITIVE	MOV	#NUMEND,R3	;GET A POINTER TO THE END OF THE TEXT10$:	CMP	R3,#NUMMID	;IS THE TEXT ALL FILLED IN		BLE	30$		;YES	CLR	R0		;MAKE NUMBER DOUBLE PRECISION	DIV	#10.,R0		;GET LAST DIGIT	TST	R1		;IS THERE ONE	BNE	20$		;YES	TST	R0		;IS THERE ANYTHING	BEQ	25$		;NO20$:	ADD	#'0,R1		;MAKE IT ASCII25$:	MOVB	R1,-(R3)	;AN      D STORE IT	MOV	R0,R1		;SET UP FOR NEXT PASS	BR	10$		;AND DO IT30$:	TELLIT	#NUMBEG,NUMEND+2-NUMBEG ;TYPE THE NUMBER	RETURN.SBTTL	RECEIVE DATA AST ROUTINERECAST::USTP$C	SERLOG,SERLOG	;INSTOP OURSELF	ASTX$S			;EXIT THE AST.SBTTL	EXITSEREXIT::MOV	EX$SEV,EXSDPB+2	;SET STATUS TO SEVERE ERRORGDEXIT::DIR$	#EXSDPB		;EXIT.SBTTL	READ/WRITE DATA SECTION	FSRSZ$	0		;SET UP BUFFERS	TMPORG	LOGRWSECOND::.WORD	0		;SECONDARY DEVICE FLAGEXSDPB:	EXST$	0		;SET UP DPB FOR EXIT WITH STATUSFILTXT:	.ASCII	/File:	/FILNAM:	.ASCII	/A      BCDEF.GHI/FILEND:NUMBEG:	.ASCII	/Error:	-/NUMMID:	.ASCII	/123456/NUMEND:	.ASCII	/./.EVENSTATUS::.WORD	0,0		;I/O STATUS WORDSSEQ::	.WORD	0		;SEQUENCE NUMBERPRTDPB::QIO$	IO.WBT,5,1,,STATUS,,<,,40> ;SET UP DPB FOR TERMINALTPFFDB::FDBDF$			;SET UP FDB FOR CONTROL FILE	FDAT$A	R.FIX,FD.BLK,512.	FDRC$A	FD.RWM	FDBK$A	NUMTP,512.,,1,STATUS	FDOP$A	1,TPFDSP,,FO.RD!FA.SHRLOGFDB::FDBDF$			;SET UP FDB FOR LOG FILE	FDAT$A	R.FIX,FD.BLK,512.,-16.,-16.	FDRC$A	FD.RWM	FDBK$A	OUTBUF,512.,,2,STATUS	FDOP$A	2,LOGDSP,,FO.APD!FA.SHRD      ATFDB::FDBDF$			;SET UP FDB FOR MESSAGES	FDAT$A	R.FIX,FD.BLK,512.	FDRC$A	FD.RWM	FDBK$A	BASES,512.,,3,STATUS	FDOP$A	3,DATDSP,,FO.RD!FA.SHRTMPFDB::FDBDF$			;SET UP FDB FOR SECONDARY LOG FILE	FDAT$A	R.FIX,FD.BLK,512.,-16.,-16.	FDRC$A	FD.RWM	FDBK$A	OUTBUF,512.,,2,STATUS	FDOP$A	4,TMPDSP,,FO.WRT!FA.SHRSAVFNB::.BLKW	S.FNBW		;SAVED LOG FILE NAME BLOCKBASES::	.BLKW	16.		;SAVED BASES FOR MESSAGESTXTBUF::.BLKB	512.		;TEXT BUFFERNUMTP::	.WORD	0		;NUMBER OF VALID TRANSACTION PROCESSORSCTLBUF::.BLKB	84.*6.		;LIST OF VALI      D TRANSACTION PROCESSORSDEVICE::.WORD	0		;SECONDARY DEVICE NAMEUNIT::	.WORD	0		;SECONDARY DEVICE UNITRECBUF::.BLKB	30.		;RECEIVE BUFFERRECNBR::.WORD	0,-1		;RECORD NUMBER FOR TEXT BUFFEROUTBUF::.BLKB	512.		;OUTPUT BUFFEROUTEND::TMPNAM:	.ASCII	/SERLOG.TMP;/	;SECONDARY LOG FILEVERNUM::.ASCII	/000/		;VERSION NUMBER.SBTTL	READ ONLY DATA	TMPORG	DATA0TPFDSP:	.WORD	3,SYSDEV	;DATA SET DESCRIPTOR FOR CONTROL FILE	.WORD	7,DIRECT	.WORD	10.,TPFNAMLOGDSP:	.WORD	3,SYSDEV	;DATA SET DESCRIPTOR FOR LOG FILE	.WORD	7,DIRECT	.   º  WORD	10.,LOGNAMDATDSP:	.WORD	3,SYSDEV	;DATA SET DESCRIPTOR FOR MESSAGE FILE	.WORD	7,DIRECT	.WORD	10.,DATNAMTMPDSP:	.WORD	3,SYSDEV	;DATA SET DESCRIPTOR FOR THE SECONDARY LOG FILE	.WORD	7,DIRECT	.WORD	14.,TMPNAMSYSDEV:	.ASCII	/SY:/		;SYSTEM DEVICE	.EVENDIRECT:	.ASCII	/[1,300]/	;UIC FOR FILES	.EVENTPFNAM::.ASCII	/SERLOG.TPF/	;CONTROL FILE NAMELOGNAM::.ASCII	/SERLOG.LOG/	;LOG FILE NAMEDATNAM::.ASCII	/SERLOG.DAT/	;MESSAGE FILE NAME	.END	SERLOGº         ’^!kQÁ› 8$        	.TITLE	TPREMV - REMOVE TP	.IDENT	/V01A/ ;;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	TPSREMOVE - REMOVE TRANSACTION PROCESSOR;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;;; EDITS:;;	1. CV  3-NOV-77;	UNCOMMENTED CODE TO ACCEPT DCL COMMAND LINES.;;	2. CP15   7-DEC-77      ;	STOP FOR MESSAGE FROM TPINSTALL/DCL TO PERMIT CHECKPOINTING.;;	3. CP37  18-APR-78;	ERROR CONDITION PROCESSING.;;	4. CP40	4/19/78:;	DO NOT PRINT COMPLETION MESSAGE.;;	5. CP41 4/20/78:;	ADD "ALL" CAPABILITY.;;	6. CP55 5/23/78:;	INSTALL MANAGER, SDAT, THEN REQUEST.;;	7. CP56 6/2/78:;	CONNECT TO MANAGER BEFORE FINAL ABORT. WAIT ON EVENT FLAG (MANAGER EXIT);	THEN SPAWN REMOVE OF MANAGER.;;	8. CFP1 8/3/78;	ON CONNECT TO MANAGER ERROR, IF $DSW = -2 (IE.INS) THEN ASSUME MANAGER;	HAS ALREADY BEEN ABORTED.;;	9. CFP      2 10/3/78;	ATTACH TO THE FIRST 8KW OF APPLICATION COMMON: AFTER A BRIEF INSTALL;	THIS REGION COULD BE VERY LARGE.;;	10. CFP3 3/6/79;	SEND SYSTEM CONTEXT BLOCK ADDRESS WITH BF.REM CODE TO MANAGERS.;;+; THIS MODULE CONTAINS CODE TO REMOVE AN INSTALLED AND INACTIVE TRANSACTION; PROCESSOR. THE MEMORY ALLOCATED FOR THE TP-SPECIFIC DATA; AREAS IS RELEASED AND THE TPM MANAGERS INSTALLED FOR THE; TRANSACTION PROCESSOR NOTIFIED TO EXIT. IF THE SPECIFIED TP NAME IS; "ALL", ALL INSTALLED AND INACTIVE TPs IN THE SYSTEM       ARE REMOVED.;-	.PAGE	.SBTTL DPB DEFINITIONS;; MACRO LIBRARY CALLS; 	.MCALL	DIR$,RCVD$,STSE$,MRKT$,RSUM$S,SDAT$S,ABRT$S		;***CP15	.MCALL	QIOW$C,EXST$S	.MCALL	RDBBK$,WDBBK$,ATRG$C,CRAW$C,DTRG$C	.MCALL	FDOFF$,FSRSZ$,FDBDF$,FDRC$A	.MCALL	OPEN$M,GET$,PUT$,CLOSE$	.MCALL	SPWN$							;***CP55	.MCALL	CNCT$S							;***CP56 	TPFDEF				; DEFINE TP RECORD OFFSETS 	.ENABL	LC	FDOFF$	DEF$L			; DEFINE FDB OFFSETS	FSRSZ$	1,512.			; 1 FILE OPEN FOR RECORD I/O MARK:	MRKT$	1,10.,1			; 10 TICK MARK TIME ON FLAG 1STOP1:	STSE$	1	      		; STOP FOR FLAG 1		;***CP15RCDAT:	RCVD$	,RCVBUF			; RECEIVE DATA			;*****CV.FDB::	FDBDF$				; FDB	FDRC$A	FD.RAN,TPREC,TPRSZ	; RANDOM GET$ AND PUT$ RDB:	RDBBK$	,,,<RS.WRT!RS.MDL!RS.DEL> ; REGION DESCRIPTOR BLOCKWDB:	WDBBK$	0,,,,,<WS.WRT!WS.MAP>	; WINDOW DESCRIPTOR BLOCKSPAWN:	SPWN$	MCR...,,,,,1,,ESB,REMCMD,REMLEN				;**CP55+ESB:	.BLKW	8.			; EXIT STATUS BLOCKREMCMD:	.ASCII	\REM \			; REMOVE COMMAND LINEREMTSK:	.BLKB	6			; MANAGER TASK NAMEREMLEN	=	.-REMCMD		; COMMAND LINE LENGTH		;**CP55-	.PAGE	.SBTTL	DATA       AREA ;; LOCAL DATA; 									;CV*-6ANYTPS:	.WORD	0			; NON-ZERO IF ANY TPs WERE REMOVED**CP41REMALL:	.WORD	0			; ZERO IF ALL INSTALLED TPS ARE	;***CP41					; TO BE REMOVEDALLNAM:	.ASCII	\ALL   \		; 'TP NAME' USED TO REMOVE ALL TPsRCVBUF:	.BLKW	2			; 15. WORD RECEIVE BUFFER	;***CVSNDBUF:	.BLKW	13.			; 13. WORD SEND BUFFERBUFDIF	=	<ALLNAM-SNDBUF>		; DISTANCE BETWEEN TP NAME BUFFERS**CP41 TPREC:	.BLKB	TPRSZ			; TP RECORD BUFFER	.EVEN DSD:	.WORD	0,0			; DATA SET DESCRIPTOR	.WORD	UICLEN	.WORD	UIC	.WORD	TPFLEN	.      WORD	TPFIL UIC:	.ASCII	/[1,1]/UICLEN = .-UIC TPFIL:	.ASCII	/TPDEF.TPF/TPFLEN = .-TPFIL COMREG:	.RAD50	/COM/		; COMMON AREA REGIONSCBREG:	.RAD50	/SCB/		; SCB REGIONIMPREG:	.RAD50	/IMP/		; FILE IMPURE AREAS REGIONDATREG:	.RAD50	/DAT/		; DATA MGR REGION FOR RAB AND CONTEXT BLOCKSDMRREG:	.RAD50	/DMR/		; DATA MGR REGION FOR CHANNEL ACCESS BLOCKS				; AND LOCK BLOCKSMBPREG:	.RAD50	/MBP/		; MAILBOX MANAGER REGIONECXREG:	.RAD50	/ECX/		; EXECUTION MANAGER CONTEXT BLOCK REGIONLCXREG:	.RAD50	/LCX/		; LINK MANAGER CONT      EXT BLOCK REGIONBCXREG:	.RAD50	/BCX/		; BATCH MANAGER CONTEXT BLOCK REGIONCACREG:	.RAD50	/CAC/		; CACHE REGIONLSTREG = . 									;*CP40-4	.EVEN	.PAGE	.SBTTL	REMOVE TRANSACTION PROCESSOR 	.ENABL	LSBREMOVE: ;; RECEIVE COMMAND LINE DATA; 	DIR$	#RCDAT			; RECEIVE DATA			;*****CV	BCC	20$			; IF C-CLR RECEIVE DONE		;*****CV	CMP	#IE.ITS,$DSW		; IF ERROR, WAS BUFFER QUEUED?	;*****CV	BEQ	10$			; IF EQ NO - TRY AGAIN		;*****CV	CALL	DIRERR			; ELSE UNEXPECTED ERROR		;*****CV10$:	DIR$	#MARK			; WAIT A BIT			;*****CV	D      IR$	#STOP1			;				;***CP15	BR	REMOVE			; TRY RECEIVE AGAIN		;*****CV ;; VERIFY TP EXISTS. IF TP NAME = 'ALL', REMOVE ALL INSTALLED, INACTIVE TPs.; 20$:	MOV	#RCVBUF+4,R0		; POINTER TO COMMAND DATA RECEIVED	MOV	#6,R1			; R1 = MAX LENGTH OF TP NAME30$:	TSTB	(R0)			; BLANK FILL TP NAME IF NOT 6 BYTES	BNE	40$			;	MOVB	#40,(R0)		;40$:	CMPB	(R0),BUFDIF(R0)		; if CHARACTER SAME AS 'ALL'	;**CP41+	BEQ	41$			; then DON'T INDICATE NOT 'ALL'	MOV	#1,REMALL		; INDICATE DO NOT REMOVE 'ALL' TPs41$:	INC	R0			;				;**CP41-	SO      B	R1,30$			; 	OPEN$M	#.FDB,#1,#DSD,,,,IOERR	; OPEN TP FILE WITH WRITE ACCESS	MOV	#TPRSZ,.FDB+F.RSIZ	; SET CORRECT RECORD SIZE IN FDB 50$:	GET$	#.FDB,,,IOERR		; GET TP RECORD	MOV	#TPREC,R1		; POINTER TO TP RECORD	CMPB	#'#,(R1)		; LAST RECORD?	BNE	60$			; IF NE NO, CONTINUE	TST	REMALL			; if NOT REMOVING ALL		;**CP41+	BNE	55$			; then EOF ERROR: HAVEN'T FOUND TP REC	JMP	190$			; else GOTO SEE IF REMOVED ANY TPs55$:	MOV	#<S.V1*400!E.R3>,R1	; ELSE SET SEVERITY/ERROR CODE	;**CP41-	CALL	CMDERR			; CALL ERROR ROUT      INE60$:	TST	REMALL			; if REMOVING ALL TPs		;**CP41+	BEQ	80$			; then GOTO SEE IF INSTALLED	;**CP41-	MOV	#RCVBUF+4,R2		; POINTER TO NAME OF TP TO INSTALL	MOV	#6,R3			; LENGTH70$:	CMPB	(R1)+,(R2)+		; IS THIS THE RIGHT TP RECORD?	BNE	50$			; IF NE NO - TRY NEXT RECORD	SOB	R3,70$			; ;; VERIFY TP CAN BE REMOVED; 	BIT	#TPST,TPREC+TPSTAT	; TP ACTIVE?	BEQ	90$			; IF EQ NO, CONTINUE		;***CP37	MOV	#<S.V1*400!E.R5>,R1	; ELSE SET SEVERITY/ERROR CODE	CALL	CMDERR			; CALL ERROR ROUTINE ;; DO NOT TEST IF TP IS INSTALLED      : IF REMOVE WAS SPAWNED BY INSTALL (UPON FATAL; INSTALL ERROR) TPREC WILL NOT SHOW TP WAS INSTALLED. IF REMOVE SPAWNED BY; TPCTRL, TPREC WILL HAVE BEEN CHECKED FOR INSTALL BIT.;;75$:	BIT	#TPIN,<TPREC+TPSTAT>	; if TP IS INSTALLED		;**CP37+;	BNE	90$			; then CONTINUE;	MOV	#<S.V1*400!E.R4>,R1	; else FATAL ERROR;	JMP	CMDERR			; PRINT 'TP NOT INSTALLED' AND EXIT									;**CP37-;									;**CP41+; if TP IS INSTALLED AND INACTIVE then REMOVE IT;80$:	BIT	#TPIN,<TPREC+TPSTAT>	; if TP NOT INSTALLED	BEQ	50$			; then       TRY NEXT TPREC	BIT	#<TPST!TPSIP>,<TPREC+TPSTAT> ; if TP STARTED OR CHANGING	BNE	50$			; then GOTO TRY NEXT TPREC	MOV	#1,ANYTPS		; INDICATE THAT AT LEAST ONE TP REMOVED									;**CP41-;; MAP ONTO COMMON AREA; 90$:	MOV	COMREG,<R.GNAM+RDB>	; PUT REGION NAME IN RDB	;**CP41+	MOV	TPREC+TPID,<R.GNAM+2+RDB>;				;**CP41-	ATRG$C	RDB			; ATTACH TO COMMON AREA	BCC	110$			; IF C-CLR ATTACH DONE	CMP	#IE.PNS,$DSW		; ERROR = REGION DOESN'T EXIST?	BEQ	100$			; IF EQ YES	CALL	DIRERR			; ELSE UNEXPECTED ERROR100$:	MOV	#<S.V1      *400!E.R11>,R1	; SET SEVERITY/ERROR CODE	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT110$:	MOV	<R.GID+RDB>,<W.NRID+WDB>; PUT COMMON AREA REGION ID IN WDB*CP41+	MOV	<R.GSIZ+RDB>,<W.NSIZ+WDB>; PUT WINDOW SIZE IN WDB	CMP	<W.NSIZ+WDB>,#400	; if COMMON <= 8KW		;**CFP2+	BLOS	115$			; then CONTINUE	MOV	#400,<W.NSIZ+WDB>	; else MAP ONLY 1ST 8KW		;**CFP2-115$:	CLR	<WDB+W.NLEN>		; CLEAR DEFAULT WINDOW LENGTH	;**CP41-	CRAW$C	WDB,,DIRERR		; MAP ONTO COMMON AREA ;; NOTIFY MANAGER TASKS TO EXIT; 	MOV	.NMGRS,R3		; R3 = N      UMBER OF MANAGERS	BNE	120$			; if > 0 then CONTINUE	JMP	155$			; else FORGET ABOUT THE MGRS	;***CP56120$:	MOV	#.MGRLT,R4		; R4 POINTS TO MANAGER LIST IN COMMON	MOV	#1,R5			; INITIALIZE R5 FOR LOAD MASK NXTMGR:	BIT	R5,.LOADM		; IS THIS MANAGER INSTALLED?	BEQ	150$			; IF EQ NO, SKIP MANAGER					; DO NOT USE 1ST 6 BYTES OF SNDBFR,					; THE TPNAME (OR 'ALL') IS SAVED THERE					; FOR A CMDERR ERROR MESSAGE	MOV	#BF.REM,<SNDBUF+B.FUN+6> ; PUT REMOVE CODE IN SEND BUFFER	MOV	4(R4),<SNDBUF+6+B.CXT>	; PUT MGR'S C.B.       ADR IN BFR	;***CFP3	SDAT$S	R4,#<SNDBUF+6>		; SEND DATA TO MANAGER	BCC	130$			; IF C-CLR SEND DONE	CMP	#IE.INS,$DSW		; ERROR = MANAGER NOT INSTALLED?	BEQ	150$			; IF EQ YES	CALL	DIRERR			; ELSE UNEXPECTED ERROR130$:	RSUM$S	R4			; RESUME MANAGER	BCC	150$			; IF C-CLR MANAGER RESUMED	CMP	#IE.ACT,$DSW		; if MGR NOT ACTIVE		;***CP57	BEQ	150$			; then CONSIDER IT ABORTED	CMP	#IE.INS,$DSW		; if MGR NOT INSTALLED		;***CP37	BEQ	150$			; then CONSIDER IT REMOVED	;***CP37	CMP	#IE.ITS,$DSW		; if MANAGER NOT SUSPENDED	B      EQ	150$			; then IGNORE NOW, ABORT LATER	CALL	DIRERR			; ELSE UNEXPECTED ERROR150$:	ADD	#6,R4			; POINT TO NEXT MANAGER TASK NAME	ASL	R5			; BIT MASK FOR NEXT MANAGER	SOB	R3,NXTMGR		; ;; ABORT MANAGERS IF NOT ALREADY ABORTED AND REMOVE THEM; 	MOV	.NMGRS,R3		; R3 = NUMBER OF MANAGERS	BEQ	155$			; NO MANAGERS INSTALLED	MOV	#.MGRLT,R4		; R4 POINTS TO MANAGER LIST IN COMMON	MOV	#1,R5			; INITIALIZE R5 FOR LOAD MASK ABRTMG:	BIT	R5,.LOADM		; IS THIS MANAGER INSTALLED?	BEQ	154$			; IF EQ NO, SKIP MANAGER	CNCT$S	R4      ,#1			; CONNECT TO MANAGER BEFORE ABORT;*CP56+	BCC	151$			; if CONNECT OK then CONTINUE	CMP	#IE.ACT,$DSW		; if MANAGER NOT ACTIVE	BEQ	153$			; then GOTO REMOVE IT	CMP	#IE.INS,$DSW		; if MANAGER NOT INSTALLED	;***CFP1	BEQ	154$			; then GOTO NEXT MGR		;***CFP1	JMP	DIRERR			; else GOTO DIRECTIVE ERROR	;**CP56-151$:	ABRT$S	R4			; ABORT TASK			;**CP37+	BCC	152$			; if OK then CONTINUE	CMP	#IE.ACT,$DSW		; if MANAGER NOT ACTIVE	BEQ	153$			; then CONSIDER MANAGER REMOVED	CMP	#IE.INS,$DSW		; if MANAGER NOT INSTALLED      	;***CFP1	BEQ	154$			; then GOTO NEXT MGR		;***CFP1	JMP	CMDERR			; else GOTO FATAL ERROR		;**CP37-152$:	DIR$	#STOP1,DIRERR		; STOP UNTIL MGR TASK IS ABORTED;***CP56153$:	MOV	(R4),R1			; R1 -> RAD50 MANAGER NAME	;**CP55+	MOV	#REMTSK,R0		; R0 -> MGR NAME IN REM CMD LINE	CALL	$C5TA			; CONVERT 1ST WORD OF MGR NAME TO ASCII	MOV	2(R4),R1		; R1 -> 2ND WORD OF MGR NAME (RAD50)	CALL	$C5TA			; CONVERT 2ND WORD OF NAME	DIR$	#SPAWN,DIRERR		; SPAWN REMOVE OF TASK	DIR$	#STOP1,DIRERR		; WAIT FOR SPAWN TO COMPLETE	CMP	ESB      ,#EX$SUC		; if SPAWN OK	BEQ	154$			; then CONTINUE					; DIAG ERROR: COULDN'T REMOVE MANAGER	MOV	2(R4),-(SP)		; (SP) := 2ND RAD50 WORD OF MGR NAME	MOV	(R4),-(SP)		; (SP) := 1ST WORD OF MGR NAME	MOV	SP,R2			; R2 -> ERROR BLOCK	MOV	#<S.V0*400!E.R16>,R1	; R1 := ERROR CODE	CALL	.ERMSG			; PRINT ERROR MESSAGE AND RETURN	CMP	(SP)+,(SP)+		; CLEAN STACK154$:	ADD	#6,R4			; POINT TO NEXT MANAGER TASK NAME;*CP55-	ASL	R5			; BIT MASK FOR NEXT MANAGER;;;;	SOB	R3,ABRTMG		;	DEC	R3	BGT	ABRTMG;; DELETE REGIONS ASSOCIATED WI      TH TP; 155$:	MOV	#COMREG+2,R0		; R0 POINTS TO LIST OF REGION NAMES160$:	DTRG$C	RDB,,DIRERR		; DETACH REGION170$:	CMP	#LSTREG,R0		; LAST REGION DONE?	BEQ	180$			; IF EQ YES	MOV	(R0)+,RDB+R.GNAM	; PUT REGION NAME IN RDB	ATRG$C	RDB			; ATTACH REGION	BCC	160$			; IF C-CLR ATTACH DONE	CMP	#IE.PNS,$DSW		; ERROR = REGION DOESN'T EXIST?	BEQ	170$			; IF EQ YES, DON'T TRY TO DETACH	CALL	DIRERR			; ELSE UNEXPECTED ERROR ;; UPDATE TP FILE RECORD; 180$:	CLR	TPREC+TPSTAT		; CLEAR STATUS WORD	DEC	.FDB+F.RCNM+2		; GET RECO      RD NUMBER	PUT$	#.FDB,,,IOERR		; WRITE UPDATED TP RECORD	TST	REMALL			; if NOT REMOVING ALL TPs	;**CP41+	BNE	195$			; then GOTO CLOSE FILE AND EXIT	JMP	50$			; else TRY NEXT TPREC;; if REMOVING ALL TPs then if NO TPs WERE REMOVED then PRINT DIAGNOSTIC ERROR;190$:	TST	ANYTPS			; if ANY TPs WERE REMOVED	BNE	195$			; then CONTINUE	MOV	#<S.V0!400*E.R15>,R1	; else PRINT ERROR MESSAGE	CALL	.ERMSG			; PRINT 'NO INSTALLED TPs';; CLOSE TPDEF FILE AND EXIT;195$:	CLOSE$	#.FDB			; CLOSE TP FILE			;**CP41-									;*CP40      -4	EXST$S	#EX$SUC			; EXIT WITH SUCCESS STATUS 	.DSABL	LSB	.PAGE	.SBTTL	ERROR ROUTINES ;; DIRECTIVE ERROR ROUTINE; DIRERR:	MOV	$DSW,-(SP)		; DSW = ERROR CODE	MOV	SP,R2			; R2 POINTS TO ARGUMENT BLOCK	MOV	#<S.V1*400!E.R1>,R1	; SET SEVERITY/ERROR CODE	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT ;; I/O ERROR ROUTINE; IOERR:	MOV	.FDB+F.ERR,-(SP)	; ERROR CODE	BIS	#177400,(SP)		; SIGN EXTEND	MOV	#E.R6,R0		; FIRST I/O ERROR CODE	CMP	#IE.NSF,(SP)		; ERROR = FILE DOESN'T EXIST?	BEQ	10$			; IF EQ YES	INC	R0			; ELS      E GET NEXT ERROR CODE	CMP	#IE.LCK,(SP)		; ERROR = FILE LOCKED?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.WAC,(SP)		; ERROR = FILE ACCESSED FOR WRITE?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.CLO,(SP)		; ERROR = FILE NOT PROPERLY CLOSED?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.PRI,(SP)		; ERROR = PRIVILEGE VIOLATION?	BEQ	10$			; IF EQ YES	MOV	#<S.V1*400!E.R2>,R1	; ELSE SET SEVERITY/ERROR CODE FOR					; UNEXPECTED ERROR	MOV	SP,R2			; R   €  2 POINTS TO ARGUMENT LIST	BR	20$			; 10$:	MOV	#<S.V1*400>,R1		; SET SEVERITY/ERROR CODE	BISB	R0,R1			;20$:	CALL	.ERMSG			; PRINT ERROR MESSAGE AND EXIT ;; COMMAND LINE ERROR ROUTINE; CMDERR:	MOV	#RCVBUF+4,-(SP)		; POINTER TO TP NAME SPECIFIED	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT	TST	(SP)+			; (SP+2) RESTORE STACK	RETURN 	.END	REMOVE€         x¯}Á› 8$ð‘      	.TITLE	SHUTDOWN UTILITY                                                ; KR001	.IDENT	"V1.1A02"                                                       ; KR003;                                                                               ;**-1;+                                                                              ; KR001;;;;;                         COPYRIGHT (C) 1978 BY;             DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.;;; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPI      ED; 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 US      E OR  RELIABILITY  OF  ITS; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.;;;;;	MODULE:		SHUTDOWN;;	VERSION:	V1.1A                                                   ; KR001;                                                                               ; KR001;	EDIT LEVEL:	02                                                      ; KR003;                                                                               ;**-1;	AUTHOR:		GW                                                      ; KR002;			KMR                                                           ; KR002;                                                                               ; KR002;	DATE:		01-May-79                                               ; KR003;                                                                               ;**-1;                                                                               ; KR001;-                                                                              ; KR001;                                                                                     ; KR001;                                                                               ; KR001;+                                                                              ; KR001;                                                                               ; KR001;	MODIFICATION HISTORY                                                    ; KR001;                                                                               ; KR001;                                                                                     ; KR001;	VER/ED	DATE	INITIALS	REASON                                  ; KR001;	------- --------- ---	----------------------------------------        ; KR001;	V1.1A00	08-Mar-79 KMR	SPR 22089 - Single digit responses to TP        ; KR001;				  shutdown questions were causing defaults      ; KR001;				  to be supplied to TPCTRL prompts.             ; KR001;				TT0: - Code was added to check for TT0:.        ; KR001;	V1.1A01	09-Apr-79 KMR	SPR 22245 - Added code       to enable logins         ; KR002;				  before attempting to login the virtual        ; KR002;				  terminal for running TPCTRL.                  ; KR002;	V1.1A02	01-May-79 KMR	Removed version number from the herald.         ; KR003;                                                                               ; KR001;                                                                               ; KR001;-                                                                              ; KR001;                                                                                     ; KR001;                                                                               ; KR001	.NLIST	BEX	.ENABL	LC	.MCALL	SPEAK,DIR$,SPWN$,GTSK$C,GPRT$C,ALTP$,ALUN$,ASTX$S	.MCALL	CRVT$C,ELVT$,QIOW$,QIO$,STOP$C,USTP$C,MRKT$C	.MCALL	EXST$S                                                          ; KR001;; USEFUL SYMBOLS;CR	=	15LF	=	12VTLUN	=	10;; DIRECTIVE DBPS;SPAWN:	SPWN$	MCR...,,,1,1,,VTDONE,STAT,LOGS,LLOGS                            ; KR002ALUN      :	ALUN$	VTLUN,VTALTP:	ALTP$	,80.ELVT:	ELVT$OUTVT:	QIO$	IO.WVB,VTLUN,32.,,STAT,,<0,0,32.>INVT:	QIOW$	IO.RVB,VTLUN,32,,STAT,,<BUFFER,79.,32.>.PAGE; TEXT;HELP1:	.ASCII	/Please  specify the  number of  minutes to  /	.ASCII	/wait  until initiating the  start of/<CR><LF> 	.ASCII	/transaction shutdown./<CR><LF>LHELP1	=	. - HELP1A1:	.ASCII	/Minutes until start of transaction processor /	.ASCII	/shutdown procedure /LA1	=	. - A1DEF1:	.ASCII	/<5>? /LDEF1	=	. - DEF1HELP2:	.ASCII	/When transaction processing has  been        /	.ASCII	/terminated,  active transactions will  be/<CR><LF>	.ASCII	/allowed to complete,  provided they  finish /	.ASCII	/in  less than a  specified number of/<CR><LF>	.ASCII	/minutes. Please specify this time limit./<CR><LF>LHELP2	=	. - HELP2A2:	.ASCII	/Minutes until transaction aborts /LA2	=	. - A2DEF2:	.ASCII	/<10>? /LDEF2	=	. - DEF2HELP3:	.ASCII	/Please specify the time,  in minutes,  to /	.ASCII	/wait after transaction processing has/<CR><LF>	.ASCII	/ceased, untill shutting down the remainder /	.ASCII      	/of  the system./<CR><LF>LHELP3	=	. - HELP3A3:	.ASCII	/Minutes until system shutdown /LA3	=	. - A3DEF3:	.ASCII	/<0>? /LDEF3	=	. - DEF3HERALD:	.ASCII	<LF><LF>/Shutdown/<CR><LF><LF>                                  ; KR003	.ASCII	/System Shutdown Utility/<CR><LF>                               ;**-1LHERLD	=	. - HERALDPOSITV:	.ASCII	<CR><LF>/Positive integer required/<CR><LF>LPOSTV	=	. - POSITVMAX:	.ASCII	<CR><LF>/Maximum value exceeded/<CR><LF>LMAX	=	. - MAX;                                                                                     ; KR002;	Set logons                                                              ; KR002;                                                                               ; KR002LOGS:	.ASCII	@SET /LOGON@                                                    ; KR002LLOGS	= . - LOGS                                                              ; KR002;                                                                               ; KR002;	Logon virtual terminal                                                        ; KR002;                                                                               ; KR002HEL:	.ASCII	@HEL 1/1@LHEL	=	. - HELTPCTRL:	.ASCII	/RUN $TPCTRL/LTPCTR	=	. - TPCTRLSTOP:	.ASCII	/STOP/LSTOP	=	. - STOPALL:	.ASCII	/ALL/LALL	=	. - ALLREMOVE:	.ASCII	/REMOVE/LREMOV	=	. - REMOVEEXT:	.ASCII	/EXIT/LEXT	=	. - EXTAUXSTP:	.ASCII	/RUN $AUXSTP/LAUXST	=	. - AUXSTPBYE:	.ASCII	/BYE/LBYE	=	. - BYEERROR:	.ASCII	/? Shutdown being aborted/LERRO	=	. - ERRORTTEM1:	.BYTE	CR, LF                                                                ; KR001	.ASCII	/? SHUTDOWN must be run from TT0: or batch/                     ; KR001	.BYTE	CR, LF                                                          ; KR001STTEM1	== . - TTEM1                                                            ; KR001                                                                                ; KR001TTEM2:	.BYTE	CR, LF                                                          ; KR001	.ASCII	/? GETLUN directive error -/                                          ; KR001TTDE:	.BLKB	6                                                               ; KR001	.BYTE	CR, LF                                                          ; KR001STTEM2	== . - TTEM2                                                            ; KR001                                                                                ; KR001	.EVEN.PAGE; DATA AREAS;STOPT:	.WORD	0ABORT:	.WORD	0REP:	.WORD	0BUFFER:	.ASCII	<CR>	.BLKB	79.SETUP::	.WORD	0INFLAG:	.WORD	0OUTFLG:	.WORD	0ENDFLG:	.WORD	0      ECHO:	.WORD	0STAT:	.WORD	0,0WARN:	.WORD	0NUM:	.WORD	0.PAGE.SBTTL PRINT HERALD AND DO DIALOGSHUTDO:	CALL	TTCHK				; Make sure we are running      ; KR001						; from TT0: or batch            ; KR001	MOV	#HERALD,HELP+Q.IOPL		;SET UP HERALD TEXT             ; KR001	MOV	#LHERLD,HELP+Q.IOPL+2		;AND ITS LENGTH	DIR$	#HELP				;PRINT ITQ1:	SPEAK	#A1,#LA1,#DEF1,#LDEF1,#0,#HELP1,#LHELP1,REP,,STAT,Q1,CZ,ERR	CALL	TEST15				;MAKE SURE ANSWER IS VALID	BCS	Q1				;IT WASN'T	MOV	R1,STOPT			;SAVE ITQ2:	SPEAK	#A2,#LA2,#DEF2,#L      DEF2,#0,#HELP2,#LHELP2,REP,,STAT,Q1,CZ,ERR	CALL	TEST15				;MAKE SURE ANSWER IS VALID	BCS	Q2				;IT WASN'T	MOV	R1,ABORT			;SAVE ITQ3:	SPEAK	#A3,#LA3,#DEF3,#LDEF3,#0,#HELP3,#LHELP3,REP,,STAT,Q2,CZ,ERR	MOV	#99.,R5				;SET UPPER LIMIT	CALL	TESTR5				;MAKE SURE ANSWER IS VALID	BCS	Q3				;IT WASN'T	MOV	R1,TIMLFT			;SAVE IT	CLR	R0				;MAKE DOUBLE PRECISION	DIV	#5,R0				;DIVIDE BY 5	INC	R0				;BUMP IT	MOV	R0,INTRVL			;SET THE INTERVAL;; FIND OUT WHY WE ARE RUNNING AND ON WHAT KIND OF SYSTEM;	GTSK$C	BUFFER				;GET T      HE TASK PARAMETERS	CMP	BUFFER,#^RSET			;CHECK IF TASK NAME IS SETSHT	BNE	10$				;NO	CMP	BUFFER+2,#^RSHT			;SECOND WORD	BNE	10$				;NOT FROM SETUP	DEC	SETUP				;FLAG FROM SETUP10$:	GPRT$C	TP1PAR,BUFFER			;FIND OUT IF THERE IS A TP1PAR	BCC	20$				;THERE IS	JMP	SHUTUP				;THERE ISN'T.PAGE.SBTTL SHUT DOWN TRANSACTION PROCESSING20$:	DIR$	#ALTP				;RAISE THE PRIORITY                                                                                ; KR002	CALL	SPWNIT			; Spawn the command which will enable   ; KR002      					;   logins.                             ; KR002                                                                                ; KR002	CALL	WAITEX			; Wait for the command to complete.     ; KR002                                                                                ; KR002	CRVT$C	VTIN,VTOUT,,,,ERR		;CREATE A VIRTUAL TERMINAL      ; KR002	MOV	$DSW,ELVT+E.LVNM		;SET THE UNIT NUMBER FOR ELIMINA; KR002	MOV	$DSW,ALUN+A.LUNU		;SET UP FOR ASSIGN LUN          ; KR002;                                                                                     ; KR002;	Set up the spawn directive to spawn hello on the virtual terminal       ; KR002;                                                                               ; KR002	MOV	$DSW,SPAWN+S.PWVT	; Set up for spawning to the            ; KR002					; virtual terminal.                     ; KR002                                                                                ; KR002	MOV	#HEL, SPAWN+S.PWCA	; Set up the address of the HEL command.; KR002                                                                                      ; KR002	MOV	#LHEL, SPAWN+S.PWCL	; Set up the length of the HEL command. ; KR002                                                                                ; KR002	DIR$	#ALUN,ERR			;ASSIGN THE LUN	CALL	SPWNIT				;SPAWN HELLO	CALL	WAITEX				;WAIT TILL DONE	DEC	ECHO				;SET ECHO FLAG	MOV	#TPCTRL,SPAWN+S.PWCA		;SET COMMAND LINE	MOV	#LTPCTR,SPAWN+S.PWCL		;AND LENGTH	CALL	SPWNIT				;SPAWN IT	MOV	#STOP,OUTVT+Q.IOPL		;SET UP STOP COMMAND	MOV	#      LSTOP,OUTVT+Q.IOPL+2		;AND LENGTH	CALL	RESPND				;RESPOND TO PROMPT	MOV	#ALL,OUTVT+Q.IOPL		;SET UP ALL RESPONSE	MOV	#LALL,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPOND	MOV	STOPT,R1			;GET STOP TIME	CALL	NUMRES				;GIVE NUMERICAL RESPONSE	TST	WARN				;WAS THERE A WARNING	BNE	40$				;YES. SKIP NEXT RESPONSE	MOV	ABORT,R1			;GET ABORT TIME	CALL	NUMRES				;GIVE NUMERICAL RESPONSE40$:	MOV	#REMOVE,OUTVT+Q.IOPL		;SET UP FOR REMOVE COMMAND	MOV	#LREMOV,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPOND	MOV	#ALL,OUTVT+      Q.IOPL		;RESPOND WITH ALL	MOV	#LALL,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPONSE	MOV	#EXT,OUTVT+Q.IOPL		;EXIT	MOV	#LEXT,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPONSE	CALL	WAITEX				;WAIT FOR EXIT	MOV	#AUXSTP,SPAWN+S.PWCA		;RUN $AUXSTP	MOV	#LAUXST,SPAWN+S.PWCL		;LENGTH	MOV	#AUXSTP,HELP+Q.IOPL		;PRINT TEXT	MOV	#LAUXST,HELP+Q.IOPL+2		;LENGTH	DIR$	#HELP				;DO IT	CALL	SPWNIT				;SPAWN IT	CALL	WAITEX				;WAIT FOR EXIT	MOV	#BYE,SPAWN+S.PWCA		;LOGOFF	MOV	#LBYE,SPAWN+S.PWCL		;LENGTH	CLR	ECHO				;DON'T ECHO	C      ALL	SPWNIT				;SPAWN IT	CALL	WAITEX				;WAIT FOR EXIT	MOV	#50.,ALTP+A.LTPR		;SET PRIORITY TO 50	DIR$	#ALTP				;DO IT	DIR$	#ELVT				;GET RID OF THE VIRTUAL TERMINAL	JMP	SHUTUP				;GO DO STANDARD PROCESSING.PAGE.SBTTL	CONTROL Z AND ERROR PROCESSING; COME HERE FOR ^Z;CZ:	MOV	#EX$WAR,R0			;SET STATUS	JMP	$EXST				;EXIT;; COME HERE FOR HARD ERROR;ERR:	MOV	#ERROR,HELP+Q.IOPL		;GET MESSAGE	MOV	#LERRO,HELP+Q.IOPL+2		;LENGTH	DIR$	#HELP				;PRINT IT	MOV	#EX$ERR,R0			;SET ERROR STATUS	JMP	$EXST				;EXIT.PAGE.SBTTL	SUB      ROUTINES.SBTTL	NUMRES - NUMERICAL RESPONSE;; NUMRES - GIVE A NUMERICAL RESPONSE;;	INPUT:	R1 = BINARY NUMBER  ( 0 <= R1 <= 99);;	OUTPUT:	R0,R1,R2,R3 = UNDEFINED;NUMRES:	MOV	#1,R2				;INITIALIZE DIGIT COUN	MOV	#NUM,R3				;POINTER FOR RESULTS	CLR	R0				;MAKE DOUBLE PRECISION	DIV	#10.,R0				;GET THE DIGITS	TST	R0				;QUOTIENT	BEQ	10$				;NONE	INC	R2				;TWO DIGITS	ADD	#'0,R0				;MAKE ASCII	MOVB	R0,(R3)+			;SAVE IT                        ; KR00110$:	ADD	#'0,R1				;MAKE SECOND DIGIT ASCII        ; KR001	MOVB	R1,(      R3)				;SAVE IT	MOV	#NUM,OUTVT+Q.IOPL		;SET UP POINTER TO TEXT	MOV	R2,OUTVT+Q.IOPL+2		;AND LENGTH.SBTTL RESPND - RESPOND;; RESPND - RESPOND TO PROMPT;;	INPUT:	OUTVT+Q.IOPL ---> REPONSE;		OUTVT+Q.IOPL+2 = LENGTH OF RESPONSE;RESPND:	CLR	WARN				;INITIALIZE WARNING FLAG20$:	CALL	OUTPUT				;CHECK FOR OUTPUT	CALL	ENDCHK				;ARE WE DONE	BCS	ERR				;YES. BUT WE SHOULDN'T BE	TST	INFLAG				;VT WANT INPUT	BEQ	20$				;NO	TST	WARN				;WAS WARNING RECEIVED	BEQ	30$				;NO	CMP	OUTVT+Q.IOPL,#NUM		;IS THIS A NUMBER	BEQ	40$	      			;YES30$:	DIR$	#OUTVT				;OUTPUT IT	MOV	OUTVT+Q.IOPL,HELP+Q.IOPL	;COPY BUFFER	MOV	OUTVT+Q.IOPL+2,HELP+Q.IOPL+2	;AND COUNT	DIR$	#HELP				;PRINT IT	DEC	INFLAG				;CORRECT COUNT40$:	RETURN					;DONE.PAGE.SBTTL	TEST15 - TEST DIALOG RESPONSE;; TEST15 - TEST THE DIALOG RESPONSE TO MAKE SURE ITS BETWEEN 0 AND 15.;;	INPUT:	REP = RESPONSE;;	OUTPUT:	R1 = RESPONSE;		R5 = UNDEFINED;		C SET IF ERROR;TEST15:	MOV	#15.,R5				;SET UPPER LIMIT TO 15.SBTTL	TESTR5 - TEST DIALOG RESPONSE;; TESTR5 - TEST THE DIALOG RESPONSE TO       MAKE SURE ITS BETWEEN 0 AND R5;;	INPUT:	R5 = MAXIMUM VALUE;		REP = RESPONSE;;	OUTPUT:	R1 = RESPONSE;		R5 = UNDEFINED;		C SET IF ERROR;TESTR5:	MOV	REP,R1				;GET THE REPLY	BPL	10$				;SKIP IF POSITIVE	MOV	#POSITV,HELP+Q.IOPL		;SET TEXT FOR ERROR	MOV	#LPOSTV,HELP+Q.IOPL+2		;SET ITS LENGTH	BR	20$				;GO PRINT IT10$:	CMP	R1,R5				;CHECK MAXIMUM	CLC					;ASSUME GOOD	BLE	30$				;SKIP IF OK	MOV	#MAX,HELP+Q.IOPL		;SET ERROR TEXT	MOV	#LMAX,HELP+Q.IOPL+2		;AND ITS LENGTH20$:	DIR$	#HELP				;PRINT ERROR MESSAGE	SEC			      		;FLAG IT30$:	RETURN					;DONE.SBTTL	SPAWN ROUTINE;; SPWNIT - SPAWN MCR COMMAND LINE;;	INPUT:	SPAWN+S.PWCA ---> COMMAND LINE;		SPAWN+S.PWCL =  LENGTH OF COMMAND LINE;SPWNIT:	DIR$	#SPAWN,ERR			;SPAWN IT	RETURN					;THATS IT.SBTTL	WAIT FOR EXIT;; WAITEX - WAIT FOR SPAWNED TASK TO EXIT;WAITEX:	CALL	OUTPUT				;CHECK FOR OUTPUT FROM VT	CALL	ENDCHK				;CHECK FOR EXIT	BCC	WAITEX				;LOOP IF NOT EXIT	RETURN					;DONE.PAGE.SBTTL	GET VT OUTPUT;; OUTPUT - GET VT OUTPUT AND OPTIONALLY ECHO IT;; 	OUTPUT: WARN <> 0 IF E      RROR MESSAGE RECEIVED;OUTPUT:	MRKT$C	,1,2,TIMAST			;WAIT 1 SECOND	STOP$C					;BY STOPPING10$:	TST	OUTFLG				;IS THERE OUTPUT	BEQ	30$				;NO	DEC	OUTFLG				;CORRECT COUNT	DIR$	#INVT,ERR			;GET THE VT INPUT	TST	ECHO				;ARE WE ECHOING	BEQ	10$				;NO	CMPB	BUFFER,#'%			;IS IT A WARNING	BNE	20$				;NO	DEC	WARN				;YESY SET FLAG20$:	MOV	STAT+2,R0			;GET THE COUNT	MOV	#BUFFER,HELP+Q.IOPL		;POINT TO IT	MOV	R0,HELP+Q.IOPL+2		;SET THE COUNT	DIR$	#HELP				;ECHO	BR	10$				;LOOP30$:	RETURN					;CHECK FOR OTHER CONDITIONS      .SBTTL	CHECK FOR EXIT;; ENDCHK - CHECK FOR EXIT. ABORT IF STATUS IS BAD;;	OUTPUT:	C SET IF EXIT FOUND;ENDCHK:	TST	ENDFLG				;IS THIS AN EXIT	BEQ	20$				;NO	CMP	ENDFLG,#2			;GOOD EXIT	BLE	10$				;YES	JMP	ERR				;ERROR10$:	CLR	ENDFLG				;RESET THE END FLAG	SEC					;SET THE CARRY20$:	RETURN					;DONE	.PAGE                                                                   ; KR001                                                                                ; KR001	.SBTTL	TTCHK - Check for TT0: or batch                                       ; KR001                                                                                ; KR001TTCHK:	CLR	R0		; Set to check lun 13.                          ; KR001                                                                                ; KR001	CALL	CHKTT0		; Call the standard routine for                 ; KR001				;   checking lun 13.                            ; KR001                                                                                ; KR001	BCC	30$		; If carry       is clear, just return.               ; KR001                                                                                ; KR001	MOV	$DSW, R1	; Move the DSW to R1.                           ; KR001                                                                                ; KR001	TST	R1		; Test R1 for error.                            ; KR001                                                                                ; KR001	BLE	10$		; We had a directive error, go handle.          ; KR001                                                                                      ; KR001	MOV	#TTEM1, HELP+Q.IOPL                                             ; KR001	MOV	#STTEM1, HELP+Q.IOPL+2                                          ; KR001				; Move the message information to the           ; KR001				;   QIOW DPB.                                   ; KR001                                                                                ; KR001	BR	20$		; Go print the message.                         ; KR001                                                                                      ; KR00110$:	NEG	R1		; Make the error positive.                      ; KR001                                                                                ; KR001	MOV	#TTDE, R0	; Put the address of where the error            ; KR001				;   goes into R0.                               ; KR001                                                                                ; KR001	CALL	$CBDMG		; Convert the error to decimal and              ; KR0      01				;   place in the message buffer.                ; KR001                                                                                ; KR001	MOV	#TTEM2, HELP+Q.IOPL                                             ; KR001	MOV	#STTEM2, HELP+Q.IOPL+2                                          ; KR001				; Move the buffer parameters into the           ; KR001				;   QIOW DPB.                                   ; KR001                                                                                ; KR00120$:	DI      R$	#HELP		; Write out whichever message we should.        ; KR001                                                                                ; KR001	EXST$S	#EX$SEV		; Exit with severe status.                      ; KR001                                                                                ; KR00130$:	RETURN			; Return to the caller.                         ; KR001                                                                                ; KR001	.PAGE                                                                         ; KR001	.SBTTL	AST PROCESSING                                                  ; KR001	.ENABL	LSB;; VT REQUESTED INPUT;VTIN:	INC	INFLAG				;FLAG INPUT WAITING	BR	10$				;SKIP;; VT REQUESTED OUTPUT;VTOUT:	INC	OUTFLG				;FLAG WAITING FOR OUTPUT10$:	CMP	(SP)+,(SP)+			;POP 2 WORDS OFF STACK	BR	20$				;SKIP;; SPAWN TASK EXIT;VTDONE:	MOV	STAT,ENDFLG			;SAVE THE STATUS	INC	ENDFLG				;MAKE SURE ITS SET;; MARK TIME REQUEST;TIMAST:20$:	USTP$C					;UNSTOP THE PROGRAM	TST	(SP)+				;CLEAN UP    .   STACK	ASTX$S					;EXIT	.DSABL	LSB	.END	SHUTDO .          ïy dkQÁ› 8$        	.TITLE	TPSTOP - STOP TP	.IDENT	/1.1C51/ ;;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	TPSTOP - STOP TRANSACTION PROCESSOR;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;;; EDITS:;;	1. CV  3-NOV-77;	UNCOMMENT CODE TO ACCEPT DCL COMMANDS;;	2. CP16  8-DEC-77;	INSERT CODE       TO UPDATE SYSTEM COMMON;;	3. CP17  9-DEC-77;	INSERT CODE FOR /MINUTES:n AND BROADCAST FUNCTIONALITY.;;	4. CP18  16-DEC-77;	PUT CONTEXT BLOCK IN SEND BUFFER TO MANAGERS.;;	5. CP22  2-JAN-78;	PROVIDE /ALL CAPABILITY.;;	6. CP38  4/19/78;	IF A MANAGER HAS ABORTED CONTINUE STOP PROCESSING THEN PERFORM;	EMERGENCY REMOVAL. IF TP IS NOT CRASH RECOVERABLE, DO NOT ATTEMPT;	TO REMOVE (A NON-EXISTANT) SYSCOM ENTRY. DO NOT PRINT COMPLETION;	MESSAGE.;;	7. CP46 5/3/78;	DISABLE CHECKPOINTING WHILE AT THREAD LEVEL: BEFORE S      WAP, THE EXEC;	WRITES TASK HEADER FROM POOL TO TASK HEADER IN TASK PARTITION. THIS;	CLOBBERS $TTBAD AT 120046.;;	8. C47 7/12/78;	SEND ABORT CODE IF ABO MINUTES = 0.;;	9. C49 9/8/78;	FIX CMDERR AND CMDER2 ERROR PROCESSING. NUMBER OF MINUTES TO WAIT;	AFTER BF.ABO (FOR .NACTT=0) OR AFTER BF.SHT (FOR .SHTCT=0) BEFORE;	EMERGENCY REMOVE IS EMERMN=2. RESET INTERNAL TIME WHEN A TP GOES FROM;	TXNCMP STATE TO MGRDON STATE. BROADCAST EVEN IF INITIATE;	TIME IS ZERO. MAXIMUM APPLICATION COMMON MAPPING IS 8KW.;	PREVIOUS       MAPPING WAS CLOBBERING SYSCOM MAPPING AFTER A BRIEF INSTALL.;	BRIEF WILL CREATE ONE LARGE COMMON PARTITION FOR SEVERAL OF THE;	PARTITIONS CREATED BY INSTALL.;;	10. CP50 1/24/79;	ADD SEND MESSAGE TO JOURNAL DRIVER TO FLUSH LOGGING BUFFERS.;;	CP51 5/8/79: WAIT FOR LA180 PRINTING TO COMPLETE BEFORE SENDING COMPLETE;	CODE (BF.SHT) TO MANAGERS. ALSO EDIT TXNCMP TO HANDLE 2 TPs, AND REMOVE;	'MGR NOT INSTALLED' CODE FROM SEND ROUTINE (MGR NOW INSTALLED AFTER;	ABORT.);+; THIS MODULE CONTAINS CODE TO STOP AN ACTIVE       TRANSACTION ; PROCESSOR. EACH MANAGER IS NOTIFIED TO BEGIN THE STOP; PROCEDURE. SYSTEM COMMON IS UPDATED.;-	.PAGE;; APR USAGE;;	APR0/1:	APPLICATION COMMON;	APR2:	TPMLIB;	APR3:	SYSCOM;	APR4:	TERMINAL SCB (DURING WAIT FOR LA180 PRINTING);	APR5/6:	TASK IMAGE;	APR7:	I/O PAGE;;; MACRO LIBRARY CALLS; 	.MCALL	DIR$,RCVD$,MRKT$,WTSE$,MRKT$C,RSUM$S,SDAT$S		;*****CV	.MCALL	QIOW$C,EXST$S	.MCALL	RDBBK$,WDBBK$,ATRG$C,CRAW$C	.MCALL	FDOFF$,FSRSZ$,FDBDF$,FDRC$A	.MCALL	OPEN$M,GET$,PUT$,CLOSE$	.MCALL	CRAW$,ATRG$,PUSH,POP,STSE      $,INH$S,ENB$S,ASRDF$,DTRG$	;***CP17	.MCALL	SPWN$,SDRC$,FDOP$A,DTRG$S				;***CP22	.MCALL	DSCP$S,ENCP$S						;***CP46	.MCALL	RCVD$,ATRG$,CRAW$,RDBBK$,WDBBK$,GENTTB,GTSK$,SRDA$S,SDAT$,WSIG$S	.MCALL	TTRMN$,SETF$S,CLEF$S,TSTRT$	.MCALL	SRDA$,STLO$,ASTX$S					;***CP50 	.ENABL	LC			; ENABLE LOWER CASE		;***CP17	.NLIST	BEX			; 1 LINE SOURCE / 1 LINE LISTING;***CP22	TPFDEF				; DEFINE TP RECORD OFFSETS	ASRDF$				; DEFINE ASR OFFSETS		;***CP17 	FDOFF$	DEF$L			; DEFINE FDB OFFSETS	FSRSZ$	1,512.			; 1 FILE OPEN FOR RECO      RD I/O .FDB::	FDBDF$				; FDB	FDRC$A	FD.RAN,TPREC,TPRSZ	; RANDOM GET$ AND PUT$	FDOP$A	1,DSD			; LUN = 1, DSD = DSD MARKT:	MRKT$	1,5,1			; MARK TIME FOR 5 TICKS		;***CP22MARKS:	MRKT$	1,1,2			; MARK TIME FOR 1 SECOND	;***CP22STOPMK:	MRKT$	1,1,3			; MARK TIME FOR 1 MINUTE	;***CP17STOP1:	STSE$	1			; STOP FOR EVENT FLAG 1		;***CP17STLO12:	STLO$	0,3			; STOP FOR EF 1 OR 2		;***CP50RCDAT:	RCVD$	,RCVBUF			; RECEIVE DATA			;*****CVJSNDAT:	SDAT$	JNLDRV,SNDBUF		; SEND DATA TO JOURNAL DRIVER	;***CP50SRDAST:	SRDA$	RCVAS      T			; SPECIFY RECEIVE DATA AST FOR	;***CP50					; 	MESSAGE FROM JNLDRV	;***CP50 APR4	=	100000			; OFFSET FOR APR 4		;***CP51SYSAPR	=	3			; MAP SYSCOM AT APR 3		;**CP16+SYSPAR	=	60000			; OFFSET FOR APR 3ATREG:	ATRG$	RDB2			; ATTACH TO SYSCOMCRWIN:	CRAW$	WDB2			; MAP ONTO SYSCOMRDB2:	RDBBK$	,SYSCOM,,<RS.WRT!RS.RED> ; ATTACH WITH R/W ACCESS TO SYSCOMWDB2:	WDBBK$	SYSAPR,,,0,0,<WS.MAP!WS.WRT!WS.64B> ; WINDOW FOR SYSCOM MAP;**CP16-									;**CP22-	.PAGE	.SBTTL	DATA AREA ;; LOCAL DATA;EMERMN	=	2			; NUMBER OF MI      NUTES TO WAIT FOR # ACTIVE					; TXNS TO GO TO ZERO AFTER BF.ABO WAS					; SENT OR # OF ACTIVE MANAGERS TO GO TO					; ZERO AFTER BF.SHT WAS SENT BEFORE					; PERFORMING AN EMERGENCY REMOVE	;***C49NMTRIES	=	10			; # ATTEMPTS TO GET MESSAGE	;***CP22					;  BUFFER BEFORE BRDCST ERRORFINISH	=	-1			; TP STATE = STOPPEDEMERGN	=	-2			; TP STATE = MARKED FOR EMERGENCY REMOVALEXSTAT:	.WORD	EX$SUC			; TPSTOP TASK EXIT STATUS. DEFAULT SUCCESSDONE:	.BLKW	1			; # TPs REMAINING TO BE STOPPED									;***C47									;-1*      CP51FNBBFR:	.BLKW	1			; STORAGE FOR 1ST WORD OF TPDEF FILE IDSTPALL:	.WORD	0			; =0 IF STOP/TP ALL, =-1 OTHERWISEPRTMSG:	.BYTE	0			; =0 IFF 'WAITING FOR OUTPUT ONLY					;  STATION PRINTING' MESSAGE NOT					;  YET PRINTED			;***CP51	.EVEN;*******************************************************************************;; INFOMATION VECTORS FOR TP(S) TO BE STOPPED;TPMAX	=	8.			; MAX # ACTIVE/INSTALLED TPs IN SYSTEMTPRECN:	.BLKW	TPMAX			; VECTOR OF TPDEF FILE RECORD #STPNAME:	.BLKW	<3*TPMAX>		; VECTOR OF TP NAME      STPUQID:	.BLKW	TPMAX			; TABLE OF UNIQUE TP IDs FOR ALL TP TO					; BE STOPPEDSTATE:	.BLKW	<TPMAX+1>		; STATE TABLE: JUMP PTR OR STATE VALUE					; FOR THE STATE OF EACH TP BEING STOPPED									;**CP38+					; EMERGENCY REMOVE VECTOR: FOR EACH TP,EREMV:	.REPT	TPMAX			; =EMERGN IF SHOULD REMOVE ELSE =0	.BLKW	0	.ENDR									;**CP38-;*******************************************************************************FAKECB:	.REPT	32.			; SPACE FOR FAKE SCB, FAKE CCB AND					;  SEND BUFFER AND ESB FOR KILL ROUTINE	.      WORD	0	.ENDRDSD:	.WORD	0,0			; DSD FOR TP FILE	.WORD	UICLEN	.WORD	UIC	.WORD	TPFLEN	.WORD	TPFIL COMREG:	.RAD50	/COM/			; COMMON AREA REGION NAME 									;CV*-6RCVBUF:	.BLKW	2			; 15. WORD RECEIVE BUFFER;***CVSNDBUF:	.BLKW	13.			; 13. WORD SEND BUFFER					; SNDBUF + 12:14 USED FOR BRDCAST ERRORS TPREC:	.BLKB	TPRSZ			; TP RECORD BUFFER BUFDIF	=	<ALLNAM-SNDBUF>		; DISTANCE BETWEEN TP NAME BUFFERSALLNAM:	.ASCII	/ALL   /		; TP 'NAME' FOR STOP ALL TPs IN SYSTEMTIMSTA:	.ASCII	/[[[[[[/		; NAME OF TIM STATION FOR BR      OADCASTMSGHDR:	.ASCII	/C/			; MESSAGE HEADER FOR PSEUDE-EXCHANGE MSG	.BYTE	1			; INDICATE STOP MESSAGE	.BYTE	0,0,0,0	.WORD	3			; ABOVE 3 LINES MUST BE CONTIGUOUS *****HDRSZ	=	.-MSGHDR		; HEADER SIZE	.BLKB	3			; BFR FOR BRDCST: ASCII # MIN TILL STOP					; ABOVE 5 LINES MUST BE CONTIGUOUS *****									;***CP51UIC:	.ASCII	/[1,1]/			; UIC FOR TP FILEUICLEN = .-UIC TPFIL:	.ASCII	/TPDEF.TPF/		; FILE NAME STRINGTPFLEN = .-TPFIL	.PAGE 	.SBTTL	EMERGENCY TP REMOVAL DATA STRUCTURES									;*CP38-4;; SPAWN COMMAND LI      NES TO INSTALL AND REMOVE TPREMOVE TASK;REMCMD:	.ASCII	\INS [1,54]TPREMV.TSK/EST=NO/TASK=REM\			;***CP12REMTSK:	.BLKB	3REMCLN = .-REMCMDREMC2:	.ASCII	\REM REM\REMT2:	.BLKB	3			; BUFFER FOR TP'S UNIQUE IDREM2LN	=	.-REMC2	.EVEN;; SPAWN AND SEND DPBs;SENDCT:	SDRC$	REMXXX,FAKECB,1,,<FAKECB+26.>	; SEND DATA, REQUEST AND;**CP22+						; CONNECT  FOR KILL ROUTINESPAWN:	SPWN$	MCR...,,,,,1,,<FAKECB+26.>				; SPAWN FOR INSTALL AND REMOVE OF TPREMOVE TASK	.PAGE	.SBTTL REQUIRED DATA STRUCTURES FOR TPMLIB ATTACHSNDDAT:	S      DAT$	,THREAD+T.RB+4		; SEND AND RECEIVE DPBS FOR	;**CP17+RECDAT:	RCVD$	,THREAD+T.RB		;   INSTALLING STOP AS A MANAGERATTACH:	ATRG$	RDB			; ATTACH TO COMMONCREATE:	CRAW$	WDB			; MAP APR0 (+APR1) ONTO COMMONDETACH:	DTRG$	RDB			; DETACH FROM APPLICATION COMMON	;**CP22RDB:	RDBBK$	,,,<RS.WRT!RS.RED>	; REGION DESCRIPTOR BLOCK WDB:	WDBBK$	0,,,0,,<WS.64B!WS.WRT!WS.MAP>	; WINDOW DESCRIPTOR BLOCKTHREAD:	GENTTB				; GENERATE THREAD TABLECNTXLN	=	64.			; # WORDS IN CONTEXT BLOCKCONTEX:	.BLKW	CNTXLN			; THREAD PROCESSIN      G CONTEXT BLOCKGETASK:	GTSK$	THREAD+T.RB		; PUT TASK NAME ETC. IN THREAD TABLEINPARM:					; ..INSM PARAMETER TABLE	.WORD	RECDAT			; -> RECEIVE DATA DPB	.WORD	ATTACH			; -> ATTACH TO COMMON DPB	.WORD	CREATE			; -> MAP TO COMMON DPB	.WORD	SNDDAT			; -> SEND DATA DPB	.WORD	THREAD+T.RB		; -> START OF THREAD TABLE'S RECEIVE BFRLIBATT:	ATRG$	LIBREG			; ATTACH TO TPMLIBLIBMAP:	CRAW$	LIBWND			; MAP ONTO TPMLIBLBDTRG:	DTRG$	LIBREG			; DETACH FROM TPMLIBLIBREG:	RDBBK$	,TPMLIB,,<RS.RED!RS.WRT> ; TPMLIB RDBLIBWND:	WDBB      K$	2,,,0,,<WS.MAP!WS.RED!WS.WRT> ; TPMLIB WDB	.PAGE	.SBTTL	STOP TRANSACTION PROCESSOR	.ENABL	LSB STOP: ;; RECEIVE DATA;;	THE DATA RECEIVED HAS THE FOLLOWING FORMAT:;;	+-----------------------------------------------+ 0;	!	 NAME OF SENDING TASK IN RAD50		!;	!-----------------------------------------------! 4;	!		TP NAME IN ASCII		!;	!-----------------------------------------------! 12;	!	  MINUTES TILL STOP INITIATED		!;	!-----------------------------------------------! 14;	!	MINUTES TILL TRANSACTION ABORTS	      	!;	+-----------------------------------------------+; 	DIR$	#RCDAT			; RECEIVE DATA			;*****CV	BCC	20$			; IF C-CLR RECEIVE DONE		;*****CV	CMP	#IE.ITS,$DSW		; IF ERROR, WAS BUFFER QUEUED?	;*****CV	BEQ	10$			; IF EQ NO - TRY AGAIN		;*****CV	CALL	DIRERR			; ELSE ERROR			;*****CV10$:	DIR$	#MARKT,DIRERR		; STOP A BIT			;*****CV	CALL	STP1			;				;***CP17	BR	STOP			; TRY RECEIVE AGAIN		;*****CV ;; VERIFY TP EXISTS; 20$:	MOV	#RCVBUF+4,R0		; POINTER TO COMMAND DATA RECEIVED	MOV	#6,R1			; R1 = MAX LENGTH OF TP NAME      30$:	TSTB	(R0)			; BLANK FILL TP NAME IF NOT 6 BYTES	BNE	40$			;	MOVB	#40,(R0)		;40$:	CMPB	(R0),BUFDIF(R0)		; if TP NAME <> "ALL   "	;**CP22+	BEQ	41$			; then INDICATE 'DO NOT STOP ALL TPs'	MOV	#-1,STPALL		;				;**CP22-41$:	INC	R0			;	SOB	R1,30$			; 	CLR	R5			; R5 IS BASE INDEX FOR TP INFO VECTORS	CALL	OPTPDF			; OPEN [1,1]TPDEF.TPF50$:	CALL	GETREC			; GET NEXT RECORD	BCC	60$			; if NOT EOF then CONTINUE	TST	STPALL			; if STOP ALL TPs	BEQ	87$			; then GOTO ANY ACTIVE TPs FOUND ?	MOV	#<S.V1*400!E.R3>,R1	; EL      SE SET SEVERITY/ERROR CODE	CALL	CMDERR			; CALL ERROR ROUTINE AND EXIT60$:	TST	STPALL			; if STOP ALL TPs	BEQ	85$			; then GOTO GET ALL ACTIVE TPs	MOV	#RCVBUF+4,R2		; POINTER TO NAME OF TP TO INSTALL	MOV	#6,R3			; LENGTH70$:	CMPB	(R1)+,(R2)+		; IS THIS THE RIGHT TP RECORD?	BNE	50$			; IF NE NO - TRY NEXT RECORD	SOB	R3,70$			; ;; VERIFY TP IS ACTIVE; 	BIT	#TPIN,TPREC+TPSTAT	; TP INSTALLED?	BNE	80$			; IF NE YES, CONTINUE	MOV	#<S.V1*400!E.R4>,R1	; ELSE SET SEVERITY/ERROR CODE	CALL	CMDERR			; GOTO ERROR ROUTIN      E AND EXIT80$:	BIT	#TPST,TPREC+TPSTAT	; if TP IS STARTed		;**CP22+	BNE	81$			; then GOTO CONTINUE					; else FATAL ERROR: TP NOT STARTed	MOV	#<S.V1*400!E.R5>,R1	; SET SEVERITY/ERROR CODE	CALL	CMDERR			; GOTO COMMAND ERROR AND EXIT 81$:	BIT	#TPSIP,<TPREC+TPSTAT>	; if STOP NOT ALREADY IN PROGRESS	BEQ	82$			; then CONTINUE	MOV	#<S.V1*400!E.R21>,R1	; R1 := ERROR CODE	CALL	CMDERR			; else FATAL ERROR: STOP IN PROGRESS82$:	CALL	TBLINS			; INSERT TP INFO INTO STOP TABLES					; AND UPDATE TPDEF RECORD	;**CP22-	BR	9      0$			; GOTO BROADCAST		;***CP22;; FIND ALL TPS THAT ARE ACTIVE;85$:					; GET ALL ACTIVE TPs		;**CP22+	BIT	#TPST,<TPREC+TPSTAT>	; if NOT STARTED	BEQ	50$			; then GOTO TRY NEXT TP	BIT	#TPSIP,<TPREC+TPSTAT>	; if STOP IN PROGRESS ALREADY	BNE	50$			; then GOTO TRY NEXT TP	CALL	TBLINS			; else INSERT TP INFO INTO STOP TABLES					;	AND UPDATE TPDEF RECORD	BR	50$			; GOTO TRY NEXT TP;; IF STOPPING ALL TPs AND NO TPs WERE ACTIVE; THEN PRINT DIAGNOSTIC ERROR MESSAGE AND EXIT;87$:	TST	R5			; if AT LEAST 1 ACTIVE TP F      OUND	BNE	90$			; then CONTINUE	MOV	#<S.V0*400!E.R25>,R1	; R1 := ERROR CODE	CALL	.ERMSG			; PRINT 'NO TP WAS STARTED'	JMP	250$			; GOTO EXIT									;**CP22-90$:	CALL	CLOSE			; CLOSE [1,1]TPDEF.TPF FILE	ASR	R5			; R5 := # TPs TO BE STOPPED	MOV	R5,DONE			; DONE := # TPs TO BE STOPPED;*******************************************************************************;									;**CP17+; FOR EACH TRANSACTION PROCESSOR TO BE STOPPED:; BROADCAST TO ALL TP ENVIRONMENT TERMINALS A STOP MESSAGE THEN; WAIT FOR 'STOP TIME'       MINUTES BEFORE INITIATING STOP. NOTE:;	MOV	<RCVBUF+12>,R1		; R1 = TIME TILL STOP INITIATED;;;;;;;	BEQ	96$			; then DO NOT BROADCAST STOP MESSAGE;C49;; MAP APR2 ONTO TPMLIB;	DIR$	#LIBATT			; ATTACH TO TPMLIB	BCC	92$			; if SUCCESSFULL then CONTINUE	MOV	#<S.V0*400!E.R17>,R1	; R1 := ERROR CODE	BR	93$			; GOTO PRINT ERROR MESSAGE92$:	MOV	<LIBREG+R.GID>,<LIBWND+W.NRID> ; WDB := REGION ID	MOV	<LIBREG+R.GSIZ>,<LIBWND+W.NSIZ>; WDB := REGION SIZE	DIR$	#LIBMAP			; MAP ONTO TPMLIB	BCC	LABEL			; if SUCCESSFULL then CO      NTINUE;; ERROR: FAILED TO ATTACH OR MAP ONTO TPMLIB;	MOV	#<S.V0*400!E.R18>,R1	; R1 := ERROR CODE93$:	PUSH	$DSW			; (SP) := DSW ERROR CODE	MOV	SP,R2			; R2 -> ARGUMENT LIST	CALL	.ERMSG			; PRINT DIAGNOSTIC ERROR MESSAGE	MOV	<RCVBUF+12>,R1		; RESTORE # MINUTES TILL STOP	;****C49	BR	95$			;	AND BRANCH AROUND BROADCASTLABEL:	CLR	R5			; R5 := BASE INDEX OF STOP TABLES94$:	CALL	BRDCST			; BROADCAST STOP MESSAGE	TST	(R5)+			; R5 -> ENTRIES FOR NEXT TP IN STOP TBLS	TST	STATE(R5)		; if NEXT ENTRY IS NOT NULL	BNE	94$      			; then BROADCAST TO NEXT TP ENVIRONMENT									;**CP22-95$:	MOV	R1,<STOPMK+M.KTMG>	; DPB := # MIN TO STOP BEFORE CONTINUING	DIR$	#STOPMK,DIRERR		; STOP FOR STOP TIME MINUTES	CALL	STP1			;				;**CP17-;*******************************************************************************;; TPSTOP PERFORMS THE FOLLOWING LOOP EVERY SECOND UNTIL THE STOP; PROCESS IS COMPLETE. THE OPERATIONS PERFORMED ON EACH TP; DEPEND ON THE STATE OF THAT TP IN THE STOP PROCESS. THE STATES ARE:;;	INITIT (STATE = 0): INITIATE THE S      TOP PROCESS;		- REMOVE TP'S SYSTEM COMMON ENTRY;		- INITIALIZE SHUTDOWN COUNT IN TP'S APPLICATION COMMON;		- SEND 'INITIATE STOP' CODE TO EACH LOADED MANAGER IN TP;;	TXNCMP (STATE = 2): WAIT TILL ALL TRANSACTIONS ARE COMPLETE;		- IF THE SPECIFIED ABORT TIME EXPIRES + TRANSACTIONS ARE;			STILL ACTIVE, THE 'ABORT TRANSACTIONS' CODE IS;			SENT TO EACH LOADED MANAGER IN THE TP;		- IF 5 MINUTES EXPIRE AFTER THE 'ABORT' CODE IS SENT AND;			TRANSACTIONS ARE STILL ACTIVE, PREFORM EMERGENCY;			REMOVAL OF TP.;;	MGRDO      N (STATE = 4): WAIT TILL MANAGERS ARE DONE;		- IF MANAGERS NOT DONE WITHIN 5 MINUTES OF THE TIME;			THE ABORT CODE IS SENT, PERFORM EMERGENCY;			REMOVAL OF TP.;		- IF ALL OK, SEND DATA TO JOURNAL DRIVER TO FLUSH THE	;***CP50;			LOGGING BUFFER.					;***CP50;96$:					; INITIALIZATION FOR LOOP	CLR	R5			; R5 -> BASE OF STOP TABLES	MOV	<RCVBUF+14>,R0		; R0 = # MINUTES TILL ABORT ACTIVE TXNS	CLR	R1			; CLEAR SECONDS COUNT					; ATTACH AND MAP APR3 TO SYSCOM	DIR$	#ATREG,DIRERR		; ATTACH TO SYSCOM	MOV	<RDB2+R.GID>,      <WDB2+W.NRID> ; WDB <- REG ID	MOV	<RDB2+R.GSIZ>,<WDB2+W.NSIZ> ; WDB <- WINDOW SIZE IN 32 WD BLKS	DIR$	#CRWIN,DIRERR		; CREATE AND MAP WINDOW TO SYS COMMONLOOP:	CALL	COMATT			; ATTACH TO CURRENT TP'S APPLIC. COMMON	JMP	@STATE(R5)		; GOTO PROPER STATE FOR CURRENT TP;; INITIATE STOP; INITIT:	CALL	UPDSYS			; UPDATE SYSTEM COMMON		;***CP16	BIS	#SY.SHT,.SYFLG		; SET STOP BIT IN COMMON	MOV	.NMGRS,R3		; NUMBER OF MANAGERS	MOV	#1,R2			; INITIALIZE FOR LOAD MASK	CLRB	.SHTCT			; INITIALIZE # LOADED MGR COUNT100$:	BIT	      R2,.LOADM		; MANAGER INSTALLED?	BEQ	110$			; IF EQ NO	INCB	.SHTCT			; ELSE INCREMENT MANAGER COUNT110$:	ASL	R2			; GET MASK FOR NEXT MANAGER	SOB	R3,100$			;	MOV	#BF.IST,SNDBUF+B.FUN	; SEND CODE TO INITIATE STOP	CALL	SEND			; TO EACH MANAGER									;-2*CP51	MOV	#TXNCMP,STATE(R5)	; NEXT STATE FOR THIS TP IS TXNCMP;CP39-	BR	NEXT			; GOTO PROCESS NEXT TP ;; TRANSACTION COMPLETE STATE:;; if THERE ARE NO ACTIVE TXNs;  then WAIT FOR LA180 PRINTING TO FINISH;	SEND BF.SHT CODE TO MANAGERS: TELL MGRS TO SPND$;	TP'S       STATE := 'MGRDON';  else if 'ABORT TIME' + 'EMERGENCY REMOVE TIME' HAS EXPIRED;	 then TP'S STATE := 'MGRDON';		MARK THIS TP FOR EVENTUAL EMERGENCY REMOVAL;	 else if 'ABORT TIME' HAS EXPIRED EXACTLY (DO THIS ONLY ONCE);		then SEND BF.SAB CODE TO MGRS: TELL MGRS TO ABORT ACTIVE TXNS; TXNCMP:					; **** TEMP: CHECK TASK LIST ***????????	TST	.NACTT			; ALL TRANSACTIONS COMPLETED?	BEQ	120$			; IF EQ YES;									;**CP51+; if EXACTLY 'ABORT' MINUTES HAS EXPIRED (AND THERE ARE STILL ACTIVE TXNs); then SEND BF.SAB       CODE TO MANAGERS; else if INTERNAL TIME HAS JUST CROSSED A NEW MINUTE (R1=0) AND HENCE MAYBE;			THE ABORT CODE WAS SENT TOO LONG AGO;	then GOTO CHECK IF ABORT CODE WAS SENT TOO LONG AGO;	TST	R1			; if INTERNAL TIME AT NEW MINUTE 					;		(# SECONDS = 0)	BGT	NEXT			; then NO 'TIME OUT' HAS OCCURRED:					;	GOTO PROCESS NEXT TP	TST	R0			; if STILL TIME BEFORE BF.SAB CODE SENT	BGT	NEXT			; then GOTO PROCESS NEXT TP	BLT	115$			; if ABORT CODE ALREADY SENT					; then GOTO CHECK IF IT WAS SENT TOO					;	LONG AGO: T      IME TO EMER. REMOVE	MOV	#BF.SAB,SNDBUF+B.FUN	; else SEND ABORT CODE	CALL	SEND			; SEND CODE TO EACH LOADED MANAGER	BR	NEXT			; if SEND OK then PROCESS NEXT TP;*CP38+ 115$:					; CHECK IF ABORT MSG SENT TOO LONG AGO	CMP	R0,#-EMERMN		; if ABORT MESSAGE SENT X MINUTES AGO;C49	BGT	NEXT			; then GOTO PROCESS NEXT TP	MOV	#EMERGN,EREMV(R5)	; else STATE := PERFORM ERMERGENCY REMOVAL OF TP120$:	MOV	#BF.SHT,SNDBUF+B.FUN	; ELSE SEND 'STOP COMPLETE' CODE125$:	CALL	LA180			; WAIT FOR LA180 PRINTING TO FINISH	CALL	SEND		      	; TO EACH MANAGER127$:	MOV	#MGRDON,STATE(R5)	; TP'S NEXT STATE := WAIT TILL MGRS DONE;*CP38-	BR	NEXT			; GOTO PROCESS NEXT TP		;**CP51- ;; MANAGER DONE STATE:; WAIT FOR ALL OF TP'S MANAGERS TO STOP THEMSELVES; IF A MANAGER HAS NOT STOPPED ITSELF WITHIN 5 MINUTES OF TIME; 'STOP COMPLETE' CODE SENT, PERFORM EMERGENCY REMOVAL OF TP.; NOTE THAT EACH TIME A TP GOES FROM TXNCMP TO MGRDON STATE, STOP'S; INTERNAL TIME IS RESET. THE EFFECT IS THAT A TP THAT COMES TO MGRDON STATE; WILL GET AN ANOTHER 'EMERMN' MINUTE      S TO GO TO THE DONE STATE BEFORE AN; EMERGENCY REMOVE IS SPECIFIED IF A SECOND TP GOES TO MGRDON STATE.;MGRDON:	TSTB	.SHTCT			; ALL MANAGERS DONE?	BNE	130$			; then GOTO CHECK IF WAIT TOO LONG	DEC	DONE			; INDICATE ONE MORE MANAGER DONE	MOV	#FINISH,STATE(R5)	; else TP'S STATE := TP IS STOPPED	CALL	FLUSH			; FLUSH LOGGING  BUFFERS	;***CP50	BR	NEXT			;	GOTO PROCESS NEXT TP 130$:	CMP	R0,#-EMERMN		; if NOT X MIN AFTER STOP CPL CODE SENT									;****C49	BGT	NEXT			; then GOTO PROCESS NEXT TP	MOV	#EMERGN,EREMV(R      5)	; else STATE := PERFORM EMERGENCY REMOVAL OF TP	DEC	DONE			; INDICATE 1 FEWER TP TO DO;; PROCESS NEXT TP; IF LAST TP PROCESSED THEN WAIT A SECOND THEN START AT TOP OF TP LIST;NEXT:	TST	DONE			; if ALL TPs STOPPED	BEQ	200$			; then GOTO DONE150$:	TST	(R5)+			; R5 -> NEXT TP'S ENTRIES IN STOP TABLES	MOV	STATE(R5),R3		; R3 := STATE OF NEXT TP	TST	R3			; if NEXT TP IS NULL	BEQ	170$			; then BEGIN PROCESSING AT BEGINNING OF LIST	CMP	R3,#FINISH	; if TP HAS BEEN STOPPED	BEQ	150$			; then TRY NEXT TP									;*C      P38-2	JMP	LOOP			; else GOTO PROCESS NEXT TP170$:					; WAIT A SECOND THEN LOOP THROUGH					; TP LIST AGAIN	CLR	R5			; START AT TOP OF TP LIST	DIR$	#MARKS,DIRERR		; WAIT A SECOND	CALL	STP1			;	INC	R1			; ADD TO SECOND COUNT	CMP	#60.,R1			; MINUTE UP?	BGT	180$			; IF NE NO	CLR	R1			; CLEAR COUNT	DEC	R0			; TIME UP?180$:	JMP	LOOP			; LOOP ;; UPDATE TP FILE RECORD(S); 200$:	DIR$	#DETACH			; DETACH FORM COMMON REGION	CALL	OPTPDF			; OPEN [1,1]TPDEF.TPF FILE	CLR	R5			; R5 IS INDEX FOR TP VECTORS210$:	MOV	TPRECN(      R5),<.FDB+F.RCNM+2>	; GET NEXT TP DEF RECORD	CALL	GETREC			; GET NEXT RECORD	BIC	#<TPSIP!TPST>,<TPREC+TPSTAT> ; INDICATE TP'S STATE IS NOT					     ; 'CHANGING' AND NOT 'STARTED'	DEC	<.FDB+F.RCNM+2>		; GET RECORD NUMBER 	PUT$	#.FDB,,,IOERR		; WRITE UPDATED TP RECORD	CMP	EREMV(R5),#EMERGN	; if TP NOT MARKED FOR EMERGENCY REMOVAL	BNE	230$			; then CONTINUE	CALL	KILL			; else PERFORM EMERGENCY REMOVAL230$:	TST	(R5)+			; R5 IS INDEX FOR NEXT TP'S DATA VECTORS	TST	TPUQID(R5)		; if NEXT TP IS NOT NULL	BNE	210$			      ; then CONTINUE TO LOOP;; CLOSE TPDEF AND EXIT STOP WITH STATUS;250$:	CALL	CLOSE			; ELSE CLOSE [1,1]TPDEF.TPF FILE	EXST$S	EXSTAT			; EXIT WITH STATUS	.DSABL	LSB	.PAGE	.SBTTL I/O ROUTINES;+;;  I / O   R O U T I N E S;;	ROUTINES FOR [1,1]TPDEF.TPF I/O: OPEN AND GET NEXT RECORD.;;-;; OPEN [1,1]TPDEF.TPF WITH MODIFY ACCESS;; R0 IS DESTROYED;OPTPDF:	MOV	#20.,R1			; R1 := # TRIES TO OPEN FILE AFTER 					; FILE ACCESSED FOR WRITE ERROR42$:	OPEN$M	#.FDB			; OPEN TP FILE WITH WRITE ACCESS	BCC	45$			; if NO ERROR th      en GOTO CONTINUE	CMP	#IE.WAC,$DSW		; if NOT FILE ACCESSED FOR WRITE ERROR	BNE	44$			; then GOTO GOTO IO ERROR ROUTINE					; FILE ACCESSED FOR WRITE ERROR:	DEC	R1			; DEC # TRIES LEFT	BEQ	44$			; if TOO MANY TRIES then GOTO ERROR	DIR$	#MARKS,DIRERR		; WAIT FOR A SECOND	CALL	STP1			;	BR	42$			; GOTO TRY TOO OPEN [1,1]TPDEF.TPF AGAIN44$:	JMP	IOERR			; GOTO I/O ERROR ROUTINE45$:	MOV	#TPRSZ,.FDB+F.RSIZ	; SET CORRECT RECORD SIZE IN FDB	MOV	<.FDB+F.FID>,FNBBFR	; SAVE 1ST WORD OF FILE ID FOR REOPEN OF					; FILE BY       FILE ID (CLOSE$ CLRs THIS WD) 	RETURN				; RETURN TO CALLING PROGRAM;*******************************************************************************;; C L O S E;; CLOSE [1,1]TPDEF.TPF;CLOSE:	CLOSE$	#.FDB,IOERR	RETURN;*******************************************************************************;; G E T R E C;; GET NEXT RECORD - CARRY CLEAR IF NOT EOF, SET OTHERWISE;GETREC:	GET$	#.FDB,,,IOERR		; GET TP RECORD	MOV	#TPREC,R1		; POINTER TO RECORD	CMPB	#'#,(R1)		; LAST RECORD?	BNE	10$			; then GOTO INDICATE SU      CCESS	SEC				; else INDICATE EOF	BR	63$			;      GOTO RETURN10$:	CLC				; INDICATE SUCCESS63$:	RETURN				; RETURN TO CALLING PROGRAM	.PAGE	.SBTTL SEND DATA TO EACH LOADED MANAGER;+;;  S E N D;;	SEND SPECIFIED STOP CODE TO EACH LOADED MANAGER IN A TP.;;;  ENTRY CONDITIONS:;;	TP'S APPLICATION COMMON IS MAPPED AT APR0;	SNDBUF+B.FUN = STOP CODE;;;  EXIT CONDITIONS:;;	STOP CODE IS SENT TO EACH LOADED MANAGER IN TP;	R3 := NUMBER OF 'LOADED' MANAGERS NOT INSTALLED (ABORTED);;;  REGISTERS ALTERED:;;	R4,R5;;;  CALLI      NG SEQUENCE:;;	SNDBUF+B.FUN := STOP CODE;	CALL SEND;-SEND:									;-1*CP51	PUSH	R5			; SAVE R5	MOVB	.NMGRS,R3		; R3 = NUMBER OF MANAGERS	MOV	#.MGRLT,R4		; R4 POINTS TO MANAGER LIST	MOV	#1,R5			; INITIALIZE R5 FOR LOAD MASK 10$:	BIT	R5,.LOADM		; IS THIS MANAGER INSTALLED?	BEQ	20$			; IF EQ NO, SKIP MANAGER	MOV	4(R4),<SNDBUF+B.CXT>	; BFR := SYSTEM CONTEXT BLK OF MGR	SDAT$S	R4,#SNDBUF		; SEND DATA TO MANAGER	BCC	20$			; if SEND SUCCESSFUL then CONTINUE*CP38+									;-2*CP51	CALL	DIRERR			; else GOTO FATAL ER      ROR									;-1*CP5120$:	ADD	#6,R4			; POINT TO NEXT MANAGER TASK NAME	ASL	R5			; BIT MASK FOR NEXT MANAGER	SOB	R3,10$			; 	POP	R5			; UNSAVE R5									;-1*CP51	RETURN	.PAGE	.SBTTL BRDCST  -- BROADCAST MESSAGE TO TP ENVIRONMENT TERMINALS;+									;**CP17+;;  B R D C A S T;;	BROADCAST A STOP MESSAGE TO ALL TP ENVIRONMENT TERMINALS:;	CALL ROUTINE TO INSTALL STOP LIKE A MANAGER.;	OBTAIN A MESSAGE BUFFER THEN SEND A PSEUDO-EXCHANGE MESSAGE;	TO TIM'S [[[[[[ STATION INDICATING TO BROADCAST STOP MESSAGE.;;;  ENT      RY CONDITIONS:;;	R1 (>0) = # MINUTES TILL STOP;	R5 IS INDEX INTO TP INFO VECTORS;;;  EXIT CONDITIONS:;;	R1 = # MINUTES TILL STOP;	if SUCCESSFUL;	then A STOP MESSAGE IS BROADCAST TO TP TERMINALS;	else AN ERROR MESSAGE IS PRINTED ON THE INITIATING TERMINAL;;;  REGISTERS ALTERED:;;	R0,R2,R3,R4;;;  CALLING SEQUENCE:;;	R1 := # MINUTES TILL STOP TIME;	CALL BRDCST;-BRDCST:	PUSH	R1			; SAVE REGISTERS	PUSH	R5;; INSTALL STOP AS A MANAGER - SET UP FOR USE OF TPMLIB ROUTINES.;	CALL	MGRINS			; INSTALL AS MGR;; CONVERT #       MINUTES TILL STOP IS INITIATED TO ASCII, AND PUT IN MESSAGE BUFFER;	MOV	#<MSGHDR+HDRSZ>,R0	; R0 -> BEGINNING OF MESSAGE BFR (PAST HEADER)	MOV	#<<3*4000>!<1*2000>!<1*1000>!10.>,R2 ;R2=CONVERSION CONTROL WORD	CALL	$CBTA			; PUT ASCII REPRESENTATION OF # MINUTES	CLEF$S	#1			; CLEAR EVENT FLAG #1	CLR	<SNDBUF+12>		; INDICATE NO ERROR YET	DSCP$S	DIRERR			; DISABLE CHECKPOINTING: IF TASK IS					; CHECKPOINTED, THE TASK HDR FROM POOL					; OVER-WRITES THE TASK HDR IN THE TASK'S					; PARTITION WHICH CLOBBERS $TTBA      D.	MOV	#THREAD,$TTBAD		; SET UP THREAD TABLE ADDRESS	TSTRT$	#CONTEX,#BDCST1,#CNTXLN	; SET UP THREAD TABLE AND CONTEXT AREA	CALL	..MSUP			; START THREAD AND WAIT TILL IT COMPLETES	ENCP$S	DIRERR			; ENABLE CHECKPOINTING	MOV	<SNDBUF+12>,R1		; if NO BRDCST ERROR	BEQ	63$			; then GOTO DONE					; else PRINT ERROR MESSAGE (R1 = ERROR CODE)	PUSH	<SNDBUF+14>		; (SP) -> OPTIONAL TPMLIB ERROR CODE	CALL	CMDER2			; PRINT ERROR MESSAGE	TST	(SP)+			; CLEAN STACK			;****C4863$:	POP	R5			; UNSAVE REGISTERS	POP	R1	RETURN				      ; RETURN TO MAIN PROGRAM	.PAGE	.SBTTL BDCST1 - THREAD TO SEND BROADCAST MESSAGE TO TIM;+;;  B D C S T 1;;	GET MESSAGE BUFFER. SEND MESSAGE TO TIM.;;;  ENTRY CONDITIONS:;;	?;;;  EXIT CONDITIONS:;;	IF SUCCESSFUL THEN <SNDBUF+12> = 0;		      ELSE <SNDBUF+12> = STOP ERROR CODE;			   <SNDBUF+14> = TPMLIB ERROR CODE;;;  REGISTERS ALTERED:;;	R0,R1,R2,R3,R4,R5;;;  CALLING SEQUENCE:;;	SET UP MESSAGE BUFFER;	CALL BDCST1;-BDCST1:	MOV	#<HDRSZ+3>,R5		; R5 = EXCHANGE MSG SIZE (HDR + MSG)	MOV	#FAKECB,R3		; R3 -> FAKE CONT      ROL BLOCK USED BY					;	..GMBF TO CHECK IF SLOT NEEDED	CLR	S.CCB(R3)		; INDICATE IN FAKE SCB NO SLOT NEEDED	CLR	R4			; INDICATE NO CCB	CALL	..GMBF			; GET MESSAGE BUFFER	BCC	30$			; if SUCCESSFUL then GOTO CONTINUE					; ERROR IN GET MESSAGE BUFFER	MOV	#<SNDBUF+12>,R5		; R5 -> ERROR CODE BUFFER	MOV	#<S.V0*400!E.R15>,(R5)	; ERROR CODE BUFFER := STOP ERROR CODE	CMP	R1,#ER.NSP		; if NO SPACE ERROR	BEQ	128$			; then GOTO RETURN FROM THREAD	INC	(R5)+			; STOP CODE IN ERR BFR := STOP ERROR CODE	BR	128$			; GOTO R      ETURN FROM THREAD;; MOVE MESSAGE HEADER AND TEXT TO MESSAGE BUFFER;30$:	MOV	R5,@#UISAR3		; MAP APR3 ONTO MESSAGE BUFFER	MOV	#SYSPAR,R0		; R0 -> BASE OF MESSAGE BUFFER	MOV	#MSGHDR,R4		; R4 -> BASE OF MESSAGE HEADER	MOV	#<HDRSZ+3>,R3		; R3 = # BYTES IN MESSAGE40$:	MOVB	(R4)+,(R0)+		; MOVE MESSAGE HEADER TO MESSAGE BFR	SOB	R3,40$			;;; SEND EXCHANGE MESSAGE FOR THE BROADCAST TO TIM;;; STATE:;;	R5 = KT11 ADR OF MESSAGE BUFFER;	R2 = BUFFER ID;	MOV	#TIMSTA,R1		; R1 -> TIM STATION NAME	CLR	R3			; R3 -> DUMMY ADR F      OR DUMMY SCB	MOV	#FAKECB,R4		; R4 -> DUMMY CCB	MOV	#CF.NEX,<FAKECB+C.FLG>	; SPECIFY NO EXCHANGE RECOVERY IN 'CCB'	CALL	..SDTM			; SEND EXCHANGE MESSAGE TO TIM	BCC	128$			; if SUCCESS then GOTO EXIT FROM THREAD					; ERROR: FAILED TO SEND MESSAGE TO TIM	MOV	#<S.V0*400!E.R20>,<SNDBUF+12> ; ERROR CODE BFR := STOP ERROR CODE	MOV	R1,<SNDBUF+14>		; ERROR CODE BFR := TPMLIB ERROR CODE128$:	SRDA$S				; UNSPECIFY RECEIVE DATA ASTs158$:	SETF$S	#1			; SET EVENT FLAG 1; ..MSUP WILL RETURN					; TO MAIN LINE LEVEL	TTRMN      $				; TERMINATE THIS THREAD	.PAGE	.SBTTL INSTALL STOP AS MANAGER;+;;  M G R I N S;;	MAP ONTO TPMLIB. MAP ONTO APPLICATION COMMON. SET UP THREAD TABLE.;;;  ENTRY CONDITIONS:;;	R5 IS INDEX INTO TP INFO VECTORS;;;  EXIT CONDITIONS:;;;;  REGISTERS ALTERED:;;	R0,R2,R3;;;  CALLING SEQUENCE:;;	CALL MGRINS;-MGRINS:	PUSH	R1			; SAVE REGISTER;; SET UP TASK AS MANAGER;	DIR$	#GETASK,DIRERR		; PUT STOP TASK NAME ETC IN THREAD TABLE	MOV	<THREAD+T.RB+G.TSTN>,<SNDDAT+S.DATN> ; PUT STOP TASK NAME IN DPB	MOV	<THREAD+T.RB+G.      TSTN+2>,<SNDDAT+S.DATN+2>	MOV	COMREG,<THREAD+T.RB+4+B.DAT> ; PUT 1ST RAD50 WORD OF COMMON NAME					;	IN DATA PART OF SEND BUFFER	MOV	TPUQID(R5),<THREAD+T.RB+4+B.DAT+2> ; PUT 2ND RAD50 WORD OF						   ; COMMON NAME IN SEND BFR	SRDA$S				; REMOVE RECEIVE DATA ASTs	DIR$	#SNDDAT,DIRERR		; SEND DATA TO SELF	MOV	#INPARM,R0		; R0 -> PARAMETER TABLE FOR ..INSM	MOV	#THREAD,$TTBAD		; SET UP THREAD TABLE ADR	CALL	..INSM			; INSTALL STOP AS MANAGER10$:	DIR$	#RECDAT			; RECEIVE RETURN MESSAGE FROM ..INSM	BCC	30$			; IF       SUCCESSFUL GOTO CONTINUE	CMP	#IE.ITS,$DSW		; if BUFFER EMPTY	BEQ	20$			; then GOTO WAIT A WHILE AND TRY AGAIN	JMP	DIRERR			; else GOTO FATAL ERROR PROCESSING20$:	WSIG$S	DIRERR			; WAIT FOR A SIGNIFICANT EVENT	BR	10$			; TRY TO RECEIVE DATA AGAIN30$:	MOV	$BASE,THREAD+T.DFP	; THREAD TABLE := PRT TO POOL BASE	SRDA$S	#$RVAST			; SPECIFY AST IN TPMLIB	POP	R1			; UNSAVE REGISTER	RETURN				; RETURN TO CALLING PROGRAM	.PAGE	.SBTTL TBLINS - INSERT TP DATA INTO TP TABLES;+;;  T B L I N S;;	INSERT TP NAME INTO TPNAME       VECTOR, UNIQUE ID INTO TPUQID VECTOR,;	"INITIATE STOP" INTO THE STATE VECTOR, AND TP'S RECORD;	NUMBER INTO TPRECN VECTOR. UPDATE TP'S DEFINITION RECORD;	IN [1,1]TPDEF.TPF.;;;  ENTRY CONDITIONS:;;	R5 = INDEX INTO TPUQID AND TPRECN (AND TPNAME) VECTORS;	TP'S DEFINITION RECORD IS IN TPREC BUFFER;;;  EXIT CONDITIONS:;;	TP TABLES UPDATED: TPNAM, TPUQID, STATE, AND TPRECN;	R5 -> NEXT, EMPTY ELEMENT OF TPUQID;	TP'S DEFINITION RECORD INDICATES STOP IS IN PROGRESS;;;  REGISTERS ALTERED:;;	NONE;;;  CALLING SEQUENCE:;      ;	CALL TBLINS;-TBLINS:	PUSH	R5		; SAVE REGISTER R5				; PUT TP NAME IN TPNAME VECTOR	ASL	R5		; R5 := 2*R5	ADD	(SP),R5		; R5 := 3*(INITIAL R5)	ADD	#TPNAME,R5	; R5 -> 1ST CHAR OF NEXT TPNAME VECTOR ELEMENT	MOV	TPREC,(R5)+	; MOV 1ST WORD OF TP NAME	MOV	<TPREC+2>,(R5)+	; VECTOR := 2ND WORD	MOV	<TPREC+4>,(R5)	; VECTOR := 3RD WORD	BIS	#TPSIP,<TPREC+TPSTAT> ; UPDATE [1,1]TPDEF.TPF RECORD				      ; INDICATED STOP IN PROGRESS	DEC	<.FDB+F.RCNM+2>	; INDICATE LAST RECORD PROCESSED	POP	R5		; UNSAVE INDEX TO TPRECN + TP      UQID VECTORS	MOV	<.FDB+F.RCNM+2>,TPRECN(R5) ; PUT TP'S REC NUM IN VECTOR	PUT$	#.FDB,,,IOERR	; WRITE RECORD	MOV	#INITIT,STATE(R5) ; TP'S STATE := INITIATE STOP	MOV	<TPREC+TPID>,TPUQID(R5) ; PUT TP'S UNIQUE ID INTO VECTOR	TST	(R5)+		; R5 INDEX TO NEXT TPUQID + TPRECN VECTOR ELEMENTS	CLR	STATE(R5)	; INDICATE END OF TABLE	RETURN			; RETURN TO CALLING PROGRAM	.PAGE	.SBTTL  COMATT - ATTACH TO NEXT TP'S APPLICATION COMMON;+;;  C O M A T T;;	DETACH FROM PREVIOUS TP'S APPLICATION COMMON REGION. ATTACH TO NEXT ;	TP'S       COMMON REGION.;;;  ENTRY CONDITIONS:;;	R5 = INDEX INTO STOP TABLES OF TP WHOSE COMMON IS TO BE ATTACHED;	RDB = RDB OF PREVIOUS TP'S COMMON REGION.;;;  EXIT CONDITIONS:;;	NEW TP'S COMMON REGION IS MAPPED AT APR 0;;;  REGISTERS ALTERED:;;	NONE;;;  CALLING SEQUENCE:;;	CALL COMATT;-COMATT:					; DETACH FROM PREVIOUS COMMON	;***CP53	DIR$	#DETACH			; DETACH	BCC	10$			; if OK then CONTINUE	CMP	$DSW,#IE.NVR		; if NOT PREVIOUSLY ATTACHED	BEQ	10$			; then CONTINUE	CALL	DIRERR			; else CRAP OUT10$:	MOV	#^RCOM,<RDB+R.      GNAM>	; RDB := 1ST HALF OF COMMON NAME	MOV	TPUQID(R5),<RDB+R.GNAM+2> ; RDB := LAST HALF (UNIQUE ID) OF COMMONN	DIR$	#ATTACH,DIRERR		; ATTACH TO COMMON AREA	CLR	<WDB+W.NLEN>		; WDB := DEFAULT WINDOW LENGTH	MOV	<RDB+R.GID>,<WDB+W.NRID> ; WDB := COMMON AREA REGION ID	MOV	<RDB+R.GSIZ>,<WDB+W.NSIZ> ; WDB := WINDOW SIZE	CMP	<WDB+W.NSIZ>,#400	; if COMMON IS <= 8KW	;**CP49+	BLOS	20$			; then CONTINUE	MOV	#400,<WDB+W.NSIZ>	; else MAP ONLY 1ST 8KW OF COMMON	;**CP49-20$:	DIR$	#CREATE,DIRERR		; MAP APR0 (+APR1) ONTO CO      MMON AREA 	RETURN				; RETURN TO CALLING PROGRAM	.PAGE	.PAGE	.SBTTL UPDATE SYSTEM COMMON;+									;**CP10+;;  U P D S Y S;;	IF THIS TRANSACTION PROCESSOR IS CRASH RECOVERABLE AND NOT;	IN DEBUG MODE THEN;	DELETE THE ENTRY FOR THE TRANSACTION PROCESSOR BEING STOPPED.;;;  ENTRY CONDITIONS:;;	R5 -> CURRENT TP'S DATA IN STOP TABLES;	SYSCOM IS MAPPED AT APR #SYSPAR;;;  EXIT CONDITIONS:;;	THE ENTRY FOR THE SPECIFIED TP IS DELETED FROM SYSTEM COMMON.;;;  REGISTERS ALTERED:;;	R3,R4;;;  CALLING SEQUENCE:;;	CALL UPDS      YS;-UPDSYS:	.ENABL	LSB			; ENABLE LOCAL SYMBOL BLOCK	BIT	#SY.BUF,.SYFLG		; if TP NOT IN DEBUG MODE	BEQ	3$			; then CONTINUE			;***CP38	JMP	128$			; else GOTO RETURN FROM UPDSYS3$:	BIT	#SY.CRC,.SYFLG		; if TP IS CRASH RECOVERABLE	;**CP38+	BNE	5$			; then CONTINUE	JMP	128$			; else GOTO RETURN FROM UPDSYS	;**CP38-;; VALIDATE SYSCOM'S CHECKSUM;5$:	PUSH	<R0,R1>			; SAVE REGISTERS	MOV	#SYSPAR,R1		; R1 -> VIRTUAL BASE OF SYSCOM	CALL	.SYVAL			; if SYSCOM OK	BEQ	7$			; then CONTINUE					; else SYSCOM CHECKSUM ERROR      	MOV	#<S.V0*400!E.R24>,R1	; R1 := ERROR CODE	CALL	.ERMSG			; PRINT DIAGNOSTIC ERROR MESSAGE;; FIND ENTRY IN SYSTEM COMMON FOR SPECIFIED TP;7$:	MOV	#<SYSPAR!W.ATP>,R0	; R0 -> 1ST ACTIVE TP ENTRY	INH$S				; INHIBIT CONTEXT SWITCHING10$:	CMP	TPUQID(R5),W.ID(R0)	; ?THIS ENTRY FOR THIS TP?	BEQ	30$			;  IF IT IS, THEN GOTO FREE THE ENTRY					; TRY NEXT ENTRY	ADD	#W.TPES,R0		; R0 -> NEXT ENTRY	CMP	R0,#<SYSPAR!W.CKM>	; ?END OF TP DATA AREA?	BLO	10$			;  IF NOT AT END, TRY AGAIN					; ERROR: TP ENTRY NOT FOUND	ENB$S      				; ENABLE CONTEXT SWITCHING	MOV	#<S.V0*400!E.R14>,R1	; DIAGNOSTIC ERROR #14	CALL	NAMERR			; OUTPUT ERROR MESSAGE AND RETURN	BR	63$			; GOTO DONE					; ENTRY FOUND: CLEAR IT30$:	MOV	#<W.TPES/2>,R1		; R1 = SIZE OF AN ENTRY IN WORDS33$:	CLR	(R0)+			; FREE ENTRY	SOB	R1,33$			; LOOP	ENB$S				; ENABLE CONTEXT SWITCHING;; CALL CHECK SUM CALCULATION ROUTINE;63$:	MOV	#SYSPAR,R1		; R1 -> VIRTUAL BASE OF SYSCOM	CALL	.SYCAL			; CALCULATE SYSCOM CHECKSUM	POP	<R1,R0>		; UNSAVE REGISTERS128$:	RETURN			; RETURN TO CALLI      NG PROGRAM			.DSABL	LSB		; DISABLE LOCAL SYSBOL BLOCK		;**CP10-	.PAGE	.SBTTL CHECKSUM ROUTINES FOR SYSCOM;+;	THESE ROUTINES ARE USED TO CALCULATE AND VALIDATE THE CHECKSUM;	FOR SYSCOM.;;; INPUT CONDITIONS:;;	R1 -- VIRTUAL ADDRESS OF SYSCOM;;; OUTPUT CONDITIONS:;;	Z BIT SET IF CHECKSUM VALID;	IF CALL .SYVAL AND CHECKSUM INVALID THEN A GARBAGE NEW CHECKSUM;		WORD WILL BE ENTERED.;;; REGISTERS DESTROYED:;;	R1,R3,R4;;; ENTRY POINTS:;;	.SYCAL - CALCULATE CHECKSUM;	.SYVAL - VALIDATE CHECKSUM;;-.SYCAL:	CLR	W.CKM(R      1)		; CLEAR CHECKSUM VALUE.SYVAL:	CLR	-(SP)			; CALCULATE CHECKSUM ON STACK	MOV	#<W.CKM/2>+1,R4		; R4 = # WORDS IN SYSCOM (THAT ARE USED)10$:	INH$S				; INHIBIT CONTEXT SWITCHING	MOV	(R1)+,R3		; R3 := NEXT WORD IN SYSCOM	XOR	R3,(SP)			; ACCUMULATE CHECKSUM	SOB	R4,10$			; LOOP	BEQ	20$			; IF CHECKSUM CORRECT (=0) GOTO DONE	MOV	(SP),-2(R1)		; SET CHECKSUM WORD20$:	ENB$S				; ENABLE CONTEXT SWITCHING	TST	(SP)+			; CLEAN STACK	RETURN	.PAGE	.SBTTL LA180 - WAIT UNTIL LA180 PRINTING DONE;+;; L A 1 8 0;; for EACH T      ERMINAL SCB; do	while (TERMINAL OPEN and LA180 PRINTING) or (REPORT MESSAGE QUEUED);	do	WAIT 1 SECOND;;;;  ENTRY CONDITIONS:;;	?;;  EXIT CONDITIONS:;	NO LA180 IS PRINTING OR HAS A MESSAGE QUEUED;		(UNLESS THIS IS AN EMERGENCY ABORT: A TST IS ACTIVE, THE;		 BF.SAB CODE HAS BEEN SENT, 'EMERGN' MINUTES HAVE EXPIRED,;		 THE MANAGERS HAVEN'T ABORTED THE TST FOR SOME REASON, AND;		 THE TST HAS QUEUED A REPORT MESSAGE AFTER THE TERMINAL;		 HAS BEEN CHECK TO HAVE NO ACTIVITY.);;  ? DESTROYED;;  CALLING SEQUENCE:;	C      ALL LA180;; CALLED BY:;	TXNCMP REQUIRES R0,R1,R2 PRESERVED;;-	.ENABLE	LSBLA180:	PUSH	<R0,R2>			; SAVE VOLATILE REGISTERS	MOV	.SCBTT,R0		; R0 -> BASE OF TERMINAL ALPHA TABLE	MOV	.SCBTS,R2		; R2 := 2*(# ENTRIES IN ALPHA - 1)	ASR	R2			; R2 := # ENTRIES IN ALPHA TABLE - 1	INC	R2			; R2 := # ENTRIES IN ALPHA TABLE;; INHIBIT CONTEXT SWITCHING AND MAP NEXT TERMINAL SCB;20$:	INH$S				; INHIBIT CONTEXT SWITCHING25$:	MOV	(R0),UISAR4		; MAP NEXT TERMINAL SCB	MOV	#1006,UISDR4		; MAP 64 WORDS R/W;; IGNORE TERMINAL IF IT       ISN'T OUTPUT ONLY OR IF IT IS UNAVAILABLE (DOWN);	BITB	#SO.I,<S.OPER+APR4>	; if TERMINAL HAS INPUT CAPABILITIES	BNE	NXTSCB			; then NOT OUTPUT ONLY: GOTO NEXT SCB	CMP	#ST.WAT,<S.SAT+APR4>	; if TERMINAL NOT AVAILABLE	BNE	NXTSCB			; then DON'T WAIT FOR OUTPUT;; IF A MESSAGE IS BEING PRINTED ON OUTPUT ONLY STATION OR IF A REPORT MESSAGE; IS QUEUED TO OUTPUT ONLY STATION, WAIT A SECOND THEN LOOK AGAIN;30$:	TST	<S.THRD+APR4>		; if A THREAD IS PROCESSING FOR TERMINAL	BNE	KUWAIT			; then WAIT A SECOND BEFORE RE-T      EST	TST	<S.FST+APR4>		; if NO MESSAGES ARE IN QUEUE	BEQ	NXTSCB			; then TRY NEXT SCB;; ENABLE CONTEXT SWITCHING.; IF 'WAITING FOR LA180' MESSAGE HAS NOT BEEN PRINTED DO SO.; WAIT A SECOND BEFORE CHECKING IF TERMINAL IS READY;KUWAIT:	ENB$S				; ENABLE CONTEXT SWITCHING	TSTB	PRTMSG			; if MESSAGE HAS BEEN PRINTED	BNE	50$			; then CONTINUE	MOV	#<S.V0*400!E.R28>,R1	; PRINT 'WAITING FOR FORMS PRINTING'	CALL	.ERMSG			; PRINT DIAGNOSTIC ERROR MESSAGE	MOVB	#1,PRTMSG		; INDICATE MESSAGE HAS BEEN PRINTED50$:	DIR$	#MA      RKS,DIRERR		; WAIT A SECOND	DIR$	#STOP1,DIRERR		;	BR	20$			; GOTO TRY SAME SCB AGAIN;; CURRENT SCB IS NOT AN ACTIVE OUTPUT ONLY STATION: TRY NEXT SCB;NXTSCB:	TST	(R0)+			; R0 -> NEXT ENTRY IN ALPHA TABLE	SOB	R2,25$			; if MORE then GOTO TRY NEXT SCB;; ALL DONE: ENABLE CONTEXT SWITCHING, UNSAVE VOLATILE REGISTERS, AND RETURN;	ENB$S				; ENABLE CONTEXT SWITCHING	POP	<R2,R0>			; UNSAVE VOLATILE REGISTERS	RETURN	.DSABL	LSB	.PAGE	.SBTTL FLUSH - FLUSH LOGGING BUFFER;+;;  F L U S H;;	SEND MESSAGE TO JOURNAL DRIVER       TO FLUSH LOGGING BUFFER.;;;  ENTRY CONDITIONS:;;	.ASR0 -> KT11 ADR OF APPLICATION COMMON;	APR0 -> APPLICATION COMMON;	.SHTCT = 0, ALL MANAGERS ARE SHUTDOWN;;;  EXIT CONDITIONS:;;	on success LOGGING BUFFER FLUSHED;	on error PRINT ERROR MSG;;;  REGISTERS ALTERED:;;	NONE;;;  CALLING SEQUENCE:;;	CALL FLUSH;-FLUSH:	BIT	#SY.LOG,.SYFLG		; if LOGGING DISABLED	BEQ	128$			; then DO NOT FLUSH LOGGING BUFFERS	PUSH	R3			; SAVE REGISTERS	CLR	R3			; INDICATE NO RECEIVE DATA YET	DIR$	#SRDAST			; SPEC RECEIVE DATA AST ROUT      INE = RCVAST	BCS	30$			; on error GOTO PRINT ERROR MSG;; SEND MESSAGE TO JOURNAL DRIVER;	CLR	SNDBUF			; INDICATE NO CONTEXT BLOCK	MOV	#JN.FLS,<SNDBUF+2>	; SNDBUF := FUNCTION CODE	MOV	.ASR0,<SNDBUF+12>	; SNDBUF(word 6) := KT ADR OF APP COMMON	DIR$	#JSNDAT			; SEND DATA TO JNLDRV	BCS	30$			; on error GOTO PRINT 'NO LOG FLUSH';; MARK TIME AND STOP FOR EITHER:;	EVENT FLAG 1: SET BY MARK TIME AFTER 1 MINUTE;	EVENT FLAG 2: SET BY AST ROUTINE WHEN A RECEIVE DATA HAS BEEN;		QUEUED, PRESUMABLY THE SEND FROM THE JOUR      NAL DRIVER.;	MOV	#1,<STOPMK+M.KTMG>	; MARK TIME DPB(# MINUTES) := 1	DIR$	#STOPMK			; AFTER 1 MINUTE, SET EVENT FLAG 1	BCS	30$			; on error GOTO PRINT ERROR MSG	DIR$	#STLO12			; STOP FOR EVENT FLAG 1 OR 2	BCS	30$			; on error GOTO PRINT ERROR MSG;; if JOURNAL DRIVER HAS SENT DATA AND FLUSHED; then THE RCVAST ROUTINE WILL HAVE SET R3 <> 0; else PRINT DIAGNOSTIC ERROR MESSAGE (LOGGING BUFFER NOT FLUSHED);	TST	R3			; if LOGGING BUFFER FLUSHED	BNE	63$			; then GOTO DONE;; ERROR: PRINT LOGGING BUFFER NOT FLUSHED;      30$:	MOV	#<S.V0*400!E.R27>,R1	; R1 := ERROR CODE FOR "LOG BFR NOT FLUSHED"	CALL	.ERMSG			; PRINT DIAG ERROR MSG63$:	SRDA$S				; UNSPECIFY RECEIVE DATA ASTs	POP	R3			; UNSAVE REGISTERS128$:	RETURN			; RETURN TO CALLING PROGRAM	.PAGE	.SBTTL RCVAST - RECEIVE DATA AST ROUTINE;+;;  R C V A S T;;	AST ROUTINE TO RECEIVE DATA, VERIFY THAT DATA SENT BY JOURNAL;	DRIVER AND LOGGING BUFFERS FLUSHED, SET FLAG (R3) TO INDICATE;	THAT BFR RECEIVED, SET EVENT FLAG TO WAKE UP MAINLINE CODE.;;;  ENTRY CONDITIONS:;;	R3 = 0          , INDICATES NO RECEIVE FROM JOURNAL DRIVER YET;;;  EXIT CONDITIONS:;;	on success R3 <> 0;	else R3 UNCHANGED AND BETTER BE 0;;;  REGISTERS ALTERED:;;	NONE;;;  CALLING SEQUENCE:;;	RECEIVE AST WHILE STOPPED IN FLUSH ROUTINE;-RCVAST:;; RECEIVE DATA; if 1ST WORD OF SENDER ERROR ISN'T 'JNL'; then GOTO RECEIVE DATA; else SET R3 AND SET EVENT FLAG #2 TO UNSTOP FLUSH ROUTINE;20$:	DIR$	#RCDAT			; RECEIVE DATA	BCS	63$			; on error RETURN W/O SETTING R3	CMP	RCVBUF,#^RJNL		; if 1ST WORD OF SENDER NAME <> 'JNL'	BNE	20$		      	; then TOSS OUT GARBAGE SEND	SETF$S	#2			; SET EVENT FLAG #2	MOV	PC,R3			; INDICATE DATA RECEIVED ( R3 <> 0 )63$:	ASTX$S				; EXIT AST LEVEL: FINISH 'FLUSH' ROUTINE	.PAGE	.SBTTL KILL - EMERGENCY SPAWN OF REMOVE OF TP;+;;  K I L L;;	CLOSE [1,1]TPDEF.TPF FILE TO PERMIT TPREMOVE'S ACCESS.;	SPAWN MCR INSTALL OF TP REMOVE TASK. SEND DATA TO REMOVE TASK;	INDICATING REMOVAL OF CURRENT TP. OPEN [1,1]TPDEF.TPF.;;;  ENTRY CONDITIONS:;;	R5 = INDEX IN TPUQID VECTOR OF UNIQUE ID OF TP TO BE REMOVED;;;  EXIT CONDITIONS:      ;;	REMOVE SPAWNED TO REMOVE SPECIFIED TP AND ERROR MESSAGE PRINTED.;	EXSTAT: EXIT STATUS FOR TPSTOP TASK := WARNING;;;  REGISTERS ALTERED:;;	R2;;;  CALLING SEQUENCE:;;	CALL KILL;-KILL:		PUSH	R0			; SAVE REGISTERS	PUSH	R1	MOV	#EX$WAR,EXSTAT		; TPSTOP TASK'S EXIT STATUS := WARNING	CALL	CLOSE			; CLOSE [1,1]TPDEF.TPF FILE;; SET UP SEND BUFFER FOR TPREMV TASK;	MOV	#FAKECB,R0		; POINTER TO SEND BUFFER	MOV	R5,R1			; R1 := IX TO TPUQID VECTOR	ASL	R1			; R1 := 2*(IX)	ADD	R5,R1			; R1 := 3*(ORIGINAL IX) = IX TO TPNA      ME	ADD	#TPNAME,R1		; R1 -> TP NAME BUFFER	MOV	#6,R2			;10$:	MOVB	(R1)+,(R0)+		; MOVE TP NAME TO SEND BUFFER	SOB	R2,10$			;;; SET UP SEND AND SPAWN DPBs;					; SET UP SPAWN COMMAND LINE	MOV	#REMTSK,R0		; R0 -> TASK NAME BUFFER	MOV	TPUQID(R5),R1		; R1 := RAD50 ID FOR TASK NAME	MOV	R1,<SENDCT+S.DRTN+2>	; LAST WORD OF TASK NAME FOR SEND DATA					; IS TP'S UNIQUE ID	CALL	$C5TA			; CONVERT TO ASCII					; SET UPSPAWN DPB	MOV	#REMCMD,<SPAWN+S.PWCA>	; DPB -> COMMAND LINE	MOV	#REMCLN,<SPAWN+S.PWCL>	; DPB := CMD LINE       LENGTH	DIR$	#SPAWN			; SPAWN MCR INSTALL OF TP REMOVE TASK	BCS	15$			; IF C-SET ERROR	CALL	STP1			; STOP UNTIL INSTALL COMPLETES	CMP	#EX$SUC,<FAKECB+26.>	; if INSTALL SUCCESSFUL	BEQ	20$			; then CONTINUE15$:	MOV	#<S.V0*400!E.R23>,R1	; R1 := ERR CODE = 'FAILED TO REMOVE TP'	CALL	NAMERR			; PRINT ERROR MESSAGE	BR	63$			; GOTO RETURN;; SEND DATA + CONNECT TO REMOVE TASK, WAIT FOR REMOVE TO FINISH;20$:	DIR$	#SENDCT,DIRERR		; SEND DATA, REQUEST, AND CONNECT TO REMOVE	CALL	STP1			; WAIT FOR REMOVE TASK TO RETURN       STATUS	CMP	#EX$SUC,<FAKECB+26.>	; if REMOVE NOT SUCCESSFUL	BNE	30$			; then PRINT 'REMOVE NOT SUCCESSFUL' MSG					; else PRINT 'EMERGENCY REMOVE DONE'	MOV	#<S.V0*400!E.R22>,R1	; R1 := ERROR CODE	BR	50$			; GOTO PRINT ERROR	30$:					; DIAG ERRROR: PRINT 'FAILED TO REMOVE TP'	MOV	#<S.V0*400!E.R23>,R1	; R1 := ERROR CODE50$:	CALL	NAMERR			; GOTO PRINT ERROR MESSAGE;; SPAWN MCR REMOVE OF REMOVE TASK;					; SET UP SPAWN DPB	MOV	#REMC2,<SPAWN+S.PWCA>	; DPB -> COMMAND LINE	MOV	#REM2LN,<SPAWN+S.PWCL>	; DPB := CMD LI      NE LENGTH					; SET UP MCR REM CMD LINE	MOV	#REMTSK,R1		; R1 -> ASCII UNIQUE ID	MOV	#REMT2,R2		; R2 -> LAST 3 CHAR OF NAME OF TASK TO REMOVE	MOVB	(R1)+,(R2)+		; MCR REM COMMAND'S TASK NAME := UNIQUE ID	MOVB	(R1)+,(R2)+	MOVB	(R1)+,(R2)+	DIR$	#SPAWN			; SPAWN MCR REMOVE OF TPREMV TASK	BCS	55$			; if FAILED then GOTO ERROR	CALL	STP1			; STOP UNTIL MCR REMOVE DONE	CMP	#EX$SUC,<FAKECB+26.>	; if REMOVE OK	BEQ	63$			; then CONTINUE55$:					; ERRROR: MCR REMOVE OF TPREMV TASK FAILED	MOV	#<S.V0*400!E.R26>,R1	; R1 :=       ERROR CODE	PUSH	TPUQID(R5)		; (SP) -> UNIQUE ID	CALL	CMDER2			; PRINT ERROR MESSAGE THEN RETURN	TST	(SP)+			; CLEAN STACK			;****C4963$:	CALL	OPTPDF			; RE-OPEN TPDEF FILE	POP	R1			; UNSAVE REGISTERS	POP	R0	RETURN				; RETURN TO CALLING PROGRAM;; STOP FOR EVENT FLAG 1;STP1:	DIR$	#STOP1,DIRERR	RETURN	.PAGE	.SBTTL	ERROR ROUTINES ;; DIRECTIVE ERROR ROUTINE; DIRERR:	MOV	$DSW,-(SP)		; DSW = ERROR CODE	MOV	#E.R11,R0		; FIRST DIRECTIVE ERROR CODE	CMP	#IE.PNS,(SP)		; ERROR = REGION DOESN'T EXIST?	BEQ	20$			; IF EQ       YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.INS,(SP)		; ERROR = TASK NOT INSTALLED?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.ACT,(SP)		; ERROR = TASK NOT ACTIVE?	BEQ	10$			; IF EQ YES	MOV	#<S.V1*400!E.R1>,R1	; ELSE SET SEVERITY/ERROR CODE	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	MOV	-2(SP),-(SP)		; PUSH ADDRESS OF ERROR CALL	BR	30$			; 10$:	MOV	R4,R2			; R2 POINTS TO ARGUMENT LIST20$:	MOV	#<S.V1*400>,R1		; SET SEVERITY/ERROR CODE	BISB	R0,R1			;30$:	CALL	.ERMSG			; OUTPUT ERROR       MESSAGE AND EXIT ;; I/O ERROR ROUTINE; IOERR:	CLOSE$	#.FDB			; ATTEMPT TO CLOSE [1,1]TPDEF.TPF	MOV	.FDB+F.ERR,-(SP)	; ERROR CODE	BIS	#177400,(SP)		; SIGN EXTEND	MOV	#E.R6,R0		; FIRST I/O ERROR CODE	CMP	#IE.NSF,(SP)		; ERROR = FILE DOESN'T EXIST?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.LCK,(SP)		; ERROR = FILE LOCKED?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.WAC,(SP)		; ERROR = FILE ACCESSED FOR WRITE?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR COD      E	CMP	#IE.CLO,(SP)		; ERROR = FILE NOT PROPERLY CLOSED?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.PRI,(SP)		; ERROR = PRIVILEGE VIOLATION?	BEQ	10$			; IF EQ YES	MOV	#<S.V1*400!E.R2>,R1	; ELSE SET SEVERITY/ERROR CODE FOR 					; UNEXPECTED ERROR	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	BR	20$			; 10$:	MOV	#<S.V1*400>,R1		; SET SEVERITY/ERROR CODE	BISB	R0,R1			;20$:	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT ;; COMMAND LINE ERROR ROUTINE; NAMERR:					; GET TP NAME FROM TPNAME VECTOR	   ¼  PUSH	R5			; (SP) := TPNAME INDEX/3	ASL	(SP)			; (SP) := 2*TPNAME INDEX/3	ADD	R5,(SP)			; (SP) := TPNAME INDEX	ADD	#TPNAME,(SP)		; (SP) -> TPNAME	MOV	SP,R2			; R2 -> ARGUMENT LIST		;***C49+	CALL	.ERMSG			; OUTPUT ERROR MESSAGE	TST	(SP)+			; CLEAN STACK	RETURN								;***C49-CMDERR:	MOV	#RCVBUF+4,-(SP)		; POINTER TO TP NAME SPECIFIEDCMDER2:	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT	RETURN	.END	STOP¼         \q†kQÁ› 8$        .TITLE	RELEASE INITL TO THE POOL.IDENT	"V001A";;;;;;;                         COPYRIGHT (C) 1979 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.;;;;;	MODULE:		RELEASE INITL TO POOL MODULE;;	VERSION:	V001A;;	AUTHOR:		GW;;	DATE:		12-MAR-79;;;;	.MCALL	SWITCH,EXIT$SRETURN:	SWITCH	20$	TST	$RTNFG		;HAVE WE BEEN HERE BEFORE	BNE	15$		;YES	INC	$RTNF   Œ  G		;FLAG WE HAVE BEEN HERE	MOV	#$POOL,R0	;GET ADDRESS OF START TO RELEASE	ADD	$CRAVL-2,R0	;ADD BOUNDRY SIZE	BIC	$CRAVL-2,R0	;ROUND IT	MOV	#$SYBEG,R1	;GET LAST ADDRESS	BIT	$CRAVL-2,R1	;IS IT AN EVEN WORD	BEQ	10$		;YES	SUB	#6,R1		;NO. CORRECT FOR INITL CHANGE TO START ADDRESS10$:	SUB	R0,R1		;CALCULATE SIZE OF BLOCK	CALL	$DEACB		;DEALLOCATE BLOCK15$:	RETURN			;DONE20$:	EXIT$S			;EXIT	.END	RETURN Œ         ÛY»pkQÁ› 8$ 2   v  	.TITLE	TPINIT - INITIALIZE TP FILE	.IDENT	/V01A/ ; THIS PROGRAM IS NOT SUPPORTED. LOOK OUT.;; FUNCTION: TO PREVENT USE OF THE EXEC CRASH RECOVERY/RESTART MODULE.;; AUTHOR:	C.PAUL;; DATE:		7/19/78;	.MCALL	EXST$SNOCRASH::		CLR	$CRASH			; 1ST CRASH ROUTINE INSTRUCTION := HALT	MOV	#776,<$CRASH+2>		; 2ND INSTRTUCTION := BR .-2	EXST$S	#EX$SUC			; EXIT SUCCESSFULLY	.END	NOCRASHv         ;;€kQÁ› 8$        	.TITLE	ISCB - INITIALIZE SCB'S	.IDENT	/1.1C05/ ;;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	.INSCB - INITIALIZE SCB'S;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;;; EDITS:;;	1. CP02  11/2/77;	IF THERE ARE NO TERMINAL STATIONS, THEN TIM IS NOT TO BE LOADED.;;	2. CP0      3  11/2/77;	IF THERE ARE NO TERMINAL STATIONS, THEN THE TIM STATION,;	[[[[[[, IS NOT CREATED.;;	3. CP04  11/2/77;	FIX FOR DETERMINATION OF BLOCK SIZE FOR MAILBOX STATIONS.;;	4. CP05  11/2/77;	IF MAX # TERMINALS = 0, DON'T CREATE TERMINAL INDEX FILE;;	5. CP08  11/14/77;	FIX MAILBOX STATION INITIATION.;;	6. CP11  11/28/77;	INITIALIZE MANAGER TASK NAME FOR [[[[[[ TERMINAL SCB;;	7. CP34 4/4/78;	PUT TERMINAL INDEX FILE DATA (TERMINAL NAME, DIALOGUE + RESOURCE MGR'S;	ULAS) INTO SCB. AND ADJUST # TERMINAL SCBS (2N      -2) .SCBTS.;;	8. CP36 4/13/78;	TERMINAL SCB := HTN. GETSCB RESETS MAPPING BEFORE ERROR OCCURS.;;	9. CP52 5/18/78;	DELTRM + DELTST DEC .SCBTS + .SCBTZ.;;	10. CFP1 8/1/78;	IF STATION HAS REPEAT COUNT, DO NOT SUPPRESS ZEROES IN STATION NAME.;;	11. CFP2 8/2/78;	IF TERMINAL SCB IS DEDICATED TO ONE TRANSACTION THEN TEMPORARILY;	STORE THE TXN NAME IN S.THRD(+6) INSTEAD OF S.FMAD(+6) (WHERE THE;	LAST 2 CHARS WERE BEING CLOBBERRED WHEN S.HTN WAS INITIALIZED).;;	12. CFP3 8/3/78;	IF NO TERMINAL STATIONS ARE DEFINED CR      EATE <TPNAME>.TIF;1 FILE;	ANYWAY. (UNDO CP05.);;	13. CFP4 8/29/78;	PERMIT REPEAT COUNT OF 1 FOR STATION.;	CFP5: 6/7/79: FOR TST SCBS, S.MUL <= .MXTST.;-	.PAGE;+; .INSCB -;;	THIS MODULE CREATES A REGION (SCBNNN, WHERE NNN IS;	THE UNIQUE TP IDENTIFIER) TO ALLOCATE SPACE FOR THE;	MAXIMUM NUMBER OF STATION CONTROL BLOCKS FOR THE;	TRANSACTION PROCESSOR. THE SIZE OF THE REGION TO BE;	CREATED IN 64. BYTE BLOCKS) IS IN THE TP COMMON AREA.;	AN SCB IS INITIALIZED IN THE CREATED REGION FOR EACH;	STATION DEFINED.;;	TO       INITIALIZE SCB'S, THE STATION DEFINITION FILE FOR;	THE TRANSACTION PROCESSOR ;;		[1,300]XXXXXX.STA, WHERE XXXXXX IS THE TP NAME;;	IS READ SEQUENTIALLY USING THE 7 BYTE NAME FIELD AS;	THE KEY. THIS KEY FIELD CONSISTS OF A SINGLE CHARACTER;	TO DISTINGUISH TERMINAL STATIONS FROM ALL OTHER ;	TYPES FOLLOWED BY THE 6 BYTE STATION NAME. THE FIRST;	CHARACTER IN THE KEY FIELD FOR ALL TERMINAL STATIONS;	IS A BACK SLASH (\), FORCING ALL STATION DEFINITION ;	RECORDS OF THAT TYPE TO BE READ LAST, AND THEREFORE ALL ;	TER      MINAL SCB'S TO BE CONTIGUOUS.;;	TWO ALPHA TABLES, ONE FOR TERMINAL STATIONS AND THE;	OTHER FOR ALL OTHER STATION TYPES, ARE CREATED IN THE ;	TP COMMON AREA. EACH TABLE CONTAINS KT POINTERS TO THE;	CORRESPONDING GROUP OF SCB'S IN ALPHABETIC ORDER BY ;	STATION NAME.;;; INPUT CONDITIONS:;;	APR 0 MAPPED ONTO TP COMMON AREA;;	APR 2 MAPPED ONTO TPM LIBRARY;;	APR 4 MAPPED ONTO SHARED BUFFER REGION;;; OUTPUT CONDITIONS:;;	ALL REGISTERS VOLATILE;;	APR 3 IS DESTROYED (USED TO MAP SCB'S);-  	.MCALL	PUSH,POP,SWITCH,TCB      DF$,STSE$S,DIR$,WTSE$S,MRKT$S 	TPFDEF			; DEFINE TP RECORD OFFSETS	STAFDF			; DEFINE STATION DEFINITION RECORD OFFSETS	TCBDF$			; DEFINE TCB OFFSETS	.PAGE;; TRANSFER TABLE FOR SCB INITIALIZATION ROUTINES; STATBL:	.WORD	TERM			; TERMINAL STATION (TYPE 0)	.WORD	TST			; TST STATION (TYPE 2)	.WORD	MLBX			; MAILBOX STATION (TYPE 4)	.WORD	MLINK			; MASTER LINK STATION (TYPE 6)	.WORD	SLINK			; SLAVE LINK STATION (TYPE 10)	.WORD	SUBAT			; SUBMIT BATCH STATION (TYPE 12)	.WORD	SLBAT			; SLAVE BATCH STATION (TYPE 14)S      TBLSZ = .-STATBL	.PAGE	.ENABL	LSB .INSCB::	CALL	.OPNFM			; OPEN FORMS DEFINITION FILE ;; OPEN AND CONNECT STATION DEFINITION FILE; 	MOV	#.STALN,-(SP)		; LENGTH OF FILE EXTENSION	MOV	#.STAFL,-(SP)		; FILE EXTENSION	MOV	SP,R0			; R0 POINTER 	CALL	.NM300			; FORMAT FILE NAME STRING;	OPNBUF	#10,(R0),2(R0),#FB$GET	; FORMAT SEND BUFFER TO OPEN FILE	CALL	.RMSIO			; OPEN FILE	MOV	.RECBF+6,.IFSTA		; SAVE IFI FOR FILE;	CONBUF	,#0,#7,#RB$SEQ		; FORMAT SEND BUFFER TO CONNECT					; STREAM - SEQUENTIAL ACCESS	CALL	.RMSIO      			; CONNECT STREAM	CMP	(SP)+,(SP)+		; (SP+4) RESTORE STACK	MOV	.RECBF+6,.RBSCB		; SAVE RAB ADDRESS ;; CREATE REGION FOR SCB'S; 	MOV	.SCBRG,.RDB+R.GNAM	; PUT REGION NAME IN RDB	MOV	.TPID,.RDB+R.GNAM+2	;	MOV	.SCBSZ,.RDB+R.GSIZ	; PUT REGION SIZE IN RDB	MOV	.SCBSZ,.TPREC+TPSCBZ	; PUT IN TP RECORD BUFFER	MOV	#<RS.ATT!RS.WRT!RS.NDL>,.RDB+R.GSTS ; ATTACH WITH WRITE ACCESS					; DON'T DELETE ON LAST DETACH	DIR$	#.CRREG,.DIRER		; CREATE REGION	MOV	.RDB+R.GID,.GREGP+G.RGID ; REGION ID IN GREG$ DPB	DIR$	#.GREGP,.DIRE      R		; GET SCB REGION PARAMETERS AT .WRKBF ;; CREATE ADDRESS WINDOW AND INITIALIZE FOR MAPPING SCB'S; 	MOVB	#SCBAPR,.WDB+W.NAPR	; APR FOR WINDOW IN WDB	MOV	#SCB64,.WDB+W.NSIZ	; SIZE OF WINDOW IN WDB	CLR	.WDB+W.NSTS		; CLEAR STATUS WORD	DIR$	#.CRWIN,.DIRER		; CREATE ADDRESS WINDOW	MOV	.RDB+R.GID,.WDB+W.NRID	; SCB REGION ID FOR MAP	MOV	#<WS.WRT!WS.64B>,.WDB+W.NSTS ; MAP WITH WRITE ACCESS					; ALIGN ON 64-BYTE BLOCKS	CLR	.WDB+W.NOFF		; INITIAL OFFSET TO MAP = 0 ;; INITIALIZE POINTERS FOR ALPHA TABLES; 	MOV	.SCB      TA,R4		; R4 POINTS TO ALPHA TABLE	CLR	.SCBTZ			; CLEAR TABLE SIZE	MOV	.SCBTT,R5		; R5 POINTS TO TERMINAL ALPHA TABLE	CLR	.SCBTS			; CLEAR TABLE SIZE 	CLR	.MBSCB			; INITIALIZE # OF MAILBOX SCB'S TO 0 ;; CREATE TERMINAL INDEX FILE; 	MOV	.SCBAC,R3		; MAXIMUM # OF TERMINALS									;-1*CFP3	DIV	#42.,R2			; DETERMINE # OF TERMINAL INDEX	TST	R3			; RECORDS NEEDED	BEQ	10$			;	INC	R2			;  10$:	MOV	#.TIFLN,-(SP)		; LENGTH OF FILE EXTENSION	MOV	#.TIFIL,-(SP)		; POINTER TO FILE EXTENSION	MOV	SP,R0			; POINTER TO PARA      METERS	CALL	.NM10			; FORMAT FILE NAME 	CREBUF	#2,(R0),2(R0),R2,#<FB$WRT!FB$REA>,#FB$UDF,,,#<FB$CTG!FB$SUP>					; FORMAT SEND BUFFER TO CREATE FILE					; DEFAULT TO SEQUENTIAL FILE	CALL	.RMSIO			; CREATE FILE	MOV	.RECBF+6,.IFTIF		; SAVE IFI FOR FILE 	CONBUF				; FORMAT SEND BUFFER FOR CONNECT	CALL	.RMSIO			; CONNECT STREAM	CMP	(SP)+,(SP)+		; (SP+4) RESTORE STACK	MOV	.RECBF+6,.RBTIF		; SAVE RAB ADDRESS 	MOV	#TIFREC,R0		; INITIALIZE RECORD BUFFER	MOV	#256.,R1		;20$:	CLR	(R0)+			;	SOB	R1,20$			;	INC	TIFREC+6		      ; FIRST RECORD NUMBER = 1 ;; GET STATION DEFINITION RECORD; STADEF:	GETBUF	.RBSCB,,#STAREC,#STASIZ	; FORMAT SEND BUFFER FOR GET	CLR	R1			; RETURN IF ERROR	CALL	.RMSIO			; GET RECORD	BCC	30$			; IF C-CLR GET DONE	CMP	.RECBF+34,#ER$EOF	; EOF?	BEQ	EOFSTA			; IF EQ YES	MOV	#.STALN,-(SP)		; ELSE I/O ERROR	MOV	#.STAFL,-(SP)		;	MOV	SP,R0			;	CALL	.NM300			; FORMAT FILE NAME FOR MESSAGE	CALL	.RMSER			; OUTPUT ERROR MESSAGE AND EXIT 30$:	CLR	-(SP)			; INITIALIZE STATION NUMBER ON STACK	TST	-(SP)			; WORD FOR POINTER      	MOV	STAREC+SRPTC,R3		; R3 = REPEAT COUNT FOR STATION DEFINITION	CLR	STAREC+SRPTC		; CLEAR REPEAT FIELD IN RECORD BUFFER 	MOV	#<STAREC+1>,R0		; POINTER TO STATION NAME	;***CP52	MOV	#5,R1			;40$:	CMPB	#'*,(R0)		; END OF STATION NAME?	BEQ	50$			; IF EQ YES	INC	R0			; ELSE CHECK NEXT CHARACTER	SOB	R1,40$			; 	CMP	#1,R3			; if REPEAT COUNT IS 1	BEQ	60$			; then CONTINUE					; NO * IN SCB NAME W/ REPEAT CNT > 1	MOV	#<S.V0*400!E.R9>,R1	; SET SEVERITY/ERROR CODE	MOV	#STAREC+1,-(SP)		; POINTER TO STATION NAME	MOV	S      P,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE	ADD	#6,SP			; RESTORE STACK	JMP	STADEF			; GET NEXT RECORD 50$:	MOVB	#40,1(R0)		; REPLACE SECOND * WITH SPACE	MOV	R0,(SP)			; SAVE POINTER TO APPEND STATION # RPTSTA:	MOV	(SP),R0			; POINTER TO APPEND # IN STATION NAME	MOV	SP,R2			; DO NOT SUPPRESS ZEROS		;**CFP1	INC	2(SP)			; INCREMENT STATION NUMBER	MOV	2(SP),R1		; R1 = BINARY STATION NUMBER	CALL	$CBDAT			; CONVERT STATION # TO ASCII AND;***CFP1					; APPEND TO STATION NAME60$:	MOV	#      STAREC,R1		; R1 POINTS TO RECORD	MOV	STYP(R1),R0		; R0 = STATION TYPE	CMP	R0,#STBLSZ		; OFFSET INTO TABLE VALID?	BLT	70$			; IF LT YES 	MOV	#<S.V0*400!E.R10>,R1	; ELSE SET SEVERITY/ERROR CODE	MOV	#STAREC+1,-(SP)		; POINTER TO STATION NAME	MOV	STAREC+STYP,-(SP)	; STATION TYPE	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE	CMP	(SP)+,(SP)+		; (SP+4) RESTORE STACK	JMP	STADEF			; GET NEXT RECORD 70$:	PUSH	R3			; PRESERVE R3 ACROSS CALL	CALL	@STATBL(R0)		; CALL ROUTINE TO INITIALIZE       SCB	POP	R3			; RESTORE R3	SOB	R3,RPTSTA		; CONTINUE FOR REPEAT COUNT	CMP	(SP)+,(SP)+		; (SP+4) RESTORE STACK	BR	STADEF ;; END OF FILE;; IF ANY TERMINAL STATIONS WERE DEFINED THEN CREATE TIM STATION; EOFSTA:	TST	.SCBTS			; ?ANY TERMINAL STATIONS?	;***CP03	BEQ	83$			;  IF NONE, GOTO NEXT		;***CP03	MOV	.WRKBF+G.RGRB,.TIMQ	; PUT POINTER TO TIM STATION IN COMMON	MOV	#2,R0			; LENGTH TO MAP	CALL	GETSCB			; MAP SCB	MOV	.FMMAN,S.TSK(R0)	; MGR TASK NAME = FORMAT MANAGER;***CP11	MOV	<.FMMAN+2>,<S.TSK+2>(R0) ;	TASK N      AME FROM COMMON	;***CP11	MOV	#3,R1			; STATION NAME = [[[[[[ 80$:	MOV	#"[[,(R0)+		;   (LAST ALPHABETICALLY)	SOB	R1,80$			; ;; DETERMINE ALPHA TABLE SIZES; 83$:	CMP	.SCBTS,.SCBAC		; STATIONS DEFINED>TABLE CAPACITY?**CP03	BLE	90$			; IF LE NO 	MOV	#<S.V1*400>,R1		; SET SEVERITY	CMP	.SCBTZ,.SCBTC		; NON-TERMINAL STATIONS EXCEED MAXIMUM?	BLE	85$			; IF LE NO	MOV	#<S.V2*400>,R1		; ELSE SET SEVERITY TO RETURN85$:	BISB	#E.R11,R1		; SET ERROR CODE	SUB	.SCBAC,.SCBTS		; GET NUMBER OF STATIONS OVER	MOV	#.SCBTS,R2		; R      2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE90$:	DEC	.SCBTS			; DETERMINE TERMINAL ALPHA TABLE SIZE	BGE	95$			; IF TERMINAL STATIONS, CONTINUE;***CP02					;  NO TERMINAL SCBS: DON'T LOAD TIM CP02	BIC	#LD.FM,.LOADM		;  CLEAR TIM'S LOADED MANAGER BIT***CP02;	INC	.SCBTS			;  COMPENSATE FOR NO TIM STATION;***CP02*CP3495$:	MOV	.SCBTS,.TSCB		; PUT # OF TERMINAL SCB'S CREATED IN COMMON	ASL	.SCBTS			; 	CMP	.SCBTZ,.SCBTC		; STATION DEFINED > TABLE CAPACITY?	BLE	100$			; IF LE NO 	MOV	#<S.V1*400!E.R      12>,R1	; ELSE SET SEVERITY/ERROR CODE	SUB	.SCBTC,.SCBTZ		; GET NUMBER OF STATIONS OVER	MOV	#.SCBTZ,R2		; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT 100$:	DEC	.SCBTZ			; DETERMINE ALPHA TABLE SIZE	ASL	.SCBTZ			; ;; WRITE LAST TERMINAL INDEX FILE RECORD; 									;-2*CFP3	TST	.TSCB			; ?ANY TERMINALS DEFINED?	;***CP03	BMI	130$			;  IF NONE, GOTO CLOSE FILE	;***CP03									;***CFP3	TST	TIFREC			; RECORD TO WRITE?	BNE	120$			; IF NE YES	DEC	TIFREC+6		; ELSE GET LAST RECORD NUMBER	      BRDBUF	.RBTIF,#TIFREC,#512.,TIFREC+6 ; FORMAT SEND BUFFER TO READ	CLR	R1			; RETURN IF ERROR	CALL	.RMSIO			; GET LAST RECORD	BCC	120$			; IF C-CLR READ DONE110$:	MOV	#.TIFLN,-(SP)		; ELSE I/O ERROR	MOV	#.TIFIL,-(SP)		;	MOV	SP,R0			;	CALL	.NM10			; FORMAT FILE NAME FOR MESSAGE	CALL	.RMSER			; OUTPUT ERROR MESSAGE AND EXIT 120$:	MOV	TIFREC+8.,TIFREC+2	; PUT FIRST HTN # IN HEADER	BIS	#100000,TIFREC		; INDICATE LAST RECORD	BWTBUF	.RBTIF,#TIFREC,#512.,TIFREC+6 ; FORMAT SEND BUFFER TO WRITE	CLR	R1			; RETURN IF E      RROR	CALL	.RMSIO			; WRITE RECORD	BCC	130$			; IF C-CLR WRITE DONE	BR	110$			; ELSE I/O ERROR ;; CLOSE FILES; 130$:	MOV	#CLS,.SENBF		; CODE TO CLOSE FILE	MOV	.IFTIF,.SENBF+2		; IFI FOR TERMINAL INDEX FILE	CALL	.RMSIO			; CLOSE FILE 140$:	MOV	.IFSTA,.SENBF+2		; IFI FOR STATION DEFINITION FILE	CALL	.RMSIO			; CLOSE FILE	CLR	.IFSTA			; CLEAR IFI TABLE ENTRY	CALL	.CLSFM			; CLOSE FORMAT FILE 	RETURN	.DSABL	LSB	.PAGE;+; GETSCB -;;	THIS ROUTINE IS CALLED BY THE SCB INITIALIZATION ROUTINES.;	IT MAPS AN SCB OF THE       SPECIFIED SIZE, CLEARS THAT SCB,;	PUTS AN ENTRY FOR IT IN THE APPROPRIATE ALPHA TABLE,;	AND UPDATES THE POINTERS FOR THE NEXT SCB.;;; INPUT CONDITIONS:;;	R0 - SIZE OF SCB IN 64. BYTE BLOCKS;		2 = TERMINAL ALPHA STATION;		1 = ALL OTHER STATION TYPES;	R4 - POINTER TO NEXT ENTRY IN ALPHA TABLE;	R5 - POINTER TO NEXT ENTRY IN TERMINAL ALPHA TABLE;;	APR 0 MAPPED ONTO TP COMMON AREA;;	WINDOW CREATED AND WDB SET UP TO MAP SCB'S;;	SCB REGION PARAMETERS AT .WRKBF;;; OUTPUT CONDITIONS:;;	R0 - POINTER TO SCB MAPPED;	R4      ,R5 UPDATED;;	ALL OTHER REGISTERS PRESERVED;	;	APR 3 MAPPED ONTO SCB;;	KT ADDRESS OF NEXT SCB UPDATED AT .WRKBF+G.RGRB;;	OFFSET WITHIN REGION TO NEXT SCB UPDATED IN .WDB;-  	.ENABL	LSBGETSCB:	PUSH	R1			; SAVE REGISTERS USED 								;CP36-7;; PUT ENTRY IN ALPHA TABLE; 	CMP	#2,R0			; TERMINAL STATION?	BNE	20$			; IF NE NO	MOV	.SCBAC,R1		; GET POINTER PAST LAST TABLE ENTRY IN R1	ASL	R1			;	ADD	.SCBTT,R1		;	CMP	R5,R1			; STATIONS DEFINED > TABLE CAPACITY?	BLT	10$			; IF LT NO	MOV	.SCBTT,R5		; ELSE GO BACK TO BE      GINNING OF TABLE	CLR	.WDB+W.NOFF		; AND BEGINNING OF REGION10$:	MOV	.WRKBF+G.RGRB,(R5)+	; KT POINTER TO SCB IN TERMINAL ALPHA TABLE	INC	.SCBTS			; ACCUMULATE # OF SCB'S INITIALIZED	BR	40$ 20$:	MOV	.SCBTC,R1		; GET POINTER PAST LAST TABLE ENTRY IN R1	ASL	R1			;	ADD	.SCBTA,R1		;	CMP	R4,R1			; STATIONS DEFINED > TABLE CAPACITY?	BLT	30$			; IF LT NO	MOV	.SCBTA,R4		; ELSE GO BACK TO BEGINNING OF TABLE	CLR	.WDB+W.NOFF		; AND BEGINNING OF REGION30$:	MOV	.WRKBF+G.RGRB,(R4)+	; KT POINTER TO SCB IN ALPHA TABLE	INC	.S      CBTZ			; ACCUMULATE # OF SCB'S INITIALIZED ;; SET UP POINTERS TO NEXT SCB; ;								;**CP36+; MAP ONTO SCB; 40$:	MOV	R0,.WDB+W.NLEN		; LENGTH TO MAP	DIR$	#.MPWIN,.DIRER		; MAP SCB								;**CP36-	ADD	R0,.WRKBF+G.RGRB	; KT POINTER TO NEXT SCB IN REGION	ADD	R0,.WDB+W.NOFF		; OFFSET TO NEXT SCB IN REGION ;; CLEAR SCB; 	ASH	#5,R0			; R0 = LENGTH OF SCB IN WORDS	MOV	.WDB+W.NBAS,R1		; R1 POINTS TO SCB50$:	CLR	(R1)+			; CLEAR SCB	SOB	R0,50$			; 	MOV	.WDB+W.NBAS,R0		; RETURN POINTER TO SCB	INCB	S.THD(R0)		; DEFAULT       OCCUPANCY THRESHOLD TO 1	POP	R1			; RESTORE REGISTERS	RETURN	.DSABL	LSB  ;+; DELTRM -;;	DELETE TERMINAL SCB;- DELTRM:	TST	-(R5)			; BUMP BACK ALPHA TABLE POINTER	SUB	#2,.WRKBF+G.RGRB	; KT ADDRESS	SUB	#2,.WDB+W.NOFF		; OFFSET WITHIN REGION	DEC	.SCBTS			; ONE LESS TERMINAL SCB		;***CP52	RETURN  ;+; DELTST -;;	DELETE TST SCB;- DELTST:	TST	-(R4)			; BUMP BACK ALPHA TABLE POINTER	DEC	.WRKBF+G.RGRB		; KT ADDRESS	DEC	.WDB+W.NOFF		; OFFSET WITHIN REGION	DEC	.SCBTZ			; ONE LESS SCB			;***CP52	RETURN	.PAGE	.SBTTL	IN      ITIALIZE SCB FOR TERMINAL ;+; TERM -;;	THIS ROUTINE INITIALIZES A 64. WORD SCB FOR A TERMINAL;	STATION WITH THE DATA FROM THE STATION DEFINITION RECORD.;;	IF A FORM IS SPECIFIED AS THE INITIAL OPERATION FOR THE;	STATION, THE RELATIVE DISK ADDRESS OF THE CORRESPONDING;	FORMAT RECORD IS PUT IN THE SCB. IF A TRANSACTION IS;	SPECIFIED AS THE INITIAL OPERATION, THE TRANSACTION NAME;	(MAXIMUM 6 BYTES) IS PUT IN THE SCB TEMPORARILY. IT IS ;	REPLACED WITH THE ADDRESS OF THE CORRESPONDING TRANSACTION;	DESCRIPTOR TAB      LE ENTRY WHEN THAT TABLE IS CREATED.;;	IF A WORK CLASS IS ASSOCIATED WITH THE STATION, THE WORK;	CLASS NAME (MAXIMUM 6 BYTES) IS PUT IN THE SCB TEMPORARILY;	AND REPLACED WITH THE CORRESPONDING TRANSACTION AUTHORIZATION;	BIT MAP AFTER THE WORK CLASS DEFINITION FILE IS INITIALIZED.;;; INPUT CONDITIONS:;;	R1 - ADDRESS OF STATION DEFINITION RECORD;	R4 - POINTER TO NEXT ENTRY IN ALPHA TABLE;	R5 - POINTER TO NEXT ENTRY IN TERMINAL ALPHA TABLE;;	APR 0 MAPPED ONTO TP COMMON AREA;;; OUTPUT CONDITIONS:;;	R4 PRESERVED      ;	R5 UPDATED BY GETSCB SUBROUTINE;;	ALL OTHER REGISTERS VOLATILE;;	APR 3 REMAPPED;-  	.ENABL	LSBTERM:	MOV	#2,R0			; LENGTH TO MAP	CALL	GETSCB			; MAP SCB - UPDATE ALPHA TABLE POINTER	PUSH	<R4,R5>			; SAVE ALPHA TABLE POINTERS 	INC	R1			; POINT TO STATION NAME IN RECORD	MOV	R0,R2			; POINT TO SCB	MOV	#6,R3			; LENGTH OF STATION NAME10$:	MOVB	(R1)+,(R2)+		; PUT STATION NAME IN SCB	SOB	R3,10$			;	MOVB	(R1)+,S.OPER(R0)	; PUT ALLOWED OPERATIONS BYTE IN SCB	BISB	#SF.64,S.FLG(R0)	; SCB FOR TERMINAL = 64. WORDS	MOV      B	#SY.TIM,S.TYP(R0)	; STATION TYPE	MOV	.FMMAN,S.TSK(R0)	; FORMAT MANAGER TASK NAME FROM	MOV	.FMMAN+2,S.TSK+2(R0)	; COMMON AREA IN SCB	TST	(R1)+			; (R1+2) SKIP STATION TYPE	MOV	(R1),R3			; SAVE CURRENT REPEAT COUNT	INC	(R1)+			; INCREMENT REPEAT COUNT FOR NEXT TERMINAL	MOVB	(R1)+,S.GRPN(R0)	; NUMBER OF STATIONS IN GROUP =					; NUMBER DEVICES ACTIVE CONCURRENTLY	INC	R1			; R1 POINTS TO NEXT FIELD IN RECORD	TST	(R1)+			; INITIAL OPERATION FORM OR TRANSACTION?	BEQ	30$			; IF EQ TRANSACTION ;; INITIAL OPERATIO      N FORM; 	CALL	.FXENT			; FIND INDEX ENTRY FOR FORM					; ON RETURN, R5 POINTS TO INDEX ENTRY	BCC	20$			; IF C-CLR ENTRY FOUND 	MOV	R1,-(SP)		; POINTER TO FORM NAME	MOV	R0,-(SP)		; POINTER TO STATION NAME	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	MOV	#<S.V0*400!E.R13>,R1	; SET SEVERITY/ERROR CODE	CALL	.ERMSG			; OUTPUT ERROR MESSAGE	CMP	(SP)+,(SP)+		; (SP+4) RESTORE STACK					; DELETE SCB	POP	<R5,R4>			; RESTORE ALPHA TABLE POINTERS	CALL	DELTRM			; DELETE TERMINAL SCB	BR	100$			; DONE 20$:	MOV	F.XDAI(R5),S.FM      AD(R0)	; RELATIVE DISK ADDRESS OF FORMAT RECORD	MOV	F.XBLI(R5),S.FMBN(R0)	; # OF BLOCKS FOR FORMAT RECORD25$:	ADD	#6,R1			; SKIP OVER FORM NAME	BR	40$ ;; INITIAL OPERATION TRANSACTION; 30$:	BISB	#SO.FTY,S.OPER(R0)	; SET FLAG IN SCB FOR TRANSACTION	MOV	(R1)+,S.THRD(R0)	; PUT TRANSACTION		;***CFP2	MOV	(R1)+,S.THRD+2(R0)	; NAME IN SCB			;***CFP2	MOV	(R1)+,S.THRD+4(R0)	; TEMPORARILY			;***CFP2 ;; CHECK FOR WORK CLASS; 40$:	CMPB	#40,(R1)		; WORK CLASS SPECIFIED FOR STATION?	BNE	50$			; IF NE YES	BISB	#SO.NVL,S.O      PER(R0)	; NO WORK CLASS, NO VALIDATION	ADD	#6,R1			; POINT TO NEXT FIELD IN STATION RECORD	BR	70$ 50$:	MOV	#.SGNWC,R4		; POINTER TO SIGN ON WORK CLASS NAME	CMP	(R1),(R4)+		; IS SIGN ON WORK CLASS ASSOCIATED	BNE	60$			; WITH THIS TERMINAL?	CMP	2(R1),(R4)+		;	BNE	60$			;	CMP	4(R1),(R4)+		;	BNE	60$			; IF NE NO	BISB	#SO.SGN,S.OPER(R0)	; ELSE SET SIGN ON BIT IN SCB 60$:	MOV	(R1)+,S.TAT(R0)		; PUT WORK CLASS	MOV	(R1)+,S.TAT+2(R0)	; NAME IN SCB	MOV	(R1)+,S.TAT+4(R0)	; TEMPORARILY ;; PUT DEVICE ENTRY IN TERMINAL I      NDEX RECORD; 70$:	ADD	#10.,R1			; POINT TO DEVICE LIST	MUL	#14.,R3			; GET OFFSET TO NEXT DEVICE	ADD	R3,R1			; POINT TO NEXT DEVICE 	INC	TIFREC+4		; INCREMENT LAST HTN # IN HEADER	MOV	TIFREC,R3		; R3 = # ENTRIES IN RECORD	MUL	#12.,R3			; GET POINTER TO NEXT ENTRY	ADD	#TIFREC+8.,R3		; 	MOV	TIFREC+4,(R3)		; PUT HTN IN ENTRY	;***CP36	MOV	(R3)+,S.HTN(R0)		; SCB := HTN		;***CP36	ADD	#6,R1			; R1 POINTS TO TERMINAL NAME 					;**** (SKIP NODE NAME FOR RELEASE 1)	MOV	(R1),S.TERM(R0)		; PUT TERMINAL NAME IN SCB	;***      CP34	MOV	(R1)+,(R3)+		; MOVE TERMINAL NAME TO ENTRY	MOV	(R1),S.TERM+2(R0)	;				;***CP34	MOV	(R1)+,(R3)+		;	MOV	(R1),S.TERM+4(R0)	;				;***CP34	MOV	(R1)+,(R3)+		;	MOVB	(R1),S.ULA(R0)		; DIALOGUE MGR ULA TO SCB	;***CP34	MOVB	(R1)+,(R3)+		; DIALOGUE MANAGER NUMBER	CLRB	S.RMUL(R0)		; RESOURCE MGR ULA TO SCB	;***CP34	CLRB	(R1)			; RESOURCE MANAGER NUMBER ;; NOTE:;;	FOR RELEASE 1 -;;	1. THE DIALOGUE MANAGER NUMBER IS 1;;	2. THE RESOURCE MANAGER NUMBER IS 0 SINCE NO;	   NODE NAME IS SPECIFIED; 	INC	TIFREC			; INCR      EMENT # OF ENTRIES IN RECORD	CMP	#42.,TIFREC		; RECORD FULL?	BNE	90$			; IF NE NO ;; WRITE TERMINAL INDEX RECORD; 	MOV	TIFREC+8.,TIFREC+2	; PUT FIRST HTN # IN HEADER	BWTBUF	.RBTIF,#TIFREC,#512.,TIFREC+6 ; FORMAT SEND BUFFER TO WRITE	CLR	R1			; RETURN IF ERROR	CALL	.RMSIO			; WRITE RECORD	BCC	75$			; IF C-CLR WRITE DONE	MOV	#.TIFLN,-(SP)		; ELSE I/O ERROR	MOV	#.TIFIL,-(SP)		;	MOV	SP,R0			;	CALL	.NM10			; FORMAT FILE NAME FOR MESSAGE	CALL	.RMSER			; OUTPUT ERROR MESSAGE AND EXIT 75$:	CLR	TIFREC			; INITIALIZE       # ENTRIES FOR NEXT RECORD	MOV	#TIFREC+8.,R0		; CLEAR BUFFER	MOV	#252.,R1		;80$:	CLR	(R0)+			;	SOB	R1,80$			;	INC	TIFREC+6		; INCREMENT BLOCK # IN FILE 90$:	POP	<R5,R4>			; RESTORE ALPHA TABLE POINTERS100$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL	INITIALIZE SCB FOR TST ;+; TST -;;	THIS ROUTINE INITIALIZES A 64. BYTE SCB FOR A STATION;	ASSOCIATED WITH A TST. THE TST SPECIFIED IN THE STATION;	DEFINITION RECORD IS INSTALLED AND THE INFORMATION;	REQUIRED FROM THE CORRESPONDING TASK CONTROL BLOCK (TCB);	IS PUT IN THE SCB      . THE TCB ENTRY IS THEN DELETED.;;; INPUT CONDITIONS:;;	R1 - BUFFER ADDRESS OF STATION DEFINITION RECORD;	R4 - POINTER TO NEXT ENTRY IN ALPHA TABLE;	R5 - POINTER TO NEXT ENTRY IN TERMINAL ALPHA TABLE;;	APR 0 MAPPED ONTO TP COMMON AREA;;; OUTPUT CONDITIONS:;;	R4 UPDATED BY GETSCB SUBROUTINE;	R5 PRESERVED;;	ALL OTHER REGISTERS VOLATILE;;	APR 3 REMAPPED;-  	.ENABL	LSBTST:	MOV	#1,R0			; LENGTH TO MAP	CALL	GETSCB			; MAP SCB - UPDATE ALPHA TABLE POINTER	PUSH	<R4,R5>			; SAVE ALPHA TABLE POINTERS 	MOV	R0,R2			; P      OINTER TO SCB	MOVB	#SY.TST,S.TYP(R2)	; STATION TYPE	MOV	.EXMAN,S.TSK(R2)	; PUT EXECUTION MANAGER TASK NAME	MOV	.EXMAN+2,S.TSK+2(R2)	; FROM COMMON AREA IN SCB	MOVB	SMXCOP(R1),R3		; R3 := MAX COPIES OF TST	;**CFP5+	CMP	R3,.MXTST		; if MAX COPIES <= MAX # TST'S LOADED	BLOS	5$			; then CONTINUE	MOV	.MXTST,R3		; R3 := MAX # OF TSTS IN TP5$:	MOVB	R3,S.MUL(R2)		; PUT MAXIMUM # ACTIVE COPIES IN SCB									;**CFP5-	MOVB	STFLGS(R1),S.FLGX(R2)	; SET FLAGS IN SCB	INC	R1			; POINT TO STATION NAME IN RECORD	MOV	#7,R3			      ; LENGTH OF STATION NAME AND PRIORITY10$:	MOVB	(R1)+,(R0)+		; MOVE STATION NAME AND PRIORITY TO SCB	SOB	R3,10$			;	CMP	(R1)+,(R1)+		; (R1+4) SKIP TYPE AND REPEAT COUNT ;; INSTALL TST; 	MOV	R1,-(SP)		; DON'T RUN WHEN INSTALLED	MOV	#^RTST,-(SP)		; FIRST HALF OF TASK NAME	CLR	-(SP)			; CLEAR WORD FOR LENGTH 	MOVB	(R1)+,(SP)		; LENGTH OF FILE NAME STRING	MOV	R1,-(SP)		; POINTER TO FILE NAME STRING	MOV	SP,R0			; R0 POINTS TO PARAMETER LIST	CALL	.INCMD			; FORMAT INSTALL COMMAND LINE	ADD	#10,SP			; (SP+10) RESTOR      E STACK	MOV	#^R...,.SPAWN+S.PWTN	; PUT INSTALL TASK NAME IN SPWN$ DPB	MOV	#^RINS,.SPAWN+S.PWTN+2	;	MOV	#.CMDLN,.SPAWN+S.PWCA	; POINTER TO INSTALL COMMAND IN DPB	MOV	R0,.SPAWN+S.PWCL	; LENGTH OF COMMAND IN DPB20$:	DIR$	#.SPAWN			; INSTALL TST	BCC	40$			; IF C-CLR INSTALL SPAWNED	CMP	#IE.ACT,$DSW		; IF ERROR, IS INSTALL STILL ACTIVE?	BEQ	30$			; IF EQ YES	CALL	.DIRER			; ELSE ERROR30$:	MRKT$S	#15.,#10.,#1		; WAIT A BIT	WTSE$S	#15.			;	BR	20$			; TRY AGAIN40$:	STSE$S	#1			; STOP UNTIL INSTALL TASK EXITS	CMP	#E      X$SUC,.ESB		; INSTALL SUCCESSFUL?	BEQ	50$			; IF EQ YES	MOV	#<S.V0*400!E.R14>,R1	; SET SEVERITY/ERROR CODE	MOV	#STAREC+1,-(SP)		; POINTER TO STATION NAME	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE	TST	(SP)+			; RESTORE STACK	POP	<R5,R4>			; RESTORE ALPHA TABLE POINTERS	CALL	DELTST			; DELETE TST SCB	BR	120$			; DONE ;; GET TCB INFORMATION FOR TST; 50$:	MOV	.TPID,-(SP)		; PUT RAD50 TASK NAME FOR TST ON STACK	MOV	#^RTST,-(SP)		;	MOV	SP,R3			; R3 POINTER TO TASK NAME	SUB	#12,      SP			; 5 WORDS FOR TCB INFORMATION	MOV	SP,R5			; R5 = POINTS TO 5 WORDS ON STACK	SWITCH$	90$			; SWITCH TO KERNEL MODE 	MOV	#$TSKHD-T.TCBL,R0	; FIND TCB IN INSTALLED TASK LIST60$:	MOV	R0,R4	MOV	T.TCBL(R4),R0		; GET NEXT ENTRY	TST	T.TCBL(R0)		; NULL TASK?	BEQ	70$			; IF EQ YES, TCB NOT FOUND	CMP	T.NAM(R0),(R3)		; FIRST HALF OF TASK NAME MATCH?	BNE	60$			; IF NE NO	CMP	T.NAM+2(R0),2(R3)	; SECOND HALF OF TASK NAME MATCH?	BNE	60$			; IF NE NO ;; TCB FOUND, STORE INFORMATION; 	MOVB	T.LBN(R0),(R5)+		; LOGICAL BLO      CK 	CLRB	(R5)+			; NUMBER	MOV	T.LBN+1(R0),(R5)+	; OF TST	MOV	T.MXSZ(R0),(R5)+	; SIZE OF TST LOAD IMAGE	MOV	T.LDV(R0),(R5)+		; UCB ADDRESS	MOV	T.ST3(R0),(R5)+		; THIRD TCB STATUS WORD ;; DELETE TCB; 	MOV	T.TCBL(R0),T.TCBL(R4)	; REMOVE TCB FROM LIST	MOV	#T.LGTH,R1		; R1 = LENGTH OF TCB; R0 = ADDRESS	CALL	$DEACB			; RETURN TCB TO POOL	BR	80$ 70$:	MOV	#-1,(R5)		; INDICATE TCB NOT FOUND80$:	RETURN				; RETURN TO USER MODE ;; INITIALIZE SCB; 90$:	TST	(R5)			; TCB FOR TST FOUND?	BGE	100$			; IF GE YES 	MOV	#<S.V0*      400!E.R15>,R1	; ELSE SET SEVERITY/ERROR CODE	MOV	#STAREC+1,-(SP)		; POINTER TO STATION NAME	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE	TST	(SP)+			; (SP+2) RESTORE STACK	POP	<R5,R4>			; RESTORE ALPHA TABLE POINTERS	CALL	DELTST			; DELETE TST SCB	BR	120$			; DONE 100$:	MOV	(SP)+,S.LBN(R2)		; LOGICAL BLOCK NUMBER	MOV	(SP)+,S.LBN+2(R2)	; OF TST IN SCB	MOV	(SP)+,S.MXSZ(R2)	; SIZE OF TST LOAD IMAGE IN SCB	MOV	(SP)+,S.LDV(R2)		; UCB ADDRESS IN SCB	MOV	(SP)+,S.ST3(R2)		; TCB STAT      US WORD IN SCB	CMP	(SP)+,(SP)+		; (SP+4) RESTORE STACK 110$:	POP	<R5,R4>			; RESTORE ALPHA TABLE POINTERS120$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL	INITIALIZE SCB FOR MAILBOX STATION ;+; MLBX -;;	THIS ROUTINE INITIALIZES A 64. BYTE SCB FOR A;	MAILBOX STATION. ;;	FOR EACH MAILBOX DEFINED THERE MUST BE A;	CORRESPONDING FILE;;	;		[1,10]SSSSSS.NNN;1;;		WHERE: SSSSSS IS THE STATION NAME;		       NNN    IS THE UNIQUE TP IDENTIFIER;;	IF THE FILE DOES NOT ALREADY EXIST (FROM A PREVIOUS;	INSTALL) IT IS CREATED AT THIS POI      NT. THE FILE IS;	RELATIVE WITH VARIABLE LENGTH RECORDS. THE MAXIMUM;	RECORD SIZE IS THE MAXIMUM MESSAGE SIZE SPECIFIED;	IN THE STATION DEFINITION. THE BLOCK SIZE IS THE ;	RECORD SIZE + 1 ROUNDED UP TO A 512. BYTE BOUNDARY;;	IT IS PUT IN THE MAXIMUM RECORD SIZE FIELD IN THE SCB.;	THE FILE IS CREATED WITH AN ALLOCATION QUANTITY EQUAL;	TO THE BLOCK SIZE. THE LAST 16. WORDS OF THE SCB FOR;	THE MAILBOX ARE WRITTEN TO THE FIRST RECORD IN THE FILE.;;; INPUT CONDITIONS:;;	R1 - BUFFER ADDRESS OF STATION DEFINITION R      ECORD;	R4 - POINTER TO NEXT ENTRY IN ALPHA TABLE;	R5 - POINTER TO NEXT ENTRY IN TERMINAL ALPHA TABLE;;	APR 0 MAPPED ONTO TP COMMON AREA;;; OUTPUT CONDITIONS:;;	R4 UPDATED BY GETSCB ROUTINE;	R5 PRESERVED;;	ALL OTHER REGISTERS VOLATILE;;	APR 3 REMAPPED;-	.PAGE	.ENABL	LSB MLBX: ;; INITIALIZE SCB; 	MOV	#1,R0			; LENGTH TO MAP	CALL	GETSCB			; MAP SCB - UPDATE ALPHA TABLE POINTER	PUSH	<R4,R5>			; SAVE ALPHA TABLE POINTERS 	INC	.MBSCB			; INCREMENT TOTAL # OF MAILBOXES	BIS	#LD.MM,.LOADM		; SET BIT TO LOAD MAILBOX       MANAGER	MOV	.MBMAN,S.TSK(R0)	; PUT MAILBOX MANAGER TASK NAME IN SCB	MOV	.MBMAN+2,S.TSK+2(R0)	;	MOVB	#SY.MBX,S.TYP(R0)	; STATION TYPE 	INC	R1			; POINT TO STATION NAME IN RECORD	MOV	R0,R5			; SAVE POINTER TO SCB	MOV	#6,R2			;10$:	MOVB	(R1)+,(R0)+		; PUT STATION NAME IN SCB	SOB	R2,10$			;	ADD	#5,R1			; POINT TO NEXT FIELD IN RECORD ;; DETERMINE BLOCK SIZE; 	MOV	(R1),R0			; MAX MESSAGE SIZE = MAX RECORD SIZE	MOV	R0,R4			; SAVE MAX RECORD SIZE	INC	R0			; RELATIVE FILE SO ADD 1	ADD	#511.,R0		; ROUND UP AND CONVE      RT TO 	ASH	#-9.,R0			; 512. BYTE BLOCKS	MOV	R0,R3			; SAVE BUCKET SIZE	ASH	#3,R0			; BUCKET SIZE IN 64. BYTE BLOCKS;***CP04	MOV	R0,S.MRCZ(R5)		; PUT IN SCB ;; FORMAT FILE NAME STRING; 	MOV	#FNMADR,-(SP)		; POINTER TO FILE NAME	MOV	(SP),R0			; 	MOV	#.U10,R1		; R1 POINTER TO UIC	MOV	#.U10LN,R2		; R2 = LENGTH20$:	MOVB	(R1)+,(R0)+		; MOVE UIC TO BUFFER	SOB	R2,20$			;	MOV	R5,R1			; POINTER TO SCB	MOV	#6,R2			; MOVE STATION NAME TO BUFFER30$:	CMPB	#40,(R1)		;   END OF STATION NAME?	BEQ	40$			;   IF EQ YES	MOVB	(R      1)+,(R0)+		;   ELSE MOVE NEXT BYTE	SOB	R2,30$			; 40$:	MOVB	#'.,(R0)+		; MOVE FILE EXTENSION TO BUFFER	MOV	.TPID,R1		; TP IDENTIFIER	CALL	$C5TA			;   CONVERT RAD50 TO ASCII	MOVB	#';,(R0)+		; MOVE VERSION NUMBER (= 1) TO BUFFER	MOVB	#'1,(R0)+		; 	SUB	(SP),R0			; LENGTH OF FILE NAME	MOV	R0,-(SP)		;	MOV	SP,R0			; R0 POINTS TO PARAMETERS ;; DETERMINE IF FILE ALREADY EXISTS FOR STATION; 	OPNBUF	#3,(R0),2(R0),#FB$GET	; FORMAT SEND BUFFER TO OPEN FILE	CLR	R1			; RETURN IF ERROR	CALL	.RMSIO			; OPEN FILE	BCC	70$			      ; IF C-CLR FILE EXISTS ALREADY	CMP	.RECBF+34,#ER$FNF	; ERROR = FILE DOESN'T EXIST?	BEQ	50$			; IF EQ YES	CALL	.RMSER			; ELSE ERROR ;; CREATE FILE FOR STATION; 50$:	CREBUF	#3,(R0),2(R0),R3,#FB$PUT,#FB$VAR,R4,#FB$REL,,R3					; FORMAT SEND BUFFER TO CREATE FILE	CALL	.RMSIO			; CREATE FILE	MOV	.RECBF+6,-(SP)		; SAVE IFI FOR FILE 	CONBUF	,,,#RB$SEQ		; FORMAT SEND BUFFER TO CONNECT	CALL	.RMSIO			; CONNECT STREAM 	MOV	#MBXBUF,R4		; POINTER TO BUFFER		;***CP08	ADD	#32.,R5			; R3 POINTS TO LAST 16. WORDS OF SCB	MOV      	#32.,R3			; MOVE 32. BYTES TO BUFFER60$:	MOVB	(R5)+,(R4)+		;	SOB	R3,60$			; 	PUTBUF	,#MBXBUF,#32.		; FORMAT SEND BUFFER FOR PUT	;***CP08	CALL	.RMSIO			; WRITE LAST 16. WORDS OF SCB					; TO MAILBOX FILE 	MOV	(SP)+,.SENBF+2		; PUT IFI IN SEND BUFFER FOR CLOSE 70$:	MOV	#CLS,.SENBF		; CODE TO CLOSE FILE	CALL	.RMSIO			; CLOSE FILE		CMP	(SP)+,(SP)+		; (SP+4) RESTORE STACK 	POP	<R5,R4>			; RESTORE ALPHA TABLE POINTERS	RETURN	.DSABL	LSB	.PAGE	.SBTTL	INITIALIZE SCB FOR MASTER LINK STATION ;+; MLINK -;;	THIS ROUTIN      E INITIALIZES A 64. BYTE SCB FOR A MASTER LINK;	STATION.;;; INPUT CONDITIONS:;;	R1 - BUFFER ADDRESS OF STATION DEFINITION RECORD;	R4 - POINTER TO NEXT ENTRY IN ALPHA TABLE;	R5 - POINTER TO NEXT ENTRY IN TERMINAL ALPHA TABLE;;	APR 0 MAPPED ONTO TP COMMON AREA;;; OUTPUT CONDITIONS:;;	R4 UPDATED BY GETSCB ROUTINE;	R5 PRESERVED;;	ALL OTHER REGISTERS VOLATILE;;	APR 3 REMAPPED;-  	.ENABL LSB MLINK:	MOV	#1,R0			; LENGTH TO MAP	CALL	GETSCB			; MAP SCB - UPDATE ALPHA TABLE POINTER 	BIS	#LD.CM,.LOADM		; SET BIT TO LO      AD LIM	MOV	.LIMAN,S.TSK(R0)	; PUT LIM TASK NAME IN SCB	MOV	.LIMAN+2,S.TSK+2(R0)	; 	MOVB	#SY.LMA,S.TYP(R0)	; STATION TYPE 	INC	R1			; POINT TO STATION NAME IN RECORD	MOV	R0,R2			; POINTER TO SCB	MOV	#6,R3			;10$:	MOVB	(R1)+,(R2)+		; PUT STATION NAME IN SCB	SOB	R3,10$			;	ADD	#5,R1			; POINT TO NEXT FIELD IN RECORD	MOVB	(R1)+,S.FLGL(R0)	; PUT FLAGS IN SCB	MOVB	(R1)+,S.NSL(R0)		; PUT # OF SUBLINKS IN SCB	ADD	#10,R1			; POINT TO NEXT FIELD IN RECORD	BITB	#SL.IBM,S.FLGL(R0)	; IBM STATION?	BEQ	30$			; IF EQ NO ;;       IBM MASTER STATION; 	ADD	#S.IBMM,R0		; R0 POINTS TO FIELD IN SCB	MOV	#4,R2			; 20$:	MOV	(R1)+,(R0)+		; MOVE IBM PSEUDO DEVICE MASK TO SCB	SOB	R2,20$			;	BR	50$			; ;; TPS MASTER STATION; 30$:	ADD	#S.RNNM,R0		; R0 POINTS TO FIELD IN SCB	MOV	#6,R2			; 40$:	MOV	(R1)+,(R0)+		; MOVE REMOTE NODE NAME AND TP NAME TO SCB	SOB	R2,40$			; 50$:	RETURN	.DSABL LSB	.PAGE	.SBTTL	INITIALIZE SCB FOR SLAVE LINK STATION ;+; SLINK -;;	THIS ROUTINE INITIALIZES A 64. BYTE SCB FOR A SLAVE;	LINK STATION.;;; INPUT CONDITIONS:;;	R1       - BUFFER ADDRESS OF STATION DEFINITION RECORD;	R4 - POINTER TO NEXT ENTRY IN ALPHA TABLE ;	R5 - POINTER TO NEXT ENTRY IN TERMINAL ALPHA TABLE;;	APR 0 MAPPED ONTO TP COMMON AREA;;; OUTPUT CONDITIONS:;;	R4 UPDATED BY GETSCB ROUTINE;	R5 PRESERVED;;	ALL OTHER REGISTERS VOLATILE;;	APR 3 REMAPPED;-  	.ENABL	LSB SLINK:	MOV	#1,R0			; LENGTH TO MAP	CALL	GETSCB			; MAP SCB - UPDATE ALPHA TABLE POINTER 	BIS	#LD.CM,.LOADM		; SET BIT TO LOAD LIM	MOV	.LIMAN,S.TSK(R0)	; PUT LIM TASK NAME IN SCB	MOV	.LIMAN+2,S.TSK+2(R0)	;	      MOVB	#SY.LSL,S.TYP(R0)	; STATION TYPE 	INC	R1			; POINT TO STATION NAME IN RECORD	MOV	#6,R2			;10$:	MOVB	(R1)+,(R0)+		; PUT STATION NAME IN SCB	SOB	R2,10$			; 	RETURN	.DSABL LSB	.PAGE	.SBTTL	INITIALIZE SCB FOR BATCH STATION ;+; SUBAT -; SLBAT -;;	THIS ROUTINE INITIALIZES A 64. BYTE SCB FOR A BATCH;	STATION. SUBMIT BATCH AND SLAVE BATCH STATIONS REQUIRE;	THE SAME INITIALIZATION.;;; INPUT CONDITIONS:;;	R1 - BUFFER ADDRESS OF STATION DEFINITION RECORD;	R4 - POINTER TO NEXT ENTRY IN ALPHA TABLE;	R5 - POINTER TO       NEXT ENTRY IN TERMINAL ALPHA TABLE;;	APR 0 MAPPED ONTO TP COMMON AREA;;; OUTPUT CONDITIONS:;;	R4 UPDATED BY GETSCB ROUTINE;	R5 PRESERVED;;	ALL OTHER REGISTERS VOLATILE;;	APR 3 REMAPPED;-  	.ENABL	LSB SUBAT:SLBAT:	MOV	#1,R0			; LENGTH TO MAP	CALL	GETSCB			; MAP SCB - UPDATE ALPHA TABLE POINTERS 	BIS	#LD.BM,.LOADM		; SET BIT TO LOAD BATCH MANAGER	MOV	.BAMAN,S.TSK(R0)	; PUT BATCH MANAGER TASK NAME IN SCB	MOV	.BAMAN+2,S.TSK+2(R0)	;	MOV	R0,R3			; POINTER TO SCB	INC	R1			; POINT TO STATION NAME IN RECORD	MOV	#6,   (  R2			;10$:	MOVB	(R1)+,(R3)+		; PUT STATION NAME IN SCB	SOB	R2,10$			; 	INC	R1			; POINT TO STATION TYPE IN RECORD	CMP	#SBSU,(R1)		; SUBMIT BATCH STATION?	BEQ	20$			; IF EQ YES 	MOVB	#SY.BSL,S.TYP(R0)	; STATION TYPE	BR	30$			; 20$:	MOVB	#SY.BSU,S.TYP(R0)	; STATION TYPE 30$:	RETURN	.DSABL	LSB	.END(         ƒ:%kQÁ› 8$        	.TITLE	INSCOM - LOAD COMMON AREA	.IDENT	/V01A/ ;;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	.TPCOM - LOAD TP SPECIFIC COMMON AREA;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;;; EDITS:;;	1. CP01 8/2/78;	SAVE THE 'HI-PERFORMANCE RMS' SWITCH IN THE .SHTCT BYTE FOR LAT      ER;	USE IN A BRIEF INSTALL.;;	2. CP02 8/2/78;	SET .SYFLG(SY.RDO) CORRECTLY. WAS BEING SET ONLY WHEN TRACE AND;	NO WRITE-PROTECT.;;	CP03: 9/5/78;	FIX CP01. WORKED ONLY FOR TRACED TPs.;;	CP04: 9/7/78;	USE BYTE INSTRUCTIONS ON .NMGRS WORD;;	CP05: 9/10/78;	UNDO CP01 (CP03). THIS IS NOW DONE IN WRTDAT. EVIDENTLY, TIM OR EXC MGR;	USES WORD INSTRUCTION ON LOW ORDER .SHTCT BYTE AND OVERWRITES COMMON.;;	CP06: 3/7/79;	IF IN DEBUG MODE, .MXTST := 2.;	.PAGE;+; .TPCOM - ;;	THIS MODULE CREATES THE REGION FOR THE TP-SPECI      FIC COMMON;	AREA (COMNNN, WHERE NNN IS THE UNIQUE TP IDENTIFIER),;	LOADS THE COMMON AREA TASK IMAGE, AND DOES SOME;	INITIALIZATION.;; *** THE DSW AND IMPURE POINTERS MUST BE PRESERVED WHEN; *** APR 0 IS REMAPPED.;; OUTPUT CONDITIONS:;;	APR 0 MAPPED ONTO TP COMMON AREA;-    	.MCALL	OPEN$R,CLOSE$,QIOW$S,DIR$,LBLDF$ 	TPFDEF				; DEFINE TP RECORD OFFSETS	LBLDF$				; DEFINE OFFSETS FOR TASK HEADER DEBTST =	2			; MAXIMUM # CONCURRENTLY ACTIVE					; TSTs IN A DEBUG TST		;***CP06 .TPCOM:: ;; SAVE DSW AND IMPURE POI      NTERS ACROSS MAP; 	MOV	#$DSW,R1		; ADDRESS OF DSW	MOV	#5,R2		10$:	MOV	(R1)+,-(SP)		; SAVE DSW AND IMPURE POINTERS	SOB	R2,10$	 ;; OPEN COMMON AREA TASK IMAGE FILE; GET LABEL BLOCK; 	MOV	#.COMLN,-(SP)		; LENGTH OF FILE EXTENSION	MOV	#.COMFL,-(SP)		; POINTER TO FILE EXTENSION	MOV	SP,R0			; POINTER TO PARAMETERS	CALL	.FLNAM			; FORMAT FILE NAME STRING 	MOV	#.DS300,R1		; R1 POINTS TO DSD	MOV	(SP)+,10(R1)		; LENGTH OF FILE NAME STRING IN DSD	MOV	(SP)+,12(R1)		; POINTER TO FILE NAME IN DSD	MOV	#.FDB1,R0		; POINTER       TO FDB	OPEN$R	R0,#1,R1,,,,FCSER	; OPEN FILE 	MOV	#BUFADR,R2		; R2 = BUFFER ADDRESS	MOV	#512.,R3		; R3 = LENGTH TO READ	MOV	#1,R4			; R4 = VIRTUAL BLOCK NUMBER TO READ	CALL	READ			; GET LABEL BLOCK ; ; CREATE REGION FOR COMMON AREA; 	MOV	L$BLDZ(R2),.RDB+R.GSIZ	; PUT SIZE OF REGION IN RDB	MOV	L$BLDZ(R2),.TPREC+TPCOMZ ; PUT IN TP RECORD BUFFER	MOV	#<RS.ATT!RS.WRT!RS.NDL>,.RDB+R.GSTS ; ATTACH WITH WRITE ACCESS					; DON'T DELETE ON LAST DETACH	MOV	.COMRG,.RDB+R.GNAM	; REGION NAME	MOV	.TPID,.RDB+R.GNAM+2	;	DIR$      	#.CRREG,.DIRER		; CREATE REGION AND ATTACH ;; MAP ONTO COMMON AREA REGION; 	MOVB	#COMAPR,.WDB+W.NAPR	; APR FOR WINDOW	MOV	#COMWSZ,.WDB+W.NSIZ	; SIZE OF WINDOW	MOV	.RDB+R.GID,.WDB+W.NRID	; REGION ID 	CLR	.WDB+W.NOFF		; OFFSET = 0	CLR	.WDB+W.NLEN		; DEFAULT LENGTH TO MAP	MOV	#<WS.WRT!WS.MAP>,.WDB+W.NSTS ; MAP WITH WRITE ACCESS	DIR$	#.CRWIN,.DIRER		; CREATE WINDOW AND MAP REGION ;; LOAD COMMON AREA FROM DISK; 	MOV	L$BHRB(R2),R4		; R4 = RELATIVE BLOCK NUMBER	INC	R4			; R4 = VIRTUAL BLOCK NUMBER	MOV	L$BLDZ(R2),      R3		; R3 = COMMON AREA SIZE IN 64. BYTE BLOCKS	ASH	#6,R3			; SIZE IN BYTES	MOV	.WDB+W.NBAS,R2		; R2 = BASE ADDRESS FOR COMMON	CALL	READ			; LOAD COMMON AREA ;; RESTORE DSW AND IMPURE POINTERS; CLOSE FILE; 	MOV	#<$DSW+12>,R1		; R1 POINTS PAST DSW AND IMPURE POINTERS	MOV	#5,R2 40$:	MOV	(SP)+,-(R1)		; RESTORE DSW AND IMPURE POINTERS	SOB	R2,40$			; 	CLOSE$	R0			; CLOSE COMMON AREA TASK IMAGE FILE					; AFTER DSW AND IMPURE POINTERS RESTORED ;; INITIALIZE COMMON AREA; 	MOV	.RDB+R.GID,.GREGP+G.RGID ; PUT REGION I      D IN GREG$ DPB	DIR$	#.GREGP,.DIRER		; GET REGION PARAMETERS	MOV	.WRKBF+G.RGRB,.ASR0	; PUT KT BASE ADDRESS (APR 0) OF					; REGION IN COMMON AREA	CMP	.WDB+W.NLEN,#128.	; COMMON AREA > 4K WORDS?	BLE	50$			; IF LE NO	MOV	.WRKBF+G.RGRB,.ASR1	; IF YES, PUT KT VALUE OF APR 1	ADD	#128.,.ASR1		; IN COMMON AREA 50$:	MOV	#.APNAM,R0		; POINTER TO TP NAME IN COMMON	MOV	#.TPNAM,R1		; NAME OF TP BEING INSTALLED	MOV	#6,R260$:	MOVB	(R1)+,(R0)+		; MOVE TP NAME TO COMMON AREA 	SOB	R2,60$			;;	MOVB	.NMGRS,R0		; NUMBER OF MANA      GERS		;***CP04	MOV	#.MGRLT+2,R1		; WORD 2 OF FIRST MANAGER TASK NAME70$:	MOV	.TPID,(R1)+		; PUT UNIQUE ID IN EACH MANAGER	CMP	(R1)+,(R1)+		; (R1+4) POINT TO NEXT TASK NAME	SOB	R0,70$			; 	TSTB	.INSOP+1		; INSTALL IN DEBUG MODE?	BEQ	90$			; IF EQ NO	BIS	#SY.BUF,.SYFLG		; ELSE SET BIT IN COMMON	TSTB	.INSOP+2		; DATA BASE READ ONLY?	BNE	80$			; IF EQ NO			;***CP02	BIS	#SY.RDO,.SYFLG		; ELSE SET BIT IN COMMON80$:	TSTB	.INSOP+3		; TRACE APPLICATION?	BEQ	90$			; IF EQ NO	BIS	#SY.TRC,.SYFLG		; ELSE SET BIT IN COMM      ON	BIS	#LD.TM,.LOADM		; SET BIT IN LOAD MASK FOR TRACE 90$:;									;**CP06+; if TP IN DEBUG MODE; then MAXIMUM # OF CONCURRENTLY ACTIVE TSTs := DEBUG MAX # OF TSTs;	CMP	<.RDB+R.GPAR>,#^RTP1	; if TP NOT BEING INSTALLED IN TP1PAR	BNE	100$			; then GOTO .MXTST := DEBUG MAXIMUM	BIT	#SY.BUF,.SYFLG		; if TP NOT IN DEBUG MODE	BEQ	110$			; then CONTINUE	CMP	.MXTST,#DEBTST		; if MAX # CONCURRENT TSTs < DEBUG #	BLOS	110$			; then CONTINUE100$:	MOV	#DEBTST,.MXTST		; MAX # TSTs := DEBUG MAX # TSTs110$:									;**CP0      6-							;***CP01;***CP03;*CP05-1	RETURN  ;; READ ROUTINE;; INPUT CONDITIONS:;;	R1 = ADDRESS OF DSD FOR FILE;	R2 = BASE ADDRESS OF BUFFER;	R3 = NUMBER OF BYTES TO READ;	R4 = BLOCK NUMBER TO START READ; READ:	QIOW$S	#IO.RVB,#1,#5,,#.IOSTB,,<R2,R3,,#0,R4>	CMPB	#IS.SUC,.IOSTB		; READ DONE?	BEQ	10$			; IF EQ YES	MOVB	.IOSTB,F.ERR(R0)	; PUT ERROR CODE IN FDB FOR FILE	JMP	FCSER			; ELSE ERROR10$:	RETURN  ;; I/O ERROR ROUTINE;; INPUT CONDITIONS:;;	R0 = ADDRESS OF FDB ;	R1 = ADDRESS OF DSD ; FCSER:	MOV	R1,R2			; PO   à   INTER TO DSD	ADD	#4,R2			; POINTER TO UIC LENGTH IN DSD	MOV	F.ERR(R0),-(R2)		; ADD FCS ERROR CODE TO ARGUMENT LIST	BIS	#177400,(R2)		; SIGN EXTEND	MOV	#E.R30,R0		; FIRST I/O ERROR CODE	JMP	.IOERR			; ERROR ROUTINE	.END	.END à          ðy""kQÁ› 8$        	.TITLE	STPERR - TPSTOP ERROR MESSAGE ROUTINE	.IDENT	/1.1C02/ ;;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	TP STOP - ERROR MESSAGE ROUTINE;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;; EDITS:;;	1. CP01	1/29/79;	ADD ERROR MESSAGE FOR FLUSHING LOGGING BUFFER.;	CP02, 6      /4/79: ADD 'WAITING FOR FORMS PRINTING'; ;; EQUATED SYMBOLS; 	S.V0 == 0			; SEVERITY CODE = 0 (DIAGNOSTIC)	S.V1 == 1			; SEVERITY CODE = 1 (FATAL)LF	=	12			; ASCII LINE FEEDCR	=	15			; ASCII CARRIAGE RETURN	.PAGE;; LOCAL MACROS;; ERROR MESSAGE DEFINITION;; ERM	NUM,TXT;; WHERE:;;	NUM = DECIMAL ERROR NUMBER;	TXT = ERROR MESSAGE FORMAT STATEMENT; 	.MACRO	ERM	NUM,TXTE.RMAX == NUM'.	.PSECT	$$ETXT,D,GBLPTR = .	.ASCIZ	"TXT"	.PSECT	$$EPTR,D,GBLE.R'NUM == NUM'..=.MSG+<2*NUM'.>	.WORD	PTR	.PSECT	.ENDM  ;; LOCAL DATA;;       ERROR MESSAGE PREFIX STRINGS; PREFIX:DIAG0:	.ASCII	/% /			; DIAGNOSTICFTL1:	.ASCII	/? /			; FATAL ERROR	.EVEN ;; ERROR ROUTINES; ERRTN:	.WORD	DIAG			; DIAGNOSTIC	.WORD	FATAL			; FATAL ERROR ;; OUTPUT BUFFER; 	.EVEN				; START OUTBUF ON EVEN ADDRESSOUTBUF:	.BLKB	80.			; 80. CHARACTER ERROR MESSAGE BUFFER	.EVEN ;; START OF TEXT POINTERS; 	.PSECT	$$EPTR,D,GBL .MSG:: 	.PSECT ;; ERROR MESSAGES; 	.ENABL	LC 	ERM	0,^\Illegal severity/error code.\	ERM	1,^\Directive error; DSW = %1D. at location %P.\	ERM	2,^\I/O err      or; error code = %1D.; file = [1,1]TPDEF.TPF.\	ERM	3,^\Transaction processor %6A is not defined.\	ERM	4,^\Transaction processor %6A is not installed.\	ERM	5,^\Transaction processor %6A is not active.\;; THE FOLLOWING I/O ERRORS MUST BE GROUPED SEQUENTIALLY;	ERM	6,^\File [1,1]TPDEF.TPF does not exist.\	ERM	7,^\File [1,1]TPDEF.TPF is locked.\	ERM	8,^\File [1,1]TPDEF.TPF is accessed for write.\	ERM	9,^\File [1,1]TPDEF.TPF was not closed properly.\	ERM	10,^\Privilege violation accessing file [1,1]TPDEF.TPF.\;;       THE FOLLOWING DIRECTIVE ERRORS MUST BE GROUPED SEQUENTIALLY;	ERM	11,^\TP or system common area does not exist.\	ERM	12,^\%1R Manager is not installed.\	ERM	13,^\%1R Manager is not active.\;; ERROR MESSAGES;	ERM	14,^\No system common entry found for transaction processor %6A.\	ERM	15,^\Broadcast failure; get buffer error = %D.\	ERM	16,^\Broadcast failure; no buffer space.\	ERM	17,^\Broadcast failure on attach to TPMLIB; $DSW = %D.\	ERM	18,^\Broadcast failure on map onto TPMLIB; $DSW = %D.\	ERM	19,^\Failed to       detach from TPMLIB; $DSW = %D.\	ERM	20,^\Broadcast failure; send message error = %D.\	ERM	21,^\Stop already in progress on transaction processor %6A\	ERM	22,^\Emergency removal of transaction processor %6A was performed.\	ERM	23,^\Emergency removal of transaction processor %6A failed.\	ERM	24,^\System common checksum error.\	ERM	25,^\No transaction processors are Started.\	ERM	26,^\Failed to remove REM%R task.\	ERM	27,^\Failed to flush logging buffer.\									;***CP01	ERM	28,^\Waiting for forms printing.\      									;***CP02	.PAGE;+; .ERMSG -;;	THIS ROUTINE IS CALLED TO OUTPUT ERROR MESSAGES.;	THE PREFIX OUTPUT WITH THE MESSAGE IS DETERMINED ;	BY THE SEVERITY CODE. THE ERROR NUMBER SPECIFIES;	AN ERROR TEXT STRING WHICH IS PASSED TO $EDMSG;	TO BE EDITTED FOR THE OUTPUT STRING. SEVERITY 1;	ERRORS CAUSE START TO EXIT.;;; INPUT CONDITIONS:;;	R1 = SEVERITY/ERROR;	R2 = POINTER TO ARGUMENT BLOCK;;; OUTPUT CONDITIONS:;;	SEVERITY 1 ERRORS CAUSE START TO EXIT;-  	.MCALL	PUSH,POP,CLOSE$,QIOW$S,EXST$S .ERMSG::	PUSH	<R0,R3      ,R4,R5>		; SAVE REGISTERS	MOVB	R1,R3			; SAVE ERROR NUMBER	CMP	R3,#E.RMAX		; ERROR CODE VALID?	BHI	10$			; IF HI NO	CLRB	R1			; CONVERT SEVERITY TO WORD OFFSET	SWAB	R1			;	CMP	R1,#S.V1		; SEVERITY VALID?	BHI	10$			; IF HI NO	ASL	R1			;	MOV	R1,R4			; SAVE OFFSET	MOV	PREFIX(R1),OUTBUF	; ADD PREFIX TEXT TO OUTBUF	MOV	#<OUTBUF+2>,R0		; R0 -> OUTPUT BUFFER PAST PREFIX TEXT	ASL	R3			; 	MOV	.MSG(R3),R1		; R1 ADDRESS OF ERROR MESSAGE TEXT	CALL	$EDMSG			;	MOVB	#LF,(R0)+		; APPEND LF TO ERROR MESSAGE	MOV	#OUTBUF,R1		   ¨  ; CALCULATE STRING LENGTH	SUB	R1,R0			; STRING LENGTH	CALL	@ERRTN(R4)		; CALL ROUTINE TO OUTPUT MESSAGE	POP	<R5,R4,R3,R0>		; RESTORE REGISTERS	RETURN ;; ILLEGAL SEVERITY/ERROR CODE; 10$:	MOV	#<S.V1*400!E.R0>,R1	; SET SEVERITY/ERROR CODE	BR	.ERMSG			; OUTPUT ERROR MESSAGE  DIAG:	QIOW$S	#IO.WVB,#5,#5,,,,<R1,R0,#40>	RETURN  FATAL:	CALL	DIAG	CLOSE$	#.FDB			; CLOSE TP FILE	EXST$S	#EX$SEV			; EXIT INDICATING SEVERE ERROR 	.END¨         ïy dÁ› 8$        	.TITLE	TPSTOP - STOP TP	.IDENT	/1.1C52/ ;;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	TPSTOP - STOP TRANSACTION PROCESSOR;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;;; EDITS:;;	1. CV  3-NOV-77;	UNCOMMENT CODE TO ACCEPT DCL COMMANDS;;	2. CP16  8-DEC-77;	INSERT CODE       TO UPDATE SYSTEM COMMON;;	3. CP17  9-DEC-77;	INSERT CODE FOR /MINUTES:n AND BROADCAST FUNCTIONALITY.;;	4. CP18  16-DEC-77;	PUT CONTEXT BLOCK IN SEND BUFFER TO MANAGERS.;;	5. CP22  2-JAN-78;	PROVIDE /ALL CAPABILITY.;;	6. CP38  4/19/78;	IF A MANAGER HAS ABORTED CONTINUE STOP PROCESSING THEN PERFORM;	EMERGENCY REMOVAL. IF TP IS NOT CRASH RECOVERABLE, DO NOT ATTEMPT;	TO REMOVE (A NON-EXISTANT) SYSCOM ENTRY. DO NOT PRINT COMPLETION;	MESSAGE.;;	7. CP46 5/3/78;	DISABLE CHECKPOINTING WHILE AT THREAD LEVEL: BEFORE S      WAP, THE EXEC;	WRITES TASK HEADER FROM POOL TO TASK HEADER IN TASK PARTITION. THIS;	CLOBBERS $TTBAD AT 120046.;;	8. C47 7/12/78;	SEND ABORT CODE IF ABO MINUTES = 0.;;	9. C49 9/8/78;	FIX CMDERR AND CMDER2 ERROR PROCESSING. NUMBER OF MINUTES TO WAIT;	AFTER BF.ABO (FOR .NACTT=0) OR AFTER BF.SHT (FOR .SHTCT=0) BEFORE;	EMERGENCY REMOVE IS EMERMN=2. RESET INTERNAL TIME WHEN A TP GOES FROM;	TXNCMP STATE TO MGRDON STATE. BROADCAST EVEN IF INITIATE;	TIME IS ZERO. MAXIMUM APPLICATION COMMON MAPPING IS 8KW.;	PREVIOUS       MAPPING WAS CLOBBERING SYSCOM MAPPING AFTER A BRIEF INSTALL.;	BRIEF WILL CREATE ONE LARGE COMMON PARTITION FOR SEVERAL OF THE;	PARTITIONS CREATED BY INSTALL.;;	10. CP50 1/24/79;	ADD SEND MESSAGE TO JOURNAL DRIVER TO FLUSH LOGGING BUFFERS.;;	CP51 5/8/79: WAIT FOR LA180 PRINTING TO COMPLETE BEFORE SENDING COMPLETE;	CODE (BF.SHT) TO MANAGERS. ALSO EDIT TXNCMP TO HANDLE 2 TPs, AND REMOVE;	'MGR NOT INSTALLED' CODE FROM SEND ROUTINE (MGR NOW INSTALLED AFTER;	ABORT.);	CP52: 6/19/79: CRASH ON EMERGENCY REMOVAL;+; T      HIS MODULE CONTAINS CODE TO STOP AN ACTIVE TRANSACTION ; PROCESSOR. EACH MANAGER IS NOTIFIED TO BEGIN THE STOP; PROCEDURE. SYSTEM COMMON IS UPDATED.;-	.PAGE;; APR USAGE;;	APR0/1:	APPLICATION COMMON;	APR2:	TPMLIB;	APR3:	SYSCOM;	APR4:	TERMINAL SCB (DURING WAIT FOR LA180 PRINTING);	APR5/6:	TASK IMAGE;	APR7:	I/O PAGE;;; MACRO LIBRARY CALLS; 	.MCALL	DIR$,RCVD$,MRKT$,WTSE$,MRKT$C,RSUM$S,SDAT$S		;*****CV	.MCALL	QIOW$C,EXST$S	.MCALL	RDBBK$,WDBBK$,ATRG$C,CRAW$C	.MCALL	FDOFF$,FSRSZ$,FDBDF$,FDRC$A	.MCALL	OPEN$M,GET$,P      UT$,CLOSE$	.MCALL	CRAW$,ATRG$,PUSH,POP,STSE$,INH$S,ENB$S,ASRDF$,DTRG$	;***CP17	.MCALL	SPWN$,SDRC$,FDOP$A,DTRG$S				;***CP22	.MCALL	DSCP$S,ENCP$S						;***CP46	.MCALL	RCVD$,ATRG$,CRAW$,RDBBK$,WDBBK$,GENTTB,GTSK$,SRDA$S,SDAT$,WSIG$S	.MCALL	TTRMN$,SETF$S,CLEF$S,TSTRT$	.MCALL	SRDA$,STLO$,ASTX$S					;***CP50 	.ENABL	LC			; ENABLE LOWER CASE		;***CP17	.NLIST	BEX			; 1 LINE SOURCE / 1 LINE LISTING;***CP22	TPFDEF				; DEFINE TP RECORD OFFSETS	ASRDF$				; DEFINE ASR OFFSETS		;***CP17 	FDOFF$	DEF$L			; DEFINE FDB OFF      SETS	FSRSZ$	1,512.			; 1 FILE OPEN FOR RECORD I/O .FDB::	FDBDF$				; FDB	FDRC$A	FD.RAN,TPREC,TPRSZ	; RANDOM GET$ AND PUT$	FDOP$A	1,DSD			; LUN = 1, DSD = DSD MARKT:	MRKT$	1,5,1			; MARK TIME FOR 5 TICKS		;***CP22MARKS:	MRKT$	1,1,2			; MARK TIME FOR 1 SECOND	;***CP22STOPMK:	MRKT$	1,1,3			; MARK TIME FOR 1 MINUTE	;***CP17STOP1:	STSE$	1			; STOP FOR EVENT FLAG 1		;***CP17STLO12:	STLO$	0,3			; STOP FOR EF 1 OR 2		;***CP50RCDAT:	RCVD$	,RCVBUF			; RECEIVE DATA			;*****CVJSNDAT:	SDAT$	JNLDRV,SNDBUF		; SEND DATA TO       JOURNAL DRIVER	;***CP50SRDAST:	SRDA$	RCVAST			; SPECIFY RECEIVE DATA AST FOR	;***CP50					; 	MESSAGE FROM JNLDRV	;***CP50 APR4	=	100000			; OFFSET FOR APR 4		;***CP51SYSAPR	=	3			; MAP SYSCOM AT APR 3		;**CP16+SYSPAR	=	60000			; OFFSET FOR APR 3ATREG:	ATRG$	RDB2			; ATTACH TO SYSCOMCRWIN:	CRAW$	WDB2			; MAP ONTO SYSCOMRDB2:	RDBBK$	,SYSCOM,,<RS.WRT!RS.RED> ; ATTACH WITH R/W ACCESS TO SYSCOMWDB2:	WDBBK$	SYSAPR,,,0,0,<WS.MAP!WS.WRT!WS.64B> ; WINDOW FOR SYSCOM MAP;**CP16-									;**CP22-	.PAGE	.SBTTL	DATA ARE      A ;; LOCAL DATA;EMERMN	=	2			; NUMBER OF MINUTES TO WAIT FOR # ACTIVE					; TXNS TO GO TO ZERO AFTER BF.ABO WAS					; SENT OR # OF ACTIVE MANAGERS TO GO TO					; ZERO AFTER BF.SHT WAS SENT BEFORE					; PERFORMING AN EMERGENCY REMOVE	;***C49NMTRIES	=	10			; # ATTEMPTS TO GET MESSAGE	;***CP22					;  BUFFER BEFORE BRDCST ERRORFINISH	=	-1			; TP STATE = STOPPEDEMERGN	=	-2			; TP STATE = MARKED FOR EMERGENCY REMOVALEXSTAT:	.WORD	EX$SUC			; TPSTOP TASK EXIT STATUS. DEFAULT SUCCESSDONE:	.BLKW	1			; # TPs REMAINING       TO BE STOPPED									;***C47									;-1*CP51FNBBFR:	.BLKW	1			; STORAGE FOR 1ST WORD OF TPDEF FILE IDSTPALL:	.WORD	0			; =0 IF STOP/TP ALL, =-1 OTHERWISEPRTMSG:	.BYTE	0			; =0 IFF 'WAITING FOR OUTPUT ONLY					;  STATION PRINTING' MESSAGE NOT					;  YET PRINTED			;***CP51	.EVEN;*******************************************************************************;; INFOMATION VECTORS FOR TP(S) TO BE STOPPED;TPMAX	=	8.			; MAX # ACTIVE/INSTALLED TPs IN SYSTEMTPRECN:	.BLKW	TPMAX			; VECTOR OF TPDEF FILE RECORD #ST      PNAME:	.BLKW	<3*TPMAX>		; VECTOR OF TP NAMESTPUQID:	.BLKW	TPMAX			; TABLE OF UNIQUE TP IDs FOR ALL TP TO					; BE STOPPEDSTATE:	.BLKW	<TPMAX+1>		; STATE TABLE: JUMP PTR OR STATE VALUE					; FOR THE STATE OF EACH TP BEING STOPPED									;**CP38+					; EMERGENCY REMOVE VECTOR: FOR EACH TP,EREMV:	.REPT	TPMAX			; =EMERGN IF SHOULD REMOVE ELSE =0	.BLKW	0	.ENDR									;**CP38-;*******************************************************************************FAKECB:	.REPT	32.			; SPACE FOR FAKE SCB, FAKE CCB AND			      		;  SEND BUFFER AND ESB FOR KILL ROUTINE	.WORD	0	.ENDRDSD:	.WORD	0,0			; DSD FOR TP FILE	.WORD	UICLEN	.WORD	UIC	.WORD	TPFLEN	.WORD	TPFIL COMREG:	.RAD50	/COM/			; COMMON AREA REGION NAME 									;CV*-6RCVBUF:	.BLKW	2			; 15. WORD RECEIVE BUFFER;***CVSNDBUF:	.BLKW	13.			; 13. WORD SEND BUFFER					; SNDBUF + 12:14 USED FOR BRDCAST ERRORS TPREC:	.BLKB	TPRSZ			; TP RECORD BUFFER BUFDIF	=	<ALLNAM-SNDBUF>		; DISTANCE BETWEEN TP NAME BUFFERSALLNAM:	.ASCII	/ALL   /		; TP 'NAME' FOR STOP ALL TPs IN SYSTEMTIMSTA:	.A      SCII	/[[[[[[/		; NAME OF TIM STATION FOR BROADCASTMSGHDR:	.ASCII	/C/			; MESSAGE HEADER FOR PSEUDE-EXCHANGE MSG	.BYTE	1			; INDICATE STOP MESSAGE	.BYTE	0,0,0,0	.WORD	3			; ABOVE 3 LINES MUST BE CONTIGUOUS *****HDRSZ	=	.-MSGHDR		; HEADER SIZE	.BLKB	3			; BFR FOR BRDCST: ASCII # MIN TILL STOP					; ABOVE 5 LINES MUST BE CONTIGUOUS *****									;***CP51UIC:	.ASCII	/[1,1]/			; UIC FOR TP FILEUICLEN = .-UIC TPFIL:	.ASCII	/TPDEF.TPF/		; FILE NAME STRINGTPFLEN = .-TPFIL	.PAGE 	.SBTTL	EMERGENCY TP REMOVAL DATA STR      UCTURES									;*CP38-4;; SPAWN COMMAND LINES TO INSTALL AND REMOVE TPREMOVE TASK;REMCMD:	.ASCII	\INS [1,54]TPREMV.TSK/EST=NO/TASK=REM\			;***CP12REMTSK:	.BLKB	3REMCLN = .-REMCMDREMC2:	.ASCII	\REM REM\REMT2:	.BLKB	3			; BUFFER FOR TP'S UNIQUE IDREM2LN	=	.-REMC2	.EVEN;; SPAWN AND SEND DPBs;SENDCT:	SDRC$	REMXXX,FAKECB,1,,<FAKECB+26.>	; SEND DATA, REQUEST AND;**CP22+						; CONNECT  FOR KILL ROUTINESPAWN:	SPWN$	MCR...,,,,,1,,<FAKECB+26.>				; SPAWN FOR INSTALL AND REMOVE OF TPREMOVE TASK	.PAGE	.SBTTL REQUIRED       DATA STRUCTURES FOR TPMLIB ATTACHSNDDAT:	SDAT$	,THREAD+T.RB+4		; SEND AND RECEIVE DPBS FOR	;**CP17+RECDAT:	RCVD$	,THREAD+T.RB		;   INSTALLING STOP AS A MANAGERATTACH:	ATRG$	RDB			; ATTACH TO COMMONCREATE:	CRAW$	WDB			; MAP APR0 (+APR1) ONTO COMMONDETACH:	DTRG$	RDB			; DETACH FROM APPLICATION COMMON	;**CP22RDB:	RDBBK$	,,,<RS.WRT!RS.RED>	; REGION DESCRIPTOR BLOCK WDB:	WDBBK$	0,,,0,,<WS.64B!WS.WRT!WS.MAP>	; WINDOW DESCRIPTOR BLOCKTHREAD:	GENTTB				; GENERATE THREAD TABLECNTXLN	=	64.			; # WORDS IN CONTEXT BLO      CKCONTEX:	.BLKW	CNTXLN			; THREAD PROCESSING CONTEXT BLOCKGETASK:	GTSK$	THREAD+T.RB		; PUT TASK NAME ETC. IN THREAD TABLEINPARM:					; ..INSM PARAMETER TABLE	.WORD	RECDAT			; -> RECEIVE DATA DPB	.WORD	ATTACH			; -> ATTACH TO COMMON DPB	.WORD	CREATE			; -> MAP TO COMMON DPB	.WORD	SNDDAT			; -> SEND DATA DPB	.WORD	THREAD+T.RB		; -> START OF THREAD TABLE'S RECEIVE BFRLIBATT:	ATRG$	LIBREG			; ATTACH TO TPMLIBLIBMAP:	CRAW$	LIBWND			; MAP ONTO TPMLIBLBDTRG:	DTRG$	LIBREG			; DETACH FROM TPMLIBLIBREG:	RDBBK$	,TPMLI      B,,<RS.RED!RS.WRT> ; TPMLIB RDBLIBWND:	WDBBK$	2,,,0,,<WS.MAP!WS.RED!WS.WRT> ; TPMLIB WDB	.PAGE	.SBTTL	STOP TRANSACTION PROCESSOR	.ENABL	LSB STOP: ;; RECEIVE DATA;;	THE DATA RECEIVED HAS THE FOLLOWING FORMAT:;;	+-----------------------------------------------+ 0;	!	 NAME OF SENDING TASK IN RAD50		!;	!-----------------------------------------------! 4;	!		TP NAME IN ASCII		!;	!-----------------------------------------------! 12;	!	  MINUTES TILL STOP INITIATED		!;	!--------------------------------------------      ---! 14;	!	MINUTES TILL TRANSACTION ABORTS		!;	+-----------------------------------------------+; 	DIR$	#RCDAT			; RECEIVE DATA			;*****CV	BCC	20$			; IF C-CLR RECEIVE DONE		;*****CV	CMP	#IE.ITS,$DSW		; IF ERROR, WAS BUFFER QUEUED?	;*****CV	BEQ	10$			; IF EQ NO - TRY AGAIN		;*****CV	CALL	DIRERR			; ELSE ERROR			;*****CV10$:	DIR$	#MARKT,DIRERR		; STOP A BIT			;*****CV	CALL	STP1			;				;***CP17	BR	STOP			; TRY RECEIVE AGAIN		;*****CV ;; VERIFY TP EXISTS; 20$:	MOV	#RCVBUF+4,R0		; POINTER TO COMMAND DATA RECEIV      ED	MOV	#6,R1			; R1 = MAX LENGTH OF TP NAME30$:	TSTB	(R0)			; BLANK FILL TP NAME IF NOT 6 BYTES	BNE	40$			;	MOVB	#40,(R0)		;40$:	CMPB	(R0),BUFDIF(R0)		; if TP NAME <> "ALL   "	;**CP22+	BEQ	41$			; then INDICATE 'DO NOT STOP ALL TPs'	MOV	#-1,STPALL		;				;**CP22-41$:	INC	R0			;	SOB	R1,30$			; 	CLR	R5			; R5 IS BASE INDEX FOR TP INFO VECTORS	CALL	OPTPDF			; OPEN [1,1]TPDEF.TPF50$:	CALL	GETREC			; GET NEXT RECORD	BCC	60$			; if NOT EOF then CONTINUE	TST	STPALL			; if STOP ALL TPs	BEQ	87$			; then GOTO ANY ACTI      VE TPs FOUND ?	MOV	#<S.V1*400!E.R3>,R1	; ELSE SET SEVERITY/ERROR CODE	CALL	CMDERR			; CALL ERROR ROUTINE AND EXIT60$:	TST	STPALL			; if STOP ALL TPs	BEQ	85$			; then GOTO GET ALL ACTIVE TPs	MOV	#RCVBUF+4,R2		; POINTER TO NAME OF TP TO INSTALL	MOV	#6,R3			; LENGTH70$:	CMPB	(R1)+,(R2)+		; IS THIS THE RIGHT TP RECORD?	BNE	50$			; IF NE NO - TRY NEXT RECORD	SOB	R3,70$			; ;; VERIFY TP IS ACTIVE; 	BIT	#TPIN,TPREC+TPSTAT	; TP INSTALLED?	BNE	80$			; IF NE YES, CONTINUE	MOV	#<S.V1*400!E.R4>,R1	; ELSE SET SEVERITY/E      RROR CODE	CALL	CMDERR			; GOTO ERROR ROUTINE AND EXIT80$:	BIT	#TPST,TPREC+TPSTAT	; if TP IS STARTed		;**CP22+	BNE	81$			; then GOTO CONTINUE					; else FATAL ERROR: TP NOT STARTed	MOV	#<S.V1*400!E.R5>,R1	; SET SEVERITY/ERROR CODE	CALL	CMDERR			; GOTO COMMAND ERROR AND EXIT 81$:	BIT	#TPSIP,<TPREC+TPSTAT>	; if STOP NOT ALREADY IN PROGRESS	BEQ	82$			; then CONTINUE	MOV	#<S.V1*400!E.R21>,R1	; R1 := ERROR CODE	CALL	CMDERR			; else FATAL ERROR: STOP IN PROGRESS82$:	CALL	TBLINS			; INSERT TP INFO INTO STOP TABLES	      				; AND UPDATE TPDEF RECORD	;**CP22-	BR	90$			; GOTO BROADCAST		;***CP22;; FIND ALL TPS THAT ARE ACTIVE;85$:					; GET ALL ACTIVE TPs		;**CP22+	BIT	#TPST,<TPREC+TPSTAT>	; if NOT STARTED	BEQ	50$			; then GOTO TRY NEXT TP	BIT	#TPSIP,<TPREC+TPSTAT>	; if STOP IN PROGRESS ALREADY	BNE	50$			; then GOTO TRY NEXT TP	CALL	TBLINS			; else INSERT TP INFO INTO STOP TABLES					;	AND UPDATE TPDEF RECORD	BR	50$			; GOTO TRY NEXT TP;; IF STOPPING ALL TPs AND NO TPs WERE ACTIVE; THEN PRINT DIAGNOSTIC ERROR MESSAGE AND EXI      T;87$:	TST	R5			; if AT LEAST 1 ACTIVE TP FOUND	BNE	90$			; then CONTINUE	MOV	#<S.V0*400!E.R25>,R1	; R1 := ERROR CODE	CALL	.ERMSG			; PRINT 'NO TP WAS STARTED'	JMP	250$			; GOTO EXIT									;**CP22-90$:	CALL	CLOSE			; CLOSE [1,1]TPDEF.TPF FILE	ASR	R5			; R5 := # TPs TO BE STOPPED	MOV	R5,DONE			; DONE := # TPs TO BE STOPPED;*******************************************************************************;									;**CP17+; FOR EACH TRANSACTION PROCESSOR TO BE STOPPED:; BROADCAST TO ALL TP ENVIRONMENT TERMINAL      S A STOP MESSAGE THEN; WAIT FOR 'STOP TIME' MINUTES BEFORE INITIATING STOP. NOTE:;	MOV	<RCVBUF+12>,R1		; R1 = TIME TILL STOP INITIATED;;;;;;;	BEQ	96$			; then DO NOT BROADCAST STOP MESSAGE;C49;; MAP APR2 ONTO TPMLIB;	DIR$	#LIBATT			; ATTACH TO TPMLIB	BCC	92$			; if SUCCESSFULL then CONTINUE	MOV	#<S.V0*400!E.R17>,R1	; R1 := ERROR CODE	BR	93$			; GOTO PRINT ERROR MESSAGE92$:	MOV	<LIBREG+R.GID>,<LIBWND+W.NRID> ; WDB := REGION ID	MOV	<LIBREG+R.GSIZ>,<LIBWND+W.NSIZ>; WDB := REGION SIZE	DIR$	#LIBMAP			; MAP ONTO       TPMLIB	BCC	LABEL			; if SUCCESSFULL then CONTINUE;; ERROR: FAILED TO ATTACH OR MAP ONTO TPMLIB;	MOV	#<S.V0*400!E.R18>,R1	; R1 := ERROR CODE93$:	PUSH	$DSW			; (SP) := DSW ERROR CODE	MOV	SP,R2			; R2 -> ARGUMENT LIST	CALL	.ERMSG			; PRINT DIAGNOSTIC ERROR MESSAGE	MOV	<RCVBUF+12>,R1		; RESTORE # MINUTES TILL STOP	;****C49	BR	95$			;	AND BRANCH AROUND BROADCASTLABEL:	CLR	R5			; R5 := BASE INDEX OF STOP TABLES94$:	CALL	BRDCST			; BROADCAST STOP MESSAGE	TST	(R5)+			; R5 -> ENTRIES FOR NEXT TP IN STOP TBLS	TST	STA      TE(R5)		; if NEXT ENTRY IS NOT NULL	BNE	94$			; then BROADCAST TO NEXT TP ENVIRONMENT									;**CP22-95$:	MOV	R1,<STOPMK+M.KTMG>	; DPB := # MIN TO STOP BEFORE CONTINUING	DIR$	#STOPMK,DIRERR		; STOP FOR STOP TIME MINUTES	CALL	STP1			;				;**CP17-;*******************************************************************************;; TPSTOP PERFORMS THE FOLLOWING LOOP EVERY SECOND UNTIL THE STOP; PROCESS IS COMPLETE. THE OPERATIONS PERFORMED ON EACH TP; DEPEND ON THE STATE OF THAT TP IN THE STOP PROCESS. THE STATE      S ARE:;;	INITIT (STATE = 0): INITIATE THE STOP PROCESS;		- REMOVE TP'S SYSTEM COMMON ENTRY;		- INITIALIZE SHUTDOWN COUNT IN TP'S APPLICATION COMMON;		- SEND 'INITIATE STOP' CODE TO EACH LOADED MANAGER IN TP;;	TXNCMP (STATE = 2): WAIT TILL ALL TRANSACTIONS ARE COMPLETE;		- IF THE SPECIFIED ABORT TIME EXPIRES + TRANSACTIONS ARE;			STILL ACTIVE, THE 'ABORT TRANSACTIONS' CODE IS;			SENT TO EACH LOADED MANAGER IN THE TP;		- IF 5 MINUTES EXPIRE AFTER THE 'ABORT' CODE IS SENT AND;			TRANSACTIONS ARE STILL ACTIVE,       PREFORM EMERGENCY;			REMOVAL OF TP.;;	MGRDON (STATE = 4): WAIT TILL MANAGERS ARE DONE;		- IF MANAGERS NOT DONE WITHIN 5 MINUTES OF THE TIME;			THE ABORT CODE IS SENT, PERFORM EMERGENCY;			REMOVAL OF TP.;		- IF ALL OK, SEND DATA TO JOURNAL DRIVER TO FLUSH THE	;***CP50;			LOGGING BUFFER.					;***CP50;96$:					; INITIALIZATION FOR LOOP	CLR	R5			; R5 -> BASE OF STOP TABLES	MOV	<RCVBUF+14>,R0		; R0 = # MINUTES TILL ABORT ACTIVE TXNS	CLR	R1			; CLEAR SECONDS COUNT					; ATTACH AND MAP APR3 TO SYSCOM	DIR$	#ATREG,D      IRERR		; ATTACH TO SYSCOM	MOV	<RDB2+R.GID>,<WDB2+W.NRID> ; WDB <- REG ID	MOV	<RDB2+R.GSIZ>,<WDB2+W.NSIZ> ; WDB <- WINDOW SIZE IN 32 WD BLKS	DIR$	#CRWIN,DIRERR		; CREATE AND MAP WINDOW TO SYS COMMONLOOP:	CALL	COMATT			; ATTACH TO CURRENT TP'S APPLIC. COMMON	JMP	@STATE(R5)		; GOTO PROPER STATE FOR CURRENT TP;; INITIATE STOP; INITIT:	CALL	UPDSYS			; UPDATE SYSTEM COMMON		;***CP16	BIS	#SY.SHT,.SYFLG		; SET STOP BIT IN COMMON	MOV	.NMGRS,R3		; NUMBER OF MANAGERS	MOV	#1,R2			; INITIALIZE FOR LOAD MASK	CLRB	.SHTCT	      		; INITIALIZE # LOADED MGR COUNT100$:	BIT	R2,.LOADM		; MANAGER INSTALLED?	BEQ	110$			; IF EQ NO	INCB	.SHTCT			; ELSE INCREMENT MANAGER COUNT110$:	ASL	R2			; GET MASK FOR NEXT MANAGER	SOB	R3,100$			;	MOV	#BF.IST,SNDBUF+B.FUN	; SEND CODE TO INITIATE STOP	CALL	SEND			; TO EACH MANAGER									;-2*CP51	MOV	#TXNCMP,STATE(R5)	; NEXT STATE FOR THIS TP IS TXNCMP;CP39-	BR	NEXT			; GOTO PROCESS NEXT TP ;; TRANSACTION COMPLETE STATE:;; if THERE ARE NO ACTIVE TXNs;  then WAIT FOR LA180 PRINTING TO FINISH;	SEND BF.SHT       CODE TO MANAGERS: TELL MGRS TO SPND$;	TP'S STATE := 'MGRDON';  else if 'ABORT TIME' + 'EMERGENCY REMOVE TIME' HAS EXPIRED;	 then TP'S STATE := 'MGRDON';		MARK THIS TP FOR EVENTUAL EMERGENCY REMOVAL;	 else if 'ABORT TIME' HAS EXPIRED EXACTLY (DO THIS ONLY ONCE);		then SEND BF.SAB CODE TO MGRS: TELL MGRS TO ABORT ACTIVE TXNS; TXNCMP:					; **** TEMP: CHECK TASK LIST ***????????	TST	.NACTT			; ALL TRANSACTIONS COMPLETED?	BEQ	120$			; IF EQ YES;									;**CP51+; if EXACTLY 'ABORT' MINUTES HAS EXPIRED (AND THER      E ARE STILL ACTIVE TXNs); then SEND BF.SAB CODE TO MANAGERS; else if INTERNAL TIME HAS JUST CROSSED A NEW MINUTE (R1=0) AND HENCE MAYBE;			THE ABORT CODE WAS SENT TOO LONG AGO;	then GOTO CHECK IF ABORT CODE WAS SENT TOO LONG AGO;	TST	R1			; if INTERNAL TIME AT NEW MINUTE 					;		(# SECONDS = 0)	BGT	NEXT			; then NO 'TIME OUT' HAS OCCURRED:					;	GOTO PROCESS NEXT TP	TST	R0			; if STILL TIME BEFORE BF.SAB CODE SENT	BGT	NEXT			; then GOTO PROCESS NEXT TP	BLT	115$			; if ABORT CODE ALREADY SENT					; then GOTO       CHECK IF IT WAS SENT TOO					;	LONG AGO: TIME TO EMER. REMOVE	MOV	#BF.SAB,SNDBUF+B.FUN	; else SEND ABORT CODE	CALL	SEND			; SEND CODE TO EACH LOADED MANAGER	BR	NEXT			; if SEND OK then PROCESS NEXT TP;*CP38+ 115$:					; CHECK IF ABORT MSG SENT TOO LONG AGO	CMP	R0,#-EMERMN		; if ABORT MESSAGE SENT X MINUTES AGO;C49	BGT	NEXT			; then GOTO PROCESS NEXT TP	MOV	#EMERGN,EREMV(R5)	; else STATE := PERFORM ERMERGENCY REMOVAL OF TP120$:	MOV	#BF.SHT,SNDBUF+B.FUN	; ELSE SEND 'STOP COMPLETE' CODE125$:	CALL	LA180			; WA      IT FOR LA180 PRINTING TO FINISH	CALL	SEND			; TO EACH MANAGER127$:	MOV	#MGRDON,STATE(R5)	; TP'S NEXT STATE := WAIT TILL MGRS DONE;*CP38-	BR	NEXT			; GOTO PROCESS NEXT TP		;**CP51- ;; MANAGER DONE STATE:; WAIT FOR ALL OF TP'S MANAGERS TO STOP THEMSELVES; IF A MANAGER HAS NOT STOPPED ITSELF WITHIN 5 MINUTES OF TIME; 'STOP COMPLETE' CODE SENT, PERFORM EMERGENCY REMOVAL OF TP.; NOTE THAT EACH TIME A TP GOES FROM TXNCMP TO MGRDON STATE, STOP'S; INTERNAL TIME IS RESET. THE EFFECT IS THAT A TP THAT COMES TO MGRDON       STATE; WILL GET AN ANOTHER 'EMERMN' MINUTES TO GO TO THE DONE STATE BEFORE AN; EMERGENCY REMOVE IS SPECIFIED IF A SECOND TP GOES TO MGRDON STATE.;MGRDON:	TSTB	.SHTCT			; ALL MANAGERS DONE?	BNE	130$			; then GOTO CHECK IF WAIT TOO LONG	DEC	DONE			; INDICATE ONE MORE MANAGER DONE	MOV	#FINISH,STATE(R5)	; else TP'S STATE := TP IS STOPPED	CALL	FLUSH			; FLUSH LOGGING  BUFFERS	;***CP50	BR	NEXT			;	GOTO PROCESS NEXT TP 130$:	CMP	R0,#-EMERMN		; if NOT X MIN AFTER STOP CPL CODE SENT									;****C49	BGT	NEXT			; th      en GOTO PROCESS NEXT TP	MOV	#EMERGN,EREMV(R5)	; else STATE := PERFORM EMERGENCY REMOVAL OF TP	DEC	DONE			; INDICATE 1 FEWER TP TO DO;; PROCESS NEXT TP; IF LAST TP PROCESSED THEN WAIT A SECOND THEN START AT TOP OF TP LIST;NEXT:	TST	DONE			; if ALL TPs STOPPED	BEQ	200$			; then GOTO DONE150$:	TST	(R5)+			; R5 -> NEXT TP'S ENTRIES IN STOP TABLES	MOV	STATE(R5),R3		; R3 := STATE OF NEXT TP	TST	R3			; if NEXT TP IS NULL	BEQ	170$			; then BEGIN PROCESSING AT BEGINNING OF LIST	CMP	R3,#FINISH	; if TP HAS BEEN STOPPE      D	BEQ	150$			; then TRY NEXT TP									;*CP38-2	JMP	LOOP			; else GOTO PROCESS NEXT TP170$:					; WAIT A SECOND THEN LOOP THROUGH					; TP LIST AGAIN	CLR	R5			; START AT TOP OF TP LIST	DIR$	#MARKS,DIRERR		; WAIT A SECOND	CALL	STP1			;	INC	R1			; ADD TO SECOND COUNT	CMP	#60.,R1			; MINUTE UP?	BGT	180$			; IF NE NO	CLR	R1			; CLEAR COUNT	DEC	R0			; TIME UP?180$:	JMP	LOOP			; LOOP ;; UPDATE TP FILE RECORD(S); 200$:	DIR$	#DETACH			; DETACH FORM COMMON REGION	CALL	OPTPDF			; OPEN [1,1]TPDEF.TPF FILE	CLR	R5			;       R5 IS INDEX FOR TP VECTORS210$:	MOV	TPRECN(R5),<.FDB+F.RCNM+2>	; GET NEXT TP DEF RECORD	CALL	GETREC			; GET NEXT RECORD	BIC	#<TPSIP!TPST>,<TPREC+TPSTAT> ; INDICATE TP'S STATE IS NOT					     ; 'CHANGING' AND NOT 'STARTED'	DEC	<.FDB+F.RCNM+2>		; GET RECORD NUMBER 	PUT$	#.FDB,,,IOERR		; WRITE UPDATED TP RECORD	CMP	EREMV(R5),#EMERGN	; if TP NOT MARKED FOR EMERGENCY REMOVAL	BNE	230$			; then CONTINUE	CALL	KILL			; else PERFORM EMERGENCY REMOVAL230$:	TST	(R5)+			; R5 IS INDEX FOR NEXT TP'S DATA VECTORS	TST	TPUQI      D(R5)		; if NEXT TP IS NOT NULL	BNE	210$			; then CONTINUE TO LOOP;; CLOSE TPDEF AND EXIT STOP WITH STATUS;250$:	CALL	CLOSE			; ELSE CLOSE [1,1]TPDEF.TPF FILE	EXST$S	EXSTAT			; EXIT WITH STATUS	.DSABL	LSB	.PAGE	.SBTTL I/O ROUTINES;+;;  I / O   R O U T I N E S;;	ROUTINES FOR [1,1]TPDEF.TPF I/O: OPEN AND GET NEXT RECORD.;;-;; OPEN [1,1]TPDEF.TPF WITH MODIFY ACCESS;; R0 IS DESTROYED;OPTPDF:	MOV	#20.,R1			; R1 := # TRIES TO OPEN FILE AFTER 					; FILE ACCESSED FOR WRITE ERROR42$:	OPEN$M	#.FDB			; OPEN TP FILE W      ITH WRITE ACCESS	BCC	45$			; if NO ERROR then GOTO CONTINUE	CMP	#IE.WAC,$DSW		; if NOT FILE ACCESSED FOR WRITE ERROR	BNE	44$			; then GOTO GOTO IO ERROR ROUTINE					; FILE ACCESSED FOR WRITE ERROR:	DEC	R1			; DEC # TRIES LEFT	BEQ	44$			; if TOO MANY TRIES then GOTO ERROR	DIR$	#MARKS,DIRERR		; WAIT FOR A SECOND	CALL	STP1			;	BR	42$			; GOTO TRY TOO OPEN [1,1]TPDEF.TPF AGAIN44$:	JMP	IOERR			; GOTO I/O ERROR ROUTINE45$:	MOV	#TPRSZ,.FDB+F.RSIZ	; SET CORRECT RECORD SIZE IN FDB	MOV	<.FDB+F.FID>,FNBBFR	; SAVE 1ST       WORD OF FILE ID FOR REOPEN OF					; FILE BY FILE ID (CLOSE$ CLRs THIS WD) 	RETURN				; RETURN TO CALLING PROGRAM;*******************************************************************************;; C L O S E;; CLOSE [1,1]TPDEF.TPF;CLOSE:	CLOSE$	#.FDB,IOERR	RETURN;*******************************************************************************;; G E T R E C;; GET NEXT RECORD - CARRY CLEAR IF NOT EOF, SET OTHERWISE;GETREC:	GET$	#.FDB,,,IOERR		; GET TP RECORD	MOV	#TPREC,R1		; POINTER TO RECORD	CMPB	#'#,(R1)		; LAS      T RECORD?	BNE	10$			; then GOTO INDICATE SUCCESS	SEC				; else INDICATE EOF	BR	63$			;      GOTO RETURN10$:	CLC				; INDICATE SUCCESS63$:	RETURN				; RETURN TO CALLING PROGRAM	.PAGE	.SBTTL SEND DATA TO EACH LOADED MANAGER;+;;  S E N D;;	SEND SPECIFIED STOP CODE TO EACH LOADED MANAGER IN A TP.;;;  ENTRY CONDITIONS:;;	TP'S APPLICATION COMMON IS MAPPED AT APR0;	SNDBUF+B.FUN = STOP CODE;;;  EXIT CONDITIONS:;;	STOP CODE IS SENT TO EACH LOADED MANAGER IN TP;	R3 := NUMBER OF 'LOADED' MANAGERS NOT INSTALLED (ABORTE      D);;;  REGISTERS ALTERED:;;	R4,R5;;;  CALLING SEQUENCE:;;	SNDBUF+B.FUN := STOP CODE;	CALL SEND;-SEND:									;-1*CP51	PUSH	R5			; SAVE R5	MOVB	.NMGRS,R3		; R3 = NUMBER OF MANAGERS	MOV	#.MGRLT,R4		; R4 POINTS TO MANAGER LIST	MOV	#1,R5			; INITIALIZE R5 FOR LOAD MASK 10$:	BIT	R5,.LOADM		; IS THIS MANAGER INSTALLED?	BEQ	20$			; IF EQ NO, SKIP MANAGER	MOV	4(R4),<SNDBUF+B.CXT>	; BFR := SYSTEM CONTEXT BLK OF MGR	SDAT$S	R4,#SNDBUF		; SEND DATA TO MANAGER	BCC	20$			; if SEND SUCCESSFUL then CONTINUE*CP38+									      ;-2*CP51	CALL	DIRERR			; else GOTO FATAL ERROR									;-1*CP5120$:	ADD	#6,R4			; POINT TO NEXT MANAGER TASK NAME	ASL	R5			; BIT MASK FOR NEXT MANAGER	SOB	R3,10$			; 	POP	R5			; UNSAVE R5									;-1*CP51	RETURN	.PAGE	.SBTTL BRDCST  -- BROADCAST MESSAGE TO TP ENVIRONMENT TERMINALS;+									;**CP17+;;  B R D C A S T;;	BROADCAST A STOP MESSAGE TO ALL TP ENVIRONMENT TERMINALS:;	CALL ROUTINE TO INSTALL STOP LIKE A MANAGER.;	OBTAIN A MESSAGE BUFFER THEN SEND A PSEUDO-EXCHANGE MESSAGE;	TO TIM'S [[[[[[ STATION IN      DICATING TO BROADCAST STOP MESSAGE.;;;  ENTRY CONDITIONS:;;	R1 (>0) = # MINUTES TILL STOP;	R5 IS INDEX INTO TP INFO VECTORS;;;  EXIT CONDITIONS:;;	R1 = # MINUTES TILL STOP;	if SUCCESSFUL;	then A STOP MESSAGE IS BROADCAST TO TP TERMINALS;	else AN ERROR MESSAGE IS PRINTED ON THE INITIATING TERMINAL;;;  REGISTERS ALTERED:;;	R0,R2,R3,R4;;;  CALLING SEQUENCE:;;	R1 := # MINUTES TILL STOP TIME;	CALL BRDCST;-BRDCST:	PUSH	R1			; SAVE REGISTERS	PUSH	R5;; INSTALL STOP AS A MANAGER - SET UP FOR USE OF TPMLIB ROUTINES.;      	CALL	MGRINS			; INSTALL AS MGR;; CONVERT # MINUTES TILL STOP IS INITIATED TO ASCII, AND PUT IN MESSAGE BUFFER;	MOV	#<MSGHDR+HDRSZ>,R0	; R0 -> BEGINNING OF MESSAGE BFR (PAST HEADER)	MOV	#<<3*4000>!<1*2000>!<1*1000>!10.>,R2 ;R2=CONVERSION CONTROL WORD	CALL	$CBTA			; PUT ASCII REPRESENTATION OF # MINUTES	CLEF$S	#1			; CLEAR EVENT FLAG #1	CLR	<SNDBUF+12>		; INDICATE NO ERROR YET	DSCP$S	DIRERR			; DISABLE CHECKPOINTING: IF TASK IS					; CHECKPOINTED, THE TASK HDR FROM POOL					; OVER-WRITES THE TASK HDR IN THE       TASK'S					; PARTITION WHICH CLOBBERS $TTBAD.	MOV	#THREAD,$TTBAD		; SET UP THREAD TABLE ADDRESS	TSTRT$	#CONTEX,#BDCST1,#CNTXLN	; SET UP THREAD TABLE AND CONTEXT AREA	CALL	..MSUP			; START THREAD AND WAIT TILL IT COMPLETES	ENCP$S	DIRERR			; ENABLE CHECKPOINTING	MOV	<SNDBUF+12>,R1		; if NO BRDCST ERROR	BEQ	63$			; then GOTO DONE					; else PRINT ERROR MESSAGE (R1 = ERROR CODE)	PUSH	<SNDBUF+14>		; (SP) -> OPTIONAL TPMLIB ERROR CODE	CALL	CMDER2			; PRINT ERROR MESSAGE	TST	(SP)+			; CLEAN STACK			;****C4863$:	PO      P	R5			; UNSAVE REGISTERS	POP	R1	RETURN				; RETURN TO MAIN PROGRAM	.PAGE	.SBTTL BDCST1 - THREAD TO SEND BROADCAST MESSAGE TO TIM;+;;  B D C S T 1;;	GET MESSAGE BUFFER. SEND MESSAGE TO TIM.;;;  ENTRY CONDITIONS:;;	?;;;  EXIT CONDITIONS:;;	IF SUCCESSFUL THEN <SNDBUF+12> = 0;		      ELSE <SNDBUF+12> = STOP ERROR CODE;			   <SNDBUF+14> = TPMLIB ERROR CODE;;;  REGISTERS ALTERED:;;	R0,R1,R2,R3,R4,R5;;;  CALLING SEQUENCE:;;	SET UP MESSAGE BUFFER;	CALL BDCST1;-BDCST1:	MOV	#<HDRSZ+3>,R5		; R5 = EXCHANGE MSG SIZE (H      DR + MSG)	MOV	#FAKECB,R3		; R3 -> FAKE CONTROL BLOCK USED BY					;	..GMBF TO CHECK IF SLOT NEEDED	CLR	S.CCB(R3)		; INDICATE IN FAKE SCB NO SLOT NEEDED	CLR	R4			; INDICATE NO CCB	CALL	..GMBF			; GET MESSAGE BUFFER	BCC	30$			; if SUCCESSFUL then GOTO CONTINUE					; ERROR IN GET MESSAGE BUFFER	MOV	#<SNDBUF+12>,R5		; R5 -> ERROR CODE BUFFER	MOV	#<S.V0*400!E.R15>,(R5)	; ERROR CODE BUFFER := STOP ERROR CODE	CMP	R1,#ER.NSP		; if NO SPACE ERROR	BEQ	128$			; then GOTO RETURN FROM THREAD	INC	(R5)+			; STOP CODE IN ER      R BFR := STOP ERROR CODE	BR	128$			; GOTO RETURN FROM THREAD;; MOVE MESSAGE HEADER AND TEXT TO MESSAGE BUFFER;30$:	MOV	R5,@#UISAR3		; MAP APR3 ONTO MESSAGE BUFFER	MOV	#SYSPAR,R0		; R0 -> BASE OF MESSAGE BUFFER	MOV	#MSGHDR,R4		; R4 -> BASE OF MESSAGE HEADER	MOV	#<HDRSZ+3>,R3		; R3 = # BYTES IN MESSAGE40$:	MOVB	(R4)+,(R0)+		; MOVE MESSAGE HEADER TO MESSAGE BFR	SOB	R3,40$			;;; SEND EXCHANGE MESSAGE FOR THE BROADCAST TO TIM;;; STATE:;;	R5 = KT11 ADR OF MESSAGE BUFFER;	R2 = BUFFER ID;	MOV	#TIMSTA,R1		; R1 -> TI      M STATION NAME	CLR	R3			; R3 -> DUMMY ADR FOR DUMMY SCB	MOV	#FAKECB,R4		; R4 -> DUMMY CCB	MOV	#CF.NEX,<FAKECB+C.FLG>	; SPECIFY NO EXCHANGE RECOVERY IN 'CCB'	CALL	..SDTM			; SEND EXCHANGE MESSAGE TO TIM	BCC	128$			; if SUCCESS then GOTO EXIT FROM THREAD					; ERROR: FAILED TO SEND MESSAGE TO TIM	MOV	#<S.V0*400!E.R20>,<SNDBUF+12> ; ERROR CODE BFR := STOP ERROR CODE	MOV	R1,<SNDBUF+14>		; ERROR CODE BFR := TPMLIB ERROR CODE128$:	SRDA$S				; UNSPECIFY RECEIVE DATA ASTs158$:	SETF$S	#1			; SET EVENT FLAG 1; ..MSUP       WILL RETURN					; TO MAIN LINE LEVEL	TTRMN$				; TERMINATE THIS THREAD	.PAGE	.SBTTL INSTALL STOP AS MANAGER;+;;  M G R I N S;;	MAP ONTO TPMLIB. MAP ONTO APPLICATION COMMON. SET UP THREAD TABLE.;;;  ENTRY CONDITIONS:;;	R5 IS INDEX INTO TP INFO VECTORS;;;  EXIT CONDITIONS:;;;;  REGISTERS ALTERED:;;	R0,R2,R3;;;  CALLING SEQUENCE:;;	CALL MGRINS;-MGRINS:	PUSH	R1			; SAVE REGISTER;; SET UP TASK AS MANAGER;	DIR$	#GETASK,DIRERR		; PUT STOP TASK NAME ETC IN THREAD TABLE	MOV	<THREAD+T.RB+G.TSTN>,<SNDDAT+S.DATN> ; PU      T STOP TASK NAME IN DPB	MOV	<THREAD+T.RB+G.TSTN+2>,<SNDDAT+S.DATN+2>	MOV	COMREG,<THREAD+T.RB+4+B.DAT> ; PUT 1ST RAD50 WORD OF COMMON NAME					;	IN DATA PART OF SEND BUFFER	MOV	TPUQID(R5),<THREAD+T.RB+4+B.DAT+2> ; PUT 2ND RAD50 WORD OF						   ; COMMON NAME IN SEND BFR	SRDA$S				; REMOVE RECEIVE DATA ASTs	DIR$	#SNDDAT,DIRERR		; SEND DATA TO SELF	MOV	#INPARM,R0		; R0 -> PARAMETER TABLE FOR ..INSM	MOV	#THREAD,$TTBAD		; SET UP THREAD TABLE ADR	CALL	..INSM			; INSTALL STOP AS MANAGER10$:	DIR$	#RECDAT			; RECEIVE       RETURN MESSAGE FROM ..INSM	BCC	30$			; IF SUCCESSFUL GOTO CONTINUE	CMP	#IE.ITS,$DSW		; if BUFFER EMPTY	BEQ	20$			; then GOTO WAIT A WHILE AND TRY AGAIN	JMP	DIRERR			; else GOTO FATAL ERROR PROCESSING20$:	WSIG$S	DIRERR			; WAIT FOR A SIGNIFICANT EVENT	BR	10$			; TRY TO RECEIVE DATA AGAIN30$:	MOV	$BASE,THREAD+T.DFP	; THREAD TABLE := PRT TO POOL BASE	SRDA$S	#$RVAST			; SPECIFY AST IN TPMLIB	POP	R1			; UNSAVE REGISTER	RETURN				; RETURN TO CALLING PROGRAM	.PAGE	.SBTTL TBLINS - INSERT TP DATA INTO TP TABLES;+;;        T B L I N S;;	INSERT TP NAME INTO TPNAME VECTOR, UNIQUE ID INTO TPUQID VECTOR,;	"INITIATE STOP" INTO THE STATE VECTOR, AND TP'S RECORD;	NUMBER INTO TPRECN VECTOR. UPDATE TP'S DEFINITION RECORD;	IN [1,1]TPDEF.TPF.;;;  ENTRY CONDITIONS:;;	R5 = INDEX INTO TPUQID AND TPRECN (AND TPNAME) VECTORS;	TP'S DEFINITION RECORD IS IN TPREC BUFFER;;;  EXIT CONDITIONS:;;	TP TABLES UPDATED: TPNAM, TPUQID, STATE, AND TPRECN;	R5 -> NEXT, EMPTY ELEMENT OF TPUQID;	TP'S DEFINITION RECORD INDICATES STOP IS IN PROGRESS;;;  REGIS      TERS ALTERED:;;	NONE;;;  CALLING SEQUENCE:;;	CALL TBLINS;-TBLINS:	PUSH	R5		; SAVE REGISTER R5				; PUT TP NAME IN TPNAME VECTOR	ASL	R5		; R5 := 2*R5	ADD	(SP),R5		; R5 := 3*(INITIAL R5)	ADD	#TPNAME,R5	; R5 -> 1ST CHAR OF NEXT TPNAME VECTOR ELEMENT	MOV	TPREC,(R5)+	; MOV 1ST WORD OF TP NAME	MOV	<TPREC+2>,(R5)+	; VECTOR := 2ND WORD	MOV	<TPREC+4>,(R5)	; VECTOR := 3RD WORD	BIS	#TPSIP,<TPREC+TPSTAT> ; UPDATE [1,1]TPDEF.TPF RECORD				      ; INDICATED STOP IN PROGRESS	DEC	<.FDB+F.RCNM+2>	; INDICATE LAST RECORD PROC      ESSED	POP	R5		; UNSAVE INDEX TO TPRECN + TPUQID VECTORS	MOV	<.FDB+F.RCNM+2>,TPRECN(R5) ; PUT TP'S REC NUM IN VECTOR	PUT$	#.FDB,,,IOERR	; WRITE RECORD	MOV	#INITIT,STATE(R5) ; TP'S STATE := INITIATE STOP	MOV	<TPREC+TPID>,TPUQID(R5) ; PUT TP'S UNIQUE ID INTO VECTOR	TST	(R5)+		; R5 INDEX TO NEXT TPUQID + TPRECN VECTOR ELEMENTS	CLR	STATE(R5)	; INDICATE END OF TABLE	RETURN			; RETURN TO CALLING PROGRAM	.PAGE	.SBTTL  COMATT - ATTACH TO NEXT TP'S APPLICATION COMMON;+;;  C O M A T T;;	DETACH FROM PREVIOUS TP'S APPLI      CATION COMMON REGION. ATTACH TO NEXT ;	TP'S COMMON REGION.;;;  ENTRY CONDITIONS:;;	R5 = INDEX INTO STOP TABLES OF TP WHOSE COMMON IS TO BE ATTACHED;	RDB = RDB OF PREVIOUS TP'S COMMON REGION.;;;  EXIT CONDITIONS:;;	NEW TP'S COMMON REGION IS MAPPED AT APR 0;;;  REGISTERS ALTERED:;;	NONE;;;  CALLING SEQUENCE:;;	CALL COMATT;-COMATT:					; DETACH FROM PREVIOUS COMMON	;***CP53	DIR$	#DETACH			; DETACH	BCC	10$			; if OK then CONTINUE	CMP	$DSW,#IE.NVR		; if NOT PREVIOUSLY ATTACHED	BEQ	10$			; then CONTINUE	CALL	DIRE      RR			; else CRAP OUT10$:	MOV	#^RCOM,<RDB+R.GNAM>	; RDB := 1ST HALF OF COMMON NAME	MOV	TPUQID(R5),<RDB+R.GNAM+2> ; RDB := LAST HALF (UNIQUE ID) OF COMMONN	DIR$	#ATTACH,DIRERR		; ATTACH TO COMMON AREA	CLR	<WDB+W.NLEN>		; WDB := DEFAULT WINDOW LENGTH	MOV	<RDB+R.GID>,<WDB+W.NRID> ; WDB := COMMON AREA REGION ID	MOV	<RDB+R.GSIZ>,<WDB+W.NSIZ> ; WDB := WINDOW SIZE	CMP	<WDB+W.NSIZ>,#400	; if COMMON IS <= 8KW	;**CP49+	BLOS	20$			; then CONTINUE	MOV	#400,<WDB+W.NSIZ>	; else MAP ONLY 1ST 8KW OF COMMON	;**CP49-20$:	DIR$      	#CREATE,DIRERR		; MAP APR0 (+APR1) ONTO COMMON AREA 	RETURN				; RETURN TO CALLING PROGRAM	.PAGE	.PAGE	.SBTTL UPDATE SYSTEM COMMON;+									;**CP10+;;  U P D S Y S;;	IF THIS TRANSACTION PROCESSOR IS CRASH RECOVERABLE AND NOT;	IN DEBUG MODE THEN;	DELETE THE ENTRY FOR THE TRANSACTION PROCESSOR BEING STOPPED.;;;  ENTRY CONDITIONS:;;	R5 -> CURRENT TP'S DATA IN STOP TABLES;	SYSCOM IS MAPPED AT APR #SYSPAR;;;  EXIT CONDITIONS:;;	THE ENTRY FOR THE SPECIFIED TP IS DELETED FROM SYSTEM COMMON.;;;  REGISTERS ALTERED      :;;	R3,R4;;;  CALLING SEQUENCE:;;	CALL UPDSYS;-UPDSYS:	.ENABL	LSB			; ENABLE LOCAL SYMBOL BLOCK	BIT	#SY.BUF,.SYFLG		; if TP NOT IN DEBUG MODE	BEQ	3$			; then CONTINUE			;***CP38	JMP	128$			; else GOTO RETURN FROM UPDSYS3$:	BIT	#SY.CRC,.SYFLG		; if TP IS CRASH RECOVERABLE	;**CP38+	BNE	5$			; then CONTINUE	JMP	128$			; else GOTO RETURN FROM UPDSYS	;**CP38-;; VALIDATE SYSCOM'S CHECKSUM;5$:	PUSH	<R0,R1>			; SAVE REGISTERS	MOV	#SYSPAR,R1		; R1 -> VIRTUAL BASE OF SYSCOM	CALL	.SYVAL			; if SYSCOM OK	BEQ	7$			; the      n CONTINUE					; else SYSCOM CHECKSUM ERROR	MOV	#<S.V0*400!E.R24>,R1	; R1 := ERROR CODE	CALL	.ERMSG			; PRINT DIAGNOSTIC ERROR MESSAGE;; FIND ENTRY IN SYSTEM COMMON FOR SPECIFIED TP;7$:	MOV	#<SYSPAR!W.ATP>,R0	; R0 -> 1ST ACTIVE TP ENTRY	INH$S				; INHIBIT CONTEXT SWITCHING10$:	CMP	TPUQID(R5),W.ID(R0)	; ?THIS ENTRY FOR THIS TP?	BEQ	30$			;  IF IT IS, THEN GOTO FREE THE ENTRY					; TRY NEXT ENTRY	ADD	#W.TPES,R0		; R0 -> NEXT ENTRY	CMP	R0,#<SYSPAR!W.CKM>	; ?END OF TP DATA AREA?	BLO	10$			;  IF NOT AT END, TRY       AGAIN					; ERROR: TP ENTRY NOT FOUND	ENB$S				; ENABLE CONTEXT SWITCHING	MOV	#<S.V0*400!E.R14>,R1	; DIAGNOSTIC ERROR #14	CALL	NAMERR			; OUTPUT ERROR MESSAGE AND RETURN	BR	63$			; GOTO DONE					; ENTRY FOUND: CLEAR IT30$:	MOV	#<W.TPES/2>,R1		; R1 = SIZE OF AN ENTRY IN WORDS33$:	CLR	(R0)+			; FREE ENTRY	SOB	R1,33$			; LOOP	ENB$S				; ENABLE CONTEXT SWITCHING;; CALL CHECK SUM CALCULATION ROUTINE;63$:	MOV	#SYSPAR,R1		; R1 -> VIRTUAL BASE OF SYSCOM	CALL	.SYCAL			; CALCULATE SYSCOM CHECKSUM	POP	<R1,R0>		; UNSAV      E REGISTERS128$:	RETURN			; RETURN TO CALLING PROGRAM			.DSABL	LSB		; DISABLE LOCAL SYSBOL BLOCK		;**CP10-	.PAGE	.SBTTL CHECKSUM ROUTINES FOR SYSCOM;+;	THESE ROUTINES ARE USED TO CALCULATE AND VALIDATE THE CHECKSUM;	FOR SYSCOM.;;; INPUT CONDITIONS:;;	R1 -- VIRTUAL ADDRESS OF SYSCOM;;; OUTPUT CONDITIONS:;;	Z BIT SET IF CHECKSUM VALID;	IF CALL .SYVAL AND CHECKSUM INVALID THEN A GARBAGE NEW CHECKSUM;		WORD WILL BE ENTERED.;;; REGISTERS DESTROYED:;;	R1,R3,R4;;; ENTRY POINTS:;;	.SYCAL - CALCULATE CHECKSUM;	.SYVA      L - VALIDATE CHECKSUM;;-.SYCAL:	CLR	W.CKM(R1)		; CLEAR CHECKSUM VALUE.SYVAL:	CLR	-(SP)			; CALCULATE CHECKSUM ON STACK	MOV	#<W.CKM/2>+1,R4		; R4 = # WORDS IN SYSCOM (THAT ARE USED)10$:	INH$S				; INHIBIT CONTEXT SWITCHING	MOV	(R1)+,R3		; R3 := NEXT WORD IN SYSCOM	XOR	R3,(SP)			; ACCUMULATE CHECKSUM	SOB	R4,10$			; LOOP	BEQ	20$			; IF CHECKSUM CORRECT (=0) GOTO DONE	MOV	(SP),-2(R1)		; SET CHECKSUM WORD20$:	ENB$S				; ENABLE CONTEXT SWITCHING	TST	(SP)+			; CLEAN STACK	RETURN	.PAGE	.SBTTL LA180 - WAIT UNTIL LA1      80 PRINTING DONE;+;; L A 1 8 0;; for EACH TERMINAL SCB; do	while (TERMINAL OPEN and LA180 PRINTING) or (REPORT MESSAGE QUEUED);	do	WAIT 1 SECOND;;;;  ENTRY CONDITIONS:;;	?;;  EXIT CONDITIONS:;	NO LA180 IS PRINTING OR HAS A MESSAGE QUEUED;		(UNLESS THIS IS AN EMERGENCY ABORT: A TST IS ACTIVE, THE;		 BF.SAB CODE HAS BEEN SENT, 'EMERGN' MINUTES HAVE EXPIRED,;		 THE MANAGERS HAVEN'T ABORTED THE TST FOR SOME REASON, AND;		 THE TST HAS QUEUED A REPORT MESSAGE AFTER THE TERMINAL;		 HAS BEEN CHECK TO HAVE NO ACTIVI      TY.);;  ? DESTROYED;;  CALLING SEQUENCE:;	CALL LA180;; CALLED BY:;	TXNCMP REQUIRES R0,R1,R2 PRESERVED;;-	.ENABLE	LSBLA180:	PUSH	<R0,R2>			; SAVE VOLATILE REGISTERS	MOV	.SCBTT,R0		; R0 -> BASE OF TERMINAL ALPHA TABLE	MOV	.SCBTS,R2		; R2 := 2*(# ENTRIES IN ALPHA - 1)	ASR	R2			; R2 := # ENTRIES IN ALPHA TABLE - 1	INC	R2			; R2 := # ENTRIES IN ALPHA TABLE;; INHIBIT CONTEXT SWITCHING AND MAP NEXT TERMINAL SCB;20$:	INH$S				; INHIBIT CONTEXT SWITCHING25$:	MOV	(R0),UISAR4		; MAP NEXT TERMINAL SCB	MOV	#1006,UISDR4	      	; MAP 64 WORDS R/W;; IGNORE TERMINAL IF IT ISN'T OUTPUT ONLY OR IF IT IS UNAVAILABLE (DOWN);	BITB	#SO.I,<S.OPER+APR4>	; if TERMINAL HAS INPUT CAPABILITIES	BNE	NXTSCB			; then NOT OUTPUT ONLY: GOTO NEXT SCB	CMP	#ST.WAT,<S.SAT+APR4>	; if TERMINAL NOT AVAILABLE	BNE	NXTSCB			; then DON'T WAIT FOR OUTPUT;; IF A MESSAGE IS BEING PRINTED ON OUTPUT ONLY STATION OR IF A REPORT MESSAGE; IS QUEUED TO OUTPUT ONLY STATION, WAIT A SECOND THEN LOOK AGAIN;30$:	TST	<S.THRD+APR4>		; if A THREAD IS PROCESSING FOR TERMINAL	BN      E	KUWAIT			; then WAIT A SECOND BEFORE RE-TEST	TST	<S.FST+APR4>		; if NO MESSAGES ARE IN QUEUE	BEQ	NXTSCB			; then TRY NEXT SCB;; ENABLE CONTEXT SWITCHING.; IF 'WAITING FOR LA180' MESSAGE HAS NOT BEEN PRINTED DO SO.; WAIT A SECOND BEFORE CHECKING IF TERMINAL IS READY;KUWAIT:	ENB$S				; ENABLE CONTEXT SWITCHING	TSTB	PRTMSG			; if MESSAGE HAS BEEN PRINTED	BNE	50$			; then CONTINUE	MOV	#<S.V0*400!E.R28>,R1	; PRINT 'WAITING FOR FORMS PRINTING'	CALL	.ERMSG			; PRINT DIAGNOSTIC ERROR MESSAGE	MOVB	#1,PRTMSG		; IND      ICATE MESSAGE HAS BEEN PRINTED50$:	DIR$	#MARKS,DIRERR		; WAIT A SECOND	DIR$	#STOP1,DIRERR		;	BR	20$			; GOTO TRY SAME SCB AGAIN;; CURRENT SCB IS NOT AN ACTIVE OUTPUT ONLY STATION: TRY NEXT SCB;NXTSCB:	TST	(R0)+			; R0 -> NEXT ENTRY IN ALPHA TABLE	SOB	R2,25$			; if MORE then GOTO TRY NEXT SCB;; ALL DONE: ENABLE CONTEXT SWITCHING, UNSAVE VOLATILE REGISTERS, AND RETURN;	ENB$S				; ENABLE CONTEXT SWITCHING	POP	<R2,R0>			; UNSAVE VOLATILE REGISTERS	RETURN	.DSABL	LSB	.PAGE	.SBTTL FLUSH - FLUSH LOGGING BUFFER;+;;        F L U S H;;	SEND MESSAGE TO JOURNAL DRIVER TO FLUSH LOGGING BUFFER.;;;  ENTRY CONDITIONS:;;	.ASR0 -> KT11 ADR OF APPLICATION COMMON;	APR0 -> APPLICATION COMMON;	.SHTCT = 0, ALL MANAGERS ARE SHUTDOWN;;;  EXIT CONDITIONS:;;	on success LOGGING BUFFER FLUSHED;	on error PRINT ERROR MSG;;;  REGISTERS ALTERED:;;	NONE;;;  CALLING SEQUENCE:;;	CALL FLUSH;-FLUSH:	BIT	#SY.LOG,.SYFLG		; if LOGGING DISABLED	BEQ	128$			; then DO NOT FLUSH LOGGING BUFFERS	PUSH	R3			; SAVE REGISTERS	CLR	R3			; INDICATE NO RECEIVE DATA YET	      DIR$	#SRDAST			; SPEC RECEIVE DATA AST ROUTINE = RCVAST	BCS	30$			; on error GOTO PRINT ERROR MSG;; SEND MESSAGE TO JOURNAL DRIVER;	CLR	SNDBUF			; INDICATE NO CONTEXT BLOCK	MOV	#JN.FLS,<SNDBUF+2>	; SNDBUF := FUNCTION CODE	MOV	.ASR0,<SNDBUF+12>	; SNDBUF(word 6) := KT ADR OF APP COMMON	DIR$	#JSNDAT			; SEND DATA TO JNLDRV	BCS	30$			; on error GOTO PRINT 'NO LOG FLUSH';; MARK TIME AND STOP FOR EITHER:;	EVENT FLAG 1: SET BY MARK TIME AFTER 1 MINUTE;	EVENT FLAG 2: SET BY AST ROUTINE WHEN A RECEIVE DATA HAS BEEN;      		QUEUED, PRESUMABLY THE SEND FROM THE JOURNAL DRIVER.;	MOV	#1,<STOPMK+M.KTMG>	; MARK TIME DPB(# MINUTES) := 1	DIR$	#STOPMK			; AFTER 1 MINUTE, SET EVENT FLAG 1	BCS	30$			; on error GOTO PRINT ERROR MSG	DIR$	#STLO12			; STOP FOR EVENT FLAG 1 OR 2	BCS	30$			; on error GOTO PRINT ERROR MSG;; if JOURNAL DRIVER HAS SENT DATA AND FLUSHED; then THE RCVAST ROUTINE WILL HAVE SET R3 <> 0; else PRINT DIAGNOSTIC ERROR MESSAGE (LOGGING BUFFER NOT FLUSHED);	TST	R3			; if LOGGING BUFFER FLUSHED	BNE	63$			; then GOTO DONE      ;; ERROR: PRINT LOGGING BUFFER NOT FLUSHED;30$:	MOV	#<S.V0*400!E.R27>,R1	; R1 := ERROR CODE FOR "LOG BFR NOT FLUSHED"	CALL	.ERMSG			; PRINT DIAG ERROR MSG63$:	SRDA$S				; UNSPECIFY RECEIVE DATA ASTs	POP	R3			; UNSAVE REGISTERS128$:	RETURN			; RETURN TO CALLING PROGRAM	.PAGE	.SBTTL RCVAST - RECEIVE DATA AST ROUTINE;+;;  R C V A S T;;	AST ROUTINE TO RECEIVE DATA, VERIFY THAT DATA SENT BY JOURNAL;	DRIVER AND LOGGING BUFFERS FLUSHED, SET FLAG (R3) TO INDICATE;	THAT BFR RECEIVED, SET EVENT FLAG TO WAKE UP MAINLI      NE CODE.;;;  ENTRY CONDITIONS:;;	R3 = 0    , INDICATES NO RECEIVE FROM JOURNAL DRIVER YET;;;  EXIT CONDITIONS:;;	on success R3 <> 0;	else R3 UNCHANGED AND BETTER BE 0;;;  REGISTERS ALTERED:;;	NONE;;;  CALLING SEQUENCE:;;	RECEIVE AST WHILE STOPPED IN FLUSH ROUTINE;-RCVAST:;; RECEIVE DATA; if 1ST WORD OF SENDER ERROR ISN'T 'JNL'; then GOTO RECEIVE DATA; else SET R3 AND SET EVENT FLAG #2 TO UNSTOP FLUSH ROUTINE;20$:	DIR$	#RCDAT			; RECEIVE DATA	BCS	63$			; on error RETURN W/O SETTING R3	CMP	RCVBUF,#^RJNL		; if       1ST WORD OF SENDER NAME <> 'JNL'	BNE	20$			; then TOSS OUT GARBAGE SEND	SETF$S	#2			; SET EVENT FLAG #2	MOV	PC,R3			; INDICATE DATA RECEIVED ( R3 <> 0 )63$:	ASTX$S				; EXIT AST LEVEL: FINISH 'FLUSH' ROUTINE	.PAGE	.SBTTL KILL - EMERGENCY SPAWN OF REMOVE OF TP;+;;  K I L L;;	CLOSE [1,1]TPDEF.TPF FILE TO PERMIT TPREMOVE'S ACCESS.;	SPAWN MCR INSTALL OF TP REMOVE TASK. SEND DATA TO REMOVE TASK;	INDICATING REMOVAL OF CURRENT TP. OPEN [1,1]TPDEF.TPF.;;;  ENTRY CONDITIONS:;;	R5 = INDEX IN TPUQID VECTOR OF UNIQUE       ID OF TP TO BE REMOVED;;;  EXIT CONDITIONS:;;	REMOVE SPAWNED TO REMOVE SPECIFIED TP AND ERROR MESSAGE PRINTED.;	EXSTAT: EXIT STATUS FOR TPSTOP TASK := WARNING;;;  REGISTERS ALTERED:;;	R2;;;  CALLING SEQUENCE:;;	CALL KILL;-KILL:	;									;**CP52+; ????!@@@@@#$%^&  CRASH SYSTEM ON EMERGENCY REMOVAL ^%*^%&%%*^%*%*%;	.MACRO	SWITCH$	X	EMT	376	.WORD	X	.ENDM	SWITCH$	7$	CALL	$CRASH		; CRASH SYSTEM				;***CP527$:									;**CP52-	PUSH	R0			; SAVE REGISTERS	PUSH	R1	MOV	#EX$WAR,EXSTAT		; TPSTOP TASK'S EXIT STATUS :=       WARNING	CALL	CLOSE			; CLOSE [1,1]TPDEF.TPF FILE;; SET UP SEND BUFFER FOR TPREMV TASK;	MOV	#FAKECB,R0		; POINTER TO SEND BUFFER	MOV	R5,R1			; R1 := IX TO TPUQID VECTOR	ASL	R1			; R1 := 2*(IX)	ADD	R5,R1			; R1 := 3*(ORIGINAL IX) = IX TO TPNAME	ADD	#TPNAME,R1		; R1 -> TP NAME BUFFER	MOV	#6,R2			;10$:	MOVB	(R1)+,(R0)+		; MOVE TP NAME TO SEND BUFFER	SOB	R2,10$			;;; SET UP SEND AND SPAWN DPBs;					; SET UP SPAWN COMMAND LINE	MOV	#REMTSK,R0		; R0 -> TASK NAME BUFFER	MOV	TPUQID(R5),R1		; R1 := RAD50 ID FOR TASK N      AME	MOV	R1,<SENDCT+S.DRTN+2>	; LAST WORD OF TASK NAME FOR SEND DATA					; IS TP'S UNIQUE ID	CALL	$C5TA			; CONVERT TO ASCII					; SET UPSPAWN DPB	MOV	#REMCMD,<SPAWN+S.PWCA>	; DPB -> COMMAND LINE	MOV	#REMCLN,<SPAWN+S.PWCL>	; DPB := CMD LINE LENGTH	DIR$	#SPAWN			; SPAWN MCR INSTALL OF TP REMOVE TASK	BCS	15$			; IF C-SET ERROR	CALL	STP1			; STOP UNTIL INSTALL COMPLETES	CMP	#EX$SUC,<FAKECB+26.>	; if INSTALL SUCCESSFUL	BEQ	20$			; then CONTINUE15$:	MOV	#<S.V0*400!E.R23>,R1	; R1 := ERR CODE = 'FAILED TO REMOVE TP      '	CALL	NAMERR			; PRINT ERROR MESSAGE	BR	63$			; GOTO RETURN;; SEND DATA + CONNECT TO REMOVE TASK, WAIT FOR REMOVE TO FINISH;20$:	DIR$	#SENDCT,DIRERR		; SEND DATA, REQUEST, AND CONNECT TO REMOVE	CALL	STP1			; WAIT FOR REMOVE TASK TO RETURN STATUS	CMP	#EX$SUC,<FAKECB+26.>	; if REMOVE NOT SUCCESSFUL	BNE	30$			; then PRINT 'REMOVE NOT SUCCESSFUL' MSG					; else PRINT 'EMERGENCY REMOVE DONE'	MOV	#<S.V0*400!E.R22>,R1	; R1 := ERROR CODE	BR	50$			; GOTO PRINT ERROR	30$:					; DIAG ERRROR: PRINT 'FAILED TO REMOVE T      P'	MOV	#<S.V0*400!E.R23>,R1	; R1 := ERROR CODE50$:	CALL	NAMERR			; GOTO PRINT ERROR MESSAGE;; SPAWN MCR REMOVE OF REMOVE TASK;					; SET UP SPAWN DPB	MOV	#REMC2,<SPAWN+S.PWCA>	; DPB -> COMMAND LINE	MOV	#REM2LN,<SPAWN+S.PWCL>	; DPB := CMD LINE LENGTH					; SET UP MCR REM CMD LINE	MOV	#REMTSK,R1		; R1 -> ASCII UNIQUE ID	MOV	#REMT2,R2		; R2 -> LAST 3 CHAR OF NAME OF TASK TO REMOVE	MOVB	(R1)+,(R2)+		; MCR REM COMMAND'S TASK NAME := UNIQUE ID	MOVB	(R1)+,(R2)+	MOVB	(R1)+,(R2)+	DIR$	#SPAWN			; SPAWN MCR REMOVE OF       TPREMV TASK	BCS	55$			; if FAILED then GOTO ERROR	CALL	STP1			; STOP UNTIL MCR REMOVE DONE	CMP	#EX$SUC,<FAKECB+26.>	; if REMOVE OK	BEQ	63$			; then CONTINUE55$:					; ERRROR: MCR REMOVE OF TPREMV TASK FAILED	MOV	#<S.V0*400!E.R26>,R1	; R1 := ERROR CODE	PUSH	TPUQID(R5)		; (SP) -> UNIQUE ID	CALL	CMDER2			; PRINT ERROR MESSAGE THEN RETURN	TST	(SP)+			; CLEAN STACK			;****C4963$:	CALL	OPTPDF			; RE-OPEN TPDEF FILE	POP	R1			; UNSAVE REGISTERS	POP	R0	RETURN				; RETURN TO CALLING PROGRAM;; STOP FOR EVENT FLAG 1;ST      P1:	DIR$	#STOP1,DIRERR	RETURN	.PAGE	.SBTTL	ERROR ROUTINES ;; DIRECTIVE ERROR ROUTINE; DIRERR:	MOV	$DSW,-(SP)		; DSW = ERROR CODE	MOV	#E.R11,R0		; FIRST DIRECTIVE ERROR CODE	CMP	#IE.PNS,(SP)		; ERROR = REGION DOESN'T EXIST?	BEQ	20$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.INS,(SP)		; ERROR = TASK NOT INSTALLED?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.ACT,(SP)		; ERROR = TASK NOT ACTIVE?	BEQ	10$			; IF EQ YES	MOV	#<S.V1*400!E.R1>,R1	; ELSE SET SEVERITY/ERROR CODE	MOV      	SP,R2			; R2 POINTS TO ARGUMENT LIST	MOV	-2(SP),-(SP)		; PUSH ADDRESS OF ERROR CALL	BR	30$			; 10$:	MOV	R4,R2			; R2 POINTS TO ARGUMENT LIST20$:	MOV	#<S.V1*400>,R1		; SET SEVERITY/ERROR CODE	BISB	R0,R1			;30$:	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT ;; I/O ERROR ROUTINE; IOERR:	CLOSE$	#.FDB			; ATTEMPT TO CLOSE [1,1]TPDEF.TPF	MOV	.FDB+F.ERR,-(SP)	; ERROR CODE	BIS	#177400,(SP)		; SIGN EXTEND	MOV	#E.R6,R0		; FIRST I/O ERROR CODE	CMP	#IE.NSF,(SP)		; ERROR = FILE DOESN'T EXIST?	BEQ	10$			; IF EQ YES	INC	      R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.LCK,(SP)		; ERROR = FILE LOCKED?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.WAC,(SP)		; ERROR = FILE ACCESSED FOR WRITE?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.CLO,(SP)		; ERROR = FILE NOT PROPERLY CLOSED?	BEQ	10$			; IF EQ YES	INC	R0			; ELSE GET NEXT ERROR CODE	CMP	#IE.PRI,(SP)		; ERROR = PRIVILEGE VIOLATION?	BEQ	10$			; IF EQ YES	MOV	#<S.V1*400!E.R2>,R1	; ELSE SET SEVERITY/ERROR CODE FOR 					; UNEXPECTED ERROR	MOV	      SP,R2			; R2 POINTS TO ARGUMENT LIST	BR	20$			; 10$:	MOV	#<S.V1*400>,R1		; SET SEVERITY/ERROR CODE	BISB	R0,R1			;20$:	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT ;; COMMAND LINE ERROR ROUTINE; NAMERR:					; GET TP NAME FROM TPNAME VECTOR	PUSH	R5			; (SP) := TPNAME INDEX/3	ASL	(SP)			; (SP) := 2*TPNAME INDEX/3	ADD	R5,(SP)			; (SP) := TPNAME INDEX	ADD	#TPNAME,(SP)		; (SP) -> TPNAME	MOV	SP,R2			; R2 -> ARGUMENT LIST		;***C49+	CALL	.ERMSG			; OUTPUT ERROR MESSAGE	TST	(SP)+			; CLEAN STACK	RETURN								;***C4   ¬   9-CMDERR:	MOV	#RCVBUF+4,-(SP)		; POINTER TO TP NAME SPECIFIEDCMDER2:	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT	RETURN	.END	STOP¬          ~°skQÁ› 8$        	.ENABL	LC	.TITLE	CKFRTP - CHECK FOR ACTIVE TP	.SBTTL	TITLE PAGE	.IDENT	/V1.1A00/;;;                         COPYRIGHT (C) 1979 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.;;;; MODULE:	CKFRTP;; AUTHOR:	Ken Reed;; DATE:		07-May-79;;	.PAGE;;	MODIFICATION HISTORY;;	VER/ED	DATE	INITIALS	REASON;	------- --------- ---	--------------------------      --------------;	V1.1A00	07-May-79 KMR	Initial coding;	.PAGE	.SBTTL CKFRTP - CHECK FOR ACTIVE TP's;+;;  C K F R T P;;	This routine first checks for the presence of the partition whose;	  name is specified in the stack. If the partion is not found,;	  a false value (0) is placed in the stack and the routine returns.;;	Once the partition is located, the presence of sub-partitions is;	  checked. If none are present or the name of the first is not;	  COMxxx, a false value (0) is placed in the stack and the;	  ro      utine returns.;;	If the first sub-partion is COMxxx, a true value (-1) is placed;	  in the stack along with the KT-11 address of the sub-partion.;	  The routine then returns.;;;  ENTRY CONDITIONS:;;	2(SP) - 1ST RAD50 WORD OF PARTITION NAME;	4(SP) - 2ND RAD50 WORD OF PARTITION NAME;;;  EXIT CONDITIONS:;;	2(SP) = STATUS OF PARTITION (TRUE (-1) => No TP active in the partition;;				     FALSE (0) => TP is active in the partition);	4(SP) = KT11 BASE ADDRESS OF SUB-PARTITION COMMON (IF STATUS = 'TRUE');;;  REGIS      TERS ALTERED:;;	R0,R1;;;  CALLING SEQUENCE:;;	PUSH	2ND RAD50 WORD OF PARTITION NAME;	PUSH	1ST RAD50 WORD OF PARTIITON NAME;	CALL	CKFRTP;-	.MCALL	SWITCH$,PCBDF$,INH$S,ENB$S	PCBDF$				; DEFINE PCB OFFSETSTRUE	= -1				; Define logical trueCKFRTP::;;	Initialization;	MOV	SP, R0		; Save SP so we can access the stack.	TST	(R0)+		; Point to the parameters placed in the				;   stack by caller.	INH$S			; Inhibit context switching.	SWITCH$	70$		; Switch to kernel stack, indicating that				;   we will return to 70$.	MO      V	#$PARHD-P.LNK, R1				; Initialize R1 so that next statement will				;   cause us to point to the first partition				;   control block (PCB).;;	Check for presence of the desired partition;10$:	MOV	P.LNK(R1), R1	; Point to the next PCB in the list.	BEQ	50$		; We have reached the end of the list;				;   i.e, we have not found the desired				;   partion. Go indicate this.	CMP	P.NAM(R1), (R0)	; Do the first 3 characters of the partition				;   name agree?	BEQ	10$		; No, go try the next partition.	CMP	P.NAM+2(R      1), 2(R0)				; The first 3 agree. Do the last 3 also				;   agree?	BEQ	10$		; No. Go try the next partition in the				;   list.;;	Having located the partition, check the first sub-partition.;	MOV	P.SUB(R1), R1	; Point to the first sub-partition's				;   PCB.	BEQ	50$		; No sub-partitions - assume no TP.	CMP	P.NAM(R1), ^RCOM				; See if the sub-partition name is				;   COMxxx.	BNE	50$		; First sub-partition is not COMxxx.				;   This means no TP.	MOV	#TRUE, (R0)	; Indicate that a TP is installed.	MOV	P.REL(R1   L  ), 2(R0)				; Put the KT-11 address of the sub-par				;   into the stack.	BR	60$		; Branch to the return.;;	Return for no TP;50$:	CLR	(R0)		; Indicate that no TP is installed.				;   (Set to FALSE (0)).;;	Common return;60$:	RETURN			; Return to user mode.70$:	ENB$S			; Re-enable context switching	RETURN			; Return to caller.	.END L         ‰üXkQÁ› 8$        	.TITLE	TPINIT - INITIALIZE TP FILE	.IDENT	/V01A/ ;;;                         COPYRIGHT (C) 1977 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.;;;; MODULE:	TPINIT - INITIALIZE TP FILE;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;; EDITS:;;	1. CP14  2-DEC-77;	SPAWN INSTALL OF TPMLIB, TSTLIB, AND SYSCOM.;;	2. CP19 16-JAN-78;	PRO      CESS CRASH DUMP FILES AND INITIALIZE SYSTEM COMMON.;	DELETE CP14 CHANGES: FUNCTIONALITY IN SETHIDE.;;	3. CP25 20-JAN-78;	IF SIZE OF [0,0]CRASH.DMP;1 IS NOT MEMORY SIZE + 3;	SUPERCEDE OLD WITH FILE OF PROPER LENGTH;;	4. CP33 4/4/78;	CLEAR NQ NUMBERS IN TPDEF RECORD.;;	5. CP45 4/27/78;	MULTIPLE BLOCK READ/WRITE ON CRASH DUMP FILE COPY.;;	6. CP56 6/2/78;	DO NOT PRINT COMPLETION MESSAGE.;;	7. CP57 8/28/78;	CLEAR 1ST WORD OF EACH SYSCOM ENTRY TO INDICATE THAT IT IS EMPTY.;;	8. CP58 9/1/78;	WHEN INITIALIZING SYSC      OM (1ST BLOCK) PART OF [0,0]CRASH.DMP;1;	READ OLD SYSCOM BEFORE WRITING OVER 1ST 4 WORDS OF BLOCK.;;	9. CP59 10/4/78;	DO NOT READ SYSCOM (1ST BLOCK) FROM FRESHLY CREATED [0,0]CRASH.DMP;1.;	COPY # OF BLOCKS IN [0,0] FILE, NOT # OF BLOCKS THAT THE CURRENT;	MEMORY SIZE INDICATES.;;	10. CP60 2/28/79;	SPAWN MCR... INSTEAD OF ...PIP: PIP IS NO LONGER PERMANENTLY INSTALLED.;;	11. CP61 3/8/79;	CORRECTLY SIZE [0,0]DUMP FILE IF MEMORY SIZE > 1 MEGAWORD.;+; TPINIT -;;	THIS MODULE READS THE TP DEFINITION FILE AND CLEAR      S NQNUMS +;	THE STATUS WORD FOR EACH TRANSACTION PROCESSOR DEFINED.;	IF THE FILE IS WAS NOT CLOSED PROPERLY, PIP IS SPAWNED ;	TO UNLOCK IT.;	if [0,0]CRASH.DMP;1 EXISTS;	then if [0,0]CRASH.DMP;1 CONTAINS AN UNCOPIED DUMP FILE;	     then CREATE (OR SUPERCEDE) A NON-CONTIGUOUS FILE, [1,1]CRASH.CDA;1;		  COPY ALL BUT 1ST AND LAST BLOCK OF [0,0]CRASH.DMP;1 ;			TO [1,1]CRASH.CDA;1;		  RE-INITIALIZE [0,0]CRASH.CDA;1 TO INDICATE DUMP COPIED;	     fi;	     if THE # OF DISK BLOCKS IN [0,0]CRASH.DMP;1 IS NOT MEMSIZ+3;      	     then SUPERCEDE OLD [0,0]CRASH.DMP;1 WITH ONE OF PROPER SIZE;	     fi;	else CREATE [0,0]CRASH.DMP;1;	     INITIALIZE IT TO INDICATE NO UNCOPIED DUMP;	fi;;-	.PAGE;; MACRO LIBRARY CALLS; 	.MCALL	FDOFF$,FSRSZ$,FDBDF$,FDRC$A	.MCALL	OPEN$M,CLOSE$,GET$R,PUT$R,EXST$S,QIOW$	.MCALL	DIR$,SPWN$,SPWN$C,STSE$C,STSE$				;***CP14	.MCALL	UCBDF$,SCBDF$,KRBDF$,SWITCH$,ASRDF$			;***CP19	.MCALL	ATRG$,CRAW$,WDBBK$,RDBBK$,DTRG$C,INH$S,ENB$S		;***CP19 	TPFDEF				; DEFINE TP RECORD OFFSETS	UCBDF$				; DEF UCB OFFSETS		;**CP19      +	SCBDF$				; DEF STATUS CONTROL BLK OFFSETS	KRBDF$				; DEF KRB OFFSETS	ASRDF$				; DEFINE APR OFFSETS 	.ENABL	LC			; ENABLE LOWER CASE			.NLIST	BEX			; DON'T LIST BINARY EXPANSIONS	;**CP19-.QIO:	QIOW$	IO.WVB,5,5,,,,<IOMSG,IOMLN,40> ; QIO DPB		;***CP56 	FDOFF$	DEF$L			; DEFINE FDB OFFSETS	FSRSZ$	1,S.BFHD+512.		; 1 FILE OPEN FOR RECORD I/O FDB:	FDBDF$				; FDB	FDRC$A	FD.RAN,TPREC,TPRSZ	; RANDOM GET$ AND PUT$SYSAPR	=	3			; MAP SYSCOM AT APR 3		;**CP19+SYSPAR	=	60000			; OFFSET FOR APR 3ATREG:	ATRG$	RDB2			;       ATTACH TO SYSCOMCRWIN:	CRAW$	WDB2			; MAP ONTO SYSCOMRDB2:	RDBBK$	,SYSCOM,,<RS.WRT!RS.RED> ; ATTACH WITH R/W ACCESS TO SYSCOMWDB2:	WDBBK$	SYSAPR,,,0,0,<WS.MAP!WS.WRT> ; WINDOW FOR SYSCOM MAP	;**CP19-	.PAGE;; DATA AREA; DSD:	.WORD	0,0			; DATA SET DESCRIPTOR	.WORD	U1LEN			; LENGTH OF UIC	.WORD	UIC1			; POINTER TO UIC	.WORD	TPFLEN			; LENGTH OF FILE NAME STRING	.WORD	TPFIL			; POINTER TO FILE NAME STRING UIC1:	.ASCII	/[1,1]/	U1LEN = .-UIC1 TPFIL:	.ASCII	/TPDEF.TPF/TPFLEN = .-TPFIL 	.EVENTPREC:	.BLKB	TPRSZ			;       TP RECORD BUFFER ESB:	.BLKW	8.			; EXIT STATUS BLOCK ;; ERROR MESSAGES; MSGHDR:	.ASCII	/? /							;***CP56HDRLN = .-MSGHDR NSFMSG:	.ASCII	/? File [1,1]TPDEF.TPF does not exist/			;***CP56NSFLN = .-NSFMSG IOMSG:	.ASCII	\? I/O error \						;***CP56IOCODE:	.BLKB	10.	.ASCII	\; file [1,1]TPDEF.TPF\IOMLN = .-IOMSG LCKMSG:	.ASCII	\? File [1,1]TPDEF.TPF is locked\			;***CP56LCKLN = .-LCKMSG ;; COMPLETION MESSAGE; ;;;;;;;DONE:	.ASCII	/*** TPINIT COMPLETED ***/			;***CP56;;;;;;;DONELN = .-DONE							;***CP56 ;; PIP       COMMAND LINE; PIPCMD:	.ASCII	\PIP [1,1]TPDEF.TPF/UN\PIPLN = .-PIPCMD	.EVEN	.PAGE	.SBTTL	DATA STRUCTURES FOR CRASH DUMP FILE I/O									;**CP19+	.MCALL	FDBDF$,FDRC$A,FDAT$A,FDAT$R,FDBK$A,FDOP$A	.MCALL	OPEN$M,OPEN$W,READ$,WRITE$,WAIT$,CLOSE$;; BLOCK I/O BUFFER;									;**CP45+NUMBLK	=	10			; # 512. BYTE BLOCKS IN BLOCK I/O BUFFER;NUMBLK	=	4			; NUMBLK FOR ODT USEBUFSIZ	=	<NUMBLK*512.>		; # BYTES IN BLOCK I/O BUFFERBLKBFR:	.BLKB	BUFSIZ			; BLOCK I/O BUFFER									;**CP45-;; DATA STRUCTURES FOR EXEC CRASH FI      LE, [0,0]CRASH.DMP;1;CRFDB:	FDBDF$				; ALLOCATE FDB FOR EXEC CRASH DUMP FILE	FDRC$A	FD.RWM			; INDICATE BLK I/O	FDAT$A	R.FIX,,512.		; INDICATE FIXED 512 BYTE RECORDS	FDBK$A	BLKBFR,512.,,CREFN,CRIOSB  ; BLK ACCESS INIT: 512 BYTE BUFFER					   ; EVENT FLAG = CREFN, STATUS BLK	FDOP$A	2,CRDSPT		; LUN = 2, POINTER TO DATASET DESCRIPTORCREFN	=	1			; EVENT FLAG # = 1CRIOSB:	.BLKW	2			; I/O STATUS BLOCK FOR CRASH FILE I/OCRVBN:	.WORD	0,2			; SPECIFY 2ND VIRTUAL BLOCK # OF FILE					;  FOR BEGINNING OF COPY OPERATIO      NSTBLK:	.BLKW	5			; STATISTICS BLK FOR DISK ADRCRDSPT:					; CRASH FILE DATASET DESCRIPTOR;	.WORD	TMPSZ,TEMPDV		; *** TEMP DEV FOR TESTING ************	.WORD	0,0			; DEFAULT DEVICE: SY0:	.WORD	CRDRSZ,CRDIR		; UIC STRING AND STRING LENGTH POINTERS	.WORD	CRNMSZ,CRNAME		; FILE NAME STRING AND LENGTH POINTERS;; DATA STRUCTURES FOR USER CRASH DUMP FILE, [1,1]CRASH.CDA;1;CDAFDB:	FDBDF$				; ALLOCATE FDB FOR USER CRASH DUMP FILE	FDRC$A	FD.RWM			; INDICATE BLK I/O	FDAT$A	R.FIX,,512.		; INDICATE FIXED 512 BYTE RECOR      DS	FDBK$A	BLKBFR,512.,,CDAEFN,CDIOSB  ; BLK ACCESS INIT: 512 BYTE BUFFER					   ; EVENT FLAG = CDEFN, STATUS BLK	FDOP$A	3,CDDSPT		; LUN = 3, POINTER TO DATASET DESCRIPTORSECOND:	.WORD	0			; NOT EQUAL 0 IF [1,1]CRASH.CDA;1 OPENCDAEFN	=	2			; EVENT FLAG # = 2CDIOSB:	.BLKW	2			; I/O STATUS BLOCK FOR USER CRASH FILECDDSPT:					; USER CRASH FILE DATASET DESCRIPTOR;	.WORD	TMPSZ,TEMPDV		; *** TEMP DEV FOR TESTING ************	.WORD	0,0			; DEFAULT DEVICE: SY0:	.WORD	CDDRSZ,CDADIR		; UIC STRING AND STRING LENGTH PO      INTERS	.WORD	CDNMSZ,CDNAME		; FILE NAME STRING AND LENGTH POINTERS;; STORAGE FOR SYSTEM INFO;UNIT:	.WORD	0			; PHYSICAL UNIT OF SYSTEM DISKMEMSIZ:	.BLKW	1			; SIZE OF PHYSICAL MEMORY IN 512B BLOCKSSCSR:	.BLKW	1			; CSR OF SYSTEM DISK;; EXEC CRASH DUMP FILENAME STRING DATA - [0,0]CRASH.DMP;1;TEMPDV:	.ASCII	/DM0:/			;*** TEMP DEV *************************TMPSZ	=	.-TEMPDV		;**************************************CRDIR:	.ASCII	/[0,0]/			; UIC FOR EXEC CRASH DUMP FILECRDRSZ	=	.-CRDIR			; LENGTH OF UIC STRINGCRNAM      E:	.ASCII	/CRASH.DMP;1/		; EXEC CRASH DUMP FILE NAMECRNMSZ	=	.-CRNAME		; LENGTH OF FILE NAME;; USER CRASH DUMP FILENAME STRING - [1,1]CRASH.CDA;1;CDADIR:	.ASCII	/[1,1]/			; UIC FOR USER CRASH DUMP FILECDDRSZ	=	.-CDADIR			; LENGTH OF UIC STRINGCDNAME:	.ASCII	/CRASH.CDA;1/		; USER CRASH DUMP FILE NAMECDNMSZ	=	.-CDNAME		; LENGTH OF FILE NAME;; CRASH DUMP I/O ERROR MESSAGES;CRMSG:	.ASCII	\? EXEC CRASH FILE I/O ERROR \				;***CP56CRCODE:	.BLKB	10.CRMLN	=	.-CRMSGCDMSG:	.ASCII	\? [1,1]CRASH.CDA I/O ERROR \				;***      CP56CDCODE:	.BLKB	10.CDMLN	=	.-CDMSG;; DIRECTIVE ERROR MESSAGES;DRMSG:	.ASCII	/? DIRECTIVE ERROR /					;***CP56DRCODE:	.BLKB	10.DRMLN	=	.-DRMSG	.EVEN									;**CP19-	.PAGETPINIT:	OPEN$M	#FDB,#1,#DSD,,,,IOERR	; OPEN TP FILE WITH READ/WRITE ACCESS	MOV	#TPRSZ,FDB+F.RSIZ	; SET CORRECT RECORD SIZE IN FDB 	CLR	R3			; INITALISE THE RECORD NUMBER10$:	INC	R3			; UPDATE THE RECORD NUMBER	GET$R	#FDB,,,R3,,IOERR	; GET REQUIRED RECORD	CMPB	#'#,TPREC		; LAST RECORD?	BEQ	20$			; IF EQUAL YES	CLR	<TPREC+TPNQ>		; CLEAR NQ       NUMBER	;***CP33	CLR	TPREC+TPSTAT		; CLEAR STATUS FIELD IN RECORD	PUT$R	#FDB,,,R3,,IOERR	; WRITE THE RECORD BACK	BR	10$			; GET NEXT RECORD 20$:	CLOSE$	#FDB			; CLOSE FILE;									;**CP19+; PROCESS CRASH FILES AND SYSCOM;	CALL	SYINFO			; GET SYSTEM INFO TO PLACE IN SYSCOM	CALL	DUMPFL			; DO CRASH DUMP FILE PROCESSING	CALL	SYINIT			; INITIALIZE SYSTEM COMMON									;**CP19-;;;;	MOV	#DONE,<.QIO+Q.IOPL>	; DPB <- ADR OF SUCCESS MESSAGE	;**CP56+;;;;	MOV	#DONELN,<.QIO+Q.IOPL+2>	; DPB <- SUCCESS MESSAGE LENGTH;;;      ;	DIR$	#.QIO			; OUTPUT COMPLETION MESSAGE	;**CP56-	EXST$S	#EX$SUC			; EXIT INDICATING SUCCESS	.PAGE	.SBTTL SYINFO - GET SYSTEM INFO;+									;**CP19+;;  S Y I N F O;;	PERFORM A SWITCH STACK TO KERNEL MODE TO OBTAIN:;		CSR OF SYSTEM DISK;		UNIT NUMBER OF SYSTEM DISK;		SIZE OF PHYSICAL MEMORY;;;  ENTRY CONDITIONS:;;;;  EXIT CONDITIONS:;;	CSR = CSR OF SYSTEM DISK;	UNIT = UNIT NUMBER OF SYSTEM DISK;	MEMSIZ = SIZE OF PHYSICAL MEMORY;;;  REGISTERS ALTERED:;;	R0,R1;;;  CALLING SEQUENCE:;;	CALL SYINFO;-SYINFO:	SW      ITCH$	20$			; SWITCH STACK TO KERNEL MODE	MOV	<.SY0+U.RED>,R0			; R0 -> UCB OF SYSTEM DISK	MOVB	U.UNIT(R0),UNIT		; UNIT := PHYSICAL UNIT # OF SYSTEM DISK	MOV	U.SCB(R0),R0		; R0 -> SCB OF SYSTEM DISK	MOV	S.KRB(R0),R0		; R0 -> KRB OF SYSTEM DISK	MOV	K.CSR(R0),CSR		; CSR := CSR OF SYSTEM DISK	MOV	$SYSIZ,R1		; R1 := SIZE OF PHYSICAL MEM IN 32.W BLK	ASH	#-3,R1			; R1 := R1/8 = SIZE IN 512.BYTE BLOCKS	BIC	#160000,R1		; CLEAR PROPAGATED BITS		;***CP61	MOV	R1,MEMSIZ		; MEMSIZ := MEM SIZE IN 512. BYTE BLOCKS	RETURN	      			; RETURN TO USER MODE20$:	RETURN				; RETURN TO CALLING PROGRAM	;**CP19-	.PAGE	.SBTTL	CREATE CRASH DUMP FILE;+									;**CP19+;;  D U M P F L;;	if [0,0]CRASH.DMP;1 EXISTS;	then if [0,0]CRASH.DMP;1 CONTAINS AN UNCOPIED DUMP FILE;	     then if # BLOCKS IN [0,0] FILE > 32K;		  then ERROR: GOTO CREATE [0,0]CRASH.DMP;1;		  fi;		  CREATE (OR SUPERCEDE) A NON-CONTIGUOUS FILE, [1,1]CRASH.CDA;1;		  COPY ALL BUT 1ST AND LAST BLK OF [0,0]CRASH.DMP;1;			TO [1,1]CRASH.CDA;1;		  RE-INITIALIZE [0,0]CRASH.CDA;1 TO INDI      CATE DUMP COPIED;	     fi;	     if THE # OF DISK BLOCKS IN [0,0]CRASH.DMP;1 IS NOT = MEMSIZ+3;	     then SUPERCEDE OLD [0,0]CRASH.DMP;1 FILE WITH ONE OF PROPER SIZE;	     fi;	else CREATE [0,0]CRASH.DMP;1;	     INITIALIZE IT TO INDICATE NO UNCOPIED DUMP;	fi;;;  ENTRY CONDITIONS:;;	-MEMSIZ = # OF 512 BYTE BLOCKS IN MEMORY;;;  EXIT CONDITIONS:;;	-[0,0]CRASH.DMP;1 EXISTS, IS CONTIGUOUS, AND CONTAINS NO UNCOPIED;	 EXEC CRASH FILE;	-if [0,0]CRASH.DMP CONTAINED AN UNCOPIED EXEC CRASH FILE;	 then IT IS COPIED TO A       NON-CONTIGUOUS, NEW (OR SUPERCEDED);		VERSION OF [1,1]CRASH.CDA;1;;;  REGISTERS ALTERED:;;	R0,R1,R2,R3;;;  CALLING SEQUENCE:;;	CALL DUMPFL;-DUMPFL:	MOV	#STBLK,<CRFDB+F.STBK>	; GET FILE INFO (DA) WRITTEN TO STAT BLK	OPEN$M	#CRFDB			; ATTEMPT TO OPEN EXEC CRASH DUMP FILE	BCC	60$			; if SUCCESSFUL then CONTINUE	CMPB	<CRFDB+F.ERR>,#IE.NSF	; else if 'NO SUCH FILE' ERROR	BEQ	40$			;      then GOTO CREATE [0,0]CRASH.DMP;1	JMP	CRERR			;      else GOTO CRASH FILE I/O ERROR					; CREATE [0,0]CRASH.DMP;140$:	MOV	MEMSI      Z,R2		; R2 = SIZE OF MEM IN 512. BYTE BLOCKS	ADD	#3,R2			; R2 = # 512. B BLKS IN MEM + 3					; 1 BLOCK FOR SYSCOM, 1 FOR CRASH STACK					; AND 1 BLOCK FOR CRASH ROUTINE OVERFLOW43$:	FDAT$R	#CRFDB,,,,R2,CRERR	; W/ CONTIGUOUS LENGTH = MEMSIZE + 2	MOV	#STBLK,<CRFDB+F.STBK>	; W/ FILE INFO (DA) WRITTEN TO STAT BLK	OPEN$W	#CRFDB,,,,,,CRERR	; CREATE [0,0]CRASH.DMP;1	JMP	110$			; GOTO FINISH UP;; [0,0]CRASH.DMP;1 ALREADY EXISTS. READ 1ST BLOCK OF FILE.; IF FILE CONTAINS AN UNCOPIED DUMP THEN CREATE A NEW, NON-CONTI      GUOUS VERSION; OF THE FILE [1,1]CRASH.CDA, AND COPY [0,0]CRASH.DMP;1 TO THIS NEW FILE.;60$:	READ$	#CRFDB,,,,,,,CRERR	; READ 1ST BLK OF [0,0]CRASH.DMP	WAIT$	#CRFDB,,,CRERR		; WAIT TILL I/O COMPLETE	TST	BLKBFR+W.CSR		; if FILE CONTAINS UNCOPIED DUMP	BNE	70$			; then GOTO COPY TO [1,1]CRASH.CDA	JMP	93$			; else GOTO SEE IF FILE RIGHT SIZE;; SUPERCEDE (OR CREATE) NON-CONTIGUOUS VERSION OF [1,1]CRASH.CDA;1;70$:	TST	<CRFDB+F.HIBK>		; if # BLOCKS IN [0,0] FILE > 32K;*CP59+	BNE	43$			; then GOTO RE-CREATE [0,0] FIL      E	MOV	<CRFDB+F.HIBK+2>,R1	; R1 := SIZE OF [0,0] FILE	DEC	R1			; R1 := SIZE OF [1,1] FILE (NO SYSCOM)	NEG	R1			; R1 := - SIZE OF [1,1] FILE	;**CP59-	FDAT$R	#CDAFDB,,,,R1,CDERR	; INDICATE SIZE OF FILE	OPEN$W	#CDAFDB,,,,,,CDERR	; CREATE FILE	INC	SECOND			; INDICATE FILE HAS BEEN OPENED;; COPY ALL BUT 1ST BLOCK (SYSCOM) AND LAST BLOCK (GARBAGE CREATED BY EXEC; CRASH MODULE) OF [0,0]CRASH.DMP;1 TO [1,1]CRASH.CDA;1; THE NUMBER OF BLOCKS TO COPY = # OF 512. BYTE BLOCKS IN PHYSICAL MEMORY; PLUS 1 BLOCK FOR THE CRAS      H STACK.;									;**CP45+	NEG	R1			; R1 := # BLOCKS TO TRANSFER = MEMSIZ+1	MOV	#BUFSIZ,R3		; R3 := # BYTES IN BLOCK I/O BUFFER80$:	CMP	R1,#NUMBLK		; if # BLKS TO TRANSFER > # BLKS IN BFR	BGE	85$			; then CONTINUE	MOV	R1,R3			; else DO NOT TRANSFER ENTIRE BUFFER	MUL	#512.,R3		; R3 := # BYTES TO TRANSFER85$:					; NOTE: THE NTH BLOCK OF THE [0,0] FILE					; IS COPIED TO THE <N-1>TH BLOCK OF THE					; [1,1] FILE	READ$	#CRFDB,,R3,#CRVBN,,,,CRERR	; READ NEXT BLOCK(S)	WAIT$	#CRFDB,,,CRERR		; WAIT FOR I/O TO COMP      LETE	DEC	<CRVBN+2>		; WRITE BLOCKS TO BLK # - 1	WRITE$	#CDAFDB,,R3,#CRVBN,,,,CDERR	; WRITE NEXT BLOCK	WAIT$	#CDAFDB,,,CDERR		; WAIT FOR I/O TO COMPLETE	ADD	#<NUMBLK+1>,<CRVBN+2>	; CRVBN := BLOCK # FOR NEXT BLOCK TO R/W					; NOTE: '+1' IS THE ADJUSTMENT FOR THE					; DECREMENT AFTER THE READ	SUB	#NUMBLK,R1		; R1 := # BLOCKS YET TO BE READ	BGT	80$			; if MORE TO READ then LOOP	;**CP45-	CLOSE$	#CDAFDB,CDERR		; CLOSE [1,1]CRASH.CDA;; IF [0,0]CRASH.DMP;1 IS NOT THE RIGHT SIZE (MEMSIZ+3) THEN SUPERCEDE; IT WITH       ONE OF THE RIGHT SIZE;									;**CP61+93$:	MOV	MEMSIZ,R2		; R2 := SIZE OF MEMORY IN 512 BYTE BLKS	ADD	#3,R2			; R2 := MEMORY SIZE+3 = CRASH FILE SIZE	TST	<CRFDB+F.HIBK>		; if # BLOCKS IN FILE > 32K	;**CP25+	BNE	96$			; then ERROR: GOTO SUPERCEDE THE FILE									;**CP61-	CMP	<CRFDB+F.HIBK+2>,R2	; if FILE SIZE IS RIGHT	BEQ	100$			; then CONTINUE					; else SUPERCEDE OLD FILE96$:	CLOSE$	#CRFDB,CRERR		; CLOSE [0,0]CRASH.DMP;1	JMP	43$			; GOTO SUPERCEDE [0,0]CRASH.CMP;1									;**CP25-100$:	CLR	CRVBN			; READ      /WRITE 1ST BLOCK IN FILE	;**CP58+	MOV	#1,<CRVBN+2>	READ$	#CRFDB,,#512.,#CRVBN,,,,CRERR ; READ IN SYSCOM FROM [0,0] FILE	WAIT$	#CRFDB,,,CRERR		; WAIT FOR I/O TO COMPLETE110$:	CLR	CRVBN			; SPECIFY 1ST BLOCK FOR ALTERNATE;*CP59+	MOV	#1,<CRVBN+2>		;	ENTRY POINT FOR WRITE	CLR	BLKBFR+W.CSR		; INDICATE FILE HASN'T BEEN DUMPED*CP59-	MOV	STBLK,BLKBFR+W.ADR	; BUFFER := 1ST WORD OF FILE DISK ADR	MOV	<STBLK+2>,<BLKBFR+W.ADR+2> ; BFR := 2ND WORD OF FILE DISK ADR	WRITE$	#CRFDB,,#512.,#CRVBN,,,,CRERR ; WRITE FIRST BLOCK       TO FILE;**CP59	WAIT$	#CRFDB,,,CRERR		; WAIT FOR I/O COMPLETE	MOV	MEMSIZ,R1		; R1 := # 512. BLKS IN MEM	ADD	#3,R1			; R1 := # BLOCKS IN EXEC DUMP FILE	MOV	R1,<CRVBN+2>		; WRITE TO LAST BLOCK IN FILE	WRITE$	#CRFDB,,,#CRVBN,,,,CRERR ; WRITE LAST BLOCK TO FILE	WAIT$	#CRFDB,,,CRERR		; WAIT FOR I/O COMPLETE		;**CP58-127$:	CLOSE$	#CRFDB,CRERR		; CLOSE EXEC CRASH FILE	RETURN				; RETURN TO CALLING PROGRAM	;**CP19-	.PAGE	.SBTTL	INITIALIZE SYSTEM COMMON;+									;**CP19+;;  S Y I N I T;;	ATTACH AND MAP TO THE SYSTEM       COMMON REGION. INITIALIZE;	SYSTEM DISK CSR AND PHYSICAL UNIT NUMBER VALUES AND;	BASE ADDRESS OF CRASH FILE ON SYSTEM DISK VALUE.;	INITIALIZE VALUE OF EXEC WORD, .TPSYC, TO THE KT11 BASE;	ADDRESS OF COMMON. INDICATE THAT EACH TP ENTRY IN SYSCOM;	IS EMPTY.;;;  ENTRY CONDITIONS:;;	CSR 	= CSR OF SYSTEM DISK;	UNIT	= PHYSICAL UNIT NUMBER OF SYSTEM DISK;	STBLK(+2)= DOUBLE PRECISION DISK ADDRESS OF EXEC CRASH DUMP FILE;;;  EXIT CONDITIONS:;;	SYSTEM COMMON IS INITIALIZED;	.TPSYC := KT11 BASE ADR OF SYSCOM; .TPSYC I      S IN EXEC ADR SPACE;;;  REGISTERS ALTERED:;;	R0,R5;;;  CALLING SEQUENCE:;;	CALL SYINIT;-SYINIT:	.ENABL	LSB			; ENABLE LOCAL SYMBOL BLOCK;; ATTACH AND MAP APR 3 ONTO SYSTEM COMMON;5$:	DIR$	#ATREG,DIRERR		; ATTACH TO SYSCOM	MOV	<RDB2+R.GID>,<WDB2+W.NRID> ; WDB <- REG ID	MOV	<RDB2+R.GSIZ>,<WDB2+W.NSIZ> ; WDB <- WINDOW SIZE IN 32 WD BLKS	DIR$	#CRWIN,DIRERR		; CREATE AND MAP WINDOW TO SYS COMMON;; PUT KT11 BASE ADDRESS OF SYSCOM IN KERNEL WORD .TPSYC;	SWITCH$	20$			; SWITCH STACK TO KERNEL MODE	MOV	@#UISAR3,.TPS      YC		; PUT KT11 ADR OF SYSCOM IN .TPSYC	RETURN				; RETURN TO USER MODE;; INITIALIZE SYSCOM;20$:	MOV	#SYSPAR,R0		; R0 -> BASE OF SYSCOM	INH$S				; INHIBIT CONTEXT SWITCHING	MOV	CSR,W.CSR(R0)		; SYSCOM := CSR OF SYSTEM DISK	MOV	UNIT,W.UNT(R0)		; SYSCOM := PHYSICAL UNIT OF SYSTEM DISK	MOV	STBLK,W.ADR(R0)		; SYSCOM := 1ST WORD OF CRASH FILE DA	MOV	<STBLK+2>,<W.ADR+2>(R0)	; SYSCOM := 2ND WORD OF CRASH FILE DA;									;**CP57+; INDICATE THAT EACH TP ENTRY IS EMPTY BY CLEARING ITS FIRST WORD.;	MOV	#<SYSPAR!W.ATP>      ,R0	; R0 -> 1ST TP ENTRY	MOV	#8.,R5			; R5 := # TP ENTRIES30$:	CLR	(R0)			; INDICATE TP ENTRY IS EMPTY	ADD	#W.TPES,R0		; R0 -> NEXT TP ENTRY	SOB	R5,30$			; LOOP				;**CP57-;; CALL CHECKSUM ROUTINE;	MOV	#SYSPAR,R5		; R5 -> BASE OF SYSCOM	CALL	.SYCAL			; CALCULATE CHECKSUM FOR SYSCOM	ENB$S				; ENABLE CONTEXT SWITCHING	DTRG$C	RDB2,,DIRERR			; DETACH FROM SYSTEM COMMON AREA	RETURN			; RETURN TO CALLING PROGRAM			.DSABL	LSB		; DISABLE LOCAL SYSBOL BLOCK		;**CP19-	.PAGE	.SBTTL CHECKSUM ROUTINES FOR SYSCOM;+;	THE      SE ROUTINES ARE USED TO CALCULATE AND VALIDATE THE CHECKSUM;	FOR SYSCOM.;;; INPUT CONDITIONS:;;	R5 -- VIRTUAL ADDRESS OF SYSCOM;	CONTEXT SWITCHING DISABLED;;; OUTPUT CONDITIONS:;;	R3,R4,R5 DESTROYED;	Z BIT SET IF CHECKSUM VALID;;; ENTRY POINTS:;;	.SYCAL - CALCULATE CHECKSUM;	.SYVAL - VALIDATE CHECKSUM;;-.SYCAL::	CLR	W.CKM(R5)		; CLEAR CHECKSUM VALUE.SYVAL::	CLR	-(SP)			; CALCULATE CHECKSUM ON STACK	MOV	#<W.CKM/2>+1,R4		; R4 = # WORDS IN SYSCOM (THAT ARE USED)10$:	MOV	(R5)+,R3		; R3 := NEXT WORD IN SYSCOM	XO      R	R3,(SP)			; ACCUMULATE CHECKSUM	SOB	R4,10$			; LOOP	BEQ	20$			; IF CHECKSUM CORRECT (=0) GOTO DONE	MOV	(SP),-2(R5)		; SET CHECKSUM WORD20$:	TST	(SP)+			; CLEAN STACK	RETURN	.PAGE	.SBTTL	ERROR ROUTINES;; DIRECTIVE ERROR ROUTINE;DIRERR:					; SYSCOM MAPPING ERROR	MOV	#DRMSG,R3		; R3 -> ERROR MESSAGE	MOV	#DRMLN,R4		; R4 := LENGTH	MOV	#DRCODE,R0		; R0 -> BUFFER FOR ERROR CODE	MOV	$DSW,R1			; R1 := ERROR CODE	BR	CBD			; GOTO CLOSE CRASH FILE(S);; I/O ERROR ROUTINE;CRERR:					; [0,0]CRASH.DMP;1 I/O ERROR	MOV	#C      RMSG,R3		; R3 -> ERROR MESSAGE	MOV	#CRMLN,R4		; R4 := LENGTH	MOV	#CRCODE,R5		; R5 -> BUFFER FOR ERROR CODE	MOVB	<CRFDB+F.ERR>,R1	; R1 := ERROR CODE	BR	DMPERR			; GOTO CLOSE CRASH FILE(S)CDERR:					; [1,1]CRASH.CDA I/O ERROR	MOV	#CDMSG,R3		; R3 -> ERROR MESSAGE	MOV	#CDMLN,R4		; R4 := LENGTH	MOV	#CDCODE,R5		; R5 -> BUFFER FOR ERROR CODE	MOVB	<CDAFDB+F.ERR>,R1	; R1 := ERROR CODEDMPERR:	CLOSE$	#CRFDB			; CLOSE [0,0]CRASH.DMP;1	TST	SECOND			; if [1,1] IS OPEN	BEQ	10$			; then CONTINUE	CLOSE$	#CDAFDB			; else CLO      SE [1,1]CRASH.CDA10$:	MOV	R5,R0			; R0 -> BUFFER FOR ERROR CODE	JMP	CBD			; GOTO PRINT ERROR MESSAGEIOERR:	MOVB	FDB+F.ERR,R5		; ERROR CODE	CMPB	#IE.NSF,R5		; ERROR = FILE DOESN'T EXIST?	BNE	10$			; IF NE NO	MOV	#NSFMSG,R3		; POINTER TO ERROR MESSAGE	MOV	#NSFLN,R4		; LENGTH	JMP	PRTMSG			; PRINT MESSAGE10$:	CMPB	#IE.CLO,R5		; ERROR = FILE NOT CLOSED PROPERLY?	BNE	20$			; IF NE NO	JMP	UNLOCK			; ELSE UNLOCK FILE 20$:	MOV	#IOMSG,R3		; POINTER TO ERROR MESSAGE	MOV	#IOMLN,R4		; LENGTH	MOV	#IOCODE,R0		; BUFFER FOR       ERROR CODE	MOV	R5,R1			; ERROR CODECBD:	CALL	$CBDSG			; CONVERT ERROR CODE TO DECIMALPRTMSG:	MOV	#40,.QIO+Q.IOPL+4	; SET UP PARAMETER LIST	MOV	R4,.QIO+Q.IOPL+2	;	MOV	R3,.QIO+Q.IOPL		;	DIR$	#.QIO			; PRINT ERROR MESSAGE 	CLOSE$	#FDB			; ISSUE CLOSE IN CASE FILE OPEN	EXST$S	#EX$SEV			; EXIT INDICATING ERROR ;; SPAWN PIP TO UNLOCK FILE;UNLOCK:	SPWN$C	MCR...,,,,,1,,ESB,PIPCMD,PIPLN ; SPAWN MCR FOR PIP	;***CP60	BCS	LCKERR			; IF C-SET SPAWN FAILED	STSE$C	1			; STOP UNTIL PIP EXITS	CMP	#EX$SUC,ESB		; DID PIP UNL   ¾   OCK FILE?	BNE	LCKERR			; IF NE NO	JMP	TPINIT			; START AGAINLCKERR:	MOV	#LCKMSG,R3		; ADDRESS OF ERROR MESSAGE	MOV	#LCKLN,R4		; LENGTH	BR	PRTMSG			; OUTPUT ERROR MESSAGE AND EXIT	.END	TPINIT¾          x¯}Á› 8$ð‘      	.TITLE	SHUTDOWN UTILITY                                                ; KR001	.IDENT	"V1.1A01"                                                       ; KR002;                                                                               ;**-1;+                                                                              ; KR001;;;;;                         COPYRIGHT (C) 1978 BY;             DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.;;; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPI      ED; 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 US      E OR  RELIABILITY  OF  ITS; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.;;;;;	MODULE:		SHUTDOWN;;	VERSION:	V1.1A                                                   ; KR001;                                                                               ; KR001;	EDIT LEVEL:	01                                                      ; KR002;                                                                               ; KR002;	AUTHOR:		GW                                                      ; KR002;			KM      R                                                     ; KR002;                                                                               ; KR002;	DATE:		09-Apr-79                                               ; KR002;                                                                               ;**-4;                                                                               ; KR001;-                                                                              ; KR001;                                                                                     ; KR001;                                                                               ; KR001;+                                                                              ; KR001;                                                                               ; KR001;	MODIFICATION HISTORY                                                    ; KR001;                                                                               ; KR001;                                                                                     ; KR001;	VER/ED	DATE	INITIALS	REASON                                  ; KR001;	------- --------- ---	----------------------------------------        ; KR001;	V1.1A00	08-Mar-79 KMR	SPR 22089 - Single digit responses to TP        ; KR001;				  shutdown questions were causing defaults      ; KR001;				  to be supplied to TPCTRL prompts.             ; KR001;				TT0: - Code was added to check for TT0:.        ; KR001;	V1.1A01	09-Apr-79 KMR	SPR 22245 - Added cod      e to enable logins         ; KR002;				  before attempting to login the virtual        ; KR002;				  terminal for running TPCTRL.                  ; KR002;                                                                               ; KR001;                                                                               ; KR001;-                                                                              ; KR001;                                                                               ; KR001;                                                                                     ; KR001	.NLIST	BEX	.ENABL	LC	.MCALL	SPEAK,DIR$,SPWN$,GTSK$C,GPRT$C,ALTP$,ALUN$,ASTX$S	.MCALL	CRVT$C,ELVT$,QIOW$,QIO$,STOP$C,USTP$C,MRKT$C	.MCALL	EXST$S                                                          ; KR001;; USEFUL SYMBOLS;CR	=	15LF	=	12VTLUN	=	10;; DIRECTIVE DBPS;SPAWN:	SPWN$	MCR...,,,1,1,,VTDONE,STAT,LOGS,LLOGS                            ; KR002ALUN:	ALUN$	VTLUN,VT                                                        ;**-1      ALTP:	ALTP$	,80.ELVT:	ELVT$OUTVT:	QIO$	IO.WVB,VTLUN,32.,,STAT,,<0,0,32.>INVT:	QIOW$	IO.RVB,VTLUN,32,,STAT,,<BUFFER,79.,32.>.PAGE; TEXT;HELP1:	.ASCII	/Please  specify the  number of  minutes to  /	.ASCII	/wait  until initiating the  start of/<CR><LF> 	.ASCII	/transaction shutdown./<CR><LF>LHELP1	=	. - HELP1A1:	.ASCII	/Minutes until start of transaction processor /	.ASCII	/shutdown procedure /LA1	=	. - A1DEF1:	.ASCII	/<5>? /LDEF1	=	. - DEF1HELP2:	.ASCII	/When transaction processing has  been  /	.ASCII	/termin      ated,  active transactions will  be/<CR><LF>	.ASCII	/allowed to complete,  provided they  finish /	.ASCII	/in  less than a  specified number of/<CR><LF>	.ASCII	/minutes. Please specify this time limit./<CR><LF>LHELP2	=	. - HELP2A2:	.ASCII	/Minutes until transaction aborts /LA2	=	. - A2DEF2:	.ASCII	/<10>? /LDEF2	=	. - DEF2HELP3:	.ASCII	/Please specify the time,  in minutes,  to /	.ASCII	/wait after transaction processing has/<CR><LF>	.ASCII	/ceased, untill shutting down the remainder /	.ASCII	/of  the system      ./<CR><LF>LHELP3	=	. - HELP3A3:	.ASCII	/Minutes until system shutdown /LA3	=	. - A3DEF3:	.ASCII	/<0>? /LDEF3	=	. - DEF3HERALD:	.ASCII	<LF>/Shutdown  V1.1A/<CR><LF>                                   ; KR001	.ASCII	/System Shutdown Utility/<CR><LF>LHERLD	=	. - HERALDPOSITV:	.ASCII	<CR><LF>/Positive integer required/<CR><LF>LPOSTV	=	. - POSITVMAX:	.ASCII	<CR><LF>/Maximum value exceeded/<CR><LF>LMAX	=	. - MAX;                                                                               ; KR002;	Set logons                                                                    ; KR002;                                                                               ; KR002LOGS:	.ASCII	@SET /LOGON@                                                    ; KR002LLOGS	= . - LOGS                                                              ; KR002;                                                                               ; KR002;	Logon virtual terminal                                                  ; KR002;                                                                                     ; KR002HEL:	.ASCII	@HEL 1/1@LHEL	=	. - HELTPCTRL:	.ASCII	/RUN $TPCTRL/LTPCTR	=	. - TPCTRLSTOP:	.ASCII	/STOP/LSTOP	=	. - STOPALL:	.ASCII	/ALL/LALL	=	. - ALLREMOVE:	.ASCII	/REMOVE/LREMOV	=	. - REMOVEEXT:	.ASCII	/EXIT/LEXT	=	. - EXTAUXSTP:	.ASCII	/RUN $AUXSTP/LAUXST	=	. - AUXSTPBYE:	.ASCII	/BYE/LBYE	=	. - BYEERROR:	.ASCII	/? Shutdown being aborted/LERRO	=	. - ERRORTTEM1:	.BYTE	CR, LF                                                          ; KR001	.ASCII	      /? SHUTDOWN must be run from TT0: or batch/                     ; KR001	.BYTE	CR, LF                                                          ; KR001STTEM1	== . - TTEM1                                                            ; KR001                                                                                ; KR001TTEM2:	.BYTE	CR, LF                                                          ; KR001	.ASCII	/? GETLUN directive error -/                                    ; KR001TTDE:	.BLKB	6                                                                     ; KR001	.BYTE	CR, LF                                                          ; KR001STTEM2	== . - TTEM2                                                            ; KR001                                                                                ; KR001	.EVEN.PAGE; DATA AREAS;STOPT:	.WORD	0ABORT:	.WORD	0REP:	.WORD	0BUFFER:	.ASCII	<CR>	.BLKB	79.SETUP::	.WORD	0INFLAG:	.WORD	0OUTFLG:	.WORD	0ENDFLG:	.WORD	0ECHO:	.WORD	0STAT:	.WORD	0,0WARN:	.WORD	0NUM:	.WORD	      0.PAGE.SBTTL PRINT HERALD AND DO DIALOGSHUTDO:	CALL	TTCHK				; Make sure we are running      ; KR001						; from TT0: or batch            ; KR001	MOV	#HERALD,HELP+Q.IOPL		;SET UP HERALD TEXT             ; KR001	MOV	#LHERLD,HELP+Q.IOPL+2		;AND ITS LENGTH	DIR$	#HELP				;PRINT ITQ1:	SPEAK	#A1,#LA1,#DEF1,#LDEF1,#0,#HELP1,#LHELP1,REP,,STAT,Q1,CZ,ERR	CALL	TEST15				;MAKE SURE ANSWER IS VALID	BCS	Q1				;IT WASN'T	MOV	R1,STOPT			;SAVE ITQ2:	SPEAK	#A2,#LA2,#DEF2,#LDEF2,#0,#HELP2,#LHELP2,REP,,STAT,Q1,CZ,ERR	CALL	TEST      15				;MAKE SURE ANSWER IS VALID	BCS	Q2				;IT WASN'T	MOV	R1,ABORT			;SAVE ITQ3:	SPEAK	#A3,#LA3,#DEF3,#LDEF3,#0,#HELP3,#LHELP3,REP,,STAT,Q2,CZ,ERR	MOV	#99.,R5				;SET UPPER LIMIT	CALL	TESTR5				;MAKE SURE ANSWER IS VALID	BCS	Q3				;IT WASN'T	MOV	R1,TIMLFT			;SAVE IT	CLR	R0				;MAKE DOUBLE PRECISION	DIV	#5,R0				;DIVIDE BY 5	INC	R0				;BUMP IT	MOV	R0,INTRVL			;SET THE INTERVAL;; FIND OUT WHY WE ARE RUNNING AND ON WHAT KIND OF SYSTEM;	GTSK$C	BUFFER				;GET THE TASK PARAMETERS	CMP	BUFFER,#^RSET			;CHECK IF TAS      K NAME IS SETSHT	BNE	10$				;NO	CMP	BUFFER+2,#^RSHT			;SECOND WORD	BNE	10$				;NOT FROM SETUP	DEC	SETUP				;FLAG FROM SETUP10$:	GPRT$C	TP1PAR,BUFFER			;FIND OUT IF THERE IS A TP1PAR	BCC	20$				;THERE IS	JMP	SHUTUP				;THERE ISN'T.PAGE.SBTTL SHUT DOWN TRANSACTION PROCESSING20$:	DIR$	#ALTP				;RAISE THE PRIORITY                                                                                ; KR002	CALL	SPWNIT			; Spawn the command which will enable   ; KR002					;   logins.                             ; KR002                                                                                      ; KR002	CALL	WAITEX			; Wait for the command to complete.     ; KR002                                                                                ; KR002	CRVT$C	VTIN,VTOUT,,,,ERR		;CREATE A VIRTUAL TERMINAL      ; KR002	MOV	$DSW,ELVT+E.LVNM		;SET THE UNIT NUMBER FOR ELIMINA; KR002	MOV	$DSW,ALUN+A.LUNU		;SET UP FOR ASSIGN LUN          ; KR002;                                                                               ; KR00      2;	Set up the spawn directive to spawn hello on the virtual terminal       ; KR002;                                                                               ; KR002	MOV	$DSW,SPAWN+S.PWVT	; Set up for spawning to the            ; KR002					; virtual terminal.                     ; KR002                                                                                ; KR002	MOV	#HEL, SPAWN+S.PWCA	; Set up the address of the HEL command.; KR002                                                                                      ; KR002	MOV	#LHEL, SPAWN+S.PWCL	; Set up the length of the HEL command. ; KR002                                                                                ; KR002	DIR$	#ALUN,ERR			;ASSIGN THE LUN                 ;**-4	CALL	SPWNIT				;SPAWN HELLO	CALL	WAITEX				;WAIT TILL DONE	DEC	ECHO				;SET ECHO FLAG	MOV	#TPCTRL,SPAWN+S.PWCA		;SET COMMAND LINE	MOV	#LTPCTR,SPAWN+S.PWCL		;AND LENGTH	CALL	SPWNIT				;SPAWN IT	MOV	#STOP,OUTVT+Q.IOPL		;SET UP STOP COMMAND	MOV	#LSTOP,OUTVT+Q.IOPL+2		;AND LEN      GTH	CALL	RESPND				;RESPOND TO PROMPT	MOV	#ALL,OUTVT+Q.IOPL		;SET UP ALL RESPONSE	MOV	#LALL,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPOND	MOV	STOPT,R1			;GET STOP TIME	CALL	NUMRES				;GIVE NUMERICAL RESPONSE	TST	WARN				;WAS THERE A WARNING	BNE	40$				;YES. SKIP NEXT RESPONSE	MOV	ABORT,R1			;GET ABORT TIME	CALL	NUMRES				;GIVE NUMERICAL RESPONSE40$:	MOV	#REMOVE,OUTVT+Q.IOPL		;SET UP FOR REMOVE COMMAND	MOV	#LREMOV,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPOND	MOV	#ALL,OUTVT+Q.IOPL		;RESPOND WITH ALL	MOV	      #LALL,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPONSE	MOV	#EXT,OUTVT+Q.IOPL		;EXIT	MOV	#LEXT,OUTVT+Q.IOPL+2		;LENGTH	CALL	RESPND				;RESPONSE	CALL	WAITEX				;WAIT FOR EXIT	MOV	#AUXSTP,SPAWN+S.PWCA		;RUN $AUXSTP	MOV	#LAUXST,SPAWN+S.PWCL		;LENGTH	MOV	#AUXSTP,HELP+Q.IOPL		;PRINT TEXT	MOV	#LAUXST,HELP+Q.IOPL+2		;LENGTH	DIR$	#HELP				;DO IT	CALL	SPWNIT				;SPAWN IT	CALL	WAITEX				;WAIT FOR EXIT	MOV	#BYE,SPAWN+S.PWCA		;LOGOFF	MOV	#LBYE,SPAWN+S.PWCL		;LENGTH	CLR	ECHO				;DON'T ECHO	CALL	SPWNIT				;SPAWN IT	CALL	W      AITEX				;WAIT FOR EXIT	MOV	#50.,ALTP+A.LTPR		;SET PRIORITY TO 50	DIR$	#ALTP				;DO IT	DIR$	#ELVT				;GET RID OF THE VIRTUAL TERMINAL	JMP	SHUTUP				;GO DO STANDARD PROCESSING.PAGE.SBTTL	CONTROL Z AND ERROR PROCESSING; COME HERE FOR ^Z;CZ:	MOV	#EX$WAR,R0			;SET STATUS	JMP	$EXST				;EXIT;; COME HERE FOR HARD ERROR;ERR:	MOV	#ERROR,HELP+Q.IOPL		;GET MESSAGE	MOV	#LERRO,HELP+Q.IOPL+2		;LENGTH	DIR$	#HELP				;PRINT IT	MOV	#EX$ERR,R0			;SET ERROR STATUS	JMP	$EXST				;EXIT.PAGE.SBTTL	SUBROUTINES.SBTTL	NUMRES - NUMERI      CAL RESPONSE;; NUMRES - GIVE A NUMERICAL RESPONSE;;	INPUT:	R1 = BINARY NUMBER  ( 0 <= R1 <= 99);;	OUTPUT:	R0,R1,R2,R3 = UNDEFINED;NUMRES:	MOV	#1,R2				;INITIALIZE DIGIT COUN	MOV	#NUM,R3				;POINTER FOR RESULTS	CLR	R0				;MAKE DOUBLE PRECISION	DIV	#10.,R0				;GET THE DIGITS	TST	R0				;QUOTIENT	BEQ	10$				;NONE	INC	R2				;TWO DIGITS	ADD	#'0,R0				;MAKE ASCII	MOVB	R0,(R3)+			;SAVE IT                        ; KR00110$:	ADD	#'0,R1				;MAKE SECOND DIGIT ASCII        ; KR001	MOVB	R1,(R3)				;SAVE IT	MOV	#NUM,OUTVT      +Q.IOPL		;SET UP POINTER TO TEXT	MOV	R2,OUTVT+Q.IOPL+2		;AND LENGTH.SBTTL RESPND - RESPOND;; RESPND - RESPOND TO PROMPT;;	INPUT:	OUTVT+Q.IOPL ---> REPONSE;		OUTVT+Q.IOPL+2 = LENGTH OF RESPONSE;RESPND:	CLR	WARN				;INITIALIZE WARNING FLAG20$:	CALL	OUTPUT				;CHECK FOR OUTPUT	CALL	ENDCHK				;ARE WE DONE	BCS	ERR				;YES. BUT WE SHOULDN'T BE	TST	INFLAG				;VT WANT INPUT	BEQ	20$				;NO	TST	WARN				;WAS WARNING RECEIVED	BEQ	30$				;NO	CMP	OUTVT+Q.IOPL,#NUM		;IS THIS A NUMBER	BEQ	40$				;YES30$:	DIR$	#OUTVT				;OU      TPUT IT	MOV	OUTVT+Q.IOPL,HELP+Q.IOPL	;COPY BUFFER	MOV	OUTVT+Q.IOPL+2,HELP+Q.IOPL+2	;AND COUNT	DIR$	#HELP				;PRINT IT	DEC	INFLAG				;CORRECT COUNT40$:	RETURN					;DONE.PAGE.SBTTL	TEST15 - TEST DIALOG RESPONSE;; TEST15 - TEST THE DIALOG RESPONSE TO MAKE SURE ITS BETWEEN 0 AND 15.;;	INPUT:	REP = RESPONSE;;	OUTPUT:	R1 = RESPONSE;		R5 = UNDEFINED;		C SET IF ERROR;TEST15:	MOV	#15.,R5				;SET UPPER LIMIT TO 15.SBTTL	TESTR5 - TEST DIALOG RESPONSE;; TESTR5 - TEST THE DIALOG RESPONSE TO MAKE SURE ITS BETWEEN 0 AND R      5;;	INPUT:	R5 = MAXIMUM VALUE;		REP = RESPONSE;;	OUTPUT:	R1 = RESPONSE;		R5 = UNDEFINED;		C SET IF ERROR;TESTR5:	MOV	REP,R1				;GET THE REPLY	BPL	10$				;SKIP IF POSITIVE	MOV	#POSITV,HELP+Q.IOPL		;SET TEXT FOR ERROR	MOV	#LPOSTV,HELP+Q.IOPL+2		;SET ITS LENGTH	BR	20$				;GO PRINT IT10$:	CMP	R1,R5				;CHECK MAXIMUM	CLC					;ASSUME GOOD	BLE	30$				;SKIP IF OK	MOV	#MAX,HELP+Q.IOPL		;SET ERROR TEXT	MOV	#LMAX,HELP+Q.IOPL+2		;AND ITS LENGTH20$:	DIR$	#HELP				;PRINT ERROR MESSAGE	SEC					;FLAG IT30$:	RETURN					;DON      E.SBTTL	SPAWN ROUTINE;; SPWNIT - SPAWN MCR COMMAND LINE;;	INPUT:	SPAWN+S.PWCA ---> COMMAND LINE;		SPAWN+S.PWCL =  LENGTH OF COMMAND LINE;SPWNIT:	DIR$	#SPAWN,ERR			;SPAWN IT	RETURN					;THATS IT.SBTTL	WAIT FOR EXIT;; WAITEX - WAIT FOR SPAWNED TASK TO EXIT;WAITEX:	CALL	OUTPUT				;CHECK FOR OUTPUT FROM VT	CALL	ENDCHK				;CHECK FOR EXIT	BCC	WAITEX				;LOOP IF NOT EXIT	RETURN					;DONE.PAGE.SBTTL	GET VT OUTPUT;; OUTPUT - GET VT OUTPUT AND OPTIONALLY ECHO IT;; 	OUTPUT: WARN <> 0 IF ERROR MESSAGE RECEIVED;OUTPUT:	      MRKT$C	,1,2,TIMAST			;WAIT 1 SECOND	STOP$C					;BY STOPPING10$:	TST	OUTFLG				;IS THERE OUTPUT	BEQ	30$				;NO	DEC	OUTFLG				;CORRECT COUNT	DIR$	#INVT,ERR			;GET THE VT INPUT	TST	ECHO				;ARE WE ECHOING	BEQ	10$				;NO	CMPB	BUFFER,#'%			;IS IT A WARNING	BNE	20$				;NO	DEC	WARN				;YESY SET FLAG20$:	MOV	STAT+2,R0			;GET THE COUNT	MOV	#BUFFER,HELP+Q.IOPL		;POINT TO IT	MOV	R0,HELP+Q.IOPL+2		;SET THE COUNT	DIR$	#HELP				;ECHO	BR	10$				;LOOP30$:	RETURN					;CHECK FOR OTHER CONDITIONS.SBTTL	CHECK FOR EXIT;; ENDCHK       - CHECK FOR EXIT. ABORT IF STATUS IS BAD;;	OUTPUT:	C SET IF EXIT FOUND;ENDCHK:	TST	ENDFLG				;IS THIS AN EXIT	BEQ	20$				;NO	CMP	ENDFLG,#2			;GOOD EXIT	BLE	10$				;YES	JMP	ERR				;ERROR10$:	CLR	ENDFLG				;RESET THE END FLAG	SEC					;SET THE CARRY20$:	RETURN					;DONE	.PAGE                                                                   ; KR001                                                                                ; KR001	.SBTTL	TTCHK - Check for TT0: or batch                                 ; KR0      01                                                                                ; KR001TTCHK:	CLR	R0		; Set to check lun 13.                          ; KR001                                                                                ; KR001	CALL	CHKTT0		; Call the standard routine for                 ; KR001				;   checking lun 13.                            ; KR001                                                                                ; KR001	BCC	30$		; If carry is clear, just return.                     ; KR001                                                                                ; KR001	MOV	$DSW, R1	; Move the DSW to R1.                           ; KR001                                                                                ; KR001	TST	R1		; Test R1 for error.                            ; KR001                                                                                ; KR001	BLE	10$		; We had a directive error, go handle.          ; KR001                                                                                      ; KR001	MOV	#TTEM1, HELP+Q.IOPL                                             ; KR001	MOV	#STTEM1, HELP+Q.IOPL+2                                          ; KR001				; Move the message information to the           ; KR001				;   QIOW DPB.                                   ; KR001                                                                                ; KR001	BR	20$		; Go print the message.                         ; KR001                                                                                      ; KR00110$:	NEG	R1		; Make the error positive.                      ; KR001                                                                                ; KR001	MOV	#TTDE, R0	; Put the address of where the error            ; KR001				;   goes into R0.                               ; KR001                                                                                ; KR001	CALL	$CBDMG		; Convert the error to decimal and              ; KR001				;   place in the message       buffer.                ; KR001                                                                                ; KR001	MOV	#TTEM2, HELP+Q.IOPL                                             ; KR001	MOV	#STTEM2, HELP+Q.IOPL+2                                          ; KR001				; Move the buffer parameters into the           ; KR001				;   QIOW DPB.                                   ; KR001                                                                                ; KR00120$:	DIR$	#HELP		; Write out whicheve      r message we should.        ; KR001                                                                                ; KR001	EXST$S	#EX$SEV		; Exit with severe status.                      ; KR001                                                                                ; KR00130$:	RETURN			; Return to the caller.                         ; KR001                                                                                ; KR001	.PAGE                                                                   ;       KR001	.SBTTL	AST PROCESSING                                                  ; KR001	.ENABL	LSB;; VT REQUESTED INPUT;VTIN:	INC	INFLAG				;FLAG INPUT WAITING	BR	10$				;SKIP;; VT REQUESTED OUTPUT;VTOUT:	INC	OUTFLG				;FLAG WAITING FOR OUTPUT10$:	CMP	(SP)+,(SP)+			;POP 2 WORDS OFF STACK	BR	20$				;SKIP;; SPAWN TASK EXIT;VTDONE:	MOV	STAT,ENDFLG			;SAVE THE STATUS	INC	ENDFLG				;MAKE SURE ITS SET;; MARK TIME REQUEST;TIMAST:20$:	USTP$C					;UNSTOP THE PROGRAM	TST	(SP)+				;CLEAN UP STACK	ASTX$S					;EXIT	.DSABL	      LSB	.END	SHUTDO           x|~kQÁ› 8$        	.TITLE	SHUTUP - SHUT DOWN RSX11M SYSTEM	.IDENT	/01.5/	.IDENT	/V1.1A00/                                                       ; KR001;; COPYRIGHT (C) 1976, 1977, 1978; 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 DOCUMENT 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.;;; BY:		H.LEV; DATE:		10/7/75; VERSION:	01.4;;; MODIFIED:;;	HJL050	24-JAN-77 ADD SUPPORT FOR CLI      ;;	EB042	27-APR-77 INCREASE TIMEOUT FOR MESSAGES;;	EB058	17-JUN-77 WAIT FOR TKTN'S DISMOUNT MESSAGE TO FINISH;			AND CHECK FOR PSEUDO DEVICE AS TI: (SHUTUP;			STARTED WITH SOME SORT OF TIME DEPENDENCY);;	PW002	07-SEP-77 ASK FOR DELAY BEFORE DISABLING LOGINS.;			INVOKE [1,2]SHUTUP.CMD.;;	PW003	09-SEP-77 WHEN WAITING FOR A CHECKPOINT FILE TO BECOME;			DEALLOCATED, UNSTOP ANY TASK THAT IS CHECKPOINTED;			TO THAT FILE AND STOPPED (NOT FOR TERM. I/O OR EVENT;			FLAG).;;	PL002	26-OCT-77 ADD EXIT WITH STATUS;;	PL0      45	7-JULY-78 SUBMIT LB:[1,2]SHUTUP.CMD TO INDIRECT;			  SUBMIT IT BEFORE REQUESTING ERROR LOG FINISH;			  TASK;;	GW001	16-JAN-78 CONDITIONALIZE CODE FOR SETUP;;	GW002	19-APR-78 DON'T DISMOUNT SYSTEM DISK;;	GW003	05-JUL-78 FIX UP HERALD FOR TRAX;;	GW004	14-AUG-78 ADD GLOBALS AND REMOVE DIALOG FOR SHUTDOWN;;	KR001	08-Mar-79 Changed spawning of @SHUTUP.CMD to go to              ; KR001;				task IND and not to be printed.                 ; KR001;; THIS TASK WILL ISSUE WARNING MESSAGES TO ALL TERMINALS; LOG ALL       TERMINALS OFF, ABORT ALL NON-PRIVILEGED TASKS,; DISMOUNT ALL DEVICES AND HALT.;	.MCALL	QIO$,WTSE$S,MRKT$S,DIR$,EXIT$S,CMKT$S,WTLO$S	.MCALL	MTADF$,WSIG$S,GTIM$S	.MCALL	QIOW$,MRKT$C							; PW002;										; PW002	MTADF$			; DEFINE ANSI MAGTAPE OFFSETS;; LOCAL DATA;;; MESSAGES;	.NLIST	BEXMSG0:	.ASCIZ	<15><12>/RSX11M SHUT DOWN PROGRAM/<12>MSG1:	.ASCIZ	<15>/ENTER MINUTES TO WAIT BEFORE SHUTDOWN: /MSG2:	.ASCIZ	<15>/ENTER MINUTES BETWEEN MESSAGES: /MSG3:	.ASCII	<15><12><7>/XX-XXX-XX XX:XX PLEASE FINISH UP, /<7>MS      G3A:	.ASCIZ	/XX MINUTES BEFORE SHUTDOWN/<12><7><15>MSG4:	.ASCIZ	<15><7>/ALL FURTHER LOGINS ARE DISABLED/<7>MSG5:	.ASCIZ	<15>/ENTER MINUTES TO WAIT BEFORE DISABLING LOGINS: /		; PW002ERR1:	.ASCIZ	<15>/SHUTUP CAN ONLY BE RUN BY PRIVILEGED USER OR FROM TT0:/ERR2:	.ASCIZ	<15>/SHUTUP'S TI: IS A PSEUDO DEVICE/				; EB058;; COMMANDS ISSUED INTERNALLY;CMD2:	.ASCIZ	/BYE/<15>CMD3:	.ASCII	/DMO /CMD3A:	.ASCIZ	/DDNN:LLLLLL/<15>CMD4:	.ASCIZ	/ERF/<15>CMD5:	.ASCII	/ACS /CMD5A:	.ASCIZ	%DDNN:/BLKS=0.  %CMD6:	.ASCIZ	/IND @LB:      [1,2]SHUTUP/<15>                                       ; KR001BLKS:	.ASCIZ	%/BLKS=0.%<15>                                                  ;**-1MONTH:	.ASCII	/JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC/	.LIST	BEX;; MISCELANEOUS DATA;IBUF:	.BLKB	10.		; INPUT BUFFER	.EVENMSGDPB:	QIO$	IO.WLB!TF.WBT,1,1,,IOSTAT,,<0,0,40>INDPB:	QIOW$	IO.RVB,1,1,,,,<IBUF,10.,0>					; PW002IOSTAT:	.BLKW	2		; I/O STATUS BLOCKTIMLFT::.WORD	0		; TIME LEFT BEFORE SHUT DOWN			; GW004INTRVL::.WORD	0		; INTERVAL BETWEEN MESSAGES			; GW004DISLO      G:	.BLKW	1		; DELAY TO DISABLE LOGIN			; PW002TIUCB:	.WORD	0		; TI UCB ADDRESSTRMUCB:	.WORD	0		; CURRENT TERMINAL UCB ADDRESSCO:	.WORD	0		; CO UCB ADDRESSSYUCB:	.WORD	0		;UCB ADDRESS FOR SYSTEM DISK			; GW002WTMASK:	.WORD	0		; ACTIVE LUN MASK WORDTIMBUF:	.BLKW	8.		; TIME BUFFERINDNAM:	.RAD50	/AT.   /	; TASK NAME OF INDIRECT MCR PROCESSOR		; PW002;; TABLES FOR MULTI-TERMINAL I/O;;; POINTERS TO DPBS FOR LUNS 1-8;DPBTAB:	.WORD	MSGDPB		;	.WORD	DPB2		;	.WORD	DPB3		;	.WORD	DPB4		;	.WORD	DPB5		;	.WORD	DPB6		;	.WOR      D	DPB7		;	.WORD	DPB8		;;; POINTERS TO I/O STATUS BLOCKS FOR LUNS 1-8;STATAB:	.WORD	IOSTAT		;	.WORD	IOST2		;	.WORD	IOST3		;	.WORD	IOST4		;	.WORD	IOST5		;	.WORD	IOST6		;	.WORD	IOST7		;	.WORD	IOST8		;;; DPBS FOR LUNS 2-8;DPB2:	QIO$	IO.WLB!TF.WBT,2,2,,IOST2,,<0,0,40>DPB3:	QIO$	IO.WLB!TF.WBT,3,3,,IOST3,,<0,0,40>DPB4:	QIO$	IO.WLB!TF.WBT,4,4,,IOST4,,<0,0,40>DPB5:	QIO$	IO.WLB!TF.WBT,5,5,,IOST5,,<0,0,40>DPB6:	QIO$	IO.WLB!TF.WBT,6,6,,IOST6,,<0,0,40>DPB7:	QIO$	IO.WLB!TF.WBT,7,7,,IOST7,,<0,0,40>DPB8:	QIO$	IO.WLB!TF.WBT      ,8.,8.,,IOST8,,<0,0,40>;; I/O STATUS BLOCKS FOR LUNS 2-8;IOST2:	.BLKW	2		;IOST3:	.BLKW	2		;IOST4:	.BLKW	2		;IOST5:	.BLKW	2		;IOST6:	.BLKW	2		;IOST7:	.BLKW	2		;IOST8:	.BLKW	2		;BITTAB:	.WORD	1		;	.WORD	2		;	.WORD	4		;	.WORD	10		;	.WORD	20		;	.WORD	40		;	.WORD	100		;	.WORD	200		;SHUTUP::MOV	$TKTCB,R0	; GET OUR TCB ADDRESS				; GW004	MOV	T.UCB(R0),R0	; GET TI UCB ADDRESS	MOV	R0,TIUCB	; SAVE TI UCB ADDRESS	BIT	#DV.PSE,U.CW1(R0) ; IS IT A PSEUDO DEVICE?			; EB058	BEQ	3$		; NO						; EB058	MOV	#ERR2,R0	; GET ADD      RESS OF ERROR MESSAGE			; EB058	BR	6$		; PRINT MESSAGE					; EB0583$:	BIT	#U2.PRV,U.CW2(R0) ; IS TI: PRIVILEGED?				; EB058	BNE	10$		; YES	MOV	U.DCB(R0),R1	; NO, GET DCB ADDRESS	CMP	D.NAM(R1),#"TT	; IS THIS TTXX:?	BNE	5$		; NO	TSTB	D.UNIT(R1)	; YES, DOES TT0: START HERE?	BNE	5$		; NO	CMP	D.UCB(R1),R0	; YES, IS OUR UCB TT0:?	BEQ	10$		; YES5$:	MOV	#ERR1,R0	; NO, ISSUE ERROR MESSAGE6$:	CALL	MSGOUT		;						; EB058	MOV	#EX$ERR,R0	; INDICATE ERROR STATUS				; PL010	JMP	EXIT2		; AND EXIT					; EB05810$:										;       GW004	.IF	DF	XXXXXX							; GW004	MOV	#MSG0,R0	; PRINT IDENTIFIER	CALL	MSGOUT		;	.ENDC									; GW004	MOV	TIUCB,R0	; GET OUR UCB ADDRESS				; PL045	BIS	#U2.PRV,U.CW2(R0) ; MAKE US UNCONDITIONALLY PRIVILIGED		; PL045	MOV	TIUCB,TRMUCB	; SET TI TO OUR TERMINAL			; PL045;										; PL045; SUBMIT LB:[1,2]SHUTUP.CMD TO INDIRECT						; PL045;										; PL045	MOV	#CMD6,R2	; GET INDIRECT MCR COMMAND                      ; KR001	CALL	GIVMCR		; GIVE TO MCR                                   ; KR00115$:				;						;*      *-2	MOV	#INDNAM,R3	; GET TASK NAME OF INDIRECT MCR			; PL045	CALL	$GTTSK		; SEARCH STD LIST				; PL045	BCS	17$		; IF CS NOT FOUND, COMPLETE			; PL045	CMP	T.UCB(R0),TIUCB	; IS IT OUR TASK?				; PL045	BNE	17$		; IF NE NO					; PL045	TST	T.STAT(R0)	; IS IT ACTIVE:					; PL045	BMI	17$		; IF MI NO					; PL045	CALL	W1SEC		; WAIT ONE SECOND				; PL045	BR	15$		; TRY AGAIN					; PL04517$:				; REF LABEL					; PL045	.IF	DF	XXXXXX							; GW004;										; PW002; ASK FOR TIME LEFT BEFORE SHUTDOWN.						; PW002; IF MOR      E THAN 3 MINUTES, ASK FOR INTERVAL BETWEEN MESSAGES AND			; PW002; DELAY BEFORE DISABLING LOGINS.						; PW002; BROADCAST PERIODIC MESSAGES TO ALL ACTIVE TERMINALS AND DISABLE		; PW002; LOGINS WHEN DELAY IS OUT.							; PW002;										; PW002	MOV	#1,INTRVL	; INITIALIZE INTERVAL TO 1 MINUTE		; PW002	CLR	DISLOG		; INIT. DISABLE-LOGIN DELAY TO 0		; PW002	MOV	#MSG1,R0	; ASK FOR TIME LEFT				; PW002	CALL	PROMPT								; PW002	MOV	R1,TIMLFT	; SAVE						; PW002	CMP	R1,#3		; MORE THAN 3 MINUTES?				; PW002	BLOS	40      $		; N - JUMP					; PW00220$:	MOV	#MSG2,R0	; ASK FOR INTERVAL				; PW002	CALL	PROMPT								; PW002	MOV	R1,INTRVL	; SAVE						; PW002	BEQ	20$		; DON'T ALLOW ZERO!				; PW002	CMP	R1,TIMLFT							; PW002	BHI	20$		; DON'T ALLOW HIGHER THAN TIME LEFT!		; PW00230$:	MOV	#MSG5,R0	; ASK FOR DELAY BEFORE DISABLE LOGIN		; PW002	CALL	PROMPT								; PW002	MOV	R1,DISLOG	; SAVE						; PW002	ADD	#3,R1								; PW002	CMP	R1,TIMLFT							; PW002	BHI	30$		; DON'T ALLOW HIGHER THAN TIME LEFT MINUS 3!	; PW002	.ENDC									;       GW00440$:	TST	DISLOG		; TIME TO DISABLE LOGINS NOW?			; PW002	BNE	50$		; N - JUMP					; PW002	BIS	#FE.NLG,$FMASK	; Y - DISABLE LOGINS				; PW002	MOV	#MSG4,R0	; PRINT MESSAGE					; PW002	CALL	MSGOUT								; PW00250$:	MOV	TIMLFT,R0	; GET TIME LEFT					; PW002	BEQ	80$		; ZERO - JUMP					; PW002	MOV	#1,R1		; ASSUME TIMER VALUE 1 MIN			; PW002	SUB	#3,R0		; MORE THAN 3 MINUTES LEFT?			; PW002	BLOS	70$		; N - JUMP, USE 1 MIN TIMER			; PW002	MOV	DISLOG,R1	; Y - GET REMAINING DELAY FOR DIS. LOGINS	; PW002	BEQ	60$		      ; ZERO - ALREADY DISABLED, JUMP			; PW002	CMP	INTRVL,R1	; DIS. LOGINS OR MESSAGE COMES NEXT?		; PW002	BHIS	65$		; DIS. LOGINS - JUMP				; PW00260$:	MOV	INTRVL,R1	; MESSAGE IS NEXT				; PW00265$:	CMP	R0,R1		; MAKE SURE INTERVAL DOES NOT RESULT IN		; PW002	BHIS	70$		; LESS THAN 3 MINUTES LEFT			; PW002	MOV	R0,R1								; PW00270$:	MRKT$S	#10.,R1,#3	; SET TIMER					; PW002	MOV	R1,-(SP)	; SAVE R1					; PW002	CALL	TIMSG		; BROADCAST					; PW002	MOV	(SP)+,R1	; RESTORE R1					; PW002	WTSE$S	#10.		; WAIT FOR TIMER	      			; PW002	SUB	R1,TIMLFT	; UPDATE TIME LEFT				; PW002	TST	DISLOG		; LOGINS ALREADY DISABLED?			; PW002	BEQ	50$		; Y - JUMP					; PW002	SUB	R1,DISLOG	; N - UPDATE DELAY				; PW002	BR	40$								; PW002;										; PW002; TIME IS UP.									; PW002;										; PL045; LOG OFF ALL ACTIVE USERS, STOP ERROR LOGGER, DISMOUNT DISKS, HALT.		; PL045;										; PL045;80$:	CALL	TIMSG		; BROADCAST FINAL MESSAGE			; PW002	CALL	LOGOFF		; LOGOFF ALL ACTIVE USERS			; PW002	MOV	TIUCB,R0	; GET OUR UCB ADDRESS	BIS	#U2.PRV,U      .CW2(R0) ; MAKE US UNCONDITIONALLY PRIVILEGED	MOV	$COPT,R0	; GET ADDRESS OF CO UCB	MOV	U.RED(R0),CO	; SAVE REDIRECT POINTER OF CO	MOV	TIUCB,U.RED(R0)	; REDIRECT IT TO TI:	MOV	TIUCB,TRMUCB	; SET TI TO OUR TERMINAL	TST	$ERRPT		; IS ERROR LOGGER ACTIVE?	BEQ	120$		; SKIP IF NOT					; PL045	MOV	#CMD4,R0	; YES, GET COMMAND TO TURN IT OFF	CALL	DGIVMC		; DISPLAY AND GIVE TO MCR			; PW00290$:	CALL	W1SEC		; WAIT 1 SECOND					; PW002	TST	$ERRPT		; IS IT STILL ACTIVE?	BNE	90$		; Y - WAIT					; PW002120$:	CALL	DISMNT		;       DISMOUNT ALL DISKS	TST	SETUP		;IS THIS A SETUP RUN				; GW001	BNE	130$		;YES						; GW001	CALL	$SWSTK,EXIT	; SWITCH TO SYSTEM STATE	MOVB	#PR7,@#PS	; LOCK OUT INTERRUPTS	HALT			; STOP	CLRB	@#PS		; ENABLE INTERRUPTS	RETURN			; RETURN TO USER STATE130$:										; GW001EXIT:	BIC	#FE.NLG,$FMASK	; ENABLE LOGINS	MOV	$COPT,R0	; GET CO UCB ADDRESS	MOV	CO,U.RED(R0)	; RESET IT	MOV	#EX$SUC,R0	; INDICATE SUCCESS STATUS			; PL010EXIT2:	JMP	$EXST		; EXIT WITH STATUS				; PL010;+; *** - DISMNT  -  DEALLOCATE ALL CHECKPO      INT FILES;		   AND DISMOUNT ALL VOLUMES;;;-DISMNT:	MOV	$DEVHD,R5	; GET DEVICE LIST POINTER	MOV	R5,R4		; COPY IT					; GW0025$:	CMP	D.NAM(R4),#"SY	; IS THIS THE SYSTEM DISK			; GW002	BEQ	7$		; YES						; GW002	MOV	D.LNK(R4),R4	; GET NEXT DEVICE				; GW002	BNE	5$		; LOOP IF THERE IS ONE				; GW0027$:	MOV	D.UCB(R4),R4	; GET UNIT CONTROL BLOCK			; GW002	MOV	U.RED(R4),SYUCB	; SAVE THE REDIRECTED UCB			; GW00210$:	CLR	R4		; GET LAST UNIT ON DCB	BISB	D.UNIT+1(R5),R4	;	CLR	R3		; GET FIRST UNIT ON DCB	BISB	D.UNIT(R5      ),R3	;	SUB	R3,R4		; COMPUTE NUMBER OF UNITS ON DCB	MOV	D.UCB(R5),R3	; GET FIRST UCB ADDRESS20$:	BIT	#DV.MNT,U.CW1(R3) ; IS UNIT MOUNTABLE?	BEQ	200$		; NO						; EB058	BITB	#US.MNT,U.STS(R3) ; YES, IS IT MOUNTED?	BEQ	201$		; YES						; EB058200$:	JMP	40$		; NO						; EB058201$:	MOV	#CMD3A,R0	; POINT TO AREA FOR DEVICE NAME			; EB058	MOV	R3,-(SP)	; SAVE UCB ADDRESS	CALL	$FMTDV		; FORMAT DEVICE NAME	MOV	(SP)+,R3	; RESTORE R3	BITB	#US.LAB,U.STS(R3) ; LABELED TAPE?	BEQ	21$		; NO	MOV	U.VCB(R3),R1	; YES, GET VSCB       ADDRESS	MOV	V.MVL(R1),R1	; AND GET MOUNTED VOLUME LIST ADDRESS	BEQ	21$		; ZERO IS END OF LIST202$:	CMP	R3,M.UCB(R1)	; IS THIS ENTRY FOR UCB?	BEQ	204$		; YES	MOV	M.NXT(R1),R1	; NO, GET NEXT ENTRY	BNE	202$		; LOOP TILL END	BR	21$		;204$:	MOV	M.VIDP(R1),R1	; GET ADDRESS OF VOLUME ID	MOV	#6.,R2		; SET CHARACTER COUNT206$:	MOVB	(R1)+,(R0)+	; MOVE NEXT CHARACTER	DEC	R2		; DONE?	BGT	206$		; NO, LOOP21$:	MOVB	#15,(R0)+	; PUT IN TERMINATOR	CLRB	(R0)		; AND MARK END	BIT	#FE.CAL,$FMASK	; CHECKPOINT ALLOCATION SUPPORTE      D?	BEQ	29$		; NO, SKIP CHECK FOR FILES	MOV	#$CFLPT,R0	; GET ADDRESS OF CHECKPOINT FILE LIST22$:	MOV	(R0),R0		; GET NEXT ENTRY	BEQ	29$		; ZERO IS END OF LIST	CMP	R3,2(R0)	; IS THIS FILE ON OUR UNIT	BNE	22$		; NO	MOV	#CMD3A,R1	; YES, GET ADDRESS OF UNIT NAME	MOV	#CMD5A,R0	; GET AREA FOR ACS COMMAND24$:	MOVB	(R1)+,R2	; GET NEXT CHARACTER	CMPB	R2,#':		; COLON ?	BEQ	25$		; YES	MOVB	R2,(R0)+	; NO, PUT INTO ACS COMMAND	BR	24$		; LOOP25$:	MOVB	R2,(R0)+	; PUT IN COLON	MOV	#BLKS,R1	; GET ADDRESS OF BLKS=0. TEXT26$:	M      OVB	(R1)+,(R0)+	; GET NEXT CHARACTER	BNE	26$		; LOOP	MOV	#CMD5,R0	; GET COMMAND ADDRESS	CALL	DGIVMC		; DISPLAY AND GIVE TO MCR			; PW00227$:	CALL	W1SEC		; WAIT 1 SECOND					; PW002	MOV	#$CFLPT,R0	; GET CHECKPOINT FILE LIST ADDRESS28$:	MOV	(R0),R0		; GET ADDRESS OF NEXT ENTRY	BEQ	29$		; ZERO IS END OF LIST	CMP	R3,2(R0)	; IS THIS OUR DEVICE?	BNE	28$		; NO, LOOP TILL END;										; PW003; A CHECKPOINT FILE IS STILL ACTIVE ON THE DEVICE. SCAN TASK LIST		; PW003; FOR TASKS WHICH ARE IN NORMAL EXECUTION, CHECKPO      INTED TO A			; PW003; CHECKPOINT FILE ON OUR DEVICE AND STOPPED FOR REASON OTHER			; PW003; THAN TERMINAL I/O OR EVENT FLAG.						; PW003; UNSTOP ALL SUCH TASKS TO FORCE THEM TO BE LOADED INTO MEMORY			; PW003; AND THEN CHECKPOINTED TO THEIR OWN CHECKPOINT SPACE (HOPEFULLY!).		; PW003;										; PW003	CALL	$SWSTK,27$	; SWITCH TO SYSTEM STATE			; PW003	MOV	$TSKHD,R5	;; GET FIRST TCB				; PW003283$:	BIT	#TS.EXE,T.STAT(R5) ;; FIND A MATCHING TASK			; PW003	BNE	286$		;; NOT ACTIVE - JUMP				; PW003	BIT	#TS.CKP      ,T.STAT(R5) ;; CHECKPOINTED?				; PW003	BEQ	286$		;; N - JUMP					; PW003	BIT	#T2.STP,T.ST2(R5) ;; STOPPED?					; PW003	BEQ	286$		;; N - JUMP					; PW003	BIT	#T2.TIO!T2.SEF!T2.CAF,T.ST2(R5) ;; STOPPED FOR TERMINAL I/O	; PW003						;; OR EVENT FLAG, OR CHECK-	; PW003						;; POINTED TO OWN SPACE?	; PW003	BNE	286$		;; Y - JUMP					; PW003	MOV	T.CPCB(R5),R0	;; GET CKP PCB IN R0				; PW003	MOV	P.MAIN(R0),R0	;; GET MAIN PCB					; PW003	CMP	2(R0),R3	;; CHECKPOINTED TO OUR DEVICE?			; PW003	BNE	286$		;; N - JUMP		      			; PW003	MOV	R5,R0		;; Y - GET TCB IN R0				; PW003	CALL	$EXRQN		;; UNSTOP TASK					; PW003286$:	MOV	T.TCBL(R5),R5	;; GET NEXT TCB					; PW003	TST	T.TCBL(R5)	;; NULL TASK?					; PW003	BNE	283$		;; N - LOOP					; PW003	RETURN			;; Y - RETURN TO TASK STATE (AT 27$)		; PW003;										; PW00329$:	MOV	TIUCB,TRMUCB	; SET UCB ADDRESS FOR MCR	CMP	R3,SYUCB	; IS THIS THE SYSTEM DISK			; GW002	BEQ	40$		; YES. DON'T DISMOUNT				; GW002	MOV	#CMD3,R0	; GET BUFFER ADDRESS	CALL	DGIVMC		; DISPLAY AND GIVE TO MCR			; PW00      230$:	CALL	W1SEC		; WAIT 1 SECOND					; PW002	BITB	#US.MNT,U.STS(R3) ; IS IT STILL MOUNTED?	BEQ	30$		; YES, WAIT UNTIL ITS DISMOUNTED	MRKT$S	#2,#4,#2	; WAIT FOR TKTN TO PRINT ITS			; EB058	WTSE$S	#2		; DISMOUNT MESSAGE				; EB05840$:	ADD	D.UCBL(R5),R3	; GET NEXT UCB	DEC	R4		; ANY MORE LEFT?	BPL	45$		; YES	MOV	D.LNK(R5),R5	; NO, GET NEXT DCB	BEQ	50$		; ZERO IS END	JMP	10$		; OTHERWISE LOOP45$:	JMP	20$		;50$:	RETURN			;;+; *** - TIMSG  -  ISSUE TIME MESSAGE TO ALL LOGGED ON TERMINALS;;-TIMSG:	MOV	#MSG3+3,R0	;       GET BUFFER ADDRESS	GTIM$S	#TIMBUF		; GET CURRENT TIME	CALL	DATTIM		; FORMAT DAY AND TIME	MOV	TIMLFT,R1	; GET TIME LEFT BEFORE SHUT DOWN	MOV	#MSG3A,R0	; POINT TO TIME FIELD	MOV	R0,R2		; COPY POINTER	MOVB	#40,(R2)	; PUT IN BLANKS	MOVB	(R2)+,(R2)+	;	CLR	R2		; SUPPRESS LEADING ZEROES	CALL	$CBDMG		; CONVERT TO DECIMAL	MOV	#MSG3,R0	; POINT TO WHOLE MESSAGE	CALL	BRDCST		; BROAD CAST IT	RETURN			;;+; *** - LOGOFF  -  LOG ALL TERMINALS OFF;;-LOGOFF:	BIT	#FE.MUP,$FMASK	; MULTI-USER PROTECTION SUPPORTED?	BEQ	40$		;       NO	MOV	$DEVHD,R0	; YES, GET DEVICE LIST HEAD10$:	CMP	#"TT,D.NAM(R0)	; IS IT A TERMINAL?	BEQ	12$		; Y - JUMP					; PW002	CMP	#"VT,D.NAM(R0)	; MAYBE A VIRTUAL TERMINAL			; PW002	BNE	35$		; N - JUMP					; PW00212$:	MOV	D.UCB(R0),R1	; Y - GET FIRST UCB				; PW00215$:	BIT	#U2.LOG,U.CW2(R1) ; IS IT LOGGED ON?	BNE	30$		; NO	MOV	#CMD2,R2	; YES, GET BYE COMMAND	MOV	R1,TRMUCB	; SET TI UCB FOR MCR	CMP	R1,TIUCB	; IS THIS OUR TI?	BEQ	30$		; YES, CAN'T LOGOFF YET	CALL	GIVMCR		; GIVE IT TO MCR20$:	BIT	#U2.LOG,U.CW2(R1) ;       IS IT STILL LOGGED ON?	BNE	30$		; NO	CALL	W1SEC		; WAIT 1 SECOND					; PW002	BR	20$		; AND WAIT TILL ITS LOGGED OFF30$:	ADD	D.UCBL(R0),R1	; GET NEXT UCB ADDRESS	CMP	R0,U.DCB(R1)	; SAME DCB?	BEQ	15$		; YES35$:	MOV	D.LNK(R0),R0	; NO, GET NEXT DCB	BNE	10$		; AND TRY AGAIN40$:	RETURN			;;+; *** - MSGOUT  -  PRINT MESSAGE OUT TO LUN 1; INPUT:;	R0 - MESSAGE ADDRESS; OUTPUT:;	R0 - UNCHANGED;	R1 - USED;-MSGOUT:	MOV	#IO.WLB!TF.WBT,MSGDPB+Q.IOFN ; SET WRITE VIRTUAL FUNCTION CODE	MOV	R0,MSGDPB+Q.IOPL ; SET MESSAGE ADD      RESS	MOV	R0,R1		; COPY MESSAGE ADDRESS10$:	TSTB	(R1)+		; END OF MESSAGE?	BNE	10$		; NO	SUB	R0,R1		; YES, COMPUTE LENGTH	DEC	R1		;	MOV	R1,MSGDPB+Q.IOPL+2 ; SET LENGTH	DIR$	#MSGDPB		; ISSUE QIO	BCS	20$		;	MRKT$S	#2,#5,#2	; WAIT 5 SECONDS	WTLO$S	0,#3		; WAIT FOR I/O COMPLETE OR TIME OUT	CMKT$S			; CANCEL MARKTIME	CMPB	#1,IOSTAT	; I/O COMPLETE?	BEQ	20$		; YES	MOV	#IO.KIL,MSGDPB+2 ; NO, KILL IT	DIR$	#MSGDPB		;	BCS	15$		;	CALL	WEFN1		; WAIT FOR EFN 1				; PW00215$:	MOV	#IO.WLB!TF.WBT,MSGDPB+2 ; RESET I/O FUNCTION       TO WRITE20$:	RETURN			;;+; *** - PROMPT  -  ISSUE PROMPT AND READ IN DATA;; INPUT:;	R0 - MESSAGE ADDRESS;; OUTPUT:;	R0 - USED;	R1 - DATA READ IN;	R2, R3 USED;-PROMPT:	MOV	#'$,MSGDPB+Q.IOPL+4 ; SET FOR PROMPT MODE	CALL	MSGOUT		; WRITE IT OUT	MOV	#IBUF,R1	; ADDRESS INPUT BUFFER	MOV	#10.,R2		; SET SIZE OF BUFFER10$:	CLRB	(R1)+		; CLEAR BUFFER	DEC	R2		;	BNE	10$	MOV	#40,MSGDPB+Q.IOPL+4 ; RESET CARRIAGE CONTROL	DIR$	#INDPB		; READ DATA	MOV	#IBUF,R0	; GET BUFFER ADDRESS	CALL	$CDTB		; CONVERT TO BINARY	TST	R1				      				; PW002	BMI	PROMPT		; WE DON'T LIKE NEGATIVE VALUES!		; PW002	RETURN			;;+; *** - BRDCST  -  BROAD CAST MESSAGE TO ALL TERMINALS LOGGED ON;		   OR ALL TERMINALS IF NO MULTI-USER SUPPORT;; INPUT:;	R0 - MESSAGE ADDRESS;; OUTPUT:;	R0 - UNCHANGED;	R1, R2, R3 - USED;;-BRDCST:	CLR	R5		; ZERO LUN INDEX	CLR	WTMASK		; ZERO ACTIVE LUN MASK WORD	MOV	$DEVHD,R2	; GET DEVICE LIST HEAD10$:	CMP	D.NAM(R2),#"TT	; IS THIS A TERMINAL?	BNE	40$		; NO	MOV	D.UCB(R2),R3	; YES, GET FIRST UCB15$:	BIT	#FE.MUP,$FMASK	; MULTI-USER P      ROTECTION?	BEQ	20$		; NO, ISSUE MESSAGE TO ALL TERMINALS	BIT	#U2.LOG,U.CW2(R3) ; YES, LOGGED ON?	BNE	35$		; NO20$:	CALL	$SWSTK,22$	; SWITCH TO SYSTEM STATE	MOV	R5,R0		; GET LUN INDEX	ASL	R0		; DOUBLE IT	ADD	$HEADR,R0	; ADD HEADER ADDRESS	MOV	R3,H.LUN(R0)	; SET LUN TO CURRENT UCB	RETURN			; RETURN TO USER STATE22$:	MOV	DPBTAB(R5),R4	; GET DPB ADDRESS FOR THIS LUN	MOV	#IO.WBT,Q.IOFN(R4) ;SET WRITE BREAK THROUGH FUNCTION	MOV	R0,Q.IOPL(R4)	; SET BUFFER ADDRESS	MOV	R0,R1		; COPY BUFFER ADDRESS26$:	TSTB	(R1)+		;       END OF MESSAGE?	BNE	26$		; NO	SUB	R0,R1		; YES COMPUTE SIZE	DEC	R1		;	MOV	R1,Q.IOPL+2(R4)	; SET BUFFER LENGTH	BIS	BITTAB(R5),WTMASK ; SET LUN ACTIVE27$:	DIR$	R4		; ISSUE QIO	BCS	270$		; ERROR	CMPB	@STATAB(R5),#IE.RSU ; DID IT GET THROUGH?	BNE	271$		; YES270$:	WSIG$S			; NO, WAIT FOR SIGNIFICANT EVENT	BR	27$		; AND LOOP271$:	TST	(R5)+		; BUMP LUN INDEX	CMP	R5,#8.*2	; 8 LUNS ACTIVE?	BLT	35$		; NO, TRY TO START ANOTHER28$:	MRKT$S	#9.,#8.,#2	; YES, TIME OUT FOR 8 SECONDS			; EB042	WTSE$S	#9.		; AND WAIT	CLR	R5	      	; ZERO LUN INDEX30$:	BIT	BITTAB(R5),WTMASK ; IS LUN ACTIVE?	BEQ	32$		; NO	CMPB	@STATAB(R5),#IS.SUC ; YES, IS I/O COMPLETE?	BEQ	32$		; YES	MOV	DPBTAB(R5),R4	; NO, GET DPB ADDRESS	MOV	#IO.KIL,2(R4)	; SET FUNCTION TO KILL I/O	DIR$	R4		; ISSUE IT	MOV	R5,R1		; GET INDEX	ASR	R1		; CONVERT TO NUMBER	WTSE$S	R1		; WAIT FOR I/O32$:	TST	(R5)+		; BUMP INDEX	CMP	R5,#8.*2	; ALL 8 CHECKED?	BLT	30$		; NO, LOOP	CLR	WTMASK		; YES, SET NO LUNS ACTIVE	CLR	R5		; ZERO INDEX	TST	R2		; END OF DCBS?	BEQ	45$		; YES35$:	ADD	D.UCBL(R      2),R3	; NO, GET NEXT UCB	CMP	R2,U.DCB(R3)	; SAME DCB?	BEQ	15$		; YES40$:	MOV	D.LNK(R2),R2	; GET NEXT DCB	BNE	10$		; LOOP TILL END OF LIST	TST	WTMASK		; ANY I/O ACTIVE?	BNE	28$		; YES, WAIT FOR IT45$:	CALL	$SWSTK,50$	; SWITCH TO SYSTEM STATE	MOV	$HEADR,R0	; GET OUR HEADER ADDRESS	MOV	TIUCB,H.LUN(R0)	; ASSIGN LUN 1 TO TI50$:	RETURN;+; *** - GIVMCR  -  GIVE COMMAND TO MCR FOR PROCESSING;	DGIVMC  -  DISPLAY COMMAND AND GIVE IT TO MCR				; PW002;; INPUT:;	R2 - COMMAND ADDRESS; OUTPUT:;	CC - SUCCESSFUL;	CS - ERR      OR;;-DGIVMC:	CALL	MSGOUT		; DISPLAY COMMAND				; PW002	MOV	R0,R2		; GET BUFFER ADDRESS				; PW002GIVMCR:	CALL	$SWSTK,40$	; SWITCH TO SYSTEM STATE	MOV	R2,R5		; GET BUFFER ADDRESS	MOV	#84.,R1		; SET LENGTH OF BLOCK TO GET	CALL	$ALOCB		; TRY TO GET IT	BCC	10$		; GOT IT	MOV	@$HEADR,R0	; ERROR, GET H.CSP	INC	6(R0)		; SET USER MODE CARRY BIT	BR	30$		;10$:	MOV	R0,R1		; COPY ADDRESS OF BLOCK	CLR	(R0)+		; ZERO LINK WORD	MOV	TRMUCB,(R0)+	; SET TI UCB ADDRESS20$:	MOVB	(R5)+,(R0)+	; COPY DATA	BNE	20$		; UNTIL ZERO BYTE      	MOV	TRMUCB,R4	; GET TI UCB ADDRESS	BIS	#U2.AT.,U.CW2(R4) ; SET BIT TO SYNCHRONIZE WITH MCR	BIC	#U2.LOG,U.CW2(R4) ; MAKE SURE TERMINAL IS LOGGED ON	MOV	$MCRPT,R0	; GET MCR'S TCB ADDRESS				;HJL050	MOV	R4,R2		; GET TERMINAL UCB ADDRESS			;HJL050	CALL	$QCLIL		; INSERT INTO MCR'S COMMAND QUEUE		;HJL05030$:	RETURN			; RETURN TO USER STATE40$:	BCS	50$		; SKIP IF ERROR45$:	CALL	W1SEC		; WAIT 1 SECOND					; PW002	MOV	TRMUCB,R2	; GET TI UCB ADDRESS	BIT	#U2.AT.,U.CW2(R2) ; IS COMMAND PROCESSED?	BNE	45$		; NO, WAIT U      NTIL IT IS50$:	RETURN			;;+; *** - DATTIM  -  CONVERT DATE AND TIME TO ASCII;; INPUT:;	R0 - BUFFER ADDRESS;	TIMBUF - DATA RETURNED BY GTIM$; OUTPUT:;	R0 - UPDATED (16. CHARACTERS);	R1, R2, R3 - USED;-DATTIM:	MOVB	TIMBUF+4,R1	; GET DAY	CALL	TWODEC		; CONVERT TO TWO DECIMAL DIGITS	MOVB	#'-,(R0)+	;	MOVB	TIMBUF+2,R1	; GET MONTH	CALL	GETMON		; CONVERT TO ASCII	MOVB	#'-,(R0)+	;	MOVB	TIMBUF,R1	; GET YEAR	CALL	TWODEC		; CONVERT TO TWO DECIMAL DIGITS	MOVB	#40,(R0)+	;	MOVB	TIMBUF+6,R1	; GET HOUR	CALL	TWODEC		; CONVER      T TO TWO DECIMAL DIGITS	MOVB	#':,(R0)+	;	MOVB	TIMBUF+10,R1	; GET MINUTE	CALL	TWODEC		; CONVERT TO TWO DECIMAL DIGITS	MOVB	#40,(R0)+	;	RETURN			;;+; *** - TWODEC  -  CONVERT BINARY NUMBER TO TWO DECIMAL DIGITS;; INPUT:;	R0 - BUFFER ADDRESS;	R1 - BINARY NUMBER TO BE CONVERTED; OUTPUT:;	R0 - UPDATED;	R1, R2, AND R3 USED;-TWODEC:	CMP	R1,#10.		; >= 10.?	BGE	10$		; YES	MOVB	#'0,(R0)+	; NO, PUT IN LEADING ZERO10$:	CLR	R2		; SET TO SUPPRESS LEADING ZEROES	CALL	$CBDMG		; CONVERT TO DECIMAL	RETURN			;;+; *** - GETMON        -  CONVERT MONTH TO ASCII;; INPUT:;	R0 - BUFFER ADDRESS;	R1 - MONTH (1-12); OUTPUT:;	R0 - UPDATED;	R1, R2 USED;-GETMON:	DEC	R1		; CONVERT TO INDEX	MOV	R1,R2		; COPY IT	ADD	R2,R1		; MULTIPLY BY	ADD	R2,R1		; THREE	ADD	#MONTH,R1	; GET ADDRESS OF MONTH IN ASCII	MOVB	(R1)+,(R0)+	; MOVE MONTH	MOVB	(R1)+,(R0)+	; INTO BUFFER	MOVB	(R1),(R0)+	;	RETURN			; 										; PW002 										; PW002;+										; PW002; *** - W1SEC  -  WAIT 1 SECOND							; PW002;	WEFN1  -  WAIT FOR EFN 1						; PW002;-										; PW002W1SEC   °   :	MRKT$C	1,1,2		; SET TIMER FOR 1 SECOND			; PW002WEFN1:	WTSE$S	#1		; WAIT FOR EFN 1				; PW002	RETURN									; PW002 										; PW002 										; PW002	.END									; GW004 °          Ð8 }kQÁ› 8$        	.TITLE	ICXT - CONTEXT BLOCK REGIONS	.IDENT	/V01A/ ;;;                         COPYRIGHT (C) 1978 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  I      S  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.;;;; MODULE:	.CXBLK - ALLOCATE CONTEXT BLOCK REGIONS;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;; EDITS:;;	1. CP26 - 2/26/78;	LOAD DATA MANAGER REGIONS ONLY IF DATA MANAGER IS TO BE       LOADED;;	2. CP57 - 6/14/78;	MINIMUM DATA MANAGER CONTEXT BLOCK SIZE := SIZE OF CXT BLK + 256. BYTES;;	3. C01 9/5/78;	DO NOT PRINT ERROR MESSAGE WHEN EXC, DAT, OR DMR CONTEXT REGIONS EXCEED;	4KW. DEFAULT SIZE TO 4KW AND CONTINUE PROCESSING.;;	4. C02 9/27/78;	IF NO SCBs THEN DO NOT PERFORM LOOP 32K TIMES.;;	C03 10/2/78;	WHEN DEFAULTING REGION SIZE, PUT CORRECT REGION SIZE;	INTO SECOND WORD OF REGION.;;	CP04: 2/20/79;	INITIALIZE DATA MANAGER'S CONTEXT BLOCK REGION WITH FAB. MAP;	ENTIRE CONTEXT BLOCK FOR EACH M      ANAGER TO PERMIT ACCESS TO DM CB.;;	CP05: 4/14/79, IF ANY LINK STATIONS ARE DEFINED, ADD SPACE FOR 5 SLAVE;	LINK CONTEXT BLOCKS (S.LSSZ) TO THE LINK CONTEXT BLOCK REGION SIZE.	.PAGE;+; .CXBLK -;;	THIS MODULE CREATES THE REGIONS REQUIRED BY THE TPM;	MANAGERS FOR CONTEXT BLOCKS AND WORK AREAS.;;	NOTE:	IN THE REGION NAMES BELOW NNN REPRESENTS THE;		UNIQUE TP IDENTIFIER. ALL REGION SIZES ARE ;		ROUNDED UP TO A 64. BYTE BOUNDARY. THE MAXIMUM;		SIZE OF EACH REGION IS 4K WORDS.;;	THE REGION ECXNNN IS CREATED FOR C      ONTEXT BLOCKS FOR;	THE EXECUTION MANAGER. THE SIZE OF THE REGION IN BYTES;	IS EQUAL TO;;		(MAX # OF TRANS.) * EX.CTZ;;;	THE REGION LCXNNN IS CREATED FOR CONTEXT BLOCKS FOR THE;	LINK MANAGER IF ANY LINK STATIONS WERE DEFINED FOR THE;	TRANSACTION PROCESSOR. THE SIZE OF THE REGION IN BYTES;	IS EQUAL TO THE SUM OF THE CONTEXT BLOCKS REQUIRED FOR;	THE STATIONS SPECIFIED. THE CONTEXT BLOCK SIZE FOR EACH;	STATION IS DETERMINED AS FOLLOWS:;;		FOR MASTER LINK STATION - S.LMSZ * # OF SUBLINKS;;		FOR SLAVE LINK STATIO      N - S.LSSZ;;;	THE REGION BCXNNN IS CREATED FOR CONTEXT BLOCKS FOR THE;	BATCH MANAGER IF ANY BATCH STATIONS WERE DEFINED FOR THE ;	TRANSACTION PROCESSOR. FOR EACH BATCH STATION (SUBMIT OR;	SLAVE), 'BT.CTZ' BYTES IS ADDED TO THE REGION SIZE.;;;	THE REGION MBPNNN IS CREATED FOR MAILBOX MANAGER CONTEXT ;	BLOCKS IF ANY MAILBOX STATIONS WERE SPECIFIED FOR THE ;	TRANSACTION PROCESSOR. THE SIZE (IN BYTES) OF THE CONTEXT ;	BLOCK REQUIRED FOR EACH MAILBOX STATION IS;;		IF$BLN+IR$BLN+<2*BD$BLN>+RB$BLN+MB.CTZ;;;	TWO RE      GIONS ARE CREATED FOR THE DATA MANAGER:;;	   DATNNN IS USED FOR RAB CONTEXT BLOCKS. INSTALL INITIALIZES	;***CP04;	   THIS REGION BY PUTTING IN A FAB. THE SIZE IN BYTES		;***CP04;	   IS EQUAL TO;;		MAX # OF ACTIVE TRANS. * SIZE OF RAB CONTEXT BLOCK;;	   DMRNNN IS USED FOR CHANNEL ACCESS BLOCKS AND LOCK BLOCKS.;	   THE SIZE OF THE REGION IN BYTES IS EQUAL TO ;;		(SIZE OF CHANNEL ACCESS BLOCK + SIZE OF LOCK BLOCK) *;			6 * MAX # OF ACTIVE TRANS.;;;	THE FIRST WORD IN EACH REGION IS CLEARED AND THE REGION;	SIZE       IN BYTES PUT IN THE SECOND WORD.;;; INPUT CONDITIONS:;;	APR 0 MAPPED ONTO THE TP COMMON AREA;;; OUTPUT CONDITIONS:;;	APR 3 IS DESTROYED (USED TO MAP ONTO REGIONS);-  	.MCALL	PUSH,POP	.MCALL	DIR$,ASRDF$,INH$S,ENB$S	.MCALL	BDBOF$,IRAOF$,IFAOF$,RABOF$	.MCALL	FAB$B							;***CP04 	ASRDF$				; DEFINE APR REGISTERS APR1	=	20000			; VA FOR APR1			;***CP04	BDBOF$	DEF$SZ			; DEFINE BDB SIZE	IRAOF$	DEF$SZ			; DEFINE IRAB SIZE	IFAOF$	DEF$SZ			; DEFINE IFAB SIZE	RABOF$	DEF$SZ			; DEFINE RAB SIZEDATFAB:					; FAB TO BE       PUT INTO DM CB REG	;**CP04+	FAB$B				; ALLOCATE FAB	FAB$E				; END FAB			;**CP04-FLAG:	.WORD	0			; if ZERO then DO NOT PRINT CONTEXT;*C01					;	BLOCK EXCEEDS MAX SIZE MESSAGE	.PAGE	.ENABL	LSB .CXBLK:: ;; CREATE CONTEXT BLOCK REGION FOR EXECUTION MANAGER; 	CLR	FLAG			; INDICATE DO NOT PRINT CONTEXT BLOCK					; EXCEEDS MAX SIZE ERROR MESSAGE	;***C01	MOV	.ACTTZ,R1		; R1 = MAXIMUM # OF ACTIVE TRANSACTIONS	ADD	#4,R1			; ADD 4	MUL	#EX.CTZ,R1			; 50. BYTES PER CONTEXT BLOCK	MOV	.ECXRG,.RDB+R.GNAM	; REGION NAME	CAL      L	CREATE			; CREATE REGION ;; CREATE CONTEXT BLOCK REGIONS FOR LIM, BATCH AND MAILBOX MANAGER; 	INC	FLAG			; ENABLE ERROR MESSAGES ON MAX CONTEXT					; BLOCK SIZE EXCEEDED		;****C01	MOV	.SCBTA,R0		; R0 POINTS TO ALPHA TABLE	MOV	.SCBTZ,R2		; GET NUMBER OF ENTRIES IN TABLE IN R2	ASR	R2			;	INC	R2			;	BLE	95$			; if NO SCBs then JUMP OUT OF LOOP;*C02+	CLR	-(SP)			; CLEAR WORD FOR BATCH TOTAL	CLR	R1			; CLEAR R1 FOR LIM TOTAL	CLR	R4			; CLEAR R4 FOR MAILBOX TOTAL	;***C02-	MOV	#APR3,R3		; R3 = BASE ADDRESS OF SC      B AFTER MAP 	INH$S				; INHIBIT CONTEXT SWITCHING	MOV	#77406,UISDR3		; MAP 4K R/W10$:	MOV	(R0)+,UISAR3		; MAP ONTO SCB	CMPB	#SY.LMA,S.TYP(R3)	; LINK MASTER STATION?	BNE	20$			; IF NE NO	MOVB	S.NSL(R3),R5		; R5 = # OF SUBLINKS	BIC	#177400,R5		; CLEAR HIGH ORDER BYTE	MUL	#S.LMSZ,R5		; R5 = CONTEXT BLOCK SIZE FOR STATION	ADD	R5,R1			; ADD TO TOTAL	BR	60$ 20$:	CMPB	#SY.LSL,S.TYP(R3)	; LINK SLAVE STATION?	BNE	30$			; IF NE NO	ADD	#S.LSSZ,R1		; ADD CONTEXT BLOCK SIZE TO TOTAL	BR	60$ 30$:	CMPB	#SY.MBX,S.TYP(R3)	;       MAILBOX STATION?	BNE	40$			; IF NE NO	ADD	#<IF$BLN+IR$BLN+<2*BD$BLN>+RB$BLN+MB.CTZ>,R4 ; ADD TO TOTAL REGION SIZE 40$:	CMPB	#SY.BSU,S.TYP(R3)	; BATCH SUBMIT STATION?	BEQ	50$			; IF EQ YES 	CMPB	#SY.BSL,S.TYP(R3)	; BATCH SLAVE STATION?	BNE	60$			; IF NE NO50$:	ADD	#BT.CTZ,(SP)		; ELSE ADD TO REGION SIZE 60$:	SOB	R2,10$			;	ENB$S				; ENABLE CONTEXT SWITCHING 	TST	R1			; REGION NEEDED FOR LIM?	BEQ	70$			; IF EQ NO	ADD	#<5*S.LSSZ>,R1		; ADD SPACE FOR 5 SLAVE C.B.s	;***CP05	MOV	.LCXRG,.RDB+R.GNAM	; REGION NAME	      CALL	CREATE			; CREATE REGION 70$:	TST	R4			; MAILBOX REGION NEEDED?	BEQ	80$			; IF EQ NO	MOV	R4,R1			; R1 = REGION SIZE	MOV	.MBPRG,.RDB+R.GNAM	; REGION NAME	CALL	CREATE			; CREATE REGION 80$:	TST	(SP)			; BATCH REGION NEEDED?	BEQ	90$			; IF EQ NO	ADD	#256.,(SP)		; ADD 2 CONTEXT BLOCKS TO TOTAL	MOV	(SP),R1			; R1 = REGION SIZE 	MOV	.BCXRG,.RDB+R.GNAM	; REGION NAME	CALL	CREATE			; CREATE REGION90$:	TST	(SP)+			; (SP+2) RESTORE STACK95$:					; EXIT POINT FOR NO SCBs	;****C02 ;; IF DATA MANAGER IS TO BE LOADED       CREATE DATA MANAGER REGIONS;	CLR	FLAG			; DISABLE ERROR MESSAGES FOR MAX;****C01					; CONTEXT BLOCK SIZE EXCEEDED									;**CP26+	BIT	#LD.DM,.LOADM		; if DATA MANAGER ISN'T TO BE LOADED	BEQ	110$			; then DON'T LOAD DM REGIONS	;**CP26-	MOV	.ACTTZ,R1		; R1 = MAX # OF ACTIVE TRANSACTIONS	MUL	.DMCXT,R1		; X SIZE OF RAB CONTEXT BLOCK									;**CP57+	MOV	.DMCXT,-(SP)		; SP -> SIZE OF 1 CONTEXT BLOCK	ADD	#256.,(SP)		; SP -> MINIMUM SIZE OF DM CXT BLK REGIONON	CMP	R1,(SP)			; if SIZE OF DM CXT BLK REG > MINIMUM      	BHIS	100$			; then CONTINUE	MOV	(SP),R1			; else SIZE OF DM REG := MINIMUM100$:	TST	(SP)+			; CLEAN STACK									;**CP57-	MOV	.DATRG,.RDB+R.GNAM	; REGION NAME	CALL	CREATE			; CREATE REGION AND ATTACH	CALL	INIDMC			; INITIALIZE DM CB REGION	;***CP04 	MOV	#<R.SIZE+L.SIZE>,R1	; R1 = SIZE OF CHANNEL ACCESS BLOCK					; + SIZE OF LOCK BLOCK	MUL	#6,R1			; X 6	MUL	.ACTTZ,R1		; X MAX # OF ACTIVE TRANSACTIONS	MOV	.DMRRG,.RDB+R.GNAM	; REGION NAME	CALL	CREATE			; CREATE REGION AND ATTACH 110$:	RETURN	.DSABL	LSB	.PAGE      ;+; CREATE - ROUTINE TO CREATE REGION AND INITIALIZE ;; INPUT CONDITIONS:;;	R1 = REGION SIZE IN BYTES;;	FIRST HALF OF REGION NAME IN RDB;; OUTPUT CONDITIONS:;;	R1 DESTROYED;- 	.ENABL	LSB  ;; CREATE REGION; CREATE:	PUSH	R2			; SAVE R2	MOV	R1,-(SP)		; SAVE REGION SIZE IN BYTES	ADD	#77,R1			; ROUND REGION SIZE UP TO 64. BYTE	ASH	#-6,R1			; BOUNDARY	BIC	#176000,R1		;	CMP	R1,#128.		; REGION SIZE > 4K WORDS?	BLE	10$			; IF LE, NO	TST	FLAG			; if CONTEXT BLOCK SIZE E.M. DISABLEDC01	BEQ	6$			; then SKIP PRINTING ER      ROR MESSAGE;**C01	MOV	#<S.V0*400!E.R24>,R1	; SET SEVERITY/ERROR CODE	MOV	.RDB+R.GNAM,-(SP)	; REGION NAME	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT WARNING MESSAGE	TST	(SP)+			; (SP+2) RESTORE STACK6$:	MOV	#128.,R1		; MAKE REGION 4K WORDS	MOV	#20000,(SP)			; (SP) := CORRECT REGION SIZE IN BYTES	;C0210$:	MOV	R1,.RDB+R.GSIZ		; PUT SIZE IN RDB	MOV	.TPID,.RDB+R.GNAM+2	; PUT UNIQUE ID IN REGION NAME	MOV	#<RS.ATT!RS.WRT!RS.NDL>,.RDB+R.GSTS ; ATTACH WITH WRITE ACCESS					; DON'T DELETE ON LAST       DETACH	DIR$	#.CRREG,.DIRER		; CREATE REGION AND ATTACH ;; INITILIAZE REGION; 	MOVB	#CXTAPR,.WDB+W.NAPR	; APR FOR WINDOW	MOV	<.RDB+R.GSIZ>,.WDB+W.NSIZ	; WINDOW SIZE FOR MAP	;***CP04	MOV	#<WS.MAP!WS.WRT!WS.64B>,.WDB+W.NSTS ; MAP WITH WRITE ACCESS	MOV	.RDB+R.GID,.WDB+W.NRID	; REGION ID FOR MAP	CLR	.WDB+W.NOFF		; OFFSET TO MAP = 0	CLR	.WDB+W.NLEN		; DEFAULT LENGTH TO MAP	DIR$	#.CRWIN,.DIRER		; CREATE WINDOW AND MAP REGION 	MOV	.WDB+W.NBAS,R1		; R1 = BASE ADDRESS OF REGION	CLR	(R1)+			; CLEAR FIRST WORD	MOV	(SP      )+,(R1)		; PUT REGION SIZE IN SECOND WORD 	POP	R2			; RESTORE R2	RETURN 	.DSABL	LSB	.PAGE	.SBTTL INIDMC - INITIALIZE DATA MANAGER CONTEXT BLOCK REGION;+									;**CP04+;;  I N I D M C;;	INITIALIZE DATXXX, THE DATA MANAGER CONTEXT BLOCK REGION. PUT;	A FAB FOLLOWED BY A CONTEXT BLOCK IN DATXXX. RESET THE FREE POINTERS.;;;  ENTRY CONDITIONS:;;	CXTAPR = # OF APR THAT MAPS DATXXX;	1ST 2 WORDS OF DATXXX := FREE SPACE HEADER;			WORD 0 = 0, LAST FREE SPACE HEADER;			WORD 2 = SIZE OF FREE SPACE AREA = SIZE OF DATXX      X REGION (BYTES);	DMPOOL = FREE SPACE LISTHEAD;			WORD 0 = MASK;			WORD 2 -> NEXT FREE SPACE HEADER (APR1 RELATIVE);			WORD 4 = SIZE OF THIS ENTRY = 0;;;  EXIT CONDITIONS:;;	DMPOOL + 2 -> FREE SPACE HEADER IN DATXXX (APR1 RELATIVE), AT END OF CB;	DATXXX: FAB OF LENGTH FB$BLN (BYTES);		CONTEXT BLOCK OF LENTGH DM.CTZ (BYTES);		FREE SPACE HEADER:;			WORD 0: 0, INDICATES LAST HEADER;			WORD 2: SIZE OF REMAINDER OF REGION (BYTES);;;  REGISTERS ALTERED:;;	NONE;;;  CALLING SEQUENCE:;;	CALL INIDMC;-INIDMC:	PUSH	<R0      ,R1,R2>		; SAVE REGISTERS;; MOVE DUMMY FAB FROM THIS MODULE TO BASE OF DATXXX;	MOV	#<CXTAPR*20000>,R0	; R0 -> BASE OF DATXXX	PUSH	2(R0)			; SAVE SIZE OF DATXXX REGION (BYTES)	MOV	#DATFAB,R1		; R1 -> TEMPLATE FAB	MOV	#FB$BLN,R2		; R2 := SIZE OF FAB (BYTES)10$:	MOVB	(R1)+,(R0)+		; COPY NEXT BYTE OF FAB TO CB REGION	SOB	R2,10$;; SET UP DMPOOL, DATA MANAGER'S FREE AREA LISTHEAD. SET UP THE FREE AREA HEADER; IN DATXXX.;	MOV	#<APR1!FB$BLN+DM.CTZ>,<DMPOOL+2>					; DM CB FREE LIST HDR -> FREE AREA					; (APR1 RELAT   ^  IVE)	POP	R1			; R1 := SIZE OF CB REGION	SUB	#<FB$BLN+DM.CTZ>,R1	; R1 := SIZE OF FREE SPACE	MOV	#<CXTAPR*20000!FB$BLN+DM.CTZ>,R0					; R0 -> FREE AREA HEADER	CLR	(R0)+			; SET UP FREE LIST ENTRY: LAST FREE ENTRY	MOV	R1,(R0)			; FREE LIST ENTRY := SIZE OF ENTRY63$:	POP	<R2,R1,R0>		; UNSAVE REGISTERS	RETURN				; RETURN TO CALLING PROGRAM	;**CP04-	.END^         Å8 kQÁ› 8$        	.TITLE	ICMD - VALIDATE COMMAND LINE	.IDENT	/V01A/ ;;;                         COPYRIGHT (C) 1978 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  I      S  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.;;;; MODULE:	.INSLN - VALIDATE INSTALL COMMAND LINE;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;;; EDITS:;;	1. CP28 - 2/26/78;	SAVE NEW DATA MANAGER SWITCH;;	CP01: 2/26/79;	SPAWN MCR..      . NOT ...PIP.;	.PAGE;+; .INSLN -;;	THIS MODULE VALIDATES THE DATA RECEIVED FROM THE INSTALL COMMAND;	LINE. THE FOLLOWING THINGS ARE CHECKED FOR:;;		. THE TRANSACTION PROCESSOR SPECIFIED IS DEFINED (I.E. A;		  TP FILE RECORD EXISTS FOR THAT TRANSACTION PROCESSOR);;		. THE TRANSACTION PROCESSOR IS NOT CURRENTLY ACTIVE OR;		  INSTALLED (AS INDICATED BY THE STATUS WORD IN THE TP;		  FILE RECORD);;		. THE SPECIFIED PARTITION MUST BE AN EMPTY SYSTEM PARITION.;;		. IF A VERSION NUMBER IS SPECIFIED FOR THE FORMS;		        DEFINITION FILE, THAT VERSION OF THE FILE MUST EXIST;;	IF THE DATA RECEIVED IS VALID, CERTAIN DATA AREAS ARE;	INITIALIZED WITH THE INFORMATION. IN ADDITION, PIP IS SPAWNED;	TO MAKE A CONTIGUOUS COPY OF THE FORMS DEFINITION FILE TO BE;	ACCESSED BY THE ACTIVE TRANSACTION PROCESSOR. THE NAME OF THE;	FILE TO BE COPIED IS OF THE FORM;;		[1,300]XXXXXX.FDF	WHERE: XXXXXX IS THE TP NAME;;	THE SPECIFIED VERSION OF THE FILE IS COPIED OR BY DEFAULT THE;	LATEST VERSION. THE COPIED FILE HAS THE NAME [1,10]XXXXXX.FMX;1;      	AND IS CREATED TO SUPERSEDE ANY EXISTING FILE WITH THAT NAME.;;;	NOTE:	WHILE THE ACTUAL SIZE OF A TP FILE RECORD IS 64. BYTES,;		THE FILE IS CREATED WITH A RECORD SIZE OF 512. BYTES. ;		THE RECORD SIZE MUST BE SET CORRECTLY IN THE FDB BEFORE;		DOING RECORD I/O.;;; INPUT CONDITIONS:;;	THE DATA RECEIVED HAS THE FOLLOWING FORMAT:;;	+-----------------------------------------+ 0;	!	ASCII TP NAME (6 BYTES)           !;	!-----------------------------------------! 6;	!    DEBUG SWITCH    !    BRIEF SWITCH    !;	!-      ----------------------------------------! 10;	!    WRITE SWITCH    !    TRACE SWITCH    !;	!-----------------------------------------! 12;	!    FORMAT FILE VERSION (5 BYTES)        !;	!--------------------!                    !;	!  RESIDENT DM OVLYS !                    !;	!-----------------------------------------! 20;	!	RAD50 PARTITION NAME (2 WORDS)    !;	+-----------------------------------------+;-	.PAGE	.MCALL	OPEN$R,CLOSE$,GET$,PCBDF$,DIR$,SWITCH$,STSE$S 	PCBDF$				; DEFINE PCB OFFSETS	TPFDEF				; DE      FINE TP RECORD OFFSETS .INSLN:: ;; VERIFY TRANSACTION PROCESSOR IS DEFINED; 	MOV	#.RECBF+4,R5		; POINTER TO COMMAND DATA RECEIVED	MOV	R5,R0			;	MOV	#6,R1			; R1 = MAX LENGTH OF TP NAME10$:	TSTB	(R0)			; BLANK FILL TP NAME IF NOT 6 BYTES	BNE	20$			;	MOVB	#40,(R0)		;20$:	INC	R0			;	SOB	R1,10$			; 	MOV	#.FDB3,R0		; POINTER TO FDB	MOV	#.DSD1,R1		; POINTER TO DATA SET DESCRIPTOR	CALL	OPNR			; OPEN FILE WITH READ ACCESS	BCC	25$			; IF C-CLR OPEN DONE	JMP	FCSER			; ELSE ERROR25$:	MOV	#TPRSZ,F.RSIZ(R0)	; SET CORREC      T RECORD SIZE 30$:	MOV	F.RCNM+2(R0),.TPRNO	; SAVE TP RECORD NUMBER	GET$	R0,#.TPREC,#TPRSZ,FCSER	; GET RECORD	MOV	#.TPREC,R2		; POINTER TO RECORD	CMPB	#'#,(R2)		; LAST RECORD?	BNE	40$			; IF NE NO - CONTINUE	CALL	CLSFL			; ELSE CLOSE FILE	MOV	#<S.V1*400!E.R1>,R1	; SET SEVERITY/ERROR CODE	JMP	CMDERR			;40$:	MOV	R5,R3			; POINTER TO NAME OF TP TO INSTALL	MOV	#6,R4			; LENGTH50$:	CMPB	(R2)+,(R3)+		; IS THIS THE RIGHT TP RECORD?	BNE	30$			; IF NE NO - TRY NEXT RECORD	SOB	R4,50$			;	CALL	CLSFL			; RECORD FOUND, C      LOSE TP FILE ;; CHECK TP STATUS; 	BIT	#<TPIN!TPST>,.TPREC+TPSTAT ; TP INSTALLED OR ACTIVE?	BEQ	FNDPAR			; IF EQ NO, CONTINUE	MOV	#<S.V1*400!E.R2>,R1	; ELSE SET SEVERITY/ERROR CODECMDERR:	MOV	#.RECBF+4,-(SP)		; POINTER TO TP NAME	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT	.PAGE;; VERIFY PARTITION EXISTS; FNDPAR:	TSTB	6(R5)			; BRIEF INSTALL?	BEQ	10$			; IF EQUAL NO	MOV	.TPREC+TPPAR,20(R5)	; ELSE GET PARTITION NAME	MOV	.TPREC+TPPAR+2,22(R5)	; FROM PREVIOUS INSTALL10      $:	MOV	22(R5),-(SP)		; PUT RAD50 PARTITION NAME ON STACK	MOV	20(R5),-(SP)		;	MOV	SP,R0			; R0 POINTER TO PARTITION NAME	SWITCH$	70$			; SWITCH STACK TO KERNEL MODE 	MOV	#$PARHD-P.LNK,R1	; POINT TO PCB LIST20$:	MOV	P.LNK(R1),R1		; GET NEXT PCB	BNE	30$			; CONTINUE IF NOT END OF LIST	MOV	#E.R3,(R0)		; ELSE RETURN ERROR CODE	BR	60$			; 30$:	CMP	P.NAM(R1),(R0)		; IS THIS THE RIGHT PCB?	BNE	20$			; IF NE NO, TRY NEXT ONE	CMP	P.NAM+2(R1),2(R0)	;	BNE	20$			;	BIT	#PS.SYS,P.STAT(R1)	; RIGHT PCB FOUND - SYSTEM PARTIT      ION?	BNE	40$			; IF NE YES, CONTINUE	MOV	#E.R4,(R0)		; ELSE RETURN ERROR CODE	BR	60$			;40$:	TST	P.SUB(R1)		; ARE THERE ANY SUBPARTITIONS?	BEQ	50$			; IF EQ NO, CONTINUE	MOV	#E.R5,(R0)		; ELSE RETURN ERROR CODE	BR	60$			; 50$:	CLR	(R0)			; INDICATE SUCCESS60$:	RETURN				; RETURN TO USER MODE 70$:	TST	(R0)			; VALID PARTITION SPECIFIED?	BEQ	80$			; IF EQ YES, CONTINUE	MOV	#<S.V1*400>,R1		; ELSE SET SEVERITY/ERROR CODE	BISB	(R0),R1			; 	MOV	#.RECBF+24,R2		; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ER      ROR MESSAGE AND EXIT80$:	CMP	(SP)+,(SP)+		; (SP+4) RESTORE STACK	.PAGE;; VERIFY SPECIFIED VERSION OF FORMS DEFINITION FILE EXISTS; FNDFIL:	MOV	#.FDFNM,R2		; POINTER TO OLD FILE NAME BUFFER	MOV	#.TPNAM,R1		; POINTER TO TP NAME	MOV	#6,R3			; LENGTH 10$:	MOVB	(R1)+,(R2)+		; MOVE TP NAME TO FILE NAME	CMPB	#40,(R1)		; NEXT BYTE SPACE?	BEQ	20$			; IF EQ YES	SOB	R3,10$			; ELSE MOVE NEXT BYTE 20$:	MOV	#.FDFEX,R1		; POINTER TO EXTENSION FOR OLD FILE NAME	MOV	#.FDFLN,R3		; LENGTH30$:	MOVB	(R1)+,(R2)+		; MOVE EXTENSI      ON TO FILE NAME	SOB	R3,30$			; 	TSTB	12(R5)			; VERSION NUMBER SPECIFIED?	BNE	40$			; IF NE YES	MOVB	#'0,(R2)+		; ELSE DEFAULT TO LATEST VERSION	BR	60$			;40$:	MOV	R5,R1			; POINTER TO RECEIVE BUFFER	ADD	#12,R1			; POINTER TO VERSION NUMBER	MOV	#5,R3			; MAXIMUM LENGTH OF VERSION NUMBER50$:	MOVB	(R1)+,(R2)+		; MOVE VERSION NUMBER TO FILE NAME	TSTB	(R1)			; END OF VERSION NUMBER?	BEQ	60$			; IF EQ YES	SOB	R3,50$			; ELSE MOVE NEXT BYTE 60$:	SUB	#.FDFNM,R2		; R2 = LENGTH OF FILE NAME	MOV	#.DS300,R1		; R1 POIN      TS TO DSD	MOV	R2,10(R1)		; PUT LENGTH IN DSD	MOV	#.FDFNM,12(R1)		; POINTER TO FILE NAME IN DSD	MOV	#.FDB1,R0		; POINTER TO FDB	CALL	OPNR			; OPEN FILE	BCC	80$			; IF C-CLR SUCCESS	CMPB	#IE.NSF,F.ERR(R0)	; DOES FILE EXIST?	BNE	70$			; IF NE YES	MOV	#<S.V1*400!E.R6>,R1	; ELSE SET SEVERITY/ERROR CODE	MOV	#.RECBF+16,-(SP)	; POINTER TO VERSION NUMBER SPECIFIED	MOV	SP,R2			; R2 POINTS TO ARGUMENT LIST	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT70$:	JMP	FCSER			; ELSE I/O ERROR  80$:	CALL	CLSFL			; CLOSE FILE	.P      AGE;; COPY FORMS DEFINITION FILE; 	TSTB	6(R5)			; BRIEF INSTALL?	BNE	INIDAT			; IF NE YES - DON'T COPY FORMS FILE 	MOV	#.TPNAM,R0		; POINTER TO TP NAME	MOV	#.FMXNM,R1		; 	MOV	#6,R2			; 90$:	MOVB	(R0)+,(R1)+		; MOVE TP NAME TO NEW FILE NAME	SOB	R2,90$			; 	MOV	#^RMCR,.SPAWN+S.PWTN	; PUT MCR DISPATCHER TASK NAME	;***CP01	MOV	#^R...,.SPAWN+S.PWTN+2	;  IN SPAWN DPB			;***CP01	MOV	#.PIPCM,.SPAWN+S.PWCA	; POINTER TO PIP COMMAND LINE	MOV	#.PIPLN,.SPAWN+S.PWCL	; LENGTH OF COMMAND	DIR$	#.SPAWN			; SPAWN PIP TO COPY       FILE	BCC	110$			; IF C-CLR, PIP SPAWNED	CMP	#IE.ACT,$DSW		; ERROR = PIP ALREADY ACTIVE?	BEQ	100$			; IF EQ YES	CALL	.DIRER			; ELSE UNEXPECTED ERROR100$:	MOV	#<S.V1*400!E.R27>,R1	; SET SEVERITY/ERROR CODE	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT 110$:	STSE$S	#1			; STOP UNTIL PIP EXITS	CMP	#EX$SUC,.ESB		; PIP SUCCESSFUL?	BEQ	INIDAT			; IF EQ YES	MOV	#<S.V1*400!E.R7>,R1	; ELSE SET SEVERITY/ERROR CODE	CALL	.ERMSG			; OUTPUT ERROR MESSAGE AND EXIT	.PAGE;; INITIALIZE DATA AREAS; INIDAT:	MOV	6(R5),.INSOP		;       SAVE OPTION FLAGS	MOV	10(R5),.INSOP+2		; 	MOVB	17(R5),.INSOP+4		; SAVE DATA MANAGER SWITCH	;***CP28 	MOV	20(R5),.RDB+R.GPAR	; PUT INSTALL PARTITION NAME IN RDB	MOV	22(R5),.RDB+R.GPAR+2	; 	MOV	20(R5),.GPARP+G.PRPN	; PUT PARTITION NAME IN GPART$ DPB	MOV	22(R5),.GPARP+G.PRPN+2	; 	MOV	20(R5),.TPREC+TPPAR	; PUT PARTITION NAME IN TP 	MOV	22(R5),.TPREC+TPPAR+2	; RECORD BUFFER 	RETURN 	.PAGE;; OPEN FILE;; INPUT CONDITIONS:;;	R0 = ADDRESS OF FDB ;	R1 = ADDRESS OF DSD ; OPNR:	OPEN$R	R0,#1,R1		; OPEN FOR READ ONLY	RE   °  TURN  ;; CLOSE FILE;; INPUT CONDITIONS:;;	R0 = ADDRESS OF FDB ; CLSFL:	CLOSE$	R0			; CLOSE FILE	RETURN  ;; I/O ERROR ROUTINE;; INPUT CONDITIONS:;;	R0 = ADDRESS OF FDB ;	R1 = ADDRESS OF DSD ; FCSER:	MOV	R1,R2			; POINTER TO DSD	ADD	#4,R2			; POINTER TO UIC LENGTH IN DSD	MOV	F.ERR(R0),-(R2)		; ADD FCS ERROR CODE TO ARGUMENT LIST	BIS	#177400,(R2)		; SIGN EXTEND	MOV	#E.R30,R0		; FIRST I/O ERROR CODE	JMP	.IOERR			; ERROR ROUTINE	.END°         œwôkQÁ› 8$        	.TITLE	SETCAL - READ OR SET KW11-C CALENDAR CLOCK	.SBTTL	TITLE PAGE	.IDENT	"V1.01";;;                         COPYRIGHT (C) 1978 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 AN      D 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.;;;; MODULE:	SETCAL;; AUTHOR:	C.PAUL;; DATE:		7-JUN-78;;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------      		-----------;	V1.1	13-MAR-79	LBB		V1.1 - LBB001;						COPY SYSTEM NAME FROM;						SYSTEM IMAGE TO COMMON;						REGION;;	.PAGE	.SBTTL DATA STRUCTURES	.MCALL	ATRG$,CRAW$,RDBBK$,WDBBK$,INH$S,ENB$S,EXST$S	.MCALL	DIR$							;LBB001;; DPBs TO MAP APR0 ONTO 'TIME' REGION;ATREG:	ATRG$	RDB			; ATTACH DPBCRWIN:	CRAW$	WDB			; MAP DBPRDB:	RDBBK$	,TIME,,<RS.WRT!RS.RED>	; READ/WRITE ACCESSWDB:	WDBBK$	1,,,0,0,<WS.MAP!WS.WRT>	; MAP W/ WRITE ACCESS;; ETC.;EXSTAT:	.WORD	EX$SUC			; EXIT STATUS, DEFAULT = SUCCESSTIMBFR:	.BLKW      	3			; BUFFER TO CONVERT SETTIM SPECIFIED					; TIME INTO KW11-C FORMAT	.PAGE	.SBTTL MAIN LINE CODE;+;;  S E T C A L;;	ATTACH AND MAP APR0 ONTO 'TIME' REGION THAT WAS CREATED BY;	SETTIM OR INIT. ;	IF C.INIT = 0 ;	  THEN CALL ROUTINE TO READ THE CALENDAR CLOCK;	  ELSE PASS BACK THE SYSTEM NAME;		AND;	       CALL ROUTINE TO INITIALIZE THE CALENDAR CLOCK.;;;  ENTRY CONDITIONS:;;	TIME REGION CREATED AND INITIALIZED:;	 if C.INIT = 1 then;		C.YR = year,	C.MO = month,	C.DA = day;		C.HR = hour,	C.MI = minute,	C.SC       = second;		$CURNM = SYSTEM NAME;;;  EXIT CONDITIONS:;;	if UPON ENTRY C.INIT = 0;	then CALENDAR CLOCK IS READ TO INITIALIZE C.YR, C.MO, C.DA, C.HR,;		C.MI, AND C.SC;	else CALENDAR CLOCK IS SET;	     SYSTEM NAME IS PASSED BACK;;;  REGISTERS ALTERED:;;	?;;;  CALLING SEQUENCE:;;	SETCAL TASK IS SPAWNED BY SETTIM OR INIT;-SETCAL::;;	DIR$	#ATREG			; ATTACH TO 'TIME' REGION	;LBB001	BCC	5$			; ATTACH SUCCESSFUL?		;LBB001	MOV	#EX$ERR,EXSTAT		; NO - MOVE IN ERROR STATUS	;LBB001	BR	40$			; AND EXIT			;LBB0015$:	MOV	<RD      B+R.GID>,<WDB+W.NRID> ; WDB := REGION ID	MOV	<RDB+R.GSIZ>,<WDB+W.NSIZ> ; WDB := WINDOW SIZE	DIR$	#CRWIN			; MAP APR0 ONTO 'TIME' REGION	BCC	10$			; SUCCESSFUL?			;LBB001	MOV	#EX$ERR,EXSTAT		; NO - MOVE IN ERROR STATUS	;LBB001	BR	40$			; AND EXIT			;LBB00110$:	MOV	<RDB+R.GID>,<WDB+W.NRID> ; WDB := REGION ID	MOV	#20000,R3		;POINT R3 TO REGION	TST	C.INIT(R3)		; if TO INITIALIZE CALENDAR CLOCK	BNE	20$			; then GOTO CALL INIT CLOCK ROUTINE					; ***************???????????????;LBB001	MOV	#EX$ERR,EXSTAT		; TEMPORA      RY CODE TO EXIT	;LBB001	BR	40$			; WITH ERROR STATUS		;LBB001					; DO NOT SUPPORT KW11-C		;LBB001	CALL	READCK			; else CALL ROUTINE TO READ CLOCK	BR	40$			; CONTINUE20$:		MOV	#$CURNM,R1	MOV	(R1)+,C.NAM(R3)	MOV	(R1)+,C.NAM+2(R3)	MOV	(R1)+,C.NAM+4(R3)					; ****************??????????????;LBB001	MOV	#3,EXSTAT		; TEMPORARY CODE TO EXIT	;LBB001	BR	40$			; DO NOT SUPPORT KW11-C		;LBB001	CALL	INITCK			; CALL ROUTINE TO INITIALIZE CLOCK40$:	EXST$S	EXSTAT			; EXIT WITH STATUS	.PAGE	.SBTTL READCK - READ KW11-C CALEN      DAR CLOCK;+;;  R E A D C K;;	CLEAR C.TIME VECTOR. INHIBIT CONTEXT SWITCHING. IF CLOCK STATUS IS NOT;	READY THEN EXIT WITH SEVERE STATUS. SET HOLD TIME. READ MONTH, DAY,;	MINUTE AND HOUR. SET READ YEAR BIT. READ YEAR BIT AND CONVERT TO BINARY.;	CLEAR READ YEAR AND HOLD TIME BITS. ENABLE CONTEXT SWITCHING.;;;  ENTRY CONDITIONS:;;	APR0 MAPPED ONTO 'TIME' REGION;	EXSTAT = EX$SUC;;;  EXIT CONDITIONS:;;	if SUCCESSFUL;	then	C.YR := YEAR;		C.MO := MONTH;		C.DA := DAY;		C.HR := HOUR;		C.MI := MINUTE;		C.SC := SECOND      ;	else  ERROR EXSTAT := EX$SEV;;;  REGISTERS ALTERED:;;	?;;;  CALLING SEQUENCE:;;	CALL READCK;-READCK:					; CLEAR C.TIME VECTOR IN 'TIME' REGION	MOV	#C.TIME,R0		; R0 -> BASE OF VECTOR	MOV	#C.LEN,R1		; R1 := LENGTH OF VECTOR20$:	CLR	(R0)+			; CLEAR NEXT WORD	SOB	R1,20$			; LOOP	INH$S				; INHIBIT CONTEXT SWITCHING	BIT	#RDYBIT,$CLK6		; if CLOCK STATUS = READY	BNE	30$			; then CONTINUE	JMP	56$			; else GOTO EXIT SEVERE					; NOTE: IF CLOCK HARDWARE NOT PRESENT					; 'BIT' OPERATION WILL CAUSE AN SST					; TO       NOCLCK ROUTINE30$:					; READ MONTH, DAY, HOUR, AND MINUTE	MOV	#HLDBIT,$CLK6		; SET CLOCK STATUS TO HOLDTIME	MOV	#CLK0,R0		; R0 -> 1ST CLOCK REGISTER	MOVB	(R0)+,C.DA		; READ DAY	MOVB	(R0)+,C.MO		; READ MONTH	MOVB	(R0)+,C.MI		; READ MINUTE	MOVB	(R0)+,C.HR		; READ HOUR					; READ YEAR	BIS	#RYRBIT,$CLK6		; SET CLOCK STATUS TO READ YEAR	MOV	$CLK0,R1		; R1 := CLOCK YEAR VALUE (NOT BINARY)	CLR	$CLK6			; CLEAR CLOCK STATUS	ENB$S				; ENABLE CONTEXT SWITCHING					; COMPUTE BINARY YEAR: SHIFT KW11-C					; YEAR BITS       8-12 INTO BIT POSITIONS					; 6-10	MOVB	R1,R0			; R0 := LOW 6 BITS OF YEAR	ASH	#-2,R1			; HI ORDER 5 BITS OF YEAR IN BITS 6-10	BIC	#174077,R1		; CLEAR GARBAGE BITS	BIS	R1,R0			; R1 := BINARY YEAR VALUE	MOV	R0,C.YR			; C.TIME := YEAR	BR	63$			; GOTO DONE56$:					; ERROR: KW11-C NOT READY	MOV	#EX$SEV,EXSTAT		; EXIT STATUS := SEVERE63$:	RETURN				; RETURN TO MAINLINE	.PAGE	.SBTTL INITCK - INITIALIZE KW11-C CALENDAR;+;;  I N I T C K;;	PUT C.TIME DATA IN KW11-C FORMAT IN TIMBFR. IF TIME VALUES ARE;	INVALID THEN       EXIT WITH SEVERE STATUS. INHIBIT CONTEXT SWITCHING.;	SET SETTIME STATUS BIT. SET MONTH AND DAY WORD. SET SETTIME STATUS;	BIT. SET HOUR AND MINUTE WORD. SET SETYEAR STATUS BIT. SET YEAR;	WORD. CLEAR SETYEAR STATUS WORD. ENABLE CONTEXT SWITCHING.;;;  ENTRY CONDITIONS:;;	APR0 MAPPED ONTO 'TIME' REGION;	C.YR = YEAR;	C.MO = MONTH;	C.DA = DAY;	C.HR = HOUR;	C.MI = MINUTE;;;  EXIT CONDITIONS:;;	if SUCCESSFUL;	then KW11-C IS INITIALIZED;	else EXSTAT := EX$SEV;;;  REGISTERS ALTERED:;;	?;;;  CALLING SEQUENCE:;;	CALL I      NITCK;-INITCK:					; PUT C.TIME DATA IN TIMBFR IN KW11-C FORMAT	MOV	#TIMBFR+4,R0		; R0 -> YEAR WORD IN TIMBFR	MOV	C.YR,R1			; R1 := BINARY YEAR VALUE	BIT	#MYMASK,R1		;????????????????????	BNE	56$	MOVB	R1,(R0)+		; BFR := BITS 0-5 OF KW11-C FORMATTED YR	ASH	-2,R1			; HI ORDER KW11-C BITS IN POSITIONS 8-12	SWAB	R1			; HI ORDER BITS IN POSITIONS 0-4	MOVB	R1,(R0)+		; BFR := BITS 8-12 OF KW11-C YEAR	BIC	#YRMASK,-(R0)		; CLEAR UNUSED YEAR BITS IN KW11-C YEAR					; SET HOUR/MINUTE WORD IN TIMBFR	MOVB	C.HR,-(R0)		;       GET HOUR	MOVB	C.MI,-(R0)		; GET MINUTE	BIT	#HMMASK,(R0)		;????????????????????????		MOVB	C.HR,-(R0)		; GET HOUR	BNE	56$					; SET MONTH/DAY WORD IN TIMBFR		BIC	#YRMASK,-(R0)		; CLEAR UNUSED YEAR BITS IN 					; KW11-C YEAR	MOVB	C.MO,-(R0)		; GET MONTH	MOVB	C.DA,-(R0)		; GET DAY	BIT	#MDMASK,(R0)		;?????????????????	BNE	56$	INH$S				; INHIBIT CONTEXT SWITCHING	MOV	#SETBIT,$CLK6		; SET SETTIME BIT IN STATUS REGISTER	MOV	(R0)+,$CLK0		; SET MONTH/DAY	MOV	#SETBIT,$CLK6		; SET SETTIME BIT IN STATUS REGISTER	MOV	(R0   b  )+,$CLK2		; SET HOUR/MINUTE	MOV	#SYRBIT,$CLK6		; SET SET YEAR BIT IN STATUS REGISTER	MOV	(R0)+,$CLK0		; SET YEAR	BIC	#SYRBIT,$CLK6		;?????????????????????????????	ENB$S				; ENABLE CONTEXT SWITCHING	BR	63$			; GOTO DONE56$:					; ERROR: C.TIME VALUE OUT OF RANGE	MOV	#EX$SEV,EXSTAT		; EXIT STATUS := SEVERE63$:	RETURN				; RETURN TO MAINLINE	.END	SETCAL b         ƒ:›rkQÁ› 8$        	.TITLE	INSRMS - RMS TASK FOR TPS INSTALL TASK	.IDENT	/V01A/ ;;;                         COPYRIGHT (C) 1978 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  S      OFTWARE  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.;;;; MODULE:	INSRMS - RMS TASK FOR TP INSTALL;; VERSION:	V01A;; AUTHOR:	CHERYL VEDOE;; DATE:		14-OCT-77;; EDITS:;;	CP01: 5/29/79: F$BUF := 9216. WAS 6144. ;; EQUATED SYMBOLS; 	APR4 = 10000      0			; APR 4 VIRTUAL BASE ADDRESS	TILUN = 5			; LUN FOR TERMINAL	.PAGE;; MACRO LIBRARY CALLS; 	.MCALL	DIR$,SRDA$C,ASTX$S,SETF$C,CLEF$C,WTSE$C,MRKT$C	.MCALL	RDBBK$,WDBBK$,ATRG$C,CRAW$C	.MCALL	RCVD$,SDAT$S,QIOW$S,EXIT$S	.MCALL	ORG$,POOL$B,$INIT	.MCALL	$GNCAL,FAB$B,XAB$B,RAB$B	.MCALL	$FBCAL,$RBCAL,$RMSTAT 	$GNCAL	$FBCAL	$RBCAL	$RMSTAT	DFIN$L 	ORG$	IDX,<GET,UPD>	ORG$	SEQ,<CRE>	ORG$	REL,<CRE,PUT> 	POOL$B	P$BDB	10.	P$FAB	4	P$RAB	3	P$RABX	2,20.	P$IDX	2	P$BUF	10240.	POOL$E;									;***CP01;; FILE ACCESS BLOCKS (1 F      AB IS USED FOR ALL I/O); FABADR:	FAB$B				; ALLOCATE FAB	F$DNA	DEFNAM			; DEFAULT FILE NAME STRING	F$DNS	DEFNSZ			; LENGTH OF STRING	F$SHR	FB$NIL			; NO ACCESS ALLOWED TO OTHER USERS	FAB$E				; END FAB ;; EXTENDED ATTRIBUTES BLOCK FOR CREATING A FILE; XAB1:	XAB$B	XB$PRO			; FILE PROTECTION XAB	X$PRG	1			; FILE OWNER	X$PRJ	1			;   = [1,1]	X$PRO	15.			; ACCESS ALLOWED TO PRIVILEGED USER ONLY	XAB$E				; END XAB ;; RECORD ACCESS BLOCKS (ALLOWS FOR 2 CONCURRENT STREAMS); RAB1:	RAB$B				; ALLOCATE RAB1	R$FAB	FABA      DR			; POINTER TO FAB	RAB$E				; END RAB1 RAB2:	RAB$B				; ALLOCATE RAB2	R$FAB	FABADR			; POINTER TO FAB	RAB$E				; END RAB2 RAB3:	RAB$B				; ALLOCATE RAB3	R$FAB	FABADR			; POINTER TO FAB	RAB$E				; END RAB3 RAB4:	RAB$B				; ALLOCATE RAB4	R$FAB	FABADR			; POINTER TO FAB	RAB$E				; END RAB4 LSTRAB	= .  ;; REGION DESCRIPTOR BLOCK AND WINDOW DESCRIPTOR BLOCK; RDB:	RDBBK$	128.,,,<RS.ATT!RS.WRT>,167000	; RDBWDB:	WDBBK$	4,128.,,,,<WS.MAP!WS.WRT>	; WDB ;; RECEIVE DATA DPB; RECV:	RCVD$	,RECBUF			; RECEIVE DATA	.PAG      E	.SBTTL	LOCAL DATA ;; SEND AND RECEIVE BUFFERS; RECBUF:	.BLKW	2			; 15. WORD RECEIVE BUFFERSENBUF:	.BLKW	13.			; 13. WORD SEND BUFFER ;; DISPATCH TABLE FOR PROCESSING ROUTINES; DISTBL:	.WORD	EXIT			; TASK EXIT (0)	.WORD	INIT			; INITIALIZE FOR I/O (2)	.WORD	CREFIL			; CREATE FILE (4)	.WORD	OPNFIL			; OPEN FILE (6)	.WORD	CLOFIL			; CLOSE FILE (10)	.WORD	CONECT			; CONNECT (12)	.WORD	DISCNT			; DISCONNECT (14)	.WORD	GETREC			; GET RECORD (16)	.WORD	UPDREC			; UPDATE RECORD (20)	.WORD	PUTREC			; PUT RECORD (2      2)	.WORD	BIORED			; BLOCK I/O READ (24)	.WORD	BIOWRT			; BLOCK I/O WRITE (26) ;; DEFAULT FILE NAME; DEFNAM:	.ASCII	/SY0:/			; DEFAULT FILE NAME STRINGDEFNSZ = .-DEFNAM			; LENGTH OF STRING ;; ERROR MESSAGES; MSGHD:	.ASCII	/INSTALL *FATAL* /	; FATAL ERROR MESSAGE HEADINGHDLEN = .-MSGHD				; LENGTH OF HEADING ; DIRMSG:	.ASCII	/SUPPORT TASK DIRECTIVE ERROR; DSW = / ; DIRECTIVE ERRORDSWBF:	.BLKB	10.			; DSW AFTER ERROR OCCURREDDMSGLN = .-DIRMSG			; LENGTH OF DIRECTIVE ERROR MESSAGE ; RABMSG:	.ASCII	/SUPPORT TAS      K ALLOCATION FAILURE/ ; NO RAB AVAILABLE ERRORRMSGLN = .-RABMSG	.EVEN	.PAGE	.SBTTL	MAIN 	.ENABL	LSB INSRMS:	DIR$	#RECV			; RECEIVE DATA	BCC	20$			; IF C-CLR RECEIVE DONE	CMP	#IE.ITS,$DSW		; IF NOT DONE, WAS BUFFER QUEUED?	BEQ	10$			; IF EQ NO	CALL	DIRERR			; ELSE ERROR10$:	MRKT$C	1,10.,1			; WAIT A BIT	WTSE$C	1			;	BR	INSRMS			; TRY RECEIVE AGAIN 20$:	SRDA$C	RECAST,,DIRERR		; SPECIFY RECEIVE DATA AST'S	MOV	#FABADR,R5		; R5 POINTS TO FAB	MOV	#SENBUF,R4		; R4 POINTS TO SEND BUFFER	MOV	#RECBUF,R3		; R3 POINTS       TO RECEIVE BUFFER 30$:	MOV	4(R3),R1		; R3 = REQUEST CODE	CALL	@DISTBL(R1)		; ROUTINE TO DO SPECIFIED REQUESTSEND:	SDAT$S	R3,R4,,DIRERR		; SEND DATA 	WTSE$C	10.,,DIRERR		; WAIT FOR RECEIVE DATA	CLEF$C	10.,,DIRERR		; CLEAR EVENT FLAG	DIR$	#RECV,DIRERR		; RECEIVE DATA	BR	30$			; 	.DSABL	LSB	.PAGE	.SBTTL	RECEIVE DATA AST RECAST:	SETF$C	10.,,DIRERR		; SET LOCAL EVENT FLAG	ASTX$S	.PAGE	.SBTTL	INITIALIZATION CODE ;+; INIT - INITIALIZATION CODE;; THE RMS TASK MAPS APR 4 ONTO THE BUFFER REGION SHARED WITH; THE TPS I      NSTALL TASK. THE NAME OF THE REGION IS IN THE; RECEIVE DATA BUFFER.;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BUFFER;;	THE RECEIVE BUFFER CONTAINS THE NAME OF THE SHARED;	BUFFER REGION IN RAD50.;; OUTPUT:;;	ALL REGISTERS PRESERVED;;	IF APR 4 IS SUCCESSFULLY MAPPED ONTO THE SHARED BUFFER;	REGION, THE LAST WORD OF THE SEND BUFFER IS CLEARED.;	OTHERWISE, THE LAST WORD OF THE BUFFER IS SET TO 1;	TO INDICATE FAILURE AND AN ERROR MESSAGE IS PRINTED.;- INIT:	$INIT				; INITIALIZE FOR RMS	MOV	      6(R3),RDB+R.GNAM	; NAME FOR BUFFER REGION	MOV	10(R3),RDB+R.GNAM+2	;	ATRG$C	RDB,,DIRERR		; ATTACH TO REGION	MOV	RDB+R.GID,WDB+W.NRID	; REGION ID FOR MAP	CRAW$C	WDB,,DIRERR		; CREATE AND MAP ADDRESS WINDOW	CLR	30(R4)			; RETURN SUCCESS INDICATOR	RETURN	.PAGE	.SBTTL	CREATE FILE ;+; CREFIL - CREATE A FILE;; ALL FILES ARE CREATED FOR TPS INSTALL WITH THE ; FOLLOWING CHARACTERISTICS:;;	. SUPERSEDE EXISTING FILE WITH SAME NAME;	. CONTIGUOUS FILE;	. SEQUENTIAL ORGANIZATION;	. FILE ACCESS SPECIFIED - PUT ;	. VARIABL      E RECORD FORMAT;	. OWNER = [1,1];	. ACCESS ALLOWED TO PRIVILEGED USERS ONLY;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BUFFER;	R5 - ADDRESS OF FAB;;	THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME (2 WORDS)           !;	!---------------------------------------!;	!   OPERATION CODE = 4                  !;	!---------------------------------------!;	!   LOGICAL CHANNEL NUMBER              !;	!--------------------------------------      -!;	!   LENGTH OF FILE NAME STRING          !;	!---------------------------------------!;	!   ADDRESS OF FILE NAME STRING         !;	!---------------------------------------!;	!   ALLOCATION QUANTITY (2 WORDS)       !;	!---------------------------------------!;	!   FILE ACCESS                         !;	!---------------------------------------!;	!   RECORD FORMAT                       !;	!---------------------------------------!;	!   MAXIMUM RECORD SIZE                 !;	!   (FOR VARIABLE FORMAT RECORDS)             !;	!---------------------------------------!;	!   FILE ORGANIZATION                   !;	!---------------------------------------!;	!   FILE PROCESSING OPTIONS             !;	!---------------------------------------!;	!   BUCKET SIZE                         !;	+---------------------------------------+;; OUTPUT:;;	ALL REGISTERS PRESERVED;;	IF THE CREATE SUCCEEDS, THE LAST WORD OF THE;	SEND BUFFER IS CLEARED AND THE INTERNAL FILE;	IDENTIFIER (IFI) ASSIGNED TO THE FILE IS ;	RETURNED IN THE SECOND WORD.;;	      IF THE CREATE FAILS, THE ERROR CODE IS RETURNED  ;	IN THE LAST WORD OF THE SEND BUFFER.;- CREFIL: ;; INITIALIZE FAB; 	$STORE	12(R3),FNA,R5		; POINTER TO FILE NAME STRING	$STORE	10(R3),FNS,R5		; LENGTH OF FILE NAME STRING	$STORE	6(R3),LCH,R5		; LOGICAL CHANNEL NUMBER	$STORE	14(R3),ALQ,R5		; FILE ALLOCATION QUANTITY	$STORE	20(R3),FAC,R5		; FILE ACCESS	$STORE	22(R3),RFM,R5		; RECORD FORMAT	$STORE	24(R3),MRS,R5		; MAXIMUM RECORD SIZE	$STORE	26(R3),ORG,R5		; FILE ORGANIZATION	$STORE	30(R3),FOP,R5		; FILE PROCESS      ING OPTIONS	$STORE	32(R3),BKS,R5		; BUCKET SIZE	$STORE	#XAB1,XAB,R5		; FILE PROTECTION XAB ;; CREATE FILE; 	$CREATE	R5			; CREATE FILE	CALL	TSTFAB			; TEST FOR SUCCESS	BCS	10$			; IF CREATE FAILED, RETURN	$FETCH	2(R4),IFI,R5		; IF SUCCESSFUL, RETURN IFI10$:	RETURN	.PAGE	.SBTTL	OPEN FILE ;+; OPNFIL - OPEN FILE;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BUFFER;	R5 - ADDRESS OF FAB;;	THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME       (2 WORDS)           !;	!---------------------------------------!;	!   OPERATION CODE = 6                  !;	!---------------------------------------!;	!   LOGICAL CHANNEL NUMBER              !;	!---------------------------------------!;	!   LENGTH OF FILE NAME STRING          !;	!---------------------------------------!;	!   ADDRESS OF FILE NAME STRING         !;	!---------------------------------------!;	!   FILE ACCESS                         !;	+---------------------------------------+;; OUTPUT:;;	ALL       REGISTERS PRESERVED;;	IF THE OPEN SUCCEEDS, THE LAST WORD OF THE;	SEND BUFFER IS CLEARED AND THE INTERNAL FILE;	IDENTIFIER (IFI) ASSIGNED TO THE FILE IS ;	RETURNED IN THE SECOND WORD.;;	IF THE OPEN FAILS, THE ERROR CODE IS RETURNED ;	IN THE LAST WORD OF THE SEND BUFFER.;- OPNFIL: ;; INITIALIZE FAB; 	$STORE	12(R3),FNA,R5		; POINTER TO FILE NAME STRING	$STORE	10(R3),FNS,R5		; LENGTH OF FILE NAME STRING	$STORE	6(R3),LCH,R5		; LOGICAL CHANNEL NUMBER	$STORE	14(R3),FAC,R5		; FILE ACCESS	$STORE	#0,FOP,R5		; FILE P      ROCESSING OPTIONS ;; OPEN FILE; 	$OPEN	R5			; OPEN FILE	CALL	TSTFAB			; TEST FOR SUCCESS	BCS	10$			; IF OPEN FAILED, RETURN	$FETCH	2(R4),IFI,R5		; IF SUCCESSFUL, RETURN IFI10$:	RETURN	.PAGE	.SBTTL	CLOSE FILE ;+; CLOFIL - CLOSE A FILE;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BUFFER;	R5 - ADDRESS OF FAB;;	THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME (2 WORDS)           !;	!---------------------------------------!;	!   OPERAT      ION CODE = 10                 !;	!---------------------------------------!;	!   INTERNAL FILE IDENTIFIER            !;	+---------------------------------------+;; OUTPUT:;;	ALL REGISTERS PRESERVED;;	IF THE CLOSE SUCCEEDS, THE LAST WORD OF THE;	SEND BUFFER IS CLEARED.;;	IF THE CLOSE FAILS, THE ERROR CODE IS RETURNED ;	IN THE LAST WORD OF THE SEND BUFFER.;- CLOFIL: ;; FREE RAB ASSOCIATED WITH FILE IF THERE IS ONE; 	MOV	#<RAB1-RB$BLN>,R010$:	ADD	#RB$BLN,R0		; R0 POINTS TO RAB	CMP	#LSTRAB,R0		; OUT OF RANGE?	BL      T	20$			; IF LT, YES - NO RAB FOR FILE	$COMPARE 6(R3),CTX,R0		; IS THIS RAB FOR THE FILE?	BNE	10$			; IF NE, NO - CHECK NEXT RAB	$STORE	#0,CTX,R0		; ELSE RELEASE RAB ;; INITIALIZE FAB; 20$:	$STORE	6(R3),IFI,R5		; PUT IFI FOR FILE IN FAB	$STORE	#0,FOP,R5		; FILE PROCESSING OPTIONS ;; CLOSE FILE; 	$CLOSE	R5			; CLOSE FILE	CALL	TSTFAB			; TEST FOR SUCCESS	RETURN	.PAGE	.SBTTL	CONNECT STREAM ;+; CONECT - CONNECT STREAM;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BUFFER;	R5 - ADDRESS OF FAB;;	      THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME (2 WORDS)           !;	!---------------------------------------!;	!   OPERATION CODE = 12                 !;	!---------------------------------------!;	!   INTERNAL FILE IDENTIFIER            !;	!---------------------------------------!;	!   KEY OF REFERENCE                    !;	!---------------------------------------!;	!   KEY SIZE                            !;	!------------------------------------      ---!;	!   RECORD ACCESS                       !;	+---------------------------------------+;; OUTPUT:;;	R0 - ADDRESS OF RAB;	ALL OTHER REGISTERS PRESERVED;;	IF THE STREAM IS CONNECTED, THE LAST WORD OF ;	THE SEND BUFFER IS CLEARED AND THE ADDRESS OF;	THE RAB ASSOCIATED WITH THE STREAM IS RETURNED ;	IN THE SECOND WORD.;;	IF THE CONNECT FAILS, THE ERROR CODE IS RETURNED;	IN THE LAST WORD OF THE SEND BUFFER.;-	.PAGECONECT: ;; INITIALIZE FAB; 	$STORE	6(R3),IFI,R5		; IFI FOR FILE ;; GET AVAILABLE RAB;; THE CONTEX      T WORD IN EACH RAB IS USED TO INDICATE; WHETHER THE RAB IS AVAILABLE AS FOLLOWS:;;	CONTEXT WORD = 0 IF RAB AVAILABLE;	CONTEXT WORD = IFI IF RAB IN USE; 	MOV	#<RAB1-RB$BLN>,R010$:	ADD	#RB$BLN,R0		; R0 POINTS TO RAB	CMP	#LSTRAB,R0		; OUT OF RANGE?	BGT	20$			; IF GT, NO	MOV	#RABMSG,R0		; R0 POINTS TO ERROR MESSAGE	MOV	#RMSGLN,R1		; R1 = MESSAGE LENGTH	JMP	ERRMSG			; PRINT ERROR MESSAGE, SEND TO					; CALLING TASK AND EXIT20$:	$COMPARE #0,CTX,R0		; RAB BEING USED?	BNE	10$			; IF NE, YES, TRY NEXT RAB	$STORE	6(R      3),CTX,R0		; INDICATE RAB NOW IN USE					; (STORE IFI IN CONTEXT WORD) ;; INITIALIZE RAB; 	$STORE	10(R3),KRF,R0		; KEY OF REFERENCE	$STORE	12(R3),KSZ,R0		; KEY SIZE TO MATCH	$STORE	14(R3),RAC,R0		; RECORD ACCESS ;; CONNECT STREAM; 	$CONNECT R0			; CONNECT STREAM	CALL	TSTSUC			; TEST FOR SUCCESS	BCS	30$			; IF CONNECT FAILED, RETURN	MOV	R0,2(R4)		; IF SUCCESSFUL, RETURN ADDRESS OF RAB30$:	RETURN		.PAGE	.SBTTL	DISCONNECT STREAM ;+; DISCNT - DISCONNECT STREAM;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADD      RESS OF SEND BUFFER;;	THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME (2 WORDS)           !;	!---------------------------------------!;	!   OPERATION CODE = 14                 !;	!---------------------------------------!;	!   ADDRESS OF RAB                      !;	+---------------------------------------+;; OUTPUT:;;	R0 - ADDRESS OF RAB;	ALL OTHER REGISTERS PRESERVED;;	IF THE STREAM IS DISCONNECTED, THE LAST WORD;	OF THE SEND BUFFER IS CLEARED. THE       CONTEXT WORD;	IN THE RAB ASSOCIATED WITH THE STREAM IS CLEARED;	TO INDICATE THE RAB IS FREE.;;	IF THE DISCONNECT FAILS, THE ERROR CODE IS;	RETURNED IN THE LAST WORD OF THE SEND BUFFER.;- DISCNT:	MOV	6(R3),R0		; R0 POINTS TO RAB	$DISCONNECT R0			; DISCONNECT STREAM	CALL	TSTSUC			; TEST FOR SUCCESS	BCS	10$			; IF DISCONNECT FAILED, RETURN	$STORE	#0,CTX,R0		; IF SUCCESSFUL, RELEASE RAB10$:	RETURN	.PAGE	.SBTTL	GET RECORD ;+; GETREC - GET RECORD;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BU      FFER;;	THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME (2 WORDS)           !;	!---------------------------------------!;	!   OPERATION CODE = 16                 !;	!---------------------------------------!;	!   ADDRESS OF RAB                      !;	!---------------------------------------!;	!   KEY BUFFER ADDRESS                  !;	!---------------------------------------!;	!   USER BUFFER ADDRESS                 !;	!-----------------------------      ----------!;	!   USER BUFFER SIZE                    !;	+---------------------------------------+;; OUTPUT:;;	R0 - ADDRESS OF RAB;	ALL OTHER REGISTERS PRESERVED;;	IF THE GET RECORD SUCCEEDS, THE LAST WORD ;	OF THE SEND BUFFER IS CLEARED AND THE RECORD  ;	ADDRESS AND SIZE RETURNED IN THE SEND BUFFER.;;	IF THE GET FAILS, THE ERROR CODE IS RETURNED;	IN THE LAST WORD OF THE SEND BUFFER.;- GETREC: ;; INITIALIZE RAB; 	MOV	6(R3),R0		; R0 POINTS TO RAB	$STORE	10(R3),KBF,R0		; PUT KEY BUFFER ADDRESS IN RAB	$STORE	12      (R3),UBF,R0		; USER BUFFER ADDRESS	$STORE	14(R3),USZ,R0		; USER BUFFER SIZE ;; GET RECORD; 	$GET	R0			; GET RECORD	CALL	TSTSUC			; TEST FOR SUCCESS	BCS	10$			; IF C-SET ERROR	$FETCH	6(R4),RBF,R0		; ELSE RETURN RECORD ADDRESS	$FETCH	10(R4),RSZ,R0		; AND RECORD SIZE10$:	RETURN	.PAGE	.SBTTL	UPDATE RECORD ;+; UPDREC - UPDATE RECORD;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BUFFER;;	THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME (      2 WORDS)           !;	!---------------------------------------!;	!   OPERATION CODE = 20                 !;	!---------------------------------------!;	!   ADDRESS OF RAB                      !;	!---------------------------------------!;	!   SPARE WORD                          !;	!---------------------------------------!;	!   RECORD BUFFER ADDRESS               !;	!---------------------------------------!;	!   RECORD BUFFER SIZE                  !;	+---------------------------------------+;; OUTPUT:;;	R0 - A      DDRESS OF RAB;	ALL OTHER REGISTERS PRESERVED;;	IF THE UPDATE SUCCEEDS, THE LAST WORD OF THE;	SEND BUFFER IS CLEARED.;;	IF THE UPDATE FAILS, THE ERROR CODE IS RETURNED;	IN THE LAST WORD OF THE SEND BUFFER.;- UPDREC: ;; INITIALIZE RAB; 	MOV	6(R3),R0		; R0 POINTS TO RAB	$STORE	12(R3),RBF,R0		; RECORD BUFFER ADDRESS	$STORE	14(R3),RSZ,R0		; RECORD BUFFER SIZE ;; UPDATE RECORD; 	$UPDATE	R0			; UPDATE RECORD	CALL	TSTSUC			; TEST FOR SUCCESS	RETURN	.PAGE	.SBTTL	PUT RECORD ;+; PUTREC - PUT RECORD;; INPUT:;;	R3 - ADD      RESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BUFFER;;	THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME (2 WORDS)           !;	!---------------------------------------!;	!   OPERATION CODE = 22                 !;	!---------------------------------------!;	!   ADDRESS OF RAB                      !;	!---------------------------------------!;	!   RECORD BUFFER ADDRESS               !;	!---------------------------------------!;	!   RECORD BUFFER SIZE                        !;	+---------------------------------------+;; OUTPUT:;;	R0 - ADDRESS OF RAB;	ALL OTHER REGISTERS PRESERVED;;	IF THE RECORD IS WRITTEN, THE LAST WORD;	OF THE SEND BUFFER IS CLEARED.;;	IF THE PUT FAILS, THE ERROR CODE IS RETURNED;	IN THE LAST WORD OF THE SEND BUFFER.;- PUTREC: ;; INITIALIZE RAB; 	MOV	6(R3),R0		; R0 POINTS TO RAB	$STORE	10(R3),RBF,R0		; RECORD BUFFER ADDRESS	$STORE	12(R3),RSZ,R0		; RECORD BUFFER SIZE ;; PUT RECORD; 	$PUT	R0			; PUT RECORD	CALL	TSTSUC			; TEST FOR SUCCESS	RETURN	      .PAGE	.SBTTL	BLOCK I/O READ ;+; BIORED - BLOCK I/O READ;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BUFFER;;	THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME (2 WORDS)           !;	!---------------------------------------!;	!   OPERATION CODE = 24                 !;	!---------------------------------------!;	!   ADDRESS OF RAB                      !;	!---------------------------------------!;	!   USER RECORD ADDRESS                       !;	!---------------------------------------!;	!   USER BUFFER SIZE                    !;	!---------------------------------------!;	!   VIRTUAL BLOCK NUMBER (2 WORDS)      !;	+---------------------------------------+;; OUTPUT:;;	R0 - ADDRESS OF RAB;	ALL OTHER REGISTERS PRESERVED;;	IF THE READ IS SUCCESSFUL, THE LAST WORD;	OF THE SEND BUFFER IS CLEARED.;;	IF THE READ FAILS, THE ERROR CODE IS RETURNED;	IN THE LAST WORD OF THE SEND BUFFER.;-	BIORED: ;; INITIALIZE RAB; 	MOV	6(R3),R0		; R0 POINTS TO RAB	$STOR      E	10(R3),UBF,R0		; USER RECORD BUFFER ADDRESS	$STORE	12(R3),USZ,R0		; USER RECORD BUFFER SIZE	$STORE	14(R3),BKT,R0		; VIRTUAL BLOCK NUMBER TO READ ;; READ; 	$READ	R0			; READ VIRTUAL BLOCK	CALL	TSTSUC			; TEST FOR SUCCESS	RETURN	.PAGE	.SBTTL	BLOCK I/O WRITE ;+; BIOWRT - BLOCK I/O WRITE;; INPUT:;;	R3 - ADDRESS OF RECEIVE BUFFER;	R4 - ADDRESS OF SEND BUFFER;;	THE RECEIVE BUFFER CONTAINS THE FOLLOWING:;;	+---------------------------------------+;	!   RAD50 TASK NAME (2 WORDS)           !;	!--------------------      -------------------!;	!   OPERATION CODE = 26                 !;	!---------------------------------------!;	!   ADDRESS OF RAB                      !;	!---------------------------------------!;	!   BUFFER ADDRESS                      !;	!---------------------------------------!;	!   BUFFER SIZE                         !;	!---------------------------------------!;	!   VIRTUAL BLOCK NUMBER (2 WORDS)      !;	+---------------------------------------+;; OUTPUT:;;	R0 - ADDRESS OF RAB;	ALL OTHER REGISTERS PRESERVE      D;;	IF THE WRITE IS SUCCESSFUL, THE LAST WORD;	OF THE SEND BUFFER IS CLEARED.;;	IF THE WRITE FAILS, THE ERROR CODE IS RETURNED;	IN THE LAST WORD OF THE SEND BUFFER.;- BIOWRT: ;; INITIALIZE RAB; 	MOV	6(R3),R0		; R0 POINTS TO RAB	$STORE	10(R3),RBF,R0		; BUFFER ADDRESS	$STORE	12(R3),RSZ,R0		; BUFFER SIZE	$STORE	14(R3),BKT,R0		; VIRTUAL BLOCK NUMBER TO WRITE ;; WRITE; 	$WRITE	R0			; WRITE VIRTUAL BLOCK	CALL	TSTSUC			; TEST FOR SUCCESS	RETURN	.PAGE	.SBTTL	TEST FOR SUCCESS ;+; TSTSUC -;; THIS ROUTINE DETERMINES I      F THE OPERATION JUST COMPLETED; WAS SUCCESSFUL AND INITIALIZES THE SEND BUFFER TO; RETURN TO THE CALLING TASK ACCORDINGLY.;; THERE ARE TWO ENTRY POINTS:;;	TSTFAB - USED IF THE STATUS FIELD IN THE FAB IS TO BE;	         CHECKED TO DETERMINE SUCCESS (FILE OPERATIONS);;	TSTSUC - USED IF THE STATUS FIELD IN THE RAB IS TO BE;	         CHECKED TO DETERMINE SUCCESS (RECORD OPERATIONS);; INPUT:;;	R0 - ADDRESS OF RAB IF ENTRY POINT IS TSTSUC;	R4 - ADDRESS OF SEND BUFFER;	R5 - ADDRESS OF FAB IF ENTRY POINT IS TSTFAB;      ; OUTPUT:;;	IF THE OPERATION WAS SUCCESSFUL, THE LAST WORD;	OF THE SEND BUFFER IS CLEARED.;;	IF THE OPERATION FAILED, THE ERROR CODE IS ;	RETURNED IN THE LAST WORD OF THE SEND BUFFER.;	THE STATUS VALUE (ACP ERROR CODE IF THERE IS;	ONE) IS RETURNED IN THE PRECEDING WORD.;- TSTFAB:	MOV	R5,R0			; R0 POINTS TO FAB TSTSUC:	$COMPARE #0,STS,R0		; OPERATION SUCCESSFUL?	BGE	10$			; IF GE, YES	$FETCH	30(R4),STS,R0		; OPERATION FAILED, RETURN ERROR CODE	$FETCH	26(R4),STV,R0		; RETURN STATUS VALUE	SEC				; INDICATE FAI      LURE	BR	20$ 10$:	CLR	30(R4)			; SUCCESS, CLEAR INDICATOR IN SEND BUFFER20$:	RETURN	.PAGE	.SBTTL	DIRECTIVE ERROR ROUTINE DIRERR: ;; SET UP ERROR MESSAGE; 	MOV	$DSW,R1			; DSW VALUE	MOV	#DSWBF,R0		; BUFFER FOR DSW	CLR	R2			; ZERO SUPPRESS	CALL	$CBDSG			; CONVERT DSW TO DECIMAL	MOV	#DIRMSG,R0		; R0 POINTS TO ERROR MESSAGE	MOV	#DMSGLN,R1		; R1 = MESSAGE LENGTH ;; PRINT ERROR MESSAGE; ERRMSG:	QIOW$S	#IO.WVB,#TILUN,,,,,<#MSGHD,#HDLEN,#44>	QIOW$S	#IO.WVB,#TILUN,,,,,<R0,R1,#53> ;; NOTIFY CALLING TASK OF FATAL ERROR   š   ; 	MOV	#1,30(R4)		; INDICATE FATAL ERROR IN SEND BUFFER	JMP	SEND			; SEND TO CALLING TASK	.PAGE	.SBTTL	TASK EXIT EXIT:	EXIT$S				; TASK EXIT	.END	INSRMS	 š          x¯}kQÁ› 8$ð‘      	.TITLE	SHUTDOWN UTILITY                                                ; KR001	.IDENT	"V1.1A03"                                                       ; KR004;                                                                               ;**-1;+                                                                              ; KR001;;;;;                         COPYRIGHT (C) 1978 BY;             DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.;;; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND  COPI      ED; 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 US      E OR  RELIABILITY  OF  ITS; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.;;;;;	MODULE:		SHUTDOWN;;	VERSION:	V1.1A                                                   ; KR001;                                                                               ; KR001;	EDIT LEVEL:	03                                                      ; KR004;                                                                               ;**-1;	AUTHOR:		GW                                                      ; KR002;			KMR                                                           ; KR002;                                                                               ; KR002;	DATE:		07-May-79                                               ; KR004;                                                                               ;**-1;                                                                               ; KR001;-                                                                              ; KR001;                                                                                     ; KR001;                                                                               ; KR001;+                                                                              ; KR001;                                                                               ; KR001;	MODIFICATION HISTORY                                                    ; KR001;                                                                               ; KR001;                                                                                     ; KR001;	VER/ED	DATE	INITIALS	REASON                                  ; KR001;	------- --------- ---	----------------------------------------        ; KR001;	V1.1A00	08-Mar-79 KMR	SPR 22089 - Single digit responses to TP        ; KR001;				  shutdown questions were causing defaults      ; KR001;				  to be supplied to TPCTRL prompts.             ; KR001;				TT0: - Code was added to check for TT0:.        ; KR001;	V1.1A01	09-Apr-79 KMR	SPR 22245 - Added code       to enable logins         ; KR002;				  before attempting to login the virtual        ; KR002;				  terminal for running TPCTRL.                  ; KR002;	V1.1A02	01-May-79 KMR	Removed version number from the herald.         ; KR003;	V1.1A03	07-May-79 KMR	Removed spawning of TPCTRL.                     ; KR004;				Added checks for installed TP's.                ; KR004;                                                                               ; KR001;                                                                                     ; KR001;-                                                                              ; KR001;                                                                               ; KR001;                                                                               ; KR001	.NLIST	BEX	.ENABL	LC	.MCALL	SPEAK,DIR$,SPWN$,GTSK$C,GPRT$C,ALTP$,ALUN$,ASTX$S	.MCALL	CRVT$C,ELVT$,QIOW$,QIO$,STOP$C,USTP$C,MRKT$C	.MCALL	EXST$S                                                          ; KR001;; USEFUL       SYMBOLS;CR	=	15LF	=	12VTLUN	=	10;; DIRECTIVE DBPS;SPAWN:	SPWN$	MCR...,,,1,1,,VTDONE,STAT,AUXSTP,LAUXST                         ; KR004;ALUN:	ALUN$	VTLUN,VT                                                        ; KR004;ALTP:	ALTP$	,80.                                                            ; KR004;ELVT:	ELVT$                                                                   ; KR004OUTVT:	QIO$	IO.WVB,VTLUN,32.,,STAT,,<0,0,32.>                               ;**-4INVT:	QIOW$	IO.RVB,VTLUN,32,,STAT,,<BUFFER      ,79.,32.>.PAGE; TEXT;;HELP1:	.ASCII	/Please  specify the  number of  minutes to  /                  ; KR004;	.ASCII	/wait  until initiating the  start of/<CR><LF>                  ; KR004; 	.ASCII	/transaction shutdown./<CR><LF>                                 ; KR004;LHELP1	=	. - HELP1                                                       ; KR004;A1:	.ASCII	/Minutes until start of transaction processor /                 ; KR004;	.ASCII	/shutdown procedure /                                           ; KR004      ;LA1	=	. - A1                                                          ; KR004;DEF1:	.ASCII	/<5>? /                                                         ; KR004;LDEF1	=	. - DEF1                                                        ; KR004;HELP2:	.ASCII	/When transaction processing has  been  /                       ; KR004;	.ASCII	/terminated,  active transactions will  be/<CR><LF>             ; KR004;	.ASCII	/allowed to complete,  provided they  finish /                  ; KR004;	.ASCII	/in  less than       a  specified number of/<CR><LF>                  ; KR004;	.ASCII	/minutes. Please specify this time limit./<CR><LF>              ; KR004;LHELP2	=	. - HELP2                                                       ; KR004;A2:	.ASCII	/Minutes until transaction aborts /                             ; KR004;LA2	=	. - A2                                                          ; KR004;DEF2:	.ASCII	/<10>? /                                                        ; KR004;LDEF2	=	. - DEF2                                                              ; KR004HELP3:	.ASCII	/Please specify the time,  in minutes,  to /                    ; KR004;	.ASCII	/wait after transaction processing has/<CR><LF>                 ; KR004	.ASCII	/wait before starting the shutdown/<CR><LF>                     ; KR004;	.ASCII	/ceased, until shutting down the remainder /                    ; KR004	.ASCII	/of  the system./<CR><LF>                                       ;**-22LHELP3	=	. - HELP3A3:	.ASCII	/Minutes until system shutdown /LA3	=	. - A3DEF3:      	.ASCII	/<30>? /                                                        ; KR004LDEF3	=	. - DEF3                                                        ;**-1HERALD:	.ASCII	<LF><LF>/Shutdown/<CR><LF><LF>                                  ; KR003	.ASCII	/System Shutdown Utility/<CR><LF>LHERLD	=	. - HERALDPOSITV:	.ASCII	<CR><LF>/Positive integer required/<CR><LF>LPOSTV	=	. - POSITVMAX:	.ASCII	<CR><LF>/Maximum value exceeded/<CR><LF>LMAX	=	. - MAX;                                                                                     ; KR004;	Set logons                                                              ; KR004;                                                                               ; KR004;LOGS:	.ASCII	@SET /LOGON@                                                    ; KR004;LLOGS	= . - LOGS                                                              ; KR004;                                                                               ; KR004;	Logon virtual terminal                                                        ; KR004;                                                                               ; KR004;HEL:	.ASCII	@HEL 1/1@                                                       ; KR004;LHEL	=	. - HEL                                                         ; KR004;TPCTRL:	.ASCII	/RUN $TPCTRL/                                           ; KR004;LTPCTR	=	. - TPCTRL                                                      ; KR004;STOP:	.ASCII	/STOP/                                                          ; KR004;L      STOP	=	. - STOP                                                        ; KR004;ALL:	.ASCII	/ALL/                                                           ; KR004;LALL	=	. - ALL                                                         ; KR004;REMOVE:	.ASCII	/REMOVE/                                                ; KR004;LREMOV	=	. - REMOVE                                                      ; KR004;EXT:	.ASCII	/EXIT/                                                          ; KR004;LEXT	=	. - EXT                                                               ; KR004                                                                                ; KR004;                                                                               ; KR004;	Command line to run AUXSTP                                              ; KR004;                                                                               ; KR004                                                                                ; KR004AUXSTP:	.ASCII	@RUN $AUXSTP/TAS      K=AUXSTP@                                       ; KR004LAUXST	=	. - AUXSTP                                                      ; KR004                                                                                ; KR004;BYE:	.ASCII	/BYE/                                                           ; KR004;LBYE	=	. - BYE                                                         ; KR004ERROR:	.ASCII	/? Shutdown being aborted/                                      ; KR004LERRO	=	. - ERROR                                                             ; KR004TTEM1:	.BYTE	CR, LF                                                          ; KR004	.ASCII	/? SHUTDOWN must be run from TT0: or batch/                     ; KR004	.BYTE	CR, LF                                                          ; KR004STTEM1	== . - TTEM1                                                            ; KR004                                                                                ; KR004TTEM2:	.BYTE	CR, LF                                                                ; KR004	.ASCII	/? GETLUN directive error -/                                    ; KR004TTDE:	.BLKB	6                                                               ; KR004	.BYTE	CR, LF                                                          ; KR004STTEM2	== . - TTEM2                                                            ; KR004                                                                                ; KR004;                                                                                     ; KR004;	TP check messages                                                       ; KR004;                                                                               ; KR004                                                                                ; KR004TPM1:	.BYTE	CR, LF                                                          ; KR004	.ASCII	/? Transaction processor /                                      ; KR004TPNAM:	.BLKB	6                                                               ; KR004      	.ASCII	/ still installed/                                              ; KR004                                                                                ; KR004LTPM1	= . - TPM1                                                              ; KR004                                                                                ; KR004                                                                                ; KR004TPM2:	.BYTE	CR, LF, LF                                                      ; KR004	.AS      CII	/All Transaction Processors must be removed before SHUTDOWN/    ; KR004	.BYTE	CR, LF                                                          ; KR004	.ASCII	/can be run.  Please remove all TP's and try again./            ; KR004	.BYTE	CR, LF, LF                                                      ; KR004                                                                                ; KR004LTPM2	= . - TPM2                                                              ; KR004                                                                                      ; KR004TRUE	= -1                                                                    ; KR004	.EVEN                                                                   ;**-37.PAGE; DATA AREAS;NAMES:	.RAD50	/PAR/                                                           ; KR004	.RAD50	/TP1/                                                           ; KR004	.RAD50	/PAR/                                                           ; KR004	.RAD50	/TP2/                                                                 ; KR004                                                                                ; KR004NNAMES	= 2                                                                     ; KR004                                                                                ; KR004STOPT:	.WORD	0ABORT:	.WORD	0REP:	.WORD	0BUFFER:	.ASCII	<CR>	.BLKB	79.SETUP::	.WORD	0INFLAG:	.WORD	0OUTFLG:	.WORD	0ENDFLG:	.WORD	0ECHO:	.WORD	0STAT:	.WORD	0,0WARN:	.WORD	0NUM:	.WORD	0TPFLAG:	.WORD	0                                                                     ; KR004.PAGE                                                                           ; KR004.SBTTL PRINT HERALD, CHECK FOR ACTIVE TP AND DO DIALOG                          ; KR004                                                                                ; KR004SHUTDO:	CALL	TTCHK				; Make sure we are running      ; KR004						; from TT0: or batch            ; KR004                                                                                ;       KR004;                                                                               ; KR004;	Print the herald                                                        ; KR004;                                                                               ; KR004                                                                                ; KR004	MOV	#HERALD,HELP+Q.IOPL		;SET UP HERALD TEXT             ; KR004	MOV	#LHERLD,HELP+Q.IOPL+2		;AND ITS LENGTH                 ; KR004	DIR$	#HELP				;PRINT IT                             ; KR004;                                                                               ; KR004;	Check for installed TP's                                                ; KR004;                                                                               ; KR004                                                                                ; KR00420$:	CLR	TPFLAG		; Assume we will not find any TP's              ; KR004                                                                                      ; KR004	MOV	#NNAMES, R3	; The number of names goes in R3.               ; KR004                                                                                ; KR004	MOV	#NAMES, R4	; The start of the name goes in R4.             ; KR004                                                                                ; KR00430$:	MOV	(R4)+, -(SP)	; Push the second part of the next              ; KR004				;   partition name onto the stack.              ; KR004                                                                                      ; KR004	MOV	(R4)+, -(SP)	; Push the first part of the next               ; KR004				;   partition name onto the stack.              ; KR004                                                                                ; KR004	CALL	CKFRTP		; Call the routine to check for installed       ; KR004				;   TP's.                                       ; KR004                                                                                ; KR004	TST	(SP)+		; Was there a TP in this par      tition?             ; KR004                                                                                ; KR004	BEQ	40$		; None here, go finish with this partition      ; KR004				;   name.                                       ; KR004                                                                                ; KR004	CALL	TPERR		; Print out a message about this TP.            ; KR004                                                                                ; KR00440$:	TST	(SP)+		; Pop the other       word off the stack.             ; KR004                                                                                ; KR004	SOB	R3, 30$		; Go check the next partition name.             ; KR004                                                                                ; KR004	TST	TPFLAG		; Were there any TP's active?                   ; KR004                                                                                ; KR004	BEQ	Q3		; No, go continue.                              ; KR004                                                                                      ; KR004	MOV	#TPM2, HELP+Q.IOPL                                              ; KR004	MOV	#LTPM2, HELP+Q.IOPL+2                                           ; KR004				; Setup to print the TP installed message.      ; KR004                                                                                ; KR004	DIR$	#HELP		; Print the message.                            ; KR004                                                                                      ; KR004	EXST$S	#EX$SEV		; Exit with severe status.                      ; KR004                                                                                ; KR004                                                                                ; KR004;                                                                               ; KR004;	ASK THE USER HOW LONG TILL SHUTDOWN                                     ; KR004;                                                                               ;       KR004                                                                                ; KR004;Q1:	SPEAK	#A1,#LA1,#DEF1,#LDEF1,#0,#HELP1,#LHELP1,REP,,STAT,Q1,CZ,ERR     ; KR004;	CALL	TEST15				;MAKE SURE ANSWER IS VALID      ; KR004;	BCS	Q1				;IT WASN'T                      ; KR004;	MOV	R1,STOPT			;SAVE IT                        ; KR004;Q2:	SPEAK	#A2,#LA2,#DEF2,#LDEF2,#0,#HELP2,#LHELP2,REP,,STAT,Q1,CZ,ERR     ; KR004;	CALL	TEST15				;MAKE SURE ANSWER IS VALID      ; KR004;	BCS	Q2				;IT WASN'T                            ; KR004;	MOV	R1,ABORT			;SAVE IT                        ; KR004Q3:	SPEAK	#A3,#LA3,#DEF3,#LDEF3,#0,#HELP3,#LHELP3,REP,,STAT,Q3,CZ,ERR     ; KR004	MOV	#99.,R5				;SET UPPER LIMIT                ;**-17	CALL	TESTR5				;MAKE SURE ANSWER IS VALID	BCS	Q3				;IT WASN'T	MOV	R1,TIMLFT			;SAVE IT	CLR	R0				;MAKE DOUBLE PRECISION	DIV	#5,R0				;DIVIDE BY 5	INC	R0				;BUMP IT	MOV	R0,INTRVL			;SET THE INTERVAL;; FIND OUT WHY WE ARE RUNNING AND ON WHAT KIND OF SYSTEM;	GTSK$C	BUFFER				;GET THE TASK PARAMETERS	CMP	B      UFFER,#^RSET			;CHECK IF TASK NAME IS SETSHT	BNE	10$				;NO	CMP	BUFFER+2,#^RSHT			;SECOND WORD	BNE	10$				;NOT FROM SETUP	DEC	SETUP				;FLAG FROM SETUP10$:	GPRT$C	TP1PAR,BUFFER			;FIND OUT IF THERE IS A TP1PAR	BCC	50$				;THERE IS                       ; KR004	JMP	SHUTUP				;THERE ISN'T                    ; KR004;                                                                               ; KR004;	Run AUXSTP                                                              ; KR004;                                                                                     ; KR004                                                                                ; KR00450$:	MOV	#AUXSTP,HELP+Q.IOPL		;PRINT TEXT                     ; KR004	MOV	#LAUXST,HELP+Q.IOPL+2		;LENGTH                         ;**-57	DIR$	#HELP				;DO IT	CALL	SPWNIT				;SPAWN IT	CALL	WAITEX				;WAIT FOR EXIT;	MOV	#BYE,SPAWN+S.PWCA		;LOGOFF                         ; KR004;	MOV	#LBYE,SPAWN+S.PWCL		;LENGTH                         ; KR004;	CLR	ECHO				;DON'T ECHO                           ; KR004;	CALL	SPWNIT				;SPAWN IT                       ; KR004;	CALL	WAITEX				;WAIT FOR EXIT                  ; KR004;	MOV	#50.,ALTP+A.LTPR		;SET PRIORITY TO 50             ; KR004;	DIR$	#ALTP				;DO IT                          ; KR004;	DIR$	#ELVT				;GET RID OF THE VIRTUAL TERMINAL; KR004	JMP	SHUTUP				;GO DO STANDARD PROCESSING      ; KR004.PAGE                                                                           ; KR004.SBTTL SHUT DOWN TRANSACTION PROCESSING                                               ; KR004                                                                                ; KR004;20$:	DIR$	#ALTP				;RAISE PRIORITY                 ; KR004                                                                                ; KR004;	CALL	SPWNIT			; Spawn the command which will enable   ; KR004					;   logins.                             ; KR004                                                                                ; KR004;	CALL	WAITEX			; Wait for the command to complete.           ; KR004                                                                                ; KR004;	CRVT$C	VTIN,VTOUT,,,,ERR	;CREATE A VIRTUAL TERMINAL              ; KR004;	MOV	$DSW,ELVT+E.LVNM	; Set the unit number for               ; KR004					;   elimination.                        ; KR004;	MOV	$DSW,ALUN+A.LUNU		;SET UP FOR ASSIGN LUN          ; KR004                                                                                ; KR004;                                                                                     ; KR004;	Set up the spawn directive to spawn hello on the virtual terminal       ; KR004;                                                                               ; KR004;	MOV	$DSW,SPAWN+S.PWVT	; Set up for spawning to the            ; KR004					; virtual terminal.                     ; KR004                                                                                ; KR004;	MOV	#HEL, SPAWN+S.PWCA	; Set up the address of the HEL command.; KR004                                                                                      ; KR004;	MOV	#LHEL, SPAWN+S.PWCL	; Set up the length of the HEL command. ; KR004                                                                                ; KR004;	DIR$	#ALUN,ERR			;ASSIGN THE LUN                 ; KR004;	CALL	SPWNIT				;SPAWN HELLO                    ; KR004;	CALL	WAITEX				;WAIT TILL DONE                 ; KR004;	DEC	ECHO				;SET ECHO FLAG                  ; KR004;	MOV	#TPCTRL,SPAWN+S.PWCA		;SET COMMAND LINE               ; KR004;	MOV	#LTPCTR,SPA      WN+S.PWCL		;AND LENGTH                     ; KR004;	CALL	SPWNIT				;SPAWN IT                       ; KR004;	MOV	#STOP,OUTVT+Q.IOPL		;SET UP STOP COMMAND            ; KR004;	MOV	#LSTOP,OUTVT+Q.IOPL+2		;AND LENGTH                     ; KR004;	CALL	RESPND				;RESPOND TO PROMPT              ; KR004;	MOV	#ALL,OUTVT+Q.IOPL		;SET UP ALL RESPONSE            ; KR004;	MOV	#LALL,OUTVT+Q.IOPL+2		;LENGTH                         ; KR004;	CALL	RESPND				;RESPOND                        ; KR004;	MOV	STOPT,R1			;GET STOP TIM      E                  ; KR004;	CALL	NUMRES				;GIVE NUMERICAL RESPONSE        ; KR004;	TST	WARN				;WAS THERE A WARNING            ; KR004;	BNE	40$				;YES. SKIP NEXT RESPONSE        ; KR004;	MOV	ABORT,R1			;GET ABORT TIME                 ; KR004;	CALL	NUMRES				;GIVE NUMERICAL RESPONSE        ; KR004;40$:	MOV	#REMOVE,OUTVT+Q.IOPL		;SET UP FOR REMOVE COMMAND      ; KR004;	MOV	#LREMOV,OUTVT+Q.IOPL+2		;LENGTH                         ; KR004;	CALL	RESPND				;RESPOND                        ; KR004;	MOV	#ALL,OUTVT+      Q.IOPL		;RESPOND WITH ALL               ; KR004;	MOV	#LALL,OUTVT+Q.IOPL+2		;LENGTH                         ; KR004;	CALL	RESPND				;RESPONSE                       ; KR004;	MOV	#EXT,OUTVT+Q.IOPL		;EXIT                           ; KR004;	MOV	#LEXT,OUTVT+Q.IOPL+2		;LENGTH                         ; KR004;	CALL	RESPND				;RESPONSE                       ; KR004;	CALL	WAITEX				;WAIT FOR EXIT                  ; KR004;	MOV	#AUXSTP,SPAWN+S.PWCA		;RUN $AUXSTP                    ; KR004;	MOV	#LAUXST,SPAWN+S.PWCL		;LEN      GTH                         ; KR004                                                                                ; KR004                                                                                ; KR004                                                                                ; KR004                                                                                ; KR004.PAGE                                                                           ;**-9.SBTTL	CONTROL Z AND ERROR PROCESSING; COME       HERE FOR ^Z;CZ:	MOV	#EX$WAR,R0			;SET STATUS	JMP	$EXST				;EXIT;; COME HERE FOR HARD ERROR;ERR:	MOV	#ERROR,HELP+Q.IOPL		;GET MESSAGE	MOV	#LERRO,HELP+Q.IOPL+2		;LENGTH	DIR$	#HELP				;PRINT IT	MOV	#EX$ERR,R0			;SET ERROR STATUS	JMP	$EXST				;EXIT.PAGE.SBTTL	SUBROUTINES.SBTTL	NUMRES - NUMERICAL RESPONSE;; NUMRES - GIVE A NUMERICAL RESPONSE;;	INPUT:	R1 = BINARY NUMBER  ( 0 <= R1 <= 99);;	OUTPUT:	R0,R1,R2,R3 = UNDEFINED;NUMRES:	MOV	#1,R2				;INITIALIZE DIGIT COUN	MOV	#NUM,R3				;POINTER FOR RESULTS	CLR	R0				;MA      KE DOUBLE PRECISION	DIV	#10.,R0				;GET THE DIGITS	TST	R0				;QUOTIENT	BEQ	10$				;NONE	INC	R2				;TWO DIGITS	ADD	#'0,R0				;MAKE ASCII	MOVB	R0,(R3)+			;SAVE IT                        ; KR00110$:	ADD	#'0,R1				;MAKE SECOND DIGIT ASCII        ; KR001	MOVB	R1,(R3)				;SAVE IT	MOV	#NUM,OUTVT+Q.IOPL		;SET UP POINTER TO TEXT	MOV	R2,OUTVT+Q.IOPL+2		;AND LENGTH.SBTTL RESPND - RESPOND;; RESPND - RESPOND TO PROMPT;;	INPUT:	OUTVT+Q.IOPL ---> REPONSE;		OUTVT+Q.IOPL+2 = LENGTH OF RESPONSE;RESPND:	CLR	WARN				;INITIALIZ      E WARNING FLAG20$:	CALL	OUTPUT				;CHECK FOR OUTPUT	CALL	ENDCHK				;ARE WE DONE	BCS	ERR				;YES. BUT WE SHOULDN'T BE	TST	INFLAG				;VT WANT INPUT	BEQ	20$				;NO	TST	WARN				;WAS WARNING RECEIVED	BEQ	30$				;NO	CMP	OUTVT+Q.IOPL,#NUM		;IS THIS A NUMBER	BEQ	40$				;YES30$:	DIR$	#OUTVT				;OUTPUT IT	MOV	OUTVT+Q.IOPL,HELP+Q.IOPL	;COPY BUFFER	MOV	OUTVT+Q.IOPL+2,HELP+Q.IOPL+2	;AND COUNT	DIR$	#HELP				;PRINT IT	DEC	INFLAG				;CORRECT COUNT40$:	RETURN					;DONE.PAGE.SBTTL	TEST15 - TEST DIALOG RESPONSE;; TEST15 - TES      T THE DIALOG RESPONSE TO MAKE SURE ITS BETWEEN 0 AND 15.;;	INPUT:	REP = RESPONSE;;	OUTPUT:	R1 = RESPONSE;		R5 = UNDEFINED;		C SET IF ERROR;TEST15:	MOV	#15.,R5				;SET UPPER LIMIT TO 15.SBTTL	TESTR5 - TEST DIALOG RESPONSE;; TESTR5 - TEST THE DIALOG RESPONSE TO MAKE SURE ITS BETWEEN 0 AND R5;;	INPUT:	R5 = MAXIMUM VALUE;		REP = RESPONSE;;	OUTPUT:	R1 = RESPONSE;		R5 = UNDEFINED;		C SET IF ERROR;TESTR5:	MOV	REP,R1				;GET THE REPLY	BPL	10$				;SKIP IF POSITIVE	MOV	#POSITV,HELP+Q.IOPL		;SET TEXT FOR ERROR	MOV	#LP      OSTV,HELP+Q.IOPL+2		;SET ITS LENGTH	BR	20$				;GO PRINT IT10$:	CMP	R1,R5				;CHECK MAXIMUM	CLC					;ASSUME GOOD	BLE	30$				;SKIP IF OK	MOV	#MAX,HELP+Q.IOPL		;SET ERROR TEXT	MOV	#LMAX,HELP+Q.IOPL+2		;AND ITS LENGTH20$:	DIR$	#HELP				;PRINT ERROR MESSAGE	SEC					;FLAG IT30$:	RETURN					;DONE.SBTTL	SPAWN ROUTINE;; SPWNIT - SPAWN MCR COMMAND LINE;;	INPUT:	SPAWN+S.PWCA ---> COMMAND LINE;		SPAWN+S.PWCL =  LENGTH OF COMMAND LINE;SPWNIT:	DIR$	#SPAWN,ERR			;SPAWN IT	RETURN					;THATS IT.SBTTL	WAIT FOR EXIT;; WAITEX       - WAIT FOR SPAWNED TASK TO EXIT;WAITEX:	CALL	OUTPUT				;CHECK FOR OUTPUT FROM VT	CALL	ENDCHK				;CHECK FOR EXIT	BCC	WAITEX				;LOOP IF NOT EXIT	RETURN					;DONE.PAGE.SBTTL	GET VT OUTPUT;; OUTPUT - GET VT OUTPUT AND OPTIONALLY ECHO IT;; 	OUTPUT: WARN <> 0 IF ERROR MESSAGE RECEIVED;OUTPUT:	MRKT$C	,1,2,TIMAST			;WAIT 1 SECOND	STOP$C					;BY STOPPING10$:	TST	OUTFLG				;IS THERE OUTPUT	BEQ	30$				;NO	DEC	OUTFLG				;CORRECT COUNT	DIR$	#INVT,ERR			;GET THE VT INPUT	TST	ECHO				;ARE WE ECHOING	BEQ	10$				;NO	CMPB	B      UFFER,#'%			;IS IT A WARNING	BNE	20$				;NO	DEC	WARN				;YESY SET FLAG20$:	MOV	STAT+2,R0			;GET THE COUNT	MOV	#BUFFER,HELP+Q.IOPL		;POINT TO IT	MOV	R0,HELP+Q.IOPL+2		;SET THE COUNT	DIR$	#HELP				;ECHO	BR	10$				;LOOP30$:	RETURN					;CHECK FOR OTHER CONDITIONS.SBTTL	CHECK FOR EXIT;; ENDCHK - CHECK FOR EXIT. ABORT IF STATUS IS BAD;;	OUTPUT:	C SET IF EXIT FOUND;ENDCHK:	TST	ENDFLG				;IS THIS AN EXIT	BEQ	20$				;NO	CMP	ENDFLG,#2			;GOOD EXIT	BLE	10$				;YES	JMP	ERR				;ERROR10$:	CLR	ENDFLG				;RESET THE END FLA      G	SEC					;SET THE CARRY20$:	RETURN					;DONE	.PAGE                                                                   ; KR001                                                                                ; KR001	.SBTTL	TTCHK - Check for TT0: or batch                                 ; KR001                                                                                ; KR001TTCHK:	CLR	R0		; Set to check lun 13.                          ; KR001                                                                                      ; KR001	CALL	CHKTT0		; Call the standard routine for                 ; KR001				;   checking lun 13.                            ; KR001                                                                                ; KR001	BCC	30$		; If carry is clear, just return.               ; KR001                                                                                ; KR001	MOV	$DSW, R1	; Move the DSW to R1.                           ; KR001                                                                                      ; KR001	TST	R1		; Test R1 for error.                            ; KR001                                                                                ; KR001	BLE	10$		; We had a directive error, go handle.          ; KR001                                                                                ; KR001	MOV	#TTEM1, HELP+Q.IOPL                                             ; KR001	MOV	#STTEM1, HELP+Q.IOPL+2                                          ; KR001				; Move the message       information to the           ; KR001				;   QIOW DPB.                                   ; KR001                                                                                ; KR001	BR	20$		; Go print the message.                         ; KR001                                                                                ; KR00110$:	NEG	R1		; Make the error positive.                      ; KR001                                                                                ; KR001	MOV	#TTDE, R0	; Put the       address of where the error            ; KR001				;   goes into R0.                               ; KR001                                                                                ; KR001	CALL	$CBDMG		; Convert the error to decimal and              ; KR001				;   place in the message buffer.                ; KR001                                                                                ; KR001	MOV	#TTEM2, HELP+Q.IOPL                                             ; KR001	MOV	#STTEM2, HELP+Q.IOPL+2                                                ; KR001				; Move the buffer parameters into the           ; KR001				;   QIOW DPB.                                   ; KR001                                                                                ; KR00120$:	DIR$	#HELP		; Write out whichever message we should.        ; KR001                                                                                ; KR001	EXST$S	#EX$SEV		; Exit with severe status.                      ; KR001                                                                                      ; KR00130$:	RETURN			; Return to the caller.                         ; KR001                                                                                ; KR001	.PAGE                                                                   ; KR004	.SBTTL CKFRTP - CHECK FOR ACTIVE TP's                                   ; KR004;+                                                                              ; KR004;                                                                                     ; KR004;  C K F R T P                                                                  ; KR004;                                                                               ; KR004;	This routine first checks for the presence of the partition whose       ; KR004;	  name is specified in the stack. If the partion is not found,          ; KR004;	  a false value (0) is placed in the stack and the routine returns.     ; KR004;                                                                                     ; KR004;	Once the partition is located, the presence of sub-partitions is        ; KR004;	  checked. If none are present or the name of the first is not          ; KR004;	  COMxxx, a false value (0) is placed in the stack and the              ; KR004;	  routine returns.                                                      ; KR004;                                                                               ; KR004;	If the first sub-partion is COMxxx, a true value (-1) is placed               ; KR004;	  in the stack along with the KT-11 address of the sub-partion.         ; KR004;	  The routine then returns.                                             ; KR004;                                                                               ; KR004;                                                                               ; KR004;  ENTRY CONDITIONS:                                                            ; KR004;                                                                               ;       KR004;	2(SP) - 1ST RAD50 WORD OF PARTITION NAME                                ; KR004;	4(SP) - 2ND RAD50 WORD OF PARTITION NAME                                ; KR004;                                                                               ; KR004;                                                                               ; KR004;  EXIT CONDITIONS:                                                             ; KR004;                                                                               ; K      R004;	2(SP) = STATUS OF PARTITION (TRUE (-1) => No TP active in the partition;; KR004;				     FALSE (0) => TP is active in the partition); KR004;	4(SP) = KT11 BASE ADDRESS OF SUB-PARTITION COMMON (IF STATUS = 'TRUE')  ; KR004;                                                                               ; KR004;                                                                               ; KR004;  REGISTERS ALTERED:                                                           ; KR004;                                                                                     ; KR004;	R0,R1                                                                   ; KR004;                                                                               ; KR004;                                                                               ; KR004;  CALLING SEQUENCE:                                                            ; KR004;                                                                               ; KR004;	PUSH	2ND RAD50 WORD       OF PARTITION NAME                                ; KR004;	PUSH	1ST RAD50 WORD OF PARTIITON NAME                                ; KR004;	CALL	CKFRTP                                                          ; KR004;-                                                                              ; KR004                                                                                ; KR004	.MCALL	PCBDF$,INH$S,ENB$S                                              ; KR004                                                                                      ; KR004	PCBDF$				; DEFINE PCB OFFSETS                    ; KR004                                                                                ; KR004                                                                                ; KR004CKFRTP:                                                                         ; KR004                                                                                ; KR004;                                                                                     ; KR004;	Initialization                                                          ; KR004;                                                                               ; KR004                                                                                ; KR004	MOV	SP, R0		; Save SP so we can access the stack.           ; KR004                                                                                ; KR004	TST	(R0)+		; Point to the parameters placed in the         ; KR004				;   stack       by caller.                            ; KR004                                                                                ; KR004	INH$S			; Inhibit context switching.                    ; KR004                                                                                ; KR004	MOV	#$PARHD-P.LNK, R1                                               ; KR004				; Initialize R1 so that next statement will     ; KR004				;   cause us to point to the first partition    ; KR004				;   control block (PCB).                              ; KR004                                                                                ; KR004;                                                                               ; KR004;	Check for presence of the desired partition                             ; KR004;                                                                               ; KR004                                                                                ; KR00410$:	MOV	P.LNK(R1), R1	; Point to the next PCB in the list      .            ; KR004                                                                                ; KR004	BEQ	50$		; We have reached the end of the list;          ; KR004				;   i.e, we have not found the desired          ; KR004				;   partion. Go indicate this.                  ; KR004                                                                                ; KR004	CMP	P.NAM(R1), (R0)	; Do the first 3 characters of the partition    ; KR004				;   name agree?                                 ; KR004                                                                                      ; KR004	BNE	10$		; No, go try the next partition.                ; KR004                                                                                ; KR004	CMP	P.NAM+2(R1), 2(R0)                                              ; KR004				; The first 3 agree. Do the last 3 also         ; KR004				;   agree?                                      ; KR004                                                                                      ; KR004	BNE	10$		; No. Go try the next partition in the          ; KR004				;   list.                                       ; KR004                                                                                ; KR004;                                                                               ; KR004;	Having located the partition, check the first sub-partition.            ; KR004;                                                                               ; KR004                                                                                      ; KR004	MOV	P.SUB(R1), R1	; Point to the first sub-partition's            ; KR004				;   PCB.                                        ; KR004                                                                                ; KR004	BEQ	50$		; No sub-partitions - assume no TP.             ; KR004                                                                                ; KR004	CMP	P.NAM(R1), #^RCOM                                               ; KR004				; See if th      e sub-partition name is              ; KR004				;   COMxxx.                                     ; KR004                                                                                ; KR004	BNE	50$		; First sub-partition is not COMxxx.            ; KR004				;   This means no TP.                           ; KR004                                                                                ; KR004	MOV	#TRUE, (R0)	; Indicate that a TP is installed.              ; KR004                                                                                      ; KR004	MOV	P.REL(R1), 2(R0)                                                ; KR004				; Put the KT-11 address of the sub-par          ; KR004				;   into the stack.                             ; KR004                                                                                ; KR004	BR	70$		; Branch to the return.                         ; KR004                                                                                ; KR004;                                                                                     ; KR004;	Return for no TP                                                        ; KR004;                                                                               ; KR004                                                                                ; KR00450$:	CLR	(R0)		; Indicate that no TP is installed.             ; KR004				;   (Set to FALSE (0)).                         ; KR004                                                                                      ; KR004                                                                                ; KR004                                                                                ; KR004;                                                                               ; KR004;	Common return                                                           ; KR004;                                                                               ; KR004                                                                                      ; KR00470$:	ENB$S			; Re-enable context switching                   ; KR004                                                                                ; KR004	RETURN			; Return to caller.                             ; KR004                                                                                ; KR004	.PAGE                                                                   ; KR004	.SBTTL	TPERR - PRINT TP INSTALLED ERRORS                               ; KR004                                                                                      ; KR004TPERR:	MOV	R3, -(SP)	; Save R3 on the stack                          ; KR004                                                                                ; KR004	MOV	R4, -(SP)	; Save R4 on the stack                          ; KR004                                                                                ; KR004	MOV	#100000, R4	; Setup offset into APR 4.                      ; KR004                                                                                      ; KR004	MOV	#TPNAM, R3	; This is where the TP name is to go.           ; KR004                                                                                ; KR004	MOV	#6, R2		; There are 6 characters to move in the         ; KR004				;   TP name.                                    ; KR004                                                                                ; KR004	INC	TPFLAG		; Indicate that at least one TP was             ; KR004				;   still installed.                                  ; KR004                                                                                ; KR004	INH$S			; Inhibit context switching while we            ; KR004				;   access the TP's common area.                ; KR004                                                                                ; KR004	MOV	UISAR4, -(SP)	; Save the current mapping.                     ; KR004                                                                                ; KR004	MOV	10(SP), UISAR4	; Put the KT-11 addre      ss of the partition        ; KR004				;   in the APR. (Note that the sub-partition    ; KR004				;   COMxxx has the same KT-11 address as        ; KR004				;   the main partition).                        ; KR004                                                                                ; KR00410$:	MOVB	(R4)+, (R3)+	; Move another character of the TP name         ; KR004				;   from the common area to the message.        ; KR004                                                                                      ; KR004	SOB	R2, 10$		; Go move another character, if there is one.   ; KR004                                                                                ; KR004	MOV	(SP)+, UISAR4	; Restore the KT-11 register.                   ; KR004                                                                                ; KR004	ENB$S			; Re-enable context switching now that          ; KR004				;   our sensitive work is done.                 ; KR004                                                                                      ; KR004	MOV	#TPM1, HELP+Q.IOPL                                              ; KR004	MOV	#LTPM1, HELP+Q.IOPL+2                                           ; KR004				; Put the address and length of the TP          ; KR004				;   installed message into the DPB.             ; KR004                                                                                ; KR004	DIR$	#HELP		; Print out the message.                        ; KR004                                                                                      ; KR004	MOV	(SP)+, R4	; Restore R4.                                   ; KR004                                                                                ; KR004	MOV	(SP)+, R3	; Restore R3.                                   ; KR004                                                                                ; KR004	RETURN			; Return to the caller.                         ; KR004                                                                                ; KR004                                                                                      ; KR004	.PAGE                                                                   ; KR001	.SBTTL	AST PROCESSING                                                  ; KR001	.ENABL	LSB;; VT REQUESTED INPUT;VTIN:	INC	INFLAG				;FLAG INPUT WAITING	BR	10$				;SKIP;; VT REQUESTED OUTPUT;VTOUT:	INC	OUTFLG				;FLAG WAITING FOR OUTPUT10$:	CMP	(SP)+,(SP)+			;POP 2 WORDS OFF STACK	BR	20$				;SKIP;; SPAWN TASK EXIT;VTDONE:	MOV	STAT,ENDFLG			;SAVE THE STATUS	INC	ENDF   œ   LG				;MAKE SURE ITS SET;; MARK TIME REQUEST;TIMAST:20$:	USTP$C					;UNSTOP THE PROGRAM	TST	(SP)+				;CLEAN UP STACK	ASTX$S					;EXIT	.DSABL	LSB	.END	SHUTDOœ          (oŸÌÁ› 8$fS   p  .;.;	Copy Files.;	.ENABLE SUBSTITUTION	.ENABLE ESCAPE;; Copy Files from specified UIC to MM0:;;	(Null entry will reselect UIC ;;	 Escape will Terminate);.UIC:	.ASKS UIC Copy to MM0: Files from  g,m ?	.IFT <ESCAPE> .GOTO EXIT	.IF UIC = "" .GOTO UIC.NEXT:	.ASKS FILE Filename ?	.IFT <ESCAPE> .GOTO EXIT	.IF FILE = "" .GOTO UIC	COPY/CO ['UIC']'FILE' MM0:	.GOTO NEXT.EXIT:p         “%kQÁ› 8$        .TITLE	TPS-11 DATA STRUCTURES.IDENT	"1.1C13";;;;;;                         COPYRIGHT (C) 1978 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  H      EREBY; 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.;;;;;	MODULE:		TPS-11 DATA STRUCTURE DEFINITIONS;;	VERSION:	V001A;;	AUTHOR:		ANDY WILSON;;	DATE:		JUNE 1976;;;	THIS MODULE CONTAINS:;;	DESCRIPTIONS AND DATA DEFINITIONS FOR TPS-11 DATA STRUCTURES.;; EDI      TS:;	CP01: 1/18/79;	ADD AT.RMS TO ATT STATUS BYTE DEFINITIONS.;;	CP02: 1/29/79;	ADD JN.FLS TO SEND (TO JOURNAL DRIVER) CODES.;;	CP03: 2/20/79;	CHANGE AT.RMS TO AT.DSP. CHANGE SIZE OF LINK CONTEXT BLOCKS (MASTER AND;	SLAVE.);;	CP04: 2/21/79;	ADD DM.CTZ SYMBOL: SIZE OF DATA MANAGER'S SYSTEM THREAD CONTEXT BLOCK.;;	CP05: 3/2/79;	ADD .MXTST: MAXIMUM # OF TSTs PERMITTED IN CACHE;;	CP06: 3/12/79;	ADD S.OTB2 TO SCB, TE.IVS TO TIM ERROR CODES, AND ER.LOG TO;	EXECMGR ERROR CODES.;;	CP07: 3/16/79;	ADD S.TRID TO TERMI      NAL SCB.;;	CP08: 4/4/79. ADD SP.SPN TO S.FLGS.;	CP09: 4/20/79. ADD SS.BWT TO BATCH SCB, AND TE.SIZ TO TIM ERROR CODES.;	CP10: 5/7/79: ADD V.END TO SYSTEM WORKSPACE DEFINITIONS.;	CP11: 5/15/79: ADD TE.TMB TO TIM ERROR CODES.;	CP12: 5/21/79: ADD C.FLG2 TO CCB.;	CP13: 6/18/79: CHANGE .TROUT FROM 45 TO 1..PAGE.SBTTL	TPS-11 DATA STRUCTURES - DESCRIPTIONS;+;;; APPLICTION COMMON AREA:;;	SCB ALPHA TABLE;	TRANSACTION DESCRIPTOR TABLE;	CONVERSATION CONTROL BLOCKS;	APPLICATION FILE TABLE;	SMALL NODE POOL:;		CONTEXT BL      OCKS FOR MISC. THREADS (END TRANSACTION, ABORT, ETC.);		TIMER QUEUE NODES;		CIM STATISTIC BLOCK;;;; EXTENDED MEMORY:;;	STATION CONTROL BLOCKS;; DATA MANAGER REGIONS:;;	1. MAPPED AT ASR 1;		CONTEXT BLOCKS AND RABS FOR ACTIVE STREAMS;;	2. MAPPED AT ASR 3 ;		CHANNEL CONTROL BLOCKS;		RECORD LOCK BLOCKS;; RMS IMPURE AREA (PER FILE);;	RMS FILE AND STREAM STRUCTURES (IFAB,IRAB,BDB,KEY BUFFERS);; CACHE:;;	1. MESSAGE MANAGER;		MESSAGE CONTROL BLOCKS;		MESSAGES AND TRANSACTION SLOTS;; 	2. TERMINAL INTERFACE MANAGER ;      		TRANSACTION DESCRIPTION BLOCKS;		FORMAT RECORDS;		BUFFERS FOR TERMINAL I-O;;	3. DATA MANAGER;		BUFFERS POOL FOR RMS;;	4. EXECUTION MANAGER;		TASK (TST), LIBRARY IMAGES;; TERMINAL INTERFACE MANAGER CONTEXT BLOCK AREA:;;	CONTEXT BLOCKS FOR TERMINAL INTERFACE MANAGER;; EXECUTION MANAGER CONTEXT BLOCK AREA:;;	CONTEXT BLOCKS FOR EXECUTION MANAGER.PAGE.SBTTL	TPS-11 DATA STRUCTURES - GLOSSARY;; SCB -- STATION CONTROL BLOCK;; MCB -- MESSAGE CONTROL BLOCK;; CCB -- CONVERSATION CONTROL BLOCK;; AFT -- APPLICATION FI      LE TABLE;; CAB -- CHANNEL ACCESS BLOCK;; TDT -- TRANSACTION DESCRIPTOR TABLE;.PAGE	.MCALL	IRAOF$	IRAOF$	RMS$L.PAGE.SBTTL	TPS-11 DATA STRUCTURES - MESSAGE CONTROL BLOCK;; ASSOCIATED WITH EVERY MESSAGE IN THE SYSTEM IS A MESSAGE COMTROL BLOCK.; THE MCB HOLDS ALL THE SYSTEM INFORMATION ABOUT THAT MESSAGE. ;  THE MCB IS ALWAYS CONTIGUOUS WITH THE MESSAGE DATA.;;M.JHD == 00	;WD.00	[B.00]	JOURNAL HEADER		;		SET UP BY THE JOURNAL CALL ROUTINE TO CONTAIN:		;		1 WORD	RECORD TYPE		;		3 WORD	APPLICATION NAME		;		3 WOR      D	TRANSACTION TYPE		;		1 WORD	SPAREM.ID  == 20	;WD.10	[B.20]	MESSAGE IDENTITYM.CCB == 22	;WD.11	[B.22]	POINTER TO CCB FOR THIS MESSAGEM.FLG == 24	;WD.12	[B.24]	FLAG WORDM.MDP == 26	;WD.13	[B.26]	DISPLACEMENT TO USER MESSAGE IN BLOCK (32 WORD BLOCKS)M.DTW == 27	;	[B.27]	DISPLACEMENT TO TRANSACTION W/S IN 32. WORD BLOCKSM.MSZ == 30	;WD.14	[B.30]	SIZE OF AREA TO MAP INTO TST (MOD 32)M.TSZ == 31	;	[B.31]	SIZE OF TRAN. W/S IN 32. WORD BLOCKSM.SDP == 32	;WD.15	[B.32]	DISPLACEMENT TO SYSTEM WORK SPACE 32. WORD BLO      CKS		;		if =0 then THERE ARE NO STAGED MESSAGESM.NOR == 34	;WD.16	[B.34]	NO. OF ROUTES LEFT TO PROCESS FOR MESSAGE M.DNR == 35	;	[B.35]	CURRENT ROUTE NUMBER (2N-2)M.TID == 36	;WD.17	[B.36]	TRANSACTION ID. (2 WORDS)M.MNO == 42	;WD.21	[B.42]	MESSAGE NUMBER FOR TRANSCATIONM.TIM == 44	;WD.22	[B.44]	TIME MESAGE QUEUED		;		THREE WORDS BINARY:		;		HOUR, MIN, SECONDM.TSR == 52	;WD.25	[B.52]	SCB OF TRAN. SOURCEM.SST == 54	;WD.26	[B.54]	POINTER TO SOURCE STATION FOR MESSAGEM.BSZ == 56	;WD.27	[B.56]	SIZE OF USER MESSA      GE IN BYTESM.ROT == 60	;WD.30	[B.60]	FIRST ROUTE ENTRY;;; THE REMAINDER OF THE MCB IS AN 8 ENTRY(ONE WORD PER ENTRY) ROUTE TABLE.; THE ROUTE TABLE IS A LIST OF STATIONS (SCB POINTERS) TO RECIEVE; THIS MESSAGE. EACH STATION RECIEVES THE MESSAGE IN TURN.;;; SIZE PARAMETERS:;M.MCBZ == 1	; MCB SIZEM.MTST == 1	; TST CONTEXT SIZEM.MSIZ == M.MCBZ+M.MTST	; SIZE OF MCB AND TST CONTEXT IN 32. WD. BLOCKSM.TRCZ == 1	; SIZE OF TRACE CONTEXT AREA IN 32. WD. BLOCKSM.MRUT == 8.	; MAXIMUM NO. OF ROUTES ALLOWED;; JOURNAL HEA      DER - RECORD TYPE FLAGS;JN.SLT == 001	; RECORD IS A SLOTJN.INP == 002	; RECORD IS AN INPUT MESSAGEJN.SND == 003	; RECORD IS A SENT MESSAGEJN.USR == 004	; RECORD IS USER DATA;; FLAGS WORD DEFINITIONS:-;MF.ACT == 001	; THIS MESSAGE ACTIVEMF.SLT == 002	; THIS MESSAGE IS A TRANSACTION SLOTMF.RFX == 010	; REFLEXIVE MESSAGEMF.NEW == 020	; NEW SLOT;;;; IF THE MESSAGE IS A SLOT THE MESSAGE WILL BE MAPPED INTO; THE ADDRESS SPACE (MESSAGE AND TRANSACTION WORKSPACE) OF; THE PROCESSING TST. IN ORDER TO PROVIDE CONTEXT       FOR THE TST ROOT AND; LIBRARY MODULES THE FIRS 32 WORDS MAPPED INTO THE TSTS WITH THE MESSAGE; ARE USED.; THE MESSAGE WILL BE MAPPED AT ASR6 IN THE TST AND THE ADDRESS OF THE MESSAAGE; TO BE PROCESSED (140040) WILL BE PASSED BY THE ROOT MODULE TO THE TST; SUBROUTINE.;;;;; TST CONTEXT AREA:;M.CAL == 00		; CALLING STRUCTURE			; USED BY ROOT MODULE TO CALL TSTM.PRM ==00		; NUMBER OF PARAMETERS   --  ALWAYS SET TO +2M.VAM == 02		; VIRTUAL ADDRESS IN TSTS OF INVOKING MESSAGEM.VTW == 04		; VIRTUAL ADDRES IN TST O      F TRANSACTION WORKSPACEM.EXM == 06		; TASK NAME OF EXECUTION MANAGERM.DM  == 12		; TASK NAME OF DATA MANAGERM.CXT == 16		; CONTEXT BLOCK ADDRESS IN EXECUTION MANAGERM.DXT == 20		; CONTEXT BLOCK IN DATA MANAGERM.SBF == 22		; SEND BUFFERM.SXT == 22		; CONTEXT BLOCK TO SEVICE REQUESTS FOR THIS TSTM.FUN == 24		; FUNCTION CODEM.TSQ == 26		; TRANSACTION SEQUENCE NUMBER (2 WORDS)M.TCB == 32		; CCB ADDRESS FOR TRANSACTION;; THE REMAINING WORDS ARE SHARED BY THE SEND AND RECEIVE; BUFFERS USED BY THE TST LIBRARY;;M.C      FB == 34		; RECIEVE BUFFER/DATA AREA SEND BUFFERM.CTN == 34		; SENDER NAME FOR RECEIVE (2 WORDS RAD50)M.CST == 40		; STATUS IN RECEIVEM.CIF == 44		; RETURNED DATA IN RECEIVEM.TXT == 74		; TRACE CONTEXT FLAG			; IF THIS WORD IS NON-ZERO THEN THE TRACE CONTEXT			; AREA IS APPENDED TO THE TST CONTEXT AREA.M.CSM == 76		; CHECKSUM WORD;; TRACE CONTEXT AREA. ONLY CREATED IF THE TRACE FLAG IS SET; FOR THE TRANSACTION TYPE.;M.TNM == 100		; NAME OF TRACE MANAGER (2 WORDS RAD50)M.TCX == 104		; CONTEXT BLOCK OF THREAD       TO WAKE IN TRACE.M.TFN == 106		; FUNCTION CODEM.TCC == 110		; CCB FOR TRACEM.TRT == 112		; TRACE STATUSM.TRP == 114		; REPLY DATAM.TSP == 122		; SEND PARAMETERS;;; MAPPING VIRTUAL ADDRESS OF MESSAGE IN TST;M.ASR == 140000		; ASR 6.PAGE.SBTTL	TPS-11 DATA STRUCTURES - STATION CONTROL BLOCK;;;S.NAM == 00	;WD.00	[B.00]	STATION NAME (3 WORDS ASCII)S.PRI == 06	;WD.03	[B.06]	STATION PRIORITYS.FLG == 07	;	[B.07]	FLAGS BYTES.FST == 10	;WD.04	[B.10]	POINTER TO FIRST MESSAGE (MESSAGE IDENTITY)		; S.FST AND G.MES MUST       HAVE SAME OFFSETS.LST == 12	;WD.05	[B.12]	POINTER TO LAST MESSAGE (MESSAGE IDENTITY)S.SAT == 14	;WD.06	[B.14]	STATUS BYTES.THD == 15	;	[B.15]	THRESHOLD BEFORE TRIGGER OF PROCESS(DEFAULT 1)S.MCT == 16	;WD.07	[B.16]	# OF MESSAGES CURRENTLY QUEUED TO THIS STATIONS.TYP == 17	;	[B.17]	STATION TYPE		;WD.10	[B.20]	SPARE WORDS.CCB == 22	;WD.11	[B.22]	NEXT CCB FOR THIS STATIONS.TSK == 24	;WD.12	[B.24]	TASK NAME (2 WD. RAD50) TO WAKE		;		TO PROCESS THIS STATION.S.TID == 30	;WD.14	[B.30]	IDENTIFIER TO RETURN (CONTEXT       BLOCK ADDR.)		;		WHEN WAKING TASK.S.TOT == 32	;WD.15	[B.32]	TOTAL MESSAGE QUEUED TO THIS STATION S.TRST == 34	;WD.16	[B.34]	# OF TRANSACTIONS INITIATED BY THIS STATIONS.TABO == 36	;WD.17	[B.36]	# OF TRANSACTIONS ABORTED ON THIS STATIONS.TINV == 37	;	[B.37]	# OF INVALID TRANSACTION TYPE REQUESTS;; THE REMAINING 16 WORDS ARE FOR THE USE OF THE PROCESSING ELEMENT; ASSOCIATED WITH THIS STATION;;; FLAG BYTE DEFINITIONS:-;SF.RDP == 001	; STATION REDIRECTED (POINTER TO REDIRECTED STATION IN S.FST)SF.JUL == 002	;       JOURNAL ALL MESSAGES QUEUED TO THIS STATION (NOT USED IN RELEASE 1)SF.64  == 004	; SCB IS 64 WORDS;; STATION TYPE DEFINITIONS:;SY.MBX == 002	; MAILBOX STATIONSY.TIM == 004	; FORMS DEVICE STATIONSY.TST == 006	; TST STATIONSY.BSU == 010	; BATCH SUBMIT STATIONSY.LMA == 012	; LINK MASTER STATIONSY.LSL == 014	; LINK SLAVE STATIONSY.BSL == 016	; BATCH SLAVE STATION;;; STATUS BYTE DEFINITIONS:-;ST.WAT == 000	; WAITING FOR A MESSAGEST.ACT == 002	; ACTIVEST.NAT == 004	; STATION NOT ACTIVE.PAGE;; EXECUTION MANAGER PO      RTION OF SCB;S.LINK == 40	;WD.20	[B.40]	QUEUEING LINKS.FLGX == 42	;WD.21	[B.42]	FLAGS WORDS.MUL  == 44	;WD.22	[B.44]	MULTIPROGRAMMING LIMITS.CML  == 45	;	[B.45]	CURRENT MULTIPROGRAMMING LEVELS.SUB  == 46	;WD.23	[B.46]	SUB-IMAGE IDS.BDB  == 50	;WD.24	[B.50]	BDB OF IMPURE AREA OF TSTS.LBN == 52	;WD.25	[B.52]	LOGICAL BLOCK NUMBER OF TSTS.MXSZ == 56	;WD.27	[B.56]	SIZE OF TASK IMAGES.LDV == 60	;WD.30	[B.60]	UCB ADDRESSS.ST3 == 62	;WD.31	[B.62]	THIRD TCB STATUS WORDS.TCB == 64	;WD.32	[B.64]	TCB ADDRESSS.TLOD == 6      6	;WD.33	[B.66]	NUMBER OF TIMES TST LOADEDS.FLOD == 70	;WD.34	[B.70]	NUMBER OF TIMES FAILED TO LOAD TSTS.MCOP == 71	;	[B.71]	MAXIMUM COPIES LOADEDS.TSTA == 72	;WD.35	[B.72]	NUMBER OF INTERNAL TST ERRORSS.HLOK == 74	;WD.36	[B.74]	NUMBER OF HITS ON LOCKED RECORDSS.IO   == 76	;WD.37	[B.76]	NUMBER OF I/O REQUESTS;; FLAGS WORD DEFINITIONS:-;SF.FIX == 001	; TST FIXEDSF.SRS == 002	; TST SERIALLY REUSABLE.PAGE;; TERMINAL INTERFACE MANAGER PORTION OF SCB (SCB CONTROLLED BY TERMINAL INTERFACE ; MANAGER IS 64 WORDS);S      .CTRD == 40	;WD.20	[B.40]	CBA FOR END THREADS.GRPN == 42	;WD.21	[B.42]	NUMBER OF STATIONS IN GROUPS.OPER == 43	;	[B.43]	FLAGS FOR ALLOWED OPERATIONSS.THRD == 44	;WD.22	[B.44]	CONTEXT BLOCK ADDRESS OF SPECIFIC		;		THREAD FOR STATIONS.FMAD == 46	;WD.23	[B.46]	RELATIVE DISK ADDRESS OF FORMAT RECORD OR  		;		ADDRESS OF TDT ENTRY FOR INITIAL OPERATIONS.FMBN == 50	;WD.24	[B.50]	# OF BLOCKS FOR FORMAT RECORD POINTED TO 		;		BY S.FMAD; 0 IF S.FMAD IS TDT POINTERS.BULA  == 51	;	[B.51]	DIALOGUE MANAGER BULAS.HTN  ==       52	;WD.25	[B.52]	TIMS TERMINAL ID FOR ATSS.BTN  == 54	;WD.26	[B.54]	ATSS TERMINAL ID FOR TIMS.INBF == 56	;WD.27	[B.56]	IF FQM, KT11 ADDRESS			;		IF ATS INPUT, VIRTUAL ADDRESS OF BUFFER		;		CONTAINING SEGMENT DESCRIPTOR BLOCKS		; ****** MUST BE IMMEDIATELY FOLLOWED BY S.INID		;S.INID == 60	;WD.30	[B.60]	IF FQM, BDB VALUE		;		IF ATS INPUT, # OF SDB'S IN S.INBF BUFFERS.OTBF == 62	;WD.31	[B.62]	IF FQM, KT ADDRESS		;		IF ATS OUTPUT, VIRTUAL ADDRESS OF BUFFER		;		CONTAINING SEGMENT DESCRIPTOR BLOCKS		; ****** MUS      T BE IMMEDIATELY FOLLOWED BY S.OTID		;S.OTID == 64	;WD.32	[B.64]	IF FQM, BDB VALUE		;		IF ATS OUTPUT, # OF SDB'S IN S.OTBFS.CFBF == 66	;WD.33	[B.66]	KT POINTER TO CURRENT FORMAT RECORDS.CFID == 70	;WD.34	[B.70]	BUFFER ID FOR S.CFBF (BDB ADDRESS)S.CTDB == 72	;WD.35	[B.72] 	KT POINTER TO CURRENT TDB 		;		(SECOND WORD DISPL. IN BLOCK)S.TFUN == 76	;WD.37	[B.76]	FUNCTION CODE FROM SYSTEMS.RACT == 77	;	[B.77]	MODIFIER FLAGS FROM REPLY MESSAGES (OR ACCESS CODE)S.CFNA == 100	;WD.40	[B.100]	DISPLACEMENT TO FORMAT RE      CORD SECTION IN TDBS.CFCD == 102	;WD.41	[B.102]	CURRENT DISPLACEMENT TO START OF 		;		TIM SECTION OF FORMAT RECORDS.CFSZ == 104	;WD.42	[B.104]	INPUT BUFFER SIZE FOR CURRENT FORMS.SIBL == 106	;WD.43	[B.106]	KT11 VALUE FOR RELATIVE IF VT62 AND PRINTERS.FLGS == 110	;WD.44	[B.110]	FLAGS FOR PROCESSINGS.STAT == 112	;WD.45	[B.112] TERMINAL SOFTWARE STATES.NNBS == 113	;	[B.113]	MAX # OF SDB'S EXPECTED FOR INPUTS.FFRW == 114	;WD.46	[B.114] FLAGS FROM FORMAT RECORDS.OTCD == 116	;WD.47	[B.116] CURRENT DISPL. TO START       OF OUTPUT BUFFERS.INCD == 117	;	[B.117] CURRENT DISPL. TO START OF INPUT BUFFERS.TOTN == 120	;WD.50	[B.120] TOTAL # MESSAGES INPUT/OUTPUT FROM TERMINALS.TRCO == 122	;WD.51	[B.122] TOTAL # TRANSACTIONS COMPLETEDS.ABOT == 124	;WD.52	[B.124] TOTAL # TRANSACTIONS ABORTED BY OPERATORS.ABPT == 125	;	[B.125] TOTAL # TRANSACTIONS ABORTED BY TST'SS.ABTH == 126	;WD.54	[B.126]	ADDRESS OF BUFFER ABORT THREAD TASK NAMES.CTDT == 130	;WD.54	[B.130]	CURRENT TDT ADDRESSS.TAT  == 132	;WD.55	[B.132] TRANSACTION AUTHORIZATION       TABLE		;		    (4 WORDS)S.TERM == 142	;WD.61	[B.142]	TERMINAL NAME (3 WORDS)S.RMUL == 150	;WD.64	[B.150] RESOURCE MANAGER ULAS.ULA == 151	; 	[B.151]	DIALOGUE MANAGER ULAS.OTB2 == 152	;WD.65	[B.152] SECONDARY POINTER TO ATS BUFFER		;***CP06S.TRID == 154	;WD.66  [B.154] TRANSACTION SEQUENCE NUMBER. 2 WORDS	;***CP07		;WD.67							;***CP07;; ALLOWED OPERATIONS BYTE DEFINITIONS:-;SO.I   == 001	; INPUT ONLYSO.O   == 002	; OUTPUT ONLYSO.IO  == 003	; INPUT/OUTPUTSO.ESM == 004	; ENABLED FOR SYSTEM MESSAGESSO.FTY ==       010	; INITIAL OPERATION IS TRAN. TYPESO.NVL == 020	; NO AUTHORISATION FOR TRANSACTION ON THIS STATIONSO.SGN == 040	; STATION ASSOCIATED WITH SIGNON WORK CLASSSO.SIB == 100	; IF THERE IS A RELATIVE;; PROCESSING BYTE DEFINITIONS (S.FLGS):-;SP.ROE == 000001	; CURRENT OPERATION IS REPLYSP.BRO == 000002	; CURRENT OPERATION IS BROADCASTSP.INT == 000004	; CURRENT OPERATION IS INITIAL OPERATIONSP.CMG == 000010	; CURRENT OP IS 'C' TYPE FQMSP.EMO == 000020	; CURRENT OPERATION IS IN ERROR PROCESSING MODESP.RPT == 0000      40	; CURRENT OPERATION IS A REPORTSP.PWF == 000100	; POWERFAIL CLOSED TERMINAL OR			; ABORT MESSAGE TO BE SENT AFTER CRASHSP.RTA == 000200	; RETRY TERMINAL ACCESSSP.MSG == 000400	; MESSAGE WAITING FOR STATION OUTPUT ONLYSP.PAU == 001000	; PAUSE REQUIRED FOR OUTPUT ONLYSP.ERR == 002000	; ERROR FLAGSP.SPN == 004000	; SUSPENDED AT TIM LEVEL			;***CP08SP.OPN == 100000	; TRANSACTION HAS BEEN OPENED;; TERMINAL SOFTWARE STATE BYTE DEFINITIONS:-;SS.NOP == 000	; NOT INITIALIZEDSS.COM == 001	; AT TIM LEVELSS.WTA == 0      02	; WAITING FOR INPUT FROM ATSSS.PAT == 004	; PROCESSING INPUT FROM ATSSS.PQM == 010	; PROCESSING FQM FOR DELIVERY TO ATSSS.WQM == 020 	; WAITING FOR FQMSS.ECL == 040	; TERMINAL CLOSED	.PAGE;; LINK MANAGER PORTION OF SCB;;; LINK MASTER STATION -;;S.NSL  == 40	;WD.20	[B.40]	NUMBER OF SUBLINKSS.FLGL == 41	;	[B.41]	FLAGS BYTES.FCA  == 42	;WD.21	[B.42]	FIRST SUBL. CXB ADDRS.TOTL == 44	;WD.22	[B.44]	TOTAL EXCHANGES ON THIS SCBS.ACEX == 46	;WD.23	[B.46]	CURRENT NUM. ACTIVE EXCHANGESS.WCNT == 50	;WD.24	[B.50]	TOT      AL WAITS FOR A SUBLINKS.TTIL == 52	;WD.25	[B.52]	TOTAL SLAVE TXNS INITIATEDS.PERR == 54	;WD.26	[B.54]	PERMANENT ERROR COUNTS.RXM  == 56	;WD.27	[B.56]	RE-TRANSMIT COUNTS.WCT  == 60	;WD.30	[B.60]	WAITQ LISTHEAD (2 WORDS);; NEXT TWO FIELDS PRESENT ONLY IN TPS-TPS MASTER;S.RNNM == 64	;WD.32	[B.64]	REMOTE NODE NAME (6 ASCII CHAR)S.RTPN == 72	;WD.35	[B.72]	REMOTE T.P. NAME (6 ASCII CHAR);; NEXT FIELD PRESENT ONLY IN TPS-IBM MASTER;S.IBMM == 64	;WD.32	[B.64]	IBM PSEUDO DEVICE MASK BITS (4 WORDS);;; FLAGS BYTE DEFI      NITIONS;SL.ACU == 001	; ALL SUBLINKS IN USESL.IBM == 002	; THIS IS AN IBM SCBSL.PER == 004	; LINK DOWN VIA TPMODSL.LDN == 010	; LINK DOWN VIA PERMANENT ERROR OR CONNECT FAILURE;;S.LMSZ == 240	; SIZE OF CONTEXT BLOCK (IN BYTES) =			;***CP03		; S.LMXZ * NUMBER OF SUBLINKS	.PAGE;;; LINK SLAVE STATION -;S.LUN  == 40	;WD.20	[B.40]	NETWORK LUNS.FLGR == 41	;	[B.41]	FLAGS BYTES.KTDB == 42	;WD.21	[B.42]	TDB ADDR. (KT11)S.TDBO == 44	;WD.22	[B.44]	VIRT ADDR (ASR4) OF START OF TDBS.TDBC == 46	;WD.23	[B.46]	OFFSET TO CU      RRENT TDB ENTRYS.BFR  == 50  	;WD.24	[B.50]	RECEIVE BUFFER ADDR (KT11)S.RTID == 52	;WD.25	[B.52]	MAINLINE CONTEXT BLOCK ADDRS.SBA  == 54	;WD.26	[B.54]	STATISTICS BLOCK ADDRESSS.MSIZ == 56	;WD.27	[B.56]	MAX MESSAGE SIZE (FROM TDB)S.TDTA == 60	;WD.30	[B.60]	TDT ENTRY ADDRESS.RSS  == 62	; WD.31 [B.62]	RESOURCE SHORTAGE COUNTERS.CNOD == 64	;WD.32	[B.64]	2 WORDS RAD50 NAME OF CONNECT NODE;;; FLAGS BYTE DEFINITIONS;SS.TRO == 001	; TRANSACTION OPENSS.XCH == 002   ; WAITING FOR NET INPUTSS.CON == 004	; CONNECTEDSS.      LDN == 010	; LINK DOWN VIA TPMODSS.WEX == 020	; WAITING FOR END OF EXCHANGESS.SPC == 040	; SPACE HELD FROM CACHESS.ALC == 100	; ALL CLEAR FOR NEW SLAVE TXN - FORCES WAIT FOR ABORT THREAD;;S.LSSZ == 200	; CONTEXT BLOCK SIZE (BYTES)				;***CP03.PAGE;; MAILBOX PORTION OF SCB;;S.MRCZ == 40	;WD.20	[B.40]	MAXIMUM RECORD SIZES.MFTR == 42	;WD.21	[B.42]	RECORD # OF FIRST RECORD IN FILE (2 WORDS)S.MLTR == 46	;WD.23	[B.46]	RECORD # OF LAST RECORD IN FILE (2 WORDS)S.MBUF == 52	;WD.25	[B.52]	CACHE BUFFER ADDRESS (512. B      YTES)S.MIFI == 54	;WD.26	[B.54]	IFI FOR MAILBOX FILES.MNRC == 60	;WD.30	[B.60]	NUMBER OF RECORDS IN FILES.MACT == 62	;WD.31	[B.62]	ACTIVE MESSAGESS.MRC1 == 64	;WD.32	[B.64]	# OF BASE RECORD	.PAGE;; BATCH MANAGER PORTION OF THE SCB;S.TBVA == 40	;WD.20	[B.40]	SE TASK BUFFER V.A.S.TDT  == 42	;WD.21	[B.42]	POINTER TO TDTS.SNAM == 44	;WD.22	[B.44]	SENDING TASK NAME (2 WORDS  RAD50)S.TNAM == 50	;WD.24	[B.50]	TRANSACTION NAME (3 WORDS  ASCII)S.BADR == 56	;WD.27	[B.56]	ADDR. OF FIRST BYTE OF MESSAGES.BLEN == 60	;WD      .30	[B.60]	LENGTH OF MESSAGE IN BYTESS.RES  == 62	;WD.31	[B.62]	RESOURCE FLAG (0=NONE; 1=TDB; -1=TRANSACTION)S.OTDB == 64	;WD.32	[B.64]	V. A. OF TDBS.BFLG == 66	;WD.33	[B.66]	FLAG WORD;; FLAG WORD DEFINITION;SS.BAV == 002	;STATION UNAVAILABLESS.BRT == 004	;ABORTSS.BWT == 010	;SUSPENDED, WAITING FOR REPLY				;***CP09.PAGE.SBTTL	TPS-11 DATA STRUCTURES - SLAVE STATISTICS BLOCK;; LINK MANAGER -; SLAVE STATISTICS BLOCK - ALLOCATED IN THE SMALL BUFFER POOL; ONE PER MANAGER (SLAVE STATS ON A PER-SCB BASIS ARE NOT       REALLY MEANINGFUL);O.TOTS == 00	;WD.00	[B.00]	TOTAL LINK EXCHANGESO.ACES == 02	;WD.01	[B.02]	ACTIVE EXCHANGESO.TTIS == 04	;WD.02	[B.04] 	TOTAL TXNS STARTEDO.ACTS == 06	;WD.03	[B.06]	ACTIVE TXNSO.PERR == 10	;WD.04	[B.10]	PERMANENT ERRS (DISCONNECTS)O.SIZ  == 12	;SIZE OF STATS BLOCK.PAGE.SBTTL	TPS-11 DATA STRUCTURES - CONVERSATION CONTROL BLOCK;;;C.TID == 00	;WD.00	[B.00]	TRANSACTION SEQUENCE NUMBER (2 WORDS)C.NRS == 04	;WD.02	[B.04]	NUMBER OF TIMES EXECHNGE RESTARTEDC.EXT == 05	;	[B.05]	EXCHANGE NUMBERC.TDB       == 06	;WD.03	[B.06]	POINTER TO TDT ENTRY FOR TRANSACTIONC.SCB == 10	;WD.04	[B.10]	POINTER TO SOURCE SCBC.CCB == 12	;WD.05	[B.12]	POINTER TO NEXT CCB FOR STATIONC.DA1 == 14	;WD.06	[B.14]	DA OF FIRST SLOT AREA FOR TRANSACTIONC.DA2 == 16	;WD.07	[B.16]	DA OF SECOND SLOT AREA FOR TRANSACTIONC.SLT == 20	;WD.10	[B.20]	POINTER (MESSAGE ID) OF SLOTC.CHN == 22	;WD.11	[B.22]	POINTER TO FIRST CHANNEL BLOACK (IN D.M.)C.CQE == 24	;WD.12	[B.24]	SCB FOR CURENT QUEUE ENTRY FOR SLOTC.TCB == 26	;WD.13	[B.26]	TCB FOR ACTIVE TS      T FOR THIS TRANSACTIONC.FLG == 30	;WD.14	[B.30]	FLAGS WORDC.OWN == 32	;WD.15	[B.32]	INDEX IN CCB TABLE TO OWNER OF THIS TRANSACTION		;		(ZERO IF NOT SPAWNED)C.FLG2== 33	;	[B.33]	2ND FLAGS BYTE				;***CP12C.SPN == 34	;WD.16	[B.34]	STAGED SPAWN TRANSACTION LIST (CCB'S)C.IAT == 36	;WD.17	[B.36]	PTR. INTO ACTIVE TRAN. TABLE;;; FLAG DEFINITIONS:;CF.GO  == 000001	; TRANSACTION ACTIVE (MESSAGE SENT)CF.NEX == 000002	; NO EXCHANGE RECOVERY FOR THIS TRANSACTIONCF.JIP == 000004	; JOURNAL INPUT MESSAGESCF.JOP == 000010      	; JOURNAL OUTPUT MESSAGESCF.2DA == 000020	; SECOND SLOT AREA ON DISC IN USECF.ABO == 000040	; TRANSACTION ABORTEDCF.SQR == 000100	; SLOT REQUIRED FOR THIS TRANSACTIONCF.STA == 000200	; STAGE AREA FOR THIS TRANSACTIONCF.RRQ == 000400	; REPLY NOT REQUIRED FOR EXCHANGECF.CLD == 001000	; TRANSACTION CLOSEDCF.JOR == 002000	; ITEMS STAGED FOR JORNALLINGCF.ERT == 004000	; EXCHANGE BEING RESTARTEDCF.LMA == 010000	; TRANSACTION HAS VISITED MASTER LINK STATIONCF.HLD == 020000	; HOLD TRASACTION (IE STAGED )CF.CRA ==       040000	; CRASH RESTART FOR TRANSATIONCF.WRK == 100000	; WORK FILES FOR TRANSACTION;; DEFINITIONS FOR SECOND FLAGS BYTE:;C2.SPN == 001		; TXN IS A SPAWNED TXN				;***CP12;;C.CSIZE == C.IAT+2.PAGE.SBTTL	TPS-11 DATA STRUCTURES - APPLICATION FILE TABLE;; FILE TABLE ENTRY STRUCTURE:-;F.FID == 00	;WD.00	[B.00]	FILE IDENTITY - 6 ASCII CHARA. (3. WORDS)F.FLG == 06	;WD.03	[B.06]	FLAGS BYTE		;	[B.07]	SPAREF.LKL == 10	;WD.04	[B.10]	POINTER TO LOCK LIST FOR FILE		;WD.05	[B.12]	FORWORD AND BACKWARD POINTERSF.NGET == 14	      ;WD.06	[B.14]	NUMBER OF GETSF.NUPD == 16	;WD.07	[B.16]	NUMBER OF UPDATESF.NDEL == 20	;WD.10	[B.20]	NUMBER OF DELETESF.NINS == 22	;WD.11	[B.22]	NUMBER OF INSERTSF.NLOK == 24	;WD.12	[B.24]	NUMBER OF HITS ON LOCKED RECORDSF.IMP == 26	;WD.13	[B.26]	RMS IMPURE AREA POINTER (KT-11);;; FLAG DEFINITIONS:-;FF.STG == 001	; STAGE ALL LOCKS AND UPDATES FOR THIS FILEFF.JRN == 002	; JOURNAL ALL AFTER IMAGES TO THIS FILEFF.OPF == 004	; FAILED TO OPEN FILEFF.WRK == 010	; WORK FILEFF.FDL == 020	; FAST DELETES TO THIS FILEFF      .LKT == 040	; IF SET ALLOWED TO READ LOCKED RECORDS FOR THIS FILEFF.RDO == 100	; READ ONLY FILEFF.KEY == 200	; FILE IS AN INDEXED FILE;;F.SIZE == F.IMP+2	; SIZE AN AFT ENTRY.PAGE.SBTTL	TPS-11 DATA STRUCTURES - CHANNEL ACCESS BLOCK;;;R.NXT == 00	;WD.00	[B.00]	NEXT CAB FOR TRANSACTIONR.CHN == 02	;WD.01	[B.02]	CHANNEL NUMBERR.FLG == 03	;	[B.03]	FLAGS BYTER.ISN == 04	;WD.02	[B.04]	RMS INTERNAL STREAM IDENTIFIERR.LST == 06	;WD.03	[B.06]	LOCK LISTR.RFA == 10	;WD.04	[B.10]	RFA OF LAST OPERATION		;		(3 WORDS)	; IF       THE CHANNEL IS WAITING FOR A LOCK TOBE RELEASED THE 	; THREE RFA WORDS ARE USED AS FOLLOWS:R.LKQ == 10	;WD.04	[B.10]	LOCK WAIT QUEUE		;		(2 WORDS)R.TWQ == 14	;WD.06	[B.14]	TIMER QUEUE LINK WORD	;	;R.EXT == 16	;WD.07	[B.16]	EXCHANGE WHICH ALLOCATED THE CHANNELR.LWT == 17	;	[B.17]	LOCK WAIT TIMER.STE == 20	;WD.10	[B.20]	ADDRESS OF CONNECT STAGE ENTRY		;		32 WORD OFFSET, ASR4 VIRTUAL ADDRESS		;		(2 WORDS)R.CCB == 24	;WD.12	[B.24]	CCB OF OWNER TRANSACTIONR.FTB == 26	;WD.13	[B.26]	AFT ENTRY ADDRESS FOR THIS CHAN      NELR.SIZE == R.FTB+2;; FLAG DEFINITIONS:;RC.STG == 001	; STAGED ITEMS FOR THIS STREAMRC.LKW == 002	; CAB IN LOCK WAIT QUEUE;; PREVIOUS SUCCESSFUL OPERATION;RC.FIN == 200	; FINDRC.GET == 100	; GETRC.UPD == 040	; UPDATERC.DEL == 020	; DELETERC.PUT ==010	; PUTRC.RED == 004	; DO NOT LOCK IF WAIT RELEASED.PAGE.SBTTL	TPS-11 DATA STRUCTURES - RECORD LOCK BLOCK;;		;WD.00	[B.00]	FORWARD LINK FOR FILE		;WD.01	[B.02]	BACKWARD LINKL.FLG == 04	;WD.02	[B.04]	LOCK TYPE FLAGL.EXC == 05	;	[B.05]	EXCHANGE WHICH APPLIED LOCKL      .RFA == 06	;WD.03	[B.06]	RECORD FILE ADDRESS		;		(THREE WORDS)L.CCB == 14	;WD.07	[B.14]	OWNER CCBL.WTQ == 16	;WD.10	[B.16]	LOCK WAIT QUEUE HEAD		;		(2 WORDS)L.CLK == 22	;WD.11	[B.22]	LINK FROM CABL.SIZE== L.CLK+2;;FLAG DEFINITIONS:;LF.RD == 002	; ALLOW READERSLF.ST == 200	; LOCK FOR A STAGED RECORDLF.DE == 100	; DELETED RECORD (STAGED) LOCKLF.IN == 040	; INSERT RECORD (STAGED) LOCK.PAGE.SBTTL	TPS-11 DATA STRUCTURES - FILE IMPURE AREA;;I.PST  == 00	;WD.00	[B.00]	MAXIMUM CONNECTED STREAMS		; IF WORK FILE - PO      INTER TO IMPURE AREA LISTI.PKY  == 01	;	[B.01]	NUMBER OF DEFINED KEYSI.PKSZ == 02	;WD.01	[B.02]	MAXIMUM KEY SIZE (ZERO IF NOT KEYED FILE)		; IF WORK FILE CCB POINTERI.PWAT == 03	;	[B.03]	LOCK WAIT TIME (IN TICKS)I.PFSZ == 04	;WD.02	[B.04]	FILE NAME STRING LENGTHI.PFST == 05	;	[B.05]	FILE NAME STRINGI.DSW  == 46	;		DSW (SIZE OF AREA IN 32. WORD BLOCKS)I.PRMS == 50	;		START OF RMS IMPURE AREA.PAGE.SBTTL	TPS-11 DATA STRUCTURES - SYSTEM WORKSPACE STRUCTURE;; HEADER STRUCTURE;G.FLG == 00	;WD.00	[B.00]	FLAGS BYTE      G.CEX == 01	;	[B.01]	CURRENT EXCHANGE NUMBERG.FRE == 02	;WD.01	[B.02]	DISPALCEMENT TO FREE SPACEG.FSZ == 04	;WD.02	[B.04]	SIZE OF FREE SPACE (WORDS)G.NET == 06	;WD.03	[B.06]	NUMBER OF ENTRIES IN W/SG.MES == 10	;WD.04	[B.10]	STAGED MESSAGE LISTHEAD (2 WORDS)		; S.FST AND G.MES MUST HAVE SAME OFFSETG.EEX == 14	;WD.06	[B.14]	DISP TO FIRST ENTRY FOR CURRENT EXCHANGEG.ESZ == 16	;WD.06	[B.16]	NUMBER OF ENTRIES USED BY CURRENT EXCHANGE;; FLAG DEFINITIONS:;GF.REC == 001	; RECORD LOCKS STAGEDGF.DRC == 002	; DATA REC      ORDS STAGEDGF.SME == 004	; SENT MESSAGES STAGEDGF.CNT == 006	; CONNECTED STREAMGF.TRN == 010	; TRANSACTIONS STAGEDGF.GTM == 020	; 'GOT' MESSAGES FOR THIS EXCHANGE;;;;; COMMOM STAGED ENTRY STRUCTURE:;V.TYP == 00	;WD.00	[B.00]	TYPE OF ENTRYV.EXC == 01	;	[B.01]	EXCHANGE NO.V.SIZ == 02	;WD.01	[B.02]	SIZE OF ENTRY (IN BYTES)V.END == V.SIZ+2;		SIZE OF STAGED ENTRY HEADER		;***CP10;; TYPE DEFINITIONS:;VS.LCK == 00	; RECORD LOCKVS.INS == 200!02; INSERTVS.UPD == 200!04	; UPDATEVS.DEL == 200!06	; DELETEVS.CON == 10	;       CONNECTVS.DIS == 12	; DISCONNECTVS.UNL == 14	; UNLOCKVS.CNT == 16	; CONNECTED STREAMVS.GER == 22	; RECORD OBTAINED FROM MAILBOXVS.INV == 377	; INVALID ENTRY -- IGNOR;;; ENTRY FOR A CONNECTED STREAM;V.CRFA == V.SIZ+2		; RFAV.CPOP == V.CRFA+6		; PREVIOUS OPERATIONV.SEX  == V.CPOP+1		; EXCHANGE WHICH SAVED THIS INFOV.IFAB == V.SEX+1		; 11. WORDS OF IFAB DATA				; (NEXT AND CURRENT RECORD POINTERS)VC.IFS == IR$BLN-R$LNRP		; SIZE OF IFAB SIZE AREA;VC.SIZ == VC.IFS+V.IFAB-V.SIZ-2	; SIZE OF ENTRY - HEADER;;; ENTR      Y FOR A STAGED DATA RECORD;V.RFTE == V.SIZ+2	; FILE TABLE ENTRYV.RISN == V.RFTE+2	; ISN FOR FILEV.RRFA == V.RISN+2	; RFAV.RLKB == V.RRFA+6	; LOCK BLOCK ADDRESSV.RSIZ == V.RLKB+2	; RECORD SIZE;VR.SIZ == V.RLKB+2-V.SIZ-2;; GOT MESSAGE ENTRY;V.MSCB == V.SIZ+2	; MAILBOX SCBV.MRNO == V.SIZ+4	; RECORD NUMBER (2 WORDS).PAGE.SBTTL	TPS-11 DATA STRUCTURES - DATA MANAGER REQUEST BLOCK;;R.TNAM == 00	;WD.00	[B.00]	TST TASK NAMER.CXT  == 04	;WD.02	[B.02]	CONTEXT BLOCK ADDRESS IN DATA MANAGERR.FUN  == 06	;WD.03	[B.06]	FUN      CTION CODER.TID  == 10	;WD.04	[B.10]	TRANSACTION IDENTITY		;		(2 WORDS)R.TIS  == 14	;WD.06	[B.14]	CCB FOR TRANSACTIONR.CHAN == 16	;WD.07	[B.16]	CHANNEL NUMBERR.FAB  == 20	;WD.10	[B.20]	FAB IN TSTR.RAB  == 22	;WD.11	[B.22]	RAB IN TST.PAGE.SBTTL	TPS-11 DATA STRUCTURES - ACTIVE TRANSACTION TABLE;;; **********************************************************************; NOTE -- IF THE SIZE OF AN ATT ENTRY CHANGES THEN THE CRASH DUMP MODULE;;	([11,10]CRASH.MAC) NEEDS TO BE UPDATED;;******************************      *****************************************X.ST  == 00	;WD.00	[B.00]	STATUS BYTEX.SZ  == 01	;	[B.01]	SIZE OF SLOT IN DISC BLOCKSX.SDA == 02	;WD.01	[B.02]	DISC ADDRESS OF TRAN. SLOT (2 WORDS)		;		-1 IF WRITE ERROR DETECTED.X.EDP == 06	;WD.04	[B.06]	CURRENT POSITION IN SLOT FOR END TRAN;;X.ATSZ == X.EDP+2	; SIZE OF ATT ENTRY;;; STATUS DEFIINITIONS:;AT.NOT == 000	; ENTRY NOT ALLOCATEDAT.ENT == 001	; END OF TRANSACTION BEING PROCESSEDAT.NGO == 002	; ENTRY ALLOCATED, BUT TRANSACTION NOT PAST GO POINTAT.DMU == 004	      ; DATA MANAGER UNSTAGE IN-PROGRESSAT.EXA == 010	; ACTIVE EXCHANGEAT.EEX == 020	; END OF EXCHANGEAT.AST == 040	;AT.ABO == AT.AST!AT.ENT	; ABORT TRANSACTION BEING PROCESSEDAT.EXR == 100	; EXCHANGE RESTARTAT.DSP == 200	; RMS OPERATION IN PROGRESS				;***CP01									;***CP03.PAGE.SBTTL	TPS-11 DATA STRUCTURES - TRANSACTION DESCRIPTION TABLE;T.NAM == 00	;WD.00	[B.00]	TRANSACTON NAME (3 WORDS ASCII)T.NUM == 06	;WD.03	[B.06]	TRANSACTION NUMBERT.MSK == 06	;		BYTE MASK VALUET.BYT == 07	;		BYTE TO MASK AGAINSTT.DAD =      = 10	;WD.04	[B.10]	RELATIVE DISC ADDR OF BLOCK HOLDING		;		TDB IN TDB FILET.NTR == 12	;WD.05	[B.12]	NUMBER OF TIMES TRANSACTION REQUESTEDT.NBK == 14	;WD.06	[B.14]	NUMBER OF BLOCKS TO READ FOR TDBT.DSP == 15	;	[B.15]	DISPLACEMENT IN DISC BLOCK TO TDBT.BDB == 16	;WD.07	[B.16]	BUFFER IDENTITY WHEN TDB IN MEMORY.T.MFZ == 20	;WD.10	[B.20]	MINIMUM UNUSED SPACE IN SYSTEM W/S (WORDS)T.TFG == 22	;WD.11	[B.22]	FLAGS BYTET.ERR == 23	;	[B.23]	SYSTEM DETECTED ERROR COUNT;;; SIZE OF TDT ENTRY:;T.TDTSZ == T.TFG+2;; FLAG W      ORD DEFINITIONS;TF.TRC == 001	; TRACE THIS TRANSACTIONTF.DSB == 002	; TRANSACTION DISABLEDTF.64 == 004	; FORCE CONTEXT SIZE TO 64 WORDS (FOR BASIC+2).PAGE.SBTTL	TPS-11 DATA STRUCTURES - TRANSACTION DESCRIPTOR BLOCK;Y.FLG == 00	;WD.00	[B.00]	FLAGS WORDY.MSZ == 02	;WD.01	[B.02]	MAXIMUM MESSAGE SIZE (IN 32 WD. BLOCKS) Y.TWS == 03	;	[B.03]	TRANSACTION W/S SIZE (32 WD. BLOCKS) Y.SWS == 04	;WD.02	[B.04]	SYSTEM W/S SIZE (IN 32. WD. BLOCKS)Y.TDT == 06	;WD.03	[B.06]	TDT ENTRY ADDRESS FOR THIS TRANSACTIONY.STZ == 10	      ;WD.04	[B.10]	SLOT SIZE (32. WORD BLOCKS)		;		(Y.MSZ+Y.TWS+Y.SWS)Y.FRS == 12	;WD.06	[B.12]	FIRST FORM BLOCK IN TDB;; THE REMAINDER OF THE TDB CONTAINS A VARIABLE NUMBER OF FIXED LENGTH; FORM BLOCKS WITH THE FOLLOWING STRUCTURE:-;Y.FNX == 00	;WD.00	[B.00]	DISPLACEMENT TO NEXT FORM ENTRY TO USEY.NAM == 02	;WD.01	[B.02]	EXCHANGE LABELY.FDA == 10	;WD.04	[B.10]	RELATIVE DISC ADDDRESS OF FORM IN FORMS FILEY.NBX == 12	;WD.05	[B.12]	NUMBER OF BLOCKS TO READ FOR FORMY.DPB == 13	;	[B.13]	DISPLACEMENT IN BLOCK TO FORM      Y.DNO == 14	;WD.06	[B.14]	NUMBER OF DESTINATIONSY.SAF == 15	;	[B.15]	SUBSEQUENT ACTION FLAGSY.TMO == 16	;WD.07	[B.16]	EXCHANGE TIME LIMIT (MINUTES);; EACH DESTINATION IS A KT-11 ADDR. TO AN SCB;Y.DES == 20	;WD.10	[B.20]	FIRST DESTINATION NAME;;; FLAG DEFINITIONS:;YF.NEX == CF.NEX	; EXCHANGE RECOVERY NOT REQUIRED BY THIS TRANSACTIONYF.SQR == CF.SQR	; SLOT REQUIRED (SET IF TRAN W/S OR SYS W/S NON ZERO)YF.STA == CF.STA	; STAGE AREA (SET IF SYS W/S NON ZERO)YF.JIP == CF.JIP	; JOURNAL INPUT MESSAGESYF.JOP == CF.      JOP	; JOURNAL OUTPUT MESSAGES;;;; SUBSEQUENT ACTION FLAGS (Y.SAF);YS.WIT == 001	; WAIT FOR REPLYYS.NXF == 002	; GO TO NEXT FORM FOR THIS TRANSACTIONYS.FTF == 004	; GO TO FIRST FORM FOR THIS TRANSACTIONYS.INF == 010	; GO TO INITIAL FORM FOR THIS STATIONYS.REP == 020	; REPEAT THIS FORM.PAGE.SBTTL	TPS-11 DATA STRUCTURES - SEND BUFFER FORMAT;; COMMUNICATION BETWEEN TPM MANAGERS IS VIA SEND AND RECEIVE BUFFERS;; THE BUFFERS HAVE THE FOLLOWING GENERAL FORMAT;; SEND BUFFER:;B.CXT == 00	;WD.00	[B.00]	CONTEXT BLOCK       TO RESTART  ( ZERO IF NO BLOCK)B.FUN == 02	;WD.01	[B.02]	FUNCTION CODEB.DAT == 04	;WD.02	[B.04]	START OF 11 WORDS OF DATA DEPENDENT ON FUNCTION;;; RECEIVE BUFFER; THIS BUFFER IS DISPLACED BY FOUR BYTES FROM THE SEND BUFFER; BECAUSE THE SENDER TASK NAME IS RETURNED AS THE FIRST TWO WORDS OF; THE RECEIVE BUFFER.;;; FUCTION CODES:;; COMMAND FUNCTION CODES;BF.INS == 00	; INSTALLBF.STR == 02	; STARTBF.SHT == 04	; STOP COMPLETEBF.REM == 06	; REMOVEBF.ISC == 10	; INSTALL COMPLETEBF.IER == 12	; INSTALL ERRORBF.END       == 14	; END TRANSACTIONBF.RST == 16	; RESTART EXCHANGEBF.ABO == 20	; ABORT TRANSACTIONBF.SAB == 22	; ABORT TRANSACTIONS FOR STOPBF.IST == 24	; INITIATE STOP;; TST/EXECUTION MANAGER FUNCTION CODES:;BF.SND == 30	; SEND MESSAGEBF.DRT == 32	; DELETE ROUTEBF.DAR == 34	; DELETE ALL ROUTES FOR A MESSAGEBF.ART == 36	; ADD A ROUTE TO A MESSAGEBF.GTM == 40	; GET MESSAGEBF.TOP == 42	; OPEN A TRANSACTIONBF.TAB == 44	; ABORT TRANSACTIONBF.JRN == 46	; WRITE TO JOURNAL FILEBF.GST == 50	; GET TST STATION NAMEBF.GMS == 52	;       GET MESSAGE SOURCE STATION NAMEBF.GTR == 54	; GET TRANSACTION TYPE NAMEBF.GSC == 56	; GET TRANSACTION SOURCE STATION NAMEBF.TRT == 60	; RESTART EXCHANGEBF.MBN == 62	; NUMBER OF MAILBOX ENTRIES;; EXTRA CODES FOR TRACE;BF.MEB == 70	; MESSAGE AT BEGINNING OF TST EXECUTIONBF.MEE == 72	; MESSAGE AT END OF TST EXECUTION;; TST/DATA MANAGER FUNCTION CODES;BF.CRF == 100	; CREATE FILEBF.OPE == 102	; OPEN FILEBF.CLO == 104	; CLOSE FILEBF.ERF == 106	; ERASE FILEBF.DSP == 110	; DISPLAY FILEBF.CNT == 112	; CONNECT STREA      MBF.DCT == 114	; DISCONNECT STREAMBF.GET == 116	; GET RECORDBF.FIN == 120	; FIND RECORDBF.PUT == 122	; PUT RECORDBF.DEL == 124	; GET RECORDBF.UP  == 126	; UPDATE RECORDBF.UNK == 130	; UNLOCK RECORDBF.FRE == 132	; RELEASE ALL LOCKSBF.NAM == 134	; GET FILE SPEC;; MAILBOX CODES;BF.GTB == 150	; GET FROM MAILBOX;; INTERNAL RESTART CODES;BF.SLR == 154	; RESTART SOFTWARE ERROR LOGBF.ABW == 156	; WAKE ABORT THREADBF.DMR == 160	; RETURN FROM DATA MANAGERBF.RTY == 162	; RETRY GETBF.EEX == 164	; END OF EXCHANGE;; MESS      AGE MANAGER FUNCTION CODES:;BF.MES == 200	; MESSAGE AVAILABLEBF.TUT == 202	; TERMINAL TIMEOUTBF.TBO == 300	; TPMOD ABORT REQUEST;;BF.TPR == 400	; RESTART TP;; DYNAMIC TERMINAL MANAGEMENT CODES;BT.ACQ == 100	; ACQUIRE (RESERVE OPEN)BT.OPN == 102	; OPENBT.CLZ == 104	; CLOSEBT.REL == 106	; RELEASEBT.HND == 110	; HANDOFF;;	JOURNAL HANDLER FUNCTION CODES;JN.STS == 0			;STATUS JN.CHG == 1			;CHANGE JOURNAL DEVICESJN.SLT == 2			;WRITE SLOT TO JOURNALJN.USR == 4			;WRITE USER DATA TO JOURNALJN.IMS == 6			;WRITE INP      UT MESSAGE TO JOURNALJN.OMS == 10			;WRITE OUTPUT MESSAGE TO JOURNALJN.FLS == 12			;FLUSH LOGGING BUFFER (ON TPSTOP)	;***CP02.PAGE.SBTTL	TPS-11 DATA STRUCTURES - ERROR CODE DEFINITIONS;SC.SUC == 1;ER.NOR == -02.	; INITIATOR OF TRANSACTION NOT AUTHORISEDER.OPE == -04.	; TRANSACTION ALREADY OPEN NEW ONE NOT ALLOWEDER.NOP == -06.	; NO OPEN TRANSACTIONER.DIR == -08.	; DIRECTIVE ERRORER.ITN == -10.	; NO SUCH TRANSACTION NAME (NOT IN TDT)ER.IRN == -12.	; INVALID STATION NAME SPECIFIEDER.RTF == -14.	; ROUTE TABLE       FULLER.NRT == -16.	; NO SUCH ROUTE IN ROUTE TABLEER.ICP == -20.	; INCONSISTENT PARAMETERS IN EXECUTIVE DIRECTIVE FROM TSTER.BER == -22.	; GET BUFFER ERRORER.RTE == -24.	; ROUTE TABLE ERRORER.NCB == -26.	; NO RESOURCES TO OPEN TRANSACTIONER.VXF == -30.	; BUFFER VALIDATION ERRORER.IFC == -32.	; INVALID FUNCTION CODEER.CHN == -34.	; IVALID CHANNEL NUMBERER.DSB == -36.	; TRANSACTION DISABLEDER.CKM == -40.	; CHECKSUM ERRORER.NSA == -42.	; NO STAGE SPACEER.TST == -44.	; TST STATION SPECIFIED IN SEND MESSAGEER.NST       == -46.	; NO SUCH TRANSACTION INSTANCEER.NRM == -48.	; TRANSACTION PROCESSOR NOT RUNNINGER.EAC == -50.	; EXCHANGE ACTIVEER.NSP == -52.	; NO SPACE  ERROR WHEN ACCESSING CACHED ITEMER.NMS == -54.	; NO MESSAGE QUEUED TO STATIONER.IOX == -56.	; DISC I-O ERROR WHEN ACCESSING A CACHED ITEMER.NTP == -60.	; NON-EXISTENT TRANSACTION PROCESSOR (BATCH TO TP)ER.ABO == -62.	; TRANSACTION TERMINATED ABNORMALLYER.NXF == -64.	; NO SUCH FILEER.TRT == -66.	; TOO MANY ROUTES SPECIFIEDER.LOG == -68.  ; ATTEMPTED TO LOG WHILE       LOGGING DISABLED		;***CP06;;; ABORT CODES - FOR TRANSACTION ABORT ROUTINE;AB.NRM == 2		; REPLY MESSAGE NOT SENTAB.USR == 4		; USER ABORT (TST CALL)AB.SYF == 6		; SYSTEM WORKSPACE FULLAB.RCL == 10		; REPLY MESSAGE AFTER TRANSACTION CLOSED			; OR REPLY NOT REQUIRED BY EXCHANGE.AB.TIM == 12		; EXCHANGE TIMEOUTAB.IOX == 14		; DISK ERRORAB.RSC == 16		; RESOURCE ALLOCATION ERROR (E.M)AB.TAB == 20		; ABNORMAL TST TERMINATIONAB.VAL == 22		; VALIDATION ERROR FOR TSTAB.TFL == 24		; FAILED TO LOADAB.MOD == 26		; TRANS      ACTION ABORTED BY TPMODAB.CSH == 30		; CRASH RESTART ABORTAB.EXT == 32		; EXCHANGE RECOVERY NOT ENABLED.PAGE.SBTTL	TPS11 DATA STRUCTURES -- ERROR LOG CODES;;; SOFTWARE LOG IDENTIFIERS;LN.TIM == 2	; TIM LOG NUMBERLN.EXC == 4	; EXECUTION MANAGER LOG NUMBERLN.DAT == 6	; DATA MANAGER LOG NUMBERLN.BAT == 10	; BATCH MANAGER LOG NUMBERLN.MBX == 12	; MAIL BOX MANAGERLN.LIM == 14	; LIM MANAGER NUMBER;;; TIM ERROR CODES;TE.SUN == 1		; UNRECOGNIZED FUNCTION CODETE.SST == 2		; STATION STATE NOT VALID FOR RECEIVING MESS      AGE (FQM)TE.SOX == 3		; HARD I/O ERROR IN FETCHING ITEM FROM CACHETE.SDE == 4		; DIRECTIVE ERRORTE.DSB == 10.		; TRANSACTION IS DISABLEDTE.RGM == 11.		; ERROR TRYING TO RETRIEVE RELEASED MESSAGETE.TFZ == 31.		; SIZE OF FQM EXCEEDS SPACE AS DESCRIBED IN TDBTE.SDM == 32.		; FAILURE IN SENDING MESSAGETE.QUN == 70.		; UNRECOGNIZED FQMTE.QNF == 71.		; NO MODIFIER FLAG IN FQMTE.QRM == 72.		; NO REPLY SECTION DEFINED IN FORMAT RECORD YET			; R-TYPE FQM WITH NONZERO FIELD IS RECEIVEDTE.QCR == 73.		; CODE NUMBER IS       OUT OF RANGE IN R OR C-TYPE FQMTE.QRU == 74.		; REPLY # SPECIFIED BY FQM NOT IMPLEMENTED IN FORMAT RECORDTE.QFU == 75.		; F-TYPE FQM NAME STRING NOT VALIDTE.QFT == 76.		; F-TYPE FQM NAME NOT FOUND IN TDBTE.FQM == 100.		; FORMAT RECORD INDICATES FQM REQUIRED BUT NOT PRESENTTE.FCT == 101.		; C.TRAN NOT FIRST CODE WHEN NO OUTPUT FQM 			; BUFFER IS PRESENTTE.FAR == 102.		; ACTION CODE OUT OF RANGETE.FMM == 103.		; NO MENU PRESENT YET HAVE C.MENU OR C.TRAN WITH			; CS.MNU SETTE.NFR == 104.		; NO FORM SPECIFIED F      OR EXCHANGETE.FOE == 105.		; OFFSET AS SET IN FORMAT RECORD EXCEEDS ATS SEGMENTSTE.FFE == 106.		; AN INVALID FUNCTION KEY WAS ENABLED IN FORMAT RECORDTE.ADN == 128.		; HTN INVALID ON DIPTE.ANS == 129.		; IN PARSING SEGMENTS HAVE MORE INPUT BUT NO MORE SEGMENTSTE.ARO == 130.		; ACCESS OPEN REJECTED BY RESOURCE MANAGERTE.ARL == 131.		; RSMTRD DETECTS THAT OPEN NOT SUCCESSFULTE.AAS == 134.		; ASYNCHRONOUS FUTURE STATUS RETURNED ON TERMINALTE.ATA == 135.		; TERMINAL REQUIRES ATTENTION ERROR RETURNED ON TERMINAL      TE.TRR == 136.		; TRANSMISSION TO TERMINAL REJECTEDTE.TMB == 137.		; ATS RETURNED TOO MANY BUFFERS			;***CP11TE.DPC == 200.		; PC ERROR RETURNED FROM VT62 MICROCODETE.DUN == 201.		; UNRECOGNIZED OP CODE RETURNED IN INPUT PACKETTE.DHC == 203.		; HARD COPY ERROR ON DIPTE.IVS == 204.		; INVALID TRANSACTION SELECTION FORM		;***CP06TE.SIZ == 205.		; FORM TOO LARGE FOR NUMBER OF SDBs		;***CP09;; DATA MANAGER ERRORS;DE.UNS == 1		; UNSAGE ERRORDE.OPE == 2		; FILE OPEN ERROR.PAGE;; BATCH MANAGER ERRORS;BE.SUB == 1		      ; ABORT TRANS IS NOT FOR BATCH SLAVE STA.BE.SLA == 2		; NO AVAILABLE SLAVE STATIONBE.DIR == 3		; DIRECTIVE ERRORBE.STP == 4		; CAN'T START NEW TRANSACTION AS STOP OUTSTANDINGBE.BRT == 5		; SYSTEM REQUESTED TRANSACTION ABORTBE.SND == 6		; ERROR SENDING TO SE TASKBE.SET == 8.		; NO TCB FOUND FOR SE TASKBE.VXF == 9.		; SE BUFFER VALIDATION ERRORBE.VAL == 10.		; TRANSACTION ANME VALIDATION ERRORBE.GTB == 11.		; ERROR GETTING TDBBE.LTK == 12.		; SE ENVIROMENT MESSAGE TOO LARGEBE.OPN == 13.		; ERROR OPENING TRANS      ACTIONBE.MBF == 14.		; ERROR GETTING MESSAGE BUFFERBE.SDM == 15.		; ERROR SENDING MESSAGE;; MAILBOX ERRORS;ME.CXT == 2		; NO CONTEXT BLOCK SPACE -- MAILBOX NOT OPENEDME.CAH == 4		; NO CACHE SPACE FOR MAILBOXESME.FIL == 6		; FILE ERROR ON MAILBOXME.IO  == 10		; RECORD I-O ERROR ON MAILBOX;; LINK MANAGER ERRORS DEFINED IN ERROR.LIM FILE;.PAGE.SBTTL	TPS11 DATA STRUCTURES -- SYSTEM COMMOM AREA;;; THE SYSTEM COMMON AREA IS A SYSTEM WIDE REGION HELD IN PARTITION SYSCOM;; IT HOLDS SYSTEM WIDE INFORMATION:;	1. JOUR      NAL DEVICE;	2. INSTALLED TRANSACTION PROCESSOR INFORMATION;;***********************************************************************;;;; NOTE   !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!   NOTE;	; IF ANY OF THE SYSCOM OFFSETS CHANGE, THE EQUATES AT THE BEGINNING OF; [11,10]CRASH.MAC MUST ALSO BE CHANGED.;; IF THE SIZE OF THE SYSCOM AREA CHANGES [25,10]SYSCOM.MAC MAY NEED TO BE EDITED.;;;***********************************************************************; THE AREA IS CHECKSUMMED;W.CSR == 00      	;WD.00	[B.00]	CSR OF CRASH DUMP DEVICEW.UNT == 02	;WD.01	[B.02]	UNIT OF CRASH DUMP DEVICEW.ADR == 04	;WD.02	[B.04]	BASE DISC ADDRESS OF DUMP FILE		;		(2 WORDS)		;		NOTE: TPINIT REQUIRES THAT W.CSR, W.UNT, AND		;		W.ADR ARE THE FIRST 3 ENTRIES IN SYSCOMW.CRJN == 10	;WD.04	[B.12]	CURRENT JOURNAL DEVICEW.JRN1 == 12	;WD.05	[B.12]	FIRST JOURNAL DEVICE		;		(8 WORDS)W.JRN2 == W.JRN1+16.		;		SECOND JOURNAL DEVICEW.SEQ == W.JRN2+16.		;		SEQUENCE NUMBER FOR JOURNAL DRIVERW.ATP == W.SEQ+2		;		FIRST ACTIVE TP ENTRY;;       ACTIVE TRANSACTION PROCESSOR ENTRY;W.ID  == 00	;WD.00	[B.00]	TP IDENTITY. NOTE: THE EXEC CRASH ROUTINE		;		REQUIRES THAT W.ID == 0W.BA  == 02	;WD.01	[B.02]	BASE OF COMMOMW.DA  == 04	;WD.02	[B.04]	DISC ADDRESS OF WORK FILE AND TPCTRL START FLAGSWD.JUR == 100000 ;		TPCTRL START'S JOURNALLING SWITCHWD.LOG == 40000	;		TPCTRL START'S LOGGING SWITCHW.AT  == 10	;WD.04	[B.10]	OFF SET TO ACTIVE TRANSACTION TABLEW.BL  == 12	;WD.05	[B.12]	SIZE OF ATT IN BYTESW.NM  == 14	;WD.06	[B.14]	TP NAME;;W.TPES == W.NM+6W.CKM ==       W.ATP+<W.TPES*8.>	; CHECKSUM WORD.PAGE.SBTTL	TPS-11 DATA STRUCTURES - RUN-TIME CONTROL BLOCK;;	THIS CONTROL BLOCK IS ALLOCATED IN THE THREAD OF THE;	EXECUTION MANAGER THAT CONTROLS THE EXECUTION OF A TST.;;	THIS CONTROL BLOCK CONTAINS ALL THE 'INSTANCE' INFORMATION;	ABOUT THE EXECUTION OF A TST.;Q.SCB == 10	;WD.00	[B.00]	SCB ADDRESS FOR THIS TSTQ.MCB == 12	;WD.01	[B.02]	MCB ADDRESS OF THE MESSAGE FOR THIS TSTQ.CCB == 14	;WD.02	[B.04]	CCB ADDRESS FOR THIS TRANSACTIONQ.MSZ == 16	;WD.03	[B.06]	SIZE OF THE MESS      AGEQ.BDB == 20	;WD.04	[B.10]	BDB OF THE IMPURE AREA OF THE TSTQ.ST1 == 22	;WD.05	[B.12]	FIRST STATUS WORD IN TCB FOR TST.PAGE.SBTTL	TPS-11 DATA STRUCTURES - BUFFER DESCRIPTOR BLOCK;;	THIS DATA STRUCTURE DEFINES THE ATTRIBUTESOF;	AN AREA OF THE DISK THAT IS 'CACHED' IN MEMORY.;B.LNKF == 0	;WD.00	[B.00]	SEARCH (AND FREE) LIST FORWARD POINTERB.LNKB == 2	;WD.01	[B.02]	SEARCH (AND FREE) LIST BACK POINTERB.OWN == B.LNKB	;		OWNER (CCB) FOR A MESSAGEB.LRUF == 4	;WD.02	[B.04]	LRU LIST FORWARD POINTERB.LRUB == 6	;WD.      03	[B.06]	LRU LIST BACK POINTERB.FLG  == 10	;WD.04	[B.10]	FLAG BYTEB.LUN  == 11	;	[B.11]	LUNB.HVBN == 12	;WD.05	[B.12]	HIGH ORDER 8 BITS OF BLOCK NUMBERB.USE  == 13	;	[B.13]	USE COUNTB.LVBN == 14	;WD.06	[B.14]	LOW ORDER 16 BITS OF BLOCK NUMBERB.ADDR == 16	;WD.07	[B.16]	ADDRESS OF BUFFER (32. WORD BLOCK)B.SIZE == 20	;WD.10	[B.20]	SIZE OF BUFFER (32. WORD BLOCK)B.LINK == 22	;WD.11	[B.22]	LINK WORD (MESSAGE MANAGER);; FLAG DEFINITIONS;BF.ALC == 1	; ALLOCATE DISK STORAGE ON FLUSHBF.BKP == 2	; DO NOT RELEASE BDB       ON FLUSHBF.DTY == 4	; BUFFER IS DIRTYBF.LOA == 10	; BUFFER IS BEING LOADED/UNLOADEDBF.OND == 20	; BUFFER IS ON DISKBF.INV == 40	; BDB IS INVALID.PAGE.SBTTL	TPS-11 DATA STRUCURES - TIMER QUEUE NODE;;		;WD.00	[B.00]	LINK WORDW.IDT == 02	;WD.01	[B.02]	NODE IDENTITY SCB OR CCBW.TIM == 04	;WD.02	[B.04]	TIME COUNT RELATIVE TO PREVIOUS NODEW.TYP == 06	;WD.03	[B.05]	NODE TYPE;; NODE TYPES:;WT.EXT == 02	; EXCHANGE TIMEOUTWT.FQM ==04	; RETRANSAMIT FQMWT.TRM == 06	; TERMINAL TIMEOUT;; NODE SIZE;WT.SIZ == W.TYP+2.PAGE      .SBTTL	TPS-11 DATA STRUCTURES - THREAD TABLE BLOCK;T.CB == 00	;WD.00	[B.00]	CURRENT CONTEXT BLOCK ADDRESST.FP == 02	;WD.01	[B.02]	FORWARD POINTER FOR 'TO BE SCHEDULED' LISTT.BP == 04	;WD.02	[B.04]	BACKWARD POINTERT.MS == 06	;WD.03	[B.06]	MAINLINE STACK POINTERT.RB == 10	;WD.04	[B.10]	RECEIVE BUFFER FOR RECEIVE AST'ST.RC == 14	;WD.06	[B.12]	CONTEXT BLOCK ADDRESS IN RECEIVE BUFFERT.QCBA == 46	;WD.23	[B.46]	LIST HEAD FOR WAITING THREADS		;		(2 WORDS)T.TNAM == 52	;WD.25	[B.52]	TASK NAME (2 WORDS RAD50)T.FLG  ==       56	;WD.27	[B.56]	FLAGS WORDT.DFP == 60	;WD.30	[B.60]	DEFAULT POOL ADDRESST.INH == 62	;WD.31	[B.62]	ADDRESS OF CONTEXT SWITCH INHOBIT ROUTINET.QIO == 64	;WD.32	[B.64]	Q I/O DPB FOR CACHE ROUTINES;;; FLAG WORD DEFINITIONS;TF.RCF == 000001	; RESTARTED BY RECEIVE ASTTF.MRK == 000002	; RESTARTED AFTER DELAY (MARK TIME AST)TF.IO  == 000004	; RESTARTED BY I-O ASTTF.RES == 000010	; RESTARTED BY RESUME REQUESTTF.NRB == 000020	; DO NOT DEQUEUE SENDSTF.WAT == 000040	; TIMER ACTIVETF.NFL == 000100	; DO NOT FLUSHE MESS      AGES.PAGE.SBTTL	TPS-11 DATA STRUCTURES - CONTEXT BLOCK;C.IOSB == 00	;WD.00	[B.00]	I/O STATUS BLOCK		;		(2 WORDS)C.SP == 04	;WD.02	[B.04]	STACK POINTER SAVE AREAC.LINK == 06	;WD.03	[B.06]	LINKED LIST POINTER;C.STCK == 10	;WD.04	[B.10]	TOP OF THREAD STACK.PAGE.SBTTL	TPS-11 DATA STRUCTURES - CACHE CONTROL SECTION DEFINITIONS;P.DTLH	== 00	;WD.00	[B.00]	DATA SECTION LISTHEADP.FRBF	== 04	;WD.02	[B.04]	BDB FREE LIST FORWARD POINTERP.FRBB	== 06	;WD.03	[B.06]	BDB FREE LIST BACK POINTERP.LRUF	== 10	;WD.04	[B.10]	LRU       LIST FORWARD POINTERP.LRUB	== 12	;WD.05	[B.12]	LRU LIST BACK POINTERP.MASK	== 14	;WD.06	[B.14]	MASK WORDP.NUM	== 16	;WD.07	[B.16]	NUMBER OF CACHE CALLSP.HIT	== 20	;WD.10	[B.20]	NUMBER OF CACHE HITSP.FET	== 22	;WD.11	[B.22]	NUMBER OF DISC FETCHESP.DEAD	== 24	;WD.12	[B.24]	AMOUNT OF DEAD SPACE IN CACHEP.FAIL	== 26	;WD.13	[B.26]	NUMBER OF FAILED ATTEMPTSP.ALLOC	== 30	;WD.14	[B.30]	AMOUNT OF UNLOCKED SPACEP.BDB  == 32	;WD.15	[B.32]	VIRTUAL ADDRESS OF BDB SPACEP.DATA	== 34	;WD.16	[B.34]	VIRTUAL ADDRESS OF DATA S      PACEP.HSH 	== 40	;WD.20	[B.40]	START OF SEARCH LISTHEADS.PAGE.SBTTL TPS-11 DATA STRUCTURES - WAIT NODE;;		;WD.00	[B.00]	LINK WORDW.TSK == 02	;WD.01	[B.02]	TASK NAME CONTAINING THREAD		;		(2 WORDS)W.CXT == 06	;WD.03	[B.06]	CONTEXT BLOCK ADDRESS FOR THREAD TO WAKE;;W.SIZE == W.CXT+2.PAGE.SBTTL	TPS-11 DATA STRUCTURES - FORM INDEX BLOCK;;		;WD.00	[B.00]	FORM NAME (6 CHARACTERS ASCII)F.XDAI == 06	;WD.03	[B.06]	RELATIVE DISC ADDRESS OF FORMF.XBLI == 10	;WD.04	[B.10]	NUMBER OF BLOCKS TO READ FOR FORM.PAGE;;; SYMBO      LS FOR CDA;CS.CCB==S.CCBCS.PRI==S.PRICC.TCB==C.TCBCT.NAM==T.NAMCL.CLK==L.CLKCV.DIS==VS.DIS.PAGE.SBTTL	TPS-11 DATA STRUCTURES - SYMBOLS;;$TTBAD == 120046	; VIRTUAL ADDRESS OF TTB IN A MANAGER			; NOTE THIS MUST BE THE SAME ADDRESS			; IN ALL THE MANAGERS.;; CONTEXT BLOCK SYMBOLS;EN.DCB == 96.		; CONTEXT BLOCK FOR END TRANSACTION (64. BYTES)EX.CTZ == 128.		; SIZE IN BYTES OF E.M. CONTEXT BLOCKBT.CTZ == 128.		; BATCH MANAGER CONTEXT BLOCK SIZEMB.CTZ == 192.		; MAILBOX SIZE;C.XBSZ == 256.		; SIZE OF CONTEXT BLO      CK FOR DATA MANAGERDM.CTZ == 128.		; SIZE OF DATA MANAGER SYSTEM THREAD CONTEXT BLOCK;*CP04 ;; LUN ASSIGNMENTS:; TDBLUN == 1	; LUN FOR TDB FILEMMLUN  == 2	; LUN FOR MESSAGE MANAGER FILEJURLUN == 7	; LUN FOR JOURNAL FILEFRMLUN == 10	; LUN FOR FORMS FILETNXLUN == 11	; TERMINAL INDEX FILE LUNTNQLUN == 12	; TIM'S LUN FOR ATSERALUN == 13	; LUN FOR ERASE FILE;;SLOTSZ = <SGSLOT+7.>/8.		; SLOT SIZE IN DISC BLOCKSSLFIZ = <<<SLOTSZ*2*SGCTM>+SGCTM+16.>+15.>!15.-15..PAGE.SBTTL	TPS-11 DATA STRUCTURES - COMMUNICATIONS RE      GION;;AC.ST=.	.MCALL	SDAT$,QIO$,RABOF$,MRKT$;	RABOF$	RMS$L;;.APNAM::	.ASCII	/APP001/	; APPLICATION NAME.ASR0::		.WORD	0		; ASR0 VALUE FOR APP. COMMON.ASR1::		.WORD	0		; ASR1 VALUE FOR APP. COMMON.LIBAR::	.WORD	0		; ASR VALUE FOR LIBRARY (ASR 2);;.TRNID::	.WORD	0,0		; CURRENT TRANSACTION ID NUMBER.SYFLG::	.WORD	SGACRC		; SYSTEM APPLICATION FLAGS WORD;; SYSTEM FLAG DEFINITIONS:-;SY.BUF == 000001			; DEBUG APPLICATIONSY.SAT == 000002			; GATHER STATISTICS FOR THE APPLICATIONSY.JUR == 000004			; JOURNAL FOR THI      S APPLICATIONSY.SHT == 000010			; SHUTDOWN SWITCHSY.CRC == 000020			; CRASH RECOVERY REQUIREDSY.TRC == 000040			; TRACE THE APPLICATION (DEBUG MODE)SY.RDO == 000100			; DATA BASE IS READ ONLY (DEBUG MODE)SY.LOG == 000200			; LOG MESSAGES FOR THE APPLICATIONSY.CRT == 000400			; CRASH RESTART INPROGRESSSY.OPE == 001000			; FILE OPENS IN PROGRESS;;.SUSFG::	.WORD	0		; FLAG TO INDICATE THAT THE INTERFACE					; THREAD OF THE DATA MANAGER IS SUSPENDED					; (CONTEXT BLOCK ADDRESS);;.MXLNK::	.WORD	SGMGLK	; MAXIMUM       SIZE OF RECEIVE LINK;;.DMCXT::	.WORD	C.XBSZ+RB$BLN	; SIZE OF A CONTEXT/RAB BLOCK FOR DATA MGR.;;.NACTT::	.WORD	0		; NUMBER OF ACTIVE TRANSACTIONS;;; SYSTEM CORE POOL LIST HEAD;.CRAVL::	.WORD	3		; MASK WORD		.WORD	SMPBA		; POINTER TO FREE CHAIN		.WORD	0		; DUMMY SIZE WORD;; BIT MAP FOR MESSAGE MANAGER FILE;.MMAPB::	.WORD	BITMAP		; POINTER TO BIT MAP.MMAPE::	.WORD	BITMED		; END ADDRESS OF MAP		.WORD	BITMAP		; POINTER TO FIRST WORD TO BEGIN ALLOCATION;;; ****** THE FOLLOWING WORD MUST ALWAYS BE AT LOCATION 46       ******;        SINCE "M" WILL LOAD THE DSW INTO IT ON A CONTEXT; ****** SWITCH -- SO DO NOT MOVE			   ******;AC.DSW=.	.IF GT <AC.DSW-AC.ST>-46	.ERROR	AC.DSW		; DSW AT LOCATION GREATER THAN 46	.ENDC;	.IF LT	<AC.DSW-AC.ST>-46	.ERROR	AC.DSW		; FILLER ADDED TO FORCE DSW TO LOCATION 46	.BLKB	46-<AC.DSW-AC.ST>	.ENDC;DSW::	.WORD	0		; THE DSW LOCATION 46	.BLKW	4		; HEADER IMPURE POINTERS;;*****  THE ABOVE FIVE WORDS MUST MAP AT THE SAME ADDRESS *****;	AS IN THE HEADER FOR A TASK. THEY WILL BE SET TO;	THE IMPURE POI      NTERS FOR A RUNNING TASK;*****;;.THRTL::.WORD	0			;FLAGS WORD TO SLOW INPUT;TH.EXC == 000001			;FLAG FOR EXECUTION MANAGERTH.DAT == 000002			;FLAG FOR DATA MANAGERTH.LIM == 000004			;FLAG FOR LINK MANAGER;.NMGRS::	.BYTE	<.LOADM-.MGRLT>/6 ; NUMBER OF TPS MANAGERS.SHTCT::	.BYTE	0		; MANAGER STOP COUNT;.MGRLT::.EXMAN::	.RAD50	/EXCMAN/	; TASK NAME OF EXECUTION MANAGER.EXCXB::	.WORD	0		; CONTEXT BLOCK FOR SYSTEM SENDS.DMMAN::	.RAD50	/DATMAN/	; TASK NAME OF DATA MANAGER.DMCXB::	.WORD	0		; CONTEXT BLOCK FOR SYSTEM       SENDS.FMMAN::	.RAD50	/TIMMAN/	; TASK NAME OF TERMINAL INTERFACE MANAGER.FMCXB::	.WORD	0		; CONTEXT BLOCK FOR SYSTEM SENDS.LIMAN::	.RAD50	/LIMMAN/	; TASK NAME OF LINK MANAGER.LICXB::	.WORD	0		; SYSTEM CONTEXT BLOCK FOR LIM.BAMAN::	.RAD50	/BATMAN/	; TASK NAME OF BATCH INTERFACE MANAGER.BACXB::	.WORD	0		; SYSTEM CONTEXT BLOCK FOR BATCH MANAGER.MBMAN::	.RAD50	/MBXMAN/	; TASK NAME OF MAILBOX MANAGER.MBCXB::	.WORD	0		; SYSTEM CONTEXT BLOCK FOR MAILBOX MANAGER.TRMAN::	.RAD50	/TRCMAN/	; TASK NAME OF TRACE MANAGER       FOR DEBUG.TRCXB::	.WORD	0		; SYSTEM CONTEXT BLOCK FOR TRACE MANAGER;;.LOADM::	.WORD	<LD.EM!LD.DM!LD.FM> ; LOAD MASK FOR MANAGERS;LD.EM == 000001		; EXECUTION MANAGER LOADEDLD.DM == 000002		; DATA MANAGER LOADEDLD.FM == 000004		; TIM LOADEDLD.CM == 000010		; CIM LOADEDLD.BM == 000020		; BATCH INTERFACE LOADEDLD.MM == 000040		; MAILBOX MANAGER LOADEDLD.TM == 000100		; TRACE TASK LOADED;;.TPNQ::		.WORD	0	; NQ NUMBER FOR TRANSACTION PROCESSOR;.DGNQ::		.WORD	0	; NQ NUMBER FOR DIAGNOSTICS;;;; STATION INFORMATION;      .SCBSZ:: .WORD	<SGNMBX+SGMSLK+SGSLLK+SGSBBT+SGSLBT+SGUTST+<2*SGACTM+2>>					; SCB REGION SIZE IN 32. WORD BLOCKS.TSCB::		.WORD	0	; NUMBER OF SCB'S CREATED FOR TERMINALS - 1.TIMQ::		.WORD	0	; KT POINTER TO TIM STATION (LAST TERMINAL SCB).MXTRM::	.WORD	SGTERM	; MAXIMUM NUMBER OF TERMINALS.MBSCB::	.WORD		; NUMBER OF MAILBOXES CREATED;; ALPHA TABLE FOR SCB'S;.SCBTA::	.WORD	SCBTA	; BASE ADDRESS OF ALPHA TABLE.SCBTZ::	.WORD	0	; TABLE "SIZE" (2N-2).SCBTC::	.WORD	<SGNMBX+SGMSLK+SGSLLK+SGSBBT+SGSLBT+SGUTST> 					; C      APACITY OF TABLE;.SCBTT::	.WORD	SCBTT	; BASE ADDRESS OF TERMINAL SCB ALPHA TABLE.SCBTS::	.WORD	0	; TERMINAL SCB ALPHA TABLE SIZE (2N-2).SCBAC::	.WORD	SGACTM+1 ; CAPACITY OF TERMINAL SCB ALPHA TABLE;;;; POOL INFORMATION;.EMPBA::.FMPBA::.DMPBA::;$BASE::		.WORD	0	; BASE ADDRESS OF POOL$SIZE::		.WORD	0	; SIZE OF POOL (32-WORD BLOCKS);;; TRANSACTION DESCRIPTOR TABLE;.TDTBA::	.WORD	TDTBA	; BASE ADDRESS OF TDT.TDTSZ::	.WORD	0	; NUMBER OF ENTRIES IN TDT.TDTMZ::	.WORD	SGTDTM	; CAPACITY OF TDT;; ACTIVE TRANSACTION TA      BLE;.ACTTB::	.WORD	ACTTB	; BASE ADDRESS.ACTTZ::	.WORD	SGCTM	; SIZE = MAXIMUM ACTIVE TRANSACTIONS.ACTBZ::	.WORD	SGCTM*X.ATSZ	; BYTE SIZE OF ATT;									;**CP05+; MAXIMUM NUMBER OF TSTs PERMITTED IN THE CACHE;.MXTST::	.WORD	SGTST	; MAX # TSTs PERMITTED IN CACHE		;**CP05-;; TRANSACTION AUTHORIZATION TABLE FOR SIGNON;.TATTL::	.WORD	0		.WORD	0		.WORD	0		.WORD	0;;; CCB POOL;.CCBLH::	.WORD	CCBPOL		.WORD	CCBPOL+<<SGCTM-1>*C.CSIZ>.CCBBA::	.WORD	CCBPOL			; CCB POOL BASE ADDRESS;;; ACTIVE FILE TABLE;.ACFTB::	.WORD	AC      FTB	; BASE ADDRESS.ACFSZ::	.WORD	SGFILE	; NUMBER OF ENTRIES;;; FILE SIZES AND DISC ADDRESSES;.TDBBA::	.BLKW	2	; BASE ADDRESS OF TDB FILE.FRMBA::	.BLKW	2	; BASE ADDRESS OF FORMS FILE.FXNBK::	.WORD	0	; NUMBER OF BLOCKS FOR FORMS FILE INDEX.ERMRA::	.WORD	0	; RELATIVE BLOCK NUMBER OF ERROR MESSAGE FORM.ERMBX::	.WORD	0	; # OF BLOCKS TO READ FOR FORM.TNXBA::	.BLKW	2	; BASE ADDRESS OF TERMINAL INDEX FILE.MMFBA::	.BLKW	2	; BASE ADDRESS OF SYSTEM WORK FILE.SYSWK::	.WORD	SLFIZ		; SIZE OF SYSTEM WORK FILE;; LIST HEAD       FOR BDBS WAITING FOR LOAD OPERATIONS TO COMPLETE;.BDBLS::	.WORD	0		.WORD	.-2						; ROUNDED UP TO 16. BLOCK VALUE;;; STATISTICS INFORMATION;.CRFIL::	.WORD	0	; NUMBER OF FILES CREATED.ERFIL::	.WORD	0	; NUMBER OF FILES ERASED.EXRST::	.WORD	0	; NUMBER OF EXCHANGE RESTARTS.TMTRA::	.BYTE	0	; NUMBER OF TIMES RETRANSMIT ISSUED TO ATS.TMNCA::	.BYTE	0	; # OF TIMES TIM UNWOUND .TMNNT::	.BYTE	0	; # OF TIMES TIM UNWOUND BECAUSE COULDN'T GET				; NETWORK BUFFERS.TMNCX::	.BYTE	0	; # OF TIMES TIM COULDN'T				; GET CONTEXT       BLOCKS.TMIBF::	.WORD	0	; NUMBER OF INPUT PACKETS.TMICT::	.WORD	0,0	; RUNNING TOTAL OF # OF BYTES IN INPUT PACKET.TMOVF::	.WORD	0	; OVERFLOW COUNTER FOR .TMICT;;; LOGGING INFORMATION;.CURBF::SDAT$	JNLDRV,.COMSB	;SEND TO JOURNAL DRIVER;;$CURLG::	.WORD	0	; CURRENT LOGGING BUFFER;$LOG1::		.WORD	$LOG2	; FIRST LOGGING BUFFER		.WORD	0,0;$LOG2::		.WORD	$LOG1	; SECOND LOGGING BUFFER		.WORD	0,0;;.CSEND::	SDAT$	ABCDEF,.COMSB.ESEND::	SDAT$	SERLOG,.COMSB;;;;; DATA MANAGER STRUCTURES;.OPCNT::	.WORD	0	; OPEN FILE FLAG/CO      UNT$MARKD::	MRKT$	,1,2			; MARKTIME DPB FOR LOCK WAITS.TLWQ::	.WORD	0				; LOCK WAIT QUEUE	.WORD	.-2				;	.WORD	0;	LUN ALLOCATION BITMAP;LUNMAP::	.REPT	4	.WORD	-1	.ENDRLMAPR::	.WORD	LUNMAP	.WORD	LUNMAP+6	.WORD	LUNMAP;DMPOOL::	.WORD	3		.WORD	20000		.WORD	0.DMLKP::	.WORD	3		; CAB AND LOCK BLOCK POOL		.WORD	60000		; BASED AT ASR3		.WORD	0;;; TIMER QUEUE INFORMATION;.TTASK::	.RAD50	/ABCDEF/	; TASK NAME IN WHICH TIMER THREAD EXECUTES.TCXB::		.WORD			; CONTEXT BLOCK ADDRESS FOR TIMER THREAD.TRQ::		.WORD	0		; TIME      R QUEUE HEAD		.WORD	.-2		.WORD	0,0		; DUMMY NODE;;; THRESHOLD VALUES;.TROUT::	.BYTE	1		; TIME OUT FOR TERMINALS	;***CP13.TERR::		.BYTE	5.		; TRANSACTIONS ERRORS;;; EMERGENCY INFORMATION;.OVFLW::	.BYTE			; NUMBER OF NODES PICKED FROM					; THE SMALL POOL BECAUSE OTHER POOLS					; ARE FULL. IF THIS BYTE IS NONE ZERO					; THE SYSTEM WILL NOT START ANY MORE					; TRANSACTIONS UNTIL IT RETURNS TO ZERO.EMER::		.BYTE			; NON-ZERO IF EMERGENCY CONTEXT BLOCK IN USE.ENDCX::	.BLKB	EN.DCB		; CONTEXT BLOCK TO USE FOR E      ND TRANSACTION					; WHEN ONE CANNOT BE PICKED FROM THE SMALL POOL		.EVEN.EMWAT::	.BLKB	W.SIZE		; EMERGENCY WAIT NODE;; SYSTEM TEMP WORK SPACE:;;	THIS WORKSPACE MUST BE AT LOCATION 256. OR GREATER;	FOR THE TIM ALGORITHIMS TO WORK;AC.BUF=.	.IF	LT	<AC.BUF-AC.ST>-256.	.BLKB	256.-<AC.BUF-AC.ST>	.ENDC.REPBF::.TIMBF::			; GET TIME BUFFER FOR TIM.COMSB::	.BLKW	10.	; COMMON SEND BUFFER.TCMBF::			; EXTRA TRANSLATION BUFFER FOR TIM.TEMP::		.BLKW	6	; TEMP. WORK SPACE (PART OF COMMON SEND BLOCK).PAGE.SBTTL	TPS-11 DATA       STRUCTURES - GENERATED STRUCTURES;; TRANSACTION DESCRIPTOR TABLE;TDTBA:	.REPT	SGTDTM	.BLKB	T.MFZ	.WORD	-1	.BYTE	TF.64	.BYTE	0	.ENDR;;; ACTIVE FILE TABLE;;ACFTB:	.REPT	SGFILE	.BLKB	F.LKL	.WORD	.	.WORD	.-2	.BLKB	F.SIZE-F.NGET	.ENDR;;; MESSAGE MANAGER WORK FILE;	ALLOCATION BIT MAP;BITMAP:	.WORD	^C<<<ACTTE-ACTTB>+511.>/512.>	.REPT	<SLFIZ/16.>-1	.WORD	-1	.ENDRBITMED=.-2;; CCB POOL;COUNT=SGCTM-1CCBPOL:	.REPT	SGCTM	.IF	EQ	COUNT	.IFF	.WORD	.+C.CSIZ	.IFT	.WORD	0	.ENDC	.BLKB	C.CSIZ-4	.WORD	ACTTB+<COUNT*X.ATSZ>	COUNT=      COUNT-1	.ENDR;;; ACTIVE TRANSACTION TABLE;ACTTB:	.REPT	SGCTM	.BYTE	AT.NOT	.BLKB	X.ATSZ-1	.ENDRACTTE = ..PAGE;AC.FX = .	.IF	GT <AC.FX-AC.ST>-8192.	.ERROR	<<AC.FX-AC.ST>-8192.>/2	.ENDC.PAGE;; ALPHA TABLE;SCBTA:  .BLKW   SGNMBX+SGMSLK+SGSLLK+SGSBBT+SGSLBT+SGUTSTSCBTT:	.BLKW	SGACTM+1.PAGE;; SMALL POOL;SMPSZ = <<<<EN.DCB*2>/4+WT.SIZ>*SGCTM>+64.+O.SIZ>/2+128.;;SMPBA:  .WORD   0			; POINTER TO NEXT HOLE        .WORD   SMPSZ*2			; SIZE OF SMALL POOL       		        .BLKW   <SMPSZ-2>        .PAGEAC.ED == .	.IF GT <A   b   C.ED-AC.ST/2>-8192.	.ERROR	<<AC.ED-AC.ST>/2>-8192. ; TPSCOM GREATER THAN 8K WORDS	.ENDC	.END      b          ëÛ2kQÁ› 8$0À      .TITLE	CACHE.IDENT	"1.0B00";+;;;;;;                         COPYRIGHT (C) 1978 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; TRANSFER      RED.;;; 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.;;;;	MODULE:		;;	VERSION:	V001A;;	AUTHORS:	MIKE GARRY;;	DATE:		OCTOBER 1976	;;;	THIS MODULE CONTAINS:;				.IN-MEMORY DISK BLOCK CACHE ROUTINES;;;;;;	MODIFIED BY:;;;	RICHARD TREADWAY;;	12-MAR-79	SPR T252431				** RT001      ;;	;		ON FILES WITH BUCKET SIZE LARGER THAN ONE THE;		GET BLOCK WITH EXCHANGE FOR RMS COULD EXCHANGE;		BLOCKS OF UNEQUAL SIZE.  ROUTINE "$GTBLX" MODIFIED;		TO RETURN NO HIT IN THIS CASE.;.PAGE	.MCALL	MAP,DIR$,ASRDF$,TSUSP$,PUSH,POP,POINT0,CMAP	.MCALL	BDBOF$,SDAT$,$DELAY	BDBOF$	RMS$L	ASRDF$.PAGE.SBTTL	GTSP - GET SPACE FROM THE POOL;;	ROUTINES TO GET SPACE FOR BUFFERS FROM THE POOL.;;		$GTSPB IS AN RMS SPECIFIC ROUTINE;;	INPUT:;;		$GTSP	SEE ROUTINE BUFGET;;		$GTSPB;;		R1	BDB ADDRESS;;	OUTPUT:;;		$GTSP	SEE ROU      TINE BUFGET;;		$GTSPB	IN THE BDB;;;$GTSPB::;.DMSPB::	PUSH	<R0,R1>		;SAVE BDB ADDRESS5$:	MOV	B$SIZE(R1),R1	;GET SIZE OF REQUEST	ADD	#77,R1		;ROUND UP	ASH	#-6,R1		;CONVERT TO 32 WORD BLOCKS	CALL	$GTSP		;GET SPACE FROM THE POOL	POP	R1		;RESTORE BDB ADDRESS	BCC	10$		; GOT IT	CLR	B$SIZE(R1)	; CLEAR SIZE IF NO BUFFER (RMS)	CLR	R0	SEC			; RETURN NO BUFFER FLAG10$:	MOV	R0,B$ADDR(R1)	;STORE AWAY BUFFER ADDRESS	POP	<R0>	RETURN;$GTSP::;.DMGSP::	PUSH	<UISAR3,R5>	;SAVE MAPPING CONTEXT AND REGISTERS;20$:	CALL	CMAP2		;POI      NT AT CACHE CONTROL SECTION;	CALL	BUFGET		;TRY AND GET SPACE	BCS	50$		;FLUSH CACHE IF NO SPACE	CALL	CMAP2	SUB	R1,P.DEAD(R2)	;ACCOUNT FOR ALLOCATED SPACE	CLC			;SET SUCCESSFUL RETURN	BR	100$50$:	CALL	FLSCHE		;GO FLUSH THE CACHE	BCC	20$		;TRY AGAIN IF SPACE RELEASED	MOV	#ER.NSP,R1	;INDICATE NO SPACE ERROR	CALL	CMAP2		;MAP ONTO CONTROL SECTION	INC	P.FAIL(R2)	;INCREMENT FAILURE INDICATOR	SEC100$:	POP	<R5,UISAR3>	RETURN.PAGE.SBTTL	RTSP - RETURN SPACE TO THE POOL;;	ROUTINES TO RETURN SPACE TO THE POOL.;;		$RTSPB       IS AN RMS SPECIFIC ROUTINE;;	INPUT:;;	$RTSP	R0	BUFFER ADDRESS;;		R1	BUFFER SIZE;;	$RTSPB	R1	BDB ADDRESS;;	OUTPUT:;;	$RTSP AND $RTSPB	NONE;;$RTSPB::;.DMRSB::;	PUSH	<R0,R1,R2> 	;SAVE CONTEXT5$:	MOV	B$ADDR(R1),R0	;GET BUFFER ADDRESS	MOV	B$SIZE(R1),R1	;GET BUFFER SIZE	ADD	#77,R1		;ROUND UP	ASH	#-6,R1		;CONVERT TO 32 WORD BLOCKS	CALL	$RTSP		;RETURN THE SPACE	POP	<R2,R1,R0> 	;RESTORE CONTEXT AND THE BDB ADDRESS	RETURN;$RTSP::;.DMRSP::	PUSH	<UISAR3>		;SAVE MAPPING CONTEXT	CALL	CMAP2		;POINT AT SUB POOL CONTROL BLO      CK	ADD	R1,P.DEAD(R2)	;DEAD SPACE IS NOW LARGER;	CALL	BUFRET		;RETURN THE SPACE	POP	<UISAR3>	RETURN.PAGE.SBTTL	GTBL - GET A DISK BLOCK;;	GTBL - ROUTINE TO GET A DISK BLOCK .;;	THIS ROUTINE SEARCHES THE IN CORE CACHE FOR THE;	REQUIRED BLOCK OR READS THE DISK IF THE BLOCK;	IS NOT IN THE CACHE.;;	INPUT:;;		R0	POINTER TO A 32 BIT BLOCK NUMBER;		R1	SIZE OF BLOCK IN 32 WORD SEGMENTS;		R2	ADDRESS OF SUB-POOL CONTROL BLOCK;		R3	LUN NUMBER ;;	OUTPUT:;		;		R0	BUFFER ADDRESS IN MOD. 32 WORD FORM;		R1	BDB ADDRESS;$GTBL:      :	PUSH	<UISAR3,R4,R5>	;SAVE MAPPING CONTEXT AND R5	MOV	R0,R5		;USE R5 TO POINT TO BLOCK NUMBER	CLR	R2		;SET R2 FOR A HIT	CALL	BDBSCH		;SEE IF THIS BLOCK IS IN THE CACHE	BCC	210$		;GET SPACE IF NO HIT;20$:	CALL	$GTSP		;GET A BUFFER	BCS	300$		;RETURN WITH ERROR IF NO BUFFER50$:	CALL	BDBALC		;ALLOCATE A BDB AND INSERT ALL NECESSARY	BCS	300$		;INFORMATION - LEAVE IF NO BDB	CALL	POINT	INCB	B.USE(R0)	; LOCK IN MEMORY	TSTB	B.LUN(R0)	;WAS A LUN SPECIFIED?	BEQ	200$		;NO - THEN DO NOT READ	CALL	QIOR		;YES - THEN READ       IN THE DISK BLOCK;	BISB	#BF.LOA,B.FLG(R0) ;MARK BDB AS BEING LOADED;	TSUSP$			;WAIT FOR THE BLOCK TO ARRIVE	CALL	BDBST		;START BDB'S WAITING FOR BLOCK	MOV	@$TTBAD,R2	;GET I/O STATUS BLOCK ADDRESS	TSTB	(R2)		;WAS THERE AN I/O ERROR	BGE	200$		;NO - THEN CONTINUE	BISB	#BF.INV,B.FLG(R0) ;MARK BDB AS INVALID	SEC			;OTHERWISE - INDICATE AN ERROR100$:	MOV	#ER.IOX,R1	;MOV IN ERROR CODE	BR	300$		;AND RETURN;200$:	CALL	CMAP2		;POINT AT CACHE CONTROL SECTION	INC	P.FET(R2)	;INCREMENT BLOCK FETCHED COUNT	CALL	LRUADD		;      ADD BDB TO THE LRU LIST;210$:	CALL	POINT	MOV	B.ADDR(R0),R0	;MOVE BUFFER ADDRESS INTO R0	CLC			;SET SUCCESSFUL RETURN300$:	POP	<R5,R4,UISAR3>	;RESTORE CONTEXT	RETURN.PAGE.SBTTL	GTBLX - GET A BLOCK WITH BUFFER EXCHANGE;;	THIS ROUTINE SEARCHES THE IN CORE CACHE FOR A GIVEN;	BLOCK AND IF SUCCESSFUL PERFORMS A BUFFER EXCHANGE;	WITH THE BUFFER SPECIFIED IN THE USER'S BDB.;;	INPUT:;;		R1	USER BDB;		R3	LUN;;	OUTPUT:;;		R1	USER BDB(UPDATED);;$GTBLX::;.DMGLX::	PUSH	<UISAR3,R0,R4,R5>	MOV	R3,R0		;SAVE LUN NUMBER5$:	CAL      L	$RTSPB		;FIRST RETURN THE BUFFER	MOV	B$LVBN(R1),-(SP) ;POINT AT 32 BIT BLOCK NUMBER	MOVB	B$HVBN(R1),-(SP) 	MOV	R0,R3		;SET UP LUN NUMBER	MOV	SP,R5		;R0 POINTS AT BLOCK NUMBER	PUSH	R1		;SAVE OLD BDB	CALL	BDBSCH		;SEARCH THE CACHE FOR THE BLOCK	BCS	20$		;SKIP - IF UNSUCCESSFUL	CALL	BDBDEL			; DELETE THE BDB FROM SEARCH LIST	CALL	POINT			; MAP THE BDB					; R0 - MAPS THE BDB 					; R1 - POINTS TO BDB ADDRESS	MOV	(SP),R2			; RESTORE RMS BDB ADDRESS	MOV	B$SIZE(R2),R4		; GET THE SIZE	ASH	#-6,R4			; CONVERT TO 3      2 WORD BLOCKS	CMP	R4,B.SIZE(R0)		; SAME SIZE	BNE	10$			; IF NE THEN NO		MOV	B.ADDR(R0),B$ADDR(R2)	; EXCHANGE THE BUFFERS	CLR	B.ADDR(R0)		; INDICATE THAT BUFFER IS  RELEASED	CALL	$DLAR			; RELEASE THE BDB					; INPUT: R1 - BDB ADDRESS	BR	30$			; EXIT10$:	CALL	$DLAR			; RELEASE THE BDB					; INPUT: R1 - BDB ADDRESS20$:	CALL	CMAP2		;POINT AT CACHE CONTROL SECTION	INC	P.FET(R2)	;INCREMENT BLOCK FETCHED COUNT	POP	R1		;RESTORE USER BDB ADDRESS	CALL	$GTSPB		;REGET USER'S BUFFER	SEC			;SET FOR NO HIT30$:	POP	<R0,R0      >		;RESTORE THE STACK	POP	<R5,R4,R0,UISAR3>	RETURN.PAGE.SBTTL	RTBL - RELEASE A DISK BLOCK;;	THIS ROUTINE RELEASES A DISK BLOCK.;;	THE 'USE' COUNT IS DECREMENTED IN THE BDB;	AND IF THIS COUNT IS ZERO THE BLOCK IS ELIGIBLE FOR;	FLUSHING IF THIS EVER BECOMES NECESSARY.OTHERWISE;	THE BLOCK REMAINS IN THE CACHE AND IS A POTENTIAL;	'HIT' IF ANOTHER REQUEST FOR THE BLOCK IS MADE.;;	INPUT:;;		R1	BDB	ADDRESS;$RTBL::	PUSH	<UISAR3,R0>	;SAVE MAPPING CONTEXT;	CALL	POINT10$:	DECB	B.USE(R0)	;DECREMENT USE COUNT	BNE	20$		;      SKIP IF SPACE NOT AVAILABLE	MOV	B.SIZE(R0),R0	;GET SIZE OF AREA	CALL	CMAP2		;MAP CACHE CONTROL SECTION	ADD	R0,P.ALLOC(R2)	;INCREASE NOT USED(NOT LOCKED) SPACE20$:	POP	<R0,UISAR3>	;RESTORE CONTEXT	RETURN.PAGE.SBTTL	RLSEX - RELEASE A DISK BLOCK WITH BUFFER EXCHANGE;;	THIS ROUTINE RELEASES A DISK BLOCK TO THE IN CORE CACHE;	AND TRIES TO EXCHANGE BUFFERS - I.E. THE USER HAS AS MANY;	BUFFERS ON THE RETURN AS THE CALL;;	INPUT:;;		R1	USER BDB ADDRESS;		R3	LUN;;	OUTPUT:;;		R1	USER BDB (UPDATED);;$RLSEX::;.DMRLX::	P      USH	<UISAR3,R0,R4,R5>5$:	MOV	B$ADDR(R1),R5	;SAVE OLD BUFFER ADDRESS	MOV	B$SIZE(R1),-(SP)	; SAVE SIZE	CALL	$GTSPB		;TRY TO GET A NEW BUFFER	MOV	(SP)+,B$SIZE(R1); PUT SIZE BACK	BCS	40$		;SKIP - IF UNSUCCESSFUL;	MOV	R5,R0		;SET UP FOR NEW SYSTEM BDB	PUSH	R1		;SAVE USER BDB ADDRESS	MOV	B$LVBN(R1),-(SP) ;SET UP 32 BIT BLOCK NUMBER	MOVB	B$HVBN(R1),-(SP)	MOV	SP,R5		;R5 POINTS TO 32 BIT BLOCK NUMBER	MOV	B$SIZE(R1),R1	;GET SIZE IN R1	ASH	#-6,R1		; GET TO 32 WORD BLOCKS	CALL	CMAP2		;POINT AT CACHE CONTROL SECTION	ADD      	R1,P.ALLOC(R2)	;INCREASE NOT LOCKED SPACE COUNT	CALL	BDBALC		;GO ALLOCATE SYSTEM BDB FOR DISK BLOCK	MOV	(SP)+,(SP)+	;RESTORE STACK	BCS	20$		;CONTINUE IF BDB NOT OBTAINED	CALL	LRUADD		;ADD IT TO THE LRU LIST	CLC20$:	POP	R1		;RESTORE R130$:	POP	<R5,R4,R0,UISAR3>	RETURN40$:	MOV	R5,B$ADDR(R1)	; PUT ADDRESS BACK	BR	30$.PAGE.SBTTL	ACBDB - ACCESS A BDB;;	THIS ROUTINE ACCESSES A BDB AND SUPPLIES SOME;	OF ITS PARAMETERS TO A USER WHO IS NOT MAPPED ONTO;	THE SUB POOL SPACE.;;	INPUT:;;		R1	BDB ADDRESS;;	OUTPUT:;;		R0      	ASSOCIATED BUFFER ADDRESS;;$ACBDB::	PUSH	<UISAR3>	;SAVE MAPPING CONTEXT;10$:	CALL	POINT	MOV	B.ADDR(R0),R0	;GET BUFFER ADDRESS	POP	<UISAR3>	;RESTORE CONTEXT	RETURN.PAGE.SBTTL	ACBD - POINT AT A BDB;;	THIS ROUTINE PROVIDES THE KT AND BIAS ADDRESSES;	OF A SYSTEM BDB.;;	INPUT:;		R1	BDB ADDRESS;;	OUTPUT:;		R4	KT ADDRESS;		R5	BIAS;$ACBD::	CLR	R4		;RESET R4	MOV	R1,R5		;MOVE BDB ADDRESS TO R5	ASHC	#10.,R4		;GET PAGE VALUE IN R4	ADD	$BASE,R4	;ADDING ON BASE OF CACHE GIVES KT ADDR.	ASH	#-10.,R5	;BIAS IS NOW IN R5	BIC      	#177700,R5	;CLEAR OUT ANY GARBAGE	RETURN.PAGE.SBTTL	GETBDB - GET A FREE BDB;;	THIS ROUTINE OBTAINS A BDB FROM THE FREE LIST,FLUSHING;	THE CACHE IF NECCESSARY,AND RETURNS ITS ADDRESS TO THE ;	CALLER.;;	INPUT:;		NONE;;	OUTPUT:;		R1	BDB ADDRESS;;		C BIT SET IF BDB NOT OBTAINED;GETBDB:	PUSH	R25$:	CALL	CMAP2		MOV	P.FRBF(R2),R1	;GET FIRST ENTRY IN FREE LIST	CMP	#P.FRBF,R1	;ANY BDB'S IN THE LIST?	BNE	10$		;YES - CONTINUE	CALL	FLSCHE		;OTHERWISE - FLUSH THE CACHE	BCS	20$		;ERROR RETURN IF NO BDB RELEASED	BR	5$		;T      RY AGAIN10$:	CALL	BDBDEL		;DELETE THE BDB FROM THE FREE LIST	CLC20$:	POP	R2	RETURN.PAGE.SBTTL	GSRB - GET SPACE AND BDB;;	THIS ROUTINE IS A MESSAGE MANAGER ROUTINE.;;	SPACE IS ALLOCATED AND A BDB INITIALIZED FOR THE CALLER.;;	INPUT:;		R1	BUFFER SIZE;;	OUTPUT:;		R0	BUFFER ADDRESS;		R1	BDB ADDRESS;;		C BIT SET IF SPACE OR BDB NOT ALLOCATED;$GSRB::	PUSH	UISAR3	CALL	$GTSP		;TRY TO GET A BUFFER	BCS	20$		;RETURN WITH ERROR IF NO SPACE	PUSH	<R0,R1>	CALL	GETBDB		;TRY TO GET A BDB	BCC	5$		;RETURN WITH ERROR IF NO BDB      	POP	<R1,R0>	CALL	$RTSP		;RETURN THE BUFFER SPACE	SEC			;SET ERROR RETURN	MOV	#ER.NSP,R1	;SET ERROR CODE	BR	20$;5$:	CALL	POINT	MOVB	R3,B.LUN(R0)	;MOVE IN THE LUN	MOV	(SP),B.SIZE(R0) ;AND THE BUFFER ADDRESS	MOVB	#1,B.USE(R0)	;INCREMENT LOCK COUNT	MOV	2(SP),B.ADDR(R0)	;RETURN BUFFER ADDRESS IN R0	CALL	LRUADD		;INSERT INTO THE LRU LIST	CLC10$:	POP	<R0,R0>20$:	POP	UISAR3	RETURN.PAGE.SBTTL	GTBB - GET BUFFER FOR BDB;;	THIS IS A MESSAGE MANAGER ROUTINE.;;	THIS ROUTINE ALLOCATES A BUFFER FOR A BDB THAT IS ALLOCATED      ;	ON THE DISK AND READS THE DATA INTO THE BUFFER.;;	INPUT:;		R1	BDB ADDRESS;;	OUTPUT:;		R0	BUFFER ADDRESS;$GTBB::.DMTBB::	PUSH	UISAR3	PUSH	<R5,R1>		;SAVE BDB ADDRESS	CALL	POINT	BITB	#BF.OND!BF.LOA,B.FLG(R0) ;BDB ON THE DISK?	BNE	5$		;NO - THEN LEAVE	MOV	B.SIZE(R0),-(SP) ;SAVE MESSAGE SIZE	CALL	CMAP2	INC	P.HIT(R2)	;INCREMENT HIT COUNT	INC	P.NUM(R2)	;AND NUMBER OF CALLS	SUB	(SP)+,P.ALLOC(R2) ;DECREMENT ALLOCATION COUNT	BR	20$5$:	CALL	BDBWT		;WAIT FOR BDB TO LOAD	BITB	#BF.OND,B.FLG(R0); CHECK ON DISC -- COULD       HAVE BEEN A DISC ERROR	BEQ	20$		; YES -- DISC ERROR	MOV	B.SIZE(R0),R1	;GET SIZE OF THE BDB	CALL	$GTSP		;TRY TO GET SPACE FOR THE MESSAGE	BCS	30$		;LEAVE IF THIS FAILS	MOV	R0,R2		;SAVE BUFFER ADDRESS	MOV	(SP),R1		;RESTORE BDB ADDRESS	CALL	POINT		;POINT AT THE BDB	MOV	R2,B.ADDR(R0)	;MOVE IN THE BUFFER ADDRESS	CALL	QIOR		;READ IN THE BDB	BISB	#BF.LOA,B.FLG(R0) ;MARK BDB AS BEING LOADED	TSUSP$	CALL	BDBST		; START ANY WAITING THREADS	BITB	#BF.ALC,B.FLG(R0) ;IS THE DISK SPACE TO BE RELEASED	BEQ	10$		;NO SKIP	CALL      	DSKREL		;RELEASE THE DISK SPACE10$:	MOV	@$TTBAD,R2	;GET CONTEXT BLOCK ADDRESS	MOV	#ER.IOX,R1	; ASSUME ERROR	TSTB	(R2)		;WAS THERE AN I/O ERROR?	SEC			; ASSUME ERROR	BMI	30$		;YES THEN RETURN WITH ERROR	BICB	#BF.OND!BF.LOA,B.FLG(R0) ;RESET THE FLAGS	MOV	(SP),R1		;RESTORE THE BDB ADDRESS	TST	B.LRUF(R0)	;HAS THIS BDB ALREADY BEEN DELETED?	BEQ	15$		;YES - THEN SKIP	CALL	LRUDEL		;DELETE FROM THE LRU LIST15$:	CALL	LRUADD		;AND ADD TO THE FRONT	CALL	CMAP2		;MAP CACHE CONTROL SECTION	INC	P.NUM(R2)	;NO HIT	INC	P.FE      T(R2)	;IT WAS A FETCH20$:	CALL	POINT	MOVB	#1,B.USE(R0)	;LOCK MESSAGE IN MEMORY	MOV	B.ADDR(R0),R0	;RETURN BUFFER ADDRESS	CLC30$:	POP	<R5,R5>		;RESTORE BDB ADDRESS	POP	UISAR3	RETURN.PAGE.SBTTL	DLAR - DELETE AND RETURN A BDB;;	THIS IS A MESSAGE MANAGER TASK.;;	THIS ROUTINE RETURNS ANY ASSOCIATED DISK AND MEMORY RESOURCES;	AND RELEASES THE BDB TO THE FREE LIST.;;	INPUT:;		R1	BDB ADDRESS;;	OUTPUT:;		NONE;$DLAR::	PUSH	UISAR3	PUSH	R1	CALL	POINT	BITB	#BF.OND!BF.LOA,B.FLG(R0) ;AREA ON THE DISK?	BEQ	10$		;NO - RELEAS      E MEMORY 	CALL	BDBWT		; WAIT IF FLUSHED TO DISC	BITB	#BF.OND,B.FLG(R0); ON DISC?	BEQ	10$		; NO	BITB	#BF.ALC,B.FLG(R0) ;DEALLOCATE DISK SPACE?	BEQ	22$		;NO - CONTINUE	CALL	DSKREL		;OTHERWISE RELEASE THE DISK SPACE	BR	22$		;AND CONTINUE10$:	MOV	B.SIZE(R0),R1	;RELEASE THE ASSOCIATED BUFFER	MOV	R0,-(SP)	MOV	B.ADDR(R0),R0	BEQ	20$		;SKIP IF BUFFER ALREADY RETURNED	CALL	$RTSP20$:	POP	R022$:	POP	R1		;RESTORE BDB ADDRESS	TST	B.LRUF(R0)	;HAS THIS BDB BEEN DELETED	BEQ	25$		;YES THEN DO NOT DELETE	CALL	LRUDEL		;DELETE       FROM THE LRU LIST25$:	MOV	#P.FRBF,R2	;AND RETURN TO THE FREE LIST	CALL	BDBADD	POP	UISAR3	RETURN.PAGE.SBTTL	BDBSCH - SEARCH THE CACHE FOR A DISK BLOCK MATCH;;	BDBSCH - ROUTINE TO SEARCH ALL IN CORE DIK BLOCKS FOR A HIT;;	THIS ROUTINE IS CALLED WHENEVER A DISK BLOCK IS TO BE READ INTO;	MAIN MEMORY IN ORDER TO SEE IF IT MIGHT ALREADY BE THERE.;;	THE BDB LISTS ARE SEARCHED AND IF THERE IS A HIT THE;	RELEVANT BDB ADDRESS IS RETURNED.;;	INPUT:;;		R3	LUN;		R5	POINTER TO A 32 BIT BLOCK NUMBER;;	OUTPUT:;;		R1	BDB AD      DRESS IF THERE WAS A CACHE  HIT;;		C BIT CLEAR IF THERE WAS A CACHE HIT - SET OTHERWISE;BDBSCH:;	PUSH	<R1,R2,R4>	CALL	CMAP2		;POINT AT SUB POOL CONTROL BLOCK	INC	P.NUM(R2)	;INCREMENT NUMBER OF CACHE CALLS;	MOV	2(R5),R1	;GET LOW ORDER BITS OF BLOCK NUMBER	BIC	P.MASK(R2),R1 ;USE TO GET AN ENTRY TO THE HASH TABLE	ADD	#P.HSH,R1	MOV	R1,R4		;SAVE LISTHEAD ADDRESS;5$:	CALL	$SCCON		;GO LOOK FOR BLOCK MATCH	BCS	30$		;ERROR RETURN IF NONE FOUND	TST	R3		;WAS THIS REQUEST FOR EXECUTION MANAGER	BNE	10$		;NO - CONTINUE	T      STB	B.USE(R0)	;YES - THEN IS BDB IN USE?	BNE	5$		;YES - THEN LOOK FOR ANOTHER10$:	INCB	B.USE(R0)	; LOCK IN MEMORY	PUSH	R1		;SAVE BDB ADDRESS	CALL	BDBWT		;WAIT FOR BDB TO LOAD;15$:	POP	R1		;RESTORE BDB ADDRESS	MOV	B.SIZE(R0),-(SP) ;SAVE SIZE	CALL	LRUDEL		;REINSERT THE BDB AT THE FRONT OF THE	CALL	LRUADD		;LRU LIST	CALL	CMAP2		;MAP CACHE CONTROL SECTION	INC	P.HIT(R2)	;INCREMENT HIT COUNT	SUB	(SP)+,P.ALLOC(R2) ;REDUCE ALLOCATED COUNT	CLC			;YES - WE HAVE A HIT!!	POP	<R4,R2>	TST	(SP)+	RETURN;30$:	POP	<R4,R2,R1>      	RETURN.PAGE.SBTTL	SCCON - SEARCH FOR A DISK BLOCK MATCH;;	THIS ROUTINE IS USED TO SEARCH A LIST OF BDBS FOR A ;	MATCH ON DISK BLOCK AND LUN.A STARTING BDB MUST BE;	PROVIDED AS AN INPUT PARAMETER.;;	INPUT:;		R1	STARTING BDB ADDRESS;		R4	LISTHEAD ADDRESS;		R3	LUN;		R5	POINTER TO A 32 BIT BLOCK NUMBER;;	OUTPUT:;		C BIT CLEAR IF BDB FOUND;		R1	BDB ADDRESS;$SCCON::	CALL	POINT10$:	MOV	(R0),R1		;GET NEXT ENTRY	CMP	R4,R1		;END OF LIST?	SEC			;ASSUME SO	BEQ	20$		;YES - TRY NEXT ONE	CALL	POINT	CMP	B.LVBN(R0),2(R5) ;      MATCH ON LOW ORDER OF B.N.?	BNE	10$		;NO - TRY NEXT ENTRY	CMPB	R3,B.LUN(R0)	;MATCH ON LUN NUMBER?	BNE	10$		;NO - TRY NEXT ENTRY	CMPB	B.HVBN(R0),(R5)	;MATCH ON HIGH ORDER OF B.N.?	BNE	10$		;NO - TRY NEXT ENTRY	TST	R3		;IS THIS A TST BDB?	BNE	15$		;NO - THEN CONTINUE	CMP	B.LINK(R0),4(R5) ;YES - THEN DO LOAD DEVICES MATCH?	BNE	10$		;NO - THEN TRY AGAIN15$:	BITB	#BF.INV,B.FLG(R0) ;IS THIS BDB VALID?	BNE	10$		;NO - THEN TRY AGAIN	CLC			;INDICATE A HIT20$:	RETURN.PAGE.SBTTL	BDBADD,LRUADD - ADD TO A DOUBLY LINKED       LIST;;	ROUTINES TO ADD BDB ENTRIES TO A DOUBLY LINKED LIST;;	'BDBADD';		ADD USING THE SEARCH LIST POINTERS(AND FREE LIST);;	'LRUADD';		ADD USING THE LRU LIST POINTERS;;;	INPUT:;;		R1	BDB ADDRESS;		R4	LISTHEAD ADDRESS;LRUADD:	PUSH	R1		;SAVE USER BDB ADDRESS	MOV	#P.LRUF,R2	;POINT AT LISTHEAD	ADD	#B.LRUF,R1	;AND AT THE LINKS;	CALL	BDBADD		;ADD IT TO THE LIST	POP	R1		;RESTORE USER BDB ADDRESS	RETURN;BDBADD:	PUSH	R1		;SAVE BDB ADDRESSACOM:	MOV	R2,R1		;FIRST UPDATE THE LISTHEAD	CALL	POINT	MOV	(R0),R1		;GET OLD FI      RST POINTER	MOV	(SP),(R0)	;AND UPDATE WITH NEW BDB ADDRESS	CALL	POINT			;NOW UPDATE OLD FIRST ENTRY	MOV	(SP),2(R0)	;NEW BDB IS BACK POINTER	MOV	R1,R0	POP	R1		;NOW UPDATE NEW BDB	PUSH	R0	CALL	POINT	MOV	(SP)+,(R0)+	;INSERT NEW FORWARD POINTER	MOV	R2,(R0)		;AND BACK POINTER	RETURN.PAGE.SBTTL	BDBDEL,LRUDEL - DELETE FROM A DOUBLY LINKED LIST;;	ROUTINES TO DELETE A BDB FROM A DOUBLY LINKED LIST.;;	'BDBDEL';		DELETE FROM THE SEARCH AND FREE LISTS;;	'LRUDEL';		DELETE FROM THE LRU LIST;;;	INPUT:;;		R1	BDB ADDRESS;;L      RUDEL::	PUSH	R1		;SAVE BDB ADDRESS	ADD	#B.LRUF,R1	;POINT AT LRU LIST	BR	DCOM;BDBDEL:	PUSH	R1		;SAVE BDB ADDRESSDCOM:	CALL	POINT	MOV	(R0),R1		;GET FORWARD POINTER	CLR	(R0)+		;INDICATE THAT ELEMENT IS NOT LINKED	MOV	(R0),R2		;AND BACK POINTER	CALL	POINT			;NOW UPDATE FORWARD LINK	MOV	R2,2(R0)	;BY CHANGING ITS BACK POINTER	MOV	R1,R0		;NOW UPDATE BACK LINK	MOV	R2,R1	MOV	R0,R2	CALL	POINT	MOV	R2,(R0)		;BY CHANGING ITS FORWARD POINTER	POP	R1		;RESTORE BDB ADDRESS	RETURN.PAGE.SBTTL	BDBALC - ALLOCATE A BUFFER DESCRI      PTOR BLOCK;;	ALOOCATE AND SET UP A BUFFER DESCRIPTOR BLOCK.;;	INPUT:;;		R0	BUFFER ADDRESS;		R1	BUFFER SIZE;		R2	SUB-POOL CONTROL BLOCK ADDRESS;		R3	LUN NUMBER;		R5	POINTER TO 32 BIT BLOCK NUMBER;;	OUTPUT:;		R0	BUFFER ADDRESS;		R1	BDB ADDRESS;BDBALC:	PUSH	<R0,R1>10$:	CALL	CMAP2		;POINT AT CACHE CONTROL SECTION;	MOV	2(R5),R2	;GET BLOCK NUMBER 	BIC	P.MASK+60000,R2	;APPLY MASK TO POINT TO SEARCH LIST	ADD	#P.HSH,R2	;POINT AT SEARCH LIST	CALL	GETBDB		;GET A BDB	BCC	20$		;ERROR RETURN IF NONE AVAILABLE	POP	R1	MOV	      (SP),R0		;RETURN BUFFER	CALL	$RTSP	SEC	MOV	#ER.NSP,R1	;SET ERROR CODE	BR	30$		;ERROR RETURN IF NO BDB20$:	CALL	BDBADD		;ADD IT TO THE SEARCH LIST;	CALL	POINT	MOV	(SP)+,B.SIZE(R0) ;SET THE BUFFER SIZE IN THE BDB	MOV	(SP),B.ADDR(R0)	;AND THE BUFFER ADDRESS	MOVB	(R5),B.HVBN(R0)	;THE HIGH 16 BITS OF THE BLOCK NUM.	MOV	2(R5),B.LVBN(R0) ;AND THE LOW 16 BITS	CLR	B.LINK(R0)	;CLEAR LINK WORD	MOVB	R3,B.LUN(R0)	;SET UP THE LUN	BNE	25$		;CONTINUE IF NOT AN E.M. REQUEST	MOV	4(R5),B.LINK(R0) ;SET UP THE LOAD DEVICE25$:	C      LRB	B.USE(R0)	;CLEAR THE USE COUNT	CLRB	B.FLG(R0)	;CLEAR FLAGS	CLR	B.LRUF(R0)	;CLEAR LRU FORWARD POINTER;30$:	POP	<R0>	RETURN.PAGE.SBTTL	FLSCHE - FLUSH THE CACHE;;	FLSCHE - ROUTINE TO FLUSH THE CAHE WHEN THE MANAGER;	DETERMINES THAT THERE IS NOT ENOUGH SPACE TO SATISFY ;	A REQUEST FOR A BUFFER.;;	THE LRU LIST IS SEARCHED FROM THE BACK UNTIL A;	NON-LOCKED BDB IS FOUND, THEN THE BUFFER IS RETURNED;	AND THE BDB RETURNED TO THE FREE LIST.;;	INPUT:;;		NONE	;;	OUTPUT:;;		NONE;	.ENABL	LSBFLSCHE:	PUSH	<R5,R1,R3,R4>      ;	CALL	CMAP2		; MAP THE CONTROL SECTION;	MOV	#60000+P.LRUB-B.LRUB,R0 ;SEARCH THE LRU LIST FROM THE BACK5$:	MOV	B.LRUB(R0),R1	;GET NEXT ENTRY7$:	CMP	#P.LRUF,R1	;IS THIS THE LISTHEAD?	SEC	BEQ	30$		;IF SO - RETURN WITH ERROR	SUB	#B.LRUF,R1	;OTHERWISE - POINT AT START OF BDB	CALL	POINT	TSTB	B.USE(R0)	;BDB IN USE?	BNE	5$		;YES - TRY NEXT ENTRY;;	THE FOLLOWING ENTRY POINT IS A SPECIAL ENTRY FOR;	DATA MANAGER TO FLUSH RMS BDB'S ON FILE CLOSE OR;	SYSTEM SHUTDOWN.;.FL2::;	BITB	#BF.DTY,B.FLG(R0) ;IS THIS BDB DIRTY?	B      EQ	15$		;NO CONTINUE	MOV	$TTBAD,R2	; GET TTB	BIT	#TF.NFL,T.FLG(R2); ALLOWED TO WRITE?	BNE	5$		; NO	BITB	#BF.ALC,B.FLG(R0) ;DOES IT NEED DISK SPACE	BEQ	10$		;NO - CONTINUE	CALL	DSKALL		;GO ALLOCATE DISK SPACE FOR THE BDB	BCS	5$		;MOVE ON IF NO SPACE10$:	CALL	LRUDEL		;DELETE FROM THE LRU LIST	CALL	POINT	CALL	QIOW		;GO WRITE THE BDB OUT	BISB	#BF.LOA,B.FLG(R0) ;SET LOAD FLAG;	TSUSP$	CALL	BDBST		;START ALL WAITING THREADS	MOV	@$TTBAD,R2	; GET CONTEXT BLOCK	TSTB	(R2)		; I-O ERROR?	BGE	20$		; NO -- O.K	BR	5$;; IF       DISC SPACE ALLOCATED THEN IT IS LOST -- IT IS BAD IN ANY CASE;15$:	CALL	LRUDEL		;DELETE FROM LRU LIST	CALL	POINT;20$:	BISB	#BF.OND,B.FLG(R0) ;MARK BDB AS BEING ON THE DISK	CALL	BDBST		;START ANY WAITING BDB'S	MOV	B.FLG(R0),-(SP) ;SAVE THE FLAGS 	PUSH	R1		;SAVE THE BDB ADDRESS	MOV	B.SIZE(R0),R1	;GET THE SIZE OF THE BUFFER	MOV	B.ADDR(R0),R0	;AND THE ADDRESS	CALL	CMAP2	SUB	R1,P.ALLOC(R2)	;REDUCE ALLOCATED COUNT	CALL	$RTSP	POP	R1		;RESTORE THE BDB ADDRESS	BITB	#BF.BKP,(SP)+	;DOES THE BDB GET RETURNED?	BNE	25$		      ;NO - LEAVE	CALL	BDBDEL		;DELETE THE BDB FROM THE SEARCH LIST	MOV	#P.FRBF,R2	;INSERT IN THE FREE LIST	CALL	BDBADD25$:	CLC30$:	POP	<R4,R3,R1,R5>	RETURN	.DSABL	LSB;.PAGE.SBTTL	BDB WAIT AND START ROUTINES;;	THESE ROUTINES WAIT FOR AND RESTART THREADS THAT;	ARE STALLED FOR A BDB TO LOAD OR UNLOAD;BDBST:	BICB	#BF.LOA,B.FLG(R0) ;MARK BDB AS LOADED	PUSH	<R1,R0>		;SAVE BDB ADDRESS	MOV	#.BDBLS,R4	;POINT TO BDB WAIT LIST70$:	CALL	..TWKE		;START ANY THREADS WAITING FOR A LOADING BDB	BCC	70$		;TRY AGAIN IF SUCCESSFUL	P      OP	<R0,R1>	RETURN;BDBWT:;12$:	BITB	#BF.LOA,B.FLG(R0) ;IS THE BDB BEING LOADED?	BEQ	15$		;NO - CONTINUE	MOV	#.BDBLS,R4	;YES - THEN QUEUE THIS THREAD UNTIL				;BDB COMPLETES ITS LOADING	PUSH	R0	CALL	..TWAT		;	POP	R0	BR	12$		;TRY AGAIN;15$:	RETURN.PAGE.SBTTL	BUFGET,BUFRET - FREE SPACE MANAGEMENT;;	THESE TWO ROUTINES ALLOCATE AND DEALLOCATE SPACE IN;	THE FREE SPACE AREA OF A POOL.ALL ADDRESSES AND SIZES;	ARE IN MOD. 32 WORD FORM.;;	THE FREE SPACE LIST IS A LINKED LIST WITH HOLE POINTERS.;;	THE FORMAT OF THE HOL      E POINTERS IS AS FOLLOWS:;		;		WORD 1	POINTER TO NEXT HOLE;		WORD 2	SIZE OF HOLE;;	ROUTINE 'BUFGET';;		INPUT:	R1	SIZE OF BUFFER REQUIRED;;		OUTPUT:	R0	BUFFER ADDRESS;;			C BIT CLEAR IF BUFFER FOUND - SET OTHERWISE;;	ROUTINE	'BUFRET';;		INPUT:	R1	SIZE OF BUFFER BEING RETURNED;;			R0	BUFFER ADDRESS;;-BUFGET:	.IF	DF	DEBUG	TST	R1		;ZERO LENGTH SPECIFIED?	BNE	5$		;NO - CONTINUE	HALT	.ENDC5$:	MOV	UISAR4,-(SP)	; SAVE ASR4;10$:	CMP	2(R2),R1	;IS THIS HOLE BIG ENOUGH?	BHIS	20$		;YES - SKIP - NOTE C BIT IS SET	MOV	UIS      AR3,UISAR4	;	MOV	(R2),UISAR3	;CORRECTLY FOR UNSUCCESSFUL RETURN.	BNE	10$		;OTHERWISE MOVE TO NEXT HOLE - 	BR	BRET1		;RETURN UNSUCCESSFULLY IF END OF FREE;				;SPACE20$:	BHI	30$		;SKIP IF HOLE IS NOT EXACTLY THE RIGHT	MOV	UISAR3,R0	;CALCULATE BUFFER ADDRESS	MOV	(R2),100000	;SIZE - UPDATE PREVIOUS POINTER	BR	BRET		;C BIT SET CORRECTLY BECAUSE OF 'BHI';30$:	MOV	UISAR3,R0	;START OF BUFFER	CMP	#20,R1		;IS THIS A SMALL AMOUNT?	BHIS	40$		;YES - THEN ALLOCATE FROM FRONT OF HOLE	ADD	2(R2),R0	;CALCULATE BUFFER ADDRES      S	SUB	R1,R0		;	SUB	R1,2(R2)	;UPDATE HOLE SIZE	BR	BRET;40$:	ADD	R1,100000	;UPDATE PREVIOUS POINTER	MOV	R0,UISAR4	;SET UP NEW HOLE	ADD	R1,UISAR4	MOV	(R2),100000	;SET UP FORWARD POINTER	MOV	2(R2),100002	;AND NEW HOLE SIZE	SUB	R1,100002BRET:	.IF	DF	DEBUG	CALL	CHK	.ENDC	CLCBRET1:	MOV	(SP)+,UISAR4	RETURN;BUFRET:	.IF	DF	DEBUG	TST	R1		;ZERO LENGTH SPECIFIED?	BNE	5$	HALT;;5$:	CALL	CHK;	.ENDC	MOV	UISAR4,-(SP)	; SAVE ASR410$:;	TST	(R2)		;IS THIS THE LAST HOLE?	BEQ	20$		;YES - THEN THIS ENTRY GOES NEXT	CMP	R0,(R2)		;DO      ES BUFFER FIT BEFORE NEXT HOLE?	BLO	20$		;YES - SKIP	MOV	(R2),UISAR3	;OTHERWISE TRY NEXT HOLE	BNE	10$		;CONTINUE IF NOT END OF LIST				;OTHERWISE RETURNED BUFFER GOES AT				;END OF LIST20$:	MOV	2(R2),R3	;CHECK TO SEE IF THIS REURNED HOLE MERGES	ADD	UISAR3,R3	;WITH THE PREVIOUS HOLE	CMP	R0,R3		;MERGE IF THE SAME	BNE	30$		;OTHERWISE CONTINUE ON	ADD	R1,2(R2)	;MERGE BY INCREASING PREVIOUS HOLE SIZE	MOV	UISAR3,R0	;SET PREVIOUS HOLE ADDRESS AS CURRENT	BR	40$		;CHECK NEXT POTENTIAL MERGE30$:	MOV	(R2),R3		;CONSTRUC      T A HOLE IN THE FREE SPACE	MOV	R0,(R2)		;UPDATE PREVIOUS HOLE POINTER	MOV	R0,UISAR3	;CONSTRUCT  HOLE POINTER	MOV	R3,(R2)		;FIRST POINTER TO NEXT HOLE	MOV	R1,2(R2)	;THEN SIZE OF HOLE40$:	MOV	2(R2),R3	;NOW CHECK TO SEE IF THIS HOLE MERGES	ADD	R0,R3		;WITH THE NEXT HOLE	CMP	(R2),R3		;IF EQUAL - HOLES MERGE	BNE	BRET1		;OTHERWISE RETURN	MOV	(R2),UISAR4	;GET NEXT HOLE POINTER	MOV	100000,(R2)	;MOVE IT INTO THIS HOLE	ADD	100000+2,2(R2)	;UPDATE THE HOLE SIZE	BR	BRET1	.IF	DF DEBUG;CHK:	PUSH	<R2,R3>	MOV	$SIZE,R3	;SIZE       OF POOL IN R3	MOV	$BASE,R2	;GET BASE ADDRESS OF POOL	ADD	R2,R3		;CALCULATE TOP ADDRESS OF POOL	CMP	R0,R2		;IS SPECIFIED ADDRESS IN POOL?	BHI	1$		;YES - SKIP	HALT1$:	CMP	R0,R3	BLO	3$	HALT3$:	SUB	R0,R3		;CALCULATE REMAINDER OF THE POOL	CMP	R1,R3		;IS SPECIFIED SIZE SMALLER?	BLOS	2$		;YES - SKIP	HALT2$:	POP	<R3,R2>	RETURN	.ENDC.PAGE.SBTTL	QIO - ISSUE THE Q I/O TO READ/WRITE THE DISK;;	ROUTINE TO SET UP THE Q I/O DPB AND ISSUE THE ;	DIECTIVE.;;	INPUT:;;		$QIOR AND $QIOW;;		R1	BDB ADDRESS;;		QIOR AND QIOW;;		R0      	BDB ADDRESS;;	OUTPUT:;;		C BIT CLEAR - IF Q I/O SUCCESSFULLY ISSUED;				SET OTHERWISE;$QIOR::	CALL	POINTQIOR:	MOV	#IO.RLB,-(SP)	;SAVE FUNCTION CODE	BR	COM;$QIOW::	CALL	POINTQIOW:	MOV	#IO.WLB,-(SP)	;SAVE FUNCTION CODE;COM:	MOV	$TTBAD,R2	;GET Q I/O DPB ADDRESS	ADD	#T.QIO,R2	;DPB IS IN THE THREAD TABLE BLOCK	MOV	(SP)+,Q.IOFN(R2) ;MOVE IN THE FUNCTION CODE	MOVB	B.LUN(R0),Q.IOLU(R2) ;MOVE IN LUN  NUMBER	MOV	@$TTBAD,Q.IOSB(R2) ;GET I/O STATUS BLOCK ADDRESS	MOV	#60000,Q.IOPL(R2) ;BUFFER ADDRESS	MOV	B.SIZE(R0),R3	      ;CONVERT SIZE OF REQUEST TO BYTES	ASH	#6,R3		;FROM MOD. 32 WORD SIZE	MOV	R3,Q.IOPL+2(R2)	;MOVE INTO DPB	MOV	B.LVBN(R0),Q.IOPL+10(R2) ;MOVE IN BLOCK NUMBER	MOVB	B.HVBN(R0),Q.IOPL+6(R2) ;;	MOV	UISAR3,-(SP)	;SAVE MAPPING CONTEXT	MOV	B.ADDR(R0),UISAR3 ;MAP 60000 TO BUFFER1$:	DIR$	R2		;ISSUE Q I/O	BCC	5$		; DIRECTIVE GOOD	CMP	#IE.UPN,$DSW	; NO NODES?	BEQ	3$		; YES	HALT			; NO -- CRASH THE TP3$:	$DELAY			; WAIT A BIT	BR	1$		; TRY ONCE MORE5$:	MOV	(SP)+,UISAR3	;RESTORE CORRECT MAPPING10$:	RETURN.PAGE.SBTTL	DSKREL       - RELEASE DISK SPACE IN THE WORK FILE;;	THIS ROUTINE RELEASES THE DISK ALLOCATION FOR A MESSAGE;	AFTER IT HAS BEEN READ BACK INTO MEMORY.;;	INPUT:;		R0	BDB POINTER;;	OUTPUT:;		NONE;DSKREL:	PUSH	<R0,R3,R4,R5>	MOV	B.LVBN(R0),R2	;GET BLOCK NUMBER	SUB	.MMFBA+2,R2	;SUBTRACT BASE TO GET STARTING BIT	MOV	B.SIZE(R0),R3	;GET SIZE OF BLOCK IN 32 WORD SEGS.	ADD	#7,R3		;ROUND UP	ASH	#-3,R3		;CONVERT TO DISK BLOCKS	MOV	.MMAPB,R0	;POINT TO BITMAP	CALL	..DLLC		;DEALLOCATE THE DISK SPACE	POP	<R5,R4,R3,R0>	RETURN.PAGE.SBTTL      	DSKALL - ALLOCATE DISK SPACE FOR A MESSAGE;;	THIS ROUTINE ALLOCATES DISK SPACE FOR A MESSAGE JUST;	BEFORE IT IS WRITTEN TO THE DISK.;;	INPUT:;		R0	BDB POINTER;;	OUTPUT:;		DISK BLOCK ADDRESS STORED IN THE BDB;DSKALL:	PUSH	<R1,R4,R5,R0>	MOV	B.SIZE(R0),R3	;GET SIZE OF BLOCK IN 32 WORD SEGS.	ADD	#7,R3		;ROUND UP	ASH	#-3,R3		;CONVERT TO DISK BLOCKS	MOV	#.MMAPB,R4	;POINT AT BIT MAP CONTROL BLOCK	CALL	..ALLC		;TRY TO ALLOCATE SPACE	POP	R0		;RESTORE BDB POINTER	BCS	10$		;RETURN IF NO SPACE	MOVB	.MMFBA,B.HVBN(R0) ;      OTHERWISE CALCULATE DISK BLOCK ADDRESS	MOV	.MMFBA+2,B.LVBN(R0) ;MOVE IN HIGH AND LOW PARTS	ADD	R3,B.LVBN(R0)	;ADD ON OFFSET	ADC	B.HVBN(R0)	;32 BIT ARITHMETIC10$:	POP	<R5,R4,R1>	RETURN.PAGE;POINT::	POINT0	RETURNCMAP2::	CMAP	R2	RETURN.PAGE.SBTTL	JOURNAL AND LOGGING ROUTINES;;	THESE ROUTINES FORMAT THE SEND BUFFER AND;	TRANSMIT THE MESSAGE TO THE JOURNAL HANDLER TO PROCESS THE LOG;	REQUEST;;	INPUT:;		R4	CCB ADDRESS;		UISAR3	MCB ADDRESS;;	.ENABL	LSB;;	WRITE JOURNAL RECORD;..JUNL::	PUSH	R0	MOV	#JN.SLT,-(SP)	;SAV      E FUNCTION CODE	MOV	#SY.JUR,-(SP)	; SAVE FLAG	BR	LOGCOM;;	LOG INPUT MESSAGE;..LOG1::	PUSH	R0	MOV	#JN.IMS,-(SP)	;SAVE FUNCTION CODE	BR	LOGTST;;	LOG OUT[UT MESSAGE;..LOG2::	PUSH	R0	MOV	#JN.OMS,-(SP)	;SAVE FUNCTION CODELOGTST:	MOV	#SY.LOG,-(SP)	; LOG FLAGLOGCOM:	BIT	(SP)+,.SYFLG	; FUNCTION ENABLED?	BEQ	10$		; NO;3$:	.IF	NDF	DEBUG	MOV	#.COMSB,R0	;POINT TO SEND BUFFER	MOV	@$TTBAD,(R0)+	;MOVE IN CONTEXT BLOCK	MOV	(SP),(R0)+	;AND FUNCTION CODE	MOV	UISAR3,(R0)+	;SET UP KT OF DATA	CLR	(R0)+		;NO VIRTUAL ADDRESS BIAS   z  	CLR	(R0)+		;SIZE COMES FROM THE MCB	MOV	UISAR0,(R0)+	;SET MAPPING OF COMMON AREA	MOV	R4,(R0)+	;AND CCB	CLR	(R0)+		;NO USER CODE	CLR	(R0)+		;OR LOGGING STATION	DIR$	#.CURBF		;SEND TO JOURNAL HANDLER	BCC	5$		; SEND O.K	CMP	#IE.UPN,$DSW	; NO NODES FOR SEND	BNE	10$		; NO SO IGNOR REQUEST	$DELAY	BR	3$5$:	TSUSP$			;WAIT FOR REPLY	.ENDC10$:	TST	(SP)+	POP	R0	RETURN	.DSABL	LSB;	.END z         u~ôkQÁ› 8$        .TITLE	TIMCAL.IDENT	"V1.0C";;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	TIMCAL;; VERSION:	001;; AUTHOR:	AUDREY R. REITH;		GILBERT WOLSKY;; DATE:		NOV 9,1978;	.PAGE;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		----      -------;;	1.0C	15-JAN-79	S.K. HARRIS	SKH001 = SPR #21643.03;	1.0C	20-FEB-79	S.K. HARRIS	SKH002 = SPR #21802;	1.0C	22-FEB-79	S.K. HARRIS	SKH003 = SPR #T207789;	1.0C	16-MAR-79	S.K. HARRIS 	SKH007 = SPR ?? (POWERFAIL);	1.1	18-APR-79	S.K. HARRIS	SKH011 = SPR ?? CHECK IF ;							 ENOUGH SDBS;	1.1	2-MAY-79	S.K. HARRIS	SKH012 = FIX LARGE INPUT FORMS;;;;	.PAGE;  TIMCAL - TPMLIB AND ATS INTERFACES;;	THIS MODULE IS COMPOSED OF A SET OF SUBROUTINES CALLED;	FROM VARIOUS PLACES IN THE OTHER MODULES OF TIM;;	MOST OF THE       ROUTINES SERVE AS INTERFACES TO THE TPMLIB OR ATS QIO ;	OPERATIONS WHICH IN THE FORMER CASE PERFORM THE ACTUAL OPERATIONS	.PAGE	.MCALL	TIMDF$,FRMDF$,ACTDF$,FQMDF$,TNXDF$,TMEDF$,ATSDF$	.MCALL	TRESM$,$DELAY,TSTRT$,TSUSP$,GTNB$S,RENB$S,XMTD$S	.MCALL	NQDEF$,RMDF$	.MCALL	TTRMN$	TIMDF$	FRMDF$	ACTDF$	FQMDF$	TNXDF$	TMEDF$	ATSDF$	NQDEF$	RMDF$	.PAGE	.SBTTL	.CALNB	(CALCULATE NUMBER OF NETWORK BUFFERS);  .CALNB - TO CALCULATE THE NUMBER OF NETWORK BUFFERS;	;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD;	OF THE       TIM TASK TO CALCULATE THE NUMBER OF NETWORK;	BUFFERS REQUIRED GIVEN THE NUMBER OF BYTES;;	THERE ARE TWO ENTRY POINTS TO THIS ROUTINE:;		;		.CALIB - CALCULATE NUMBER OF BUFFERS NEEDED FOR;			  INPUT FROM ATS. THIS IS A SEPARATE;			  ENTRY POINT BECAUSE ATS DOESN'T USE ITS;			  ENTIRE BUFFER IN THIS CASE. THE VT62 PASSES;			  DATA IN BLOCKS OF 256 BYTES IN THIS CASE.;		;		.CALNB -  CALCULATE NUMBER OF BUFFERS FOR OUTPUT TO ATS.;			  IN THIS CASE, THE SIZE OF THE ATS BUFFER CAN BE;			  USED.;;	INPUT;		R1 - NUM      BER OF BYTES;		ALL REGISTERS VOLATILE;		NTBFSZ - # OF BYTES IN ONE ATS NETWORK BUFFER;;	OUTPUT;		R1 - NUMBER OF BUFFERS;	.PAGE	.ENABL	LSB.CALIB::				;					*** SKH012	MOV	#256.,R3		; USE VT62 BUFFER SIZE FOR DIVIDE	*** SKH012	BR	5$			;					*** SKH012.CALNB:: 				;	MOV	NTBFLT,R3		; USE ATS BUFFER SIZE FOR DIVIDE	*** SKH0125$:					;					*** SKH012	ADD	#DOPN,R1		;ADD FOR THE BASIC HEADER	CLR	R0			;CLEAR FOR DIVISION	DIV	R3,R0			;DIVIDE	TST	R1			;REMAINDER	BEQ	10$			;NO	INC	R0			;YES ADD ONE FOR REMAINDER10$:	MO      V	R0,R1	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.CHTN  (FIND/CLAIM THE SCB);;  .CHTN - FIND OR CLAIM AN SCB GIVEN THE HTN ;;	THIS SUBROUTINE IS CALLED TO CONVERT A 16 BIT HTN;	VALUE INTO AN SCB INDEX;	AND TO FIND THE SCB OR CLAIM AN EMPTY ENTRY;;	INPUT;		R3 - HTN VALUE;		R2 - IF NE 0 CLAIM THE FREE ENTRY;		     IF 0 FIND THE ENTRY;	HTN VALUE;		16 BITS;		BITS 0-9;			INDEX INTO THE SCB ALPHA TABLE RELATIVE;			TO THE START OF THE SCBS ASSOCIATED WITH;			WITH TERMINALS;		BITS 10-15;			REPRESENTS THE INDIVIDUAL TERMINAL;      ;	OUTPUT;		C CLEAR;		  R3 - HTN;		  .MRSCB MAPPED TO THE SCB;		C SET;		  R3 - HTN;		  I.E. COULDN'T FIND OR NONE TO CLAIM	.PAGE	.ENABL	LSB.CHTN::  MOV	R3,R0				;SET UP HTN	CLR	R1			ASHC	#-10.,R0			;SHIFT R0,R1 -10	ASH	#-5,R1				;POSITION HTN INDEX	MOV	.SCBTT,R4			;GET SCB ALPHA STRT	TST	-(R4)				;BUMP BACK FOR ZEROTH ENTRY	ADD	R1,R4				;ADD INDEX	MOV	(R4),@#.MRSCB			;LOOK AT SCB10$:	CMP	R3,S.HTN+.WNSCB			;IT THIS THE ONE	CLC					;ASSUME YES	BEQ	50$				;YES	TST	R2				;NO IS IT FIND	BEQ	25$				;YES	TST	S.HTN+      .WNSCB			;NO ITS CLAIM	BEQ	50$				;AVAILABLE25$:	SEC					;DIDN'T SUCCEED50$:	RETURN					;	.DSABL	LSB         .PAGE	.SBTTL	.CLST  (CLOSE TRANSACTION INTERFACE);;  .CLST - CLOSE TRANSACTION SUBROUTINE;;	THIS SUBROUTINE IS CALLED WITHIN A THREAD OF THE;	TIM TASK TO CLOSE OR ABORT A TRANSACTION;;	THERE ARE THREE ENTRY POINTS TO THIS SUBROUTINE;		1. .CLST;		   USED MOST FREQUENTLY TO CLOSE THE TRANSACTION;		2. .CCLTA;		   USED WHEN THE TRANSACTION IS TO BE ABORTED AND;		   R5 IS TO BE CLEARED;		3. .CCLTB;		   US      ED TO CLEAN UP THE SCB FOR A SYSTEM ABORT;		4. .CCLTC							*** SKH002;		   USED TO RETURN THE TDB AFTER THE ABORT FORM			*** SKH002;		   HAS BEEN DISPLAYED						*** SKH002;;	THE ACTUAL OPERATIONS ARE PERFORMED WITHIN THE LIBRARY;	ROUTINES:;		..TCLS - TO CLOSE THE TRANSACTION;		..TABO - TO ABORT THE TRANSACTION;;	IT IS THE FUNCTION OF THIS SUBROUTINE TO ESTABLISH;	THE INTERFACE;;	INPUT;	  FOR .CLST ;		MAPPING REGISTERS;			.MRSCB SET TO VIEW THE SCB FOR THE;			PARTICULAR THREAD;		ALL MAPPING REGISTERS THAT A      RE USED ARE;		PRESERVED AND RESTORED UPON EXIT;;		REGISTERS;			ALL REGISTERS ARE VOLATILE;		FOR .CLST;			NO INFORMATION CONTAINED ;		FOR  .CCLTA;			NO INFORMATION CONTAINED IN REGISTERS;;		SCB CELLS;			S.CTDB - WORD 1 KT11 POINTER TO TDB;			         WORD 2 DISPLACEMENT IN BLOCK;			S.CFNA - DISPLACEMENT TO FORMAT RECORD;		                 SECTION CURRENTLY BEING PROCESSED;			S.FLGS - SP.OPN FLAG IS SET;;			S.CTDT - MAY CONTAIN THE TDT ADDRESS;	OUTPUT;	   IN BOTH CASES;		SCB CELLS;			S.CTDB - WORD 1 = 0;			               WORD 2 = 0;			S.CFNA - 0;			S.FLGS - SP.OPN = 0;			S.CFSZ - 0;			S.FLGS - SP.OPN IS 0;			S.CTDT - 0		.PAGE	.ENABL	LSB.CLST:: BIT	#SP.OPN,S.FLGS+.WNSCB	;IS THERE A TRANSACTION	BEQ	10$			;NO	INC	S.TRCO+.WNSCB		;BUMP NUMBER OF COMPLETE TRANSACTIONS	MOV	#.WNSCB,R3		;GET VIRTUAL OF THE SCB	CALL	..TCLS			;GO CLOSE IT	CLRB	S.TFUN+.WNSCB		;CLEAR THE ERROR PROCESS FLAG		*** SKH002.CCLTC::				;					*** SKH002	CALL	.RETDB			;RETURN TDB				*** SKH002	CLR	S.CTDB+2+.WNSCB		;					*** SKH002	CLR	S.CFNA+.WNSCB		;				      	*** SKH002	CLR	S.CFSZ+.WNSCB		;					*** SKH002	CLRB	S.NNBS+.WNSCB		;					*** SKH002	BIC	#SP.OPN,S.FLGS+.WNSCB	;RESET OPN FLAG				*** SKH002	CLR	S.CTDT+.WNSCB		;CLEAR THE TDT IF THERE			*** SKH002	CLR	S.TRID+.WNSCB		;CLEAR SEQUENCE NUMBER			*** SKH002	CLR 	S.TRID+2+.WNSCB		;					*** SKH00210$:					;					*** SKH002	RETURN;.CCLTA::CLR	R5			;CLEAR THE LOGGING REGISTER	BIT	#SP.OPN,S.FLGS+.WNSCB	;IS THERE A TRANSACTION	BEQ	.CCLTB			;NO	MOVB	S.STAT+.WNSCB,-(SP)	;SAVE THE STATE	MOVB	#SS.WQM,S.STAT+.WNSCB	;SET WAIT      ING FOR MESSAGE	MOV	S.CCB+.WNSCB,R0		;CCB FOR TRANSACTION	CALL	..TABO			;GO ABORT IT	TSUSP$				;WAIT FOR ABORT NOTIFICATION	MOVB	(SP)+,S.STAT+.WNSCB	;RESTORE STATE;.CCLTB::CALL	ABOCL			;CLEAN UP RESOURCES	CALL	NTASK			;NOTIFY THE SYSTEM	CLRB	S.TFUN+.WNSCB		;CLEAR THE ERROR PROCESS FLAG	BR	10$			;RETURN					*** SKH002	.DSABL	LSB	.PAGE	.SBTTL	.GCXB (GET CONTEXT BLOCK);  .GCXB - GET A CONTEXT BLOCK;;	THIS SUBROUTINE IS CALLED TO OBTAIN A CONTEXT BLOCK;	IN ORDER TO START A THREAD FOR PROCESSING ON A ;	SCB. IF F      OUND THE THREAD IS STARTED.;	THE BUFFER FOR CONTEXT BLOCKS IS RESIDENT IN THE;	VIRTUAL SPACE OF TIM;	THE ACTUAL ALLOCATION IS PERFORMED BY THE LIBRARY;	ROUTINE ..ALC1;	INPUT;		NONE;;	OUTPUT;		C CLEAR -  THREAD STARTED;		C SET - NO CONTEXT BLOCKS	.PAGE	.ENABL	LSB.GCXB::  MOV	#.TMCXH,R0		;LISTHEAD 	MOV	#.TMCZ,R1		;SIZE OF BUFFER	CALL	..ALC1			;ALLOCATE IT	BCS	40$			;SKIP IF NO BLOCKS	MOV	R0,S.THRD+.WNSCB	;STORE CONTEXT BLOCK ADDRESS	MOV	@#.MRSCB,R3		;GET KT FOR SCB	MOV	#FQMFRS,R1		;ASSUME WAITING FOR FQM	CMPB      	#SS.WQM,S.STAT+.WNSCB	;WERE WE	BEQ	30$			;YES	MOV	#TRMFRS,R1		;NO30$:	TSTRT$	R0,R1,#.TMCZ		;START THE THREAD40$:	RETURN				;ALL DONE	.DSABL	LSB	.PAGE	.SBTTL	.GETDB   (GET TDB);  .GETDB - GET THE TRANSACTION DESCRIPTION BLOCK;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD;	OF THE TIM TASK TO ACQUIRE THE TDB WITHOUT;	OPENING THE TRANSACTION;	AS A RESULT OF CALLING THIS SUBROUTINE;		THE TDB IS LOCKED IN MEMORY ;		THE APPROPRIATE SCB CELLS ARE INITIALIZED;	THE ACTUAL ACQUISITION OF THE TDB IS PERFORMED       BY;	CALLING THE LIBRARY ROUTINE ..GTDB;	IT IS THE FUNCTION OF THIS SUBROUTINE TO;	PROVIDE THE INTERFACE;;	INPUT;		ALL REGISTERS VOLATILE;	OUTPUT;		SCB CELLS;		  IF  C  CLEAR;		  S.CTDT - TDT ADDRESS;		  S.CTDB - KT11 FOR THE TDB;		  S.CTDB+2 - BIAS WITHIN BLOCK FOR THE TDB;		IF C SET;		  R1  CONTAINS CODE;			ER.NSP - NO SPACE IN CACHE;			ER.IOX - HARD I/O ERROR;		IN EITHER CASE R5 CONTAINS THE TDT;	.PAGE	.ENABL	LSB.GETDB::	MOV	S.CTDT+.WNSCB,R5		;GET TDT POINTER	CALL	..GTDB				;GO GET IT	BCS	50$				;PROBLEM       TIME	MOV	R0,S.CTDB+.WNSCB		;SAVE KT11	CLR	R3	BISB	T.DSP(R5),R3			;GET VALUE	ASL	R3				;CONVERT TO # OF BYTES	MOV	R3,S.CTDB+2+.WNSCB		;SAVE IT50$:	RETURN	.DSABL	LSB       .PAGE	.SBTTL	.GFNAM  (CONVERT FORMAT NAME TO DISK ADDRESS);  GFNAM - CONVERT FORMAT NAME TO DISK ADDRESS;;	THIS SUBROUTINE IS CALLED WITHIN A THREAD OF THE ;	TIM TASK TO CONVERT A FORMAT RECORD NAME IN ASCII;	TO ITS RELATIVE DISK ADDRESS FOR SUBSEQUENT ;	PROCESSING;;	AS A RESULT OF CALLING THIS SUBROUTINE A FORMAT;	RECORD RELATIVE DISK ADD      RESS AND THE NUMBER OF BLOCKS;	IS RETURNED IF THE RECORD EXISTS.;;	INPUT:;	  REGISTERS;		R3 - THE VIRTUAL ADDRESS OF THE ASCII STRING;;		ALL REGISTERS ARE VOLATILE;	  MAPPING REGISTERS;		.MRSCB - SET TO VIEW THE SCB FOR THE PARTICULAR THREAD;		.MRINB - SET TO VIEW THE INPUT BUFFER IN WHICH;			 THE STRING IS FOUND;		BOTH MAPPING REGISTERS ARE PRESERVED;;	OUTPUT:;;	  IF SUCCESSFUL;		C IS CLEAR;		R1 - THE NUMBER OF BLOCKS TO BE READ FOR THE RECORD;		R2 - RELATIVE DISK ADDRESS OF THE RECORD WITHIN;		     THE FO      RMAT FILE;;	  IF UNSUCCESSFUL;		C IS SET;		R1 - ER.NRE - NAME NOT FOUND;	           - ER.IOX - HARD IO ERROR;		   - ER.NCB - NO CACHE SPACE;;	INTERFACES:;		$GTBL - TO GET THE FORMAT INDEX RECORD;		$RTBL - TO RELEASE THE FORMAT INDEX RECORD;;	STACK USAGE;		THROUGHOUT THIS SUBROUTINE AN AREA OF THE STACK;		IS USED FOR STORAGE AND REFERENCED AS FOLLOWS;;	  [SP] - BDB TEMPORARILY AT END AS # OF BLOCKS FOR PARTICULAR RECORD;	 2[SP] - 0 OR AT END AS RELATIVE D.A.;	 4[SP] - # OF BLOCKS LEFT IN INDEX RECORD;	 6[SP]       - FRMBA    -----BASE ADDRESS OF FORMAT FILE;	 8[SP] - FRMBA  -----ADJUSTED AS REQUIRED;	10[SP] - V.A. OF STRING;	12[SP] - CONTENTS OF .MRFNX MAPPING REGISTER;	14[SP] - CONTENTS OF .MRINB MAPPING REGISTER;	16[SP] - CONTENTS OF .MRCM1 MAPPING REGISTER;	18[SP] - RETURN;;	UPON ENTRY;		THE STACK SPACE IS ALLOCATED AS DESCRIBED ABOVE;	THE # OF BLOCKS FOR THE FROMAT INDEX RECORD IS DETERMINED;	FROM .FXNBK;;	EACH BLOCK IS SEARCHED ACCORDING TO THE FOLLOWING ALGORITHM;	;;	THE LAST ENTRY IS COMPARED ;	AGAINST THE AS      CII INPUT STRING;;	IF THE STRING IS < THE LAST ENTRY A BINARY SEARCH IS;	MADE ON THE ENTIRES IN THE BLOCK;;	IF THE STRING IS > THAN THE LAST ENTRY THE NEXT BLOCK;	IS EXAMINED;;	.PAGE	.ENABL	LSB.GFNAM::  MOV	@#.MRCM1,-(SP)		;SET UP STACK	MOV	@#.MRINB,-(SP)		;	MOV	@#.MRFRX,-(SP)		;	MOV	R3,-(SP)		;V.A. OF STRING	MOV	.FRMBA+2,-(SP)		;BASE ADDRESS OF FILE	MOV	.FRMBA,-(SP)		;	MOV	.FXNBK,R1		;GET IN REGISTER	MOV	R1,-(SP)		;SAVE IT	CLR	-(SP)			;	CLR	-(SP)			;;10$:	MOV	#FRMLUN,R3		;LUN TO USE	MOV	#8.,R1			;NUMBER OF       32 WORD BLOCKS	MOV	SP,R0			;ADDRESS OF BASE ADDRESS	ADD	#6,R0			;ADDRESS OF BASE ADDRESS	CALL	$GTBL			;GET BLOCK	BCS	108$			;DIDNT GET (R1 ERROR CODE)	INC	8.(SP)	ADC	6(SP)			;	CLR	R4	TST	(SP)			;FIRST BLOCK	BNE	15$			;NO	MOV	#1,R4			;SET TO SKIP FIRST ENTRY15$:	MOV	R1,(SP)			;SAVE BDB	MOV	R0,@#.MRFRX		;LOOK AT FIRST BLOCK	MOV	#77406,@#.DRFRX		;;;	REGISTER USAGE IN THIS AREA;		R0 - # ENTRIES IN BLOCK;		R1 - # CHARACTERS TO CHECK;		R2 - TEMP REGISTER FOR CURRENT CHECK;		R3 - ADDRESS OF TEST STRING;		R4 - LOW      EST INDEX;		R5 - HIGHEST INDEX;20$:	MOV	#50.,R5			;HIGHEST INDEX FOR BLOCK	MOV	10.(SP),R3		;ADDRESS OF STRING	MOV	R5,R0			;#ENTRIES THIS BLOCK	MOV	R5,R1			;GET HIGHEST INDEX INTEMP	MUL	#10.,R1			;HIGHEST BLOCK	ADD	#.WNFRX,R1		;ADDRESS	MOV	R1,R2			;SET UP CORRECTLY;40$:	MOV	#6,R1			;# OF CHARACTERS50$:	CMPB	(R3)+,(R2)+		;COMPARE THE BYTES	BHI	60$			;NOT IN THIS BLOCK	BLO	70$			;SHOULD BE IN THIS BLOCK	SOB	R1,50$			;LOOK SOMEMORE	JMP	FND			;GOOD HEAVENS FOUND IT;60$:					;NOT IN BLOCK	MOV	(SP),R1			;GET BACK       BDB	MOV	12.(SP),@#.MRFRX	;GET BACK LIBRARY	CALL	$RTBL			;RELEASE THE BLOCKS	DEC	4(SP)			;ANY MORE	BGE	10$			;YES	CLR	(SP)	BR	95$			;NO ERROR;70$:					;IN THIS BLOCK IF AT ALL	CMP	R4,R5			;HAVE WE CROSSED OVER	BHIS	95$			;YES	MOV	R4,R3			;GET READY FOR SEARCH	ADD	R5,R3	ASR	R3	MOV	R3,R0			;SAVE IT	MUL	#10.,R3	ADD	#.WNFRX,R3	MOV	R3,R2	MOV	#6,R1			;NUMBER OF CHARACTERS	MOV	10.(SP),R3		;ADDRESS OF STRING;80$:	CMPB	(R3)+,(R2)+		;COMPARE THEM	BHI	90$				BLO	85$	SOB	R1,80$	JMP	FND			;FOUND IT;85$:					;TRIAL VALUE       HIGH	MOV	R0,R5			;LOWER UPPER LIMIT	BR	70$;90$:					;TRIAL VALUE LOW	MOV	R0,R4			;RAISE LOWER LIMIT	BR	70$;95$:					;DIDNT FIND ERROR	MOV	(SP),R1			;GET BACK BDB	MOV	#ER.NRE,(SP)		;SET ERROR CODE	CLR	2(SP)	BR	100$;;FND:	MOV	(SP),R1			;GET BACK BDB	MOV	(R2)+,2(SP)		;RELATIVE DISK ADDRESS	MOV	(R2),(SP)		;NUMBER OF BLOCKS100$:	MOV	12.(SP),@#.MRFRX	;LOOK AT LIBRARY	TST	R1			;BDB	BEQ	105$			;NO	CALL	$RTBL			;RELEASE BLOCK105$:	MOV	(SP),R1			;# OF BLOCKS OR ERROR CODE108$:	MOV	2(SP),R2		;RELATIVE D.A. OR 0	ADD	#1      4.,SP			;CLEAN UP STACK	MOV	(SP)+,@#.MRINB		;RESTORE WINDOWS	MOV	(SP)+,@#.MRCM1	TST	R2			;ERROR TIME	BNE	120$			;NO	SEC120$:	RETURN	.DSABL	LSB        .PAGE	.SBTTL	.GFRM   (GET FORMAT RECORD);  .GFRM - GET FORMAT RECORD SUBROUTINE;;	THIS SUBROUTINE IS CALLED WITHIN A THREAD OF THE ;	TIM TASK TO OBTAIN A FORMAT RECORD;;	AS A RESULT OF CALLING THIS SUBROUTINE:;		THE FORMAT RECORD IS RETRIEVED AND MARKED IN USE;;	THERE ARE TWO ENTRY POINTS TO THIS SUBROUTINE;		.GFRMT ;		   USED WHEN THE RELATIVE DISK ADDRESS IS       TO;		   BE OBTAINED FROM THE TDB - THE MORE FREQUENTLY;		   USED ENTRY POINT;;		.GFRM;		   USED WHEN THE FORMAT RECORD RELATIVE ADDRESS IS;		   ALREADY KNOWN. TWO SUCH PLACES ARE INITRD;		   WHERE THE INITIAL OPERATION IS KNOWN TO INVOLVE;		   A FORMAT RECORD AND FQMRTN WHERE THE FQM CONTAINED;		   A FORM NAME WHICH WAS CONVERTED TO A RELATIVE ;		   DISK ADDRESS;;	THE ACTUAL ACQUISITION OF THE RECORD IS PERFORMED WITHIN ;	THE CACHE ROUTINE.;;	IT IS THE FUNCTION OF THIS SUBROUTINE TO ESTABLISH THE ;	INTERFA      CE;;	INPUT;;	  .GFRMT;		REGISTERS;		  NO INFORMATION ;	          ALL REGISTERS ARE VOLATILE;		MAPPING REGISTERS;		  .MRSCB SET TO VIEW THE SCB FOR THE PARTICULAR THREAD;		  ALL MAPPING REGISTERS THAT ARE USED ARE PRESERVED;		  AND RESTORED UPON EXIT;		SCB CELLS;		  S.CTDB - 1ST WORD - KT11 ADDRESS OF TDB;		           2ND WORD - DISPLACEMENT IN BLOCK;		  S.CFNA - DISPLACEMENT TO CURRENT FORMAT RECORD SEGMENT;	 ;	  .GFRM;		REGISTERS;		  R1 - NUMBER OF BLOCKS (MOD 32) TO READ;		  R2 - RELATIVE DISK ADDRESS;		        ALL REGISTERS ARE VOLATILE;		MAPPING REGISTERS;		  SAME AS FOR .GFRMT ENTRY;;	OUTPUT;	  IF C CLEAR;		SCB CELLS;			S.CFBF - KT11 VALUE FOR FORMAT RECORD;		        S.CFID - BUFFER ID FOR RECORD (BDB ADDRESS);	  THEN THE SUBROUTINE RETURNS;	  IF C SET;		R1 - CONTAINS ERROR CODE;		;		ER.NSP - NO SPACE IN CACHE;		ER.IOX - HARD I/O ERROR;	INTERFACES;		$GTBL - GET THE FORMAT RECORD;	.PAGE	.ENABL	LSB.GFRMT:: MOV	@#.MRTDB,-(SP)		; SAVE THE MAPPING REGISTER	MOV 	S.CTDB+.WNSCB,@#.MRTDB	;LOOK AT TDB	MOV 	S.CTDB+2+.WNS      CB,R0	;GET DISPLACEMENT	ADD	S.CFNA+.WNSCB,R0	;GET TO THIS SECTION	MOV	Y.FDA+.WNTDB(R0),R2	;RELATIVE D.A. OF RECORD	MOVB	Y.NBX+.WNTDB(R0),R1	;NUMBER OF BLOCKS	MOV	(SP)+,@#.MRTDB		;RESTORE REGISTER	TST	R1			;WAS THERE A FORMAT RECORD	BNE	10$			;YES	MOV	#TE.NFR!TS.SCB!TS.SST,R5 ;SET THE CODE AND FLAGS	JMP	ABTERR			;ABORT10$:.GFRM:: ASH	#3,R1			;CONVERT TO 32 WRD BLOCKS	MOV	.FRMBA+2,-(SP)		;STICK ON STACK	MOV	.FRMBA,-(SP)		;BASE ADDRESS	ADD	R2,2(SP)		;ADD RELATIVE ADDRESS	ADC	(SP)			;ADD THE CARRY	MOV	SP,R0			;      POINT TO 32 BIT BLOCK NUMBER	MOV	#FRMLUN,R3		;LUN ;					;R1 - SIZE IN 32WRD BLOCKS	CALL	$GTBL			;GET THE RECORD	MOV	(SP)+,(SP)+	BCS	20$			;SKIP IF ERROR	MOV	R0,S.CFBF+.WNSCB	;KT11 OF RECORD	MOV	R1,S.CFID+.WNSCB	;BDB OF RECORD	MOV	R0,@#.MRCM1		;LOOK AT THE RECORD	MOV	#77406,@#.DRCM1	MOV	F.FQMZ+20000,S.CFSZ+.WNSCB ;SAVE THE MESSAGE SIZE20$:					   ;					*** SKH003	RETURN	.DSABL	LSB        .PAGE	.SBTTL	.GMSG  (GET FQM INTERFACE);  .GMSG - GET MESSAGE (FQM) SUBROUTINE;;	THIS SUBROUTINE IS CALLED WITHIN A PARTIC      ULAR THREAD;	OF THE TIM TASK TO GET A MESSAGE (FQM).;;	THERE ARE TWO ENTRY POINTS TO THIS SUBROUTINE:;		1. .GMSG;			THE MOST FREQUENTLY USED ENTRY WHERE;			THE THREAD HAS BEEN RESUMED BECAUSE THE;			TIM HAS BEEN NOTIFIED THAT AN FQM EXISTS;			FOR THE PARTICULAR SCB THREAD;			THIS CALL IS FROM .FQMAV ;		2. .GMSGA;			THE ALTERNATE ENTRY WHICH IS USED ONLY WHEN;			TIM IS DIRECTED TO GET A MESSAGE FROM ;			DIFFERENT STATION (ONE OF THE QUEUE TYPE;			OF STATIONS);;	THE ACTUAL ACQUISTION OF THE FQM IS PERFORMED W      ITHIN ;	THE LIBRARY ROUTINE  ..GMES .;;	IT IS THE FUNCTION OF THIS SUBROUTINE TO ESTABLISH THE;	INTERFACE TO THE LIBRARY ROUTINE.;;	INPUT;;	FOR BOTH .GMSG AND .GMSGA;;	MAPPING REGISTERS:;		.MRSCB SET TO VIEW THE SCB FOR THE PARTICULAR STATION;		MAPPING REGISTERS USED ARE PRESERVED AND RESTORED;		UPON EXIT.;		NOTE THE EXCEPTION UNDER OUTPUT.;;	FOR .GMSG;	  REGISTERS:;		NO INFORMATION IS CONTAINED WITHIN THE REGISTERS;		ALL REGISTERS ARE VOLATILE;;	FOR .GMSGA;	  REGISTERS:;		R2  - KT11 VALUE FOR THE SCB FROM       WHICH TO OBTAIN;		      THE FQM;;	OUTPUT;;	IF AN FQM IS OBTAINED;	   C IS CLEAR;	   SCB CELLS;		S.INID - KT11 POINTER TO MCB PORTION OF THE MESSAGE;		S.INBF - KT11 POINTER TO FQM PORTION OF THE MESSAGE;	   MAPPING REGISTER:;		.MRINB IS SET TO VIEW THE FQM PORTION OF THE MESSAGE;	IF NO FQM IS OBTAINED;	   C IS SET;		R1 CONTAINS CODE;		ER.NSP - NO SPACE IN THE CACHE ;		ER.NMS - NO MESSAGE;		ER.IOX - HARD I/O ERROR 		.PAGE	.ENABL	LSB.GMSG::	MOV	@#.MRSCB,R2		;SET UP KT11 PTR TO SCB	CALL	..GMES			;GET MESSAGE	BC      S	10$			; NO MESSAGE	MOV	R3,S.INID+.WNSCB	;R3=KT11 PTR TO MCB	MOV	R3,@#.MRINB		;MESSAGE MAPPING REGISTER  GONE	MOVB	M.MDP+.WNINB,R3		;GET THE PART	ADD	R3,@#.MRINB		;VIEW RECORD	MOV	@#.MRINB,S.INBF+.WNSCB	; SAVE THIS IN SCB	CLC10$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.GBUFS	(GET NETWORK BUFFERS AND SDBS);  .GBUFS - GET BUFFERS;;	THIS SUBROUTINE IS CALLED TO GET NETWORK BUFFERS AND THEIR;	ASSOCIATED SDBS. IF A RESOURCE IS NOT AVAILABLE THE ROUTINE;	WILL DELAY.;;	INPUT;;		R1 - CONTAINS THE # OF NETWORK BUFFERS;;	OU      TPUT;;		C CLEAR;		R0 = ADDRESS OF BUFFER FOR SDBS;		R1 = # OF SDBS IN BYTES (  (R2)*6  );		R2 = # OF ENTRIES	.PAGE	.ENABL	LSB10$:	CALL	.RSDB		;RELEASE THE SDB20$:	CALL	.WAITD		;WAIT.GBUFS::	CALL	.GSDB		;GET SDBS	BCS	20$		;SKIP IF ERROR	CALL	.GNTB		;GET NETWORK BUFFERS	BCS	10$		;SKIP IF ERROR	RETURN			;WE GOT THEM	.DSABL	LSB	.PAGE	.SBTTL	.GNTB	(GET NETWORK BUFFERS);  .GNTB - GET NETWORK BUFFERS;;	THIS SUBROUTINE IS CALLED TO ACQUIRE NETWORK BUFFERS;;	INPUT;;		R0 = ADDRESS OF BUFFER FOR SDBS;		R1 = # OF SDBS       IN BYTES  ( [R2]*6 );		R2 = # OF ENTRIES ;	OUTPUT;		C CLEAR;		R0,R1,R2 SAME AS UPON ENTRY;		SMALL BUFFER NOW CONTAINS THE SDBS;		ALL REGISTERS ARE VOLATILE;;		C SET;;		R0,R1,R2 SAME AS UPON ENTRY ;		;		SMALL BUFFER CONTAINS NO INFORMATION;;;	SEGMENT DESCRIPTOR BLOCK STRUCTURE;		WORD 0 - KT11 OF NETWORK BUFFER;		WORD 1 - BIAS OF BUFFER;		WORD 2 - COUNT OF NUMBER OF BYTES IN BUFFER	.PAGE	.ENABL	LSB.GNTB::  GTNB$S	  #TNQLUN,,,@$TTBAD,,<R0,R1>	CALL	CHKERR	BCS	.GNTB	MOV	@$TTBAD,R3	CMPB	#IS.SUC,(R3)		;OK	CLC	BEQ	      10$	INCB	.TMNNT			;BUMP THE COUNTER	SEC10$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL  .GSDB  (GET SMALL BUFFER FOR SDB);  .GSDB - GET SMALL BUFFER TO HOLD SDBS;;	THIS SUBROUTINE IS CALLED TO ACQUIRE A SMALL BUFFER ;	TO HOLD A SPECIFIC NUMBER OF NETWORK SEGMENT DESCRIPTOR ;	BLOCKS (SDBS);;	INPUT;		  R1 - CONTAINS THE # OF NETWORK BUFFERS;;	OUTPUT;		C CLEAR;		R0 - ADDRESS OF THE SMALL BUFFER;		R1 - LENGTH OF SMALL BUFFER IN BYTES;		R2 - # OF NETWORK BUFFERS ;	;		C SET;		R0 - NO BUFFER ADDRESS;		R1 AND R2 AS ABOVE BUT N      OT MEANINGFUL;;	THE BUFFER IS ALLOCATED FROM THE .NPOLS BUFFER POOL;	VIA A CALL TO ..ALC1;	THE BUFFER IS ALLOCATED IN UNITS OF 6 BYTES	.PAGE	.ENABL	LSB.GSDB::	 MOV	R1,-(SP)			;SAVE # BUFFERS	MUL	#6,R1				;CONVERT TO BYTES	CMP	R1,.NMSDB			;ENOUGH SDBS ALLOCATED?		*** SKH011	BGT	15$				;NO, ABORT			*** SKH011	MOV	R1,-(SP)	MOV	#.NPOLH,R0			;LISTHEAD	CALL	..ALC1				;ALLOCATE	MOV	(SP)+,R1			;LENGTH IN BYTES	MOV	(SP)+,R2			;NUMBER OF BUFFERS	RETURN15$:					;					*** SKH011	MOV	#TE.SIZ!TS.BYT!TS.SCB,R5	;LOG THE ER      ROR			*** SKH011	MOV	R1,.COMSB+ERRDAT		;SAVE THE COUNT			*** SKH011	JMP	.SDMER				;ABORT				*** SKH011	.DSABL	LSB        .PAGE	.SBTTL	.MSBUF  (GET FQM BUFFER INTERFACE);;  .MSBUF - GET MESSAGE (FQM) BUFFER;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD;	OF THE TIM TASK TO GET A MESSAGE BUFFER IN WHICH;	TO PLACE THE FQM AS IT IS BEING FORMED. THE TRANSACTION;	WILL HAVE BEEN OPENED PRIOR TO CALLING THIS SUBROUTINE;;	AS A RESULT OF CALLING THIS SUBROUTINE, THE BUFFER IS ;	ALLOCATED AND THE POINTERS EST      ABLISHED WITHIN THE SCB;;	THE ACTUAL ACQUISITION OF THE BUFFER IS PERFORMED WITHIN;	THE LIBRARY ROUTINE ..GMBF;;	IT IS THE FUNCTION OF THIS SUBROUTINE TO ESTABLISH;	THE INTERFACE TO THE LIBRARY ROUTINE;;;  INPUT:;	REGISTERS;		NO INFORMATION;		ALL REGISTERS ARE VOLATILE;	MAPPING REGISTERS;		.MRSCB SET TO VIEW THE SCB FOR THE PARTICULAR THREAD;		ALL MAPPING REGISTERS THAT ARE USED ARE PRESERVED;		AND RESTORED UPON EXIT;	SCB CELLS;		S.CFCZ - MAXIMUM SIZE OF FQM IN BYTES;;  OUTPUT:;	C CLEAR;	SCB CELLS;		S.OTBF       - KT11 POINTER TO START OF MESSAGE BUFFER;		S.OTID - BUFFER ID FOR THIS FQM BUFFER;	C SET;		R1 CONTAINS ERROR CODE;;		ER.EAC - ALREADY ACTIVE EXCHANGE;		ER.NSP - NO SPACE IN CACHE;		ER.VXF - SPACE TOO SMALL FOR AREA	.PAGE	.ENABL	LSB.MSBUF:: MOV	S.CFSZ+.WNSCB,R5	;GET BUFFER SIZE	MOV	#.WNSCB,R3		;V.A OF SCB	CALL	..GMBF			;GET THE BUFFER	BCS	40$	MOV	R5,S.OTBF+.WNSCB	;KT11 IN R5 SAVED	MOV	R2,S.OTID+.WNSCB	;BUFFER ID IN R2 SAVED40$:	RETURN	.DSABL	LSB        .PAGE	.SBTTL	.OPTRN  (OPEN TRANSACTION INTERFACE);  .OP      TRN - OPEN A TRANSACTION SUBROUTINE;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD;	OF THE TIM TASK TO OPEN A TRANSACTION.;;	AS A RESULT OF CALLING THIS SUBROUTINE:;		1. A TRANSACTION IS OPENED FOR THE STATION;		2. THE ASSOCIATED DATA STRUCTURES ARE ;		   ESTABLISHED;;	MOST OF THESE RESULTS ARE ACHIEVED BY CALLING THE ;	LIBRARY ROUTINE ..TOPN;;	IT IS THE FUNCTION OF THIS SUBROUTINE TO ESTABLISH;	THE INTERFACE TO THE LIBRARY ROUTINE;;;;;	INPUT:;;	  REGISTERS;		ALL REGISTERS ARE VOLATILE;	  MAPPING RE      GISTERS;		.MRSCB IS SET TO VIEW THE SCB FOR THE PARTICULAR STATION;		ALL MAPPING REGSITERS THAT ARE USED ARE PRESERVED;		AND RESTORED UPON EXIT;;;	OUTPUT;		IF TRANSACTION OPENED SUCCESSFULLY;		C IS CLEAR;		THE  STRUCTURES REQUIRED BY THE MESSAGE ;		MANAGER ARE ALSO INITIALIZED;		IF NOT OPENED;		C IS SET;			R1 CONTAINS ERROR CODE (ER.OPE);				THERE IS ALREADY AN OPEN ;				TRANSACTION ASSOCIATED WITH THE;				STATION;			OR ;			ER.NCB - CANT GET CACHE RESOURCES;		;			AND;			R2 STILL CONTAINS THE V.A. OF THE NAM      E;;	INTERFACES - LIBRARY ROUTINE;		..TOPN - TO OPEN A TRANSACTION		.PAGE	.ENABL	LSB.OPTRN::  MOV 	@#.MRTDB,-(SP)		;GET THE TDB	MOV	S.CTDB+.WNSCB,@#.MRTDB	MOV	S.CTDB+2+.WNSCB,R0	ADD	#.WNTDB,R0		;VIRTUAL ADDRESS OF TDB	MOV	#.WNSCB,R3		; V.A OF SCB	MOV	R0,-(SP)		;SAVE TDB	CALL	..TOPN			; OPEN TRANSACTION	MOV	(SP)+,R0		;RESTORE TDB POINTER	MOV	(SP)+,@#.MRTDB		;RESTORE WINDOW	BCS	20$			;DIDNT GET IT OPEN	BIS	#SP.OPN,S.FLGS+.WNSCB	;SET IT OPEN	MOV	S.CCB+.WNSCB,R3		;LOOK AT CCB				*** SKH002	MOV	C.TID(R3),S.TRID+.      WNSCB	;SAVE XTRAN SEQ NUMBER			*** SKH002	MOV	C.TID+2(R3),S.TRID+2+.WNSCB ;					*** SKH00220$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.QFCXT  (QUEUE FOR A CONTEXT BLOCK);  .QFCXT - TO QUEUE AN ENTRY FOR A CONTEXT BLOCK;;	THERE IS A QUEUE MAINTAINED FOR CONTEXT BLOCKS REQUIRED;	BUT NOT AVAILABLE.;;	THE QUEUE LISTHEAD IS .QFCBX AND ENTRIES FOR THE QUEUE;	ARE OBTAINED FROM THE POOL .QPOLS (.QPOLH HEAD);	WHEN A 2 WORD BUFFER IS OBTAINED VIA A CALL;	TO ..ALC1 THE KT11 FOR THE SCB FOR ;	WHICH A CONTEXT BLOCK  IS REQUIRED       IS SAVED AS THE ENTRY;	RETURN IS MADE TO THE CALLING ROUTINE;	ENTRIES ARE REMOVED IN THE SUBROUTINE .RCXB,THE STARTING;	ADDRESS FOR EACH ENTRY IS DETERMINED FROM THE STATE OF THE SCB	.PAGE	.ENABL	LSB.QFCXT::INCB	.TMNCX			;COUNT OF Q FOR CONTEXT BLOCKS15$:	MOV	#.QPOLH,R0		;Q BUFFER	MOV	#4,R1	CALL	..ALC1			;ALLOCATE ENTRY	BCS	100$			;PROBLEM	MOV	@#.MRSCB,2(R0)		;KT11 OF SCB	MOV	#.QFCBX,R1		;Q HEADER	MOV	R0,@2(R1)		;Q TO TAIL	MOV	R0,2(R1)		CLR	(R0)	RETURN100$:	$DELAY				;STALL	BR	15$			;TRY AGAIN	.DSABL	LSB	.      PAGE	.SBTTL	.RCXB  (RELEASE A CONTEXT BLOCK);  .RCXB - TO RELEASE A CONTEXT BLOCK;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD;	OF THE TIM TASK JUST PRIOR TO TERMINATING;	THE THREAD IN ORDER TO RELEASE THE CONTEXT BLOCK;	WHICH IT HAS BEEN USING.;	;	AN INITIAL CHECK IS MADE TO SEE IF A CLOSE THREAD IS			*** SKH007;	WAITING FOR THIS THREAD TO TERMINATE. IF SO, THE CLOSE			*** SKH007;	THREAD IS RESUMED.							*** SKH007;;	BEFORE RELEASING THE BLOCK BACK TO THE BUFFER;	A CHECK IS MADE TO SEE IF ANY EN      TRIES EXIST IN THE   ;	.QFCBX QUEUE WAITING FOR A CONTEXT BLOCK;	IF SO THE ENTRY IS DEQUEUED AND THE THREAD CONTINUES,;	AT EITHER FQMFRS OR TRMFRS, FOR THE NEW STATION.;	NEW THREAD DEPENDS ON S.STAT IN THE SCB - SS.WQM FQMFRS ;	SS.WTA OR SS.COM TRMFRS;;	THE ROUTINE DOES NOT RETURN	.PAGE	.ENABL	LSB.RCXB::	CLR	S.THRD+.WNSCB		;CLEAR ENTRY IN SCB	MOV	S.CTRD+.WNSCB,R0	;TERMINATING?				*** SKH007	BEQ	10$			;NO					*** SKH007	CLR	S.CTRD+.WNSCB		;YES, CLEAR S.CTRD			*** SKH007	TRESM$	R0			;RESUME CLOSE THREAD			***       SKH00710$:					;					*** SKH007	MOV	#.QFCBX,R4		;GET QUEUE HEADER	CALL	..QRHD			;ANY ENTRIES	BCS	30$			;NO	MOV	#.QPOLH,R3		;RELEASE Q ENTRY	MOV	#4,R1	MOV	R5,R0	MOV	2(R5),-(SP)		;SAVE KT ADDRESS	CALL	..DLC1	MOV	(SP)+,R3		;GET KT11 	MOV	R3,@#.MRSCB		;LOOK AT QUEUED ENTRY	MOV	@$TTBAD,R0		;GET CBA	MOV	R0,S.THRD+.WNSCB	;PUT IT IN STATION BLOCK	MOV	R0,SP			;POINT STACK AT CB	ADD	#.TMCZ,SP		;TOP OF CB	CMPB	#SS.WQM,S.STAT+.WNSCB	;WAITING FOR MESSAGE?	BEQ	20$			;YES	JMP	TRMFRS			;GO PROCESS TERMINAL20$:	JMP	FQMFRS	      		;GO PROCESS MESSAGE30$:	MOV	@$TTBAD,R0		;GET CBA	MOV	#.TMCXH,R3		;DO A REAL RELEASE OF CB	MOV	#.TMCZ,R1	CALL	..DLC1	CLR	S.THRD+.WNSCB		;CLEAR THE ENTRY IN THE STATION BLOCK	TTRMN$				;TERMINATE	.DSABL	LSB	.PAGE	.SBTTL	.REFQM	(RELEASE FQM BUFFER);  .REFQM - RELEASE THE FQM BUFFER;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD OF;	THE TIM TASK TO RELEASE THE BUFFER ACQUIRED FOR AN FQM;	BEFORE SENDING IT INTO THE SYSTEM.  THIS MAY OCCUR ;	BECAUSE OF AN ERROR/ABORT OR RESOURCE UNAVAILABLE CONDITION;;	      THE ACTUAL OPERATION IS PERFORMED IN THE LIBRARY ROUTINE;	..CLRK;   	 ;	IT IS THE FUNCTION OF THIS SUBROUTINE TO PROVIDE THE;	INTERFACE;;	INPUT;		NONE;		ALL REGISTERS ARE VOLATILE;;	.PAGE	.ENABL	LSB.REFQM::  MOV	S.OTID+.WNSCB,R1		;GET BUFFER ID	BEQ	10$				;NONE	CALL	..CLRK				;RELEASE IT	CLR	S.OTID+.WNSCB10$:	CLR	S.OTBF+.WNSCB	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.RETDB	(RELEASE THE TDB);  .RETDB - RELEASE THE TDB SUBROUTINE;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD;	OF THE TIM TASK TO RELEASE THE TD      B IN THOSE SITUATIONS;	IN WHICH THE TRANSACTION HAS NOT BEEN OPENED;;	THE ACTUAL RELEASING (DECREMENTING THE USE COUNT) IS;	PERFORMED BY THE LIBRARY ROUTINE ..RTDB;;	IT IS THE FUNCTION OF THIS SUBROUTINE TO PROVIDE THE;	INTERFACE;;	INPUT;		NONE;		ALL REGISTERS VOLATILE;;	OUTPUT;		R5 - TDT ADDRESS;		S.CTDB - 0;;	.PAGE	.ENABL	LSB.RETDB::TST	S.CTDB+.WNSCB		;IS THERE A TDB	BEQ	20$			;NO	MOV	S.CTDT+.WNSCB,R5	;GET TDT	BEQ	20$			;NONE	MOV	R5,-(SP)	CALL	..RTDB			;RELEASE IT	MOV	(SP)+,R5	CLR	S.CTDB+.WNSCB		;RESET PO      INTER20$:	RETURN	.DSABL	LSB        .PAGE	.SBTTL	.RMSG  (RELEASE FQM INTERFACE);  .RMSG - RELEASE THE MESSAGE (FQM) SUBROUTINE;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD;	OF THE TIM TASK TO RELEASE THE FQM.;;	AS A RESULT OF CALLING THIS SUBROUTINE;		1. THE FQM IS RELEASED BACK TO THE CONTROL;		   OF THE MESSAGE MANAGER;		2. THE SCB CELLS ASSOCIATED WITH THE FQM ARE;		   CLEARED;;	THE ACTUAL RELEASING OF THE FQM IS PERFORMED WITHIN;	THE LIBRARY ROUTINE ..DSMS;;	IT IS THE FUNCTION OF THIS SUBROUTIN      E TO ESTABLISH;	THE INTERFACE TO THE LIBRARY ROUTINE;;	INPUT;	  REGISTERS;		NO INFORMATION CONTAINED IN THE REGISTERS;		ALL REGISTERS ARE VOLATILE;	  MAPPING REGISTERS;		.MRSCB SET TO VIEW THE SCB FOR THE PARTICULAR;		       THREAD;		ALTHOUGH THE FQM MAY BE MAPPED IN .MRINB UPON;		       ENTRY THE .MRINB IS NOT VALID UPON EXIT;		ALL OTHER MAPPING REGISTERS THAT MAY BE USED ARE;		       PRESERVED AND RESTORED UPON EXIT;	  SCB CELLS;		S.INBF - KT11 POINTER TO FQM PART OF MESSAGE;		S.INID - KT11 POINTER TO MCB       PART OF MESSAGE;;	OUTPUT;	  SCB CELLS;		S.INBF - 0;		S.INID - 0		.PAGE		.ENABL	LSB.RMSG:: MOV	S.INID+.WNSCB,R3	;KT11 OF MCB PART	BEQ	10$			;NO MESSAGE TO RELEASE	CALL	..DSMS			;RELEASE MESSAGE	CLR	S.INID+.WNSCB		;CLEAR POINTERS	CLR	S.INBF+.WNSCB		;10$:	RETURN	.DSABL	LSB         .PAGE	.SBTTL	.RSFRM  (RELEASE FORMAT RECORD INTERFACE);  ;  .RSFRM - RELEASE FORMAT RECORD SUBROUTINE;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR;	THREAD OF THE TIM TASK TO RELEASE THE FORMAT RECORD;;	AS A RESULT OF CALLING THIS       SUBROUTINE, THE FORMAT ;	RECORD HAS BEEN RELEASED BACK TO THE CACHE AND ;	THE POINTERS IN THE SCB TO THE RECORD HAVE BEEN;	CLEARED.;;	THE ACTUAL RELEASE OF THE FORMAT RECORD IS ;	PERFORMED WITHIN THE CACHE SUBROUTINE.;;	IT IS THE FUNCTION OF THIS SUBROUTINE TO ;	ESTABLISH THE INTERFACE.;;	UPON ENTRY;	   REGISTERS;		NO INFORMATION;		ALL REGISTERS VOLATILE;	   MAPPING REGISTERS;		.MRSCB SET TO VIEW THE SCB FOR THE PARTICULAR;		       THREAD;		ALL MAPPING REGISTERS THAT ARE USED ARE ;		PRESERVED AND RESTORED       UPON EXIT;;	   SCB CELLS;		S.CFBF - KT11 POINTER TO CURRENT FORMAT RECORD;		S.CFID - BUFFER ID FOR THE FORMAT RECORD;;	UPON EXIT;	   SCB CELLS;		S.CFBF - 0;		S.CFID - 0	.PAGE	.ENABL	LSB.RSFRM:: MOV 	S.CFID+.WNSCB,R1	;BUFFER ID IN R1	BEQ	10$			;NONE SO EXIT	CALL	$RTBL			;RELEASE THE RECORD	CLR	S.CFID+.WNSCB		;CLEAR THE POINTERS	CLR	S.CFBF+.WNSCB		;10$:	RETURN			.DSABL	LSB		.PAGE	.SBTTL	.RNTB  (RELEASE NETWORK BUFFERS);  .RNTB - TO RELEASE NETWORK BUFFERS;;	THIS SUBROUTINE IS CALLED TO RELEASE NETWORK BUFFERS      ;			R0 - SMALL BUFFER ADDRESS;			R1 - LENGTH OF SMALL BUFFER IN BYTES ;	NETWORK SEGMENT DESCRIPTOR BLOCK STRUCTURE;		WORD 0 - KT11 OF NETWORK SEGMENT;		WORD 1 - BIAS;		WORD 2 - # OF BYTES IN SEGMENT;;;;;	RNTBI;	   THIS IS A SECOND ENTRANCE TO THE SUBROUTINE;		WHEN THE INFORMATION IS CONTAINED IN ;		S.INBF AND S.INID OF THE SCB AND THE CELLS;		THEMSELVES ARE TO BE CLEARED. THE ASSOCIATED;		SDBS WILL ALSO BE RELEASED.		.PAGE	.ENABL	LSB.RNTBI::  MOV	S.INBF+.WNSCB,R0		;GET BUFFER ADDRESS	BEQ	60$				;NONE	MOV	S.      INID+.WNSCB,R1		;NUMBER OF SDBS	MUL	#6,R1				;CONVERT TO BYTES	CLR	S.INBF+.WNSCB	CLR	S.INID+.WNSCB	MOV	#-1,-(SP)			;FLAG RELEASE OF SDBS	BR	10$				;SKIP.RNTB::	CLR	-(SP)				;FLAG NO SDBS10$:	RENB$S	#TNQLUN,,,@$TTBAD,,<R0,R1>	  ;RELEASE BUFFERS	CALL	CHKERR	BCS	10$	TST	(SP)+				;RELEASE SDBS	BEQ	60$				;NO	CALL	.RSDB				;RELEASE THEM60$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.RSDB	(RELEASE SMALL BUFFER);  .RSDB - RELEASE A SMALL BUFFER USED FOR SDBS;;	THIS SUBROUTINE IS CALLED  TO RELEASE THE SMALL BUFFER;	USED TO H      OLD THE SPECIFIED NUMBER OF NETWORK SDBS;;	INPUT;		R0 - ADDRESS OF THE BUFFER;		R1 - LENGTH IN BYTES OF THE BUFFER;;	THE BUFFER IS RELEASED BACK TO THE .NPOLH LISTHEAD;	.NPOLS BUFFER VIA A CALL TO ..DLC1 ;	THIS BUFFER HAS BEEN ALLOCATED VIA A CALL TO;	THE SUBROUTINE .GNTB .  BUFFER HAS BEEN ALLOCATED;	IN 6 BYTE GRANULARITY;	.PAGE	.ENABL	LSB.RSDB:: TST	R0			;ANY	BEQ	10$			;NO	MOV	#.NPOLH,R3		;LISTHEAD	CALL	..DLC1			;DEALLOCATE10$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.SATAM  (OUTPUT TO THE TERMINAL);  .SATAM - SEN      D TO ATS OR OUTPUT TO THE TERMINAL;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD;	OF THE TIM TASK TO SEND THE ATS PACKETS TO;	THE TERMINAL;;	INPUT;		R0 - INPUT BUFFER ADDRESS (SDBs);		R1 - NUMBER OF BYTES OF BUFFER (SDBs);	;	OPERATION;		UPON ENTRY ;		A XMTD$ IS EXECUTED;		IF THE DIRECTIVE IS ACCEPTED THE THREAD IS;		SUSPENDED UNTIL ATS RETURNS;		THE ACKNOWLEDGE OF BUFFER ACCEPTED;		A RETURN IS EFFECTED;	A SECOND ENTRANCE EXISTS FOR USE WHEN BROADCASTING;;	INPUT AT .SATBR;		R0 - SMALL BUFFER ADDRESS      ;		R1 - #SDBS (*6);;	.PAGE	.ENABL	LSB.SATAM::					;				*** SKH001	CMPB	#BF.ABO,S.TFUN+.WNSCB		;ABORT TIME	BNE	.SATBR	TST	(SP)+	JMP	.BFABO.SATBR::					;				*** SKH001	INC	S.TOTN+.WNSCB			;BUMP NUMER OF MESSAGE OUTPUT	MOVB	S.ULA+.WNSCB,R4			;ULA8$:	XMTD$S	#TNQLUN,,,@$TTBAD,#$ASTSV,<R0,R1,R4>	CALL	CHKERR	BCS	8$	CALL	.SPND			;SUSPEND	MOV	@$TTBAD,R3	CMPB	#IS.SUC,(R3)	BEQ	20$	MOV	#TE.TRR!TS.BYT!TS.SCB,R5	;SET ERROR	MOV	(R3),.COMSB+ERRDAT		;SAVE EROR NUMBER	BR	.SDMER				;ABORT				*** SKH011						;				*** SKH00120$      :	RETURN	.DSABL	LSB         .PAGE	.SBTTL	.SDMSG  (SEND FQM INTERFACE);  .SDMSG - SEND A MESSAGE (FQM) SUBROUTINE;;	THIS SUBROUTINE IS CALLED WITHIN A PARTICULAR THREAD;	OF THE TIM TASK TO SEND A MESSAGE (FQM);;	AS A RESULT OF CALLING THIS SUBROUTINE THE FQM IS ON ITS;	WAY INTO THE SYSTEM AND THE POINTERS WITHIN THE SCB ARE;	CLEARED;;	MOST OF THE REQUISITE PROCESSING IS PERFORMED;	WITHIN THE LIBRARY ROUTINE ..SDMS;;	IT IS THE FUNCTION OF THIS SUBROUTINE TO ESTABLISH ;	THE INTERFACE TO THE LIBRARY ROUTINE;;	I      NPUT;	  REGISTERS:;		NO INFORMATION;		ALL REGISTERS ARE VOLATILE;	  MAPPING REGISTERS;;		MRSCB SET TO VIEW THE SCB FOR THE PARTICULAR THREAD;		ALL MAPPING REGISTERS USED ARE PRESERVED AND;		RESTORED UPON EXIT;	  SCB CELLS:;		S.OTID - MESSAGE ID;		S.OTBF - KT11 POINTER TO THE FQM SECTION OF THE;		         MESSAGE;		S.CFNA - DISPLACEMENT TO CURRENT FORMAT RECORD SECTION;		S.CTDB - 1ST WORD KT11 ADDRESS OF TDB;		         2ND WORD DISPLACEMENT IN BLOCK;	OTHER VALUES:;		Y.DNO - CONSTANT WITHIN A FORMAT RECORD SE      GMENT;		        THAT EQUALS START OF MESSAGE DESTINATION;			INFORMATION WITHIN THE SEGMENT;;	NOTE: THE TDB CONTAINS THE ROUTE LIST REQUIRED FOR THE ;		LIBRARY ROUTINE. THEREFORE, THE MAPPING REGISTER;		FOR THE TDB MUST BE UISAR4 SINCE UISAR0 AND UISAR1;		ARE APPLICATION COMMON; UISAR2 IS THE LIBRARY;;		UISAR3 IS THE SCB AND UISAR5 AND UISAR6 ARE THE;		TIM CODE!!!!!;;	OUTPUT:;	  SCB CELLS:;		S.OTID - 0;		S.OTBF - 0		.PAGE		.ENABL	LSB.SDMSG:: CMPB	#BF.ABO,S.TFUN+.WNSCB		;ABORT CODE	BNE	5$	TST	(SP)+	JMP	.BFABO      5$: 	MOV	@#.MRTDB,-(SP)		;SAVE THE TDB WINDOW	MOV	S.CTDB+.WNSCB,@#.MRTDB	;LOOK AT TDB	MOV	#.WNTDB,R1		;COMPUTE V.A. OF ROUTE LIST	ADD	S.CTDB+2+.WNSCB,R1	;DISPL IN BLOCK	ADD	S.CFNA+.WNSCB,R1	;ADD FORMAT SEGMENT	ADD	#Y.DNO,R1		;ROUTE INFORMATION	MOV	S.OTID+.WNSCB,R2	;MESSAGE ID	MOV	@#.MRSCB,R3		;KT-11 ADDR. OF SCB	MOV	S.CCB+.WNSCB,R4		;CCB POINTER	CALL	..SDMS			; GO SEND IT	BCS	10$			 ;SKIP IF ERROR	MOV	(SP)+,@#.MRTDB		;	CLR	S.OTID+.WNSCB		;CLEAR MESSAGE ID	CLR	S.OTBF+.WNSCB		;CLEAR FQM ADDRESS	RETURN10$:	MOV      	#TE.SDM!TS.BYT!TS.SCB,R5 ;SET ERROR CODE	MOV	R1,.COMSB+ERRDAT	;SET ERROR.SDMER:				;					*** SKH011	MOV	#2,R0			;1 WORD					*** SKH007	JMP	ABTER0			;LOG AND ABORT	.DSABL	LSB.PAGE	.SBTTL	WAIT SUBROUTINES (.SPND AND .WAITD);;  .SPND  -  SUSPEND SUBROUTINE;  .WAITD - WAIT SUBROUTINE;;;   THESE ROUTINES WILL ISSUE THE APPROPRIATE WAIT CALLS ($TSUSP$ OR $DELAY).;   WHEN THEY WAKE UP THEY WILL CHECK TO SEE IF THE THREAD;   SHOULD BE TERMINATED. IF NOT THEY RETURN.;   IF YES THEY MAKE SURE THAT NOTHING ELSE WILL       RESUME THEM AND;   THEN THEY ISSUE THE ABORT CALL. FINALLY THEY TERMINATE THEMSELVES.;;	NOTE: THE SUSPEND ROUTINE CHECKS INITIALLY TO SEE IF A 			*** SKH007;	CLOSE THREAD IS WAITING FOR THIS THREAD TO TERMINATE.			*** SKH007;	IF SO, THE THREAD DOESN'T EVEN BOTHER TO SUSPEND.			*** SKH007;.PAGE	.ENABL	LSB.WAITD::	$DELAY				;DELAY	BR	10$			;SKIP TO COMMON PROCESSING.SPND::						TST	S.CTRD+.WNSCB		;IS A CLOSE THREAD WAITING?		*** SKH007	BNE	20$			;YES,DON'T BOTHER TO SUSPEND		*** SKH007	BIS	#SP.SPN,S.FLGS+.WNS      CB	;SHOW TERMINAL AS SUSPENDED		*** SKH007	TSUSP$				;SUSPEND	BIC	#SP.SPN,S.FLGS+.WNSCB	;CLEAR SUSPENDED STATE			*** SKH00710$:					;					*** SKH007    	TST	S.CTRD+.WNSCB		;TERMINATING	BEQ	50$			;NO20$:	MOV	$TTBAD,R1		;GET TTB	MOV	(R1),R0			;AND CBA	ADD	#C.LINK,R0		;POINT TO LINK WORD	ADD	#T.FP,R1		;POINT TO RESUME LIST HEAD	CALL	CHKQUE			;CHECK IF IN QUEUE	BCS	30$			;WE ARE	MOV	$TTBAD,R1		;GET TTB AGAIN	ADD	#T.QCBA,R1		;GET DELAY QUEUE LIST HEAD	CALL	CHKQUE			;ARE WE IN THIS QUEUE	BCC	40$			;NO30$:	TSUSP$	      			;WAIT TILL ENTRY COMES UP	BR	20$			;TRY AGAIN40$:	$DELAY				;ALLOW ASTS TO COMPLETE	MOV	$TTBAD,R0		;GET TTB POINTER	CMPB	T.FLG(R0),#TF.MRK	;WAKE UP FROM DELAY?	BNE	30$			;NO. GO WAIT FOR IT	CALL	.CCLTA			;CLOSE THE TRANSACTION	BIT	#SP.PWF,S.FLGS+.WNSCB	;POWERFAIL?				*** SKH002	BNE	45$			;YES, DON'T RELEASE TDB YET		*** SKH002	CALL	.CCLTC			;CLEAN UP THE SCB			*** SKH00245$:					;					*** SKH002	MOV	S.CTRD+.WNSCB,R0	;GET CBA OF THE INITIATOR	CLR	S.CTRD+.WNSCB		;RESET THE FLAG	TRESM$	R0			;RESUME THE CLOS      E THREAD	JMP	.RCXB			;TERMINATE THIS THREAD50$:	RETURN				;CONTINUE	.DSABL	LSB; CHKQUE - QUEUE CHECKING ROUTINE;;	INPUT;		R0 = CBA;		R1 = QUEUE LIST HEAD;;	OUTPUT;		C CLEAR IF ENTRY NOT FOUND;		C SET IF ENTRY FOUND;CHKQUE:10$:	MOV	(R1),R1			;GET NEXT ENTRY	CLC				;ASSUME LAST	BEQ	20$			;FINISHED IF NO MORE	CMP	R1,R0			;IS THIS OUR ENTRY	BNE	10$			;NO. LOOP	SEC				;YES. SET FLAG20$:	RETURN.PAGE.SBTTL	.CTRD	CLOSE THREAD ROUTINE;;.CTRD - THIS ROUTINE WILL CLOSE DOWN A THREAD AND; ABORT ANY ACTIVE TRANACTIONS O      NT IT.;; THIS THREAD CHECKS IF THE THREAD TO BE CLOSED IS SUSPENDED			*** SKH007; (IN THE ROUTINE .SPND). IF IT IS, IT RESUMES THE SUSPENDED THREAD.		*** SKH007;	; IF THE THREAD TO BE CLOSED IS NOT SUSPENDED, THIS THREAD SIMPLY		*** SKH007; 'NOTIFIES' THE OTHER THREAD THAT A CLOSE IS WAITING (BY STORING		*** SKH007; AN ADDRESS IN S.CTRD), AND SUSPENDS ITSELF. EVENTUALLY THE 			*** SKH007; THREAD TO BE CLOSED WILL RECOGNIZE THE WAITING CLOSE THREAD			*** SKH007; AND RESUME THIS THREAD.							*** SKH007;;.CTR   ˜  D::		MOV	S.THRD+.WNSCB,R0	;IS THERE AN ACTIVE THREAD?		BEQ	20$			;NO, EXIT				CMP	R0,@$TTBAD		;IS IT THIS THREAD?			BEQ	20$			;YES, EXIT			MOV	@$TTBAD,S.CTRD+.WNSCB	;PUT CURRENT CBA IN SCB			*** SKH007	BIT	#SP.SPN,S.FLGS+.WNSCB	;IS TERMINAL SUSPENDED?			*** SKH007	BEQ	10$			;NO, SKIP	TRESM$	R0			;RESUME STATION THREAD10$:					;					*** SKH007	TSUSP$				;SUSPEND UNTIL STATION IS TERMINATED20$:	RETURN	.END ˜         u~ÌkQÁ› 8$        .TITLE	TIMACT.IDENT	"V1.0C";;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	TIMACT;; VERSION:	001;; AUTHOR:	AUDREY R.REITH;		GILBERT WOLSKY;; DATE:		NOV 9,1978;	.PAGE;;;;;	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----      ------;;	1.0C	15-JAN-79	S.K. HARRIS	SKH001 = SPR #21643.03;	1.0C	22-FEB-79	S.K. HARRIS	SKH003 = SPR #T207789;	1.0C	15-MAR-79	S.K. HARRIS	SKH007 = SPR #22459??;	1.1	2-MAY-79	S.K. HARRIS	SKH012 = FIX FOR LARGE FORM;;;	.PAGE;  TIMACT - TIM PROCESSING SUBROUTINES;;	THIS COLLECTION OF SUBROUTINES IS CALLED WITHIN A ;	PARTICULAR THREAD OF THE TIM TASK TO PROVIDE;	ADDITIONAL PROCESSING OF THE ATS OUTPUT AND/OR;	THE FORMATION OF THE FQM.;;	THERE ARE THREE MAIN ENTRIES TO THIS COLLECTION;	DEPENDING ON THE OPERATION       BEING PERFORMED.;	THESE ENTRIES ARE USED TO ESTABLISH THE ;	ENVIRONMENT FOR THE MAIN PROCESSING ROUTINES.;;	THESE ENTRIES ARE:;		.TMARO - TO PROCESS THE OUTPUT FOR ATAM;		.TMARR - TO PROCESS THE REPLY FOR ATAM;		.TMARF - TO CREATE THE FQM;;	THE COMMON ROUTINE IS:;		.TMARD - WHERE ALL POINTERS HAVE BEEN;		         ESTABLISHED AND THE MAIN PROCESSING;		         IS PERFORMED	.PAGE	.MCALL	TIMDF$,FRMDF$,ACTDF$,FQMDF$,TNXDF$,TMEDF$,ATSDF$	.MCALL	TTRMN$,$DELAY	.MCALL	GTIM$S	TIMDF$	FRMDF$	ACTDF$	FQMDF$	TNXDF$	TMEDF      $	ATSDF$	.PAGE	.SBTTL	.TMARO/.TMARR   (PREPARE OUTPUT FOR ATS);  .TMARO - PREPARE OUTPUT FOR ATS;  .TMARR - PREPARE REPLY FOR ATS;;	THESE TWO SUBROUTINES PREPARE THE OUTPUT PACKETS FOR ATS;	  .TMARO USES THE OUTPUT SEGMENT OF THE FORMAT RECORD;	  .TMARR USES THE SELECTED REPLY SECTION OF THE FORMAT RECORD;		AND ITS ACCOMPANYING TIM ACTION CODES;;	INPUT;	  .TMARO;		REGISTERS CONTAIN NO INFORMATION;		SEE BELOW FOR DISCUSSION OF SCB CELLS AND;		MAPPING REGISTERS;	  .TMARR;		R0 - DISPLACEMENT IN FORMAT RECORD T      O ATS REPLY SEGMENT;		R2 - # OF BYTES IN ATS REPLY SEGMENT;;	SCB CELLS (FOR BOTH ENTRIES EXCEPT AS NOTED);		S.OTBF - 0;		S.OTID - 0;		S.CTBF - KT11 VALUE FOR FORMAT RECORD;		S.CTID - BUFFER ID FOR FORMAT RECORD;		S.CFCD - 0 FOR .TMARO;		         DISPLACEMENT TO TIM CODES FOR .TMARR;		S.FFRW - 0 FOR .TMARO;		         FLAG WORD FROM REPLY SECTION;		S.INCD - 0;		S.OTCD - 0;		S.INBF - MAY BE 0 OR CONTAIN THE KT11 VALUE FOR AN FQM;		         IF THERE IS ONE;		S.INID - DEPENDS ON S.INBF;;	MAPPING REGISTERS;		.MRS      CB - THE SCB FOR THE PARTICULAR THREAD OF THE TIM TASK;		.MRFRC - THE FORMAT RECORD IF ENTRY AT .TMARR;	  ALL MAPPING REGISTERS EXCEPT .MRSCB AND .MRCM0 MAY BE CHANGED;; ********.MRLIB FOR THE TPM LIBRARY IS RESTORED CORRECTLY ;		UPON EXIT; ************CAVEAT;	MUCH OF THE CODE IN THIS MODULE TIMACT RUNS WITHOUT THE ;	LIBRARY VISIBLE. THEREFORE, WHENEVER IT IS NECESSARY , AS;	IN .TRTYP, TO CALL A LIBRARY ROUTINE THE MAPPING;	REGISTER  (.MRLIB) IS SAVED AND RESTORED.;;	OPERATION OF THE .TMARO PORTION;		THE FO      RMAT RECORD IS MAPPED ONTO;		THE OUTPUT POINTER IS SAVED IN S.CFCD;		THE FLAGS WORD OF THE OUTPUT SECTION IS ;		  SAVED IN S.FFRW;		THE DISPLACEMENT TO THE START OF THE ATS SECTION IN R0;		THE # OF BYTES IN THE ATS SECTION IN R2;		CONTROL FALLS INTO THE .TMARR ENTRY POINT;;	COMMON EXECUTION (ALSO .TMARR ENTRY);;	1. S.STAT IS SET TO SS.PQM (ALTHOUGH THERE MAY NOT BE;	   AN FQM THIS IS DONE BECAUSE OF SUBSEQUENT TMARD PROCESSING);	   A TEST IS MADE TO ENSURE AN FQM IS PRESENT IF REQUIRED;	   AND IF SO A DISPL      ACEMENT FOR THE HEADER IS SET IN S.INCD;	   AND THE FQM IS MAPPED ONTO;	2. THE TIM CODE SECTION POINTER IN S.CFCD IS;	   INCREMENTED BEYOND THE FLAG WORD;	3. IF THE FS.NOE FLAG IN S.FFRW IS NOT SET, INDICATING;	   THAT INPUT COMMAND IS CONTAINED WITHIN THE SEGMENT;	   THEN F.MSZ (MAX #OF BYTES FOR INPUT ) IS FETCHED FROM;	   THE FORMAT RECORD A CALL TO .CALINB MADE TO COMPUTE;	   THE EQUIVALENT # OF SEGMENTS WHICH IS STORED IN S.NNBS;	   FOR LATER USE BY INDTRD;	   IF FS.NOE IS SET THEN ONE SEGMENT IS ESTAB      LISHED IN;	   S.NNBS TO ALLOW FOR FUNCTION KEY INPUT;	4. THE # OF NETWORK SEGMENTS REQUIRED FOR THE OUTPUT;	   IS COMPUTED BY A CALL TO .CALINB AND SAVED IN S.OTID;	5. THE LIBRARY IS REMAPPED THE ULA FETCHED AND A CALL TO;	   MADE TO .GSDB TO GET THE SMALL BUFFER AND A CALL TO;	   .GNTB MADE TO GET THE NETWORK BUFFERS;	6. IF NOT AVAILABLE THE FORMAT RECORD IS RELEASED (.RSFRM);	   THE FQM IF PRESENT IS UNLOCKED (.UNMSG) A CALL MADE TO .QNTB;	   TO QUEUE AN ENTRY FOR NETWORK BUFFERS AND SUSPEND THE THREAD;	         UPON RESUMPTION THE FORMAT RECORD IS REFETCHED (.GFRMT);	   ALSO THE FQM IF PREVIOUSLY PRESENT (.GMSG) AND THE;	   # OF BUFFERS REQUIRED AND A FLAG SET INDICATING THE THREAD;	   HAS BEEN RESUMED AND CONTROL RETURNS TO TRY AGAIN TO GET;	   THE BUFFERS;	7. IF THE SEGMENTS ARE AVAILABLE  THE ADDRESS OF THE BUFFER;	   CONTAINING THE SEGMENT DESCRIPTOR BLOCKS (SDB) IS SAVED;	   IN S.OTBF;	8. THE FORMAT RECORD IS REMAPPED ( THIS IS THE SAME AS THE;	   LIBRARY MAPPING REGISTER);	9. THE # OF BYTES IN THE FORMAT R      ECORD TO BE COPIED AND THE;	   STARTING ADDRESS IN THE RECORD ARE FETCHED A CALL TO INOUT;	   RESULTS IN THE DOP HEADER BEING ESTABLISHED IN THE FIRST;	   SEGMENT AND THE SECTIONS OF THE RECORD BEING COPIED TO THE;	   DISJOINT NETWORK SEGMENTS;        10. EXIT IS MADE TO TMARD FOR COMMON PROCESSING;;   NOTE: THE SDBS HAVE BEEN MODIFIED AS FOLLOWS AS A RESULT;	OF THIS PROCESSING THEY ARE REESTABLISHED AT THE END OF TMARD;	VIA A CALL TO CLEAN;	THE BIAS FIELD OF THE FIRST SEGMENT HAS;	BEEN INCREMENTED BEYOND T      HE DOP;	ALL COUNT FIELDS HAVE BEEN ADJUSTED TO CONTAIN VALUES;	THAT REPRESENT THE HIGHEST ABSOLUTE OFFSET FOR THE ATS OUTPUT;	THAT IS CONTAINED IN THE PARTICULAR SEGMENT	.PAGE	.ENABL	LSB.TMARO::CALL	.RETDB				;RELEASE THE TDB	MOV	S.CFBF+.WNSCB,@#.MRFRC		;LOOK AT FORMAT RECORD	MOV	#77406,@#.DRFRC			;	MOV	F.OUT+.WNFRC,R0			;GET TIM POINTER	MOV	.WNFRC(R0),S.FFRW+.WNSCB	;SAVE THE FLAG WORD	MOV	R0,S.CFCD+.WNSCB		;SAVE TIM POINTER	MOV	#F.ATST,R0			;ATS START DISPLACEMENT	MOV	F.ATSZ+.WNFRC,R2		;SIZE IN BYTES;.TMAR      R::ADD	#2,S.CFCD+.WNSCB		;BUMP BEYOND FLAG WORD	MOVB	#SS.PQM,S.STAT+.WNSCB		;ENSURE STATE IS CORRECT	TST	S.INBF+.WNSCB			;YES IS THERE ONE	BEQ	5$				;NO ERROR	MOVB	#10,S.INCD+.WNSCB		;YES SET HEADER	MOV	S.INBF+.WNSCB,@#.MRINB		;LOOK AT IT5$:	MOV	R0,-(SP)			;SAVE DISPLACEMENT	MOV	R2,-(SP)			;NUMBER OF BYTES	MOV	F.FQMZ+.WNFRC,S.CFSZ+.WNSCB	;SAVE FQM SIZE	MOV	#1,R1				;DEFAULT TO 1	BIT	#FS.NOE,S.FFRW+.WNSCB		;INPUT POSSIBLE	BNE	10$				;NO	MOV	F.MSZ+.WNFRC,R1			;GET POSSIBLE INPUT MAX	CALL	.CALIB				;CALCULATE       # SEGMENTS		*** SKH01210$:	MOVB	R1,S.NNBS+.WNSCB		;SAVE IT	CLR	R5				;INITIALIZE BYTE COUNT		*** SKH001	CLR	R2				;INITIALIZE BUFFER COUNT	*** SKH001	MOV	2(SP),R4			;POINT TO ATS SECTION		*** SKH001	ADD	#.WNFRC,R4			;MAKE IT A VIRTUAL ADDRESS	*** SKH00120$:						;				*** SKH001	INC	R4				;SKIP THE HEADER		*** SKH001	CALL	EXTCNT				;GET THE EXTENDED COUNT		*** SKH001	ADD	R1,R4				;POINT TO NEXT HEADER		*** SKH001	ADD	#3,R1				;ADD HEADER AND COUNT FIELDS	*** SKH001						;TO TOTAL			*** SKH001	ADD	R1,R5				;A      DD TO RUNNING COUNT		*** SKH001	CALL	.CALNB				;GET NUMBER OF BUFFERS		*** SKH001	ADD	R1,R2				;ADD TO RUNNING COUNT		*** SKH001	CMP	R5,(SP)				;DONE?				*** SKH001	BLT	20$				;NO				*** SKH001	MOV	R2,S.OTID+.WNSCB		;YES, SAVE # SDBS		*** SKH001	MOV	R2,R1				;COPY NUMBER TO R1		*** SKH001	MOV	.LIBAR,@#.MRLIB			;LOOK AT LIBRARYTRYOV:	CALL	.GSDB				;GET SMALL BUFFER	BCC	25$				;OKAY	CLR	R0	BR	55$25$:	CALL	.GNTB				;GET NET BUFFER	BCS	55$				;DIDNT GET30$:	MOV	R0,S.OTBF+.WNSCB		;SAVE BUFFER ADDRESS	MOV	R0,S.OT      B2+.WNSCB		;SAVE AS CURRENT POINTER ALSO	MOV	S.CFBF+.WNSCB,@#.MRFRC		;RELOOK AT FORMAT RECORD	MOV	#77406,@#.DRFRC	MOV	(SP)+,R0			;GET # OF BYTES	MOV	(SP)+,R4			;START OF ATS SECTION	ADD	#.WNFRC,R4			;MAKE IT V.A.	CALL	INOUT				;DO THE MOVE	JMP	.TMARD				;COMMON PROCESSING	.PAGE;;	UNABLE TO GET NETWORK BUFFERS;55$:	CALL	.RSDB				;RELEASE TDB IF THERE IS ONE	MOV	S.CFID+.WNSCB,R1		;GET BDB POINTER	CALL	$ACBD				;GET BDB ADDRESSES	MOV	R4,@#.MROTB			;MAP IT	MOV	B.SIZE+.WNOTB(R5),-(SP)		;SAVE BUFFER SIZE	MOV	B.LV      BN+.WNOTB(R5),-(SP)		;AND DISC ADDRESS	CLR	-(SP)				; DOUBLE PRECISION	MOVB	B.HVBN+.WNOTB(R5),(SP)		;ONLY 8 HIGH ORDER BITS70$:	CALL	RELRES				;RELEASE HELD RESOURCES	MOV	4(SP),R1			;GET BUFFER SIZE	MOV	SP,R0				;POINTER TO ADDRESS	MOV	#FRMLUN,R3			;LUN	CALL	$GTBL				;RESTORE FORMAT RECORD	BCS	80$				;SKIP IF ERROR	MOV	R0,S.CFBF+.WNSCB		;SAVE BUFFER ADDRESS	MOV	R1,S.CFID+.WNSCB		;AND BDB	ADD	#6,SP				;CLEAN UP STACK	MOV	S.OTID+.WNSCB,R1		;GET NUMBER OF SEGMENTS	BR	TRYOV				;TRY AGAIN80$:	CMP	#ER.IOX,R1	BNE	      70$	JMP	IOXER	.DSABL	LSB	.PAGE;  INOUT ;	THIS SUBROUTINE SETS UP THE ATS OUTPUT SEGMENTS,;	ESTABLISHES IN THE FIRST SEGMENT THE DOP ;	THE SECTION OF THE FORMAT RECORD THAT IS BEING REFERENCED;	IS COPIED INTO THE ATS SEGMENTS AND THE SDBS SET UP TO REFLECT;	THE VALUE FOR THE HIGHEST OUTPUT BYTE OFFSET IN THE;	SEGMENT	.ENABL	LSBINOUT:	MOV	R4,-(SP)			;SAVE ADDRESS OF ATS SECTION	*** SKH001	CLR	R5				;INITIALIZE RUNNING COUNT	*** SKH001	MOV	S.OTBF+.WNSCB,R3		;GET SDB ADDRESS		*** SKH00110$:	MOV	(R3),@#.MROTB			      ;MAP TO BUFFER			*** SKH001	MOV	2(R3),R2			;SET UP ADDRESS			*** SKH001	ADD	#.WNOTB,R2			;MAKE IT A VIRTUAL ADDRESS	*** SKH001	MOVB	#DOP,(R2)+			;PUT IN DOP CODE		*** SKH001	MOVB	S.BTN+.WNSCB,(R2)+		;ADD BTN			*** SKH001	MOVB	S.BTN+1+.WNSCB,(R2)+		;2 BYTES OF BTN			*** SKH001	ADD	#3,2(R3)			;ADJUST BIAS			*** SKH001	SUB 	#3,4(R3)			;CORRECT COUNT			*** SKH001	INC	R4				;SKIP HEADER			*** SKH001	CALL	EXTCNT				;GET THE COUNT			*** SKH001	ADD	R1,R4				;R4 POINTS TO NEXT COUNT	*** SKH001	ADD	#3,R1				;CORRECT       FOR HEADER AND COUNT 	*** SKH00120$:	SUB	4(R3),R1			;DECREMENT COUNT FOR THIS BUFFER*** SKH001	BLE	30$				;SKIP IF LAST BUFFER		*** SKH001	ADD	4(R3),R5			;CORRECT RUNNING COUNT		*** SKH001	MOV	R5,4(R3)			;AND PUT IT IN SDB		*** SKH001	ADD 	#6,R3				;POINT TO NEXT SDB		*** SKH001	BR	20$				;LOOP				*** SKH00130$:	ADD	4(R3),R1			;CORRECT THE COUNT		*** SKH001	ADD	R1,R5				;CORRECT RUNNING TOTAL		*** SKH001	MOV	R5,4(R3)			;PUT IN SDB			*** SKH001	ADD	#6,R3				;POINT TO NEXT SDB		*** SKH001	CMP	R5,R0				;COMPAR      E RUNNING TOTAL TO	*** SKH001						;ACTUAL TOTAL			*** SKH001	BLT	10$				;GO BACK FOR NEXT PACKET	*** SKH001	MOV	(SP)+,R4			;RESTORE START OF ATS SECTION	*** SKH001	MOV	#S.OTBF+.WNSCB,R2		;GET DISPLACEMENT TO BUFFER	*** SKH001	CLR 	R1				;INITIALIZE OFFSET		*** SKH001	CLR	R5	CALL	GETMAP				;THIS MAPS SEGMENTS	MOV	(R2),@#.MROTB			;LOOK AT SEGMENT	ADD	#.WNOTB,R1			;GET V.A. OF BUFFER	ADD	R0,R5				;ACCUM FOR TEMP COUNT	MOV	R5,4(R2)			;SAVE AS COUNT155$:	MOVB	(R4)+,(R1)+			;MOVE THEM	SOB	R0,155$				;	RETURN				      	;RETURNS THROUGH COROUTINE	.DSABL	LSB	.PAGE	.SBTTL	.TMARF  (PREPARING FQMS FROM ATS INPUT);;  .TMARF - PROCESSING ATS INPUT;;	THIS SUBROUTINE PROCESSES THE ATS INPUT FORMING FROM;	MOST INPUT THE FQMS THAT ARE TO BE SENT TO THE TSTS;;	INPUT;		REGISTERS CONTAIN NO INFORMATION;	  SCB CELLS;		S.OTBF - MAY BE 0 OR KT11 VALUE FOR WHERE FQM TO BE CREATED;		S.OTID - DEPENDS ON S.OTBF;		S.CFBF - KT11 VALUE FOR FORMAT RECORD;		S.CFID - BUFFER ID FOR FORMAT RECORD;		S.CFCD - 0;		S.INBF - ADDRESS OF BUFFER CONTAINING       SEGMENT DESCRIPTOR;		         BLOCKS (SDB)  REPRESENTING THE ATS INPUT;		S.INID - # OF SDB ENTRIES IN BUFFER POINTED TO BY S.INBF;		S.INCD - DISPLACEMNT TO BE ADDED TO 1ST SEGMENT;			BEYOND THE COMMAND HEADER;	  MAPPING REGISTERS;		.MRSCB - SCB FOR THE PARTICULAR THREAD OF THE TIM TASK;		COMMENTS AND CAVEAT UNDER .TMARO ALSO APPLY HERE;;;;	UPON ENTRY TO .TMARF;		1. THE FORMAT RECORD IS MAPPED ONTO;		2. THE START OF THE TIM CODES FROM THE FORMAT RECORD;		   IS SAVED IN S.CFCD;		A TEST IS MADE TO SEE IF AN FQ      M BUFFER IS PRESENT;		IF NOT A CHECK IS MADE TO ENSURE THAT THE FIRST;		ACTION CODE IS C.TRAN (SELECT A TRANSACTION TYPE);		IF NOT AN ERROR IS PRESENT IN THE FORMAT RECORD.;		IF TRUE THEN CONTROL IS PASSED TO .TMARD;		IF AN FQM BUFFER IS PRESENT IT IS MAPPED INTO THE;		.MROTB MAPPING REGISTER AND CONTROL PASSES TO .TMARD;	.PAGE	.ENABL	LSB.TMARF::  MOVB	#SS.PAT,S.STAT+.WNSCB		;ENSURE STATE CORRECT	 MOV	S.CFBF+.WNSCB,@#.MRFRC		;LOOK AT FORMAT RECORD	MOV	#77406,@#.DRFRC	MOV	F.INPT+.WNFRC,S.CFCD+.WNSCB	;SAVE ST      ART OF TIM SECTION	TST	S.OTBF+.WNSCB			;IS THERE AN FQM	BEQ	60$				;NO ANOTHER CHECK	MOV	S.OTBF+.WNSCB,@#.MROTB		;YES MAP IT	CLRB	S.OTCD+.WNSCB			;CLEAR DISPLACEMENT50$:	JMP	.TMARD				; DO MAIN PROCESSING;60$:	MOV	S.CFCD+.WNSCB,R0		;GET TIM START	CMPB	#C.TRAN,.WNFRC(R0)		;IS FIRST CODE TRANID	BEQ	50$				;YES OKAY;;  	ERROR - C.TRAN NOT FIRST;	MOV	#TE.FCT!TS.SCB,R5	;CODE AND FLAG	JMP	ABTERR	.DSABL	LSB	.PAGE	.SBTTL	.TMARD  (ACTION ROUTINES);   .TMARD - COMMON ACTION ROUTINES;;	THIS IS THE HEART OF THE PROCESS      ING OF THE FORMAT RECORD;	IN THE CREATION OF FQMS AND/OR THE PROCESSING;	OF THE OUTPUT AND/OR REPLY ATS PACKETS;;	INPUT;		REGISTERS;			NO INFORMATION;		MAPPING REGISTERS;			.MRSCB SET TO VIEW SCB;			.MRFRC SET TO VIEW FORMAT RECORD;			.MRCM0 SET TO VIEW APPLICATION COMMON BLOCK 0;			.MRINB - IF PROCESSING INPUT FROM ATS IS;			        ESTABLISHED DYNAMICALLY;			        IF PROCESSING OUTPUT FOR ATS AND;			        THERE IS AN FQM IT IS MAPPED TO THE FQM;			.MROTB - IF PROCESSING OUTPUT FOR ATS IS;			        ES      TABLISHED DYNAMICALLY;			        IF PROCESSING INPUT FROM ATS AND;			        AN FQM IS TO BE CREATED THE FQM IS MAPPED ;;		NOTE THE TERMS INPUT AND OUTPUT BUFFERS ARE EXPRESSED;		RELATIVE TO THIS ROUTINE THAT IS;		WHEN PROCESSING A PACKAGE TO BE SENT TO ATAM;			THE INPUT BUFFER REFERS TO A POSSIBLE FQM;			THE OUTPUT BUFFER REFERS TO THE ATS PACKAGE;		WHEN CREATING AN FQM;			THE INPUT BUFFER REFERS TO THE ATS PACKAGE;			THE OUTPUT BUFFER REFERS TO THE MESSAGE ;			BUFFER FOR THE FQM BEING FORMED;;		AT THE POI      NT OF ENTERING THIS ROUTINE THE LIBRARY;		IS NOT ASSUMED TO BE VISIBLE IN THE MAPPING REGISTERS;		IT IS IMPORTANT THEREFORE THAT ANY ACTION CODE;		PROCESSING OR ERROR HANDLING THAT REQUIRES A LIBRARY;		CALL INSURE THAT THE LIBRARY IS VISIBLE;;		SCB CELLS;			S.CFCD - DISPLACEMENT TO START OF TIM;				 ACTION CODE SECTION;		  OTHER CELLS AS DESCRIBED IN THE OTHER ENTRIES;;	TIM MAY PERFORM A NUMBER OF DIFFERENT TYPES OF OPERATIONS;	UNDER THE DIRECTION OF THE FORMAT RECORD;	THE SELECTION OF THE PARTICULAR OPERAT      ION DEPENDS UPON A CODE;	WITHIN THE TIM SECTION;	THE GENERAL STRUCTURE OF EACH CODE SECTION IS:;		WORD 0 BYTE 0  - CODE;		WORD 0 BYTE 1  - LENGTH IN BYTES OF THE ENTRY;		WHAT FOLLOWS DEPENDS ON THE PARTICULAR CODE;		EACH ACTION SUBROUTINE DESCRIBES ITS EXPECTED;		STRUCTURE AND OPERATION;;	THE MAIN SECTION OF THIS SUBROUTINE CONSISTS OF A ;	"DRIVER" WHICH USES THE PARTICULAR CODE AS A ;	DISCRIMATOR IN THE SELECTION OF THE CORRECT ACTION ROUTINE;;	THE CODE OF C.END WHERE C.END = 0 IS USED AS A TERMINATOR;	AND       CAUSES THE WINDUP OF THE ACTION ROUTINES;	THE WINDUP CONSISTS OF;		ADJUSTING THE SDBS AS REQUIRED SUCH THAT THE BIAS AND ;		COUNT FIELDS ARE CORRECTLY ESTABLISHED;		RESTORING THE MAPPING REGISTERS SUCH THAT;		.MRSCB SET TO VIEW THE SCB;		.MRLIB SET TO VIEW THE LIBRARY ROUTINES;		.MRCM0 SET TO VIEW APPLICATION COMMON BLOCK 0;		ALL OTHER MAPPING REGISTERS ARE UNKNOWN AND NO;		ASSUMPTIONS ARE MADE IN SUBSEQUENT OPERATIONS;	;		THE FORMAT RECORD IS ALSO RELEASED AT THIS POINT;;	UPON ENTRY TO EACH ACTION ROUTINE      ;		R5 POINTS TO THE WORD BEYOND THE CONTROL WORD FOR ;			THE STRUCTURE;	UPON EXIT FROM EACH ACTION ROUTINE;		R5 POINTS TO THE CONTROL WORD OF THE NEXT STRUCTURE;		ALL OTHER REGISTERS ARE VOLATILE	.PAGE	.ENABL	LSB.TMARD:	 MOV	S.CFCD+.WNSCB,R5	;GET TIM CODE DISPLACEMENT	ADD	#.WNFRC,R5		;MAKE IT VIRTUAL ADDRESS10$:	MOVB	(R5),R4			;GET THE CODE	CMPB	#TVSZ,R4		;WITHIN RANGE	BLT	20$			;NOPE ERROR	TST	(R5)+			;BUMP BEYOND CODE	CALL	@.TVECT(R4)		;GO TO ROUTINE	BR	10$			;RETURN AND DO NEXT;;	ERROR TIM CODE OUT OF RA      NGE;CODER:20$:	MOV	R4,.COMSB+ERRDAT	;SEND THE CODE	SUB	#.WNFRC,R5		;GET RID OF DISPLACEMENT	MOV	R5,.COMSB+ERRDAT+2	;SEND THE OFFSET	MOV	#4,R0			;FOUR BYTES OF DATA	MOV	#TE.FAR!TS.SCB!TS.BYT,R5    ;CODE AND FLAG	JMP	ABTER0	.DSABL	LSB.PAGE	.SBTTL	DONE	(FINISH PROCESSING ACTION CODES); DONE - FINISH PROCESSING ACTION CODES;;	THIS SUBROUTINE IS CALLED AS THE LAST ACTION CODE OF TIM;;	IT  CLEANS UP THE TIM PROCESSING AND RETURNS TO THE MAIN CODE;	PROCESSING.;.DONE:	TST	(SP)+			;REMOVE THE RETURN	BIC	#SP.ERR,S.FL      GS+.WNSCB	;BE SURE ERROR FLAG CLEAR	MOV	.LIBAR,@#.MRLIB		;LOOK AT LIBRARY			*** SKH001	CALL	.RSFRM			;RELEASE FORMAT RCORD			*** SKH001	CALL	CLEAN			;CLEAN UP NET BUFS	RETURN				;DONE	.PAGE; CLEAN ;	THIS SUBROUTINE IS CALLED TO REESTABLISH THE CORREDT SDB;	POINTERS IN PREPARATION FOR TRANSMITTING TO ATS OR TO RELEASING;	THE BUFFERS BACK TO ATS	.ENABL	LSBCLEAN::		MOV	.ASR1,@#.MRCM1		;MAKE SURE COMMON IS MAPPED		*** SKH003	CMPB	#SS.PAT,S.STAT+.WNSCB	;ATS INPUT	BEQ	50$			;YES FIX SDBS AS APPROPRIATE	MOV	.LIBAR      ,@#.MRLIB		;LOOK AT LIBRARY			*** SKH001	CALL	.RMSG			;RELEASE THE MESSAGE			*** SKH001	MOV	S.OTBF+.WNSCB,R2	;FIX OUTPUT SDBS	BEQ	60$			;SKIP IF NONE	MOV	S.OTID+.WNSCB,R5	;# OF SDBS10$:	MOV	NTBFSZ,R3		;GET STD COUNT SIZE			*** SKH001	MOV	R2,-(SP)		;SAVE CURRENT SDB POINTER		*** SKH001	MOV	(R2),@#.MROTB		;MAP ONTO OUTPUT BUFFER			*** SKH001	MOV	2(R2),R4		;POINT TO START OF PACKET		*** SKH001	ADD	#.WNOTB+1,R4		;V.A. OF COUNT FIELD			*** SKH001	CALL	EXTCNT			;GET COUNT				*** SKH001	ADD	#6,R1			;CORRECT FOR DO      P AND BTN		*** SKH001	SUB	#3,2(R2)		;CORRECT OFFSET TOO			*** SKH00120$:	DEC 	R5			;COUNT BUFFERS AS PROCESSED		*** SKH001	SUB	R3,R1			;CORRECT COUNT FOR FULL BUFFER		*** SKH001	BLE	30$			;SKIP IF TOO MUCH			*** SKH001	MOV	R3,4(R2)		;SET COUNT TO BUFFER SIZE		*** SKH001	ADD	#6,R2			;POINT TO NEXT SDB			*** SKH001	BR	20$			;LOOP					*** SKH00130$:	ADD	R3,R1			;CORRECT COUNT				*** SKH001	MOV	R1,4(R2)		;PUT IN BUFFER COUNT			*** SKH001	ADD	#6,R2			;POINT TO NEXT SDB			*** SKH001	MOV 	(SP)+,R0		;GET FIRST SDB	      			*** SKH001	BIT	#SP.BRO,S.FLGS+.WNSCB	;ARE WE BROADCASTING?			*** SKH001	BNE	60$			;YES					*** SKH001	MOV	R2,R1			;COPY LAST SDB				*** SKH001		SUB	R0,R1			;CALCULATE LENGTH OF SDB CHAIN		*** SKH001	MOV	.ASR1,@#.MRCM1		;MAKE SURE COMMON IS MAPPED		*** SKH001	CALL	.SATAM			;SEND IT				*** SKH001	MOV	R2,S.OTB2+.WNSCB	;SAVE CURRENT SDB POINTER		*** SKH001	TST	R5			;CHECK SDB COUNT			*** SKH001	BGT	10$			;GO DO NEXT ONE				*** SKH001	MOV	S.OTBF+.WNSCB,R0	;POINT TO START OF SDBS			*** SKH001	MOV	S.OTID+.WNSCB      ,R1	;R1 IS NUMBER OF SDBS			*** SKH001	MUL 	#6,R1			;R1 IS NUMBER OF BYTES OF SDBS		*** SKH001	CALL	.RSDB			;RELEASE SMALL BUFFERS OF SDBS		*** SKH001	CLR	S.OTBF+.WNSCB		;CLEAR POINTER TO SDB			*** SKH001	CLR	S.OTB2+.WNSCB		;CLEAR SECONDARY POINTER (CURRENT)	*** SKH001	CLR	S.OTID+.WNSCB		;CLEAR COUNT OF SDBS			*** SKH001	MOVB	#SS.WTA,S.STAT+.WNSCB	;SET THE STATE				*** SKH001	BR	60$			;					*** SKH00150$: 	MOV	S.INBF+.WNSCB,R2	;ADJUST FOR LATER RELEASE	BEQ	60$	MOV	S.INID+.WNSCB,R4	MOVB	S.INCD+.WNSCB,R0	SUB	      R0,2(R2)		;REMOVE HEADER FROM BIAS55$:	MOV	R3,4(R2)		;SET UP DEFAULT COUNT	SUB	#3,2(R2)		;GET RID OF DIP	ADD	#6,R2	SOB	R4,55$60$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL EXTCNT (EXTENDED COUNT ROUTINE;;;		THIS ROUTINE TAKES A TWO BYTE EXTENDED COUNT;		AND CONVERTS IT INTO A NORMAL INTEGER;;;		INPUT;			R4 POINT TO EXTENDED COUNT;;		OUTPUT;			R4 POINTS TO BYTE BEYOND COUNT;			R1 = COUNT;;;	.ENABL LSBEXTCNT:	MOVB	(R4)+,-(SP)		;GET FIRST BYTE OF COUNT		*** SKH001	MOVB	(R4)+,1(SP)		;AND SECOND BYTE			*** SKH001	ASLB	(SP)      			;GET RID OF SIGN BIT			*** SKH001	ASR	(SP)			;CLOSE IT UP				*** SKH001	MOV	(SP)+,R1		;PUT ANSWER IN R1			*** SKH001	RETURN				;					*** SKH001	.DSABL LSB	.PAGE	.SBTTL	.TVECT (ACTION VECTOR);  TVECT - TRANSFER VECTOR FOR THE VARIOUS ACTION SUBROUTINES;;	EACH OF THE FOLLOWING IS IN THE POSITION CORRESPONDING TO;	ITS EQUIVALENT CODE NUMBER  - THE LABEL FOR THE CODE;	APPEARS IN PARANTHESES IN THE COMMENT FIELD;	NOT ALL THE CODES HAVE BEEN IMPLEMENTED YET AND NOT;	ALL THE CODES TO BE IMPLEMENTED HAVE BEEN DE      FINED;.TVECT: .WORD	.DONE		;FINISHED PROCESSING (C.END)	.WORD	.COPYN		;COPY INTO BUFFER (C.CPY)	.WORD	.GTIME		;GET TIME (C.TIME)	.WORD	.GDATE		;GET DATE (C.DATE)	.WORD	.GTRID		;GET TRAN ID (C.TRID)	.WORD   .GSTID		;GET STATION NAME (C.STID)	.WORD	.USRFN		;USER FUNCTION (C.USER)	.WORD	.USRFN		;NOT USED					*** SKH003	.WORD	.TRTYP		;GET TRANSACTION TYPE (C.TRAN)	.WORD	.GFILL		;FILL CHARACTER (C.FILL)	.WORD	.GLIT		;GET LITERAL (C.LIT)	.WORD	.GTRMN		;GET SPECIFIC TRANSACTION ID NUM (C.TRMN)	.WORD	.GMENU		;GET M      ENU ITEM (C.MENU)	.WORD	.GKEY		;GET FUNCTION KEY (C.KEY).TVEND=.TVSZ=<.TVEND-.TVECT>	.PAGE	.SBTTL	GETMAP	(MAPPING SEGMENT);;  GETMAP  (GET MAPPING SEGMENT);;	THE FUNCTION OF THIS SUBROUTINE IS TO DETERMINE THE;	SEGMENT IN WHICH THE PARTICULAR ATS "FIELD" ;	IS TO BE FOUND;	GIVEN THE STARTING OFFSET IN THE ATS SECTION;	AND THE NUMBER OF BYTES IN LENGTH;	IF THE FIELD CROSSES SEGMENT BOUNDARIES THEN THE SUBROUTINE;	ACTS AS A COROUTINE  IE CALLS THE CALLER THUS CAUSING;	THE CALLER'S RETURN TO BE THROUGH THIS ROU      TINE FOR MORE DATA;;	INPUT;		R0 - TOTAL # OF BYTES OF "FIELD";		R1 - ABS OFFSET START IN ATS SECTION;		R2 - VALUE S.INBF+.WNSCB OR S.OTBF+.WNSCB FOR BUFFER ADDRESS;		R3 - DESTROYED;		R4 & R5 - MUST BE SAVED IF USED;;	OUTPUT ;		R0 - # OF BYTES TO BE MOVED "THIS TIME";		R2 - ADDRESS OF THE SDB THAT IS TO BE ACCESSED BY THE;		    CALLING ROUTINE SUCH THAT;		   (R2) GETS THE KT11 VALUE;		   2(R2) GETS THE BIAS	.PAGE	.ENABL	LSBGETMAP:	MOV	2(R2),-(SP)		;SAVE NUMBER OF SEGMENTS	CLR	-(SP)			;SET TOTAL OVER USED BUF      FERS	MOV	(R2),R2			;GET ADDRESS OF FIRST BLOCK10$:	CMP	R1,4(R2)		;R1 ABS OFFSET R2 HIGHEST INPUT BYTE	BLO	30$			;AT LEAST PART FITS IN20$:	DEC	2(SP)			;DECREMENT NUMBER OF SEGMENTS	BLE	100$			;PROBLEM TIME	MOV	4(R2),(SP)		;RESET RUNNING TOTAL	ADD	#6,R2			;LOOK AT NEXT BLOCK	BR	10$30$:	MOV	R0,R3			;TOTAL NUMBER OF BYTES	ADD	R1,R3			;PLUS STARTING BYTE	CMP	R3,4(R2)		;WILL IT ALL FIT IN	BLOS	50$			;YES	MOV	R2,-(SP)		;SAVE THE POINTER	MOV	4(R2),R3		;GET HIGHEST BYTE	SUB	R1,R3			;HIGHEST -OFFSET=#THIS TIME	SUB	2      (SP),R1		;SET TO OFFSET IN BUFFER	ADD	2(R2),R1		;CORRECT FOR BIAS	MOV	R0,-(SP)		;TOTAL BYTES	SUB	R3,(SP)			;TOTAL LEFT	MOV	R3,R0			;THIS TIME MOVE	CALL	@8.(SP)			;GO DO THE PART	MOV	(SP)+,R0		;RESTORE THE NUMBER OF BYTES	MOV	(SP)+,R2		;RESTORE SEGMENT POINTER	MOV	4(R2),R1		;OFFSET IS NOW START OF NEXT BUFFER	BR	20$50$:	SUB	(SP)+,R1		;SET TO OFFSET IN BUFFER	ADD	2(R2),R1		;CORRECT FOR BIAS	TST	(SP)+	RETURN;;	ERROR - OFFSET EXCEEDS SEGMENTS;100$:	MOV	R1,.COMSB+ERRDAT	;SAVE OFFSET REQUESTED	SUB	#.WNFRC,R5			;S      AVE FORMAT RECORD	MOV	R5,.COMSB+ERRDAT+2	MOV	#4,R0	MOV	#TE.FOE!TS.SCB!TS.BYT,R5   ;CODE AND FLAGS	JMP	ABTER0	.DSABL 	LSB	.PAGE	.SBTTL	.MODEC (GENERALIZED OUTPUT MOVE);;   .MODEC - GENERALIZED MOVE TO THE "OUTPUT" BUFFER;;;		PROVIDES A MECHANISM OF GENERALIZED MOVING TO ;		TO "OUTPUT" BUFFER BY TESTING S.STAT UPON ENTRY;		THE ROUTINE DIFFERENTIATES BETWEEN THE ATS OUTPUT;		AND THE FQM OUTPUT;;;	INPUT:;		R0 - # OF BYTES TO MOVE;		R1 - ABS OFFSET IN THE OUTPUT SECTION TO START;		R4 - V.A. OF THE "FROM" DATA;		      	OR THE SINGLE CHAR TO BE MOVED;;	OUTPUT;		R0 - DESTROYED;		R1 - DESTROYED;		R4 - LAST BYTE +1 OF THE FIELD MOVED;;	GETMAP IS CALLED IF THE MOVE IS TO THE ATS SEGMENT ;	.PAGE	.ENABL	LSB.MODEC:	TST	R0				;ARE THERE BYTES TO MOVE	BEQ	25$				;NO	CMPB	#SS.PAT,S.STAT+.WNSCB		;INPUT FROM ATS	BEQ	10$				;YES	MOV	#S.OTBF+.WNSCB,R2		;POINT TO RIGHT BUFFER LOC	CALL	GETMAP				;FINDS SEGS TILL ALL DONE	MOV	(R2),@#.MROTB			;MAP ONTO SEGMENT10$:	ADD	#.WNOTB,R1			;ADD V.A.	CMP	#255.,R4			;SINGLE CHAR MOVE	BHIS	35$				; NO       SINGLE BYTE MOVE20$:	MOVB	(R4)+,(R1)+			;MOVE THEM	SOB	R0,20$25$:	RETURN;35$:	MOVB	R4,(R1)+	SOB	R0,35$	BR	25$	.DSABL	LSB	.PAGE	.SBTTL	.MVIN (GENERALIZED FROM MOVE);;   .MVIN - GENERALIZED MOVING FROM  ROUTINE;;	MOVE INPUT FROM ATS BUFFER TO MESSAGE BUFFER;;	INPUT;		R0 - # OF BYTES TO BE MOVED;		R1 - ABS OFFSET IN THE INPUT BUFFER;		R4 - VIRTUAL ADDRESS OF THE "TO" START;;	OUTPUT;		R0 - DESTROYED;		R1 - DESTROYED;		R4 - LAST BYTE +1 OF THHE OUTPUT FIELD;;	GETMAP IS CALLED IF THE MOVE IS FROM THE ATS INPUT;	      .PAGE	.ENABL	LSB.MVIN:	TST	R0				;IS THERE ANYTHING TO MOVE	BEQ	30$				;NO	MOV	#S.INBF+.WNSCB,R2		;GET POINTER.MVIN1:	CALL	GETMAP				;GET THE SEGMENT	MOV	(R2),@#.MRINB			;LOOK AT SEGMENT	ADD	#.WNINB,R1			;ADD V.A.20$:	MOVB	(R1)+,(R4)+			;MOVE THEM	SOB	R0,20$30$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL	FDMENU   (FIND MENU SECTION);  FDMENU - FIND THE MENU SECTION;	;	THIS SUBROUTINE IS USED TO FIND THE MENU SECTION;	OF THE INPUT FROM ATS;;	INPUT;		REGISTERS;			NONE;			R4 MUST NOT BE USED;	STACK;		[SP] - RETURN;		2[SP]       - AVAILABLE;		4[SP] - AVAILABLE;;	6 BYTES OF INFORMATION CONTAINED IN THE FIRST SEGMENT;	OF THE INPUT AT BIAS-S.INCD (IF S.INCD=>3) OR  AT;	BIAS-S.INCD-3.;		1 BYTE - SDB # FOR MENU SEGMENT START;		1 BYTE - # SDBS LEFT;		2 BYTES - DISPLACEMENT WITHIN SEGMENT TO MENU START;		2 BYTES - # OF BYTES LEFT IN SEGMENT;;	OUTPUT;	  REGISTERS;		R0 - # BYTES REMAINING IN CURRENT SEGMENT;		R2 - DISPLACEMENT TO LENGTH FIELD OF THE ;			FIRST MENU STRING;		R5 - ADDRESS OF THE CURRENT SDB;	  MAPPING REGISTERS;		.MRINB - SET       TO 1ST SEGMENT IN WHICH MENU IS FOUND;;	  STACK - JUST BEFORE RETURN;		[SP] - RETURN;		2[SP] - # OF SEGMENTS LEFT;		4[SP] - TOTAL # OF BYTES IN MENU SEGMENT;;	OPERATION;		THE INFORMATION CONCERNING THE START OF THE ;		MENU SECTION AND THE APPROPRIATE REGISTERS;		AND STACK ENTRIES ARE INITIALIZED;		A CALL TO COUNT GETS THE TOTAL # OF BYTES ;		IN THE MENU FIELD AND UPON RETURN THE ;		POINTERS ARE ADJUSTED SUCH THAT UPON EXIT THE;		DISPLACEMENT IS SET TO THE LENGTH FIELD OF THE;		FIRST MENU STRING;	.PAGE	.ENA      BL	LSBFDMENU:  BIT	#FS.MNU,S.FFRW+.WNSCB		;WAS MENU SECTION FOUND	BEQ	200$				;NO PROBLEM TIME	MOV	S.INBF+.WNSCB,R5		;GET FIRST SEGMENT	MOV	(R5),@#.MRINB			;LOOK AT SEGMENT	MOV	2(R5),R1			;GET BIAS	MOVB	S.INCD+.WNSCB,R3		;GET HEADER BIAS	CMP	#3,R3				;>3 BYTES AVAILABLE	BLO	10$				;YES	ADD	#3,R310$:	SUB	R3,R1				;POINT TO INFO START	ADD	#.WNINB,R1	MOVB	(R1)+,R3			;GET SDB #	MUL	#6,R3				;ADJUST TO CORRECT VALUE	ADD	R3,R5				;ADJUST SDB ADDRESS	MOVB	(R1)+,R3			;REMAINING #   SDB	MOV	R3,2(SP)			;PUT IN STACK	      CLR	R2				;	BISB	(R1)+,R2			;HIGH ORDER DISP BYTE	SWAB	R2				;POSITION	BISB	(R1)+,R2			;GET LOW ORDER BYTE	CLR	R0	BISB	(R1)+,R0			;HIGH ORDER BYTE  #BYTES IN SEG	SWAB	R0	BISB	(R1)+,R0			;LOW ORDER BYTE	MOV	(R5),@#.MRINB			;LOOK AT CORRECT SEGMENT	CALL	COUNT	CMP	R1,#1				;FIND ANY FIELD	BHI	20$				;YES	SEC					;NO	BR	30$20$:	MOV	R1,4(SP)			;SET STACK CORRECTLY	ADD	#2,R2				;BUMP TO 1ST STRING LENGTH	SUB	#2,4(SP)			;ADJUST OTHER VALUE	ADD	#-2,R0				;#OF BYTES	BGT	25$				;NOT CROSS SEG BOUNDARIES	MOV	R0,R3				      ;DID SAVE R0	CALL	ADJUST				;ADJUST SEGMENTS	SUB	R3,R025$:	CLC30$:	RETURN					;DONE;;	ERROR - MENU SEGMENT EXPECTED BUT NOT PRESENT;200$:	MOV	#TE.FMM!TS.SCBTS.WAT,R5	;CODE AND FLAGS	JMP	ABTERR	.DSABL	LSB	.PAGE	.SBTTL	MEMOV   (MOVE FROM THE MENU SECTION);  MEMOV - MOVE FROM THE MENU SECTION ROUTINE;;	THIS SUBROUTINE MOVES ONE MENU FIELD AT A TIME FROM;	THE MENU SECTION OF THE ATS INPUT;;	INPUT;	  REGISTERS;		R0 - # BYTES LEFT INCURRENT SEGMENT;		R1 - # OF BYTES TO BE MOVED;		R2 - DISPLACEMENT TO FIRST BYTE T      O BE MOVED;		R4 - ADDRESS OF STARTING "TO" LOCATION;		R5 - ADDRESS OF CURRENT SDB;;	  STACK;		2[SP] - # SDBS LEFT;		4[SP] - TOTAL # OF BYTES LEFT IN MENU SECTION;;	OUTPUT;	  REGISTERS;		R0 - ADJUSTED BY # OF BYTES MOVED;		R1 - 0;		R2 - DISPL TO BYTE AFTER LAST BYTE MOVED;		R4 - ADDRESS BEYOND LAST BYTE MOVED TO;		R5 - ADDRESS OF CURRENT SDB;;	  STACK;		ADJUSTED TO REFLECT THE # OF BYTES MOVED	.PAGE	.ENABL	LSBMEMOV:	TST	R1			;ANYTHING TO MOVE	BEQ	30$			;NO	CMP	R1,R0			;ENOUGH ROOM IN THIS SEGMENT	BLOS	10$			      ;YES	SUB	R0,R1			;NO, R1 =#BYTES NOT IN SEGMENT	MOV	R1,-(SP)		;SAVE TEMPORARILY	MOV	R0,R1			;SET UP THIS TME	CALL	10$			;MOVE THEM	MOV	(SP)+,R1		;GET BACK BYTES NEEDED	CALL	ADJUST			;ADJUST SDB GET #BYTES ALSO 	BR	MEMOV			;BACK AGAIN10$:	ADD	#.WNINB,R2		;ADD THE V.A20$:	MOVB	(R2)+,(R4)+		;MOVE	SOB	R1,20$	SUB	#.WNINB,R2		;REMOVE THE V.A30$:	RETURN	.DSABL	LSB	.PAGE	.SBTTL	CVDAT   (CONVERT DATE STRING);   CVDAT - CONVERT DATE STRNG SUBROUTINE;;	THIS SUBROUTINE IS CALLED TO CONVERT THE 3 WORD INTERNAL;	DATE TO       THE STANDARD 9 CHARACTER OUTPUT FORMAT;		Z9-AAA-99;	INPUT;		R0 - STARTING ADDRESS OF OUTPUT BUFFER;		R1 - ADDRESS OF PARAMETER BLOCK;			.WORD  YEAR   YEAR-1900;			.WORD MONTH   MONTH;			.WORD DAY   DAY OF YEAR;;	OUTPUT;		R0 - OUTPUT BUFFER ADVANCED;		R1 - INPUT STRING +6;	.PAGE	.ENABL	LSBMONTH:	.ASCII/JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC/	.EVEN;CVDAT:	MOV	(R1)+,-(SP)	;SAVE YEAR	MOV	(R1)+,-(SP)	;SAVE MONTH	MOV	(R1)+,R3	;GET DATE	CALL	DIG		;OUTPUT 2 DIGITS	MOVB	#'-,(R0)+	;PUT IN SEPARATOR	MOV	(SP),R1		;GET MO      NTH	ASL	(SP)		;MULT BY 3	ADD	(SP)+,R1	ADD	#MONTH-3,R1	MOVB	(R1)+,(R0)+	;MOVE BYTES	MOVB	(R1)+,(R0)+	MOVB	(R1)+,(R0)+	MOVB	#'-,(R0)+	MOV	(SP)+,R3	;GET YEAR	CALL	DIG		;OUTPUT 2 DIGITS	RETURN	.DSABL	LSB	.PAGE	.SBTTL	CVTIM  (CONVERT TIME STRING);  CVTIM - CONVERT TIME STRING SUBROUTINE;;	THIS SUBROUTINE IS CALLED TO CONVERT THE TIME IN A ;	STANDARD INTERNAL FORMAT INTO AN ASCII STRING;		HH:MM:SS;;	INPUT;		R0 - OUTPUT STRING STARTING ADDRESS;		R1 - ADDRESS OF FIRST PARAMETER;		R5 - LOOP COUNTER;		PARAMETER BLOCK      ;			.WORD HOUR OF DAY;			.WORD MINUTE OF HOUR;			.WORD SECOND OF MINUTE;;	OUTPUT;		R0 - OUTPUT STRING;		R1 - NEXT PARAMETER	.PAGE	.ENABL	LSB10$:	MOVB	#':,(R0)+	;OUTPUT SEPARATORCVTIM:	MOV	(R1)+,R3	;GET VALUE	CALL	DIG		;OUTPUT DIGITS	DEC	R5	BGT	10$		;GO AGAIN	RETURN	.DSABL	LSB	.PAGE;; CDIG - CONVERT TO 2 DIGIT DECIMAL MAGNITUDE;;	INPUT;		R0 - ADDRESS TO STORE 1ST BYTE;		R3 - VALUE TO BE CONVERTED;	OUTPUT;		R0 - ADDRESS OF NEXT BYTE AFTER LAST DIGIT STOREDDIG:	CLR	R2		;PREPARE FOR DIVIDE	DIV	#10.,R2		;DO IT	A      DD	#'0,R3		;REMAINDER LOW DIGIT	ADD	#'0,R2		;QUOTIENT HIGH DIGIT	MOVB	R2,(R0)+	;STORE IT	MOVB	R3,(R0)+	;STORE LOW DIGIT	RETURN	.PAGE	.SBTTL	.COPYN	(C.CPY CODE);;  .COPYN - COPY FROM TO ACTION CODE;	;	THIS ACTION SUBROUTINE COPIES N BYTES FROM THE;	INPUT BUFFER (S.INBF) TO THE OUTPUT BUFFER (S.OTBF);;	THE ROUTINE .MVIN IS USED TO PERFORM THE COPY WHEN INPUT IS ;	FROM ATS ;	THE ROUTINE .MOUT IS USED TO PERFORM THE COPY WHEN;	THE OUTPUT IS FOR ATAM;	STRUCTURE  CODE C.CPY=2;;	WORD 0 - CODE AND LENGTH OF STRUCTU      RE;	WORD 1  - NUMBER OF BYTES TO BE MOVED;	WORD 2 - "TO" DISPLACEMENT;	WORD 3 - "FROM" DISPLACEMENT;	UPON ENTRY;		R5 POINTS TO WORD 1 BYTE 0;	UPON EXIT ;		R5 POINTS TO THE BYTE BEYOND THE STRUCTURE	.PAGE	.ENABL	LSB.COPYN:	MOV	(R5)+,R0			;GET TOTAL NUMBER OF BYTES	CMPB	#SS.PAT,S.STAT+.WNSCB		;INPUT ATAM	BNE	100$				;NO	MOV	2(R5),R1			;"FROM " DISPLACEMENT	MOVB	S.OTCD+.WNSCB,R4	ADD	#.WNOTB,R4	ADD	(R5)+,R4	TST	(R5)+	CALL	.MVIN				;DO THE WHOLE MOVE	RETURN;100$:	MOV	(R5)+,R1	MOVB	S.INCD+.WNSCB,R4	ADD	#.WNINB,R4      	ADD	(R5)+,R4	TST	S.INBF+.WNSCB			;IS THERE A MESSAGE	BEQ	140$				;NO120$:	CALL	.MODEC				;DO THE WHOLE MOVE	RETURN140$:	MOV	#40,R4				;SET UP FOR BLANK FILL	BR	120$				;GO DO IT	.DSABL	LSB	.PAGE	.SBTTL	.GTIME   (GET TIME ACTION CODE);  .GTIME - GET THE TIME OF DAY ACTION SUBROUTINE;;	THIS ACTION CODE CAUSES THE TIME OF DAY TO BE CONVERTED;	INTO AN ASCII 8 CHARACTER STRING OF THE FORM;		HH:MM:SS;	THE ACTUAL PROCESSING IS DONE IN COMMON WITH THE ;	.GDATE ACTION CODE;;	PARAMETER STRUCTURE   CODE C.TIME=4;	WOR      D 0 - CODE AND LENGTH;	WORD 1 - "TO" DISPLACEMENT	.PAGE	.ENABL	LSB.GTIME: MOV	#8.,-(SP)		;SET # OF CHARACTERS	BR	TIMDAT			;JOIN UP IN ROUTINE	.DSABL	LSB	.PAGE	.SBTTL	.GDATE	(GET DATE ACTION CODE);   .GDATE - GET DATE ACTION SUBROUTINE;;	THIS ACTION CODE CAUSES THE DATE TO BE CONVERTED INTO;	AN ASCII 9 CHARACTER STRING OF THE FORM;		Z9-AAA-99;;	PARAMETER STRUCTURE  CODE C.DATE=6;		WORD 0 - CODE AND LENGTH;		WORD 1 - "TO" DISPLACEMENT;;	THE ENTRY TIMDAT IS USED WHEN ENTERED FROM THE .GTIME;	ACTION CODE;	THE T      IME AND DATE ARE ACQUIRED VIA A SYSTEM GTIM$S;	IF .GTIME, THE SUBROUTINE CVTIM IS CALLED TO CONVERT;	THE VALUE. IF .GDATE, CVDAT IS USED TO CONVERT THE VALUE;	.MODEC IS CALLED TO PERFORM THE ACTUAL MOVE	.PAGE	.ENABL	LSB.GDATE:	MOV	#9.,-(SP)		;NUMBER OF BYTESTIMDAT:	 MOV	R5,-(SP)		;SAVE R5	GTIM$S	#.TIMBF			;GET TIME AND DATE	MOV	#.TCMBF,R0		;GET TEMP BUFFER FOR CONVERSION	MOV	#.TIMBF,R1		;TIME AND DATE BUFFER	CMP	#8.,2(SP)		;WAS IT TIME	BNE	20$			;NO	ADD	#6,R1			;YES BUMP TO CORRECT PARAMETER	MOV	#3,R5			;SE      T # OF FIELDS	CALL	CVTIM			;CONVERT THE TIME	BR	30$;20$:	CALL	CVDAT			;CONVERT THE DATE30$:	MOV	(SP)+,R5		;GET BACK PARAMETER POINTER	MOV	(R5)+,R1		;R5 NOW ADJUSTED	MOV	(SP)+,R0		;NUMBER OF BYTES	MOV	#.TCMBF,R4		;FROM ADDRESS	CALL	.MODEC			;DO THE REAL MOVE	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.GTRID	(GET TRANSACTION TYPE ACTION CODE);   .GTRID - GET TRANSACTION TYPE ACTION ROUTINE;;	THIS ACTION CODE SUBROUTINE PLACES THE TRANSACTION TYPE INTO;	THE OUTPUT BUFFER;	THE TRANSACTION TYPE IS AN ASCII STRING OF 6 CHARA      CTERS;	LEFT JUSTIFIED SPACE FILLED;	THE TRANSACTION TYPE IS OBTAINED FROM THE T.NAM FIELD OF;	THE TDT;	.MODEC IS USED TO PERFORM THE MOVE;	IF NO TRANSACTION IS ASSOCIATED WITH THE STATION AT THE TIME;	THIS CODE IS PROCESSED THEN THE FIELD IS FILLED WITH #'?;;	THE PARAMETER STRUCTURE  CODE C.TRID=10;;	WORD 0 - CODE AND LENGTH OF STRUCTURE;	WORD 1 - - OFFSET INTO THE OUTPUT BUFFER;;	UPON ENTRY;		R5 - POINTS TO WORD 1 BYTE 0;	UPON EXIT;		R5 - POINTS TO THE BYTE BEYOND THE STRUCTURE	.PAGE	.ENABL	LSB.GTRID:	MOV	      S.CTDT+.WNSCB,R3		;GET TDT	BEQ	30$				;NONE	ADD	#T.NAM+6,R3			;ADD DISPLACEMENT	MOV	#.TCMBF+6,R4			;DO AN INTERMEDIATE MOVE	MOV	-(R3),-(R4)			;REQ FOR MODEC SINGLE CHAR	MOV	-(R3),-(R4)	MOV	-(R3),-(R4)20$:	MOV	#6,R0				;NUMBER OF BYTES	MOV	(R5)+,R1			;GET DISPLACEMENT	CALL	.MODEC				;MOVE THEM	RETURN;30$:	MOV	#'?,R4				;QUESTION MARK TIME	BR	20$	.DSABL	LSB	.PAGE	.SBTTL	.GSTID	(GET STATION ID ACTION CODE);  .GSTID - GET STATION ID ACTION SUBROUTINE;;	THIS ACTION SUBROUTINE PLACES THE STATION ID INTO THE ;	OUT      PUT BUFFER;	THE STATION ID IS AN ASCII STRING OF 6 CHARACTERS LEFT;	JUSTIFIED SPACE FILLED;	THE STATION ID IS OBTAINED FROM THE S.NAM FIELD OF THE SCB;	.MODEC IS USED TO PERFORM THE MOVE;;	PARAMETER STRUCTURE   CODE C.STID=12;;	WORD 0 CODE AND LENGTH OF STRUCTURE;	WORD 1 - OFFSET IN THE OUTPUT BUFFER;;	UPON ENTRY ;		R5 - POINTS TO WORD 1 BYTE 0;	UPON EXIT;		R5 - POINTS TO THE BYTE BEYOND THE STRUCTURE	.PAGE	.ENABL	LSB.GSTID:	MOV	(R5)+,R1		;GET THE OFFSET	MOV	#6,R0			;NUMBER OF BYTES	MOV	#S.NAM+.WNSCB,R4	;ST      ARTING ADDRESS OF FIELD	CALL	.MODEC			;DO THE MOVE	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.CDIAG  (ERROR PROCESSING ACTION CODE);  .CDIAG - ERROR PROCESSING ACTION SUBROUTINE;;	THIS ACTON SUBROUTINE TESTS THE SETTING OF SP.ERR;	IN S.FLGS OF THE SCB. IF SET, THE REPLY NUMBER FROM;	THE PARAMETER STRUCTURE IS FETCHED AND THE GENERAL;	PROCESSING IS DIVERTED;;	IF THE FLAG IS NOT SET, NO ACTION IS TAKEN AND A RETURN;	IS MADE AFTER ADJUSTING R5.;;	PARAMETER STRUCTURE CODE C.DIAG=16;		WORD 0 - CODE AND LENGTH;		WORD 1 - RE      PLY NUMBER;	UPON ENTRY;		R5 POINTS TO WORD 1 BYTE 0;	UPON EXIT IF SP.ERR IS NOT SET;		R5 POINTS TO THE 1ST BYTE BEYOND THE STRUCTURE;;	IF THE FLAG IS SET OR IF ENTRY IS MADE AT .DIAG1 (FROM;	.GMENU OR .TRTYP) THE STACK CONTAINS ONLY 1 ENTRY;	WHICH IS REMOVED. THE INPUT BUFFERS ARE CLEANED UP;	THE LIBRARY IS REMAPPED A CALL MADE TO  RELEASE;	THE NETWORK BUFFERS AND TO   .REFQM TO RELEASE AN FQM BUFFER;	IF PRESENT.;	THE FLAG SP.ROE IS SET R4 CONTAINS THE REPLY NUMBER ;	AND EXIT IS MADE TO .RQMER IN TIMMAN (.F      QMAV) TO CONTINUE;	PROCESSING A REPLY	.PAGE	.ENABL	LSB.DIAG1: MOV	R4,-(SP)			;SAVE REPLY NUMBER	CALL	CLEAN	MOV	.LIBAR,@#.MRLIB			;LOOK AT LIBRARY	CALL	.RNTBI				;RELEASE BUFFERS	CALL	.REFQM	BIS	#SP.ROE,S.FLGS+.WNSCB		;SET SP.ROE	MOV	(SP)+,R4			;GET REPLY NUMBER	MOV	@$TTBAD,R3			;POINT TO CONTEXT BLOCK	ADD	#.TMCZ,R3			;TO ITS TOP	MOV	R3,SP				;VIRGIN STACK	JMP	.RQMER				;EXIT	.DSABL	LSB	.PAGE	.SBTTL	.TRTYP  (SELECT TRANSACTION TYPE ACTION CODE);  .TRTYP - SELECT TRANSACTION TYPE SUBROUTINE;;	THIS ACTION SUBR      OUTINE TAKES A CHARACTER STRING FROM;	THE INPUT BUFFER AND USES IT AS THE NAME OF A TRANSACTION;	TO BE SELECTED;;	PARAMETER STRUCTURE  CODE C.TRAN=20;		WORD 0 - CODE AND LENGTH;		WORD 1 BYTE 0 - LENGTH OF INPUT STRING IF FROM;				INPUT SEGMENT;		       BYTE 1 - FLAGS;				CS.CHK (BIT 7) -CHECK AUTHORIZATION;				CS.DAT (BIT 6) - DATA ALSO INCLUDED;				CS.MNU (BIT 5 ) - FIELD FOUND IN MENU;						SEGMENT;		WORD 2 - OFFSET IN INPUT SEGMENT FOR FIELD;		WORD 3 BYTE 0 - REPLY NUMBER IF TRANSACTION NOT  RECOGNIZED;	      	       BYTE 1 - REPLY NUMBER IF NOT AUTHORIZED;;	UPON ENTRY ;		R5 POINTS TO WORD 1 BYTE 0;	UPON EXIT IF NORMAL;		R5 POINTS TO BYTE BEYOND STRUCTURE;;	THIS ACTION SUBROUTINE ALTERS TEMPORARILY THE MAPPING;	REGISTER BUT PRESERVES AND RESTORES THEM UPON EXIT;	UNLESS EXIT IS MADE THROUGH THE REPLY ERROR PROCESSING;;	A BUFFER TCMBUF IS CLEARED TO BE USED TO HOLD TEMPORARILY;	THE CHARACTER STRING ONCE ACQUIRED FROM THE APPROPRIATE SEGEMNT;	IF CS.MNU IS SET MELOC IS ENTERED TO OBTAIN THE FIELD FROM;	THE MENU SEGM      ENT AND RETURN WILL BE TO TRMEN;	OTHERWISE .MVIN IS CALLED TO FIND AND MOVE THE FIELD;	FROM THE INPUT SEGMENT;	AT TRMEN CS.CHK IS TESTED IF SET AND IF SO.NVL ;	(A GLOBAL NO CHECK FOR THE STATION) IS RESET THEN THE ;	AUTHORIZATION TESTS WILL BE MADE IN ..TVAL;	THE LIBRARY IS REMAPPED AND ..TVAL IS CALLED TO ;	ENSURE THE NAME IS RECOGNIZED AND IF SO .GETDB CALLED TO GET THE TDB;;	UPON RETURN IF CS.DAT IS SET INDICATING DATA ALSO INCLUDED;	A CALL IS MADE TO .OPTRN TO OPEN THE TRANSACTION AND TO;	.MSBUF TO ACQU      IRE THE BUFFER IN WHICH TO CREATE THE FQM;	THIS BUFFER IS MAPPED ONTO.;	THE LIBRARY MAPPING REGISTERS IS RESTORED AND AFTER ;	CLEANING UP THE STACK A RETURN IS EFFECTED;;	IF THE TRANSACTION TYPE IS UNKNOWN (ER.ITN) THE REPLY #;	(WORD 3 BYTE 0) IS FETCHED OR IF NOT AUTHORIZED (ER.NOR);	(WORD 3 BYTE 1) IS FETCHED. THE STACK IS CLEANED UP;	EXCEPT FOR THE RETURN ENTRY AND AN EXIT IS EFFECTED;	TO .DIAG1	.PAGE	.ENABL	LSB.TRTYP:		BIT	#SP.OPN,S.FLGS+.WNSCB	;TRANSACTION OPEN ALREADY?		*** SKH007	BNE	270$			;YES, ERR      OR				*** SKH007	MOV	#.TCMBF+6,R4		;GET TEMP BUFFER	MOV	#"  ,R3		 	;	MOV	R3,-(R4)	MOV	R3,-(R4)	MOV	R3,-(R4)	MOVB	1(R5),R3		;GET THE FLAGS	MOV	R3,-(SP)		;SAVE THEM	MOV	R5,-(SP)		;SAVE R5	BIT	#CS.MNU,R3		;MENU SEGMENT	BEQ	10$			;NO	JMP	MELOC			;YES10$:	MOVB	(R5),R0			;GET # OF BYTES	MOV	2(R5),R1		;OFFSET	CALL	.MVIN			;GET THE FIELDTRMEN:	CLR	R1			;CLEAR AUTHORIZATION 	BIT	#CS.CHK,2(SP)		;CHECK AUTHORIZATION	BEQ	30$			;NO	BITB	#SO.NVL,S.OPER+.WNSCB	;GLOBAL NOCHECK	BNE	30$			;YES	MOV	#S.TAT+.WNSCB,R1	;NO30$:	MO      V	#.TCMBF+6,R2		;POINT BEYOND TEMP BUFFER	MOV 	#6,R0			;3 WORDS LONG40$:	DEC	R2			;GO DOWN ONE BYTE	CMPB	(R2),#140		;IS IT LOWER CASE LETTER	BLE	50$			;NO	BICB	#40,(R2)		;MAKE IT UPPER CASE50$:	SOB	R0,40$			;LOOP	MOV	@#.MRLIB,-(SP)		;SAVE LIBRARY REGISTER	MOV	.LIBAR,@#.MRLIB		;LOOK AT LIBRARY	MOV	.ASR1,@#.MRCM1		;MAKE SURE COMMON IS MAPPED		*** SKH003	CALL	..TVAL			;VALIDATE	BCS	200$			;NO GO	MOV	R0,S.CTDT+.WNSCB	;SAVE TDT	CALL	.GETDB			;GET TDB	BCS	250$			;PROBLEM TIME	MOV	#Y.FRS,S.CFNA+.WNSCB	;SET FIRST F      ORM	BIT	#CS.DAT,4(SP)		;DATA ALSO	BEQ	60$			;NO	CALL	.OPTRN			;YES OPEN TRANSACTION	BCS	250$			;PROBLEM TIME	CALL	.MSBUF			;GET FQM BUFFER	BCS	260$			;PROBLEM TIME	MOV	S.OTBF+.WNSCB,@#.MROTB	;LOOK AT BUFFER60$:	MOV	(SP)+,@#.MRLIB		;RESTORE WINDOW	MOV	#77406,@#.DRLIB	MOV	(SP)+,R5		;GET BACK PARAMETER POINTER	ADD	#6,R5			;ADJUST IT	TST	(SP)+			;REMOVE FLAGS	RETURN;;	R1 HAS ERROR TYPE FROM .OPTRA; 	ER.ITN - NOT RECOGNIZED  ER.NOR - NOT AUTHORIZEDTRERR:200$:	MOV	(SP),@#.MRFRC		;GET BACK FORMAT RECORD	MOV	#77406      ,@#.DRFRC	MOV	2(SP),R5		;GET BACK PARAMETER POINTER	MOVB	4(R5),R4		;REPLY FOR ER.ITN	CMP	#ER.NOR,R1		;WAS IT UNAUTHORIZED	BNE	205$			;NO	MOVB	5(R5),R4		;UNAUTHORIZED205$:	JMP	.DIAG1			;PROCESS REPLY250$:	CALL	RELRES			;RELEASE HELD RESOURCES	JMP	.RCXB			;RELEASE CONTEXT BLOCK AND TERMINATE260$:	CMP	#ER.VXF,R1		;WAS IT BAD BUFFER SIZE	BNE	250$			;NO	MOV	#TE.TFZ!TS.SCB,R5  ;CODE AND FLAGS265$:					;					*** SKH007	JMP	ABTERR270$:					;					*** SKH007	MOV	#TE.IVS!TS.SCB,R5	;INVALID XTRAN SEL FORM			*** SKH007	      BR	265$			;					*** SKH007	.DSABL	LSB	.PAGE; .MELOC  - FINDS THE C.TRAN ENTRY IN THE MENU SECTION;	INPUT R4 IS THE BUFFER INTO WHICH THE FIELD IS TO;	BE TRANSFERRED;;	UPON ENTRY 2 STACK LOCATIONS ARE ALLOCATED AND A CALL TO;	FDMENU RESULTS IN THE LOCATION OF THE FIRST MENU STRING;	R0 = #OF BYTES LEFT IN SEGMENT;	R2 - DISPLACEMENT TO LENGTH FIELD OF STRING;	R5 - ADDRESS OF CURRENT SDB;	(SP) - #SDBS REMAINING;	(SP) - NUMBER OF BYTES REMAINING IN MENU SEGMENT;;	A CALL TO COUNT GETS THE LENGTH OF THE STRING IN       R1 ;	AND CAUSES R2 TO POINT TO THE FIRST BYTE OF THE STRING;	IF THE COUNT IS >6 THE VALUE IS SET TO 6;	A CALL TO MEMOV RESULTS IN THE FIELD BEING TRANSFERRRED;	TO THE BUFFER (POINTED TO BY R4). THE STACK IS RESET;	AND A JUMP TO TRMEN IS EFFECTED;	.ENABL	LSBMELOC:	CLR	-(SP)			;RESERVE STACK SPACE	CLR	-(SP)	CALL	FDMENU			;GET THE MENU	BCS	45$			;DIDNT HAVE ONE	CALL	COUNT			;COUNT OF STRING	CMP	#6,R1			;LENGTH <=6	BGE	30$			;OK	MOV	#6,R130$:	CALL	MEMOV			;GET THE FIELD	MOV	(SP)+,(SP)+		;CLEAN STACK	JMP	TRMEN		      	;CONTINUE PROCESSING45$:	MOV	#ER.ITN,R1		;SET FOR ERROR PROCESSING	TST	(SP)+	MOV	@#.MRLIB,(SP)		;SET UP THE MAPPING REGISTER	JMP	TRERR	.DSABL	LSB	.PAGE	.SBTTL	.GFILL	(FILL FIELD ACTION CODE);  .GFILL - FILL FIELD ACTION SUBROUTINE;;	THIS ACTION SUBROUTINE COPIES A SINGLE CHARACTER;	SPECIFIED IN THE FORMAT RECORD N TIMES INTO THE;	OUTPUT BUFFER;	THE MOVE IS PERFORMED BY THE .MODEC SUBROUTINE;;	PARAMETER STRUCTURE  CODE C.FILL=22;	WORD 0 - CODE AND LENGTH OF STRUCTURE;	WORD 1 - NUMBER OF BYTES IN OUTPUT BUFF      ER;	WORD 2 - "TO" DISPLACEMENT;	WORD 3 BYTE 0 - FILL CHARACTER;		BYTE 1 - NOT USED;;	UPON ENTRY;		R5 - POINTS TO WORD 1 BYTE 0;	UPON EXIT;		R5 - POINTS TO THE BYTE BEYOND THE STRUCTURE;			AFTER THE WORD 3 BYTE 1	.PAGE	.ENABL	LSB.GFILL:	MOV	(R5)+,R0	;GET NUMBER OF BYTES	MOV	(R5)+,R1	;GET THE DISPLACEMENT	CLR	R4		;SET UP TO GET FILL CHARACTER	BISB	(R5)+,R4	;GET FILL WITHOUT SIGN EXTENSION	INC	R5		;R5 NOW CORRECT FOR RETURN	CALL	.MODEC		;DO THE MOVE	RETURN	.PAGE	.SBTTL	.GLIT	(GET LITERAL STRING ACTION CODE);         .GLIT - GET LITERAL STRING ACTION SUBROUTINE;;	THIS ACTION SUBROUTINE COPIES AN N BYTE LITERAL FROM ;	THE FORMAT RECORD INTO THE OUTPUT BUFFER;	.MODEC IS USED TO PERFORM THE MOVE;;	PARAMETER STRUCTURE CODE C.LIT =24;;	WORD 0 - CODE AND LENGTH OF STRUCTURE;	WORD 1 - NUMBER OF BYTES OF THE STRING TO BE COPIED;	WORD 2 - "TO" DISPLACEMENT IN OUTPUT BUFFER;	WORD 3 - WORD N/2 - THE STRING TO BE PLACED IN THE OUTPUT BUFFER;		ALTHOUGH THE STRING NEED NOT BE IN FULL WORDS;		THE STRUCTURE IS ROUNDED UP TO ENSURE THA      T THE NEXT;		CODE BEGINS ON A WORD BOUNDARY;;	UPON ENTRY;		R5 - POINTS TO WORD 1 BYTE 0;	UPON EXIT;		R5 - POINTS TO THE BYTE BEYOND THE LAST BYTE OF;			THIS STRUCTURE	.PAGE	.ENABL	LSB.GLIT:	MOV	(R5)+,R0		;GET # OF BYTES	MOV	(R5)+,R1		;GET "TO" DISPLACEMENT	MOV	R5,R4			;PUT ADDRESS OF STARTING BYTE	ADD	R0,R5			;ROUND UP R5 TO NEXT STRUCTURE	ROR	R5			;	ADC	R5			;	ASL	R5			;	CALL	.MODEC			;DO THE MOVE	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.GTRMN  (TRANSACTION ID NUMBER ACTION CODE);  .GTRMN - GET TRANSACTION SEQUENCE       NUMBER ACTION SUBROUTINE;;	THIS ACTION SUBROUTINE GETS THE SPECIFIC TRANSACTION;	SEQUENCE NUMBER (A 32 BIT VALUE) AND CONVERTS IT TO;	A 10 CHARACTER ASCII STRING;	IF NO CCB IS ASSOCIATED WITH THE SCB AT THE TIME, I.E. NO ;	TRANSACTION OPEN THEN THE FIELD IS FILLED WITH "?;;	THE SEQUENCE NUMBER IS OBTAINED FROM THE C.TID FIELD ;	OF THE CCB. THE CCB IS POINTED TO BY THE S.CCB FIELD IN;	THE SCB;	.MODEC IS USED TO PERFORM THE MOVE;;	PARAMETER STRUCTURE  CODE C.TRMN=26;		WORD 0 - CODE AND LENGTH;		WORD 1 - "TO"       DISPLACEMENT;;	THE ALGORITHM USED FOR THE CONVERSION IS;		SINCE THE DIV INSTRUCTION IS INADEQUATE;	MS17BITS/10 REMAINDER CATENATED WITH LS15BITS/10;;	UPON ENTRY;		R5 POINTS TO WORD 1 BYTE 0;	UPON EXIT;		R5 POINTS TOTHE FIRST BYTE BEYOND THE STRUCTURE	.PAGE	.ENABL	LSB.GTRMN:	BIT	#SP.OPN,S.FLGS+.WNSCB	;TRANSACTION STILL OPEN?		*** SKH002	BEQ	40$			;NONE	MOV	S.TRID+.WNSCB,R2	;YES, USE SAVED SEQ NUMBER		*** SKH002	MOV	S.TRID+2+.WNSCB,R3	;					*** SKH002	MOV	#.TCMBF,R4		;TEMP BUFFER	MOV	#10.,R0			;NUMBER IS 10.       DIGITS LONG10$:	MOVB	#40,(R4)+		;INITIALIZE TO BLANK	SOB	R0,10$	MOV	R2,R1	ROL	R3			;GET HOB OF LSW IN CARRY	ROL	R1			;GET CARRY IMTO MSW	ROL	R0			;EXTEND IT20$:	DIV	#10.,R0			;MSW/10	MOV	R0,R2			;SAVE QUOTIENT	MOV	R1,R0			;CATENATE REMAINDER W LSW	MOV	R3,R1			;LSW	ASHC	#-1,R0	DIV	#10.,R0			;LSW/10	MOV	R0,R3			;SAVE QUOTIENT	ROL	R3	ADD	#'0,R1			;BIAS TO REMAINDER =ASCII DIGIT	MOVB	R1,-(R4)		;PUT IN BUFFER	CLR	R0	MOV	R2,R1			;PREPARE FOR NEXT DIVIDE	BNE	20$	TST	R3			;QUOTIENT 0	BNE	20$			;NO	MOV	#.TCMBF,R4		      ;RESET THE POINTER30$:	MOV	#10.,R0			;NUMBER OF BYTES	MOV	(R5)+,R1		;GET OFFSET	CALL	.MODEC			;MOVE THEM	RETURN40$:	MOV	#'?,R4			;SET UP ?	BR	30$	.DSABL	LSB	.PAGE	.SBTTL	.GMENU	(MENU ITEMS ACTION CODE);   .GMENU - COPY MENU ITEMS SUBROUTINE;;	THIS ACTION SUBROUTINE COPIES UP TO N MENU FIELDS;	INTO THE FQM. THE FIRST FIELD IS COPIED INTO THE FIELD AT THE;	FIRST OFFSET SPECIFIED IN THE PARAMETER STRUCTURE, THE ;	SECOND INTO THE SECOND AND SO FORTH;	EACH FIELD LENGTH IS DETERMINED BY THE PARTICULAR;	LENGTH FIE      LD OF THE MENU STRING;	THERE MAY BE UP TO N FIELDS . IF >N FIELDS HAVE BEEN;	TRANSMITTED THEN THE REPLY # IN WORD 2 OF THE STRUCTURE;	IF PRESENT IS USED TO SEND AN ERROR MESSAGE TO THE ;	OPERATOR. IF THERE IS NO REPLY # SPECIFIED THEN THE;	ADDITIONAL FIELDS INPUT ARE IGNORED;;	PARAMETER STRUCTURE  CODE C.MENU=30;		WORD 0 -CODE AND LENGTH LENGTH=6+2N;		WORD 1 - N SELECTIONS;		WORD 2 - REPLY #;		WORD 3 -N - OFFSET TO COPY MENU FIELDS INTO;;	STACK USAGE;		ESTABLISHED IN THIS ROUTINE;		(SP) - # SEGMENTS REMAINI      NG;		2(SP) - # OF BYTES LEFT IN MENU SEGMENT;		4(SP) - OFFSET START FROM R5;		6(SP) - N VALUE;		8(SP) - R5 POINTER TO WORD 1 BYTE 0;;	AFTER  SETTING UP THE STACK A CALL TO FDMENU RESULTS;	IN THE FINDING OF THE FIRST MENU FIELD AND THE REGISTERS;		R0 - #BYTES LEFT IN CURRENT SEGMENT;		R2 - DISPLACEMENT TO LENGTH FIELD OF FIRST MENU  STRING;		R5 - ADDRESS OF CURRENT SDB;	THE STACK IS AS DESCRIBED ABOVE;;	AS LONG AS BYTES REMAIN IN THE MENU SEGMENT OR N IS;	NON ZERO  THE APPROPRIATE OFFSET IN THE PARAMETER;	ST      RUCTURE IS FETCHED A CALL TO COUNT GETS THE FIELD;	LENGTH AND MEMOV IS CALLED TO PERFORM THE ACTUAL MOVE;	WHEN THERE ARE NO LONGER ANY BYTES LEFT IN THE SEGMENT;	THE STACK IS CLEANED UP R5 IS RESTORED AND ADJUSTED AND;	A RETURN IS EFFECTED;	IF THERE ARE BYTES LEFT AND N IS ZERO THEN IF A REPLY #;	IS NOT PRESENT THE CLEAN UP IS AS ABOVE;	IF THE REPLY # IS NON ZERO THE STACK IS EMPTIED EXCEPT;	FOR THE RETURN R4 CONTAINS THE REPLY # AND AN;	EXIT IS EFFECTED THROUGH .DIAG1	.PAGE	.ENABL	LSB.GMENU:	 MOV	R5,-(SP)	      	;SAVE R5	ADD	#-2,(SP)		;BUMP BACK TO BYTE 0	MOV	(R5),-(SP)		;SAVE N	ADD	#4,R5			;BUMP UP TO OFFSET	MOV	R5,-(SP)		;SAVE OFFSET POINTER	CLR	-(SP)			;SAVE SPACE	CLR	-(SP)	CALL	FDMENU10$:	TST	2(SP)			;TOTAL BYTES = 0	BLE	100$			;YES DONE	TST	6(SP)			;N = 0	BLE	150$			;MAY BE ERROR	MOV	4(SP),R4		;POINTER TO OFFSET	MOV	(R4),R4			;OFFSET	ADD	#.WNOTB,R4		;V.A.	CALL	COUNT			;GET THE COUNT	SUB	R1,2(SP)		;R1=#OF BYTES,SUB FROM TOTAL	CALL	MEMOV			;MOVE THEM	ADD	#2,4(SP)		;BUMP UP OFFSET POINTER	DEC	6(SP)			;DECREMENT       N	BR	10$			;GO AGAIN;100$:	ADD	#8.,SP			;CLEAN OUT STACK	MOV	(SP)+,R5		;GET BACK R5	CLR	R4			;SET UP FOR BYTE	BISB	1(R5),R4		;GET LENGTH BYTE	ADD	R4,R5			;ADJUSTED	RETURN;150$:	MOV	8.(SP),R5			ADD	#4,R5	MOV	(R5),R4			;IS THERE REPLY #	BEQ	100$			;NO FORGET IT	JMP	.DIAG1			;REPLY PROCESSING	.DSABL	LSB	.PAGE	.SBTTL	.GKEY	(GET FUNCTION KEY FIELD CODE);   .GKEY - GET FUNCTION KEY FIELD SUBROUTINE;;	THIS ACTION CODE CAUSES THE FUNCTION KEY FIELD FOUND ;	IN THE INPUT OR MENU SEGMENT TO BE ACQUIRED.;;	IT IS THEN M      ATCHED AGAINST THE APPROPRIATE ENTRY WITHIN;	THE PARAMETER BLOCK. THE CORRESPONDING STRING ( FOUND AT;	THE FROM OFFSET) IS COPIED INTO THE FQM AT THE TO OFFSET;;	PARAMETER STRUCTURE   CODE C.KEY = 32;;	WORD 0 - CODE AND LENGTH OF STRUCTURE;	WORD 1 - NUMBER OF ENTRIES;;	EACH ENTRY SECTION;	BYTE 0 - FUNCTION KEY VALUE ( BEGINS WITH ENTER KEY);	BYTE 1 - LENGTH OF STRING;	BYTES 3 & 4 - TO  OFFSET IN FQM;	BYTES 5 & 6 - FROM OFFSET IN FORMAT RECORD - FROM IS RELATIVE;		     TO WORD 0 OF THE PARAMETER STRUCTURE;;	      UPON ENTRY;	 	R5 - POINTS TO WORD 1 BYTE 0;;	UPON EXIT ; 		R5 - POINTS TO THE BYTE BEYOND THE STRUCTURE;;	TO FIND THE FUNCTION KEY FIELD IN THE INPUT SEGMENT;		IF FS.FRM SET (BY INPRO) THEN;		THE FIRST SDB (POINTED TO BY S.INBF) PLUS THE BIAS;		-1 IS THE FUNCTION KEY FIELD;;		IF FS.FRM IS NOT SET THEN FS.MNU MUST BE SET BY;		MEPRO) THE FIRST BLOCK PLUS THE BIAS PLUS ;		1 OR 2  (DEPENDING ON THE COUNT FIELD SIZE);		IS THE FUNCTION KEY FIELD;	.PAGE	.ENABL	LSB.GKEY:	MOV	R5,-(SP)		;SAVE POINTER IN STACK	MOV	S.I      NBF+.WNSCB,R2	;GET VBUF	MOV	(R2),@#.MRINB		;LOOK AT BUFFER	MOV	2(R2),R2		;GET BIAS	ADD	#.WNINB,R2		;MAKE VIRTUAL ADDRESS	DEC	R2			;ASSUME INPUT SEGMENT	BITB	#FS.FRM,S.FFRW+.WNSCB	;WAS IT	BNE	20$			;YES	INC	R2			;NO TRY FOR MENU	TSTB	(R2)			;CHECK COUNT BYTE	BGE	10$			;ONLY 1 BYTE	INC	R2			;NO 2 BYTES10$:	INC	R2			;20$:	MOVB	(R2),R3			;GET FUNCTION KEY BYTE	MOV	(R5)+,R0		;GET NUMBER OF ENTRIES30$:	CMPB	R3,(R5)+		;IS THIS THE ENTRY	BEQ	50$			;YES	ADD	#5,R5			;NO	SOB	R0,30$			;AGAIN	BR	70$			;NOT FOUND SO CLEA      N UP;50$:	MOVB	(R5)+,R0		;LENGTH OF STRING	MOV	(R5)+,R4		;TO OFFSET	ADD	#.WNOTB,R4		;MAKE VIRTUAL ADDRESS	MOV	(SP),R1			;GET THE START OF PARAMETER	ADD	(R5)+,R1		;ADD FROM OFFSET	CMPB	-(R1),-(R1)		;MINUS THE FIRST WORD60$:	MOVB	(R1)+,(R4)+	SOB	R0,60$70$:	MOV	(SP)+,R5		;CLEAN UP	DEC	R5			;POINT TO LENGTH	CLR	R0			;SET UP FOR BYTE	BISB	(R5),R0			;GET LENGTH	ADD	R0,R5	DEC	R5	RETURN	.DSABL	LSB	.PAGE	.SBTTL	.USRFN	(USER FUNCTION);  .USRFN - USER SUPPLIED FUNCTION;	THIS FUNCTION IS NOT PROVIDED IN RELEASE 1 ;	THE   r   REFORE IF THE CODE IS DETECTED THE STANDARD ERROR;	CODE FOR CODE NOT RECOGNIZED IS ISSUED;.USRFN::  JMP	CODER	.ENDr          jLÁ› 8$        **************************************************  1)  TPMLIB.MAC;11   40   .PAGE***************  2)  TPMLIB.MAC;11   40   ; EDITS:   41   ;	CP02: 3/12/79   42   ;	..GTSA: RESTORE R0,R1 AT END OF ROUTINE.   43   ;   44   ;	CP03: 3/12/79   45   ;	..INSM: REMOVE WAIT LOOP CODE: INSTALL INSURES SEND DATA IS PRESENT.   46   ;	   47   ;	CP06: 3/23/79   48   ;	ABOCOM: DO NOT FORCE UISAR1 = .ASR1 (FROM APPLICATION COMMON).   49   ;	TACOMM: SEND DATA TO DATA MANAGER EVEN IF NO CHANNELS ARE CONNECTED.   50   .PAGE*      *************************************************  1)  TPMLIB.MAC;11 1144   	BIT	#CF.WRK,C.FLG(R1)	; ANY WORK FILES? 1145   	BNE	5$			; YES SO CALL DM 1146   ; 1147   ; CHECK FOR ANY ASSIGNED CHANNELS 1148   ; 1149   	TST	C.CHN(R1)		; ANY CHANNEL STILL CONNECTED? 1150   	BEQ	10$			; NO 1151   ;***************  2)  TPMLIB.MAC;11 1154   									;-7*CP06 1155   ;**************************************************  1)  TPMLIB.MAC;11 1431   	MOV	.ASR1,@#UISAR1			; FROCE TOTAL MAP OF COMMOM 1432   ;**************      *  2)  TPMLIB.MAC;11 1435   									;-1*CP06 1436   ;**************************************************  1)  TPMLIB.MAC;11 3076   	MOV	(SP)+,R1 3077   	MOV	(SP)+,R0 3078   	TST	M.SDP+60000		; IS THERE A SYSTEM AREA?***************  2)  TPMLIB.MAC;11 3080   									;-2*CP02 3081   	TST	M.SDP+60000		; IS THERE A SYSTEM AREA?**************************************************  1)  TPMLIB.MAC;11 3108   	RETURN***************  2)  TPMLIB.MAC;11 3111   	MOV	(SP)+,R1		; UNSAVE REGISTERS		;***CP02 3112   	MOV	(SP)      +,R0						;***CP02 3113   	RETURN**************************************************  1)  TPMLIB.MAC;11 3581   ;		WD.0 POINTER TO RECEIVE DPB 3582   ;		WD.1 POINTER TO ATTACH DPB COMMOM 3583   ;		WD.2 POINTER TO CREATE WINDOW DPB COMMOM 3584   ;		WD.3 POINTER TO SEND DPB 3585   ;		WD.4 POINTER TO SEND BUFFER 3586   ;***************  2)  TPMLIB.MAC;11 3586   ;		WD.0 POINTER TO RECEIVE DPB FOR SEND DATA FROM INSTALL 3587   ;		WD.1 POINTER TO ATTACH DPB FOR APPLICATION COMMOM 3588   ;		WD.2 POINTER TO CREATE WI      NDOW DPB COMMOM 3589   ;		WD.3 POINTER TO SEND DPB FOR SEND DATA TO INSTALL 3590   ;		WD.4 POINTER TO SEND/RECEIVE BUFFER (TO/FROM INSTALL) 3591   ;**************************************************  1)  TPMLIB.MAC;11 3606   	MRKT$S	#1,#10.,#1		; WAIT A BIT 3607   	WTSE$S	#1			; FOR THE BUFFER 3608   	BR	10$			; NOW LETS TRY AGAIN 3609   20$:***************  2)  TPMLIB.MAC;11 3611   	HALT				; else CAUSE MANAGER TO ABORT	;***CP03 3612   									;-3*CP03 3613   20$:
    7 DIFFERENCES FOUND[24,10]TPMLIB.CHG   ,   =DB0:[24,10]TPMLIB.MAC,DB3:[24,10]TPMLIB.MAC,          u~<kQÁ› 8$        .TITLE	TIMDAT.IDENT	"V1.0";;;                         COPYRIGHT (C) 1978 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.;;;; MODULE:	TIMDAT;; VERSION:	001;; AUTHOR:	GILBERT WOLSKY;; DATE:		AUG 10,1978;	.PAGE;;;;; 	M O D I F I C A T I O N   H I S T O R Y   L O G;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		------------;;	1.1	9-A      PR-79	S. HARRIS	SKH010 = MARK TIME ROUTINE;							 NEEDS LOCATION TO SAVE;							 CURRENT CXB ADDRESS;;;;;	.PAGE;	***************** TEMPIE.NPE == -79.	;RESOURCE ERROR FROM DATA MANAGERRP.IRQ == 5	;TERMINAL NEED ATTENTIONRP.DIS	==	7	;DISCONNECTED;  *************	.SBTTL	QHEADS	(QUEUE HEADERS);;	QUEUES;.QFCBX::  .WORD		0,.QFCBX	;Q FOR CONTEXT BLOCKS;	.SBTTL	CBA	(FIXED CONTEXT BLOCKS);.SBTTL	DATA WORDS;SPOWER::  .WORD	0		;POWER FAIL HAS BEEN REPORTED BY ATS RMTIMSTP::  .WORD	0		;TIM FINAL STOP FLAG FOR SHUTDOWN      .LGLNK::  .WORD	0		;NUMBER OF ACTIVE LINKSMKTIME::  .WORD 0		;SAVE  CONTEXT BLOCK FOR MARK TIME		*** SKH010LANOOP::  .BYTE	0,1,0		;3 BYTE NOOP STRING FOR THE LA180S	.EVEN	.PAGE	.SBTTL	NETTMP	(NETWORK DATA);NTBFSZ::  .WORD	 0	;SIZE OF SDB BUFFERNTBFLT::.WORD	0	;USEABLE SIZE OFTHE BUFFERNTBFN::   .WORD  0		;MAX NUMBER OF BUFFERS AVAILABLE;;;ULAT::	.BYTE	0		;RM ULA	.BYTE	1		;DM ULAULASZ==.-ULAT;BULAT::	.BYTE	0		;NOT USED	.BYTE	0		;BULA TO BE SET AFTER CNCT;OBJT::	.BYTE	7		;OBJECT TYPE FOR RM	.BYTE	3		;OBJECT T     YPE FOR DM;CBAT::	.WORD	RSMCB		;CB FOR RM	.WORD	INDCB		;CB FOR DM;VBAT::	.WORD	RSMVB		;VBUF FOR RSMCB	.WORD	INDVB		;VBUF FOR INDCB;;RSMVB:	.BYTE	0,0,0,0,0,0	;VBUF FOR RM;INDVB:	.BYTE	0,0,0,0,0,0	;VBUF FOR DM	.BYTE	0,0,0,0,0,0	.BYTE	0,0,0,0,0,0	.BYTE	0,0,0,0,0,0INDZ==6*4	.END          jL ÈÁ› 8$        **************************************************  1)  TPMLIB.MAC;11   63   .PAGE***************  2)  TPMLIB.MAC;1   63   ; EDITS:   64   ;	CP01: 1/22/79   65   ;	..TOPN: ADD ENTRY POINT FOR SPAWNED TXNS: CALL BY CCB   66   ;	..TSPN: MOVE ROUTINE TO EXECUTION MANAGER   67   ;	..TCLS: ADD ENTRY POINT FOR SPAWNED TXNS: CALL BY CCB   68   ;	..GMBF: ADD ENTRY POINT FOR SPAWNED TXNS: CALL BY CCB   69   ;	STSND:	INPUT PARAMETER IS R4 (NOT R2)   70   ;   71   ;	CP02: 1/23/79   72   ;	..GTSA: RESTORE R0,R1 AT END       OF ROUTINE.   73   ;   74   .PAGE**************************************************  1)  TPMLIB.MAC;11  593   ;  594   ;***************  2)  TPMLIB.MAC;1  604   ; ..TOP2 -- OPEN SPAWNED TRANSACTION					;***CP01;  605   ;**************************************************  1)  TPMLIB.MAC;11  600   ; ONLY ONE OPEN TRANSACTION IS ALLOWED PER STATION; ONCE A TRANSACTION  601   ; IS CLOSED NO MORE INPUT MESSAGES CAN BE PROCESSED BY THE TRANSACTION  602   ; , BUT A NEW TRANSACTION CAN BE OPENED ON THE STATION.  60      3   ;***************  2)  TPMLIB.MAC;1  611   ; EXCEPT FOR SPAWN TRANSACTIONS,					;***CP01  612   ; ONLY ONE OPEN TRANSACTION IS ALLOWED PER STATION; ONCE A TRANSACTION  613   ; IS CLOSED NO MORE INPUT MESSAGES CAN BE PROCESSED BY THE TRANSACTION  614   ; , BUT A NEW TRANSACTION CAN BE OPENED ON THE STATION.  615   ; THERE CAN BE AN UNLIMITED NUMBER OF TXNS SPAWNED BY ONE TST STATION.	;***CP01  616   ;**************************************************  1)  TPMLIB.MAC;11  623   ;	R0	VIRTUAL ADDRESS OF TDB**      *************  2)  TPMLIB.MAC;1  636   ;   ..TOP2								;***CP01  637   ;	R3	INDEX OF OWNER CCB					;***CP01  638   ;   BOTH:  639   ;	R0	VIRTUAL ADDRESS OF TDB**************************************************  1)  TPMLIB.MAC;11  648   ;***************  2)  TPMLIB.MAC;1  664   ;    OR	CALL	..TOP2							;***CP01  665   ;**************************************************  1)  TPMLIB.MAC;11  654   	CLR	R3				; CLEAR OWNER (NOT SPAWNED)  655   TOP2:***************  2)  TPMLIB.MAC;1  671   	CLR	R3			; CLEAR OW      NER (NOT SPAWNED)  672   					; EVENTUALLY, C.OWN := 0  673   TOP2:**************************************************  1)  TPMLIB.MAC;11  668   ;  669   ; IS THE TRANSACTION DISABLED?***************  2)  TPMLIB.MAC;1  686   ;									;**CP01+  687   ; ENTRY POINT FOR SPAWNED TXNS. FOR TST STATIONS, IT IS POSSIBLE TO  688   ; HAVE SEVERAL CCBs FOR ACTIVE TRANSACTIONS QUEUED TO AN SCB.  689   ;  690   	ENTPT	TOP2  691   ;									;**CP01-  692   ; IS THE TRANSACTION DISABLED?**********************************      ****************  1)  TPMLIB.MAC;11  688   	CMP	(R5)+,(R5)+	;MOVE CCB POINTER***************  2)  TPMLIB.MAC;1  711   ; ???????????????????????? ASSEMBLY TIME CHECKS FOR CORRECT OFFSETS ???	;***CP01  712   	CMP	(R5)+,(R5)+	;MOVE CCB POINTER**************************************************  1)  TPMLIB.MAC;11  807   .PAGE  808   .SBTTL	TPMLIB -- SPAWN TRANSACTION  809   ;  810   ;  811   ; ROUTINE TO SPAWN A TRANSACTION FOR A TRANSACTION INSTANCE  812   ;  813   ;  814   ; INPUT CONDITIONS:  815   ;	R0 -- VI      RTUAL ADDRESS OF TDB  816   ;	R2 -- OWNER CCB  817   ;	UISAR3 -- BASE OF SPAWNING STATION  818   ;	UISAR4 -- MAPS THE BUFFER HOLDING THE TDB  819   ;  820   ; OUTPUT CONDITIONS:  821   ;  822   ;	'C' CLEAR IF TRANSACTION SPAWNED  823   ;		R5 -- CCB ADDRESS  824   ;  825   ;	'C' SET IF TRANSACTION NOT SPAWNED*  826   ;		R1 -- 'ER.OPE' TRANSACTION ALREADY OPEN  827   ;		      'ER.DSB' TRANSACTION TYPE DISABLED  828   ;		      'ER.NCB' NOT ENOUGH RESOURCES FOR TRANSACTION  829   ;  830   ;	ALL REGISTERS DESTRO      YED  831   ;  832   ;  833   	ENTPT	TSPN  834   	MOV	R2,-(SP)			; SAVE OWNER CCB  835   	SUB	.CCBBA,R2			; CALCULATE  836   	MOV	R2,R3  837   	DIV	#C.CSIZE,R3			; OWNER INDEX  838   	CALL	TOP2				; OPEN THE TRANSACTION  839   	MOV	(SP)+,R2			; GET OWNER BACK  840   	BCS	10$				; NOT OPENED  841   	BIT	#CF.NEX,C.FLG(R2)		; EXCHANGE RECOVER FOR OWNER?  842   	BNE	10$				; NO  843   	BIS	#CF.HLD,C.FLG(R5)		; SET SPAWNED ON HOLD  844   	MOV	C.SPN(R2),C.SPN(R5)		; LINK TO  845   	MOV	R5,C.SPN(R2)			; SPAWN LIST        846   						; C CLEAR FROM TOP2 CALL  847   10$:  848   	RETURN  849   .PAGE***************  2)  TPMLIB.MAC;1  831   									;-42*CP01  832   .PAGE**************************************************  1)  TPMLIB.MAC;11  856   ;  857   ; INPUT CONDITIONS:  858   ;	R3	SCB POINTER (VIRTUAL -- MUST BE MAPPED IN TO CURRENT SPACE)  859   ;		ASSUMED THAT SCB MAPPED ASR3 RELATIVE  860   ;	UASR 0,1 MAP THE APPLICATION COMMON AREA  861   ;  862   ; OUTPUT CONDITIONS:  863   ;	'C' CLEAR IF CLOESED CORRECTLY  864   ;**      *************  2)  TPMLIB.MAC;1  839   ; ..TCL2 -- CLOSE TXN USING CCB ADDRESS					;***CP01  840   ;  841   ; INPUT CONDITIONS:  842   ;  843   ; ..TCLS  844   ;	R3/APR3	SCB POINTER (VIRTUAL -- MUST BE MAPPED IN TO CURRENT SPACE)  845   ;		ASSUMED THAT SCB MAPPED ASR3 RELATIVE  846   ; ..TLC2  847   ;	R0	CCB FOR TXN TO BE CLOSED				;***CP01  848   ; BOTH:  849   ;	UASR 0,1 MAP THE APPLICATION COMMON AREA  850   ;  851   ; OUTPUT CONDITIONS:  852   ;	'C' CLEAR IF CLOSED CORRECTLY  853   ;********************      ******************************  1)  TPMLIB.MAC;11  871   ;***************  2)  TPMLIB.MAC;1  860   ; ..TLC2 CALLED BY:  861   ;	EM: OPETRN ROUTINE: INDICATE THAT TXN IS CLOSED W/O ABORTING TXN.  862   ;**************************************************  1)  TPMLIB.MAC;11  882   	ENTPT	TCLS***************  2)  TPMLIB.MAC;1  873   	.ENABL	LSB  875   	ENTPT	TCLS**************************************************  1)  TPMLIB.MAC;11  886   	BIT	#CF.CLD,C.FLG(R0) 	; ALREADY CLOSED?***************  2)  TPMLIB.MAC;1        880   ;									;**CP01+  881   ; ENTRY POINT FOR ..TCL2, CLOSE BY CCB  882   ;  883   	ENTPT	TCL2  884   									;**CP01-  885   	BIT	#CF.CLD,C.FLG(R0) 	; ALREADY CLOSED?**************************************************  1)  TPMLIB.MAC;11  916   .PAGE***************  2)  TPMLIB.MAC;1  916   	.DSABL	LSB  917   .PAGE**************************************************  1)  TPMLIB.MAC;11 1782   ; 1783   ; GTSLOT -- GET A SLOT 1784   ; 1785   ;***************  2)  TPMLIB.MAC;1 1783   ; ..GMB2 -- GET A MESSAG      E BUFFER THAT ISN'T A SLOT 1784   ; 1785   ; GTSLOT -- GET A SLOT 1786   ; 1787   ;	if CCB EXISTS 1788   ;	then	if TXN CLOSED ( CFLG(CF.CLD)=1 ) 1789   ;		then GOTO GET BFR FOR NON-SLOT MSG 1790   ;		else	if EXCHANGE ACTIVE or ABORTED 1791   ;			then ERROR RETURN(ER.EAC) 1792   ;			else READ EXISTING SLOT INTO BFR 1793   ;				on error ERROR RETURN(ERROR CODE FROM $GTBB) 1794   ;				if REQUESTED BFR SIZE > [(TST CXT AREA + TXN W/S 1795   ;							  + EXCHANGE MSG) - 1796   ;							 (TST CXT AREA + TXN W/S)] 1      797   ;				then ERROR RETURN(ER.VXF) 1798   ;				else RETURN 1799   ;				fi 1800   ;			fi 1801   ;		fi 1802   ;	else comment GET BFR FOR NOT-SLOT MSG 1803   ;		CALL $GTBB(SIZE = XMSG SIZE + MCB SIZE) 1804   ;		INITIALIZE BDB 1805   ;		if SLOT 1806   ;		then BDB := XMSG FILE DISK ADR (DA) FOR SLOT 1807   ;		fi 1808   ;		INITIALIZE MCB 1809   ;		if SLOT 1810   ;		then CCB := MCB PTR 1811   ;			if TRACE 1812   ;			then TDB := TRACE 1813   ;			fi 1814   ;			FURTHER MCB INITIALIZATION 1815   ;			if TRACE 1816         ;			then INITIALIZE TRACE CONTEXT AREA OF SLOT 1817   ;			fi 1818   ;		fi 1819   ;		FINISH MCB INITIALIZATION 1820   ;	fi 1821   ;**************************************************  1)  TPMLIB.MAC;11 1795   ;	R4	CCB FOR THE TRANSACTION 1796   ; 1797   ;***************  2)  TPMLIB.MAC;1 1831   ;	R4	CCB FOR THE TRANSACTION if GETTING SLOT 1832   ; 1833   ;	..GMB2:-							;**CP01+ 1834   ;	R0	CCB (=0 if no slot required) 1835   ;	R4	CCB (=? if no slot required) 1836   ;	R5	SIZE OF BFR REQUIRED (IN BYTES) 1837         ;									;**CP01- 1838   ;**************************************************  1)  TPMLIB.MAC;11 1833   ; 1834   	PUSH	<R5>			; SAVE THE SIZE***************  2)  TPMLIB.MAC;1 1874   ;									;**CP01+ 1875   	MOV	S.CCB(R3),R0		; IF SLOT REQUIRED MUST BE FOR TOP CCB 1876   					; SINCE THAT IS THE ONLY OPEN ONE 1877   ; 1878   ; ENTRY POINT ..GMB2: INPUT PARAMETER, R0 -> CCB 1879   ; 1880   	ENTPT	GMB2 1882   	PUSH	<R5>			; SAVE THE SIZE**************************************************  1)  TPMLIB.MAC;11       1840   ; STACK SUMMARY:- 1841   ; 1842   ;	SP+00	SAVED ASR4***************  2)  TPMLIB.MAC;1 1888   ;	R0	CCB 1889   ;	SP+00	SAVED ASR4**************************************************  1)  TPMLIB.MAC;11 1852   	MOV	S.CCB(R3),R0		; IF SLOT REQUIRED MUST BE FOR TOP CCB 1853   					; SINCE THAT IS THE ONLY OPEN ONE 1854   	BEQ	100$			; NO CCB SO NO SLOT REQUIRED***************  2)  TPMLIB.MAC;1 1899   	TST	R0			; if THERE ISN'T A CCB QUEUE	;**CP01- 1900   	BEQ	100$			; NO CCB SO NO SLOT REQUIRED**************      ************************************  1)  TPMLIB.MAC;11 1871   	JMP	210$ 1872   20$:***************  2)  TPMLIB.MAC;1 1917   16$:	JMP	210$							;***CP01 1918   20$:**************************************************  1)  TPMLIB.MAC;11 1876   	BCC	22$			; ERROR RETURNED? 1877   	JMP	210$			; YES 1878   22$:***************  2)  TPMLIB.MAC;1 1922   	BCS	16$			; ERROR RETURNED?		;***CP01 1923   									;CP01-1 1924   22$:**************************************************  1)  TPMLIB.MAC;11 1947   	MOV	R1,(R2)+      		; MESSAGE IDENTITY***************  2)  TPMLIB.MAC;1 1993   ;???????????????????????? include .error statements for offset checks ??????? 1994   	MOV	R1,(R2)+		; MESSAGE IDENTITY**************************************************  1)  TPMLIB.MAC;11 2075   210$: 2076   	MOV	(SP)+,@#UISAR4		; RESET MAP 4***************  2)  TPMLIB.MAC;1 2122   210$:					; C-BIT MUSTN'T BE CHANGED BEFORE RETURN 2123   	MOV	(SP)+,@#UISAR4		; RESET MAP 4**************************************************  1)  TPMLIB.MAC;11 2195         	MOV	@#UISAR3,-(SP)			; SAVE MAPPING REGISTER 2196   	MOV	C.CHN(R2),-(SP)			;GET TIMEOUT VALUE 2197   	CLR	C.CHN(R2) 2198   	BR	70$***************  2)  TPMLIB.MAC;1 2242   ; INPUT PARAMETERS 2243   ;	R4	CCB 2244   ; 2245   ; CALLED BY: 2246   ;	TPMLIB(STSCAN) 2247   ; 2248   	MOV	@#UISAR3,-(SP)			; SAVE MAPPING REGISTER 2249   	MOV	C.CHN(R4),-(SP)			;GET TIMEOUT VALUE	;***CP01 2250   	CLR	C.CHN(R4)						;***CP01 2251   	BR	70$**************************************************  1)  TPMLIB.MAC;11 3076   	MOV   Ü  	(SP)+,R1 3077   	MOV	(SP)+,R0 3078   	TST	M.SDP+60000		; IS THERE A SYSTEM AREA?***************  2)  TPMLIB.MAC;1 3129   									;CP02-2* 3130   	TST	M.SDP+60000		; IS THERE A SYSTEM AREA?**************************************************  1)  TPMLIB.MAC;11 3108   	RETURN***************  2)  TPMLIB.MAC;1 3160   	MOV	(SP)+,R1						;***CP02 3161   	MOV	(SP)+,R0						;***CP02 3162   	RETURN
   26 DIFFERENCES FOUND[24,10]TPMLIB.2=DB0:[24,10]TPMLIB.MAC,DB1:[24,10]TPMLIB.MACÜ         u~økQÁ› 8$        ;;;                         COPYRIGHT (C) 1977 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.;;;; MODULE:	TIMCTX;; VERSION:	001;; AUTHOR:	GILBERT WOLSKY;; DATE:		AUG 15,1978;;	.PAGE;;;;; M O D I F I C A T I O N   H I S T O R Y    L O G;;;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;;	1.0C	15-JAN-79	S.K. HARRIS	SKH      001 = SPR #21643.03;							 "INTERLEAVE LA180;							 REPORTS WITH OTHER;							 TRANSMISSIONS;;	1.1	18-APR-79	S.K. HARRIS	SKH011 = MAKE SURE ENOUGH SDBS;							 ARE ALLOCATED;;;	.PAGE;		.PSECT	CONTEX;SY.CRC = 0			;SET LOCAL VALUE. NOT USED;;	USED IN GENERATING .NPOLS,.NPOLH; *****;NTSZ =	8.			;ENTRY SIZE IN BYTES FOR SMALL BUFFER FOR SDBS$$$$$$	=	SGTERM+12	;NUMBER OF GENERATED NETWORK BUFFERS		*** SKH001.IF	GT	$$$$$$-36.	;						*** SKH001$$$$$$	=	36.		;ASSUME MAX OF 8. (TIM) SIMULTANEOUSLY ACTIVE	*** SKH00      1				;MAX OF 4 BUFFERS PER TERMINAL.ENDCNTNUM	=	$$$$$$		;NUMBER OF SMALL BUFFERS ACQUIRABLE FOR SDBS;; *****;$$$$$$	=	SGTERM+1-SGCTM	;NUMBER OF SCB'S THAT CAN'T BE RUNNING TXN.IF	LT	$$$$$$$$$$$$	=	0		;MAKE SURE ITS POSITIVE.ENDC.IF	GT	$$$$$$-5$$$$$$	=	5		;ALLOW ONLY 5 EXTRA CONTEXT BLOCKS.ENDC.TMCZ	==	88.		;CONTEXT BLOCK SIZE IN BYTES.TMCNO =	SGCTM+$$$$$$	;NUMBER OF CONTEXT BLOCKS; *****;	USED IN GENERATING .QPOLS, .QPOLH; *****;PTSZ	=	4		;ENTRY SIZE IN BYTES FOR QUEUE BUFFERS$$$$$$	=	SGTERM+1-.TMCNO	;NO. O      F SCBS WITHOUT CONTEXT BLOCKS.IF	LT	$$$$$$$$$$$$	=	0		;MAKE SURE ITS POSITIVE.ENDCPTNUM	=	$$$$$$		;NUMBER OF QUEUE ENTRIES AVAILABLE;; *****	.PAGE	.SBTTL	POOLS	(POOLS);  *****;	SMALL BUFFERS FOR SDBS; *****;.NPOLH::  .WORD		7,.NPOLS,0	;FREE SPACE LISTHEAD					;UNITS OF 8. BYTES.NPOLS::  .WORD		0,NTSZ*NTNUM	;FREE SPACE	  .BLKB		NTSZ*NTNUM.NMSDB::  .WORD		NTSZ*NTNUM	;SAVE AMOUNT OF SDB SPACE AVAILABLE	*** SKH011;; *****;	BUFFER FOR QUEUE ENTRIES (.QFCBX); *****;.QPOLH::  .WORD		3,.QPOLS,0	;FREE SPACE LISTHEAD   Ö  .QPOLS::  .WORD		0,PTSZ*PTNUM	  .BLKB		PTSZ*PTNUM;; *****;	BUFFER FOR DYNAMIC CONTEXT BLOCKS; *****;.TMCXH::  .WORD		3,.TMCXS,0	;FREE SPACE LISTHEAD.TMCXS::  .WORD		0,.TMCZ*.TMCNO	  .BLKB		.TMCZ*.TMCNO;;	.SBTTL	CBA	(FIXED CONTEXT BLOCKS);;	KNOWN CONTEXT BLOCKS FOR TIM THREADS;;TBKCB::  .BLKB	.TMCZ		;SYSTEM BACKGROUND THREAD;ATMCB::  .BLKB	.TMCZ		;ATAM START UP THREAD;RSMCB::  .BLKB	.TMCZ		;RESOURCE MANAGER THREAD;INDCB::  .BLKB	.TMCZ		;DIALOGUE MANAGER THREAD;;	.ENDÖ         €kQÁ› 8$        	.TITLE	DMFLDB	D$$BUG == 0           KkQÁ› 8$        	.IIF	NDF	D$$BUG,.TITLE	DMFL   - FLUSH ALL BDBS FOR A PARTICULAR LUN;;;;;;                         COPYRIGHT (C) 1978 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.;;;;	MODULE:		DATA MANAGER - FLUSH THE CACHE;;	VERSION:	V001A;;	AUTHOR:		RICHARD TREADWAY;;;;.PAGE;;;;;	M O D I F I C A T I O N    H I S T O R Y     L O G ;;;	VER/ER	DATE		AUTHOR      		EXPLANATION;	------  ----		-------		-----------;	8.2 BL	08-JUN-78	R.TREADWAY	INITIAL CODING;	8.3 BL	05-AUG-78	R.TREADWAY	SPR - 014;						   Save 8 words in DMLIB -;						   DMFL overlay;	8.3 BL	17-AUG-78	R.TREADWAY	Save more word in dmlib;	8.3 BL	30-SEP-78	R.TREADWAY	CONDITIONALIZE ROUTINE OUT;						FOR DEBUG MODE;;;;.PAGE	.SBTTL	.FLUC  - ENTRY POINT FOR DATA MANAGER;;;	.FLUC  - FLUSH THE CACHE OF ALL BDBS ASSOCIATED WITH;		 A FILE.  BDBS ARE IDENTIFIED BY MATCHING THE;		 LUN NUMBERS;		 THIS ROUTINE IS CA      LLED ON $CLOSE OPERATIONS TO;		 WORKFILES AND ON SHUTDOWN;;;;	INPUT CONDITIONS:;;	UISAR0 MAPS THE IMPURE AREA FOR THE FILE;	UISAR2 MAPS THE LIBRARY;;	OUTPUT CONDITIONS:;;	ALL REGISTERS SAVED AND RESTORED;	UISAR3 CORRUPTED;;	.MCALL	CMAP,ASRDF$	.MCALL	$GNCAL,$RMSTAT,$FBCAL	.MCALL	FABOF$,RABOF$,IDXOF$,CTXOF$,IRAOF$,IFAOF$	.MCALL	RAB$BT,IRA$BT,IMAOF$	$GNCAL	$FBCAL	ASRDF$	$RMSTAT	DFIN$L	IRA$BT	DFIN$L	IRA$BT	DFIN$L	IMAOF$	RMS$L	FABOF$	RMS$L	RABOF$	RMS$L	IDXOF$	RMS$L	CTXOF$	RMS$L	IRAOF$	RMS$L	IFAOF$	RMS$L.FLUC::	.      IF 	DF	D$$BUG	.IFT	RETURN	.IFF	MOV	R0,-(SP)		; SAVE REGISTERS	MOV	R1,-(SP)		;	MOV	R2,-(SP)		;	MOV	R3,-(SP)		;	MOV	R4,-(SP)		;	MOV	R5,-(SP)		;	MOV	#I.PRMS+Y$GETS+2,R5	; POINT TO FAB IN IMPURE AREA	$FETCH	R4,LCH,R5		; GET LOGICAL CHANNEL NUMBER IN R4	MOV	@#UISAR0,-(SP)		; SAVE ASR0 - IMPURE AREA POINTER	MOV	ACOMBA,@#UISAR0		; RE MAP APP COMM AT ASR0 FOR TPMLIB;;;	LOOP THRU ALL BDBS FOR THIS LUN;;	CALL	CMAP2			; MAP THE CACHE CONTROL SECTION	MOV	P.LRUF(R2),R1		; GET FIRST BDB ON LRU LIST5$:	CMP	#P.LRUF,R1		; W      HILE (MORE BDBS) DO	BEQ	20$			;	SUB	#B.LRUF,R1		;    POINT TO HEAD OF BDB					;		+ **** 014	CALL	POINT			;    AND MAP IT	MOV	B.LRUF(R0),-(SP)	;    GET NEXT BDB AND SAVE					;		- **** 014	CMPB	B.LUN(R0),R4		;    IF LUNS ARE EQUAL	BNE	10$			;       THEN	CALL	CCACHE			;	    CALL CACHE TO FLUSH10$:					;	END IF	MOV	(SP)+,R1		;     GET NEXT BDB	BR	5$			;       20$:					;    END WHILE	MOV	(SP)+,@#UISAR0		; RESTORE FILE IMPURE AREA POINTER	MOV	(SP)+,R5		;	MOV	(SP)+,R4		;	MOV	(SP)+,R3		; RESTORE ALL OTHER REGISTERS   ¨  	MOV	(SP)+,R2		;	MOV	(SP)+,R1		;	MOV	(SP)+,R0		;	RETURN				; RETURN	.PAGE	.SBTTL	CCACHE - CALL THE CACHE TO FLUSH A BDB;;;;;	CCACHE	-  CALL THE CACHE TO FLUSH A BDB;;;;CCACHE:	MOV	#10$,-(SP)		; SET UP RETURN ADDRESS	MOV	R5,-(SP)		; SAVE SAME REGISTERS	MOV	R1,-(SP)		; THAT CACHE FLUSH ROUTINE	MOV	R3,-(SP)		; EXPECTS	MOV	R4,-(SP)		; AND JUMP TO SPECIAL ENTRY POINT	JMP	.FL2			; IN CACHE FLUSH ROUTINE 10$:	RETURN	.ENDC	.END ¨         jLNyÁ› 8$        .TITLE	TPMLIB -- RESIDENT TPM LIBRARY (TPMLIB).IDENT	"V001A";;;;;                         COPYRIGHT (C) 1978 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.;;;;		AUTHOR: 	ANDY WILSON;;		DATE: 		JULY 1976;;	THIS MODULE CONTAINS:;;	1 -- SYSTEM SUBROUTINES COMMON TO ALL TPM MANAGERS;		A:	MESSAGE MANAGER;		B:	TRANSACTION CONTROL;		C:	COMMON ROUT      INES;; EDITS:;	CP01: 1/22/79;	..TOPN: ADD ENTRY POINT FOR SPAWNED TXNS: CALL BY CCB;	..TSPN: MOVE ROUTINE TO EXECUTION MANAGER;	..TCLS: ADD ENTRY POINT FOR SPAWNED TXNS: CALL BY CCB;	..GMBF: ADD ENTRY POINT FOR SPAWNED TXNS: CALL BY CCB;	STSND:	INPUT PARAMETER IS R4 (NOT R2);;	CP02: 1/23/79;	..GTSA: RESTORE R0,R1 AT END OF ROUTINE.;;	CP03: 3/12/79;	..INSM: REMOVE WAIT LOOP CODE: INSTALL INSURES SEND DATA IS PRESENT.;	;	CP06: 3/23/79;	ABOCOM: DO NOT FORCE UISAR1 = .ASR1 (FROM APPLICATION COMMON).;	TACOMM: SE      ND DATA TO DATA MANAGER EVEN IF NO CHANNELS ARE CONNECTED..PAGE.PAGE.SBTTL	TPMLIB -- LIBRARY NOTES;;; 1 REGISTERS;;	ALL REGISTERS ARE ASSUMED TOBE VOLATILE. NO REGISTERS ARE;	PRESERVED ACROSS CALLS TO LIBARAY ROUTINES. EACH ROUTINE;	STATES WHICH REGISTERS ARE CORRUPTED.;; 2 EXTERNAL MAPPINGS;;	ASRS 3 &4 ARE USED TO MAP EXTERNAL AREAS. ALL ASRS ARE;	RETURNED TO THEIR ORIGINAL CONTENTS AFTER THE EXTERNAL MAPPING;	IS NO LONGER REQUIRED.;; 3. SCBS;;	ALL SCB POINTERS/ADDRESSES ARE ASSUMED TOBE KT-11 (MOD 32 ADDR      ESS);	VALUES UNLESS OTHERWISE STATED.;	IF THE ADDRESS OF AN SCB IS SAID TO BE VIRTUAL IT IS ASSUMED THAT;	THE SCB IS MAPPED VIA ASR3.;.PAGE.SBTTL	TPMLIB -- MACROS ;	.MCALL	DIR$,ASRDF$,PUSH,POP,DFENT,ENTPT,MRKT$S,DRERR$,EXIT$S,GTSK$S	.MCALL	WTLO$S,CLEF$S,WSIG$S,DSAR$S,CALLR,DSAR$S,ENAR$S	.MCALL	WTSE$S,TSTRT$,TSUSP$,TTRMN$,RSUM$S,GTIM$S,$DELAY,SDAT$S	.MCALL	RDAF$S,RQST$,WTLO$,RDAF$,SDAT$S,RQST$S,ABRT$S	.MCALL	RDBDF$,WDBDF$,CLEF$S,SDAT$,ATRG$,CRAW$,QIO$,SVTK$S;	ASRDF$	DRERR$	RDBDF$	WDBDF$;;;; DEFINE SYMBOLS FO      R EXTERNAL DPBS;$$$GLB=0	SDAT$	ATRG$	CRAW$	QIO$.PAGE.SBTTL	TPMLIB -- ENTRY POINT TABLE FOR DEBUG;;;; IF THE LIBARAY IS ASSEMBLED IN DEBUG MODE THE ENTRY POINTS; TO ALL THE ROUTINES ARE PLACED AT THE HEAD OF THE MODUAL. THIS ALLOWS; ROUTINES TO BE MODIFIED WITHOUT CHANGING THE ADDRESS OF THE ENTRY; POINTS AND THUS CAUSING ALL TASKS THAT USE THE LIBARY TO BE RE-LINKED; SO AS TO LINK TO THE NEW ENTRY POINTS.;;	DFENT	FSCB	DFENT	ALLC	DFENT	SETC	DFENT	DLLC	DFENT	TVAL	DFENT	TVA1	DFENT	TOPN	DFENT	TSPN	DFENT	TCLS	DF      ENT	GTDB	DFENT	RTDB	DFENT	TEND	DFENT	TABO	DFENT	EXRT	DFENT	GMBF	DFENT	SDMS	DFENT	SDTM	DFENT	GMES	DFENT	DMES	DFENT	DSMS	DFENT	ULKM	DFENT	CLRK	DFENT	CLK2	DFENT	RTUL	DFENT	FEXC	DFENT	MQUE	DFENT	GSTE	DFENT	USET	DFENT	USE1	DFENT	GTSA	DFENT	QRHD	DFENT	QILE	DFENT	MSUP	DFENT	INSM	DFENT	TWAT	DFENT	TWKE	DFENT	TCCB	DFENT	TFQM	DFENT	TOUT	DFENT	TFLH	DFENT	TPCH.PAGE.SBTTL	TPMLIB -- ..FSCB  (FIND SCB ENTRY);+;; ..FSCB -- SUBROUTINE TO SEARCH FOR A NAMED STATION CONTROL BLOCK.;; INPUT CONDITIONS:;;	R1 -- VIRTUAL ADDRESS OF       THE FIRST WORD;	      OF A THREE WORD BLOCK CONTAINING A SCB NAME (6 CHARA. ASCII).;;	UASR 0,1 -- MAP THE APPLICATION COMMON AREA,;		 	WHICH HOLDS THE SCB ALPHA TABLE.;; CALLING SEQUENCE:;;	CALL  ..FSCB;; OUTPUT CONDITIONS:;;	IF SCB FOUND:;		'C' CLEAR AND;	UISAR3 -- SCB ENTRY ADDRESS.;;	IF ENTRY NOT FOUND:;		'C' SET;;	REGISTERS R3,R4,R5 DESTROYED.;;;; REGISTERS ALTERED:;;	UASR3;; INTERNAL REGISTER USAGE:;;	UASR3 -- SCB ENTRY ADDRESS;	R3 -- TRIAL ADDRESS;	R4 -- LOWER LIMIT OF TRIAL ADDRESS;	R5 -- UPPER LIMI      T OF TRIAL ADDRESS;	.SCBTZ -- 2*N-2 WHERE N IS THE NUMBER OF SCB ENTRIES;-;	ENTPT	FSCB;;	PUSH	<R0,R2,R1>	; SAVE THE VOLATILE REGISTERS;; FIRST SEARCH THE NON-TERMINAL SCBS;	MOV	.SCBTA,R4	;INITIALIZE LOWER TRIAL ADDRESS LIMIT	MOV	R4,R5		;INITIALIZE UPPER TRIAL ADDRESS LIMIT	ADD	.SCBTZ,R5	CALL	10$		; DO THE SEARCH	BCC	5$		; FOUND;; NOW SEARCH THE SCBS FOR TERMINALS;	MOV	.SCBTT,R4	; LOWER LIMIT	MOV	R4,R5		; SET	ADD	.SCBTS,R5	; UPPER LIMIT	CALL	10$		; DO THE SEARCH5$:	POP	<R1,R2,R0>	; RESTORE THE REGISTERS	RETU      RN;; ROUTINE TO BINARY SEARCH AN SCB ALPHA TABLE;10$:	CMP	R4,R5		;HAVE UPPER & LOWER LIMITS CROSSED?	BHI	50$		;YES -- END OF SEARCH (NAME NOT FOUND)	MOV	R4,R3		;NO -- SET TRIAL ADDRESS MIDWAY BETWEEN LOWER	ADD	R5,R3		;AND UPPER LIMITS	ROR	R3		;(DIVIDE 17-BIT SUB BY TWO)	BIC	#1,R3		;(ROUND DOWN);	MOV	@R3,@#UISAR3	;MAP TRIAL SCB ENTRY	MOV	#60000+S.NAM,R2	; TRIAL ADDRESS OF SCB NAME	MOV	#6,R0		; NUMBER OF BYTE TO CHECK	MOV	2(SP),R1	; GET SCB NAME TO FIND15$:	CMPB	(R2)+,(R1)+	; COMPARE CURRENT CHARACTERS	BHI	30      $		;TRIAL VALUE HIGH -- LOWER UPPER LIMIT	BLO	40$		;TRIAL VALUE LOW -- RAISE LOWER LIMIT	SOB	R0,15$		; TRY NEXT CHARACTER				;MATCH -- SCB NAME FOUND, RETURN WITH				;THE SCB ENTRY ADDRESS IN UASR3	CLC;20$:				;COMMON EXIT	RETURN	;30$:	MOV	R3,R5		;LOWER UPPER LIMIT TO ENTRY BELOW TRIAL ADDRESS	TST	-(R5)		;(SUB #2,R5)	BR	10$		;TO NEXT TRIAL;40$:	MOV	R3,R4		;RAISE LOWER LIMIT TO ENTRY ABOVE TRIAL ADDRESS	TST	(R4)+		;(ADD #2,R4)	BR	10$		;TO NEXT TRIAL;50$:	SEC			;SCB NAME NOT FOUND	BR	20$.PAGE.SBTTL	TPMLIB --       ..ALLC  (BITMAP ALLOCATOR);+;; ..ALLC -- BITMAP ALLOCATOR;;;;;;;;  GENERALIZED BITMAP ALLOCATE/DEALLOCATE ROUTINE;;; INPUT:;; R3:	NUMBER OF CONTIGUOUS BITS NEEDED; R4:	POINTER TO BIT MAP DESCRIPTOR BLOCK:-;	WD.00	START ADDRESS OF BIT MAP;	WD.01	END ADDRESS OF BIT MAP;	WD.02	BYTE ADDRESS TO START ALLOCATION FROM;;;;; OUTPUT:;	'C' SET IF ALLOCATION FAILURE;	'C' CLEAR IF ALLOCATION SUCCESSFUL; R2: LAST BYTE ALLOCATED FROM IN MAP (UPDATED); R3: 1ST BIT ALLOCATED IN MAP, OR -1 IF ALLOCATION FAILED;	R0,R1,R4,R5 D      ESTROYED;;;; FIRST WE SEARCH FOR A CONTIGUOUS CHAIN OF BITS OF SUFFICIENT; LENGTH.  DURING THE SEARCH, THE REGISTERS AND STACK ARE USED; AS FOLLOWS;;;; R0: TEMP   = CONTENTS OF CURRENT BYTE IN MAP; R1: WRAP   = DISTANCE FROM CURRENT BYTE TO END OF MAP IN WORDS; R2: BYTE   = POINTER TO CURRENT BYTE IN MAP; R3: LENGTH = NUMBER OF CONTIGUOUS BITS NEEDED; R4: COUNT  = NUMBER OF FREE BITS IN CHAIN SO FAR; R5: BITS   = NUMBER OF BITS LEFT TO EXAMINE IN CURRENT BYTE;; (SP+2): DONE  = NUMBER OF WORDS TILL WHOLE MAP       IS EXAMINED; (SP)  : START = BITMAP START ADDRESS;; CALLING SEQUENCE:;;	CALL ..ALLC;;;-;;; REGISTER, STACK DEFINITIONS;	TEMP   = %0	WRAP   = %1	BYTE   = %2	LENGTH = %3	COUNT  = %4	BITS   = %5;	DONE = 2;;;;;	ENTPT	ALLC.DMALC::			; ENTRY POINT FOR DM TASK	MOV	(R4)+,R0	; GET STRAT ADDRESS OF BIT MAP	MOV	(R4)+,R1	; AND THE END ADDRESS	MOV	(R4)+,R2	; AND THE ALLOCATION ADDRESS;	CMPB	(R1)+,(R1)+	; STEP TO LAST BYTE IN MAP	MOV 	R1,-(SP)	; ABOVE MADE IT LAST BYTE +2	SUB 	R0,@SP		; LAST BYTE - 1ST BYTE = # BYTES IN       MAP	ASR	@SP		; MAKE IT # OF WORDS = "DONE"	SUB	BYTE,WRAP	; LAST - CURRENT = DIST TILL WRAPARND	ASR	WRAP		; CONVERT TO WORDS	ADC 	WRAP		; ROUND UP LOST BYTE	MOV	R0,-(SP)	; BEGIN OF BITMAP = "START"	MOVB	@BYTE,TEMP	; PICK UP FIRST BYTE TO EXAMINE	MOV	#9.,BITS	; EXAMINE WHOLE FIRST BYTENOTCHN: CLR 	COUNT		; NOT IN CHAIN -- ZERO # BITS IN CHNNXTBIT:	DEC 	BITS		; STEP TO NEXT BIT 	BNE 	GETBIT		; IF IN SAME BYTE GO GET ITNXTBYT:	INC	BYTE		; STEP TO NEXT BYTE	BIT	#1,BYTE		; IN NEW WORD ?	BNE	 GETBYT		; NO-- GET T      HE BYTENEWWRD:	DEC	DONE(SP)	; ONE LESS WORD TILL FAILURE	BEQ 	FAIL		; NO MORE WORDS -- FAILURE !!!	DEC 	WRAP		; ONE LESS WORD TILL WRAP-AROUND	BNE 	TSTWRD		; DON'T WRAP YET	MOV 	(SP),BYTE	; WRAP NOW !!!	CLR	COUNT		; WRAP-AROUND BREAKS THE CHAINTSTWRD:	TST	@BYTE		; ANY FREE BITS IN THIS WORD ?	BNE 	GETBYT		; YES -- GET A BYTE	CLR 	COUNT		; NO -- BREAK THE CHAIN	TST	(BYTE)+		; AND STEP TO NEXT WORD	BR	NEWWRD		; AND TRY ITGETBYT:	MOVB	@BYTE,TEMP	; GET BYTE -- ANY FREE BITS ?	BNE	FSTBIT		; YES -- START CHECKING       THE BITS	CLR	COUNT		; NO -- BREAK THE CHAIN	BR	NXTBYT		; AND GO GET THE NEXT BYTEFSTBIT:	MOV	#8.,BITS	; 1ST BIT IN A BYTE -- EIGHT TO DOGETBIT: RORB	TEMP		; CHECK BIT	BCC 	NOTCHN		; ALLOCATED -- BREAK CHAIN & TRY NXT	INC 	COUNT		; FREE -- INCREMENT CHAIN COUNT	CMP 	COUNT,LENGTH	; CHAIN LONG ENOUGH YET ?	BNE 	NXTBIT		; NO -- TRY NEXT BIT;;; OUR SEARCH HAS SUCCEEDED.  NOW WE SET UP FOR AND CALL THE BIT; STRING SETTING/CLEARING ROUTINE TO CLEAR THE CHAIN FOR US,SET THE; LAST BYTE ALLOCATED FROM, AND RETURN;;	      MOV 	BYTE,2(SP)	; SAVE LAST BYTE ALLOCATED FROM	SUB	(SP),BYTE	; GET DISPL OF LAST BYTE IN CHAIN	ASH	#3,BYTE		; MAKE IT A BIT DIPLACEMENT	ADD	#9.,BYTE	; ABOVE + 9 - BITS LEFT IN LAST BYTE	SUB	BITS,BYTE	; = DISPL OF LAST BIT IN STRING +1	SUB	LENGTH,BYTE	; FIND 1ST BIT IN STRING	MOV	(SP)+,R0	; GET START ADRS OF MAP	CLR	R1		; SWITCH TO CLEAR THE BITS	MOV	R2,-(SP)	; SAVE 1ST BIT IN STRING	CALL	..SETC		; ZAP THE WHOLE CHAIN	MOV	(SP)+,R3	; RETURN 1ST BIT ALLOCATED	MOV	(SP)+,R2	; RETURN LAST BYTE ALLOCATED FROM	CLC      	RETURN  FAIL:	DEC	BYTE		; CURRENT BYTE POINTER IS ON NEXT NOT LAST BYTE	MOV	#-1,R3		; SEARCH FAILED !!!!!	CMP	(SP)+,(SP)+	; CLEAN STACK	SEC	RETURN.PAGE.SBTTL	TPMLIB -- ..SETC  (BIT STRING SET/CLEAR SUBROUTINE);+;; ..SETC -- BITMAP STRING CLEAR/SET ROUTINE;;;;; THIS IS THE BIT STRING SET/CLEAR SUBROUTINE.; IT IS CALLED BY BOTH "ALLOCATE" AND "DEALLOCATE.;;; INPUT:;;R0: START ADRS OF BITMAP;R1: 0 FOR "CLEAR", -1 FOR "SET";R2: 1ST BIT IN STRING;R3: LENGTH OF STRING;;;; OUTPUT CONDITIONS:;;	REQURED BITS SET/CL      ERED AS REQUESTED.;; CALLING SEQUENCE:;;	CALL ..SETC;;-;;	ENTPT	SETC	MOV	R2,R5		; GET DISPL OF 1ST BIT IN STRING	ASH	#-4,R5		; GET DISPL OF 1ST WORD IN STRING	ASL	R5		; MAKE IT EVEN BYTE	ADD	R5,R0		; GET ADRS OF 1ST WORD IN STRING	BIC	#177760,R2	; GET DISPL OF 1ST BIT IN 1ST WORD	MOV	(R0),R4		; GET 1ST WORD	NEG	R2		; WANT TO RIGHT SHIFT	ASHC	R2,R4		; MOVE LEADING BITS OF 1ST WRD INTO RESULT	MOV	R4,(R0)		; SAVE IN CASE ONLY 1 WORD IN STRING	ADD	#16.,R2		; COMPUTE # BITS LEFT IN 1ST WORD	BR	INIMSK		; 1ST TIME       THRU MAY BE < 16 BITS  LEFTMSKLOP:	MOV	#16.,R2		; AFTER 1ST TIME ALWAYS 16. BITS LEFT IN WRDINIMSK:	MOV	R1,R4		; GET MASK IN SHIFT REGISTER	CMP	R3,R2		; LAST WORD IN STRING ??	BGT	SHIFT		; NO	MOV	R3,-(SP)	; YES-- PUT -[# BITS IN WRD NOT IN STRING]	SUB	R2,(SP)		; ON STACK FOR USE AFTER SHIFTING IN MS BITS BITS	MOV	R3,R2		; AND DO ONLY THE NUMBER LEFT IN STRINGSHIFT:	NEG	R2		; RIGHT SHIFT	ASHC	R2,R4		; MOVE APPROPRIATE # MASK BITS INTO RESULT	ADD	R2,R3		; THAT MANY FEWER LEFT TO GO IN STRING	BEQ	LSTBIT		; AT       LAST BIT IN STRING ?	MOV	R5,(R0)+	; NO-- SAVE THE WORD, STEP TO NEXT	BR	MSKLOP		; AND LOOPLSTBIT:	MOV	(R0),R4		; AT LAST BIT-- GET CURRENT WORD	ASH	R2,R4		; SKIP OVER ALL BITS OF WORD IN STRING	ASHC	(SP)+,R4	; MOVE IN THE TRAILING BITS	MOV	R5,(R0)		; SAVE THE LAST WORD	RETURN.PAGE.SBTTL	TPMLIB -- ..DALL  (BITMAP DEALLOCATOR);+;; ..DALL -- BITMAP DEALLOCATOR;;;;; INPUT:;	R0:	START ADDR. OF BITMAP;	R2:	1ST BIT TO RETURN;	R3:	LENGTH OF STRING TO RETURN;;;-	ENTPT	DLLC.DMDLC::				; ENTRY POINT FOR DM TASK	PUSH	      <R1,R4,R5>	MOV	#-1,R1			; SET UP TO DE ALLOCATE	CALL	..SETC			; DO IT	POP	<R5,R4,R1>	RETURN.PAGE.SBTTL	TPMLIB -- ..TVAL  (VALIDATE TRANSACTION);+;; ..TVAL -- VALIDATE AUTHORISATION GIVEN TRANSACTION NAME.;; ..TVA1 -- VALIDATE AUTHORISATION GIVEN TDT ADDRESS;;; THIS ROUTINE VALIDATES THAT THE TRANSACTION IS VALID; (DEFINED FOR THE APPLICATION) AND THAT THE REQUESTOR; IS ALLOWED TO INITIATE THE TRANSACTION.;;; ALL TRANSACTION TYPES ARE RECORDED, BY NAME, IN THE TRANSACTION; DESCRIPTOR TABLE (TDT). A TRANSACTI      ON IS VALID IF ITS TYPE (NAME); IS SPECIFIED IN THE TDT.;; EACH USER IS AUTHORISED TO INITIATED A SET OF TRANSACTION TYPES; (THE USER'S WORK CLASS). THE AUTHORISATION IS HELD AS A BIT; MAP. A USER IS AUTHORISED TO INITIATE A TRANSACTION IF THE BIT IS SET; IN THE AUTHORISATION BITMAP WHICH CORRESPONDS TO THE TRANSACTION; TYPE NUMBER SPECIFIED IN THE TDT ENTRY FOR THE TRANSACTION.;; INPUT CONDITIONS:;	R2	POINTER TO TRANSACTION NAME IF ENTRY POINT TVAL;;	R0	TDT ENTRY ADDRESS IF ENTRY POINT TVA1;;	R1	POINTER TO       THE BIT MAP TO VALIDATE THE INITIATOR;		ZERO IF VALID FOR ALL TRANSACTIONS;;	ASR3 MAPS THE SCB FOR THE VALIDATING STATION.;;;;	UASR 0,1 MAP THE APPLICATION COMMON AREA.;; OUTPUT CONDITIONS:;;	'C' SET IF ERROR DETECTED;		R1 CONTAINS ERROR CODE:;			ER.ITN -- NO SUCH TRANSACTION;			ER.NOR -- NOT AUTHORISED;;	'C' CLEAR IF TRANSACTION OPENED CORRECTLY;		R0 CONTAINS POINTER TO TDT ENTRY FOR THE TRANSACTION;;	REGISTERS R1,R2,R4 DESTROYED;; CALLING SEQUENCE;;	CALL 	<ENTRY POINT>;;-;;	.ENABL	LSB	ENTPT	TVAL;;; FIND       THE TDT ENTRY FOR THE SPECIFIED TRANSACTION;	MOV	.TDTSZ,R4		; NUMBER OF TDT ENTRIES	BEQ	35$			; NONE ?? RETURN ERROR	MOV	.TDTBA,R0		; BASE ADDRESS OF TDT20$:	CMP	(R2),T.NAM+00(R0) 	; CHECK FIRST 2 CHARACTERS	BNE	30$		  	; NOT THIS ONE	CMP	2(R2),T.NAM+02(R0) 	; MAYBE -- TRY THE NEXT 2 CHARACTERS	BNE	30$		  	; NO	CMP	4(R2),T.NAM+04(R0) 	; COULD BE -- TRY THE LAST 2	BEQ	40$		  	; GOT IT !!!30$:	ADD	#T.TDTSZ,R0		; GET NEXT ENTRY	SOB	R4,20$			; TRY THE NEXT ENTRY;; CANNOT FIND IT -- RETURN ERROR;35$:	MOV	#ER.ITN      ,R1		; TRANSACTION IDENTITY NOT KNOWN37$:	INCB	S.TINV+60000		; UPDATE THE COUNT OF INVALID REQUESTS	SEC	RETURN;; CHECK IF INITIATOR VALID;40$:	ENTPT	TVA1;; ENTRY POINT IF TDT ENTRY KNOWN;	BIT	#TF.DSB,T.TFG(R0) ;IS THE TRANSACTION DISABLED?	BEQ	45$		;YES - THEN LEAVE WITH ERROR	MOV	#ER.DSB,R1	;SET ERROR CODE	BR	37$45$:	TST	R1			; IS THERE A BIT MAP?	BEQ	50$			; NO -- SO VALID FOR ALL TRANSACTIONS;; CHECK THE BIT MAP;	MOVB	T.BYT(R0),R2		; GET TRANSACTION NUMBER:					; -- BYTE TO CHECK IN BIT MAP;	ADD	R2,R1			      ; GET ADDRESS OF BYTE	BITB	T.MSK(R0),(R1)		; SEE IF THE REQUIRED AUTHORISATION					; BIT IS SET	BEQ	60$			; NO --- NOT AUTHORISED	CLC50$:	RETURN60$:	MOV	#ER.NOR,R1		; RETURN NOT AUTHORISED ERROR CODE	BR	37$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..TOPN  (OPEN TRANSACTION);+;; ..TOPN -- OPEN TRANSACTION; ..TOP2 -- OPEN SPAWNED TRANSACTION					;***CP01;;; OPENING A TRANSACTION SPECIFIES THAT A NEW TRANSACTION ("INSTANCE"); IS TOBE CREATED. AN INSTANCE OF A TRANSACTION IS RECORED BY A; CCB WHICH IS LINKED TO THE INIT      ATING STATION'S SCB. ALL MESSAGES; FROM THAT SCB ,WHILE THE TRANSACTION IS OPEN, WILL BE ASSUMED TO; BE INITIATING A NEW EXCHANGE FOR THE TRANSACTION.; EXCEPT FOR SPAWN TRANSACTIONS,					;***CP01; ONLY ONE OPEN TRANSACTION IS ALLOWED PER STATION; ONCE A TRANSACTION; IS CLOSED NO MORE INPUT MESSAGES CAN BE PROCESSED BY THE TRANSACTION; , BUT A NEW TRANSACTION CAN BE OPENED ON THE STATION.; THERE CAN BE AN UNLIMITED NUMBER OF TXNS SPAWNED BY ONE TST STATION.	;***CP01;; TO OPEN A TRANSACTION:;;	1. A CCB IS OBT      AINED, INITILISED, AND LINKED TO;	   TO THE INITATING SCB.;;	2. ANY DISC SPACE REQUIRED FOR TRANSACTION SLOTS IS OBTATINED.;;	3. OBTAIN AND INITALISE THE SLOT;; NOTE:;	THE TDB FOR THE TRANSACTION WILL ALREADY BE CACHED IN MEMORY;	AND ITS BDB PLACED IN ITS TDT ENTRY.;;;; ROUTINE TO OPEN A TRANSACTION;; INPUT CONDITIONS:;;   ..TOP2								;***CP01;	R3	INDEX OF OWNER CCB					;***CP01;   BOTH:;	R0	VIRTUAL ADDRESS OF TDB;	UISAR3 -- BASE ADDRESS OF THE SCB;	UISAR4 -- MAPS THE BUFFER HOLDING THE TDB;;	UASR 0,1 MAP       THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS:;	'C' CLEAR IF TRANSACTION OPENED SUCCESSFULLY;;		CCB CREATED AND INITALISED;		R5 -- CCB ADDRESS;;;;	'C' SET IF ERROR;		R1 -- 	'ER.OPE' TRANSACTION ALREADY OPEN;			'ER.DSB' TRANSACTION DISABLED;			'ER.NCB' NOT ENOUGH RESOURCES FOR TRANSACTION;;	REGISTERS R0,R1,R2,R3,R4,R5 DESTROYED;;; CALLING SEQUENCE:;;	CALL	..TOPN;    OR	CALL	..TOP2							;***CP01;;-;	.ENABL	LSB;	ENTPT	TOPN	CLR	R3			; CLEAR OWNER (NOT SPAWNED)					; EVENTUALLY, C.OWN := 0TOP2:;; CHECK TO SE      E IF THERE IS ALREADY AN OPEN TRANSACTION;	MOV	S.CCB+60000,R5		; GET THE FIRST CCB ON THIS STATION	BEQ	10$			; THRERE ISN'T ONE -- SO NO TRAN.	BIT	#CF.CLD,C.FLG(R5) 	; IS IT OPEN?	BNE	10$			; NO SO LETS TRY AND OPEN ONE	MOV	#ER.OPE,R1		; YES -- ERROR RETURN5$:	SEC	RETURN10$:;									;**CP01+; ENTRY POINT FOR SPAWNED TXNS. FOR TST STATIONS, IT IS POSSIBLE TO; HAVE SEVERAL CCBs FOR ACTIVE TRANSACTIONS QUEUED TO AN SCB.;	ENTPT	TOP2;									;**CP01-; IS THE TRANSACTION DISABLED?;	MOV	#ER.DSB,R1		; ASSUME IT I      S	MOV	Y.TDT(R0),R2		; GET THE TDT	BITB	#TF.DSB,T.TFG(R2) 	; CHECK TO SEE	BNE	5$			; YES IT IS SO RETURN ERROR	CMPB	T.ERR(R2),.TERR		; ERROR THREASHOLD REACHED?	BHI	5$			; YES SO DISABLED	TSTB	.OVFLW			; OVERFLOW IN USE	BNE	100$			; WAIT TO GO AWAY	BIT	#SY.CRT!SY.OPE,.SYFLG	; CRASH RESTART OR OPENS INPROGRESS	BNE	100$			; WAIT FOR IT TO COMPLETE	MOV	#.CCBLH,R4		; GET A CCB	CALL	..QRHD			; FROM THE FREE CCB LIST	BCS	100$			; NO CCB	MOV	R5,-(SP)		; SAVE THE CCB ADDRESS;; INITALISE THE CCB;; ???????????????????      ????? ASSEMBLY TIME CHECKS FOR CORRECT OFFSETS ???	;***CP01	CMP	(R5)+,(R5)+	;MOVE CCB POINTER	CLR	(R5)+			; CLEAR EXCHANGE & LOCK NUMBERS	MOV	Y.TDT(R0),(R5)+		; TDT ENTRY ADDRESS	MOV	@#UISAR3,(R5)+		; GET THE SCB INTO THE CCB	MOV	S.CCB+60000,(R5)+ 	; LINK THE CCB	MOV	(SP),S.CCB+60000	; TO THE SCB	MOV	#<C.FLG-C.CCB>/2,R4	; CLEAR REST15$:	CLR	(R5)+			; OF CCB	SOB	R4,15$			;	MOVB	R3,(R5)+		; OWNER	CLRB	(R5)+	CLR	(R5)+			; SPAWN QUEUE;; GET INDEX TABLE ENTRY;;	MOV	(R5),R1		MOVB	#AT.NGO,X.ST(R1) 	; SET THE STATU      S TO NO GO;; ALLOCATE SPACE FOR THE TRANSACTION SLOT; ONLY IF EXCHANGE RECOVERY REQUIRED OR THE SLOT HAS A; STAGE AREA.;; CALCULATE THE SIZE OF THE DISC SPACE REQUIRED PER SLOT;	MOV	Y.STZ(R0),R4		; GET THE SLOT SIZE	ADD	#M.MSIZ,R4		; ALLOW FOR THE MCB AND TST					; LIBRARY CONTEXT SPACE					; IN THE SLOT (64. WORDS).	BITB	#TF.TRC!TF.64,T.TFG(R2)	; TRACE THIS TRANSACTION?	BEQ	20$			; NO	INC	R4			; ALLOW FOR TRACE CONTEXT20$:	INC	T.NTR(R2)		; UPDATE NUMBER OF TIME TYPE REQUESTED;; R4 NOW CONTAINS THE SLOT SIZ      E IN 32 WORD BLOCKS; NEED TO GET INTO 256 WORD BLOCKS;	MOV	(SP),R5			; GET THE CCB	MOV	R4,-(SP)		; SAVE SLOT SIZE	ADD	#7,R4			; GET TO NEXT BOUNDARY	ASH	#-3,R4			; GET TO MOD 256 SIZE	MOV	Y.FLG(R0),C.FLG(R5) 	; SET TRANSACTION FLAGS	MOVB	R4,X.SZ(R1)		; SAVE THE SLOT SIZE INCASE OF CRASE	MOV	#-1,X.SDA(R1)		; SET SLOT DISC ADDRESS NOT IN USE	MOV	R4,-(SP)		; SAVE R4	BIT	#YF.NEX,Y.FLG(R0)	; EXCHANGE RECOVERY REQUIRED?	BNE	80$			; NO	CALL	ALLDS			; ALLOCATE THE DISC SPACE	BCS	85$			; NO SPACE SO GO CLEAN UP	MOV	      4(SP),R5		; GET THE CCB BACK	MOV	R3,C.DA2(R5)		; SAVE DISC ADDR. IN CCB;; GET FIRST SLOT AREA;50$:	CALL	ALLDS			; ALLOCATE THE SPACE	BCS	85$			; NO SPACE SO GO CLEAN UP	MOV	4(SP),R5		; GET THE CCB BACK	MOV	R3,C.DA1(R5)		; SAVE FIRST SLOT ADDRESS60$:;; STACK:;	SP+00	SLOT SIZE MOD 256.;	SP+02	SLOT SIZE MOD 32.;	SP+04	CCB ADDRESS;	TST	(SP)+			; CLEAN THE STACK	MOV	(SP)+,R1		; GET THE SLOT SIZE	MOV	(SP),R4			; GET THE CCB	CALL	GTSLOT			; GO GET THE SLOT	BCS	90$			; NO SPACE FOR THE SLOT SO CLEANE UP	MOV	(SP)+,R      5		; GET CCB BACK	INC	.NACTT			; UPDATE THE NUMBER OF ACTIVE TRANACTIONS	INC	S.TRST+60000		; UPDATE NUMBER OF TRANSACTION FROM THIS STATION					; NOTE 'C' STILL CLEAR	ADD	#1,.TRNID+2		; UPDATE THE GLOBAL	ADC	.TRNID			; TRANACTION SEQUENCE NUMBER	MOV	.TRNID,(R5)		; STORE TRANSACTION	MOV	.TRNID+2,2(R5)		; SEQUENCE NUMBER IN CCB FOR THIS INSTANCE70$:	RETURN80$:	BITB	#YF.STA,Y.FLG(R0) 	; IS THERE A STAGE AREA?	BNE	50$			; YES S0 GET ON DISC AREA FOR END	BR	60$;;;; ROUTINE TO ALLOCATE DISC SPACE VIA THE MESSAGE;       MANAGER FILE BIT MAP.; IF THE SPACE CANNOT BE OBTAINED THE THREAD IS SUSPENDED; TO BE RESTARTED WHEN DISC SPACE IS RELEASED.;; INPUT CONDITIONS:;	SP+2	NUMBER OF BLOCKS TOBE ALLCATED.;; OUTPUT CONDITIONS:;	R3	RELATIVE BLOCK NUMBER IN FILE;		AT BASE OF ALLOCATION;ALLDS:	MOV	2(SP),R3		; GET THE SIZE	MOV	#.MMAPB,R4		; BIT MAP DESCRIPTOR BLOCK	CALLR	..ALLC			; ALLOCATE VIA BIT MAP;; COULD NOT ALLOCATE ALL THE RESOURCES;85$:	CMP	(SP)+,(SP)+		; CLEAN THE STACK90$:	MOV	(SP)+,R1		; GET THE CCB	CALL	TICLR			; CLEAN       UP100$:	MOV	#ER.NCB,R1		; SET THE ERROR CODE	SEC	BR	70$	.DSABL	LSB									;-42*CP01.PAGE.SBTTL	TPMLIB -- ..TCLS  (CLOSE TRANSACTION);+;;;; ..TCLS -- ROUTINE TO LOGICALLY CLOSE A TRANSACTION; ..TCL2 -- CLOSE TXN USING CCB ADDRESS					;***CP01;; INPUT CONDITIONS:;; ..TCLS;	R3/APR3	SCB POINTER (VIRTUAL -- MUST BE MAPPED IN TO CURRENT SPACE);		ASSUMED THAT SCB MAPPED ASR3 RELATIVE; ..TLC2;	R0	CCB FOR TXN TO BE CLOSED				;***CP01; BOTH:;	UASR 0,1 MAP THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS:;	'C' CLEAR I      F CLOSED CORRECTLY;;	'C' SET IF NOT CLOSED;		R1 CONTAINS ERROR CODE:;		ER.NOP	-- NO OPEN TRANSACTION;;	REGISTER R0 DESTROYED;; ..TLC2 CALLED BY:;	EM: OPETRN ROUTINE: INDICATE THAT TXN IS CLOSED W/O ABORTING TXN.;;; IF THERE IS NO ACTIVE MESSAGE FOR THE TRANSACTION; AN END TRANSACTION IS PERFORMED.;; IF THERE IS AN ACTIVE MESSAGE FOR THE TRANSACTION THE TRANSACTION; IS MARKED AS CLOSED SO THAT THE END TRANSACTION FUNCTIONS WILL; BE PERFORMED WHEN THE PROCESSING OF THE MESSAGE IS COMMPLETE.;;-;	.ENABL	LSB	ENT      PT	TCLS;	MOV	S.CCB(R3),R0		; GET THE FIRST CCB	BEQ	110$			; NO CCB SO NO TRAN TO CLOSE;									;**CP01+; ENTRY POINT FOR ..TCL2, CLOSE BY CCB;	ENTPT	TCL2									;**CP01-	BIT	#CF.CLD,C.FLG(R0) 	; ALREADY CLOSED?	BNE	110$			; YES -- SO ERROR AS BEFORE;;	BIS	#CF.CLD,C.FLG(R0) 	; MARK THE TRAN AS CLOSED;;IS THERE AN ACTIVE EXCHANGE OR ONE STILL TO PROCESS?;	BITB	#AT.EXA,@C.IAT(R0) 	; EXCHANGE ACTIVE					; OR WAITING TO BE PROCESSED?	BNE	10$			; YES -- SO DO NOT PROCESS END UNTIL COMPLETE;; NEED TO END THE TRA      NSACTION;	CALL	..TEND10$:	CLC20$:	RETURN;;;110$:;; RETURN NO OPEN TRANSACTION ERROR;	MOV	#ER.NOP,R1200$:	SEC	BR	20$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..GTDB  (GET TDB);;;+;; ..GTDB -- GET TRANSACTION DESCRIPTOR BLOCK;; THIS ROUTINE IS CALLED TO GET THE TRANSACTION DESCRIPTOR BLOCK; FOR A GIVEN TRANSACTION TYPE.;;; INPUT CONDITIONS:;	R5 -- TDT ENTRY FOR TRANSACTION TYPE;;	'C' SET IF ERR R1 CONTAINS THE ERROR CODE:;		'ER.NSP' NO SPACE AVAILABLE IN THE CACHE;		'ER.IOX' I-O ERROR WHEN READING THE TDB;;; OUTPUT CO      NDITIONS:;	'C' CLEAR IF TDT OBTAINED;	R0  KT ADDRESS OF BLOCK CONTAINING THE TDB;	R5  TDT ENTRY ADDRESS;;	R1,R2,R3 DESTROYED;	ENTPT	GTDB	MOV	#TDBLUN,R3		; GET THE TDB FILE LUN	MOVB	T.NBK(R5),R1		; GET NUMBER OF BLOCKS	ASH	#3,R1			; MAKE 32 WORDS	MOV	.TDBBA+2,-(SP)		; GET	ADD	T.DAD(R5),(SP)		; DISC	MOV	.TDBBA+0,-(SP)		; ADDRESS	ADC	(SP)			; OF TDB	MOV	SP,R0	CALL	$GTBL			; GET THE BLOCK	MOV	R1,T.BDB(R5)		; SAVE THE BDB	MOV	(SP)+,(SP)+		; TAKE DISC ADDRESS OFF THE STACK	RETURN.PAGE.SBTTL	TPMLIB -- ..RTBD  (REL      EASE TDB);;; INPUT CONDITIONS:;	R5  TDT ENTRY ADDRESS;; OUTPUT CONDITIONS;	R1,R2 DESTROYED;	ENTPT	RTDB	MOV	T.BDB(R5),R1		; GET THE BDB	CALLR	$RTBL.PAGE.SBTTL	TPMLIB -- ..TEND/SABOT/SEXRT  (CREATE THREAD  FOR END TRANSACTION);;+;; ..TEND -- END A TRANSACTION;; SABOT  -- ABORT TRANSACTION;; SEXRT -- RESTART EXCHANGE;;; THIS ROUTINE ACTIVATES A NEW THREAD TO; PROCESS THE END OF A TRANSACTION;; INPUT CONDITIONS:;	R0	CCB FOR THE TRANSACTION;	R5	ERROR CODE FOR ABORT;;	UASR 0,1 MAP THE APPLICATION COMMON AREA.;; O      UTPUT CONDITIONS:;;	NEW THREAD CREATED TO PROCESS THE END OF THE TRANSACTION;;	REGISTERS R0,R1,R4 DESTROYED;;;; CALLING SEQUENCE:;;	CALL <ENTRTY POINT>;;-;	.ENABL	LSBSEXRT::	MOV	#ERTH,R4		; RESTART EXCHANGE THREAD	MOV	#AT.EXR,-(SP)		;SAVE STATUS	BR	5$SABOT:	MOV	#ABTH,R4		; GET ABORT THREAD NAME	MOV	#AT.ABO,-(SP)		; SET ABORT STATE	BR	5$;	ENTPT	TEND;;;	MOV	#AT.ENT,-(SP)	 	; END TRANSACTION	MOV	#EDTH,R4		; GET THE THREAD ADDRESS5$:	TST	C.SCB(R0)		; CHECK CCB	BEQ	30$			; ALL DONE	MOV	C.IAT(R0),R1		; GET THE AT      T	BITB	#AT.EXR!AT.ABO!AT.ENT,X.ST(R1) ; THREAD ALREADY ACTIVE	BNE	30$			; YES SO DO NOT START THREAD	MOVB	(SP),X.ST(R1)		; SET THE STATUS	MOV	R0,-(SP)		; SAVE THE CCB;; CALL THE SMALL POOL FOR A CONTEXT BLOCK:;	MOV	#EN.DCB,R1		; SIZE IN BYTES OF CONTEXT BLOCK20$:	CALL	..ALCB			; ALLOCATE	BCS	40$			; NO SPACE !!!!25$:	MOV	(SP)+,R1		; GET CCB INTO R1 TO PASS TO END ROUTINE	TSTRT$	R0,R4,#EN.DCB		; START A THREAD FOR END TRANSACTION30$:	TST	(SP)+	RETURN40$:	TSTB	.EMER			; EMMERGENCY NODE IN USE?	BNE	50$			; YES      	MOV	#.ENDCX,R0		; USE IT	INCB	.EMER	BR	25$50$:	$DELAY	BR	20$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- EDTH    (END TRANSACTION THREAD);; CODE FOR END TRANSACTION THREAD;; THIS THREAD TERMINATES A TRANSACTION INSTANCE;;	1. ALL STAGED ACTIONS ARE PERFORMED.;;	2. ALL RESOURCES FOR THE TRANSACTION ARE RELEASED;; INPUT CONDITIONS:;	R0 -- CONTEXT BLOCK ADDRESS;;	R1 -- CCB FOR TRANSACTION TO BE TERMINATED;;	.ENABL	LSBEDTH:;;; GET THE SLOT TO SEE IF ANY STAGED ACTIONS;	MOV	R1,-(SP)		; SAVE THE CCB ADDRESS;	BIT	#CF.STA,C.FL      G(R1)	; IS THERE A SLOT WITH  A STAGE AREA?	BEQ	50$			; NO SO NO WORK TO DO	MOV	R1,R0			; FIRST WRITE	CALL	WTSLT			; WRITE THE SLOT TO DISC	MOV	(SP),R1			; RESET THE CCB1$:	MOV	C.SLT(R1),R1		; SLOT ID	CALL	LODSLT			; GET IT	MOV	(SP),R4	BCC	3$	JMP	60$			; LOAD ERROR3$:;;ON RETURN R0 CONTAINS THE KT-11 ADDRESS OF THE MESSAGE;	MOV	R0,@#UISAR3		; SET ASR3 TO MAP THE MESSAGE	BIT	#CF.JOR,C.FLG(R4)	; ANY ITEMS TOBE JOURNALLED?	BEQ	4$			; NO	CALL	..JUNL			; JOURNAL THE SLOT4$:	MOVB	60000+M.SDP,R2		; GET THE SYSTEM       ADDRESS	BEQ	50$			; NO SYSTEM SO NO STAGE	ADD	R2,@#UISAR3		; NOW MAP TO SYSTEM AREA	MOV	C.TDB(R4),R2		; GET THE TDT	BEQ	50$			; IF ZERO CRASH RESTART	CMP	G.FSZ+60000,T.MFZ(R2)	; SET THE SMALLEST FREE SPACE	BHIS	50$			; IN THE SYSTEM WORKSPACE	MOV	G.FSZ+60000,T.MFZ(R2)	; ;50$:TACOMM:;;+;;	THIS ROUTINE PERFORMS THE COMMON PROCESSING FOR END AND; ABORT TRANSACTION:-;;	1.	IF ANY DATA CHANNELS ARE CONNECTED DATA MANAGER;		IS CALLED TO DISCONNECTED THE CHANNELS AND;		RELEASE ANY RECORD LOCKS HELD BY THE TRANSACTI      ON.;;	2.	THE TRANSACTION SLOT IS DELETED (..DMES);;	3.	ANY DISC SPACE ALLOCATED FOR THE TRANSACTION SLOT;		IS RELEASED, ANY THREADS SUSPENDED WAITING FOR DISC;		SPACE ARE RESUMED.;;	4.	THE ACT ENTRY IS RELEASED.;;	5.	THE CCB IS UNLINKED FROM THE OWNER SCB AND RETURNED;		TO THE FREE LIST.;;	6.	THE END TRANSACTION JOURNAL RECORD IS WRITTEN;;	7.	THE THREAD IS TERMINATED.;;-;;; COMMON PROCESSING FOR END AND ABORT TRANSACTION;;  SP+00 CONTAINS POINTER TO CCB;;	MOV	(SP),R1			; GET THE CCB	CALL	..TFLH			; FLUSH TH      E TIMER QUEUE	MOV	C.SCB(R1),@#UISAR3	; GET SOURCE SCB	CALL	MQDEL			; FLUSH THE QUEUE;									;-7*CP06; DO A SEND TO DATA MAN;5$:	BISB	#AT.DMU,@C.IAT(R1)	; SET DM UNSTAGE IN-PROGRESS	MOV	#BF.END,.COMSB+B.FUN	; FUNCTION CODE	MOV	R1,.COMSB+B.DAT		; CCB FOR TRANSACTION	CALL	DMSEND			; SEND TO DATA MANAGER	TSUSP$				; WAIT FOR DATA MANAGER TO COMPLETE10$:	CALL	TSTABO			; ABORT ANY ACTIVE TST	BIT	#CF.LMA,C.FLG(R1)		; DID THE TRANSACTION VISIT						; A COMUNICATIONS MASTER STATION?	BEQ	20$				; NO	MOV	R1,.COMSB+B      .DAT			; GET THE CCB	CLR	.COMSB+B.DAT+4			; CLEAR PARAEMTER	CALL	LMSEN1				; SEND TO LIM	TSUSP$					; AND WAIT20$:	MOV	C.SCB(R1),@#UISAR3		; MAP THE OWNER SCB	CMPB	#SY.LSL,S.TYP+60000		; LINK SLAVE STATION	BNE	30$				; NO	MOV	R1,.COMSB+B.DAT			; GET THE CCB	MOV	@#UISAR3,.COMSB+B.DAT+4		; GET THE SCB	CALL	LMSEN1				; TELL LIM	TSUSP$30$:	MOV	C.TDB(R1),R5			; GET THE TDT	BEQ	40$	BITB	#TF.TRC,T.TFG(R5)		; TRANSACTION TRACED?	BEQ	40$				; NO	MOV	#BF.END,.COMSB+B.FUN		; SET END CODE	MOV	R1,.COMSB+B.DAT			; WITH C      CB	MOV	#.TRMAN,R5			; GET TRACE NAME	CALL	SEND				; INFORM TRACE	TSUSP$					; WAIT FOR IT40$:	MOV	C.IAT(R1),R5		; GET ATT ENTRY	CLR	X.EDP(R5)		; CLEAR UNSTAGE COUNT	CLRB	(R5)			; SET STATE OVER	MOV	(SP)+,R1		; RETURN THE CCB ADDRESS	CALL	TICLR			; CLEAN UP;; KILL THE THREAD;	DEC	.NACTT			; REDUCE THE NUMBER OF ACTIVE TRANSACTIONS	CLR	C.SCB(R1)		; CLEAR IN USE MARKERTACOM1:;;; RETURN THE CONTEXT BLOCK TO THE SMALL POOL;	MOV	#EN.DCB,R1		; NUMBER OF BYTES TO RETURN	MOV	@$TTBAD,R0		; GET CONTEXT BLOCK	CMP	#.END      CX,R0		; EMERGENCY NODE	BNE	55$			; NO	CLRB	.EMER	BR	57$55$:	CALL	..DALB			; RETURN THE SPACE57$:	TTRMN$				; TERMINATE THE TREAD60$:	MOV	R4,R1;; DISC ERROR WHEN READING SLOT INTO MEMORY;	MOV	#AB.IOX,R5	BIS	#CF.ABO,C.FLG(R1)	; SET ABORT FLAG	JMP	ABTH2			; AND ABORT THE TRANSACTION	.DSABL	LSB;; CLEAN UP THE INSTANCE;; RETURN ALL THE ALLOCATED RESOURCES FOR THIS INSTACE:; DISC SPACE; SLOT; CCB;; INPUT CONDITIONS:;	R1 CCB;;TICLR:	MOV	C.SLT(R1),R2		; DELETE	BEQ	15$			; NO SLOT TO DELETE	MOV	R1,-(SP)		; SAVE THE       CCB	CALL	..DMES			; THE MESSAGE	MOV	(SP)+,R1		; RESTORE THE CCB;; NOW FREE ANY SLOT DISC SPACE;15$:	MOV	C.IAT(R1),R4		; GET ACTIVE TRAN. TABLE ENTRY	MOV	C.DA1(R1),R2		; ANY DISC SPACE?	BEQ	20$			; NO SO DO NOT RELEASE	CALL	100$			; RELEASE SPACE20$:	MOV	C.DA2(R1),R2		; SCOND SLOT	BEQ	30$	CALL	100$			; RELEASE SPACE30$:;; FREE THE CCB;;; FIRST UNLINK FROM THE SCB;	MOV	C.SCB(R1),@#UISAR3	; MAP THE SCB	MOV	#60000+S.CCB-C.CCB,R5	; MAKE CCB ENTRY IN SCB LIKE					; A CCB OFFSET.40$:	CMP	C.CCB(R5),R1		; IS THE NE      XT IN THE CHAIN					; THE ONE TOBE DELETED?	BEQ	50$			; YES	MOV	C.CCB(R5),R5		; NO SO GET NEXT IN CHAIN	BR	40$			; AND TRY AGAIN50$:	MOV	C.CCB(R1),C.CCB(R5)	; UNLINK;; NOW RETURN TO FREE LIST;	MOV	#.CCBLH,R0		; LINK BACK INTO	CALLR	..QILE			; INTO THE FREE QUEUE;;; RELEASE DISC SPACE;100$:	CLR	R3			; GET SIZE	BISB	X.SZ(R4),R3		; OF SLOT	MOV	.MMAPB,R0		; BASE OF MAP	CALLR	..DLLC			; RETURN THE SPACE;; ABORT ACTIVE TSTS;TSTABO:	TST	C.TCB(R1)		; IS THERE AN ACTIVE TST (ONLY FOR ABORT)	BEQ	13$			; NO	MOV	#BF.AB      O,.COMSB+B.FUN	; SET ABORT FUNCTON	MOV	R1,.COMSB+B.DAT		; PUT CCB IN PARAMETER WORD	CALL	EXSEND			; SEND TO EXECUTION MANAGER	TSUSP$12$:	$DELAY				; NO SO WAIT	TST	C.TCB(R1)		;TST CLEANED UP?	BNE	12$			;NO - TRY AGAIN13$:	RETURN.PAGE.SBTTL	TPMLIB -- ..TABO  (ABORT TRANSACTION);;+;; ..TABO -- ROUTINE TO ABORT A TRANSACTION.;;; INPUT CONDITION :;	R0:	CCB OF TRANSACTION TOBE ABORTED;	R5:	ABORT CODE (WRITTEN IN THE JOURNAL RECORD);; OUTPUT CONDITIONS;;	A NEW THREAD IS CREATED TO PROCESS THE ABORT TRANSACTION.;;      	REGISTER R1 DESTROYED;;; CALLING SEQUENCE:;;	CALL ..TABO;-;	ENTPT	TABO	BIS	#CF.ABO,C.FLG(R0)		; SET ABORT FLAG	BITB	#AT.EXR,@C.IAT(R0)		; EXCHANGE RESTART IN PROGRESS	BNE	10$				; YES	BIC	#CF.ABO,C.FLG(R0)		; CLEAR ABORT FLAG FOR NOW	CALL	SABOT			; START ABORT THREAD10$:	RETURN.PAGE.SBTTL	TPMLIB -- ABTH    (ABORT TRANSACTION THREAD);; INPUT CONDITIONS:;;	THE REGISTERS IN THE CONTEXT BLOCK WILL BE SET AS FOLLOWS:;;;	R0 -- CONTEXT BLOCK ADDRESS;	R1 -- CCB ADDRESS FOR TRANSACTION TO BE ABORTED;	R5 -- ABORT CO      DE;;;	.ENABL	LSBABTH:	BIS	#CF.ABO,C.FLG(R1)	; SET ABORT FLAG	MOV	R1,-(SP)		; SAVE THE CCB;; LOG IF R5 NON-ZER0;	TST	R5			; ALREADY LOGGED?	BEQ	4$			; YES	SWAB	R5			; GET ERROR IN HIGH BYTE	MOV	#.COMSB,R4		; SET TO FILL ERROR BUFFER	MOV	@$TTBAD,(R4)+		; MY CONTEXT BLOCK	MOV	R5,(R4)+		; ERROR CODE	MOV	@#UISAR0,(R4)+		; APP. COMMON	MOV	C.TDB(R1),(R4)+		; TRANSACTION	MOV	R1,(R4)+		; CCB	MOV	C.SCB(R1),(R4)+		; OWNER SCB	MOV	#7,R3			; CLEAR3$:	CLR	(R4)+			; THE	SOB	R3,3$			; REST	DIR$	#.ESEND	BCS	4$	TSUSP$4$:	MOV      	C.SCB(R1),@#UISAR3	; MAP THE OWNER SCB	INC	S.TABO+60000		; UPDATE NUMBER OF ABORTED TRANSACTIONS ON THIS STATION	BIT	#CF.GO,C.FLG(R1)	; ANY PROCESSING DONE FOR THE TRANSACTION	BEQ	50$			; NO	BIT	#CF.STA,C.FLG(R1)	; IS THERE A STAGE AREA?	BEQ	5$			; NO	MOV	R1,R0			; SECURE THE	CALL	WTSLT			; SLOT	MOV	(SP),R15$:	CALL	ABOCOM			; DO COMMON ABORT PROCESSINGABTH2:	MOV	C.SCB(R1),@#UISAR3	; MAP SOURCE SCB	MOV	#.FMMAN,R5	;POINT AT TIM	CMPB	#SY.TIM,S.TYP+60000	; OWNER A TIM STATION?	BEQ	40$			; YES	CMPB	#SY.BSL,S.TY      P+60000 ;IS IT A BATCH STATION?	BNE	50$		;NO - CONTINUE	MOV	#.BAMAN,R5		;POINT AT BATCH MANAGER40$:	BIT	#CF.CLD!CF.CRA,C.FLG(R1); TRANSACTION CLOSED	BNE	50$			; YES	MOV	#BF.ABO,.COMSB+B.FUN	; SET THE ABORT FUNCTION CODE	MOV	R1,.COMSB+B.DAT		; CCB	MOV	C.SCB(R1),.COMSB+B.DAT+4; AND SCB	CALL	SEND			; AND TELL THE MANAGER ABOUT IT	TSUSP$50$:	BIT	#CF.HLD,C.FLG(R1)	; SPAWNED TRANSACTION AND STAGED?	BEQ	80$			; NO;; REMOVE FROM OWNER SPAWN STAGED LIST;	MOVB	C.OWN(R1),R5		; OWNER INDEX	MUL	#C.CSIZE,R5		;	ADD	.CCBBA      ,R5		; OWNER CCB ADDRESS60$:	CMP	C.SPN(R5),R1		; AT PRIOR CCB?	BEQ	90$			; YES	MOV	C.SPN(R5),R5		; NO -- GET NEXT	BNE	60$			; AND PROCESS80$:	BIS	#CF.CLD,C.FLG(R1)	JMP	TACOMM			; COMMOM END.ABORT PROCESSING90$:	MOV	C.SPN(R1),C.SPN(R5)	; UNLINK	BR	80$	.DSABL	LSB.PAGE;;; ROUTINES COMMON TO TRANSACTION ABORT AND RESTART;;;;	R1 -- CCB ADDRESS; STACK:;	SP+00	RETURN ADDRESS;	SP+02	CCB ADDRESS;ABOCOM:;									;-1*CP06; SEE IF THE SLOT IS IN A QUEUE;	MOV	C.CQE(R1),@#UISAR3	; GET THE SCB -- IF QUEUED	BEQ	5$			; NO;      ; NOW NEED TO TAKE IT OUT OF THE QUEUE;	CALL	MQDEL			; SEARCH AND DELETE	CLR	C.CQE(R1)5$:	MOV	C.SCB(R1),@#UISAR3	; NOW DO THE SAME TO	CALL	MQDEL			; THE REFLEXIVE QUEUE	MOV	C.SLT(R1),R1		; GET THE SLOT	BEQ	20$	CALL	LODSLT			; GET THE SLOT INTO MEMORY	BCS	20$			; ERROR	MOV	R0,@#UISAR3		; MAP THE SLOT	MOV	2(SP),R0		; GET THE CCB BACK;; FLUSH STAGED MESSAGES;	MOV	M.SDP+60000,@#UISAR4	; GET TO SYSTEM WORK SPACE	BEQ	20$			; NONE	ADD	@#UISAR3,@#UISAR4	; MAP THE SYSTEM WORKSPACE	CALL	MSCAN			; DO THE SCAN	MOV	G.ME      S+100000,R1		; GET SENT MESSAGE -ID	BEQ	20$			; NO MESSGAE10$:	CALL	$ACBD			; GET THE BDB	MOV	R4,@#UISAR4		; MAP THE BDB	MOV	B.LINK+100000(R5),-(SP)	; SAVE NEXT MESSAGE POINTER	CALL	DMES1			; DELETE THE MESSAGE	MOV	(SP)+,R1		; GET THE NEXT MESSAGE	BNE	10$			; AND PROCESS20$:	MOV	2(SP),R0			; GET THE CCB	ROR	(SP)			; SAVE THE C BIT	CALL	STSCAN				; SCAN STAGED TRANSACTIONS	CLC	ROL	(SP)		; GET C BACK	MOV	2(SP),R1		; GET CCB BACK30$:	RETURN;;;; ROUTINE TO SCAN FOR STAGED, SPAWNED TRANSACTIONS;;; INPUT CONDITIO      NS:;	RO -- OWNER CCB ADDRESS;;STSCAN:	MOV	R0,R3				; SAVE OWNER CCB	MOV	C.SPN(R3),R0			; GET FIRST CCB10$:	BEQ	30$				; ALL DONE	MOV	C.SPN(R0),-(SP)			; SAVE NEXT CCB	CLR	C.SPN(R0)			; CLEAR SPAWN QUEUE	BIC	#CF.HLD,C.FLG(R0)		; CLEAR HOLD FLAG	BIT	#CF.ABO,C.FLG(R3)		; NEED TO ABORT?	BEQ	15$				; NO;; ABORT SPAWNED TRANSACTION;	CLR	R5				; NO LOG REQUIRED	CALL	..TABO				; SET ABORT UP	BR	20$				; GET NEXT ENTRY15$:;; START STAGED TRANSACTION;	MOV	R0,R4				;	CALL	STSND				; GET TO SLOT SENT20$:	MOV	(SP)+,R0		      	; GET NEXT ENTRY	BR	10$30$:	MOV	R3,R0			; GET CCB BACK	RETURN;;; ROUTINE TO SCAN THE SYSTEM WORKSPACE FOR MESSAGES GOT BY; THE CURRENT EXCHANGE.;MSCAN:;; ENTRY CONDITIONS:-;;	ASR3 -- MAPS THE SLOT;	ASR4 -- MAPS THE SYSTEM WORKSPACE;	R0   -- CCB ADDRESS;;	BITB	#GF.GTM,G.FLG+100000		; ANY GOT MESSAGES?	BEQ	40$				; NO	BICB	#GF.GTM,G.FLG+100000		; CLEAR THE FLAG;; GET FIRST ENTRY;	BITB	#AT.DMU,@C.IAT(R0)		; ALREADY UNSTAGED	BNE	40$				; YES	MOV	@#UISAR3,-(SP)			; SAVE ASR3	MOV	@#UISAR4,-(SP)			; AND ASR4	CALL      	USE2				; MAP THE EXCANGE AREA	BCS	30$				; NO ENTRIES	MOV	C.IAT(R0),R3			; GET ATT ENTRY	CLR	X.EDP(R3)			; STAGE NUMBER10$:	CMPB	#GF.GTM,V.TYP(R5)		; GOT MESSAGE ENTRY?	BNE	20$				; NO	MOV	V.MSCB,@#UISAR4			; MAP THE MAILBOX SCB	BIT	#CF.ABO,C.FLG(R0)		; ABORT?	BNE	50$	DEC	S.MACT+100000			; REDUCE ACTIVE COUNT20$:	CALL	..GSTE				; GET NEXT STAGE ENTRY	BCC	10$30$:	MOV	(SP)+,@#UISAR4	MOV	(SP)+,@#UISAR340$:	RETURN50$:;; INFORM MAILBOX OF ABORT;	MOV	R0,.COMSB+B.DAT			; CCB	MOV	@#UISAR3,.COMSB+B.DAT+4		; STAGE       ENTRY MAP	MOV	R5,.COMSB+B.DAT+6		; ADDRESS OF STAGE ENTRY	MOV	#BF.ABO,.COMSB+B.FUN		; FUNCTION CODE	MOV	R5,-(SP)	MOV	#100000+S.TSK,R5	CALL	.SEND	MOV	(SP)+,R5	TSUSP$	BR	20$;;; ROUTINE TO SEARCH A MESSAGE QUEUE AND DELETE ANY ENTRIES; FOR A SPECIFIED TRANSACTION;; NOTE:;	IF THE SLOT IS FOUND IN THE QUEUE I T IS REMOVED;	FROM THE QUEUE, BUT NOT DELETED.;;; INPUT CONDITIONS:;;	R1 -- CCB;	UISAR3 SCB OF QUEUE TO SCAN;;; OUTPUT CONDITIONS:-;;	R0,R2,R3,R4,R5 DESTROYED;;MQDEL:	;;; REGISTER USAGE:-;;	R0 -- CCB;	R1 --       CURRENT BDB;	R2 -- PREVIOUS BDB;	R3 -- DISPLACEMENT TO PREVIOUS BDB;	R4 -- BASE (KT) OF CURRENT BDB;	R5 -- DISPACEMENT TO CURRENT BDB;;	UISAR3	CURRENT BDB MAPPING;	UISAR4	PREVIOUS BDB MAPPING;	MOV	R1,-(SP)		; SAVE THE CCB	MOV	R1,R0			; SET R0 TO CCB	CLR	-(SP)			;CLEAR COUNT OF DELETED MESSAGES	MOV	@#UISAR3,-(SP)		; SAVE THE SCB MAP	MOV	#S.FST-B.LINK,R5	; DUMMY SCB TO LOOK LIKE A BDB	CLR	R1			; NO PREVIOUS BDB;; GET THE NEXT BDB IN THE QUEUE;10$:	MOV	R5,R3			; SET PREVIOUS DISPLACEMENT TO BDB	MOV	@#UISAR3,@      #UISAR4	; SET MAPPING FOR PREVIOUS BDB	MOV	R1,R2			; SET PREVIOUS BDB15$:	MOV	B.LINK+100000(R3),R1	; GET NEXT BDB	BEQ	30$			; NO MORE	CALL	$ACBD			; GET THE BDB	MOV	R4,@#UISAR3		; MAP THE BDB	CMP	R0,B.OWN+60000(R5)	; THIS ONE TOBE DELETED?	BNE	10$			; NO;; DELETE THIS ENTRY FROM THE QUEUE;	INC	2(SP)			; UPDATE THE DELETE COUNT	MOV	B.LINK+60000(R5),B.LINK+100000(R3) ; RESET THE LINK	BNE	20$			; NO THE LAST IN TH QUEUE;; RESET THE LAST POINTER;	MOV	(SP),@#UISAR3		; MAP THE SCB	MOV	R2,S.LST+60000		; SET THE LA      ST POINTER20$:	CMP	R1,C.SLT(R0)		; IS THIS THE SLOT	BEQ	15$			; YES SO DO NOT DELETE	CALL	DMES1			; DELETE THE MESSAGE30$:	MOV	(SP),@#UISAR3		; MAP THE SCB	TST	(SP)+	SUB	(SP)+,S.MCT+60000	; REDUECE THE MESSAGE COUNT	MOV	(SP)+,R1	RETURN.PAGE.SBTTL	TPMLIB -- ..EXRT  ( RESTART AN EXCHANGE);+;; ..EXRT -- EXCHANGE RESATRT;; THIS ROUTINE IS CALLED TO RESART A TRANSACTION FROM; ITS LAST INPUT MESSAGE AFTER A FAULT HAS BEEN DETECTED ; IN THE PROCESSING OF THE MESSAGE.;; IF NO EXCHANGE RESTRAT IS SPECIFIED FOR THE T      RANSACRION,; OR THE EXCHANGE HAS BEEN RESTARTED MORE THAN THE SPECIFIED; NUMBER OF TIMES, THE TRANSACTION IS ABORTED..;; INPUT CONDITIONS:;;	R0 -- CCB ADDRESS FOR THE TRANSACTION;;-;;	THIS CALL IS NOW PROCESSED IN EXECUTION MANAGER;.PAGE.SBTTL	TPMLIB -- ERTH  (EXCHANGE RESTART THREAD);;; THIS THREAD IS INITIATED TO RESTART THE PROCESSING OF A TRANSACTION; FROM THE LAST INPUT MESSAGE:-;;	1. FLUSH ANY MESSAGES SENT BY THE EXCHANGE;	2. DISCONNECT ANY STREAMS, LOCKS, ETC SET-UP BY THE EXCHANGE;	3. ABORT ANY ACT      IVE TST;	4. REQUEUE THE SAVED SLOT TO RESTART THE EXCHANGE;; INPUT CONDITIONS:-;	R1 -- CCB FOR THE TRANSACTION;;ERTH:	BIS	#CF.ERT,C.FLG(R1)	; SET RESTART FLAG	INCB	C.NRS(R1)		; UPDATE RESTART COUNT FOR EXCHANGE	INC	.EXRST	MOV	R1,-(SP)		; SAVE THE CCB	CALL	ABOCOM			; DO COMMON PROCESSING	BCS	40$			; DISC ERROR ON THE SLOT	BIT	#CF.WRK,C.FLG(R0)	; ANY WORK FILES FOR TRANSACTION?	BNE	10$			; YES SO GO TO DM	TST	C.CHN(R1)		; ANY CHANNELS CONNECTED?	BEQ	20$			; NO10$:	MOV	#BF.RST,.COMSB+B.FUN	; YES-- SO INFORM DA      TA MANAGER	MOV	R1,.COMSB+B.DAT		; OF A RESTART	CALL	DMSEND	TSUSP$				; WAIT FOR DATA MANAGER20$:	CALL	TSTABO			; ABORT ANY ACTIVE TST;; DO ANY STAGED MESSAGES FOR THIS EXCHANGE;;; NOW READ THE SAVED SLOT IN;	MOV	C.SLT(R1),R1		; GET THE SLOT	CALL	$ACBD			;ACCESS THE BDB	MOV	R4,@#UISAR4		; MAP THE BDB	MOV	(SP),R0			; GET THE CCB BACK	MOV	C.IAT(R0),R2		; GET THE IAT	CLR	X.EDP(R2)		; RESET UNSTAGE COUNT	MOV	B.HVBN+100000(R5),-(SP)	; SAVE THE CURRENT	MOV	B.LVBN+100000(R5),-(SP)	; DISC ADDRESS OF THE SLOT	MOVB	X.      SDA(R2),B.HVBN+100000(R5) ; RESET TO SAVED DISC ADDRESS	BMI	50$			; SLOT AREA IN ERROR -- ABORT	MOV	X.SDA+2(R2),B.LVBN+100000(R5) ; OF SLOT	CALL	$QIOR			; READ THE SLOT IN	MOV	(SP)+,B.LVBN+100000(R5)	; RESET TO OLD ADDRESS	MOV	(SP)+,B.HVBN+100000(R5) ; OF SLOT	TSUSP$				; WAIT FOR IT	MOV	(SP),R4			;GET CCB	MOV	@$TTBAD,R1		;GET IOSB ADDRESS	MOV	(R1),-(SP)		;SAVE STATUS	MOV	R4,R1	TSTB	(SP)+			;I/O SUCCESSFUL?	BMI	40$			; YES	MOV	B.ADDR+100000(R5),@#UISAR3 ; MAP THE SLOT;	BIT	#CF.ABO,C.FLG(R1)	; ABORT WHILE IN       RESTART?	BNE	45$			; YES	BIC	#CF.CLD!CF.ABO!CF.ERT,C.FLG(R4); CCB FLAGS	MOV	#TACOM1,-(SP)		; SET RETURN ADDRESS	TST	-(SP)			; PUT A DUMMY WORD ON THE STACK	CALLR	RSEND			; DO A RESTART SEND40$:	BIS	#CF.ABO,C.FLG(R1)45$:	JMP	ABTH250$:	CMP	(SP)+,(SP)+	BR	40$;;; ROUTINE TO READ A SLOT INTO MEMORY;; INPUT CONDITIONS :;	R1 -- SLOT ADDRESS;; OUTPUT CONDITIONS:;	R0 -- KT-11 OF MESSAGE;;	'C' SET IF DISC ERROR;;LODSLT:	MOV	R2,-(SP)		; SAVE R2	MOV	R1,-(SP)		; SAVE BDB10$:	CALL	$GTBB			; CALL CACHE TO GET THE SLOT	BC      C	40$			; GOT IT O.K	CMP	#ER.IOX,R1		; IO ERROR	BEQ	30$			; YES	$DELAY				; SPACE PROBLEM - WAIT A BIT	MOV	(SP),R1			; GET BDB	BR	10$30$:	SEC40$:	INC	(SP)+			; REMOVE BDB	MOV	(SP)+,R2	RETURN.PAGE.SBTTL	TPMLIB -- ..GMBF  (GET MESSAGE BUFFER);+;; ..GMBF -- GET A MESSAGE BUFFER; ..GMB2 -- GET A MESSAGE BUFFER THAT ISN'T A SLOT;; GTSLOT -- GET A SLOT;;	if CCB EXISTS;	then	if TXN CLOSED ( CFLG(CF.CLD)=1 );		then GOTO GET BFR FOR NON-SLOT MSG;		else	if EXCHANGE ACTIVE or ABORTED;			then ERROR RETURN(ER.EAC);			el      se READ EXISTING SLOT INTO BFR;				on error ERROR RETURN(ERROR CODE FROM $GTBB);				if REQUESTED BFR SIZE > [(TST CXT AREA + TXN W/S;							  + EXCHANGE MSG) -;							 (TST CXT AREA + TXN W/S)];				then ERROR RETURN(ER.VXF);				else RETURN;				fi;			fi;		fi;	else comment GET BFR FOR NOT-SLOT MSG;		CALL $GTBB(SIZE = XMSG SIZE + MCB SIZE);		INITIALIZE BDB;		if SLOT;		then BDB := XMSG FILE DISK ADR (DA) FOR SLOT;		fi;		INITIALIZE MCB;		if SLOT;		then CCB := MCB PTR;			if TRACE;			then TDB := TRACE;			fi;			FUR      THER MCB INITIALIZATION;			if TRACE;			then INITIALIZE TRACE CONTEXT AREA OF SLOT;			fi;		fi;		FINISH MCB INITIALIZATION;	fi;;;; INPUT CONDITIONS:;	..GMBF:-;;	R5	SIZE OF BUFFER REQUIRED (IN BYTES);;	R3	SCB ADDRESS (VIRTUAL);;	R4	CCB FOR THE TRANSACTION if GETTING SLOT;;	..GMB2:-							;**CP01+;	R0	CCB (=0 if no slot required);	R4	CCB (=? if no slot required);	R5	SIZE OF BFR REQUIRED (IN BYTES);									;**CP01-;;	GETSLOT:-;	R1 -- SLOT SIZE MOD 32.;;	R4	CCB FOR THE TRANSACTION;;;	UASR 0,1 MAP THE APPLICATION       COMMON AREA;; OUTPUT CONDITIONS:;	R5	KT-11 ADDRESS OF BUFFER;		THIS ADDRESS WILL POINT TO THE USER BUFFER AREA;		I.E. AFTER THE MCB AND ANY OTHER AREA REQUIRED BY;		THE SYSTEM.;	R2	BUFFER IDENTITY -- USED IN LATER ROUTINES;;	'C' SET IF AN ERROR;	    R1 CONTAINS THE ERROR CODE : 'ER.EAC' EXCHANGE ACTIVE;					 'ER.NSP' NO SPACE;					'ER.IOX' DISC ERROR;					'ER.VXF' MESSAGE SIZE GREATER THAN;					         BUFFER IN SLOT.;;;	REGISTERS R0,R1.R3.R4.R5 DESTROYED.;;;; CALLING SEQUENCE:;;	CALL <ENTRY POINT>;	.ENAB      L	LSB;-;	ENTPT	GMBF;									;**CP01+	MOV	S.CCB(R3),R0		; IF SLOT REQUIRED MUST BE FOR TOP CCB					; SINCE THAT IS THE ONLY OPEN ONE;; ENTRY POINT ..GMB2: INPUT PARAMETER, R0 -> CCB;	ENTPT	GMB2	PUSH	<R5>			; SAVE THE SIZE	ADD	#77,R5			; MAKE SIZE MOD 32	ASH	#-6,R5			;	MOV	R5,-(SP)		; AND SAVE IT	MOV	@#UISAR4,-(SP)		; SAVE ASR4;;	R0	CCB;	SP+00	SAVED ASR4;	SP+02	SIZE OF USER MESSAGE MOD. 32;	SP+04	SIZE OF USER MESSAGE IN BYTES;;;;; SEE IF WE NEED THE SLOT -- NOTE THE CCB MUST BE ATTACHED TO THIS SCB;			AND TH      E TRANSACTION OPEN.;	TST	R0			; if THERE ISN'T A CCB QUEUE	;**CP01-	BEQ	100$			; NO CCB SO NO SLOT REQUIRED	BIT	#CF.CLD,C.FLG(R0)	; TRANSACTION CLOSED?	BNE	100$			; YES SO SLOT NOT REQUIRED					; NEED TO SEE IF IF AN EXCHANGE ALREDY ACTIVE					; IF IT IS RETURN ERROR STATE TO CALLER					; SO THE RESOURCES CAN BE RELEASED					; AND THE CORRECT RESTART PERFORMED.	BITB	#AT.EXA!AT.ABO,@C.IAT(R0)	; EXCHANGE ACTIVE,ABORTED OR QUEUED?	BEQ	20$			; NO10$:;; THERE IS ALREADY AN EXCHANGE IN THE SYSTEM; FOR THIS TRANSA      CTION .;	MOV	#ER.EAC,R1		; SET ERROR CODE15$:	SEC16$:	JMP	210$							;***CP0120$:	MOV	C.SLT(R0),R1		; GET SLOT ID	CALL	$GTBB			; FIND THE SLOT	MOV	R0,@#UISAR4		; THE MESSAGE	BCS	16$			; ERROR RETURNED?		;***CP01									;CP01-122$:	CLR	R5			; GET SIZE OF TRAN W/S	BISB	M.TSZ+100000,R5		;	ADD	#M.MTST,R5		;ADD ON TST CONTEXT AREA	CLR	R1				; AND	BISB	M.MSZ+100000,R1			; AMOUNT TO MAP	SUB	R5,R1			; GET BUFFER SIZE FOR MESSAGE	CMP	2(SP),R1			; CHECK AVAILABLE SPACE	BLOS	23$			; O.K	MOV	#ER.VXF,R1		; RETURN BUFFE      R ERROR	BR	15$;23$:	JMP	200$			; DO COMMON PROCESSINGGTSLOT:;; NEED TO CREATE A SLOT;25$:	MOV	R1,-(SP)		; MAKE STACK	MOV	R1,-(SP)		; COMMON WITH GET BUFFER	MOV	@#UISAR4,-(SP)	MOV	#MF.SLT,-(SP)		; SET SLOT REQUIRED MARKER	BR	150$			; GET BUFFER;; GET BUFFER FOR A NON-SLOT MESSAGE;100$:	MOV	2(SP),R1		; GET THE SIZE IN THE CORRECT REGISTER	ADD	#M.MCBZ,R1		; ALLOW FOR MCB 	CLR	-(SP)			; SET SLOT NOT REQUIRED MARKER150$:	MOV	#MMLUN,R3		; MESSAGE FILE LUN	CALL	$GSRB			; GET MESSAGE BUFFER	BCC	151$			; GOT IT OK	I      NC	(SP)+			; REMOVE BUFFER TYPE 	JMP	210$			; NO ERROR151$:;; INITALISE THE BDB FOR THIS MESSAGE;	MOV	R4,-(SP)		; SAVE THE CCB	CALL	$ACBD			; GET THE BDB	MOV	R4,@#UISAR4		; MAP THE BDB	MOV	(SP)+,R4		; RESTORE THE CCB	MOV	R4,B.OWN+100000(R5)	; SET OWNER	MOVB	#BF.DTY!BF.BKP!BF.ALC,100000+B.FLG(R5)					; SET FLAGS -- DIRTY, KEEP BDB, ALLOCATE DISC SPACE	TST	(SP)			; IS THE BUFFER FOR A SLOT?	BEQ	153$			; NO	BIT	#CF.STA,C.FLG(R4) 	; STAGE AREA	BNE	152$			; YES SO SET UP THE DISC ADDRESS	BIT	#CF.NEX,C.FLG(R4) 	;       EXCHANGE RECOVERY	BNE	153$			; NO152$:	BICB	#BF.ALC,100000+B.FLG(R5); CLEAR ALLOCATE FLAG;; MOVE THE SLOT DISC ADDRESS INTO THE BDB;	MOV	.MMFBA+2,100000+B.LVBN(R5); LOW BASE DISC ADDRESS	ADD	C.DA1(R4),100000+B.LVBN(R5); ADD DISPLACEMENT	MOVB	.MMFBA+0,100000+B.HVBN(R5) ; HIGH BASE DISC ADDRESS	ADCB	100000+B.HVBN(R5)	   ; ADD ANY CARY OVER153$:	MOV	R0,@#UISAR4		; MAP ONTO THE BUFFER	MOV	#100000+M.ID,R2		; SET TO INDEX THE MCB, PAST THE JOURNAL HEADER;; INITALISE THE MCB;;???????????????????????? include .err      or statements for offset checks ???????	MOV	R1,(R2)+		; MESSAGE IDENTITY	MOV	R4,(R2)+		; CCB ADDRESS	MOV	(SP),(R2)		; SET THE SLOT FLAG IF REQUIRED	BIS	#MF.NEW,(R2)+		; SET THE NEW SLOT FLAG	MOVB	#M.MCBZ,(R2)		; DISPLACEMENT TO MESSAGE (MCB  CONTEXT)	TST	(SP)+			; IS THIS BUFFER FOR A SLOT?	BNE	159$	JMP	200$			; NO159$:;; INITALISE THE SLOT PARTS;	MOV	R1,C.SLT(R4)		; SAVE THE SLOT IDENTITY IN THE CCB	MOV	R4,-(SP)		; SAVE THE CCB	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	C.TDB(R4),R4		; GET INFORMATION FROM THE TR      ANSACTION					; DESCRIPTOR BLOCK;; CALL CACHE TO GET THE KT-11 ADDRESS OF THE TDB;	MOV	T.BDB(R4),R1		; BDB FOR TDB	CALL	$ACBDB			; GET THE KT-11 BUFFER ADDRESS	MOV	R0,@#UISAR3		; MAP THE TDB	MOV	R2,R1			; RETURN THE MCB ADDRESS	MOV	#M.MTST,R5		; MOV MCB AND TST CONTEXT SIZE IN	BITB	#TF.TRC!TF.64,T.TFG(R4)	; TRACE CONTEXT REQUIRED?	BEQ	154$			; NO	INC	R5			; ALLOW FOR TRACE154$:	MOVB	R5,(R1)			; STORE MESSAGE DISPLACEMENT	INCB	(R1)+			; ALLOW FOR MCB	MOV	R4,R3			;SAVE TDB OFFSET	MOV	#30000,R4		;SET TO ACCESS       THE TDB	BISB	T.DSP(R3),R4	ASL	R4	CLRB	(R1)			; ASSUME NO TRANSACTION WORK SPACE	MOVB	Y.MSZ(R4),R3		; GET SIZE OF MESSAGE AREA IN SLOT	ADD	R3,R5			; ALLOW FOR TST/TRACE CONTEXT	MOVB	Y.TWS(R4),R3		; GET SIZE OF TRANSACTION WORKSPACE	BEQ	155$			; NO WORK SPACE REQUIRED	MOVB	R5,(R1)			; STORE DISPALCEMENT TO WORKSPCE	INCB	(R1)			; ALLOW FOR MCB	ADD	R3,R5			; GET AMOUNT TO MAP IN TST155$:	TSTB	(R1)+			; STEP OVER DISPLACEMENT	MOVB	R5,(R1)+		; STORE AMOUNT TO MAP	MOVB	R3,(R1)+		; SIZE OF TRANSACTION WORKSAPCE	CL      R	(R1)			; ASSUME NO SYSTEM WORKSPACE	TST	Y.SWS(R4)		; IS THERE ANY?	BEQ	157$			; NO	MOV	Y.SWS(R4),-(SP)		; SAVE THE SIZE	INC	R5			; ALLOW FOR MCB	MOV	R5,(R1)			; STORE DISPLACEMENT TO SYSTEM AREA;; NOW INITALISE THE SYSTEM WORK SPACE;; SET ASR3 TO MAP THE SYSTEM AREA;	MOV	@#UISAR4,@#UISAR3 	; GET MAPPING	ADD	(R1),@#UISAR3		;	MOV	#60000,R1		; ADDRESS OF SYSTEM AREA	CLR	(R1)+			; FLAGS  WORD ETC	MOV	#<G.ESZ+2>/2,(R1)+	; DISPLACEMENT TO FREE SPACE	MOV	(SP)+,R5		; GET SIZE IN 32 WORD BLOCKS	ASH	#5,R5			; CONVE      RT TO WORDS	SUB	#<G.ESZ+2>/2,R5		; ALLOW FOR HEADER	MOV	R5,(R1)+		; SIZE OF FREE SPACE	CLR	(R1)+			; NUMBER OF ENTRIES157$:	MOV	(SP)+,@#UISAR3		; RESET THE MAPPING;; INITALISE THE TST CONTEXT BLOCK;	MOV	#100000+64.,R1		; POINT TO THE CONTEXT BLOCK	MOV	(SP)+,R5		; GET THE CCB					; RELATIVE TO ASR4;; IN A TST THE CONTEXT BLOCK WILL BE AT VITUAL ADDRESS; 140000 I.E MAPPED AT ASR6.;; SET UP THE CALLING STRUCTURE FOR THE INTER-LANGUAGE CALL; ROOT MODULE TO USER TST SUBROUTINE.;	MOV	#1,(R1)+		; NUMBER OF PARAMET      ERS(1 FOR THE MESSAGE)	MOVB	100000+M.MDP,R4	; GET DISPACEMENT TO MESSAGE	DEC	R4			; ALLOW FOR THE MCB	ASH	#6,R4			; MAKE INTO BYTE DISPLACEMENT	BIS	#140000,R4		; MAKE VIRTUAL ADDRESS IN TST	MOV	R4,(R1)+		; PLACE IN CALLING STRUCTURE	MOVB	100000+M.DTW,R4		; CALCULATE THE VIRTUAL ADDRESS OF THE TRANSACTION W/S	BEQ	160$			; THERE ISN'T ANY	INC	-4(R1)			; EXTRA PARAMETER FOR WORKSPACE	DEC	R4			; ALLOW FOR THE MCB	ASH	#6,R4			; MAKE INTO A BYTE DISPLACEMENT	BIS	#140000,R4		; MAKE VIRTUAL ADDRESS160$:	MOV	R4,(R1)      +		; STORE IN CALLING STRUCTURE	MOV	.EXMAN,(R1)+		; NAME  OF EXECTION MANAGER	MOV	.EXMAN+2,(R1)+	MOV	.DMMAN,(R1)+		; NAME  OF DATA MANAGER	MOV	.DMMAN+2,(R1)+	CLR	(R1)+			; CONTEXT BLOCK ADDRESS FOR EXECUTION MANAGER	MOV	.DMCXB,(R1)		; CONTEXT BLOCK FOR DATA MANAGER	ADD	#M.TSQ-M.DXT,R1		; STEP TO TRAN-ID	MOV	C.TID+0(R5),(R1)+	; MOVE THE	MOV	C.TID+2(R5),(R1)+	; TRANSACTION ID IN	MOV	R5,(R1)+		; MOVE THE CCB IN	MOV	#100000+64.,R5		; CALCULATE THE	CALL	..CLSM			; CHECKSUM	CLR	R5			; ASSUME NO TRACE	CMPB	#M.MSIZ      +M.TRCZ,100000+M.MDP	; IS THERE A TRACE CONTEXT?	BNE	170$			; NO;; INITALISE THE TRACE CONTEXT;	MOV	#100000+<M.MSIZ*64.>,R5	; POINT TO TRACE CONTEXT	MOV	.TRMAN+0,(R5)+		; TRACE MANAGER	MOV	.TRMAN+2,(R5)+		; NAME	MOV	.TRCXB,(R5)+		; CONTEXT BLOCK170$:	MOV	R5,100000+<M.MCBZ*64.>+M.TXT ; SET TRACE CONTEXT MARKER200$:	MOVB	100000+M.MDP,R5		; DISPALCEMENT TO MESSAGE	ADD	@#UISAR4,R5		; MAKE MOD 32 ADDRESS TO MESSAGE AREA	MOV	4(SP),100000+M.BSZ 	; STORE BYTE SIZE IN MCB	MOV	M.ID+100000,R2		; GET THE MESSAGE ID	MOV      	@#UISAR3,M.SST+100000	; SET THE SOURCE STATION	CLC210$:					; C-BIT MUSTN'T BE CHANGED BEFORE RETURN	MOV	(SP)+,@#UISAR4		; RESET MAP 4	MOV	(SP)+,(SP)+		; REMOVE SIZES FROM STACK	RETURN	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..SDMS  (SEND MESSAGE);+;; ..SDMS -- SEND MESSAGE;; ..SDTM -- SEND MESSAGE FROM TST;;;; INPUT CONDITIONS:;	R1	POINTER TO ROUTE LIST (MUST NOT BE ASR3 RELATIVE);		FORMAT:;		B.0	NUMBER OF ROUTES;		B.1	NOT USED;		B.2	EXCHANGE TIMEOUT VALUE;		B.3	NOT USED;		WD.2	FIRST ROUTE -- KT-11 ADDR. OF SCB;;      		WD.N	LAST ROUTE;	R1	ENTRY ..SDTM:-;		POINTER TO 6 CHARACTER STATION NAME. IF FIRST WORD IS ZERO;		THEN MESSAGE IS REFLEXIVE.;	R2	BUFFER (MESSAGE) ID;;	R3	KT-11 ADDRESS OF SOURCE SCB (SENDER SCB);;	R4	ADDRESS OF CCB FOR TRANSACTION;;	UASR 0,1 MAP THE APPLICATION COMMON;;	NOTE	THE MCB FOR THE MESSAGE WILL ALREADY HAVE BEEN INITALISED;		BY THE GET BUFFER CALL;;		ASR3	IS USED TO MAP THE BUFFER;;OUTPUT CONDITIONS:;	'C' CLEAR IF MESSAGE QUEUED TO FIRST DESTINATION;	'C' SET IF ERROR;		R1 CONTAINS THE ERROR CODE;      		'ER.TRT' TOO MANY ROUTES SPECIFIED;		'ER.IRN' INVALID STATION NAME;		'ER.NSP' NO SPACE FOR BUFFER;		'ER.IOX' DISC ERROR FROM CACHE;;		'ER.TST' TST STATION SPECIFIED;;	REGISTERS R0,R2,R3,R4,R5 DESTROYED;;-	.ENABL	LSB	ENTPT	SDTM	CALL	MSET			; GET THE BUFFER	BCC	10$	JMP	130$			; ERROR10$:;; ASR3 SAVED ON TOP OF THE STACK;	MOV	C.SCB(R4),-(SP)		; ASSUME REFLEXIVE SEND	TST	@R1			; IS IT REFLEXIVE?	BEQ	30$			;YES12$:	MOV	@#UISAR3,-(SP)		; SAVE THE MESAGE ADDRESS	MOV	R4,-(SP)		; SAVE THE CCB	CALL	..FSCB			; FIND       THE SCB	MOV	(SP)+,R4		; GET THE CCB BACK	BCC	15$	JMP	160$			; NO SUCH STATION15$:	CMPB	#SY.TST,S.TYP+60000	; IS IT A TST STATION	BNE	20$			; YES SO RETURN ERROR	JMP	180$20$:	MOV	@#UISAR3,2(SP)		; SAVE THE SCB	MOV	(SP)+,@#UISAR3		; MAP THE MESSAGE30$:	MOVB	#1,M.NOR+60000		; SET TO ONE ROUTE	CLRB	M.DNR+60000		; DISPLACEMENT IN ROUTE TABLE	MOV	(SP)+,M.ROT+60000	; MOVE THE DESTINATION SCB IN	MOVB	C.EXT(R4),M.MNO+60000	; SET EXCANGE NUMBER	BIT	#CF.JOP,C.FLG(R4)	; JOURNAL OUTPUT MESSAGES?	BEQ	40$			; NO	CALL	..LO      G2			; YES SO LOG IT40$:	BIT	#CF.NEX,C.FLG(R4)	; NEED TO STAGE THE MESSAGE?	BNE	47$			; NO;; QUEUE MESSAGE TO LIST HEAD IN STAGE AREA;	MOV	@#UISAR4,-(SP)		; SAVE ASR4	MOV	@#UISAR3,-(SP)		; SAVE MESSAGE TO BE QUEUED	MOV	C.SLT(R4),R1		; GET THE SLOT ID	CALL	LODSLT			; GET THE SLOT	BCS	43$			; LOAD ERROR	MOV	R0,@#UISAR3		; MAP THE SLOT MCB	MOV	M.SDP+60000,@#UISAR4	; GET STAGE AREA	BEQ	45$			; NO SUCH THING	ADD	@#UISAR3,@#UISAR4	MOV	(SP),@#UISAR3		; GET MESSAGE TOBE QUEUED BACK	CALL	LINK			; LINK THE BDB IN	TST      	(SP)+			; REMOVE SAVED MESSAGE ADDRESS	MOV	(SP)+,@#UISAR443$:	JMP	120$45$:	MOV	(SP)+,@#UISAR3	MOV	(SP)+,@#UISAR447$:	BR	110$;;;STSND:;; ENTRY POINT TO START A STAGED TRANSACTION;; INPUT PARAMETERS;	R4	CCB;; CALLED BY:;	TPMLIB(STSCAN);	MOV	@#UISAR3,-(SP)			; SAVE MAPPING REGISTER	MOV	C.CHN(R4),-(SP)			;GET TIMEOUT VALUE	;***CP01	CLR	C.CHN(R4)						;***CP01	BR	70$;;	ENTPT	SDMS;;	CALL	MSET			; GET THE MESSAGE	BCS	130$	BIC	#CF.RRQ,C.FLG(R4)	; SET THE REPLY REQUIRED FLAG;; MOVE THE ROUTE LIST INTO THE MCB;	BITB      	#YS.WIT,Y.SAF-Y.DNO(R1) ; IS A REPLY MESSAGE REQUIRED	BNE	50$			; YES	BIS	#CF.RRQ,C.FLG(R4)	; NO SO CLEAR REPLY REQUIRED FLAG50$:	MOV	(R1)+,R3		; GET NUMBER OF ROUTES	BIC	#177400,R3		; CLEAR OUT ANY RUBBISH	BEQ	150$			; NO ROUTES -- ERROR	CMP	#M.MRUT,R3		; TOO MANY?	BLO	150$			; YES -- ERROR;; SET UP THE EXCHANGE TIMEOUT;	MOV	(R1)+,-(SP)		; SAVE THE TIMEOUT VALUE	MOVB	R3,M.NOR+60000		; STORE NUMBER OF ROUTES	MOV	#60000+M.ROT,R5		; ROUTE TABLE	CLRB	M.DNR+60000		; SET FOR FIRST ROUTE60$:	MOV	(R1)+,(R5)+		; S      TORE IN ROUTE TABLE	SOB	R3,60$			; DO NEXT ROUTE	BIT	#CF.JIP,C.FLG(R4)	; JOURNAL INPUT MESSAGES?	BEQ	65$			; NO	CALL	..LOG1			; LOG IT65$:	BIT	#CF.HLD,C.FLG(R4)	; TRANSACTION ON HOLD (STAGED?)	BNE	140$			; YES -- COMPLETE ON RESTART70$:	CLRB	C.NRS(R4)		; CLEAR EXCHANGE RESTART COOUNT	INCB	C.EXT(R4)		; INC EXCHANGE NUMBER	MOVB	(SP)+,R5		; GET TIMEOUT VALUE	MOV	R4,-(SP)	CALL	..TCCB			; SET EXCHANGE TIMER ACTIVE	MOV	(SP)+,R4;; SET UP W/S FOR NEW EXCHANGE;	MOV	M.SDP+60000,@#UISAR4	; GET DISPLACEMENT TO W/S	BEQ	      90$			; NO W/S	ADD	@#UISAR3,@#UISAR4	; MAP THE W/S	MOVB	C.EXT(R4),100000+G.CEX	; SET EXCHANGE NUMBER	CLR	100000+G.MES		; CLEAR STAGE MESSAGE	CLR	100000+G.MES+2		; HEADER	MOV	G.FRE+100000,G.EEX+100000 ; POINT TO START OF SPACE FOR EXCHANGE	CLR	G.ESZ+100000		; CLEAR COUNT OF ENTRIES BY EXCHANGE90$:RSEND:	BIT	#CF.NEX,C.FLG(R4)	;EXCHANGE RESTART?	BNE	98$			;NO - CONTINUE	MOV	R4,R0	CALL	WTSLT			;YES - THEN SECURE THE SLOT	MOV	R0,R4;92$:	MOV	C.DA1(R4),R2		;GET SECONDARY DISK ADDRESSES	BEQ	98$			;CONTINUE IF NONE	      BIT	#CF.2DA,C.FLG(R4)	;IS SECOND DISK ADDRESS CURRENT?	BNE	96$			;YES - SO CHANGE TO FIRST	MOV	C.DA2(R4),R2		;GET SECOND ADDRESS	BEQ	98$			;NONE - SO KEEP AS FIRST;96$:	MOV	C.SLT(R4),R1		;GET SLOT BDB ADDRESS	MOV	R4,-(SP)	CALL	$ACBD			;MAP TO THE BDB	MOV	R4,UISAR4	MOV	(SP)+,R4	MOV	.MMFBA+2,B.LVBN+100000(R5) ;SET LOW ORDER ADDRESS	ADD	R2,B.LVBN+100000(R5)	;ADD THE OFFSET	MOVB	.MMFBA,B.HVBN+100000(R5) ;SET HIGH ORDER ADDRESS	ADCB	B.HVBN+100000(R5)	;ADD IN CARRY IF NECCESSARY	BISB	#BF.DTY,B.FLG+100000(R5) ;SET       DIRTY BIT	MOV	#CF.2DA,R5		;RESET DISK ADDRESS INDICATOR	XOR	R5,C.FLG(R4);98$:	MOVB	#AT.EXA,@C.IAT(R4)	; SET THE STATUS	BIS	#CF.GO,C.FLG(R4)	; SET THE ACTIVE FLAG100$:	MOVB	C.EXT(R4),M.MNO+60000	; SET THE MESSAGE NUMBER110$:	CALL	..MQUE			; QUEUE THE MESAGE;120$:	CLC130$:	MOV	(SP)+,@#UISAR3	RETURN140$:;; UNLOCK STAGED SLOT;	MOV	(SP)+,C.CHN(R2)	;SAVE TIME OUT VALUE	MOV	C.SLT(R4),R1		; GET ID	CALL	$RTBL	BR	120$;;;;150$:;; INVALID NUMBER OF ENTRIES;	MOV	#ER.TRT,R1	BR	200$160$:	MOV	#ER.IRN,R1	BR	190$180$:	MOV	#      ER.TST,R1			; TST STATION SPECIFIED190$:	CMP	(SP)+,(SP)+200$:	SEC	BR	130$;; ROUTINE TO GET THE BUFFER ;	ON EXIT ASR3 IS SAVED ON THE STACK;MSET:	PUSH	<R1>	MOV	R2,R1	CALL	$ACBDB			; GET THE MESSAGE					; R0 CONTAINS THE KT-11 ADDRESS	POP	<R1>	MOV	(SP),-(SP)		; MOVE THE RETURN ADDRESS 	MOV	@#UISAR3,2(SP)		; SAVE APR3	MOV	R0,@#UISAR3		; MAP ONTO THE MESSAGE	GTIM$S	#60000+M.TID		; GET TIME MESSAGE QUEUED (H,M,S)	MOV	R4,M.CCB+60000		; SET THE CCB ADDRESS	MOV	R3,M.SST+60000		; SOURCE OF MESSAGE	MOV	C.TID(R4),M.TI      D+60000	; TRANSACTION	MOV	C.TID+2(R4),M.TID+60002	; SEQUENCE NUMBER	MOV	C.SCB(R4),M.TSR+60000	; TRANSACTION SOURCE500$:	RETURN	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..GMES  (GET MESSAGE);+;; ..GMES -- GET MESSAGE FROM A SPECIFIED STATION;;; THIS ROUTINE RETURNS THE ADDRESS (KT-11) OF THE; NEXT MESSAGE IN THE SPECIFIED QUEUE; THE MESSAGE IS MARKED AS ACTIVE AND LOCKED IN MEMORY;; INPUT CONDITIONS;	R2 -- SCB POINTER (KT-11) OF MESSAGE SOURCE (QUEUE TO GET MESSAGE FROM);;	UASR 0,1 MAP THE APPLICATION COMMON;; OUTPUT       CONDITIONS:;	R3 -- KT-11 ADDRESS OF MESSAGE (POINTS AT MCB FOR MESSAGE);;	'C' SET IF ERROR;	R1 -- 'ER.NSP' CACHE ERROR - NO SPACE ;		'ER.IOX' CACHE ERROR - DISC REQAD ERROR;	      'ER.NMS' NO MESSAGE QUEUED.;;;	REGISTERS R0,R1,R2,R4,R5 DESTROYED;;; CALLING SEQUENCE:;;	CALL	..GMES;-	ENTPT	GMES	MOV	@#UISAR3,-(SP)		; SAVE MAPPING ASR	MOV	R2,@#UISAR3		; MAP THE SCB	MOV	S.FST+60000,R1		; GET ID OF NEXT MESSAGE	BEQ	40$			; RETURN WITH ERROR -- NO MESSAGE;; GET THE MESSAGE BDB;	CALL	$ACBD			; GET MESSAGE  BDB INF      ORMATION;; RETURNS WITH:;; R4 -- KT-11 ADDRESS OF BLOCK HOLDING MESSAGE DBD; R5 -- DISPLACEMENT IN BLOCK TO BDB;	MOV	R1,-(SP)		; SAVE THE BDB	MOV	@#UISAR4,-(SP)		; SAVE ASR 4	MOV	R4,@#UISAR4		; MAP THE DESCRIPTOR BLOCK	MOV	100000+B.LINK(R5),S.FST+60000; SET SCB TO POINT TO NEXT MESSAGE	BNE	10$			; ITS NOT THE LAST IN THE QUEUE	CLR	S.LST+60000		; RESET LAST POINTER10$:	DECB	S.MCT+60000		; DECREMENT NUMBER IN THE QUEUE	CALL	$GTBB			; GET THE MESSAGE	BCS	60$			; ERROR	BISB	#BF.DTY,B.FLG+100000(R5); SET THE MES      SAGE DIRTY FLAG;;  R0 CONTAINS THE KT-11 POINTER TO THE MESSAGE;	MOV	R0,@#UISAR3		; MAP THE MESSAGE	BISB	#MF.ACT,M.FLG+60000 	; MARK ACTIVE AND LOCKED	BITB	#MF.SLT,M.FLG+60000	; IS THIS MESSAGE A SLOT?	BEQ	20$			; NO	MOV	M.CCB+60000,R3		; GET THE CCB FOR THE TRANSACTION	CLR	C.CQE(R3)		; CLEAR IN QUEUE INDICATOR;20$:	MOV	(SP)+,@#UISAR4		; RESTORE PREVIOUS MAP	TST	(SP)+			; CLEAN STACK AND CLEAR  C25$:	MOV	R0,R330$:	MOV	(SP)+,@#UISAR3		; RESET ASR3 	RETURN40$:	MOV	#ER.NMS,R1		; NO MESSAGE50$:	SEC	BR	30$60$:;;       ERROR FROM GET MESSAGE INTO MEMORY;	MOV	@#UISAR4,R4		; GET BDB MAP	MOV	(SP)+,@#UISAR4		; PUT ASR4 BACK	CMP	#ER.IOX,R1		; IO ERROR	BEQ	70$			; YES	MOV	(SP),R1;; NO SPACE SO LINK THE MESSAGE BACK INTO THE QUEUE;	CALL	LKHD			; LINK TO HEAD	MOV	#ER.NSP,R170$:	TST	(SP)+	BR	50$.PAGE.SBTTL	TPMLIB -- ..DMES  (DELETE A MESAGE);;+;; ..DMES -- ROUTINETO DELETE A MESSAGE;;;;; INPUT CONDITIONS:;	R2	MESSAGE IDENTITY;	UASR 0,1 MAP THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS;	REGISTER R2 DESTROYED;	ASR3 DESTROYED;; CA      LLING SEQUENCE:;	CALL 	..DMES;-;;	ENTPT	DMES	MOV	R2,R1DMES1:	CALLR	$DLAR.PAGE.SBTTL	TPMLIB -- ..DSMS  (DISCARD A MESSAGE);+;; ..DSMS -- DISCARD A MESSAGE;; THIS ROUTINE IS CALLED WHEN PROCESSING OF THE MESSAGE IS; COMPLETE AT THE CURRENT DESTINATION STATION.;;; INPUT CONDITIONS:;	R3	KT-11 ADDRESS OF MESSAGE;;	UASR 0,1 MAP THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS:;;	IF THERE ARE ANY REMAINING DESTINATIONS FOR THE MESSAGE;	THE MESSAGE IS QUEUED TO ITS NEXT DESTINATION.;;	IF THERE ARE NO MORE DESTINATIO      NS FOR THE MESSAGE A CHECK;	IS MADE TO SEE IF END TRANSACTION SHOULD BE PERFORMED,;	IF NOT THE MESSAGE IS DELETED.;;	REGISTERS R0,R1,R2,R3,R4,R5 DESTROYED;;; CALLING SEQUENCE:;	CALL	..DSMS;-	ENTPT	DSMS;	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	R3,@#UISAR3		; MAP ONTO THE MESSAGE;; ARE THERE ANY MORE DESTINATIONS; FOR THIS MESSAGE?;	DECB	60000+M.NOR		; ALL ROUTES PROCESSED?	BLE	10$			 ; YES;; QUEUE TO THE NEXT DESTINATION;	INCB	60000+M.DNR		; SET TO THE NEXT DESTINATION	INCB	60000+M.DNR		; INCREMENT BY 2	CMPB	600      00+M.DNR,#<M.MRUT*2>	; PAST END OF TABLE	BNE	5$			; NO	CLRB	60000+M.DNR		; SET TO START OF TABLE (WRAP ROUND)5$:	CALL	..MQUE			; AND QUEUE IT	BR	25$;; IS THIS MESSAGE A SLOT?;10$:	BIT	#MF.SLT,60000+M.FLG	;	BEQ	23$			; NO	MOV	M.CCB+60000,R0		; GET THE CCB FOR THE MESSAGE	BITB	#AT.EXR!AT.ABO,@C.IAT(R0) ; TRANSACTION BEING ABORTED?	BNE	25$			; YES SO LEAVE THE MESSAGE	MOV	R0,R1				; TAKE THE	CALL	..TFLH				; THE TIMER NODE	MOV	R1,R0				; OUT OF THE QUEUE;; NOTIFY LINK MANAGER OF END OF EXCHANGE IF LIM INITATED       THE TRANSACTION;	MOV	@#UISAR4,-(SP)		; SAVE MAPPING REGISTER	MOV	C.SCB(R0),@#UISAR4	; MAP THE SOURCE SCB	CMPB	#SY.LSL,S.TYP+100000	; LIM STATION?	BNE	12$			; NO	MOV	#BF.EEX,.COMSB+B.FUN	; SET END EXCHANGE CODE	MOV	C.SCB(R0),.COMSB+B.DAT+4; SEND SCB ADDRESS	MOV	R0,.COMSB+B.DAT		; AND CCB	CALL	LMSEND			; SEND TO LIM12$:	MOV	(SP)+,@#UISAR4		; RESTORE MAP;; DO WE NEED TO SECURE THE SLOT?;	BIT	#CF.SQR,C.FLG(R0)	; FULL SLOT?	BEQ	20$			; NO SO NO NEED TO SAVE	BIT	#CF.NEX,C.FLG(R0)	; EXCHANGE RECOVERY?	BNE	20$			;       NO;;; UNSTAGE ANY SENT MESSAGES;	MOV	@#UISAR4,-(SP)		; SAVE MAPPING REGISTER	MOV	M.SDP+60000,@#UISAR4	; GET TO STAGE AREA	BEQ	19$			; NO WORK SPACE	ADD	@#UISAR3,@#UISAR4	; MAP IT	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	R0,-(SP)		;11$:	MOV	G.MES+100000,R1		; GET A STAGED MESSAGE	BEQ	18$			; ALL DONE	CALL	$ACBD			; MAP THE BDB	MOV	R4,@#UISAR3		; VIA ASR3	MOV	60000+B.LINK(R5),G.MES+100000 ; UNLINK	BNE	15$			; NOT LAST	CLR	100000+G.MES+2		; CLEAR LAST POINTER15$:	CALL	LODSLT			; GET INTO MEMORY	BCS	35$			; ERROR	M      OV	R0,@#UISAR3		; MAP THE MESSAGE	CALL	..MQUE			; QUEUE THE MESSAGE17$:	BR	11$			; GO GET THE NEXT MESSAGE18$:	MOV	(SP)+,R0	MOV	(SP)+,@#UISAR3	CALL	MSCAN			; FLUSH ALL GOT MESSAGES	CALL	STSCAN			; SCAN FOR STAGED TRANSACTIONS19$:	MOV	(SP)+,@#UISAR4; SECURE THE SLOT TO DISC;; WRITE TO DISC (ADDRESS IN BDB);	CALL	WTSLT			; WRITE THE SLOT20$:;; SET END OF EXCHANGE STATUS;	MOVB	#AT.EEX,@C.IAT(R0)	;	MOV	60000+M.ID,R1	;GET MESSAGE BDB ADDRESS	CALL	$RTBL		;UNLOCK THE MESSAGE;; IS THE TRANSACTION CLOSED?;	BIT	#CF.R      RQ,C.FLG(R0)	; REPLY REQUIRED?	BEQ	40$			; YES AND NO SENT SO ABORT	BIT	#CF.CLD,C.FLG(R0)	; AND CHECK THE CLOSE FLAG	BNE	30$			; ITS CLOSED-- SO END THE TRANSACTION	BR	25$23$:	MOV	60000+M.ID,R1	; GET THE MESSAGE IDENTITY	CALL	DMES1			; DELETE THE MESSAGE25$:	MOV	(SP)+,@#UISAR3		;	RETURN30$:;; CLOSE THE TRANSACTION;	CALL 	..TEND	BR	25$			;;; NO REPLY SENT WHEN REQUIRED;35$:	MOV	(SP)+,@#UISAR3	MOV	(SP)+,@#UISAR4	MOV	#AB.IOX,R5	BR	45$40$:	MOV	#AB.NRM,R5		; ABORT CODE45$:	CALL	..TABO			; SET ABORT ACTIVE	BR	25$      .PAGE.SBTTL	TPMLIB -- ..ULKM  (UNLOCK A MESSAGE AND REQUEUE TO HEAD).SBTTL	TPMLIB -- ..CLRK  (UNLOCK MESSAGE).SBTTL	TPMLIB -- ..RTUL  (UNLOCK AND RETRANSMIT);+;; ..ULKM -- UNLOCK MESSAGE AND RETURN TO HEAD OF QUEUE;; ..CLRK -- UNLOCK MESSAGE;; ..RTUL -- UNLOCK AND PLACE IN TIMER QUEUE FOR RETRANSMIT;;;; INPUT CONDITIONS;	UASR 0,1 MAP THE APPLICTION COMMON;;	R3 KT-11 ADDRESS OF THE MESSAGE;;; OUTPUT CONDITIONS;	REGISTERS R2,R3,R4,R5 DESTROYED;; CALLING SEQUENCE:;	CALL < ENTRY POINT>;;-;	.ENABLE	LSB	ENTPT	CLK      2	MOV	@#UISAR3,-(SP)		; SAVE THE MAPPING KT	MOV	R3,@#UISAR3		; MAP THE MESSAGE	MOV	M.ID+60000,R1		; GET THE MESSAGE ID	CALL	$RTBL			; RELEASE THE BLOCK	BR	20$			; GO UNLOCK;	ENTPT	RTUL;;	CALL	..TFQM			; SET TIMER TO RETRANSMIT;;;	ENTPT	ULKM;	MOV	@#UISAR3,-(SP)		; SAVE APR3	MOV	R3,@#UISAR3		; MAP THE MESSAGE	MOV	R3,-(SP)		; SAVE THE ADDRES;;; NEED TO REQUEUE THE MESSAGE TO THE HEAD OF THR QUEUE;	MOV	M.ID+60000,R1		; GET THE IDENTITY OF THE MESSAGE	CALL	$ACBD			; GET THE BDB ENTRY	MOVB	M.DNR+60000,R3		; GET T      HE SCB	MOV	60000+M.ROT(R3),@#UISAR3; TO QUEUE TO;; MAP THE SCB;	CALL	LKHD			; LINK TO HEAD OF QUEUE	MOV	(SP)+,@#UISAR320$:	BICB	#MF.ACT,M.FLG+60000 	; CLEAR ACTIVE	MOV	(SP)+,@#UISAR3	RETURN;;	ENTPT	CLRK	CALLR	$RTBLLKHD:	INCB	60000+S.MCT		; INCREMENT COUNT OF QUEUED MESSAGES	MOV	60000+S.FST,-(SP) 	; SAVE FIRST LINK	BEQ	30$			; FIRST IN QUEUE10$:	MOV	R1,60000+S.FST		; SET SCB TO POINT TO THIS ONE	MOV	R4,@#UISAR3		; MAP THE DESCRIPTOR BLOCK	MOV	(SP)+,B.LINK+60000(R5) ;	CLRB	B.USE+60000(R5)		; CLEAR LOCK COUNT	      RETURN30$:	MOV	R1,60000+S.LST	BR	10$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..MQUE  (QUEUE A MESSAGE TO A STATION);;+;; ..MQUE -- QUEUE A MESSAGE TO ITS CURRENT DESTINATION;; THIS ROUTINE QUEUES THE SPECIFIED MESSAGE TO THE STATION; SPECIFIED BY THE CURENT ROUTE INFORMATION IN THE MESSAGE'S; MESSAGE CONTROL BLOCK.;; THE MESSAGE IS QUEUED TO THE END OF THE QUEUE.; IF NESSACCARY THE PROCESSING ELEMENT ASSOCIATED WITH THE STATION; IS ACTIVATED.;; INPUT CONDITIONS:;	ASR3 MAPS THE MESSAGE TO BE QUEUED;	UASR 0,1 MAP THE       APPLICATION COMMON AREA;; OUTPUT CONDITIONS:;;	R1,R2,R4,R5 DESTROYED;	ASR3 DESTROYED;; CALLING SEQUENCE;;	CALL ..MQUE;-;;	ENTPT	MQUE;; ASR4 IS USED TO MAP THE SCB TO QUEUE THE MESSAGE TO;	MOV	@#UISAR4,-(SP)		; SAVE ASR 4	MOVB	60000+M.DNR,R2		; GET DISPACEMENT TO CURRENT ROUTE	MOV	60000+M.ROT(R2),@#UISAR4; AND MAP THE STATION TO QUEUE TO;;	PROCESS ANY REDIRECTION;5$:	BITB	#SF.RDP,100000+S.FLG	; STATION REDIRECTED?	BEQ	10$			; NO	MOV	S.FST+100000,@#UISAR4	; GET THE REDIRECTED STATION	BR	5$			; SEE IF THE NEW       ONE IS REDIRECTED10$:	BICB	#MF.ACT,M.FLG+60000	; CLEAR THE MESSAGE FLAGS	MOV	M.CCB+60000,R5		; GET THE CCB FOR THE TRANSACTION	BEQ	17$			; TPMOD MESSAGE	BITB	#MF.SLT,M.FLG+60000	; IS THIS A SLOT	BEQ	15$			; NO	MOV	@#UISAR4,C.CQE(R5)	; SET THE CURRENT QUEUE  POINTER15$:	CMP	@#UISAR4,C.SCB(R5)	; MESSAGE FOR REPLY STATION?	BNE	17$			; NO	BIT	#CF.CLD!CF.RRQ,C.FLG(R5) ;TRANSACTION CLOSED OR REPLY NOT REQUIRED	BEQ	16$	MOV	60000+M.ID,R1		;DELETE THE SLOT	CALL	DMES1	MOV	R5,R0			;GET CCB	MOV	#AB.RCL,R5		;AND ABORT       THE TRANSACTION	CALL	..TABO	BR	40$16$:	BIS	#CF.RRQ,C.FLG(R5)	; YES SO CLEAR REPLY REQUIRED FLAG17$:	INCB	100000+S.MCT		; UPDATE THE NUMDER OF MESSAGES					; QUEUED TO THE STATION.	INC	S.TOT+100000		; TOTAL QUEUED TO THIS STATION	CMPB	100000+S.MCT,100000+S.THD; HAVE WE REACHED THE MESSAGE THRESHOLD					 ; FOR THIS STATION?	BLO	20$			; NO;; MAY NEED TO TRIGGER THE PROCESS;	TSTB	100000+S.SAT		; IS THE PROCESS WAITING FOR					; A MESSAGE?	BNE	20$			; NO -- DO NOT TRIGGER;; NEED TO TRIGGER THE PROCESSING ELEMENT       ASSOCIATED; WITH THIS STATION.;	MOV	R5,-(SP)		; SAVE R5	MOV	#BF.MES,.COMSB+B.FUN	; FUNCTION CODE	MOV	@#UISAR4,.COMSB+B.DAT	; SCB ADDRESS	MOV	#100000+S.TSK,R5	; ADDRESS OF TASK NAME	CALL	SEND			; INFROM MANAGER	MOV	(SP)+,R520$:	CALL	LINK			; LINK THE MESSAGE40$:	MOV	(SP)+,@#UISAR4	RETURN;; ROUTINE TO LINK A BDB TO A MESSAGE QUEUE;LINK:	MOV	60000+M.ID,R1		; GET THE IDENTITY OF THE MESSAGE	MOV	R1,-(SP)		; AND SAVE	CALL	$ACBD			; AND GET THE BDB ENTRY FOR THE MESSAGE	MOV	R4,@#UISAR3		; MAP THE MESSAGE DESCRIPT      OR BLOCK;; ASR3 NOW MAPS THE MESSAGE BDB BLOCK;;; NOW QUEUE THE MESAGE TO THE END OF THE STATION QUEUE;; R1 MESSAGE IDENTITY; R5    DISPLACEMENT TO BDB; UISAR3 MAPS THE MESSAGE BDB BLOCK; UISAR4 MAPS THE SCB;	CLRB	60000+B.USE(R5)		; CLEAR LOCK COUNT	CLR	60000+B.LINK(R5)	; CLEAR FORWARD LINK	MOV	100000+S.LST,R1		; GET IDENTITY OF PREVIOUS LAST	BEQ	40$			; THERE WASN'T ONE.	CALL	$ACBD			; GET THE BDB BLOCK	MOV	R4,@#UISAR3		; MAP THE DESCRIPTOR BLOCK	MOV	(SP),60000+B.LINK(R5) 	; SET THE FORWARD LINK30$:	MOV	(S      P)+,100000+S.LST	; POINT TO LAST	RETURN40$:	MOV	(SP),S.FST+100000	; SET FIRST POINTER	BR	30$.PAGE.SBTTL	TPMLIB -- WTSLT  (WRITE SLOT TO DISC);; INPUT CONDITIONS:;;	R0 -- CCB ADDRESS;; OUTPUT CONDITIONS:;;	R1,R4,R5 DESTROYED;WTSLT:	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	C.SLT(R0),R1		; GET THE SLOT IDENTITY	CALL	$ACBD			; GET THE BDB INFORMATION	MOV	R4,@#UISAR3		; MAP THE BDB	MOV	@$TTBAD,R4		; CLEAR DISC ERROR INDICATOR	BITB	#BF.OND!BF.LOA,B.FLG+60000(R5)	; SLOT ON THE DISC ALREADY?	BNE	10$			; YES	MOV	R0,-(SP)      		; SAVE THE CCB	CALL	$QIOW			; WRITE THE SLOT	MOV	(SP)+,R0		; RESTORE THE CCB	TSUSP$				; WAIT FOR IT	TSTB	(R4)			; DISC ERROR?	BMI	20$			; YES10$:	BICB	#BF.DTY,B.FLG+60000(R5)	; CLEAR THE DIRTY FLAG	MOV	C.IAT(R0),R4		; GET THE ACTIVE TRAN. TABLE ENTRY	ADD	#X.SDA,R4		; POINT TO DISC ADDRESS IN ATT	MOVB	B.HVBN+60000(R5),(R4)+	; SAVE	CLRB	(R4)+			; CLEAR HIGH BYTE TO SHOW ALLOCATED	MOV	B.LVBN+60000(R5),(R4)	; SLOT DISC ADDRESS15$:	MOV	(SP)+,@#UISAR3	RETURN20$:	MOV	C.IAT(R0),R4		; GET THE ATT	MOV	#-1,X.SDA(R4      )		; MARK SLOT AREA INVALID	BR	15$.PAGE.SBTTL	TPMLIB -- ..FEXC  (FIND EXCHANGE ENTRY IN TDB);; ..FEXC  FIND EXCHANGE ENTRY IN SPECIFIED TDB;;; INPUT CONDITIONS;;	R3 -- POINTER TO EXCHANGE NAME TO FIND;	R4 -- BASE ADDRESS OF BLOCK HOLDING TDB;	R5 -- DISPALCEMENT TO FIRST EXCHANGE ENTRY;;; OUTPUT CONDITIONS;;	'C' SET IF NOT FOUND;;	R5 -- DISPLACEMENT TO EXCHANGE;;	ENTPT	FEXC	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	R4,@#UISAR3		; MAP THE TDB BLOCK10$:	CMP	(R3),60002(R5)		; CHECK FIRST 2 CHARA.	BNE	20$			; NOT THIS       ONE	CMP	2(R3),60004(R5)		; NEXT TWO	BNE	20$			; NOT THIS ONE	CMP	4(R3),60006(R5)		; LAST TWO	BEQ	30$			; GOT THE REQUIRED ENTRY20$:	TST	60000(R5)		; END OF TDB?	SEC	BEQ	35$			; YES	ADD	60000(R5),R5		; GET NEXT ENTRY	BR	10$30$:	CLC35$:	MOV	(SP)+,@#UISAR3		;	RETURN.PAGE.SBTTL	TPMLIB -- ..GSTE  (GET NEXT STAGGED ENTRY);+;; ..GSTE -- GET NEXT ENTRY IN SYSTEM WORKSPACE;;;; INPUT CONDITIONS:;	UISAR3	MAPS THE STAGE AREA;	R3	ATT ENTRY FOR THE TRANSACTION INSTATANCE;	R5	CURRENT ASR3 RELATIVE ADDR. OF ENTRY;	R4	NUMB      ER OF ENTRIES LEFT TO PROCESS;; OUTPUT CONDITIONS:;	'C' CLEAR IF NEW ENTRY FOUND;	R5 UPDATED;	.ENABL	LSB;	'C' SET IF NO MORE ENTRIES;; CALLING SEQUENCE:;	CALL	..GSTE;;-;	ENTPT	GSTE	INC	X.EDP(R3)		; UPDATE UNSTAGE COUNT;..GST1::	SEC			; ASSUME NO MORE ENTRIES	DEC	R4		; REDUECE ENTRIES LEFT TO PROCESS	BLE	10$		; GO AND GET NEXT ENTRY	ADD	V.SIZ(R5),R5	; STEP TO NEXT ENTRY	SUB	#60000,R5	; REMOVE ASR3 BIAS	ASR	R5		; MAKE WORD OFFSETGSTE2:	MOV	R5,-(SP)	; SAVE  DISPLACEMENT	ASH	#-5,R5		; GET TO 32 WORD (64 BYTE) O      FFSET	ADD	R5,@#UISAR3	; STEP ON ASR3 TO MAP NEAREST 32. WD. BOUNDARY	MOV	(SP)+,R5	; REFORM THE	ASL	R5		; MAKE BYTE OFFSET	BIC	#177700,R5	; ADDRESS OF THE ENTRY	BIS	#60000,R5	; TO NEW ASR3 BASE	CLC10$:	RETURN	.DSABLE	LSB.PAGE.SBTTL	TPMLIB -- ..USET  (SET TO SCAN SYSTEM WORKSPACE);;; ..USET -- INITALISE PARAMETERS FOR SCAN OF SYSTEM WORKSPACE;;; INPUT CONDITIONS:-;;	R2 -- CCB;	R3 -- MASK FOR ENTRIES REQUIRED;		( FLAG MASK);; OUTPUT CONDITIONS:-;;	UISAR3 -- MAPS THE FIRST ENTRY;;	R4 -- NUMBER OF ENTRIES IN WOR      KSPACE;	R5 -- VIRTUAL ADDRESS OF FIRST ENTRY;	.ENABL	LSB;	ENTPT	USET	MOV	R0,-(SP)		; SAVE THE	MOV	R1,-(SP)		; VOLATILE REGISTERS	MOV	C.SLT(R2),R1		; GET THE BDB FOR THE SLOT	CALL	LODSLT			; GET THE KT-11 OF THE SLOT	MOV	R0,@#UISAR3		; MAP THE MCB	MOV	(SP)+,R1		; RESTORE	MOV	(SP)+,R0		; THE REGISTERS	BCS	25$			; DISC READ ERROR	BR	10$			;;; ENTRY POINT IF  ADDRESS OF SLOT KNOWN;	ENTPT	USE1	MOV	R0,@#UISAR3		; MAP THE MCB10$:	MOV	C.IAT(R2),R5		; GET THE ACTIVE TRAN ENTRY	CLR	-(SP)			; CLEAR UNSATGE RESTART COU      NT	BIT	#CF.CRA,C.FLG(R2)	; CRASH RESTART?	BEQ	11$	MOV	X.EDP(R5),(SP)		; SAVE THE UNSATGE COUNT11$:	CLR	X.EDP(R5)		; CLEAR UNSTAGE COUNT	TST	M.SDP+60000		; IS THERE A SYSTEM AREA?	BEQ	30$			; NO	ADD	M.SDP+60000,@#UISAR3	; MAP THE W/S	BITB	R3,G.FLG+60000		; SEE IF REQUIRED ENTRIES IN W/S	BEQ	30$			; NO	MOV	R5,R3			; SAVE ATT ADDRESS	MOV	#60002+G.ESZ,R5		; POINT TO THE FIRST ENTRY	MOV	G.NET+60000,R4		; NUMBER OF ENTRIES	BEQ	30$			; NO ENTRIES SO RETURN CONDITION	BIT	#CF.ERT,C.FLG(R2)	; EXCHANGE BEING RESTARTED      ?	BEQ	15$			; NO14$:	MOV	G.ESZ+60000,R4		; GET NUMBER OF ENTRIES FOR EXCGNAGE	BEQ	30$			; NONE - SO RETURN CONDITION	MOV	G.EEX+60000,R5		; POINT TO AREA FOR CURRENT EXCGANGE	CALL	GSTE215$:	TST	(SP)			; UNSTAGE COUNT?	BEQ	20$			; NO16$:	CALL	..GSTE			; GET TO	BCS	20$			; REQUIRED	DEC	(SP)			; ENTRY	BGT	16$20$:	INC	(SP)+			; CLEAN STACK25$:	RETURN30$:	SEC	BR	20$USE2:;; ENTRY POINT TO GET SET FOR EXCHANGE UNSTAGE;	CLR	-(SP)	BR	14$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..GTSA  (GET SPACE FROM SYSTEM WORKSPACE);;; ..G      TSA -- GET SPACE FOR STAGING FROM THE SYSTEM WORKSPACE;	    FOR THE TRANSACTION INSTANCE.;;; INPUT CONDITIONS:-;;	R2 -- CCB;	R4 -- SIZE ,IN BYTES, OF SPACE REQUIRED;	R5 -- CODE/FLAGS FOR ENTRY REQUIRED;		HIGH BYTE -- TYPE CODE;		LOW  BYTE -- ENTRY TYPE FLAG;; OUTPUT CONDITIONS:-;;	UISAR3 -- MAPS THE SPACE;;	R4 -- VIRTUAL ADDRESS OF SPACE;;	'C' SET IF NO SPACE AVAILABLE AND THE TRANSACTION;	WILL HAVE BEEN ABORTED.;;	ENTPT	GTSA	ADD	#5,R4		;ALLOW FOR ENTRY HEADER	ASR	R4		;CORRECT FOR WORD SIZE	MOV	R0,-(SP)		;       SAVE VOLATILE	MOV	R1,-(SP)		; REGISTERS	MOV	C.SLT(R2),R1		; GET THE KT	CALL	$ACBDB			; OF THE SLOT	MOV	R0,@#UISAR3		; MAP THE MCB									;CP02-2*	TST	M.SDP+60000		; IS THERE A SYSTEM AREA?	BEQ	20$			; NO SO ERROR	ADD	M.SDP+60000,@#UISAR3	; MAP THE SYSTEM SPACE	SUB	R4,G.FSZ+60000		; REDUCE SPACE USED SO FAR	BMI	20$			; NO SPACE LEFT -- ABORT	MOV	R4,-(SP)		; SAVE THE SIZE	MOV	R5,-(SP)		; AND THE FLAGS		INC	G.NET+60000		; INCREAMENT NUMBER OF ENTRIES	INC	G.ESZ+60000		; INC. ENTRIES USED BY EXCHANGE	MOV	G.FRE+      60000,R4		; GET THE ADDRESS OF SPACE OBTAINED	ADD	2(SP),G.FRE+60000	; POINT TO NEW FREE SPACE	BISB	(SP),G.FLG+60000	; SET FLAG FOR ENTRY TYPE;; NOW POINT TO ENTRY;	CLR	R5			; GET 32 WORD	ASHC	#-5,R4			; OFFSET TO SPACE	ADD	R4,@#UISAR3		; MAP THE SPACE	MOV	#600,R4			;SET UP VIRTUAL ADDRESS 	ASHC	#6,R4;; INITALISE THE ENTRY HEADER;	MOVB	1(SP),(R4)+		; TYPE CODE	MOVB	C.EXT(R2),(R4)+		; EXCHANGE NUMBER	MOV	(SP)+,R5		; RESTORE CODES	ASL	(SP)			; MAKE SIZE BYTES	MOV	(SP)+,(R4)+		; MOVE SIZE INTO HEADER	CLC10$:	MO      V	(SP)+,R1						;***CP02	MOV	(SP)+,R0						;***CP02	RETURN20$:;; ERROR DETECTED -- NO SPACE;	MOV	R2,R0			; ABORT THE	MOV	#AB.SYF,R5		; 	CALL	..TABO			; TRANSACTION	SEC	BR	10$.PAGE.SBTTL	TPMLIB -- ..QRHD  (REMOVE ENTRY FROM HEAD OF QUEUE);+; ..QRHD -- REMOVE ENTRY FROM HEAD OF QUEUE;;;;; INPUT CONDITIONS:;	R4 -- ADDRESS OF 2 WORD LIST HEAD;; OUTPUT CONDITIONS;;	'C' SET IF THERE ARE NO ENTRIES IN THE QUEUE;;	'C' CLEAR IF THE ENTRY AT THE HEAD OF THE QUEUE IS REMOVED;		R5 -- ADDRESS OF THE ENTRY REMOVED;; CALL      ING SEQUENCE:;	CALL	..QRHD;;-;;	ENTPT	QRHD	MOV	(R4),R5		; GET ADDRES OF TOP ENTRY	SEC			; RETURN NO ENTRY	BEQ	50$		;LEAVE IF NO ENTRY;	MOV	(R5),(R4)	; CLOSE UP THE LIST	BNE	40$		; IF ZERO THEN JUST REMOVED THE LAST ENTRY	MOV	R4,2(R4)	; SO RESET THE LIST HEAD40$:	CLC50$:	RETURN.PAGE.SBTTL	TPMLIB -- ..QILE  (INSERT AT END OF QUEUE);;+;; ..QILE -- INSERT AT END OF QUEUE;; ROUTINE TO INSERT A NODE AT THE END OF A QUEUE;;INPUT CONDITIONS:;;	R0 -- ADDRESS OF TWO WORD LISTHEAD;	R1 -- ADDRESS OF ENTRY TOBE INSERTED      ;; OUTPUT CONDITIONS::;;	THE ENTRY IS LINKED TO THE END OF THE QUEUE;; CALLING SEQUENCE:;;	CALL	..QILE;;-;	ENTPT	QILE	MOV	R1,@2(R0)	; LINK NEW ENTRY TO PREVIOUS ENTRY	MOV	R1,2(R0)	; SET ADDRESS OF NEW LAST ENTRY	CLR	(R1)		; SET LAST MARKER	RETURN.PAGE.SBTTL	TPMLIB -- TWAIT   (WAIT A THREAD FOR A RESOURCE);;; INPUT CONDITIONS:-;;	R4 LIST HEAD OF WAIT QUEUE;; OUTPUT CONDITIONS:-;;	R1,R0 DESTROYED;TWAIT:.DMTWT::	ENTPT	TWAT	MOV	#W.SIZE,R1		; GET A WAIT NODE	CALL	..ALCB			; FROM THE POOL	BCC	10$			; OK	MOV	#.EMW      AT,R0		; GET SPARE NODE	TST	2(R0)			; IN USE?	BEQ	10$			; NO	$DELAY				; NO SPACE SO WAIT A BIT	BR	TWAIT			; AND TRY AGAIN10$:	MOV	$TTBAD,R1		; GET THE TTB FOR THE TASK	MOV	(R1),W.CXT(R0)		; PUT THE CONTEXT BLOCK IN THE WAIT BLOCK	MOV	T.TNAM(R1),W.TSK(R0)	; AND THE	MOV	T.TNAM+2(R1),W.TSK+2(R0); TASK NAME	MOV	R0,R1			; AND PLACE	MOV	R4,R0			; IN	CALL	..QILE			; THE WAIT QUEUE	TSUSP$	RETURN.PAGE.SBTTL	TPMLIB -- TWAKE   (WAKE A THREAD WAITING FOR A RESOURCE);; INPUT CONDITIONS;;	R4 LIST HEAD OF WAIT QUEUE;; OU      TPUT CONDITIONS;;	'C" SET IF NO ENTY IN WAIT QUEUE;;	R0,R1,R3,R5 DESTROYED;;TWAKE:.DMTWK::	ENTPT	TWKE	CALL	..QRHD			; GET ENTRY FROM WAIT QUEUE	BCS	10$			; NO ENTRY;	MOV	4(R4),.COMSB+B.FUN	; SET THE WAKE FUNCTION CODE	MOV	R5,R0			; RETURN THE WAIT BLOCK	ADD	#W.TSK,R5		; POINT TO TASK NAME	CALL	SEND	CLR	2(R0)			; CLEAR IN USE FLAG	CMP	#.EMWAT,R0		; SPARE NODE	BEQ	5$			; YES	MOV	#W.SIZE,R1	CALL	..DALB5$:	CLC10$:	RETURN.PAGE.SBTTL	TPMLIB -- TIMER QUEUE ROUTINES;; ** ADD TO TIMER QUEUE;;; ..TCCB -- EXCHANGE TIM      E OUT ENTRY;;		R4 -- CCB;		R5 -- TIME OUT VALUE;; ..TFQM -- RETRANSMIT FQM;;		ASR3 -- SCB ADDRESS;; ..TOUT -- TERMINAL TIMEOUT;;		ASR3 -- SCB ADDRESS;; OUTPUT CONDITIONS:;;	REGISTERS R0,R2,R4,R5 DESTROYED;;	NODE PLACED IN THE TIMER QUEUE;;	.ENABL	LSB;;	ENTPT	TCCB	BIC	#177600,R5		; CLEAR OUT ANY RUBBISH;; ADD EXCHANGE TIMEOUT NODE;	BIS	#WT.EXT*256.,R5		; GET THE TIMER TYPE ENTRY CODE	BR	20$			; DO COMMON PROCESSING;;	ENTPT	TFQM;; RETRANSMIT FQM TIMER ENTRY;	MOV	#WT.FQM*256.!1,R5	; CODE AND 1 MINUTE TIMER	BR	      10$			;;;	ENTPT	TOUT	MOV	#WT.TRM*256.,R5		; GET TIMER CODE	BISB	.TROUT,R5		; SET THE TIMER VALUE10$:	MOV	@#UISAR3,R4		; GET THE SCB20$:	MOV	R1,-(SP)		; SAVE R1;; GET A TIMER NODE;	MOV	#WT.SIZ,R1		; NODE SIZE40$:	CALL	..ALCB			; ALLOCATE FROM THE SMALL POOL	BCS	100$			; NO SPACE;; FILL THE NODE IN;	MOV	R4,W.IDT(R0)		; PUT IDENTITY IN (SCB/CCB)	CLR	W.TIM(R0)	BISB	R5,W.TIM(R0)		;  TIME	SWAB	R5	MOVB	R5,W.TYP(R0)		; TYPE;; INSERT IN QUEUE BY ELAPSE TIME;	MOV	#.TRQ,R1	;POINT AT THE LISTHEAD50$:	MOV	@R1,R4			; GET       THE NEXT ENTRY	BEQ	70$			; NO MORE SO ADD TO END	CMPB	W.TIM(R0),W.TIM(R4)	; PLACE BEFORE THIS ENTRY	BLOS	60$			; YES	SUB	W.TIM(R4),W.TIM(R0)	; ADJUST THE TIMER TO REFLECT					; NEW POSITION	MOV	R4,R1			; GET NEXT ENTRY	BR	50$60$:;; PLACE HERE;	SUB	W.TIM(R0),W.TIM(R4)	; MAKE NEXT NODE RELATIVE TIME					; TO NODE TOBE INSERTED	MOV	(R1),(R0)		; LINK	MOV	R0,(R1)			; THE NODE IN	BR	80$70$:	MOV	R0,R1			;	MOV	#.TRQ,R0		; ADD TO END	CALL	..QILE80$:	TSTB	.TRQ+W.TYP		; TIMER ACTIVE?	BNE	90$			; YES	INC	.TRQ+W.TYP		;       SET TIMER ACTIVE	MOV	#.TTASK,R5		; START THE	CALL	SEND			; TIMER90$:	MOV	(SP)+,R1	RETURN100$:;; NO NODE SPACE;	$DELAY	BR	40$	.DSABL	LSB;;; ** FLUSH THE TIMER QUEUE;;	R1 -- IDENTY OF NODES TO FLUSH;	ENTPT	TFLH;	MOV	R1,-(SP)		; SAVE THE IDENTITY	MOV	#.TRQ,R0		; GET TIMER LIST HEAD10$:	MOV	R0,R4			; SAVE ENTRY	MOV	@R0,R0			; GET NEXT ENTRY	BEQ	40$			; NO MORE ENTRIES20$:	CMP	(SP),W.IDT(R0)		; REMOVE THIS ENTRY?	BNE	10$			; NO	MOV	(R0),R5			; SAVE THE NEXT ENTRY	BEQ	25$			; NO NEXT ENTRY	ADD	W.TIM(R0),W.TIM(R5      )	; RESET RELATIVE TIME25$:	MOV	(R0),(R4)		; UNLINK	BNE	30$			; NOT LAST	MOV	R4,.TRQ+2		; SET NEW LAST30$:	MOV	#WT.SIZ,R1		; GET THE NODE SIZE	CALL	..DALB			; RETURN THE NODE SPACE	MOV	R5,R0			; GET NEXT NODE	BNE	20$			; AND PROCESS40$:	MOV	(SP)+,R1		;	RETURN.PAGE.SBTTL	TPMLIB -- RSX SEND ROUTINES;;; THESE ROUTINES PROVIDE THE MANAGER - MANAGER COMMUNICATION; FUNCTIONS, VIA THE RSX SEND DIRECTIVES.;; ON ENTRY THE FOLOWING PARAMETERS WILL HAVE BEEN SET IN; THE SEND BUFFER (.COMSB):-;	B.FUN -- FUNCTION CODE;	      B.DAT -- PARAMETER;; THESE ROUTINS WILL SET THE TARGET MANAGER TASK NAME IN THE DPB; AND THE FOLLOWING FIELDS IN THE SEND BUFFER:-;	B.CXT -- THE CONTEX BLOCK ADDRESS;	B.DAT+2 -- THE CURRENT THREAD CONTEXT BLOCK ADDRESS;;; ** DMSEND -- SEND TO DATA MANAGER; ** EXSEND -- SEND TO EXECUTION MANAGER; ** TMSEND -- SEND TO TIM; ** SEND   -- GENERAL SEND;		R5 POINTS TO PARAMETER BLOCK:-;		WD.00 TASK NAME;		WD.02 TASK NAME (SECOND HALF);		WD.04 CONTEXT BLOCK ADDRESS TO WAKE;;	.ENABLE	LSBLMSEN1:	MOV	#BF.END,.COMSB+B.      FUN		; SET END FUNCTION	BIT	#CF.ABO,C.FLG(R1)		; ABORTED TRANSACTION?	BEQ	LMSEND				; NO	MOV	#BF.ABO,.COMSB+B.FUN		; SET ABORTLMSEND:	MOV	#.LIMAN,R5	BR	SENDEXSEND:	MOV	#.EXMAN,R5		; GET PARAMETER BLOCK FOR EXECUTION MANAGER	BR	SENDTMSEND:	MOV	#.FMMAN,R5		; TIM	BR	SENDDMSEND:	MOV	#.DMMAN,R5		; DATA MANAGERSEND:.SEND::	MOV	(R5)+,.CSEND+S.DATN+0	; MOVE THE TASK	MOV	(R5)+,.CSEND+S.DATN+2	; NAME INTO DPB	MOV	(R5),.COMSB+B.CXT	; CONTEXT TO WAKW	MOV	@$TTBAD,.COMSB+B.DAT+2	; CURRENT CONTEXT BLOCK10$:	DIR$	#.CSEND		      ; DO THE SEND	BCS	30$20$:	RETURN;; PROCESS ERRORS FORM DIRECTIVE;; CHECK FOR LACK OF POOL SPACE;30$:;; DIRECTIVE ERROR;	CMP	#IE.UPN,$DSW			; NODE POOL PROBLEM?	BNE	..TPCH				; NO -- CRASH	MOV	.COMSB+B.FUN,-(SP)		; SAVE FUNCTION CODE	MOV	.COMSB+B.DAT,-(SP)		; AND DATA	MOV	.COMSB+B.DAT+4,-(SP)	MOV	.COMSB+B.DAT+6,-(SP)	MOV	R4,-(SP)			; SAVE R4	MOV	$TTBAD,R4			; GET TTB	BISB	#TF.NRB,T.FLG(R4)		; DISABLE RECIEVES	$DELAY	BICB	#TF.NRB,T.FLG(R4)	MOV	(SP)+,R4	CMP	-(R5),-(R5)			; RESET R5	MOV	(SP)+,.COMSB+B.DAT+6	MOV      	(SP)+,.COMSB+B.DAT+4		; RESTORE	MOV	(SP)+,.COMSB+B.DAT	MOV	(SP)+,.COMSB+B.FUN		; AND FUNCTION CODE	BR	SEND	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- TRANSACTION PROCESSOR CRASH/RESTART ROUTINE;;	ENTPT	TPCH	MOV	.ASR1,@#UISAR1	MOV	#.ENDCX,SP			; GET A STACK AREA	DSAR$S					; DISABLE ASTS						; MANAGERS COULD BE CORRUPT	SVTK$S	,#0				; REMOVE SST ENTRY POINTS	MOV	#.COMSB,R0			; GET BUFFER AREA	GTSK$S	R0				; GET NAME OF TASK CURRENTLY						; EXECUTING IN	MOV	2(R0),-(SP)			; SET TASK NAME	CLR	-(SP)				; AREA	MOV	SP,R5	      			; POINT TO TASK NAME AREA	MOV	#NUMMRG,R4			; NUMBER OF MANAGERS	MOV	#MRGNAM,R3			; MANAGER NAME TABLE10$:	MOV	(R3)+,(R5)			; GET NAME	CMP	(R0),(R5)			; CURRENT ONE?	BEQ	20$				; YES SO DON'T ABORT	ABRT$S	R5				; ABORT TASK20$:	SOB	R4,10$	MOV	#BF.TPR,(R0)			; SET SEND UP	CALL	.CXENB				; ENABLE CONTEXT SWITCHING	SDAT$S	#TPRT,R0				; SEND TO IT	RQST$S	#TPRT	HALTTPRT:	.RAD50	/TPRTSK/MRGNAM:	.RAD50	/EXC/	.RAD50	/DAT/	.RAD50	/TIM/	.RAD50	/LIM/	.RAD50	/BAT/NUMMRG=<.-MRGNAM>/2.PAGE.SBTTL	TPMLIB -- MAINLINE/DELA      Y PROCESSING;;; THIS ROUTINE PARFORMS THE BACKGROUND (MAINLINE LEVEL) PROCESSING; FOR A MANAGER.;;	THE ROUTINE IS CALLED WHEN ALL PROCESSING FOR THE 'START' OF; A MANAGER IS COMPLETE. THE ROUTINE RETURNS TO THE CALLER WHEN; 'STOP COMPLETE' IS DETECTED.;;	THE ROUTINE WAITS ON TWO EVENT FLAGS:-;;	EF 1.	SET WHEN STOP COMPLETE IS DECTECTED AT THREAD LEVEL;		TO START THE MAINLINE. THE EVENT FLAG IS CLEARED;		AND A RETRUN FROM SUBRUTINE MADE.;;;	EF 2.	SET WHEN A THREAD IS PLACED IN THE DELAY QUEUE.;;		IF ENTRIES       ARE FOUND IN THE DELAY QUEUE THIS ROUTINE;		WAITS ON A SIGNIFICANT EVENT AND THEN RESUMES ALL;		THREADS IN THE DELAY QUEUE.;;	ENTPT	MSUP	MOV	$TTBAD,R1		; GET THE THREAD TABLE BLOCK10$:	WTLO$S	0,#3		;WAIT FOR EVENT FLAGS 1 OR 2	DSAR$S	ADD	#T.RB,R1	;POINT AT BUFFER	RDAF$S	R1		;READ THE FLGS	BIT	#2,(R1)		;WAS EVENT FLAG 2 SET?	BEQ	20$			;NO - MUST HAVE BEEN 1	MOV	$TTBAD,R1	CLEF$S	#2			; CLEAR EF 2	ENAR$S	TST	T.QCBA(R1)		; ANY DELAY ENTRIES?	BEQ	10$			; NO	WSIG$S				; WAIT A BIT	MOV	R0,-(SP)		; SET UP FOR THREA      DS	CALL	.DRES			; RESUME THE THREADS	BR	10$20$:	CLEF$S	#1	ENAR$S	RETURN;READF:	RDAF$	2;WAITL:	WTLO$	0,3		;WAIT FOR 1 AND 2.PAGE.SBTTL	TPMLIB -- ..INSM  (INSTALL A TPM MANAGER);+;; ..INSM -- INSTALL A MANAGER;;;;  THIS ROUTINE  PERFORMSS THE  COMMON FUNCTIONS FOR; THE INSTALLATION OF A TPM MANAGER:-;;	1. OBTAIN THE NAME OF THE APPLICATION COMMON REGION;	2. ATTACH AND MAP THE REGION;	3. SEND REPLY TO THE INSTALL TASK;;; INPUT CONDITIONS:;;	R0	POINTER TO PARAMETER BLOCK:-;		WD.0 POINTER TO RECEIVE DPB FOR SEND       DATA FROM INSTALL;		WD.1 POINTER TO ATTACH DPB FOR APPLICATION COMMOM;		WD.2 POINTER TO CREATE WINDOW DPB COMMOM;		WD.3 POINTER TO SEND DPB FOR SEND DATA TO INSTALL;		WD.4 POINTER TO SEND BUFFER TO/FROM INSTALL;;	$TTBAD CONTAINS THE ADDRESS OF THE TTB FOR THE TASK;;;; OUTPUT CONDITIONS:;;	IF THE INSTALL IS SUCCESSFUL CONTROL IS RETURNED TO THE CALLING;	MANAGER.;	IF THE INSTALL IS NOT SUCCESSFUL AN ERROR REPLY IS SENT TO;	THE INSTALL TASK AND THE CALLING MANAGER IS EXITED.;;;	R1,R2,R3,R4,R5 ARE DESTROYED;-;      	ENTPT	INSM10$:	DIR$	(R0)			; GET THE SEND BUFFER WITH THE REGION NAME	BCC	20$			; GOT IT OK	HALT				; else CAUSE MANAGGER TO ABORT	;***CP03									;-3*CP0320$:	MOV	10(R0),R1		; GET THE BUFFER ADDRESS	MOV	2(R0),R2		; GET THE ATTACH DPB	MOV	A.TRBA(R2),R2		; GET THE REGION CONTROL BLOCK	MOV	B.DAT+4(R1),R.GNAM(R2) ; MOVE THE NAME	MOV	B.DAT+6(R1),R.GNAM+2(R2); IN	DIR$	2(R0)		; ATTACH  TO THE REGION	BCS	30$			; ERROR	MOV	4(R0),R3		; GET THE WINDOW CREATE DPB	MOV	C.RABA(R3),R3		; GET THE WINDOW CONTROL BLOCK	MOV      	R.GID(R2),W.NRID(R3) 	; MOVE IN THE IDENTITY	MOV	#400,W.NSIZ(R3)	; AND THE SIZE	DIR$	4(R0)		; MAP THE REGION	BCS	30$			; ERROR;; NOW GET THE TASK NAME;	PUSH	<R0,R1>			; SAVE R0 AND R1	MOV	#32.,R1			; GET 16. WORDS	CALL	..ALCB			; FOR THE TASK PARAMETERS	BCS	25$			; NO SPACE	GTSK$S	R0			; GET THE TASK PARAMETERS	MOV	R0,R4			; SAVE FOR SST AND RETURN SPACE	MOV	$TTBAD,R3		; GET THE TTB	MOV	(R4)+,T.TNAM(R3)	; SAVE THE TASK	MOV	(R4),T.TNAM+2(R3)	; NAME;; SET-UP SST VECTOR TABLE;	MOV	T.DFP(R3),R5			; GET CRASH V      ECTOR TABLE ADDRESS	MOV	(R5),R3			; GET CRASH ROUTINE ADDRESS	MOV	@#UISAR0,2(R3)			; PLUG ASR0	MOV	@#UISAR2,10(R3)			; PLUG ASR3	BIT	#SY.CRC,.SYFLG			; AUTO-CRASH RECOVERY?	BEQ	23$				; NO	SVTK$S	R5,#7				; DECLARE SST	BCS	30$23$:	CALL	..DALB	POP	<R1,R0>	MOV	#BF.ISC,B.FUN+4(R1) 	; SET RETURN FUNCTION CODE24$:	MOV	6(R0),R3		; GET SEND DPB	MOV	(R1)+,S.DATN(R3)		; MOVE IN THE INSTALL TASK	MOV	(R1),S.DATN+2(R3) 	; NAME	DIR$	R3			; SEND REPLY	CLEF$S	#1			; CLEAR EVENT FLAG 1	RETURN25$:	POP	<R1,R0>30$:	MOV	#BF.IE   N   R,B.FUN+4(R1)	; SET ERROR FUNCTION	CALL	24$			; DO SEND ETC.	EXIT$S.PAGE	.END N          8NÁ› 8$                               ëÈ2Ž{Á› 8$        CACHE.MAC;2/AU:80.=CACHE.MAC;1/-BF\-1.IDENT	"1.0B00"-40;;;;;;	MODIFIED BY:;;;	RICHARD TREADWAY;;	12-MAR-79	SPR T252431				** RT001;;	;		ON FILES WITH BUCKET SIZE LARGER THAN ONE THE;		GET BLOCK WITH EXCHANGE FOR RMS COULD EXCHANGE;		BLOCKS OF UNEQUAL SIZE.  ROUTINE "$GTBLX" MODIFIED;		TO RETURN NO HIT IN THIS CASE.;%-241,251,/;* RT001/	CALL	BDBDEL			; DELETE THE BDB FROM SEARCH LIST	CALL	POINT			; MAP THE BDB					; R0 - MAPS THE BDB 					; R1 - POINTS TO BDB ADDRESS	MOV	(SP),R2			; RESTORE RMS BDB ADDRESS	M   ’  OV	B$SIZE(R2),R4		; GET THE SIZE	ASH	#-6,R4			; CONVERT TO 32 WORD BLOCKS	CMP	R4,B.SIZE(R0)		; SAME SIZE	BNE	10$			; IF NE THEN NO		MOV	B.ADDR(R0),B$ADDR(R2)	; EXCHANGE THE BUFFERS	CLR	B.ADDR(R0)		; INDICATE THAT BUFFER IS  RELEASED	CALL	$DLAR			; RELEASE THE BDB					; INPUT: R1 - BDB ADDRESS	POP	R1			; RESTORE RMS BDB	BR	30$			; EXIT10$:	CALL	$DLAR			; RELEASE THE BDB					; INPUT: R1 - BDB ADDRESS/’         \!C	NyÁ› 8$        .TITLE	EXECMN.IDENT	"V001A";+;;;;;;                         COPYRIGHT (C) 1978 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; TRANSFER      RED.;;; 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.;;;;	MODULE:		EXECUTION MANAGER;;	VERSION:	V001A;;	AUTHOR:		MIKE GARRY;;	DATE:		1977;;; EDITS:;;	CP01: 1/22/79;	SNDMSG:	1) NEW ENTRY POINT TO ..GMBF (..GMB2) AND CCB IS PARAMETER.;		2) CLEAN STACK ON .VXFRR ERROR RETU      RN;	OPETRN:	1) SAVE CCB ON STACK -RETURN TXN CORRECT TXN ID;		2) NEW ENTRY POINT TO ..GMBF (..GMB2);		3) DO NOT FIND CCB FROM SCB LIST;		4) NEW ENTRY POINT TO ..TCLS (..TCL2);.PAGE	.MCALL	TSUSP$,TSTRT$,TRESM$,TTRMN$,DIR$,RQST$,GENCB,GENTTB	.MCALL	ASRDF$,MAP,RDBBK$,WDBBK$,ATRG$,CRAW$,RCVD$,SDAT$	.MCALL	DTRG$,SRDA$S,WTLO$,RDAF$,ATRG$S,CRAW$S,$DELAY	.MCALL	SFPA$S,SPND$S,PCBDF$,TCBDF$,SDAT$S,PUSH,POP,EXIT$S	.MCALL	WTSE$S,CLEF$S,SETF$S,HDRDF$	.MCALL	INH$S,ENB$S,EXST$S,PKTDF$	ASRDF$	PCBDF$	TCBDF$	PKTDF$	HDRDF$	.E      NABL LC	.MACRO	SWITCH$	X	EMT	376	.WORD	X	.ENDM;+;;	EXECUTION MANAGER;;	THIS ROUTINE IS ONE COMPONENT OF THE T.P. MONITOR;	AND IS RESPONSIBLE FOR THE RUNNING AND SUPPORT OF THE TST'S;	IN THE SYSTEM.;;	THE DESIGN IS MULTI-THREADED WITH THREADS ALLOCATED AS FOLLOWS:;	;	INITIATOR - STARTED BY THE MAIN-LINE CODE,STARTS ALL OTHER ;		THREADS.IT IS TRIGGERED BY ANOTHER MANAGER.;;	LOADER-RUNNER - ONE PER REQUESTED TST.THESE THREADS;		ARE ACTIVE FOR THE DURATION OF A TST - THE CONTEXT;		BLOCK FOR THE THREAD EFFECIVEL      Y PROVIDING A RUN TIME;		CONTROL BLOCK FOR THE TST.;;;	REGISTER USUAGE:;		R0 AND R1	UTILITY REGISTERS	;		R2		SCB ADDRESS (VIRTUAL);		R3		MESSAGE ADDRESS (REAL);		R4		TST LOAD ADDRESS (REAL);		R5		TCB ADDRESS;;;;	APR USAGE:;		APR0 AND APR1	APPLICATION COMMON;		APR2		TPMLIB;		APR5		EM TASK IMAGE;		APR6		EM C.B. REGION;;-.PAGE.SBTTL	DATA STRUCTURES;CBOFF=6			;CONTEXT BLOCK ADDRESS OFFSET;HD.TST = 222		;SIZE OF A TST HEADERMX.TST = 8.		; MAX # OF CONCURRENT TSTs IN CACHE		?;;	RECEIVE BUFFER DATA OFFSETS;B.VAR=1      2		;VARIABLE DATA SECTION OF RECEIVEB.NAM=12		;POINTER TO USER SUPPLIED NAMEB.CCB=10		;CCB ADDRESSB.HD= 12		;HEADER ADDRESSB.VA=14			;VIRTUAL ADDRESS OF USER BUFFERB.VSZ=16		;SIZE OF USER BUFFERB.RT=20			;ADDRESS OF ROUTE TABLE;;	ERROR RETURN CODES;ER.BER=-10		;GET BUFFER ERRORER.RTE=-11		;ROUTE TABLE ERRORER.VAL=-12		;SEND BUFFER VALIDATION ERRORER.VXF=-13		;BUFFER VALIDATION ERROR;FRSTFN=30		;FIRST FUNCTION CODE FOR EXECUTION MANAGER;;LIBREG:	RDBBK$	,TPMLIB,,<RS.RED!RS.WRT>	; ATTACH TO TPMLIBLIBWND:	WDBBK      $	2,,,0,,<WS.MAP!WS.RED!WS.WRT>	; MAP APR2 ONTO TPMLIBEXCXTR:	RDBBK$	,ECX001,,<RS.RED!RS.WRT>	; CONTEXT BLOCK REGIONEXCXTW:	WDBBK$	6,,,0,,<WS.MAP!WS.RED!WS.WRT>	; MAP APR6 ONTO CONTEXT BLOCK REGION;REGCB:	RDBBK$	,,,<RS.WRT!RS.RED>	;SYSTEM COMMON REGIONWNDCB:	WDBBK$	0,,,0,,<WS.MAP!WS.RED!WS.WRT> ;SYSTEM COMMON WINDOWATTACH:	ATRG$	REGCBCREATE:	CRAW$	WNDCBRECDAT:	RCVD$	,EXTTB+T.RBSNDDAT:	SDAT$	,EXTTB+T.RB+4WAIT:	WTLO$	3READEF:	RDAF$	FLGBUFFLGBUF:	.BLKW	4DETRG:	DTRG$	REGCBINSDAT:	.WORD	RECDAT	.WORD	ATTACH	.WORD      	CREATE	.WORD	SNDDAT	.WORD	EXTTB+T.RB;EXTTB:	GENTTB;	GENCB	INTCBA,64.		; SYSTEM C.B.TSTPRI:	.WORD	0		;PRIORITY TO EXECUTE TST'S;ACTTST:	.WORD	0		;NUMBER OF ACTIVE TST'S;EXQUE:	.WORD	0,EXQUE		;LISTHEAD TO QUEUE TST'S WAITING FOR MEMORY;TSTSPC:	.WORD	0		;CURRENT TST SPACE ALLOCATED. INITIZED TO 0				; BY EM IN TP STARTUP;TSTPLM:	.WORD	0		;TST SPACE LIMIT. INITIALIZED BY EM IN TP STARTUP				; TO 5/8 OF TOTAL CACHE SIZE IN 32WBLKS.PAGE.SBTTL	START OF EXECUTION MANAGER;;+;; S T A R T;; ROUTINE TO INSTALL, START,       STOP, AND REMOVE EM.;; INPUT:;	INSDAT	..INSM PARAMETER BLOCK;		WD.0 -> RECEIVE DPB FOR MSG FROM TP INSTALL;		WD.1 -> ATTACH DPB TO APPLICATION COMMON;		WD.2 -> CREATE WINDOW DPB FOR APP COMMON;		WD.3 -> SEND DATA DPB FOR MSG TO TP INSTALL;		WD.4 -> SEND BFR FOR MSG TO TP INSTALL;-START:;; ATTACH AND MAP APR2 ONTO TPMLIB. $TTBAD -> TTB. CALL LIBRARY RTE TO; PERFORM INSTALL.;	ATRG$S	#LIBREG,DIRERR	;ATTACH TPMLIB	MOV	LIBREG+R.GID,LIBWND+W.NRID ;SET UP TO MAP	MOV	LIBREG+R.GSIZ,LIBWND+W.NSIZ ;WINDOW ONTO TPMLIB      	CRAW$S	#LIBWND,DIRERR	; MAP APR2 ONTO TPMLIB;	MOV	#EXTTB,$TTBAD	;SET UP THREAD TABLE BLOCK ADDRESS IN THE $DSW				; WORD IN TASK IMAGE'S HDR (NOT HDR IN POOL);	MOV	#INSDAT,R0	;CALL LIBRARY ROUTINE TO INITIALIZE	CALL	..INSM		;THE REMAINING FUNCTIONS OF THE MANAGER;							? CURRENT STATE ?; SWITCH TO KERNEL MODE TO GET EM'S PRIORITY.; TST'S PRIORITY (TSTPRI) := EM'S PRIORITY -1.;	SWITCH$	5$		;SWITCH TO SYSTEM STATE	MOV	$TKTCB,R1	;GET PRIORITY OF EXECITION MANAGER				; R1 -> TCB OF CURRENT TASK, EXEC MGR	BISB      	T.PRI(R1),TSTPRI ;SET PRIORITY OF TST'S TO BE 1 LESS	DECB	TSTPRI		;THAN E.M.'S PRIORITY	RETURN			;TO USER MODE;5$:; ATTACH AND MAP APR6 ONTO EM CONTEXT BLOCK REGION.;	MOV	.EXMAN+2,EXCXTR+R.GNAM+2	; RDB := 2ND RAD50 WORD OF						;  C.B. REG NAME (TPID)	ATRG$S	#EXCXTR,DIRERR			; ATTACH TO C.B. REGION	MOV	EXCXTR+R.GID,EXCXTW+W.NRID	; GET THE REGION ID	MOV	EXCXTR+R.GSIZ,EXCXTW+W.NSIZ	; GET THE SIZE	CRAW$S	#EXCXTW,DIRERR			; MAP APR6 ONTO C.B. REGION;; SUSPEND UNTIL MESSAGE IS SENT FROM INSTALL.; if MSG INDICAT      ES 'START' then GOTO START RTE else ASSUME 'REMOVE AND EXIT.;10$:	SPND$S			;SUSPEND AND WAIT FOR A MESSAGE FROM INSTALL	DIR$	#RECDAT,DIRERR	;RECEIVE THE MESSAGE	CMP	#BF.STR,EXTTB+T.RB+4+B.FUN ;IS THIS 'START'	BEQ	20$			; YES	EXIT$S			; IF NOT START, ASSUME 'REMOVE'. EXIT					; ? CHECK FOR REM CODE ????????.PAGE20$:;;	THIS MUST THEREFORE BE A 'START' MESSAGE - SO START THE;	MANAGER.;; INPUT STATE:;	APR0_1	-> APP COMMON;	APR2	-> TPMLIB;	APR6	-> C.B REGION;	$TTBAD	-> TTB;	SST VECTOR AND $..CTP (TPCRASH ROUTINE      ) SETUP;	TSTPRI	= EM'S PRIORITY - 1;	MOV	$BASE,EXTTB+T.DFP	; DEFAULT POOL ADR IN TTB -> CACHE (KT11);; FIRST SEARCH THE SCB TABLE AND INSERT THE 'INITIATOR'; CONTEXT BLOCK ADDRESS INTO THE SCB'S THAT ARE ASSOCIATED; WITH TST'S. SET UP EM'S C.B. PTR IN APP COMMON.;	INH$S	MOV	#CBINST,R2	;R2 -> RTE TO INSERT SYSTEM C.B. ADR IN SCB(S.TID)	CALL	SCBSCH		;SEARCH THE SCB'S PUT SYS C.B. ADR IN SCB(S.TID);	MOV	#INTCBA,.EXCXB	;.EXCXB WORD IN APP COM -> SYSTEM C.B.;; ALLOCATE 2 LOGGING BUFFERS FROM CACHE:;	if LOGGING W      AS SPECIFIED FOR THIS TP IN TPCTRL START;	then ALLOCATE 1ST 4KW BUFFER FROM CACHE;	     if ALLOCATION FAILED;	     then DISABLE LOGGING;	     else REMOVE BDB FROM LRU LIST;		  ALLOCATE 2ND 4KW BFR FROM CACHE;		  if 2ND ALLOCATION FAILED;		  then DISABLE LOGGING; RETURN 1ST BFR TO CACHE;		  else REMOVE 2ND BDB FROM LRU LIST;;			LOGGING BFR PTRs IN APP COMMON -> 0;;			CURRENT LOGGING BFR -> 1ST LOGGING BFR;	BIT	#SY.LOG,.SYFLG	;ARE WE LOGGING FOR THIS APPLICATION?	BEQ	60$		;NO - THEN CONTINUE	MOV	#200,R1		;SET       UP TO ALLOCATE 4KW BUFFERS	CALL	$GSRB		;TRY TO ALLOCATE A BUFFER FROM CACHE	BCS	65$		;IF ALLOCATION FAILED GOTO DISABLE LOGGING	MOV	R1,$LOG1+2	;OTHERWISE SET IN LOG CONTROL DESCRIPTOR IN APP COMM	CALL	LRUDEL		;DELETE BDB FROM LRU LIST	MOV	#200,R1		;TRY FOR SECOND BUFFER	CALL	$GSRB		BCC	67$		;CONTINUE IF BUFFER ALLOCATED	MOV	$LOG1+2,R1	;OTHERWISE DELETE FIRST BUFFER	CALL	$DLAR		;DELETE AND RETURN BDB TO FREE LIST65$:	BIC	#SY.LOG,.SYFLG	;AND DISABLE LOGGING	BR	60$		;CONTINUE;67$:	MOV	R1,$LOG2+2	;SET BDB ADDR      ESS IN DESCRIPTOR	CALL	LRUDEL		;DELETE FROM LRU LIST;	CLR	$LOG1+4		;SET BUFFER POINTER TO ZERO	CLR	$LOG2+4	MOV	#$LOG1,$CURLG	;POINT AT FIRST LOGGING BUFFER;; SET UP EM'S CACHE SIZE WORDS:;	TSTPLM := 5/8 TOTAL CACHE SIZE (32WBLKS). MAX SPACE FOR TST USAGE.;	TSTSPC := 0. (32WBLKS)			  CURRENT SPACE USED BY TSTs.;60$:	MOV	$SIZE,R0	;R0 := CACHE SIZE IN 32WBLKS	ASR	R0		;R0 := 1/2 CACHE SIZE	MOV	R0,R1		;R1 := 1/2 CACHE SIZE	ASR	R0		;R0 := 1/4 CACHE SIZE	ASR	R0		;R0 := 1/8 CACHE SIZE	ADD	R0,R1		;R1 := 5/8 CACHE SI      ZE IN 32WBLKS (62.5%)	MOV	R1,TSTPLM	;TSTPLM := 5/8 CACHE SIZE	CLR	TSTSPC		;RESET ACTUAL SIZE COUNT	ENB$S			;ENABLE CONTEXT SWITCHING;; DECLARE AST HANDLER IN TPMLIB (THREAD); START SYSTEM THREAD.; START THE TIMER.; SUSPEND THE SYSTEM THREAD.; WAIT UNTIL 'INITOR' THREAD DETECTS SHUTDOWN AND COMPLETES SHUTDOWN PROCESS.;100$:	SRDA$S	#$RVAST,DIRERR	;DECLARE A RECEIVE AST;	MOV	#INTCBA,R0	;AND START THE 'INITIATOR' THREAD	TSTRT$	R0,#INITOR,#EX.CTZ		CALL	.STIM		;START THE TIMER	CALL	..MSUP			; WAIT THE MAINLINE;;       TP STOP ROUTINE (MOST OF EM SHUTDOWN ALREADY DONE BY 'INITOR' THREAD):;	REMOVE RECEIVE ASTs. CLEAR SYSTEM THREAD. DECREMENT APP COM SHUTDOWN COUNT.;	SRDA$S				; REMOVE RECIEVE AST	CLR	.EXCXB			; CLEAR SYSTEM THREAD	DECB	.SHTCT			; DECREAMENT THE SHUTDOWN COUNT	BR	10$			; WAIT FOR START OR REMOVE.PAGE.SBTTL SCBSCH - CALL SPECIFIED ROUTINE FOR EACH SCB PROCESSED BY EM;; S C B S C H;; SEARCH THE SCB TABLE FOR SCB'S THAT ARE PROCESSED BY EXECUTION MANAGER,; i.e. SCB(S.TSK) = EM TASK NAME. A SPECIFIED ROUTINE (C      BINST OR TRABT); IS CALLED AFTER EACH EM PROCESSED SCB IS FOUND.;;; INPUT:;	R2	ADDRESS OF ROUTINE TO CALL WHEN SCB FOUND (CBINST OR TRABIT);; CALLED BY:;	TPSTARTUP ROUTINE TO STUFF SYSTEM C.B. ADR INTO SCB(S.TID): CBINST;	TPSTOP ROUTINE TO ABORT ALL ACTIVE TXNS: TRABT;SCBSCH:	MOV	#.EXMAN,R1	;POINT AT MY TASK NAME	MOV	.SCBTZ,R4	;CACULATE THE NUMBER OF ENTRIES	ASR	R4		;IN THE SCB TABLE - SIZE IN BYTES IS	INC	R4		;'2N-2' WHERE N IS THE NUMBER OF ENTRIES	MOV	.SCBTA,R3	;POINT AT BASE OF SCB TABLE;20$:	MOV	(R3)+,      UISAR3	;POINT AT SCB WITH R2	BEQ	100$		;LEAVE - IF NO MORE ENTRIES	CMP	S.TSK+60000,(R1) ;IS THIS MY SCB?	BNE	50$		;NO - TRY NEXT ENTRY	CMP	S.TSK+2+60000,2(R1) ;MATCH ON SECOND PART OF THE NAME	BNE	50$		;NO - TRY NEXT ENTRY	CLR	S.LINK+60000	;RESET LINK COUNT	CALL	(R2)		;CALL FUNCTION ROUTINE50$:	SOB	R4,20$		;TRY AGAIN;100$:	RETURN;*******************************************************************************;; C B I N S T;; INPUT:;	APR3 -> SCB THAT IS PROCESSED BY EM;; OUTPUT:;	SCB(S.TID) -> C.B FOR EM'S IN      ITOR THREAD;CBINST:	MOV	#INTCBA,60000+S.TID ;SET UP SYSTEM CONTEXT BLOCK ADDRESS	RETURN;*******************************************************************************;; DIRECTIVE ERROR: HALT WHICH WILL SST TRAP TO TP CRASH ROUTINE IN TTB.;DIRERR:	MOV	$DSW,R0	HALT.PAGE.SBTTL	INITIATOR - START ALL TST THREADS ;;	THIS ROUTINE IS THE BASIC INITIATOR LOOP. THIS ROUTINE ALSO DETECTS;	THE TP STOP PROCESS AND PERFORMS MOST OF THE EM SHUTDOWN.;;	THE ROUTINE IS TRIGGERED BY A 'SEND' FROM ANOTHER;	MANAGER TO START A       TST OR FROM TPSTOP TO INITIATE SHUTDOWN;; INPUT:;	EXTTB+T.RB = RECEIVE BUFFER (AFTER TSUSP$) FROM A MGR, TPMOD, OR TPSTOP;		B.FUN = FUNCTION CODE;			BF.IST => INITIATE STOP PROCESS (NOP). FROM STOP.;			BF.SAB => ABORT ALL ACTIVE TXNS. FROM STOP.;			BF.SHT => SHUTDOWN IS COMPLETE. FROM STOP.;			BF.MES => ACTIVATE A TST. FROM ANOTHER MGR.;			BF.ABO => ABORT TXN.;			BF.TBO => TPMOD TXN ABORT.;			OTHERS => NOP.			????????SWERRLOG????;		B.CXT -> ?WHOSE C.B ?????;		B.DAT -> TST SCB (KT11) (if B.FUN=BF.MES);		            -> CCB ADR 	(if B.FUN=BF.TBO or BF.ABO);		B.DAT+2 =  TXN ID (2WD) (if B.FUN=BF.TBO);			-> SENDING MGR'S C.B. (if B.FUN = BF.ABO);		B.DAT+6 -> SCB THAT INITIATED TXN (KT11) (if B.FUN=BF.TBO);;INITOR:;; WAIT FOR A MESSAGE FROM ANOTHER MGR OR TPSTOP.; if MESSAGE FROM MGR TO START A TST then GOTO START A TST.;	TSUSP$			;WAIT FOR MESSAGE	MOV	$TTBAD,R0	;ACCESS THREAD TABLE BLOCK	CMP	#BF.MES,T.RB+4+B.FUN(R0) ;IS THIS AN ACTIVATION?	BEQ	RUNTST		;YES - CONTINUE;; PROCESS TPSTOP MESSAGE:; case FUNCTION CODE of;	BF.      IST:	INITIATE STOP - NOP.;	BF.SAB: ABORT ACTIVE TXNs: for EACH EM TST do CALL TRABT.;	BF.SHT: SHUTDOWN COMPLETE: STOP TIMER; TERMINATE CURRENT THREAD;;				   RETURN TO MAINLINE CODE;;	other:	GOTO PROCESS ABORT TYPE MESSAGE.; esac;;; if CODE = BF.IST (TPSTOP: INITIATE STOP) then DO NOTHING.??? DISABLE TXN INITIATION ????;	CMP	#BF.IST,T.RB+4+B.FUN(R0) ;IS THIS INITIATE SHUTDOWN	BEQ	INITOR		;YES - THEN DO NOTHING;; if CODE = BF.SHT (TPSTOP: SHUTDOWN COMPLETE); then	STOP THE TIMER; TERMINATE THE CURRENT, SYSTEM       THREAD;;	RETURN TO MAINLINE CODE; fi;	CMP	#BF.SHT,T.RB+4+B.FUN(R0) ;IS THIS SHUTDOWN?	BNE	30$		;NO - TRY AGAIN	CALL	.SPTM			; STOP THE TIMER	SETF$S	#1		; SET EVENT FLAG FOR MAIN LINE (SEE ..MSUP)	TTRMN$			; TERMINATE THIS THREAD;; if CODE = BF.SAB (TPSTOP ABORT ALL ACTIVE TXNS); then CALL ROUTINE TO ABORT ALL TXNS;30$:	CMP	#BF.SAB,T.RB+4+B.FUN(R0) ;IS THIS FORCED SHUTDOWN?	BNE	ABRT		;NO - TRY ABORT	MOV	#TRABT,R2	;POINT TO ABORT ROUTINE	CALL	SCBSCH		;GO SEARCH THE SCB'S	BR	INITOR;***************************      ****************************************************;; T R A B T;;	FORCED TRANSACTION ABORT ROUTINE;;	THIS IS USED ON SHUTDOWN TO ABORT ANY TRANSACTIONS SPAWNED;	BY EXECUTION MANAGER THAT HAVE NOT TERMINATED NORMALLY.;; INPUT:;	APR3 -> SCB PROCESSED BY EM. NOTE: SCB(S.CCB) <> 0 IF TXN ACTIVE.;; OUTPUT:;	for EACH CCB QUEUED TO THE SPECIFIED SCB;	do CALL ..TABO TO ABORT THE ASSOCIATED TXN (W/O LOGGING SW ERROR.);; CALLED BY:;	SCBSCH DURING TPSTOP BF.SAB;TRABT:	MOV	60000+S.CCB,R0	;GET CCB ADDRESS OF SPAWNED TR      ANSACTION	BEQ	10$		;LEAVE IF NO CCB5$:	MOV	C.CCB(R0),-(SP)	; SAVE NEXT CCB FOR THIS STATION	CLR	R5		;DO NOT LOG ERROR	CALL	..TABO		;ABORT THE TRANSACTION	MOV	(SP)+,R0	; GET NEXT	BNE	5$10$:	RETURN;*******************************************************************************;; if CODE = BF.TBO (TPMOD ABORT); then	PROCESS TPMOD ABORT:;	if THE CCB, TXN ID, OR SCB FROM TPMOD IS WRONG;	then NOP		???? NO SW ERROR LOGGED ????;	else CALL ..TABO TO ABORT TXN - JOURNAL A #AB.MOD TYPE ABORT;ABRT:	CMP	#BF.ABO,T.RB+4+B      .FUN(R0) ;IS THIS TRANSACTION ABORTED?	BEQ	ABTST		;YES - THEN ABORT THE TST;	CMPB	#BF.TBO,T.RB+4+B.FUN(R0) ;IS THIS TRANSACTION ABORT?	BNE	INITOR		;NO - THEN UNRECOGNISED FUNCTION;							;??? S/B.FUN+2/B.DAT/ ??	MOV	T.RB+4+B.FUN+2(R0),R1 ;GET CCB ADDRESS	CMP	T.RB+4+B.FUN+4(R0),C.TID(R1) ;DO THE TRANSACTION ID'S MATCH	BNE	INITOR		;NO - IGNORE CALL	CMP	T.RB+4+B.FUN+6(R0),C.TID+2(R1) ;MIGHT BE 	BNE	INITOR	CMP	T.RB+4+B.FUN+10(R0),C.SCB(R1) ;CHECK SCB MATCHES	BNE	INITOR;	MOV	R1,R0	MOV	#AB.MOD,R5	;SET ERROR CODE	      CALL	..TABO	BR	INITOR;; CODE = BF.ABO (ABORT TXN); SWITCH TO KERNEL STATE; THE 'TI:' OF TST'S TASK := NULL DEVICE;; GET TST'S CONTEXT BLOCK ADDRESS WHICH IS STORED IN OCB;; ABORT TST WITH M+ KERNEL ROUTINE; RETURN TO USER STATE;; RESUME TST'S THREAD; SEND DATA TO TST'S THREAD;; if SEND DATA FAILS; then if ERROR = NO NODE POOL;	then $DELAY;	else DO NOTHING			?????? ?????;ABTST:	MOV	T.RB+4+B.DAT(R0),R1 ;GET CCB ADDRESS	MOV	C.TCB(R1),R1	;AND HENCE TCB ADDRESS OF TASK TO	BEQ	INITOR		;BE ABORTED - LEAVE IF DONE5      $:	SWITCH$	10$		;	MOV	#.NL0,T.UCB(R1)	;LOG TO NULL DEVICE; 'TI:' := NULL DEVICE	MOV	T.OCBH(R1),R0	;GET OCB 	MOV	O.ESB(R0),EXTTB+T.RB+4 ;SAVE CONTEXT BLOCK ADDRESS OF TST	CLR	R0		; ABORT CODE	CALL	$ABTSK		;ABORT THE TST VIA M+ KERNEL ROUTINE	RETURN			; RETURN TO USER MODE;10$:	MOV	T.RB+4+B.CXT(R0),R1 ;GET MY CONTEXT BLOCK ADDRESS (FROM OCB)	MOV	T.RB+4+B.DAT+2(R0),T.RB+4+B.CXT(R0) ;SET UP C.B. FOR TST THREAD15$:	MOV	R1,R0		;GET TST'S C.B. (FROM OCB)	TRESM$	R0		;RESUME TST'S THREAD	SDAT$S	#EXTTB+T.RB,#EXTTB+T.      RB+4,,NODER ;SEND A REPLY TO THE ABORT				; THREAD OF THE TASK SENT DATA	BCS	15$		;if NODE POOL ERROR then RETRY	BR	INITOR		;else GO WAIT AGAIN ???? DO NOTHING ON SEND ERROR???;*******************************************************************************;; R U N T S T;; CODE = BF.MES. THIS IS AREQUEST TO ACTIVATE A TST.; ALLOCATE A C.B.; if C.B. ALLOCATION FAILED; then $DELAY; RE-SEND MESSAGE on error GOTO INITOR: DO NOTHING ??????; START TST THREAD;;RUNTST:	MOV	T.RB+4+B.DAT(R0),R5 ;GET RECEIVE BUFFER AND       				;HENCE THE SCB ADDRESS (USED IN $STTST THREAD)10$:	CALL	$ALCBA		;GO ALLOCATE A CONTEXT BLOCK FROM EM CB REGION				;R0 POINTS AT IT	BCC	15$;; FAILED TO ALLOCATE C.B.: $DELAY AND RE-SEND MESSAGE;	BISB	#TF.NRB,EXTTB+T.FLG	;STOP ANY RECEIVES	$DELAY	BICB	#TF.NRB,EXTTB+T.FLG	;ENABLE RECEIVES	SDAT$S	#.EXMAN,#EXTTB+T.RB+4,,NODER ;SEND THIS BACK TO ME	JMP	INITOR15$:	TSTRT$	R0,#$STTST,#EX.CTZ ;START A THREAD FOR THIS TST;	JMP	INITOR.PAGE.SBTTL	LOADER-RUNNER CONTROL TST EXECUTION;; THIS ROUTINE CONTROLS THE LOADI      NG AND RUNNING OF A TST.;; IT PROVIDES SERVICES TO THE TST WHICH ARE; COMMUNICATED BY MEANS OF 'SEND'S AND PROVIDES THE ; INTERFACE TO THE 11M EXEC TO LOAD AND EXECUTE THE ; TASK IMAGE.;; INPUT:;	R0 -> TST'S C.B.;	R5 -> TST SCB (KT11);; REGISTER USUAGE:;	R0 AND R1	UTILITY REGISTERS	;	R2		SCB ADDRESS (VIRTUAL);	R3		MESSAGE ADDRESS (REAL);	R4		TST LOAD ADDRESS (REAL);	R5		TST'S C.B.;	APR3 -> TST'S SCB;$STTST:	MOV	R5,Q.SCB(R0)	;SAVE TST SCB ADDRESS (KT11) IN RUN-TIME C.B.	CLR	Q.BDB(R0)	;SET FOR NO TASK IMAGE A      LLOCATED	MOV	R0,R5		;USE R5 TO POINT TO R/T C.B.;; MAP APR3 ONTO TST'S SCB;; if # ACTIVE TSTs >= 8 then GOTO QUEUE REQUEST;; if CURRENT # OF THESE TSTs ARE ACTIVE = MAX then TERMINATE THIS REQUEST;; GET CACHE SPACE FOR TST; if NOT ENUF CACHE then GOTO QUEUE REQUEST;;RESTRT:	MAP	3,Q.SCB(R5),R2	;MAP APR3 ONTO SCB, R2 -> VA OF SCB (60000)	CMP	#MX.TST,ACTTST	;IS NUMBER OF TST'S AT MAX. ? ONLY 8 AT A TIME ?	BLOS	QRTCB		;YES - THE QUEUE FOR LATER	CMPB	S.CML(R2),S.MUL(R2) ;MULTI-PROGRAMMING LIMIT REACHED?	BHIS	21$      		;YES - THEN TERMINATE THIS REQUEST	CALL	GETTST		;GET TST SPACE	BCS	30$		;QUEUE IF NO SPACE;; GET MCB OF EXCHANGE MSG; on error if NO SPACE IN CACHE ERROR;	   then GOTO NO SPACE ERROR;	   else TERMINATE REQUEST;20$:	MOV	Q.SCB(R5),R2	;GET SCB ADDRESS FOR ..GMES	CALL	..GMES		;GET THE MESSAGE ADDRESS FROM TST SCB; R3 -> MCB							; ?..GMES?	BCC	25$		;SKIP - IF MESSAGE THERE	CMP	#ER.NSP,R1	;WAS IT NO SPACE?	BEQ	22$		;YES - THEN TRY AGAIN21$:	JMP	TERM		;OTHERWISE TERMINATE THE THREAD;; NO CACHE SPACE ERROR:; RE      LEASE BDB FOR TST'S TASK IMAGE IN CACHE; RE-TRY TO GET MCB FOR EXCHANGE MSG on error GOTO QUEUE REQUEST;; GET CACHE SPACE FOR TST on error REQUEUE EXCHANGE MSG AND QUEUE REQUEST;;22$:	MOV	@$TTBAD,R5	;GET CURRENT RUN TIME CONTROL BLOCK	MOV	Q.BDB(R5),R1	;RELEASE THE TST'S BDB	CLR	Q.BDB(R5)	;INDICATE NO BDB	CALL	$RTBL		; RETURN BDB SPACE TO CACHE;	MOV	Q.SCB(R5),R2	;NOW TRY GETTING THE MESSAGE IN CACHE FIRST	CALL	..GMES	BCS	30$		;QUEUE IF NO MESSAGE, NO SPACE OR DISK READ ERRPR;	MOV	@$TTBAD,R5	;GET R/T CONTROL       BLOCK	MOV	R3,-(SP)	;SAVE MESSAGE ADDRESS	CALL	GETTST		;GET TST SPACE IN CACHE	MOV	(SP)+,R3	;RESTORE MESSAGE ADDRESS	BCC	25$		;CONTINUE IF SPACE AVAILABLE	CALL	..ULKM		;NO SPACE: UNLOCK EXCHANGE MSG + RE-Q IT TO SCB	BR	30$		;GOTO QUEUE REQUEST;; STATE: MESSAGE IN CACHE AND SPACE FOR TST EXISTS IN CACHE;	 R3 -> MCB FOR EXCHANGE MSG (KT11);; VALIDATE CHECKSUM FOR 6 MCB WORDS on error ABORT TXN AND TERMINATE THREAD;; 25$:	MAP	4,R3,R2		;MAP APR4 ONTO MCB AND R2 -> MCB	MOV	@$TTBAD,R5	;POINT R5 AT R/T CB	CLR	R4	BI      SB	M.MSZ(R2),R4	;GET SIZE OF THE MESSAGE (32WBLKS)	MOV	M.CCB(R2),Q.CCB(R5) ;TST C.B. :=  CCB ADDRESS	MOV	R3,Q.MCB(R5)	;TST C.B. := MCB ADDRESS (KT11)	INC	R3		;BASE ADDRESS OF MESSAGE IS 				;1 32 WORD BLOCK AFTER MCB	MAP	4,R3,R2		;MAC APR4 ONTO MCB AND R2 -> MESSAGE	MOV	R4,Q.MSZ(R5)	;SAVE MESSAGE SIZE (32WBLKS)	MOV	R2,R5		;POINT R5 AT CONTEXT AREA	CALL	..VLSM		;VALIDATE THE CONTEXT AREA CHECKSUM	BEQ	10$		;VALID IF Z BIT SET				;INVALID CHECKSUM: ABORT TXN + TERMINATE THREAD	MOV	@$TTBAD,R5	; GET R.T. CONTROL       BLOCK	MOV	Q.CCB(R5),R0	; GET THE CCB	MOV	#AB.VAL,R5	;PUT REASON FOR ABORT IN R5	CALL	..TABO		;ABORT THE TRANSACTION	JMP	TERM		;TERMINATE THE THREAD;; STATE:;	R2 -> MCB;	APR4 -> MCB (KT11);; CALCULATE CHECKSUM FOR PART OF MCB;; SET DIRTY BIT OF BDB FOR EXCHANGE MSG; MAP ONTO SCB;; ACCESS IMPURE AREA OF TST;;10$:	MOV	@$TTBAD,M.CXT(R2) ;MOVE CONTEXT BLOCK INTO MESSAGE	MOV	R2,R5		;POINT AT TST CONTEXT AREA (MCB)	CALL	..CLSM		;RECALCULATE THE CHECKSUM FORM 6 WORDS IN MCB	MOV	@$TTBAD,R5	;RESTORE R/T CB	MAP	3,Q.M      CB(R5),R4	;POINT AT MCB	MOV	M.ID(R4),R1	;GET MESSAGE BDB	CALL	$ACBD		;ACCESS THE BDB	MOV	R4,UISAR3	BISB	#BF.DTY,B.FLG+60000(R5) ;SET THE DIRTY BIT	MOV	@$TTBAD,R5	;RESTORE RUN TIME CONTROL BLOCK	MAP	3,Q.SCB(R5),R4	;POINT R4 AT SCB;	MOV	Q.BDB(R5),R1	;TST ALREADY RESIDENT?	BR	SWITCH		;GO LOAD TST;; QUEUE REQUEST FOR TST/EXCHANGE MSG SPACE:; CALLED IF 1) #ACTIVE TSTs ARE AT MAX OR 2) IF NO SPACE IN CACHE FOR TST AND MSG; (OR NO EXCH MSG OR DISK ERROR); 30$:QRTCB:;; BUMP 'FAILED TO LOAD' COUNT; if (# REQUESTS QU      EUED TO THIS SCB + # COPIES OF THIS TST ACTIVE) EQUALS MAXIMUM; then TERMINATE THIS REQUEST;	INCB	60000+S.FLOD	; INC FAILED TO LOAD COUNT;	MOVB	S.LINK+60000,R0 ;R0 := # REQUESTS QUEUE TO THIS SCB	MOVB	S.CML+60000,R1	;R1 := CURRENT MULTIPROG LIM (# COPIES ACTIVE)	ADD	R1,R0	CMPB	R0,S.MUL+60000	;if (# REQUESTS + # ACTIVE) < MAX ACTIVE	BLO	21$		;then CONTINUE	JMP	TERM		;else GOTO TERMINATE THIS REQUEST;; if TST IS IN CACHE then DECREMENT USE COUNT FOR BDB FOR TST (RELEASE BDB);21$:	MOV	@$TTBAD,R0	;GET RUN TIME       CONTROL BLOCK	MOV	Q.BDB(R0),R1	;GET BDB ADDRESS	BEQ	20$		;CONTINUE IF NO ALLOCATED BDB	CALL	$RTBL		;RETURN THE TST SPACE	CLR	Q.BDB(R0)	;RESET THE INDICATOR;; if NO TSTs ARE ACTIVE then SET THE THROTTLE BIT; $DELAY; GOTO RESTART fi;;20$:	TST	ACTTST		;ANY ACTIVE TST'S	BNE	10$		;YES - THEN SUSPEND UNTIL THEY TERMINATE	BIS	#TH.EXC,.THRTL		;SLOW DOWN INPUT	$DELAY			;OTHERWISE - WAIT FOR A WHILE	BR	15$		;AND THEN TRY AGAIN;; QUEUE THIS THREAD TO THE 'EXQUE'; BUMP # ELEMENTS IN THIS QUEUE;; SUSPEND THIS THREAD;; w      hen RESUMED do DECREMENT # ELEMENT IN QUEUE; RESTART REQUEST;;10$:	INC	S.LINK+60000	;INCREMENT NUMBER OF REQUESTS QUEUED TO 'EXQUE'	MOV	#EXQUE,R1	; LIST HEAD	CALL	$ADDCB		; ADD THIS THREAD TO 'EXQUE'	TSUSP$			; SUSPEND THIS THREAD	DEC	S.LINK+60000	;DECREMENT COUNT OF REQUESTS QUEUED TO 'EXQUE'15$:	MOV	@$TTBAD,R5	;GET CONTEXT BLOCK ADDRESS	JMP	RESTRT		;AND TRY AGAIN;*******************************************************************************;; G E T T S T;;	GET A TST'S SPACE;; INPUT:;	R5 -> C.B.;	ACTTST =       # CURRENTLY ACTIVE TSTs;	TSTSPC = CURRENT AMOUNT OF CACHE SPACE ALLOCATED TO TSTs;	TSTPLM = MAXIMUM AMOUNT OF CACHE SPACE TO BE ALLOCATED TO TSTs;; OUTPUT:;	C-BIT SET IF NO CACHE SPACE AVAILABLE FOR TST;	C-BIT CLR IF TST SPACE ALLOCATED OR TST ALREADY IN CACHE??;GETTST:	MAP	3,Q.SCB(R5),R4	;MAP APR3 ONTO TST SCB; R4 -> SCB	MOV	Q.BDB(R5),R1	;GET TST BDB ADDRESS	CLC			;ASSUME SUCCESS	BNE	10$		;TST ALREADY THERE - GET MESSAGE;; if AT LEAST ONE TST IS ACTIVE; then if (TOTAL SIZE OF TSTs IN CACHE + SIZE OF THIS       TST) > MAX TST SPACE IN CACHE;	then SET C-BIT; GOTO RETURN WITH FAILURE;;	TST	ACTTST		;ANY TST'S ACTIVE	BEQ	15$		;NO - THEN RUN AT LEAST ONE	MOV	TSTSPC,R3	;GET CURRENT SPACE ALLOCATED	ADD	S.MXSZ(R4),R3	;UPDATE WITH THIS TST'S SIZE	CMP	TSTPLM,R3	;DOES THIS EXCEED THE LIMIT?	BLO	10$		;YES - THEN DO NOT RUN THIS TST YET				;NOTE - THE C BIT IS SET CORRECTLY FOR				;THE RETURN;; ATTEMPT TO ALLOCATE SPACE FOR TST IN CACHE;; if NO SPACE IN CACHE (FOR BDB OR TST); then RETURN WITH C-BIT SET; else Q.BDB -> TST'S BD      B; PSUEDO 1ST TCB STATUS WORD := 'TST NOT IN EXECUTION';;	if TST IS SERIALLY REUSABLE AND TST NOT ALREADY IN MEMORY;	then SET PSUEDO 1ST TCB STATUS WORD (IN C.B.) TO INDICATE 'OUT OF MEMORY';15$:	CLR	R3		;INDICATE TO $GTBL 'DO NOT READ THE IMAGE'	MOV	S.LDV(R4),-(SP)	;SET LOAD DEVICE	MOV	S.LBN+2(R4),-(SP) ;MOVE 32 BIT BLOCK NUMBER	MOV	S.LBN(R4),-(SP)	MOV	S.MXSZ(R4),R1	;GET SIZE OF TST IN R1	MOV	SP,R0		;POINT AT PARAMETER BLOCK;;STATE:;	SP ->	LBN OF TST'S TASK IMAGE (HI-ORDER WORD);		LBN (LO-ORDER WORD);		LUN       OF LOAD DEVICE;	R0 = SP;	R1 = SIZE OF TST (32WBLKS);	R3 = 0 TO INDICATE 'DO NOT LOAD TST';	CALL	$GTBL		;GET SPACE FOR THE TASK IMAGE	MOV	(SP)+,(SP)+	;RESTORE THE STACK	INC	(SP)+	BCS	10$		;SKIP IF NO SPACE AVAILABLE	MOV	R1,Q.BDB(R5)	;SAVE TST'S BDB	MOV	#TS.EXE,Q.ST1(R5) ; INITIALIZE STATUS WORD	BIT	#SF.SRS,S.FLGX(R4) ;TST SERIALLY REUSEABLE?	BEQ	30$		;NO - CONTINUE	TST	R2		;WAS THERE A HIT?	BNE	30$		;NO - CONTINUE	RETURN			;YES - THEN STATUS IS CORRECT;30$:	BIS	#TS.OUT,Q.ST1(R5) ;SET TST OUT OF MEMORY IN PS      UEDO TCB STATUS WOORD10$:	RETURN.PAGE;; SWITCH TO KERNEL MODE AND LOAD TST;;; STATE:;	MCB RESIDENT IN CACHE;	R1 -> BDB FOR SPACE RESERVED IN CACHE FOR TST;	APR3 -> TST'S SCB;SWITCH:	CALL	$ACBDB		;R4/R5 -> BDB FOR TST; R4 IS KT, R5 IS OFFSETSW1:	MOV	SP,R3		;POINT R3 AT MESSAGE PARAMETERS	MOV	#60000,R4	;POINT R4 AT SCB	MOV	Q.MSZ(R5),-(R3)	;MOVE MESSAGE SIZE INTO PARAMETER LIST	MOV	Q.MCB(R5),-(R3)	;AND MESSAGE ADDRESS	MOV	(R3),UISAR4	;APR4 -> MCB	INC	(R3)		;(R3) -> EXCHANGE MSG; 1 32 WORD BLOCK MORE THAN MCB	M      OV	R0,-(R3)	;SAVE BASE ADDRESS	MOV	S.MXSZ(R4),-(R3) ;GET SIZE OF TST	MOV	S.LDV(R4),-(R3)	;UCB ADDRESS OF LOAD DEVICE	MOV	S.LBN+2(R4),-(R3) ;LOW ORDER 16 BITS OF BLOCK NUMBER	MOVB	S.LBN(R4),-(R3)	;HIGH ORDER 8 BITS OF BLOCK NUMBER	MOVB	TSTPRI,-(R3)	;TST PRIORITY	MOV	S.ST3(R4),-(R3)	;TASK ATTRIBUTE BITS	BIS	#T3.RST,(R3)	;SET RESTRICTED BIT	MOV	Q.ST1(R5),-(R3)	;SET FIRST STATUS WORD	MOV	Q.BDB(R5),-(R3) ;USE TASK ID AS TASK NAME	MOV	#^RT  ,-(R3)	;SET UP TST NAME	BIS	.TPNQ,(R3)	;INDEX BY TP NUMBER	SWITCH$	20$		;      SWITCH TO SYSTEM STATE;;	REGISTER SUMMARY:;;	R3	PARAMETER LIST POINTER FOR TST;;		WORD 1=TASK NAME (^RT  OR TP'S UNIQUE ID);		WORD 2=TASK NAME (RAD50 OF TST'S BDB ADR);		WORD 3=FIRST TCB STATUS WORD;		WORD 4=TST ATTRIBUTE BITS(STATUS WORD 3);		WORD 5=PRIORITY AND HIGH ORDER 8 BITS OF LBN;		WORD 6=LOW ORDER 16 BITS OF LBN;		WORD 7=UCB ADDRESS OF LOAD DEVICE;		WORD 8=SIZE OF TASK;		WORD 9=BASE ADDRESS OF TASK;		WORD 10=MESSAGE BASE ADDRESS;		WORD 11=MESSAGE SIZE;;;	ALLOCATE ALL REQUIRED SPACE FROM THE M NODE       POOL FOR A TASK HEADER,;	2 PCBs (MSG AND TST), AN OCB, AND A TCB.;;	IF ANY REQUIRED DATA STRUCTURE CANNOT BE OBTAINED THEN;	ALL OTHER ALLOCATED SPACE IS RETURNED( TO PREVENT;	DEADLOCK) AND AN ERROR CONDITION RETURNED TO THE TST THREAD.;;; CALL KERNEL ROUTINE TO ALLOCATE TASK HEADER FOR TST'S TASK IMAGE;	CLR	EXTTB+T.RB+2	;SET UP FOR NO ERROR (REGISTERS ARE CLOBBERED ON RETURN)	MOV	#HD.TST,R1	;ALLOCATE THE HEADER SPACE	CALL	$ALOCB	BCS	110$		;if NO SPACE then GOTO SET 'NO SPACE' ERROR, RETURN;; CALL KERNEL ROU      TINE TO ALLOCATE A PCB FOR THE EXCHANGE MESSAGE AND TST TASK;; if NO SPACE then GOTO RETURN PREVIOUSLY ALLOCATED POOL;	MOV	R0,-(SP)	;SAVE HEADER ADDRESS	MOV	#P.LGTH,R1	;GET A PCB FOR THE MESSAGE	CALL	$ALOCB	BCS	100$		;LEAVE IF SPACE NOT OBTAINED	MOV	R0,-(SP)	;SAVE PCB ADDRESS	CALL	$ALOCB		;GET A PCB FOR THE TASK	BCS	90$		;LEAVE IF SPACE NOT OBTAINED	MOV	R0,-(SP)	;SAVE PCB ADDRESS;; CALL KERNEL ROUTINE TO ALLOCATE AN OFFSPRING CONTROL BLOCK (OCB) FOR TST TASK;; if NO SPACE then GOTO RETURN PREVIOUSLY ALLOCAT      E POOL;	MOV	#O.LGTH,R1	;GET AN OFFSPRING CONTROL BLOCK	CALL	$ALOCB		BCS	80$		;LEAVE IF NO SPACE	MOV	R0,-(SP)	;SAVE OCB ADDRESS;; CALL KERNEL ROUTINE TO ALLOCATE A TCB FOR THE TST'S TASK...;	MOV	#T.LGTH,R1	;GET A TCB ADDRESS	CALL	$ALOCB	BCC	5$		;LEAVE IF NO SPACE;;	ALL SPACE COULD NOT BE OBTAINED!;;	RETURN ALL ALLOCATED SPACE AND RETURN TO USER MODE;70$:	MOV	#O.LGTH,R1	;RETURN OFFSPRING CONTROL BLOCK	MOV	(SP)+,R0	;GET ADDRESS OF TASK OCB	CALL	$DEACB		;RETURN TO THE POOL80$:	MOV	(SP)+,R0	;GET PCB ADDRESS	MOV	      #P.LGTH,R1	;SET UP CORRECT LENGTH	CALL	$DEACB		;RETURN TO THE POOL90$:	MOV	(SP)+,R0	;GET TCB ADDRESS	MOV	#P.LGTH,R1	;RESET THE LENGTH	CALL	$DEACB100$:	MOV	(SP)+,R0	;RESTORE THE HEADER ADDRESS	MOV	#HD.TST,R1	CALL	$DEACB		;RETURN THE HEADER110$:	MOV	#ER.NSP,EXTTB+T.RB+2 ;SET ERROR RETURN CODE	RETURN			;RETURN TO USER MODE AT 20$;*******************************************************************************;; INITIALIZE TST'S TCB;; STATE:;	R0 -> TCB;	R3 -> PARAMETER LIST FOR TST (SEE ABOVE);5$:	MOV	R0,R4		;SA      VE TCB ADDRESS	MOV	R0,R1		;USE R1 TO FILL IN TCB	MOV	R0,EXTTB+T.RB	;SAVE TCB ADDRESS FOR SCB;; ? OFFSETS SHOULD BE USED ????;	CLR	(R1)+		;CLEAR LINK WORD	CLR	(R1)+		;PRIORITY := 0 (LATER := T.DPRI), I/O PENDING COUNT := 0	CLR	(R1)+		;CLEAR CHECKPOINT PCB	MOV	(R3)+,(R1)+	;MOVE IN TST NAME FROM PARAMETER LIST	MOV	(R3)+,(R1)+	MOV	R1,R0		;SET UP RCV QUEUE LISTHEAD - SAVE LISTHEAD ADDRESS	CLR	(R1)+		;FORWARD POINTER IS ZERO	MOV	R0,(R1)+	;BACK POINTER IS LISTHEAD	MOV	R1,R0		;SET UP AST LISTHEAD	CLR	(R1)+	MOV	R0,(      R1)+	CLR	(R1)+		;CLEAR EVENT FLAGS	CLR	(R1)+	CLR	(R1)+		;CLEAR UCB FOR 'TI:'	CLR	(R1)+		;CLEAR INSTALLED TASK LIST WORD, (SET BELOW)	MOV	(R3)+,(R1)+ 	;SET UP FIRST STATUS WORD	CLR	(R1)+		;AND SECOND STATUS WORD	MOV	(R3)+,(R1)+	;AND THIRD STATUS WORD	MOV	(R3)+,(R1)+	;MOVE IN LBN AND PRIORITY	MOV	(R3)+,(R1)+	;LOW ORDER OF LBN	MOV	(R3)+,(R1)+	;LOAD DEVICE UCB ADDRESS	CLR	(R1)+		;PCB ADDRESS WILL BE SET UP LATER	MOV	(R3)+,(R1)+	;MOVE IN TASK SIZE	CLR	(R1)+		;CLEAR NEXT TCB IN ACTIVE LIST WORD	MOV	R1,R0		;SET UP       ATTACHMENT DESCRIPTOR LISTHEAD	CLR	(R1)+	MOV	R0,(R1)+	CLR	(R1)+		;OFFSET TO TASK IMAGE IN PARTITION := 0	CLR	(R1)+		;CLR SREF WITH EFN COUNT	MOV	R1,R0		;SET UP RECEIVE BY REF LISTHEAD	CLR	(R1)+	MOV	R0,(R1)+	MOV	R1,R0		;SET UP OFFSPRING C.B. LISTHEAD	CLR	(R1)+	MOV	R0,(R1)+	CLR	(R1)+		;CLEAR VT AND OFFSPR. COUNTS	CLR	(R1)+		;RESET AST LISTHEAD	MOVB	T.DPRI(R4),T.PRI(R4) ;SET UP PRIORITY OF TST;; LINK THE TCB INTO INSTALLED TASK LIST BY PRIORITY;	MOV	#$TSKHD-T.TCBL,R1 ;GET LISTHEAD7$:	MOV	R1,R0	MOV	T.TCBL(R0),      R1	;GET NEXT ENTRY	BEQ	8$		;END OF LIST IF ZERO	CMPB	T.PRI(R1),T.PRI(R4) ;THIS TASK LOWER PRIORITY THAN TST?	BHIS	7$		;NO - TRY NEXT ENTRY8$:	MOV	R4,T.TCBL(R0)	;YES - INSERT TST BEFORE THIS TASK	MOV	R1,T.TCBL(R4);*******************************************************************************;;	SET UP THE OFFSPRING CONTROL BLOCK;	MOV	(SP)+,R1	;GET OCB ADDRESS	MOV	R1,R0		;USE R1 TO FILL OCB	CLR	(R1)+		;CLEAR LINK WORD	CLR	(R1)+		;NO CLI COMMAND LINE	MOV	$TKTCB,(R1)+	;MOVE IN PARENT TASK TCB (E.M.)	MOV	#$ASTSV      ,(R1)+	;AND AST SERVIVE ROUTINE (IN TPMLIB THREAD RTEs)	CLR	(R1)+		;NO EVENT FLAG	MOV	@$TTBAD,(R1)+	;MOVE IN CONTEXT BLOCK ADDRESS;	MOV	R0,T.OCBH(R4)	;SET OCB IN TST TCB	MOV	R0,T.OCBH+2(R4);*******************************************************************************;;	SET UP THE TST PCB;	MOV	(SP)+,R0	;RESTORE PCB ADDRESS10$:	MOV	R0,R2		;SAVE ADDRESS OF PCB	MOV	R0,T.PCB(R4)	;STORE IN TCB	TST	(R2)+		;SKIP OVER LINK WORD	MOV	T.PRI(R4),(R2)+	;MOVE IN PRIORITY	MOV	#^RPAR,(R2)+	;MOVE IN THE PARTITION NAME	MOV	      T.NAM(R4),(R2)+	;NAME IS 'PARNNN' - WHERE 'NNN'				;IS THE TST NUMBER	CLR	(R2)+	MOV	R0,(R2)+	;POINT PCB AT ITSELF(MAIN PARTITION)	MOV	(R3)+,(R2)+	;MOVE IN BASE ADDRESS	MOV	T.MXSZ(R4),(R2)+ ;AND SIZE	CLR	(R2)+		; WAIT QUEUE LISTHEAD	CLR	(R2)+		;SWAP SIZE	CLR	(R2)+		;BUSY FLAGS	MOV	R4,(R2)+	;MOVE IN TCB ADDRESS	CLR	(R2)+		;PARTITION STATUS FLAGS	CLR	(R2)+		;HEADER CONTROL BLOCK	CLR	(R2)+		;PROTECTION WORD	MOV	R2,R0		;SET UP ATTACHMENT DESCRIPTOR LIST;SAVE LISTHEAD ADDRESS	CLR	(R2)+		;CLEAR FORWARD POINTER	MOV      	R0,(R2)+	;SET LISTHEAD ADDRESS AS BACK POINTER;*******************************************************************************;;	NOW SET UP THE PCB FOR THE MESSAGE - MESSAGE WILL BE MAPPED;	INTO THE TST BY PLAS DIRECTIVES AT RUN TIME;; OUTPUT: ???	MOV	(SP)+,R0	;RESTORE PCB ADDRESS30$:	MOV	R0,R2		;SAVE PCB ADDRESS	MOV	$PARHD,(R2)+	;LINK PCB INTO PCB LIST	MOV	R0,$PARHD	CLR	(R2)+		;NO PRIORITY	MOV	T.NAM(R4),(R2)+	;MOVE IN PARTITION NAME - NAME	MOV	T.NAM+2(R4),(R2)+ ;IS THE SAME AS THE TST NAME	CLR	(R2)+		;NEX      T SUBPARTITION	MOV	R0,(R2)+	;MOVE IN THE PCB ADDRESS	MOV	(R3)+,(R2)+	;MOVE IN THE BASE ADDRESS OF THE MESSAGE	MOV	(R3)+,(R2)+	;AND THE MESSAGE SIZE	CLR	(R2)+		;PARTITION WAIT QUEUE	CLR	(R2)+		;SWAP SIZE	MOV	#-1,(R2)+	;SET BUSY FLAG	MOV	#401,(R2)+	;SET UIC OF [1,1]	MOV	#PS.COM!PS.PIC,(R2)+ ;INDICATE A COMMON AREA (STATUS FLAGS)	CLR	(R2)+		;HEADER CONTROL BLOCK	CLR	(R2)+		;SET PROTECTION	MOV	R2,R0		;ATTACHMENT DESCRIPTOR LISTHEAD; SAVE LISTHEAD POINTER	CLR	(R2)+		;INITIALIZE LISTHEAD	MOV	R0,(R2)+;; RETURN THE       TST'S TASK HEADER TO THE POOL; BUMP EM'S RUN-DOWN COUNT IN EM'S TCB; RQST$ TST on error SET IO ERROR FLAG; DECREMENT EM'S RUN-DOWN COUNT; RETURN TO USER MODE;	MOV	(SP)+,R0	;RETURN THE TST'S TASK HEADER TO THE POOL	MOV	#HD.TST,R1	CALL	$DEACB	MOV	$TKTCB,R5	;GET EM'S TCB (THE CURRENT TASK)	INC	T.RDCT(R5)	;INCREMENT THE RUN DOWN COUNT ???	MOV	R4,R0		;MOVE TCB ADDRESS TO R0	CLR	R1		;USE DEFAULT UIC	CALL	$TSKRT		;GO REQUEST TST	BCC	60$		;SKIP IF REQUEST SUCCESSFUL	DEC	T.RDCT(R5)	;DECREMENT RUN DOWN COUNT	MOV	#ER      .IOX,EXTTB+T.RB+2	; SET ERROR RETURN60$:	RETURN			;RETURN TO TASK STATE.PAGE;; if TST RQST$ FAILED; then	GOTO REQUEUE TST REQUEST; else	if NOT ENOUGH POOL SPACE FOR M+ DATA STRUCTURES;	then	ABORT THE TXN WITH FAILED TO LOAD ERROR;	else	GOTO FINISH TST LOAD PROCEDURES;; STATE:;	USER MODE;	EXTTB+T.RB = 0 if TST REQUEST WAS SUCCESSFUL;		   = ER.NSP if THERE WASN'T SUFFICIENT CACHE SPACE;		   = ER.IOX if FAILED TO RQST$ TST;20$:	MOV	EXTTB+T.RB+2,R4		; GET RETURN STATUS	BEQ	250$			; if O.K. then GOTO FINISH TST       LOAD JUNK	CMP	#ER.NSP,R4		; SPACE PROBLEM?	BNE	220$			; NO;; TST RQST$ FAILED: QUEUE TST REQUEST, AND TERMINATE THIS THREAD;	MOV	Q.MCB(R5),R3		; GET THE MESSAGE	CALL	..ULKM			; AND REQUEUE IT	JMP	QRTCB			; AND GO WAIT;; NO CACHE SPACE: ABORT TXN WITH FAILED TO LOAD ERROR;220$:	MOV	Q.CCB(R5),R0		; GET THE CCB	CLR	C.TCB(R0)		;SET FOR NO TST	MOV	#AB.TFL,R5		; SET FAILED TO LOAD ERROR	CALL	..TABO			; ABORT THE TRANSACTION	JMP	TSTTRM			; TERMINATE THE THREAD;; TST RQST$ SUCCESSFUL: FINISH UP;	BUMP # ACTIVE COPIE      S OF TST;	if # ACTIVE COPIES > PREVIOUS MAX # ACTIVE COPIES then UPDATE PREVIOUS MAX;	TSTSPC := PREVIOUS CACHE SPACE USED FOR TSTs + SIZE OF CURRENT TST;	BUMP SCB COUNT FOR # TIMES THIS TST LOADED;	BUMP EM'S CURRENT COUNT OF # ACTIVE TSTs;	CLEAR EM'S THROTLE BIT;	CCB -> TST TCB;	SUSPEND TST THREAD;250$:	INCB	S.CML+60000	;INCREMENT NUMBER OF ACTIVE COPIES	CMPB	S.CML+60000,S.MCOP+60000 ;LARGEST NUMBER EVER ACTIVE?	BLOS	251$		;NO	MOVB	S.CML+60000,S.MCOP+60000 ;YES - UPDATE STATISTIC251$:	ADD	S.MXSZ+60000,TSTSP      C ;UPDATE TST SIZE ALLOCATED	INC	S.TLOD+60000	; UPDATE LOAD COUNT	INC	ACTTST			;UPDATE NUMBER OF ACTIVE TST'S	BIC	#TH.EXC,.THRTL		;RESET SLOW INPUT FLAG	MOV	EXTTB+T.RB,R4	;GET TCB ADDRESS	MOV	@$TTBAD,R2	MOV	Q.CCB(R2),R2	MOV	R4,C.TCB(R2)	;MOVE TCB ADDRESS INTO CCB21$:	TSUSP$			;WAIT FOR TST TO DO SOMETHING.PAGE.SBTTL	RUN TIME SUPPORT OF THE TST;;	THIS CODE IS ENTERED WHENEVER A TST CALSS THE TST LIBRARY;;	EXECUTION MANAGER PERFORMS THE SUPPORT FOR THE TST;;;	REGISTER SUMMARY:;;		R2	CCB ADDRESS;		R5	RUN TIME       CONTROL BLOCK ADDRESS;		UISAR3	SCB ADDRESS;		UISAR4	MCB ADDRESS;;; if THIS IS A RECEIVE AST; then GOTO PERFORM TST REQUEST; else	if THREAD IS RESUMED;	then !TST HAS BEEN ABORTED ?HOW DO WE KNOW THIS?;;		SUSPEND THREAD; WAIT FOR TCB?;;		GOTO RETURN TST DATA STRUCTURES TO POOL;;	else GOTO ABORT TST AND RETURN DATA STRUCTURES TO POOL;;	MOV	$TTBAD,R1	;GET THREAD TABLE BLOCK	BIT	#TF.RCF,T.FLG(R1) ;WAS THIS A RECEIVE AST? (TF.RCF SET BY $RVAST)	BNE	24$		;YES - GO SERVICE THE TST	BIT	#TF.RES,T.FLG(R1) ;WAS THIS TH      READ RESUMED?	BEQ	22$		;NO - THEN TERMINATE	MOV	C.TCB(R2),R4	;YES - THEN TST WAS ABORTED	TSUSP$			;GET TCB ADDRESS AND WAIT FOR TERMINATION				;CCB WILL BE GONE WHEN EXIT AST OCCURS	CLR	Q.CCB(R5)	;RESET CCB ADDRESS JUST IN CASE	JMP	TERMAB		;CLEAN UP TCB'S ETC.22$:	JMP	TSTTRM		;OTHERWISE TERMINATE THE TST;; PERFORM THE REQUESTED FUNCTION FOR THE TST;; if TXN BEING ABORTED OR EXCHANGE BEING RESTARTED; then !IGNORE REQUEST; GOTO SUSPEND AND WAIT FOR NEXT MESSAGE;; else	if FUNCTION CODE INVALID;	then GOTO PROCE      SS ERROR;	else CALL CODE TO PROCESS SPECIFIC TST REQUEST;;24$:	BIT	#CF.ABO!CF.ERT,C.FLG(R2)	; TRANSACTION IN ABORT OR RESTART?	BNE	21$				; YES SO DO NOT DO REQUEST	MOV	R5,-(SP)	;SAVE R/T CB	MOV	R4,-(SP)	;SAVE TCB ADDRESS	MOV	R2,-(SP)	;SAVE CCB ADDRESS	MOV	T.RB+4+B.FUN(R1),R0 ;GET FUNCTION CODE	MOV	#EXTTB+T.RB,R5	;POINT AT RECEIVE BUFFER	MOV	2(R5),-(SP)	;SAVE SENDER TASK NAME	MOV	(R5),-(SP)	CMP	(R5)+,(R5)+	; POINT PAST TASK NAME	MOV	#ER.IFC,R1	; ASSUME INVALID FUNCTION	CMPB	#BF.SND,R0	; LOW FUNCTION CODE	BH      I	25$		; 	CMPB	#BF.MBN,R0	; HIGH FUNCTION CODE	BLO	25$	CALL	@FUNDSP-FRSTFN(R0) ;CALL FUNCTION SERVICE ROUTINE;; SEND MESSAGE (WITH STATUS MESSAGE) BACK TO TST;; STATE ON RETURN:;;	R1 CONTAINS THE RETURN CODE FOR THE TST;		IF NEGATIVE - AN ERROR OCCURRED;	SP ->	TASK NAME OF TST (1ST WORD);		(2ND WORD);		CCB ADDRESS;		TCB ADDRESS;		R/T CONTROL BLOCK ADDRESS;	BCS	25$		;CONTINUE - IF ERROR - CODE ALREADY SET	MOV	#1,R1		;OTHERWISE SET SUCCESSFUL RETURN25$:	MOV	R1,EXTTB+T.RB+4	;SET RETURN CODE IN SEND BUFFER	MOV	      SP,R1		;USE R1 TO POINT TO TASK NAME300$:;; SEND MESSAGE TO TST; on error if NO POOL ERROR then $DELAY; RE-SEND else ???CONTINUE???;	SDAT$S	R1,#EXTTB+T.RB+4,,NODER	BCS	300$	CMP	(SP)+,(SP)+	;RESTORE THE STACK	MOV	(SP)+,R2	;RESTORE CCB ADDRESS	MOV	(SP)+,R4	;RESTORE TCB ADDRESS	MOV	(SP)+,R5	;RESTORE R/T CB	MOV	Q.MCB(R5),UISAR4 ;RESTORE MCB MAPPING	MOV	Q.SCB(R5),UISAR3 ;AND SCB MAPPING	BR	21$		;GO WAIT FOR NEXT EVENT;;	FUNCTION DISPATCH TABLE ;;	NOTE - THIS TABLE IS POSITION DEPENDANT AND IS INDEXED;	BY THE FUN      CTION CODE SENT BY THE TST;FUNDSP:	.WORD	SNDMSG		;SEND A MESSAGE	.WORD	DELRTE		;DELETE A ROUTE	.WORD	DELALL		;DELETE ALL ROUTES	.WORD	ADDRTE		;ADD A ROUTE	.WORD	GETMSG		;GET A MESSAGE	.WORD	OPETRN		;OPEN A TRANSACTION	.WORD	ABTTRN		;ABORT A TRANSACTION	.WORD	WRTJNL		;WRITE TO JOURNAL	.WORD	GETSTN		;GET STATION NAME	.WORD	GETSRC		;GET SOURCE STATION NAME	.WORD	GETTYP		;GET TRANSACTION TYPE	.WORD	GETTSC		;GET TRANSACTION SOURCE	.WORD	RSTART		;RESTART EXCHANGE	.WORD	GETNUM		;GET NUMBER OF MESSAGES IN MAILBOX.P      AGE.SBTTL	SNDMSG - SEND A MESSAGE;; THIS ROUTINE SENDS A MESSAGE ON BEHALF OF A TST;; INPUT:;	R2	CCB ADDRESS;	EXTTB+T.RB+4 IS THE SEND BUFFER WITH FOLLOWING OFFSETS;		B.RT	3 WORD ASCII STATION NAME TO SEND MSG TO;		B.CCB	CCB ADR;		B.VSZ	BUFFER SIZE FOR MSG;		B.VA	VIRTUAL ADR OF USER BUFFER;		B.VSZ	SIZE OF BUFFER;		B.HD	VIRTUAL ADR OF HEADER;	APR3 -> TST SCB (KT11);SNDMSG:;; SET UP STACK;; if LENGTH OF USER MESSAGE = 0; then CONTINUE; else	MAP ONTO USER MESSAGE;;	if TST DOES NOT MAP MESSAGE then RETURN WITH       ER.VXF ERROR STATUS;	MOV	EXTTB+T.RB+4+B.RT+4,-(SP) ;SAVE STATION NAME	MOV	EXTTB+T.RB+4+B.RT+2,-(SP)	MOV	EXTTB+T.RB+4+B.RT+0,-(SP)	MOV	EXTTB+T.RB+4+B.CCB,-(SP) ;SAVE CCB ADDRESS	MOV	EXTTB+T.RB+4+B.VSZ,-(SP) ;AND BUFFER SIZE	MOV	C.TCB(R2),R4	;GET TCB ADDRESS	MOV	EXTTB+T.RB+4+B.VA,R0 ;AND VIRTUAL ADDRESS OF USER BUFFER	MOV	EXTTB+T.RB+4+B.VSZ,R1 ;AND SIZE OF BUFFER	BEQ	10$		;SKIP IF NO USER MESSAGE	CALL	.VXFRR		;VALIDATE USER'S BUFFER	BCC	10$		;CONTINUE IF NO ERROR5$:	CMP	(SP)+,(SP)+	;CLEAN STACK				;**CP01+	CM      P	(SP)+,(SP)+	TST	(SP)+							;**CP01-	MOV	#ER.VXF,R1	;SET ERROR RETURN CODE	RETURN;; MAP HEADER??;; if HEADER NOT IN TST ADR SPACE; then RETURN WITH ERROR;; STATE:;	either APR4/R3 -> USER MESSAGE or USER MESSGAR LENGTH = 0;	SP -> 	USER BFR SIZE;		CCB ADR;		STATION NAME WORD 1;		WORD 2;		WORD 3;	APR3 -> TST SCB (KT11);10$:	PUSH	<R3,UISAR4>	;SAVE USER BUFFER POINTERS	CLR	R5		;SET BUFFER SIZE TO ZERO	MOV	EXTTB+T.RB+4+B.HD,R3 ;GET VIRTUAL ADDRESS OF HEADER	BEQ	15$		;SKIP IF NO HEADER	MOV	R3,R0		;ADDRESS OF HEA      DER IN R0 	MOV	#8.,R1		;SET HEADER SIZE	CALL	.VXFRR		;VALIDATE THE HEADER	BCC	12$		;CONTINUE IF NO ERROR			;***CP01	CMP	(SP)+,(SP)+	; INITIAL STACK CLEANING		;***CP01	BR	5$		; GOTO CLEAN SK, RETURN W/ ERROR	;***CP01;; GET SPACE FOR MESSAGE FROM CACHE;; on error CLEAN SOME OF STACK; GOTO RETURN WITH C-BIT SET;;; STATE: APR4/R3 -> HEADER (KT11/VA);	 R1 = HEADER SIZE;12$:	MOV	R1,R5		;SET UP SIZE OF HEADER			;***CP0115$:	ADD	EXTTB+T.RB+4+B.VSZ,R5	;GET SIZE OF MESSAGE	PUSH	R3		;SAVE BUFFER ADDRESS	MOV	#60000,R3	      ;POINT AT SCB	CLR	R0		; INDICATE NO SLOT REQUIRED		;***CP01	CALL	..GMB2		;GET MESSAGE BUFFER ? 0 LENGTH MSG ?	;***CP01	POP	R4		;RESTORE HEADER POINTER	BCC	20$		;CONTINUE IF MESSAGE BUFFER OBTAINED	POP	<R1,R1,R1,R1>	;RESTORE THE STACK MAINTAINING C-BIT SET	MOV	#ER.NSP,R1	;SET ERROR CODE	BR	60$;; MOVE HEADER AND MESSAGE (if THEY EXIST) TO CACHE BFR;; STATE:;	APR4/R4 -> HEADER (KT11/VA) ??? WHICH HDR, WHERE ?????;	R5 -> MESSAGE BFR IN CACHE (KT11);	SP -> 	KT11 ADR FOR MESSAGE TO BE SENT (OFFSET IS IN NEXT WORD      );		OFFSET FROM ABOVE KT ADR FOR MESSAGE TO BE SENT;		USER BFR SIZE;		CCB ADR;		STATION NAME WORD 1;		WORD 2;		WORD 3;	APR3 -> TST SCB (KT11);20$:	MOV	UISAR3,R3	;SAVE SCB ADDRESS	MAP	3,R5,R5		;APR3 -> MSG BFR IN CACHE (KT);R5 -> MSG BUFFER	TST	R4		;IS THERE ANY HEADER?	BEQ	27$		;NO - THEN DO NOT MOVE HEADER	MOV	#8.,R1		; HEADER SIZE25$:	MOVB	(R4)+,(R5)+	;MOVE IN THE HEADER	SOB	R1,25$;; MOVE MESSAGE;27$:	POP	<UISAR4,R4>	;RESTORE USER BUFFER POINTERS	MOV	(SP)+,R1 	;GET SIZE OF USER DATA	BEQ	35$		;SKIP IF NO D      ATA TO MOVE30$:	MOVB	(R4)+,(R5)+	;MOVE USER MESSAGE	SOB	R1,30$;; QUEUE MESSAGE TO STATION on error FREE MESSAGE BFR FROM CACHE;;35$:	MOV	(SP)+,R4 	;GET CCB ADDRESS	MOV	SP,R1		;POINT AT STATION NAME	MOV	R2,-(SP)	;SAVE MESSAGE ID	CALL	..SDTM		;GO SEND A MESSAGE	MOV	(SP)+,R2	;RESTORE MESSAGE ID	BCC	60$		;RETURN IF NO ERROR	MOV	R1,-(SP)	;SAVE ERROR CODE	CALL	..DMES		;OTHERWISE - DELETE THE MESSAGE - RELEASE SPACE	MOV	(SP)+,R1	;INDICATE THE ERROR	SEC			;SET ERROR RETURN60$:	POP	<R2,R2,R2>	;RESET THE STACK; ALSO       ERROR EXIT: C-BIT MAINTAINED	RETURN.PAGE.SBTTL	OPETRN - SPAWN A TRANSACTION;;	THIS ROUTINE DOES ALL THE NECCESSARY PROCESSING TO;	INITIATE A TRANSACTION FOR THE CALLING TST.;;	ALL RESOURCES ARE OBTAINED,THE TRANSACTION OPENED AND;	THE MESSAGE SPECIFIED BY THE TST IS SENT TO THE FIRST;	STATION.;;	INPUT:;		R2	CCB ADDRESS;		R5	DATA AREA OF THE RECEIVE BUFFER WITH FOLLOWING OFFSETS;				B.DAT+6  - TXN NAME (3 WORDS);				B.DAT+14 - USER BFR IN TST (EXCHANGE MSG?);				B.DAT+16 - SIZE OF USER BFR;				;;	OUTPUT:;		R      ECEIVE BFR + B.DAT := TXN ID OF SPAWNED TXN;		C BIT CLEAR IF TRANSACTION SPAWNED;;		OTHERWISE R1 HAS THE ERROR CODE;OPETRN:;; FIND USER BUFFER (EXCHANGE MSG) IN USER ADDRESS SPACE; if NOT IN ADDRESS SPACE then RETURN WITH ER.VXF ERROR;	CLR	-(SP)		; SAVE SPACE FOR CCB PTR		;***CP01	MOV	C.TCB(R2),R4	;GET TST'S TCB ADDRESS	MOV	B.DAT+14(R5),R0	;GET TST BUFFER ADDRESS	MOV	B.DAT+16(R5),R1	;AND SIZE	MOV	R1,-(SP)	CALL	.VXFRR		;VALIDATE THE BUFFER; APR4/R3 -> BUFFER	BCC	10$		;CONTINUE IF BUFFER GOOD	MOV	#ER.VXF,R1	;      OTHERWISE SET ERROR RETURN	BR	27$		;;; VALIDATE THAT TXN EXISTS;; STATE: APR4/R3 -> USER BUFFER;10$:	MOV	R3,-(SP)	;SAVE USER ADDRESS	MOV	R5,R2		;POINT R2 AT TRANSACTION NAME	ADD	#B.DAT+6,R2	CLR	R1		;INIDICATE NO USER AUTHORIZATION CHECK	CALL	..TVAL		;VALIDATE THE TRANSACTION NAME	BCS	26$		; ERROR;; GET TXN DESCRIPTOR BLOCK IN CACHE;; on error GOTO RETURN WITH ERROR CODE (IN R1);15$:	MOV	R0,R5		;PUT TDT ENTRY IN R5	CALL	..GTDB		;GET THE TDB	BCS	26$		; ERROR;; CALL ROUTINE TO OPEN A SPAWNED TXN;; on error REL      EASE TDB FROM CACHE; RETURN WITH ERROR CODE;20$:	MOV	UISAR4,-(SP)	;SAVE USER BUFFER MAPPING	MOV	R0,@#UISAR4	; MAP TDB BUFFER	CLR	R0		;	BISB	T.DSP(R5),R0	; WORD OFFSET TO TDB	ASL	R0		; MAKE BYTES	BIS	#100000,R0	; AND ASR 4 RELATIVE	MOV	R0,-(SP)	; SAVE TDB ADDRESS	MOV	R5,-(SP)	; SAVE TDT	MOV	@$TTBAD,R2	; GET THE RTC	MOV	Q.CCB(R2),R2	; GET THE CCB	CALL	..TSPN		;OPEN THE TRANSACTION; R5 -> CCB				; C-BIT SET ON ERROR	MOV	R5,12(SP)	; SAVE CCB PTR				;***CP01									;CP01-3*19$:	MOV	(SP)+,R5	BCC	30$		;CONTINUE I      F NO ERROR	MOV	R1,-(SP)	;SAVE ERROR CODE	CALL	..RTDB		;RELEASE THE TDB FROM CACHE	MOV	(SP)+,R1	;RESTORE THE ERROR CODE25$:	CMP	(SP)+,(SP)+26$:	TST	(SP)+27$:	CMP	(SP)+,(SP)+						;***CP01	SEC	RETURN			;WITH C-SET AND R1 = ERROR CODE;30$:;; GET SPACE FOR THE EXCHANGE MSG?; on error !NO SPACE; ABORT THE SPAWNED TXN; RETURN WITH ER.NSP ERROR CODE;; STATE:;	TDB IN CACHE;	SPAWNED TXN OPENED;	SP	ADDRESS (ASR 4 VIRTUAL) OF TDB;	SP+2	UISAR4 FOR TDB;	SP+4	VIRTUAL ADDRESS OF USER BUFFER;	SP+6	SIZE OF MESSAGE IN BYTES;      	SP+10	CCB							;***CP01;	MOV	6(SP),R5	;GET SIZE OF MESSAGE	MOV	#60000,R3	;POINT R3 AT SCB	MOV	10(SP),R4	;GET CCB OF SPAWNED TRANSACTION		;***CP01	MOV	R4,R0		;CCB OF SPAWNED TXN			;***CP01	CALL	..GMB2		;GET ADDRESS OF MESSAGE BUFFER; R5 -> BFR (KT11)									;***CP01				; POSSIBLE SUSPEND, R2 -> MESSAGE ID	;***CP01	BCC	35$		;CONTINUE IF NO ERROR	MOV	10(SP),R0	;OTHERWISE SET UP TO ABORT THE TRANSACTION;*CP01	MOV	#AB.RSC,R5	;SET ABORT CODE	CALL	..TABO		;ABORT THE SPAWNED TRANSACTION	MOV	#ER.NSP,R1	;SET ERROR       CODE	BR	25$;; MOVE EXCHANGE MESSAGE FROM TST ADR SPACE TO REAL EXHANGE MSG IN CACHE;35$:	MOV	UISAR3,R0	;R0 -> TST SCB (KT11)	MOV	UISAR4,.TEMP	;.TEMP -> TDB (KT11) ??? IS THIS NECESSARY (STACK) ??	MAP	3,R5,R5		;MAP ASR3 TO SLOT BUFFER	MOV	(SP)+,R1	; TDB ADDRESS	MOV	(SP)+,UISAR4	;MAP ASR4 TO USER BUFFER	MOV	(SP)+,R4	;R4 HAS VIRTUAL ADDRESS	MOV	(SP)+,R3	;SIZE IN BYTES IN R340$:	MOVB	(R4)+,(R5)+	;MOVE IN THE MESSAGE	SOB	R3,40$;; FIND FIRST STATION IN SPAWNED TXN ROUTING LIST;; SEND EXCHANGE MSG on error RETURN       WITH ..SDMS ERROR CODE;; STATE:;	SP	CCB;	R0 -> TST SCB (KT11);	.TEMP -> TDB (KT11);	R1 = OFFSET FOR TDB;	R2 = BFR ID;	MOV	R0,UISAR3	;RESTORE THE SCB MAPPING	MOV	.TEMP,UISAR4	;AND THE TDB MAPPING	ADD	#Y.FRS+Y.DNO,R1 ;AND NOW AT FIRST ROUTE OF ROUTE LIST	MOV	UISAR3,R3	;POINT R3 AT SCB	MOV	(SP),R4		;GET CCB IN R4				;***CP01	CALL	..SDMS		;GO SEND THE MESSAGE	BCS	60$		;on error RETURN W/ ..SDMS ERROR CODE	;***CP01;									;CP01-1*; CALL ROUTINE TO INDICATE TXN IS CLOSED; TXN WILL IN FACT CLOSE WHEN; PROCESSIN      G OF CURRENT EXCHANGE IS COMPLETE????? HENCE 1 EXCH/ SPAWN TXN ????; RETURN TDB SPACE TO CACHE??? DOES ..TCLS PREVENT TXN FROM LOOKING AT TDB???;50$:	MOV	(SP),R0		; R0 -> CCB				;***CP01	CALL	..TCL2		;CLOSE THE TRANSACTION NOW -		;***CP01				;IT WILL TERMINATE IN DUE COURSE	MOV	(SP),R5		;GET CCB				;***CP01	MOV	C.TDB(R5),R5	;GET THE TDT	CALL	..RTDB		;RETURN THE TDB	MOV	(SP)+,R5	;R5 -> CCB				;**CP01+	MOV	(R5)+,EXTTB+T.RB+4+B.DAT	; SEND BFR := TXN ID	MOV	(R5)+,EXTTB+T.RB+4+B.DAT+2	;	"		;**CP01-60$:	RETURN			      					;***CP01.PAGE.SBTTL	SPAWN TRANSACTION;									;**CP01+;; ROUTINE TO SPAWN A TRANSACTION FOR A TRANSACTION INSTANCE;;; INPUT CONDITIONS:;	R0 -- VIRTUAL ADDRESS OF TDB;	R2 -- OWNER CCB;	UISAR3 -- BASE OF SPAWNING STATION;	UISAR4 -- MAPS THE BUFFER HOLDING THE TDB;; OUTPUT CONDITIONS:;;	'C' CLEAR IF TRANSACTION SPAWNED;		R5 -- CCB ADDRESS;;	'C' SET IF TRANSACTION NOT SPAWNED*;		R1 -- 'ER.OPE' TRANSACTION ALREADY OPEN;		      'ER.DSB' TRANSACTION TYPE DISABLED;		      'ER.NCB' NOT ENOUGH RESOURCES FOR TRA      NSACTION;;	ALL REGISTERS DESTROYED;;..TSPN:						;	ENTPT	TSPN	;***CP01	MOV	R2,-(SP)			; SAVE OWNER CCB	SUB	.CCBBA,R2			; CALCULATE	MOV	R2,R3	CLR	R2							;***CP01	DIV	#C.CSIZE,R2			; OWNER INDEX		;***CP01	MOV	R2,R3				; R3 := OWNER IX	;***CP01	CALL	..TOP2				; OPEN THE TRANSACTION	;***CP01	MOV	(SP)+,R2			; GET OWNER BACK	BCS	10$				; NOT OPENED	BIT	#CF.NEX,C.FLG(R2)		; EXCHANGE RECOVER FOR OWNER?	BNE	10$				; NO	BIS	#CF.HLD,C.FLG(R5)		; SET SPAWNED ON HOLD	MOV	C.SPN(R2),C.SPN(R5)		; LINK TO	MOV	R5,C.SPN(R2)      			; SPAWN LIST						; C CLEAR FROM TOP2 CALL10$:	RETURN								;**CP01-.PAGE.SBTTL	WRTJNL - WRITE TO THE JOURNAL;;	THIS ROUTINE WRITES USER DATA TO THE JOURNAL.;;	THE DATA IS WRITTEN AS A LOG AND IS BUFFERED.;;	INPUT:;		R2	CCB ADDRESS;		R5 ->	DATA AREA OF RECEIVE BUFFER W/ FOLLOWING OFFSETS;			B.DAT+12	USER BFR ADR;			B.DAT+14	SIZE OF BFR;			B.DAT+16	USER CODE;;	OUTPUT:;		if SUCCESSFUL;		then	C-BIT CLEAR;			SEND DATA SENT TO JOURNAL DRIVER AND RESPONSE RECEIVED;		else	C-BIT SET;			R1 = ER.IOX;; CALLED BY W      HOM????WRTJNL:;; MAP APR4/R3 ONTO USER BUFFER; on error !USER NOT MAPPED ON MSG; RETURN WITH ER.VXF ERROR.;	MOV	C.TCB(R2),R4	;GET TCB ADDRESS	MOV	B.DAT+12(R5),R0	;GET BUFFER ADDRESS	MOV	B.DAT+14(R5),R1	;AND THE SIZE	CALL	.VXFRR		;VALIDATE THE USER BUFFER; APR4/R3 -> USER BFR	BCC	5$		;CONTINUE IF BUFFER GOOD	MOV	#ER.VXF,R1	;SET ERROR CODE	RETURN;; FILL SEND BUFFER IN APPLICATION COMMON WITH LOGGING PARAMETERS;5$:	MOV	#.COMSB,R0	;POINT AT SEND BUFFER IN APPL COMMON	MOV	@$TTBAD,(R0)+	;MOVE IN CONTEXT BLOCK ADD      RESS	MOV	#JN.USR,(R0)+	;AND FUNCTION CODE	MOV	UISAR4,(R0)+	;POINT AT USER DATA	MOV	R3,(R0)+	;R3 HAS VIRTUAL ADDRESS OF USER BUFFER	MOV	R1,(R0)+	;MOVE IN SIZE OF USER REQUEST	MOV	UISAR0,(R0)+	;MOVE IN BASE OF COMMON	MOV	R2,(R0)+	;AND CCB ADDRESS	MOV	B.DAT+16(R5),(R0)+ ;GET USER CODE	MOV	UISAR3,(R0)+	;LOGGING STATION SCB ADDRESS;; USE DPB IN APPL COMMON TO SEND DATA TO JOURNAL DRIVER; on error RETURN WITH ER.IOX ERROR;; SEND BUFER LOOKS LIKE:;	0 CURRENT THREAD'S CONTEXT BLOCK ADR;	2 FUNCTION CODE = JN.USR;	4       USER BFR KT11 POINTER (FOR APR4);	6 USER BFR VIRTUAL ADR POINTER (FOR APR4);	10 SIZE OF BFR;	12 KT11 ADR FOR APPL COMMON;	14 CCB ADR;	16 USER CODE;	20 TST SCB ADR (KT11);	DIR$	#.CURBF		;SEND TO JOURNAL HANDLER	MOV	#ER.IOX,R1	;SET UP FOR POSSIBLE ERROR	BCS	10$		;SKIP IF ERROR OCCURRED;; WAIT FOR A REPLY FROM JNLDRV BEFORE RETURNING WITH SUCCESS ???NO ERROR RETURN?;; SHOULDN'T THERE BE A TIME LIMIT ON THE SUSPEND IN THE EVENT JNLDRV ABORTS?????; OR ARE WE COVERED BY ETO  - IF SO, HOW ABOUT A SERLOG MSG?????	T      SUSP$			;OTHERWISE WAIT FOR A REPLY	CLC10$:	RETURN.PAGE.SBTTL	RSTART - RESTART AN EXCHANGE;;	THIS CALL RESTARTS THE CURRENT EXCHANGE IF EXCHANGE;	RECOVERY WAS SPECIFIED FOR THIS TRANSACTION - OTHERWISE;	THE TRANSACTION IS ABORTED.;;	INPUT:;		R2	CCB ADDRESS;RSTART:	MOV	R2,R0		;SET CCB ADDRESS IN R0	BIT	#CF.NEX,C.FLG(R0) ;IS EXCHANGE RECOVERY SPECIFIED?	BNE	10$		;NO	JMP	SEXRT		;GO DO EXCHANGE RESTART THREAD;10$:	MOV	#AB.EXT,R5	;SET ERROR CALL	JMP	..TABO		;OTHERWISE ABORT THE TRANSACTION.PAGE.SBTTL	ABTTRN	- AB      ORT A TRANSACTION;;	THIS ROUTINE ABORTS A TRANSACTION FOR A TST.;;	THE TRANSACTION IS EITHER ONE SPAWNED BY THIS TST (TXN ID <> 0) OR;	THE CURRENT TRANSACTION ITSELF (TXN ID = 0). IF ABORTING A SPAWNED;	TXN, SEARCH THROUGH EACH CCB HANGING FROM EACH NON-TERMINAL SCB TO;	FIND THE TXN WITH THE PROPER ID.;;	INPUT:;		R2	CCB ADDRESS;		R5	POINTER TO SEND BUFFER W/ FOLLOWING OFFSET;			+6 = TXN ID (2 WORDS) if ABORTING A SPAWNED TXN;			+6 = 0 if ABORTING THE CURRENT TXN;ABTTRN:;; if TXN ID = 0 then GOTO ABORT THE T      XN DESCRIBED BY THE CCB;	MOV	@#UISAR3,-(SP)		; SAVE THE SCB ADDRESS	MOV	.SCBTZ,-(SP)		; PUT NUMBER OF SCBS (2N-2) ON STACK	ADD	#B.DAT+12,R5	;POINT PAST TRAN. ID	TST	-(R5)		;ZERO T. ID. SPECIFIED?	BNE	19$		;NO - CONTINUE	TST	-(R5)		;TRY SECOND PART OF ID.	BEQ	20$		;IF NOT ZERO - SKIP;; for EACH SCB IN THE NON-TERMINAL ALPHA TABLE; do	for EACH CCB IN THIS SCB'S CCB LIST;	do	if THE CCB'S TXN ID = USER SPECIFIED TXN ID;		then ABORT THE CORRESPONDING TXN;	od; od; if SPECIFIED TXN ID IS NOT FOUND then RETURN WITH       ER.NST ERROR; ?HOW DOES USER KNOW TXN ID?????;3$:	MOV	.SCBTA,R4	; BASE OF ALPHA TABLE	ASR	(SP)		; GET NUMBER	INC	(SP)		; OF SCBS4$:	MOV	(R4)+,@#UISAR3	; GET NEXT SCB	CMPB	#SY.TST,S.TYP+60000 ; TST STATIOS?	BNE	15$		; NO	MOV	60000+S.CCB,R0	;GET FIRST CCB ON THIS STATION	BEQ	15$		;SKIP IF NO CCB5$:	CMP	(R5),C.TID(R0)	;DO THE ID'S MATCH?	BNE	10$		;NO - TRY NEXT ONE	CMP	2(R5),C.TID+2(R0) ;MIGHT BE - TRY SECOND PART	BEQ	25$		;SKIP IF ID MATCH10$:	MOV	C.CCB(R0),R0	;GET NEXT CCB IN LIST	BNE	5$		;TRY. AGAIN IF VAL      ID CCB15$:	DEC	(SP)		; ANY MORE SCBS	BNE	4$		; YES	SEC			;OTHERWISE ERROR RETURN	MOV	#ER.NST,R1	;SET ERROR CODE	BR	30$;19$:				; TXN ID IS NOT 0	TST	-(R5)		; R5 -> 1ST WORD OF TXN ID	BR	3$		; GOTO FIND CCB WITH SPECIFIED TXN ID;; CALL TPMLIB ROUTINE TO ABORT TXN: IF EXCHANGE RESTART WAS IN PROGRESS, ..TABO; WILL RETURN AFTER SETTING C.FLG(CF.ABO).;20$:	MOV	R2,R0		;SET CCB ADDRESS IN R025$:	MOV	#AB.USR,R5	;SET ABORT CODE	CALL	..TABO		;ABORT THE TRANSACTION	CLC			;SET SUCCESSFUL RETURN30$:	INC	(SP)+		; CLEAN       STACK	MOV	(SP)+,@#UISAR3	; RESTORE TST SCB MAPPING	RETURN.PAGE.SBTTL	DELRTE,DELALL - DELETE A ROUTE OR ALL ROUTES FOR A MESSAGE;;	THIS ROUTINE DELETES ONE OR ALL ROUTES REMAINING FOR THE PROCESSING;	OF A MESSAGE.THE TST LIBRARY ROUTINE VERIFIES THE CALL AND ONLY;	THE EM 'ROUTE' ROUTINE HAS TO BE CALLED.;;	INPUT:;;		UISAR4	MCB ADDRESS;		R5	DATA AREA OF RECEIVE BUFFER;;	OUTPUT:;;		C BIT SET IF AN ERROR - CLEAR OTHERWISE;		R1	ERROR CODE;DELRTE:	MOV	UISAR4,R3	;GET MESSAGE ADDRESS	MOV	R5,R1		;POINT R1 AT ROUTE N      AME IN RECEIVE BUFFER	ADD	#B.VAR,R1	CALL	..DLDS		;DELETE THE DESTINATION	RETURN;DELALL:	MOV	UISAR4,R3	;GET MESSAGE ADDRESS	CLR	R1		;INDICATE ALL DESTINATIONS	CALL	..DADS		;DELETE ALL DESTINATIONS	RETURN.PAGE.SBTTL	GETSTN,GETSRC,GETTYP,GETTSC - INFORMATIONAL DIRECTIVES;;	THESE ROUTINES OBTAIN INFORMATION FOR TST'S.;;	GETSTN	-	GET CURRENT STATION NAME;	GETSRC	-	GET SOURCE STATION NAME;	GETTYP	-	GET TRANSACTION TYPE;	GETTSC	-	GET TRANSACTION SOURCE;;	INPUT:;;		UISAR3	SCB ADDRESS;		UISAR4	MCD ADDRESS;		EXTTB+T.      RB+4	SEND BUFFER PARAMETERS;;	OUTPUT:;		EXTTB+T.RB+4+2 = # EXCHANGE RESTARTS;		EXTTB+T.RB+4+B.DAT CONTAINS FOLLOWING INFO (3 ASCII WORDS):;			FOR GETSTN = STATION NAME OF CURRENT TST;			FOR GETSRC = STATION NAME OF MSG SOURCE STATION;			FOR SETTYP = TXN TYPE;			FOR GETTSC = STATION NAME OF TXN SOURCE STATION;GETTYP:	MOV	C.TDB(R2),R1	;POINT AT TRANSACTION DESCRIPTOR TABLE ENTRY (NAME)	BR	COM		;GO TO COMMON CODE;GETTSC:	MOV	100000+M.TSR,UISAR3 ;POINT ASR3 AT TRANSACTION SOURCE 	BR	GETSTN		;GO MOVE THE NAME;GE      TSRC:	MOV	100000+M.SST,UISAR3 ;POINT AT SOURCE STATION FOR MSG;GETSTN:	MOV	#60000+S.NAM,R1	;POINT AT STATION NAMECOM:	ADD	#B.DAT,R5	;POINT AT DATA AREA IN SEND BUFFER;	MOV	(R1)+,(R5)+	;MOVE THE ASCII CHARACTERS IN THE NAME	MOV	(R1)+,(R5)+	MOV	(R1)+,(R5)+	MOVB	C.NRS(R2),EXTTB+T.RB+6 ;SET THE NUMBER OF RESTARTS	CLC			;SET SUCCESSFUL RETURN	RETURN.PAGE.SBTTL	ADDRTE - ADD A ROUTE;;	THESE ROUTINE PROVIDE THE SERVICE TO TST'S OF ADDING;	A DESTINATION TO THE END OF THE ROUTE LIST.;;	INPUT:;;	UISAR4	MCB ADDRESS;		R      OUTE NAMES ARE IN THE RECEIVE BUFFER;;	OUTPUT:;		if SUCCESSFUL;		then ROUTE IS ADDED;		else	C-BIT SET;			if STATION NAME THAT WAS TO BE ADDED WAS INVALID;			then R1 = ER.ITN;			else R1 = ER.RTF: THE ROUTE TABLE WAS FULL;ADDRTE:	MOV	#EXTTB+T.RB+4+B.NAM,R1	;POINT AT NAME IN RECEIVE BUFFER	MOV	UISAR4,R3	 ;MOVE MCB ADDRESS INTO R3	CALL	..ADES		;GO ADD A ROUTE	RETURN			;C BIT AND R1 ARE SET CORRECTLY BY ..ADES.PAGE.SBTTL	GETNUM - GET NUMBER OF MESSAGES IN MAILBOX;;	INPUT:;		R5 = EXTTB+T.RB+4 -> SEND PARAMETRS;		      	+B.NAM = MBX STATION NAME (3 ASCII WORDS);;	OUTPUT:;		if SUCCESSFUL;		then C-BIT CLEAR; EXTTB+T.RB+B.DAT = # RCDs IN MBX FILE;		elif NO SUCH STATION then RETURN WITH ER.IRN ERROR CODE;;		elif SPECIFIED STATION IS NOT A MBX then RETURN W/ ER.TST ERROR CODE;;GETNUM: 	MOV	R5,R1		;	ADD	#B.NAM,R1	;POINT AT STATION NAME	CALL	..FSCB		;TRY TO FIND STATION NAME	BCC	10$		;CONTINUE IF STATION FOUND	MOV	#ER.IRN,R1	;OTHERWISE SET ERROR CODE	RETURN;10$:	CMPB	#SY.MBX,S.TYP+60000 ;IS THIS A MAILBOX?	BEQ	20$		;YES - THEN C      ONTINUE	SEC	MOV	#ER.TST,R1	;OTHERWISE SET ERROR CODE	RETURN;20$:	MOV	60000+S.MNRC,EXTTB+T.RB+4+B.DAT ;SET COUNT AS RETURN DATA	CLC	RETURN.PAGE.SBTTL	GETMSG - GET A MESSAGE FROM A MAILBOX;;	INPUT:;		R5	SEND PARAMETERS;GETMSG:	MOV	R5,R1	ADD	#B.VAR+4,R1	;POINT AT STATION NAME	CALL	..FSCB		;FIND THE STATION	BCC	10$		;CONTINUE IF STATION FOUND	MOV	#ER.IRN,R1	;INDICATE THE ERROR	RETURN;10$:	CMPB	#SY.MBX,S.TYP+60000 ;IS THIS A MAILBOX?	BEQ	20$		;YES - THEN CONTINUE	SEC	MOV	#ER.TST,R1	;OTHERWISE INDICATE THE ERROR	      RETURN;20$:	MOV	#EXTTB+T.RB+4,R5	; POINT TO SEND BUFFER	MOV	#BF.GTB,B.FUN(R5) ;SET UP SEND BUFFER TO MAILBOX MANAGER	MOV	B.VAR(R5),R0	;GET USER'S BUFFER ADDRESS	MOV	B.VAR+2(R5),R1	;AND SIZE 	MOV	R0,B.DAT+4(R5)	;SET IN SEND BUFFER	MOV	R1,B.DAT+6(R5)	MOV	2(SP),B.DAT+10(R5) ;SET TST NAME IN SEND BUFFER	MOV	4(SP),B.DAT+12(R5)	MOV	C.TCB(R2),R4	;GET CCB ADDRESS	MOV	R2,B.DAT(R5)	; PUT CCB IN SEND BUFFER	CALL	.VXFRR		;VALIDATE USER BUFFER	BCC	30$		;CONTINUE IF GOOD BUFFER	MOV	#ER.VXF,R1	;SET VALIDATION ERROR	RETURN      ;30$:	MOV	UISAR4,B.DAT+2(R5) ;SET IN SEND BUFFER	MOV	R3,B.DAT+4(R5)	;SET VIRTUAL ADDRESS IN SEND BUFFER	MOV	.MBMAN,2(SP)	;SET MAILBOX MANAGER NAME IN STACK AS	MOV	.MBMAN+2,4(SP)	;THE SEND WILL BE DONE TO IT RATHER	MOV	60000+S.TID,R1	;THAN A NORMAL RETURN.NOTE THE CONTEXT				;BLOCK ADDRESS IS SET IN R1 TO MAKE	SEC			;THE RETURN TO COMMON CODE COMPATIBLE WITH				;THE OTHER RETURNS.THE RETURN CODE WILL INSERT				;THE C.B. IN THE BUFFER ON AN ERROR RETURN	RETURN.PAGE;;	REGISTER SUMMARY;;	R4	TCB ADDRESS OF TST;	      R5	R/T CONTROL BLOCK ADDRESS;TSTTRM:	MOV	@$TTBAD,R5	MOV	Q.CCB(R5),R2	;GET CCB ADDRESS	MOV	C.TCB(R2),R4TERMAB:	MOV	60000+S.FLGX,EXTTB+T.RB+4 ;SET FLAGS WORD FOR SWITCH;;	FIRST REMOVE THE MESSAGE PCB FORM THE PCB LIST;	MOV	R2,R1	CLR	C.TCB(R2)	;RESET THE TCB INDICATOR IN THE CCB	SWITCH$	20$	MOV	T.PCB(R4),R0	;GET TASK PCB	BIT	#SF.SRS,EXTTB+T.RB+4 ;IS THIS TASK SERIALLY REUSEABLE?	BEQ	3$		;NO - CONTINUE	MOV	P.HDR(R0),R2	;GET HEADER ADDRESS	MOV	H.WND(R2),R3	;POINT TO NUMBER OF WINDOWS	MOV	(R3)+,R1	;GET NUMBER OF       WINDOWS	ADD	#W.BATT,R3	;POINT AT ATTACHMENT DESCRIPTORS2$:	CLR	(R3)		;RESET ATTACHMENT DESCRIPTOT IN THE WINDOW	ADD	#W.BLGH,R3	;POINT AT NEXT WINDOW	SOB	R1,2$;	MOV	H.HDLN(R2),R3	;GET HEADER LENGTH 	ROR	R3		;CONVERT TO WORDS	ADC	R3	MOV	#140000,R1	;POINT AT TASK IMAGE HEADER	MOV	P.REL(R0),KISAR6 ;MAP TO HEADER1$:	MOV	(R2)+,(R1)+	;RESTORE TASK IMAGE HEADER	SOB	R3,1$;3$:	MOV	P.HDR(R0),R0	;DEALLOCATE THE HEADER	MOV	H.HDLN(R0),R1	CALL	$DEACB;	MOV	T.PCB(R4),R0	;GET PCB ADDRESS	MOV	#P.LGTH,R1	;DEALLOCATE THE PCB	CA      LL	$DEACB;	MOV	#$PARHD,R1	;GET THE PCB LISTHEAD5$:	MOV	(R1),R0		;GET NEXT PCB	CMP	T.NAM(R4),P.NAM(R0) ;IS THIS A MESSAGE PCB?	BNE	10$		;NO  - CONTINUE	CMP	T.NAM+2(R4),P.NAM+2(R0) ;YES - IS IT OUR MESSAGE PCB	BEQ	15$		;YES - LEAVE10$:	MOV	R0,R1		;NO - MOVE ONTO NEXT PCB	BR	5$;15$:	MOV	(R0),(R1)	;REMOVE THIS PCB FROM THE LIST;	MOV	#P.LGTH,R1	;RETURN THE SPACE TO THE POOL	CALL	$DEACB;	MOV	#$TSKHD-T.TCBL,R0 ;FIND TCB IN THE INSTALLED TASK LIST17$:	MOV	R0,R1	MOV	T.TCBL(R1),R0	;GET NEXT ENTRY	CMP	R4,R0		;IS THIS       OUR TCB?	BNE	17$		;NO - TRY NEXT ENTRY	MOV	T.TCBL(R4),T.TCBL(R1) ;REMOVE TCB FROM THE LIST;	MOV	#T.LGTH,R1	;RETURN THE TCB TO THE POOL	CALL	$DEACB	RETURN;;	CHECK FOR ABNORMAL EXIT;20$:	TST	Q.CCB(R5)	;IS THIS A TST ABORT?	BEQ	40$		;YES THEN EVERYTHING ALREADY DONE	CMP	#EX$SUC,(R5)	;TST EXIT SUCCESFULLY?	BEQ	30$		;YES THEN CONTINUE	MOV	R2,R0		;GET CCB ADDRESS IN R0	MOV	#AB.TAB,R5	;ABORT CODE IN R5	CALL	..TABO		;ABORT THE TRANSACTION	INC	60000+S.TSTA	; TST ERROR EXIT CPUNT	BR	40$		;;30$:	MOV	@$TTBAD,R5	;RESTOR      E R/T C.B.	MOV	Q.MCB(R5),R3	;GET MCB ADDRESS	MOV	Q.MSZ(R5),R1	;AND MESSAGE SIZE	CALL	..DSMS		;DISCARD THE MESSAGE;40$:	MOV	@$TTBAD,R5	;RESTORE THE R/T CB	MOV	Q.SCB(R5),R2	;GET STATION CONTROL BLOCK ADDRESS	MAP	3,R2,R4		;POINT AT SCB	SUB	S.MXSZ(R4),TSTSPC ;REDUCE THE TST ALLOCATED SPACE SIZE	DECB	S.CML(R4)	;REDUCE MULTI-PROGRAMMING COUNT	DEC	ACTTST		;REDUCE NUMBER OF ACTIVE TST'S	JMP	RESTRT		;GO PROCESS NEW MESSAGE;TERM:	MOV	#EXQUE,R1	;ANY TST'S WAITING FOR MEMORY?	CALL	$DELCB	BCS	100$		;NO - THEN CONTINUE	T      RESM$	R0		;OTHERWISE RESUME THE THREADS	BR	TERM		;AND TRY AGAIN100$:	MOV	@$TTBAD,R0	;GET THE R/T CONTROL BLOCK ADDRESS	MOV	Q.BDB(R0),R1	;HENCE THE TST'S BDB	BEQ	10$		;SKIP IF NO BDB ALLOCATED	CALL	$RTBL		;RELEASE THE TASK IMAGE;10$:	CALL	$DECBA		;GO RELEASE THE CONTEXT BLOCK	TTRMN$			;TERMINATE THE TST THREAD;.PAGE.SBTTL	ALCBA - ALLOCATE A CONTEXT BLOCK;;	THIS ROUTINE ALLOACATES A CONTEXT BLOCK ;	AND INITIALIZES THE CONTEXT BLOCK ADDRESS;;	INPUT:	NONE;;	OUTPUT:;;		C BIT CLEAR - CONTEXT BLOCK ALLOCATED;;			R      0	ADDRESS OF C.B.;;		C BIT SET - NO SPACE AVAILABLE;;$ALCBA:	MOV	#EX.CTZ,R1	;GET CONTEXT BLOCK SIZE	MOV	#CBPOL,R0	;AND LISTHEAD ADDRESS	CALL	..ALC1		;TRY TO ALLOCATE SPACE10$:	RETURN;*******************************************************************************;; DIRECTIVE ERROR FROM SEND;; if ERROR = NO NODE POOL; then DISABLE RECEIVES; $DELAY; ENABLE RECEIVES; SET CARRY-BIT; else CLEAR CARRY-BIT;NODER:	CMP	#IE.UPN,$DSW	; NODE ERROR	CLC	BNE	10$		; NO	BISB	#TF.NRB,EXTTB+T.FLG ; DISABLE RECIEVES	$DELAY	BICB   Ê  	#TF.NRB,EXTTB+T.FLG	SEC10$:	RETURN.PAGE.SBTTL	DECBA - DEALLOCATE A CONTEXT BLOCK;;	THIS ROUTINE DEALLOCATES A CONTEXT BLOCK AND ALLOWS;	ITS SPACE TO BE USED BY ANOTHER THREAD.;;	INPUT:;;		R0	CONTEXT BLOCK ADDRESS;;	OUTPUT:;;		NONE;$DECBA:	MOV	#CBPOL,R3	;POINT AT CONTEXT BLOCK FREE SPACE LISTHEAD	MOV	#EX.CTZ,R1	;INDICATE SIZE OF CONTEXT BLOCK	CALL	..DLC1		;DEALLOCATE THE BLOCK;	RETURN;CBPOL:	.WORD	3,140000,0		;CONTEXT BLOCK FREE SPACE LISTHEAD	.END	STARTÊ         Üwa	€QÁ› 8$        .TITLE	TPDEF modifiable equates for system tailoring.IDENT	"V1.0";;;;;;;                         COPYRIGHT (C) 1978 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.;;;;; Module:		TPDEF Variables;; Version:	V1.0;; Date:		07-Jun-79;;; This module contains:; 1. The TPDEF specifiable equates for TPGEN;;.SBTTL	Equates for TPDEF	.RADIX	10SGTDTM	=	      64	; Maximum number of transaction typesSGCTM	=	64	; Maximum number of concurrent transaction instancesSGTERM	=	64	; Maximum number of application terminalsSGUTST	=	256	; Maximum number of user TSTsSGTST	=	8	; Maximum number of concurrently active TSTsSGMSLK	=	10	; Maximum number of master link stationsSGSLLK	=	64	; Maximum number of slave link stationsSGMGLK	=	512	; Maximum size of receive link messageSGSBBT	=	1	; Maximum number of submit batch stationsSGSLBT	=	16	; Maximum number of slave batch stationsSG     NMBX	=	10	; Maximum number of mailbox stationsSGFILE	=	64	; Maximum number of application data filesSGSLOT	=	1024	; Maximum size of a transaction slot [64 byte blocks]SGACRC	=	SY.CRC	; Automatic crash recoverySGACTM	=	SGTERM	;Maximum number of concurrently active terminals	.RADIX          8kQÁ› 8$        .TITLE	DMLIB - DATA MANAGER TASK LIBRARY	.IDENT	"1.0B02";;;;;;                         COPYRIGHT (C) 1978 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  SOF      TWARE  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.;;;;	MODULE:		DATA MANAGER TASK LIBRARY;;	VERSION:	V001A;;	AUTHOR:		ANDY WILSON;;	DATE:		MARCH 1977;.PAGE;;	THIS MODULE CONTAINS:;;;	ALL DATA MANAGER PROCESSING RELATED TO EXECUTING;	RMS REQ      UESTS WHEN THE TP IS ACTIVE;	;	THIS INCLUDES:;;	1. INTERFACE THREAD LEVEL PROCESSING FOR ALL RMS REQUESTS;;		A. ENTRY POINT FOR ALL REQUESTS AT RUN TIME;		B. COMMON FILE OPERATION SETUP;		C. COMMON RECORD OPERTION SETUP - START REQUEST THREAD;		D. COMMON CODE TO SET UP WORKFILES;		E. INITIATE SHUTDOWN;;	2. REQUEST THREAD PROCESSING FOR:;		;		A. DISPLAY;		B. CONNECT;		C. DISCONNECT;		D. FIND;		E. GET;		F. PUT;		G. UPDATE;		H. DELETE;		I. END/ABORT TRANSACTION;		J. UNSTAGE OPERATIONS;		K. CREATE/OPEN WORKFILE      S;		L. EXCHANGE RESTART;;	3. COMMON PROCESSING FOR THE REQUEST THREAD TO:;;		A. HANDLE ALL LOCK BLOCKS;		B. PERFORM THE RMS CALL;		C. FLUSH THE TIMER QUEUE;		D. MAP THE FAB/RAB;		E. FIND FILE IMPURE AREA;		F. FIND THE CAB AND AFT;;	4. AST LOCK WAIT TIMER PROCESSING.PAGE;;;	M O D I F I C A T I O N   H I S T O R Y   L O G ;;;;;;	VER/ED	DATE		AUTHOR		EXPLANATION;	------	----		------		-----------;;	8.2 BL	08-JUN-78	A. WILSON	INITIAL CODING;	8.3 BL	27-JUL-78	R.TREADWAY	SPR - 001;						   More space in DM root ne      eded;						   to support 64 files in DMRES;	8.3 BL	27-JUL-78	R.TREADWAY	SPR - 002;						   Stage entry corrupted for;						   exchange recovery;	8.3 BL	27-JUL-78	R.TREADWAY	SPR - 003;						   Restart exchange results in;						   incorrect record and KRF ptrs;	8.3 BL	27-JUL-78	R.TREADWAY	SPR - 004;						   Random find followed by seq;						   get on 2nd KRF fails.;	8.3 BL  27-JUL-78	R.TREADWAY	SPR - 005;						   Save space in DMLIB using;						   common code;	8.3 BL	27-JUL-78	R.TREADWAY	SPR - 006;						   Af      ter multiple open/close of  ;						   a work file RMS ER$LCH resultt;	8.3 BL	27-JUL-78	R.TREADWAY	SPR - 007;						   2nd open on workfile from ;						   same instance should not ;						   return error.;	8.3 BL	02-AUG-78	R.TREADWAY	SPR - 011;						   DM with TRACE got OD after;						   call to REQ0.  Stack currupt;						   on return.;	8.3	04-AUG-78	R.TREADWAY	SPR - 012;						   On exchange restart DM returnn;						   with bad context block.;	8.3	05-AUG-78	R.TREADWAY	SPR - 013;						   When no system workspac      e with;						   exchange recovery, stack blown;	8.3	06-AUG-78	R.TREADWAY	SPR - 008;						   CABs not linked into lockwait;						   queue properly in all cases.;						   Linking in timer queue rewritten;	8.3	07-AUG-78	R.TREADWAY	SPR - 015;						   When calling CTSAV0 must check;						   for first call from RECOP on;						   initial connect.;	8.3	08-AUG-78	R.TREADWAY	SPR - 016;						   RESTH routine looping through;						   linked CABs two at a time.;	8.3	08-AUG-78	R.TREADWAY	SPR - 017;						   Save space in       DMLIB;	8.3	16-AUG-78	R.TREADWAY	SPR - 184504;						   Get-update/COBOL loop to;						   Staged file;	8.3	16-AUG-78	R.TREADWAY	SPR - 010;						   Find-seq:get on 2nd KRF;	8.3	16-AUG-78	R.TREADWAY	SPR - 184537;						   DME record unstage operation;	8.3	16-AUG-89	R.TREADWAY	SPR - 184584;						   Bad BDB on get slot in unstage;	8.3	16-AUG-78	R.TREADWAY	SPR - CH01;						   Set and clear system slow down;						   flag .THRTL;	8.3	28-AUG-78	R.TREADWAY	SPR - 02567;						   Workfile not deleted on ABORT;	8.3	19-AUG-      78	R.TREADWAY	BUG - 0001;						   Timer queue time not adjusted;						   when entry removed;	8.3	19-AUG-78	R.TREADWAY	BUG - 0002;						   TST corrupted on get from stage;						   area (update - get);	8.3	22-AUG-78	R.TREADWAY	BUG - 184597;						   Problem with buffer allocation;						   in RMS routines;	8.3	28-AUG-78	R.TREADWAY	SPR - 184573;						   Test only 1st 5 bytes of RFA;						   field for match;	8.3	1-SEP-78	R.TREADWAY	SPR - 184524;						   Permit UPDATE GET DELETE to;						   workfiles in BASIC and       COBOL;	'C'	11-OCT-78	R.TREADWAY	SPR - 203650;						   File pointers not repositioned;						   after exchange restart.;	'C'	11-OCT-78	R.TREADWAY	SPR - 203649;						   IFI not returned for BASIC;						   to perform file close;	'C'	11-OCT-78	R.TREADWAY	SPR - 203648;						   Set soft lock on PUT when;						   allow readers flag is set;	'C'	11-OCT-78	R.TREADWAY	SPR - 207816;						   Place READ WITH LOCK request;						   that fails with lock error;						   on lock wait queue.;	'C'	17-OCT-78	R.TREADWAY	SPR - 20775      6;						   All locks being release on;						   exchange restart;	'C'	17-OCT-78	R.TREADWAY	SPR - 207758;						   Ustage error after exchange restart;	'C'	17-OCT-78	R.TREADWAY	SPR - 207757;						   After exchange restart records;						   not found in unstage area;	REQFLS	31-OCT-78	R.TREADWAY	SPR - 207757;						   Fix potential problem with ;						   DM HALT if no record in stage;						   area.  See code for note.;	REQFLS	3-NOV-78	R.TREADWAY	SPR - 207788;						   Check 'C' bit in buffer release;						   routin      e in releasing RMS;						   buffers.;	1.0 B	15-MAY-79	R.TREADWAY	SPR - 207791 - RT001 - 00;						   Invalid RFA on Unstage;	1.0 B   19-FEB-79	R.TREADWAY	SPR - 207794 - RT002 - 01;						   Suspended $DISPLAY;.PAGE	.MCALL	$GNCAL,$RBCAL,$FBCAL,ASRDF$,ALUN$S,CALLR	.MCALL	CTXOF$,IRAOF$,IFAOF$,IRA$BT,IDXOF$	.MCALL	SDAT$S,DIR$,SRDA$S,RAB$BT,TCBDF$,SWITCH$	.MCALL	TSTRT$,TRESM$,TTRMN$	.MCALL	INH$S,$RMSTAT,FABOF$,RABOF$,IMAOF$	$RMSTAT	DFIN$L	IMAOF$	RMS$L	RAB$BT	DFIN$L	IRA$BT	DFIN$L	FABOF$	RMS$L	IDXOF$	RMS$L	RABOF$	RM      S$L	CTXOF$	RMS$L	IRAOF$	RMS$L	IFAOF$	RMS$L	$GNCAL	$RBCAL	$FBCAL	ASRDF$	TCBDF$RL$RTN=10				; RELASE BLOCK FLAG FOR RMSCH$NBF=20				; NO BUFFER FLAG FOR RMS.PAGE.SBTTL	DMLIB -- DISPATCH TABLES;; DISPATCH TABLE FOR FUNCTIONS;FUNDSP:	.WORD	FILOP		; CREATE FILE	.WORD	FILOP		; OPEN FILE	.WORD	FILOP		; CLOSE FILE	.WORD	FILOP		; ERASE FILE	.WORD	FILOP		; DISPLAY FILE	.WORD	DMCNT		; CONNECT STREAM	.WORD	RECOP		; DISCONNECT STREAM	.WORD	RECOP		; GET RECORD	.WORD	RECOP		; FIND RECORD	.WORD	RECOP		; PUT RECORD	.WORD	RE      COP		; DELETE RECORD	.WORD	RECOP		; UPDATE RECORD	.WORD	RECOP		; UNLOCK RECORD	.WORD	RECOP		; UNLOCK ALL FOR STREAM;; DISPATCH FOR RECORD FUNCTION AT INTERFACE THREAD PROCESSING;SYNDSP:	.WORD	.SYCNT		; CONNECT	.WORD	.SYDNT		; DISCONNECT	.WORD	.SYGET		; GET	.WORD	.SYFIN		; FIND	.WORD	.SYPUT		; PUT	.WORD	.SYDEL		; DELETE	.WORD	.SYUPD		; UPDATE	.WORD	.SYULK		; UNLOCK	.WORD	.SYULA		; UNLOCK ALL;; DISPATCH TABLE FOR FILE OPERATIONS;FILEDP:	.WORD	DMCRF		; CREATE FILE	.WORD	DMOPE		; OPEN FILE	.WORD	DMCLO		; CLOSE       FILE	.WORD	DMERF		; ERASE FILE	.WORD	DMDSP		; DISPLAY FILE;;; RECORD PROCESSING THREAD NAME TABLE;;RECDSP:	.WORD	CNTTH		; CONNECT	.WORD	DCTTH		; DISCONNECT	.WORD	GETTH		; GET THREAD	.WORD	FINTH		; FIND THREAD	.WORD	PUTTH		; PUT THREAD	.WORD	DELTH		; DELETE THREAD	.WORD	UPDTH		; UPDATE THREAD;; END OF TRAN/RESTART/ABORT DISPATCH;ENDDSP:	.WORD	ENDTH		; END TRANSACTION	.WORD	RSTTH		; RESTART EXCHANGE	.WORD	ENDTH		; ABORT TRANSACTION.PAGE.SBTTL	DMLIB -- DM INTERFACE THREAD	.ENABLE	LSB20$:;	JMP	WAITRC			; WAIT I      N THE ROOT;; NOW WAIT FOR USER REQUESTS;;.PROC::	MOV	#DMTTB+T.RB,R5		; GET THE SEND BLOCK IN TTB	MOV	R.FUN(R5),R0		; FUNCTION CODE IN R0	BEQ	20$			; ZERO IS A NO OP	CMPB	#BF.IST,R0		; START SHUT DOWN?	BEQ	20$			; YES	CMPB	#BF.SAB,R0		; ABORT TRANS AT SHUT DOWN?	BEQ	20$			; YES	CMP	#BF.SHT,R0		; IS IT SHUT DOWN?	BNE	50$			; NO -- IT MUST BE  A RECORD REQUEST;	JMP	@.FCLOS			; CLOSE ALL APPLICATION FILES;; PROCESS A USER REQUEST;;50$:	CMP	R0,#BF.END		; IS IT END ABORT OR RESTART?	BLO	51$			; NO	CMP	R0,#BF.ABO	      BHI	51$	JMP	TRNCOM51$:	MOV	R.TIS(R5),R2		; GET THE CCB	BITB	#CF.ABO!CF.ERT,C.FLG(R2)	; ABORT IN PROGRESS?	BNE	20$			; YES SO DO NOT PROCESS;; VALIDATE THE FUNCTION CODE;	CMP	#BF.NAM,R0		; GET FILE NAME?	BEQ	90$			; YES SO GO GET IT	CMP	#BF.CRF,R0		; CHECK LOW VALUE	BHI	70$			; ERROR	CMP	#BF.FRE,R0		; CHECK HIGH VALUE	BLO	70$			; ERROR	CMP	#BF.DSP,R0		; A FILE FUNCTION?	BHIS	55$			; YES SO SKIP CHANNAL CHECK;;	MOVB	R.CHAN(R5),R1		; CHANNEL NUMBER	BEQ	85$			; IVALID IF ZERO	BMI	85$			; OR NEGATIVE	MOV	R.RAB(R      5),R4		; GET RAB55$:	MOV	R.FAB(R5),R3		; FAB;; REGISTERS:;	R0	FUNCTION CODE;;	R1	CHANNEL NUMBER;	R2	CCB;	R3	FAB IN TST;	R4	RAB IN TST;;	JMP	@FUNDSP-BF.CRF(R0);60$:RET:;; SEND REPLY TO TST;65$:	MOV	#DMTTB+T.RB,R4	; POINT TO TASK NAME	CALL	SENDTS			; SEND TO TST	BR	20$;; INVALID FUNCTION CODE;70$:	MOV	#ER.IFC,.REPBF+4	; ERROR CODE	BR	60$;;; INVALID CHANNEL;85$:	MOV	#ER$ISI,.REPBF+4	BR	60$;; SEND TO TST;;	R4 -- POINTS TO TST TASK NAME;SENDTS:	SDAT$S	R4,#.REPBF,,SDERR	BCS	SENDTS				; NODE PROBLEM - RETRY	RETURN      ;; SEND TO TST ERROR;SDERR:	CMP	#IE.UPN,$DSW		; NODE POOL ERROR	CLC	BNE	87$			; NO	BISB	#TF.NRB,DMTTB+T.FLG	; SET NO RECEIVES	MOV	.REPBF,-(SP)		;	MOV	.REPBF+4,-(SP)		; SAVE SEND	MOV	.REPBF+6,-(SP)		; DATA	CALL	DMDLY			; DO A DELAY	MOV	(SP)+,.REPBF+6	MOV	(SP)+,.REPBF+4	MOV	(SP)+,.REPBF	BICB	#TF.NRB,DMTTB+T.FLG	SEC87$:	RETURN.PAGE;;;;;;;;	COMMON ROUTINE TO PERFORM DELAY FROM DMLIB;;;;DMDLY:	JMP	.NDDLY;;;	RETURN FROM ROOT IS TO .INITR WHICH PERFORMS RETURN TO;	CALLER IN DMLIB;.PAGE;;;;;	SUBROUTINE TO GET FILE       NAME;;;;;90$:	MOV	R.TIS+10(R5),-(SP)		; BUFFER ADDRESS	MOV	#DMTTB+T.RB+R.TIS+2,R4		; POINT AT LOGICAL NAME	CALL	AFTSCH				; SEARCH THE FILE TABLE	MOV	(SP)+,R0			; GET THE BUFFER BACK	BCS	300$				; NO SUCH FILE	MOV	#33.,R1				; USER BUFFER SIZE	MOV	C.TCB(R2),R4			; TST TCB	CALL	.VXFRW				; VALIDATE THE BUFFER	BCS	400$				; BAD BUFFER	MOV	R5,R1				; FIND	CALL	FDIMP				; THE IMPURE AREA	BCS	300$				; NO OPEN FILE	MOV	#I.PFST,R2			; FILE NAME BUFFER ADDRESS	MOVB	I.PFSZ,R1			; STRING SIZE100$:	MOVB	(R2)+,(R3)+		      	; MOVE THE NAME	SOB	R1,100$	MOVB	I.PFSZ,R2			; STRING SIZE	MOV	#1,R1				; SET SUCCESS CODE200$:	MOV	ACOMBA,@#UISAR0			; RE-MAP COMMOM	MOV	R1,.REPBF	MOV	R2,.REPBF+2	JMP	RET300$:	MOV	#ER$FNF,R1	BR	200$400$:	MOV	#ER$MAP,R1	BR	200$	.DSABL	LSB.PAGE.SBTTL	DMLIB -- INTERFACE LEVEL PROCESIING FOR RECORD OPERATIONS	.ENABL	LSB;; INPUT CONDITIONS:;;	R0 -- CAB;	R1 -- FILE TABLE ADDRESS;	R2 -- CCB;	R3 -- RAB IN TST MAPPED INTO DM SPACE;;;;.SYCNT:.SYGET:.SYFIN:.SYPUT:;; NO PROCESSING FOR CONNECT, GET, FIND, PUT;10$:	CLC      	RETURN;; DISCONNECT PROCESSING;.SYDNT:	CMPB	C.EXT(R2),R.EXT(R0)		; CHANNEL CONNECTED IN THIS EXCHANGE?	BEQ	12$				; YES SO ALLOW A DISCONNECT	BIT	#CF.NEX,C.FLG(R2)	; EXCHANGE RECOVERY FOR TRANSACTION?	BEQ	15$			; YES -- HOLD ON TO IT12$:	BITB	#RC.STG,R.FLG(R0)	; ANY STAGED OPERATIONS FOR THIS STREAM?	BEQ	10$			; NO15$:	MOV	#LF.ST,R5		; RELEASE LOCKS FOR	CALL	.ULKAL			; FOR NON-STAGED ITEMS	NEGB	R.CHN(R0)		; SET CHANNEL NEGATIVE20$:	MOV	#SU$SUC,.REPBF+4	; SET GOOD REQUEST30$:33$:	SEC				; INDICATE PROCESSIN      G COMPLETE FOR USER35$:	RETURN;; DELETE PROCESSING;.SYDEL:	CALL	.OPCHK			; CHECK PREVIOUS OPERATION	BCS	35$			; NO LEGAL TO DELETE	CALL	FDIMP			; GET IMPURE AREA	MOVB	I.PRMS+Y$GETS+2+O$ORG,R5	; GET ORGANISATION	MOV	ACOMBA,@#UISAR0		;	MOV	#ER$IOP,.REPBF+4	; ASUME ERROR	CMPB	#FB$SEQ,R5		; SEQUNTIAL?	BEQ	33$			; YES ERROR	MOV	R.FTB(R0),R5		; GET THE FILE TABLE	INC	F.NDEL(R5)		; NUMBER OF DELETES TO THIS FILE	BITB	#FF.STG,F.FLG(R5)	; FILE TOBE STAGED?	BEQ	10$			; NO	BITB	#FF.JRN,F.FLG(R5)	; JOURNAL THIS FILE?	B      EQ	36$			; NO	BITB	#FF.KEY,F.FLG(R5)	; YES, BUT IS IT A KEYED FILE?	BNE	10$			; YES -- GO GET IT36$:	MOV	#<VS.DEL*256.>!GF.DRC,R5		; STAGE CODE4	MOVB	#RC.DEL,R.FLG(R0)	; SET PREVIOUS OPERATION DELETE	MOV	#LF.ST!LF.DE,-(SP)	; LOCK FLAGS	BR	37$			;.UDSTG:	MOV	#LF.ST,-(SP)		; LOCK FLAG37$:	MOV	R5,-(SP)			; SAVE THE STAGE CODES;; COMMON STAGE ACTION UPDATE/DELETE;	CALL	.LKTS1			; SEE IF RECORD ALREADY LOCKED	BCS	40$			; YES	CLR	R5			; CLEAR LOCK FLAGS	CALL	.STLK1			; NO SO SET THE LOCK	BCS	50$			; ERROR IN LOCK      ING40$:	BICB	#LF.IN!LF.DE,L.FLG(R5)	; CLEAR OLD FLAGS	BITB	#FF.LKT,F.FLG(R1)	; ALLOW READERS OF LOCK?	BEQ	45$			; NO	BISB	#LF.RD,L.FLG(R5)	; YES45$:	BISB	2(SP),L.FLG(R5)		; SET THE LOCK FLAG	MOV	R5,2(SP)		; SAVE THE LOCK BLOCK ADDRESS	MOV	(SP)+,R5		; GET THE STAGE CODES	CALL	.STAG1			; STAGE THE RECORD	TST	(SP)+			; REMOVE THE LOCK BLOCK ADDRESS					;		+ **** - 184504	MOV	R.ISN(R0),R5		; POINTER TO IRAB	CALL	FDIMP			; MAP THE IMPURE AREA AT ASR0	BCS	47$			; NO IMPURE SKIP BIT CLEAR						;	BICB	#BK$FND!BK$SE      Q,C$BKP1(R5)	; SET UPDATE DONE FLAGS IN IRAB						;	MOV	ACOMBA,@#UISAR0		; REMAP THE APP COMMON47$:					;		- **** -184504	BR	20$50$:	CMP	(SP)+,(SP)+	MOV	#ER$DME,.REPBF+4	BR	33$;; UNLOCK ALL RECORDS;.SYULA:	MOV	#LF.ST,R5		; DO NOT UNLOCK STAGED RECORDS	CALL	.ULKAL			; UNLOCK ALL RECORDS	BR	20$;; UNLOCK CURRENT RECORD;.SYULK:	BITB	#RC.FIN!RC.GET!RC.UPD!RC.DEL,R.FLG(R0) ; PREVIOUS OP OK?	BEQ	20$			; NO					;		+ **** - 017	CALL	SVRFA			; GET RFA IN COMMON CODE					;		- **** - 017	CALL	.LKTS1			; FIND IT	BCC	20$      	BITB	#LF.ST,L.FLG(R5)	; STAGED LOCK?	BNE	20$			; YES SO KEEP	CALL	.LKDEL			; DELETE IT	BR	20$	.DSABL	LSB.PAGE.SBTTL	DMLIB -- DISPLAY THREAD;; INPUT PARAMETERS:;;	R1 -- FILE TABLE ADDRESS;	R2 -- CCB;	R3 -- VIRTUAL ADDRESS OF USER FAB;	R4 -- FAB/CONTEXT BLOCK;;	.ENABL	LSBDSPTH:	CALL	FDIMP				; GET IMPURE AREA POINTER	BCS	35$				; NO SUCH FILE	$STORE	I.PRMS+Y$GETS+2+O$IFI,IFI,R4	; SET THE IFI	MOV	ACOMBA,@#UISAR0			; REMAP COMMOM	$FETCH	R0,XAB,R3		; GET THE XAB FROM THE FAB	BEQ	35$			; NO XABS	MOV	R3,-(SP)		;       SAVE USER FAB10$:	MOV	R0,-(SP)		; SAVE XAB ADDRESS IN TST	MOV	R1,-(SP)	MOV	R4,-(SP)	MOV	@#UISAR4,-(SP)	MOV	C.TCB(R2),R4		; GET THE TST TCB	MOV	#64.,R1			; VALIDATE FOR 64 BYTES	CALL	.VXFRW			; VALIDATE THE XAB	BCS	30$			; ERROR	BIC	#160000,R3		; CLEAR THE MAP BITS	MOV	@#UISAR4,@#UISAR2	; MAP THE XAB AT ASR2	BIS	#40000,R3		;	MOV	(SP)+,@#UISAR4		;	MOV	(SP)+,R4		; GET THE ADDRESS OF THE FAB	$STORE	R3,XAB,R4		; POINT TO THE MAPPED XAB	MOV	(SP)+,R1	$FETCH	R0,NXT,R3		; GET THE NEXT XAB	$STORE	#0,NXT,R3		; SET END       OF XAB LIST	MOV	@#UISAR2,-(SP)		; SAVE XAB MAPPING	MOV	DSPCAL,-(SP)		; SET TO	BISB	#AT.DSP,@C.IAT(R2)	; SET DISPLAY IN PROGRESS		;* RT002	CALL	REQ1			; DO RMS REQUEST FROM ROOT		;* RT002	BICB	#AT.DSP,@C.IAT(R2)	; CLEAR DISPLAY IN PROGRESS		;* RT002	MOV	(SP)+,@#UISAR2		; RESTORE XAB MAPPING			;**-1	$STORE	R0,NXT,R3		; RESET THE NEXT POINTER	$STORE	(SP)+,STV,R4		; ASSUME ERROR	$COMPARE	#SU$SUC,STS,R4	; DID IT WORK?	BNE	20$			; NO SO RETURN ERROR	TST	R0			; IS THERE ANOTHER XAB BLOCK	BNE	10$			; YES SO PROCES      S20$:	MOV	.LIBAR,@#UISAR2		; REMAP THE LIBRARY	MOV	(SP)+,R335$:	JMP	TEND230$:	MOV	(SP)+,@#UISAR4	MOV	(SP)+,R4	MOV	(SP)+,R1	TST	(SP)+	$STORE	#ER$MAP,STS,R4	BR	20$	.DSABLE	LSB.PAGE.SBTTL	DMLIB -- THREAD FOR CONNECT;;;	R0 CAB;	R1 FILE TABLE ENTRY;	R2 CCB;	R3 VIRTUAL ADDRESS OF RAB/FAB IN DM SPACE (ASR4 RELATIVE);	R4 RAB;CNTTH:	CALL	CNT1				; DO A CONNECT	$COMPARE	#SU$SUC,STS,R4	; O.K	BNE	10$			; NO SO GET RID OF THE RAB	$FETCH	R.ISN(R0),ISI,R4	; SAVE THE ISI5$:	BIT	#CF.NEX,C.FLG(R2)	; EXCHANGE RECOVERY SPECIFI      ED?	BNE	9$			; NO	MOV	R4,-(SP)		; SAVE R4	MOV	#VC.SIZ,R4		; SIZE OF CONNECT STAGE ENTRY	MOV	#<VS.CON*256.>!GF.CNT,R5; STAGE ENTRY TYPE	CALL	..GTSA			; GET STAGE SPACE	MOV	@#UISAR3,-(SP)		; SAVE STAGE SPACE ADDRESS	MOV	.LKPMP,@#UISAR3		; REMAP CAB SPACE	BCS	7$			; ERROR NO SPACE	BIC	#60000,R4		; CLEAR ASR3 BITS FROM ENTRY ADDRESS	BIS	#100000,R4		; AND MAKE ASR4	MOV	R4,R.STE+2(R0)		; SAVE IN CAB	MOV	R0,-(SP)		; SAVE CAB ADDRESS					;			+ **** 002	MOV	C.SLT(R2),R1		; GET SLOT ID					;			- **** 002	CALL	$ACBDB	      		; AND GET ITS BASE ADDRESS	SUB	R0,2(SP)		; GET OFFSET TO STAGE ENTRY	MOV	(SP)+,R0		; GET CAB BACK					;			+ **** 002	MOV	R.FTB(R0),R1		; GET FILE TABLE POINTER BACK					;			- **** 002	MOV	(SP)+,R.STE(R0)		; SAVE OFFSET TO STAGE ENTRY IN CAB	CALL	CTSAV1			; SET UP STAGE NETRY FOR CONNECT					;			+ **** 013	BR	8$			; SKIP STACK CLEAN7$:	TST	(SP)+			; REMOVE ASR3 FROM STACK8$:	MOV	(SP)+,R4		; GET R4 BACK9$:	JMP	TEND1			; END THE THREAD10$:;; DELETE THE CAB;	MOV	R2,-(SP)			; SAVE CCB	MOV	R.NXT(R0),C.CHN(R2)	;       UNLINK	MOV	#R.SIZE,R1		; SIZE TO RETURN	MOV	#.DMLKP,R3	CALL	..DLC1	MOV	(SP)+,R2		; RETURN CCB	JMP	TEND2			;CNT1:	$STORE	#0,MBC,R4		; MULTI BLOCK COUNT	$STORE	#0,MBF,R4		; MULTI BUFFER COUNT	$STORE	#0,UBF,R4		; SET USER BUFFER TO ZERO	MOV	CNTCAL,-(SP)		; REQUEST CODE	CALL	REQ1			; DO IT FROM ROOT	RETURN.PAGE;;; ROUTINE TO SAVE THE CHANNEL CONTEXT IN THE STAGE AREA;;; CTSAV0 -- SAVE IF NOT ALREADY SAVED; CTSAV1 -- SAVE INFO;;; INPUT CONDITIONS: --;;	R0 -- CAB;	R1 -- FILE TABLE ENTRY;	R2 -- CCB;;; OUTPUT COND      ITIONS: --;;	STAGE AREA FOR CHANNEL UPDATED IF EXCHANGE RECOVERY SPECIFIED;	AND INFORMATION NOT ALREADY SAVED.;;	R5 -- DESTROYED;;	.ENABL	LSBCTSAV0:	CALL	100$			; MAP THE ENTRY	BCS	30$			; NO ENTRY					;		+ **** 015	TST	R5			; FIRST CONNECT CALL FROM RECOP	BEQ	28$			; YES: DO NOT SAVE					;		- **** 015					;		+ **** 203650	CMPB	V.SEX-<V.SIZ+2>(R5),C.EXT(R2)	; SEE IF ALREADY SAVED					;		- **** 203650	BEQ	28$			; YES	BR	20$CTSAV1:	CALL	100$			; GET ENTRY	BCS	30$			; NO ENTRY20$:;; NOTE ASR4 SAVED ON THE STAC      K;	MOV	R.RFA+0(R0),(R5)+	; MOVE RFA	MOV	R.RFA+2(R0),(R5)+	; FOR LAST	MOV	R.RFA+4(R0),(R5)+	; OPERATION	MOVB	R.FLG(R0),(R5)+		; PREVIOUS OPERATION FLAGS					;			+ **** 003	MOVB	C.EXT(R2),(R5)+		; THIS EXCHANGE	MOV	R4,-(SP)		; SAVE R4	MOV	R.ISN(R0),R4		; GET IRAB	BEQ	25$			; NOT CONNECTED	CALL	FDIMP			; MAP THE IMPURE AREA	MOV	R3,-(SP)		; SAVE R3	ADD	#R$LNRP,R4		; POINT TO NEXT RECORD INFO IN IFAB					;		+ **** 207758	MOV	#<R$BRP+2-R$LNRP>/2,R3	; AMOUNT OF IFAB TO SAVE					;		- **** 20775822$:	MOV	(R4)+,(R5)+      		; SAVE IFAB INFO	SOB	R3,22$	MOV	(SP)+,R3		; RESTORE R3					;			- **** 003	MOV	ACOMBA,@#UISAR0		; REMAP COMMOM25$:	MOV	(SP)+,R4		; PUT R4 BACK28$:	MOV	(SP)+,@#UISAR4		; PUT ASR4 BACK30$:	RETURN;;; MAP THE CHANNEL STAGE ENTRY;100$:	BIT	#CF.NEX,C.FLG(R2)	; EXCHANGE RECOVERY SPACEIFIED?	SEC				; ASSUME NO	BNE	110$			; NOMAPCXT:	MOV	(SP),-(SP)		; MOVE RETURN	MOV	@#UISAR4,2(SP)		; FOR ASR4	MOV	R0,-(SP)		; SAVE R0 -- CAB					;			+ **** 003	MOV	C.SLT(R2),R1		; GET SLOT ID					;			- **** 003	CALL	$ACBDB			; GET BA      SE OF SLOT	MOV	R0,@#UISAR4		; MAP THE SLOT	MOV	(SP)+,R0		; GET THE CAB					;			+ **** 003	MOV	R.FTB(R0),R1		; GET PTR TO AFT BACK					;			- **** 003	ADD	R.STE(R0),@#UISAR4	; MAP THE ENTRY	MOV	R.STE+2(R0),R5		; POINT TO ENTRY	CLC110$:	RETURN	.DSABL	LSB.PAGE.SBTTL	DMLIB -- DISCONNECT THREAD;;;	R0 CAB;	R1 FILE TABLE ENTRY;	R2 CCB;	R3 VIRTUAL ADDRESS OF RAB/FAB IN DM SPACE (ASR4 RELATIVE);	R4 RAB;DCTTH:	CALL	BUFGET			; GET BUFFERS	CALL	DISCNT			; COMMON DISCONNECT	JMP	TEND2			; END THE THREADDISCNT:	CALL	DIS2		      	; DO THE DISSCONNECT	$STORE	#0,ISI,R3		; CLEAR USER ISIRELCAB:					; ENTRY POINT TO RELEASE CABS	CLR	R5			; RELEASE ALL LOCKS	CALL	.ULKAL;;; DELETE THE CAB;	CALL	.FLSH				; YES SO FLUSH IT OUT	MOV	R1,-(SP)	MOV	R2,-(SP)	MOV	R3,-(SP)	ADD	#C.CHN,R2		; POINT TO CHANNEL IN CCB10$:	CMP	(R2),R0			; IS IT THIS ONE	BEQ	20$			; YES	MOV	@R2,R2	BR	10$20$:	MOV	@R0,@R2	MOV	#.DMLKP,R3		; RETURN THE CAB TO	MOV	#R.SIZE,R1		; TO THE	CALL	..DLC1			; POOL	MOV	(SP)+,R3	MOV	(SP)+,R2	MOV	(SP)+,R1	RETURNDIS2:	MOV	DNTCAL,-(SP)		;       DISCONNECT CALL	CALL	REQ1			; DO IT FROM ROOT	BIT	#CF.ABO,C.FLG(R2)	; ABORT?	BEQ	10$			; NO	CALL	ACTEST			; TEST FOR ACTIVE STREAM	BCS	DIS2			; YES SO RETRY10$:	RETURN.PAGE.SBTTL	DMLIB -- FIND RECORD.ENABL	LSB;; THREAD TO PROCESS FIND REQUEST;;	R0 CAB;	R1 FILE TABLE ENTRY;	R2 CCB;	R3 VIRTUAL ADDRESS OF RAB/FAB IN DM SPACE (ASR4 RELATIVE);	R4 RABFINTH:	CALL	BUFGET			; GET BUFFERS FOR STREAM	CALL	RECFIN			; DO A FIND	BISB	#RC.FIN,R.FLG(R0)	; SET LAST OPERATION A FIND	JMP	THEND			; END THE THREAD;RFAFIN:					;      		+ **** 004	$FETCH	-(SP),RAC,R4		; SAVE THE RAC					;		- **** 004	$STORE	#RB$RFA,RAC,R4		; SET TO FIND BY RFA	CALL	RECFIN					;		+ **** 004	$STORE	(SP)+,RAC,R4					;		- **** 004	RETURN;;; ROUTINE TO FIND A RECORD;RECFIN:	MOV	FINCAL,-(SP)		; CALL VECTOR ADDRESS	CALL	REQ1	RETURN.PAGE;;;;; ROUTINE TO FREE LOCKED BUCKETS;;;;RCFRE0:	TST	O$STS(R4)		; LAST OPERATION GOOD?	BGT	10$			; YES SO  LOCKS TO FREE	$COMPARE #ER$RTB,STS,R4		; ALLOW RECORD TO BIG	BEQ 	10$			;	BICB	#RC.FIN!RC.PUT!RC.DEL!RC.UPD!RC.GET,R.FLG(R0      )					; CLEAR LAST OPERATION	$COMPARE #ER$RLK,STS,R4		; RELEASE BUCKET LOCKS EVEN IF	BNE	 20$			; GET FOUND RECORD LOCKED10$:RCFRE2:					; ENTRY POINT TO UNCONDITIONALLY					; FREE BUKET LOCKS	$FETCH	-(SP),STS,R4	$FETCH	-(SP),STV,R4					;		+ **** 010	MOV	R.ISN(R0),R5		; GET THE IRAB POINTER	CALL	FDIMP			; MAP THE IMPURE AREA	BCS	20$			; NO IMPURE AREA EXIT	MOVB	C$BKP1(R5),-(SP)	; SAVE FLAGS BYTE	MOV	R5,-(SP)		; SAVE IRAB POINTER	MOV	@#UISAR0,-(SP)		; SAVE IMPURE MAP	MOV	ACOMBA,@#UISAR0		; REMAP THE COMMON		      			;		- **** 010	MOV	FRECAL,-(SP)		; PERFORM THE UNLOCK BUCKET OPERATION	CALL	REQ1					;		+ **** - 010	MOV	(SP)+,@#UISAR0		; REMAP THE IMPURE	MOV	(SP)+,R5		; RESTORE POINTER TO IRAB	MOVB	(SP)+,C$BKP1(R5)	; RESTORE FLAG BYTE	MOV	ACOMBA,@#UISAR0		; REMAP APP COMM					;		- **** - 010	$STORE	(SP)+,STV,R4		; RESTORE STATUS	$STORE	(SP)+,STS,R4		; IN RAB20$:	RETURN.DSABL	LSB.PAGE.SBTTL	DMLIB -- GET RECORD;;;;	GET RECORD THREAD PROCESSING;;;	R0 CAB;	R1 FILE TABLE ENTRY;	R2 CCB;	R3 VIRTUAL ADDRESS OF RAB/FAB IN DM S      PACE (ASR4 RELATIVE);	R4 RAB;;GETTH:					;		+ **** 004	CALL	BUFGET			; GET A BUFFER FOR THE STREAM					;		- **** 0045$:	INC	F.NGET(R1)		; NUMBER OF GETS TO THIS FILE	CALL	MAPBF1			; MAP THE USER BUFFER	BCS	13$			; MAPPING ERROR	$STORE	R5,UBF,R4		; STORE THE DM VIRTUAL OF BUFFER7$:	$FETCH	@#UISAR2,CTX,R4		; RESTORE RMS ASR 2 MAPPING	MOV	GETCAL,-(SP)		; GET CODE	CALL	REQ1			; PERFORM THE GET IN COMMON CODE	TST	O$STS(R4)		; IF FAILURE THEN EXIT	BMI	40$			; ELSE CHECK LOCKS ETC10$:	MOV	O$UBF(R3),O$RBF(R3)	; SET       USER BUFFER	MOV	O$RSZ(R4),O$RSZ(R3)	; AND SIZE	CALL	.GETLK			; DO THE LOCK CHECKS	BCS	30$			; IF IN LOCK QUEUE					; THEN	$COMPARE #ER$RNF,STS,R4		;   MAKE STAGED ENTRY ERROR CHECKS					;   DELETED STAGED ENTRY?	BNE	15$			;   NO SO RETURN	$COMPARE #RB$SEQ,RAC,R4		;   SEQUENTIAL ACCESS MODE?	BEQ	7$			;   YES SO GET NEXT VALID RECORD13$:	CALL	RCFRE2			;   RELEASE THE BUCKET LOCKS	JMP	TEND1			;   TERMINATE THE THREAD15$:	BISB	#RC.GET,R.FLG(R0)	;   NOT DELETED STAGED ENTRY SO					;   SET GOOD GET FLAG20$:	JMP	      THEND			;   TERMINATE THE THREAD30$:					; ELSE					;		+ **** 017	CALL 	FTRFA			; GET THE RFR IN COMMON CODE					;		- **** 017					;		+ **** 018	$FETCH	O$BKT(R3),BKT,R4	; BKT IN USER RAB					;		- **** 018	MOV	FRECAL,-(SP)		; FREE	CALL	REQ1			; BUCKET LOCKS	CALL	BUFREE			; FREE BUFFERS	CMP	-(R4),-(R4)		; RESET R4	JMP	TEND3			; TERMINATE THE THREAD40$:	$COMPARE	#ER$RTB,STS,R4	; TRUNCATE ERROR	BEQ	10$			; YES SO O.K	BR	20$			; BRANCH TO COMMON TERMINATE THREAD EXIT.PAGE.SBTTL	DMLIB -- PUT RECORD;	R0 CAB;	R1 FI      LE TABLE ENTRY;	R2 CCB;	R3 VIRTUAL ADDRESS OF RAB/FAB IN DM SPACE (ASR4 RELATIVE);	R4 RABPUTTH:	.ENABL	LSB	CALL	BUFGET			; GET BUFFERS FOR STREAM	INC	F.NINS(R1)		; NUMBER OF PUTS TO THIS FILE	CALL	MAPBF2			; MAP THE BUFFER	BCS	10$			; ERROR	$STORE	R5,RBF,R4		; SET MAPPED ADDRESS OF BUFFER	$OFF	#RB$UIF,ROP,R4		; NO UPDATE IF	MOV	PUTCAL,-(SP)		; PUT CODE	CALL	REQ0	BITB	#FF.STG,F.FLG(R1)	; CHECK FOR STAGING?	BEQ	40$			; NO	TST	O$STS(R4)		; INSERT GOOD?	BMI	10$			; NO	MOV	#LF.ST!LF.IN,R5		; SET THE LOCK FLAG			      		;		+ **** 203648	BITB	#FF.LKT,F.FLG(R1)	; ALLOW READERS FLAG SET?	BEQ	3$			; NO - SET HARD LOCK	BISB	#LF.RD,R5		; YES - SET SOFT LOCK3$:					;		- **** 203648	CALL	.STLK2			; LOCK THE RECORD	BCS	30$			; ERROR NO DYNAMIC SPACE	MOV	R3,-(SP)		; SAVE USER RAB	MOV	R4,-(SP)		; OUR RAB	MOV	R4,R3			; PUT RAB IN COMMON PLACE	$FETCH	R4,RBF,R4		; GET THE BUFFER	MOV	R5,-(SP)		; LOCK BLOCK ADDRESS	MOV	#<VS.INS*256.>!GF.DRC,R5; STAGE	CALL	.STAG1			; THE INSERT	INC	(SP)+			; REMOVE LOCK BLOCK	MOV	(SP)+,R4	MOV	(SP)+,R3	BC      S	30$			; STAGE SPACE ERROR SO DELETE5$:	BISB	#RC.PUT,R.FLG(R0)	; SET LAST OPERATION A PUT10$:	JMP	THEND30$:;; NO SPACE FOR A LOCK BLOCK;	CALL	RFAFIN			; FIND THE INSERTED RECORD	CALL	DEL2			; DELETE THE RECORD	TST	O$STS(R4)		; ERROR?	BMI	10$			;	CALL	RCFRE0			; FREE ALL BUFFERS	$STORE	#ER$DME,STS,R4		; RETURN DYNAMIC ERROR FOR NOW	BR	10$40$:	CALL	LOCKIT	BCS	30$	BR	5$	.DSABL	LSB.PAGE.SBTTL	DMLIB -- UPDATE RECORD;;; INTERFACE LEVEL PROCESSING;;; INPUT CONDITIONS:;;	R0 -- CAB;	R1 -- CHANNEL NUMBER;	R2 -- CCB;      	R3 -- VIRTUAL ADDRESS OF USER RAB (ASR 4 RELATIVE);	R4 -- RAB IN TST;.SYUPD:	CALL	.OPCHK			; CHECK PREVIOUS OPERATION	BCS	30$			; UPDATE NOT VALID	MOV	R.FTB(R0),R5		; GET THE FILE TABLE	INC	F.NUPD(R5)		; NUMBER OF UPDATES TO THIS FILE	BITB	#FF.STG,F.FLG(R5) 	; IS THE FILE STAGED?	BEQ	20$			; NO	MOV	R3,R4			; GET RAB INTO R4	CALL	MAPBF2			; MAP THE BUFFER	MOV	.LIBAR,@#UISAR2		; PUT THE LIBRARY BACK	BCS	10$			; BRANCH IF ERROR	MOV	R5,R4	MOV	#<VS.UPD*256.>!GF.DRC,R5; STAGE CODE	BISB	#RC.UPD,R.FLG(R0)	; SET PR      EVIOUS OPERATION UPDATE	JMP	.UDSTG			; COMMON STAGE CODE10$:	MOV	#ER$MAP,.REPBF+4	; MAPPING ERROR	RETURN20$:	CLC30$:	RETURN;; THREAD LEVEL PROCESSING;;;	R0 CAB;	R1 FILE TABLE ENTRY;	R2 CCB;	R3 VIRTUAL ADDRESS OF RAB/FAB IN DM SPACE (ASR4 RELATIVE);	R4 RAB;;	.ENABL	LSBUPDTH:	CALL	BUFGET			; GET BUFFERS FOR STREAM	CALL	MAPBF2			; MAP THE USER BUFFER	BCS	20$			; ERROR	MOV	R5,-(SP)		; SAVE BUFFER ADDRESS	CALL	RFAFIN			; MAKE THE RECORD CURRENT	$STORE	(SP)+,RBF,R4		; POINT TO BUFFER	$FETCH	@#UISAR2,CTX,R4		; AND       MAP BUFFER	TST	O$STS(R4)		; ERROR FROM FIND?	BMI	20$			; YESUPD2:	CALL	UPD3	BISB	#RC.UPD,R.FLG(R0)	; SET PREVIUOS OP UPDATE	CALL	UNLKIT			; SEE IF NEED TO UNLOCK20$:	MOV	LIBMAP,@#UISAR2		; PUT ASR2 BACK	JMP	THENDUPD3:	MOV	UPDCAL,-(SP)	CALL	REQ0	RETURN	.DSABL	LSB.PAGE.SBTTL	DMLIB -- DELETE RECORD;	R0 CAB;	R1 FILE TABLE ENTRY;	R2 CCB;	R3 VIRTUAL ADDRESS OF RAB/FAB IN DM SPACE (ASR4 RELATIVE);	R4 RABDELTH:	CALL	BUFGET			; GET STREAM BUFFERS	BITB	#FF.JRN,F.FLG(R1)	; JOURNAL THIS DELETE?	BNE	DELJRN			; YES	CALL      	RFAFIN			; MAKE THE RECORD CURRENT	TST	O$STS(R4)		; ERROR FROM FIND?	BMI	10$			; YES	CALL	DELREC	CALL	UNLKIT10$:	JMP	THENDDELREC:	BITB	#FF.FDL,F.FLG(R1)	; FAST DELETE REQUIRED	BEQ	10$			; NO	$SET	#RB$FDL,ROP,R4		; SET FAST DELETE10$:	BISB	#RC.DEL,R.FLG(R0)	; SET PREVIOUS OPERATION DELETEDEL2:	MOV	DELCAL,-(SP)		; DELETE CODE	CALL	REQ0	RETURNDELJRN:;; IF A KEYED FILE IS BEING JOURNALLED THEN THE MINIMUM SIZED RECORDED; NEEDS TO BE SAVED IN THE JOURNALL SO THAT THE RESTORE UTILITY CAN; OBTAIN THE PRIMARY KEY       TO FIND AND DELETE THE REQUIRED RECORD.;	CALL	.LKTS2			; SEE IF RECORD LOCKED	BCS	5$			; IT IS	CLR	R5			; CLEAR LOCK FLAGS	CALL	.STLK2			; DO A LOCK	BCS	40$			; NO SPACE5$:	BICB	#LF.IN,L.FLG(R5)	; CLEAR INSERT FLAG	BISB	#LF.DE!LF.ST,L.FLG(R5)	; SET DELETE AND STAGED LOCK	MOV	R5,-(SP)		; SAVE LOCK BLOCK ADDRESS;; FIND THE MINIMUM RECORD SIZE;	MOV	F.IMP(R1),@#UISAR0	; MAP THE RMS IMPURE AREA	MOV	I.PRMS+Y$GETS+2+O$IFI,R5; GET IFAB	MOV	F$IDXP(R5),R5		; GET INDEX CHAIN	MOV	I$MINL(R5),R5		; GET MINIMUM RECORD LEN      GTH	MOV	ACOMBA,@#UISAR0		; RE-MAP COMMOM	$STORE	R5,USZ,R4		; SAVE SIZE IN RAB;; NOW GET SPACE FROM THE SLOT;	MOV	R4,-(SP)		; SAVE RAB ADDRESS	MOV	R5,R4			; PUT RECORD SIZE IN CORRECT REGISTER	ADD	#VR.SIZ+2,R4		; ALLOW FOR HEADER	MOV	R.ISN(R0),-(SP)		; SAVE THE ISN;; STACK:-;	SP+00	ISI;	SP+02	RAB;	SP+04	LOCK BLOCK ADDRESS;	MOV	#<VS.DEL*256.>!GF.DRC,R5; STAGE ENTRY FLAGS	CALL	..GTSA			; GET SPACE FROM SLOT	BCS	30$			; NO SPACE	MOV	R1,(R4)+		; PUT FILE TABLE IN SLOT AND	MOV	(SP)+,(R4)+		; ISI	MOV	R4,R5			; PUT       ADDRESS OF SLOT IN R5	MOV	(SP)+,R4		; GET RAB BACK	MOV	O$RFA+0(R4),(R5)+	; PUT	MOV	O$RFA+2(R4),(R5)+	; RFA	MOV	O$RFA+4(R4),(R5)+	; IN SLOT	MOV	(SP)+,(R5)+		; LOCK BLOCK ADDRESS	$FETCH	(R5)+,USZ,R4		; RECORD SIZE	MOV	R5,-(SP)		; SAVE ADDRESS IN SLOT	MOV	@#UISAR3,-(SP)		; AND MAP	BIC	#160000,R5		; CLEAR MAP FROM BUFFER ADDRESS	BIS	#40000,R5		; SET ASR2 RELATIVE	$STORE	R5,UBF,R4		; PUT BUFFER ADDRESS IN RAB	$STORE	#RB$RFA,RAC,R4		; SET RFA ACCESS	MOV	@#UISAR3,@#UISAR2	; MAP RECORD BUFFER	MOV	.LKPMP,@#UISAR3		      ; MAP CAB	MOV	GETCAL,-(SP)		; GET RMS ENTRY	CALL	REQ1			; DO REQUEST	TST	O$STS(R4)		; CHECK STATUS	BGT	10$			; GOOD!	$COMPARE	#ER$RTB,STS,R4	; RECORD TOO BIG?	BEQ	10$			; YES SO OK;; ERROR SO SET STAGE ENTRY INVALID;	MOV	(SP),@#UISAR3		; MAP ENTRY	MOV	2(SP),R5		; GET BUFFER ADDRESS	MOVB	#VS.INV,V.TYP-<VR.SIZ+2+V.SIZ+2>(R5) ; SET ENTRY INVALID	MOV	.LKPMP,@#UISAR3		; GET CAB MAP BACK	BR	15$			;10$:	$STORE	#SU$SUC,STS,R4		; SET SUCCESS	BISB	#RC.DEL,R.FLG(R0)	; SET LAST OP DELETE					;		+ **** 999999	BIS	#CF.JO      R,C.FLG(R2)	; SET JOURNAL FLAG					;		- **** 99999915$:	CMP	(SP)+,(SP)+		; CLEAN STACK20$:	JMP	THEND30$:	TST	(SP)+			; REMOVE ISI	MOV	(SP)+,R4		; PUT RAB BACK	TST	(SP)+			; LOCK BLOCK40$:	$STORE	#ER$DME,STS,R4		; SET NO SPACE	BR	20$.PAGE.SBTTL	DMLIB -- END/ABORT TRANSACTION THREAD;;; END TRANSACTION:-;;	PERFORM ALL STAGED DELETES AND UPDATES;; ABORT TRANSACTION:_;;	DELETE ALL STAGED INSERTS;; END/ABORT TRANSACTION;;	DISCONNECT ALL STREAMS AND FREE ALL RECORD LOCKS;	APPLIED BY THE TRANSACTION.;;;; INPUT COND      ITIONS:;;	R1 -- CONTEXT BLOCK TO RESTART;;	R2 -- CCB;	R4 -- RAB/CONTEXT BLOCKENDTH:	MOV	R1,-(SP)		; SAVE THE CONTEXT BLOCK OF END TRAN THREAD	MOV	R4,R3			; FAKE THE TST RAB TO DM ONE5$:										;* RT002	BITB	#AT.DSP,@C.IAT		; DISPLAY IN PROGRESS			;* RT002	BEQ	7$			; NO CONTINUE				;* RT002	CALL	DMDLY			; YES DELAY IN BUSY LOOP		;* RT002	BR	5$			;					;* RT0027$:										;* RT002	MOV	C.CHN(R2),R0		; GET THE CAB	BEQ	20$			; NON SO EXIT	CALL	UNSTAG			; UNSTAGE THE WORKSPACE	BIT	#CF.CRA,C.FLG(R2)	; CRASH RES      TART	BNE	20$			; YES -- NO CABS TO DELETE10$:	MOV	@R0,-(SP)		; SAVE THE NEXT CAB	$STORE	R.ISN(R0),ISI,R4	; SET THE ISI	MOV	R.FTB(R0),R1		; GET THE FILE TABLE ENTRY	CALL	STALC			; GET BUFFERS	CALL	DISCNT			; DISCONNECT THE STREAM	MOV	(SP)+,R0		; GET NEXT CAB	BNE	10$20$:					;		+ **** 005					;		- **** 005	JMP	TRNEND.PAGE.SBTTL	DMLIB -- UNSTAGE ROUTINES;UNSTAG:	$STORE	#RB$BID,BID,R4		; SET RAB IDENITY BYTE	$STORE	#RB$BLN,BLN,R4		; SET RAB SIZE	$STORE	#0,MBF,R4		; MULTI=BUFFER COUNT	MOV	R0,-(SP)			; SAVE CAB	B      ITB	#CF.STA,C.FLG(R2)		; IS THERE A STAGE AREA?	BEQ	17$				; NO;; UNSTAGE ALL DATA RECORDS;	$STORE	#0,RHB,R4		; VFC HEADER	$STORE	#0,ROP,R4	$STORE	#RB$RFA,RAC,R4		; RFA ACCESS	MOV	R4,-(SP)		; ASVE R4	MOV	R3,-(SP)		; AND R3	MOV	#GF.DRC,R3		; SET DATA RECORD FLAG	CALL	..USET			; SET TO START OF STAGE AREA	MOV	(SP)+,R3		; RESTORE R3	BCS	15$			; NO AREA12$:	MOV	@#UISAR3,-(SP)		; SAVE THE STAGE ARREA MAP	TSTB	V.TYP(R5)		; RECORD STAGE?	BPL	14$			; NO	BIT	#CF.ERT,C.FLG(R2)	; EXCHANGE RESTART?					;		+ **** 207757      	BNE	10$			; YES					;		- **** 207757	MOV	R4,-(SP)	MOV	V.RLKB(R5),R4		; GET THE LOCK BLOCK	MOV	.LKPMP,@#UISAR3		; MAP THE LOCK BLOCK POOL	BICB	#LF.ST!LF.DE!LF.IN,L.FLG(R4) ; CLEAR STAGE FLAGS	MOV	(SP)+,R4	MOV	(SP),@#UISAR3		; REMAP THE STAGE ENTRY10$:	BIT	#CF.ABO!CF.ERT,C.FLG(R2); IS IT ABORT	BEQ	13$			; NO	CMPB	#VS.INS,V.TYP(R5)	; CHECK FOR INSERT	BEQ	30$			; YES -- DELETE IT	BR	14$			;13$:	CMPB	#VS.DEL,V.TYP(R5)	; IS IT DELETE	BEQ	30$			; YES	CMPB	#VS.UPD,V.TYP(R5)	; IS IT UPDATE	BEQ	40$			; YES14$:	MOV	(      SP)+,@#UISAR3		; GET THE STAGE AREA MAP BACK	MOV	R3,-(SP)	MOV	C.IAT(R2),R3		; GET ACTIVE TRAN ENTRY	CALL	..GSTE			; GET NEXT ENTRY	MOV	(SP)+,R3	BCC	12$15$:	MOV	(SP)+,R417$:	CLC18$:	MOV	(SP)+,R0	MOV	.LKPMP,@#UISAR3		; PUT LOCK POOL MAP BACK	RETURN;; UNSTAGE OPERATIONS:-;; DELETE;30$:	CALL	50$			; DO A SET UP	BMI	37$	MOV	F.IMP(R1),@#UISAR0	; MAP ONTO FILE IMPURE AREA	MOVB	I.PRMS+Y$GETS+2+O$ORG,-(SP)	; GET ORGANIZATION	MOV	ACOMBA,@#UISAR0		; REMAP THE APP COMM	CMPB	#FB$SEQ,(SP)+		; SEQUENTIAL ORG	BNE	33$			; N      O CONTINUE	MOV	TRNCAL,-(SP)		; YES THEN DO TRUNCATE	CALL	REQ0			;	CLR	(SP)			; SET COUNTER TO UNSTAGE COMPLETE	BR	35$33$:	CALL	DELREC			; DELETE THE RECORD35$:	TST	O$STS(R4)			; UNSTAGE ERROR?	BPL	39$				; NO37$:;; LOG ERROR;	MOV	R3,-(SP)			; SAVE RAB	MOV	#.COMSB,R3			; GET LOG BUFFER	MOV	@$TTBAD,(R3)+			; CONTEXT BLOCK ADDRESS	MOV	#<DE.UNS*256.>!LN.DAT,(R3)+	; ERROR CODES	MOV	ACOMBA,(R3)+			; COMMOM	MOV	C.TDB(R2),(R3)+			; TRANSACTION TYPE	MOV	R2,(R3)+			; CCB	CLR	(R3)+	CLR	(R3)+	$FETCH	(R3)+,STS,R4			; SA      VE ERROR CODE	$FETCH	(R3)+,STV,R4			; SAVE ERROR VALUE	CLR	(R3)+	MOV	6(SP),(R3)			; STAGE ENTRY KT11 ADDRESS	MOV	(R3)+,@#UISAR3			; MAP THE STAGE ENTRY	MOV	4(SP),R5			; ADDRESS OF STAGE ENTRY	MOV	R5,(R3)				; ADDRESS	BIC	#160000,(R3)+			; REMOVE ASR	MOV	2(R5),(R3)+			; SIZE	DIR$	#.ESEND				; SEND TO ERROR LOG	BCS	38$	CALL	ATSUP			; DO SUSPEND FROM ROOT38$:	MOV	(SP)+,R339$:	BIT	#CF.CRA,C.FLG(R2)	; CRASH RESTART?	BEQ	395$			; NO	CALL	DIS2			; DISCONNECT	BR	397$395$:	CALL	BUFREE397$:	MOV	(SP)+,R4	MOV	(SP)+,R5	      BR	14$;;; UPDATE;40$:	CALL	50$			; DO SET-UP	BMI	37$	MOV	4(SP),@#UISAR3		; MAP THE STAGE AREA	ADD	#10,R5			; SKIP RFA AND LOCK BLOCK ADDRESS	;* RT001	$STORE	(R5)+,RSZ,R4		; MOVE THE RECORD SIZE IN	MOV	4(SP),@#UISAR2		; MAP THE RECORD	BIC	#160000,R5		; CLEAR KT BITS	BIS	#40000,R5		; SET TO ASR 2	$STORE	R5,RBF,R4		; RECORD ADDRESS	CALL	UPD3	BR	35$;; SET UP TO UNSTAGE;50$:	MOV	R4,-(SP)		; SAVE R4	MOV	2(SP),-(SP)		; MOVE RETURN ADDRESS	MOV	R5,4(SP)		; SAVE R5;; STACK SUMMARY:-;;	SP+00	RETURN ADDRESS;	SP+02	SAVE      D R4;	SP+04	SAVED R5;	SP+06	KT OF STAGE ENTRY;	SP+10	RAB ADDRESS;	ADD	#4,R5			; STEP OVER THE HEADER IN THE STAGE AREA	MOV	(R5)+,R1		; GET THE FILE TABLE ENTRY ADDRESS	MOV	10(SP),R4		; GET THE RAB	$STORE	(R5)+,ISI,R4		; PUT THE ISI IN THE RAB	BIT	#CF.CRA,C.FLG(R2)	; CRASH RESTART	BEQ	60$			; NO;;	SET UP RAB FOR CONNECT;	$STORE	#I.PRMS+Y$GETS+2,FAB,R4 ; ADDRESS OF FAB IN THE IMPURE AREA	$STORE	#0,KRF,R4		; CLEAR UNUSED RAB PARAMETERS	MOV	R5,-(SP)	CALL	CNT1			; CONNECT A STREAM	BR	70$60$:	CALL	STALC			; GET B      UFFERS	BCS	75$			; SLOT I-O ERROR										;* RT00165$:										;* RT001	MOV	R5,-(SP)							;* RT00170$:										;* RT001	MOV	(SP),R5			; RESTORE R5 TO POINT TO STAGE ENTRY	;* RT001	MOV	10(SP),@#UISAR3		; REMAP STAGE ENTRY			;* RT001	MOV	14(SP),R0		; RESTORE CAB POINTER			;* RT001	MOV	.LKPMP,@#UISAR2		; MAP THE CAB POOL			;* RT001	BIC	#160000,R0		; CLEAR ASR 3 MAPPING			;* RT001	BIS	#40000,R0		; SET THE MAPPING TO ASR 2		;* RT001	MOV	(R5),R.RFA(R0)		; STORE RFA IN CAB			;* RT001	MOV	(R5)+,O$RFA(R4)		; STO      RE RFA INTO RAB			;* RT001	MOV	(R5),R.RFA+2(R0)	;					;* RT001	MOV	(R5)+,O$RFA+2(R4)	;					;* RT001	MOV	(R5),R.RFA+4(R0)	;					;* RT001	MOV	(R5)+,O$RFA+4(R4)	;					;* RT001	MOV	14(SP),R0		; RESTORE ASR3 RELATIVE CAB PTR		;* RT001	CALL	RECFIN			; FIND THE RECORD			;* RT001	MOV	(SP)+,R5							;* RT001	CALL	ACTEST			; TEST ACTIVE STREAM			;* RT001	BCS	65$			; YES SO RETRY				;* RT001	TST	O$STS(R4)		; TEST ERROR	RETURN75$:	CLR	2(SP)			; SET NO MORE STAGE ENTRIES	SEN				; SET NEG	RETURN	.ENABL	LSBACTEST:	$COMPAR      E	#ER$RSA,STS,R4	; ACTIVE	CLC	BNE	80$			; NO;; STREAM ALREADY ACTIVE;	MOV	@$TTBAD,C.CQE(R2)	; INDICATE THREAD TO RESUME WHEN COMPLETEATSUP:					;		+ **** 005	CALL	INTS2			; DO COMMON SUSPEND					;		- **** 005	SEC80$:	RETURN	.DSABL	LSBSTALC:;; R1 -- FILE TABLE; R2 -- CCB; R4 -- RAB	MOV	R5,-(SP)	MOV	#$TPALC,-(SP)		; GET BUFFERS FOR STREAM	CALL	REQ1			;	MOV	(SP)+,R5		; GET R5 BACK	$COMPARE	#ER$DME,STS,R4	; NO BUFFERS	CLC	BEQ	15$			;	BR	80$			; GOT BUFFERS CONTINUE15$:;; FAILED TO ALLOCATE BUFFERS;					;		+ ***      * - CH01	BIS	#TH.DAT,.THRTL		; SET SLOW DOWN SYSTEM FLAG					;		- **** - CH01	MOV	#20$,-(SP)		; PUT RETURN ADDRESS ON STACK	MOV	R0,-(SP)	MOV	R1,-(SP)		;	MOV	C.SLT(R2),R1		; GET SLOT;;	STACK SUMMARY;;	SP	SAVED R1;	SP  2 	SAVED R0;	SP  4	RETURN ADDRESS AT 20$;	SP  6	RETURN ADDRESS FROM STALC;	SP 10	RETURN ADDRESS FROM UNSTAGE ROUTINE;	SP 12	SAVED R4;	SP 14	SAVED R5;	SP 16	KT ADDRESS OF STAGED ENTRY;;	CALL	$ACBDB			; GET THE BASE	SUB	R0,16(SP)		; DISP TO BASE	MOV	R2,-(SP)	MOV	R3,-(SP)	MOV	R4,-(SP)	CALL	$RTBL		      	; RELEASE THE SLOT	BR	DY			; DO A DELAY20$:	ROR	(SP)			;SAVE C BIT	ADD	.TEMP,10(SP)	MOV	10(SP),@#UISAR3	CLC	ROL	(SP)			; RESTORE C BIT;; RETURN HERE FROM DELAY -- STACK CLEAN;	BCC	STALC			; TRY AGAIN IF NO I-O FAILURE80$:					;		+ **** - CH01	BIC	#TH.DAT,.THRTL		; CLEAR SYSTEM SLOW DOWN FLAG					;		- **** - CH01	RETURN	.ENABL	LSB;; LOCK SLOT IN MEMORY;FIXSLT:	MOV	R0,-(SP)	MOV	R1,-(SP)		; SAVE R1	MOV	C.SLT(R2),R1		; GET SLOT ID	MOV	R2,-(SP)		; SAVE R2	MOV	R3,-(SP)		; AND R3	MOV	R4,-(SP)5$:	JMP	.R0GTB			; GE      T FROM ROOT (COULD SUSPEND).RTGTB::	MOV	R0,.TEMP		;SAVE KT ADDRESS					;		+ **** 184537	ROR	(SP)+			;	BCS	20$			;					;		- **** 18453710$:	MOV	(SP)+,R4	MOV	(SP)+,R3	MOV	(SP)+,R2	MOV	(SP)+,R1	MOV	(SP)+,R0	RETURN20$:	CMP	#ER.NSP,R1		; NO SPACE ERROR	SEC				; SET C  IN CASE I-O ERROR	BNE	10$			; N0DY:	CALL	DMDLY			; DELAY A BIT					;		+ **** - 184584	MOV	4(SP),R1		; RESTORE CCB	MOV	C.SLT(R1),R1		; GET SLOT BDB					;		- **** - 184584	BR	5$	.DSABL	LSB.PAGE.SBTTL	DMLIB -- EXCGANGE RESTART THREAD;; INPUT CONDITION      S:;	R1 -- CONTEXT BLOCK TO RESTART;	R2 -- CCB;	R4 -- RAB/CONTEXT BLOCK FOR THREAD;RSTTH:	MOV	R1,-(SP)		; SAVE THE THREAD TO RESTART	CALL	UNSTAG			; CLEAR OUT THE STAGE AREA FOR THE EXCHANGE	BCS	40$			; SLOT I-O ERROR	MOV	C.CHN(R2),R0		; GET THE FIRST CAB	BEQ	40$			; NO CHANNELS10$:	CALL	.FLSH			; FLUSH THE TIMER WAIT QUEUE					;		+ **** 016	MOV	@R0,-(SP)		; SAVE THE NEXT CCB					;		- **** 016	TSTB	R.CHN(R0)		; DISCONNECTED?	BMI	50$			; YES15$:	CMPB	C.EXT(R2),R.EXT(R0)	; CHANNEL CONNECT BY THIS EXCHANGE	BNE	      20$			; NO	MOV	R.FTB(R0),R1		; GET THE FILE TABLE FOR THE CHANNEL	$STORE	R.ISN(R0),ISI,R4	; SET THE ISI	CALL	STALC			; ALLOCATE BUFFERS					;		+ **** 002	BCS	60$			; SLOT I-O ERROR					;		- **** 002	MOV	R4,R3	CALL	DISCNT			; DISCONNECT THE CHANNEL20$:	MOV	(SP)+,R0		; GET THE NEXT CAB	BNE	10$			; AND PROCESS IT;; NOW FREE ALL THE LOCKS APPLIED BY THIS EXCHANGE;	MOV	C.CHN(R2),R0		; GET THE FIRST CAB	BEQ	40$			; ALL GONE					;		+ **** 01221$:	TSTB	R.CHN(R0)		; ALREADY DISCONNECTED	BMI	37$			; YES CONTINUE					      ;		- **** 012					;		+ **** 002	MOV	R.FTB(R0),R1		; RESTORE FILE TABLE PTR					;		- **** 002	CALL	MAPCXT			; GET THE STAGE ENTRY;; ASR4 SAVED ON THE STACK;	MOV	(R5)+,R.RFA+0(R0)	; RESET	MOV	(R5)+,R.RFA+2(R0)	; RFA	MOV	(R5)+,R.RFA+4(R0)	;	MOVB	(R5)+,R.FLG(R0)		; FLAGS					;		+ **** 002	CLRB	(R5)+			; SET TO SAVE AGAIN	MOV	R4,-(SP)		; SAVE R4	MOV	R.ISN(R0),R4		; POINT TO THE IRAB	BEQ	25$			; NOT CONNECTED	CALL	FDIMP			; MAP THE IMPURE AREA	MOV	R3,-(SP)		; SAVE R3	ADD	#R$LNRP,R4		; POINT TO IFAB NEXT RECORD			      		; 		+ **** 207758	MOV	#<R$BRP+2-R$LNRP>/2,R3	; WORDS TO UNSAVE					;		- **** 20775823$:	MOV	(R5)+,(R4)+		; UNSAVE	SOB	R3,23$	MOV	(SP)+,R3		; RESTORE R3	MOV	ACOMBA,@#UISAR0		; REMAP COMMOM25$:	MOV	(SP)+,R430$:	MOV	(SP)+,@#UISAR4		;35$:	CALL	.ULKEH			; RELEASE LOCKS FOR THIS EXCHANGE37$:	MOV	@R0,R0			; GET THE NE THE NEXT CANB	BNE	21$			; AND PROCESS   + - **** 01240$:	JMP	TRNEND50$:	CALL	MAPCXT			; GET STAGE ENTRY FOR CONNECT	BCS	20$			;					;		+ **** 012					;		+ *** 203650	MOVB	V.SEX-<V.SIZ+2>(R5),R5		;       GET EXCHANGE WHICH SAVED INFO					;		- **** 203650	MOV	(SP)+,@#UISAR4		; RESTORE ASR4	CMPB	C.EXT(R0),R5		; DISCONNECTED BY THIS EXCHANGE					;		- **** 012	BNE	20$			; NO	NEGB	R.CHN(R0)		; RE -CONNECT	BR	15$			;60$:	TST	(SP)+			; CLEAN STACK	BR	40$.PAGE.SBTTL	DMLIB -- CLEAN-UP WORK FILES;;; ROUTINE TO SCAN THE FILE TABLE AND CLEAN-UP ANY; WORK FILES OWNED BY THIS TRANSACTION;;WFCLN:	BIT	#CF.WRK,C.FLG(R2)	; ANY WORK FILES FOR THIS TRANSACTION	BEQ	35$			; NO	MOV	.ACFTB,R1		; FILE TABLE ADDRESS	MOV	.ACFSZ,-(SP)      		; NUMBER OF ENTRIES10$:	BITB	#FF.WRK,F.FLG(R1)	; WORK FILE?	BEQ	30$			; NO	CALL	FDIMP			; SEE IF OWNED BY THIS TRANSACTION	BCS	30$			; NO					;		+ **** - 02567	MOV	R4,-(SP)		; SAVE R4	MOV	#FB$BLN/2,R5		; GET FAB LENGTH	MOV	#I.PRMS+Y$GETS+2,R3	; ADDRESS OF FAB IN IMPURE AREA15$:	MOV	(R3)+,(R4)+		; MOV IMPURE FAB TO CB/FAB	SOB	R5,15$			;	MOV	(SP)+,R4		; RESTORE R4	$STORE	#0,NAM,R4		; CLEAR NAM FIELD					;		- **** - 02567	MOV	@#UISAR0,@#UISAR4	; SAVE IMPURE MAP FOR FUTURE TESTING	MOV	ACOMBA,@#UISAR0		; REMAP       COMMOM	BIT	#CF.ERT,C.FLG(R2)	; EXCHANGE RESTART?	BNE	40$			; YES	BIT	#CF.ABO,C.FLG(R2)	;  ABORT?					;		+ **** - 02567	BEQ	25$			; NO					;		- **** - 0256720$:	TST	100000+I.PRMS+Y$GETS+2+O$CTX ; CREATED FILE?	BMI	50$			; YES SO ERASE25$:	CALL	CLODO			; CLOSE THE FILE30$:	ADD	#F.SIZE,R1		; GET NEXT FILE ENTRY	DEC	(SP)			; ANY MORE					;		+ **** - 02567	BNE	10$			; YES					;		- **** - 02567	TST	(SP)+			; REMOVE COUNT35$:	RETURN40$:;; EXCHANGE RESTART;	CMPB	C.EXT(R2),100000+I.PRMS+Y$GETS+2+O$CTX ; OPENDED BY       THIS EXCHANGE?	BEQ	20$			; YES	BR	30$			; NO50$:	CALL	ERADO			; ERASE FILE	BR	25$.PAGE.SBTTL	DMLIB -- TERMINATE REQUEST THREAD;; TERMINATE END/ABORT/RESTART THREAD;TRNEND:					;		+ **** 005	CALL	WFCLN			; CLEAN UP WORKFILES					;		- **** 005;;	(SP) -- CONTEXT BLOCK TO RESTART;	R2   -- CCB;	R4   -- RAB/CONTEXT BLOCK;	MOV	(SP)+,.REPBF		; CONTEXT BLOCK	BR	ENDCOM;; TERMINATE A RECORD ACCESS THREAD;;THEND:	CALL	RCFRE0			; FREE ANY BUCKET LOCKS					;		+ **** 017	CALL	FTRFA			; PUT RFA IN USER RAB					;		- **** 01      7	$FETCH	R.RFA(R0),RFA,R4	; PUT THE RFA IN THE CAB	$FETCH	O$BKT(R3),BKT,R4	; GET BUCKET INFOTEND1:	$FETCH	-(SP),STS,R4	$FETCH	-(SP),STV,R4	CALL	BUFREE			; RELEASE STREAM BUFFERS	$STORE	(SP)+,STV,R4	$STORE	(SP)+,STS,R4	CALL	FREKEY			; FREE ANY KEY BUFFERSTEND2:	$FETCH	.REPBF+4,STS,R4		; RETURN STATUS CODE	$FETCH	.REPBF+6,STV,R4		; AND VALUE.	BIT	#CF.ABO!CF.ERT!CF.CRA,C.FLG(R2)	; ABORT IN PROGRESS?	BEQ	ENDCOM			; NO	MOV	C.CQE(R2),R0		; END THREAD WAITING?	BEQ	ENDCOM			; NO	TRESM$	R0	CLR	C.CQE(R2)ENDCOM:					;      		+ **** 005	CMP	-(R4),-(R4)		;					;		- **** 00510$:	CALL	SENDTS				; SEND REPLYTEND3:	CALL	INTRET			; SEE IF INTERFACE THREAD TO BE RESTARTED	MOV	.DMCXT,R1		; RETURN	MOV	R4,R0			; RAB/CONTEXT	MOV	#DMPOOL,R3		; BLOCK	CALL	..DLC1			; TO POOL	TTRMN$				; KILL THE THREAD.PAGE.PAGE.SBTTL	DMLIB -- CREATE/OPEN WORKFILE THREAD;;; INPUT CONDITIONS:;;	ASR3 MAPS THE IMPURE AREA FOR THE FILE;;	R1 -- FILE TABLE;	R2 -- CCB;	R3 -- VIRTUAL ADDRESS OF USER FAB;	R4 -- FAB/CONTEXT BLOCK;;	.ENABL	LSBCRETH:	MOV	#100000,-(SP)	      	; CREATE FLAG	BISB	C.EXT(R2),(SP)		; SET EXCHANGE NUMBER	CALL	FILSET			; SET-UP FOR FILE OPERATION	MOV	CRECAL,-(SP)		; DO	CALL	REQ0			; THE CREATE	INC	.CRFIL			; INC STATS # OF CREATES IN APPCOM	BR	10$OPETH:	CLR	-(SP)			; OPEN FLAG	BISB	C.EXT(R2),(SP)		; SET EXCHANGE NUMBER	CALL	FILSET			; FILE OP SET-UP	MOV	OPECAL,-(SP)		; DO	CALL	REQ1			; THE OPEN10$:	CLRB	.OPCNT			; CLEAR CRITICAL SECTION	TST	O$STS(R4)		; ERROR FROM RMS?	BMI	50$			; YES	MOV	(SP)+,@#UISAR0		; RE-MAP IMPURE AREA	MOVB	O$ESL+.NABBK,I.PFSZ	;       SAVE STRING SIZE	MOV	#I.PRMS+Y$GETS+2,R0 	; FAB IN IMPURE AREA	MOV	#FB$BLN/2,R5		; FAB SIZE20$:	MOV	(R4)+,(R0)+	SOB	R5,20$	MOV	(SP)+,I.PRMS+Y$GETS+2+O$CTX	; AND SAVE IN DM FAB	SUB	#FB$BLN,R4		; GET FAB/CONTEXT BACK	CALL	FABCPY			; COPY FAB TO USER FAB30$:	MOV	ACOMBA,@#UISAR0	BIS	#CF.WRK,C.FLG(R2)	; SET WORK FILE FLAG FOR TRANSACTION	TST	O$XAB(R3)		; XAB'S FOR OPEN?	BEQ	40$			; NO	JMP	DSPTH			; DO A DISPALY40$:	JMP	TEND2			; TERMINATE THE THREAD50$:;; CREATE OPEN ERROR;	CALL	WKREL	BR	40$	.DSABL	LSB;;; ROUTI      NE TO SET-UP FOR OPEN/CREATE WORK FILE;;FILSET:	TSTB	.OPCNT				; OPEN OR CREATE IN-PROGRESS	BEQ	10$				; NO	CALL	DMDLY				; DELAY	BR	FILSET				; TRY AGAIN10$:	INCB	.OPCNT				; SET MARKER	MOV	F.IMP(R1),@#UISAR2		; GET PROTOTYPE IMPURE AREA	$STORE	40000+I.PFSZ,FNS,R4			; PUT STRING SIZE IN FAB	$STORE	#40000+I.PFST,FNA,R4			; STRING ADDRESS	$STORE	60000+I.DSW,LCH,R4		; GET LUN	MOV	(SP),-(SP)			; CREATE STACK SPACE	MOV	@#UISAR3,2(SP)	MOV	#.NABBK,R5			; NAMES BLOCK	$STORE	#33.,ESS,R5			; BUFFER SIZE	$STORE	#I.PF      ST,ESA,R5			; BUFERR ADDRESS	$STORE	R5,NAM,R4	$STORE	#0,DNA,R4	$STORE	#0,XAB,R4	RETURN.PAGE.SBTTL	DMLIB -- CLOSE/ERASE WORKFILE;;	.ENABL	LSBERATH:	CALL	ERADO			; DO THE ERASE					;		+ **** 005	BR	5$			;					;		- **** 005ERADO:	CALL	FDIMP			; GET IMPURE AREA	$STORE	#ERALUN,LCH,R4		; SET LUN	$STORE	#I.PFST,FNA,R4		; FILE NAME BUFFER	$STORE	I.PFSZ,FNS,R4		; FILE NAME STRING SIZE	MOV	ERFCAL,-(SP)		; CALL RMS	CALL	REQ1			; TO ERASE THE FILE	CALL	FDIMP	CALL	.FLUC			; FLUSH CACHE FOR THIS FILE	MOV	ACOMBA,@#UISAR0	      ALUN$S	#ERALUN			; DEASSIGN ERASE LUN	INC	.ERFIL			; INC STATS # ERASES IN APPCOM	RETURNCLOTH:	CALL	CLODO			; CALL COMMON CLOSE CODE;;;	RELEASE THE CABS;3$:	CALL	FCABFT			; FIND THE CAB VIA THE FILE TABLE	BCS	5$			; NO CABS	CALL	RELCAB			; RELEASE THE CAB	BR	3$			;5$:	JMP	TEND2;;;	CLOSE WORKFILE COMMON CODE;;;	ENTERED DURING EXPLICIT CLOSE OR;	DURING CLOSE REQUIRED DURING TRANSACTION;	CLOSE.;;CLODO:	CALL	FDIMP			; FIND IMPURE AREA	$STORE	I.PRMS+Y$GETS+2+O$IFI,IFI,R4	; GET THE IFI	MOV	CLOCAL,-(SP)	CALL	REQ11      0$:					;		+ **** 005	CALLR	WKREL			; RELEASE WORKFILE RESOURCES					;		+ **** 005	.DSABL	LSB	.PAGE;;;; ROUTINE TO FREE THE RESOURCES ASSINGED TO A WORK FILE;; 1. THE LUN; 2. THE IMPURE AREA; 3. THE ASSOCIATED BDBS IN THE CACHE;;; INPUT CONDITIONS:;;	R1 -- FILE TABLE ENTRY;	R2 -- CCB;;WKREL:	MOV	R1,-(SP)			; SAVE FILE TABLE ENTRY	MOV	R2,-(SP)			; SAVE THE CCB	MOV	F.IMP(R1),@#UISAR0		; MAP PROTOTYPE IMPURE AREA	MOV	I.DSW,-(SP)			; SAVE THE SIZE IN TEMP WORD						; ON TOP OF STACK10$:	MOV	@#UISAR0,@#UISAR2		;       GET THE NEXT IMPURE AREA	MOV	0,@#UISAR0			; MAPPED AT ASR0	BEQ	20$				; EXIT; LAST IMPURE AREA	CMP	R2,2				; THIS THE ONE TO FREE?	BNE	10$				; NO; CONTINUE THRU IMPURE LINKS	MOV	0,40000				; YES; RESET THE LINK	MOV	LIBMAP,@#UISAR2			; REMAP THE TPMLIB	CALL	.FLUC				; FLUSH CACHE FOR FILE	MOV	.LKPMP,@#UISAR3			; RE-MAP CAB.LOCK POOL	MOV	@#UISAR0,R0			; ADDRESS OF IMPURE TO RELEASE	MOV	(SP),R1				; SIZE OF IMPURE AREA	CLR	(SP)				; CLEAR TOP OF STACK FOR LUN						;		+ **** 006	BISB	O$LCH+I.PRMS+Y$GETS+2,(SP      )	; SET THE LUN IN TOP OF STACK						;		+ **** 006	MOV	ACOMBA,@#UISAR0			; REMAP TO APP COMM	CALL	$RTSP				; RELEASE THE IMPURE AREA	MOV	(SP),R2				; PUT THE LUN IN R2	ALUN$S	R2				; DE-ASSIGN THE LUN	CALL	LUNFRE				; RETURN THE LUN20$:	TST	(SP)+			; REMOVE SIZE/LUN	MOV	(SP)+,R2			; RESTORE THE CCB ADDRESS	MOV	(SP)+,R1			; RESTORE THE FILE TABLE ADDRESS	MOV	ACOMBA,@#UISAR0			; REMAP THE APP COMM	MOV	LIBMAP,@#UISAR2			; REMAP THE TPMLIB	RETURN.PAGE.SBTTL	DMLIB -- PREVIOUS OPERATION CHECK;; THIS ROUTINE IS CA      LLED BY THE UPDATE, DELETE INTERFACE LEVEL; ROUTINES TO VALIDATE THAT THE REQUEST IS VALID - I.E THE; PREVIOUS OPERATION WAS A GET AND THAT THE RECORD IS NOT; LOCKED BY ANOTHER TRANSACTION.;.OPCHK:	MOV	#ER$IOP,.REPBF+4		; SET INVALID OPERATION	BITB	#RC.FIN!RC.GET,R.FLG(R0)	BEQ	3$					;		+ **** 017	CALL	SVRFA			; PUT PREVIOUS RFA IN RAB					;		- **** 017	CALL	.LKTS1			; SEE IF RECORD LOCKED	BCC	10$			; NO	CMP	R2,L.CCB(R5)		; LOCKED BY THIS TRANSACTION?	BEQ	5$			; YES (WELL DONE YOU TRAN. DESIGNER)	MOV	#ER$RL      K,.REPBF+4	; NO SO RETURN ERROR					; SINCE RECORD MAY HAVE CHANGED					; SINCE THE TRANSACTION READ IT					; BECAUSE THE TRANACTION DID NO LOCK IT!3$:	SEC	BR	10$5$:	CLC10$:	RETURN.PAGE					;		+ **** 017;;;;	COMMON ROUTINES TO SAVE AND RESTORE THE RFA;;;SVRFA:	$STORE	R.RFA(R0),RFA,R3	RETURN;;;FTRFA:	$FETCH	O$RFA(R3),RFA,R4	RETURN					;		- **** 017.PAGE.SBTTL	DMLIB -- START A FILE REQUEST THREAD;; INPUT CONDITIONS:;;	R0 -- FUNCTION CODE;	R1 -- FILE TABLE;	R2 -- CCB;	R3 -- VIRTUAL ADDRESS OF USER FAB (MAPPED       VIA ASR 4);	.ENABL	LSBDMDSP:	MOV	#DSPTH,-(SP)		; DISPLAY THREAD	BR	10$ERASE:	MOV	#ERATH,-(SP)	BR	10$OPEN:	MOV	#OPETH,-(SP)	BR	10$CREATE:	MOV	#CRETH,-(SP)	BR	10$CLOSE:	MOV	#CLOTH,-(SP)10$:	MOV	ACOMBA,@#UISAR0		; REMAP THE APP COMM	CALL	GETRAB			; GET A FAB/CONTEXT BLOCK	MOV	R4,R5			; CALCLATE THE CONTEXT BLOC	$STORE	#0,NAM,R4		; NAME BLOCK POINTER	$STORE	#0,XAB,R4		; EXTENDED ATTRIBUTES					;		+ **** - 184524	$SET	#FB$GET!FB$UPD!FB$DEL!FB$PUT,FAC,R4	; SET FAC FIELD					;		- **** - 184524	ADD	#FB$BLN-4,R5		;       ADDRESS	MOV	(SP)+,.TEMP	JMP	STRTHD			; JUMP TO COMMON START THREAD COD	.DSABL	LSB.PAGE.SBTTL	DMLIB -- COMMON FILE ACCESS ROUTINES;; INPUT CONDITIONS:;;	R0 -- FUNCTION CODE
;	R2 -- CCB;	R3 -- FAB IN TST;; OUTPUT CONDITIONS:;	R0 -- FUNCTION CODE;	R1 -- FILE TABLE ENTRY ADDRESS;	R2 -- CCB;	R3 -- FAB MAPPED IN TO DM VIA ASR4;	.ENABL	LSBFILOP:	MOV	R0,-(SP)					;		+ **** 203649	CMP	#BF.CLO,R0		; IS IT A CLOSE ?	BNE	5$			; NO	CALL	FDIFI			; YES FIND FILE TABLE ADDRESS FROM IFI	BCC	7$			; NOT FOUND, TRY BY FILE NAM      E STRING5$:	CALL	FDFTE			; FIND THE FILE TABLE ENTRY	BCS	10$			; NO SUCH FILE7$:					;		- **** 203649	MOV	R5,R1			; SAVE THE FILE TABLE ADDRESS	CALL	MAPFAB			; MAP THE FAB INTO DM	BCS	15$			; IF MAP ERROR THEN RETURN	MOV	(SP)+,R0	JMP	@FILEDP-BF.CRF(R0)	; PROCESS REQUEST10$:	MOV	#ER$FNF,.REPBF+4	; SET FILE NOT FOUND ERROR15$:	TST	(SP)+			; CLEAN STACK ON ERROR	BR	100$			; RETURN VIA COMMON CODE.PAGE.SBTTL	DMLIB -- OPEN FILE;; INPUT CONDITIONS;;	R0 -- FUNCTION CODE;	R1 -- FILE TABLE ADDRESS;	R2 -- CCB;	R3 --       FAB MAPPED INTO DM;;DMOPE:					;		+ **** 203649					;		- **** 203649					;		+ **** 0007	CALL	FDIMP			; FIND THE IMPURE AREA	BCC	25$			; IMPURE AREA FOUND COPY IT OVER TO USER	MOV	#ER$FNF,.REPBF+4	; FILE NOT CREATED BY THIS INSTANCE	BR	100$			; RETURN TO TST25$:					;		- **** 0007	CALL	FABCPY			; COPY IMPURE FAB TO USER	BITB	#FF.OPF,F.FLG(R1)	; DID OPEN AT START FAIL?	BNE	100$			; YES	TST	O$XAB(R3)		; ANY EXTENDED BLOCKS?	BEQ	100$			; NO	JMP	DMDSP			; DO A DISPLAY100$:	JMP	RET	.DSABL	LSB.PAGE;;;;; ROUTINE TO       COPY DATA TO THE USER FAB;;;FABCPY:	MOV	#I.PRMS+Y$GETS+2,R5		; GET THE FAB	$STORE	O$ALQ(R5),ALQ,R3		; ALLOCATION QUANTITY	$STORE	O$BKS(R5),BKS,R3		; BUCKET SIZE	$STORE	O$DEV(R5),DEV,R3		; DEVICE CHRACTERISTICS	$STORE	O$FOP(R5),FOP,R3		; FILE OPTIONS	$STORE	O$MRN(R5),MRN,R3					;		+ **** 203649	$STORE	R1,IFI,R3		; RETURN THE AFT IN THE IFI					;		- **** 203649	$STORE	O$MRS(R5),MRS,R3	$STORE	O$ORG(R5),ORG,R3		; ORGANISATION	$STORE	O$RAT(R5),RAT,R3	$STORE	O$RFM(R5),RFM,R3	$FETCH	-(SP),STS,R5			; GET OPEN  STA      TUS	$FETCH	-(SP),STV,R5			;	MOV	ACOMBA,@#UISAR0			; GET COMMON BACK	MOV	(SP)+,.REPBF+6	MOV	(SP)+,.REPBF+4	RETURN.PAGE.SBTTL	DMLIB -- CLOSE FILE	.ENABL	LSB;;;;	CLOSE PROCESSING AT INTERFACE LEVEL;;;DMCLO:	BITB	#FF.WRK,F.FLG(R1)	; WORK FILE?	BEQ	5$			; NO; RETURN VIA COMMON CODE	CALL	FDIMP			; SEE IF THERE IS A FILE TO CLOSE	BCS	30$			; NO FILE; RETURN VIA COMMON ERASE CODE	JMP	CLOSE			; DO A CLOSE5$:9$:	MOV	#SU$SUC,.REPBF+4	; ASSUME NON-WORK FILE	BR	20$.PAGE.SBTTL	DMLIB -- ERASE FILE;;;;	ERASE FILE PROCESSIN      G AT THE INTERFACE LEVEL;;;DMERF:	BITB	#FF.WRK,F.FLG(R1)	; WORK FILE?	BEQ	10$			; NO SO ERROR	CALL	FDIMP			; CHECK THERE IS A FILE	BCS	30$			; NO; SET ERROR CODE AND RETURN	JMP	ERASE30$:	MOV	#ER$FNF,.REPBF+4	; SET FILE NOT FOUND ERROR40$:	BR	20$			; RETURN VIA COMMON CODE FOR					; ERROR ON INTERFACE THREAD.PAGE.SBTTL	DMLIB -- CREATE FILE;;;;	CREATE FILE PROCESSING AT THE INTERFACE LEVEL;;;DMCRF:	BITB	#FF.WRK,F.FLG(R1)		; IS IT A WORKFILE?	BEQ	10$				; NO -- ERROR	CALL	CREOPE				; SET-UP FOR CREATE	BCS	20$	      			; ERROR	JMP	CREATE				; CREATE THREAD START10$:	MOV	#ER$FEX,.REPBF+4		; FILE EXISTS ERROR20$:	JMP	RET				; RETURN FOR ERROR ON						; THE INTERFACE THREAD	.DSABL	LSB.PAGE;;;; COMMON PROCESSING FOR OPEN/CREATE WORKFILE;;CREOPE:	CALL	FDIMP				; SEE IF ALREADY A FILE	BCC	120$				; YES SO ERROR	MOV	R2,-(SP)			; SAVE	MOV	R3,-(SP)			; VOLATILE	MOV	R4,-(SP)			; REGISTERS	MOV	R1,-(SP)			;;; ALLOCATE A LUN;	MOV	#1,R3				; SET UP TO ALLOCATE LUN	MOV	#LMAPR,R4			; VIA THE BIT MAP PRECESSING	CALL	..ALLC				; GET THE       LUN NUMBER	BCS	110$				; ERROR SO RETURN	ADD	#12.,R3				; SET PASSED BASE LUN	MOV	(SP),R1				; GET FILE TABLE	MOV	R3,-(SP)			; SAVE THE LUN	MOV	F.IMP(R1),@#UISAR0		; MAP PROTOTYPE IMPURE AREA	MOV	I.DSW,R1			; SIZE OF THE PROTOTYPE AREA	CALL	$GTSP				; GET IMPURE AREA SPACE IN CACHE	BCS	100$				; NO SPACE; FREE THE LUN; RETURN	MOV	R0,@#UISAR3			; MAP NEW IMPURE AREA	MOV	#60000,R5			; GET ITS BASE	ASH	#5,R1				; AND CONVERT SIZE TO WORDS	CLR	R4				;10$:	MOV	(R4)+,(R5)+			; MOVE PROTOTYPE INTO CACHE	SOB	R1,10      $	MOV	10(SP),60002			; SET CCB	MOV	(SP)+,I.DSW+60000		; SAVE THE LUN	MOV	0,60000				; SET FORWARD LINK	MOV	@#UISAR3,0			; AND POINT TO IT	CLC35$:	MOV	(SP)+,R1	MOV	(SP)+,R4	MOV	(SP)+,R3	MOV	(SP)+,R240$:	MOV	ACOMBA,@#UISAR0			; REMAP THE COMMON	MOV	R5,.REPBF+4			; PUT ERROR CODE IN REPLY BUFFER						;		+ **** 00745$:						;		+ **** 007	RETURN100$:;; NO SPACE;	MOV	ACOMBA,@#UISAR0			; REMAP THE APP COMM	MOV	(SP)+,R2			; FREE	CALL	LUNFRE				; THE LUN110$:	MOV	#ER$DME,R5			; SET DME ERROR IN R5	SEC	BR	35$120$:	MO      V	#ER$FEX,R5			; SET FILE ALREADY EXISTS	SEC	BR	40$;;; FREE AN ALLOCATED LUN;; R2 -- LUN NUMBER TO RETURN;;LUNFRE:	SUB	#12.,R2				; REMOVE THE BASE	MOV	#LUNMAP,R0			; GET THE BITMAP	MOV	#1,R3	CALLR	..DLLC.PAGE;;; ROUTINE TO FIND THE IMPURE AREA FOR A FILE;;; INPUT CONDITIONS:;	R1 -- FILE TABLE ADDRESS;	R2 -- CCB;; OUTPUT CONDITIONS:;;	ASR0	MAPS THE FOUND IMPURE AREA;;	IF IMPURE AREA NOT FOUND THEN ASR0 MAPS APPCOM;;	'C' SET IF AREA NOT FOUND;FDIMP:	MOV	ACOMBA,@#UISAR0			; MAKE SURE COMMON MAPPED	BITB	#FF.WR      K,F.FLG(R1)		; IS IT A WORK FILE	BEQ	40$				; NO SO IMPURE AREA FOUND	MOV	F.IMP(R1),@#UISAR0		; GET FIRST AREA10$:	MOV	0,@#UISAR0			; GET NEXT IMPURE AREA	BEQ	30$				; NOT FOUND	CMP	R2,2				; FOR THIS TRANSACTION	BNE	10$				; NO20$:	CLC	RETURN30$:	MOV	ACOMBA,@#UISAR0	MOV	#ER$FNF,.REPBF+4	SEC	RETURN40$:	MOV	F.IMP(R1),@#UISAR0		; GET FIRST AREA	BR	20$.PAGE.SBTTL	DMLIB -- GET RAB/CONTEXT BLOCK;; INPUT CONDITIONS:;;	R3 -- VIRTUAL ADDRESS OF RAB IN TST AS MAPPED;	      INTO DM SPACE.;	      ZERO IF NO RAB;;; OUT      PUT CONDITIONS:;;	R4 -- POINTS TO RAB/CONTEXT BLOCK IN DM;	      TWO WORDS BEFORE RAB CONTAIN THE NAME OF;	      THE TST TASK.;GETRAB:	MOV	R0,-(SP)	MOV	R1,-(SP)	MOV	R2,-(SP)10$:	MOV	.DMCXT,R1		; SIZE OF RAB/CONTEXT BLOCK	MOV	#DMPOOL,R0		; ADDRESS OF DM POOL	CALL	..ALC1			; ALLOCATE	BCS	20$			; NO SPACE	MOV	T.RB+DMTTB,(R0)+ 	; SAVE THE	MOV	T.RB+2+DMTTB,(R0)+ 	; TST NAME	MOV	R0,R4			; SET R4 TO RAB/CONTEXT BLOCK	MOV	R3,R1			; GET THE RAB IN THE TST	BEQ	17$			; NO USER RAB	MOV	#RB$BLN/2,R5		; AND ITS SIZE15$:	      MOV	(R1)+,(R0)+	SOB	R5,15$			; AND MOVE IT17$:	MOV	(SP)+,R2	MOV	(SP)+,R1	MOV	(SP)+,R0;	RETURN20$:;; NO SPACE FOR RAB CONTEXT BLOCK;	CALL	INTSUP			; STALL THE INTERFACE THREAD	BR	10$.PAGE.SBTTL	DMLIB -- VALIDATE AND MOVE KEY BUFFER;;; INPUT CONDITIONS:;;	R4 -- RAB IN DATA MANAGERKEYVAL:	$TESTBITS	#RB$KEY,RAC,R4	; IS THERE A KEY BUFFER?	CLC	BEQ	10$			; NO;	MOV	R0,-(SP)	MOV	R1,-(SP)	MOV	R2,-(SP)	MOV	R3,-(SP)	MOV	R4,-(SP)	MOV	@#UISAR4,-(SP);	$FETCH	R1,KSZ,R4		; GET THE KEY SIZE	BEQ	20$			; NO KEY	$FETCH	R0,KBF,      R4		; GET THE BUFFER	BEQ	20$			; NO BUFFER	MOV	C.TCB(R2),R4		; GET TCB	CALL	.VXFRR			; VALIDATE AND MAP	BCS	7$			; ERROR3$:	MOV	#DMPOOL,R0		; NOW GET A BUFFER	CALL	..ALC1			;	BCS	30$	MOV	R0,R5			; SAVE THE BUFFER5$:	MOVB	(R3)+,(R0)+	SOB	R1,5$	MOV	2(SP),R4		; GET THE DM RAB	$STORE	R5,KBF,R4		; AND SET THE BUFFER	CLC7$:	MOV	(SP)+,@#UISAR4	MOV	(SP)+,R4	MOV	(SP)+,R3	MOV	(SP)+,R2	MOV	(SP)+,R1	MOV	(SP)+,R010$:	RETURN20$:	SEC	BR	7$30$:	CALL	INTSUP	BR	3$.PAGE.SBTTL	DMLIB -- INTERFACE SUSPEND/RESTART;;INTSUP:	MOV	SP      ,.SUSFG		; SET SUSPENDED FLAG	BIS	#TF.NRB,DMTTB+T.FLG	; STOP DEQUEUES					;		+ **** 001INTS2:	JMP	INTS			; SUSPEND IN THE ROOT					;		- **** 001INTRET:	TST	.SUSFG			; IS THE INTERFACE SUSPENDED?	BEQ	10$			; NO	BIC	#TF.NRB,DMTTB+T.FLG	; ALLOW DEQUEUE	CLR	.SUSFG			; CLEAR THE FLAG	TRESM$	.DMCXB			; RESTART THE THREAD10$:					;		+ **** 001.INTR::					;		- **** 001	RETURN.PAGE.SBTTL	DMLIB -- ROUTINE TO STAGE DATA RECORDS;;; FOR ALL STAGED DATA RECORDS THE FOLLOWING ENTRY IS MADE; IN THE STAGE AREA FOR THE TRANS      ACTION:-;;	FILE TABLE ADDRESS;	ISI;	RFA;; FOR AN UPDATED RECORD THE SIZE OF THE RECORD AND THE; ACTUAL RECORD ARE ALSO STORED IN THE STAGE AREA.;; IF JOURNALING IS REQUIRED THE UPDATED AND INSERTED RECORDS; ARE STORED IN THE STAGE AREA.;;; INPUT CONDITIONS:_;;	R0 -- CAB;	R1 -- FILE TABLE ADDRESS;	R2 -- CCB;	R3 -- USER RAB (MAPPED INTO DM ASR4 RELATIVE);	R4 -- USER BUFFER ADDRESS (UPDATE/PUT);	R5 -- STAGE CODE AND FLAGS;;	SP+02	LOCK BLOCK ADDRESS FOR THE RECORD;	.ENABL	LSB.STAG1:	MOV	R3,-(SP)		; SAVE R3	MOV	      R4,-(SP)		; AND R4	MOV	#VR.SIZ,R4			; SIZE OF COMMON STAGED ENTRY	CMP	#<VS.DEL*256.>!GF.DRC,R5; DELETED CALL	BEQ	20$			; STORE ONLY THE RFA	BITB	#FF.JRN,F.FLG(R1)	; JOURNAL THIS FILE	BNE	15$			; YES	CMP	#<VS.UPD*256.>!GF.DRC,R5; IS IT AN UPDATE REQUEST	BNE	20$			; NO15$:	ADD	#2,R4			; ALLOW FOR RECORD SIZE	ADD	O$RSZ(R3),R4		; AND RECORD SIZE20$:	MOV	R.ISN(R0),-(SP)		; SAVE THE ISI	CALL	..GTSA			; GET SPACE FROM THE STAGE AREA	BCS	50$			; NO SPACE -- TRANSACTION WILL					; HAVE BEEN ABORTED	MOV	R1,(R4)+		; P      UT THE AFT IN THE STAGE RECORD	MOV	(SP),(R4)+		; PUT THE ISN IN THE STAGE AREA	MOV	4(SP),R3		; GET THE RAB	MOV	O$RFA(R3),(R4)+		; PUT THE	MOV	O$RFA+2(R3),(R4)+	; RFA	MOV	O$RFA+4(R3),(R4)+	; IN	MOV	10(SP),(R4)+		; LOCK BLOCK ADDRESS	BITB	#FF.JRN,F.FLG(R1)	; JOURNAL THE FILE?	BEQ	25$			; NO	BIS	#CF.JOR,C.FLG(R2)	; SET ITEMS JOURNALED MARKER	BR	27$25$:	CMP	#<VS.UPD*256.>!GF.DRC,R5; IS IT AN UPDATE?	BNE	40$			; NO SO COMPLETE27$:	CMP	#<VS.DEL*256.>!GF.DRC,R5;DELETE	BEQ	40$;; NOW NEED TO MOVE THE DATA RECORD IN;      	$FETCH	(R4)+,RSZ,R3		; GET THE RECORD SIZE	$FETCH	@#UISAR0,CTX,R3		; MAP THE USER BUFFER;	$FETCH	R3,RSZ,R3		; GET THE SIZE	MOV	2(SP),R5		; GET BUFFER ADDRESS	BIC	#160000,R5		; MAKE ASR0 RELATIVE30$:	MOVB	(R5)+,(R4)+		; MOVE THE RECORD IN	SOB	R3,30$40$:	MOV	.LKPMP,@#UISAR3		; MAP THE LOCK POOL	BISB	#RC.STG,R.FLG(R0)	; SET STAGED ITEMS FLAG	CLC50$:	INC	(SP)+			; REMOVE ISI	MOV	ACOMBA,@#UISAR0		; MAP COMMON	MOV	.LKPMP,@#UISAR3	MOV	(SP)+,R4	MOV	(SP)+,R3	RETURN	.DSABL	LSB.PAGE.SBTTL	DMLIB -- CONNECT STREAM;; IN      PUT PARAMETERS:;	R2 -- CCB;	R3 -- FAB IN TST;	R4 -- RAB IN TST;DMCNT:	CALL	FDCAB			; SEE IF STREAM ALREADY CONNECTED	BCC	10$			; YES SO CHECK FOR SAME FILE;; CHECK FOR NUMBER OF CONNECT STREAMS;	MOV	R1,-(SP)	MOV	R2,-(SP)	CALL	FDFTE			; FIND THE FILE TABLE ENTRY	BCS	70$			; NO SUCH FILE	MOV	#R.SIZE,R1		; GET A CAB	MOV	#.DMLKP,R0		; FROM THE POOL	CALL	..ALC1			;	BCS	30$			; NO SPACE	MOV	(SP)+,R2		; GET THE CCB	MOV	C.CHN(R2),(R0)		; LINK CAB	MOV	R0,C.CHN(R2)		; TO CCB	TST	(R0)+			; GET TO NEXT WORD IN CAB	MOV	      (SP)+,R1		; GET THE CHANNEL NUMBER	MOVB	R1,(R0)+		; PUT IN CAB	CLRB	(R0)+			; FLAG BYTE	CLR	(R0)+			; ISI	CLR	(R0)+			; LOCK LIST	CLR	(R0)+			; PREVIOUS	CLR	(R0)+			; RFA	CLR	(R0)+			; AND	MOVB	C.EXT(R2),(R0)+		; MOVE EXCHANGE IN	CLRB	(R0)+			; LOCK WAIT TIME	CLR	(R0)+			; CONNECT STAGE ENTRY ADDRESS	CLR	(R0)+			; NAME	MOV	R2,(R0)+		; CCB	MOV	R5,(R0)			; FILE TABLE ENTRY	MOV	#BF.CNT,R0		; GET FUNCTION CODE BACK;	JMP	RECOP10$:;; CAB ALREADY CONNECTED;	CALL	FDFTE			; FIND THE FILE TABLE ENTRY	BCS	60$			; ERRO      R	MOV	#SU$SUC,R3 		; ASSUME SAME FILE	CMP	R5,R.FTB(R0)		; IS IT	BEQ	50$			; YES20$:	MOV	#ER$FNF,R3 		; FILE NOT FOUND ERROR	BR	50$			; RETURN30$:	MOV	#ER$DME,R3		; BUFFER ALLOCATION ERROR40$:	CMP	(SP)+,(SP)+50$:	MOV	R3,.REPBF+4		; PUT ERROR IN REPLY BUFFER	JMP	RET			; RETURN FOR ERROR ON INTERFACE THREAD60$:	MOV	#ER$ISI,R3	BR	50$70$:	CMP	(SP)+,(SP)+	BR	20$.PAGE.SBTTL	DMLIB -- FIND CAB;; INPUT CONDITIONS;;	R1 CHANNEL NUMBER;	R2 CCB;; OUTPUT CONDITIONS:;;	R0 CAB;	'C' SET IF CAB COULD NOT BE FOUND;	.ENABL	LSBF      DCAB:	MOV	C.CHN(R2),R0		; GET THE FIRST CAB	BEQ	20$			; NO CABS FOR THIS TRANSACTION10$:	CMPB	R1,R.CHN(R0)		; THIS ONE?	BEQ	30$			; YES	MOV	@R0,R0			; NO SO TRY THE NEXT	BNE	10$			;20$:	SEC				; NO CAB FOR THIS CHANNEL NUMBER	RETURN30$:	CLC	RETURN;; FIND CAB BY FILE TABLE ENTRY ADDRESS;;	R1 -- FILE TABLE ENTRY;FCABFT:	MOV	C.CHN(R2),R0			; GET FIRST CAB40$:	BEQ	20$				; NONE	CMP	R1,R.FTB(R0)			; THIS CAB?	BEQ	30$				; YESFCABF2:	MOV	@R0,R0				; GET NEXT CAB	BR	40$	.DSABL	LSB.PAGE.SBTTL	DMLIB -- FREE KEY BUFF      ER;;FREKEY:	$TESTBITS	#RB$KEY,RAC,R4	; IS THERE A KEY	BEQ	10$			; NO	MOV	R0,-(SP)	MOV	R1,-(SP)	MOV	R2,-(SP)	MOV	R3,-(SP)	$FETCH	R1,KSZ,R4		; GET KEY SIZE	$FETCH	R0,KBF,R4		; AND BUFFER	MOV	#DMPOOL,R3		; POOL ADDRESS	CALL	..DLC1			; RETURN THE SPACE	CALL	INTRET			; RESTART THE INTERFACE	MOV	(SP)+,R3	MOV	(SP)+,R2	MOV	(SP)+,R1	MOV	(SP)+,R010$:	RETURN.PAGE.SBTTL	DMLIB -- FIND FILE TABLE ENTRY;; INPUT CONDITIONS:;	R3 FAB IN TST;	   FNA CONTAINS ADDRESS OF FILE IDENTITY STRING IN TST;	   FNS CONTAINS SIZE OF STRI      NG;; OUTPUT CONDITIONS:;	R5 FILE TABLE ENTRY ADDRESS;;	'C' SET IF ENTRY COULD NOT BE FOUND;;FDFTE:	MOV	R0,-(SP)		;	MOV	R3,-(SP)		; SAVE R3	MOV	R4,-(SP)		; AND R4	CALL	MAPFAB			; MAP THE FAB INTO DM SPACE	BCS	40$			; ERROR IN MAPPING	$COMPARE	#FB$BID,BID,R3	; IS IT A FAB?	BNE	50$			; NO -- RETURN ERROR	$FETCH	R0,FNA,R3		; GET THE FILE IDENTITY STRING ADDRESS	BEQ	50$			; ERROR IF NO STRING	$FETCH	R1,FNS,R3		; GET THE STRING SIZE	BEQ	50$			; ERROR IF ZERO	CMP	#6,R1			; OR GREATER THAN	BLO	50$			; 6 CHARACTERS	      CALL	.VXFRR			; MAP THE FILE IDENTITY STRING INTO DM SPACE	BCS	40$			; MAPPING ERROR	MOV	#.TEMP,R0		; CLEAR .TEMP	MOV	#"  ,(R0)		; STORE	MOV	(R0)+,(R0)		;	MOV	(R0)+,(R0)		;	CMP	-(R0),-(R0)10$:	MOVB	(R3)+,(R0)+		; MOVE THE NAME STRING	SOB	R1,10$	MOV	#.TEMP,R4		; POINT TO LOGICAL NAME	CALL	AFTSCH			; SEARCH THE NAME TABLE40$:	MOV	(SP)+,R4	MOV	(SP)+,R3	MOV	(SP)+,R0	RETURN50$:	SEC	BR	40$AFTSCH:	MOV	.ACFTB,R5		; GET THE FILE TABLE	MOV	.ACFSZ,R0		; AND NUMBER OF ENTRIES	BEQ	50$			; NO FILES !!20$:	CMP	(R4),(R5)		      ; CHECK FIRST TWO CHARACTERS	BNE	30$			; NO	CMP	2(R4),2(R5)		; AND THE NEXT TWO	BNE	30$			; NO	CMP	4(R4),4(R5)		; AND THE LAST TWO	BEQ	35$			; GOT IT30$:	ADD	#F.SIZE,R5		; GET THE NEXT ENTRY	SOB	R0,20$			; AND TRY IT50$:	SEC40$:	RETURN35$:	CLC	BR	40$.PAGE					;		+ **** 203649;;;	SUBROUTINE FDIFI - FIND FILE TABLE ENTRY FROM USER FAB(IFI);;	INPUT CONDITIONS:;		R3 - USER FAB;;	UOTPUT CONDITIONS:;		R5 - AFT ADDRESS;		'C' SET IF NOT VALID IFI;		ER.IFI SET IN .REPBF+4;;FDIFI:	$FETCH	R5,IFI,R3		; GET THE AFT	BNE	      50$			; CHECK IF VALID10$:	MOV	#ER$IFI,.REPBF+4	; NOT VALID IFI	SEC20$:	RETURN;;	VALIDATE IFI;50$:	MOV	R0,-(SP)		; SAVE R0	MOV	R1,-(SP)		; SAVE R1	MOV	.ACFTB,R1		; BASE OF AFT	MOV	.ACFSZ,R0		; NUMBER OF FILES	BEQ	60$			; NONE ERROR55$:	CMP	R1,R5			; VALIDATE	BEQ	65$			; YES	ADD	#F.SIZE,R1		; NEXT AFT	SOB	R0,55$			; LOOP60$:	MOV	(SP)+,R1		; RESTORE REGS	MOV	(SP)+,R0	BR	10$			; ERROR EXIT65$:	MOV	(SP)+,R1		; RESTORE REGS	MOV	(SP)+,R0		;	CLC	BR	20$			; SUCCESS EXIT					;		- **** 203649.PAGE.SBTTL	DMLIB -- RECO      RD LOCK LIST PROCESSING;;; RECORD LOCK BLOCKS ARE ALLOCATED FROM THE LOCK NODE POOL AND; LINKED INTO TWO LISTS:-;	1. A SINGLE LINK FROM THE CAB;	2. A DOUBLE LINK FROM THE FILE TABLE ENTRY.;;;;; ** TEST FOR LOCK;;	ENTRY POINTS:-;		.LKTS1		RAB IN R3;		.LKTS2		RAB IN R4;;	R1 -- AFT ENTRY;; OUTPUT CONDITIONS:-;;	R5 -- RECORD LOCK BLOCK ADDRESS;	'C' SET IF RECORD FOUND LOCKED;	.ENABLE	LSB.LKTS1:	MOV	R3,R5			; MAKE RAB COMMON	BR	10$.LKTS2:	MOV	R4,R5			;10$:	MOV	R0,-(SP)		;	MOV	R1,-(SP)	ADD	#F.LKL,R1		; POINT TO L      IST HEAD IN AFT ENTRY	MOV	R1,R0			; MAKE R0 LISTHEAD POINTER20$:	MOV	@R1,R1			; GET THE NEXT ENTRY	CMP	R1,R0			; END OF LIST	BEQ	40$			; YES SO NO LOCK ENTRY	CMP	O$RFA(R5),L.RFA(R1)	; COMPARE FOR RFA	BNE	20$			; NO TRY THE NEXT WORD	CMP	O$RFA+2(R5),L.RFA+2(R1)	;	BNE	20$			; NO					;		+ **** 184573	CMPB	O$RFA+4(R5),L.RFA+4(R1)	;					;		- **** 184573	BNE	20$	SEC				; FOUND IT	MOV	R1,R5			; PUT ADDRESS IN TO R530$:	MOV	(SP)+,R1	MOV	(SP)+,R0	RETURN40$:	CLC	BR	30$	.DSABL	LSB;;;; ** SET LOCK ENTRY;;;; ENTRY POINT      S:;	.STLK1	RAB IN R3;	.STLK2	RAB IN R4;;	R0 -- CAB;	R1 -- AFT ENTRY;	R2 -- CCB;	R5 -- LOCK FLAG;; OUTPUT CONDITIONS:;;	'C' SET IF NO SPACE FOR LOCK ENTRY;	R5 -- RECORD LOCK BLOCK ADDRESS;;	.ENABL	LSB.STLK1:	MOV	R5,-(SP)		; SAVE THE LOCK FLAG	MOV	R3,R5			; MAKE RAB POINTER COMMON	BR	10$.STLK2:	MOV	R5,-(SP)		; SAVE THE LOCK FLAG	MOV	R4,R510$:	MOV	R0,-(SP)		; SAVE THE CAB	MOV	R2,-(SP)		; CCB	MOV	R1,-(SP)		; AFT ENTRY;; STACK SUMMARY:-;;	SP+00	AFT ENTRY;	SP+02	CCB;	SP+04	CAB;	SP+06	LOCK FLAGS;	MOV	#L.SIZE,R1		;       SET THE SIZE OF A LOCK BLOCK	MOV	#.DMLKP,R0	CALL	..ALC1			; ALLOCATE FROM THE SMALL POOL	BCS	20$			; NO SPACE	MOV	(SP),R1			; GET THE AFT ENTRY BACK	ADD	#F.LKL,R1		; GET THE LOCK LIST HEAD	MOV	2(R1),2(R0)		; LINK NODE IN -- SET BACK POINTER	MOV	@2(R1),(R0)		; SET FORWARD POINTER	MOV	R0,@2(R1)		; SET OLD FORWARD POINTER	MOV	R0,2(R1)		; SET LAST	$FETCH	L.RFA(R0),RFA,R5	; THE RFA IN THE LOCK BLOCK	MOV	R0,R5			; SAVE THE LOCK BLOCK	MOV	(SP)+,R1	MOV	(SP)+,R2	MOV	(SP)+,R0	MOV	R2,L.CCB(R5)		; PUT THE CCB IN THE L      OCK BLOCK	MOV	R.LST(R0),L.CLK(R5)	; LINK INTO CAB	MOV	R5,R.LST(R0)		; LOCK LIST	MOVB	C.EXT(R2),1(SP)		; SET UP EXCHANGE/FLAG WORD	MOV	(SP)+,L.FLG(R5)		; AND PLACE IN LOCK BLOCK	MOV	R5,L.WTQ(R5)		; INITALISE	ADD	#L.WTQ,L.WTQ(R5)	; THE LIST	MOV	L.WTQ(R5),L.WTQ+2(R5)	; HEAD FOR LOCK WAITING	CLC	RETURN20$:	MOV	(SP)+,R1	MOV	(SP)+,R2	MOV	(SP)+,R0	INC	(SP)+	RETURN	.DSABL	LSB;;;; ** RELEASE ALL SPECIFIED LOCKS;;; INPUT CONDITIONS;;	R0 -- CAB;	R5 -- MASK FOR LOCK NOT TO RELEASE;;.ULKEH:;; UNLOCK ALL FOR CURRENT EXCH      ANGE;					;		+ **** 207756	MOVB	C.EXT(R2),R5		; GET EXCHANGE NUMBER					;		- **** 207756	BIS	#100000,R5		; SET THE HIGH BIT;.ULKAL:	TST	R.LST(R0)		; ANY LOCKS FOR THIS STREAM?	BEQ	30$			; NO	MOV	R1,-(SP)	MOV	R2,-(SP)	MOV	R3,-(SP)		; SAVE R3	MOV	R0,-(SP)		; SAVE R0	MOV	R5,-(SP)		; PUT MASK AT TOP OF STACK	ADD	#R.LST-L.CLK,R0		; POINT TO LIST HEADAS IN THE LOCK BLOCK5$:	MOV	R0,R5			; MAKE R5 THE PREVIOUS NODE	MOV	L.CLK(R0),-(SP)		; GET NEXT ENTRY10$:	MOV	(SP)+,R0		; GET NEXT ENTRY	BEQ	20$			; NO MORE ENTRIES	      TST	(SP)			; DELETE FOR THIS EXCHANGE?	BGE	15$			; NO	CMPB	(SP),L.EXC(R0)		; LOCK FOR CURRENT EXCHNGE?	BNE	5$			; NO	BR	17$			; YES SO DELETE IT15$:	BITB	(SP),L.FLG(R0)		; TEST FLAGS	BNE	5$17$:	MOV	L.CLK(R0),-(SP)		; SAVE NEXT ENTRY	CALL	DELLK			; DELETE THE LOCK ENTRY	BR	10$20$:	MOV	(SP)+,R5	MOV	(SP)+,R0	MOV	(SP)+,R3	MOV	(SP)+,R2	MOV	(SP)+,R130$:	RETURNDELLK:;; UNLINK FROM THE CAB;	MOV	R5,-(SP)			; SAVE R5	MOV	R2,-(SP)			; SAVE R2	MOV	L.CLK(R0),L.CLK(R5);; ANY CHANNELS WAITING FOR THIS LOCK;	MOV	L.CCB(R0),      R3		; GET THE CURENT OWNER3$:	CMP	L.WTQ(R0),@L.WTQ(R0)	; CHECK FOR ENTRIES IN QUEUE	BEQ	10$			; ENPTY;; REMOVE WAITING CHANNEL;	MOV	#BF.RTY,.REPBF+4	; SET RETRY STATE TO READ RECORD AGAIN;;;			     NOTE:;;;	THIS CAUSES RETURN TO TSTLIB WHICH CHECKS FOR THE BF.RTY;	AND RE PERFORMS THE GET OPERATION.  THIS IS NECESSARY AS THE;	RECORD THAT HAS BEEN UNLOCKED MAY  HAVE CHANGED.;	IF THE TST BEING REMOVED FROM THE LOCKWAIT QUEUE HAS REQUESTED;	THE RECORD WITH LOCK THEN THE LOCK IS APPLIED PRIOR TO THE RETRY;	INSUR      ING THAT THE TST WILL SUCCEED WITH THE NEXT GET.;	IT IS NOTED THAT THERE IS A POTENTIAL PROBLEM WITH A "NOT ALLOW;	READERS" REQUEST WITHOUT LOCK.;;;5$:	MOV	R0,-(SP)		; SAVE THE LOCK NODE ADDRESS	MOV	L.WTQ(R0),R0		;  FLUSH NODE	SUB	#R.LKQ,R0		; GET ITS ADDRESS	MOV	R0,R3			; AND SAVE	CALL	FLSH2			; FROM TIMER AND WAIT QUEUE	MOV	(SP)+,R0		;	MOV	L.RFA+0(R0),R.RFA(R3) ; PUT RFA IN CAB	MOV	L.RFA+2(R0),R.RFA+2(R3)	MOV	L.RFA+4(R0),R.RFA+4(R3)	MOV	R.CCB(R3),R2		; GET NEW OWNER OF THE LOCK	BISB	#RC.GET,R.FLG(R3)	; SE      T GOOD GET7$:	MOV	C.TCB(R2),R1		; GET THE TCB	BEQ	3$			; GONE	SWITCH$	9$			; GET TO TCB	MOV	T.NAM+0(R1),DMTTB+T.RB+10	MOV	T.NAM+2(R1),DMTTB+T.RB+12	RETURN9$:	MOV	R4,-(SP)	MOV	#DMTTB+T.RB+10,R4	; POINT TO TST NAME	CALL	SENDTS			; SEND TO TST	MOV	(SP)+,R4	BITB	#RC.RED,R.FLG(R3)	; LOCK REQUIRED?	BNE	3$			; NO	MOV	R2,L.CCB(R0)		; AND SET OWNER IN LOCK NODE	BICB	#LF.ST!LF.DE!LF.IN,L.FLG(R0) ; CLEAR LOCK FLAGS	MOV	R.LST(R3),L.CLK(R0)	; LINK TO	MOV	R0,R.LST(R3)		; CAB	MOVB	C.EXT(R2),L.EXC(R0)	; SET EXCHANGE WHICH       APPLIED LOCK	BR	20$10$:;; UNLINK FROM THE AFT ENTRY;17$:	MOV	@R0,@2(R0)	MOV	@R0,R3	MOV	2(R0),2(R3);	MOV	#.DMLKP,R3	MOV	#L.SIZE,R1		; SIZE OF LOCK BLOCK TO RETURN	CALL	..DLC120$:	MOV	(SP)+,R2		; PUT R2 BACK	MOV	(SP)+,R5	RETURN;;;; DELETE A SPECIFIED LOCK ENTRY;; INPUT CONDITIONS:;	R5 -- LOCK BLOCK ENTRY;;LKDEL:.LKDEL:	MOV	R0,-(SP)		; SAVE VOLATILE	MOV	R1,-(SP)		; REGISTERS	MOV	R3,-(SP)		;	MOV	R5,-(SP)		; NODE TO DELETE	ADD	#R.LST-L.CLK,R0		; FIND IN THE CAB LIST10$:	MOV	R0,R5			; SAVE PREVIOUS NODE	MOV	L.CLK      (R0),R0		; GET NEXT ENTRY	BEQ	30$			; NO MORE	CMP	R0,(SP)			; THIS ONE TO DELETE?	BNE	10$			; NO -- GO GET NEXT20$:	CALL	DELLK			; DELETE THE ENTRY30$:	TST	(SP)+			; REMOVE DELETED NODE ADDRESS	MOV	(SP)+,R3	MOV	(SP)+,R1	MOV	(SP)+,R0	RETURN;;; TEST AND SET RECORD LOCKS;;.GETLK:	CALL	.LKTS2			; CHECK FOR LOCK	BCS	10$			; IT IS	CALL	LOCKIT			; SEE IF A LOCK IS REQUIRED5$:	CLC	RETURN10$:;;	$STORE	#ER$RLK,STS,R4		; ASSUME LOCK ERROR	CMP	R2,L.CCB(R5)		; LOCK HELD BY THIS TRANSACTION?	BNE	60$			; NO SO CHECK WAIT       ETC.	$STORE	#SU$SUC,STS,R4		; ASSUME SUCCESS	BITB	#LF.ST,L.FLG(R5)	; IS THE LOCK APPLIED BY THIS TRANSACTION					; FOR A STAGED ITEM?	BEQ	5$;; GET RECORD FROM STAGE AREA  IF AN UPDATE OR INSERT; IF DELETE THEN ERROR RETURN.;	BITB	#LF.IN,L.FLG(R5)		; INSERT RECORD?	BNE	5$				; YES SO GOT IT ALREADY	BITB	#LF.DE,L.FLG(R5)		; RECORD DELETE LOCKED	BEQ	41$				; NO	$STORE	#ER$RNF,STS,R4			; RETURN DELETED ERROR	BR	5$;; NEED TO FIND THE RECORD IN THE STAGE AREA;41$:					;		+ **** BUG 0002	MOV	R3,-(SP)		; SAVE R3			      		;		- **** BUG 0002	MOV	R4,-(SP)	CLR	-(SP)	CLR	-(SP)				; WORK SPACE	MOV	L.RFA+4(R5),-(SP)		; SAVE THE	MOV	L.RFA+2(R5),-(SP)		; RFA OF	MOV	L.RFA+0(R5),-(SP)		; REQUIRED RECORD	MOV	#GF.DRC,R3			; GET STAGED RECORDS	CALL	..USET	BCS	44$				; ERROR -- NO STAGED RECORDS;; STACK:;;	SP+00	RFA WORD 1;	SP+02	RFA WORD 2;	SP+04	RFA WORD 3;	SP+06	VIRTUAL ADDRESS OF LATEST STAGED ENTRY FOUND;	SP+10	KT OF LATEST STAGE ENTRY FOUND;	SP+12	SAVED R4;	SP+14	SAVED R3;;42$:	CMPB	#VS.UPD,V.TYP(R5)		; THIS ENTRY A STAGED UPDATE?      	BNE	43$				; NO	CMP	R1,V.RFTE(R5)			; FOR THIS FILE?	BNE	43$				; NO	CMP	(SP),V.RRFA+0(R5)		; CORRECT	BNE	43$				; RECORD	CMP	2(SP),V.RRFA+2(R5)	BNE	43$						;		+ **** 184573	CMPB	4(SP),V.RRFA+4(R5)						;		- **** 184573	BNE	43$	MOV	R5,6(SP)			; SAVE ADDRESS	MOV	@#UISAR3,10(SP)			; SAVE ITS MAP43$:						;	+ **** BUG 0002						; REQUIRES NEW ENTRY POINT IN						; TPMLIB ..GST1	CALL	..GST1				; GET NEXT STAGED ENTRY						;	- **** BUG 0002	BCC	42$				; TRY NEXT44$:	ADD	#6,SP				; REMOVE RFA FROM STACK	MOV	(SP      )+,R5			; GET ADDRESS OF ENTRY	MOV	(SP)+,@#UISAR3			; AND MAP						;		+ **** 207757	BEQ	50$				; NO ENTRY IN STAGE SPACE						; THIS MAY OCCUR AFTER A RESTART						;		- **** 207757	MOV	(SP)+,R4			; PUT R4 BACK;; NEED TO MOVE THE RECORD INTO THE USER BUFFER;	MOV	R2,-(SP)	$FETCH	@#UISAR2,CTX,R4			; MAP USER BUFFER	$FETCH	R2,USZ,R4			; BUFFER SIZE	$FETCH	R3,UBF,R4	ADD	#V.RSIZ+2,R5			; DATA RECORD IN STAGE AREA47$:	MOVB	(R5)+,(R3)+			; MOVE IT	SOB	R2,47$	MOV	(SP)+,R248$:	MOV	(SP)+,R3	MOV	.LKPMP,@#UISAR3	MOV	.LI      BAR,@#UISAR2	BR	5$;							+ **** 207750;;	NO ENTRY IN STAGE AREA;;	NOTE:;;	THIS OCCURS IN THE FOLLOWING SPECIAL CONDITION:;;	EXCHANGE 1;	   READ WITH LOCK RECORD A;	   END EXCHANGE;	EXCHANGE 2;	   READ RECORD A;	   UPDATE RECORD A;	   EXCHANGE RESTART;	   END EXCHANGE;50$:	MOV	(SP)+,R4		; RESTORE R4	BR	48$			; AND RETURN RECORD READ FROM RMS					;		- **** 207750;; RECORD LOCK REQUIRED;60$:	BICB	#RC.GET,R.FLG(R0)	; CLEAR PREVIOUS GET OP	BITB	#LF.RD,L.FLG(R5)	; READ ALLOWED?	BEQ	65$			; NO					;		+ **** 20781      6	$TESTBITS	#RB$LOK,ROP,R4	; LOCK REQUESTED?	BNE	65$			; YES PUT ON LOCKWAIT QUEUE					;		- **** 207816	$STORE	#SU$RLK,STS,R4		; PASS LOCK SUCCESS	BR	5$65$:	INC	F.NLOK(R1)		; UPDATE LOCK COUNT	MOV	F.IMP(R1),@#UISAR0	; MAP THE IMPURE AREA	MOVB	I.PWAT,R.LWT(R0)	; GET LOCK WAIT TIME	BNE	70$			; WAIT A BIT.	MOV	ACOMBA,@#UISAR0		; REMAP THE COMMON	BR	5$70$:	MOV	ACOMBA,@#UISAR0	BICB	#RC.RED,R.FLG(R0)		; CLEAR NO LOCK AFTER WAIT FLAG	$TESTBITS	#RB$LOK,ROP,R4		; LOCK REQUIRED?	BNE	75$				; YES	BISB	#RC.RED,R.FLG(R0      )75$:;; LINK THE CAB INTO THE LOCK WAIT QUEUE; ON THE LOCK NODE .;	ADD	#R.LKQ,R0		; POINT TO	ADD	#L.WTQ,R5		; LINK WORDS	MOV	@2(R5),(R0)		; NEW FORWARD	MOV	R0,@2(R5)	MOV	2(R5),2(R0)		; BACKWARD LINK	MOV	R0,2(R5)		;;; NOW LINK INTO THE TIMER QUEUE;	SUB	#R.LKQ,R0		; GET THE CAB ADDRESS BACK	BISB	#RC.LKW,R.FLG(R0)	; SET IN TIMER QUEUE FLAG	MOV	R3,-(SP)		; SAVE REGISTER	CLR	R3			; GET TIME	BISB	R.LWT(R0),R3		; TO WAIT					;		+ **** 008	MOV	R4,-(SP)		; SAVE R4	MOV	R2,-(SP)		; SAVE R2;;;	REGISTER USAGE SUMMARY;;	      R0 - NEW CAB TO INSERT IN THE QUEUE;	R2 - PREVIOUS CAB IN QUEUE SCAN;	R3 - NEW CAB (LOCK WAIT TIME);	R4 - CURRENT CAB IN QUEUE SCAN;	R5 - CURRENT CAB (LOCK WAIT TIME);;	CLR	R.TWQ(R0)		; INITIALIZE NEW CAB POINTER TO NULL	MOV	.TLWQ,R4		; GET THE FIRST CAB	BEQ	200$			; NONE - LINK_IN_EMPTY_QUEUE	MOV	#.TLWQ-R.TWQ,R2		; INITIALIZE QUEUE HEADER TO PREVIOUS CAB80$:	CMPB	R3,R.LWT(R4)		; IS NEW TIME LARGER THAN CURRENT ?	BLT	300$			; NO - LINK_IN_QUEUE	CLR	R5			; YES - SUBTRACT OUT	BISB	R.LWT(R4),R5		;	SUB	R5,R3			      ;	MOV	R4,R2			; SET R2 TO PREVIOUS CAB	MOV	R.TWQ(R4),R4		; SET R4 TO NEXT CURRENT CAB	BEQ	400$			; LAST ONE - LINK_IN_END	BR	80$			; END LOOP;;	CLEAN UP AND RETURN;90$:	MOVB	R3,R.LWT(R0)		; SAVE TIME IN NEW CAB	MOV	(SP)+,R2	MOV	(SP)+,R4	MOV	(SP)+,R3;;	FREE RESOURCES;	CALL	FREKEY			; FREE KEY BUFFERS	BICB	#RC.GET,R.FLG(R0)	; CLEAR PREVIOUS GET OPERATION	SEC	RETURN;;	LINK IN EMPTY QUEUE200$:	MOV	R0,.TLWQ		; SET NEW CAB IN HEADER	MOV	R0,.TLWQ+2		; SET NEW CAB IN HEADER BACK PTR	INC	.TLWQ+4			; SET TIMER ACTIVE      	DIR$	#$MARKD			; START THE TIMER	BR	90$			; EXIT;;	LINK IN QUEUE OR IN QUEUE HEAD300$:	MOV	R.TWQ(R2),R.TWQ(R0)	; SET NEW FORWARD PTR	MOV	R0,R.TWQ(R2)		; SET NEW CAB IN PREVIOUS	BR	600$			; ADJUST TIMES;;	LINK IN END OF QUEUE400$:	MOV	R0,R.TWQ(R2)		; SET PREVIUS CAB TO POINT TO NEW CAB	MOV	R0,.TLWQ+2		; SET HEADER BACK PTR TO POINT TO NEW CAB	BR	90$			; EXIT;;	ADJUST TIMES600$:	TST	R.TWQ(R4)		; IS THIS THE LAST ENTRY	BEQ	90$			; YES EXIT	CLR	R5			; NO	BISB	R.LWT(R4),R5		; SUBTRACT OUT THE NEW CAB TIME	SUB	R      3,R5			; AND SAVE IT BACK IN CAB(R.LWT)	MOVB	R5,R.LWT(R4)		;	BR	90$		        ; END LOOP					;		- **** 008.PAGE;; ROUTINE TO SEE IF A RECORD NEEDS TOBE LOCKED;LOCKIT:	$TESTBITS	#RB$LOK,ROP,R4	; LOCK REUIRED?	CLC	BEQ	10$			; NO	CLR	R5			; CLEAR LOCK FLAGS	$TESTBITS	#RB$RLK,ROP,R4	; READERS ALLOWED?	BNE	5$			; NO	BITB	#FF.LKT,F.FLG(R1)	; DEFAULT TO ALLOW READERS	BEQ	7$			; NO5$:	MOV	#LF.RD,R5		; SET LOCK FLAG7$:	CALL	.STLK2			; SET THE LOCK	BCC	10$	$STORE	#ER$DME,STS,R410$:	RETURN;; ROUTINE TO UNLOCK A RECORD;      UNLKIT:	TST	O$STS(R4)		; PROCESSING ERROR	BMI	10$			; YES SO NO UNLOCK	$TESTBITS	#RB$LOK,ROP,R4	; KEEP LOCKED?	BNE	10$			; YES	CALL	.LKTS2			; FIND THE LOCK ENTRY	BCC	10$			; RECORD NOT LOCKED	CALL	.LKDEL			; DELETE THE LOCK10$:	RETURN.PAGE.SBTTL DMLIB -- FLUSH THE TIMER QUEUE;;;; UNLINK THE CAB FROM THE TIMER AND LOCK WAIT QUEUEUS.;;;; INPUT CONDITIONS:;	R0 -- CAB;	.ENABL	LSB.FLSH:	BITB	#RC.LKW,R.FLG(R0)	; CAB IN TIMER QUEUE	BEQ	20$			; NOFLSH2:	MOV	R5,-(SP)		; SAVE	MOV	R4,-(SP)		; REGISTERS	MOV	#.TLWQ-R.T      WQ,R4		; GET LIST HEAD CAB RELATIVE10$:	MOV	R4,R5			; SAVE PREVIOUS NODE	MOV	R.TWQ(R5),R4		; GET NEXT NODE	BEQ	15$			; NO MORE ENTRIES	CMP	R0,R4			; THIS ENTRY TOBE DELETE	BNE	10$			; NO	MOV	R.TWQ(R0),R.TWQ(R5)	; UNLINK FROM TIMER QUEUE	BNE	13$			; NOT THE LAST ENTRY - ADJUST TIMES					;		+ **** - 008	TST	.TLWQ			; QUEUE NOW EMPTY	BNE	12$			; NO CONTINUE	MOV	#.TLWQ,R5		; MAKE QUEUE HEAD R5 COMMON12$:	MOV	R5,.TLWQ+2		; RESET QUEUE HEAD BACK POINTER	BR	14$			;		+ **** BUG 0001					;		- **** - 008;;	ADJUST THE       TIMES;13$:	MOV	R3,-(SP)		; SAVE R3	MOV	R2,-(SP)		; SAVE R2	MOV	R.TWQ(R5),R5		; GET THE NEXT NODE	CLR	R3			; SET TIME TO ADJUST BY IN R3	BISB	R.LWT(R0),R3		;	CLR	R2	BISB	R.LWT(R5),R2		; SET OLD TIME TO BE ADJUSTED	ADD	R2,R3			; ADD IN REMAINING TIME	MOVB	R3,R.LWT(R5)		; AND SAVE IT	MOV	(SP)+,R2		; RESTORE R2	MOV	(SP)+,R3		; RESTORE R314$:					;		- **** BUG 0001	BICB	#RC.LKW,R.FLG(R0)	; CLEAR IN QUEUE FLAG	ADD	#R.LKQ,R0		; POINT TO LOCK WAIT LIST HEAD	MOV	(R0),@2(R0)		; UNLINK	MOV	(R0),R4			; FROM THE	MOV	2(      R0),2(R4)		; WAIT QUEUE	SUB	#R.LKQ,R0		; GET THE CAB BACK15$:	MOV	(SP)+,R4	MOV	(SP)+,R520$:	RETURN	.DSABL	LSB.PAGE.SBTTL	DMLIB -- MAP RAB/FAB;; ** MAPRAB	MAP THE RAB IN THE TST INTO DM ADDRESS SPACE;; ** MAPFAB	MAP THE FAB IN THE TST INTO THE DM ADDRESS SPACE;;; INPUT CONDITIONS:;;	R2	CCB;;	R3	FAB IN TST;	R4	RAB IN TST;; OUTPUT CONDITIONS:;;	UISAR4	MAPS THE RAB/FAB;	R3	CONTAINS THE VIRTUAL ADDRESS (IN DM) OF RAB/FAB;;;	'C' SET IF RAB/FAB COULD NOT BE MAPPED;;MAPRAB:	MOV	R0,-(SP)	; SAVE R0	MOV	R1,-(SP)	; AND       R1	MOV	R4,R0		; SET TO RAB	MOV	#RB$BLN,R1	; SIZE OF RAB	BR	M1		; MAP ITMAPFAB:	MOV	R0,-(SP)	; SAVE R0	MOV	R1,-(SP)	; AND R1	MOV	R3,R0		; SET TO FAB	MOV	#FB$BLN,R1	; SIZE OF FABM1:	MOV	C.TCB(R2),R4		; GET THE TCB	CALL	.VXFRW		; VALIDATE AND MAP	BCS	20$		; MAP ERROR10$:	MOV	(SP)+,R1	MOV	(SP)+,R0	RETURN20$:	MOV	#ER$MAP,.REPBF+4	BR	10$.PAGE.SBTTL	DMLIB -- PROCESS RECORD ACCESS REQUEST;;; INPUT PARAMETERS;;	R0 -- FUNCTION CODE;;	R1 -- CHANNEL NUMBER;	R2 -- CCB;	R3 -- FAB IN TST;	R4 -- RAB IN TST;RECOP:	MOV	RECD      SP-BF.CNT(R0),-(SP)	; SAVE THREAD ADDRESS	MOV	SYNDSP-BF.CNT(R0),-(SP)	; SAVE INTERFACE LEVEL PROCESSING ROUTINE	CALL	FDCAB			; FIND THE CAB	BCS	30$			; ERROR NOT FOUND	CALL	MAPRAB			; MAP THE RAB	BCS	50$			; MAPPING ERROR	$COMPARE	#RB$BID,BID,R3	; IS IT A RAB	BNE	20$			; NO -- RETURN ERROR	MOV	R.FTB(R0),R1		; GET THE FILE TABLE	CALL	CTSAV0			; SEE IF CONTEXT TO BE SAVED	CALL	@(SP)+			; CALL PROCESSING AT THE LEVEL	BCS	60$			; ALL DONE ?	CALL	RECOM			; DO COMMON PROCESSING	BCS	60$			;10$:	MOVB	R.FLG(R0),O$CT      X(R4)		; SAVE PREVIOUS OPERATION FLAGS	$STORE	#0,RHB,R4		; VFC HEADER ZERO	BICB	#RC.GET!RC.FIN!RC.UPD!RC.DEL!RC.PUT,R.FLG(R0)	MOV	(SP)+,.TEMP		; GET THE THREAD ADDRESS	MOV	R4,R5			; SAVE THE RAB	ADD	#RB$BLN-4,R5		; POINT TO CONTEXT BLOCK	BR	STRTHD			; START THE THREAD20$:	MOV	#ER$RAB,.REPBF+4	BR	50$30$:;; FAILED TO FIND CAB;	MOV	#ER$ISI,.REPBF+4		; ISI ERROR;; FAILED TO MAP THE RAB;50$:	TST	(SP)+60$:	TST	(SP)+	JMP	RET.PAGE.SBTTL	DMLIB -- ROUTINE TO START A THREAD;;;	R5 -- CONTEXT BLOCK ADDRESS;	.TEMP THREAD       ADDRESS;;STRTHD:	TSTRT$	R5,.TEMP,#C.XBSZ	; START THE THREAD	MOV	.LKPMP,@#UISAR3		; PUT LOCK POOL BACK	JMP	WAITRC.PAGE.SBTTL	DMLIB -- COMMON CODE FOR END/ABORT/RESTART;; INPUT CONDITIONS:;;	R0 -- FUNCTION CODE;TRNCOM:	MOV	DMTTB+T.RB+B.DAT+6,R1	; SAVE THE RESTART CONTEXT BLOCK	MOV	DMTTB+T.RB+B.DAT+4,R2	; GET THE CCB	CLR	R3			; NO USER RAB	CALL	GETRAB			; GET A RAB FOR PROCESSING	MOV	R4,R5			; GET RAB	ADD	#RB$BLN-4,R5		; MAKE CONTEXT BLOCK ADDRESS	MOV	ENDDSP-BF.END(R0),.TEMP	; GET THREAD ADDRESS	BR	STRTHD			;       START THREAD.PAGE.SBTTL	DMLIB -- COMMON RECORD ACCESS PROCESSING;; INPUT CONDITIONS:;;	R0 -- CAB;;	R2 CCB;	R3 VIRTUAL ADDRESS OF USER RAB;	R4 RAB IN TST;; OUTPUT CONDITIONS:;;	R0 CAB;	R1 FILE TABLE ENTRY;	R2 CCB;	R3 VIRTUAL ADDRESS OF RAB/FAB IN DM SPACE (ASR4 RELATIVE);	R4 RAB;	R5 DESTROYED;; THIS ROUTINE EXECUTES IN THE CONTEXT OF THE INTERFACE THREAD;RECOM:	CALL	GETRAB		; GET A RAB/CONTEXT BLOCK;; PUT CORRECT INFO IN RAB;	$STORE	R.ISN(R0),ISI,R4	; ISI	$STORE	#I.PRMS+Y$GETS+2,FAB,R4		; FAB	$OFF	#RB$ASY!R      B$LOC,ROP,R4	CALL	KEYVAL			; DO ANY KEY BUFFER WORK	BCS	35$			; FAILED TO MAP	RETURN;; FAILED TO MAP KEY BUFFER;35$:	MOV	#ER$KBF,.REPBF+4	MOV	#DMPOOL,R3		; RETURN THE CONTEXT	MOV	.DMCXT,R1		; BLOCK	CALL	..DLC1;	SEC	RETURN.PAGE.SBTTL	DMLIB -- MAP USER BUFFER	.ENABL	LSB;;;; ** MAPBF1	BUFFER IN UBF FIELD OF RAB;; ** MAPBF2	BUFFER IN RBF FIELD OF RAB;;INPUT CONDITIONS:;;	R2	CCB;	R4	RAB IN DM;; OUTPUT CONDITIONS:;	R5 -- VIRTUAL ADDRESS (ASR2) OF THE BUFFER;	ASR2 MAPS THE BUFFER;	'C' SET IF ERROR DECTECT, CODE IN       STS OF RAB;MAPBF1:	$FETCH	.TEMP,UBF,R4		; GET BUFFER ADDRESS FROM UBF	$FETCH	.TEMP+2,USZ,R4		; AND SIZE FROM USZ	BR	10$MAPBF2:	$FETCH	.TEMP,RBF,R4		; GET BUFFER FROM RBF	$FETCH	.TEMP+2,RSZ,R4		; AND SIZE IN RSZ10$:	CMP	.TEMP+2,#8192.-63.	; VALIDATE BUFFER	BHI	40$			; SIZE	MOV	R0,-(SP)		; SAVE	MOV	R1,-(SP)		; VOLATILE	MOV	R3,-(SP)		;	MOV	@#UISAR4,-(SP)	MOV	R4,-(SP)		; REGISTERS	MOV	.TEMP,R0		; GET BUFFER ADDRESS IN TST	MOV	.TEMP+2,R1		; AND SIZE	MOV	C.TCB(R2),R4		; GET THE TST'S TCB	CALL	.VXFRW			; MAP IT R      EAD WRITE	BCS	30$			; ERROR	BIC	#160000,R3		; CLEAR THE ASR BITS IN THE ADDRESS	MOV	@#UISAR4,@#UISAR2 	; MAP THE BUFFER AT ASR2	MOV	#77406,@#UISDR2	BIS	#40000,R3		; SET TO MAP AT ASR2	MOV	R3,R5	CLC	MOV	(SP)+,R4		; RESTORE R420$:	MOV	(SP)+,@#UISAR4	$STORE	@#UISAR2,CTX,R4			; SAVE BUFFER MAPPING	MOV	(SP)+,R3	MOV	(SP)+,R1	MOV	(SP)+,R0	RETURN30$:	MOV	(SP)+,R4		; RESTORE R4	$STORE	#ER$MAP,STS,R4		; SET MAPPING ERROR	SEC	BR	20$40$:	$STORE	#ER$RTB,STS,R4		; SET ERROR CODE	SEC	RETURN	.DSABL	LSB.PAGE.SBTTL	DMLIB --       DO RMS REQUEST;; INPUT PARAMETERS;;	R1	FILE TABLE ENTRY;	R4	RAB/FAB IN DMPOOL;	SP+02	RMS DISPATCH TABLE ENTRY ADDRESS;;;	.ENABL	LSBREQ0:;; ENTRY POINT FOR ALL WRITE OPERATIONS (PUT,UPDATE,DELETE);					;		+ **** 011	MOV	ACOMBA,@#UISAR0		; INSURE COMMON MAPPED					;		- **** 011	BIT	#SY.RDO,.SYFLG		; READ ONLY DATA BASE	BEQ	REQ1			; NO	$STORE	#SU$SUC,STS,R4		; GOOD	BR	20$REQ1:	MOV	@#UISAR4,-(SP)		; SAVE ASR4	CALL	FDIMP			; GET IMPURE AREA POINTER	BCS	15$			; NO IMPURE AREA?	MOV	#77406,@#UISDR0	MOV	R4,-(SP)		;       PUT RAB ON TASK	MOV	#1,-(SP)		; SET NUMBER OF PARAMETERS	MOV	SP,R5			; POINTER TO RMS PARAMETERS10$:	JMP	.DORMS			; JUMP TO DO RMS REQUEST IN THE ROOT.RMSRT::				; RETURN FROM ROOT	$COMPARE #ER$RLK,STS,R4		; CHECK FOR BUCKET LOCK ERROR	BEQ	 30$			; YES; DO DELAY AND TRY AGAIN	$COMPARE #ER$ACT,STS,R4		; CHECK FOR FILE ACTIVE ERROR	BEQ	 30$			; YES; DO DELAY AND TRY AGAIN	CMP	(SP)+,(SP)+		; VALID RMS RETURN; POP THE PARAMATERS15$:	MOV	ACOMBA,@#UISAR0		; MAP THE COMMON AT ASR0	MOV	(SP)+,@#UISAR4		; REMAP THE R      AB/FAB AT ASR4					; 		+ **** - 01120$:					; REMOVE RMS ENTRY PT IN CASE OF READ DB					;		- **** - 011	MOV	(SP)+,(SP)		; REMOVE THE DIPATCH ENTRY	MOV	.LIBAR,@#UISAR2		; REMAP THE LIBRARY AT ASR2	MOV	.LKPMP,@#UISAR3		; REMAP THE CAB/LOOK POOL AT ASR3	RETURN30$:	MOV	R0,-(SP)		; SAVE CAB POINTER			;* RT001	CALL	DMDLY			; DO A THREAD DELAY			;* RT001	MOV	(SP)+,R0		; RESTORE CAB POINTER			;* RT001	CALL	RFACHK								;* RT001	BR	10$			; RETRY THE RMS REQUEST			;* RT001	.DSABL	LSB.PAGE;;;	RFACHK - CHECK FOR ZERO      ED RFA AND RESTORE;;;RFACHK:										;* RT001	$TESTBITS #RB$RFA,RAC,R4	; RFA ACCESS				;* RT001	BEQ	  15$			; IF EQ THEN NO AND RETURN		;* RT001	MOV	R5,-(SP)		; SAVE R5				;* RT001	MOV	O$RFA(R4),R5		; CHECK FOR ZERO RFA			;* RT001	ADD	O$RFA+2(R4),R5		; 					;* RT001	ADD	O$RFA+4(R4),R5		;					;* RT001	BNE	10$			; NO SO EXIT				;* RT001	MOV	@#UISAR3,-(SP)		; SAVE UISAR3				;* RT001	MOV	.LKPMP,@#UISAR3		; MAP THE CAB REGION			;* RT001	MOV	R.RFA(R0),O$RFA(R4)	; RESTORE RFA FROM CAB			;* RT001	MOV	R.RFA+2(R0),O      $RFA+2(R4) ;					;* RT001	MOV	R.RFA+4(R0),O$RFA+4(R4) ;					;* RT001	MOV	(SP)+,@#UISAR3		; RESTORE UISAR3 MAPPING		;* RT00110$:										;* RT001	MOV	(SP)+,R5		; RESTORE R5				;* RT00115$:										;* RT001	RETURN				; AND RETURN				;* RT001.PAGE;; PROCESS A LOCK TIMER QUEUE EXPIRED ENTRY;.LKQPR:;; LOCK NOT FREED SO SEND ERROR TO TST;	IF EXCHANGE CANNOT BE RESTARTED.;	MOV	R.CCB(R0),R2		; GET THE CCB	MOV	R1,-(SP)		; SAVE R1	BICB	#RC.GET,R.FLG(R0)	; CLEAR GOOD GET	MOV	#ER$RLK,.REPBF+4	; SET ERROR CODE5$:	MOV	      C.TCB(R2),R5		; GET THE TCB FOR THE TST	BEQ	35$			; GONE	SWITCH$	10$			; GET	MOV	T.NAM+0(R5),DMTTB+T.RB+0; THE TST NAME	MOV	T.NAM+2(R5),DMTTB+T.RB+2; FROM THE 'M' TCB	RETURN10$:	MOV	#DMTTB+T.RB,R4		; POINT TO TST NAME	CALL	SENDTS			; SEND TO TST35$:;; REMOVE CAB FROM THE LOCK QUEUE;	BICB	#RC.LKW,R.FLG(R0)	;	MOV	R.TWQ(R0),.TLWQ		; REMOVE FROM TIMER QUEUE	BNE	37$			; NOT THE LAST	MOV	#.TLWQ,.TLWQ+2		; RESET END37$:	ADD	#R.LKQ,R0		; NOW UNLINK	MOV	@R0,@2(R0)		; SET NEXT IN PREVIOUS NODE	MOV	(R0),R1			; GET NEX      T NODE	MOV	2(R0),2(R1)		; MOVE PREVIOUS	MOV	(SP)+,R1	RETURN.PAGE.SBTTL	DMLIB -- RM/RMS BUFFER INTERFACE ROUTINES;;; THESE ROUTINES ARE CALLED TO ALLOCATE BUFFERS REQUIRED BY A RMS; STREAM BEFORE ANY RMS CALLS ARE MADE FOR A USER REQUEST AND TO RELEASE; ALL BUFFERS HELD BY A STREAM AFTER ALL RMS PROCESSING IS COMPLETE FOR; THE USER REQUEST.;;; INPUT PARAMETERS:;	R5 -- RMS CALL STRUCTURE;;; INTERFACE TO DUMMY RMS THREADS;; ** BUFGET -- GET BUFFERS FOR STREAM;BUFGET:	$STORE	#0,STS,R4		; CLEAR RETURN STATUS	MOV      	#$TPALC,-(SP)		; RMS ENTRY POINT	CALL	REQ1			; GET BUFFERS LIKE AN RMS REQUEST	$COMPARE	#ER$DME,STS,R4	; NO BUFFERS	BEQ	10$			; CORRECT	RETURN				; RETRUN WITH BUFFERS10$:	TST	(SP)+			; REMOVE RETURN ADDRESS	JMP	TEND2			;;;; ** BUFREE -- RELEASE BUFFERS;BUFREE:	MOV	#$TPDIS,-(SP)	CALL	REQ1	RETURN;;;;; ** TPDIS	RELEASE ALL BUFFERS FOR A STREAM;;DISTAB:	.WORD	RLBSEQ	.WORD	RLBREL	.WORD	RLBIDX	.WORD	0$TPDIS:	CALL	$SAVRM				; SAVE ALL REGISTERS	JMP	.RSET1.R1RT::	MOV	#DISTAB,R2			; AND	CALLR	@Y$TSTA(R3)			; START       RMS THREADRLBIDX:	CALL	LKBDBR				; RELEASE A LOCK BDBRLBREL:	CALL	LKBDBR				; RELEASE A LOCK BDBD	MOV	R$IFAB(R4),R2			; GET IFAB	MOVB	F$BKSZ(R2),R2			; NUMBER OF BLOCKS IN BUCKET	SWAB	R2				; MAKE NUMBER OF WORDS (*256.)	ASL	R2				; THEN BYTES	BR	RCOMRLBSEQ:	MOV	R$IFAB(R4),R2			; GET IFAB	MOV	F$BLSZ(R2),R2			; GET BLOCK SIZERCOM:	TSTB	R$BCNT(R4)			; ANY BUFFERS ALLOCATED?	BEQ	RAEXIT				; NO SO EXIT	MOV	R2,-(SP)			; SAVE BUFFER SIZERLOOP:	CLR	R0				; MAKE VBN 0	CLR	R1				; CALL	MOV	(SP),R2				; GET SIZE	CLR      	R3				; CACHE WILL MAKE NO READ	CALL	$CACH				; CALL CACHE	BCS	ROUT				; ERROR	MOV	X$BDB(R0),R1			; GET BDB	MOV	#RL$RTN,R2			; SET BUFFER RETURN FLAG	CALL	$RLCH				; CALL CACHE RETRUN	DECB	R$BCNT(R4)			; REDUCE ALLOCATED BUFFERS	BNE	RLOOP				; PROCESS NEXT ONEROUT:	TST	(SP)+				; REMOVE SIZERAEXIT:	BICB	#BK$BUS,C$BKP1(R4)		; CLEAR BUSY FLAG	RETURN;;;; ** $TPALC	ALLOCATE BUFFERS TO STREAM.;		'C' SET IF BUFFERS NOT ALLOCATED;;ALCTAB:	.WORD	ALCSEQ	.WORD	ALCREL	.WORD	ALCIDX	.WORD	0$TPALC:	CALL	$SAVRM				; SAVE       ALL	JMP	.RSET2.R2RT::	MOV	#ALCTAB,R2			;	CALLR	@Y$TSTA(R3)			; START RMS THREADALCIDX:	CALL	$ALBDB			; ALLOCATE A LOCK BDB	BCS	ALCF1			; NO BDBBS	CALL	$ALBDB			; ALLOCATE SECOND LOCK BDB	BCC	5$			; O.K	CALL	LKBDBR			; RELEASE FIRDT BDB	BR	ALCF1			; FAILURE5$:					;		+ **** 184597	MOV	#2,-(SP)		; NUMBER OF BDBS ALOCATED					;		- **** 184597	MOV	#2,-(SP)		; MINIMUM NUBER REQUIRED	CMPB	(SP),O$MBF(R5)		; COMPARE TO MAX BUFFER COUNT	BLOS	10$			; O.K IF SAME OR LESS	MOVB	(SP),O$MBF(R5)		; SET MBF TO MIN.10$:	BR	      ALCIRCALCREL:	CALL	$ALBDB			; ALLOCATE LOCK BDB	BCS	ALCF1			; FAILURE					;		+ **** 184597	MOV	#1,-(SP)		; COUNT GOT 1					;		- **** 184597	MOV	#1,-(SP)		; MIN IS 1 FOR RELATIVEALCIRC:	MOV	R$IFAB(R4),R0		; GET IFAB	MOVB	F$BKSZ(R0),R0		; NUMBER OF BLOCKS IN BUCKET	SWAB	R0			; MAKE WORDS (*256.)	ASL	R0			; NOW BYTES	BR	ALCOMALCSEQ:	CLR	-(SP)			; COUNT GOT 1					;		+ **** 184597	MOV	#1,-(SP)		; MIN IS 1 FOR SEQUENTIAL					;		- **** 184597	MOV	R$IFAB(R4),R0		; GET IFAB	MOV	F$BLSZ(R0),R0		; GET BLOCK SIZEALCOM:	      MOV	R0,-(SP)		; SAVE THE SIZE	MOVB	O$MBF(R5),R0		; GET MAX BUFFERS	BNE	10$			;	INC	R0			; MAKE ONE10$:	MOV	R0,-(SP)		; AND SAVE	CALL	$ALBST			; ALLOCATE BUFFERS	TST	(SP)+			; REMOVE COUNT	CMPB	R$BCNT(R4),2(SP)	; CHECK NUMBER ALLOCATED	BLO	ALCFIL			; NOT ENOUGH	ADD	#6,SP			; CLEAN STACK AND CLEAR C	BR	RAEXIT;; FAILURE TO ALLOCATE ENOUGH BUFFERS;ALCFIL:					;		+ **** 184597	TST	4(SP)			; ANY BDBS ALLOCATED	BEQ	10$			; NO EXIT5$:	CALL	LKBDBR			; RELEASE THE BDB	DEC	4(SP)			; NEXT ONE	BNE	5$			;10$:					;		- **      ** 184597	MOV	(SP),R2			; GET BUFFER SIZE	ADD	#6,SP			; CLEAN STACK	CALL	RCOM			; DEALLOCATE BUFFERSALCF1:	$STORE	#ER$DME,STS,R5		; SET ALLOCATION ERROR	BR	RAEXIT.PAGE;;;; RELEASE A LOCK BDB;;LKBDBR:	MOV	R2,-(SP)		; SAVE R2	CLR	R0			; MAKE VBN	CLR	R1			; 0	MOV	#CH$NBF,R3		; INDICATE NO BUFFER	CLR	R2	CALL	$CACH			; RELEASE IN CACHE					;		+ **** 207788	BCS	10$			; NO BUFFER RELASED					;		- **** 207788	MOV	#RL$RTN,R2		; SET RETURN FLAG	MOV	X$BDB(R0),R1		; GET BDB	CALL	$RLCH			; RETURN BDB10$:	MOV	(SP)+,R2	RE      TURN.PAGE.SBTTL	DMLIB -- LOCK WAIT TIMER AST ROUTINE;;; 	THIS ROUTINE IS ACTIVATED EVERY SECOND WHILE ENTRIES ARE IN THE; 	LOCK WAIT QUEUE.; 	IT EXECUTES AT MAIN LINE LEVEL.;;;.LQR::	INH$S				; SYNCHRONISE WITH THE EXEC	MOV	R0,(SP)	MOV	.TLWQ,R0		; GET THE FIRST ENTRY	BEQ	40$			; ALL GONE	DECB	R.LWT(R0)		; REDUCE THE WAIT TIME5$:	BEQ	30$			; ALL DONE SO PROCESS10$:	DIR$	#$MARKD			; CLOCK AGAIN20$:	JMP	$ENABL			; RETURN VIA THREADS					; CHECK FOR SENDS ETC30$:	CALL	.LKQPR			; PROCESS THE LOCK ENTRY	MOV	.TLWQ   š   ,R0		; GET NEXT ENTRY	BEQ	40$			; NO MORE ENTRIES	TSTB	R.LWT(R0)		; ZERO TIME THE PROCESS	BR	5$40$:	CLR	.TLWQ+4			; SET TIMER NOT ACTIVE FLAG	BR	20$	.END š          \!C	kQÁ› 8$        .TITLE	EXECMN.IDENT	"1.1C10";+;;;;;;                         COPYRIGHT (C) 1978 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; TRANSFE      RRED.;;; 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.;;;;	MODULE:		EXECUTION MANAGER;;	VERSION:	V001A;;	AUTHOR:		MIKE GARRY;;	DATE:		1977;;; EDITS:;;	CP01: 1/22/79;	SNDMSG:	1) NEW ENTRY POINT TO ..GMBF (..GMB2) AND CCB IS PARAMETER.;		2) CLEAN STACK ON .VXFRR ERROR RET      URN;	OPETRN:	1) SAVE CCB ON STACK -RETURN TXN CORRECT TXN ID;		2) NEW ENTRY POINT TO ..GMBF (..GMB2);		3) DO NOT FIND CCB FROM SCB LIST;		4) NEW ENTRY POINT TO ..TCLS (..TCL2);;	CP02:	3/1/79;	GET MAXIMUM # OF TSTs FROM TPSCOM .MXTST. DO NOT LOG IF LOGGING IS;	NOT ENABLED.;;	CP03: 3/6/79 CHECK NUMBER OF CUSHIONS LEFT IN POOL BEFORE LOADING TSTs.;	CP04: 4/26/79: PROPERLY ACCESS 'CALL LOGTRN' BUFFER;	CP05: 5/11/79: SET 'REPLY NOT REQUIRED' FLAG FOR SPAWNED TXNS.;	CP06: 5/16/79: DELETE 5/11 EDITS. TEMPORARILY S      ET AT.EXA FLAG WHILE;		CALLING ..TCLS ROUTINE FOR SPAWNED TRANSACTION.;	CP07: 5/17/79: CONDITIONAL CODE TO TRAP SERVICE ROUTINE ERROR RETURN.;	CP08: 5/21/79: ..TSPN: SET C2.SPN FOR SPAWNED TXNS.;	CP09: 5/31/79: RUNTST,ABTST,NODER: SAVE SEND BUFFER BEFORE $DELAY;	CP10: 6/8/79:  CLOSE POOL CUSHION, ACTTST, + S.CML CHECKING WINDOWS;			CLEAR THROTTLE BIT ON SERVICE THREAD TERMINATION..PAGE	.MCALL	TSUSP$,TSTRT$,TRESM$,TTRMN$,DIR$,RQST$,GENCB,GENTTB	.MCALL	ASRDF$,MAP,RDBBK$,WDBBK$,ATRG$,CRAW$,RCVD$,SDAT$	.MCALL	D      TRG$,SRDA$S,WTLO$,RDAF$,ATRG$S,CRAW$S,$DELAY	.MCALL	SFPA$S,SPND$S,PCBDF$,TCBDF$,SDAT$S,PUSH,POP,EXIT$S	.MCALL	WTSE$S,CLEF$S,SETF$S,HDRDF$	.MCALL	INH$S,ENB$S,EXST$S,PKTDF$	ASRDF$	PCBDF$	TCBDF$	PKTDF$	HDRDF$	.ENABL LC	.MACRO	SWITCH$	X	EMT	376	.WORD	X	.ENDM;+;;	EXECUTION MANAGER;;	THIS ROUTINE IS ONE COMPONENT OF THE T.P. MONITOR;	AND IS RESPONSIBLE FOR THE RUNNING AND SUPPORT OF THE TST'S;	IN THE SYSTEM.;;	THE DESIGN IS MULTI-THREADED WITH THREADS ALLOCATED AS FOLLOWS:;	;	INITIATOR - STARTED BY THE MAIN-LINE       CODE,STARTS ALL OTHER ;		THREADS.IT IS TRIGGERED BY ANOTHER MANAGER.;;	LOADER-RUNNER - ONE PER REQUESTED TST.THESE THREADS;		ARE ACTIVE FOR THE DURATION OF A TST - THE CONTEXT;		BLOCK FOR THE THREAD EFFECIVELY PROVIDING A RUN TIME;		CONTROL BLOCK FOR THE TST.;;;	REGISTER USUAGE:;		R0 AND R1	UTILITY REGISTERS	;		R2		SCB ADDRESS (VIRTUAL);		R3		MESSAGE ADDRESS (REAL);		R4		TST LOAD ADDRESS (REAL);		R5		TCB ADDRESS;;;;	APR USAGE:;		APR0 AND APR1	APPLICATION COMMON;		APR2		TPMLIB;		APR5		EM TASK IMAGE;		APR6		E      M C.B. REGION;;-.PAGE.SBTTL	DATA STRUCTURES;DEBUG1 = 0		; IF DEFINED CONDITIONAL DEBUG CODE WILL BE ASSEMBLED;									;***CP07CBOFF=6			;CONTEXT BLOCK ADDRESS OFFSET;HD.TST = 222		;SIZE OF A TST HEADERMX.TST = 8.		; MAX # OF CONCURRENT TSTs IN CACHE		?;;	RECEIVE BUFFER DATA OFFSETS;B.VAR=12		;VARIABLE DATA SECTION OF RECEIVEB.NAM=12		;POINTER TO USER SUPPLIED NAMEB.CCB=10		;CCB ADDRESSB.HD= 12		;HEADER ADDRESSB.VA=14			;VIRTUAL ADDRESS OF USER BUFFERB.VSZ=16		;SIZE OF USER BUFFERB.RT=20			;ADDRESS OF ROUTE       TABLE;;	ERROR RETURN CODES;ER.BER=-10		;GET BUFFER ERRORER.RTE=-11		;ROUTE TABLE ERRORER.VAL=-12		;SEND BUFFER VALIDATION ERRORER.VXF=-13		;BUFFER VALIDATION ERROR;FRSTFN=30		;FIRST FUNCTION CODE FOR EXECUTION MANAGER;;LIBREG:	RDBBK$	,TPMLIB,,<RS.RED!RS.WRT>	; ATTACH TO TPMLIBLIBWND:	WDBBK$	2,,,0,,<WS.MAP!WS.RED!WS.WRT>	; MAP APR2 ONTO TPMLIBEXCXTR:	RDBBK$	,ECX001,,<RS.RED!RS.WRT>	; CONTEXT BLOCK REGIONEXCXTW:	WDBBK$	6,,,0,,<WS.MAP!WS.RED!WS.WRT>	; MAP APR6 ONTO CONTEXT BLOCK REGION;REGCB:	RDBBK$	,,,<RS.WR      T!RS.RED>	;SYSTEM COMMON REGIONWNDCB:	WDBBK$	0,,,0,,<WS.MAP!WS.RED!WS.WRT> ;SYSTEM COMMON WINDOWATTACH:	ATRG$	REGCBCREATE:	CRAW$	WNDCBRECDAT:	RCVD$	,EXTTB+T.RBSNDDAT:	SDAT$	,EXTTB+T.RB+4WAIT:	WTLO$	3READEF:	RDAF$	FLGBUFFLGBUF:	.BLKW	4DETRG:	DTRG$	REGCBINSDAT:	.WORD	RECDAT	.WORD	ATTACH	.WORD	CREATE	.WORD	SNDDAT	.WORD	EXTTB+T.RB;EXTTB:	GENTTB;	GENCB	INTCBA,64.		; SYSTEM C.B.TSTPRI:	.WORD	0		;PRIORITY TO EXECUTE TST'S;ACTTST:	.WORD	0		;NUMBER OF ACTIVE TST'S;EXQUE:	.WORD	0,EXQUE		;LISTHEAD TO QUEUE TST'S WAITI      NG FOR MEMORY;TSTSPC:	.WORD	0		;CURRENT TST SPACE ALLOCATED. INITIZED TO 0				; BY EM IN TP STARTUP;TSTPLM:	.WORD	0		;TST SPACE LIMIT. INITIALIZED BY EM IN TP STARTUP				; TO 5/8 OF TOTAL CACHE SIZE IN 32WBLKS.PAGE.SBTTL	START OF EXECUTION MANAGER;;+;; S T A R T;; ROUTINE TO INSTALL, START, STOP, AND REMOVE EM.;; INPUT:;	INSDAT	..INSM PARAMETER BLOCK;		WD.0 -> RECEIVE DPB FOR MSG FROM TP INSTALL;		WD.1 -> ATTACH DPB TO APPLICATION COMMON;		WD.2 -> CREATE WINDOW DPB FOR APP COMMON;		WD.3 -> SEND DATA DPB FOR       MSG TO TP INSTALL;		WD.4 -> SEND BFR FOR MSG TO TP INSTALL;-START:;; ATTACH AND MAP APR2 ONTO TPMLIB. $TTBAD -> TTB. CALL LIBRARY RTE TO; PERFORM INSTALL.;	ATRG$S	#LIBREG,DIRERR	;ATTACH TPMLIB	MOV	LIBREG+R.GID,LIBWND+W.NRID ;SET UP TO MAP	MOV	LIBREG+R.GSIZ,LIBWND+W.NSIZ ;WINDOW ONTO TPMLIB	CRAW$S	#LIBWND,DIRERR	; MAP APR2 ONTO TPMLIB;	MOV	#EXTTB,$TTBAD	;SET UP THREAD TABLE BLOCK ADDRESS IN THE $DSW				; WORD IN TASK IMAGE'S HDR (NOT HDR IN POOL);	MOV	#INSDAT,R0	;CALL LIBRARY ROUTINE TO INITIALIZE	CALL	..IN      SM		;THE REMAINING FUNCTIONS OF THE MANAGER;							? CURRENT STATE ?; SWITCH TO KERNEL MODE TO GET EM'S PRIORITY.; TST'S PRIORITY (TSTPRI) := EM'S PRIORITY -1.;	SWITCH$	5$		;SWITCH TO SYSTEM STATE	MOV	$TKTCB,R1	;GET PRIORITY OF EXECITION MANAGER				; R1 -> TCB OF CURRENT TASK, EXEC MGR	BISB	T.PRI(R1),TSTPRI ;SET PRIORITY OF TST'S TO BE 1 LESS	DECB	TSTPRI		;THAN E.M.'S PRIORITY	RETURN			;TO USER MODE;5$:; ATTACH AND MAP APR6 ONTO EM CONTEXT BLOCK REGION.;	MOV	.EXMAN+2,EXCXTR+R.GNAM+2	; RDB := 2ND RAD50 WORD       OF						;  C.B. REG NAME (TPID)	ATRG$S	#EXCXTR,DIRERR			; ATTACH TO C.B. REGION	MOV	EXCXTR+R.GID,EXCXTW+W.NRID	; GET THE REGION ID	MOV	EXCXTR+R.GSIZ,EXCXTW+W.NSIZ	; GET THE SIZE	CRAW$S	#EXCXTW,DIRERR			; MAP APR6 ONTO C.B. REGION;; SUSPEND UNTIL MESSAGE IS SENT FROM INSTALL.; if MSG INDICATES 'START' then GOTO START RTE else ASSUME 'REMOVE AND EXIT.;10$:	SPND$S			;SUSPEND AND WAIT FOR A MESSAGE FROM INSTALL	DIR$	#RECDAT,DIRERR	;RECEIVE THE MESSAGE	CMP	#BF.STR,EXTTB+T.RB+4+B.FUN ;IS THIS 'START'	BEQ	20$			;       YES	EXIT$S			; IF NOT START, ASSUME 'REMOVE'. EXIT					; ? CHECK FOR REM CODE ????????.PAGE20$:;;	THIS MUST THEREFORE BE A 'START' MESSAGE - SO START THE;	MANAGER.;; INPUT STATE:;	APR0_1	-> APP COMMON;	APR2	-> TPMLIB;	APR6	-> C.B REGION;	$TTBAD	-> TTB;	SST VECTOR AND $..CTP (TPCRASH ROUTINE) SETUP;	TSTPRI	= EM'S PRIORITY - 1;	MOV	$BASE,EXTTB+T.DFP	; DEFAULT POOL ADR IN TTB -> CACHE (KT11);; FIRST SEARCH THE SCB TABLE AND INSERT THE 'INITIATOR'; CONTEXT BLOCK ADDRESS INTO THE SCB'S THAT ARE ASSOCIATED; WITH       TST'S. SET UP EM'S C.B. PTR IN APP COMMON.;	INH$S	MOV	#CBINST,R2	;R2 -> RTE TO INSERT SYSTEM C.B. ADR IN SCB(S.TID)	CALL	SCBSCH		;SEARCH THE SCB'S PUT SYS C.B. ADR IN SCB(S.TID);	MOV	#INTCBA,.EXCXB	;.EXCXB WORD IN APP COM -> SYSTEM C.B.;; ALLOCATE 2 LOGGING BUFFERS FROM CACHE:;	if LOGGING WAS SPECIFIED FOR THIS TP IN TPCTRL START;	then ALLOCATE 1ST 4KW BUFFER FROM CACHE;	     if ALLOCATION FAILED;	     then DISABLE LOGGING;	     else REMOVE BDB FROM LRU LIST;		  ALLOCATE 2ND 4KW BFR FROM CACHE;		  if 2ND AL      LOCATION FAILED;		  then DISABLE LOGGING; RETURN 1ST BFR TO CACHE;		  else REMOVE 2ND BDB FROM LRU LIST;;			LOGGING BFR PTRs IN APP COMMON -> 0;;			CURRENT LOGGING BFR -> 1ST LOGGING BFR;	BIT	#SY.LOG,.SYFLG	;ARE WE LOGGING FOR THIS APPLICATION?	BEQ	60$		;NO - THEN CONTINUE	MOV	#200,R1		;SET UP TO ALLOCATE 4KW BUFFERS	CALL	$GSRB		;TRY TO ALLOCATE A BUFFER FROM CACHE	BCS	65$		;IF ALLOCATION FAILED GOTO DISABLE LOGGING	MOV	R1,$LOG1+2	;OTHERWISE SET IN LOG CONTROL DESCRIPTOR IN APP COMM	CALL	LRUDEL		;DELETE BDB       FROM LRU LIST	MOV	#200,R1		;TRY FOR SECOND BUFFER	CALL	$GSRB		BCC	67$		;CONTINUE IF BUFFER ALLOCATED	MOV	$LOG1+2,R1	;OTHERWISE DELETE FIRST BUFFER	CALL	$DLAR		;DELETE AND RETURN BDB TO FREE LIST65$:	BIC	#SY.LOG,.SYFLG	;AND DISABLE LOGGING	BR	60$		;CONTINUE;67$:	MOV	R1,$LOG2+2	;SET BDB ADDRESS IN DESCRIPTOR	CALL	LRUDEL		;DELETE FROM LRU LIST;	CLR	$LOG1+4		;SET BUFFER POINTER TO ZERO	CLR	$LOG2+4	MOV	#$LOG1,$CURLG	;POINT AT FIRST LOGGING BUFFER;; SET UP EM'S CACHE SIZE WORDS:;	TSTPLM := 5/8 TOTAL CACHE SIZE (      32WBLKS). MAX SPACE FOR TST USAGE.;	TSTSPC := 0. (32WBLKS)			  CURRENT SPACE USED BY TSTs.;60$:	MOV	$SIZE,R0	;R0 := CACHE SIZE IN 32WBLKS	ASR	R0		;R0 := 1/2 CACHE SIZE	MOV	R0,R1		;R1 := 1/2 CACHE SIZE	ASR	R0		;R0 := 1/4 CACHE SIZE	ASR	R0		;R0 := 1/8 CACHE SIZE	ADD	R0,R1		;R1 := 5/8 CACHE SIZE IN 32WBLKS (62.5%)	MOV	R1,TSTPLM	;TSTPLM := 5/8 CACHE SIZE	CLR	TSTSPC		;RESET ACTUAL SIZE COUNT	ENB$S			;ENABLE CONTEXT SWITCHING;; DECLARE AST HANDLER IN TPMLIB (THREAD); START SYSTEM THREAD.; START THE TIMER.; SUSPEN      D THE SYSTEM THREAD.; WAIT UNTIL 'INITOR' THREAD DETECTS SHUTDOWN AND COMPLETES SHUTDOWN PROCESS.;100$:	SRDA$S	#$RVAST,DIRERR	;DECLARE A RECEIVE AST;	MOV	#INTCBA,R0	;AND START THE 'INITIATOR' THREAD	TSTRT$	R0,#INITOR,#EX.CTZ		CALL	.STIM		;START THE TIMER	CALL	..MSUP			; WAIT THE MAINLINE;; TP STOP ROUTINE (MOST OF EM SHUTDOWN ALREADY DONE BY 'INITOR' THREAD):;	REMOVE RECEIVE ASTs. CLEAR SYSTEM THREAD. DECREMENT APP COM SHUTDOWN COUNT.;	SRDA$S				; REMOVE RECIEVE AST	CLR	.EXCXB			; CLEAR SYSTEM THREAD	DECB	.      SHTCT			; DECREAMENT THE SHUTDOWN COUNT	BR	10$			; WAIT FOR START OR REMOVE.PAGE.SBTTL SCBSCH - CALL SPECIFIED ROUTINE FOR EACH SCB PROCESSED BY EM;; S C B S C H;; SEARCH THE SCB TABLE FOR SCB'S THAT ARE PROCESSED BY EXECUTION MANAGER,; i.e. SCB(S.TSK) = EM TASK NAME. A SPECIFIED ROUTINE (CBINST OR TRABT); IS CALLED AFTER EACH EM PROCESSED SCB IS FOUND.;;; INPUT:;	R2	ADDRESS OF ROUTINE TO CALL WHEN SCB FOUND (CBINST OR TRABIT);; CALLED BY:;	TPSTARTUP ROUTINE TO STUFF SYSTEM C.B. ADR INTO SCB(S.TID): CBINST;      	TPSTOP ROUTINE TO ABORT ALL ACTIVE TXNS: TRABT;SCBSCH:	MOV	#.EXMAN,R1	;POINT AT MY TASK NAME	MOV	.SCBTZ,R4	;CACULATE THE NUMBER OF ENTRIES	ASR	R4		;IN THE SCB TABLE - SIZE IN BYTES IS	INC	R4		;'2N-2' WHERE N IS THE NUMBER OF ENTRIES	MOV	.SCBTA,R3	;POINT AT BASE OF SCB TABLE;20$:	MOV	(R3)+,UISAR3	;POINT AT SCB WITH R2	BEQ	100$		;LEAVE - IF NO MORE ENTRIES	CMP	S.TSK+60000,(R1) ;IS THIS MY SCB?	BNE	50$		;NO - TRY NEXT ENTRY	CMP	S.TSK+2+60000,2(R1) ;MATCH ON SECOND PART OF THE NAME	BNE	50$		;NO - TRY NEXT ENTR      Y	CLR	S.LINK+60000	;RESET LINK COUNT	CALL	(R2)		;CALL FUNCTION ROUTINE50$:	SOB	R4,20$		;TRY AGAIN;100$:	RETURN;*******************************************************************************;; C B I N S T;; INPUT:;	APR3 -> SCB THAT IS PROCESSED BY EM;; OUTPUT:;	SCB(S.TID) -> C.B FOR EM'S INITOR THREAD;CBINST:	MOV	#INTCBA,60000+S.TID ;SET UP SYSTEM CONTEXT BLOCK ADDRESS	RETURN;*******************************************************************************;; DIRECTIVE ERROR: HALT WHICH WILL SST TRAP TO TP CRA      SH ROUTINE IN TTB.;DIRERR:	MOV	$DSW,R0	HALT.PAGE.SBTTL	INITIATOR - START ALL TST THREADS ;;	THIS ROUTINE IS THE BASIC INITIATOR LOOP. THIS ROUTINE ALSO DETECTS;	THE TP STOP PROCESS AND PERFORMS MOST OF THE EM SHUTDOWN.;;	THE ROUTINE IS TRIGGERED BY A 'SEND' FROM ANOTHER;	MANAGER TO START A TST OR FROM TPSTOP TO INITIATE SHUTDOWN;; INPUT:;	EXTTB+T.RB = RECEIVE BUFFER (AFTER TSUSP$) FROM A MGR, TPMOD, OR TPSTOP;		B.FUN = FUNCTION CODE;			BF.IST => INITIATE STOP PROCESS (NOP). FROM STOP.;			BF.SAB => ABORT ALL       ACTIVE TXNS. FROM STOP.;			BF.SHT => SHUTDOWN IS COMPLETE. FROM STOP.;			BF.MES => ACTIVATE A TST. FROM ANOTHER MGR.;			BF.ABO => ABORT TXN.;			BF.TBO => TPMOD TXN ABORT.;			OTHERS => NOP.			????????SWERRLOG????;		B.CXT -> ?WHOSE C.B ?????;		B.DAT -> TST SCB (KT11) (if B.FUN=BF.MES);		      -> CCB ADR 	(if B.FUN=BF.TBO or BF.ABO);		B.DAT+2 =  TXN ID (2WD) (if B.FUN=BF.TBO);			-> SENDING MGR'S C.B. (if B.FUN = BF.ABO);		B.DAT+6 -> SCB THAT INITIATED TXN (KT11) (if B.FUN=BF.TBO);;INITOR:;; WAIT FOR A MESSAGE       FROM ANOTHER MGR OR TPSTOP.; if MESSAGE FROM MGR TO START A TST then GOTO START A TST.;	TSUSP$			;WAIT FOR MESSAGE	MOV	$TTBAD,R0	;ACCESS THREAD TABLE BLOCK	CMP	#BF.MES,T.RB+4+B.FUN(R0) ;IS THIS AN ACTIVATION?	BEQ	RUNTST		;YES - CONTINUE;; PROCESS TPSTOP MESSAGE:; case FUNCTION CODE of;	BF.IST:	INITIATE STOP - NOP.;	BF.SAB: ABORT ACTIVE TXNs: for EACH EM TST do CALL TRABT.;	BF.SHT: SHUTDOWN COMPLETE: STOP TIMER; TERMINATE CURRENT THREAD;;				   RETURN TO MAINLINE CODE;;	other:	GOTO PROCESS ABORT TYPE MESSAG      E.; esac;;; if CODE = BF.IST (TPSTOP: INITIATE STOP) then DO NOTHING.??? DISABLE TXN INITIATION ????;	CMP	#BF.IST,T.RB+4+B.FUN(R0) ;IS THIS INITIATE SHUTDOWN	BEQ	INITOR		;YES - THEN DO NOTHING;; if CODE = BF.SHT (TPSTOP: SHUTDOWN COMPLETE); then	STOP THE TIMER; TERMINATE THE CURRENT, SYSTEM THREAD;;	RETURN TO MAINLINE CODE; fi;	CMP	#BF.SHT,T.RB+4+B.FUN(R0) ;IS THIS SHUTDOWN?	BNE	30$		;NO - TRY AGAIN	CALL	.SPTM			; STOP THE TIMER	SETF$S	#1		; SET EVENT FLAG FOR MAIN LINE (SEE ..MSUP)	TTRMN$			; TERMINATE THI      S THREAD;; if CODE = BF.SAB (TPSTOP ABORT ALL ACTIVE TXNS); then CALL ROUTINE TO ABORT ALL TXNS;30$:	CMP	#BF.SAB,T.RB+4+B.FUN(R0) ;IS THIS FORCED SHUTDOWN?	BNE	ABRT		;NO - TRY ABORT	MOV	#TRABT,R2	;POINT TO ABORT ROUTINE	CALL	SCBSCH		;GO SEARCH THE SCB'S	BR	INITOR;*******************************************************************************;; T R A B T;;	FORCED TRANSACTION ABORT ROUTINE;;	THIS IS USED ON SHUTDOWN TO ABORT ANY TRANSACTIONS SPAWNED;	BY EXECUTION MANAGER THAT HAVE NOT TERMINATED NORMALLY.;; I      NPUT:;	APR3 -> SCB PROCESSED BY EM. NOTE: SCB(S.CCB) <> 0 IF TXN ACTIVE.;; OUTPUT:;	for EACH CCB QUEUED TO THE SPECIFIED SCB;	do CALL ..TABO TO ABORT THE ASSOCIATED TXN (W/O LOGGING SW ERROR.);; CALLED BY:;	SCBSCH DURING TPSTOP BF.SAB;TRABT:	MOV	60000+S.CCB,R0	;GET CCB ADDRESS OF SPAWNED TRANSACTION	BEQ	10$		;LEAVE IF NO CCB5$:	MOV	C.CCB(R0),-(SP)	; SAVE NEXT CCB FOR THIS STATION	CLR	R5		;DO NOT LOG ERROR	CALL	..TABO		;ABORT THE TRANSACTION	MOV	(SP)+,R0	; GET NEXT	BNE	5$10$:	RETURN;*************************      ******************************************************;; if CODE = BF.TBO (TPMOD ABORT); then	PROCESS TPMOD ABORT:;	if THE CCB, TXN ID, OR SCB FROM TPMOD IS WRONG;	then NOP		???? NO SW ERROR LOGGED ????;	else CALL ..TABO TO ABORT TXN - JOURNAL A #AB.MOD TYPE ABORT;ABRT:	CMP	#BF.ABO,T.RB+4+B.FUN(R0) ;IS THIS TRANSACTION ABORTED?	BEQ	ABTST		;YES - THEN ABORT THE TST;	CMPB	#BF.TBO,T.RB+4+B.FUN(R0) ;IS THIS TRANSACTION ABORT?	BNE	INITOR		;NO - THEN UNRECOGNISED FUNCTION;							;??? S/B.FUN+2/B.DAT/ ??	MOV	T.RB+      4+B.FUN+2(R0),R1 ;GET CCB ADDRESS	CMP	T.RB+4+B.FUN+4(R0),C.TID(R1) ;DO THE TRANSACTION ID'S MATCH	BNE	INITOR		;NO - IGNORE CALL	CMP	T.RB+4+B.FUN+6(R0),C.TID+2(R1) ;MIGHT BE 	BNE	INITOR	CMP	T.RB+4+B.FUN+10(R0),C.SCB(R1) ;CHECK SCB MATCHES	BNE	INITOR;	MOV	R1,R0	MOV	#AB.MOD,R5	;SET ERROR CODE	CALL	..TABO	BR	INITOR;; CODE = BF.ABO (ABORT TXN); SWITCH TO KERNEL STATE; THE 'TI:' OF TST'S TASK := NULL DEVICE;; GET TST'S CONTEXT BLOCK ADDRESS WHICH IS STORED IN OCB;; ABORT TST WITH M+ KERNEL ROUTINE; RETURN TO USER       STATE;; RESUME TST'S THREAD; SEND DATA TO TST'S THREAD;; if SEND DATA FAILS; then if ERROR = NO NODE POOL;	then $DELAY;	else DO NOTHING			?????? ?????;ABTST:	MOV	T.RB+4+B.DAT(R0),R1 ;GET CCB ADDRESS	MOV	C.TCB(R1),R1	;AND HENCE TCB ADDRESS OF TASK TO	BEQ	INITOR		;BE ABORTED - LEAVE IF DONE5$:	SWITCH$	10$		;	MOV	#.NL0,T.UCB(R1)	;LOG TO NULL DEVICE; 'TI:' := NULL DEVICE	MOV	T.OCBH(R1),R0	;GET OCB 	MOV	O.ESB(R0),EXTTB+T.RB+4 ;SAVE CONTEXT BLOCK ADDRESS OF TST	CLR	R0		; ABORT CODE	CALL	$ABTSK		;ABORT THE TST VI      A M+ KERNEL ROUTINE	RETURN			; RETURN TO USER MODE;10$:	MOV	T.RB+4+B.CXT(R0),R1 ;GET MY CONTEXT BLOCK ADDRESS (FROM OCB)	MOV	T.RB+4+B.DAT+2(R0),T.RB+4+B.CXT(R0) ;SET UP C.B. FOR TST THREAD									;-1*CP09	MOV	R1,R0		;GET TST'S C.B. (FROM OCB)	TRESM$	R0		;RESUME TST'S THREAD15$:	SDAT$S	#EXTTB+T.RB,#EXTTB+T.RB+4,,NODER ;SEND A REPLY TO THE ABORT				; THREAD OF THE TASK SENT DATA		;***CP09	BCS	15$		;if NODE POOL ERROR then RETRY				;NOTE:'NODER' MAY DESTROY LAST WORDS OF SEND BFR	BR	INITOR		;else GO WAIT AGAI      N ???? DO NOTHING ON SEND ERROR???;*******************************************************************************;; R U N T S T;; CODE = BF.MES. THIS IS AREQUEST TO ACTIVATE A TST.; ALLOCATE A C.B.; if C.B. ALLOCATION FAILED; then RE-SEND MESSAGE;	on error if NODE POOL ERROR;		  then $DELAY, TRY RE-SEND AGAIN;		  else HALT: SHOULD BE NO OTHER TYPE OF SEND DATA ERROR; START TST THREAD;;RUNTST:	MOV	T.RB+4+B.DAT(R0),R5 ;GET RECEIVE BUFFER AND 				;HENCE THE SCB ADDRESS (USED IN $STTST THREAD)10$:	CALL	$ALCBA	      	;GO ALLOCATE A CONTEXT BLOCK FROM EM CB REGION				;R0 POINTS AT IT	BCC	15$;; FAILED TO ALLOCATE C.B.: RE-SEND MESSAGE. MESSAGE IS RE-SENT; TO FREE EXECMGR'S SYSTEM THREAD (INITOR) FOR OTHER REQUESTS (LIKE TPSTOP);									;-3*CP09									;**CP09+12$:	SDAT$S	#.EXMAN,#EXTTB+T.RB+4 ;SEND THIS BACK TO ME	BCC	13$		; on success GOTO INITOR	CALL	NODER		; if NODE POOL ERROR then $DELAY				;NOTE:'NODER' MAY DESTROY LAST WORDS OF SEND BFR	BCC	12$		; RE-SEND MESSAGE TO EXECMGR	HALT			; else (NON- NODE POOL ERROR) TH      IS SHOULD NEVER				;	HAPPEN13$:	JMP	INITOR		; GOTO 'WAIT FOR NEXT SEND'		;**CP09-15$:	TSTRT$	R0,#$STTST,#EX.CTZ ;START A THREAD FOR THIS TST;	JMP	INITOR.PAGE.SBTTL	LOADER-RUNNER CONTROL TST EXECUTION;; THIS ROUTINE CONTROLS THE LOADING AND RUNNING OF A TST.;; IT PROVIDES SERVICES TO THE TST WHICH ARE; COMMUNICATED BY MEANS OF 'SEND'S AND PROVIDES THE ; INTERFACE TO THE 11M EXEC TO LOAD AND EXECUTE THE ; TASK IMAGE.;; INPUT:;	R0 -> TST'S C.B.;	R5 -> TST SCB (KT11);; REGISTER USUAGE:;	R0 AND R1	UTILITY REGIST      ERS	;	R2		SCB ADDRESS (VIRTUAL);	R3		MESSAGE ADDRESS (REAL);	R4		TST LOAD ADDRESS (REAL);	R5		TST'S C.B.;	APR3 -> TST'S SCB;$STTST:	MOV	R5,Q.SCB(R0)	;SAVE TST SCB ADDRESS (KT11) IN RUN-TIME C.B.	CLR	Q.BDB(R0)	;SET FOR NO TASK IMAGE ALLOCATED	MOV	R0,R5		;USE R5 TO POINT TO R/T C.B.RESTRT:;; CHECK IF THERE ARE ALREADY TOO MANY TSTs LOADED or TOO MANY COPIES OF THIS; TST LOADED.;; MAP APR3 ONTO TST'S SCB;; if # ACTIVE TSTs >= 8 then GOTO QUEUE REQUEST;; if CURRENT # OF THESE TSTs ARE ACTIVE = MAX then TERMINAT      E THIS REQUEST;; GET CACHE SPACE FOR TST; if NOT ENUF CACHE then GOTO QUEUE REQUEST;;	MAP	3,Q.SCB(R5),R2	;MAP APR3 ONTO SCB, R2 -> VA OF SCB (60000)	CMP	.MXTST,ACTTST	;IS NUMBER OF TST'S AT MAX.		;***CP02	BLOS	QRTCB		;YES - THE QUEUE FOR LATER									;-10*C10	CMPB	S.CML(R2),S.MUL(R2) ;MULTI-PROGRAMMING LIMIT REACHED?	BHIS	21$		;YES - THEN TERMINATE THIS REQUEST;									;**CP10+; BUMP TOTAL # OF ACTIVE TSTs (ACTTST) AND # OF ACTIVE COPIES OF THIS TST (S.CML);	INC	ACTTST		; BUMP TOTAL # OF ACTIVE TSTs	INCB	      S.CML(R2)	; BUMP # OF ACTIVE COPIES OF THIS TST	;**CP10-.IIF DF DEBUG1	CALL	CTCHEK	; CHECK COUNTS FOR OUT OF RANGE;*******************************************************************************;; GET CACHE SPACE FOR TST AND SLOT.;; GET SPACE FOR TST if failed QUEUE REQUEST.; GET SPACE FOR SLOT if failed RELEASE TST SPACE, TRY GETTING SLOT THEN TST.;;; TRY TO GET CACHE SPACE FOR THIS TST; on error QUEUE THIS REQUEST TO LOAD A TST;	CALL	GETTST		;GET TST SPACE	BCS	30$		;QUEUE IF NO SPACE;; GET MCB OF EXCHANGE       MSG; on error if NO SPACE IN CACHE ERROR;	   then GOTO NO SPACE ERROR;	   else TERMINATE REQUEST;20$:	MOV	Q.SCB(R5),R2	;GET SCB ADDRESS FOR ..GMES	CALL	..GMES		;GET THE MESSAGE ADDRESS FROM TST SCB; R3 -> MCB							; ?..GMES?	BCC	25$		;SKIP - IF MESSAGE THERE	CMP	#ER.NSP,R1	;WAS IT NO SPACE?	BEQ	22$		;YES - THEN TRY AGAIN	CALL	CTDEC		; DECREMENT ACTTST AND S.CML COUNTS	;***CP1021$:	JMP	TERM		;OTHERWISE TERMINATE THE THREAD				; SHOULD BE A 'NO MESSAGE EXISTS' => NO MORE				; TSTs TO LOAD FOR THIS TST STATI      ON;; NO CACHE SPACE ERROR:; RELEASE BDB FOR TST'S TASK IMAGE IN CACHE; RE-TRY TO GET MCB FOR EXCHANGE MSG on error GOTO QUEUE REQUEST;; GET CACHE SPACE FOR TST on error REQUEUE EXCHANGE MSG AND QUEUE REQUEST;;22$:	MOV	@$TTBAD,R5	;GET CURRENT RUN TIME CONTROL BLOCK	MOV	Q.BDB(R5),R1	;RELEASE THE TST'S BDB	CLR	Q.BDB(R5)	;INDICATE NO BDB	CALL	$RTBL		; RETURN BDB SPACE TO CACHE;	MOV	Q.SCB(R5),R2	;NOW TRY GETTING THE MESSAGE IN CACHE FIRST	CALL	..GMES	BCS	30$		;QUEUE IF NO MESSAGE, NO SPACE OR DISK READ ERRPR;	MO      V	@$TTBAD,R5	;GET R/T CONTROL BLOCK	MOV	R3,-(SP)	;SAVE MESSAGE ADDRESS	CALL	GETTST		;GET TST SPACE IN CACHE	MOV	(SP)+,R3	;RESTORE MESSAGE ADDRESS	BCC	25$		;CONTINUE IF SPACE AVAILABLE	CALL	..ULKM		;NO SPACE: UNLOCK EXCHANGE MSG + RE-Q IT TO SCB	BR	30$		;GOTO QUEUE REQUEST;; STATE: MESSAGE IN CACHE AND SPACE FOR TST EXISTS IN CACHE;	 R3 -> MCB FOR EXCHANGE MSG (KT11);; VALIDATE CHECKSUM FOR 6 MCB WORDS on error ABORT TXN AND TERMINATE THREAD;; 25$:	MAP	4,R3,R2		;MAP APR4 ONTO MCB AND R2 -> MCB	MOV	@$TTBAD,R5      	;POINT R5 AT R/T CB	CLR	R4	BISB	M.MSZ(R2),R4	;GET SIZE OF THE MESSAGE (32WBLKS)	MOV	M.CCB(R2),Q.CCB(R5) ;TST C.B. :=  CCB ADDRESS	MOV	R3,Q.MCB(R5)	;TST C.B. := MCB ADDRESS (KT11)	INC	R3		;BASE ADDRESS OF MESSAGE IS 				;1 32 WORD BLOCK AFTER MCB	MAP	4,R3,R2		;MAC APR4 ONTO MCB AND R2 -> MESSAGE	MOV	R4,Q.MSZ(R5)	;SAVE MESSAGE SIZE (32WBLKS)	MOV	R2,R5		;POINT R5 AT CONTEXT AREA	CALL	..VLSM		;VALIDATE THE CONTEXT AREA CHECKSUM	BEQ	10$		;VALID IF Z BIT SET				;INVALID CHECKSUM: ABORT TXN + TERMINATE THREAD	CAL      L	CTDEC		; DECREMENT ACTTST + S.CML COUNTS	;***CP10	MOV	@$TTBAD,R5	; GET R.T. CONTROL BLOCK	MOV	Q.CCB(R5),R0	; GET THE CCB	MOV	#AB.VAL,R5	;PUT REASON FOR ABORT IN R5	CALL	..TABO		;ABORT THE TRANSACTION	BR	RESTRT		;TERMINATE THE THREAD			;***CP10;; STATE:;	R2 -> MCB;	APR4 -> MCB (KT11);; CALCULATE CHECKSUM FOR PART OF MCB;; SET DIRTY BIT OF BDB FOR EXCHANGE MSG; MAP ONTO SCB;; ACCESS IMPURE AREA OF TST;;10$:	MOV	@$TTBAD,M.CXT(R2) ;MOVE CONTEXT BLOCK INTO MESSAGE	MOV	R2,R5		;POINT AT TST CONTEXT AREA (MCB)	CA      LL	..CLSM		;RECALCULATE THE CHECKSUM FORM 6 WORDS IN MCB	MOV	@$TTBAD,R5	;RESTORE R/T CB	MAP	3,Q.MCB(R5),R4	;POINT AT MCB	MOV	M.ID(R4),R1	;GET MESSAGE BDB	CALL	$ACBD		;ACCESS THE BDB	MOV	R4,UISAR3	BISB	#BF.DTY,B.FLG+60000(R5) ;SET THE DIRTY BIT	MOV	@$TTBAD,R5	;RESTORE RUN TIME CONTROL BLOCK	MAP	3,Q.SCB(R5),R4	;POINT R4 AT SCB;	MOV	Q.BDB(R5),R1	;TST ALREADY RESIDENT?	BR	SWITCH		;GO LOAD TST;*******************************************************************************;; Q R T C B;;; QUEUE REQUEST FOR TST/EXC      HANGE MSG SPACE:; CALLED IF 1) #ACTIVE TSTs ARE AT MAX OR 2) IF NO SPACE IN CACHE FOR TST AND MSG; (OR NO EXCH MSG OR DISK ERROR); 30$:QRTCBD:				; QUEUE REQUEST AND DECREMENN ACTTST + S.CML COUNTS	CALL	CTDEC		; DECREMENT ACTTST + S.CML COUNTSQRTCB:;; BUMP 'FAILED TO LOAD' COUNT; if (# REQUESTS QUEUED TO THIS SCB + # COPIES OF THIS TST ACTIVE) EQUALS MAXIMUM; then TERMINATE THIS REQUEST;	INCB	60000+S.FLOD	; INC FAILED TO LOAD COUNT;	MOVB	S.LINK+60000,R0 ;R0 := # REQUESTS QUEUE TO THIS SCB	MOVB	S.CML+60000,R      1	;R1 := CURRENT MULTIPROG LIM (# COPIES ACTIVE)	ADD	R1,R0	CMPB	R0,S.MUL+60000	;if (# REQUESTS + # ACTIVE) < MAX ACTIVE	BLO	21$		;then CONTINUE	JMP	TERM		;else GOTO TERMINATE THIS REQUEST;; if TST IS IN CACHE then DECREMENT USE COUNT FOR BDB FOR TST (RELEASE BDB);21$:	MOV	@$TTBAD,R0	;GET RUN TIME CONTROL BLOCK	MOV	Q.BDB(R0),R1	;GET BDB ADDRESS	BEQ	20$		;CONTINUE IF NO ALLOCATED BDB	CALL	$RTBL		;RETURN THE TST SPACE	CLR	Q.BDB(R0)	;RESET THE INDICATOR;; if NO TSTs ARE ACTIVE then SET THE THROTTLE BIT; $DELAY;       GOTO RESTART fi;;20$:	TST	ACTTST		;ANY ACTIVE TST'S	BNE	10$		;YES - THEN SUSPEND UNTIL THEY TERMINATE	BIS	#TH.EXC,.THRTL		;SLOW DOWN INPUT	$DELAY			;OTHERWISE - WAIT FOR A WHILE	BR	15$		;AND THEN TRY AGAIN;; QUEUE THIS THREAD TO THE 'EXQUE'; BUMP # ELEMENTS IN THIS QUEUE;; SUSPEND THIS THREAD;; when RESUMED do DECREMENT # ELEMENT IN QUEUE; RESTART REQUEST;;10$:	INC	S.LINK+60000	;INCREMENT NUMBER OF REQUESTS QUEUED TO 'EXQUE'	MOV	#EXQUE,R1	; LIST HEAD	CALL	$ADDCB		; ADD THIS THREAD TO 'EXQUE'	TSUSP$			; SUS      PEND THIS THREAD	DEC	S.LINK+60000	;DECREMENT COUNT OF REQUESTS QUEUED TO 'EXQUE'15$:	MOV	@$TTBAD,R5	;GET CONTEXT BLOCK ADDRESS	JMP	RESTRT		;AND TRY AGAIN;*******************************************************************************;; DECREMENT ACTTST AND S.CML COUNTS;CTDEC:.IIF DF DEBUG1	CALL	CTCHEK	; CALL ACTTST AND S.CML VALIDITY CHECK IF DEBUG	DEC	ACTTST		; DEC CURRENT # OF ACTTIVE TSTs	DECB	S.CML+60000	; DEC SCB COUNT FOR CURRENT # OF ACTIVE TST COPIES.IIF DF DEBUG1	CALL	CTCHEK	; CHECK VALUES	RETURN.I      F DF DEBUG1CTCHEK:				; CHECK IF ACTTST AND S.CML VALUES ARE VALID	CMP	ACTTST,.MXTST	; if ACTTST < 0 or ACTTST > .MXTST	BHI	10$		; then GOTO HARDLOOP	CMPB	<S.CML+60000>,<S.MUL+60000>				;if (S.CML < 0) or (S.CML > MAX # COPIES)	BHI	10$		; then GOTO HARDLOOP	RETURN10$:	BR	.		; HARDLOOP.ENDC;*******************************************************************************;; G E T T S T;;	GET A TST'S SPACE;; INPUT:;	R5 -> C.B.;	ACTTST = # CURRENTLY ACTIVE TSTs;	TSTSPC = CURRENT AMOUNT OF CACHE SPACE ALLOCATED TO       TSTs;	TSTPLM = MAXIMUM AMOUNT OF CACHE SPACE TO BE ALLOCATED TO TSTs;; OUTPUT:;	C-BIT SET IF NO CACHE SPACE AVAILABLE FOR TST;	C-BIT CLR IF TST SPACE ALLOCATED OR TST ALREADY IN CACHE??;GETTST:	MAP	3,Q.SCB(R5),R4	;MAP APR3 ONTO TST SCB; R4 -> SCB	MOV	Q.BDB(R5),R1	;GET TST BDB ADDRESS	CLC			;ASSUME SUCCESS	BNE	10$		;TST ALREADY THERE - GET MESSAGE;; if AT LEAST ONE TST IS ACTIVE; then if (TOTAL SIZE OF TSTs IN CACHE + SIZE OF THIS TST) > MAX TST SPACE IN CACHE;	then SET C-BIT; GOTO RETURN WITH FAILURE;;	TST      	ACTTST		;ANY TST'S ACTIVE	BEQ	15$		;NO - THEN RUN AT LEAST ONE	MOV	TSTSPC,R3	;GET CURRENT SPACE ALLOCATED	ADD	S.MXSZ(R4),R3	;UPDATE WITH THIS TST'S SIZE	CMP	TSTPLM,R3	;DOES THIS EXCEED THE LIMIT?	BLO	10$		;YES - THEN DO NOT RUN THIS TST YET				;NOTE - THE C BIT IS SET CORRECTLY FOR				;THE RETURN;; ATTEMPT TO ALLOCATE SPACE FOR TST IN CACHE;; if NO SPACE IN CACHE (FOR BDB OR TST); then RETURN WITH C-BIT SET; else Q.BDB -> TST'S BDB; PSUEDO 1ST TCB STATUS WORD := 'TST NOT IN EXECUTION';;	if TST IS SERIALLY       REUSABLE AND TST NOT ALREADY IN MEMORY;	then SET PSUEDO 1ST TCB STATUS WORD (IN C.B.) TO INDICATE 'OUT OF MEMORY';15$:	CLR	R3		;INDICATE TO $GTBL 'DO NOT READ THE IMAGE'	MOV	S.LDV(R4),-(SP)	;SET LOAD DEVICE	MOV	S.LBN+2(R4),-(SP) ;MOVE 32 BIT BLOCK NUMBER	MOV	S.LBN(R4),-(SP)	MOV	S.MXSZ(R4),R1	;GET SIZE OF TST IN R1	MOV	SP,R0		;POINT AT PARAMETER BLOCK;;STATE:;	SP ->	LBN OF TST'S TASK IMAGE (HI-ORDER WORD);		LBN (LO-ORDER WORD);		LUN OF LOAD DEVICE;	R0 = SP;	R1 = SIZE OF TST (32WBLKS);	R3 = 0 TO INDICATE 'DO       NOT LOAD TST';	CALL	$GTBL		;GET SPACE FOR THE TASK IMAGE	MOV	(SP)+,(SP)+	;RESTORE THE STACK	INC	(SP)+	BCS	10$		;SKIP IF NO SPACE AVAILABLE	MOV	R1,Q.BDB(R5)	;SAVE TST'S BDB	MOV	#TS.EXE,Q.ST1(R5) ; INITIALIZE STATUS WORD	BIT	#SF.SRS,S.FLGX(R4) ;TST SERIALLY REUSEABLE?	BEQ	30$		;NO - CONTINUE	TST	R2		;WAS THERE A HIT?	BNE	30$		;NO - CONTINUE	RETURN			;YES - THEN STATUS IS CORRECT;30$:	BIS	#TS.OUT,Q.ST1(R5) ;SET TST OUT OF MEMORY IN PSUEDO TCB STATUS WOORD10$:	RETURN.PAGE.SBTTL SWITCH$ TO LOAD TST;; SWITCH TO K      ERNEL MODE AND LOAD TST;;; STATE:;	MCB RESIDENT IN CACHE;	R1 -> BDB FOR SPACE RESERVED IN CACHE FOR TST;	APR3 -> TST'S SCB;SWITCH:	CALL	$ACBDB		;R4/R5 -> BDB FOR TST; R4 IS KT, R5 IS OFFSETSW1:	MOV	SP,R3		;POINT R3 AT MESSAGE PARAMETERS	MOV	#60000,R4	;POINT R4 AT SCB	MOV	Q.MSZ(R5),-(R3)	;MOVE MESSAGE SIZE INTO PARAMETER LIST	MOV	Q.MCB(R5),-(R3)	;AND MESSAGE ADDRESS	MOV	(R3),UISAR4	;APR4 -> MCB	INC	(R3)		;(R3) -> EXCHANGE MSG; 1 32 WORD BLOCK MORE THAN MCB	MOV	R0,-(R3)	;SAVE BASE ADDRESS	MOV	S.MXSZ(R4),-(R3)       ;GET SIZE OF TST	MOV	S.LDV(R4),-(R3)	;UCB ADDRESS OF LOAD DEVICE	MOV	S.LBN+2(R4),-(R3) ;LOW ORDER 16 BITS OF BLOCK NUMBER	MOVB	S.LBN(R4),-(R3)	;HIGH ORDER 8 BITS OF BLOCK NUMBER	MOVB	TSTPRI,-(R3)	;TST PRIORITY	MOV	S.ST3(R4),-(R3)	;TASK ATTRIBUTE BITS	BIS	#T3.RST,(R3)	;SET RESTRICTED BIT	MOV	Q.ST1(R5),-(R3)	;SET FIRST STATUS WORD	MOV	Q.BDB(R5),-(R3) ;USE TASK ID AS TASK NAME	MOV	#^RT  ,-(R3)	;SET UP TST NAME	BIS	.TPNQ,(R3)	;INDEX BY TP NUMBER	SWITCH$	20$		;SWITCH TO SYSTEM STATE;;	REGISTER SUMMARY:;;	R3	PAR      AMETER LIST POINTER FOR TST;;		WORD 1=TASK NAME (^RT  OR TP'S UNIQUE ID);		WORD 2=TASK NAME (RAD50 OF TST'S BDB ADR);		WORD 3=FIRST TCB STATUS WORD;		WORD 4=TST ATTRIBUTE BITS(STATUS WORD 3);		WORD 5=PRIORITY AND HIGH ORDER 8 BITS OF LBN;		WORD 6=LOW ORDER 16 BITS OF LBN;		WORD 7=UCB ADDRESS OF LOAD DEVICE;		WORD 8=SIZE OF TASK;		WORD 9=BASE ADDRESS OF TASK;		WORD 10=MESSAGE BASE ADDRESS;		WORD 11=MESSAGE SIZE;;;	CHECK NODE POOL CUSHION TO INSURE LOTS OF POOL AROUND.;	ALLOCATE ALL REQUIRED SPACE FROM THE M       NODE POOL FOR A TASK HEADER,;	2 PCBs (MSG AND TST), AN OCB, AND A TCB.;;	IF ANY REQUIRED DATA STRUCTURE CANNOT BE OBTAINED THEN;	ALL OTHER ALLOCATED SPACE IS RETURNED( TO PREVENT;	DEADLOCK) AND AN ERROR CONDITION RETURNED TO THE TST THREAD.;;								;**CP03+;**CP10+; IF THE NUMBER OF NODE POOL CUSHIONS IS BELOW THE MINIMUM, RETURN TO USER MODE; WITH 'NO POOL' ERROR. THE MINIMUM IS $EMDEB FOR A TP IN DEBUG MODE AND; $EMCSH OTHERWISE.;	CMP	$CUSHN,#$EMDEB	; if # CUSHIONS > MINIMUM # FOR DEBUG TP	BHI	15$		; the      n CONTINUE	CMP	$CUSHN,#$EMCSH	; elif # CUSHIONS <= ABSOLUTE MINIMUM # CUSHIONS	BLOS	110$		; then RETURN TO USER MODE WITH 'NO POOL' ERROR	BIT	#SY.BUF,.SYFLG	; elif TP IS IN DEBUG MODE	BNE	110$		; then RETURN TO USER MODE WITH 'NO POOL' ERROR15$:								;**CP03-;**CP10-;; CALL KERNEL ROUTINE TO ALLOCATE TASK HEADER FOR TST'S TASK IMAGE;	CLR	EXTTB+T.RB+2	;SET UP FOR NO ERROR (REGISTERS ARE CLOBBERED ON RETURN)	MOV	#HD.TST,R1	;ALLOCATE THE HEADER SPACE	CALL	$ALOCB	BCS	110$		;if NO SPACE then GOTO SET 'NO SPACE      ' ERROR, RETURN;; CALL KERNEL ROUTINE TO ALLOCATE A PCB FOR THE EXCHANGE MESSAGE AND TST TASK;; if NO SPACE then GOTO RETURN PREVIOUSLY ALLOCATED POOL;	MOV	R0,-(SP)	;SAVE HEADER ADDRESS	MOV	#P.LGTH,R1	;GET A PCB FOR THE MESSAGE	CALL	$ALOCB	BCS	100$		;LEAVE IF SPACE NOT OBTAINED	MOV	R0,-(SP)	;SAVE PCB ADDRESS	CALL	$ALOCB		;GET A PCB FOR THE TASK	BCS	90$		;LEAVE IF SPACE NOT OBTAINED	MOV	R0,-(SP)	;SAVE PCB ADDRESS;; CALL KERNEL ROUTINE TO ALLOCATE AN OFFSPRING CONTROL BLOCK (OCB) FOR TST TASK;; if NO SPACE th      en GOTO RETURN PREVIOUSLY ALLOCATE POOL;	MOV	#O.LGTH,R1	;GET AN OFFSPRING CONTROL BLOCK	CALL	$ALOCB		BCS	80$		;LEAVE IF NO SPACE	MOV	R0,-(SP)	;SAVE OCB ADDRESS;; CALL KERNEL ROUTINE TO ALLOCATE A TCB FOR THE TST'S TASK...;	MOV	#T.LGTH,R1	;GET A TCB ADDRESS	CALL	$ALOCB	BCC	5$		;LEAVE IF NO SPACE;;	ALL SPACE COULD NOT BE OBTAINED!;;	RETURN ALL ALLOCATED SPACE AND RETURN TO USER MODE;70$:	MOV	#O.LGTH,R1	;RETURN OFFSPRING CONTROL BLOCK	MOV	(SP)+,R0	;GET ADDRESS OF TASK OCB	CALL	$DEACB		;RETURN TO THE POOL80$:	M      OV	(SP)+,R0	;GET PCB ADDRESS	MOV	#P.LGTH,R1	;SET UP CORRECT LENGTH	CALL	$DEACB		;RETURN TO THE POOL90$:	MOV	(SP)+,R0	;GET TCB ADDRESS	MOV	#P.LGTH,R1	;RESET THE LENGTH	CALL	$DEACB100$:	MOV	(SP)+,R0	;RESTORE THE HEADER ADDRESS	MOV	#HD.TST,R1	CALL	$DEACB		;RETURN THE HEADER110$:	MOV	#ER.NSP,EXTTB+T.RB+2 ;SET ERROR RETURN CODE	RETURN			;RETURN TO USER MODE AT 20$;*******************************************************************************;; INITIALIZE TST'S TCB;; STATE:;	R0 -> TCB;	R3 -> PARAMETER LIST FOR T      ST (SEE ABOVE);5$:	MOV	R0,R4		;SAVE TCB ADDRESS	MOV	R0,R1		;USE R1 TO FILL IN TCB	MOV	R0,EXTTB+T.RB	;SAVE TCB ADDRESS FOR SCB;; ? OFFSETS SHOULD BE USED ????;	CLR	(R1)+		;CLEAR LINK WORD	CLR	(R1)+		;PRIORITY := 0 (LATER := T.DPRI), I/O PENDING COUNT := 0	CLR	(R1)+		;CLEAR CHECKPOINT PCB	MOV	(R3)+,(R1)+	;MOVE IN TST NAME FROM PARAMETER LIST	MOV	(R3)+,(R1)+	MOV	R1,R0		;SET UP RCV QUEUE LISTHEAD - SAVE LISTHEAD ADDRESS	CLR	(R1)+		;FORWARD POINTER IS ZERO	MOV	R0,(R1)+	;BACK POINTER IS LISTHEAD	MOV	R1,R0		;SET U      P AST LISTHEAD	CLR	(R1)+	MOV	R0,(R1)+	CLR	(R1)+		;CLEAR EVENT FLAGS	CLR	(R1)+	CLR	(R1)+		;CLEAR UCB FOR 'TI:'	CLR	(R1)+		;CLEAR INSTALLED TASK LIST WORD, (SET BELOW)	MOV	(R3)+,(R1)+ 	;SET UP FIRST STATUS WORD	CLR	(R1)+		;AND SECOND STATUS WORD	MOV	(R3)+,(R1)+	;AND THIRD STATUS WORD	MOV	(R3)+,(R1)+	;MOVE IN LBN AND PRIORITY	MOV	(R3)+,(R1)+	;LOW ORDER OF LBN	MOV	(R3)+,(R1)+	;LOAD DEVICE UCB ADDRESS	CLR	(R1)+		;PCB ADDRESS WILL BE SET UP LATER	MOV	(R3)+,(R1)+	;MOVE IN TASK SIZE	CLR	(R1)+		;CLEAR NEXT TCB IN AC      TIVE LIST WORD	MOV	R1,R0		;SET UP ATTACHMENT DESCRIPTOR LISTHEAD	CLR	(R1)+	MOV	R0,(R1)+	CLR	(R1)+		;OFFSET TO TASK IMAGE IN PARTITION := 0	CLR	(R1)+		;CLR SREF WITH EFN COUNT	MOV	R1,R0		;SET UP RECEIVE BY REF LISTHEAD	CLR	(R1)+	MOV	R0,(R1)+	MOV	R1,R0		;SET UP OFFSPRING C.B. LISTHEAD	CLR	(R1)+	MOV	R0,(R1)+	CLR	(R1)+		;CLEAR VT AND OFFSPR. COUNTS	CLR	(R1)+		;RESET AST LISTHEAD	MOVB	T.DPRI(R4),T.PRI(R4) ;SET UP PRIORITY OF TST;; LINK THE TCB INTO INSTALLED TASK LIST BY PRIORITY;	MOV	#$TSKHD-T.TCBL,R1 ;GET LIST      HEAD7$:	MOV	R1,R0	MOV	T.TCBL(R0),R1	;GET NEXT ENTRY	BEQ	8$		;END OF LIST IF ZERO	CMPB	T.PRI(R1),T.PRI(R4) ;THIS TASK LOWER PRIORITY THAN TST?	BHIS	7$		;NO - TRY NEXT ENTRY8$:	MOV	R4,T.TCBL(R0)	;YES - INSERT TST BEFORE THIS TASK	MOV	R1,T.TCBL(R4);*******************************************************************************;;	SET UP THE OFFSPRING CONTROL BLOCK;	MOV	(SP)+,R1	;GET OCB ADDRESS	MOV	R1,R0		;USE R1 TO FILL OCB	CLR	(R1)+		;CLEAR LINK WORD	CLR	(R1)+		;NO CLI COMMAND LINE	MOV	$TKTCB,(R1)+	;MOVE IN P      ARENT TASK TCB (E.M.)	MOV	#$ASTSV,(R1)+	;AND AST SERVIVE ROUTINE (IN TPMLIB THREAD RTEs)	CLR	(R1)+		;NO EVENT FLAG	MOV	@$TTBAD,(R1)+	;MOVE IN CONTEXT BLOCK ADDRESS;	MOV	R0,T.OCBH(R4)	;SET OCB IN TST TCB	MOV	R0,T.OCBH+2(R4);*******************************************************************************;;	SET UP THE TST PCB;	MOV	(SP)+,R0	;RESTORE PCB ADDRESS10$:	MOV	R0,R2		;SAVE ADDRESS OF PCB	MOV	R0,T.PCB(R4)	;STORE IN TCB	TST	(R2)+		;SKIP OVER LINK WORD	MOV	T.PRI(R4),(R2)+	;MOVE IN PRIORITY	MOV	#^RPAR,(R2)+      	;MOVE IN THE PARTITION NAME	MOV	T.NAM(R4),(R2)+	;NAME IS 'PARNNN' - WHERE 'NNN'				;IS THE TST NUMBER	CLR	(R2)+	MOV	R0,(R2)+	;POINT PCB AT ITSELF(MAIN PARTITION)	MOV	(R3)+,(R2)+	;MOVE IN BASE ADDRESS	MOV	T.MXSZ(R4),(R2)+ ;AND SIZE	CLR	(R2)+		; WAIT QUEUE LISTHEAD	CLR	(R2)+		;SWAP SIZE	CLR	(R2)+		;BUSY FLAGS	MOV	R4,(R2)+	;MOVE IN TCB ADDRESS	CLR	(R2)+		;PARTITION STATUS FLAGS	CLR	(R2)+		;HEADER CONTROL BLOCK	CLR	(R2)+		;PROTECTION WORD	MOV	R2,R0		;SET UP ATTACHMENT DESCRIPTOR LIST;SAVE LISTHEAD ADDRESS	CLR	      (R2)+		;CLEAR FORWARD POINTER	MOV	R0,(R2)+	;SET LISTHEAD ADDRESS AS BACK POINTER;*******************************************************************************;;	NOW SET UP THE PCB FOR THE MESSAGE - MESSAGE WILL BE MAPPED;	INTO THE TST BY PLAS DIRECTIVES AT RUN TIME;; OUTPUT: ???	MOV	(SP)+,R0	;RESTORE PCB ADDRESS30$:	MOV	R0,R2		;SAVE PCB ADDRESS	MOV	$PARHD,(R2)+	;LINK PCB INTO PCB LIST	MOV	R0,$PARHD	CLR	(R2)+		;NO PRIORITY	MOV	T.NAM(R4),(R2)+	;MOVE IN PARTITION NAME - NAME	MOV	T.NAM+2(R4),(R2)+ ;IS THE SAM      E AS THE TST NAME	CLR	(R2)+		;NEXT SUBPARTITION	MOV	R0,(R2)+	;MOVE IN THE PCB ADDRESS	MOV	(R3)+,(R2)+	;MOVE IN THE BASE ADDRESS OF THE MESSAGE	MOV	(R3)+,(R2)+	;AND THE MESSAGE SIZE	CLR	(R2)+		;PARTITION WAIT QUEUE	CLR	(R2)+		;SWAP SIZE	MOV	#-1,(R2)+	;SET BUSY FLAG	MOV	#401,(R2)+	;SET UIC OF [1,1]	MOV	#PS.COM!PS.PIC,(R2)+ ;INDICATE A COMMON AREA (STATUS FLAGS)	CLR	(R2)+		;HEADER CONTROL BLOCK	CLR	(R2)+		;SET PROTECTION	MOV	R2,R0		;ATTACHMENT DESCRIPTOR LISTHEAD; SAVE LISTHEAD POINTER	CLR	(R2)+		;INITIALIZE L      ISTHEAD	MOV	R0,(R2)+;; RETURN THE TST'S TASK HEADER TO THE POOL; BUMP EM'S RUN-DOWN COUNT IN EM'S TCB; RQST$ TST on error SET IO ERROR FLAG; DECREMENT EM'S RUN-DOWN COUNT; RETURN TO USER MODE;	MOV	(SP)+,R0	;RETURN THE TST'S TASK HEADER TO THE POOL	MOV	#HD.TST,R1	CALL	$DEACB	MOV	$TKTCB,R5	;GET EM'S TCB (THE CURRENT TASK)	INC	T.RDCT(R5)	;INCREMENT THE RUN DOWN COUNT ???	MOV	R4,R0		;MOVE TCB ADDRESS TO R0	CLR	R1		;USE DEFAULT UIC	CALL	$TSKRT		;GO REQUEST TST	BCC	60$		;SKIP IF REQUEST SUCCESSFUL.IIF DF DEBUG1	B      PT		; CRASH MACHINE: SHOULD BE NO WAY TO FAIL	DEC	T.RDCT(R5)	;DECREMENT RUN DOWN COUNT	MOV	#ER.IOX,EXTTB+T.RB+2	; SET ERROR RETURN60$:	RETURN			;RETURN TO TASK STATE.PAGE;; if TST RQST$ FAILED; then	GOTO REQUEUE TST REQUEST; else	if NOT ENOUGH POOL SPACE FOR M+ DATA STRUCTURES;	then	ABORT THE TXN WITH FAILED TO LOAD ERROR;	else	GOTO FINISH TST LOAD PROCEDURES;; STATE:;	USER MODE;	EXTTB+T.RB = 0 if TST REQUEST WAS SUCCESSFUL;		   = ER.NSP if THERE WASN'T SUFFICIENT CACHE SPACE;		   = ER.IOX if FAILED TO RQST      $ TST;20$:	MOV	EXTTB+T.RB+2,R4		; GET RETURN STATUS	BEQ	250$			; if O.K. then GOTO FINISH TST LOAD JUNK	CMP	#ER.NSP,R4		; if INSUFFICIENT NODE POOL	BNE	220$			; NO;; INSUFFICIENT POOL TO LOAD TST: UNLOCK EXCHANGE MESSAGE, QUEUE TST REQUEST, AND; TERMINATE THIS THREAD;	MOV	Q.MCB(R5),R3		; GET THE MESSAGE	CALL	..ULKM			; AND REQUEUE IT	JMP	QRTCBD			; AND GO WAIT (DEC ACTTST + S.CML);*CP10;; ABORT TXN WITH FAILED TO LOAD ERROR;220$:	CALL	CTDEC			; DECREMENT ACTTST + S.CML COUNTS;**CP10	MOV	Q.CCB(R5),R0		; GET       THE CCB	CLR	C.TCB(R0)		;SET FOR NO TST	MOV	#AB.TFL,R5		; SET FAILED TO LOAD ERROR	CALL	..TABO			; ABORT THE TRANSACTION	JMP	TSTTRM			; TERMINATE THE THREAD;; TST RQST$ SUCCESSFUL: FINISH UP;	BUMP # ACTIVE COPIES OF TST;	if # ACTIVE COPIES > PREVIOUS MAX # ACTIVE COPIES then UPDATE PREVIOUS MAX;	TSTSPC := PREVIOUS CACHE SPACE USED FOR TSTs + SIZE OF CURRENT TST;	BUMP SCB COUNT FOR # TIMES THIS TST LOADED;	BUMP EM'S CURRENT COUNT OF # ACTIVE TSTs;	CLEAR EM'S THROTLE BIT;	CCB -> TST TCB;	SUSPEND TST THREAD;250      $:									;-1*CP10	CMPB	S.CML+60000,S.MCOP+60000 ;LARGEST NUMBER EVER ACTIVE?	BLOS	251$		;NO	MOVB	S.CML+60000,S.MCOP+60000 ;YES - UPDATE STATISTIC251$:	ADD	S.MXSZ+60000,TSTSPC ;UPDATE TST SIZE ALLOCATED	INC	S.TLOD+60000	; UPDATE LOAD COUNT									;-1*CP10	BIC	#TH.EXC,.THRTL		;RESET SLOW INPUT FLAG	MOV	EXTTB+T.RB,R4	;GET TCB ADDRESS	MOV	@$TTBAD,R2	MOV	Q.CCB(R2),R2	MOV	R4,C.TCB(R2)	;MOVE TCB ADDRESS INTO CCB21$:	TSUSP$			;WAIT FOR TST TO DO SOMETHING.PAGE.SBTTL	RUN TIME SUPPORT OF THE TST;;	THIS CODE IS ENT      ERED WHENEVER A TST CALSS THE TST LIBRARY;;	EXECUTION MANAGER PERFORMS THE SUPPORT FOR THE TST;;;	REGISTER SUMMARY:;;		R2	CCB ADDRESS;		R5	RUN TIME CONTROL BLOCK ADDRESS;		UISAR3	SCB ADDRESS;		UISAR4	MCB ADDRESS;;; if THIS IS A RECEIVE AST; then GOTO PERFORM TST REQUEST; else	if THREAD IS RESUMED;	then !TST HAS BEEN ABORTED ?HOW DO WE KNOW THIS?;;		SUSPEND THREAD; WAIT FOR TCB?;;		GOTO RETURN TST DATA STRUCTURES TO POOL;;	else GOTO ABORT TST AND RETURN DATA STRUCTURES TO POOL;;	MOV	$TTBAD,R1	;GET THREAD TAB      LE BLOCK	BIT	#TF.RCF,T.FLG(R1) ;WAS THIS A RECEIVE AST? (TF.RCF SET BY $RVAST)	BNE	24$		;YES - GO SERVICE THE TST	BIT	#TF.RES,T.FLG(R1) ;WAS THIS THREAD RESUMED? (BY SYSTEM THREAD				; BECAUSE BF.ABO WAS SENT BY TPMLIB	BEQ	22$		;NO - THEN TERMINATE	MOV	C.TCB(R2),R4	;YES - THEN TST WAS ABORTED	TSUSP$			;GET TCB ADDRESS AND WAIT FOR TERMINATION				;CCB WILL BE GONE WHEN EXIT AST OCCURS	CLR	Q.CCB(R5)	;RESET CCB ADDRESS JUST IN CASE	JMP	TERMAB		;CLEAN UP TCB'S ETC.22$:	JMP	TSTTRM		;OTHERWISE TERMINATE THE TST;;       PERFORM THE REQUESTED FUNCTION FOR THE TST;; if TXN BEING ABORTED OR EXCHANGE BEING RESTARTED; then !IGNORE REQUEST; GOTO SUSPEND AND WAIT FOR NEXT MESSAGE;; else	if FUNCTION CODE INVALID;	then GOTO PROCESS ERROR;	else CALL CODE TO PROCESS SPECIFIC TST REQUEST;;24$:	BIT	#CF.ABO!CF.ERT,C.FLG(R2)	; TRANSACTION IN ABORT OR RESTART?	BNE	21$				; YES SO DO NOT DO REQUEST	MOV	R5,-(SP)	;SAVE R/T CB	MOV	R4,-(SP)	;SAVE TCB ADDRESS	MOV	R2,-(SP)	;SAVE CCB ADDRESS	MOV	T.RB+4+B.FUN(R1),R0 ;GET FUNCTION CODE	MOV	#EXTTB+      T.RB,R5	;POINT AT RECEIVE BUFFER	MOV	2(R5),-(SP)	;SAVE SENDER TASK NAME	MOV	(R5),-(SP)	CMP	(R5)+,(R5)+	; POINT PAST TASK NAME	MOV	#ER.IFC,R1	; ASSUME INVALID FUNCTION	CMPB	#BF.SND,R0	; LOW FUNCTION CODE	BHI	25$		; 	CMPB	#BF.MBN,R0	; HIGH FUNCTION CODE	BLO	25$	CALL	@FUNDSP-FRSTFN(R0) ;CALL FUNCTION SERVICE ROUTINE;; SEND MESSAGE (WITH STATUS MESSAGE) BACK TO TST;; STATE ON RETURN:;;	R1 CONTAINS THE RETURN CODE FOR THE TST;		IF NEGATIVE - AN ERROR OCCURRED;	SP ->	TASK NAME OF TST (1ST WORD);		(2ND WORD);		CCB       ADDRESS;		TCB ADDRESS;		R/T CONTROL BLOCK ADDRESS;;									;**CP07++; CONDITIONAL DEBUG MODE CODE WAS ADDED BELOW TO ENABLE DEVELOPER TO PUT; A BREAK POINT WHERE ONLY ERROR RETURNS WILL TRAP.	.IF DF DEBUG1	BCC	26$			; if CALL SUCCESSFUL	BR	25$			; else PLACE BPT HERE TO CATCH ERROR26$:	MOV	#1,R1			; INDICATE SUCCESS	.IFF	BCS	25$		;CONTINUE - IF ERROR - CODE ALREADY SET	MOV	#1,R1		;OTHERWISE SET SUCCESSFUL RETURN	.ENDC									;**CP07-25$:	MOV	R1,EXTTB+T.RB+4	;SET RETURN CODE IN SEND BUFFER	MOV	SP,R1		;USE       R1 TO POINT TO TASK NAME300$:;; SEND MESSAGE TO TST; on error if NO POOL ERROR then $DELAY; RE-SEND else ???CONTINUE???;	SDAT$S	R1,#EXTTB+T.RB+4,,NODER				;NOTE:'NODER' MAY DESTROY LAST WORDS OF SEND BFR	BCS	300$	CMP	(SP)+,(SP)+	;RESTORE THE STACK	MOV	(SP)+,R2	;RESTORE CCB ADDRESS	MOV	(SP)+,R4	;RESTORE TCB ADDRESS	MOV	(SP)+,R5	;RESTORE R/T CB	MOV	Q.MCB(R5),UISAR4 ;RESTORE MCB MAPPING	MOV	Q.SCB(R5),UISAR3 ;AND SCB MAPPING	BR	21$		;GO WAIT FOR NEXT EVENT;;	FUNCTION DISPATCH TABLE ;;	NOTE - THIS TABLE IS POSI      TION DEPENDANT AND IS INDEXED;	BY THE FUNCTION CODE SENT BY THE TST;FUNDSP:	.WORD	SNDMSG		;SEND A MESSAGE	.WORD	DELRTE		;DELETE A ROUTE	.WORD	DELALL		;DELETE ALL ROUTES	.WORD	ADDRTE		;ADD A ROUTE	.WORD	GETMSG		;GET A MESSAGE	.WORD	OPETRN		;OPEN A TRANSACTION	.WORD	ABTTRN		;ABORT A TRANSACTION	.WORD	WRTJNL		;WRITE TO JOURNAL	.WORD	GETSTN		;GET STATION NAME	.WORD	GETSRC		;GET SOURCE STATION NAME	.WORD	GETTYP		;GET TRANSACTION TYPE	.WORD	GETTSC		;GET TRANSACTION SOURCE	.WORD	RSTART		;RESTART EXCHANGE	.WORD	GET      NUM		;GET NUMBER OF MESSAGES IN MAILBOX.PAGE.SBTTL	SNDMSG - SEND A MESSAGE;; THIS ROUTINE SENDS A MESSAGE ON BEHALF OF A TST;; INPUT:;	R2	CCB ADDRESS;	EXTTB+T.RB+4 IS THE SEND BUFFER WITH FOLLOWING OFFSETS;		B.RT	3 WORD ASCII STATION NAME TO SEND MSG TO, OR 0 IF REFLEXIVE;		B.CCB	CCB ADR;		B.VSZ	BUFFER SIZE FOR MSG;		B.VA	VIRTUAL ADR OF USER BUFFER;		B.VSZ	SIZE OF BUFFER;		B.HD	VIRTUAL ADR OF HEADER;	APR3 -> TST SCB (KT11);SNDMSG:;; SET UP STACK;; if LENGTH OF USER MESSAGE = 0; then CONTINUE; else	MAP ONTO       USER MESSAGE;;	if TST DOES NOT MAP MESSAGE then RETURN WITH ER.VXF ERROR STATUS;	MOV	EXTTB+T.RB+4+B.RT+4,-(SP) ;SAVE STATION NAME	MOV	EXTTB+T.RB+4+B.RT+2,-(SP)	MOV	EXTTB+T.RB+4+B.RT+0,-(SP)	MOV	EXTTB+T.RB+4+B.CCB,-(SP) ;SAVE CCB ADDRESS	MOV	EXTTB+T.RB+4+B.VSZ,-(SP) ;AND BUFFER SIZE	MOV	C.TCB(R2),R4	;GET TCB ADDRESS	MOV	EXTTB+T.RB+4+B.VA,R0 ;AND VIRTUAL ADDRESS OF USER BUFFER	MOV	EXTTB+T.RB+4+B.VSZ,R1 ;AND SIZE OF BUFFER	BEQ	10$		;SKIP IF NO USER MESSAGE	CALL	.VXFRR		;VALIDATE USER'S BUFFER	BCC	10$		;CONTINU      E IF NO ERROR5$:	CMP	(SP)+,(SP)+	;CLEAN STACK				;**CP01+	CMP	(SP)+,(SP)+	TST	(SP)+							;**CP01-	MOV	#ER.VXF,R1	;SET ERROR RETURN CODE	RETURN;; MAP HEADER??;; if HEADER NOT IN TST ADR SPACE; then RETURN WITH ERROR;; STATE:;	either APR4/R3 -> USER MESSAGE or USER MESSGAR LENGTH = 0;	SP -> 	USER BFR SIZE;		CCB ADR;		STATION NAME WORD 1;		WORD 2;		WORD 3;	APR3 -> TST SCB (KT11);10$:	PUSH	<R3,UISAR4>	;SAVE USER BUFFER POINTERS	CLR	R5		;SET BUFFER SIZE TO ZERO	MOV	EXTTB+T.RB+4+B.HD,R3 ;GET VIRTUAL ADDRESS OF H      EADER	BEQ	15$		;SKIP IF NO HEADER	MOV	R3,R0		;ADDRESS OF HEADER IN R0 	MOV	#8.,R1		;SET HEADER SIZE	CALL	.VXFRR		;VALIDATE THE HEADER	BCC	12$		;CONTINUE IF NO ERROR			;***CP01	CMP	(SP)+,(SP)+	; INITIAL STACK CLEANING		;***CP01	BR	5$		; GOTO CLEAN SK, RETURN W/ ERROR	;***CP01;; GET SPACE FOR MESSAGE FROM CACHE;; on error CLEAN SOME OF STACK; GOTO RETURN WITH C-BIT SET;;; STATE: APR4/R3 -> HEADER (KT11/VA);	 R1 = HEADER SIZE;12$:	MOV	R1,R5		;SET UP SIZE OF HEADER			;***CP0115$:	ADD	EXTTB+T.RB+4+B.VSZ,R5	;GET       SIZE OF MESSAGE	PUSH	R3		;SAVE BUFFER ADDRESS	MOV	#60000,R3	;POINT AT SCB	CLR	R0		; INDICATE NO SLOT REQUIRED		;***CP01	CALL	..GMB2		;GET MESSAGE BUFFER ? 0 LENGTH MSG ?	;***CP01	POP	R4		;RESTORE HEADER POINTER	BCC	20$		;CONTINUE IF MESSAGE BUFFER OBTAINED	POP	<R1,R1,R1,R1>	;RESTORE THE STACK MAINTAINING C-BIT SET	MOV	#ER.NSP,R1	;SET ERROR CODE	BR	60$;; MOVE HEADER AND MESSAGE (if THEY EXIST) TO CACHE BFR;; STATE:;	APR4/R4 -> HEADER (KT11/VA) ??? WHICH HDR, WHERE ?????;	R5 -> MESSAGE BFR IN CACHE (KT11);	SP       -> 	KT11 ADR FOR MESSAGE TO BE SENT (OFFSET IS IN NEXT WORD);		OFFSET FROM ABOVE KT ADR FOR MESSAGE TO BE SENT;		USER BFR SIZE;		CCB ADR;		STATION NAME WORD 1;		WORD 2;		WORD 3;	APR3 -> TST SCB (KT11);20$:	MOV	UISAR3,R3	;SAVE SCB ADDRESS	MAP	3,R5,R5		;APR3 -> MSG BFR IN CACHE (KT);R5 -> MSG BUFFER	TST	R4		;IS THERE ANY HEADER?	BEQ	27$		;NO - THEN DO NOT MOVE HEADER	MOV	#8.,R1		; HEADER SIZE25$:	MOVB	(R4)+,(R5)+	;MOVE IN THE HEADER	SOB	R1,25$;; MOVE MESSAGE;27$:	POP	<UISAR4,R4>	;RESTORE USER BUFFER POINTERS      	MOV	(SP)+,R1 	;GET SIZE OF USER DATA	BEQ	35$		;SKIP IF NO DATA TO MOVE30$:	MOVB	(R4)+,(R5)+	;MOVE USER MESSAGE	SOB	R1,30$;; QUEUE MESSAGE TO STATION on error FREE MESSAGE BFR FROM CACHE;;35$:	MOV	(SP)+,R4 	;GET CCB ADDRESS	MOV	SP,R1		;POINT AT STATION NAME	MOV	R2,-(SP)	;SAVE MESSAGE ID	CALL	..SDTM		;GO SEND A MESSAGE	MOV	(SP)+,R2	;RESTORE MESSAGE ID	BCC	60$		;RETURN IF NO ERROR	MOV	R1,-(SP)	;SAVE ERROR CODE	CALL	..DMES		;OTHERWISE - DELETE THE MESSAGE - RELEASE SPACE	MOV	(SP)+,R1	;INDICATE THE ERROR	SEC			      ;SET ERROR RETURN60$:	POP	<R2,R2,R2>	;RESET THE STACK; ALSO ERROR EXIT: C-BIT MAINTAINED	RETURN.PAGE.SBTTL	OPETRN - SPAWN A TRANSACTION;;	THIS ROUTINE DOES ALL THE NECCESSARY PROCESSING TO;	INITIATE A TRANSACTION FOR THE CALLING TST.;;	ALL RESOURCES ARE OBTAINED,THE TRANSACTION OPENED AND;	THE MESSAGE SPECIFIED BY THE TST IS SENT TO THE FIRST;	STATION.;;	INPUT:;		R2	CCB ADDRESS;		R5	DATA AREA OF THE RECEIVE BUFFER WITH FOLLOWING OFFSETS;				B.DAT+6  - TXN NAME (3 WORDS);				B.DAT+14 - USER BFR IN TST (EXCHA      NGE MSG?);				B.DAT+16 - SIZE OF USER BFR;				;;	OUTPUT:;		RECEIVE BFR + B.DAT := TXN ID OF SPAWNED TXN;		C BIT CLEAR IF TRANSACTION SPAWNED;;		OTHERWISE R1 HAS THE ERROR CODE;OPETRN:;; FIND USER BUFFER (EXCHANGE MSG) IN USER ADDRESS SPACE; if NOT IN ADDRESS SPACE then RETURN WITH ER.VXF ERROR;	CLR	-(SP)		; SAVE SPACE FOR CCB PTR		;***CP01	MOV	C.TCB(R2),R4	;GET TST'S TCB ADDRESS	MOV	B.DAT+14(R5),R0	;GET TST BUFFER ADDRESS	MOV	B.DAT+16(R5),R1	;AND SIZE	MOV	R1,-(SP)	CALL	.VXFRR		;VALIDATE THE BUFFER; APR4/R3       -> BUFFER	BCC	10$		;CONTINUE IF BUFFER GOOD	MOV	#ER.VXF,R1	;OTHERWISE SET ERROR RETURN	BR	27$		;;; VALIDATE THAT TXN EXISTS;; STATE: APR4/R3 -> USER BUFFER;10$:	MOV	R3,-(SP)	;SAVE USER ADDRESS	MOV	R5,R2		;POINT R2 AT TRANSACTION NAME	ADD	#B.DAT+6,R2	CLR	R1		;INIDICATE NO USER AUTHORIZATION CHECK	CALL	..TVAL		;VALIDATE THE TRANSACTION NAME	BCS	26$		; ERROR;; GET TXN DESCRIPTOR BLOCK IN CACHE;; on error GOTO RETURN WITH ERROR CODE (IN R1);15$:	MOV	R0,R5		;PUT TDT ENTRY IN R5	CALL	..GTDB		;GET THE TDB	BCS	26$	      	; ERROR;; CALL ROUTINE TO OPEN A SPAWNED TXN;; on error RELEASE TDB FROM CACHE; RETURN WITH ERROR CODE;20$:	MOV	UISAR4,-(SP)	;SAVE USER BUFFER MAPPING	MOV	R0,@#UISAR4	; MAP TDB BUFFER	CLR	R0		;	BISB	T.DSP(R5),R0	; WORD OFFSET TO TDB	ASL	R0		; MAKE BYTES	BIS	#100000,R0	; AND ASR 4 RELATIVE	MOV	R0,-(SP)	; SAVE TDB ADDRESS	MOV	R5,-(SP)	; SAVE TDT	MOV	@$TTBAD,R2	; GET THE RTC	MOV	Q.CCB(R2),R2	; GET THE CCB	CALL	..TSPN		;OPEN THE TRANSACTION; R5 -> CCB				; C-BIT SET ON ERROR	MOV	R5,12(SP)	; SAVE CCB PTR				;**      *CP01									;CP01-3*19$:	MOV	(SP)+,R5	BCC	30$		;CONTINUE IF NO ERROR	MOV	R1,-(SP)	;SAVE ERROR CODE	CALL	..RTDB		;RELEASE THE TDB FROM CACHE	MOV	(SP)+,R1	;RESTORE THE ERROR CODE25$:	CMP	(SP)+,(SP)+26$:	TST	(SP)+27$:	CMP	(SP)+,(SP)+						;***CP01	SEC	RETURN			;WITH C-SET AND R1 = ERROR CODE;30$:;; GET SPACE FOR THE EXCHANGE MSG?; on error !NO SPACE; ABORT THE SPAWNED TXN; RETURN WITH ER.NSP ERROR CODE;; STATE:;	TDB IN CACHE;	SPAWNED TXN OPENED;	SP	ADDRESS (ASR 4 VIRTUAL) OF TDB;	SP+2	UISAR4 FOR TDB;	SP+4	VI      RTUAL ADDRESS OF USER BUFFER;	SP+6	SIZE OF MESSAGE IN BYTES;	SP+10	CCB OF SPAWNED TXN					;***CP01;	MOV	6(SP),R5	;GET SIZE OF MESSAGE	MOV	#60000,R3	;POINT R3 AT SCB	MOV	10(SP),R4	;GET CCB OF SPAWNED TRANSACTION		;***CP01	MOV	R4,R0		;CCB OF SPAWNED TXN			;***CP01	CALL	..GMB2		;GET ADDRESS OF MESSAGE BUFFER; R5 -> BFR (KT11)									;***CP01				; POSSIBLE SUSPEND, R2 -> MESSAGE ID	;***CP01	BCC	35$		;CONTINUE IF NO ERROR	MOV	10(SP),R0	;OTHERWISE SET UP TO ABORT THE TRANSACTION;*CP01	MOV	#AB.RSC,R5	;SET ABORT C      ODE	CALL	..TABO		;ABORT THE SPAWNED TRANSACTION	MOV	#ER.NSP,R1	;SET ERROR CODE	BR	25$;; MOVE EXCHANGE MESSAGE FROM TST ADR SPACE TO REAL EXHANGE MSG IN CACHE;35$:	MOV	UISAR3,R0	;R0 -> TST SCB (KT11)	MOV	UISAR4,.TEMP	;.TEMP -> TDB (KT11) ??? IS THIS NECESSARY (STACK) ??	MAP	3,R5,R5		;MAP ASR3 TO SLOT BUFFER	MOV	(SP)+,R1	; TDB ADDRESS	MOV	(SP)+,UISAR4	;MAP ASR4 TO USER BUFFER	MOV	(SP)+,R4	;R4 HAS VIRTUAL ADDRESS	MOV	(SP)+,R3	;SIZE IN BYTES IN R340$:	MOVB	(R4)+,(R5)+	;MOVE IN THE MESSAGE	SOB	R3,40$;; FIND FIRS      T STATION IN SPAWNED TXN ROUTING LIST;; SEND EXCHANGE MSG on error RETURN WITH ..SDMS ERROR CODE;; STATE:;	SP	CCB OF SPAWNED TXN;	R0 -> TST SCB (KT11);	.TEMP -> TDB (KT11);	R1 = OFFSET FOR TDB;	R2 = BFR ID;	MOV	R0,UISAR3	;RESTORE THE SCB MAPPING	MOV	.TEMP,UISAR4	;AND THE TDB MAPPING	ADD	#Y.FRS+Y.DNO,R1 ;AND NOW AT FIRST ROUTE OF ROUTE LIST	MOV	UISAR3,R3	;POINT R3 AT SCB	MOV	(SP),R4		;GET CCB IN R4				;***CP01	CALL	..SDMS		;GO SEND THE MESSAGE	BCS	60$		;on error RETURN W/ ..SDMS ERROR CODE	;***CP01;									      ;CP01-1*; CALL ROUTINE TO INDICATE TXN IS CLOSED; TXN WILL IN FACT CLOSE WHEN; PROCESSING OF EXCHANGE IS COMPLETE. NOTE: THE EXCHANGE ACTIVE FLAG IS; TEMPORARILY SET IN THE ATT. THIS IS TO INDICATE TO ..TCL2 TO NOT CLOSE; THE TXN. THIS IS NORMALLY DONE IN ..SDMS. BUT WHEN THE TXN IS BEING SPAWNED; FROM AN EXCHANGE WITH EXCHANGE RECOVERY, THE SPWAWNED TXN IS HELD (STAGED); AN THE SPAWNED TXN HAS NO ACTIVE EXCHANGE. THERE IS 1 EXCHANGE/SPAWNED TXN.; RETURN TDB SPACE TO CACHE.;50$:	MOV	(SP),R0		; R0 -> CCB				      ;***CP01	MOV	@C.IAT(R0),-(SP); SAVE CORRECT VALUE OF TXN STATUS	;***CP06	BISB	#AT.EXA,@C.IAT(R0) ; TEMPORARILY SET EXCHANGE ACTIVE	;***CP06	CALL	..TCL2		;CLOSE THE TRANSACTION NOW -		;***CP01				;IT WILL TERMINATE IN DUE COURSE	MOV	(SP)+,@C.IAT(R0); RESTORE CORRECT TXN STATUS		;***CP06	MOV	(SP),R5		;GET CCB				;***CP01	MOV	C.TDB(R5),R5	;GET THE TDT	CALL	..RTDB		;RETURN THE TDB	MOV	(SP)+,R5	;R5 -> CCB				;**CP01+	MOV	(R5)+,EXTTB+T.RB+4+B.DAT	; SEND BFR := TXN ID	MOV	(R5)+,EXTTB+T.RB+4+B.DAT+2	;	"		;**CP01-60      $:	RETURN								;***CP01.PAGE.SBTTL	SPAWN TRANSACTION;									;**CP01+;; ROUTINE TO SPAWN A TRANSACTION FOR A TRANSACTION INSTANCE;;; INPUT CONDITIONS:;	R0 -- VIRTUAL ADDRESS OF TDB;	R2 -- OWNER CCB;	UISAR3 -- BASE OF SPAWNING STATION;	UISAR4 -- MAPS THE BUFFER HOLDING THE TDB;; OUTPUT CONDITIONS:;;	'C' CLEAR IF TRANSACTION SPAWNED;		R5 -- CCB ADDRESS;;	'C' SET IF TRANSACTION NOT SPAWNED*;		R1 -- 'ER.OPE' TRANSACTION ALREADY OPEN;		      'ER.DSB' TRANSACTION TYPE DISABLED;		      'ER.NCB' NOT ENOUGH RESOU      RCES FOR TRANSACTION;;	ALL REGISTERS DESTROYED;;..TSPN:						;	ENTPT	TSPN	;***CP01	MOV	R2,-(SP)			; SAVE OWNER CCB	SUB	.CCBBA,R2			; CALCULATE	MOV	R2,R3	CLR	R2							;***CP01	DIV	#C.CSIZE,R2			; OWNER INDEX		;***CP01	MOV	R2,R3				; R3 := OWNER IX	;***CP01	CALL	..TOP2				; OPEN THE TRANSACTION	;***CP01	MOV	(SP)+,R2			; GET OWNER BACK	BCS	10$				; NOT OPENED									;-2*CP06	BISB	#C2.SPN,C.FLG2(R5)		; INDICATE TXN IS SPAWNED;**CP08	BIT	#CF.NEX,C.FLG(R2)		; EXCHANGE RECOVER FOR OWNER?	BNE	10$				; NO	BIS	#CF.H      LD,C.FLG(R5)		; SET SPAWNED ON HOLD	MOV	C.SPN(R2),C.SPN(R5)		; LINK TO	MOV	R5,C.SPN(R2)			; SPAWN LIST						; C CLEAR FROM TOP2 CALL10$:	RETURN								;**CP01-.PAGE.SBTTL	WRTJNL - WRITE TO THE JOURNAL;;	THIS ROUTINE WRITES USER DATA TO THE JOURNAL.;;	THE DATA IS WRITTEN AS A LOG AND IS BUFFERED.;;	INPUT:;		R2	CCB ADDRESS;		R5 ->	DATA AREA OF RECEIVE BUFFER W/ FOLLOWING OFFSETS;			B.DAT+12	USER BFR ADR;			B.DAT+14	SIZE OF BFR;			B.DAT+16	USER CODE;;	OUTPUT:;		if SUCCESSFUL;		then	C-BIT CLEAR;			SEND DATA SEN      T TO JOURNAL DRIVER AND RESPONSE RECEIVED;		else	C-BIT SET;			R1 = ER.IOX or ER.LOG;WRTJNL:;									;**CP02+; if LOGGING NOT SPECIFIED then RETURN WITH ER.LOG;	BIT	#SY.LOG,.SYFLG		; if LOGGING ENABLED	BNE	3$			; then CONTINUE	MOV	#ER.LOG,R1		; else R1 := ERROR CODE	SEC				; INDICATE ERROR	BR	10$			; GOTO ERROR RETURN		;**CP02-;; MAP APR4/R3 ONTO USER BUFFER; on error !USER NOT MAPPED ON MSG; RETURN WITH ER.VXF ERROR.;3$:	MOV	C.TCB(R2),R4	;GET TCB ADDRESS	MOV	12(R5),R0	;GET BUFFER ADDRESS			;***CP04	MOV	14(      R5),R1	;AND THE SIZE				;***CP04	CALL	.VXFRR		;VALIDATE THE USER BUFFER; APR4/R3 -> USER BFR	BCC	5$		;CONTINUE IF BUFFER GOOD	MOV	#ER.VXF,R1	;SET ERROR CODE	RETURN;; FILL SEND BUFFER IN APPLICATION COMMON WITH LOGGING PARAMETERS;5$:	MOV	#.COMSB,R0	;POINT AT SEND BUFFER IN APPL COMMON	MOV	@$TTBAD,(R0)+	;MOVE IN CONTEXT BLOCK ADDRESS	MOV	#JN.USR,(R0)+	;AND FUNCTION CODE	MOV	UISAR4,(R0)+	;POINT AT USER DATA	MOV	R3,(R0)+	;R3 HAS VIRTUAL ADDRESS OF USER BUFFER	MOV	R1,(R0)+	;MOVE IN SIZE OF USER REQUEST	MOV	UISAR      0,(R0)+	;MOVE IN BASE OF COMMON	MOV	R2,(R0)+	;AND CCB ADDRESS	MOV	16(R5),(R0)+	;GET USER CODE				;***CP04	MOV	UISAR3,(R0)+	;LOGGING STATION SCB ADDRESS;; USE DPB IN APPL COMMON TO SEND DATA TO JOURNAL DRIVER; on error RETURN WITH ER.IOX ERROR;; SEND BUFER LOOKS LIKE:;	0 CURRENT THREAD'S CONTEXT BLOCK ADR;	2 FUNCTION CODE = JN.USR;	4 USER BFR KT11 POINTER (FOR APR4);	6 USER BFR VIRTUAL ADR POINTER (FOR APR4);	10 SIZE OF BFR;	12 KT11 ADR FOR APPL COMMON;	14 CCB ADR;	16 USER CODE;	20 TST SCB ADR (KT11);	DIR$	#      .CURBF		;SEND TO JOURNAL HANDLER	MOV	#ER.IOX,R1	;SET UP FOR POSSIBLE ERROR	BCS	10$		;SKIP IF ERROR OCCURRED;; WAIT FOR A REPLY FROM JNLDRV BEFORE RETURNING WITH SUCCESS ???NO ERROR RETURN?;; SHOULDN'T THERE BE A TIME LIMIT ON THE SUSPEND IN THE EVENT JNLDRV ABORTS?????; OR ARE WE COVERED BY ETO  - IF SO, HOW ABOUT A SERLOG MSG?????	TSUSP$			;OTHERWISE WAIT FOR A REPLY	CLC10$:	RETURN.PAGE.SBTTL	RSTART - RESTART AN EXCHANGE;;	THIS CALL RESTARTS THE CURRENT EXCHANGE IF EXCHANGE;	RECOVERY WAS SPECIFIED FOR THIS       TRANSACTION - OTHERWISE;	THE TRANSACTION IS ABORTED.;;	INPUT:;		R2	CCB ADDRESS;RSTART:	MOV	R2,R0		;SET CCB ADDRESS IN R0	BIT	#CF.NEX,C.FLG(R0) ;IS EXCHANGE RECOVERY SPECIFIED?	BNE	10$		;NO	JMP	SEXRT		;GO DO EXCHANGE RESTART THREAD;10$:	MOV	#AB.EXT,R5	;SET ERROR CALL	JMP	..TABO		;OTHERWISE ABORT THE TRANSACTION.PAGE.SBTTL	ABTTRN	- ABORT A TRANSACTION;;	THIS ROUTINE ABORTS A TRANSACTION FOR A TST.;;	THE TRANSACTION IS EITHER ONE SPAWNED BY THIS TST (TXN ID <> 0) OR;	THE CURRENT TRANSACTION ITSELF (TXN ID = 0      ). IF ABORTING A SPAWNED;	TXN, SEARCH THROUGH EACH CCB HANGING FROM EACH NON-TERMINAL SCB TO;	FIND THE TXN WITH THE PROPER ID.;;	INPUT:;		R2	CCB ADDRESS;		R5	POINTER TO SEND BUFFER W/ FOLLOWING OFFSET;			+6 = TXN ID (2 WORDS) if ABORTING A SPAWNED TXN;			+6 = 0 if ABORTING THE CURRENT TXN;ABTTRN:;; if TXN ID = 0 then GOTO ABORT THE TXN DESCRIBED BY THE CCB;	MOV	@#UISAR3,-(SP)		; SAVE THE SCB ADDRESS	MOV	.SCBTZ,-(SP)		; PUT NUMBER OF SCBS (2N-2) ON STACK	ADD	#B.DAT+12,R5	;POINT PAST TRAN. ID	TST	-(R5)		;ZERO       T. ID. SPECIFIED?	BNE	19$		;NO - CONTINUE	TST	-(R5)		;TRY SECOND PART OF ID.	BEQ	20$		;IF NOT ZERO - SKIP;; for EACH SCB IN THE NON-TERMINAL ALPHA TABLE; do	for EACH CCB IN THIS SCB'S CCB LIST;	do	if THE CCB'S TXN ID = USER SPECIFIED TXN ID;		then ABORT THE CORRESPONDING TXN;	od; od; if SPECIFIED TXN ID IS NOT FOUND then RETURN WITH ER.NST ERROR; ?HOW DOES USER KNOW TXN ID?????;3$:	MOV	.SCBTA,R4	; BASE OF ALPHA TABLE	ASR	(SP)		; GET NUMBER	INC	(SP)		; OF SCBS4$:	MOV	(R4)+,@#UISAR3	; GET NEXT SCB	CMPB	#SY.T      ST,S.TYP+60000 ; TST STATIOS?	BNE	15$		; NO	MOV	60000+S.CCB,R0	;GET FIRST CCB ON THIS STATION	BEQ	15$		;SKIP IF NO CCB5$:	CMP	(R5),C.TID(R0)	;DO THE ID'S MATCH?	BNE	10$		;NO - TRY NEXT ONE	CMP	2(R5),C.TID+2(R0) ;MIGHT BE - TRY SECOND PART	BEQ	25$		;SKIP IF ID MATCH10$:	MOV	C.CCB(R0),R0	;GET NEXT CCB IN LIST	BNE	5$		;TRY. AGAIN IF VALID CCB15$:	DEC	(SP)		; ANY MORE SCBS	BNE	4$		; YES	SEC			;OTHERWISE ERROR RETURN	MOV	#ER.NST,R1	;SET ERROR CODE	BR	30$;19$:				; TXN ID IS NOT 0	TST	-(R5)		; R5 -> 1ST WORD OF T      XN ID	BR	3$		; GOTO FIND CCB WITH SPECIFIED TXN ID;; CALL TPMLIB ROUTINE TO ABORT TXN: IF EXCHANGE RESTART WAS IN PROGRESS, ..TABO; WILL RETURN AFTER SETTING C.FLG(CF.ABO).;20$:	MOV	R2,R0		;SET CCB ADDRESS IN R025$:	MOV	#AB.USR,R5	;SET ABORT CODE	CALL	..TABO		;ABORT THE TRANSACTION	CLC			;SET SUCCESSFUL RETURN30$:	INC	(SP)+		; CLEAN STACK	MOV	(SP)+,@#UISAR3	; RESTORE TST SCB MAPPING	RETURN.PAGE.SBTTL	DELRTE,DELALL - DELETE A ROUTE OR ALL ROUTES FOR A MESSAGE;;	THIS ROUTINE DELETES ONE OR ALL ROUTES REMAININ      G FOR THE PROCESSING;	OF A MESSAGE.THE TST LIBRARY ROUTINE VERIFIES THE CALL AND ONLY;	THE EM 'ROUTE' ROUTINE HAS TO BE CALLED.;;	INPUT:;;		UISAR4	MCB ADDRESS;		R5	DATA AREA OF RECEIVE BUFFER;;	OUTPUT:;;		C BIT SET IF AN ERROR - CLEAR OTHERWISE;		R1	ERROR CODE;DELRTE:	MOV	UISAR4,R3	;GET MESSAGE ADDRESS	MOV	R5,R1		;POINT R1 AT ROUTE NAME IN RECEIVE BUFFER	ADD	#B.VAR,R1	CALL	..DLDS		;DELETE THE DESTINATION	RETURN;DELALL:	MOV	UISAR4,R3	;GET MESSAGE ADDRESS	CLR	R1		;INDICATE ALL DESTINATIONS	CALL	..DADS		;DELET      E ALL DESTINATIONS	RETURN.PAGE.SBTTL	GETSTN,GETSRC,GETTYP,GETTSC - INFORMATIONAL DIRECTIVES;;	THESE ROUTINES OBTAIN INFORMATION FOR TST'S.;;	GETSTN	-	GET CURRENT STATION NAME;	GETSRC	-	GET SOURCE STATION NAME;	GETTYP	-	GET TRANSACTION TYPE;	GETTSC	-	GET TRANSACTION SOURCE;;	INPUT:;;		UISAR3	SCB ADDRESS;		UISAR4	MCD ADDRESS;		EXTTB+T.RB+4	SEND BUFFER PARAMETERS;;	OUTPUT:;		EXTTB+T.RB+4+2 = # EXCHANGE RESTARTS;		EXTTB+T.RB+4+B.DAT CONTAINS FOLLOWING INFO (3 ASCII WORDS):;			FOR GETSTN = STATION NAME OF CURREN      T TST;			FOR GETSRC = STATION NAME OF MSG SOURCE STATION;			FOR SETTYP = TXN TYPE;			FOR GETTSC = STATION NAME OF TXN SOURCE STATION;GETTYP:	MOV	C.TDB(R2),R1	;POINT AT TRANSACTION DESCRIPTOR TABLE ENTRY (NAME)	BR	COM		;GO TO COMMON CODE;GETTSC:	MOV	100000+M.TSR,UISAR3 ;POINT ASR3 AT TRANSACTION SOURCE 	BR	GETSTN		;GO MOVE THE NAME;GETSRC:	MOV	100000+M.SST,UISAR3 ;POINT AT SOURCE STATION FOR MSG;GETSTN:	MOV	#60000+S.NAM,R1	;POINT AT STATION NAMECOM:	ADD	#B.DAT,R5	;POINT AT DATA AREA IN SEND BUFFER;	MOV	(R1)+      ,(R5)+	;MOVE THE ASCII CHARACTERS IN THE NAME	MOV	(R1)+,(R5)+	MOV	(R1)+,(R5)+	MOVB	C.NRS(R2),EXTTB+T.RB+6 ;SET THE NUMBER OF RESTARTS	CLC			;SET SUCCESSFUL RETURN	RETURN.PAGE.SBTTL	ADDRTE - ADD A ROUTE;;	THESE ROUTINE PROVIDE THE SERVICE TO TST'S OF ADDING;	A DESTINATION TO THE END OF THE ROUTE LIST.;;	INPUT:;;	UISAR4	MCB ADDRESS;		ROUTE NAMES ARE IN THE RECEIVE BUFFER;;	OUTPUT:;		if SUCCESSFUL;		then ROUTE IS ADDED;		else	C-BIT SET;			if STATION NAME THAT WAS TO BE ADDED WAS INVALID;			then R1 = ER.ITN;			      else R1 = ER.RTF: THE ROUTE TABLE WAS FULL;ADDRTE:	MOV	#EXTTB+T.RB+4+B.NAM,R1	;POINT AT NAME IN RECEIVE BUFFER	MOV	UISAR4,R3	 ;MOVE MCB ADDRESS INTO R3	CALL	..ADES		;GO ADD A ROUTE	RETURN			;C BIT AND R1 ARE SET CORRECTLY BY ..ADES.PAGE.SBTTL	GETNUM - GET NUMBER OF MESSAGES IN MAILBOX;;	INPUT:;		R5 = EXTTB+T.RB+4 -> SEND PARAMETRS;			+B.NAM = MBX STATION NAME (3 ASCII WORDS);;	OUTPUT:;		if SUCCESSFUL;		then C-BIT CLEAR; EXTTB+T.RB+B.DAT = # RCDs IN MBX FILE;		elif NO SUCH STATION then RETURN WITH ER.IRN ERR      OR CODE;;		elif SPECIFIED STATION IS NOT A MBX then RETURN W/ ER.TST ERROR CODE;;GETNUM: 	MOV	R5,R1		;	ADD	#B.NAM,R1	;POINT AT STATION NAME	CALL	..FSCB		;TRY TO FIND STATION NAME	BCC	10$		;CONTINUE IF STATION FOUND	MOV	#ER.IRN,R1	;OTHERWISE SET ERROR CODE	RETURN;10$:	CMPB	#SY.MBX,S.TYP+60000 ;IS THIS A MAILBOX?	BEQ	20$		;YES - THEN CONTINUE	SEC	MOV	#ER.TST,R1	;OTHERWISE SET ERROR CODE	RETURN;20$:	MOV	60000+S.MNRC,EXTTB+T.RB+4+B.DAT ;SET COUNT AS RETURN DATA	CLC	RETURN.PAGE.SBTTL	GETMSG - GET A MESSAGE FROM       A MAILBOX;;	INPUT:;		R5	SEND PARAMETERS;GETMSG:	MOV	R5,R1	ADD	#B.VAR+4,R1	;POINT AT STATION NAME	CALL	..FSCB		;FIND THE STATION	BCC	10$		;CONTINUE IF STATION FOUND	MOV	#ER.IRN,R1	;INDICATE THE ERROR	RETURN;10$:	CMPB	#SY.MBX,S.TYP+60000 ;IS THIS A MAILBOX?	BEQ	20$		;YES - THEN CONTINUE	SEC	MOV	#ER.TST,R1	;OTHERWISE INDICATE THE ERROR	RETURN;20$:	MOV	#EXTTB+T.RB+4,R5	; POINT TO SEND BUFFER	MOV	#BF.GTB,B.FUN(R5) ;SET UP SEND BUFFER TO MAILBOX MANAGER	MOV	B.VAR(R5),R0	;GET USER'S BUFFER ADDRESS	MOV	B.VAR+2(R5),      R1	;AND SIZE 	MOV	R0,B.DAT+4(R5)	;SET IN SEND BUFFER	MOV	R1,B.DAT+6(R5)	MOV	2(SP),B.DAT+10(R5) ;SET TST NAME IN SEND BUFFER	MOV	4(SP),B.DAT+12(R5)	MOV	C.TCB(R2),R4	;GET CCB ADDRESS	MOV	R2,B.DAT(R5)	; PUT CCB IN SEND BUFFER	CALL	.VXFRR		;VALIDATE USER BUFFER	BCC	30$		;CONTINUE IF GOOD BUFFER	MOV	#ER.VXF,R1	;SET VALIDATION ERROR	RETURN;30$:	MOV	UISAR4,B.DAT+2(R5) ;SET IN SEND BUFFER	MOV	R3,B.DAT+4(R5)	;SET VIRTUAL ADDRESS IN SEND BUFFER	MOV	.MBMAN,2(SP)	;SET MAILBOX MANAGER NAME IN STACK AS	MOV	.MBMAN+2,4(SP)      	;THE SEND WILL BE DONE TO IT RATHER	MOV	60000+S.TID,R1	;THAN A NORMAL RETURN.NOTE THE CONTEXT				;BLOCK ADDRESS IS SET IN R1 TO MAKE	SEC			;THE RETURN TO COMMON CODE COMPATIBLE WITH				;THE OTHER RETURNS.THE RETURN CODE WILL INSERT				;THE C.B. IN THE BUFFER ON AN ERROR RETURN	RETURN.PAGE.SBTTL TSTTRM/TERMAB  ABORT TST AND TRANSACTION;; T S T T R M / T E R M A B;; SWITCH STACK;	if TST IS SERIALLY REUSABLE;	then 'UNMAP' TST: CLEAR 1ST WORD OF EACH ATTACHMENT DESCRIPTOR IN HEADER;		COPY 'UNMAPPED' HEADER FRO      M POOL TO TST'S TASK HEADER IN CACHE;	fi;	DEALLOCATE HEADER;	DEALLOCATE EXCHANGE MESSAGE PCB;	REMOVE TST'S TCB FROM INSTALLED TASK LIST;	DEALLOCATE TST'S TCB; UNSWITCH STACK; if TST EXITTED SUCCESSFULLY; then DISCARD EXCHANGE MESSAGE (USING ..DSMS); elif NOT A TST ABORT; then ABORT TXN WITH CODE AT.TAB (USING ..TABO); fi; DO BOOKKEEPING (TSTSPC,ACTTST,S.CML); GOTO RESTRT;; INPUT CONDITIONS:;  TSTTRM:;	R5 -> R/T CONTEXT BLOCK ADDRESS;;  TERMAB:;	R2 -> CCB;	R4 -> TST'S TCB;	R5 -> R/T CONTEXT BLOCK;TSTTRM:	MOV      	@$TTBAD,R5	MOV	Q.CCB(R5),R2	;GET CCB ADDRESS	MOV	C.TCB(R2),R4TERMAB:	MOV	60000+S.FLGX,EXTTB+T.RB+4 ;SET FLAGS WORD FOR SWITCH;;	FIRST REMOVE THE MESSAGE PCB FORM THE PCB LIST;	MOV	R2,R1	CLR	C.TCB(R2)	;RESET THE TCB INDICATOR IN THE CCB;; SWITCH STACK TO CLEAR UP M+ DATA STRUCTURES;; M+ DATA STRUCTURE RELATIONSHIPS; R2 -> CCB; C.TCB -> TST'S TCB; T.PCB -> TST'S TASK PCB; P.REL -> BASE OF TST'S TASK IMAGE (KT11 POINTER TO TASK HEADER IN TASK IMAGE); if TST IS SERIALLY REUSABLE; then	P.HDR -> TST'S TASK HEADE      R;	H.WND -> # WINDOWS;	H.WND+2+W.BATT -> BASE OF ATTACHMENT DESCRIPTORS;	for I = 0 to # WINDOWS - 1;	do H.WND+2+W.BATT+I -> 1ST WORD OF ATTACHMENT DESCRIPTOR;	od;	H.WDLN -> HEADER LENGTH IN BYTES; fi;	SWITCH$	20$	MOV	T.PCB(R4),R0	;GET TASK PCB;; if TST IS SERIALLY REUSABLE; then 'UNMAP' TST: CLEAR 1ST WORD OF EACH OF ITS ATTACHMENT DESCRIPTORS;	COPY UNMAPPED HEADER FROM POOL TO TASK HEADER IN TASK IMAGE IN CACHE; fi;	BIT	#SF.SRS,EXTTB+T.RB+4 ;IS THIS TASK SERIALLY REUSEABLE?	BEQ	3$		;NO - CONTINUE	MOV	P.HDR      (R0),R2	;GET HEADER ADDRESS	MOV	H.WND(R2),R3	;POINT TO NUMBER OF WINDOWS	MOV	(R3)+,R1	;GET NUMBER OF WINDOWS	ADD	#W.BATT,R3	;POINT AT ATTACHMENT DESCRIPTORS2$:	CLR	(R3)		;RESET ATTACHMENT DESCRIPTOT IN THE WINDOW	ADD	#W.BLGH,R3	;POINT AT NEXT WINDOW	SOB	R1,2$;; COPY TASK HEADER FROM POOL TO TASK IMAGE IN CACHE;	MOV	H.HDLN(R2),R3	;GET HEADER LENGTH 	ROR	R3		;CONVERT TO WORDS	ADC	R3	MOV	#140000,R1	;POINT AT TASK IMAGE HEADER	MOV	P.REL(R0),KISAR6 ;MAP TO HEADER1$:	MOV	(R2)+,(R1)+	;RESTORE TASK IMAGE HEADER	SOB      	R3,1$;; DEALLOCATE TASK HEADER;3$:	MOV	P.HDR(R0),R0	;DEALLOCATE THE HEADER	MOV	H.HDLN(R0),R1	CALL	$DEACB;; DEALLOCATE TASK'S PCB;	MOV	T.PCB(R4),R0	;GET PCB ADDRESS	MOV	#P.LGTH,R1	;DEALLOCATE THE PCB	CALL	$DEACB;; DEALLOCATE PCB OF EXCHANGE MESSAGE PARTITION;	MOV	#$PARHD,R1	;GET THE PCB LISTHEAD5$:	MOV	(R1),R0		;GET NEXT PCB	CMP	T.NAM(R4),P.NAM(R0) ;IS THIS A MESSAGE PCB?	BNE	10$		;NO  - CONTINUE	CMP	T.NAM+2(R4),P.NAM+2(R0) ;YES - IS IT OUR MESSAGE PCB	BEQ	15$		;YES - LEAVE10$:	MOV	R0,R1		;NO - MOVE ONTO NE      XT PCB	BR	5$;15$:	MOV	(R0),(R1)	;REMOVE THIS PCB FROM THE LIST;	MOV	#P.LGTH,R1	;RETURN THE SPACE TO THE POOL	CALL	$DEACB;; REMOVE TST FROM INSTALLED TASK LIST;	MOV	#$TSKHD-T.TCBL,R0 ;FIND TCB IN THE INSTALLED TASK LIST17$:	MOV	R0,R1	MOV	T.TCBL(R1),R0	;GET NEXT ENTRY	CMP	R4,R0		;IS THIS OUR TCB?	BNE	17$		;NO - TRY NEXT ENTRY	MOV	T.TCBL(R4),T.TCBL(R1) ;REMOVE TCB FROM THE LIST;	MOV	#T.LGTH,R1	;RETURN THE TCB TO THE POOL	CALL	$DEACB	RETURN			; TO USER MODE;; if TST EXITTED SUCCESSFULLY; then DISCARD EXCHANGE M      ESSAGE (USING ..DSMS); elif NOT A TST ABORT; then ABORT TXN WITH CODE AT.TAB (USING ..TABO); fi; DO BOOKKEEPING (TSTSPC,ACTTST,S.CML); GOTO RESTRT;20$:	TST	Q.CCB(R5)	; if THIS IS A TST ABORT	BEQ	40$		; then CONTINUE: EVERYTHING ALREADY DONE	CMP	#EX$SUC,(R5)	; if TST EXIT SUCCESFULLY	BEQ	30$		; then GOTO DISCARD MESSAGE;; ABORT TXN WITH CODE AT.TAB;	MOV	R2,R0		;GET CCB ADDRESS IN R0	MOV	#AB.TAB,R5	;ABORT CODE IN R5	CALL	..TABO		;ABORT THE TRANSACTION	INC	60000+S.TSTA	; TST ERROR EXIT CPUNT	BR	40$		;;; DISCAR      D MESSAGE;30$:	MOV	@$TTBAD,R5	;RESTORE R/T C.B.	MOV	Q.MCB(R5),R3	;GET MCB ADDRESS OF EXCHANGE MESSAGE	MOV	Q.MSZ(R5),R1	;AND MESSAGE SIZE	CALL	..DSMS		;DISCARD THE MESSAGE;; DO BOOKKEEPING: UPDATE TST SPACE LEFT IN CACHE (TSTSPC), CURRENT # OF THIS; TYPE OF TST IN CACHE (S.CML), # OF ACTIVE TSTs (ACTTST);40$:	MOV	@$TTBAD,R5	;RESTORE THE R/T CB	MOV	Q.SCB(R5),R2	;GET STATION CONTROL BLOCK ADDRESS	MAP	3,R2,R4		;POINT AT SCB	SUB	S.MXSZ(R4),TSTSPC ;REDUCE THE TST ALLOCATED SPACE SIZE	CALL	CTDEC		; DEC ACTTST + S.      CML COUNTS	;-2*CP10;***CP10	JMP	RESTRT		;GO PROCESS NEW MESSAGE	.PAGE	.SBTTL	TERMINATE REQUEST TO LOAD TST - TERMINATE THREAD;; THIS ROUTINE IS JMPed BY $STTST IF;   1)	AN ERROR WAS RETURNED FROM ..GMES (GET EXCHANGE MESSAGE) THAT WASN'T;	A 'NO CACHE SPACE' ERROR.; OR 2)	# ACTIVE TSTs EXCEEDS MAXIMUM and;	# ACTIVE COPIES OF THIS TST (S.CML) + # COPIES QUEUED TO BE LOADED (S.LINK);	IS GREATER THAN MAXIMUM # OF COPIES OF THIS TST TO BE LOADED (S.MUL);TERM:	MOV	#EXQUE,R1	;ANY TST'S WAITING FOR MEMORY?	CALL	$DE      LCB	BCS	100$		;NO - THEN CONTINUE	TRESM$	R0		;OTHERWISE RESUME THE THREADS	BR	TERM		;AND TRY AGAIN100$:	MOV	@$TTBAD,R0	;GET THE R/T CONTROL BLOCK ADDRESS	MOV	Q.BDB(R0),R1	;HENCE THE TST'S BDB	BEQ	10$		;SKIP IF NO BDB ALLOCATED	CALL	$RTBL		;RELEASE THE TASK IMAGE;10$:	BIC	#TH.EXC,.THRTL	; CLEAR EXECMGR'S THROTTLE BIT		;***CP10	CALL	$DECBA		;GO RELEASE THE CONTEXT BLOCK	TTRMN$			;TERMINATE THE TST THREAD;.PAGE.SBTTL	ALCBA - ALLOCATE A CONTEXT BLOCK;;	THIS ROUTINE ALLOACATES A CONTEXT BLOCK ;	AND INITIALIZES T      HE CONTEXT BLOCK ADDRESS;;	INPUT:	NONE;;	OUTPUT:;;		C BIT CLEAR - CONTEXT BLOCK ALLOCATED;;			R0	ADDRESS OF C.B.;;		C BIT SET - NO SPACE AVAILABLE;;$ALCBA:	MOV	#EX.CTZ,R1	;GET CONTEXT BLOCK SIZE	MOV	#CBPOL,R0	;AND CB FREESPACE LISTHEAD ADDRESS	CALL	..ALC1		;TRY TO ALLOCATE SPACE FROM EXECMGR CB REGION10$:	RETURN;*******************************************************************************;; N O D E R ;; DIRECTIVE ERROR FROM SEND;; if ERROR = NO NODE POOL; then DISABLE RECEIVES; $DELAY; ENABLE RECEIVES; SE      T CARRY-BIT; else CLEAR CARRY-BIT;NODER:	CMP	#IE.UPN,$DSW	; NODE ERROR	CLC	BNE	10$		; NO					; SAVE SEND BUFFER: MAY BE	;**CP09+					;  DESTROYED DURING THE $DELAY	MOV	EXTTB+4+T.RB+0,-(SP)	; SAVE 1ST WORD OF SENDER NAME	MOV	EXTTB+4+T.RB+2,-(SP)	; SAVE 2ND WORD OF SENDER NAME	MOV	EXTTB+4+T.RB+B.CXT,-(SP); SAVE CONTEXT BLOCK ADDRESS	MOV	EXTTB+4+T.RB+B.FUN,-(SP); SAVE FUNCTION CODE	MOV	EXTTB+4+T.RB+B.DAT,-(SP); SAVE PARAMETER		;**CP09=-	BISB	#TF.NRB,EXTTB+T.FLG ; DISABLE RECIEVES	$DELAY	BICB	#TF.NRB,EXTTB+T.FL      G	MOV	(SP)+,EXTTB+4+T.RB+B.DAT; UNSAVE PARAMETER		;**CP09+	MOV	(SP)+,EXTTB+4+T.RB+B.FUN; UNSAVE FUNCTION CODE	MOV	(SP)+,EXTTB+4+T.RB+B.CXT; UNSAVE CONTEXT BLOCK ADDRESS	MOV	(SP)+,EXTTB+4+T.RB+2	; UNSAVE 2ND WORD OF SENDER NAME	MOV	(SP)+,EXTTB+4+T.RB+0	; UNSAVE 1ST WORD OF SENDER NAME;**CP09-	SEC				; INDICATE A NODE POOL ERROR10$:	RETURN.PAGE.SBTTL	DECBA - DEALLOCATE A CONTEXT BLOCK;;	THIS ROUTINE DEALLOCATES A CONTEXT BLOCK AND ALLOWS;	ITS SPACE TO BE USED BY ANOTHER THREAD.;;	INPUT:;;		R0	CONTEXT BLOCK AD   ô  DRESS;;	OUTPUT:;;		NONE;$DECBA:	MOV	#CBPOL,R3	;POINT AT CONTEXT BLOCK FREE SPACE LISTHEAD	MOV	#EX.CTZ,R1	;INDICATE SIZE OF CONTEXT BLOCK	CALL	..DLC1		;DEALLOCATE THE BLOCK;	RETURN;CBPOL:	.WORD	3,140000,0		;CONTEXT BLOCK FREE SPACE LISTHEAD					; '3' USED TO ROUND ALLOCATION					; QUANTITY UPWARD TO 4 BYTE BOUNDARY					; '140000' INITIAL POINTER TO FREE					; SPACE LISTHEAD IN EXECMGR CB					; REGION WHICH IS MAPPED AT APR6					; '0' INDICATES PSUEDO SIZE OF THIS					; FREESPACE ENTRY	.END	START ô         jLkQÁ› 8$        .TITLE	TPMLIB -- RESIDENT TPM LIBRARY (TPMLIB).IDENT	"1.1C12";;;;;                         COPYRIGHT (C) 1978 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.;;;;		AUTHOR: 	ANDY WILSON;;		DATE: 		JULY 1976;;	THIS MODULE CONTAINS:;;	1 -- SYSTEM SUBROUTINES COMMON TO ALL TPM MANAGERS;		A:	MESSAGE MANAGER;		B:	TRANSACTION CONTROL;		C:	COMMON ROU      TINES;; EDITS:;	CP01: 1/22/79;	..TOPN: ADD ENTRY POINT FOR SPAWNED TXNS: CALL BY CCB;	..TSPN: MOVE ROUTINE TO EXECUTION MANAGER;	..TCLS: ADD ENTRY POINT FOR SPAWNED TXNS: CALL BY CCB;	..GMBF: ADD ENTRY POINT FOR SPAWNED TXNS: CALL BY CCB;	STSND:	INPUT PARAMETER IS R4 (NOT R2);;	CP02: 1/23/79;	..GTSA: RESTORE R0,R1 AT END OF ROUTINE.;;	CP03: 3/12/79;	..INSM: REMOVE WAIT LOOP CODE: INSTALL INSURES SEND DATA IS PRESENT.;	;	CP06: 3/23/79;	ABOCOM: DO NOT FORCE UISAR1 = .ASR1 (FROM APPLICATION COMMON).;	TACOMM: S      END DATA TO DATA MANAGER EVEN IF NO CHANNELS ARE CONNECTED.;;	CP07: 4/19/79;	..MQUE: IF MESSAGE IS A SLOT, DO NOT CHECK IF IT IS AN ILLEGAL REPLY.;;	CP08: 5/2/79: STSCAN: LOAD SLOT BEFORE UNSTAGE OF HELD SPAWNED TXNS.;	..TPCH: ABORT TRACE AND MAILBOX MANAGERS.;	MQDEL: GET ALL MESSAGES: NOT ONLY THOSE IN QUEUE BEFORE 1ST NON-SLOT.;	..GTSA: DO UNSIGNED ARITHMETIC ON FREE SPACE SIZE (BLO NOT BMI).;	..MSUP: COMMENT OUT UNUSED READF AND WAITL DEFINITTIONS.;	..INSM: EXIT WITH FATAL STATUS ON ERROR (INSTEAD OF EXI      T W/O STATUS).;;	CP09: 5/16/79: ABTH: DO NOT SKIP TIM/BIM CALL IF TXN NOT STARTED.;	CP10: 5/21/79: STSCAN: INDICATE UNSTAGE OF HELD TXN DONE.;		..SDMS: NO REPLY REQUIRED FOR SPAWNED TXNS. BUG FIX: USE;			CORRECT CCB POINTER.;	CP11: 6/6/79: STSCAN: C.SPN POINTS TO NEXT HELD TXN DURING UNSTAGE.;	CP12: 6/12/79:STSCAN: SAVE R3 CLOBBERED IN WTSLOT. ???? SHOULD CHANGE;		WTSLOT TO SAVE R3..PAGE.SBTTL	TPMLIB -- LIBRARY NOTES;;; 1 REGISTERS;;	ALL REGISTERS ARE ASSUMED TOBE VOLATILE. NO REGISTERS ARE;	PRESERVED ACROS      S CALLS TO LIBARAY ROUTINES. EACH ROUTINE;	STATES WHICH REGISTERS ARE CORRUPTED.;; 2 EXTERNAL MAPPINGS;;	ASRS 3 &4 ARE USED TO MAP EXTERNAL AREAS. ALL ASRS ARE;	RETURNED TO THEIR ORIGINAL CONTENTS AFTER THE EXTERNAL MAPPING;	IS NO LONGER REQUIRED.;; 3. SCBS;;	ALL SCB POINTERS/ADDRESSES ARE ASSUMED TOBE KT-11 (MOD 32 ADDRESS);	VALUES UNLESS OTHERWISE STATED.;	IF THE ADDRESS OF AN SCB IS SAID TO BE VIRTUAL IT IS ASSUMED THAT;	THE SCB IS MAPPED VIA ASR3.;.PAGE.SBTTL	TPMLIB -- MACROS ;	.MCALL	DIR$,ASRDF$,PUSH,P      OP,DFENT,ENTPT,MRKT$S,DRERR$,GTSK$S	.MCALL	WTLO$S,CLEF$S,WSIG$S,DSAR$S,CALLR,DSAR$S,ENAR$S	.MCALL	WTSE$S,TSTRT$,TSUSP$,TTRMN$,RSUM$S,GTIM$S,$DELAY,SDAT$S	.MCALL	RDAF$S,RQST$,WTLO$,RDAF$,SDAT$S,RQST$S,ABRT$S	.MCALL	RDBDF$,WDBDF$,CLEF$S,SDAT$,ATRG$,CRAW$,QIO$,SVTK$S,EXST$S;	ASRDF$	DRERR$	RDBDF$	WDBDF$;;;; DEFINE SYMBOLS FOR EXTERNAL DPBS;$$$GLB=0	SDAT$	ATRG$	CRAW$	QIO$.PAGE.SBTTL	TPMLIB -- ENTRY POINT TABLE FOR DEBUG;;;; IF THE LIBARAY IS ASSEMBLED IN DEBUG MODE THE ENTRY POINTS; TO ALL THE ROUTINES ARE PLACE      D AT THE HEAD OF THE MODUAL. THIS ALLOWS; ROUTINES TO BE MODIFIED WITHOUT CHANGING THE ADDRESS OF THE ENTRY; POINTS AND THUS CAUSING ALL TASKS THAT USE THE LIBARY TO BE RE-LINKED; SO AS TO LINK TO THE NEW ENTRY POINTS.;;	DFENT	FSCB	DFENT	ALLC	DFENT	SETC	DFENT	DLLC	DFENT	TVAL	DFENT	TVA1	DFENT	TOPN	DFENT	TSPN	DFENT	TCLS	DFENT	GTDB	DFENT	RTDB	DFENT	TEND	DFENT	TABO	DFENT	EXRT	DFENT	GMBF	DFENT	SDMS	DFENT	SDTM	DFENT	GMES	DFENT	DMES	DFENT	DSMS	DFENT	ULKM	DFENT	CLRK	DFENT	CLK2	DFENT	RTUL	DFENT	FEXC	DFENT	MQUE	DFENT      	GSTE	DFENT	USET	DFENT	USE1	DFENT	GTSA	DFENT	QRHD	DFENT	QILE	DFENT	MSUP	DFENT	INSM	DFENT	TWAT	DFENT	TWKE	DFENT	TCCB	DFENT	TFQM	DFENT	TOUT	DFENT	TFLH	DFENT	TPCH.PAGE.SBTTL	TPMLIB -- ..FSCB  (FIND SCB ENTRY);+;; ..FSCB -- SUBROUTINE TO SEARCH FOR A NAMED STATION CONTROL BLOCK.;; INPUT CONDITIONS:;;	R1 -- VIRTUAL ADDRESS OF THE FIRST WORD;	      OF A THREE WORD BLOCK CONTAINING A SCB NAME (6 CHARA. ASCII).;;	UASR 0,1 -- MAP THE APPLICATION COMMON AREA,;		 	WHICH HOLDS THE SCB ALPHA TABLE.;; CALLING SEQUENCE:;;      	CALL  ..FSCB;; OUTPUT CONDITIONS:;;	IF SCB FOUND:;		'C' CLEAR AND;	UISAR3 -- SCB ENTRY ADDRESS.;;	IF ENTRY NOT FOUND:;		'C' SET;;	REGISTERS R3,R4,R5 DESTROYED.;;;; REGISTERS ALTERED:;;	UASR3;; INTERNAL REGISTER USAGE:;;	UASR3 -- SCB ENTRY ADDRESS;	R3 -- TRIAL ADDRESS;	R4 -- LOWER LIMIT OF TRIAL ADDRESS;	R5 -- UPPER LIMIT OF TRIAL ADDRESS;	.SCBTZ -- 2*N-2 WHERE N IS THE NUMBER OF SCB ENTRIES;-;	ENTPT	FSCB;;	PUSH	<R0,R2,R1>	; SAVE THE VOLATILE REGISTERS;; FIRST SEARCH THE NON-TERMINAL SCBS;	MOV	.SCBTA,R4	;IN      ITIALIZE LOWER TRIAL ADDRESS LIMIT	MOV	R4,R5		;INITIALIZE UPPER TRIAL ADDRESS LIMIT	ADD	.SCBTZ,R5	CALL	10$		; DO THE SEARCH	BCC	5$		; FOUND;; NOW SEARCH THE SCBS FOR TERMINALS;	MOV	.SCBTT,R4	; LOWER LIMIT	MOV	R4,R5		; SET	ADD	.SCBTS,R5	; UPPER LIMIT	CALL	10$		; DO THE SEARCH5$:	POP	<R1,R2,R0>	; RESTORE THE REGISTERS	RETURN;; ROUTINE TO BINARY SEARCH AN SCB ALPHA TABLE;10$:	CMP	R4,R5		;HAVE UPPER & LOWER LIMITS CROSSED?	BHI	50$		;YES -- END OF SEARCH (NAME NOT FOUND)	MOV	R4,R3		;NO -- SET TRIAL ADDRESS MIDWA      Y BETWEEN LOWER	ADD	R5,R3		;AND UPPER LIMITS	ROR	R3		;(DIVIDE 17-BIT SUB BY TWO)	BIC	#1,R3		;(ROUND DOWN);	MOV	@R3,@#UISAR3	;MAP TRIAL SCB ENTRY	MOV	#60000+S.NAM,R2	; TRIAL ADDRESS OF SCB NAME	MOV	#6,R0		; NUMBER OF BYTE TO CHECK	MOV	2(SP),R1	; GET SCB NAME TO FIND15$:	CMPB	(R2)+,(R1)+	; COMPARE CURRENT CHARACTERS	BHI	30$		;TRIAL VALUE HIGH -- LOWER UPPER LIMIT	BLO	40$		;TRIAL VALUE LOW -- RAISE LOWER LIMIT	SOB	R0,15$		; TRY NEXT CHARACTER				;MATCH -- SCB NAME FOUND, RETURN WITH				;THE SCB ENTRY ADDRESS I      N UASR3	CLC;20$:				;COMMON EXIT	RETURN	;30$:	MOV	R3,R5		;LOWER UPPER LIMIT TO ENTRY BELOW TRIAL ADDRESS	TST	-(R5)		;(SUB #2,R5)	BR	10$		;TO NEXT TRIAL;40$:	MOV	R3,R4		;RAISE LOWER LIMIT TO ENTRY ABOVE TRIAL ADDRESS	TST	(R4)+		;(ADD #2,R4)	BR	10$		;TO NEXT TRIAL;50$:	SEC			;SCB NAME NOT FOUND	BR	20$.PAGE.SBTTL	TPMLIB -- ..ALLC  (BITMAP ALLOCATOR);+;; ..ALLC -- BITMAP ALLOCATOR;;;;;;;;  GENERALIZED BITMAP ALLOCATE/DEALLOCATE ROUTINE;;; INPUT:;; R3:	NUMBER OF CONTIGUOUS BITS NEEDED; R4:	POINTER TO BIT MAP DES      CRIPTOR BLOCK:-;	WD.00	START ADDRESS OF BIT MAP;	WD.01	END ADDRESS OF BIT MAP;	WD.02	BYTE ADDRESS TO START ALLOCATION FROM;;;;; OUTPUT:;	'C' SET IF ALLOCATION FAILURE;	'C' CLEAR IF ALLOCATION SUCCESSFUL; R2: LAST BYTE ALLOCATED FROM IN MAP (UPDATED); R3: 1ST BIT ALLOCATED IN MAP, OR -1 IF ALLOCATION FAILED;	R0,R1,R4,R5 DESTROYED;;;; FIRST WE SEARCH FOR A CONTIGUOUS CHAIN OF BITS OF SUFFICIENT; LENGTH.  DURING THE SEARCH, THE REGISTERS AND STACK ARE USED; AS FOLLOWS;;;; R0: TEMP   = CONTENTS OF CURRENT BYTE       IN MAP; R1: WRAP   = DISTANCE FROM CURRENT BYTE TO END OF MAP IN WORDS; R2: BYTE   = POINTER TO CURRENT BYTE IN MAP; R3: LENGTH = NUMBER OF CONTIGUOUS BITS NEEDED; R4: COUNT  = NUMBER OF FREE BITS IN CHAIN SO FAR; R5: BITS   = NUMBER OF BITS LEFT TO EXAMINE IN CURRENT BYTE;; (SP+2): DONE  = NUMBER OF WORDS TILL WHOLE MAP IS EXAMINED; (SP)  : START = BITMAP START ADDRESS;; CALLING SEQUENCE:;;	CALL ..ALLC;;;-;;; REGISTER, STACK DEFINITIONS;	TEMP   = %0	WRAP   = %1	BYTE   = %2	LENGTH = %3	COUNT  = %4	BITS   =       %5;	DONE = 2;;;;;	ENTPT	ALLC.DMALC::			; ENTRY POINT FOR DM TASK	MOV	(R4)+,R0	; GET STRAT ADDRESS OF BIT MAP	MOV	(R4)+,R1	; AND THE END ADDRESS	MOV	(R4)+,R2	; AND THE ALLOCATION ADDRESS;	CMPB	(R1)+,(R1)+	; STEP TO LAST BYTE IN MAP	MOV 	R1,-(SP)	; ABOVE MADE IT LAST BYTE +2	SUB 	R0,@SP		; LAST BYTE - 1ST BYTE = # BYTES IN MAP	ASR	@SP		; MAKE IT # OF WORDS = "DONE"	SUB	BYTE,WRAP	; LAST - CURRENT = DIST TILL WRAPARND	ASR	WRAP		; CONVERT TO WORDS	ADC 	WRAP		; ROUND UP LOST BYTE	MOV	R0,-(SP)	; BEGIN OF BITMAP =       "START"	MOVB	@BYTE,TEMP	; PICK UP FIRST BYTE TO EXAMINE	MOV	#9.,BITS	; EXAMINE WHOLE FIRST BYTENOTCHN: CLR 	COUNT		; NOT IN CHAIN -- ZERO # BITS IN CHNNXTBIT:	DEC 	BITS		; STEP TO NEXT BIT 	BNE 	GETBIT		; IF IN SAME BYTE GO GET ITNXTBYT:	INC	BYTE		; STEP TO NEXT BYTE	BIT	#1,BYTE		; IN NEW WORD ?	BNE	 GETBYT		; NO-- GET THE BYTENEWWRD:	DEC	DONE(SP)	; ONE LESS WORD TILL FAILURE	BEQ 	FAIL		; NO MORE WORDS -- FAILURE !!!	DEC 	WRAP		; ONE LESS WORD TILL WRAP-AROUND	BNE 	TSTWRD		; DON'T WRAP YET	MOV 	(SP),BYTE	;       WRAP NOW !!!	CLR	COUNT		; WRAP-AROUND BREAKS THE CHAINTSTWRD:	TST	@BYTE		; ANY FREE BITS IN THIS WORD ?	BNE 	GETBYT		; YES -- GET A BYTE	CLR 	COUNT		; NO -- BREAK THE CHAIN	TST	(BYTE)+		; AND STEP TO NEXT WORD	BR	NEWWRD		; AND TRY ITGETBYT:	MOVB	@BYTE,TEMP	; GET BYTE -- ANY FREE BITS ?	BNE	FSTBIT		; YES -- START CHECKING THE BITS	CLR	COUNT		; NO -- BREAK THE CHAIN	BR	NXTBYT		; AND GO GET THE NEXT BYTEFSTBIT:	MOV	#8.,BITS	; 1ST BIT IN A BYTE -- EIGHT TO DOGETBIT: RORB	TEMP		; CHECK BIT	BCC 	NOTCHN		; ALLOCAT      ED -- BREAK CHAIN & TRY NXT	INC 	COUNT		; FREE -- INCREMENT CHAIN COUNT	CMP 	COUNT,LENGTH	; CHAIN LONG ENOUGH YET ?	BNE 	NXTBIT		; NO -- TRY NEXT BIT;;; OUR SEARCH HAS SUCCEEDED.  NOW WE SET UP FOR AND CALL THE BIT; STRING SETTING/CLEARING ROUTINE TO CLEAR THE CHAIN FOR US,SET THE; LAST BYTE ALLOCATED FROM, AND RETURN;;	MOV 	BYTE,2(SP)	; SAVE LAST BYTE ALLOCATED FROM	SUB	(SP),BYTE	; GET DISPL OF LAST BYTE IN CHAIN	ASH	#3,BYTE		; MAKE IT A BIT DIPLACEMENT	ADD	#9.,BYTE	; ABOVE + 9 - BITS LEFT IN LAST BYTE	SUB      	BITS,BYTE	; = DISPL OF LAST BIT IN STRING +1	SUB	LENGTH,BYTE	; FIND 1ST BIT IN STRING	MOV	(SP)+,R0	; GET START ADRS OF MAP	CLR	R1		; SWITCH TO CLEAR THE BITS	MOV	R2,-(SP)	; SAVE 1ST BIT IN STRING	CALL	..SETC		; ZAP THE WHOLE CHAIN	MOV	(SP)+,R3	; RETURN 1ST BIT ALLOCATED	MOV	(SP)+,R2	; RETURN LAST BYTE ALLOCATED FROM	CLC	RETURN  FAIL:	DEC	BYTE		; CURRENT BYTE POINTER IS ON NEXT NOT LAST BYTE	MOV	#-1,R3		; SEARCH FAILED !!!!!	CMP	(SP)+,(SP)+	; CLEAN STACK	SEC	RETURN.PAGE.SBTTL	TPMLIB -- ..SETC  (BIT STRING S      ET/CLEAR SUBROUTINE);+;; ..SETC -- BITMAP STRING CLEAR/SET ROUTINE;;;;; THIS IS THE BIT STRING SET/CLEAR SUBROUTINE.; IT IS CALLED BY BOTH "ALLOCATE" AND "DEALLOCATE.;;; INPUT:;;R0: START ADRS OF BITMAP;R1: 0 FOR "CLEAR", -1 FOR "SET";R2: 1ST BIT IN STRING;R3: LENGTH OF STRING;;;; OUTPUT CONDITIONS:;;	REQURED BITS SET/CLERED AS REQUESTED.;; R0,R2,R3,R4,R5 DESTROYED;; CALLING SEQUENCE:;;	CALL ..SETC;;-;;	ENTPT	SETC	MOV	R2,R5		; GET DISPL OF 1ST BIT IN STRING	ASH	#-4,R5		; GET DISPL OF 1ST WORD IN STRING	ASL	      R5		; MAKE IT EVEN BYTE	ADD	R5,R0		; GET ADRS OF 1ST WORD IN STRING	BIC	#177760,R2	; GET DISPL OF 1ST BIT IN 1ST WORD	MOV	(R0),R4		; GET 1ST WORD	NEG	R2		; WANT TO RIGHT SHIFT	ASHC	R2,R4		; MOVE LEADING BITS OF 1ST WRD INTO RESULT	MOV	R4,(R0)		; SAVE IN CASE ONLY 1 WORD IN STRING	ADD	#16.,R2		; COMPUTE # BITS LEFT IN 1ST WORD	BR	INIMSK		; 1ST TIME THRU MAY BE < 16 BITS  LEFTMSKLOP:	MOV	#16.,R2		; AFTER 1ST TIME ALWAYS 16. BITS LEFT IN WRDINIMSK:	MOV	R1,R4		; GET MASK IN SHIFT REGISTER	CMP	R3,R2		; LAST WORD       IN STRING ??	BGT	SHIFT		; NO	MOV	R3,-(SP)	; YES-- PUT -[# BITS IN WRD NOT IN STRING]	SUB	R2,(SP)		; ON STACK FOR USE AFTER SHIFTING IN MS BITS BITS	MOV	R3,R2		; AND DO ONLY THE NUMBER LEFT IN STRINGSHIFT:	NEG	R2		; RIGHT SHIFT	ASHC	R2,R4		; MOVE APPROPRIATE # MASK BITS INTO RESULT	ADD	R2,R3		; THAT MANY FEWER LEFT TO GO IN STRING	BEQ	LSTBIT		; AT LAST BIT IN STRING ?	MOV	R5,(R0)+	; NO-- SAVE THE WORD, STEP TO NEXT	BR	MSKLOP		; AND LOOPLSTBIT:	MOV	(R0),R4		; AT LAST BIT-- GET CURRENT WORD	ASH	R2,R4		; SKIP       OVER ALL BITS OF WORD IN STRING	ASHC	(SP)+,R4	; MOVE IN THE TRAILING BITS	MOV	R5,(R0)		; SAVE THE LAST WORD	RETURN.PAGE.SBTTL	TPMLIB -- ..DALL  (BITMAP DEALLOCATOR);+;; ..DALL -- BITMAP DEALLOCATOR;;;;; INPUT:;	R0:	START ADDR. OF BITMAP;	R2:	1ST BIT TO RETURN;	R3:	LENGTH OF STRING TO RETURN;; OUTPUT:;; R0,R2,R3 DESTROYED;;;-	ENTPT	DLLC.DMDLC::				; ENTRY POINT FOR DM TASK	PUSH	<R1,R4,R5>	MOV	#-1,R1			; SET UP TO DE ALLOCATE	CALL	..SETC			; DO IT	POP	<R5,R4,R1>	RETURN.PAGE.SBTTL	TPMLIB -- ..TVAL  (VALIDATE T      RANSACTION);+;; ..TVAL -- VALIDATE AUTHORISATION GIVEN TRANSACTION NAME.;; ..TVA1 -- VALIDATE AUTHORISATION GIVEN TDT ADDRESS;;; THIS ROUTINE VALIDATES THAT THE TRANSACTION IS VALID; (DEFINED FOR THE APPLICATION) AND THAT THE REQUESTOR; IS ALLOWED TO INITIATE THE TRANSACTION.;;; ALL TRANSACTION TYPES ARE RECORDED, BY NAME, IN THE TRANSACTION; DESCRIPTOR TABLE (TDT). A TRANSACTION IS VALID IF ITS TYPE (NAME); IS SPECIFIED IN THE TDT.;; EACH USER IS AUTHORISED TO INITIATED A SET OF TRANSACTION TYPES; (THE USE      R'S WORK CLASS). THE AUTHORISATION IS HELD AS A BIT; MAP. A USER IS AUTHORISED TO INITIATE A TRANSACTION IF THE BIT IS SET; IN THE AUTHORISATION BITMAP WHICH CORRESPONDS TO THE TRANSACTION; TYPE NUMBER SPECIFIED IN THE TDT ENTRY FOR THE TRANSACTION.;; INPUT CONDITIONS:;	R2	POINTER TO TRANSACTION NAME IF ENTRY POINT TVAL;;	R0	TDT ENTRY ADDRESS IF ENTRY POINT TVA1;;	R1	POINTER TO THE BIT MAP TO VALIDATE THE INITIATOR;		ZERO IF VALID FOR ALL TRANSACTIONS;;	ASR3 MAPS THE SCB FOR THE VALIDATING STATION.;;;;	UASR       0,1 MAP THE APPLICATION COMMON AREA.;; OUTPUT CONDITIONS:;;	'C' SET IF ERROR DETECTED;		R1 CONTAINS ERROR CODE:;			ER.ITN -- NO SUCH TRANSACTION;			ER.NOR -- NOT AUTHORISED;;	'C' CLEAR IF TRANSACTION OPENED CORRECTLY;		R0 CONTAINS POINTER TO TDT ENTRY FOR THE TRANSACTION;;	REGISTERS R1,R2,R4 DESTROYED;; CALLING SEQUENCE;	CALL 	<ENTRY POINT>;; CALLED BY:;	EXECMGR: OPETRN: FOR SPAWNED TXNS;	?;-;;	.ENABL	LSB	ENTPT	TVAL;;; FIND THE TDT ENTRY FOR THE SPECIFIED TRANSACTION;	MOV	.TDTSZ,R4		; NUMBER OF TDT ENTRIES      	BEQ	35$			; NONE ?? RETURN ERROR	MOV	.TDTBA,R0		; BASE ADDRESS OF TDT20$:	CMP	(R2),T.NAM+00(R0) 	; CHECK FIRST 2 CHARACTERS	BNE	30$		  	; NOT THIS ONE	CMP	2(R2),T.NAM+02(R0) 	; MAYBE -- TRY THE NEXT 2 CHARACTERS	BNE	30$		  	; NO	CMP	4(R2),T.NAM+04(R0) 	; COULD BE -- TRY THE LAST 2	BEQ	40$		  	; GOT IT !!!30$:	ADD	#T.TDTSZ,R0		; GET NEXT ENTRY	SOB	R4,20$			; TRY THE NEXT ENTRY;; CANNOT FIND IT -- RETURN ERROR;35$:	MOV	#ER.ITN,R1		; TRANSACTION IDENTITY NOT KNOWN37$:	INCB	S.TINV+60000		; UPDATE THE COUNT OF       INVALID REQUESTS	SEC	RETURN;; CHECK IF INITIATOR VALID;40$:	ENTPT	TVA1;; ENTRY POINT IF TDT ENTRY KNOWN;	BIT	#TF.DSB,T.TFG(R0) ;IS THE TRANSACTION DISABLED?	BEQ	45$		;YES - THEN LEAVE WITH ERROR	MOV	#ER.DSB,R1	;SET ERROR CODE	BR	37$45$:	TST	R1			; IS THERE A BIT MAP?	BEQ	50$			; NO -- SO VALID FOR ALL TRANSACTIONS;; CHECK THE BIT MAP;	MOVB	T.BYT(R0),R2		; GET TRANSACTION NUMBER:					; -- BYTE TO CHECK IN BIT MAP;	ADD	R2,R1			; GET ADDRESS OF BYTE	BITB	T.MSK(R0),(R1)		; SEE IF THE REQUIRED AUTHORISATION					      ; BIT IS SET	BEQ	60$			; NO --- NOT AUTHORISED	CLC50$:	RETURN60$:	MOV	#ER.NOR,R1		; RETURN NOT AUTHORISED ERROR CODE	BR	37$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..TOPN  (OPEN TRANSACTION);+;; ..TOPN -- OPEN TRANSACTION; ..TOP2 -- OPEN SPAWNED TRANSACTION					;***CP01;;; OPENING A TRANSACTION SPECIFIES THAT A NEW TRANSACTION ("INSTANCE"); IS TOBE CREATED. AN INSTANCE OF A TRANSACTION IS RECORED BY A; CCB WHICH IS LINKED TO THE INITATING STATION'S SCB. ALL MESSAGES; FROM THAT SCB ,WHILE THE TRANSACTION IS OPEN, WI      LL BE ASSUMED TO; BE INITIATING A NEW EXCHANGE FOR THE TRANSACTION.; EXCEPT FOR SPAWN TRANSACTIONS,					;***CP01; ONLY ONE OPEN TRANSACTION IS ALLOWED PER STATION; ONCE A TRANSACTION; IS CLOSED NO MORE INPUT MESSAGES CAN BE PROCESSED BY THE TRANSACTION; , BUT A NEW TRANSACTION CAN BE OPENED ON THE STATION.; THERE CAN BE AN UNLIMITED NUMBER OF TXNS SPAWNED BY ONE TST STATION.	;***CP01;; TO OPEN A TRANSACTION:;;	1. A CCB IS OBTAINED, INITILISED, AND LINKED TO;	   TO THE INITATING SCB.;;	2. ANY DISC SPACE REQU      IRED FOR TRANSACTION SLOTS IS OBTATINED.;;	3. OBTAIN AND INITALISE THE SLOT;; NOTE:;	THE TDB FOR THE TRANSACTION WILL ALREADY BE CACHED IN MEMORY;	AND ITS BDB PLACED IN ITS TDT ENTRY.;;;; ROUTINE TO OPEN A TRANSACTION;; INPUT CONDITIONS:;;   ..TOP2								;***CP01;	R3	INDEX OF OWNER CCB					;***CP01;   BOTH:;	R0	VIRTUAL ADDRESS OF TDB;	UISAR3 -- BASE ADDRESS OF THE SCB;	UISAR4 -- MAPS THE BUFFER HOLDING THE TDB;;	UASR 0,1 MAP THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS:;	'C' CLEAR IF TRANSACTION OPENED       SUCCESSFULLY;;		CCB CREATED AND INITALISED;		R5 -- CCB ADDRESS;;;;	'C' SET IF ERROR;		R1 -- 	'ER.OPE' TRANSACTION ALREADY OPEN;			'ER.DSB' TRANSACTION DISABLED;			'ER.NCB' NOT ENOUGH RESOURCES FOR TRANSACTION;;	REGISTERS R0,R1,R2,R3,R4,R5 DESTROYED;;; CALLING SEQUENCE:;;	CALL	..TOPN;    OR	CALL	..TOP2							;***CP01;;-;	.ENABL	LSB;	ENTPT	TOPN	CLR	R3			; CLEAR OWNER (NOT SPAWNED)					; EVENTUALLY, C.OWN := 0TOP2:;; CHECK TO SEE IF THERE IS ALREADY AN OPEN TRANSACTION;	MOV	S.CCB+60000,R5		; GET THE FIRST CCB       ON THIS STATION	BEQ	10$			; THRERE ISN'T ONE -- SO NO TRAN.	BIT	#CF.CLD,C.FLG(R5) 	; IS IT OPEN?	BNE	10$			; NO SO LETS TRY AND OPEN ONE	MOV	#ER.OPE,R1		; YES -- ERROR RETURN5$:	SEC	RETURN10$:;									;**CP01+; ENTRY POINT FOR SPAWNED TXNS. FOR TST STATIONS, IT IS POSSIBLE TO; HAVE SEVERAL CCBs FOR ACTIVE TRANSACTIONS QUEUED TO AN SCB.;	ENTPT	TOP2;									;**CP01-; IS THE TRANSACTION DISABLED?;	MOV	#ER.DSB,R1		; ASSUME IT IS	MOV	Y.TDT(R0),R2		; GET THE TDT	BITB	#TF.DSB,T.TFG(R2) 	; CHECK TO SEE	BNE	5$			;       YES IT IS SO RETURN ERROR	CMPB	T.ERR(R2),.TERR		; ERROR THREASHOLD REACHED?	BHI	5$			; YES SO DISABLED	TSTB	.OVFLW			; OVERFLOW IN USE	BNE	100$			; WAIT TO GO AWAY	BIT	#SY.CRT!SY.OPE,.SYFLG	; CRASH RESTART OR OPENS INPROGRESS	BNE	100$			; WAIT FOR IT TO COMPLETE	MOV	#.CCBLH,R4		; GET A CCB	CALL	..QRHD			; FROM THE FREE CCB LIST	BCS	100$			; NO CCB	MOV	R5,-(SP)		; SAVE THE CCB ADDRESS;; INITALISE THE CCB;; ???????????????????????? ASSEMBLY TIME CHECKS FOR CORRECT OFFSETS ???	;***CP01	CMP	(R5)+,(R5)+	;MOVE C      CB POINTER	CLR	(R5)+			; CLEAR EXCHANGE & LOCK NUMBERS	MOV	Y.TDT(R0),(R5)+		; TDT ENTRY ADDRESS	MOV	@#UISAR3,(R5)+		; GET THE SCB INTO THE CCB	MOV	S.CCB+60000,(R5)+ 	; LINK THE CCB	MOV	(SP),S.CCB+60000	; TO THE SCB	MOV	#<C.FLG-C.CCB>/2,R4	; CLEAR REST15$:	CLR	(R5)+			; OF CCB	SOB	R4,15$			;	MOVB	R3,(R5)+		; OWNER	CLRB	(R5)+			; ZERO SECOND FLAGS WORD	CLR	(R5)+			; SPAWN QUEUE;; GET INDEX TABLE ENTRY;;	MOV	(R5),R1		MOVB	#AT.NGO,X.ST(R1) 	; SET THE STATUS TO NO GO;; ALLOCATE SPACE FOR THE TRANSACTION SLOT; ON      LY IF EXCHANGE RECOVERY REQUIRED OR THE SLOT HAS A; STAGE AREA.;; CALCULATE THE SIZE OF THE DISC SPACE REQUIRED PER SLOT;	MOV	Y.STZ(R0),R4		; GET THE SLOT SIZE	ADD	#M.MSIZ,R4		; ALLOW FOR THE MCB AND TST					; LIBRARY CONTEXT SPACE					; IN THE SLOT (64. WORDS).	BITB	#TF.TRC!TF.64,T.TFG(R2)	; TRACE THIS TRANSACTION?	BEQ	20$			; NO	INC	R4			; ALLOW FOR TRACE CONTEXT20$:	INC	T.NTR(R2)		; UPDATE NUMBER OF TIME TYPE REQUESTED;; R4 NOW CONTAINS THE SLOT SIZE IN 32 WORD BLOCKS; NEED TO GET INTO 256 WORD BLOCKS;	M      OV	(SP),R5			; GET THE CCB	MOV	R4,-(SP)		; SAVE SLOT SIZE	ADD	#7,R4			; GET TO NEXT BOUNDARY	ASH	#-3,R4			; GET TO MOD 256 SIZE	MOV	Y.FLG(R0),C.FLG(R5) 	; SET TRANSACTION FLAGS	MOVB	R4,X.SZ(R1)		; SAVE THE SLOT SIZE INCASE OF CRASE	MOV	#-1,X.SDA(R1)		; SET SLOT DISC ADDRESS NOT IN USE	MOV	R4,-(SP)		; SAVE R4	BIT	#YF.NEX,Y.FLG(R0)	; EXCHANGE RECOVERY REQUIRED?	BNE	80$			; NO	CALL	ALLDS			; ALLOCATE THE DISC SPACE	BCS	85$			; NO SPACE SO GO CLEAN UP	MOV	4(SP),R5		; GET THE CCB BACK	MOV	R3,C.DA2(R5)		; SAVE DI      SC ADDR. IN CCB;; GET FIRST SLOT AREA;50$:	CALL	ALLDS			; ALLOCATE THE SPACE	BCS	85$			; NO SPACE SO GO CLEAN UP	MOV	4(SP),R5		; GET THE CCB BACK	MOV	R3,C.DA1(R5)		; SAVE FIRST SLOT ADDRESS60$:;; STACK:;	SP+00	SLOT SIZE MOD 256.;	SP+02	SLOT SIZE MOD 32.;	SP+04	CCB ADDRESS;	TST	(SP)+			; CLEAN THE STACK	MOV	(SP)+,R1		; GET THE SLOT SIZE	MOV	(SP),R4			; GET THE CCB	CALL	GTSLOT			; GO GET THE SLOT	BCS	90$			; NO SPACE FOR THE SLOT SO CLEANE UP	MOV	(SP)+,R5		; GET CCB BACK	INC	.NACTT			; UPDATE THE NUMBER OF AC      TIVE TRANACTIONS	INC	S.TRST+60000		; UPDATE NUMBER OF TRANSACTION FROM THIS STATION					; NOTE 'C' STILL CLEAR	ADD	#1,.TRNID+2		; UPDATE THE GLOBAL	ADC	.TRNID			; TRANACTION SEQUENCE NUMBER	MOV	.TRNID,(R5)		; STORE TRANSACTION	MOV	.TRNID+2,2(R5)		; SEQUENCE NUMBER IN CCB FOR THIS INSTANCE70$:	RETURN80$:	BITB	#YF.STA,Y.FLG(R0) 	; IS THERE A STAGE AREA?	BNE	50$			; YES S0 GET ON DISC AREA FOR END	BR	60$;;;; ROUTINE TO ALLOCATE DISC SPACE VIA THE MESSAGE; MANAGER FILE BIT MAP.; IF THE SPACE CANNOT BE OBTAINED       THE THREAD IS SUSPENDED; TO BE RESTARTED WHEN DISC SPACE IS RELEASED.;; INPUT CONDITIONS:;	SP+2	NUMBER OF BLOCKS TOBE ALLCATED.;; OUTPUT CONDITIONS:;	R3	RELATIVE BLOCK NUMBER IN FILE;		AT BASE OF ALLOCATION;ALLDS:	MOV	2(SP),R3		; GET THE SIZE	MOV	#.MMAPB,R4		; BIT MAP DESCRIPTOR BLOCK	CALLR	..ALLC			; ALLOCATE VIA BIT MAP;; COULD NOT ALLOCATE ALL THE RESOURCES;85$:	CMP	(SP)+,(SP)+		; CLEAN THE STACK90$:	MOV	(SP)+,R1		; GET THE CCB	CALL	TICLR			; CLEAN UP100$:	MOV	#ER.NCB,R1		; SET THE ERROR CODE	SEC	BR	70$	      .DSABL	LSB									;-42*CP01.PAGE.SBTTL	TPMLIB -- ..TCLS  (CLOSE TRANSACTION);+;;;; ..TCLS -- ROUTINE TO LOGICALLY CLOSE A TRANSACTION; ..TCL2 -- CLOSE TXN USING CCB ADDRESS					;***CP01;; INPUT CONDITIONS:;; ..TCLS;	R3/APR3	SCB POINTER (VIRTUAL -- MUST BE MAPPED IN TO CURRENT SPACE);		ASSUMED THAT SCB MAPPED ASR3 RELATIVE; ..TLC2;	R0	CCB FOR TXN TO BE CLOSED				;***CP01; BOTH:;	UASR 0,1 MAP THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS:;	'C' CLEAR IF CLOSED CORRECTLY;;	'C' SET IF NOT CLOSED;		R1 CONTAINS       ERROR CODE:;		ER.NOP	-- NO OPEN TRANSACTION;;	REGISTER R0 DESTROYED;; ..TLC2 CALLED BY:;	EM: OPETRN ROUTINE: INDICATE THAT TXN IS CLOSED W/O ABORTING TXN.;		REQUIRES R0,@C.IAT(R0) PRESERVED, AND NO SUSPENDS PERMITTED.;;; IF THERE IS NO ACTIVE MESSAGE FOR THE TRANSACTION; AN END TRANSACTION IS PERFORMED.;; IF THERE IS AN ACTIVE MESSAGE FOR THE TRANSACTION THE TRANSACTION; IS MARKED AS CLOSED SO THAT THE END TRANSACTION FUNCTIONS WILL; BE PERFORMED WHEN THE PROCESSING OF THE MESSAGE IS COMPLETE.; !!!WARNING!      !! THE EXECUTION MANAGER WILL SET AT.EXA TO SIMULATE AN; ACTIVE MESSAGE FOR SPAWNED, HELD TXNS (SPAWNED FROM EXCHANGES WITH; EXCHANGE RECOVERY ENABLED).;;-;	.ENABL	LSB	ENTPT	TCLS;	MOV	S.CCB(R3),R0		; GET THE FIRST CCB	BEQ	110$			; NO CCB SO NO TRAN TO CLOSE;									;**CP01+; ENTRY POINT FOR ..TCL2, CLOSE BY CCB;	ENTPT	TCL2									;**CP01-	BIT	#CF.CLD,C.FLG(R0) 	; ALREADY CLOSED?	BNE	110$			; YES -- SO ERROR AS BEFORE;;	BIS	#CF.CLD,C.FLG(R0) 	; MARK THE TRAN AS CLOSED;;IS THERE AN ACTIVE EXCHANGE OR ONE ST      ILL TO PROCESS?;	BITB	#AT.EXA,@C.IAT(R0) 	; EXCHANGE ACTIVE					; OR WAITING TO BE PROCESSED?	BNE	10$			; YES -- SO DO NOT PROCESS END UNTIL COMPLETE;; NEED TO END THE TRANSACTION;	CALL	..TEND10$:	CLC20$:	RETURN;;;110$:;; RETURN NO OPEN TRANSACTION ERROR;	MOV	#ER.NOP,R1200$:	SEC	BR	20$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..GTDB  (GET TDB);;;+;; ..GTDB -- GET TRANSACTION DESCRIPTOR BLOCK;; THIS ROUTINE IS CALLED TO GET THE TRANSACTION DESCRIPTOR BLOCK; FOR A GIVEN TRANSACTION TYPE.;;; INPUT CONDITIONS:;	R5 -- TD      T ENTRY FOR TRANSACTION TYPE;;	'C' SET IF ERR R1 CONTAINS THE ERROR CODE:;		'ER.NSP' NO SPACE AVAILABLE IN THE CACHE;		'ER.IOX' I-O ERROR WHEN READING THE TDB;;; OUTPUT CONDITIONS:;  SUCCESS:;	'C' CLEAR IF TDT OBTAINED;	R0  KT ADDRESS OF BLOCK CONTAINING THE TDB;	R5  TDT ENTRY ADDRESS;  ERROR:;	'C' SET;	R1  ERROR CODE FROM $GTBL;;	R1,R2,R3 DESTROYED;; CALLED BY:;	EXECMGR: OPETRN: TO SPAWN A TXN;;-	ENTPT	GTDB	MOV	#TDBLUN,R3		; GET THE TDB FILE LUN	MOVB	T.NBK(R5),R1		; GET NUMBER OF BLOCKS	ASH	#3,R1			; MAKE       32 WORDS	MOV	.TDBBA+2,-(SP)		; GET	ADD	T.DAD(R5),(SP)		; DISC	MOV	.TDBBA+0,-(SP)		; ADDRESS	ADC	(SP)			; OF TDB	MOV	SP,R0	CALL	$GTBL			; GET THE BLOCK	MOV	R1,T.BDB(R5)		; SAVE THE BDB	MOV	(SP)+,(SP)+		; TAKE DISC ADDRESS OFF THE STACK	RETURN.PAGE.SBTTL	TPMLIB -- ..RTDB  (RELEASE TDB);;; INPUT CONDITIONS:;	R5  TDT ENTRY ADDRESS;; OUTPUT CONDITIONS;	R1,R2 DESTROYED;	ENTPT	RTDB	MOV	T.BDB(R5),R1		; GET THE BDB	CALLR	$RTBL.PAGE.SBTTL	TPMLIB -- ..TEND/SABOT/SEXRT  (CREATE THREAD  FOR END TRANSACTION);;+;; ..TEND       -- END A TRANSACTION;; SABOT  -- ABORT TRANSACTION;; SEXRT -- RESTART EXCHANGE;;; THIS ROUTINE ACTIVATES A NEW THREAD TO; PROCESS THE END OF A TRANSACTION;; INPUT CONDITIONS:;	R0	CCB FOR THE TRANSACTION;	R5	ERROR CODE FOR ABORT;;	UASR 0,1 MAP THE APPLICATION COMMON AREA.;; OUTPUT CONDITIONS:;;	NEW THREAD CREATED TO PROCESS THE END OF THE TRANSACTION;;	REGISTERS R0,R1,R2,R4 DESTROYED;;;; CALLING SEQUENCE:;;	CALL <ENTRTY POINT>;; CALLED BY:;	SEXRT BY EXECMGR: RSTART FOR TST CALL RESTRT;;-;	.ENABL	LSBSEXRT::	M      OV	#ERTH,R4		; EXCHANGE RESTART THREAD	MOV	#AT.EXR,-(SP)		;SAVE STATUS	BR	5$SABOT:	MOV	#ABTH,R4		; GET ABORT THREAD NAME	MOV	#AT.ABO,-(SP)		; SET ABORT STATE	BR	5$;	ENTPT	TEND;;;	MOV	#AT.ENT,-(SP)	 	; END TRANSACTION	MOV	#EDTH,R4		; GET THE THREAD ADDRESS;; if (NO SCB FOR TXN) OR (EXCHANGE RESTART, END TXN, OR TXN ABORT IN PROGRESS); then RETURN WITH SUCCESS; else SET APPROPRIATE STATUS (AT.EXR, AT.END, OR AT.ABO) IN ATT;5$:	TST	C.SCB(R0)		; CHECK CCB	BEQ	30$			; ALL DONE	MOV	C.IAT(R0),R1		; GET THE ATT	BIT      B	#AT.EXR!AT.ABO!AT.ENT,X.ST(R1) ; THREAD ALREADY ACTIVE	BNE	30$			; YES SO DO NOT START THREAD	MOVB	(SP),X.ST(R1)		; SET THE STATUS	MOV	R0,-(SP)		; SAVE THE CCB;; CALL THE SMALL POOL FOR A CONTEXT BLOCK:;	MOV	#EN.DCB,R1		; SIZE IN BYTES OF CONTEXT BLOCK20$:	CALL	..ALCB			; ALLOCATE C.B.					; R0 -> C.B.  ; R1,R2 DESTROYED	BCS	40$			; if NO SPACE then GOTO GET EMER. NODE;; START APPROPRIATE THREAD: EDTH FOR END TXN, ERTH FOR EXCHANGE RESTART, OR; ABTH FOR ABORT TXN.;25$:	MOV	(SP)+,R1		; GET CCB INTO R1 TO P      ASS TO END ROUTINE	TSTRT$	R0,R4,#EN.DCB		; START A THREAD FOR END TRANSACTION30$:	TST	(SP)+	RETURN40$:	TSTB	.EMER			; EMMERGENCY NODE IN USE?	BNE	50$			; YES	MOV	#.ENDCX,R0		; USE IT	INCB	.EMER	BR	25$50$:	$DELAY	BR	20$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- EDTH    (END TRANSACTION THREAD);; CODE FOR END TRANSACTION THREAD;; THIS THREAD TERMINATES A TRANSACTION INSTANCE;;	1. ALL STAGED ACTIONS ARE PERFORMED.;;	2. ALL RESOURCES FOR THE TRANSACTION ARE RELEASED;; INPUT CONDITIONS:;	R0 -- CONTEXT BLOCK ADDRESS;;	R1 -      - CCB FOR TRANSACTION TO BE TERMINATED;;	.ENABL	LSBEDTH:;;; GET THE SLOT TO SEE IF ANY STAGED ACTIONS;	MOV	R1,-(SP)		; SAVE THE CCB ADDRESS;	BIT	#CF.STA,C.FLG(R1)	; IS THERE A SLOT WITH  A STAGE AREA?	BEQ	50$			; NO SO NO WORK TO DO	MOV	R1,R0			; FIRST WRITE	CALL	WTSLT			; WRITE THE SLOT TO DISC	MOV	(SP),R1			; RESET THE CCB1$:	MOV	C.SLT(R1),R1		; SLOT ID	CALL	LODSLT			; GET IT	MOV	(SP),R4	BCC	3$	JMP	60$			; LOAD ERROR3$:;;ON RETURN R0 CONTAINS THE KT-11 ADDRESS OF THE MESSAGE;	MOV	R0,@#UISAR3		; SET ASR3 T      O MAP THE MESSAGE	BIT	#CF.JOR,C.FLG(R4)	; ANY ITEMS TOBE JOURNALLED?	BEQ	4$			; NO	CALL	..JUNL			; JOURNAL THE SLOT4$:	MOVB	60000+M.SDP,R2		; GET THE SYSTEM ADDRESS	BEQ	50$			; NO SYSTEM SO NO STAGE	ADD	R2,@#UISAR3		; NOW MAP TO SYSTEM AREA	MOV	C.TDB(R4),R2		; GET THE TDT	BEQ	50$			; IF ZERO CRASH RESTART	CMP	G.FSZ+60000,T.MFZ(R2)	; SET THE SMALLEST FREE SPACE	BHIS	50$			; IN THE SYSTEM WORKSPACE	MOV	G.FSZ+60000,T.MFZ(R2)	; ;50$:TACOMM:;;+;;	THIS ROUTINE PERFORMS THE COMMON PROCESSING FOR END AND; ABORT TRA      NSACTION:-;;	1.	DATA MANAGER IS CALLED TO DISCONNECTED THE CHANNELS AND;		RELEASE ANY RECORD LOCKS HELD BY THE TRANSACTION.;;	2.	THE TRANSACTION SLOT IS DELETED (..DMES);;	3.	ANY DISC SPACE ALLOCATED FOR THE TRANSACTION SLOT;		IS RELEASED, ANY THREADS SUSPENDED WAITING FOR DISC;		SPACE ARE RESUMED.;;	4.	THE ACT ENTRY IS RELEASED.;;	5.	THE CCB IS UNLINKED FROM THE OWNER SCB AND RETURNED;		TO THE FREE LIST.;;	6.	THE END TRANSACTION JOURNAL RECORD IS WRITTEN;;	7.	THE THREAD IS TERMINATED.;;-;;; COMMON PROCESSI      NG FOR END AND ABORT TRANSACTION;;  SP+00 CONTAINS POINTER TO CCB;  SP+02 RETURN ADDRESS;; REGISTERS DESTROYED BY TACOMM:;	APR3,R0,R1,R2,R3,R4,R5;	MOV	(SP),R1			; GET THE CCB	CALL	..TFLH			; FLUSH THE TIMER QUEUE					; DESTROY R0,R2,R3,R4,R5	MOV	C.SCB(R1),@#UISAR3	; GET SOURCE SCB	CALL	MQDEL			; FLUSH THE QUEUE;									;-7*CP06; DO A SEND TO DATA MAN;5$:	BISB	#AT.DMU,@C.IAT(R1)	; SET DM UNSTAGE IN-PROGRESS	MOV	#BF.END,.COMSB+B.FUN	; FUNCTION CODE	MOV	R1,.COMSB+B.DAT		; CCB FOR TRANSACTION	CALL	DMSEND			; S      END TO DATA MANAGER	TSUSP$				; WAIT FOR DATA MANAGER TO COMPLETE10$:	CALL	TSTABO			; ABORT ANY ACTIVE TST	BIT	#CF.LMA,C.FLG(R1)		; DID THE TRANSACTION VISIT						; A COMUNICATIONS MASTER STATION?	BEQ	20$				; NO	MOV	R1,.COMSB+B.DAT			; GET THE CCB	CLR	.COMSB+B.DAT+4			; CLEAR PARAEMTER	CALL	LMSEN1				; SEND TO LIM	TSUSP$					; AND WAIT20$:	MOV	C.SCB(R1),@#UISAR3		; MAP THE OWNER SCB	CMPB	#SY.LSL,S.TYP+60000		; LINK SLAVE STATION	BNE	30$				; NO	MOV	R1,.COMSB+B.DAT			; GET THE CCB	MOV	@#UISAR3,.COMSB+B.DAT+      4		; GET THE SCB	CALL	LMSEN1				; TELL LIM	TSUSP$30$:	MOV	C.TDB(R1),R5			; GET THE TDT	BEQ	40$	BITB	#TF.TRC,T.TFG(R5)		; TRANSACTION TRACED?	BEQ	40$				; NO	MOV	#BF.END,.COMSB+B.FUN		; SET END CODE	MOV	R1,.COMSB+B.DAT			; WITH CCB	MOV	#.TRMAN,R5			; GET TRACE NAME	CALL	SEND				; INFORM TRACE	TSUSP$					; WAIT FOR IT40$:	MOV	C.IAT(R1),R5		; GET ATT ENTRY	CLR	X.EDP(R5)		; CLEAR UNSTAGE COUNT	CLRB	(R5)			; SET STATE OVER	MOV	(SP)+,R1		; RETURN THE CCB ADDRESS	CALL	TICLR			; CLEAN UP;; KILL THE THREAD;	DEC	.NAC      TT			; REDUCE THE NUMBER OF ACTIVE TRANSACTIONS	CLR	C.SCB(R1)		; CLEAR IN USE MARKERTACOM1:;;; RETURN THE CONTEXT BLOCK TO THE SMALL POOL;	MOV	#EN.DCB,R1		; NUMBER OF BYTES TO RETURN	MOV	@$TTBAD,R0		; GET CONTEXT BLOCK	CMP	#.ENDCX,R0		; EMERGENCY NODE	BNE	55$			; NO	CLRB	.EMER	BR	57$55$:	CALL	..DALB			; RETURN THE SPACE57$:	TTRMN$				; TERMINATE THE TREAD60$:	MOV	R4,R1;; DISC ERROR WHEN READING SLOT INTO MEMORY;	MOV	#AB.IOX,R5	BIS	#CF.ABO,C.FLG(R1)	; SET ABORT FLAG	JMP	ABTH2			; AND ABORT THE TRANSACTION	.D      SABL	LSB;; CLEAN UP THE INSTANCE;; RETURN ALL THE ALLOCATED RESOURCES FOR THIS INSTACE:; DISC SPACE; SLOT; CCB;; INPUT CONDITIONS:;	R1 CCB;;TICLR:	MOV	C.SLT(R1),R2		; DELETE	BEQ	15$			; NO SLOT TO DELETE	MOV	R1,-(SP)		; SAVE THE CCB	CALL	..DMES			; THE MESSAGE	MOV	(SP)+,R1		; RESTORE THE CCB;; NOW FREE ANY SLOT DISC SPACE;15$:	MOV	C.IAT(R1),R4		; GET ACTIVE TRAN. TABLE ENTRY	MOV	C.DA1(R1),R2		; ANY DISC SPACE?	BEQ	20$			; NO SO DO NOT RELEASE	CALL	100$			; RELEASE SPACE20$:	MOV	C.DA2(R1),R2		; SCOND SLOT	BE      Q	30$	CALL	100$			; RELEASE SPACE30$:;; FREE THE CCB;;; FIRST UNLINK FROM THE SCB;	MOV	C.SCB(R1),@#UISAR3	; MAP THE SCB	MOV	#60000+S.CCB-C.CCB,R5	; MAKE CCB ENTRY IN SCB LIKE					; A CCB OFFSET.40$:	CMP	C.CCB(R5),R1		; IS THE NEXT IN THE CHAIN					; THE ONE TOBE DELETED?	BEQ	50$			; YES	MOV	C.CCB(R5),R5		; NO SO GET NEXT IN CHAIN	BR	40$			; AND TRY AGAIN50$:	MOV	C.CCB(R1),C.CCB(R5)	; UNLINK;; NOW RETURN TO FREE LIST;	MOV	#.CCBLH,R0		; LINK BACK INTO	CALLR	..QILE			; INTO THE FREE QUEUE;;; RELEASE DISC SPACE      : SET 'FREE' BITS IN TPSCOM 'BITMAP';100$:	CLR	R3			; GET SIZE	BISB	X.SZ(R4),R3		; OF SLOT	MOV	.MMAPB,R0		; BASE OF MAP	CALLR	..DLLC			; RETURN THE SPACE;; if A TST IS ACTIVE FOR THIS TXN (C.TCB <> 0); then SEND A BF.ABO CODE TO THE EXECMGR;	DO $DELAYs UNTIL TST IS ABORTED (C.TCB=0);TSTABO:	TST	C.TCB(R1)		; IS THERE AN ACTIVE TST (ONLY FOR ABORT)	BEQ	13$			; NO	MOV	#BF.ABO,.COMSB+B.FUN	; SET ABORT FUNCTON	MOV	R1,.COMSB+B.DAT		; PUT CCB IN PARAMETER WORD	CALL	EXSEND			; SEND TO EXECUTION MANAGER	TSUSP$12$:	$      DELAY				; NO SO WAIT	TST	C.TCB(R1)		;TST CLEANED UP?	BNE	12$			;NO - TRY AGAIN13$:	RETURN.PAGE.SBTTL	TPMLIB -- ..TABO  (ABORT TRANSACTION);;+;; ..TABO -- ROUTINE TO ABORT A TRANSACTION.;;; INPUT CONDITION :;	R0:	CCB OF TRANSACTION TOBE ABORTED;	R5:	ABORT CODE (WRITTEN IN THE JOURNAL RECORD);; OUTPUT CONDITIONS;;	if AN EXCHANGE RESTART IS IN PROGRESS;	then SET CCB(CF.ABO): TXN IS MARKED ABORTED;	else A NEW THREAD IS CREATED TO PROCESS THE ABORT TRANSACTION.;;	REGISTER R0,R1,R4 DESTROYED;; CALLING SEQUENCE:;      ;	CALL ..TABO;-;	ENTPT	TABO	BIS	#CF.ABO,C.FLG(R0)		; SET ABORT FLAG	BITB	#AT.EXR,@C.IAT(R0)		; if EXCHANGE RESTART IN PROGRESS	BNE	10$				; then GOTO RETURN W/O ABORT	BIC	#CF.ABO,C.FLG(R0)		; CLEAR ABORT FLAG FOR NOW	CALL	SABOT			; START ABORT THREAD10$:	RETURN.PAGE.SBTTL	TPMLIB -- ABTH    (ABORT TRANSACTION THREAD);; INPUT CONDITIONS:;;	THE REGISTERS IN THE CONTEXT BLOCK WILL BE SET AS FOLLOWS:;;	R0 -- CONTEXT BLOCK ADDRESS;	R1 -- CCB ADDRESS FOR TRANSACTION TO BE ABORTED;	R5 -- ABORT CODE;; REGISTERS DEST      ROYED: R0,R1,R2,R3,R4,R5,APR3,APR4;	.ENABL	LSBABTH:	BIS	#CF.ABO,C.FLG(R1)	; SET ABORT FLAG	MOV	R1,-(SP)		; SAVE THE CCB;; LOG IF R5 NON-ZER0;	TST	R5			; ALREADY LOGGED?	BEQ	4$			; YES	SWAB	R5			; GET ERROR IN HIGH BYTE	MOV	#.COMSB,R4		; SET TO FILL ERROR BUFFER	MOV	@$TTBAD,(R4)+		; MY CONTEXT BLOCK	MOV	R5,(R4)+		; ERROR CODE	MOV	@#UISAR0,(R4)+		; APP. COMMON	MOV	C.TDB(R1),(R4)+		; TRANSACTION	MOV	R1,(R4)+		; CCB	MOV	C.SCB(R1),(R4)+		; OWNER SCB	MOV	#7,R3			; CLEAR3$:	CLR	(R4)+			; THE	SOB	R3,3$			; REST	DIR      $	#.ESEND	BCS	4$	TSUSP$;; GET THE SCB OF THE STATION PROCESSING SLOT; BUMP # OF TIMES TXN ABORTED IN SCB; if ANY PROCESSING HAS BEEN DONE ON THIS TXN, AND THERE IS A STAGE AREA; then WRITE THE SLOT TO DISK;4$:	MOV	C.SCB(R1),@#UISAR3	; MAP THE OWNER SCB	INC	S.TABO+60000		; UPDATE NUMBER OF ABORTED TRANSACTIONS ON THIS STATION	BIT	#CF.GO,C.FLG(R1)	; ANY PROCESSING DONE FOR THE TRANSACTION	BEQ	ABTH2			; NO				;***CP09	BIT	#CF.STA,C.FLG(R1)	; IS THERE A STAGE AREA?	BEQ	5$			; NO	MOV	R1,R0			; SECURE THE	CALL	WT      SLT			; SLOT	MOV	(SP),R15$:	CALL	ABOCOM			; DO COMMON ABORT PROCESSING					; DESTROY APR3,APR4,R0,R2,R3,R4,R5ABTH2:	MOV	C.SCB(R1),@#UISAR3	; MAP SOURCE SCB	MOV	#.FMMAN,R5	;POINT AT TIM	CMPB	#SY.TIM,S.TYP+60000	; OWNER A TIM STATION?	BEQ	40$			; YES	CMPB	#SY.BSL,S.TYP+60000 ;IS IT A BATCH STATION?	BNE	50$		;NO - CONTINUE	MOV	#.BAMAN,R5		;POINT AT BATCH MANAGER40$:	BIT	#CF.CLD!CF.CRA,C.FLG(R1); TRANSACTION CLOSED					; CF.CLD IS SET FOR BATCH TXN ON NOWAIT	BNE	50$			; YES	MOV	#BF.ABO,.COMSB+B.FUN	; SET THE AB      ORT FUNCTION CODE	MOV	R1,.COMSB+B.DAT		; CCB	MOV	C.SCB(R1),.COMSB+B.DAT+4; AND SCB	CALL	SEND			; AND TELL THE MANAGER ABOUT IT					; DESTROY R5	TSUSP$50$:	BIT	#CF.HLD,C.FLG(R1)	; SPAWNED TRANSACTION AND STAGED?	BEQ	80$			; NO;; REMOVE FROM OWNER SPAWN STAGED LIST;	MOVB	C.OWN(R1),R5		; OWNER INDEX	MUL	#C.CSIZE,R5		;	ADD	.CCBBA,R5		; OWNER CCB ADDRESS60$:	CMP	C.SPN(R5),R1		; AT PRIOR CCB?	BEQ	90$			; YES	MOV	C.SPN(R5),R5		; NO -- GET NEXT	BNE	60$			; AND PROCESS;; STATE:;	SP+00 CCB ADDRESS;	SP+02 RETURN ADDRE      SS;80$:	BIS	#CF.CLD,C.FLG(R1)	JMP	TACOMM			; COMMOM END.ABORT PROCESSING90$:	MOV	C.SPN(R1),C.SPN(R5)	; UNLINK	BR	80$	.DSABL	LSB.PAGE;;; ROUTINES COMMON TO TRANSACTION ABORT AND RESTART;;; INPUT CONDITIONS:;	R1 -- CCB ADDRESS;	SP+00	RETURN ADDRESS;	SP+02	CCB ADDRESS;; OUTPUT CONDITIONS:;	UISAR1 -> 2ND HALF OF TPSCOM;	ERTH: REQUIRES C-SET IFF FAILED TO LOAD SLOT;; REGISTERS DESTROYED: APR3,APR4,R0,R2,R3,R4,R5;; CALLERS:;	ABTH: REQUIRES R1 PRESERVED;	ERTH: REQUIRES R1 PRESERVED;ABOCOM:;									;-1*CP06; SEE I      F THE SLOT IS IN A QUEUE;	MOV	C.CQE(R1),@#UISAR3	; GET THE SCB -- IF QUEUED	BEQ	5$			; NO;; TAKE THE BDB FOR THE SLOT OUT OF THE S.FST QUEUE OF THE SCB TO WHICH THIS; SLOT IS QUEUED.;	CALL	MQDEL			; SEARCH AND DELETE	CLR	C.CQE(R1);; TAKE THE BDB FOR THE SLOT OUT OF THE S.FST QUEUE OF THE SOURCE STATION'S SCB;5$:	MOV	C.SCB(R1),@#UISAR3	; NOW DO THE SAME TO	CALL	MQDEL			; THE REFLEXIVE QUEUE	MOV	C.SLT(R1),R1		; GET THE SLOT	BEQ	20$	CALL	LODSLT			; GET THE SLOT INTO MEMORY	BCS	20$			; ERROR	MOV	R0,@#UISAR3		;       MAP THE SLOT	MOV	2(SP),R0		; GET THE CCB BACK;; RE-SEND ALL STAGED MAILBOXES THAT WERE 'GOT' BY THIS TXN: THIS IS HOW; MAILBOX STATION MESSAGES GET OUT OF FIFO SEQUENCE.;	MOV	M.SDP+60000,@#UISAR4	; GET TO SYSTEM WORK SPACE					; APR4 := # 32W BLOCKS BETWEEN MCB BASE					;	AND SYSTEM W/S	BEQ	20$			; NONE	ADD	@#UISAR3,@#UISAR4	; MAP THE SYSTEM WORKSPACE	CALL	MSCAN			; RE-SEND MESSAGES;; DELETE ALL STAGED 'SENT' MESSAGES;	MOV	G.MES+100000,R1		; GET BDB FOR 1ST SENT MESSAGE	BEQ	20$			; NO MESSGAE10$:	CALL	$ACBD      			; GET THE BDB	MOV	R4,@#UISAR4		; MAP THE BDB	MOV	B.LINK+100000(R5),-(SP)	; SAVE NEXT MESSAGE POINTER	CALL	DMES1			; DELETE THE MESSAGE	MOV	(SP)+,R1		; GET THE NEXT MESSAGE	BNE	10$			; AND PROCESS;; ABORT ALL HELD, SPAWNED TXNS;20$:	MOV	2(SP),R0		; GET THE CCB	ROR	(SP)			; SAVE THE C BIT	CALL	STSCAN			; ABORT ALL HELD SPAWNED TRANSACTIONS	CLC	ROL	(SP)			; GET C BACK	MOV	2(SP),R1		; GET CCB BACK30$:	RETURN;*******************************************************************************;; S T S C A N;; for E      ACH TXN THAT WAS SPAWNED FROM THE CURRENT TXN (WHICH HAS EXCHANGE;	RECOVERY ENABLED, AND HENCE WAS HELD); do;   CLEAR HELD TXN BIT (CF.HLD);   if THE CURRENT TXN IS BEING ABORTED;   then CALL ..TABO TO ABORT THE HELD, SPAWNED TXN;   else !CURRENT TXN IS AT END OF EXCHANGE: UNSTAGE THE HELD TXN;	LOAD SLOT OF HELD TXN;	CALL STSND TO SEND EXHANGE MESSAGE FOR SPAWNED TXN;; INPUT CONDITIONS:;	RO -- OWNER CCB ADDRESS;; REGISTERS DESTROYED: APR4,R1,R2,R3,R4,R5;; CALLED BY:;	ABOCOM: REQUIRES NO REGISTERS PRESERVED;      	..DSMS: REQUIRES APR3,R0 PRESERVED;STSCAN:	MOV	UISAR3,-(SP)			; SAVE APR3		;***CP08	MOV	R0,R3				; R3 -> OWNER CCB						;		;***CP10;-2*CP1110$:									;**CP11+	MOV	C.SPN(R3),R0			; R0 -> CCB OF TXN TO UNSTAGE	BEQ	30$				; if NO MORE then GOTO DONE	MOV	C.SPN(R0),C.SPN(R3)		; SAVE POINTER TO NEXT TXN						; TO BE UNSTAGED IN ORIGINGAL						; CCB (C.SPN)	CLR	C.SPN(R0)			; INDICATE THAT THE TXN BEING						; UNSTAGED HAS NOT SPAWNED TXNS									;**CP11-	BIC	#CF.HLD,C.FLG(R0)		; CLEAR HOLD FLAG	BIT	#CF.ABO,C.F      LG(R3)		; NEED TO ABORT?	BEQ	15$				; NO;; ABORT SPAWNED TRANSACTION;	CLR	R5				; NO LOG REQUIRED	CALL	..TABO				; SET ABORT UP						; DESTROY R0,R1,R2,R4	BR	10$				; GET NEXT ENTRY	;***CP1115$:;; START STAGED TRANSACTION;									;**CP08+	MOV	R3,-(SP)			; SAVE R3 (CLOBBERED IN WTSLT)	MOV	R0,-(SP)			; SAVE HELD TXN'S CCB ADR	MOV	C.SLT(R0),R1			; R1 -> BDB OF HELD TXN'S SLOT	CALL	LODSLT				; LOAD HELD,SPAWNED TXN'S SLOT						; R0 := KT ADR OF SLOT						; DESTROY R1,R2,R4	MOV	R0,UISAR3			; APR3 -> MCB OF SLOT      	;***CP10	MOV	(SP)+,R4			; UNSAVE HELD TXN'S CCB ADR									;***CP12	CALL	STSND				; SEND HELD EXCHANGE MESSAGE						; DESTROY R0,R1,R2								;**CP08-;-2*CP11	MOV	(SP)+,R3			; UNSAVE R3		;***CP12	BR	10$30$:	MOV	R3,R0			; GET CCB BACK	MOV	(SP)+,UISAR3		; UNSAVE APR3	RETURN;*******************************************************************************;; M S C A N;; ROUTINE TO SCAN THE SYSTEM WORKSPACE FOR MAILBOX MESSAGES GOT BY; THE CURRENT EXCHANGE.;; if THE TXN IS BEING ABORTED; then RE-SEND THE MBX MES      SAGE TO THE MBX STATION FROM WHICH IT WAS 'GOT'; else DECREMENT THE # OF ACTIVE MESSAGES (S.MACT) FOR THE MBX STATION;; ENTRY CONDITIONS:-;;	ASR3 -- MAPS THE SLOT;	ASR4 -- MAPS THE SYSTEM WORKSPACE;	R0   -- CCB ADDRESS;;MSCAN:;; if 'GOT' MESSAGES ARE NOT STAGED; then GOTO RETURN; else INIDICATE THAT 'GOT' MESSAGES ARE NOT STAGED;	if UNSTAGING IS IN PROGRESS;	then GOTO RETURN;	BITB	#GF.GTM,G.FLG+100000		; ANY GOT MESSAGES?	BEQ	40$				; NO	BICB	#GF.GTM,G.FLG+100000		; CLEAR THE FLAG	BITB	#AT.DMU,@C.IAT(R0)		;       ALREADY UNSTAGED	BNE	40$				; YES	MOV	@#UISAR3,-(SP)			; SAVE ASR3	MOV	@#UISAR4,-(SP)			; AND ASR4	CALL	USE2				; MAP THE EXCANGE AREA	BCS	30$				; NO ENTRIES	MOV	C.IAT(R0),R3			; GET ATT ENTRY	CLR	X.EDP(R3)			; STAGE NUMBER10$:	CMPB	#GF.GTM,V.TYP(R5)		; GOT MESSAGE ENTRY?	BNE	20$				; NO	MOV	V.MSCB,@#UISAR4			; MAP THE MAILBOX SCB	BIT	#CF.ABO,C.FLG(R0)		; ABORT?	BNE	50$	DEC	S.MACT+100000			; REDUCE ACTIVE COUNT20$:	CALL	..GSTE				; GET NEXT STAGE ENTRY	BCC	10$30$:	MOV	(SP)+,@#UISAR4	MOV	(SP)+,@#UISAR340$:      	RETURN50$:;; INFORM MAILBOX OF ABORT;	MOV	R0,.COMSB+B.DAT			; CCB	MOV	@#UISAR3,.COMSB+B.DAT+4		; STAGE ENTRY MAP	MOV	R5,.COMSB+B.DAT+6		; ADDRESS OF STAGE ENTRY	MOV	#BF.ABO,.COMSB+B.FUN		; FUNCTION CODE	MOV	R5,-(SP)	MOV	#100000+S.TSK,R5	CALL	.SEND	MOV	(SP)+,R5	TSUSP$	BR	20$.PAGE.SBTTL TPMLIB -- MQDEL	(REMOVE MESSAGES FROM S.FST QUEUE);; M Q D E L;; ROUTINE TO SEARCH A S.FST QUEUE OF BDBs FOR A SPECIFIED SCB AND;	1) UNLINK THE SLOT BDBs AND;	2) UNLINK AND DELETE ALL NON-SLOT BDBs (REPLY MESSAGES); ASSOCIATE      D WITH A SPECIFIED TXN (CCB).;;; INPUT CONDITIONS:;;	R1 -- CCB;	UISAR3 SCB OF QUEUE TO SCAN;;; OUTPUT CONDITIONS:-;	APR3 -> SCB;;	APR3,APR4,R0,R2,R3,R4,R5 DESTROYED;;MQDEL:	;;; REGISTER USAGE:-;;	R0 -- CCB;	R1 -- CURRENT BDB;	R2 -- PREVIOUS BDB;	R3 -- DISPLACEMENT TO PREVIOUS BDB;	R4 -- BASE (KT) OF CURRENT BDB;	R5 -- DISPACEMENT TO CURRENT BDB;;	UISAR3	CURRENT BDB MAPPING;	UISAR4	PREVIOUS BDB MAPPING;; ALGORITHM:; GET NEXT BDB ON SCB'S S.FST QUEUE; if OWNER OF THIS BDB IS THE SPECIFIED TXN (B.OWN -> CCB);       then REMOVE FROM S.FST QUEUE;	if BDB IS NON FOR THE SLOT;	then DELETE THE MESSAGE;	MOV	R1,-(SP)		; SAVE THE CCB	MOV	R1,R0			; SET R0 TO CCB	CLR	-(SP)			;CLEAR COUNT OF DELETED MESSAGES	MOV	@#UISAR3,-(SP)		; SAVE THE SCB MAP	MOV	#S.FST-B.LINK,R5	; DUMMY SCB TO LOOK LIKE A BDB	CLR	R1			; NO PREVIOUS BDB;; GET THE NEXT BDB IN THE QUEUE;10$:	MOV	R5,R3			; SET PREVIOUS DISPLACEMENT TO BDB	MOV	@#UISAR3,@#UISAR4	; SET MAPPING FOR PREVIOUS BDB	MOV	R1,R2			; SET PREVIOUS BDB15$:	MOV	B.LINK+100000(R3),R1	; GET NEXT B      DB	BEQ	30$			; NO MORE	CALL	$ACBD			; GET THE BDB	MOV	R4,@#UISAR3		; MAP THE BDB	CMP	R0,B.OWN+60000(R5)	; THIS ONE TOBE DELETED?	BNE	10$			; NO;; DELETE THIS ENTRY FROM THE QUEUE;	INC	2(SP)			; UPDATE THE DELETE COUNT	MOV	B.LINK+60000(R5),B.LINK+100000(R3) ; RESET THE LINK	BNE	20$			; NO THE LAST IN TH QUEUE;; RESET THE LAST POINTER;	MOV	(SP),@#UISAR3		; MAP THE SCB	MOV	R2,S.LST+60000		; SET THE LAST POINTER20$:	CMP	R1,C.SLT(R0)		; if MESSAGE IS THE SLOT FOR THIS TXN	BEQ	15$			; then DON'T DELETE IT, GET NE      XT MESSAGE	CALL	DMES1			; else DELETE THE MESSAGE	BR	15$			; GET NEXT MESSAGE		;***CP0830$:	MOV	(SP),@#UISAR3		; MAP THE SCB	TST	(SP)+	SUB	(SP)+,S.MCT+60000	; REDUECE THE MESSAGE COUNT	MOV	(SP)+,R1	RETURN.PAGE.SBTTL	TPMLIB -- ..EXRT  ( RESTART AN EXCHANGE);+;; ..EXRT -- EXCHANGE RESATRT;; THIS ROUTINE IS CALLED TO RESART A TRANSACTION FROM; ITS LAST INPUT MESSAGE AFTER A FAULT HAS BEEN DETECTED ; IN THE PROCESSING OF THE MESSAGE.;; IF NO EXCHANGE RESTRAT IS SPECIFIED FOR THE TRANSACRION,; OR THE EXCHANGE HA      S BEEN RESTARTED MORE THAN THE SPECIFIED; NUMBER OF TIMES, THE TRANSACTION IS ABORTED..;; INPUT CONDITIONS:;;	R0 -- CCB ADDRESS FOR THE TRANSACTION;;-;;	THIS CALL IS NOW PROCESSED IN EXECUTION MANAGER;.PAGE.SBTTL	TPMLIB -- ERTH  (EXCHANGE RESTART THREAD);;; THIS THREAD IS INITIATED TO RESTART THE PROCESSING OF A TRANSACTION; FROM THE LAST INPUT MESSAGE:-;;	1. FLUSH ANY MESSAGES SENT BY THE EXCHANGE;	2. DISCONNECT ANY STREAMS, LOCKS, ETC SET-UP BY THE EXCHANGE;	3. ABORT ANY ACTIVE TST;	4. REQUEUE THE SAVED S      LOT TO RESTART THE EXCHANGE;; INPUT CONDITIONS:-;	R1 -- CCB FOR THE TRANSACTION;;ERTH:	BIS	#CF.ERT,C.FLG(R1)	; SET RESTART FLAG	INCB	C.NRS(R1)		; UPDATE RESTART COUNT FOR EXCHANGE	INC	.EXRST	MOV	R1,-(SP)		; SAVE THE CCB	CALL	ABOCOM			; DO COMMON PROCESSING	BCS	40$			; DISC ERROR ON THE SLOT	BIT	#CF.WRK,C.FLG(R1)	; ANY WORK FILES FOR TRANSACTION?;**CP08	BNE	10$			; YES SO GO TO DM	TST	C.CHN(R1)		; ANY CHANNELS CONNECTED?	BEQ	20$			; NO10$:	MOV	#BF.RST,.COMSB+B.FUN	; YES-- SO INFORM DATA MANAGER	MOV	R1,.COMSB      +B.DAT		; OF A RESTART	CALL	DMSEND	TSUSP$				; WAIT FOR DATA MANAGER20$:	CALL	TSTABO			; ABORT ANY ACTIVE TST;; DO ANY STAGED MESSAGES FOR THIS EXCHANGE;;; NOW READ THE SAVED SLOT IN;	MOV	C.SLT(R1),R1		; GET THE SLOT	CALL	$ACBD			;ACCESS THE BDB	MOV	R4,@#UISAR4		; MAP THE BDB	MOV	(SP),R0			; GET THE CCB BACK	MOV	C.IAT(R0),R2		; GET THE IAT	CLR	X.EDP(R2)		; RESET UNSTAGE COUNT	MOV	B.HVBN+100000(R5),-(SP)	; SAVE THE CURRENT	MOV	B.LVBN+100000(R5),-(SP)	; DISC ADDRESS OF THE SLOT	MOVB	X.SDA(R2),B.HVBN+100000(R5      ) ; RESET TO SAVED DISC ADDRESS	BMI	50$			; SLOT AREA IN ERROR -- ABORT	MOV	X.SDA+2(R2),B.LVBN+100000(R5) ; OF SLOT	CALL	$QIOR			; READ THE SLOT IN	MOV	(SP)+,B.LVBN+100000(R5)	; RESET TO OLD ADDRESS	MOV	(SP)+,B.HVBN+100000(R5) ; OF SLOT	TSUSP$				; WAIT FOR IT	MOV	(SP),R4			;GET CCB	MOV	@$TTBAD,R1		;GET IOSB ADDRESS	MOV	(R1),-(SP)		;SAVE STATUS	MOV	R4,R1	TSTB	(SP)+			;I/O SUCCESSFUL?	BMI	40$			; YES	MOV	B.ADDR+100000(R5),@#UISAR3 ; MAP THE SLOT;	BIT	#CF.ABO,C.FLG(R1)	; ABORT WHILE IN RESTART?	BNE	45$			; YE      S	BIC	#CF.CLD!CF.ABO!CF.ERT,C.FLG(R4); CCB FLAGS	MOV	#TACOM1,-(SP)		; SET RETURN ADDRESS	TST	-(SP)			; PUT A DUMMY WORD ON THE STACK	CALLR	RSEND			; DO A RESTART SEND40$:	BIS	#CF.ABO,C.FLG(R1)45$:	JMP	ABTH250$:	CMP	(SP)+,(SP)+	BR	40$;*******************************************************************************;; L O D S L T;; ROUTINE TO READ A SLOT (OR AN AREA FROM THE .WRK FILE) INTO THE CACHE; ON NON-I/O FAILURES: DO $DELAYS UNTIL SLOT IS READ IN;; INPUT CONDITIONS :;	R1 -- BDB ADDRESS OF SLOT;; OUTPUT       CONDITIONS:;	R0 -- KT-11 OF MCB OF SLOT;;	'C' SET IF DISC ERROR;; R1,R3,R4 DESTROYED;; CALLED BY:;	STSCAN: REQUIRES R3 PRESERVED;	EDTH;	ABOCOM;	..SDTM;	..DSMS;	..USET REQUIRES R3 PRESERVED;LODSLT:	MOV	R2,-(SP)		; SAVE R2	MOV	R1,-(SP)		; SAVE BDB10$:	CALL	$GTBB			; CALL CACHE TO GET THE SLOT					; R0 -> MCB (KT) ; R1,R2,R4 DESTROYED	BCC	40$			; GOT IT O.K	CMP	#ER.IOX,R1		; IO ERROR	BEQ	30$			; YES	$DELAY				; SPACE PROBLEM - WAIT A BIT	MOV	(SP),R1			; GET BDB	BR	10$30$:	SEC40$:	INC	(SP)+			; REMOVE BDB	MOV	(      SP)+,R2	RETURN.PAGE.SBTTL	TPMLIB -- ..GMBF  (GET MESSAGE BUFFER);+;; ..GMBF -- GET A MESSAGE BUFFER; ..GMB2 -- GET A MESSAGE BUFFER THAT ISN'T A SLOT;; GTSLOT -- GET A SLOT;;	if CCB EXISTS;	then	if TXN CLOSED ( CFLG(CF.CLD)=1 );		then GOTO GET BFR FOR NON-SLOT MSG;		else	if EXCHANGE ACTIVE or ABORTED;			then ERROR RETURN(ER.EAC);			else READ EXISTING SLOT INTO BFR;				on error ERROR RETURN(ERROR CODE FROM $GTBB);				if REQUESTED BFR SIZE > [(TST CXT AREA + TXN W/S;							  + EXCHANGE MSG) -;							 (TST CXT       AREA + TXN W/S)];				then ERROR RETURN(ER.VXF);				else RETURN;				fi;			fi;		fi;	else comment GET BFR FOR NOT-SLOT MSG;		CALL $GTBB(SIZE = XMSG SIZE + MCB SIZE);		INITIALIZE BDB;		if SLOT;		then BDB := XMSG FILE DISK ADR (DA) FOR SLOT;		fi;		INITIALIZE MCB;		if SLOT;		then CCB := MCB PTR;			if TRACE;			then TDB := TRACE;			fi;			FURTHER MCB INITIALIZATION;			if TRACE;			then INITIALIZE TRACE CONTEXT AREA OF SLOT;			fi;		fi;		FINISH MCB INITIALIZATION;	fi;;;; INPUT CONDITIONS:;	..GMBF:-;;	R5	SIZE OF BUFFER       REQUIRED (IN BYTES);;	R3	SCB ADDRESS (VIRTUAL);;	R4	CCB FOR THE TRANSACTION if GETTING SLOT;;	..GMB2:-							;**CP01+;	R0	CCB (=0 if no slot required);	R4	CCB (=? if no slot required);	R5	SIZE OF BFR REQUIRED (IN BYTES);									;**CP01-;;	GETSLOT:-;	R1 -- SLOT SIZE MOD 32.;;	R4	CCB FOR THE TRANSACTION;;;	UASR 0,1 MAP THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS:;	R5	KT-11 ADDRESS OF BUFFER;		THIS ADDRESS WILL POINT TO THE USER BUFFER AREA;		I.E. AFTER THE MCB AND ANY OTHER AREA REQUIRED BY;		THE SYSTEM      .;	R2	BUFFER IDENTITY -- USED IN LATER ROUTINES;;	'C' SET IF AN ERROR;	    R1 CONTAINS THE ERROR CODE : 'ER.EAC' EXCHANGE ACTIVE;					 'ER.NSP' NO SPACE;					'ER.IOX' DISC ERROR;					'ER.VXF' MESSAGE SIZE GREATER THAN;					         BUFFER IN SLOT.;;;	REGISTERS R0,R1.R3.R4.R5 DESTROYED.;;;; CALLING SEQUENCE:;;	CALL <ENTRY POINT>;	.ENABL	LSB;-;	ENTPT	GMBF;									;**CP01+	MOV	S.CCB(R3),R0		; IF SLOT REQUIRED MUST BE FOR TOP CCB					; SINCE THAT IS THE ONLY OPEN ONE;; ENTRY POINT ..GMB2: INPUT PARAMETER, R0 -      > CCB;	ENTPT	GMB2	PUSH	<R5>			; SAVE THE SIZE	ADD	#77,R5			; MAKE SIZE MOD 32	ASH	#-6,R5			;	MOV	R5,-(SP)		; AND SAVE IT	MOV	@#UISAR4,-(SP)		; SAVE ASR4;;	R0	CCB;	SP+00	SAVED ASR4;	SP+02	SIZE OF USER MESSAGE MOD. 32;	SP+04	SIZE OF USER MESSAGE IN BYTES;;;;; SEE IF WE NEED THE SLOT -- NOTE THE CCB MUST BE ATTACHED TO THIS SCB;			AND THE TRANSACTION OPEN.;	TST	R0			; if THERE ISN'T A CCB QUEUE	;**CP01-	BEQ	100$			; NO CCB SO NO SLOT REQUIRED	BIT	#CF.CLD,C.FLG(R0)	; TRANSACTION CLOSED?	BNE	100$			; YES SO SLOT       NOT REQUIRED					; NEED TO SEE IF IF AN EXCHANGE ALREDY ACTIVE					; IF IT IS RETURN ERROR STATE TO CALLER					; SO THE RESOURCES CAN BE RELEASED					; AND THE CORRECT RESTART PERFORMED.	BITB	#AT.EXA!AT.ABO,@C.IAT(R0)	; EXCHANGE ACTIVE,ABORTED OR QUEUED?	BEQ	20$			; NO10$:;; THERE IS ALREADY AN EXCHANGE IN THE SYSTEM; FOR THIS TRANSACTION .;	MOV	#ER.EAC,R1		; SET ERROR CODE15$:	SEC16$:	JMP	210$							;***CP0120$:	MOV	C.SLT(R0),R1		; GET SLOT ID	CALL	$GTBB			; FIND THE SLOT	MOV	R0,@#UISAR4		; THE MESSAGE	BC      S	16$			; ERROR RETURNED?		;***CP01									;CP01-122$:	CLR	R5			; GET SIZE OF TRAN W/S	BISB	M.TSZ+100000,R5		;	ADD	#M.MTST,R5		;ADD ON TST CONTEXT AREA	CLR	R1				; AND	BISB	M.MSZ+100000,R1			; AMOUNT TO MAP	SUB	R5,R1			; GET BUFFER SIZE FOR MESSAGE	CMP	2(SP),R1			; CHECK AVAILABLE SPACE	BLOS	23$			; O.K	MOV	#ER.VXF,R1		; RETURN BUFFER ERROR	BR	15$;23$:	JMP	200$			; DO COMMON PROCESSINGGTSLOT:;; NEED TO CREATE A SLOT;25$:	MOV	R1,-(SP)		; MAKE STACK	MOV	R1,-(SP)		; COMMON WITH GET BUFFER	MOV	@#UISAR4,-(SP)	M      OV	#MF.SLT,-(SP)		; SET SLOT REQUIRED MARKER	BR	150$			; GET BUFFER;; GET BUFFER FOR A NON-SLOT MESSAGE;100$:	MOV	2(SP),R1		; GET THE SIZE IN THE CORRECT REGISTER	ADD	#M.MCBZ,R1		; ALLOW FOR MCB 	CLR	-(SP)			; SET SLOT NOT REQUIRED MARKER150$:	MOV	#MMLUN,R3		; MESSAGE FILE LUN	CALL	$GSRB			; GET MESSAGE BUFFER	BCC	151$			; GOT IT OK	INC	(SP)+			; REMOVE BUFFER TYPE 	JMP	210$			; NO ERROR151$:;; INITALISE THE BDB FOR THIS MESSAGE;	MOV	R4,-(SP)		; SAVE THE CCB	CALL	$ACBD			; GET THE BDB	MOV	R4,@#UISAR4		; MAP       THE BDB	MOV	(SP)+,R4		; RESTORE THE CCB	MOV	R4,B.OWN+100000(R5)	; SET OWNER	MOVB	#BF.DTY!BF.BKP!BF.ALC,100000+B.FLG(R5)					; SET FLAGS -- DIRTY, KEEP BDB, ALLOCATE DISC SPACE	TST	(SP)			; IS THE BUFFER FOR A SLOT?	BEQ	153$			; NO	BIT	#CF.STA,C.FLG(R4) 	; STAGE AREA	BNE	152$			; YES SO SET UP THE DISC ADDRESS	BIT	#CF.NEX,C.FLG(R4) 	; EXCHANGE RECOVERY	BNE	153$			; NO152$:	BICB	#BF.ALC,100000+B.FLG(R5); CLEAR ALLOCATE FLAG;; MOVE THE SLOT DISC ADDRESS INTO THE BDB;	MOV	.MMFBA+2,100000+B.LVBN(R5); LOW BASE D      ISC ADDRESS	ADD	C.DA1(R4),100000+B.LVBN(R5); ADD DISPLACEMENT	MOVB	.MMFBA+0,100000+B.HVBN(R5) ; HIGH BASE DISC ADDRESS	ADCB	100000+B.HVBN(R5)	   ; ADD ANY CARY OVER153$:	MOV	R0,@#UISAR4		; MAP ONTO THE BUFFER	MOV	#100000+M.ID,R2		; SET TO INDEX THE MCB, PAST THE JOURNAL HEADER;; INITALISE THE MCB;;???????????????????????? include .error statements for offset checks ???????	MOV	R1,(R2)+		; MESSAGE IDENTITY	MOV	R4,(R2)+		; CCB ADDRESS	MOV	(SP),(R2)		; SET THE SLOT FLAG IF REQUIRED	BIS	#MF.NEW,(R2)+		; SET THE       NEW SLOT FLAG	MOVB	#M.MCBZ,(R2)		; DISPLACEMENT TO MESSAGE (MCB  CONTEXT)	TST	(SP)+			; IS THIS BUFFER FOR A SLOT?	BNE	159$	JMP	200$			; NO159$:;; INITALISE THE SLOT PARTS;	MOV	R1,C.SLT(R4)		; SAVE THE SLOT IDENTITY IN THE CCB	MOV	R4,-(SP)		; SAVE THE CCB	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	C.TDB(R4),R4		; GET INFORMATION FROM THE TRANSACTION					; DESCRIPTOR BLOCK;; CALL CACHE TO GET THE KT-11 ADDRESS OF THE TDB;	MOV	T.BDB(R4),R1		; BDB FOR TDB	CALL	$ACBDB			; GET THE KT-11 BUFFER ADDRESS	MOV	R0,@#UISAR3	      	; MAP THE TDB	MOV	R2,R1			; RETURN THE MCB ADDRESS	MOV	#M.MTST,R5		; MOV MCB AND TST CONTEXT SIZE IN	BITB	#TF.TRC!TF.64,T.TFG(R4)	; TRACE CONTEXT REQUIRED?	BEQ	154$			; NO	INC	R5			; ALLOW FOR TRACE154$:	MOVB	R5,(R1)			; STORE MESSAGE DISPLACEMENT	INCB	(R1)+			; ALLOW FOR MCB	MOV	R4,R3			;SAVE TDB OFFSET	MOV	#30000,R4		;SET TO ACCESS THE TDB	BISB	T.DSP(R3),R4	ASL	R4	CLRB	(R1)			; ASSUME NO TRANSACTION WORK SPACE	MOVB	Y.MSZ(R4),R3		; GET SIZE OF MESSAGE AREA IN SLOT	ADD	R3,R5			; ALLOW FOR TST/TRACE CONTEXT      	MOVB	Y.TWS(R4),R3		; GET SIZE OF TRANSACTION WORKSPACE	BEQ	155$			; NO WORK SPACE REQUIRED	MOVB	R5,(R1)			; STORE DISPALCEMENT TO WORKSPCE	INCB	(R1)			; ALLOW FOR MCB	ADD	R3,R5			; GET AMOUNT TO MAP IN TST155$:	TSTB	(R1)+			; STEP OVER DISPLACEMENT	MOVB	R5,(R1)+		; STORE AMOUNT TO MAP	MOVB	R3,(R1)+		; SIZE OF TRANSACTION WORKSAPCE	CLR	(R1)			; ASSUME NO SYSTEM WORKSPACE	TST	Y.SWS(R4)		; IS THERE ANY?	BEQ	157$			; NO	MOV	Y.SWS(R4),-(SP)		; SAVE THE SIZE	INC	R5			; ALLOW FOR MCB	MOV	R5,(R1)			; STORE DISPLAC      EMENT TO SYSTEM AREA;; NOW INITALISE THE SYSTEM WORK SPACE;; SET ASR3 TO MAP THE SYSTEM AREA;	MOV	@#UISAR4,@#UISAR3 	; GET MAPPING	ADD	(R1),@#UISAR3		;	MOV	#60000,R1		; ADDRESS OF SYSTEM AREA	CLR	(R1)+			; FLAGS  WORD ETC	MOV	#<G.ESZ+2>/2,(R1)+	; DISPLACEMENT TO FREE SPACE	MOV	(SP)+,R5		; GET SIZE IN 32 WORD BLOCKS	ASH	#5,R5			; CONVERT TO WORDS	SUB	#<G.ESZ+2>/2,R5		; ALLOW FOR HEADER	MOV	R5,(R1)+		; SIZE OF FREE SPACE	CLR	(R1)+			; NUMBER OF ENTRIES157$:	MOV	(SP)+,@#UISAR3		; RESET THE MAPPING;; INITALISE       THE TST CONTEXT BLOCK;	MOV	#100000+64.,R1		; POINT TO THE CONTEXT BLOCK	MOV	(SP)+,R5		; GET THE CCB					; RELATIVE TO ASR4;; IN A TST THE CONTEXT BLOCK WILL BE AT VITUAL ADDRESS; 140000 I.E MAPPED AT ASR6.;; SET UP THE CALLING STRUCTURE FOR THE INTER-LANGUAGE CALL; ROOT MODULE TO USER TST SUBROUTINE.;	MOV	#1,(R1)+		; NUMBER OF PARAMETERS(1 FOR THE MESSAGE)	MOVB	100000+M.MDP,R4	; GET DISPACEMENT TO MESSAGE	DEC	R4			; ALLOW FOR THE MCB	ASH	#6,R4			; MAKE INTO BYTE DISPLACEMENT	BIS	#140000,R4		; MAKE VIRTUAL A      DDRESS IN TST	MOV	R4,(R1)+		; PLACE IN CALLING STRUCTURE	MOVB	100000+M.DTW,R4		; CALCULATE THE VIRTUAL ADDRESS OF THE TRANSACTION W/S	BEQ	160$			; THERE ISN'T ANY	INC	-4(R1)			; EXTRA PARAMETER FOR WORKSPACE	DEC	R4			; ALLOW FOR THE MCB	ASH	#6,R4			; MAKE INTO A BYTE DISPLACEMENT	BIS	#140000,R4		; MAKE VIRTUAL ADDRESS160$:	MOV	R4,(R1)+		; STORE IN CALLING STRUCTURE	MOV	.EXMAN,(R1)+		; NAME  OF EXECTION MANAGER	MOV	.EXMAN+2,(R1)+	MOV	.DMMAN,(R1)+		; NAME  OF DATA MANAGER	MOV	.DMMAN+2,(R1)+	CLR	(R1)+			; CONT      EXT BLOCK ADDRESS FOR EXECUTION MANAGER	MOV	.DMCXB,(R1)		; CONTEXT BLOCK FOR DATA MANAGER	ADD	#M.TSQ-M.DXT,R1		; STEP TO TRAN-ID	MOV	C.TID+0(R5),(R1)+	; MOVE THE	MOV	C.TID+2(R5),(R1)+	; TRANSACTION ID IN	MOV	R5,(R1)+		; MOVE THE CCB IN	MOV	#100000+64.,R5		; CALCULATE THE	CALL	..CLSM			; CHECKSUM	CLR	R5			; ASSUME NO TRACE	CMPB	#M.MSIZ+M.TRCZ,100000+M.MDP	; IS THERE A TRACE CONTEXT?	BNE	170$			; NO;; INITALISE THE TRACE CONTEXT;	MOV	#100000+<M.MSIZ*64.>,R5	; POINT TO TRACE CONTEXT	MOV	.TRMAN+0,(R5)+		; TRACE       MANAGER	MOV	.TRMAN+2,(R5)+		; NAME	MOV	.TRCXB,(R5)+		; CONTEXT BLOCK170$:	MOV	R5,100000+<M.MCBZ*64.>+M.TXT ; SET TRACE CONTEXT MARKER200$:	MOVB	100000+M.MDP,R5		; DISPALCEMENT TO MESSAGE	ADD	@#UISAR4,R5		; MAKE MOD 32 ADDRESS TO MESSAGE AREA	MOV	4(SP),100000+M.BSZ 	; STORE BYTE SIZE IN MCB	MOV	M.ID+100000,R2		; GET THE MESSAGE ID	MOV	@#UISAR3,M.SST+100000	; SET THE SOURCE STATION	CLC210$:					; C-BIT MUSTN'T BE CHANGED BEFORE RETURN	MOV	(SP)+,@#UISAR4		; RESET MAP 4	MOV	(SP)+,(SP)+		; REMOVE SIZES FROM STA      CK	RETURN	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..SDMS  (SEND MESSAGE);+;; ..SDMS -- SEND MESSAGE;; ..SDTM -- SEND MESSAGE FROM TST;;;; INPUT CONDITIONS:;   ..SDMS:;	R1  -> 	TDB + Y.DNO;		B.0	NUMBER OF ROUTES;		B.1	NOT USED;		B.2	EXCHANGE TIMEOUT VALUE;		B.3	NOT USED;		WD.2	FIRST ROUTE -- KT-11 ADDR. OF SCB;		WD.N	LAST ROUTE;;   ..SDTM:;	R1	POINTER TO 6 CHARACTER STATION NAME. IF FIRST WORD IS ZERO;		THEN MESSAGE IS REFLEXIVE.;;   ..SDMS AND ..SDTM:;	R2	BUFFER (MESSAGE) ID;;	R3	KT-11 ADDRESS OF SOURCE SCB (SENDER       SCB);;	R4	ADDRESS OF CCB FOR TRANSACTION;;	UASR 0,1 MAP THE APPLICATION COMMON;;	NOTE	THE MCB FOR THE MESSAGE WILL ALREADY HAVE BEEN INITALISED;		BY THE GET BUFFER CALL;;		ASR3	IS USED TO MAP THE BUFFER;		APR4    IS USED TO MAP THE SYSTEM WORKSPACE;;OUTPUT CONDITIONS:;	'C' CLEAR IF MESSAGE QUEUED TO FIRST DESTINATION;	'C' SET IF ERROR;		R1 CONTAINS THE ERROR CODE;		'ER.TRT' TOO MANY ROUTES SPECIFIED;		'ER.IRN' INVALID STATION NAME;		'ER.NSP' NO SPACE FOR BUFFER;		'ER.IOX' DISC ERROR FROM CACHE;		'ER.TST' T      ST STATION SPECIFIED;;	REGISTERS APR4,R0,R2,R3,R4,R5 DESTROYED;;-	.ENABL	LSB	ENTPT	SDTM;; MAP MCB WITH APR3. THE 'MSET' ROUTINE SCREWS THE STACK: IT PUSHES THE; INITIAL APR3 IS ON THE STACK AFTER THE RETURN.;;;;;;;;	PUSH	UISAR3		; MSET ACTS AS IF THIS INSTRUCTION WERE EXECUTED	CALL	MSET			; GET THE BUFFER	BCC	10$	JMP	130$			; ERROR10$:;; STATE:;	SP+00	THE APR3 VALUE UPON ENTRY TO ..SDTM;	SP+02	RETURN ADDRESS;	UISAR3	MCB OF MESSAGE TO SEND;	MOV	C.SCB(R4),-(SP)		; ASSUME REFLEXIVE SEND	TST	@R1			; IS IT REFLE      XIVE?	BEQ	30$			;YES12$:	MOV	@#UISAR3,-(SP)		; SAVE THE MESAGE ADDRESS	MOV	R4,-(SP)		; SAVE THE CCB	CALL	..FSCB			; FIND THE SCB	MOV	(SP)+,R4		; GET THE CCB BACK	BCC	15$	JMP	160$			; NO SUCH STATION15$:	CMPB	#SY.TST,S.TYP+60000	; IS IT A TST STATION	BNE	20$			; YES SO RETURN ERROR	JMP	180$20$:	MOV	@#UISAR3,2(SP)		; SAVE THE SCB	MOV	(SP)+,@#UISAR3		; MAP THE MESSAGE30$:	MOVB	#1,M.NOR+60000		; SET TO ONE ROUTE	CLRB	M.DNR+60000		; DISPLACEMENT IN ROUTE TABLE	MOV	(SP)+,M.ROT+60000	; MOVE THE DESTINATION SCB IN	      MOVB	C.EXT(R4),M.MNO+60000	; SET EXCANGE NUMBER	BIT	#CF.JOP,C.FLG(R4)	; JOURNAL OUTPUT MESSAGES?	BEQ	40$			; NO	CALL	..LOG2			; YES SO LOG IT40$:	BIT	#CF.NEX,C.FLG(R4)	; NEED TO STAGE THE MESSAGE?	BNE	47$			; NO;; QUEUE MESSAGE TO LIST HEAD IN STAGE AREA;	MOV	@#UISAR4,-(SP)		; SAVE ASR4	MOV	@#UISAR3,-(SP)		; SAVE MESSAGE TO BE QUEUED	MOV	C.SLT(R4),R1		; GET THE SLOT ID	CALL	LODSLT			; GET THE SLOT	BCS	43$			; LOAD ERROR	MOV	R0,@#UISAR3		; MAP THE SLOT MCB	MOV	M.SDP+60000,@#UISAR4	; GET STAGE AREA	BEQ	45$			      ; NO SUCH THING	ADD	@#UISAR3,@#UISAR4	MOV	(SP),@#UISAR3		; GET MESSAGE TOBE QUEUED BACK	CALL	LINK			; LINK THE BDB IN	TST	(SP)+			; REMOVE SAVED MESSAGE ADDRESS	MOV	(SP)+,@#UISAR443$:	JMP	120$45$:	MOV	(SP)+,@#UISAR3	MOV	(SP)+,@#UISAR447$:	JMP	110$			; GOTO QUEUE MESSAGE TO STATION	;***CP10;;;STSND:;; ENTRY POINT TO START A HELD, STAGED TRANSACTION. THE ..SDMS HAS; ALREADY BEEN CALLED FOR THIS HELD TXN. ..SDMS RETURNED JUST BEFORE '70$'; BECAUSE THE SPAWNING TRANSACTION HAD EXCHANGE RECOVERY ENABLED, AND; HE      NCE THE SPAWNED TXN WAS HELD. WHEN THE SPAWNING TXN HAS SUCCESSFULLY; REACHED END OF EXCHANGE (..DSMS), 'STSCAN' IS CALLED. 'STSCAN' CALLS; STSND TO FINISH THE JOB ..SDMS STARTED: QUEUE THE EXCHANGE MESSAGE OF THE; SPAWNED TXN TO THE 1ST STATION ON THE ROUTING LIST.;; INPUT PARAMETERS;	R4	CCB;	APR3	MCB OF SPAWNED TXN (MUST BE IN CACHE);; CALLED BY:;	TPMLIB(STSCAN) REQUIRES R3 PRESERVED;	MOV	@#UISAR3,-(SP)			; SAVE MAPPING REGISTER (MCB)	MOV	C.CHN(R4),-(SP)			;GET TIMEOUT VALUE	;***CP01	CLR	C.CHN(R4)						;*      **CP01	BR	70$;;	ENTPT	SDMS;	CALL	MSET			; GET THE MESSAGE;; MSET ROUTINE WILL RETURN WITH THE INITIAL APR3 PUSHED ON STACK;; STATE:;	SP+00	INITIAL APR3;	SP+02	RETURN ADDRESS;; SET THE CF.RRQ BIT IFF NO REPLY IS REQUIRED FOR THIS EXCHANGE OR TXN IS; SPAWNED. NO SPAWNED TXN MAY SEND A REPLY.;	BCS	130$	BITB	#C2.SPN,C.FLG2(R4)	; if TXN IS A SPAWNED TXN	;***CP10	BNE	49$			; then GOTO SET NO REPLY REQUIRED;**CP10	BIC	#CF.RRQ,C.FLG(R4)	; ASSUME REPLY REQUIRED	BITB	#YS.WIT,Y.SAF-Y.DNO(R1) ; IS A REPLY MESSAGE REQUI      RED	BNE	50$			; YES49$:	BIS	#CF.RRQ,C.FLG(R4)	; NO SO CLEAR REPLY REQUIRED FLAG;**CP10;; MOVE TEH ROUTE LIST INTO THE MCB;50$:	MOV	(R1)+,R3		; GET NUMBER OF ROUTES	BIC	#177400,R3		; CLEAR OUT ANY RUBBISH	BEQ	150$			; NO ROUTES -- ERROR	CMP	#M.MRUT,R3		; TOO MANY?	BLO	150$			; YES -- ERROR;; SET UP NUMBER OF ROUTES (M.NOR), CURRENT ROUTE NUMBER (M.DNR), AND; THE ROUTE TABLE;	MOV	(R1)+,-(SP)		; SAVE THE TIMEOUT VALUE	MOVB	R3,M.NOR+60000		; STORE NUMBER OF ROUTES	MOV	#60000+M.ROT,R5		; ROUTE TABLE	CLRB	M.DNR+6      0000		; SET FOR FIRST ROUTE60$:	MOV	(R1)+,(R5)+		; STORE IN ROUTE TABLE	SOB	R3,60$			; DO NEXT ROUTE;; JOURNAL INPUT MESSAGES (TRADEF PARAMETER) IF NECESSARY;	BIT	#CF.JIP,C.FLG(R4)	; JOURNAL INPUT MESSAGES?	BEQ	65$			; NO	CALL	..LOG1			; LOG IT;; if THIS IS A SPAWNED TXN, AND THE SPAWNING TRANSATION HAS EXCHANGE RECOVERY; then DO NOT 'SEND' MESSAGE: THIS TXN WILL BE HELD UNTIL THE SPAWNING;	TXN SUCCESSFULLY REACHES END OF EXCHANGE (OR IF THE SPAWNING TXN IS;	ABORTED OR RESTARTS, THIS TXN WILL BE ABORTED);65      $:	BIT	#CF.HLD,C.FLG(R4)	; TRANSACTION ON HOLD (STAGED?)	BNE	140$			; YES -- COMPLETE ON RESTART;; SET UP EXCHANGE TIMER;70$:	CLRB	C.NRS(R4)		; CLEAR EXCHANGE RESTART COOUNT	INCB	C.EXT(R4)		; INC EXCHANGE NUMBER	MOVB	(SP)+,R5		; GET TIMEOUT VALUE	MOV	R4,-(SP)	CALL	..TCCB			; SET EXCHANGE TIMER ACTIVE					; R0,R2,R4,R5 DESTROYED	MOV	(SP)+,R4;; SET UP W/S FOR NEW EXCHANGE;; STATE: APR3 -> MCB;	MOV	M.SDP+60000,@#UISAR4	; GET DISPLACEMENT TO W/S ( # OF 32					;   BLOCKS FROM MCB BASE TO SYS W/S)	BEQ	90$			; NO       W/S	ADD	@#UISAR3,@#UISAR4	; APR4 MAPS THE W/S	MOVB	C.EXT(R4),100000+G.CEX	; SET EXCHANGE NUMBER	CLR	100000+G.MES		; CLEAR STAGE MESSAGE	CLR	100000+G.MES+2		; HEADER	MOV	G.FRE+100000,G.EEX+100000 ; POINT TO START OF SPACE FOR EXCHANGE	CLR	G.ESZ+100000		; CLEAR COUNT OF ENTRIES BY EXCHANGE;; if EXCHANGE RECOVERY IS ENABLED; then SECURE SLOT TO DISK AND DO ASSOCIATED BOOKKEEPING;90$:RSEND:	BIT	#CF.NEX,C.FLG(R4)	;EXCHANGE RESTART?	BNE	98$			;NO - CONTINUE	MOV	R4,R0	CALL	WTSLT			;YES - THEN SECURE THE SLOT	MOV	R      0,R4;; if NO SLOT (SAVED BEFORE A PREVIOUS EXCHANGE) IS IN DISK AREA 1; then DO NOT DO DISK AREA 1/2 BOOKKEEPING; else if THE DISK AREA 1 IS THE DISK AREA CURRENTLY BEING USED;	then USE DISK AREA 2 FOR THE SAVING OF THE CURRENT SLOT;	else USE DISK AREA 1 FOR THE SAVING TO THE CURRENT SLOT;92$:	MOV	C.DA1(R4),R2		;GET SECONDARY DISK ADDRESSES					; R2 -> # DISK BLOCKS BETWEEN THE BASE					;       OF THE <tpname>.WRK FILE AND					;	THE 1ST DISK AREA FOR THIS					;	TXN'S SLOT	BEQ	98$			;CONTINUE IF NONE	BIT	#CF      .2DA,C.FLG(R4)	;IS SECOND DISK ADDRESS CURRENT?	BNE	96$			;YES - SO CHANGE TO FIRST	MOV	C.DA2(R4),R2		;GET SECOND ADDRESS	BEQ	98$			;NONE - SO KEEP AS FIRST;; MAP APR4 ONTO THE SLOT;96$:	MOV	C.SLT(R4),R1		;GET SLOT BDB ADDRESS	MOV	R4,-(SP)	CALL	$ACBD			;MAP TO THE BDB; R4 = KT, R5 = BIAS	MOV	R4,UISAR4	MOV	(SP)+,R4;; PUT ADDRESS OF PROPER DISK AREA (C.DA1 OR C.DA2) INTO THE LBN OF THE;    SLOT IN THE SLOT'S BDB (B.LVBN AND B.HVBN).; SET THE DIRTY BIT FOR THE SLOT.; if DISK AREA 1 HOLDS THE CURRENT SLOT;  the      n DISK AREA 2 NOW HOLDS THE CURRENT SLOT (SET CF.2DA);  else DISK AREA 1 NOW HOLDS THE CURRENT SLOT (CLR CF.2DA);	MOV	.MMFBA+2,B.LVBN+100000(R5) ;SET LOW ORDER ADDRESS	ADD	R2,B.LVBN+100000(R5)	;ADD THE OFFSET	MOVB	.MMFBA,B.HVBN+100000(R5) ;SET HIGH ORDER ADDRESS	ADCB	B.HVBN+100000(R5)	;ADD IN CARRY IF NECCESSARY	BISB	#BF.DTY,B.FLG+100000(R5) ;SET DIRTY BIT	MOV	#CF.2DA,R5		;RESET DISK ADDRESS INDICATOR	XOR	R5,C.FLG(R4);; INDICATE THAT THE EXCHANGE AND TXN ARE ACTIVE.; SET THE CURRENT EXCHANGE NUMBER IN THE M      CB.;98$:	MOVB	#AT.EXA,@C.IAT(R4)	; SET THE STATUS	BIS	#CF.GO,C.FLG(R4)	; SET THE ACTIVE FLAG	MOVB	C.EXT(R4),M.MNO+60000	; SET THE MESSAGE NUMBER110$:	CALL	..MQUE			; QUEUE THE MESAGE;120$:	CLC130$:	MOV	(SP)+,@#UISAR3	RETURN140$:;; FOR HELD, SPAWNED TXNS (SPAWNED FROM TXNS WITH EXCHANGE RECOVERY ENABLED); UNLOCK STAGED SLOT BEFORE RETURNING.;	MOV	(SP)+,C.CHN(R4)	;SAVE TIME OUT VALUE			;***CP10	MOV	C.SLT(R4),R1		; GET ID	CALL	$RTBL	BR	120$;;;;150$:;; INVALID NUMBER OF ENTRIES;	MOV	#ER.TRT,R1	BR	200$160$:	MOV	      #ER.IRN,R1	BR	190$180$:	MOV	#ER.TST,R1			; TST STATION SPECIFIED190$:	CMP	(SP)+,(SP)+200$:	SEC	BR	130$;*******************************************************************************;; M S E T;; ROUTINE TO STUFF BOOKKEEPING DATA INTO AN MCB;	!!!! ON EXIT ASR3 IS SAVED ON THE STACK !!!!;; INPUT CONDITIONS;	R1 -> BDB OF MCB;	R3 = KT ADDRESS OF SCB OF STATION SENDING THE MESSAGE;	R4 = CCB OF TXN;	C.TID	TXN ID;	C.SCB	KT ADR OF SCB OF TXN'S SOURCE STATION;; OUTPUT CONDITIONS;	SP HAS ADDITIONAL WORD PUSHED: ORIGI      NAL UISAR3 WHEN MSET CALLED !!!!!;	M.TID	TIME (HOURS, MINUTES, SECONDS);	M.CCB	CCB OF TXN;	M.SST	SCB OF SOURCE STATION FOR MESSAGE (KT);	M.TSR	SCB OF SOURCE STATION FOR TXN (KT);	APR3	MCB OF MESSAGE;; REGISTERS DESTROYED: SP;MSET:	PUSH	<R1>	MOV	R2,R1	CALL	$ACBDB			; GET THE MESSAGE					; R0 CONTAINS THE KT-11 ADDRESS	POP	<R1>;; SCREW WITH STACK SO THAT ORIGINAL APR3 IS WHERE THE RETURN ADDRESS USED; TO BE, AND PUSH THE RETURN ADDRESS.;	MOV	(SP),-(SP)		; MOVE THE RETURN ADDRESS 	MOV	@#UISAR3,2(SP)		; SAVE AP      R3;; MAP APR3 ONTO MCB.; ******** DANGER ************************************* DANGER ****************; USE M+ EXEC DIRECTIVE TO GET TIME INTO MIDDLE OF MCB - RISKY IF M+ CHANGES;	OFFSETS. THE DIRECTIVE CURRENTLY CLOBBERS 3 WORDS BEFORE M.TIM (M.TID;	AND M.MNO) WITH THE YEAR, MONTH AND DAY, AND CLOBBERS 2 WORDS AFTER;	M.TIM (M.TSR AND M.SST) WITH TICKS AND TICKS PER SECOND. CURRENTLY;	THE CLOBBERED WORDS ARE INITIALIZED AFTER THE GTIM$ IS DONE.; ******** DANGER ************************************* DANGER *      ***************;	MOV	R0,@#UISAR3		; MAP ONTO THE MESSAGE	GTIM$S	#60000+M.TID		; GET TIME MESSAGE QUEUED (H,M,S);; BOOKKEEP: CCB, MSG SOURCE, TXN ID, TXN SOURCE STATION;	MOV	R4,M.CCB+60000		; SET THE CCB ADDRESS	MOV	R3,M.SST+60000		; SOURCE OF MESSAGE	MOV	C.TID(R4),M.TID+60000	; TRANSACTION	MOV	C.TID+2(R4),M.TID+60002	; SEQUENCE NUMBER	MOV	C.SCB(R4),M.TSR+60000	; TRANSACTION SOURCE500$:	RETURN				; WITH UISAR3 SAVED ON STACK	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..GMES  (GET MESSAGE);+;; ..GMES -- GET MESSAGE FROM       A SPECIFIED STATION;;; THIS ROUTINE RETURNS THE ADDRESS (KT-11) OF THE; NEXT MESSAGE IN THE SPECIFIED QUEUE; THE MESSAGE IS MARKED AS ACTIVE AND LOCKED IN MEMORY;; INPUT CONDITIONS;	R2 -- SCB POINTER (KT-11) OF MESSAGE SOURCE (QUEUE TO GET MESSAGE FROM);;	UASR 0,1 MAP THE APPLICATION COMMON;; OUTPUT CONDITIONS:;	R3 -- KT-11 ADDRESS OF MESSAGE (POINTS AT MCB FOR MESSAGE);	BDB FOR MESSAGE IS DE-QUEUED FROM SCB'S S.FST QUEUE;;	'C' SET IF ERROR;	R1 -- 'ER.NSP' CACHE ERROR - NO SPACE ;		'ER.IOX' CACHE ERROR - D      ISC REQAD ERROR;	      'ER.NMS' NO MESSAGE QUEUED.;;;	REGISTERS R0,R1,R2,R4,R5 DESTROYED;;; CALLING SEQUENCE:;;	CALL	..GMES;-	ENTPT	GMES	MOV	@#UISAR3,-(SP)		; SAVE MAPPING ASR	MOV	R2,@#UISAR3		; MAP THE SCB	MOV	S.FST+60000,R1		; GET ID OF NEXT MESSAGE	BEQ	40$			; RETURN WITH ERROR -- NO MESSAGE;; GET THE MESSAGE BDB;	CALL	$ACBD			; GET MESSAGE  BDB INFORMATION;; RETURNS WITH:;; R4 -- KT-11 ADDRESS OF BLOCK HOLDING MESSAGE DBD; R5 -- DISPLACEMENT IN BLOCK TO BDB;	MOV	R1,-(SP)		; SAVE THE BDB	MOV	@#UISAR4,-(S      P)		; SAVE ASR 4	MOV	R4,@#UISAR4		; MAP THE DESCRIPTOR BLOCK	MOV	100000+B.LINK(R5),S.FST+60000; SET SCB TO POINT TO NEXT MESSAGE	BNE	10$			; ITS NOT THE LAST IN THE QUEUE	CLR	S.LST+60000		; RESET LAST POINTER10$:	DECB	S.MCT+60000		; DECREMENT NUMBER IN THE QUEUE	CALL	$GTBB			; GET THE MESSAGE	BCS	60$			; ERROR	BISB	#BF.DTY,B.FLG+100000(R5); SET THE MESSAGE DIRTY FLAG;;  R0 CONTAINS THE KT-11 POINTER TO THE MESSAGE;	MOV	R0,@#UISAR3		; MAP THE MESSAGE	BISB	#MF.ACT,M.FLG+60000 	; MARK ACTIVE AND LOCKED	BITB	#M      F.SLT,M.FLG+60000	; IS THIS MESSAGE A SLOT?	BEQ	20$			; NO	MOV	M.CCB+60000,R3		; GET THE CCB FOR THE TRANSACTION	CLR	C.CQE(R3)		; CLEAR IN QUEUE INDICATOR;20$:	MOV	(SP)+,@#UISAR4		; RESTORE PREVIOUS MAP	TST	(SP)+			; CLEAN STACK AND CLEAR  C25$:	MOV	R0,R330$:	MOV	(SP)+,@#UISAR3		; RESET ASR3 	RETURN40$:	MOV	#ER.NMS,R1		; NO MESSAGE50$:	SEC	BR	30$60$:;; ERROR FROM GET MESSAGE INTO MEMORY;	MOV	@#UISAR4,R4		; GET BDB MAP	MOV	(SP)+,@#UISAR4		; PUT ASR4 BACK	CMP	#ER.IOX,R1		; IO ERROR	BEQ	70$			; YES	MOV	(SP),R1      ;; NO SPACE SO LINK THE MESSAGE BACK INTO THE QUEUE;	CALL	LKHD			; LINK TO HEAD	MOV	#ER.NSP,R170$:	TST	(SP)+	BR	50$.PAGE.SBTTL	TPMLIB -- ..DMES  (DELETE A MESAGE);;+;; ..DMES -- ROUTINETO DELETE A MESSAGE;;;;; INPUT CONDITIONS:;	R2	MESSAGE IDENTITY;	UASR 0,1 MAP THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS;	REGISTER R2 DESTROYED;	ASR3 DESTROYED;; CALLING SEQUENCE:;	CALL 	..DMES;-;;	ENTPT	DMES	MOV	R2,R1DMES1:	CALLR	$DLAR.PAGE.SBTTL	TPMLIB -- ..DSMS  (DISCARD A MESSAGE);+;; ..DSMS -- DISCARD A MESSAGE;; TH      IS ROUTINE IS CALLED WHEN PROCESSING OF THE MESSAGE IS; COMPLETE AT THE CURRENT DESTINATION STATION.;;; INPUT CONDITIONS:;	R3	KT-11 ADDRESS OF MESSAGE;;	UASR 0,1 MAP THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS:;;	IF THERE ARE ANY REMAINING DESTINATIONS FOR THE MESSAGE;	THE MESSAGE IS QUEUED TO ITS NEXT DESTINATION.;;	IF THERE ARE NO MORE DESTINATIONS FOR THE MESSAGE A CHECK;	IS MADE TO SEE IF END TRANSACTION SHOULD BE PERFORMED,;	IF NOT THE MESSAGE IS DELETED.;;	REGISTERS R0,R1,R2,R3,R4,R5 DESTROYED;;;       CALLING SEQUENCE:;	CALL	..DSMS;-	ENTPT	DSMS;	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	R3,@#UISAR3		; MAP ONTO THE MESSAGE;; ARE THERE ANY MORE DESTINATIONS; FOR THIS MESSAGE?;	DECB	60000+M.NOR		; ALL ROUTES PROCESSED?	BLE	10$			 ; YES;; QUEUE TO THE NEXT DESTINATION;	INCB	60000+M.DNR		; SET TO THE NEXT DESTINATION	INCB	60000+M.DNR		; INCREMENT BY 2	CMPB	60000+M.DNR,#<M.MRUT*2>	; PAST END OF TABLE	BNE	5$			; NO	CLRB	60000+M.DNR		; SET TO START OF TABLE (WRAP ROUND)5$:	CALL	..MQUE			; AND QUEUE IT	BR	25$;; IS THIS       MESSAGE A SLOT?;10$:	BIT	#MF.SLT,60000+M.FLG	;	BEQ	23$			; NO	MOV	M.CCB+60000,R0		; GET THE CCB FOR THE MESSAGE	BITB	#AT.EXR!AT.ABO,@C.IAT(R0) ; TRANSACTION BEING ABORTED?	BNE	25$			; YES SO LEAVE THE MESSAGE	MOV	R0,R1				; TAKE THE	CALL	..TFLH				; THE TIMER NODE	MOV	R1,R0				; OUT OF THE QUEUE;; NOTIFY LINK MANAGER OF END OF EXCHANGE IF LIM INITATED THE TRANSACTION;	MOV	@#UISAR4,-(SP)		; SAVE ORIGINAL APR4	MOV	C.SCB(R0),@#UISAR4	; MAP THE SOURCE SCB	CMPB	#SY.LSL,S.TYP+100000	; LIM STATION?	BNE	12$			; NO      	MOV	#BF.EEX,.COMSB+B.FUN	; SET END EXCHANGE CODE	MOV	C.SCB(R0),.COMSB+B.DAT+4; SEND SCB ADDRESS	MOV	R0,.COMSB+B.DAT		; AND CCB	CALL	LMSEND			; SEND TO LIM12$:	MOV	(SP)+,@#UISAR4		; RESTORE MAP (ORIGINAL APR4);; DO WE NEED TO SECURE THE SLOT?;	BIT	#CF.SQR,C.FLG(R0)	; if SLOT NOT REQUIRED FOR THIS TXN	BEQ	20$			; then NO NEED TO SAVE	BIT	#CF.NEX,C.FLG(R0)	; EXCHANGE RECOVERY?	BNE	20$			; NO;;; UNSTAGE ANY SENT MESSAGES;	MOV	@#UISAR4,-(SP)		; SAVE ORIGINAL APR4	MOV	M.SDP+60000,@#UISAR4	; GET TO STAGE AREA	BEQ      	19$			; NO WORK SPACE	ADD	@#UISAR3,@#UISAR4	; APR4 -> SYSTEM W/S	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	R0,-(SP)		; SAVE CCB11$:	MOV	G.MES+100000,R1		; GET A STAGED MESSAGE	BEQ	18$			; ALL DONE	CALL	$ACBD			; R4(KT)/R5(BIAS) -> STAGED MESSAGE BDB	MOV	R4,@#UISAR3		; APR3 MAPS BDB FOR STAGED MESSAGE	MOV	60000+B.LINK(R5),G.MES+100000 ; UNLINK	BNE	15$			; NOT LAST	CLR	100000+G.MES+2		; CLEAR LAST POINTER15$:	CALL	LODSLT			; GET INTO MEMORY					; R0 -> MCB (KT) ;R1,R4 DESTROYED	BCS	35$			; ERROR	MOV	R0,@#UISAR3		;       MAP THE MESSAGE	CALL	..MQUE			; QUEUE THE MESSAGE17$:	BR	11$			; GO GET THE NEXT MESSAGE;; STATE: APR4 -> SYSTEM W/S;18$:	MOV	(SP)+,R0		; R0 -> CCB	MOV	(SP)+,@#UISAR3		; APR3 -> MCB OF SLOT	CALL	MSCAN			; FLUSH ALL GOT MESSAGES	CALL	STSCAN			; START ALL HELD, STAGED TRANSACTIONS					; R1,R2,R4,R5,APR4 DESTROYED19$:	MOV	(SP)+,@#UISAR4		; UNSAVE ORIGINAL APR4;; SECURE THE SLOT TO DISC;; WRITE TO DISC (ADDRESS IN BDB);	CALL	WTSLT			; WRITE THE SLOT					; DESTROY R1,R2,R3,R4,R520$:;; SET END OF EXCHANGE STATUS      ;	MOVB	#AT.EEX,@C.IAT(R0)	;	MOV	60000+M.ID,R1	;GET MESSAGE BDB ADDRESS	CALL	$RTBL		;UNLOCK THE MESSAGE				; DESTROY R2;; IS THE TRANSACTION CLOSED?;	BIT	#CF.RRQ,C.FLG(R0)	; REPLY REQUIRED?	BEQ	40$			; YES AND NO SENT SO ABORT	BIT	#CF.CLD,C.FLG(R0)	; AND CHECK THE CLOSE FLAG	BNE	30$			; ITS CLOSED-- SO END THE TRANSACTION	BR	25$23$:	MOV	60000+M.ID,R1	; GET THE MESSAGE IDENTITY	CALL	DMES1			; DELETE THE MESSAGE25$:	MOV	(SP)+,@#UISAR3		;	RETURN30$:;; CLOSE THE TRANSACTION;	CALL 	..TEND	BR	25$			;;; NO REPLY SE      NT WHEN REQUIRED;35$:	MOV	(SP)+,@#UISAR3	MOV	(SP)+,@#UISAR4	MOV	#AB.IOX,R5	BR	45$40$:	MOV	#AB.NRM,R5		; ABORT CODE45$:	CALL	..TABO			; SET ABORT ACTIVE	BR	25$.PAGE.SBTTL	TPMLIB -- ..ULKM  (UNLOCK A MESSAGE AND REQUEUE TO HEAD).SBTTL	TPMLIB -- ..CLRK  (UNLOCK MESSAGE).SBTTL	TPMLIB -- ..RTUL  (UNLOCK AND RETRANSMIT);+;; ..ULKM -- UNLOCK MESSAGE AND RETURN TO HEAD OF QUEUE;; ..CLRK -- UNLOCK MESSAGE;; ..RTUL -- UNLOCK AND PLACE IN TIMER QUEUE FOR RETRANSMIT;;;; INPUT CONDITIONS;	UASR 0,1 MAP THE APPLICTION COM      MON;;	R3 KT-11 ADDRESS OF THE MESSAGE;;; OUTPUT CONDITIONS;	REGISTERS R2,R3,R4,R5 DESTROYED;; CALLING SEQUENCE:;	CALL < ENTRY POINT>;;-;	.ENABLE	LSB	ENTPT	CLK2	MOV	@#UISAR3,-(SP)		; SAVE THE MAPPING KT	MOV	R3,@#UISAR3		; MAP THE MESSAGE	MOV	M.ID+60000,R1		; GET THE MESSAGE ID	CALL	$RTBL			; RELEASE THE BLOCK	BR	20$			; GO UNLOCK;	ENTPT	RTUL;;	CALL	..TFQM			; SET TIMER TO RETRANSMIT;;;	ENTPT	ULKM;	MOV	@#UISAR3,-(SP)		; SAVE APR3	MOV	R3,@#UISAR3		; MAP THE MESSAGE	MOV	R3,-(SP)		; SAVE THE ADDRES;;; NEED TO RE      QUEUE THE MESSAGE TO THE HEAD OF THR QUEUE;	MOV	M.ID+60000,R1		; GET THE IDENTITY OF THE MESSAGE	CALL	$ACBD			; GET THE BDB ENTRY	MOVB	M.DNR+60000,R3		; GET THE SCB	MOV	60000+M.ROT(R3),@#UISAR3; TO QUEUE TO;; MAP THE SCB;	CALL	LKHD			; LINK TO HEAD OF QUEUE	MOV	(SP)+,@#UISAR320$:	BICB	#MF.ACT,M.FLG+60000 	; CLEAR ACTIVE	MOV	(SP)+,@#UISAR3	RETURN;;	ENTPT	CLRK	CALLR	$RTBLLKHD:	INCB	60000+S.MCT		; INCREMENT COUNT OF QUEUED MESSAGES	MOV	60000+S.FST,-(SP) 	; SAVE FIRST LINK	BEQ	30$			; FIRST IN QUEUE10$:	MOV	R1,      60000+S.FST		; SET SCB TO POINT TO THIS ONE	MOV	R4,@#UISAR3		; MAP THE DESCRIPTOR BLOCK	MOV	(SP)+,B.LINK+60000(R5) ;	CLRB	B.USE+60000(R5)		; CLEAR LOCK COUNT	RETURN30$:	MOV	R1,60000+S.LST	BR	10$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..MQUE  (QUEUE A MESSAGE TO A STATION);;+;; ..MQUE -- QUEUE A MESSAGE TO ITS CURRENT DESTINATION;; THIS ROUTINE QUEUES THE SPECIFIED MESSAGE TO THE STATION; SPECIFIED BY THE CURENT ROUTE INFORMATION IN THE MESSAGE'S; MESSAGE CONTROL BLOCK.;; THE MESSAGE IS QUEUED TO THE END OF THE QUE      UE.; IF NESSACCARY THE PROCESSING ELEMENT ASSOCIATED WITH THE STATION; IS ACTIVATED.;; INPUT CONDITIONS:;	ASR3 MAPS THE MCB OF MESSAGE TO BE QUEUED;		(MCB: M.ROT/M.DNR SPECIFIES STATION TO QUEUE MESSAGE TO);	UASR 0,1 MAP THE APPLICATION COMMON AREA;; OUTPUT CONDITIONS:;;	R1,R2,R4,R5 DESTROYED;	ASR3 DESTROYED;; CALLING SEQUENCE;;	CALL ..MQUE;-;;	ENTPT	MQUE;; ASR4 IS USED TO MAP THE SCB TO QUEUE THE MESSAGE TO;	MOV	@#UISAR4,-(SP)		; SAVE ASR 4	MOVB	60000+M.DNR,R2		; GET DISPACEMENT TO CURRENT ROUTE	MOV	60000+      M.ROT(R2),@#UISAR4; AND MAP THE STATION TO QUEUE TO;;	PROCESS ANY REDIRECTION;5$:	BITB	#SF.RDP,100000+S.FLG	; STATION REDIRECTED?	BEQ	10$			; NO	MOV	S.FST+100000,@#UISAR4	; GET THE REDIRECTED STATION	BR	5$			; SEE IF THE NEW ONE IS REDIRECTED10$:	BICB	#MF.ACT,M.FLG+60000	; CLEAR THE MESSAGE FLAGS	MOV	M.CCB+60000,R5		; GET THE CCB FOR THE TRANSACTION	BEQ	17$			; TPMOD MESSAGE;; if MESSAGE IS A SLOT;  then PUT SCB ADDRESS (KT) TO WHICH SLOT IS QUEUED IN CCB (C.CQUE);  else if MESSAGE IS BEING SENT TO THE TXN'      S SOURCE SCB (IS A REPLY);	 then if TXN IS CLOSED or REPLY IS NOT REQUIRED FOR THIS TXN;		then !ASSUME THIS IS AN ILLEGAL (2ND OR UNREQUIURED) REPLY;		     DELETE THE SLOT;		     ABORT THE TXN;		else INDICATE THAT NO MORE REPLIES ARE REQUIRED (PERMITTED);	BITB	#MF.SLT,M.FLG+60000	; IS THIS A SLOT	BEQ	15$			; NO	MOV	@#UISAR4,C.CQE(R5)	; SET THE CURRENT QUEUE  POINTER	BR	17$			; GOTO CONTINUE			;***CP0715$:	CMP	@#UISAR4,C.SCB(R5)	; MESSAGE FOR REPLY STATION?	BNE	17$			; NO	BIT	#CF.CLD!CF.RRQ,C.FLG(R5) ;TRANSA      CTION CLOSED OR REPLY NOT REQUIRED	BEQ	16$	MOV	60000+M.ID,R1		;DELETE THE SLOT	CALL	DMES1	MOV	R5,R0			;GET CCB	MOV	#AB.RCL,R5		;AND ABORT THE TRANSACTION	CALL	..TABO	BR	40$16$:	BIS	#CF.RRQ,C.FLG(R5)	; YES SO CLEAR REPLY REQUIRED FLAG					;  INDICATE THAT NO MORE REPLIES ARE					;  PERMITTED FOR THIS TXN17$:	INCB	100000+S.MCT		; UPDATE THE NUMDER OF MESSAGES					; QUEUED TO THE STATION.	INC	S.TOT+100000		; TOTAL QUEUED TO THIS STATION	CMPB	100000+S.MCT,100000+S.THD; HAVE WE REACHED THE MESSAGE THRESHOLD					       ; FOR THIS STATION?	BLO	20$			; NO;; MAY NEED TO TRIGGER THE PROCESS;	TSTB	100000+S.SAT		; IS THE PROCESS WAITING FOR					; A MESSAGE?	BNE	20$			; NO -- DO NOT TRIGGER;; NEED TO TRIGGER THE PROCESSING ELEMENT ASSOCIATED; WITH THIS STATION.;	MOV	R5,-(SP)		; SAVE R5	MOV	#BF.MES,.COMSB+B.FUN	; FUNCTION CODE	MOV	@#UISAR4,.COMSB+B.DAT	; SCB ADDRESS	MOV	#100000+S.TSK,R5	; ADDRESS OF TASK NAME	CALL	SEND			; INFROM MANAGER	MOV	(SP)+,R520$:	CALL	LINK			; LINK THE MESSAGE40$:	MOV	(SP)+,@#UISAR4	RETURN;**************      *****************************************************************;; ROUTINE TO LINK A BDB TO A MESSAGE QUEUE;; INPUT CONDITIONS;	APR3 -> MCB OF MESSAGE;	APR4 -> SCB OF STATION TO QUEUE MESSAGE TO;; OUTPUT CONDITIONS;	BDB OF SPECIFIED MESSAGE QUEUED TO S.FST QUEUE OF SPECIFIED SCB;LINK:	MOV	60000+M.ID,R1		; GET THE IDENTITY OF THE MESSAGE	MOV	R1,-(SP)		; AND SAVE	CALL	$ACBD			; AND GET THE BDB ENTRY FOR THE MESSAGE	MOV	R4,@#UISAR3		; MAP THE MESSAGE DESCRIPTOR BLOCK;; ASR3 NOW MAPS THE MESSAGE BDB BLOCK;;; N      OW QUEUE THE MESAGE TO THE END OF THE STATION QUEUE;; R1 MESSAGE IDENTITY; R5    DISPLACEMENT TO BDB; UISAR3 MAPS THE MESSAGE BDB BLOCK; UISAR4 MAPS THE SCB;	CLRB	60000+B.USE(R5)		; CLEAR LOCK COUNT	CLR	60000+B.LINK(R5)	; CLEAR FORWARD LINK	MOV	100000+S.LST,R1		; GET IDENTITY OF PREVIOUS LAST	BEQ	40$			; THERE WASN'T ONE.	CALL	$ACBD			; GET THE BDB BLOCK	MOV	R4,@#UISAR3		; MAP THE DESCRIPTOR BLOCK	MOV	(SP),60000+B.LINK(R5) 	; SET THE FORWARD LINK30$:	MOV	(SP)+,100000+S.LST	; POINT TO LAST	RETURN40$:	MOV	(SP      ),S.FST+100000	; SET FIRST POINTER	BR	30$.PAGE.SBTTL	TPMLIB -- WTSLT  (WRITE SLOT TO DISC);; W T S L T;; if SLOT IS ON DISK OR BEING LOADED;  then RETURN WITH SUCCESS;  else WRITE SLOT TO DISK on error X.SDA = -1;; INPUT CONDITIONS:;;	R0 -- CCB ADDRESS;; OUTPUT CONDITIONS:;   ON SUCCESS:;	SLOT WRITTEN TO DISK;	SLOT DIRTY BIT CLEARED;	ATT(X.SDA) = LBN OF SLOT;   ON ERROR:;	ATT(S.SDA) = -1;; R1,R4,R5 DESTROYED;; CALLED BY:;	ABTH +;WTSLT:	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	C.SLT(R0),R1		; GET THE SLOT IDENTIT      Y	CALL	$ACBD			; GET THE BDB INFORMATION	MOV	R4,@#UISAR3		; MAP THE BDB	MOV	@$TTBAD,R4		; CLEAR DISC ERROR INDICATOR	BITB	#BF.OND!BF.LOA,B.FLG+60000(R5)	; SLOT ON THE DISC ALREADY?	BNE	10$			; YES	MOV	R0,-(SP)		; SAVE THE CCB	CALL	$QIOW			; WRITE THE SLOT					; DESTROY APR3,R0,R2,R3	MOV	(SP)+,R0		; RESTORE THE CCB	TSUSP$				; WAIT FOR IT	TSTB	(R4)			; DISC ERROR?	BMI	20$			; YES10$:	BICB	#BF.DTY,B.FLG+60000(R5)	; CLEAR THE DIRTY FLAG	MOV	C.IAT(R0),R4		; GET THE ACTIVE TRAN. TABLE ENTRY	ADD	#X.SDA,R4		; POIN      T TO DISC ADDRESS IN ATT	MOVB	B.HVBN+60000(R5),(R4)+	; SAVE	CLRB	(R4)+			; CLEAR HIGH BYTE TO SHOW ALLOCATED	MOV	B.LVBN+60000(R5),(R4)	; SLOT DISC ADDRESS15$:	MOV	(SP)+,@#UISAR3	RETURN20$:	MOV	C.IAT(R0),R4		; GET THE ATT	MOV	#-1,X.SDA(R4)		; MARK SLOT AREA INVALID	BR	15$.PAGE.SBTTL	TPMLIB -- ..FEXC  (FIND EXCHANGE ENTRY IN TDB);; ..FEXC  FIND EXCHANGE ENTRY IN SPECIFIED TDB;;; INPUT CONDITIONS;;	R3 -- POINTER TO EXCHANGE NAME TO FIND;	R4 -- BASE ADDRESS OF BLOCK HOLDING TDB;	R5 -- DISPALCEMENT TO FIRST EXCH      ANGE ENTRY;;; OUTPUT CONDITIONS;;	'C' SET IF NOT FOUND;;	R5 -- DISPLACEMENT TO EXCHANGE;;	ENTPT	FEXC	MOV	@#UISAR3,-(SP)		; SAVE ASR3	MOV	R4,@#UISAR3		; MAP THE TDB BLOCK10$:	CMP	(R3),60002(R5)		; CHECK FIRST 2 CHARA.	BNE	20$			; NOT THIS ONE	CMP	2(R3),60004(R5)		; NEXT TWO	BNE	20$			; NOT THIS ONE	CMP	4(R3),60006(R5)		; LAST TWO	BEQ	30$			; GOT THE REQUIRED ENTRY20$:	TST	60000(R5)		; END OF TDB?	SEC	BEQ	35$			; YES	ADD	60000(R5),R5		; GET NEXT ENTRY	BR	10$30$:	CLC35$:	MOV	(SP)+,@#UISAR3		;	RETURN.PAGE.SBTTL      	TPMLIB -- ..GSTE  (GET NEXT STAGGED ENTRY);+;; ..GSTE -- GET NEXT ENTRY IN SYSTEM WORKSPACE;;;; INPUT CONDITIONS:;	UISAR3	MAPS THE STAGE AREA;	R3	ATT ENTRY FOR THE TRANSACTION INSTATANCE;	R5	CURRENT ASR3 RELATIVE ADDR. OF ENTRY;	R4	NUMBER OF ENTRIES LEFT TO PROCESS;; OUTPUT CONDITIONS:;	'C' CLEAR IF NEW ENTRY FOUND;	R5 UPDATED;	.ENABL	LSB;	'C' SET IF NO MORE ENTRIES;; CALLING SEQUENCE:;	CALL	..GSTE;;-;	ENTPT	GSTE	INC	X.EDP(R3)		; UPDATE UNSTAGE COUNT;..GST1::	SEC			; ASSUME NO MORE ENTRIES	DEC	R4		; REDUEC      E ENTRIES LEFT TO PROCESS	BLE	10$		; GO AND GET NEXT ENTRY	ADD	V.SIZ(R5),R5	; STEP TO NEXT ENTRY	SUB	#60000,R5	; REMOVE ASR3 BIAS	ASR	R5		; MAKE WORD OFFSETGSTE2:	MOV	R5,-(SP)	; SAVE  DISPLACEMENT	ASH	#-5,R5		; GET TO 32 WORD (64 BYTE) OFFSET	ADD	R5,@#UISAR3	; STEP ON ASR3 TO MAP NEAREST 32. WD. BOUNDARY	MOV	(SP)+,R5	; REFORM THE	ASL	R5		; MAKE BYTE OFFSET	BIC	#177700,R5	; ADDRESS OF THE ENTRY	BIS	#60000,R5	; TO NEW ASR3 BASE	CLC10$:	RETURN	.DSABLE	LSB.PAGE.SBTTL	TPMLIB -- ..USET  (SET TO SCAN SYSTEM WORKSP      ACE);;; ..USET -- INITALISE PARAMETERS FOR SCAN OF SYSTEM WORKSPACE;;; INPUT CONDITIONS:-;;	R2 -- CCB;	R3 -- MASK FOR ENTRIES REQUIRED;		( FLAG MASK);   USE1:;	R0 -> MCB FOR SLOT (KT11);; OUTPUT CONDITIONS:-;;	UISAR3 -- MAPS THE FIRST ENTRY;;	R4 -- NUMBER OF ENTRIES IN WORKSPACE;	R5 -- VIRTUAL ADDRESS OF FIRST ENTRY;	.ENABL	LSB;	ENTPT	USET	MOV	R0,-(SP)		; SAVE THE	MOV	R1,-(SP)		; VOLATILE REGISTERS	MOV	C.SLT(R2),R1		; GET THE BDB FOR THE SLOT	CALL	LODSLT			; GET THE KT-11 OF THE SLOT					; R0 -> MCB (KT) ;       R1,R3,R4 DESTROYED	MOV	R0,@#UISAR3		; MAP THE MCB	MOV	(SP)+,R1		; RESTORE	MOV	(SP)+,R0		; THE REGISTERS	BCS	25$			; DISC READ ERROR	BR	10$			;;; ENTRY POINT IF  ADDRESS OF SLOT KNOWN;	ENTPT	USE1	MOV	R0,@#UISAR3		; MAP THE MCB10$:	MOV	C.IAT(R2),R5		; GET THE ACTIVE TRAN ENTRY	CLR	-(SP)			; CLEAR UNSATGE RESTART COUNT	BIT	#CF.CRA,C.FLG(R2)	; CRASH RESTART?	BEQ	11$	MOV	X.EDP(R5),(SP)		; SAVE THE UNSATGE COUNT11$:	CLR	X.EDP(R5)		; CLEAR UNSTAGE COUNT	TST	M.SDP+60000		; IS THERE A SYSTEM AREA?	BEQ	30$			; NO	ADD      	M.SDP+60000,@#UISAR3	; MAP THE W/S	BITB	R3,G.FLG+60000		; SEE IF REQUIRED ENTRIES IN W/S	BEQ	30$			; NO	MOV	R5,R3			; SAVE ATT ADDRESS	MOV	#60002+G.ESZ,R5		; POINT TO THE FIRST ENTRY	MOV	G.NET+60000,R4		; NUMBER OF ENTRIES	BEQ	30$			; NO ENTRIES SO RETURN CONDITION	BIT	#CF.ERT,C.FLG(R2)	; EXCHANGE BEING RESTARTED?	BEQ	15$			; NO14$:	MOV	G.ESZ+60000,R4		; GET NUMBER OF ENTRIES FOR EXCGNAGE	BEQ	30$			; NONE - SO RETURN CONDITION	MOV	G.EEX+60000,R5		; POINT TO AREA FOR CURRENT EXCGANGE	CALL	GSTE215$:	TST	(SP)      			; UNSTAGE COUNT?	BEQ	20$			; NO16$:	CALL	..GSTE			; GET TO	BCS	20$			; REQUIRED	DEC	(SP)			; ENTRY	BGT	16$20$:	INC	(SP)+			; CLEAN STACK25$:	RETURN30$:	SEC	BR	20$USE2:;; ENTRY POINT TO GET SET FOR EXCHANGE UNSTAGE;	CLR	-(SP)	BR	14$	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- ..GTSA  (GET SPACE FROM SYSTEM WORKSPACE);;; ..GTSA -- GET SPACE FOR STAGING FROM THE SYSTEM WORKSPACE;	    FOR THE TRANSACTION INSTANCE.;;; INPUT CONDITIONS:-;;	R2 -- CCB;	R4 -- SIZE IN BYTES OF SPACE REQUIRED (NOT COUNTING HEADER, V.END BYTES)      ;	R5 -- CODE/FLAGS FOR ENTRY REQUIRED;		HIGH BYTE -- TYPE CODE;		LOW  BYTE -- ENTRY TYPE FLAG;; OUTPUT CONDITIONS:-;;	UISAR3 -- MAPS THE SPACE;;	R4 -- VIRTUAL ADDRESS OF SPACE;;	'C' SET IF NO SPACE AVAILABLE AND THE TRANSACTION;	WILL HAVE BEEN ABORTED.;;	ENTPT	GTSA	ADD	#V.END+1,R4		; R4 := ENTRY SIZE + HEADER SIZE +1					; NOTE: '+1' IS TO ROUND UP TOTAL SIZE									;***CP08	ASR	R4			; R4 := TOTAL SIZE OF ENTRY IN WORDS	MOV	R0,-(SP)		; SAVE VOLATILE	MOV	R1,-(SP)		; REGISTERS	MOV	C.SLT(R2),R1		; GET THE KT	      CALL	$ACBDB			; OF THE SLOT	MOV	R0,@#UISAR3		; MAP THE MCB									;CP02-2*	TST	M.SDP+60000		; IS THERE A SYSTEM AREA?	BEQ	20$			; NO SO ERROR	ADD	M.SDP+60000,@#UISAR3	; MAP THE SYSTEM SPACE	SUB	R4,G.FSZ+60000		; REDUCE SPACE USED SO FAR	BLO	20$			; NO SPACE LEFT -- ABORT	;***CP08	MOV	R4,-(SP)		; SAVE THE SIZE	MOV	R5,-(SP)		; AND THE FLAGS		INC	G.NET+60000		; INCREAMENT NUMBER OF ENTRIES	INC	G.ESZ+60000		; INC. ENTRIES USED BY EXCHANGE	MOV	G.FRE+60000,R4		; GET THE ADDRESS OF SPACE OBTAINED	ADD	2(SP),G.FRE+      60000	; POINT TO NEW FREE SPACE	BISB	(SP),G.FLG+60000	; SET FLAG FOR ENTRY TYPE;; NOW POINT TO ENTRY;	CLR	R5			; GET 32 WORD	ASHC	#-5,R4			; OFFSET TO SPACE	ADD	R4,@#UISAR3		; MAP THE SPACE	MOV	#600,R4			;SET UP VIRTUAL ADDRESS 	ASHC	#6,R4;; INITALISE THE ENTRY HEADER;	MOVB	1(SP),(R4)+		; TYPE CODE	MOVB	C.EXT(R2),(R4)+		; EXCHANGE NUMBER	MOV	(SP)+,R5		; RESTORE CODES	ASL	(SP)			; MAKE SIZE BYTES	MOV	(SP)+,(R4)+		; MOVE SIZE INTO HEADER	CLC10$:	MOV	(SP)+,R1						;***CP02	MOV	(SP)+,R0						;***CP02	RETURN20$:      ;; ERROR DETECTED -- NO SPACE;	MOV	R2,R0			; ABORT THE	MOV	#AB.SYF,R5		; 	CALL	..TABO			; TRANSACTION	SEC	BR	10$.PAGE.SBTTL	TPMLIB -- ..QRHD  (REMOVE ENTRY FROM HEAD OF QUEUE);+; ..QRHD -- REMOVE ENTRY FROM HEAD OF QUEUE;;;;; INPUT CONDITIONS:;	R4 -- ADDRESS OF 2 WORD LIST HEAD;; OUTPUT CONDITIONS;;	'C' SET IF THERE ARE NO ENTRIES IN THE QUEUE;;	'C' CLEAR IF THE ENTRY AT THE HEAD OF THE QUEUE IS REMOVED;		R5 -- ADDRESS OF THE ENTRY REMOVED;; R5 DESTROYED;; CALLING SEQUENCE:;	CALL	..QRHD;;-;;	ENTPT	QRHD	MOV	      (R4),R5		; GET ADDRES OF TOP ENTRY	SEC			; RETURN NO ENTRY	BEQ	50$		;LEAVE IF NO ENTRY;	MOV	(R5),(R4)	; CLOSE UP THE LIST	BNE	40$		; IF ZERO THEN JUST REMOVED THE LAST ENTRY	MOV	R4,2(R4)	; SO RESET THE LIST HEAD40$:	CLC50$:	RETURN.PAGE.SBTTL	TPMLIB -- ..QILE  (INSERT AT END OF QUEUE);;+;; ..QILE -- INSERT AT END OF QUEUE;; ROUTINE TO INSERT A NODE AT THE END OF A QUEUE;;INPUT CONDITIONS:;;	R0 -- ADDRESS OF TWO WORD LISTHEAD;	R1 -- ADDRESS OF ENTRY TOBE INSERTED;; OUTPUT CONDITIONS::;;	THE ENTRY IS LINKED TO       THE END OF THE QUEUE;; NO REGISTERS DESTROYED (WHAT DO YOU KNOW);; CALLING SEQUENCE:;;	CALL	..QILE;;-;	ENTPT	QILE	MOV	R1,@2(R0)	; LINK NEW ENTRY TO PREVIOUS ENTRY	MOV	R1,2(R0)	; SET ADDRESS OF NEW LAST ENTRY	CLR	(R1)		; SET LAST MARKER	RETURN.PAGE.SBTTL	TPMLIB -- TWAIT   (WAIT A THREAD FOR A RESOURCE);;; INPUT CONDITIONS:-;;	R4 LIST HEAD OF WAIT QUEUE;; OUTPUT CONDITIONS:-;;	R1,R0 DESTROYED;TWAIT:.DMTWT::	ENTPT	TWAT	MOV	#W.SIZE,R1		; GET A WAIT NODE	CALL	..ALCB			; FROM THE POOL					; R0 -> CB ; R1,R2 DEST      ROYED	BCC	10$			; OK	MOV	#.EMWAT,R0		; GET SPARE NODE	TST	2(R0)			; IN USE?	BEQ	10$			; NO	$DELAY				; NO SPACE SO WAIT A BIT	BR	TWAIT			; AND TRY AGAIN10$:	MOV	$TTBAD,R1		; GET THE TTB FOR THE TASK	MOV	(R1),W.CXT(R0)		; PUT THE CONTEXT BLOCK IN THE WAIT BLOCK	MOV	T.TNAM(R1),W.TSK(R0)	; AND THE	MOV	T.TNAM+2(R1),W.TSK+2(R0); TASK NAME	MOV	R0,R1			; AND PLACE	MOV	R4,R0			; IN	CALL	..QILE			; THE WAIT QUEUE	TSUSP$	RETURN.PAGE.SBTTL	TPMLIB -- TWAKE   (WAKE A THREAD WAITING FOR A RESOURCE);; INPUT CONDITIONS;;	R      4 LIST HEAD OF WAIT QUEUE;; OUTPUT CONDITIONS;;	'C" SET IF NO ENTY IN WAIT QUEUE;;	R0,R1,R3,R5 DESTROYED;;TWAKE:.DMTWK::	ENTPT	TWKE	CALL	..QRHD			; GET ENTRY FROM WAIT QUEUE	BCS	10$			; NO ENTRY;	MOV	4(R4),.COMSB+B.FUN	; SET THE WAKE FUNCTION CODE	MOV	R5,R0			; RETURN THE WAIT BLOCK	ADD	#W.TSK,R5		; POINT TO TASK NAME	CALL	SEND	CLR	2(R0)			; CLEAR IN USE FLAG	CMP	#.EMWAT,R0		; SPARE NODE	BEQ	5$			; YES	MOV	#W.SIZE,R1	CALL	..DALB			; DE-ALLOCATE EMERGENCY NODE					; R1,R2,R3 DESTROYED5$:	CLC10$:	RETURN.PAGE.      SBTTL	TPMLIB -- TIMER QUEUE ROUTINES;; ** ADD TO TIMER QUEUE;;; ..TCCB -- EXCHANGE TIME OUT ENTRY;;		R4 -- CCB;		R5 -- TIME OUT VALUE;; ..TFQM -- RETRANSMIT FQM;;		ASR3 -- SCB ADDRESS;; ..TOUT -- TERMINAL TIMEOUT;;		ASR3 -- SCB ADDRESS;; OUTPUT CONDITIONS:;;	REGISTERS R0,R2,R4,R5 DESTROYED;;	NODE PLACED IN THE TIMER QUEUE;; CALLED BY:;	..SDMS;-	.ENABL	LSB;;	ENTPT	TCCB	BIC	#177600,R5		; CLEAR OUT ANY RUBBISH;; ADD EXCHANGE TIMEOUT NODE;	BIS	#WT.EXT*256.,R5		; GET THE TIMER TYPE ENTRY CODE	BR	20$			; DO COMMO      N PROCESSING;;	ENTPT	TFQM;; RETRANSMIT FQM TIMER ENTRY;	MOV	#WT.FQM*256.!1,R5	; CODE AND 1 MINUTE TIMER	BR	10$			;;;	ENTPT	TOUT	MOV	#WT.TRM*256.,R5		; GET TIMER CODE	BISB	.TROUT,R5		; SET THE TIMER VALUE10$:	MOV	@#UISAR3,R4		; GET THE SCB20$:	MOV	R1,-(SP)		; SAVE R1;; GET A TIMER NODE;	MOV	#WT.SIZ,R1		; NODE SIZE40$:	CALL	..ALCB			; ALLOCATE FROM THE SMALL POOL					; R0 -> CB   ; R1,R2 DESTROYED	BCS	100$			; NO SPACE;; FILL IN THE NODE. R0 -> NODE.;	MOV	R4,W.IDT(R0)		; PUT IDENTITY IN (SCB/CCB)	CLR	W.TIM(R0      )	BISB	R5,W.TIM(R0)		;  TIME	SWAB	R5	MOVB	R5,W.TYP(R0)		; TYPE;; INSERT IN QUEUE BY ELAPSE TIME;	MOV	#.TRQ,R1	;POINT AT THE LISTHEAD50$:	MOV	@R1,R4			; GET THE NEXT ENTRY	BEQ	70$			; NO MORE SO ADD TO END	CMPB	W.TIM(R0),W.TIM(R4)	; PLACE BEFORE THIS ENTRY	BLOS	60$			; YES	SUB	W.TIM(R4),W.TIM(R0)	; ADJUST THE TIMER TO REFLECT					; NEW POSITION	MOV	R4,R1			; GET NEXT ENTRY	BR	50$60$:;; PLACE HERE;	SUB	W.TIM(R0),W.TIM(R4)	; MAKE NEXT NODE RELATIVE TIME					; TO NODE TOBE INSERTED	MOV	(R1),(R0)		; LINK	MOV	R0,      (R1)			; THE NODE IN	BR	80$70$:	MOV	R0,R1			;	MOV	#.TRQ,R0		; ADD TO END	CALL	..QILE			; NO REGISTERS DESTROYED80$:	TSTB	.TRQ+W.TYP		; TIMER ACTIVE?	BNE	90$			; YES	INC	.TRQ+W.TYP		; SET TIMER ACTIVE	MOV	#.TTASK,R5		; START THE	CALL	SEND			; TIMER ; DESTROY R590$:	MOV	(SP)+,R1	RETURN100$:;; NO NODE SPACE;	$DELAY	BR	40$	.DSABL	LSB;;; ** FLUSH THE TIMER QUEUE;;	R1 -- IDENTY OF NODES TO FLUSH;; DESTROY R0,R2,R3,R4,R5	ENTPT	TFLH;	MOV	R1,-(SP)		; SAVE THE IDENTITY	MOV	#.TRQ,R0		; GET TIMER LIST HEAD10$:	MOV	R0,R      4			; SAVE ENTRY	MOV	@R0,R0			; GET NEXT ENTRY	BEQ	40$			; NO MORE ENTRIES20$:	CMP	(SP),W.IDT(R0)		; REMOVE THIS ENTRY?	BNE	10$			; NO	MOV	(R0),R5			; SAVE THE NEXT ENTRY	BEQ	25$			; NO NEXT ENTRY	ADD	W.TIM(R0),W.TIM(R5)	; RESET RELATIVE TIME25$:	MOV	(R0),(R4)		; UNLINK	BNE	30$			; NOT LAST	MOV	R4,.TRQ+2		; SET NEW LAST30$:	MOV	#WT.SIZ,R1		; GET THE NODE SIZE	CALL	..DALB			; RETURN THE NODE SPACE					; DESTROY R1,R2,R3	MOV	R5,R0			; GET NEXT NODE	BNE	20$			; AND PROCESS40$:	MOV	(SP)+,R1		;	RETURN.PAGE.SBTTL      	TPMLIB -- RSX SEND ROUTINES;;; THESE ROUTINES PROVIDE THE MANAGER - MANAGER COMMUNICATION; FUNCTIONS, VIA THE RSX SEND DIRECTIVES.;; ON ENTRY THE FOLOWING PARAMETERS WILL HAVE BEEN SET IN; THE SEND BUFFER (.COMSB):-;	B.FUN -- FUNCTION CODE;	B.DAT -- PARAMETER;; THESE ROUTINS WILL SET THE TARGET MANAGER TASK NAME IN THE DPB; AND THE FOLLOWING FIELDS IN THE SEND BUFFER:-;	B.CXT -- THE CONTEX BLOCK ADDRESS;	B.DAT+2 -- THE CURRENT THREAD CONTEXT BLOCK ADDRESS;;; ** DMSEND -- SEND TO DATA MANAGER; ** EXSEND --       SEND TO EXECUTION MANAGER; ** TMSEND -- SEND TO TIM; ** SEND   -- GENERAL SEND;		R5 POINTS TO PARAMETER BLOCK:-;		WD.00 TASK NAME;		WD.02 TASK NAME (SECOND HALF);		WD.04 CONTEXT BLOCK ADDRESS TO WAKE;; R5 DESTROYED;	.ENABLE	LSBLMSEN1:	MOV	#BF.END,.COMSB+B.FUN		; SET END FUNCTION	BIT	#CF.ABO,C.FLG(R1)		; ABORTED TRANSACTION?	BEQ	LMSEND				; NO	MOV	#BF.ABO,.COMSB+B.FUN		; SET ABORTLMSEND:	MOV	#.LIMAN,R5	BR	SENDEXSEND:	MOV	#.EXMAN,R5		; GET PARAMETER BLOCK FOR EXECUTION MANAGER	BR	SENDTMSEND:	MOV	#.FMMAN,R5		;       TIM	BR	SENDDMSEND:	MOV	#.DMMAN,R5		; DATA MANAGERSEND:.SEND::	MOV	(R5)+,.CSEND+S.DATN+0	; MOVE THE TASK	MOV	(R5)+,.CSEND+S.DATN+2	; NAME INTO DPB	MOV	(R5),.COMSB+B.CXT	; CONTEXT TO WAKW	MOV	@$TTBAD,.COMSB+B.DAT+2	; CURRENT CONTEXT BLOCK10$:	DIR$	#.CSEND		; DO THE SEND	BCS	30$20$:	RETURN;; PROCESS ERRORS FORM DIRECTIVE;; CHECK FOR LACK OF POOL SPACE;30$:;; DIRECTIVE ERROR;	CMP	#IE.UPN,$DSW			; NODE POOL PROBLEM?	BNE	..TPCH				; NO -- CRASH	MOV	.COMSB+B.FUN,-(SP)		; SAVE FUNCTION CODE	MOV	.COMSB+B.DAT,-(SP)	      	; AND DATA	MOV	.COMSB+B.DAT+4,-(SP)	MOV	.COMSB+B.DAT+6,-(SP)	MOV	R4,-(SP)			; SAVE R4	MOV	$TTBAD,R4			; GET TTB	BISB	#TF.NRB,T.FLG(R4)		; DISABLE RECIEVES	$DELAY	BICB	#TF.NRB,T.FLG(R4)	MOV	(SP)+,R4	CMP	-(R5),-(R5)			; RESET R5	MOV	(SP)+,.COMSB+B.DAT+6	MOV	(SP)+,.COMSB+B.DAT+4		; RESTORE	MOV	(SP)+,.COMSB+B.DAT	MOV	(SP)+,.COMSB+B.FUN		; AND FUNCTION CODE	BR	SEND	.DSABL	LSB.PAGE.SBTTL	TPMLIB -- TRANSACTION PROCESSOR CRASH/RESTART ROUTINE;;	ENTPT	TPCH	MOV	.ASR1,@#UISAR1	MOV	#.ENDCX,SP			; GET A STACK AREA	DSAR      $S					; DISABLE ASTS						; MANAGERS COULD BE CORRUPT	SVTK$S	,#0				; REMOVE SST ENTRY POINTS	MOV	#.COMSB,R0			; GET BUFFER AREA	GTSK$S	R0				; GET NAME OF TASK CURRENTLY						; EXECUTING IN	MOV	2(R0),-(SP)			; SET TASK NAME	CLR	-(SP)				; AREA	MOV	SP,R5				; POINT TO TASK NAME AREA	MOV	#NUMMRG,R4			; NUMBER OF MANAGERS	MOV	#MRGNAM,R3			; MANAGER NAME TABLE10$:	MOV	(R3)+,(R5)			; GET NAME	CMP	(R0),(R5)			; CURRENT ONE?	BEQ	20$				; YES SO DON'T ABORT	ABRT$S	R5				; ABORT TASK20$:	SOB	R4,10$	MOV	#BF.TPR,(R0      )			; SET SEND UP	CALL	.CXENB				; ENABLE CONTEXT SWITCHING	SDAT$S	#TPRT,R0				; SEND TO IT	RQST$S	#TPRT	HALTTPRT:	.RAD50	/TPRTSK/MRGNAM:	.RAD50	/EXC/	.RAD50	/DAT/	.RAD50	/TIM/	.RAD50	/LIM/	.RAD50	/BAT/	.RAD50	/TRC/							;***CP08	.RAD50	/MBX/							;***CP08NUMMRG=<.-MRGNAM>/2	.EVEN.PAGE.SBTTL	TPMLIB -- MAINLINE/DELAY PROCESSING;;; THIS ROUTINE PARFORMS THE BACKGROUND (MAINLINE LEVEL) PROCESSING; FOR A MANAGER.;;	THE ROUTINE IS CALLED WHEN ALL PROCESSING FOR THE 'START' OF; A MANAGER IS COMPLETE. THE ROUTIN      E RETURNS TO THE CALLER WHEN; 'STOP COMPLETE' IS DETECTED.;;	THE ROUTINE WAITS ON TWO EVENT FLAGS:-;;	EF 1.	SET WHEN STOP COMPLETE IS DECTECTED AT THREAD LEVEL;		TO START THE MAINLINE. THE EVENT FLAG IS CLEARED;		AND A RETRUN FROM SUBRUTINE MADE.;;;	EF 2.	SET WHEN A THREAD IS PLACED IN THE DELAY QUEUE.;;		IF ENTRIES ARE FOUND IN THE DELAY QUEUE THIS ROUTINE;		WAITS ON A SIGNIFICANT EVENT AND THEN RESUMES ALL;		THREADS IN THE DELAY QUEUE.;;	ENTPT	MSUP	MOV	$TTBAD,R1		; GET THE THREAD TABLE BLOCK10$:	WTLO$S	0,      #3			;WAIT FOR EVENT FLAGS 1 OR 2	DSAR$S				; DISABLE AST RECOGNITION	ADD	#T.RB,R1		;POINT AT BUFFER	RDAF$S	R1			;READ THE FLGS	BIT	#2,(R1)			;WAS EVENT FLAG 2 SET?	BEQ	20$			;NO - MUST HAVE BEEN 1	MOV	$TTBAD,R1	CLEF$S	#2			; CLEAR EF 2	ENAR$S	TST	T.QCBA(R1)		; ANY DELAY ENTRIES?	BEQ	10$			; NO	WSIG$S				; WAIT A BIT	MOV	R0,-(SP)		; SET UP FOR THREADS	CALL	.DRES			; RESUME THE THREADS	BR	10$;; TPSTOP COMPLETE DETECTED AT MAIN LINE LEVEL:;	1. CLEAR EVENT FLAG #2;	2. ENABLE AST RECOGNITION;	3. RETURN TO MAINL      INE CODE;20$:	CLEF$S	#1			; CLEAR EVENT FLAG #1	ENAR$S				; ENABLE AST RECOGNITION (DISABLED ABOVE)	RETURN				; RETURN TO MAINLINE CODE;;READF:	RDAF$	2							;***CP08;;WAITL:	WTLO$	0,3			;WAIT FOR 1 AND 2		;***CP08.PAGE.SBTTL	TPMLIB -- ..INSM  (INSTALL A TPM MANAGER);+;; ..INSM -- INSTALL A MANAGER;;;;  THIS ROUTINE  PERFORMSS THE  COMMON FUNCTIONS FOR; THE INSTALLATION OF A TPM MANAGER:-;;	1. OBTAIN THE NAME OF THE APPLICATION COMMON REGION;	2. ATTACH AND MAP THE REGION;	3. SEND REPLY TO THE INSTALL TASK;;      ; INPUT CONDITIONS:;;	R0	POINTER TO PARAMETER BLOCK:-;		WD.0 P